Skip to content
View momo6909's full-sized avatar

Block or report momo6909

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
momo6909/README.md

#include "display.h" #include "eadkpp.h"

<title>Roblox</title> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Organization", "name" : "Roblox", "url" : "https://www.roblox.com/", "logo": "https://images.rbxcdn.com/cece570e37aa8f95a450ab0484a18d91", "sameAs" : [ "https://www.facebook.com/roblox/", "https://twitter.com/roblox", "https://www.linkedin.com/company/147977", "https://www.instagram.com/roblox/", "https://www.youtube.com/user/roblox", "https://plus.google.com/+roblox", "https://www.twitch.tv/roblox" ] } </script>

<script type="text/javascript"> var Roblox = Roblox || {}; Roblox.BundleVerifierConstants = { isMetricsApiEnabled: true, eventStreamUrl: "//ecsv2.roblox.com/pe?t=diagnostic", deviceType: "Computer", cdnLoggingEnabled: JSON.parse("true") }; </script> <script type="text/javascript">
        var Roblox = Roblox || {};

Roblox.BundleDetector = (function () { var isMetricsApiEnabled = Roblox.BundleVerifierConstants && Roblox.BundleVerifierConstants.isMetricsApiEnabled;

var loadStates = {
    loadSuccess: "loadSuccess",
    loadFailure: "loadFailure",
    executionFailure: "executionFailure"
};

var bundleContentTypes = {
    javascript: "javascript",
    css: "css"
};

var ephemeralCounterNames = {
    cdnPrefix: "CDNBundleError_",
    unknown: "CDNBundleError_unknown",
    cssError: "CssBundleError",
    jsError: "JavascriptBundleError",
    jsFileError: "JsFileExecutionError",
    resourceError: "ResourcePerformance_Error",
    resourceLoaded: "ResourcePerformance_Loaded"
};

return {
    jsBundlesLoaded: {},
    bundlesReported: {},

    counterNames: ephemeralCounterNames,
    loadStates: loadStates,
    bundleContentTypes: bundleContentTypes,

    timing: undefined,

    setTiming: function (windowTiming) {
        this.timing = windowTiming;
    },

    getLoadTime: function () {
        if (this.timing && this.timing.domComplete) {
            return this.getCurrentTime() - this.timing.domComplete;
        }
    },

    getCurrentTime: function () {
        return new Date().getTime();
    },

    getCdnProviderName: function (bundleUrl, callBack) {
        if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', bundleUrl, true);

            xhr.onreadystatechange = function () {
                if (xhr.readyState === xhr.HEADERS_RECEIVED) {
                    try {
                        var headerValue = xhr.getResponseHeader("rbx-cdn-provider");
                        if (headerValue) {
                            callBack(headerValue);
                        } else {
                            callBack();
                        }
                    } catch (e) {
                        callBack();
                    }
                }
            };

            xhr.onerror = function () {
                callBack();
            };

            xhr.send();
        } else {
            callBack();
        }
    },

    getCdnProviderAndReportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType) {
        this.getCdnProviderName(bundleUrl, function (cdnProviderName) {
            Roblox.BundleDetector.reportMetrics(bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName);
        });
    },

    reportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName) {
        if (!isMetricsApiEnabled
            || !bundleUrl
            || !loadState
            || !loadStates.hasOwnProperty(loadState)
            || !bundleContentType
            || !bundleContentTypes.hasOwnProperty(bundleContentType)) {
            return;
        }

        var xhr = new XMLHttpRequest();
        var metricsApiUrl = (Roblox.EnvironmentUrls && Roblox.EnvironmentUrls.metricsApi) || "https://metrics.roblox.com";

        xhr.open("POST", metricsApiUrl + "/v1/bundle-metrics/report", true);
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.withCredentials = true;
        xhr.send(JSON.stringify({
            bundleUrl: bundleUrl,
            bundleName: bundleName || "",
            bundleContentType: bundleContentType,
            loadState: loadState,
            cdnProviderName: cdnProviderName,
            loadTimeInMilliseconds: this.getLoadTime() || 0
        }));
    },

    logToEphemeralStatistics: function (sequenceName, value) {
        var deviceType = Roblox.BundleVerifierConstants.deviceType;
        sequenceName += "_" + deviceType;

        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/game/report-stats?name=' + sequenceName + "&value=" + value, true);
        xhr.withCredentials = true;
        xhr.send();
    },

    logToEphemeralCounter: function (ephemeralCounterName) {
        var deviceType = Roblox.BundleVerifierConstants.deviceType;
        ephemeralCounterName += "_" + deviceType;
        //log to ephemeral counters - taken from eventTracker.js
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/game/report-event?name=' + ephemeralCounterName, true);
        xhr.withCredentials = true;
        xhr.send();
    },

    logToEventStream: function (failedBundle, ctx, cdnProvider, status) {
        var esUrl = Roblox.BundleVerifierConstants.eventStreamUrl,
            currentPageUrl = encodeURIComponent(window.location.href);

        var deviceType = Roblox.BundleVerifierConstants.deviceType;
        ctx += "_" + deviceType;
        //try and grab performance data.
        //Note that this is the performance of the xmlhttprequest rather than the original resource load.
        var duration = 0;
        if (window.performance) {
            var perfTiming = window.performance.getEntriesByName(failedBundle);
            if (perfTiming.length > 0) {
                var data = perfTiming[0];
                duration = data.duration || 0;
            }
        }
        //log to event stream (diagnostic)
        var params = "&evt=webBundleError&url=" + currentPageUrl +
            "&ctx=" + ctx + "&fileSourceUrl=" + encodeURIComponent(failedBundle) +
            "&cdnName=" + (cdnProvider || "unknown") +
            "&statusCode=" + (status || "unknown") +
            "&loadDuration=" + Math.floor(duration);
        var img = new Image();
        img.src = esUrl + params;
    },

    getCdnInfo: function (failedBundle, ctx, fileType) {
        if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) {
            var xhr = new XMLHttpRequest();
            var counter = this.counterNames;
            xhr.open('GET', failedBundle, true);
            var cdnProvider;

            //succesful request
            xhr.onreadystatechange = function () {
                if (xhr.readyState === xhr.HEADERS_RECEIVED) {
                    cdnProvider = xhr.getResponseHeader("rbx-cdn-provider");
                    if (cdnProvider && cdnProvider.length > 0) {
                        Roblox.BundleDetector.logToEphemeralCounter(counter.cdnPrefix + cdnProvider + "_" + fileType);
                    }
                    else {
                        Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType);
                    }
                }
                else if (xhr.readyState === xhr.DONE) {
                    // append status to cdn provider so we know its not related to network error. 
                    Roblox.BundleDetector.logToEventStream(failedBundle, ctx, cdnProvider, xhr.status);
                }
            };

            //attach to possible things that can go wrong with the request.
            //additionally a network error will trigger this callback
            xhr.onerror = function () {
                Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType);
                Roblox.BundleDetector.logToEventStream(failedBundle, ctx, counter.unknown);
            };

            xhr.send();
        }
        else {
            this.logToEventStream(failedBundle, ctx);
        }
    },

    reportResourceError: function (resourceName) {
        var ephemeralCounterName = this.counterNames.resourceError + "_" + resourceName;
        this.logToEphemeralCounter(ephemeralCounterName);
    },

    reportResourceLoaded: function (resourceName) {
        var loadTimeInMs = this.getLoadTime();
        if (loadTimeInMs) {
            var sequenceName = this.counterNames.resourceLoaded + "_" + resourceName;
            this.logToEphemeralStatistics(sequenceName, loadTimeInMs);
        }
    },

    reportBundleError: function (bundleTag) {
        var ephemeralCounterName, failedBundle, ctx, contentType;
        if (bundleTag.rel && bundleTag.rel === "stylesheet") {
            ephemeralCounterName = this.counterNames.cssError;
            failedBundle = bundleTag.href;
            ctx = "css";
            contentType = bundleContentTypes.css;
        } else {
            ephemeralCounterName = this.counterNames.jsError;
            failedBundle = bundleTag.src;
            ctx = "js";
            contentType = bundleContentTypes.javascript;
        }

        //mark that we logged this bundle
        this.bundlesReported[failedBundle] = true;

        //e.g. javascriptBundleError_Computer
        this.logToEphemeralCounter(ephemeralCounterName);
        //this will also log to event stream
        this.getCdnInfo(failedBundle, ctx, ctx);

        var bundleName;
        if (bundleTag.dataset) {
            bundleName = bundleTag.dataset.bundlename;
        }
        else {
            bundleName = bundleTag.getAttribute('data-bundlename');
        }

        this.getCdnProviderAndReportMetrics(failedBundle, bundleName, loadStates.loadFailure, contentType);
    },

    bundleDetected: function (bundleName) {
        this.jsBundlesLoaded[bundleName] = true;
    },

    verifyBundles: function (document) {
        var ephemeralCounterName = this.counterNames.jsFileError,
            eventContext = ephemeralCounterName;
        //grab all roblox script tags in the page. 
        var scripts = (document && document.scripts) || window.document.scripts;
        var errorsList = [];
        var bundleName;
        var monitor;
        for (var i = 0; i < scripts.length; i++) {
            var item = scripts[i];

            if (item.dataset) {
                bundleName = item.dataset.bundlename;
                monitor = item.dataset.monitor;
            }
            else {
                bundleName = item.getAttribute('data-bundlename');
                monitor = item.getAttribute('data-monitor');
            }

            if (item.src && monitor && bundleName) {
                if (!Roblox.BundleDetector.jsBundlesLoaded.hasOwnProperty(bundleName)) {
                    errorsList.push(item);
                }
            }
        }
        if (errorsList.length > 0) {
            for (var j = 0; j < errorsList.length; j++) {
                var script = errorsList[j];
                if (!this.bundlesReported[script.src]) {
                    //log the counter only if the file is actually corrupted, not just due to failure to load
                    //e.g. JsFileExecutionError_Computer
                    this.logToEphemeralCounter(ephemeralCounterName);
                    this.getCdnInfo(script.src, eventContext, 'js');

                    if (script.dataset) {
                        bundleName = script.dataset.bundlename;
                    }
                    else {
                        bundleName = script.getAttribute('data-bundlename');
                    }

                    this.getCdnProviderAndReportMetrics(script.src, bundleName, loadStates.executionFailure, bundleContentTypes.javascript);
                }
            }
        }
    }
};

})();

window.addEventListener("load", function (evt) { Roblox.BundleDetector.verifyBundles(); });

Roblox.BundleDetector.setTiming(window.performance.timing); //# sourceURL=somename.js </script>

<link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="StyleGuide" data-bundle-source="Main" href="https://css.rbxcdn.com/0aa766ffd0373b2b467c169ceb5456fc8b56a9a4dac2b81da6e2e74ae35f002d.css" />
<link rel="canonical" href="https://www.roblox.com/NewLogin" />
<link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="RobuxIcon" data-bundle-source="Main" href="https://css.rbxcdn.com/2f599b9e9ca20ee3c155684adbf1cdcb7220bab681b55b4505123a0c34e81969.css" />
<script type="text/javascript"> var Roblox = Roblox || {}; Roblox.EnvironmentUrls = Roblox.EnvironmentUrls || {}; Roblox.EnvironmentUrls = {"abtestingApiSite":"https://abtesting.roblox.com","accountInformationApi":"https://accountinformation.roblox.com","accountSettingsApi":"https://accountsettings.roblox.com","adConfigurationApi":"https://adconfiguration.roblox.com","adsApi":"https://ads.roblox.com","apiGatewayCdnUrl":"https://apis.rbxcdn.com","apiGatewayUrl":"https://apis.roblox.com","apiProxyUrl":"https://api.roblox.com","assetDeliveryApi":"https://assetdelivery.roblox.com","authApi":"https://auth.roblox.com","avatarApi":"https://avatar.roblox.com","badgesApi":"https://badges.roblox.com","billingApi":"https://billing.roblox.com","captchaApi":"https://captcha.roblox.com","catalogApi":"https://catalog.roblox.com","chatApi":"https://chat.roblox.com","chatModerationApi":"https://chatmoderation.roblox.com","contactsApi":"https://contacts.roblox.com","contentStoreApi":"https://contentstore.roblox.com","developApi":"https://develop.roblox.com","domain":"roblox.com","economyApi":"https://economy.roblox.com","economycreatorstatsApi":"https://economycreatorstats.roblox.com","engagementPayoutsApi":"https://engagementpayouts.roblox.com","followingsApi":"https://followings.roblox.com","friendsApi":"https://friends.roblox.com","gameInternationalizationApi":"https://gameinternationalization.roblox.com","gamesApi":"https://games.roblox.com","groupsApi":"https://groups.roblox.com","groupsModerationApi":"https://groupsmoderation.roblox.com","inventoryApi":"https://inventory.roblox.com","itemConfigurationApi":"https://itemconfiguration.roblox.com","localeApi":"https://locale.roblox.com","localizationTablesApi":"https://localizationtables.roblox.com","metricsApi":"https://metrics.roblox.com","midasApi":"https://midas.roblox.com","notificationApi":"https://notifications.roblox.com","premiumFeaturesApi":"https://premiumfeatures.roblox.com","presenceApi":"https://presence.roblox.com","privateMessagesApi":"https://privatemessages.roblox.com","publishApi":"https://publish.roblox.com","restrictedHoursServiceApi":"https://apis.roblox.com/restricted-hours-service","screenTimeApi":"https://apis.rcs.roblox.com/screen-time-api","shareApi":"https://share.roblox.com","thumbnailsApi":"https://thumbnails.roblox.com","tradesApi":"https://trades.roblox.com","translationRolesApi":"https://translationroles.roblox.com","twoStepVerificationApi":"https://twostepverification.roblox.com","universalAppConfigurationApi":"https://apis.roblox.com/universal-app-configuration","userAgreementsServiceApi":"https://apis.roblox.com/user-agreements","userModerationApi":"https://usermoderation.roblox.com","usersApi":"https://users.roblox.com","voiceApi":"https://voice.roblox.com","websiteUrl":"https://www.roblox.com"}; // please keep the list in alphabetical order var additionalUrls = { amazonStoreLink: "https://www.amazon.com/Roblox-Corporation/dp/B00NUF4YOA", amazonWebStoreLink: "https%3a%2f%2fwww.amazon.com%2froblox%3f%26_encoding%3dUTF8%26tag%3dr05d13-20%26linkCode%3dur2%26linkId%3d5562fc29c05b45562a86358c198356eb%26camp%3d1789%26creative%3d9325", appProtocolUrl: "robloxmobile://", appStoreLink: "https://itunes.apple.com/us/app/roblox-mobile/id431946152", googlePlayStoreLink: "https://play.google.com/store/apps/details?id=com.roblox.client&hl=en", iosAppStoreLink: "https://itunes.apple.com/us/app/roblox-mobile/id431946152", windowsStoreLink: "https://www.microsoft.com/en-us/store/games/roblox/9nblgggzm6wm", xboxStoreLink: "https://www.microsoft.com/en-us/p/roblox/bq1tn1t79v9k" } for (var urlName in additionalUrls) { Roblox.EnvironmentUrls[urlName] = additionalUrls[urlName]; } </script> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.GaEventSettings = { gaDFPPreRollEnabled: "false" === "true", gaLaunchAttemptAndLaunchSuccessEnabled: "false" === "true", gaPerformanceEventEnabled: "false" === "true" }; </script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='headerinit' type='text/javascript' src='https://js.rbxcdn.com/a67ddd9413db88f4124e2c4f25d8cb1f.js'></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Polyfill" data-bundle-source="Main" src="https://js.rbxcdn.com/772034db167d3f4260047db4a7f2b8a58cf448709327013541e47c8962b6e556.js"></script>


<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="XsrfProtection" data-bundle-source="Main" src="https://js.rbxcdn.com/4db2f741b7a3ec36d11fec999ce33f708ae85641cabfd27e11e0935928f7d9c4.js"></script>


<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="HeaderScripts" data-bundle-source="Main" src="https://js.rbxcdn.com/97cb9ac7262155c329a259fce9f940f9bcfa852a6a1ccb44bd8a41c31e84e54b.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Sentry" data-bundle-source="Main" src="https://js.rbxcdn.com/edc66704bd1974195d8c60f4a163441bec82f1bcb11c492e7df07c43f45a4d49.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="RobloxTracer" data-bundle-source="Main" src="https://js.rbxcdn.com/ca2261fe9ad840ce9ed16c2b34a21f45a3bfaaf229bdab564a169aa3d505f92d.js"></script>

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
<script type="text/javascript"> var Roblox = Roblox || {}; Roblox.AdsHelper = Roblox.AdsHelper || {}; Roblox.AdsLibrary = Roblox.AdsLibrary || {}; Roblox.AdsHelper.toggleAdsSlot = function (slotId, GPTRandomSlotIdentifier) { var gutterAdsEnabled = false; if (gutterAdsEnabled) { googletag.display(GPTRandomSlotIdentifier); return; } if (typeof slotId !== 'undefined' && slotId && slotId.length > 0) { var slotElm = $("#"+slotId); if (slotElm.is(":visible")) { googletag.display(GPTRandomSlotIdentifier); }else { var adParam = Roblox.AdsLibrary.adsParameters[slotId]; if (adParam) { adParam.template = slotElm.html(); slotElm.empty(); } } } } </script> <script type="text/javascript">
    $(function () {
        RobloxEventManager.triggerEvent('rbx_evt_newuser', {});
    });

</script>




<!--[if lt IE 9]>
    <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script> //Set if it browser's do not track flag is enabled var Roblox = Roblox || {}; (function() { var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; if (typeof window.external !== "undefined" && typeof window.external.msTrackingProtectionEnabled !== "undefined") { dnt = dnt || window.external.msTrackingProtectionEnabled(); } Roblox.browserDoNotTrack = dnt == "1" || dnt == "yes" || dnt === true; })(); </script>
<script type="text/javascript">

    var _gaq = _gaq || [];

            window.GoogleAnalyticsDisableRoblox2 = true;
    _gaq.push(['b._setAccount', 'UA-486632-1']);
        _gaq.push(['b._setSampleRate', '10']);
    _gaq.push(['b._setCampSourceKey', 'rbx_source']);
    _gaq.push(['b._setCampMediumKey', 'rbx_medium']);
    _gaq.push(['b._setCampContentKey', 'rbx_campaign']);

        _gaq.push(['b._setDomainName', 'roblox.com']);

        _gaq.push(['b._setCustomVar', 1, 'Visitor', 'Anonymous', 2]);
            _gaq.push(['b._setPageGroup', 1, 'Login']);
        _gaq.push(['b._trackPageview']);

    _gaq.push(['c._setAccount', 'UA-26810151-2']);
        _gaq.push(['c._setSampleRate', '1']);
                _gaq.push(['c._setDomainName', 'roblox.com']);
                _gaq.push(['c._setPageGroup', 1, 'Login']);
                
        (function() {
            if (!Roblox.browserDoNotTrack) {
                var ga = document.createElement('script');
                ga.type = 'text/javascript';
                ga.async = true;
                ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                var s = document.getElementsByTagName('script')[0];
                s.parentNode.insertBefore(ga, s);
            }
    })();
    
 </script>
    <script async src='https://www.googletagmanager.com/gtag/js?id=AW-1065449093'></script>
    <script type="text/javascript">
        var accountCode = "AW-1065449093";
        var signupConversionEventKey = "wmuJCO3CZBCF7YX8Aw";
        var webPurchaseConversionEventKey = "XDQ_CJme6s0BEIXthfwD";
        window.dataLayer = window.dataLayer || [];

        function gtag() { dataLayer.push(arguments); }
        gtag.conversionEvents = {
            signupConversionEvent: accountCode + '/' + signupConversionEventKey,
            webPurchaseConversionEvent: accountCode + '/' + webPurchaseConversionEventKey
        }
        gtag ('set', 'allow_ad_personalization_signals', false) ;
        gtag('js', new Date());
        gtag('config', accountCode);
    </script>


        <script type="text/javascript">
        if (Roblox && Roblox.EventStream) {
            Roblox.EventStream.Init("//ecsv2.roblox.com/www/e.png",
                "//ecsv2.roblox.com/www/e.png",
                "//ecsv2.roblox.com/pe?t=studio",
                "//ecsv2.roblox.com/pe?t=diagnostic");
        }
    </script>
<script type="text/javascript"> if (Roblox && Roblox.PageHeartbeatEvent) { Roblox.PageHeartbeatEvent.Init([2,8,20,60]); } </script>
<script type="text/javascript">

if (typeof(Roblox) === "undefined") { Roblox = {}; } Roblox.Endpoints = Roblox.Endpoints || {}; Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {}; Roblox.Endpoints.Urls['/asset/'] = 'https://assetgame.roblox.com/asset/'; Roblox.Endpoints.Urls['/client-status/set'] = 'https://www.roblox.com/client-status/set'; Roblox.Endpoints.Urls['/client-status'] = 'https://www.roblox.com/client-status'; Roblox.Endpoints.Urls['/game/'] = 'https://assetgame.roblox.com/game/'; Roblox.Endpoints.Urls['/game/edit.ashx'] = 'https://assetgame.roblox.com/game/edit.ashx'; Roblox.Endpoints.Urls['/game/placelauncher.ashx'] = 'https://assetgame.roblox.com/game/placelauncher.ashx'; Roblox.Endpoints.Urls['/game/preloader'] = 'https://assetgame.roblox.com/game/preloader'; Roblox.Endpoints.Urls['/game/report-stats'] = 'https://assetgame.roblox.com/game/report-stats'; Roblox.Endpoints.Urls['/game/report-event'] = 'https://assetgame.roblox.com/game/report-event'; Roblox.Endpoints.Urls['/game/updateprerollcount'] = 'https://assetgame.roblox.com/game/updateprerollcount'; Roblox.Endpoints.Urls['/login/default.aspx'] = 'https://www.roblox.com/login/default.aspx'; Roblox.Endpoints.Urls['/my/avatar'] = 'https://www.roblox.com/my/avatar'; Roblox.Endpoints.Urls['/my/money.aspx'] = 'https://www.roblox.com/my/money.aspx'; Roblox.Endpoints.Urls['/navigation/userdata'] = 'https://www.roblox.com/navigation/userdata'; Roblox.Endpoints.Urls['/chat/chat'] = 'https://www.roblox.com/chat/chat'; Roblox.Endpoints.Urls['/chat/data'] = 'https://www.roblox.com/chat/data'; Roblox.Endpoints.Urls['/friends/list'] = 'https://www.roblox.com/friends/list'; Roblox.Endpoints.Urls['/navigation/getcount'] = 'https://www.roblox.com/navigation/getCount'; Roblox.Endpoints.Urls['/regex/email'] = 'https://www.roblox.com/regex/email'; Roblox.Endpoints.Urls['/catalog/browse.aspx'] = 'https://www.roblox.com/catalog/browse.aspx'; Roblox.Endpoints.Urls['/catalog/html'] = 'https://search.roblox.com/catalog/html'; Roblox.Endpoints.Urls['/catalog/json'] = 'https://search.roblox.com/catalog/json'; Roblox.Endpoints.Urls['/catalog/contents'] = 'https://search.roblox.com/catalog/contents'; Roblox.Endpoints.Urls['/catalog/lists.aspx'] = 'https://search.roblox.com/catalog/lists.aspx'; Roblox.Endpoints.Urls['/catalog/items'] = 'https://search.roblox.com/catalog/items'; Roblox.Endpoints.Urls['/asset-hash-thumbnail/image'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/image'; Roblox.Endpoints.Urls['/asset-hash-thumbnail/json'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/json'; Roblox.Endpoints.Urls['/asset-thumbnail-3d/json'] = 'https://assetgame.roblox.com/asset-thumbnail-3d/json'; Roblox.Endpoints.Urls['/asset-thumbnail/image'] = 'https://assetgame.roblox.com/asset-thumbnail/image'; Roblox.Endpoints.Urls['/asset-thumbnail/json'] = 'https://assetgame.roblox.com/asset-thumbnail/json'; Roblox.Endpoints.Urls['/asset-thumbnail/url'] = 'https://assetgame.roblox.com/asset-thumbnail/url'; Roblox.Endpoints.Urls['/asset/request-thumbnail-fix'] = 'https://assetgame.roblox.com/asset/request-thumbnail-fix'; Roblox.Endpoints.Urls['/avatar-thumbnail-3d/json'] = 'https://www.roblox.com/avatar-thumbnail-3d/json'; Roblox.Endpoints.Urls['/avatar-thumbnail/image'] = 'https://www.roblox.com/avatar-thumbnail/image'; Roblox.Endpoints.Urls['/avatar-thumbnail/json'] = 'https://www.roblox.com/avatar-thumbnail/json'; Roblox.Endpoints.Urls['/avatar-thumbnails'] = 'https://www.roblox.com/avatar-thumbnails'; Roblox.Endpoints.Urls['/avatar/request-thumbnail-fix'] = 'https://www.roblox.com/avatar/request-thumbnail-fix'; Roblox.Endpoints.Urls['/bust-thumbnail/json'] = 'https://www.roblox.com/bust-thumbnail/json'; Roblox.Endpoints.Urls['/headshot-thumbnail/json'] = 'https://www.roblox.com/headshot-thumbnail/json'; Roblox.Endpoints.Urls['/item-thumbnails'] = 'https://www.roblox.com/item-thumbnails'; Roblox.Endpoints.Urls['/outfit-thumbnail/json'] = 'https://www.roblox.com/outfit-thumbnail/json'; Roblox.Endpoints.Urls['/place-thumbnails'] = 'https://www.roblox.com/place-thumbnails'; Roblox.Endpoints.Urls['/thumbnail/asset/'] = 'https://www.roblox.com/thumbnail/asset/'; Roblox.Endpoints.Urls['/thumbnail/avatar-headshot'] = 'https://www.roblox.com/thumbnail/avatar-headshot'; Roblox.Endpoints.Urls['/thumbnail/avatar-headshots'] = 'https://www.roblox.com/thumbnail/avatar-headshots'; Roblox.Endpoints.Urls['/thumbnail/user-avatar'] = 'https://www.roblox.com/thumbnail/user-avatar'; Roblox.Endpoints.Urls['/thumbnail/resolve-hash'] = 'https://www.roblox.com/thumbnail/resolve-hash'; Roblox.Endpoints.Urls['/thumbnail/place'] = 'https://www.roblox.com/thumbnail/place'; Roblox.Endpoints.Urls['/thumbnail/get-asset-media'] = 'https://www.roblox.com/thumbnail/get-asset-media'; Roblox.Endpoints.Urls['/thumbnail/remove-asset-media'] = 'https://www.roblox.com/thumbnail/remove-asset-media'; Roblox.Endpoints.Urls['/thumbnail/set-asset-media-sort-order'] = 'https://www.roblox.com/thumbnail/set-asset-media-sort-order'; Roblox.Endpoints.Urls['/thumbnail/place-thumbnails'] = 'https://www.roblox.com/thumbnail/place-thumbnails'; Roblox.Endpoints.Urls['/thumbnail/place-thumbnails-partial'] = 'https://www.roblox.com/thumbnail/place-thumbnails-partial'; Roblox.Endpoints.Urls['/thumbnail_holder/g'] = 'https://www.roblox.com/thumbnail_holder/g'; Roblox.Endpoints.Urls['/users/{id}/profile'] = 'https://www.roblox.com/users/{id}/profile'; Roblox.Endpoints.Urls['/service-workers/push-notifications'] = 'https://www.roblox.com/service-workers/push-notifications'; Roblox.Endpoints.Urls['/notification-stream/notification-stream-data'] = 'https://www.roblox.com/notification-stream/notification-stream-data'; Roblox.Endpoints.Urls['/api/friends/acceptfriendrequest'] = 'https://www.roblox.com/api/friends/acceptfriendrequest'; Roblox.Endpoints.Urls['/api/friends/declinefriendrequest'] = 'https://www.roblox.com/api/friends/declinefriendrequest'; Roblox.Endpoints.Urls['/authentication/is-logged-in'] = 'https://www.roblox.com/authentication/is-logged-in'; Roblox.Endpoints.addCrossDomainOptionsToAllRequests = true; </script>

<script type="text/javascript">

if (typeof(Roblox) === "undefined") { Roblox = {}; } Roblox.Endpoints = Roblox.Endpoints || {}; Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {}; </script>

<script>
Roblox = Roblox || {};
Roblox.AbuseReportPVMeta = {
    desktopEnabled: false,
    phoneEnabled: false,
    inAppEnabled: false
};
</script>

<meta name="csrf-token" data-token="0bFEoHnmX4cg" />

<div id="roblox-linkify" data-enabled="true" data-regex="(https?\:\/\/)?(?:www\.)?([a-z0-9-]{2,}\.)*(((m|de|www|web|api|blog|wiki|corp|polls|bloxcon|developer|devforum|forum|status)\.roblox\.com|robloxlabs\.com)|(www\.shoproblox\.com)|(roblox\.status\.io)|(rblx\.co)|help\.roblox\.com(?![A-Za-z0-9\/.]*\/attachments\/))(?!\/[A-Za-z0-9-+&amp;@#\/=~_|!:,.;]*%)((\/[A-Za-z0-9-+&amp;@#\/%?=~_|!:,.;]*)|(?=\s|\b))" data-regex-flags="gm" data-as-http-regex="(([^.]help|polls)\.roblox\.com)"></div>
<ul class="nav rbx-navbar hidden-md hidden-lg col-xs-12">
  <li class="cursor-pointer">
    <a class="font-header-2 nav-menu-title text-header" href="/discover">Discover</a>
  </li>
  <li class="cursor-pointer">
    <a class="font-header-2 nav-menu-title text-header" href="/catalog">Avatar Shop</a>
  </li>
  <li class="cursor-pointer">
    <a class="font-header-2 nav-menu-title text-header" href="/develop">Create</a>
  </li>
  <li class="cursor-pointer">
    <a class="font-header-2 nav-menu-title text-header" href="/robux?ctx=nav"
      >Robux</a
    >
  </li>
</ul>
<div id="right-navigation-header"></div>
<script type="text/javascript"> var Roblox = Roblox || {}; (function () { if (Roblox && Roblox.Performance) { Roblox.Performance.setPerformanceMark("navigation_end"); } })(); </script>
<div class="container-main 
            
            
            
            
            
            "
     id="container-main">
        <script type="text/javascript">
            if (top.location != self.location) {
                top.location = self.location.href;
            }
        </script>

    <div class="alert-container">
        <noscript><div><div class="alert-info" role="alert">Please enable Javascript to use all the features on this site.</div></div></noscript>




    </div>


    <div class="content">

                                <script src="https://roblox-api.arkoselabs.com/fc/api/?onload=reportFunCaptchaLoaded" async onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportResourceError('funcaptcha')"></script>
<script type="text/javascript"> var Roblox = Roblox || {}; $(function () { var funCaptcha = Roblox.FunCaptcha; if (funCaptcha) { var captchaTypes = [{"Type":"Login","PublicKey":"9F35E182-C93C-EBCC-A31D-CF8ED317B996","ApiUrl":"https://captcha.roblox.com/v1/funcaptcha/login/web"}]; funCaptcha.addCaptchaTypes(captchaTypes, true); funCaptcha.setMaxRetriesOnTokenValidationFailure(0); funCaptcha.setPerAppTypeLoggingEnabled(false); funCaptcha.setRetryIntervalRange(500, 1500); } }); // Necessary because of how FunCaptcha js executes callback // i.e. window["{function name}"] function reportFunCaptchaLoaded() { if (Roblox.BundleDetector) { Roblox.BundleDetector.reportResourceLoaded("funcaptcha"); } } </script>
<script> var Roblox = Roblox || {}; Roblox.LoginMeta = { signupUrl: "https://www.roblox.com/account/signupredir", forgotCredentialsUrl: "https://www.roblox.com/login/forgot-password-or-username", homeUrl: "https://www.roblox.com/home", securityNotificationUrl: "https://www.roblox.com/login/securitynotification", apiProxyUrl: "https://api.roblox.com", fbSignInUrl: "", loginPageUrl: "https://www.roblox.com/newlogin", isLoginWithEmailEnabled: true, isLoginWithPhoneEnabled: true, isPromptUnverifiedEmailsEnabled: false }; </script>
    <script type="text/javascript" src="https://cdns.gigya.com/js/gigya.js?apiKey=3_OsvmtBbTg6S_EUbwTPtbbmoihFY5ON6v6hbVrTbuqpBs7SyF_LQaJwtwKJ60sY1p" async defer>
        {
            bypassCookiePolicy: 'never'
        }
    </script>
data-context="loginPage">
    </div>
        </div> 
<script type="text/javascript">function urchinTracker() {}</script>
<script type="text/javascript"> if (typeof Roblox === "undefined") { Roblox = {}; } if (typeof Roblox.PlaceLauncher === "undefined") { Roblox.PlaceLauncher = {}; } var isRobloxIconEnabledForRetheme = "True"; var robloxIcon = isRobloxIconEnabledForRetheme === 'True' ? "" : "

R

"; Roblox.PlaceLauncher.Resources = { RefactorEnabled: "True", IsProtocolHandlerBaseUrlParamEnabled: "False", ProtocolHandlerAreYouInstalled: { play: { content: robloxIcon + "

You're moments away from getting into the experience!

", buttonText: "Download and Install Roblox", footerContent: "Click here for help " }, studio: { content: "

R

Get started creating your own experiences!

", buttonText: "Download Studio" } }, ProtocolHandlerStartingDialog: { play: { content: robloxIcon + "

Roblox is now loading. Get ready!

" }, studio: { content: "

R

Checking for Roblox Studio...

" }, loader: "" } }; </script>
Progress
Starting Roblox...
Connecting to People...
style="display:none;"> <p class="larger-font-size"> <span class="icon-moreinfo"></span> Check <strong>Always open links for URL: Roblox Protocol</strong> and click <strong>Open URL: Roblox Protocol</strong> in the dialog box above to join experiences faster in the future! </p>
<script type="text/javascript"> function checkRobloxInstall() { window.location = 'https://www.roblox.com/unsupported?osx=10.5'; return false; } </script>
<div id="InstallationInstructions" class="" style="display:none;">
    <div class="ph-installinstructions">
        <div class="ph-modal-header">
                <span class="icon-close simplemodal-close"></span>
                <h3 class="title">Thanks for visiting Roblox</h3>
        </div>
        <div class="modal-content-container"> 
            <div class="ph-installinstructions-body ">


    <ul class="modal-col-4">
        <li class="step1-of-4">
            <h2>1</h2>
            <p class="larger-font-size">Click <strong>RobloxPlayer.exe</strong> to run the Roblox installer, which just downloaded via your web browser.</p>
            <img data-delaysrc="https://images.rbxcdn.com/28eaa93b899b93461399aebf21c5346f.png" />
        </li>
        <li class="step2-of-4">
            <h2>2</h2>
            <p class="larger-font-size">Click <strong>Run</strong> when prompted by your computer to begin the installation process.</p>
            <img data-delaysrc="https://images.rbxcdn.com/51328932dedb5d8d61107272cc1a27db.png" />
        </li>
        <li class="step3-of-4">
            <h2>3</h2>
            <p class="larger-font-size">Click <strong>Ok</strong> once you've successfully installed Roblox.</p>
            <img data-delaysrc="https://images.rbxcdn.com/3797745629baca2d1b9496b76bc9e6dc.png" />
        </li>
        <li class="step4-of-4">
            <h2>4</h2>
            <p class="larger-font-size">After installation, click <strong>Join</strong> below to join the action!</p>
            <div class="VisitButton VisitButtonContinueGLI">
                <a class="btn btn-primary-lg disabled btn-full-width">Join</a>
            </div>
        </li>
    </ul>

            </div>
        </div>
        <div class="xsmall">
            The Roblox installer should download shortly. If it doesn’t, start the <a id="GameLaunchManualInstallLink" href="#" class="text-link">download now.</a>
<script> if (Roblox.ProtocolHandlerClientInterface && typeof Roblox.ProtocolHandlerClientInterface.attachManualDownloadToLink === 'function') { Roblox.ProtocolHandlerClientInterface.attachManualDownloadToLink(); } </script>
        </div>
    </div>
</div>
<div class="InstallInstructionsImage" data-modalwidth="970" style="display:none;"></div>
<iframe id="downloadInstallerIFrame" name="downloadInstallerIFrame" style="visibility:hidden;height:0;width:1px;position:absolute"></iframe> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='clientinstaller' type='text/javascript' src='https://js.rbxcdn.com/459f4d69b0709806c7ee83714896739e.js'></script> <script type="text/javascript"> Roblox.Client._skip = '/unsupported'; Roblox.Client._CLSID = ''; Roblox.Client._installHost = ''; Roblox.Client.ImplementsProxy = false; Roblox.Client._silentModeEnabled = false; Roblox.Client._bringAppToFrontEnabled = false; Roblox.Client._currentPluginVersion = ''; Roblox.Client._eventStreamLoggingEnabled = false; Roblox.Client._installSuccess = function() { if(GoogleAnalyticsEvents){ GoogleAnalyticsEvents.ViewVirtual('InstallSuccess'); GoogleAnalyticsEvents.FireEvent(['Plugin','Install Success']); if (Roblox.Client._eventStreamLoggingEnabled && typeof Roblox.GamePlayEvents != "undefined") { Roblox.GamePlayEvents.SendInstallSuccess(Roblox.Client._launchMode, play_placeId); } } } if ((window.chrome || window.safari) && window.location.hash == '#chromeInstall') { window.location.hash = ''; var continuation = '(' + $.cookie('chromeInstall') + ')'; play_placeId = $.cookie('chromeInstallPlaceId'); Roblox.GamePlayEvents.lastContext = $.cookie('chromeInstallLaunchMode'); $.cookie('chromeInstallPlaceId', null); $.cookie('chromeInstallLaunchMode', null); $.cookie('chromeInstall', null); RobloxLaunch._GoogleAnalyticsCallback = function() { var isInsideRobloxIDE = 'website'; if (Roblox && Roblox.Client && Roblox.Client.isIDE && Roblox.Client.isIDE()) { isInsideRobloxIDE = 'Studio'; };GoogleAnalyticsEvents.FireEvent(['Plugin Location', 'Launch Attempt', isInsideRobloxIDE]);GoogleAnalyticsEvents.FireEvent(['Plugin', 'Launch Attempt', 'Play']);EventTracker.fireEvent('GameLaunchAttempt_Unknown', 'GameLaunchAttempt_Unknown_Plugin'); if (typeof Roblox.GamePlayEvents != 'undefined') { Roblox.GamePlayEvents.SendClientStartAttempt(null, play_placeId); } }; Roblox.Client.ResumeTimer(eval(continuation)); } </script>
generic image
    </div>  
</div>  
<script type="text/javascript">
    Roblox = Roblox || {};
    Roblox.Resources = Roblox.Resources || {};
    
    Roblox.Resources.GenericConfirmation = {
        yes: "Yes",
        No: "No",
        Confirm: "Confirm",
        Cancel: "Cancel"
    };
</script>
Close
        <div class="modal-body">
            <div class="modal-top-body">
                <div class="modal-message"></div>
                <div class="modal-image-container roblox-item-image" data-image-size="medium" data-no-overlays data-no-click>
                    <img class="modal-thumb" alt="generic image"/>
                </div>
                <div class="modal-checkbox checkbox">
                    <input id="modal-checkbox-input" type="checkbox"/>
                    <label for="modal-checkbox-input"></label>
                </div>
            </div>
            <div class="modal-btns">
                <a href id="confirm-btn"><span></span></a>
                <a href id="decline-btn"><span></span></a>
            </div>
            <div class="loading modal-processing">
                <img class="loading-default" src='https://images.rbxcdn.com/4bed93c91f909002b1f17f05c0ce13d1.gif' alt="Processing..." />
            </div>
        </div>
        <div class="modal-footer text-footer">

        </div>
    </div>
</div>
<script type="text/javascript"> var Roblox = Roblox || {}; Roblox.jsConsoleEnabled = false; </script>
<script type="text/javascript">
    $(function () {
        Roblox.CookieUpgrader.domain = 'roblox.com';
        Roblox.CookieUpgrader.upgrade("GuestData", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow });
        Roblox.CookieUpgrader.upgrade("RBXSource", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("rbx_acquisition_time", cookie); } });
        Roblox.CookieUpgrader.upgrade("RBXViralAcquisition", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("time", cookie); } });
            
            Roblox.CookieUpgrader.upgrade("RBXMarketing", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow });
            
                        
            Roblox.CookieUpgrader.upgrade("RBXSessionTracker", { expires: Roblox.CookieUpgrader.fourHoursFromNow });
            
                        
            Roblox.CookieUpgrader.upgrade("RBXEventTrackerV2", {expires: Roblox.CookieUpgrader.thirtyYearsFromNow});
            
    });
</script>





<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='intl-polyfill' type='text/javascript' src='https://js.rbxcdn.com/d44520f7da5ec476cfb1704d91bab327.js'></script>


<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalCore" data-bundle-source="Main" src="https://js.rbxcdn.com/95044be3ff42e3dc429313faca1316cea62f328a39e29689ffeda9002f3a8bc6.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="TranslationResources" data-bundle-source="Main" src="https://js.rbxcdn.com/83d836a661ff433d5b7ce719c489e43af590ff75ab39ccc6d393546fe91b766a.js"></script>


<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='leanbase' type='text/javascript' src='https://js.rbxcdn.com/813b0b3708eea139d6161f58f9abd6e2.js'></script>


<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/72bb88d05dec1c72332849b75defc1dee84a86e71851dba5a3b54d66a4adf95e.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreRobloxUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/c976b451423c5e351a96ec4d40b51672d4bad997549809b7d93a114a07d43df1.js"></script>



<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="React" data-bundle-source="Main" src="https://js.rbxcdn.com/4c9a00164d9242bd60de5451a22f502c0c221a896d3a555470c03712d5ee4aa1.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/cf340fb618d9a73913b30dfc624ae60d68b9e59723746e6c08d06d14ebdd6dca.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactStyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/c8a1e368ba1d54d37175401204098f957f024a2f942b33a76a604d379cfc635a.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ConfigureWebApps" data-bundle-source="Main" src="https://js.rbxcdn.com/c756de2b0f5f2f05d62899a3b602b4a3b573ad3faa1adea789291ebe9c66a002.js"></script>



<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='angular' type='text/javascript' src='https://js.rbxcdn.com/ae3d621886e736e52c97008e085fa286.js'></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="AngularJsUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/81164cee2ed2b07903bf00968368213664e0e78bdbdf9418389c2d2a8512cccf.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalAngularJs" data-bundle-source="Main" src="https://js.rbxcdn.com/90f18784a43a70553e967191b948f70b0193df565f1605762c3c1e245ab4b55a.js"></script>

<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Thumbnails" data-bundle-source="Main" src="https://js.rbxcdn.com/8e523fb6013bf64fc1b8df80df34c48f04f2a3a9ee6f322580dc468f791382f4.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="PresenceRegistration" data-bundle-source="Main" src="https://js.rbxcdn.com/0a83202cf5f2310227e607928f73a26cdaa7d5c27f892b99ef51ec3b863a694d.js"></script>
<div ng-modules="pageTemplateApp">
    <script type="text/javascript" src="https://js.rbxcdn.com/3e544c8e724dcdc296258b0ca69401a9.js"></script>
</div>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="VerificationUpsell" data-bundle-source="Main" src="https://js.rbxcdn.com/c5f542e85b7d0585a3204715f7f6a45fd164bdee93afde2a5065c2c580c22616.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.VerificationUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/f6dc153055930e72e7a79d29b68ab405a89eed8bb6c4d14be924b03c664302fb.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.VerificationUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/facfa7c5a84a012af68ebee88781309035753d8efd979602ed21e99b818bd56d.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Navigation" data-bundle-source="Main" src="https://js.rbxcdn.com/f6ad08a7ebeba96c7de08647442cc7def60a298cd607835c970c1929b9cb725f.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.AlertsAndOptions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/03a64d3850925b52ee73bd27b41658f4a35a2b33b4a499fcb2ce72dcbd98020f.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.AlertsAndOptions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/8f06fef33a61a6c67e1e6d93829b9bb03476bc976102d7bcebe4bfe85a3d4328.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ShopDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/95fdafe5af749e388de603b9ee7f67bb092c3c790badc572db4e2bca0c32b49a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ShopDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c0606e8d6eb4487cdc70d318e6de3d9aaeeb465ddb84acd95139011e56c5e5c6.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Features" data-bundle-source="Unknown" src="https://js.rbxcdn.com/3fb9aa72de2a170e85eafc002144750baf669402547cb7d4235e33e59e20453c.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Features" data-bundle-source="Unknown" src="https://js.rbxcdn.com/3c2e73691069105f1967dda486910c6441a55674c940ea5a9e5ee391b1a8a3ad.js"></script>
<script type='text/javascript'>Roblox.config.externalResources = [];Roblox.config.paths['Pages.Catalog'] = 'https://js.rbxcdn.com/7f8e0e0a96b00feb668cc45b4ea8b9c6.js';Roblox.config.paths['Pages.CatalogShared'] = 'https://js.rbxcdn.com/8680a449ea23b2b842200032b01e95ff.js';Roblox.config.paths['Widgets.AvatarImage'] = 'https://js.rbxcdn.com/7d49ac94271bd506077acc9d0130eebb.js';Roblox.config.paths['Widgets.DropdownMenu'] = 'https://js.rbxcdn.com/da553e6b77b3d79bec37441b5fb317e7.js';Roblox.config.paths['Widgets.HierarchicalDropdown'] = 'https://js.rbxcdn.com/4a0af9989732810851e9e12809aeb8ad.js';Roblox.config.paths['Widgets.ItemImage'] = 'https://js.rbxcdn.com/61a0490ba23afa17f9ecca2a079a6a57.js';Roblox.config.paths['Widgets.PlaceImage'] = 'https://js.rbxcdn.com/a6df74a754523e097cab747621643c98.js';</script>

    <script>
        $(function () {
            Roblox.DeveloperConsoleWarning.showWarning();
        });
    </script>
<script type="text/javascript"> $(function(){ function trackReturns() { function dayDiff(d1, d2) { return Math.floor((d1-d2)/86400000); } if (!localStorage) { return false; } var cookieName = 'RBXReturn'; var cookieOptions = {expires:9001}; var cookieStr = localStorage.getItem(cookieName) || ""; var cookie = {}; try { cookie = JSON.parse(cookieStr); } catch (ex) { // busted cookie string from old previous version of the code } try { if (typeof cookie.ts === "undefined" || isNaN(new Date(cookie.ts))) { localStorage.setItem(cookieName, JSON.stringify({ ts: new Date().toDateString() })); return false; } } catch (ex) { return false; } var daysSinceFirstVisit = dayDiff(new Date(), new Date(cookie.ts)); if (daysSinceFirstVisit == 1 && typeof cookie.odr === "undefined") { RobloxEventManager.triggerEvent('rbx_evt_odr', {}); cookie.odr = 1; } if (daysSinceFirstVisit >= 1 && daysSinceFirstVisit <= 7 && typeof cookie.sdr === "undefined") { RobloxEventManager.triggerEvent('rbx_evt_sdr', {}); cookie.sdr = 1; } try { localStorage.setItem(cookieName, JSON.stringify(cookie)); } catch (ex) { return false; } } GoogleListener.init(); RobloxEventManager.initialize(true); RobloxEventManager.triggerEvent('rbx_evt_pageview'); trackReturns(); RobloxEventManager._idleInterval = 450000; RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_start'); RobloxEventManager.registerCookieStoreEvent('rbx_evt_ftp'); RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_success'); RobloxEventManager.registerCookieStoreEvent('rbx_evt_fmp'); RobloxEventManager.startMonitor(); }); </script> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.UpsellAdModal = Roblox.UpsellAdModal || {}; Roblox.UpsellAdModal.Resources = { title: "Remove Ads Like This", body: "Builders Club members do not see external ads like these.", accept: "Upgrade Now", decline: "No, thanks" }; </script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='page' type='text/javascript' src='https://js.rbxcdn.com/700b2a99c40bbe02b6862bc5205e5249.js'></script>


<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="StyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/6a3913d7d6137c9572a54288a066698b15457998f8727879a4ead3bb28bfa639.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Footer" data-bundle-source="Main" src="https://js.rbxcdn.com/310bda9a8ee2f36524a0c5e0e94c5f3801548431acdf617638feebf62eb1c5c2.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CookieBannerV3" data-bundle-source="Main" src="https://js.rbxcdn.com/54d644ac4dba14d818e9f8d4fa76eb286d65e413e6f214e4719ea1bf2dbb01e6.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Messages" data-bundle-source="Unknown" src="https://js.rbxcdn.com/24788915c418ec59b11f33dd230cd2e4f5d2742ce5d3c46ab843046a17db77b3.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Messages" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ba14ed88fc4950521528b0c841ff6374f9eee61c3797cde486dbe8b22d82a374.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Tracking" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ce6a4105a4d28cac59aa57a3d6615d56ba63526569ebfd88d49ac363d61caddb.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Tracking" data-bundle-source="Unknown" src="https://js.rbxcdn.com/fb47e86d6d7deaf62c7c5c8a62d915361b3f9b47503976e24e4fdd44710a492e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Captcha" data-bundle-source="Main" src="https://js.rbxcdn.com/ac0da91c296dfcced315996f1909a064581e4c9a75999b94dae91b0a2df71f4d.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CrossDeviceLoginDisplayCode" data-bundle-source="Main" src="https://js.rbxcdn.com/115f02aaa2d66876748e1b21aeb663b0ebf5fa91f0a5b384d4fe91fa534d1551.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.CrossDevice" data-bundle-source="Unknown" src="https://js.rbxcdn.com/527666b02e8185081bc9febf4b1bee9c50d17f4189832d228a6a8adbd1e2a8d1.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.CrossDevice" data-bundle-source="Unknown" src="https://js.rbxcdn.com/cca6035a7ac10f8f1e4a0214b72958ca73825f76d65dcc45517dedf2b1f03ac6.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="AccountRecoveryModal" data-bundle-source="Main" src="https://js.rbxcdn.com/0cb8d2d6f4d1670adfee3b204fcb3a2dbf61819b82895f8257f0e5055d2c5b2b.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.ResetPassword" data-bundle-source="Unknown" src="https://js.rbxcdn.com/a7cae0d9e86a0dcf0e25a1c56e8e4b8d529279d7be48ffaa20c9b3442d74e850.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.ResetPassword" data-bundle-source="Unknown" src="https://js.rbxcdn.com/6154c91d19b0f34b4242f8498697bcbbef565e237c2dd5124abbfd0e5900a6ec.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Controls" data-bundle-source="Unknown" src="https://js.rbxcdn.com/d65d38b7c8e854eb865388749efd0ccf6f86bfa8eb798975bd81ff5d5120204d.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Controls" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ee6a5ad0dd6831cbde49fac0632a1faa3a8584bb93815f2e91afefd2ecd0afb5.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ItemPurchase" data-bundle-source="Main" src="https://js.rbxcdn.com/bf6ae6dfa7d79f9ffe1a0c1b3a22c25707722264d9afdd2fae5cc3e7f51e5d70.js"></script>
<script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Purchasing.PurchaseDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c125fb74e968d6f573cfde762240e68903aac6cabfad0fd7b5155f1f289e0201.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Purchasing.PurchaseDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/49be7174dd3f046de04e77d78389b0430a07597bf7a326c34e175b1af4cd48e6.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="IdVerification" data-bundle-source="Main" src="https://js.rbxcdn.com/f1ab9524949fcac576e3eb1b626dd20a7c6eef1897d1fad38ee3d24349d5606d.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Verification.Identity" data-bundle-source="Unknown" src="https://js.rbxcdn.com/e45367d442cded99b8fad01e3ff64d183d95db5a8f37b94b7c6b05be8fc80b5a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Verification.Identity" data-bundle-source="Unknown" src="https://js.rbxcdn.com/a39f27d187bba7d6d006a0e2e6db2da4e4c948382938e3bea716d06d8214a54b.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="GameLaunch" data-bundle-source="Main" src="https://js.rbxcdn.com/f20fc6fffc93753a4acbdbcfa19fab2a3983eb78dfaf9b96295016be875df523.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.VisitGame" data-bundle-source="Unknown" src="https://js.rbxcdn.com/d11df52fdb9676a899b9a715f89867b86d1d8a897da128936a143ecb653db48a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.VisitGame" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c76f1b1aed5ee44ddb32b19dbb7496a06e7b85847b284e9d6478cd56144d5e7a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.GameLaunchGuestMode" data-bundle-source="Unknown" src="https://js.rbxcdn.com/f41ec06eeae79fa94e6ae9f435b0a1c6743085e898884eddb4d4025ca3af8a44.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.GameLaunchGuestMode" data-bundle-source="Unknown" src="https://js.rbxcdn.com/6852af8f7df15395ccb3d121a914ee7301a7162f5afb3395575c6075c617923f.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="SystemFeedback" data-bundle-source="Main" src="https://js.rbxcdn.com/aac542106f7f77697cbc3b36ab3cf0619bf9b69a1af0983e59dfeb6c36652d3b.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CaptchaCore" data-bundle-source="Main" src="https://js.rbxcdn.com/aa13c1cf182d36d2815cb40df08042e05daf3fb7146c2608a2beb263d05c49a6.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Challenge" data-bundle-source="Main" src="https://js.rbxcdn.com/bbb86b84e568d4ef238eed611839e92935235373b1bba65fa8649ea495eb10a0.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.TwoStepVerification" data-bundle-source="Unknown" src="https://js.rbxcdn.com/3e0ee92e8a2c7cb1baa4d6f21e4876765f8dadb41b609a1b0ea11dbbfee73c65.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.TwoStepVerification" data-bundle-source="Unknown" src="https://js.rbxcdn.com/2ada075ddb4b1458523433e352f43286bcb9a5ccf399379a59358c8875a3390e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.SecurityQuestions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/797808c97c8e124ba283cc49046b509cc76b39a766b66d997cf44f438824960a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.SecurityQuestions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/f70d3dc4db9299ede57e5925124db78aee1aebf864e0baee83e1656ba7d3c5e4.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.Captcha" data-bundle-source="Unknown" src="https://js.rbxcdn.com/6a01cbf296d3e8aa5fefa3dc991cac628716cceded614fb84cbadfd78f507d85.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.Captcha" data-bundle-source="Unknown" src="https://js.rbxcdn.com/0f46a1db16bff49a6b3dbb2c17a6723366faf5a93870711a8f92fb9058a1776c.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Login" data-bundle-source="Main" src="https://js.rbxcdn.com/c99b713b59cf3c69c100762b61343370e6c787a352fbc6443555af81b47d65f4.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.Login" data-bundle-source="Unknown" src="https://js.rbxcdn.com/e3e0df8e9e209c8927198b2c02c65e5437ac663274483c2026ecdc5be72ec7a9.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.Login" data-bundle-source="Unknown" src="https://js.rbxcdn.com/9946bb3bc9204b75c390129a6e5c182e5d616de75c3b7bc30021f4be3c0904b1.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Screentime" data-bundle-source="Unknown" src="https://js.rbxcdn.com/28d2311ffd0ae82d9c47cfbdb464d41ce8c33fa6af5c03c895fa3867bb44a18e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Screentime" data-bundle-source="Unknown" src="https://js.rbxcdn.com/b1b5b618a2663a457bbf866ec91f6402994eddd1b5f5cf45ed79abc496f03e99.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.Captcha" data-bundle-source="Unknown" src="https://js.rbxcdn.com/7bfb33d6daca3bf33b8279926060961ad21f195366362409b8964e2807204f6c.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.Captcha" data-bundle-source="Unknown" src="https://js.rbxcdn.com/e7b6ef0dd87d6afd26c3d9e432df58eb507507f67b0d0e1e8e1aa177eb935780.js"></script>
<script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='pageEnd' type='text/javascript' src='https://js.rbxcdn.com/2cbedad045eb032d6abd7d779e4960a0.js'></script>

Pinned Loading

  1. momo6909 momo6909 Public

    Config files for my GitHub profile.