{
  "log": {
    "version": "1.2",
    "creator": {
      "name": "WebInspector",
      "version": "537.36"
    },
    "pages": [
      {
        "startedDateTime": "2020-03-10T08:31:14.018Z",
        "id": "page_1",
        "title": "https://workstation.theorchard.com/analytics/engagement",
        "pageTimings": {
          "onContentLoad": 2903.721999959089,
          "onLoad": 3034.992999979295
        }
      }
    ],
    "entries": [
      {
        "startedDateTime": "2020-03-10T08:31:14.015Z",
        "time": 1957.481999997981,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/analytics/engagement",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "Upgrade-Insecure-Requests",
              "value": "1"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "Sec-Fetch-User",
              "value": "?1"
            },
            {
              "name": "Accept",
              "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "none"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "navigate"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2436,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:16 GMT"
            },
            {
              "name": "Content-Type",
              "value": "text/html; charset=UTF-8"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            },
            {
              "name": "Cache-Control",
              "value": "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1;mode=block"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=31536000;includeSubDomains"
            },
            {
              "name": "Content-Security-Policy",
              "value": "script-src: self"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "Referrer-Policy",
              "value": "no-referrer-when-downgrade"
            },
            {
              "name": "CF-Cache-Status",
              "value": "DYNAMIC"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571bada13a407b53-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 4078,
            "mimeType": "text/html",
            "compression": 2578,
            "text": "<!DOCTYPE html>\n<html>\n<head>\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n    <meta charset=\"utf-8\">\n    <link rel=\"shortcut icon\" href=\"/images/icons/favicon.ico\" type=\"image/x-icon\">\n    <link rel=\"preconnect\" href=\"https://api.segment.io\">\n    <link rel=\"preconnect\" href=\"https://bam.nr-data.net\">\n    <link rel=\"preconnect\" href=\"https://js-agent.newrelic.com\">\n    <link rel=\"preconnect\" href=\"https://www.google-analytics.com\">\n    <link rel=\"preconnect\" href=\"https://cdn.ravenjs.com\">\n    <link rel=\"preconnect\" href=\"https://cdn.mouseflow.com\">\n    <link rel=\"preconnect\" href=\"https://n2.mouseflow.com\">\n    <link rel=\"preconnect\" href=\"https://images.theorchard.com\">\n    <link href=\"https://fonts.googleapis.com/css?family=Rubik:400,500\" rel=\"stylesheet\" type=\"text/css\" >\n    <link rel=\"preload\" href=\"https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js\" as=\"script\">\n    <link rel=\"preload\" href=\"https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/frontend-workstation.css\" as=\"style\">\n<link href=\"https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/frontend-workstation.css\" media=\"all\" rel=\"stylesheet\" type=\"text/css\" >\n<title>Engagement | The Orchard</title>\n</head>\n<body id=\"mainBody\" class=\"analytics-engagement\"> <noscript>This site attempts to protect users against <a href=\"https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29\"> Cross-Site Request Forgeries </a> attacks. In order to do so, you must have JavaScript enabled in your web browser otherwise this site will fail to work correctly for you. See details of your web browser for how to enable JavaScript.</noscript>\n<noscript>Javascript appears to be turned off. In order to use this page, you must have it turned on.</noscript>\n\n    <div class=\"container fix-width-grid\">\n        <div class=\"row\">\n            <div class=\"main-content\">\n                <div id=\"reactified_homepage\">\n    <div class=\"LoadingIndicator module-loader\"><div class=\"LoadingIndicator-outer\"><div class=\"LoadingIndicator-dots\"><div class=\"LoadingIndicator-loader-dot\"></div><div class=\"LoadingIndicator-loader-dot\"></div><div class=\"LoadingIndicator-loader-dot\"></div><div class=\"LoadingIndicator-loader-dot\"></div><div class=\"LoadingIndicator-loader-dot\"></div></div></div></div>\n</div>\n\n<script type=\"text/javascript\">\n    window.ORCHARD_LOCALE = \"en_US\";\n</script>\n\n<script type=\"text/javascript\" src=\"https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js\"></script>\n    <script type=\"text/javascript\">\n        initFrontendWorkstation({\"refresh_url\":\"\\/grasssession\",\"grass_base_url\":\"\\/api\",\"token\":{\"token\":\"26318db24967a7888b9314f5172426c5\",\"token_duration\":1200}}, document.getElementById('reactified_homepage'));    </script>\n                <div class=\"clear\"></div>\n            </div>\n        </div>\n    </div>\n    <!-- segment-analytics-config -->\n<script> window['segmentAnalyticsConfig'] = {\"key\":\"38SQn7092M3aZn4AQWYwksOwBhOa0V2J\",\"userId\":6918,\"labelId\":6971,\"impersonatorUserId\":\"2138\",\"labelType\":\"vendor\",\"businessType\":\"Frontline\",\"subaccountId\":null};</script>\n\n                <script>\n                    var bottomScripts = [{\"src\":\"\\/js\\/releases\\/segment-analytics-1522397179446.min.js\"}];\n\n                    function addBottomScript(bottomScript) {\n                        var element = document.createElement('script');\n                        element.src = bottomScript.src;\n                        document.body.appendChild(element);\n                    }\n\n                    window.addEventListener('load', function() {\n                        bottomScripts.forEach(addBottomScript);\n                    }, false);\n                </script>\n            <input type=\"hidden\" id=\"csrfp_hidden_data_token\" value=\"csrfp_token\">\n<input type=\"hidden\" id=\"csrfp_hidden_data_urls\" value='[]'><script type=\"text/javascript\" src=\"/scripts/csrf/csrfprotector.js\"></script>\n</body>\n</html>\n"
          },
          "redirectURL": "",
          "headersSize": 730,
          "bodySize": 1500,
          "_transferSize": 2230
        },
        "cache": {},
        "timings": {
          "blocked": 2.6840000646188855,
          "dns": 0,
          "ssl": 12.163,
          "connect": 21.019,
          "send": 0.33800000000000097,
          "wait": 1932.7050000334457,
          "receive": 0.7359998999163508,
          "_blocked_queueing": 2.6840000646188855
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "other"
        },
        "_priority": "VeryHigh",
        "_resourceType": "document",
        "connection": "1949472",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:15.989Z",
        "time": 683.0080000218004,
        "request": {
          "method": "GET",
          "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.theorchard.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "_ga=GA1.2.623441365.1582092609"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "_ga",
              "value": "GA1.2.623441365.1582092609",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "application/x-javascript"
            },
            {
              "name": "date",
              "value": "Mon, 09 Mar 2020 11:04:35 GMT"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Wed, 04 Mar 2020 09:04:14 GMT"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "x-amz-version-id",
              "value": "sGhkLYHK3mzt22jB1b21hTdr2CPKcnJ4"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "x-cache",
              "value": "Hit from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 075ecc80ea8e9352008139ab9fd7a593.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C4"
            },
            {
              "name": "x-amz-cf-id",
              "value": "y5-BI5gUi4hgrZri0dcDziCS3gy-s2X0lhpWl82q-ql4mpYvzSJRxg=="
            },
            {
              "name": "age",
              "value": "77202"
            }
          ],
          "cookies": [],
          "content": {
            "size": 1944789,
            "mimeType": "application/x-javascript",
            "text": "LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgbWFpbi5kbWwuanMuTElDRU5TRS50eHQgKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbIkBvcmNoYXJkL2Zyb250ZW5kLXdvcmtzdGF0aW9uIl09dCgpOmVbIkBvcmNoYXJkL2Zyb250ZW5kLXdvcmtzdGF0aW9uIl09dCgpfSh3aW5kb3csKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uZD1mdW5jdGlvbihlLHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5yPWZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9bihlKSksOCZ0KXJldHVybiBlO2lmKDQmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIociksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJiJzdHJpbmciIT10eXBlb2YgZSlmb3IodmFyIG8gaW4gZSluLmQocixvLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwsbykpO3JldHVybiByfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iaHR0cHM6Ly9jZG4udGhlb3JjaGFyZC5pby9mcm9udGVuZC13b3Jrc3RhdGlvbi8iLG4obi5zPTEpfSh7IisxanUiOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtrZXlnZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbCxvPXRoaXMuZ2V0UXVlcnlQYXJhbXMoZSksYT10aGlzLmdldEhlYWRlck9wdGlvbnMoZSk7cmV0dXJuKHQucHJ1bmVRdWVyeXx8dC5wcnVuZUhlYWRlcikmJihuPXQucHJ1bmVRdWVyeT90aGlzLnBydW5lT2JqKHRoaXMuY2xvbmVPYmplY3QobyksdC5wcnVuZVF1ZXJ5KTpvLHI9dC5wcnVuZUhlYWRlcj90aGlzLnBydW5lT2JqKHRoaXMuY2xvbmVPYmplY3QoYSksdC5wcnVuZUhlYWRlciwhMCk6YSksSlNPTi5zdHJpbmdpZnkoe21ldGhvZDplLm1ldGhvZCx1cmk6ZS51cmwscGFyYW1zOm58fG98fG51bGwsb3B0aW9uczpyfHxhfHxudWxsfSl9LGdldFF1ZXJ5UGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLnFzJiYhdGhpcy5pc0VtcHR5KGUucXMpP2UucXM6ZSYmZS5xc1Jhdz90aGlzLmFycmF5VG9PYmooZS5xc1Jhdyk6ZSYmZS5yZXE/dGhpcy5zdHJpbmdUb09iaihlLnJlcS5wYXRoKTplJiZlLl9xdWVyeT90aGlzLnN0cmluZ1RvT2JqKGUuX3F1ZXJ5LmpvaW4oIiYiKSk6bnVsbH0sZ2V0SGVhZGVyT3B0aW9uczpmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5faGVhZGVyP3RoaXMucHJ1bmVPYmooZS5faGVhZGVyLFsiVXNlci1BZ2VudCIsInVzZXItYWdlbnQiXSk6ZSYmZS5yZXEmJmUucmVxLl9oZWFkZXJzP3RoaXMucHJ1bmVPYmooZS5yZXEuX2hlYWRlcnMsWyJVc2VyLUFnZW50IiwidXNlci1hZ2VudCJdKTplJiZlLmhlYWRlcj90aGlzLnBydW5lT2JqKGUuaGVhZGVyLFsiVXNlci1BZ2VudCIsInVzZXItYWdlbnQiXSk6bnVsbH0sYXJyYXlUb09iajpmdW5jdGlvbihlKXtpZihlJiZlLmxlbmd0aCl7Zm9yKHZhciB0PXt9LG49MDtuPGUubGVuZ3RoO24rKylmb3IodmFyIHI9ZVtuXS5zcGxpdCgiJiIpLG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIGE9cltvXS5zcGxpdCgiPSIpO3RbYVswXV09YVsxXX1yZXR1cm4gdH1yZXR1cm4gbnVsbH0sc3RyaW5nVG9PYmo6ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9e307aWYofmUuaW5kZXhPZigiPyIpKXt2YXIgbj1lLnNwbGl0KCI/Iik7ZT1uWzFdfWZvcih2YXIgcj1lLnNwbGl0KCImIiksbz0wO288ci5sZW5ndGg7bysrKXt2YXIgYT1yW29dLnNwbGl0KCI9Iik7dFthWzBdXT1hWzFdfXJldHVybiB0fXJldHVybiBudWxsfSxwcnVuZU9iajpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07biYmZGVsZXRlIGVbby50b0xvd2VyQ2FzZSgpXSxkZWxldGUgZVtvXX1yZXR1cm4gZX0sZ3V0UmVzcG9uc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIHQuYm9keT1lLmJvZHksdC50ZXh0PWUudGV4dCx0LmhlYWRlcnM9ZS5oZWFkZXJzLHQuc3RhdHVzQ29kZT1lLnN0YXR1c0NvZGUsdC5zdGF0dXM9ZS5zdGF0dXMsdC5vaz1lLm9rLHR9LGlzRW1wdHk6ZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1lfHxudWxsPT09ZXx8Im9iamVjdCI9PXR5cGVvZiBlJiYwPT1PYmplY3Qua2V5cyhlKS5sZW5ndGh9LGNsb25lT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pO3JldHVybiB0fSxyZXNldFByb3BzOmZ1bmN0aW9uKGUpe3JldHVybntkb1F1ZXJ5OiJib29sZWFuIiE9dHlwZW9mIGUuZG9RdWVyeXx8ZS5kb1F1ZXJ5LGNhY2hlV2hlbkVtcHR5OiJib29sZWFuIiE9dHlwZW9mIGUuY2FjaGVXaGVuRW1wdHl8fGUuY2FjaGVXaGVuRW1wdHkscHJ1bmU6ZS5wcnVuZSxwcnVuZVF1ZXJ5OmUucHJ1bmVRdWVyeSxwcnVuZUhlYWRlcjplLnBydW5lSGVhZGVyLHJlc3BvbnNlUHJvcDplLnJlc3BvbnNlUHJvcCxleHBpcmF0aW9uOmUuZXhwaXJhdGlvbixmb3JjZVVwZGF0ZTplLmZvcmNlVXBkYXRlLHByZXZlbnREdXBsaWNhdGVDYWxsczplLnByZXZlbnREdXBsaWNhdGVDYWxscyxiYWNrZ3JvdW5kUmVmcmVzaDplLmJhY2tncm91bmRSZWZyZXNofX0sY2FsbGJhY2tFeGVjdXRvcjpmdW5jdGlvbihlLHQsbixyKXtpZigxPT09ZS5sZW5ndGgpZShuKTtlbHNle2lmKCEoZS5sZW5ndGg+MSkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZENhbGxiYWNrRXhjZXB0aW9uOiBZb3VyIC5lbmQoKSBjYWxsYmFjayBtdXN0IHBhc3MgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpO2UodCxuLHIpfX19fSwiKzUxayI6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LCIrRk1GIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1jbGFzc3tjb25zdHJ1Y3RvcihlKXtpZih0aGlzLnRva2VuPW51bGwsdGhpcy50b2tlbkR1cmF0aW9uPW51bGwsdGhpcy5fdGltZW91dD1udWxsLHRoaXMucmV0cnlfZXJyb3I9ITEsdGhpcy5vcHRpb25zPU9iamVjdC5hc3NpZ24oe2V4cGlyYXRpb25CdWZmZXI6Mi8zfSxlKSwhdGhpcy5vcHRpb25zLnRva2VuUmVxdWVzdFVybCl0aHJvdyBuZXcgRXJyb3IoInRva2VuUmVxdWVzdFVybCBtdXN0IGJlIHBhc3NlZCBpbiBhcyBhbiBvcHRpb24iKTt0aGlzLnN0YXJ0KCl9Z2V0IHJlZnJlc2hUaW1lb3V0KCl7cmV0dXJuIHRoaXMudG9rZW5EdXJhdGlvbip0aGlzLm9wdGlvbnMuZXhwaXJhdGlvbkJ1ZmZlcn1zdGFydCgpe251bGwhPT10aGlzLl90aW1lb3V0JiZ3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpO3RoaXMudG9rZW5EdXJhdGlvbjt0aGlzLl90aW1lb3V0PXdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuZmV0Y2hUb2tlbi5iaW5kKHRoaXMpLHRoaXMucmVmcmVzaFRpbWVvdXQpfWZldGNoVG9rZW4oZT0hMCl7dGhpcy5jdXJyZW50UmVxdWVzdCYmdGhpcy5jdXJyZW50UmVxdWVzdC5hYm9ydCgpO2NvbnN0IHQ9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiB0Lm9wZW4oIkdFVCIsdGhpcy5vcHRpb25zLnRva2VuUmVxdWVzdFVybCxlKSx0Lm9ubG9hZD0oKT0+e2xldCBlLG47dHJ5e249SlNPTi5wYXJzZSh0LnJlc3BvbnNlKX1jYXRjaChlKXtuPW51bGx9ZT1uJiZ0LnN0YXR1cz49MjAwJiZ0LnN0YXR1czwzMDB8fDMwND09PXQuc3RhdHVzP3RoaXMub25GZXRjaFRva2VuLmJpbmQodGhpcyk6dGhpcy50b2tlbkZldGNoRXJyb3IuYmluZCh0aGlzKSxlKG4pfSx0Lm9uZXJyb3I9dGhpcy50b2tlbkZldGNoRXJyb3IuYmluZCh0aGlzKSx0LnNlbmQoKSx0aGlzLmN1cnJlbnRSZXF1ZXN0PXQsdGhpcy5jdXJyZW50UmVxdWVzdH1vbkZldGNoVG9rZW4oZSl7dGhpcy5jdXJyZW50UmVxdWVzdD1udWxsLHRoaXMuc2V0VG9rZW4oZSksdGhpcy5yZXRyeV9lcnJvcj0hMX10b2tlbkZldGNoRXJyb3IoKXt0aGlzLnJldHJ5X2Vycm9yJiYodGhpcy50b2tlbj1udWxsKSx0aGlzLnRva2VuRHVyYXRpb249MTVlMyx0aGlzLnJldHJ5X2Vycm9yPSEwLHRoaXMuc3RhcnQoKX1zZXRUb2tlbihlKXt0aGlzLnRva2VuPWUudG9rZW4sdGhpcy50b2tlbkR1cmF0aW9uPTFlMyplLnRva2VuX2R1cmF0aW9uLHRoaXMuc3RhcnQoKX1nZXRUb2tlbigpe3JldHVybiBudWxsPT09dGhpcy50b2tlbiYmdGhpcy5mZXRjaFRva2VuKCExKSx0aGlzLnRva2VufXNldEFwaUJhc2VVcmwoZSl7dGhpcy5vcHRpb25zLmFwaUJhc2VVcmw9ZX1nZXRBcGlCYXNlVXJsKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hcGlCYXNlVXJsfX19LCIrVHZzIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LkxpbmtDb250YWluZXI9dC5JbmRleExpbmtDb250YWluZXI9dm9pZCAwO3ZhciByPWEobigiZzB2YSIpKSxvPWEobigiQjBMWiIpKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10LkluZGV4TGlua0NvbnRhaW5lcj1yLmRlZmF1bHQsdC5MaW5rQ29udGFpbmVyPW8uZGVmYXVsdH0sIit3ZGMiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxhLGksdTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCJmdW5jdGlvbiIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIHM9bnVsbCxsPW51bGwsYz1mdW5jdGlvbigpe2lmKG51bGwhPT1zKXRyeXt2YXIgZT10LnVuc3RhYmxlX25vdygpO3MoITAsZSkscz1udWxsfWNhdGNoKGUpe3Rocm93IHNldFRpbWVvdXQoYywwKSxlfX0sZj1EYXRlLm5vdygpO3QudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCktZn0scj1mdW5jdGlvbihlKXtudWxsIT09cz9zZXRUaW1lb3V0KHIsMCxlKToocz1lLHNldFRpbWVvdXQoYywwKSl9LG89ZnVuY3Rpb24oZSx0KXtsPXNldFRpbWVvdXQoZSx0KX0sYT1mdW5jdGlvbigpe2NsZWFyVGltZW91dChsKX0saT1mdW5jdGlvbigpe3JldHVybiExfSx1PXQudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oKXt9fWVsc2V7dmFyIGQ9d2luZG93LnBlcmZvcm1hbmNlLHA9d2luZG93LkRhdGUsaD13aW5kb3cuc2V0VGltZW91dCx5PXdpbmRvdy5jbGVhclRpbWVvdXQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlKXt2YXIgbT13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU7ImZ1bmN0aW9uIiE9dHlwZW9mIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJmNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2ZiLm1lL3JlYWN0LXBvbHlmaWxscyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBtJiZjb25zb2xlLmVycm9yKCJUaGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGNhbmNlbEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2ZiLm1lL3JlYWN0LXBvbHlmaWxscyIpfWlmKCJvYmplY3QiPT10eXBlb2YgZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQubm93KXQudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGQubm93KCl9O2Vsc2V7dmFyIHY9cC5ub3coKTt0LnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBwLm5vdygpLXZ9fXZhciBnPSExLGI9bnVsbCx3PS0xLF89NSxFPTA7aT1mdW5jdGlvbigpe3JldHVybiB0LnVuc3RhYmxlX25vdygpPj1FfSx1PWZ1bmN0aW9uKCl7fSx0LnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGUpezA+ZXx8MTI1PGU/Y29uc29sZS5lcnJvcigiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWVyYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCB1bnN1cHBvcnRlZCIpOl89MDxlP01hdGguZmxvb3IoMWUzL2UpOjV9O3ZhciBPPW5ldyBNZXNzYWdlQ2hhbm5lbCxrPU8ucG9ydDI7Ty5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXtpZihudWxsIT09Yil7dmFyIGU9dC51bnN0YWJsZV9ub3coKTtFPWUrXzt0cnl7YighMCxlKT9rLnBvc3RNZXNzYWdlKG51bGwpOihnPSExLGI9bnVsbCl9Y2F0Y2goZSl7dGhyb3cgay5wb3N0TWVzc2FnZShudWxsKSxlfX1lbHNlIGc9ITF9LHI9ZnVuY3Rpb24oZSl7Yj1lLGd8fChnPSEwLGsucG9zdE1lc3NhZ2UobnVsbCkpfSxvPWZ1bmN0aW9uKGUsbil7dz1oKChmdW5jdGlvbigpe2UodC51bnN0YWJsZV9ub3coKSl9KSxuKX0sYT1mdW5jdGlvbigpe3kodyksdz0tMX19ZnVuY3Rpb24gQyhlLHQpe3ZhciBuPWUubGVuZ3RoO2UucHVzaCh0KTtlOmZvcig7Oyl7dmFyIHI9TWF0aC5mbG9vcigobi0xKS8yKSxvPWVbcl07aWYoISh2b2lkIDAhPT1vJiYwPEQobyx0KSkpYnJlYWsgZTtlW3JdPXQsZVtuXT1vLG49cn19ZnVuY3Rpb24geChlKXtyZXR1cm4gdm9pZCAwPT09KGU9ZVswXSk/bnVsbDplfWZ1bmN0aW9uIFMoZSl7dmFyIHQ9ZVswXTtpZih2b2lkIDAhPT10KXt2YXIgbj1lLnBvcCgpO2lmKG4hPT10KXtlWzBdPW47ZTpmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bzspe3ZhciBhPTIqKHIrMSktMSxpPWVbYV0sdT1hKzEscz1lW3VdO2lmKHZvaWQgMCE9PWkmJjA+RChpLG4pKXZvaWQgMCE9PXMmJjA+RChzLGkpPyhlW3JdPXMsZVt1XT1uLHI9dSk6KGVbcl09aSxlW2FdPW4scj1hKTtlbHNle2lmKCEodm9pZCAwIT09cyYmMD5EKHMsbikpKWJyZWFrIGU7ZVtyXT1zLGVbdV09bixyPXV9fX1yZXR1cm4gdH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBEKGUsdCl7dmFyIG49ZS5zb3J0SW5kZXgtdC5zb3J0SW5kZXg7cmV0dXJuIDAhPT1uP246ZS5pZC10LmlkfXZhciBUPVtdLE09W10sUD0xLE49bnVsbCxqPTMsTD0hMSxSPSExLEk9ITE7ZnVuY3Rpb24gQShlKXtmb3IodmFyIHQ9eChNKTtudWxsIT09dDspe2lmKG51bGw9PT10LmNhbGxiYWNrKVMoTSk7ZWxzZXtpZighKHQuc3RhcnRUaW1lPD1lKSlicmVhaztTKE0pLHQuc29ydEluZGV4PXQuZXhwaXJhdGlvblRpbWUsQyhULHQpfXQ9eChNKX19ZnVuY3Rpb24gRihlKXtpZihJPSExLEEoZSksIVIpaWYobnVsbCE9PXgoVCkpUj0hMCxyKEIpO2Vsc2V7dmFyIHQ9eChNKTtudWxsIT09dCYmbyhGLHQuc3RhcnRUaW1lLWUpfX1mdW5jdGlvbiBCKGUsbil7Uj0hMSxJJiYoST0hMSxhKCkpLEw9ITA7dmFyIHI9ajt0cnl7Zm9yKEEobiksTj14KFQpO251bGwhPT1OJiYoIShOLmV4cGlyYXRpb25UaW1lPm4pfHxlJiYhaSgpKTspe3ZhciB1PU4uY2FsbGJhY2s7aWYobnVsbCE9PXUpe04uY2FsbGJhY2s9bnVsbCxqPU4ucHJpb3JpdHlMZXZlbDt2YXIgcz11KE4uZXhwaXJhdGlvblRpbWU8PW4pO249dC51bnN0YWJsZV9ub3coKSwiZnVuY3Rpb24iPT10eXBlb2Ygcz9OLmNhbGxiYWNrPXM6Tj09PXgoVCkmJlMoVCksQShuKX1lbHNlIFMoVCk7Tj14KFQpfWlmKG51bGwhPT1OKXZhciBsPSEwO2Vsc2V7dmFyIGM9eChNKTtudWxsIT09YyYmbyhGLGMuc3RhcnRUaW1lLW4pLGw9ITF9cmV0dXJuIGx9ZmluYWxseXtOPW51bGwsaj1yLEw9ITF9fWZ1bmN0aW9uIHooZSl7c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4tMTtjYXNlIDI6cmV0dXJuIDI1MDtjYXNlIDU6cmV0dXJuIDEwNzM3NDE4MjM7Y2FzZSA0OnJldHVybiAxZTQ7ZGVmYXVsdDpyZXR1cm4gNWUzfX12YXIgSz11O3QudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk9MSx0LnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTIsdC51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eT0zLHQudW5zdGFibGVfSWRsZVByaW9yaXR5PTUsdC51bnN0YWJsZV9Mb3dQcmlvcml0eT00LHQudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDplPTN9dmFyIG49ajtqPWU7dHJ5e3JldHVybiB0KCl9ZmluYWxseXtqPW59fSx0LnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oZSl7c3dpdGNoKGope2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciB0PTM7YnJlYWs7ZGVmYXVsdDp0PWp9dmFyIG49ajtqPXQ7dHJ5e3JldHVybiBlKCl9ZmluYWxseXtqPW59fSx0LnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oZSxuLGkpe3ZhciB1PXQudW5zdGFibGVfbm93KCk7aWYoIm9iamVjdCI9PXR5cGVvZiBpJiZudWxsIT09aSl7dmFyIHM9aS5kZWxheTtzPSJudW1iZXIiPT10eXBlb2YgcyYmMDxzP3Urczp1LGk9Im51bWJlciI9PXR5cGVvZiBpLnRpbWVvdXQ/aS50aW1lb3V0OnooZSl9ZWxzZSBpPXooZSkscz11O3JldHVybiBlPXtpZDpQKyssY2FsbGJhY2s6bixwcmlvcml0eUxldmVsOmUsc3RhcnRUaW1lOnMsZXhwaXJhdGlvblRpbWU6aT1zK2ksc29ydEluZGV4Oi0xfSxzPnU/KGUuc29ydEluZGV4PXMsQyhNLGUpLG51bGw9PT14KFQpJiZlPT09eChNKSYmKEk/YSgpOkk9ITAsbyhGLHMtdSkpKTooZS5zb3J0SW5kZXg9aSxDKFQsZSksUnx8THx8KFI9ITAscihCKSkpLGV9LHQudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7ZS5jYWxsYmFjaz1udWxsfSx0LnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgdD1qO3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWo7aj10O3RyeXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtqPW59fX0sdC51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiBqfSx0LnVuc3RhYmxlX3Nob3VsZFlpZWxkPWZ1bmN0aW9uKCl7dmFyIGU9dC51bnN0YWJsZV9ub3coKTtBKGUpO3ZhciBuPXgoVCk7cmV0dXJuIG4hPT1OJiZudWxsIT09TiYmbnVsbCE9PW4mJm51bGwhPT1uLmNhbGxiYWNrJiZuLnN0YXJ0VGltZTw9ZSYmbi5leHBpcmF0aW9uVGltZTxOLmV4cGlyYXRpb25UaW1lfHxpKCl9LHQudW5zdGFibGVfcmVxdWVzdFBhaW50PUssdC51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe1J8fEx8fChSPSEwLHIoQikpfSx0LnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fSx0LnVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHgoVCl9LHQudW5zdGFibGVfUHJvZmlsaW5nPW51bGx9LCIvOWFhIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiTnlrSyIpLG89bigiRXhBNyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGV8fG8oZSkmJiJbb2JqZWN0IFN5bWJvbF0iPT1yKGUpfX0sIi9FUXYiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtnZXRQdW5jdHVhdGlvbjpmdW5jdGlvbigpe3JldHVybiJbLiwrKj8kfCN7fSgpJ1xcXlxcLVxcW1xcXVxcXFxcXC8hQCVcIn49PD5fOjvjg7vjgIHjgILjgIgt44CR44CULeOAn++8mi3vvJ/vvIEt77yP77y7Le+9gO+9my3vvaXiuK7Yn9mqLdms2JvYjNiN77S+77S/4aCB4KWk4YGK4YGL4oCQLeKAp+KAsC3igZ7CoS3CscK0LcK4wrrCu8K/XSJ9fX0sIi9mTDQiOmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gMDtpZighMD09PWUpcmV0dXJuIDEwMDt2YXIgdD1lLmNhcHR1cmU8PDAsbj1lLnBhc3NpdmU8PDEscj1lLm9uY2U8PDI7cmV0dXJuIHQrbityfX0sIi9nWGsiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuSVRFTV9UWVBFUz10LmNyZWF0ZVVsdGltYXRlUGFnaW5hdGlvbj12b2lkIDA7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz11KG4oInExdEkiKSksYT11KG4oIjE3eDkiKSksaT1uKCJuRU9kIik7ZnVuY3Rpb24gdShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihhKXt2YXIgaSx1LHMsbD1lW2EudHlwZV0sYz0odT0oaT1hKS52YWx1ZSxzPWkuaXNEaXNhYmxlZCxmdW5jdGlvbigpeyFzJiZuJiZ0IT09dSYmbih1KX0pO3JldHVybiBvLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLHIoe29uQ2xpY2s6Y30sYSkpfX07dC5jcmVhdGVVbHRpbWF0ZVBhZ2luYXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pdGVtVHlwZVRvQ29tcG9uZW50LG49ZS5XcmFwcGVyQ29tcG9uZW50LHU9dm9pZCAwPT09bj8iZGl2IjpuLGw9ZnVuY3Rpb24oZSl7dmFyIG49ZS5jdXJyZW50UGFnZSxhPWUudG90YWxQYWdlcyxsPWUuYm91bmRhcnlQYWdlc1JhbmdlLGM9ZS5zaWJsaW5nUGFnZXNSYW5nZSxmPWUuaGlkZUVsbGlwc2lzLGQ9ZS5oaWRlUHJldmlvdXNBbmROZXh0UGFnZUxpbmtzLHA9ZS5oaWRlRmlyc3RBbmRMYXN0UGFnZUxpbmtzLGg9ZS5vbkNoYW5nZSx5PWUuZGlzYWJsZWQsbT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufShlLFsiY3VycmVudFBhZ2UiLCJ0b3RhbFBhZ2VzIiwiYm91bmRhcnlQYWdlc1JhbmdlIiwic2libGluZ1BhZ2VzUmFuZ2UiLCJoaWRlRWxsaXBzaXMiLCJoaWRlUHJldmlvdXNBbmROZXh0UGFnZUxpbmtzIiwiaGlkZUZpcnN0QW5kTGFzdFBhZ2VMaW5rcyIsIm9uQ2hhbmdlIiwiZGlzYWJsZWQiXSksdj0oMCxpLmdldFBhZ2luYXRpb25Nb2RlbCkoe2N1cnJlbnRQYWdlOm4sdG90YWxQYWdlczphLGJvdW5kYXJ5UGFnZXNSYW5nZTpsLHNpYmxpbmdQYWdlc1JhbmdlOmMsaGlkZUVsbGlwc2lzOmYsaGlkZVByZXZpb3VzQW5kTmV4dFBhZ2VMaW5rczpkLGhpZGVGaXJzdEFuZExhc3RQYWdlTGlua3M6cH0pLGc9cyh0LG4saCk7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUsbSx2Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGcocih7fSxlLHtpc0Rpc2FibGVkOiEheX0pKX0pKSl9O3JldHVybiBsLnByb3BUeXBlcz17Y3VycmVudFBhZ2U6YS5kZWZhdWx0Lm51bWJlci5pc1JlcXVpcmVkLHRvdGFsUGFnZXM6YS5kZWZhdWx0Lm51bWJlci5pc1JlcXVpcmVkLGJvdW5kYXJ5UGFnZXNSYW5nZTphLmRlZmF1bHQubnVtYmVyLHNpYmxpbmdQYWdlc1JhbmdlOmEuZGVmYXVsdC5udW1iZXIsaGlkZUVsbGlwc2lzOmEuZGVmYXVsdC5ib29sLGhpZGVQcmV2aW91c0FuZE5leHRQYWdlTGlua3M6YS5kZWZhdWx0LmJvb2wsaGlkZUZpcnN0QW5kTGFzdFBhZ2VMaW5rczphLmRlZmF1bHQuYm9vbCxvbkNoYW5nZTphLmRlZmF1bHQuZnVuYyxkaXNhYmxlZDphLmRlZmF1bHQuYm9vbH0sbH0sdC5JVEVNX1RZUEVTPWkuSVRFTV9UWVBFU30sIi95K2wiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIG89bigiOHVRbSIpLGE9bigiSkw3VCIpLGk9bigiZHl4VyIpLHU9bigiVTg0YSIpLHM9bigieXh5RCIpLGw9bigibUZ5ViIpLGM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57a2V5OmUuZ2V0S2V5KCksdGV4dDplLmdldFRleHQoKSx0eXBlOmUuZ2V0VHlwZSgpLGRlcHRoOmUuZ2V0RGVwdGgoKSxpbmxpbmVTdHlsZVJhbmdlczpzKGUpLGVudGl0eVJhbmdlczp1KGUsdCksZGF0YTplLmdldERhdGEoKS50b09iamVjdCgpfX0sZj1mdW5jdGlvbihlLHQsbixpKXtpZihlIGluc3RhbmNlb2YgbyluLnB1c2goYyhlLHQpKTtlbHNle2UgaW5zdGFuY2VvZiBhfHxsKCExKTt2YXIgdT1lLmdldFBhcmVudEtleSgpLHM9aVtlLmdldEtleSgpXT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LG89T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihvPW8uY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3IoZSx0LG5bdF0pfSkpfXJldHVybiBlfSh7fSxjKGUsdCkse2NoaWxkcmVuOltdfSk7dT9pW3VdLmNoaWxkcmVuLnB1c2gocyk6bi5wdXNoKHMpfX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXtlbnRpdHlNYXA6e30sYmxvY2tzOltdfTtyZXR1cm4gdD1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZW50aXR5TWFwLHI9W10sbz17fSxhPXt9LHU9MDtyZXR1cm4gZS5nZXRCbG9ja01hcCgpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuZmluZEVudGl0eVJhbmdlcygoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lLmdldEVudGl0eSgpfSksKGZ1bmN0aW9uKHQpe3ZhciByPWUuZ2V0RW50aXR5QXQodCksbz1pLnN0cmluZ2lmeShyKTthW29dfHwoYVtvXT1yLG5bb109IiIuY29uY2F0KHUpLHUrKyl9KSksZihlLG4scixvKX0pKSx7YmxvY2tzOnIsZW50aXR5TWFwOm59fShlLHQpLHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmJsb2NrcyxyPXQuZW50aXR5TWFwLG89e307cmV0dXJuIE9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5nZXRFbnRpdHkoaS51bnN0cmluZ2lmeSh0KSk7b1tuXT17dHlwZTpyLmdldFR5cGUoKSxtdXRhYmlsaXR5OnIuZ2V0TXV0YWJpbGl0eSgpLGRhdGE6ci5nZXREYXRhKCl9fSkpLHtibG9ja3M6bixlbnRpdHlNYXA6b319KGUsdCl9fSwiL3kwSCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2dldFJlbW92YWxSYW5nZTpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBhPW4uc3BsaXQoIiAiKTthPWEubWFwKChmdW5jdGlvbihlLHQpe2lmKCJmb3J3YXJkIj09PW8pe2lmKHQ+MClyZXR1cm4iICIrZX1lbHNlIGlmKHQ8YS5sZW5ndGgtMSlyZXR1cm4gZSsiICI7cmV0dXJuIGV9KSk7Zm9yKHZhciBpLHU9cixzPW51bGwsbD1udWxsLGM9MDtjPGEubGVuZ3RoO2MrKyl7aWYoZTwoaT11K2FbY10ubGVuZ3RoKSYmdTx0KW51bGwhPT1zP2w9aToocz11LGw9aSk7ZWxzZSBpZihudWxsIT09cylicmVhazt1PWl9dmFyIGY9cituLmxlbmd0aCxkPXM9PT1yLHA9bD09PWY7cmV0dXJuKCFkJiZwfHxkJiYhcCkmJigiZm9yd2FyZCI9PT1vP2whPT1mJiZsKys6cyE9PXImJnMtLSkse3N0YXJ0OnMsZW5kOmx9fX19LCIveUZmIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIm9IbnAiKTtmdW5jdGlvbiBvKGUpe2lmKGUpcmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBvLnByb3RvdHlwZSllW3RdPW8ucHJvdG90eXBlW3RdO3JldHVybiBlfShlKX1lLmV4cG9ydHM9byxvLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGVhZGVyW2UudG9Mb3dlckNhc2UoKV19LG8ucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzPWZ1bmN0aW9uKGUpe3ZhciB0PWVbImNvbnRlbnQtdHlwZSJdfHwiIjt0aGlzLnR5cGU9ci50eXBlKHQpO3ZhciBuPXIucGFyYW1zKHQpO2Zvcih2YXIgbyBpbiBuKXRoaXNbb109bltvXTt0aGlzLmxpbmtzPXt9O3RyeXtlLmxpbmsmJih0aGlzLmxpbmtzPXIucGFyc2VMaW5rcyhlLmxpbmspKX1jYXRjaChlKXt9fSxvLnByb3RvdHlwZS5fc2V0U3RhdHVzUHJvcGVydGllcz1mdW5jdGlvbihlKXt2YXIgdD1lLzEwMHwwO3RoaXMuc3RhdHVzPXRoaXMuc3RhdHVzQ29kZT1lLHRoaXMuc3RhdHVzVHlwZT10LHRoaXMuaW5mbz0xPT10LHRoaXMub2s9Mj09dCx0aGlzLnJlZGlyZWN0PTM9PXQsdGhpcy5jbGllbnRFcnJvcj00PT10LHRoaXMuc2VydmVyRXJyb3I9NT09dCx0aGlzLmVycm9yPSg0PT10fHw1PT10KSYmdGhpcy50b0Vycm9yKCksdGhpcy5jcmVhdGVkPTIwMT09ZSx0aGlzLmFjY2VwdGVkPTIwMj09ZSx0aGlzLm5vQ29udGVudD0yMDQ9PWUsdGhpcy5iYWRSZXF1ZXN0PTQwMD09ZSx0aGlzLnVuYXV0aG9yaXplZD00MDE9PWUsdGhpcy5ub3RBY2NlcHRhYmxlPTQwNj09ZSx0aGlzLmZvcmJpZGRlbj00MDM9PWUsdGhpcy5ub3RGb3VuZD00MDQ9PWUsdGhpcy51bnByb2Nlc3NhYmxlRW50aXR5PTQyMj09ZX19LDA6ZnVuY3Rpb24oZSx0KXt9LCIwK2JnIjpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89bigiMTd4OSIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9LGk9bigiNWY3biIpO3QuZGVmYXVsdD1hLmRlZmF1bHQub25lT2YoW2kuQU5DSE9SX0xFRlQsaS5BTkNIT1JfUklHSFRdKX0sIjBJS1UiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiaThpNCIpLG89bigibUZ5ViIpLGE9bigiT0x6QSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1yLmZpbmRET01Ob2RlKGUuZWRpdG9yQ29udGFpbmVyKTtyZXR1cm4gdHx8byghMSksYSh0LmZpcnN0Q2hpbGQpfHxvKCExKSx0LmZpcnN0Q2hpbGR9fSwiMFJRYiI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIzc09KIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0U2VsZWN0aW9uKCksbj10LmdldEVuZEtleSgpLG89ZS5nZXRDdXJyZW50Q29udGVudCgpLmdldEJsb2NrRm9yS2V5KG4pLmdldExlbmd0aCgpO3JldHVybiByLnNldChlLHtzZWxlY3Rpb246dC5tZXJnZSh7YW5jaG9yS2V5Om4sYW5jaG9yT2Zmc2V0Om8sZm9jdXNLZXk6bixmb2N1c09mZnNldDpvLGlzQmFja3dhcmQ6ITF9KSxmb3JjZVNlbGVjdGlvbjohMH0pfX0sIjBUUkQiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtCT0xEOntmb250V2VpZ2h0OiJib2xkIn0sQ09ERTp7Zm9udEZhbWlseToibW9ub3NwYWNlIix3b3JkV3JhcDoiYnJlYWstd29yZCJ9LElUQUxJQzp7Zm9udFN0eWxlOiJpdGFsaWMifSxTVFJJS0VUSFJPVUdIOnt0ZXh0RGVjb3JhdGlvbjoibGluZS10aHJvdWdoIn0sVU5ERVJMSU5FOnt0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn19fSwiMHRSayI6ZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5kZWZpbmVMb2NhbGUoInB0LWJyIix7bW9udGhzOiJKYW5laXJvX0ZldmVyZWlyb19NYXLDp29fQWJyaWxfTWFpb19KdW5ob19KdWxob19BZ29zdG9fU2V0ZW1icm9fT3V0dWJyb19Ob3ZlbWJyb19EZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ29fU2VndW5kYS1mZWlyYV9UZXLDp2EtZmVpcmFfUXVhcnRhLWZlaXJhX1F1aW50YS1mZWlyYV9TZXh0YS1mZWlyYV9Tw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9TZWdfVGVyX1F1YV9RdWlfU2V4X1PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvXzLCql8zwqpfNMKqXzXCql82wqpfU8OhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIb2plIMOgc10gTFQiLG5leHREYXk6IltBbWFuaMOjIMOgc10gTFQiLG5leHRXZWVrOiJkZGRkIFvDoHNdIExUIixsYXN0RGF5OiJbT250ZW0gw6BzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZGF5KCl8fDY9PT10aGlzLmRheSgpPyJbw5psdGltb10gZGRkZCBbw6BzXSBMVCI6IlvDmmx0aW1hXSBkZGRkIFvDoHNdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW0gJXMiLHBhc3Q6ImjDoSAlcyIsczoicG91Y29zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVtIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVtYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVtIGRpYSIsZGQ6IiVkIGRpYXMiLE06InVtIG3DqnMiLE1NOiIlZCBtZXNlcyIseToidW0gYW5vIix5eToiJWQgYW5vcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiJ9KX0obigid2QvUiIpKX0sIjB2eEQiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oIkRVelkiKX0sMTpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oIjdSTDgiKX0sIjErS24iOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz02OSl9KHswOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInExdEkiKX0sMTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIc3FnIil9LDExOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHIsbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigwKSx1PShyPWkpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcyh0aGlzLHQpLGwodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3ZnIixvKHt2aWV3Qm94OiIwIDAgMTIgMTIifSx0aGlzLnByb3BzKSx1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMTEuNTMuNDdhLjc1Ljc1IDAgMCAwLTEuMDYxIDBsLTQuNDcgNC40N0wxLjUyOS40N0EuNzUuNzUgMCAxIDAgLjQ2OCAxLjUzMWw0LjQ3IDQuNDctNC40NyA0LjQ3YS43NS43NSAwIDEgMCAxLjA2MSAxLjA2MWw0LjQ3LTQuNDcgNC40NyA0LjQ3YS43NS43NSAwIDEgMCAxLjA2MS0xLjA2MWwtNC40Ny00LjQ3IDQuNDctNC40N2EuNzUuNzUgMCAwIDAgMC0xLjA2MXoifSkpfX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sMzpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ2VitHIil9LDQ6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiMTd4OSIpfSw1OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInljMmUiKX0sNjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJUU1lRIil9LDY5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQk9UVE9NX1JJR0hUPXQuVE9QX1JJR0hUPXQuVE9QX0xFRlQ9dm9pZCAwO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpO3QuS2V5Ym9hcmRTaG9ydGN1dFJvdz13O3ZhciBhPWQobigwKSksaT1kKG4oNCkpLHU9bigxKSxzPWQobig2KSksbD1uKDMpLGM9ZChuKDUpKSxmPWQobigxMSkpO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHAoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBoKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciB5PXQuVE9QX0xFRlQ9InRvcC1sZWZ0IixtPXQuVE9QX1JJR0hUPSJ0b3AtcmlnaHQiLHY9dC5CT1RUT01fUklHSFQ9ImJvdHRvbS1yaWdodCIsZz17YmxvY2s6aS5kZWZhdWx0LmJvb2wsYnV0dG9uTG9jYXRpb246aS5kZWZhdWx0Lm9uZU9mKFt5LG0sdl0pLHNob3dLZXlib2FyZFNob3J0Y3V0c1BhbmVsOmkuZGVmYXVsdC5ib29sLG9wZW5LZXlib2FyZFNob3J0Y3V0c1BhbmVsOmkuZGVmYXVsdC5mdW5jLGNsb3NlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDppLmRlZmF1bHQuZnVuYyxwaHJhc2VzOmkuZGVmYXVsdC5zaGFwZSgoMCxjLmRlZmF1bHQpKGwuRGF5UGlja2VyS2V5Ym9hcmRTaG9ydGN1dHNQaHJhc2VzKSl9LGI9e2Jsb2NrOiExLGJ1dHRvbkxvY2F0aW9uOnYsc2hvd0tleWJvYXJkU2hvcnRjdXRzUGFuZWw6ITEsb3BlbktleWJvYXJkU2hvcnRjdXRzUGFuZWw6ZnVuY3Rpb24oKXt9LGNsb3NlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDpmdW5jdGlvbigpe30scGhyYXNlczpsLkRheVBpY2tlcktleWJvYXJkU2hvcnRjdXRzUGhyYXNlc307ZnVuY3Rpb24gdyhlKXt2YXIgdD1lLnVuaWNvZGUsbj1lLmxhYmVsLHI9ZS5hY3Rpb247cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJsaSIse2NsYXNzTmFtZToiS2V5Ym9hcmRTaG9ydGN1dFJvdyJ9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IktleWJvYXJkU2hvcnRjdXRSb3dfX2tleS1jb250YWluZXIifSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiS2V5Ym9hcmRTaG9ydGN1dFJvd19fa2V5Iixyb2xlOiJpbWciLCJhcmlhLWxhYmVsIjpufSx0KSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiS2V5Ym9hcmRTaG9ydGN1dFJvd19fYWN0aW9uIn0scikpfXcucHJvcFR5cGVzPXt1bmljb2RlOmkuZGVmYXVsdC5zdHJpbmcuaXNSZXF1aXJlZCxsYWJlbDppLmRlZmF1bHQuc3RyaW5nLmlzUmVxdWlyZWQsYWN0aW9uOmkuZGVmYXVsdC5zdHJpbmcuaXNSZXF1aXJlZH07dmFyIF89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlO3AodGhpcyx0KTtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KG4pLG89MDtvPG47bysrKXJbb109YXJndW1lbnRzW29dO3ZhciBhPWgodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChyKSkpO3JldHVybiBhLm9uQ2xpY2s9YS5vbkNsaWNrLmJpbmQoYSksYS5zZXRTaG93S2V5Ym9hcmRTaG9ydGN1dHNCdXR0b25SZWY9YS5zZXRTaG93S2V5Ym9hcmRTaG9ydGN1dHNCdXR0b25SZWYuYmluZChhKSxhfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrKHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJvbkNsaWNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7KDAsdGhpcy5wcm9wcy5vcGVuS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbCkoKGZ1bmN0aW9uKCl7ZS5zaG93S2V5Ym9hcmRTaG9ydGN1dHNCdXR0b24uZm9jdXMoKX0pKX19LHtrZXk6InNldFNob3dLZXlib2FyZFNob3J0Y3V0c0J1dHRvblJlZiIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zaG93S2V5Ym9hcmRTaG9ydGN1dHNCdXR0b249ZX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5ibG9jayxuPWUuYnV0dG9uTG9jYXRpb24scj1lLnNob3dLZXlib2FyZFNob3J0Y3V0c1BhbmVsLG89ZS5jbG9zZUtleWJvYXJkU2hvcnRjdXRzUGFuZWwsaT1lLnBocmFzZXMsdT1be3VuaWNvZGU6IuKGtSIsbGFiZWw6aS5lbnRlcktleSxhY3Rpb246aS5zZWxlY3RGb2N1c2VkRGF0ZX0se3VuaWNvZGU6IuKGkC/ihpIiLGxhYmVsOmkubGVmdEFycm93UmlnaHRBcnJvdyxhY3Rpb246aS5tb3ZlRm9jdXNCeU9uZURheX0se3VuaWNvZGU6IuKGkS/ihpMiLGxhYmVsOmkudXBBcnJvd0Rvd25BcnJvdyxhY3Rpb246aS5tb3ZlRm9jdXNCeU9uZVdlZWt9LHt1bmljb2RlOiJQZ1VwL1BnRG4iLGxhYmVsOmkucGFnZVVwUGFnZURvd24sYWN0aW9uOmkubW92ZUZvY3VzQnlPbmVNb250aH0se3VuaWNvZGU6IkhvbWUvRW5kIixsYWJlbDppLmhvbWVFbmQsYWN0aW9uOmkubW92ZUZvY3VzdG9TdGFydEFuZEVuZE9mV2Vla30se3VuaWNvZGU6IkVzYyIsbGFiZWw6aS5lc2NhcGUsYWN0aW9uOmkucmV0dXJuRm9jdXNUb0lucHV0fSx7dW5pY29kZToiPyIsbGFiZWw6aS5xdWVzdGlvbk1hcmssYWN0aW9uOmkub3BlblRoaXNQYW5lbH1dLGw9cj9pLmhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsOmkuc2hvd0tleWJvYXJkU2hvcnRjdXRzUGFuZWw7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3JlZjp0aGlzLnNldFNob3dLZXlib2FyZFNob3J0Y3V0c0J1dHRvblJlZixjbGFzc05hbWU6KDAscy5kZWZhdWx0KSgiRGF5UGlja2VyS2V5Ym9hcmRTaG9ydGN1dHNfX3Nob3ciLHsiRGF5UGlja2VyS2V5Ym9hcmRTaG9ydGN1dHNfX3Nob3ctLWJvdHRvbS1yaWdodCI6bj09PXYsIkRheVBpY2tlcktleWJvYXJkU2hvcnRjdXRzX19zaG93LS10b3AtcmlnaHQiOm49PT1tLCJEYXlQaWNrZXJLZXlib2FyZFNob3J0Y3V0c19fc2hvdy0tdG9wLWxlZnQiOm49PT15fSksdHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6bCxvbkNsaWNrOnRoaXMub25DbGljayxvbk1vdXNlVXA6ZnVuY3Rpb24oZSl7ZS5jdXJyZW50VGFyZ2V0LmJsdXIoKX19LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJEYXlQaWNrZXJLZXlib2FyZFNob3J0Y3V0c19fc2hvd19zcGFuIn0sIj8iKSksciYmYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKCJEYXlQaWNrZXJLZXlib2FyZFNob3J0Y3V0c19fcGFuZWwiLHsiRGF5UGlja2VyS2V5Ym9hcmRTaG9ydGN1dHNfX3BhbmVsLS1ibG9jayI6dH0pLHJvbGU6ImRpYWxvZyIsImFyaWEtbGFiZWxsZWRieSI6IkRheVBpY2tlcktleWJvYXJkU2hvcnRjdXRzX190aXRsZSJ9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtpZDoiRGF5UGlja2VyS2V5Ym9hcmRTaG9ydGN1dHNfX3RpdGxlIixjbGFzc05hbWU6IkRheVBpY2tlcktleWJvYXJkU2hvcnRjdXRzX190aXRsZSJ9LGkua2V5Ym9hcmRTaG9ydGN1dHMpLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6IkRheVBpY2tlcktleWJvYXJkU2hvcnRjdXRzX19jbG9zZSIsdHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6aS5oaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbCxvbkNsaWNrOm8sb25LZXlEb3duOmZ1bmN0aW9uKGUpeyJUYWIiPT09ZS5rZXkmJmUucHJldmVudERlZmF1bHQoKX19LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGYuZGVmYXVsdCxudWxsKSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJEYXlQaWNrZXJLZXlib2FyZFNob3J0Y3V0c19fbGlzdCJ9LHUubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLnVuaWNvZGUsbj1lLmxhYmVsLHI9ZS5hY3Rpb247cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHcse2tleTpuLHVuaWNvZGU6dCxsYWJlbDpuLGFjdGlvbjpyfSl9KSkpKSl9fV0pLHR9KGEuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1fLF8ucHJvcFR5cGVzPSgwLHUuZm9yYmlkRXh0cmFQcm9wcykoZyksXy5kZWZhdWx0UHJvcHM9Yn19KX0sIjE1OGYiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNHBJQiIpLG89bigibUZ5ViIpO3ZhciBhPXIuaXNCcm93c2VyKCJDaHJvbWUiKT9mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5jbG9uZVJhbmdlKCksbj1bXSxyPWUuZW5kQ29udGFpbmVyO251bGwhPXI7cj1yLnBhcmVudE5vZGUpe3ZhciBhPXI9PT1lLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO2E/dC5zZXRTdGFydChlLnN0YXJ0Q29udGFpbmVyLGUuc3RhcnRPZmZzZXQpOnQuc2V0U3RhcnQodC5lbmRDb250YWluZXIsMCk7dmFyIGksdT1BcnJheS5mcm9tKHQuZ2V0Q2xpZW50UmVjdHMoKSk7aWYobi5wdXNoKHUpLGEpcmV0dXJuIG4ucmV2ZXJzZSgpLChpPVtdKS5jb25jYXQuYXBwbHkoaSxuKTt0LnNldEVuZEJlZm9yZShyKX1vKCExKX06ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmZyb20oZS5nZXRDbGllbnRSZWN0cygpKX07ZS5leHBvcnRzPWF9LCIxNkFsIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIldiQkciKTtmdW5jdGlvbiBvKCl7fWZ1bmN0aW9uIGEoKXt9YS5yZXNldFdhcm5pbmdDYWNoZT1vLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4sbyxhLGkpe2lmKGkhPT1yKXt2YXIgdT1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyB1Lm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLHV9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgbj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6YSxyZXNldFdhcm5pbmdDYWNoZTpvfTtyZXR1cm4gbi5Qcm9wVHlwZXM9bixufX0sIjE3eDkiOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigiMTZBbCIpKCl9LCIxOTdzIjpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO289W2UsdCxuKCJxMXRJIiksbigiMTd4OSIpXSx2b2lkIDA9PT0oYT0iZnVuY3Rpb24iPT10eXBlb2Yocj1mdW5jdGlvbihlLHQsbixyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPWEobik7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19YShyKTt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSx1PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O2Z1bmN0aW9uIHMoZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn12YXIgbD17Y2xhc3NOYW1lOiJyZWFjdC10YWdzaW5wdXQtaW5wdXQiLHBsYWNlaG9sZGVyOiJBZGQgYSB0YWcifSxjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgZT1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMpKTtyZXR1cm4gZS5zdGF0ZT17dGFnOiIiLGlzRm9jdXNlZDohMX0sZS5mb2N1cz1lLmZvY3VzLmJpbmQoZSksZS5ibHVyPWUuYmx1ci5iaW5kKGUpLGV9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxpKHQsW3trZXk6Il9nZXRUYWdEaXNwbGF5VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMudGFnRGlzcGxheVByb3A7cmV0dXJuIHQ/ZVt0XTplfX0se2tleToiX21ha2VUYWciLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixvPXRoaXMucHJvcHMudGFnRGlzcGxheVByb3A7cmV0dXJuIG8/KHI9ZSwobj1vKWluKHQ9e30pP09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W25dPXIsdCk6ZX19LHtrZXk6Il9yZW1vdmVUYWciLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMudmFsdWUuY29uY2F0KFtdKTtpZihlPi0xJiZlPHQubGVuZ3RoKXt2YXIgbj10LnNwbGljZShlLDEpO3RoaXMucHJvcHMub25DaGFuZ2UodCxuLFtlXSl9fX0se2tleToiX2NsZWFySW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYXNDb250cm9sbGVkSW5wdXQoKT90aGlzLnByb3BzLm9uQ2hhbmdlSW5wdXQoIiIpOnRoaXMuc2V0U3RhdGUoe3RhZzoiIn0pfX0se2tleToiX3RhZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNDb250cm9sbGVkSW5wdXQoKT90aGlzLnByb3BzLmlucHV0VmFsdWU6dGhpcy5zdGF0ZS50YWd9fSx7a2V5OiJfYWRkVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMucHJvcHMscj1uLnZhbGlkYXRpb25SZWdleCxvPW4ub25DaGFuZ2UsYT1uLm9uVmFsaWRhdGlvblJlamVjdCxpPW4ub25seVVuaXF1ZSx1PW4ubWF4VGFncyxzPW4udmFsdWU7aSYmKGU9KGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUubGVuZ3RoO24rKyktMT09PXQuaW5kZXhPZihlW25dKSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fShlKSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gcy5ldmVyeSgoZnVuY3Rpb24obil7cmV0dXJuIHQuX2dldFRhZ0Rpc3BsYXlWYWx1ZShuKSE9PXQuX2dldFRhZ0Rpc3BsYXlWYWx1ZShlKX0pKX0pKSk7dmFyIGw9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFyLnRlc3QodC5fZ2V0VGFnRGlzcGxheVZhbHVlKGUpKX0pKTtpZihlPShlPWUuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gci50ZXN0KHQuX2dldFRhZ0Rpc3BsYXlWYWx1ZShlKSl9KSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIG49dC5fZ2V0VGFnRGlzcGxheVZhbHVlKGUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuLnRyaW0/bi50cmltKCkubGVuZ3RoPjA6bn0pKSx1Pj0wKXt2YXIgYz1NYXRoLm1heCh1LXMubGVuZ3RoLDApO2U9ZS5zbGljZSgwLGMpfWlmKGEmJmwubGVuZ3RoPjAmJmEobCksZS5sZW5ndGg+MCl7Zm9yKHZhciBmPXMuY29uY2F0KGUpLGQ9W10scD0wO3A8ZS5sZW5ndGg7cCsrKWQucHVzaChzLmxlbmd0aCtwKTtyZXR1cm4gbyhmLGUsZCksdGhpcy5fY2xlYXJJbnB1dCgpLCEwfXJldHVybiEobC5sZW5ndGg+MHx8KHRoaXMuX2NsZWFySW5wdXQoKSwxKSl9fSx7a2V5OiJfc2hvdWxkUHJldmVudERlZmF1bHRFdmVudE9uQWRkIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuISFlfHwxMz09PW4mJih0aGlzLnByb3BzLnByZXZlbnRTdWJtaXR8fCF0aGlzLnByb3BzLnByZXZlbnRTdWJtaXQmJiF0KX19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5wdXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmlucHV0LmZvY3VzJiZ0aGlzLmlucHV0LmZvY3VzKCksdGhpcy5oYW5kbGVPbkZvY3VzKCl9fSx7a2V5OiJibHVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5wdXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmlucHV0LmJsdXImJnRoaXMuaW5wdXQuYmx1cigpLHRoaXMuaGFuZGxlT25CbHVyKCl9fSx7a2V5OiJhY2NlcHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdGFnKCk7cmV0dXJuIiIhPT1lJiYoZT10aGlzLl9tYWtlVGFnKGUpLHRoaXMuX2FkZFRhZ3MoW2VdKSl9fSx7a2V5OiJhZGRUYWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hZGRUYWdzKFtlXSl9fSx7a2V5OiJjbGVhcklucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2NsZWFySW5wdXQoKX19LHtrZXk6ImhhbmRsZVBhc3RlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcyxyPW4uYWRkT25QYXN0ZSxvPW4ucGFzdGVTcGxpdDtpZihyKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIGE9byhmdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LmNsaXBib2FyZERhdGE/d2luZG93LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgiVGV4dCIpOmUuY2xpcGJvYXJkRGF0YT9lLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpOiIifShlKSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fbWFrZVRhZyhlKX0pKTt0aGlzLl9hZGRUYWdzKGEpfX19LHtrZXk6ImhhbmRsZUtleURvd24iLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlLmRlZmF1bHRQcmV2ZW50ZWQpe3ZhciB0PXRoaXMucHJvcHMsbj10LnZhbHVlLHI9dC5yZW1vdmVLZXlzLG89dC5hZGRLZXlzLGE9IiI9PT10aGlzLl90YWcoKSxpPWUua2V5Q29kZSx1PWUua2V5LHM9LTEhPT1vLmluZGV4T2YoaSl8fC0xIT09by5pbmRleE9mKHUpLGw9LTEhPT1yLmluZGV4T2YoaSl8fC0xIT09ci5pbmRleE9mKHUpO2lmKHMpe3ZhciBjPXRoaXMuYWNjZXB0KCk7dGhpcy5fc2hvdWxkUHJldmVudERlZmF1bHRFdmVudE9uQWRkKGMsYSxpKSYmZS5wcmV2ZW50RGVmYXVsdCgpfWwmJm4ubGVuZ3RoPjAmJmEmJihlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fcmVtb3ZlVGFnKG4ubGVuZ3RoLTEpKX19fSx7a2V5OiJoYW5kbGVDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS50YXJnZXQ9PT10aGlzLmRpdiYmdGhpcy5mb2N1cygpfX0se2tleToiaGFuZGxlQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLm9uQ2hhbmdlSW5wdXQsbj10aGlzLnByb3BzLmlucHV0UHJvcHMub25DaGFuZ2Uscj1lLnRhcmdldC52YWx1ZTtuJiZuKGUpLHRoaXMuaGFzQ29udHJvbGxlZElucHV0KCk/dChyKTp0aGlzLnNldFN0YXRlKHt0YWc6cn0pfX0se2tleToiaGFuZGxlT25Gb2N1cyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5pbnB1dFByb3BzLm9uRm9jdXM7dCYmdChlKSx0aGlzLnNldFN0YXRlKHtpc0ZvY3VzZWQ6ITB9KX19LHtrZXk6ImhhbmRsZU9uQmx1ciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5pbnB1dFByb3BzLm9uQmx1cjtpZih0aGlzLnNldFN0YXRlKHtpc0ZvY3VzZWQ6ITF9KSxudWxsIT1lJiYodCYmdChlKSx0aGlzLnByb3BzLmFkZE9uQmx1cikpe3ZhciBuPXRoaXMuX21ha2VUYWcoZS50YXJnZXQudmFsdWUpO3RoaXMuX2FkZFRhZ3MoW25dKX19fSx7a2V5OiJoYW5kbGVSZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3JlbW92ZVRhZyhlKX19LHtrZXk6ImlucHV0UHJvcHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5pbnB1dFByb3BzLHQ9KGUub25DaGFuZ2UsZS5vbkZvY3VzLGUub25CbHVyLHMoZSxbIm9uQ2hhbmdlIiwib25Gb2N1cyIsIm9uQmx1ciJdKSksbj11KHt9LGwsdCk7cmV0dXJuIHRoaXMucHJvcHMuZGlzYWJsZWQmJihuLmRpc2FibGVkPSEwKSxufX0se2tleToiaW5wdXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY3VycmVudFZhbHVlfHxlLmlucHV0VmFsdWV8fCIifX0se2tleToiaGFzQ29udHJvbGxlZElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmlucHV0VmFsdWU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUub25DaGFuZ2VJbnB1dCYmInN0cmluZyI9PXR5cGVvZiB0fX0se2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYXNDb250cm9sbGVkSW5wdXQoKXx8dGhpcy5zZXRTdGF0ZSh7dGFnOnRoaXMuaW5wdXRWYWx1ZSh0aGlzLnByb3BzKX0pfX0se2tleToiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5oYXNDb250cm9sbGVkSW5wdXQoKXx8dGhpcy5pbnB1dFZhbHVlKGUpJiZ0aGlzLnNldFN0YXRlKHt0YWc6dGhpcy5pbnB1dFZhbHVlKGUpfSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LnZhbHVlLHI9KHQub25DaGFuZ2UsdC50YWdQcm9wcyksYT10LnJlbmRlckxheW91dCxpPXQucmVuZGVyVGFnLGw9dC5yZW5kZXJJbnB1dCxjPSh0LmFkZEtleXMsdC5yZW1vdmVLZXlzLHQuY2xhc3NOYW1lKSxmPXQuZm9jdXNlZENsYXNzTmFtZSxkPSh0LmFkZE9uQmx1cix0LmFkZE9uUGFzdGUsdC5pbnB1dFByb3BzLHQucGFzdGVTcGxpdCx0Lm9ubHlVbmlxdWUsdC5tYXhUYWdzLHQudmFsaWRhdGlvblJlZ2V4LHQuZGlzYWJsZWQpO3QudGFnRGlzcGxheVByb3AsdC5pbnB1dFZhbHVlLHQub25DaGFuZ2VJbnB1dCxzKHQsWyJ2YWx1ZSIsIm9uQ2hhbmdlIiwidGFnUHJvcHMiLCJyZW5kZXJMYXlvdXQiLCJyZW5kZXJUYWciLCJyZW5kZXJJbnB1dCIsImFkZEtleXMiLCJyZW1vdmVLZXlzIiwiY2xhc3NOYW1lIiwiZm9jdXNlZENsYXNzTmFtZSIsImFkZE9uQmx1ciIsImFkZE9uUGFzdGUiLCJpbnB1dFByb3BzIiwicGFzdGVTcGxpdCIsIm9ubHlVbmlxdWUiLCJtYXhUYWdzIiwidmFsaWRhdGlvblJlZ2V4IiwiZGlzYWJsZWQiLCJ0YWdEaXNwbGF5UHJvcCIsImlucHV0VmFsdWUiLCJvbkNoYW5nZUlucHV0Il0pLHRoaXMuc3RhdGUuaXNGb2N1c2VkJiYoYys9IiAiK2YpO3ZhciBwPW4ubWFwKChmdW5jdGlvbih0LG4pe3JldHVybiBpKHUoe2tleTpuLHRhZzp0LG9uUmVtb3ZlOmUuaGFuZGxlUmVtb3ZlLmJpbmQoZSksZGlzYWJsZWQ6ZCxnZXRUYWdEaXNwbGF5VmFsdWU6ZS5fZ2V0VGFnRGlzcGxheVZhbHVlLmJpbmQoZSl9LHIpKX0pKSxoPWwodSh7cmVmOmZ1bmN0aW9uKHQpe2UuaW5wdXQ9dH0sdmFsdWU6dGhpcy5fdGFnKCksb25QYXN0ZTp0aGlzLmhhbmRsZVBhc3RlLmJpbmQodGhpcyksb25LZXlEb3duOnRoaXMuaGFuZGxlS2V5RG93bi5iaW5kKHRoaXMpLG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlLmJpbmQodGhpcyksb25Gb2N1czp0aGlzLmhhbmRsZU9uRm9jdXMuYmluZCh0aGlzKSxvbkJsdXI6dGhpcy5oYW5kbGVPbkJsdXIuYmluZCh0aGlzKSxhZGRUYWc6dGhpcy5hZGRUYWcuYmluZCh0aGlzKX0sdGhpcy5pbnB1dFByb3BzKCkpKTtyZXR1cm4gby5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse3JlZjpmdW5jdGlvbih0KXtlLmRpdj10fSxvbkNsaWNrOnRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKSxjbGFzc05hbWU6Y30sYShwLGgpKX19XSksdH0oby5kZWZhdWx0LkNvbXBvbmVudCk7Yy5kZWZhdWx0UHJvcHM9e2NsYXNzTmFtZToicmVhY3QtdGFnc2lucHV0Iixmb2N1c2VkQ2xhc3NOYW1lOiJyZWFjdC10YWdzaW5wdXQtLWZvY3VzZWQiLGFkZEtleXM6WzksMTNdLGFkZE9uQmx1cjohMSxhZGRPblBhc3RlOiExLGlucHV0UHJvcHM6e30scmVtb3ZlS2V5czpbOF0scmVuZGVySW5wdXQ6ZnVuY3Rpb24oZSl7ZS5hZGRUYWc7dmFyIHQ9cyhlLFsiYWRkVGFnIl0pLG49dC5vbkNoYW5nZSxyPXQudmFsdWUsYT1zKHQsWyJvbkNoYW5nZSIsInZhbHVlIl0pO3JldHVybiBvLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHUoe3R5cGU6InRleHQiLG9uQ2hhbmdlOm4sdmFsdWU6cn0sYSkpfSxyZW5kZXJUYWc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YWcsbj1lLmtleSxyPWUuZGlzYWJsZWQsYT1lLm9uUmVtb3ZlLGk9ZS5jbGFzc05hbWVSZW1vdmUsbD1lLmdldFRhZ0Rpc3BsYXlWYWx1ZSxjPXMoZSxbInRhZyIsImtleSIsImRpc2FibGVkIiwib25SZW1vdmUiLCJjbGFzc05hbWVSZW1vdmUiLCJnZXRUYWdEaXNwbGF5VmFsdWUiXSk7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix1KHtrZXk6bn0sYyksbCh0KSwhciYmby5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImEiLHtjbGFzc05hbWU6aSxvbkNsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiBhKG4pfX0pKX0scmVuZGVyTGF5b3V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLGUsdCl9LHBhc3RlU3BsaXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoIiAiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX0pKX0sdGFnUHJvcHM6e2NsYXNzTmFtZToicmVhY3QtdGFnc2lucHV0LXRhZyIsY2xhc3NOYW1lUmVtb3ZlOiJyZWFjdC10YWdzaW5wdXQtcmVtb3ZlIn0sb25seVVuaXF1ZTohMSxtYXhUYWdzOi0xLHZhbGlkYXRpb25SZWdleDovLiovLGRpc2FibGVkOiExLHRhZ0Rpc3BsYXlQcm9wOm51bGwscHJldmVudFN1Ym1pdDohMH0sdC5kZWZhdWx0PWMsZS5leHBvcnRzPXQuZGVmYXVsdH0pP3IuYXBwbHkodCxvKTpyKXx8KGUuZXhwb3J0cz1hKX0sIjFKYngiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNHBJQiIpLG89bigiaC8yUCIpLGE9bigiSkkrRSIpLGk9bigiakg0eCIpLHU9bigiWURNdyIpLHM9bigiZS9PayIpLGw9bigiY21RaiIpLGM9bigiWS9rSCIpLGY9bigicGc0TSIpLGQ9bigianlEZyIpLHA9bigiQzlFUiIpLGg9bigia0RrSiIpLHk9bigiV0pPVSIpLG09ci5pc0Jyb3dzZXIoIkNocm9tZSIpP3k6ZnVuY3Rpb24oZSl7fSx2PXtvbkJlZm9yZUlucHV0Om8sb25CbHVyOmEsb25Db21wb3NpdGlvblN0YXJ0Omksb25Db3B5OnUsb25DdXQ6cyxvbkRyYWdPdmVyOmwsb25EcmFnU3RhcnQ6YyxvbkZvY3VzOmYsb25JbnB1dDpkLG9uS2V5RG93bjpwLG9uUGFzdGU6aCxvblNlbGVjdDp5LG9uTW91c2VVcDptLG9uS2V5VXA6bX07ZS5leHBvcnRzPXZ9LCIxS3NLIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXIuY2FsbChlKSxuPSJbb2JqZWN0IEFyZ3VtZW50c10iPT09dDtyZXR1cm4gbnx8KG49IltvYmplY3QgQXJyYXldIiE9PXQmJm51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgmJmUubGVuZ3RoPj0wJiYiW29iamVjdCBGdW5jdGlvbl0iPT09ci5jYWxsKGUuY2FsbGVlKSksbn19LCIxWXU2IjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBTeW1ib2x8fCJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVybiExO2lmKCJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yKXJldHVybiEwO3ZhciBlPXt9LHQ9U3ltYm9sKCJ0ZXN0Iiksbj1PYmplY3QodCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiExO2lmKCJbb2JqZWN0IFN5bWJvbF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXJldHVybiExO2lmKCJbb2JqZWN0IFN5bWJvbF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pKXJldHVybiExO2Zvcih0IGluIGVbdF09NDIsZSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmtleXMmJjAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzJiYwIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkubGVuZ3RoKXJldHVybiExO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7aWYoMSE9PXIubGVuZ3RofHxyWzBdIT09dClyZXR1cm4hMTtpZighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsdCkpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ipe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTtpZig0MiE9PW8udmFsdWV8fCEwIT09by5lbnVtZXJhYmxlKXJldHVybiExfXJldHVybiEwfX0sIjFxcTIiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI7ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EoZSx0LG5bdF0pfSkpfXJldHVybiBlfWZ1bmN0aW9uIGEoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBpPW4oImxGSm4iKSx1PW4oIjh1UW0iKSxzPW4oIkpMN1QiKSxsPW4oInJBVjkiKSxjPW4oIlR6VS8iKSxmPW4oIm1iS3IiKSxkPW4oInBYbXAiKSxwPW4oInJKWTEiKSxoPW4oInhvY0kiKSx5PW4oImN3RlkiKSxtPW4oIkpQY3YiKSx2PW0uTGlzdCxnPW0uTWFwLGI9bS5PcmRlcmVkU2V0LHc9bigiNy8yWSIpLF89bigiYUIwMiIpLEU9bigiT0x6QSIpLE89bigiR01JbSIpLGs9eSgiZHJhZnRfdHJlZV9kYXRhX3N1cHBvcnQiKSxDPW5ldyBSZWdFeHAoIlxyIiwiZyIpLHg9bmV3IFJlZ0V4cCgiXG4iLCJnIiksUz1uZXcgUmVnRXhwKCJeXG4iLCJnIiksRD1uZXcgUmVnRXhwKCImbmJzcDsiLCJnIiksVD1uZXcgUmVnRXhwKCImIzEzOz8iLCJnIiksTT1uZXcgUmVnRXhwKCImIzgyMDM7PyIsImciKSxQPVsiYm9sZCIsImJvbGRlciIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCJdLE49WyJsaWdodCIsImxpZ2h0ZXIiLCIxMDAiLCIyMDAiLCIzMDAiLCI0MDAiXSxqPVsiY2xhc3NOYW1lIiwiaHJlZiIsInJlbCIsInRhcmdldCIsInRpdGxlIl0sTD1bImFsdCIsImNsYXNzTmFtZSIsImhlaWdodCIsInNyYyIsIndpZHRoIl0sUj0oYShyPXt9LGQoInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9kZXB0aDAiKSwwKSxhKHIsZCgicHVibGljL0RyYWZ0U3R5bGVEZWZhdWx0L2RlcHRoMSIpLDEpLGEocixkKCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvZGVwdGgyIiksMiksYShyLGQoInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9kZXB0aDMiKSwzKSxhKHIsZCgicHVibGljL0RyYWZ0U3R5bGVEZWZhdWx0L2RlcHRoNCIpLDQpLHIpLEk9Zyh7YjoiQk9MRCIsY29kZToiQ09ERSIsZGVsOiJTVFJJS0VUSFJPVUdIIixlbToiSVRBTElDIixpOiJJVEFMSUMiLHM6IlNUUklLRVRIUk9VR0giLHN0cmlrZToiU1RSSUtFVEhST1VHSCIsc3Ryb25nOiJCT0xEIix1OiJVTkRFUkxJTkUiLG1hcms6IkhJR0hMSUdIVCJ9KSxBPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBlLm1hcEtleXMoKGZ1bmN0aW9uKGUsbil7dmFyIHI9W24uZWxlbWVudF07dm9pZCAwIT09bi5hbGlhc2VkRWxlbWVudHMmJnIucHVzaC5hcHBseShyLG4uYWxpYXNlZEVsZW1lbnRzKSxyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZvaWQgMD09PXRbbl0/dFtuXT1lOiJzdHJpbmciPT10eXBlb2YgdFtuXT90W25dPVt0W25dLGVdOnRbbl0ucHVzaChlKX0pKX0pKSxnKHQpfSxGPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybiBPYmplY3Qua2V5cyhSKS5zb21lKChmdW5jdGlvbihuKXtlLmNsYXNzTGlzdC5jb250YWlucyhuKSYmKHQ9UltuXSl9KSksdH0sQj1mdW5jdGlvbihlKXtpZighdyhlKSlyZXR1cm4hMTt2YXIgdD1lO3JldHVybiEoIXQuaHJlZnx8Imh0dHA6IiE9PXQucHJvdG9jb2wmJiJodHRwczoiIT09dC5wcm90b2NvbCYmIm1haWx0bzoiIT09dC5wcm90b2NvbCl9LHo9ZnVuY3Rpb24oZSl7aWYoIU8oZSkpcmV0dXJuITE7dmFyIHQ9ZTtyZXR1cm4hKCF0LmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJzcmMiKXx8IXQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInNyYyIpLnZhbHVlKX0sSz1mdW5jdGlvbihlKXt2YXIgdD1iKCk7aWYoIUUoZSkpcmV0dXJuIHQ7dmFyIG49ZSxyPW4uc3R5bGUuZm9udFdlaWdodCxvPW4uc3R5bGUuZm9udFN0eWxlLGE9bi5zdHlsZS50ZXh0RGVjb3JhdGlvbjtyZXR1cm4gdC53aXRoTXV0YXRpb25zKChmdW5jdGlvbihlKXtQLmluZGV4T2Yocik+PTA/ZS5hZGQoIkJPTEQiKTpOLmluZGV4T2Yocik+PTAmJmUucmVtb3ZlKCJCT0xEIiksIml0YWxpYyI9PT1vP2UuYWRkKCJJVEFMSUMiKToibm9ybWFsIj09PW8mJmUucmVtb3ZlKCJJVEFMSUMiKSwidW5kZXJsaW5lIj09PWEmJmUuYWRkKCJVTkRFUkxJTkUiKSwibGluZS10aHJvdWdoIj09PWEmJmUuYWRkKCJTVFJJS0VUSFJPVUdIIiksIm5vbmUiPT09YSYmKGUucmVtb3ZlKCJVTkRFUkxJTkUiKSxlLnJlbW92ZSgiU1RSSUtFVEhST1VHSCIpKX0pKX0scT1mdW5jdGlvbihlKXtyZXR1cm4idWwiPT09ZXx8Im9sIj09PWV9LFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7YSh0aGlzLCJjaGFyYWN0ZXJMaXN0Iix2KCkpLGEodGhpcywiY3VycmVudEJsb2NrVHlwZSIsInVuc3R5bGVkIiksYSh0aGlzLCJjdXJyZW50RGVwdGgiLDApLGEodGhpcywiY3VycmVudEVudGl0eSIsbnVsbCksYSh0aGlzLCJjdXJyZW50U3R5bGUiLGIoKSksYSh0aGlzLCJjdXJyZW50VGV4dCIsIiIpLGEodGhpcywid3JhcHBlciIsbnVsbCksYSh0aGlzLCJibG9ja0NvbmZpZ3MiLFtdKSxhKHRoaXMsImNvbnRlbnRCbG9ja3MiLFtdKSxhKHRoaXMsImVudGl0eU1hcCIsYyksYSh0aGlzLCJibG9ja1R5cGVNYXAiLHZvaWQgMCksYSh0aGlzLCJkaXNhbWJpZ3VhdGUiLHZvaWQgMCksdGhpcy5jbGVhcigpLHRoaXMuYmxvY2tUeXBlTWFwPWUsdGhpcy5kaXNhbWJpZ3VhdGU9dH12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5jbGVhcj1mdW5jdGlvbigpe3RoaXMuY2hhcmFjdGVyTGlzdD12KCksdGhpcy5ibG9ja0NvbmZpZ3M9W10sdGhpcy5jdXJyZW50QmxvY2tUeXBlPSJ1bnN0eWxlZCIsdGhpcy5jdXJyZW50RGVwdGg9MCx0aGlzLmN1cnJlbnRFbnRpdHk9bnVsbCx0aGlzLmN1cnJlbnRTdHlsZT1iKCksdGhpcy5jdXJyZW50VGV4dD0iIix0aGlzLmVudGl0eU1hcD1jLHRoaXMud3JhcHBlcj1udWxsLHRoaXMuY29udGVudEJsb2Nrcz1bXX0sdC5hZGRET01Ob2RlPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzLmNvbnRlbnRCbG9ja3M9W10sdGhpcy5jdXJyZW50RGVwdGg9MCwodD10aGlzLmJsb2NrQ29uZmlncykucHVzaC5hcHBseSh0LHRoaXMuX3RvQmxvY2tDb25maWdzKFtlXSkpLHRoaXMuX3RyaW1DdXJyZW50VGV4dCgpLCIiIT09dGhpcy5jdXJyZW50VGV4dCYmdGhpcy5ibG9ja0NvbmZpZ3MucHVzaCh0aGlzLl9tYWtlQmxvY2tDb25maWcoKSksdGhpc30sdC5nZXRDb250ZW50QmxvY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmNvbnRlbnRCbG9ja3MubGVuZ3RoJiYoaz90aGlzLl90b0NvbnRlbnRCbG9ja3ModGhpcy5ibG9ja0NvbmZpZ3MpOnRoaXMuX3RvRmxhdENvbnRlbnRCbG9ja3ModGhpcy5ibG9ja0NvbmZpZ3MpKSx7Y29udGVudEJsb2Nrczp0aGlzLmNvbnRlbnRCbG9ja3MsZW50aXR5TWFwOnRoaXMuZW50aXR5TWFwfX0sdC5hZGRTdHlsZT1mdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRTdHlsZT10aGlzLmN1cnJlbnRTdHlsZS51bmlvbihlKX0sdC5yZW1vdmVTdHlsZT1mdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRTdHlsZT10aGlzLmN1cnJlbnRTdHlsZS5zdWJ0cmFjdChlKX0sdC5fbWFrZUJsb2NrQ29uZmlnPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9ZS5rZXl8fHAoKSxuPW8oe2tleTp0LHR5cGU6dGhpcy5jdXJyZW50QmxvY2tUeXBlLHRleHQ6dGhpcy5jdXJyZW50VGV4dCxjaGFyYWN0ZXJMaXN0OnRoaXMuY2hhcmFjdGVyTGlzdCxkZXB0aDp0aGlzLmN1cnJlbnREZXB0aCxwYXJlbnQ6bnVsbCxjaGlsZHJlbjp2KCkscHJldlNpYmxpbmc6bnVsbCxuZXh0U2libGluZzpudWxsLGNoaWxkQ29uZmlnczpbXX0sZSk7cmV0dXJuIHRoaXMuY2hhcmFjdGVyTGlzdD12KCksdGhpcy5jdXJyZW50QmxvY2tUeXBlPSJ1bnN0eWxlZCIsdGhpcy5jdXJyZW50VGV4dD0iIixufSx0Ll90b0Jsb2NrQ29uZmlncz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLG89ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCJib2R5Ij09PW98fHEobykpe3RoaXMuX3RyaW1DdXJyZW50VGV4dCgpLCIiIT09dGhpcy5jdXJyZW50VGV4dCYmdC5wdXNoKHRoaXMuX21ha2VCbG9ja0NvbmZpZygpKTt2YXIgYT10aGlzLmN1cnJlbnREZXB0aCxpPXRoaXMud3JhcHBlcjtxKG8pJiYodGhpcy53cmFwcGVyPW8scShpKSYmdGhpcy5jdXJyZW50RGVwdGgrKyksdC5wdXNoLmFwcGx5KHQsdGhpcy5fdG9CbG9ja0NvbmZpZ3MoQXJyYXkuZnJvbShyLmNoaWxkTm9kZXMpKSksdGhpcy5jdXJyZW50RGVwdGg9YSx0aGlzLndyYXBwZXI9aX1lbHNle3ZhciB1PXRoaXMuYmxvY2tUeXBlTWFwLmdldChvKTtpZih2b2lkIDA9PT11KWlmKCIjdGV4dCIhPT1vKWlmKCJiciIhPT1vKWlmKHoocikpdGhpcy5fYWRkSW1nTm9kZShyKTtlbHNlIGlmKEIocikpdGhpcy5fYWRkQW5jaG9yTm9kZShyLHQpO2Vsc2V7dmFyIHM9SS5oYXMobyk/Yi5vZihJLmdldChvKSk6YigpLGw9SyhyKTt0aGlzLmFkZFN0eWxlKHMpLHRoaXMuYWRkU3R5bGUobCksdC5wdXNoLmFwcGx5KHQsdGhpcy5fdG9CbG9ja0NvbmZpZ3MoQXJyYXkuZnJvbShyLmNoaWxkTm9kZXMpKSksdGhpcy5yZW1vdmVTdHlsZShsKSx0aGlzLnJlbW92ZVN0eWxlKHMpfWVsc2UgdGhpcy5fYWRkQnJlYWtOb2RlKHIpO2Vsc2UgdGhpcy5fYWRkVGV4dE5vZGUocik7ZWxzZXt0aGlzLl90cmltQ3VycmVudFRleHQoKSwiIiE9PXRoaXMuY3VycmVudFRleHQmJnQucHVzaCh0aGlzLl9tYWtlQmxvY2tDb25maWcoKSk7dmFyIGM9dGhpcy5jdXJyZW50RGVwdGgsZj10aGlzLndyYXBwZXI7aWYodGhpcy53cmFwcGVyPSJwcmUiPT09bz8icHJlIjp0aGlzLndyYXBwZXIsInN0cmluZyIhPXR5cGVvZiB1JiYodT10aGlzLmRpc2FtYmlndWF0ZShvLHRoaXMud3JhcHBlcil8fHVbMF18fCJ1bnN0eWxlZCIpLCFrJiZFKHIpJiYoInVub3JkZXJlZC1saXN0LWl0ZW0iPT09dXx8Im9yZGVyZWQtbGlzdC1pdGVtIj09PXUpKXt2YXIgZD1yO3RoaXMuY3VycmVudERlcHRoPUYoZCx0aGlzLmN1cnJlbnREZXB0aCl9dmFyIGg9cCgpLHk9dGhpcy5fdG9CbG9ja0NvbmZpZ3MoQXJyYXkuZnJvbShyLmNoaWxkTm9kZXMpKTt0aGlzLl90cmltQ3VycmVudFRleHQoKSx0LnB1c2godGhpcy5fbWFrZUJsb2NrQ29uZmlnKHtrZXk6aCxjaGlsZENvbmZpZ3M6eSx0eXBlOnV9KSksdGhpcy5jdXJyZW50RGVwdGg9Yyx0aGlzLndyYXBwZXI9Zn19fXJldHVybiB0fSx0Ll9hcHBlbmRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMuY3VycmVudFRleHQrPWU7dmFyIG49aS5jcmVhdGUoe3N0eWxlOnRoaXMuY3VycmVudFN0eWxlLGVudGl0eTp0aGlzLmN1cnJlbnRFbnRpdHl9KTt0aGlzLmNoYXJhY3Rlckxpc3Q9KHQ9dGhpcy5jaGFyYWN0ZXJMaXN0KS5wdXNoLmFwcGx5KHQsQXJyYXkoZS5sZW5ndGgpLmZpbGwobikpfSx0Ll90cmltQ3VycmVudFRleHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1cnJlbnRUZXh0Lmxlbmd0aCx0PWUtdGhpcy5jdXJyZW50VGV4dC50cmltTGVmdCgpLmxlbmd0aCxuPXRoaXMuY3VycmVudFRleHQudHJpbVJpZ2h0KCkubGVuZ3RoLHI9dGhpcy5jaGFyYWN0ZXJMaXN0LmZpbmRFbnRyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lLmdldEVudGl0eSgpfSkpOyh0PXZvaWQgMCE9PXI/TWF0aC5taW4odCxyWzBdKTp0KT4obj12b2lkIDAhPT0ocj10aGlzLmNoYXJhY3Rlckxpc3QucmV2ZXJzZSgpLmZpbmRFbnRyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lLmdldEVudGl0eSgpfSkpKT9NYXRoLm1heChuLGUtclswXSk6bik/KHRoaXMuY3VycmVudFRleHQ9IiIsdGhpcy5jaGFyYWN0ZXJMaXN0PXYoKSk6KHRoaXMuY3VycmVudFRleHQ9dGhpcy5jdXJyZW50VGV4dC5zbGljZSh0LG4pLHRoaXMuY2hhcmFjdGVyTGlzdD10aGlzLmNoYXJhY3Rlckxpc3Quc2xpY2UodCxuKSl9LHQuX2FkZFRleHROb2RlPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGV4dENvbnRlbnQ7IiI9PT10LnRyaW0oKSYmInByZSIhPT10aGlzLndyYXBwZXImJih0PSIgIiksInByZSIhPT10aGlzLndyYXBwZXImJih0PSh0PXQucmVwbGFjZShTLCIiKSkucmVwbGFjZSh4LCIgIikpLHRoaXMuX2FwcGVuZFRleHQodCl9LHQuX2FkZEJyZWFrTm9kZT1mdW5jdGlvbihlKXtfKGUpJiZ0aGlzLl9hcHBlbmRUZXh0KCJcbiIpfSx0Ll9hZGRJbWdOb2RlPWZ1bmN0aW9uKGUpe2lmKE8oZSkpe3ZhciB0PWUsbj17fTtMLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0QXR0cmlidXRlKGUpO3ImJihuW2VdPXIpfSkpLHRoaXMuY3VycmVudEVudGl0eT10aGlzLmVudGl0eU1hcC5fX2NyZWF0ZSgiSU1BR0UiLCJJTU1VVEFCTEUiLG4pLHkoImRyYWZ0anNfZml4X3Bhc3RlX2Zvcl9pbWciKT8icHJlc2VudGF0aW9uIiE9PXQuZ2V0QXR0cmlidXRlKCJyb2xlIikmJnRoaXMuX2FwcGVuZFRleHQoIvCfk7ciKTp0aGlzLl9hcHBlbmRUZXh0KCLwn5O3IiksdGhpcy5jdXJyZW50RW50aXR5PW51bGx9fSx0Ll9hZGRBbmNob3JOb2RlPWZ1bmN0aW9uKGUsdCl7aWYodyhlKSl7dmFyIG49ZSxyPXt9O2ouZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bi5nZXRBdHRyaWJ1dGUoZSk7dCYmKHJbZV09dCl9KSksci51cmw9bmV3IGYobi5ocmVmKS50b1N0cmluZygpLHRoaXMuY3VycmVudEVudGl0eT10aGlzLmVudGl0eU1hcC5fX2NyZWF0ZSgiTElOSyIsIk1VVEFCTEUiLHJ8fHt9KSx0LnB1c2guYXBwbHkodCx0aGlzLl90b0Jsb2NrQ29uZmlncyhBcnJheS5mcm9tKGUuY2hpbGROb2RlcykpKSx0aGlzLmN1cnJlbnRFbnRpdHk9bnVsbH19LHQuX3RvQ29udGVudEJsb2Nrcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsbj1lLmxlbmd0aC0xLHI9MDtyPD1uO3IrKyl7dmFyIGE9ZVtyXTthLnBhcmVudD10LGEucHJldlNpYmxpbmc9cj4wP2Vbci0xXS5rZXk6bnVsbCxhLm5leHRTaWJsaW5nPXI8bj9lW3IrMV0ua2V5Om51bGwsYS5jaGlsZHJlbj12KGEuY2hpbGRDb25maWdzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSkpKSx0aGlzLmNvbnRlbnRCbG9ja3MucHVzaChuZXcgcyhvKHt9LGEpKSksdGhpcy5fdG9Db250ZW50QmxvY2tzKGEuY2hpbGRDb25maWdzLGEua2V5KX19LHQuX2hvaXN0Q29udGFpbmVyc0luQmxvY2tDb25maWdzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHYoZSkuZmxhdE1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuInVuc3R5bGVkIiE9PWUudHlwZXx8IiIhPT1lLnRleHQ/W2VdOnQuX2hvaXN0Q29udGFpbmVyc0luQmxvY2tDb25maWdzKGUuY2hpbGRDb25maWdzKX0pKX0sdC5fdG9GbGF0Q29udGVudEJsb2Nrcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuX2hvaXN0Q29udGFpbmVyc0luQmxvY2tDb25maWdzKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQuX2V4dHJhY3RUZXh0RnJvbUJsb2NrQ29uZmlncyhlLmNoaWxkQ29uZmlncykscj1uLnRleHQsYT1uLmNoYXJhY3Rlckxpc3Q7dC5jb250ZW50QmxvY2tzLnB1c2gobmV3IHUobyh7fSxlLHt0ZXh0OmUudGV4dCtyLGNoYXJhY3Rlckxpc3Q6ZS5jaGFyYWN0ZXJMaXN0LmNvbmNhdChhKX0pKSl9KSl9LHQuX2V4dHJhY3RUZXh0RnJvbUJsb2NrQ29uZmlncz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgtMSxuPSIiLHI9digpLG89MDtvPD10O28rKyl7dmFyIGE9ZVtvXTtuKz1hLnRleHQscj1yLmNvbmNhdChhLmNoYXJhY3Rlckxpc3QpLCIiIT09biYmInVuc3R5bGVkIiE9PWEudHlwZSYmKG4rPSJcbiIscj1yLnB1c2goci5sYXN0KCkpKTt2YXIgaT10aGlzLl9leHRyYWN0VGV4dEZyb21CbG9ja0NvbmZpZ3MoYS5jaGlsZENvbmZpZ3MpO24rPWkudGV4dCxyPXIuY29uY2F0KGkuY2hhcmFjdGVyTGlzdCl9cmV0dXJue3RleHQ6bixjaGFyYWN0ZXJMaXN0OnJ9fSxlfSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06aCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpsLHI9dChlPWUudHJpbSgpLnJlcGxhY2UoQywiIikucmVwbGFjZShELCIgIikucmVwbGFjZShULCIiKS5yZXBsYWNlKE0sIiIpKTtpZighcilyZXR1cm4gbnVsbDt2YXIgbz1BKG4pLGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibGkiPT09ZT8ib2wiPT09dD8ib3JkZXJlZC1saXN0LWl0ZW0iOiJ1bm9yZGVyZWQtbGlzdC1pdGVtIjpudWxsfTtyZXR1cm4gbmV3IFYobyxhKS5hZGRET01Ob2RlKHIpLmdldENvbnRlbnRCbG9ja3MoKX19LCIxc2VTIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPUFycmF5LnByb3RvdHlwZS5zbGljZSxvPW4oIjFLc0siKSxhPU9iamVjdC5rZXlzLGk9YT9mdW5jdGlvbihlKXtyZXR1cm4gYShlKX06bigic1luMyIpLHU9T2JqZWN0LmtleXM7aS5zaGltPWZ1bmN0aW9uKCl7T2JqZWN0LmtleXM/ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Qua2V5cyhhcmd1bWVudHMpO3JldHVybiBlJiZlLmxlbmd0aD09PWFyZ3VtZW50cy5sZW5ndGh9KDEsMil8fChPYmplY3Qua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT91KHIuY2FsbChlKSk6dShlKX0pOk9iamVjdC5rZXlzPWk7cmV0dXJuIE9iamVjdC5rZXlzfHxpfSxlLmV4cG9ydHM9aX0sMjpmdW5jdGlvbihlLHQpe30sIjI0SWkiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz9yPXdpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/cj1zZWxmOihjb25zb2xlLndhcm4oIlVzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQiKSxyPXRoaXMpO3ZhciBvPW4oImNwYzIiKSxhPW4oImtNbHgiKSxpPW4oIjh6Z0siKSx1PW4oIi95RmYiKSxzPW4oIm5aYnYiKTtmdW5jdGlvbiBsKCl7fXZhciBjPXQ9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bmV3IHQuUmVxdWVzdCgiR0VUIixlKS5lbmQobik6MT09YXJndW1lbnRzLmxlbmd0aD9uZXcgdC5SZXF1ZXN0KCJHRVQiLGUpOm5ldyB0LlJlcXVlc3QoZSxuKX07dC5SZXF1ZXN0PXYsYy5nZXRYSFI9ZnVuY3Rpb24oKXtpZighKCFyLlhNTEh0dHBSZXF1ZXN0fHxyLmxvY2F0aW9uJiYiZmlsZToiPT1yLmxvY2F0aW9uLnByb3RvY29sJiZyLkFjdGl2ZVhPYmplY3QpKXJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3Q7dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChlKXt9dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAuNi4wIil9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQLjMuMCIpfWNhdGNoKGUpe310cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpfWNhdGNoKGUpe310aHJvdyBFcnJvcigiQnJvd3Nlci1vbmx5IHZlcnNpb24gb2Ygc3VwZXJhZ2VudCBjb3VsZCBub3QgZmluZCBYSFIiKX07dmFyIGY9IiIudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyheXHMqfFxzKiQpL2csIiIpfTtmdW5jdGlvbiBkKGUpe2lmKCFpKGUpKXJldHVybiBlO3ZhciB0PVtdO2Zvcih2YXIgbiBpbiBlKXAodCxuLGVbbl0pO3JldHVybiB0LmpvaW4oIiYiKX1mdW5jdGlvbiBwKGUsdCxuKXtpZihudWxsIT1uKWlmKEFycmF5LmlzQXJyYXkobikpbi5mb3JFYWNoKChmdW5jdGlvbihuKXtwKGUsdCxuKX0pKTtlbHNlIGlmKGkobikpZm9yKHZhciByIGluIG4pcChlLHQrIlsiK3IrIl0iLG5bcl0pO2Vsc2UgZS5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCh0KSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG4pKTtlbHNlIG51bGw9PT1uJiZlLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHQpKX1mdW5jdGlvbiBoKGUpe2Zvcih2YXIgdCxuLHI9e30sbz1lLnNwbGl0KCImIiksYT0wLGk9by5sZW5ndGg7YTxpOysrYSktMT09KG49KHQ9b1thXSkuaW5kZXhPZigiPSIpKT9yW2RlY29kZVVSSUNvbXBvbmVudCh0KV09IiI6cltkZWNvZGVVUklDb21wb25lbnQodC5zbGljZSgwLG4pKV09ZGVjb2RlVVJJQ29tcG9uZW50KHQuc2xpY2UobisxKSk7cmV0dXJuIHJ9ZnVuY3Rpb24geShlKXtyZXR1cm4vW1wvK11qc29uKCR8W14tXHddKS8udGVzdChlKX1mdW5jdGlvbiBtKGUpe3RoaXMucmVxPWUsdGhpcy54aHI9dGhpcy5yZXEueGhyLHRoaXMudGV4dD0iSEVBRCIhPXRoaXMucmVxLm1ldGhvZCYmKCIiPT09dGhpcy54aHIucmVzcG9uc2VUeXBlfHwidGV4dCI9PT10aGlzLnhoci5yZXNwb25zZVR5cGUpfHx2b2lkIDA9PT10aGlzLnhoci5yZXNwb25zZVR5cGU/dGhpcy54aHIucmVzcG9uc2VUZXh0Om51bGwsdGhpcy5zdGF0dXNUZXh0PXRoaXMucmVxLnhoci5zdGF0dXNUZXh0O3ZhciB0PXRoaXMueGhyLnN0YXR1czsxMjIzPT09dCYmKHQ9MjA0KSx0aGlzLl9zZXRTdGF0dXNQcm9wZXJ0aWVzKHQpLHRoaXMuaGVhZGVyPXRoaXMuaGVhZGVycz1mdW5jdGlvbihlKXtmb3IodmFyIHQsbixyLG8sYT1lLnNwbGl0KC9ccj9cbi8pLGk9e30sdT0wLHM9YS5sZW5ndGg7dTxzOysrdSktMSE9PSh0PShuPWFbdV0pLmluZGV4T2YoIjoiKSkmJihyPW4uc2xpY2UoMCx0KS50b0xvd2VyQ2FzZSgpLG89ZihuLnNsaWNlKHQrMSkpLGlbcl09byk7cmV0dXJuIGl9KHRoaXMueGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSx0aGlzLmhlYWRlclsiY29udGVudC10eXBlIl09dGhpcy54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpLHRoaXMuX3NldEhlYWRlclByb3BlcnRpZXModGhpcy5oZWFkZXIpLG51bGw9PT10aGlzLnRleHQmJmUuX3Jlc3BvbnNlVHlwZT90aGlzLmJvZHk9dGhpcy54aHIucmVzcG9uc2U6dGhpcy5ib2R5PSJIRUFEIiE9dGhpcy5yZXEubWV0aG9kP3RoaXMuX3BhcnNlQm9keSh0aGlzLnRleHQ/dGhpcy50ZXh0OnRoaXMueGhyLnJlc3BvbnNlKTpudWxsfWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj10aGlzO3RoaXMuX3F1ZXJ5PXRoaXMuX3F1ZXJ5fHxbXSx0aGlzLm1ldGhvZD1lLHRoaXMudXJsPXQsdGhpcy5oZWFkZXI9e30sdGhpcy5faGVhZGVyPXt9LHRoaXMub24oImVuZCIsKGZ1bmN0aW9uKCl7dmFyIGUsdD1udWxsLHI9bnVsbDt0cnl7cj1uZXcgbShuKX1jYXRjaChlKXtyZXR1cm4odD1uZXcgRXJyb3IoIlBhcnNlciBpcyB1bmFibGUgdG8gcGFyc2UgdGhlIHJlc3BvbnNlIikpLnBhcnNlPSEwLHQub3JpZ2luYWw9ZSxuLnhocj8odC5yYXdSZXNwb25zZT12b2lkIDA9PT1uLnhoci5yZXNwb25zZVR5cGU/bi54aHIucmVzcG9uc2VUZXh0Om4ueGhyLnJlc3BvbnNlLHQuc3RhdHVzPW4ueGhyLnN0YXR1cz9uLnhoci5zdGF0dXM6bnVsbCx0LnN0YXR1c0NvZGU9dC5zdGF0dXMpOih0LnJhd1Jlc3BvbnNlPW51bGwsdC5zdGF0dXM9bnVsbCksbi5jYWxsYmFjayh0KX1uLmVtaXQoInJlc3BvbnNlIixyKTt0cnl7bi5faXNSZXNwb25zZU9LKHIpfHwoZT1uZXcgRXJyb3Ioci5zdGF0dXNUZXh0fHwiVW5zdWNjZXNzZnVsIEhUVFAgcmVzcG9uc2UiKSl9Y2F0Y2godCl7ZT10fWU/KGUub3JpZ2luYWw9dCxlLnJlc3BvbnNlPXIsZS5zdGF0dXM9ci5zdGF0dXMsbi5jYWxsYmFjayhlLHIpKTpuLmNhbGxiYWNrKG51bGwscil9KSl9ZnVuY3Rpb24gZyhlLHQsbil7dmFyIHI9YygiREVMRVRFIixlKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLHQmJnIuc2VuZCh0KSxuJiZyLmVuZChuKSxyfWMuc2VyaWFsaXplT2JqZWN0PWQsYy5wYXJzZVN0cmluZz1oLGMudHlwZXM9e2h0bWw6InRleHQvaHRtbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiIseG1sOiJ0ZXh0L3htbCIsdXJsZW5jb2RlZDoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixmb3JtOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCJmb3JtLWRhdGEiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSxjLnNlcmlhbGl6ZT17ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI6ZCwiYXBwbGljYXRpb24vanNvbiI6SlNPTi5zdHJpbmdpZnl9LGMucGFyc2U9eyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiOmgsImFwcGxpY2F0aW9uL2pzb24iOkpTT04ucGFyc2V9LHUobS5wcm90b3R5cGUpLG0ucHJvdG90eXBlLl9wYXJzZUJvZHk9ZnVuY3Rpb24oZSl7dmFyIHQ9Yy5wYXJzZVt0aGlzLnR5cGVdO3JldHVybiB0aGlzLnJlcS5fcGFyc2VyP3RoaXMucmVxLl9wYXJzZXIodGhpcyxlKTooIXQmJnkodGhpcy50eXBlKSYmKHQ9Yy5wYXJzZVsiYXBwbGljYXRpb24vanNvbiJdKSx0JiZlJiYoZS5sZW5ndGh8fGUgaW5zdGFuY2VvZiBPYmplY3QpP3QoZSk6bnVsbCl9LG0ucHJvdG90eXBlLnRvRXJyb3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlcSx0PWUubWV0aG9kLG49ZS51cmwscj0iY2Fubm90ICIrdCsiICIrbisiICgiK3RoaXMuc3RhdHVzKyIpIixvPW5ldyBFcnJvcihyKTtyZXR1cm4gby5zdGF0dXM9dGhpcy5zdGF0dXMsby5tZXRob2Q9dCxvLnVybD1uLG99LGMuUmVzcG9uc2U9bSxvKHYucHJvdG90eXBlKSxhKHYucHJvdG90eXBlKSx2LnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldCgiQ29udGVudC1UeXBlIixjLnR5cGVzW2VdfHxlKSx0aGlzfSx2LnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0KCJBY2NlcHQiLGMudHlwZXNbZV18fGUpLHRoaXN9LHYucHJvdG90eXBlLmF1dGg9ZnVuY3Rpb24oZSx0LG4pezE9PT1hcmd1bWVudHMubGVuZ3RoJiYodD0iIiksIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmKG49dCx0PSIiKSxufHwobj17dHlwZToiZnVuY3Rpb24iPT10eXBlb2YgYnRvYT8iYmFzaWMiOiJhdXRvIn0pO3ZhciByPWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBidG9hKXJldHVybiBidG9hKGUpO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IHVzZSBiYXNpYyBhdXRoLCBidG9hIGlzIG5vdCBhIGZ1bmN0aW9uIil9O3JldHVybiB0aGlzLl9hdXRoKGUsdCxuLHIpfSx2LnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihlPWQoZSkpLGUmJnRoaXMuX3F1ZXJ5LnB1c2goZSksdGhpc30sdi5wcm90b3R5cGUuYXR0YWNoPWZ1bmN0aW9uKGUsdCxuKXtpZih0KXtpZih0aGlzLl9kYXRhKXRocm93IEVycm9yKCJzdXBlcmFnZW50IGNhbid0IG1peCAuc2VuZCgpIGFuZCAuYXR0YWNoKCkiKTt0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChlLHQsbnx8dC5uYW1lKX1yZXR1cm4gdGhpc30sdi5wcm90b3R5cGUuX2dldEZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1EYXRhfHwodGhpcy5fZm9ybURhdGE9bmV3IHIuRm9ybURhdGEpLHRoaXMuX2Zvcm1EYXRhfSx2LnByb3RvdHlwZS5jYWxsYmFjaz1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3Nob3VsZFJldHJ5KGUsdCkpcmV0dXJuIHRoaXMuX3JldHJ5KCk7dmFyIG49dGhpcy5fY2FsbGJhY2s7dGhpcy5jbGVhclRpbWVvdXQoKSxlJiYodGhpcy5fbWF4UmV0cmllcyYmKGUucmV0cmllcz10aGlzLl9yZXRyaWVzLTEpLHRoaXMuZW1pdCgiZXJyb3IiLGUpKSxuKGUsdCl9LHYucHJvdG90eXBlLmNyb3NzRG9tYWluRXJyb3I9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgRXJyb3IoIlJlcXVlc3QgaGFzIGJlZW4gdGVybWluYXRlZFxuUG9zc2libGUgY2F1c2VzOiB0aGUgbmV0d29yayBpcyBvZmZsaW5lLCBPcmlnaW4gaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLCB0aGUgcGFnZSBpcyBiZWluZyB1bmxvYWRlZCwgZXRjLiIpO2UuY3Jvc3NEb21haW49ITAsZS5zdGF0dXM9dGhpcy5zdGF0dXMsZS5tZXRob2Q9dGhpcy5tZXRob2QsZS51cmw9dGhpcy51cmwsdGhpcy5jYWxsYmFjayhlKX0sdi5wcm90b3R5cGUuYnVmZmVyPXYucHJvdG90eXBlLmNhPXYucHJvdG90eXBlLmFnZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBzdXBlcmFnZW50IiksdGhpc30sdi5wcm90b3R5cGUucGlwZT12LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBicm93c2VyIHZlcnNpb24gb2Ygc3VwZXJhZ2VudCIpfSx2LnByb3RvdHlwZS5faXNIb3N0PWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpJiYiW29iamVjdCBPYmplY3RdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX0sdi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9lbmRDYWxsZWQmJmNvbnNvbGUud2FybigiV2FybmluZzogLmVuZCgpIHdhcyBjYWxsZWQgdHdpY2UuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBzdXBlcmFnZW50IiksdGhpcy5fZW5kQ2FsbGVkPSEwLHRoaXMuX2NhbGxiYWNrPWV8fGwsdGhpcy5fZmluYWxpemVRdWVyeVN0cmluZygpLHRoaXMuX2VuZCgpfSx2LnByb3RvdHlwZS5fZW5kPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMueGhyPWMuZ2V0WEhSKCksbj10aGlzLl9mb3JtRGF0YXx8dGhpcy5fZGF0YTt0aGlzLl9zZXRUaW1lb3V0cygpLHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dmFyIG49dC5yZWFkeVN0YXRlO2lmKG4+PTImJmUuX3Jlc3BvbnNlVGltZW91dFRpbWVyJiZjbGVhclRpbWVvdXQoZS5fcmVzcG9uc2VUaW1lb3V0VGltZXIpLDQ9PW4pe3ZhciByO3RyeXtyPXQuc3RhdHVzfWNhdGNoKGUpe3I9MH1pZighcil7aWYoZS50aW1lZG91dHx8ZS5fYWJvcnRlZClyZXR1cm47cmV0dXJuIGUuY3Jvc3NEb21haW5FcnJvcigpfWUuZW1pdCgiZW5kIil9fTt2YXIgcj1mdW5jdGlvbih0LG4pe24udG90YWw+MCYmKG4ucGVyY2VudD1uLmxvYWRlZC9uLnRvdGFsKjEwMCksbi5kaXJlY3Rpb249dCxlLmVtaXQoInByb2dyZXNzIixuKX07aWYodGhpcy5oYXNMaXN0ZW5lcnMoInByb2dyZXNzIikpdHJ5e3Qub25wcm9ncmVzcz1yLmJpbmQobnVsbCwiZG93bmxvYWQiKSx0LnVwbG9hZCYmKHQudXBsb2FkLm9ucHJvZ3Jlc3M9ci5iaW5kKG51bGwsInVwbG9hZCIpKX1jYXRjaChlKXt9dHJ5e3RoaXMudXNlcm5hbWUmJnRoaXMucGFzc3dvcmQ/dC5vcGVuKHRoaXMubWV0aG9kLHRoaXMudXJsLCEwLHRoaXMudXNlcm5hbWUsdGhpcy5wYXNzd29yZCk6dC5vcGVuKHRoaXMubWV0aG9kLHRoaXMudXJsLCEwKX1jYXRjaChlKXtyZXR1cm4gdGhpcy5jYWxsYmFjayhlKX1pZih0aGlzLl93aXRoQ3JlZGVudGlhbHMmJih0LndpdGhDcmVkZW50aWFscz0hMCksIXRoaXMuX2Zvcm1EYXRhJiYiR0VUIiE9dGhpcy5tZXRob2QmJiJIRUFEIiE9dGhpcy5tZXRob2QmJiJzdHJpbmciIT10eXBlb2YgbiYmIXRoaXMuX2lzSG9zdChuKSl7dmFyIG89dGhpcy5faGVhZGVyWyJjb250ZW50LXR5cGUiXSxhPXRoaXMuX3NlcmlhbGl6ZXJ8fGMuc2VyaWFsaXplW28/by5zcGxpdCgiOyIpWzBdOiIiXTshYSYmeShvKSYmKGE9Yy5zZXJpYWxpemVbImFwcGxpY2F0aW9uL2pzb24iXSksYSYmKG49YShuKSl9Zm9yKHZhciBpIGluIHRoaXMuaGVhZGVyKW51bGwhPXRoaXMuaGVhZGVyW2ldJiZ0aGlzLmhlYWRlci5oYXNPd25Qcm9wZXJ0eShpKSYmdC5zZXRSZXF1ZXN0SGVhZGVyKGksdGhpcy5oZWFkZXJbaV0pO3JldHVybiB0aGlzLl9yZXNwb25zZVR5cGUmJih0LnJlc3BvbnNlVHlwZT10aGlzLl9yZXNwb25zZVR5cGUpLHRoaXMuZW1pdCgicmVxdWVzdCIsdGhpcyksdC5zZW5kKHZvaWQgMCE9PW4/bjpudWxsKSx0aGlzfSxjLmFnZW50PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzfSxbIkdFVCIsIlBPU1QiLCJPUFRJT05TIiwiUEFUQ0giLCJQVVQiLCJERUxFVEUiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtzLnByb3RvdHlwZVtlLnRvTG93ZXJDYXNlKCldPWZ1bmN0aW9uKHQsbil7dmFyIHI9bmV3IGMuUmVxdWVzdChlLHQpO3JldHVybiB0aGlzLl9zZXREZWZhdWx0cyhyKSxuJiZyLmVuZChuKSxyfX0pKSxzLnByb3RvdHlwZS5kZWw9cy5wcm90b3R5cGUuZGVsZXRlLGMuZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1jKCJHRVQiLGUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCksdCYmci5xdWVyeSh0KSxuJiZyLmVuZChuKSxyfSxjLmhlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWMoIkhFQUQiLGUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCksdCYmci5xdWVyeSh0KSxuJiZyLmVuZChuKSxyfSxjLm9wdGlvbnM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWMoIk9QVElPTlMiLGUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCksdCYmci5zZW5kKHQpLG4mJnIuZW5kKG4pLHJ9LGMuZGVsPWcsYy5kZWxldGU9ZyxjLnBhdGNoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1jKCJQQVRDSCIsZSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSx0JiZyLnNlbmQodCksbiYmci5lbmQobikscn0sYy5wb3N0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1jKCJQT1NUIixlKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLHQmJnIuc2VuZCh0KSxuJiZyLmVuZChuKSxyfSxjLnB1dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9YygiUFVUIixlKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLHQmJnIuc2VuZCh0KSxuJiZyLmVuZChuKSxyfX0sIjJJTk4iOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNHA3SSIpO3QuYT1yLmF9LCIyUzJFIjpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89bigiMTd4OSIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9LGk9bigiNWY3biIpO3QuZGVmYXVsdD1hLmRlZmF1bHQub25lT2YoaS5XRUVLREFZUyl9LCIyVUQ0IjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImxWQlgiKS5kZWZhdWx0O24oMyksKHQ9ZS5leHBvcnRzPXIpLmRlZmF1bHQ9dH0sIjJXNnoiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oKXt9O2UuZXhwb3J0cz1yfSwiMmZqbiI6ZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5kZWZpbmVMb2NhbGUoImZyLWNhIix7bW9udGhzOiJqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9qZV92ZV9zYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJk4oCZaHVpIMOgXSBMVCIsbmV4dERheToiW0RlbWFpbiDDoF0gTFQiLG5leHRXZWVrOiJkZGRkIFvDoF0gTFQiLGxhc3REYXk6IltIaWVyIMOgXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgw6BdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYW5zICVzIixwYXN0OiJpbCB5IGEgJXMiLHM6InF1ZWxxdWVzIHNlY29uZGVzIixzczoiJWQgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShlcnxlKS8sb3JkaW5hbDpmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtkZWZhdWx0OmNhc2UiTSI6Y2FzZSJRIjpjYXNlIkQiOmNhc2UiREREIjpjYXNlImQiOnJldHVybiBlKygxPT09ZT8iZXIiOiJlIik7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBlKygxPT09ZT8icmUiOiJlIil9fX0pfShuKCJ3ZC9SIikpfSwiMmlFbSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJxMXRJIiksbz1uLm4ociksYT1uKCIxN3g5IiksaT1uLm4oYSksdT1uKCJRTGFQIikscz1uLm4odSksbD1uKCJMaEN2IiksYz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTtmdW5jdGlvbiBmKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBwPWZ1bmN0aW9uKGUpe3JldHVybiEhKGUubWV0YUtleXx8ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5zaGlmdEtleSl9LGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuLHI7Zih0aGlzLHQpO2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGE9QXJyYXkobyksaT0wO2k8bztpKyspYVtpXT1hcmd1bWVudHNbaV07cmV0dXJuIG49cj1kKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChhKSkpLHIuaGFuZGxlQ2xpY2s9ZnVuY3Rpb24oZSl7aWYoci5wcm9wcy5vbkNsaWNrJiZyLnByb3BzLm9uQ2xpY2soZSksIWUuZGVmYXVsdFByZXZlbnRlZCYmMD09PWUuYnV0dG9uJiYhci5wcm9wcy50YXJnZXQmJiFwKGUpKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9ci5jb250ZXh0LnJvdXRlci5oaXN0b3J5LG49ci5wcm9wcyxvPW4ucmVwbGFjZSxhPW4udG87bz90LnJlcGxhY2UoYSk6dC5wdXNoKGEpfX0sZChyLG4pfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PShlLnJlcGxhY2UsZS50byksbj1lLmlubmVyUmVmLHI9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn0oZSxbInJlcGxhY2UiLCJ0byIsImlubmVyUmVmIl0pO3MoKSh0aGlzLmNvbnRleHQucm91dGVyLCJZb3Ugc2hvdWxkIG5vdCB1c2UgPExpbms+IG91dHNpZGUgYSA8Um91dGVyPiIpLHMoKSh2b2lkIDAhPT10LCdZb3UgbXVzdCBzcGVjaWZ5IHRoZSAidG8iIHByb3BlcnR5Jyk7dmFyIGE9dGhpcy5jb250ZXh0LnJvdXRlci5oaXN0b3J5LGk9InN0cmluZyI9PXR5cGVvZiB0P09iamVjdChsLmMpKHQsbnVsbCxudWxsLGEubG9jYXRpb24pOnQsdT1hLmNyZWF0ZUhyZWYoaSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJhIixjKHt9LHIse29uQ2xpY2s6dGhpcy5oYW5kbGVDbGljayxocmVmOnUscmVmOm59KSl9LHR9KG8uYS5Db21wb25lbnQpO2gucHJvcFR5cGVzPXtvbkNsaWNrOmkuYS5mdW5jLHRhcmdldDppLmEuc3RyaW5nLHJlcGxhY2U6aS5hLmJvb2wsdG86aS5hLm9uZU9mVHlwZShbaS5hLnN0cmluZyxpLmEub2JqZWN0XSkuaXNSZXF1aXJlZCxpbm5lclJlZjppLmEub25lT2ZUeXBlKFtpLmEuc3RyaW5nLGkuYS5mdW5jXSl9LGguZGVmYXVsdFByb3BzPXtyZXBsYWNlOiExfSxoLmNvbnRleHRUeXBlcz17cm91dGVyOmkuYS5zaGFwZSh7aGlzdG9yeTppLmEuc2hhcGUoe3B1c2g6aS5hLmZ1bmMuaXNSZXF1aXJlZCxyZXBsYWNlOmkuYS5mdW5jLmlzUmVxdWlyZWQsY3JlYXRlSHJlZjppLmEuZnVuYy5pc1JlcXVpcmVkfSkuaXNSZXF1aXJlZH0pLmlzUmVxdWlyZWR9LHQuYT1ofSwiMm1xbCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJyMzZZIiksbz17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGU6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LGE9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0saT17JCR0eXBlb2Y6ITAsY29tcGFyZTohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LHU9e307ZnVuY3Rpb24gcyhlKXtyZXR1cm4gci5pc01lbW8oZSk/aTp1W2UuJCR0eXBlb2ZdfHxvfXVbci5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITB9O3ZhciBsPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLGY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IscD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsaD1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbixyKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pe2lmKGgpe3ZhciBvPXAobik7byYmbyE9PWgmJmUodCxvLHIpfXZhciBpPWMobik7ZiYmKGk9aS5jb25jYXQoZihuKSkpO2Zvcih2YXIgdT1zKHQpLHk9cyhuKSxtPTA7bTxpLmxlbmd0aDsrK20pe3ZhciB2PWlbbV07aWYoIShhW3ZdfHxyJiZyW3ZdfHx5JiZ5W3ZdfHx1JiZ1W3ZdKSl7dmFyIGc9ZChuLHYpO3RyeXtsKHQsdixnKX1jYXRjaChlKXt9fX1yZXR1cm4gdH1yZXR1cm4gdH19LCIyck1xIjpmdW5jdGlvbihlLHQsbil7dmFyIHI7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBvPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksYT17Y2FuVXNlRE9NOm8sY2FuVXNlV29ya2VyczoidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlcixjYW5Vc2VFdmVudExpc3RlbmVyczpvJiYhKCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmIXdpbmRvdy5hdHRhY2hFdmVudCksY2FuVXNlVmlld3BvcnQ6byYmISF3aW5kb3cuc2NyZWVufTt2b2lkIDA9PT0ocj1mdW5jdGlvbigpe3JldHVybiBhfS5jYWxsKHQsbix0LGUpKXx8KGUuZXhwb3J0cz1yKX0oKX0sIjJ6czciOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuY2FuVXNlRE9NPXZvaWQgMDt2YXIgcixvPW4oIjJyTXEiKTt2YXIgYT0oKHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9KS5kZWZhdWx0LGk9YS5jYW5Vc2VET00/d2luZG93LkhUTUxFbGVtZW50Ont9O3QuY2FuVXNlRE9NPWEuY2FuVXNlRE9NO3QuZGVmYXVsdD1pfSwzOmZ1bmN0aW9uKGUsdCl7fSwiM0JyKyI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIzc09KIiksbz1uKCJ5NVArIiksYT1uKCJrV2pUIiksaT1uKCI4ZC8vIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRTZWxlY3Rpb24oKSxuPWUuZ2V0Q3VycmVudENvbnRlbnQoKSxyPXQuZ2V0QW5jaG9yS2V5KCksaT10LmdldEFuY2hvck9mZnNldCgpLHU9bi5nZXRCbG9ja0ZvcktleShyKS5nZXRUZXh0KClbaS0xXTtyZXR1cm4gYShlLHU/by5nZXRVVEYxNkxlbmd0aCh1LDApOjEpfSksImJhY2t3YXJkIik7aWYodD09PWUuZ2V0Q3VycmVudENvbnRlbnQoKSlyZXR1cm4gZTt2YXIgbj1lLmdldFNlbGVjdGlvbigpO3JldHVybiByLnB1c2goZSx0LnNldCgic2VsZWN0aW9uQmVmb3JlIixuKSxuLmlzQ29sbGFwc2VkKCk/ImJhY2tzcGFjZS1jaGFyYWN0ZXIiOiJyZW1vdmUtcmFuZ2UiKX19LCIzVDRkIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIldZTS8iKSxvPW4oIkVIRUUiKTtmdW5jdGlvbiBhKGUpe3JldHVybiBudWxsPT1lP2U6U3RyaW5nKGUpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiYobj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpKSlyZXR1cm4gYShuLmdldFByb3BlcnR5VmFsdWUobyh0KSkpO2lmKGRvY3VtZW50LmRlZmF1bHRWaWV3JiZkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKXtpZihuPWRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKSlyZXR1cm4gYShuLmdldFByb3BlcnR5VmFsdWUobyh0KSkpO2lmKCJkaXNwbGF5Ij09PXQpcmV0dXJuIm5vbmUifXJldHVybiBlLmN1cnJlbnRTdHlsZT9hKCJmbG9hdCI9PT10P2UuY3VycmVudFN0eWxlLmNzc0Zsb2F0fHxlLmN1cnJlbnRTdHlsZS5zdHlsZUZsb2F0OmUuY3VycmVudFN0eWxlW3IodCldKTphKGUuc3R5bGUmJmUuc3R5bGVbcih0KV0pfX0sIjNVRCsiOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFlLndlYnBhY2tQb2x5ZmlsbCl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShlKTt0LmNoaWxkcmVufHwodC5jaGlsZHJlbj1bXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImxvYWRlZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQubH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaWQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lml9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImV4cG9ydHMiLHtlbnVtZXJhYmxlOiEwfSksdC53ZWJwYWNrUG9seWZpbGw9MX1yZXR1cm4gdH19LCIzc09KIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBvPW4oIkwwcTMiKSxhPW4oIkxwUUEiKSxpPW4oIlZTbVQiKSx1PW4oImhNcGQiKSxzPW4oIkpQY3YiKSxsPXMuT3JkZXJlZFNldCxjPXMuUmVjb3JkLGY9cy5TdGFjayxkPWMoe2FsbG93VW5kbzohMCxjdXJyZW50Q29udGVudDpudWxsLGRlY29yYXRvcjpudWxsLGRpcmVjdGlvbk1hcDpudWxsLGZvcmNlU2VsZWN0aW9uOiExLGluQ29tcG9zaXRpb25Nb2RlOiExLGlubGluZVN0eWxlT3ZlcnJpZGU6bnVsbCxsYXN0Q2hhbmdlVHlwZTpudWxsLG5hdGl2ZWx5UmVuZGVyZWRDb250ZW50Om51bGwscmVkb1N0YWNrOmYoKSxzZWxlY3Rpb246bnVsbCx0cmVlTWFwOm51bGwsdW5kb1N0YWNrOmYoKX0pLHA9ZnVuY3Rpb24oKXt0LmNyZWF0ZUVtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiB0LmNyZWF0ZVdpdGhDb250ZW50KGEuY3JlYXRlRnJvbVRleHQoIiIpLGUpfSx0LmNyZWF0ZVdpdGhDb250ZW50PWZ1bmN0aW9uKGUsbil7aWYoMD09PWUuZ2V0QmxvY2tNYXAoKS5jb3VudCgpKXJldHVybiB0LmNyZWF0ZUVtcHR5KG4pO3ZhciByPWUuZ2V0QmxvY2tNYXAoKS5maXJzdCgpLmdldEtleSgpO3JldHVybiB0LmNyZWF0ZSh7Y3VycmVudENvbnRlbnQ6ZSx1bmRvU3RhY2s6ZigpLHJlZG9TdGFjazpmKCksZGVjb3JhdG9yOm58fG51bGwsc2VsZWN0aW9uOnUuY3JlYXRlRW1wdHkocil9KX0sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7dmFyIG49ZS5jdXJyZW50Q29udGVudCxvPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30sbz1PYmplY3Qua2V5cyhuKTsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKG89by5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSkpLG8uZm9yRWFjaCgoZnVuY3Rpb24odCl7cihlLHQsblt0XSl9KSl9cmV0dXJuIGV9KHt9LGUse3RyZWVNYXA6eShuLGUuZGVjb3JhdG9yKSxkaXJlY3Rpb25NYXA6aS5nZXREaXJlY3Rpb25NYXAobil9KTtyZXR1cm4gbmV3IHQobmV3IGQobykpfSx0LnNldD1mdW5jdGlvbihlLG4pe3JldHVybiBuZXcgdChlLmdldEltbXV0YWJsZSgpLndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKHQpe3ZhciByPXQuZ2V0KCJkZWNvcmF0b3IiKSxhPXI7bnVsbD09PW4uZGVjb3JhdG9yP2E9bnVsbDpuLmRlY29yYXRvciYmKGE9bi5kZWNvcmF0b3IpO3ZhciBpPW4uY3VycmVudENvbnRlbnR8fGUuZ2V0Q3VycmVudENvbnRlbnQoKTtpZihhIT09cil7dmFyIHUscz10LmdldCgidHJlZU1hcCIpO3JldHVybiB1PWEmJnI/ZnVuY3Rpb24oZSx0LG4scixhKXtyZXR1cm4gbi5tZXJnZSh0LnRvU2VxKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gci5nZXREZWNvcmF0aW9ucyh0LGUpIT09YS5nZXREZWNvcmF0aW9ucyh0LGUpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8uZ2VuZXJhdGUoZSx0LHIpfSkpKX0oaSxpLmdldEJsb2NrTWFwKCkscyxhLHIpOnkoaSxhKSx2b2lkIHQubWVyZ2Uoe2RlY29yYXRvcjphLHRyZWVNYXA6dSxuYXRpdmVseVJlbmRlcmVkQ29udGVudDpudWxsfSl9aSE9PWUuZ2V0Q3VycmVudENvbnRlbnQoKSYmdC5zZXQoInRyZWVNYXAiLGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBhPWUuZ2V0Q3VycmVudENvbnRlbnQoKS5zZXQoImVudGl0eU1hcCIsbiksaT1hLmdldEJsb2NrTWFwKCk7cmV0dXJuIGUuZ2V0SW1tdXRhYmxlKCkuZ2V0KCJ0cmVlTWFwIikubWVyZ2UodC50b1NlcSgpLmZpbHRlcigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSE9PWkuZ2V0KHQpfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8uZ2VuZXJhdGUoYSxlLHIpfSkpKX0oZSxpLmdldEJsb2NrTWFwKCksaS5nZXRFbnRpdHlNYXAoKSxhKSksdC5tZXJnZShuKX0pKSl9O3ZhciBlPXQucHJvdG90eXBlO2Z1bmN0aW9uIHQoZSl7cih0aGlzLCJfaW1tdXRhYmxlIix2b2lkIDApLHRoaXMuX2ltbXV0YWJsZT1lfXJldHVybiBlLnRvSlM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbW11dGFibGUoKS50b0pTKCl9LGUuZ2V0QWxsb3dVbmRvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW1tdXRhYmxlKCkuZ2V0KCJhbGxvd1VuZG8iKX0sZS5nZXRDdXJyZW50Q29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEltbXV0YWJsZSgpLmdldCgiY3VycmVudENvbnRlbnQiKX0sZS5nZXRVbmRvU3RhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbW11dGFibGUoKS5nZXQoInVuZG9TdGFjayIpfSxlLmdldFJlZG9TdGFjaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEltbXV0YWJsZSgpLmdldCgicmVkb1N0YWNrIil9LGUuZ2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW1tdXRhYmxlKCkuZ2V0KCJzZWxlY3Rpb24iKX0sZS5nZXREZWNvcmF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbW11dGFibGUoKS5nZXQoImRlY29yYXRvciIpfSxlLmlzSW5Db21wb3NpdGlvbk1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbW11dGFibGUoKS5nZXQoImluQ29tcG9zaXRpb25Nb2RlIil9LGUubXVzdEZvcmNlU2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW1tdXRhYmxlKCkuZ2V0KCJmb3JjZVNlbGVjdGlvbiIpfSxlLmdldE5hdGl2ZWx5UmVuZGVyZWRDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW1tdXRhYmxlKCkuZ2V0KCJuYXRpdmVseVJlbmRlcmVkQ29udGVudCIpfSxlLmdldExhc3RDaGFuZ2VUeXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW1tdXRhYmxlKCkuZ2V0KCJsYXN0Q2hhbmdlVHlwZSIpfSxlLmdldElubGluZVN0eWxlT3ZlcnJpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbW11dGFibGUoKS5nZXQoImlubGluZVN0eWxlT3ZlcnJpZGUiKX0sdC5zZXRJbmxpbmVTdHlsZU92ZXJyaWRlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuc2V0KGUse2lubGluZVN0eWxlT3ZlcnJpZGU6bn0pfSxlLmdldEN1cnJlbnRJbmxpbmVTdHlsZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0SW5saW5lU3R5bGVPdmVycmlkZSgpO2lmKG51bGwhPWUpcmV0dXJuIGU7dmFyIHQ9dGhpcy5nZXRDdXJyZW50Q29udGVudCgpLG49dGhpcy5nZXRTZWxlY3Rpb24oKTtyZXR1cm4gbi5pc0NvbGxhcHNlZCgpP2Z1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRTdGFydEtleSgpLHI9dC5nZXRTdGFydE9mZnNldCgpLG89ZS5nZXRCbG9ja0ZvcktleShuKTtpZihyPjApcmV0dXJuIG8uZ2V0SW5saW5lU3R5bGVBdChyLTEpO2lmKG8uZ2V0TGVuZ3RoKCkpcmV0dXJuIG8uZ2V0SW5saW5lU3R5bGVBdCgwKTtyZXR1cm4gdihlLG4pfSh0LG4pOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRTdGFydEtleSgpLHI9dC5nZXRTdGFydE9mZnNldCgpLG89ZS5nZXRCbG9ja0ZvcktleShuKTtpZihyPG8uZ2V0TGVuZ3RoKCkpcmV0dXJuIG8uZ2V0SW5saW5lU3R5bGVBdChyKTtpZihyPjApcmV0dXJuIG8uZ2V0SW5saW5lU3R5bGVBdChyLTEpO3JldHVybiB2KGUsbil9KHQsbil9LGUuZ2V0QmxvY2tUcmVlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldEltbXV0YWJsZSgpLmdldEluKFsidHJlZU1hcCIsZV0pfSxlLmlzU2VsZWN0aW9uQXRTdGFydE9mQ29udGVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Q3VycmVudENvbnRlbnQoKS5nZXRCbG9ja01hcCgpLmZpcnN0KCkuZ2V0S2V5KCk7cmV0dXJuIHRoaXMuZ2V0U2VsZWN0aW9uKCkuaGFzRWRnZVdpdGhpbihlLDAsMCl9LGUuaXNTZWxlY3Rpb25BdEVuZE9mQ29udGVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Q3VycmVudENvbnRlbnQoKS5nZXRCbG9ja01hcCgpLmxhc3QoKSx0PWUuZ2V0TGVuZ3RoKCk7cmV0dXJuIHRoaXMuZ2V0U2VsZWN0aW9uKCkuaGFzRWRnZVdpdGhpbihlLmdldEtleSgpLHQsdCl9LGUuZ2V0RGlyZWN0aW9uTWFwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW1tdXRhYmxlKCkuZ2V0KCJkaXJlY3Rpb25NYXAiKX0sdC5hY2NlcHRTZWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaChlLHQsITEpfSx0LmZvcmNlU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZ2V0SGFzRm9jdXMoKXx8KHQ9dC5zZXQoImhhc0ZvY3VzIiwhMCkpLGgoZSx0LCEwKX0sdC5tb3ZlU2VsZWN0aW9uVG9FbmQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5nZXRDdXJyZW50Q29udGVudCgpLmdldExhc3RCbG9jaygpLHI9bi5nZXRLZXkoKSxvPW4uZ2V0TGVuZ3RoKCk7cmV0dXJuIHQuYWNjZXB0U2VsZWN0aW9uKGUsbmV3IHUoe2FuY2hvcktleTpyLGFuY2hvck9mZnNldDpvLGZvY3VzS2V5OnIsZm9jdXNPZmZzZXQ6byxpc0JhY2t3YXJkOiExfSkpfSx0Lm1vdmVGb2N1c1RvRW5kPWZ1bmN0aW9uKGUpe3ZhciBuPXQubW92ZVNlbGVjdGlvblRvRW5kKGUpO3JldHVybiB0LmZvcmNlU2VsZWN0aW9uKG4sbi5nZXRTZWxlY3Rpb24oKSl9LHQucHVzaD1mdW5jdGlvbihlLG4scil7dmFyIG89IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXTtpZihlLmdldEN1cnJlbnRDb250ZW50KCk9PT1uKXJldHVybiBlO3ZhciBhPWkuZ2V0RGlyZWN0aW9uTWFwKG4sZS5nZXREaXJlY3Rpb25NYXAoKSk7aWYoIWUuZ2V0QWxsb3dVbmRvKCkpcmV0dXJuIHQuc2V0KGUse2N1cnJlbnRDb250ZW50Om4sZGlyZWN0aW9uTWFwOmEsbGFzdENoYW5nZVR5cGU6cixzZWxlY3Rpb246bi5nZXRTZWxlY3Rpb25BZnRlcigpLGZvcmNlU2VsZWN0aW9uOm8saW5saW5lU3R5bGVPdmVycmlkZTpudWxsfSk7dmFyIHU9ZS5nZXRTZWxlY3Rpb24oKSxzPWUuZ2V0Q3VycmVudENvbnRlbnQoKSxsPWUuZ2V0VW5kb1N0YWNrKCksYz1uO3UhPT1zLmdldFNlbGVjdGlvbkFmdGVyKCl8fG0oZSxyKT8obD1sLnB1c2gocyksYz1jLnNldCgic2VsZWN0aW9uQmVmb3JlIix1KSk6Imluc2VydC1jaGFyYWN0ZXJzIiE9PXImJiJiYWNrc3BhY2UtY2hhcmFjdGVyIiE9PXImJiJkZWxldGUtY2hhcmFjdGVyIiE9PXJ8fChjPWMuc2V0KCJzZWxlY3Rpb25CZWZvcmUiLHMuZ2V0U2VsZWN0aW9uQmVmb3JlKCkpKTt2YXIgZD1lLmdldElubGluZVN0eWxlT3ZlcnJpZGUoKSxwPVsiYWRqdXN0LWRlcHRoIiwiY2hhbmdlLWJsb2NrLXR5cGUiLCJzcGxpdC1ibG9jayJdOy0xPT09cC5pbmRleE9mKHIpJiYoZD1udWxsKTt2YXIgaD17Y3VycmVudENvbnRlbnQ6YyxkaXJlY3Rpb25NYXA6YSx1bmRvU3RhY2s6bCxyZWRvU3RhY2s6ZigpLGxhc3RDaGFuZ2VUeXBlOnIsc2VsZWN0aW9uOm4uZ2V0U2VsZWN0aW9uQWZ0ZXIoKSxmb3JjZVNlbGVjdGlvbjpvLGlubGluZVN0eWxlT3ZlcnJpZGU6ZH07cmV0dXJuIHQuc2V0KGUsaCl9LHQudW5kbz1mdW5jdGlvbihlKXtpZighZS5nZXRBbGxvd1VuZG8oKSlyZXR1cm4gZTt2YXIgbj1lLmdldFVuZG9TdGFjaygpLHI9bi5wZWVrKCk7aWYoIXIpcmV0dXJuIGU7dmFyIG89ZS5nZXRDdXJyZW50Q29udGVudCgpLGE9aS5nZXREaXJlY3Rpb25NYXAocixlLmdldERpcmVjdGlvbk1hcCgpKTtyZXR1cm4gdC5zZXQoZSx7Y3VycmVudENvbnRlbnQ6cixkaXJlY3Rpb25NYXA6YSx1bmRvU3RhY2s6bi5zaGlmdCgpLHJlZG9TdGFjazplLmdldFJlZG9TdGFjaygpLnB1c2gobyksZm9yY2VTZWxlY3Rpb246ITAsaW5saW5lU3R5bGVPdmVycmlkZTpudWxsLGxhc3RDaGFuZ2VUeXBlOiJ1bmRvIixuYXRpdmVseVJlbmRlcmVkQ29udGVudDpudWxsLHNlbGVjdGlvbjpvLmdldFNlbGVjdGlvbkJlZm9yZSgpfSl9LHQucmVkbz1mdW5jdGlvbihlKXtpZighZS5nZXRBbGxvd1VuZG8oKSlyZXR1cm4gZTt2YXIgbj1lLmdldFJlZG9TdGFjaygpLHI9bi5wZWVrKCk7aWYoIXIpcmV0dXJuIGU7dmFyIG89ZS5nZXRDdXJyZW50Q29udGVudCgpLGE9aS5nZXREaXJlY3Rpb25NYXAocixlLmdldERpcmVjdGlvbk1hcCgpKTtyZXR1cm4gdC5zZXQoZSx7Y3VycmVudENvbnRlbnQ6cixkaXJlY3Rpb25NYXA6YSx1bmRvU3RhY2s6ZS5nZXRVbmRvU3RhY2soKS5wdXNoKG8pLHJlZG9TdGFjazpuLnNoaWZ0KCksZm9yY2VTZWxlY3Rpb246ITAsaW5saW5lU3R5bGVPdmVycmlkZTpudWxsLGxhc3RDaGFuZ2VUeXBlOiJyZWRvIixuYXRpdmVseVJlbmRlcmVkQ29udGVudDpudWxsLHNlbGVjdGlvbjpyLmdldFNlbGVjdGlvbkFmdGVyKCl9KX0sZS5nZXRJbW11dGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW1tdXRhYmxlfSx0fSgpO2Z1bmN0aW9uIGgoZSx0LG4pe3JldHVybiBwLnNldChlLHtzZWxlY3Rpb246dCxmb3JjZVNlbGVjdGlvbjpuLG5hdGl2ZWx5UmVuZGVyZWRDb250ZW50Om51bGwsaW5saW5lU3R5bGVPdmVycmlkZTpudWxsfSl9ZnVuY3Rpb24geShlLHQpe3JldHVybiBlLmdldEJsb2NrTWFwKCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gby5nZW5lcmF0ZShlLG4sdCl9KSkudG9PcmRlcmVkTWFwKCl9ZnVuY3Rpb24gbShlLHQpe3JldHVybiB0IT09ZS5nZXRMYXN0Q2hhbmdlVHlwZSgpfHwiaW5zZXJ0LWNoYXJhY3RlcnMiIT09dCYmImJhY2tzcGFjZS1jaGFyYWN0ZXIiIT09dCYmImRlbGV0ZS1jaGFyYWN0ZXIiIT09dH1mdW5jdGlvbiB2KGUsdCl7dmFyIG49ZS5nZXRCbG9ja01hcCgpLnJldmVyc2UoKS5za2lwVW50aWwoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIG49PT10fSkpLnNraXAoMSkuc2tpcFVudGlsKChmdW5jdGlvbihlLHQpe3JldHVybiBlLmdldExlbmd0aCgpfSkpLmZpcnN0KCk7cmV0dXJuIG4/bi5nZXRJbmxpbmVTdHlsZUF0KG4uZ2V0TGVuZ3RoKCktMSk6bCgpfWUuZXhwb3J0cz1wfSw0OmZ1bmN0aW9uKGUsdCl7fSwiNDJCViI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Nb2RpZmllcnNVdGlscz10LkxvY2FsZVV0aWxzPXQuRGF0ZVV0aWxzPXQuRGF5UGlja2VyPXZvaWQgMDt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9bigicTF0SSIpLGk9ZyhhKSx1PShnKG4oIjE3eDkiKSksZyhuKCJBVjdEIikpKSxzPWcobigibC8vRiIpKSxsPWcobigiTFB6SiIpKSxjPWcobigianNDMiIpKSxmPXYobigiVkpDUiIpKSxkPXYobigibUhudSIpKSxwPXYobigiemUyeCIpKSxoPXYobigiS0ZubiIpKSx5PWcobigiWkU0NCIpKSxtPW4oIlZCVlkiKTtmdW5jdGlvbiB2KGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1mdW5jdGlvbiBnKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgYj10LkRheVBpY2tlcj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlKSk7bi5kYXlQaWNrZXI9bnVsbCxuLnNob3dOZXh0TW9udGg9ZnVuY3Rpb24oZSl7aWYobi5hbGxvd05leHRNb250aCgpKXt2YXIgdD1uLnByb3BzLnBhZ2VkTmF2aWdhdGlvbj9uLnByb3BzLm51bWJlck9mTW9udGhzOjEscj1kLmFkZE1vbnRocyhuLnN0YXRlLmN1cnJlbnRNb250aCx0KTtuLnNob3dNb250aChyLGUpfX0sbi5zaG93UHJldmlvdXNNb250aD1mdW5jdGlvbihlKXtpZihuLmFsbG93UHJldmlvdXNNb250aCgpKXt2YXIgdD1uLnByb3BzLnBhZ2VkTmF2aWdhdGlvbj9uLnByb3BzLm51bWJlck9mTW9udGhzOjEscj1kLmFkZE1vbnRocyhuLnN0YXRlLmN1cnJlbnRNb250aCwtdCk7bi5zaG93TW9udGgocixlKX19LG4uaGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXtzd2l0Y2goZS5wZXJzaXN0KCksZS5rZXlDb2RlKXtjYXNlIG0uTEVGVDoicnRsIj09PW4ucHJvcHMuZGlyP24uc2hvd05leHRNb250aCgpOm4uc2hvd1ByZXZpb3VzTW9udGgoKSxmLmNhbmNlbEV2ZW50KGUpO2JyZWFrO2Nhc2UgbS5SSUdIVDoicnRsIj09PW4ucHJvcHMuZGlyP24uc2hvd1ByZXZpb3VzTW9udGgoKTpuLnNob3dOZXh0TW9udGgoKSxmLmNhbmNlbEV2ZW50KGUpO2JyZWFrO2Nhc2UgbS5VUDpuLnNob3dQcmV2aW91c1llYXIoKSxmLmNhbmNlbEV2ZW50KGUpO2JyZWFrO2Nhc2UgbS5ET1dOOm4uc2hvd05leHRZZWFyKCksZi5jYW5jZWxFdmVudChlKX1uLnByb3BzLm9uS2V5RG93biYmbi5wcm9wcy5vbktleURvd24oZSl9LG4uaGFuZGxlRGF5S2V5RG93bj1mdW5jdGlvbihlLHQscil7c3dpdGNoKHIucGVyc2lzdCgpLHIua2V5Q29kZSl7Y2FzZSBtLkxFRlQ6Zi5jYW5jZWxFdmVudChyKSwicnRsIj09PW4ucHJvcHMuZGlyP24uZm9jdXNOZXh0RGF5KHIudGFyZ2V0KTpuLmZvY3VzUHJldmlvdXNEYXkoci50YXJnZXQpO2JyZWFrO2Nhc2UgbS5SSUdIVDpmLmNhbmNlbEV2ZW50KHIpLCJydGwiPT09bi5wcm9wcy5kaXI/bi5mb2N1c1ByZXZpb3VzRGF5KHIudGFyZ2V0KTpuLmZvY3VzTmV4dERheShyLnRhcmdldCk7YnJlYWs7Y2FzZSBtLlVQOmYuY2FuY2VsRXZlbnQociksbi5mb2N1c1ByZXZpb3VzV2VlayhyLnRhcmdldCk7YnJlYWs7Y2FzZSBtLkRPV046Zi5jYW5jZWxFdmVudChyKSxuLmZvY3VzTmV4dFdlZWsoci50YXJnZXQpO2JyZWFrO2Nhc2UgbS5FTlRFUjpjYXNlIG0uU1BBQ0U6Zi5jYW5jZWxFdmVudChyKSxuLnByb3BzLm9uRGF5Q2xpY2smJm4uaGFuZGxlRGF5Q2xpY2soZSx0LHIpfW4ucHJvcHMub25EYXlLZXlEb3duJiZuLnByb3BzLm9uRGF5S2V5RG93bihlLHQscil9LG4uaGFuZGxlRGF5Q2xpY2s9ZnVuY3Rpb24oZSx0LHIpe3IucGVyc2lzdCgpLHRbbi5wcm9wcy5jbGFzc05hbWVzLm91dHNpZGVdJiZuLnByb3BzLmVuYWJsZU91dHNpZGVEYXlzQ2xpY2smJm4uaGFuZGxlT3V0c2lkZURheUNsaWNrKGUpLG4ucHJvcHMub25EYXlDbGljayYmbi5wcm9wcy5vbkRheUNsaWNrKGUsdCxyKX0sbi5oYW5kbGVUb2RheUJ1dHRvbkNsaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlLHI9bmV3IERhdGUodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSk7bi5zaG93TW9udGgociksZS50YXJnZXQuYmx1cigpLG4ucHJvcHMub25Ub2RheUJ1dHRvbkNsaWNrJiYoZS5wZXJzaXN0KCksbi5wcm9wcy5vblRvZGF5QnV0dG9uQ2xpY2sobmV3IERhdGUodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSksaC5nZXRNb2RpZmllcnNGb3JEYXkodCxuLnByb3BzLm1vZGlmaWVycyksZSkpfTt2YXIgcj1uLmdldEN1cnJlbnRNb250aEZyb21Qcm9wcyhlKTtyZXR1cm4gbi5zdGF0ZT17Y3VycmVudE1vbnRoOnJ9LG59cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6ImNvbXBvbmVudERpZFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZS5tb250aCE9PXRoaXMucHJvcHMubW9udGgmJiFkLmlzU2FtZU1vbnRoKGUubW9udGgsdGhpcy5wcm9wcy5tb250aCkpe3ZhciB0PXRoaXMuZ2V0Q3VycmVudE1vbnRoRnJvbVByb3BzKHRoaXMucHJvcHMpO3RoaXMuc2V0U3RhdGUoe2N1cnJlbnRNb250aDp0fSl9fX0se2tleToiZ2V0Q3VycmVudE1vbnRoRnJvbVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1mLnN0YXJ0T2ZNb250aChlLm1vbnRofHxlLmluaXRpYWxNb250aCk7aWYoZS5wYWdlZE5hdmlnYXRpb24mJmUubnVtYmVyT2ZNb250aHM+MSYmZS5mcm9tTW9udGgpe3ZhciBuPWYuc3RhcnRPZk1vbnRoKGUuZnJvbU1vbnRoKSxyPWYuZ2V0TW9udGhzRGlmZihuLHQpO3Q9ZC5hZGRNb250aHMobixNYXRoLmZsb29yKHIvZS5udW1iZXJPZk1vbnRocykqZS5udW1iZXJPZk1vbnRocyl9ZWxzZSBlLnRvTW9udGgmJmUubnVtYmVyT2ZNb250aHM+MSYmZi5nZXRNb250aHNEaWZmKHQsZS50b01vbnRoKTw9MCYmKHQ9ZC5hZGRNb250aHMoZi5zdGFydE9mTW9udGgoZS50b01vbnRoKSwxLXRoaXMucHJvcHMubnVtYmVyT2ZNb250aHMpKTtyZXR1cm4gdH19LHtrZXk6ImdldE5leHROYXZpZ2FibGVNb250aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZC5hZGRNb250aHModGhpcy5zdGF0ZS5jdXJyZW50TW9udGgsdGhpcy5wcm9wcy5udW1iZXJPZk1vbnRocyl9fSx7a2V5OiJnZXRQcmV2aW91c05hdmlnYWJsZU1vbnRoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBkLmFkZE1vbnRocyh0aGlzLnN0YXRlLmN1cnJlbnRNb250aCwtMSl9fSx7a2V5OiJhbGxvd1ByZXZpb3VzTW9udGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9ZC5hZGRNb250aHModGhpcy5zdGF0ZS5jdXJyZW50TW9udGgsLTEpO3JldHVybiB0aGlzLmFsbG93TW9udGgoZSl9fSx7a2V5OiJhbGxvd05leHRNb250aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1kLmFkZE1vbnRocyh0aGlzLnN0YXRlLmN1cnJlbnRNb250aCx0aGlzLnByb3BzLm51bWJlck9mTW9udGhzKTtyZXR1cm4gdGhpcy5hbGxvd01vbnRoKGUpfX0se2tleToiYWxsb3dNb250aCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuZnJvbU1vbnRoLHI9dC50b01vbnRoO3JldHVybiEoIXQuY2FuQ2hhbmdlTW9udGh8fG4mJmYuZ2V0TW9udGhzRGlmZihuLGUpPDB8fHImJmYuZ2V0TW9udGhzRGlmZihyLGUpPjApfX0se2tleToiYWxsb3dZZWFyQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmNhbkNoYW5nZU1vbnRofX0se2tleToic2hvd01vbnRoIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7dGhpcy5hbGxvd01vbnRoKGUpJiZ0aGlzLnNldFN0YXRlKHtjdXJyZW50TW9udGg6Zi5zdGFydE9mTW9udGgoZSl9LChmdW5jdGlvbigpe3QmJnQoKSxuLnByb3BzLm9uTW9udGhDaGFuZ2UmJm4ucHJvcHMub25Nb250aENoYW5nZShuLnN0YXRlLmN1cnJlbnRNb250aCl9KSl9fSx7a2V5OiJzaG93TmV4dFllYXIiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5hbGxvd1llYXJDaGFuZ2UoKSl7dmFyIGU9ZC5hZGRNb250aHModGhpcy5zdGF0ZS5jdXJyZW50TW9udGgsMTIpO3RoaXMuc2hvd01vbnRoKGUpfX19LHtrZXk6InNob3dQcmV2aW91c1llYXIiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5hbGxvd1llYXJDaGFuZ2UoKSl7dmFyIGU9ZC5hZGRNb250aHModGhpcy5zdGF0ZS5jdXJyZW50TW9udGgsLTEyKTt0aGlzLnNob3dNb250aChlKX19fSx7a2V5OiJmb2N1c0ZpcnN0RGF5T2ZNb250aCIsdmFsdWU6ZnVuY3Rpb24oKXtmLmdldERheU5vZGVzKHRoaXMuZGF5UGlja2VyLHRoaXMucHJvcHMuY2xhc3NOYW1lcylbMF0uZm9jdXMoKX19LHtrZXk6ImZvY3VzTGFzdERheU9mTW9udGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9Zi5nZXREYXlOb2Rlcyh0aGlzLmRheVBpY2tlcix0aGlzLnByb3BzLmNsYXNzTmFtZXMpO2VbZS5sZW5ndGgtMV0uZm9jdXMoKX19LHtrZXk6ImZvY3VzUHJldmlvdXNEYXkiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1mLmdldERheU5vZGVzKHRoaXMuZGF5UGlja2VyLHRoaXMucHJvcHMuY2xhc3NOYW1lcykscj1mLm5vZGVMaXN0VG9BcnJheShuKS5pbmRleE9mKGUpOy0xIT09ciYmKDA9PT1yP3RoaXMuc2hvd1ByZXZpb3VzTW9udGgoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZm9jdXNMYXN0RGF5T2ZNb250aCgpfSkpOm5bci0xXS5mb2N1cygpKX19LHtrZXk6ImZvY3VzTmV4dERheSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWYuZ2V0RGF5Tm9kZXModGhpcy5kYXlQaWNrZXIsdGhpcy5wcm9wcy5jbGFzc05hbWVzKSxyPWYubm9kZUxpc3RUb0FycmF5KG4pLmluZGV4T2YoZSk7LTEhPT1yJiYocj09PW4ubGVuZ3RoLTE/dGhpcy5zaG93TmV4dE1vbnRoKChmdW5jdGlvbigpe3JldHVybiB0LmZvY3VzRmlyc3REYXlPZk1vbnRoKCl9KSk6bltyKzFdLmZvY3VzKCkpfX0se2tleToiZm9jdXNOZXh0V2VlayIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWYuZ2V0RGF5Tm9kZXModGhpcy5kYXlQaWNrZXIsdGhpcy5wcm9wcy5jbGFzc05hbWVzKSxyPWYubm9kZUxpc3RUb0FycmF5KG4pLmluZGV4T2YoZSk7cj5uLmxlbmd0aC04P3RoaXMuc2hvd05leHRNb250aCgoZnVuY3Rpb24oKXt2YXIgZT03LShuLmxlbmd0aC1yKTtmLmdldERheU5vZGVzKHQuZGF5UGlja2VyLHQucHJvcHMuY2xhc3NOYW1lcylbZV0uZm9jdXMoKX0pKTpuW3IrN10uZm9jdXMoKX19LHtrZXk6ImZvY3VzUHJldmlvdXNXZWVrIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49Zi5nZXREYXlOb2Rlcyh0aGlzLmRheVBpY2tlcix0aGlzLnByb3BzLmNsYXNzTmFtZXMpLHI9Zi5ub2RlTGlzdFRvQXJyYXkobikuaW5kZXhPZihlKTtyPD02P3RoaXMuc2hvd1ByZXZpb3VzTW9udGgoKGZ1bmN0aW9uKCl7dmFyIGU9Zi5nZXREYXlOb2Rlcyh0LmRheVBpY2tlcix0LnByb3BzLmNsYXNzTmFtZXMpO2VbZS5sZW5ndGgtNytyXS5mb2N1cygpfSkpOm5bci03XS5mb2N1cygpfX0se2tleToiaGFuZGxlT3V0c2lkZURheUNsaWNrIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0YXRlLmN1cnJlbnRNb250aCxuPXRoaXMucHJvcHMubnVtYmVyT2ZNb250aHMscj1mLmdldE1vbnRoc0RpZmYodCxlKTtyPjAmJnI+PW4/dGhpcy5zaG93TmV4dE1vbnRoKCk6cjwwJiZ0aGlzLnNob3dQcmV2aW91c01vbnRoKCl9fSx7a2V5OiJyZW5kZXJOYXZiYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUubGFiZWxzLG49ZS5sb2NhbGUscj1lLmxvY2FsZVV0aWxzLG89ZS5jYW5DaGFuZ2VNb250aCxhPWUubmF2YmFyRWxlbWVudCx1PWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KGUsWyJsYWJlbHMiLCJsb2NhbGUiLCJsb2NhbGVVdGlscyIsImNhbkNoYW5nZU1vbnRoIiwibmF2YmFyRWxlbWVudCJdKTtpZighbylyZXR1cm4gbnVsbDt2YXIgcz17bW9udGg6dGhpcy5zdGF0ZS5jdXJyZW50TW9udGgsY2xhc3NOYW1lczp0aGlzLnByb3BzLmNsYXNzTmFtZXMsY2xhc3NOYW1lOnRoaXMucHJvcHMuY2xhc3NOYW1lcy5uYXZCYXIsbmV4dE1vbnRoOnRoaXMuZ2V0TmV4dE5hdmlnYWJsZU1vbnRoKCkscHJldmlvdXNNb250aDp0aGlzLmdldFByZXZpb3VzTmF2aWdhYmxlTW9udGgoKSxzaG93UHJldmlvdXNCdXR0b246dGhpcy5hbGxvd1ByZXZpb3VzTW9udGgoKSxzaG93TmV4dEJ1dHRvbjp0aGlzLmFsbG93TmV4dE1vbnRoKCksb25OZXh0Q2xpY2s6dGhpcy5zaG93TmV4dE1vbnRoLG9uUHJldmlvdXNDbGljazp0aGlzLnNob3dQcmV2aW91c01vbnRoLGRpcjp1LmRpcixsYWJlbHM6dCxsb2NhbGU6bixsb2NhbGVVdGlsczpyfTtyZXR1cm4gaS5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KGEpP2kuZGVmYXVsdC5jbG9uZUVsZW1lbnQoYSxzKTppLmRlZmF1bHQuY3JlYXRlRWxlbWVudChhLHMpfX0se2tleToicmVuZGVyTW9udGhzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PWYuZ2V0Rmlyc3REYXlPZldlZWtGcm9tUHJvcHModGhpcy5wcm9wcyksbj0wO248dGhpcy5wcm9wcy5udW1iZXJPZk1vbnRocztuKz0xKXt2YXIgbz1kLmFkZE1vbnRocyh0aGlzLnN0YXRlLmN1cnJlbnRNb250aCxuKTtlLnB1c2goaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobC5kZWZhdWx0LHIoe2tleTpufSx0aGlzLnByb3BzLHttb250aDpvLGZpcnN0RGF5T2ZXZWVrOnQsb25EYXlLZXlEb3duOnRoaXMuaGFuZGxlRGF5S2V5RG93bixvbkRheUNsaWNrOnRoaXMuaGFuZGxlRGF5Q2xpY2t9KSkpfXJldHVybiB0aGlzLnByb3BzLnJldmVyc2VNb250aHMmJmUucmV2ZXJzZSgpLGV9fSx7a2V5OiJyZW5kZXJGb290ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMudG9kYXlCdXR0b24/aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0aGlzLnByb3BzLmNsYXNzTmFtZXMuZm9vdGVyfSx0aGlzLnJlbmRlclRvZGF5QnV0dG9uKCkpOm51bGx9fSx7a2V5OiJyZW5kZXJUb2RheUJ1dHRvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsdGFiSW5kZXg6MCxjbGFzc05hbWU6dGhpcy5wcm9wcy5jbGFzc05hbWVzLnRvZGF5QnV0dG9uLCJhcmlhLWxhYmVsIjp0aGlzLnByb3BzLnRvZGF5QnV0dG9uLG9uQ2xpY2s6dGhpcy5oYW5kbGVUb2RheUJ1dHRvbkNsaWNrfSx0aGlzLnByb3BzLnRvZGF5QnV0dG9uKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy5jbGFzc05hbWVzLmNvbnRhaW5lcjtyZXR1cm4gdGhpcy5wcm9wcy5vbkRheUNsaWNrfHwodD10KyIgIit0aGlzLnByb3BzLmNsYXNzTmFtZXMuaW50ZXJhY3Rpb25EaXNhYmxlZCksdGhpcy5wcm9wcy5jbGFzc05hbWUmJih0PXQrIiAiK3RoaXMucHJvcHMuY2xhc3NOYW1lKSxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2IixyKHt9LHRoaXMucHJvcHMuY29udGFpbmVyUHJvcHMse2NsYXNzTmFtZTp0LHJlZjpmdW5jdGlvbih0KXtyZXR1cm4gZS5kYXlQaWNrZXI9dH0sbGFuZzp0aGlzLnByb3BzLmxvY2FsZX0pLGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6dGhpcy5wcm9wcy5jbGFzc05hbWVzLndyYXBwZXIsdGFiSW5kZXg6dGhpcy5wcm9wcy5jYW5DaGFuZ2VNb250aCYmdm9pZCAwIT09dGhpcy5wcm9wcy50YWJJbmRleD90aGlzLnByb3BzLnRhYkluZGV4Oi0xLG9uS2V5RG93bjp0aGlzLmhhbmRsZUtleURvd24sb25Gb2N1czp0aGlzLnByb3BzLm9uRm9jdXMsb25CbHVyOnRoaXMucHJvcHMub25CbHVyfSx0aGlzLnJlbmRlck5hdmJhcigpLGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6dGhpcy5wcm9wcy5jbGFzc05hbWVzLm1vbnRoc30sdGhpcy5yZW5kZXJNb250aHMoKSksdGhpcy5yZW5kZXJGb290ZXIoKSkpfX1dKSx0fShhLkNvbXBvbmVudCk7Yi5WRVJTSU9OPSI3LjMuMCIsYi5kZWZhdWx0UHJvcHM9e2NsYXNzTmFtZXM6eS5kZWZhdWx0LHRhYkluZGV4OjAsaW5pdGlhbE1vbnRoOm5ldyBEYXRlLG51bWJlck9mTW9udGhzOjEsbGFiZWxzOntwcmV2aW91c01vbnRoOiJQcmV2aW91cyBNb250aCIsbmV4dE1vbnRoOiJOZXh0IE1vbnRoIn0sbG9jYWxlOiJlbiIsbG9jYWxlVXRpbHM6cCxzaG93T3V0c2lkZURheXM6ITEsZW5hYmxlT3V0c2lkZURheXNDbGljazohMCxmaXhlZFdlZWtzOiExLGNhbkNoYW5nZU1vbnRoOiEwLHJldmVyc2VNb250aHM6ITEscGFnZWROYXZpZ2F0aW9uOiExLHNob3dXZWVrTnVtYmVyczohMSxzaG93V2Vla0RheXM6ITAscmVuZGVyRGF5OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldERhdGUoKX0scmVuZGVyV2VlazpmdW5jdGlvbihlKXtyZXR1cm4gZX0sd2Vla2RheUVsZW1lbnQ6aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LG51bGwpLG5hdmJhckVsZW1lbnQ6aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocy5kZWZhdWx0LHtjbGFzc05hbWVzOnkuZGVmYXVsdH0pLGNhcHRpb25FbGVtZW50OmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUuZGVmYXVsdCx7Y2xhc3NOYW1lczp5LmRlZmF1bHR9KX0sYi5wcm9wVHlwZXM9e30sYi5EYXRlVXRpbHM9ZCxiLkxvY2FsZVV0aWxzPXAsYi5Nb2RpZmllcnNVdGlscz1oLHQuRGF0ZVV0aWxzPWQsdC5Mb2NhbGVVdGlscz1wLHQuTW9kaWZpZXJzVXRpbHM9aCx0LmRlZmF1bHQ9Yn0sIjRDekYiOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz03NCl9KHswOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInExdEkiKX0sMTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIc3FnIil9LDExOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHIsbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigwKSx1PShyPWkpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcyh0aGlzLHQpLGwodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3ZnIixvKHt2aWV3Qm94OiIwIDAgMTIgMTIifSx0aGlzLnByb3BzKSx1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMTEuNTMuNDdhLjc1Ljc1IDAgMCAwLTEuMDYxIDBsLTQuNDcgNC40N0wxLjUyOS40N0EuNzUuNzUgMCAxIDAgLjQ2OCAxLjUzMWw0LjQ3IDQuNDctNC40NyA0LjQ3YS43NS43NSAwIDEgMCAxLjA2MSAxLjA2MWw0LjQ3LTQuNDcgNC40NyA0LjQ3YS43NS43NSAwIDEgMCAxLjA2MS0xLjA2MWwtNC40Ny00LjQ3IDQuNDctNC40N2EuNzUuNzUgMCAwIDAgMC0xLjA2MXoifSkpfX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sMTM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicFl4VCIpfSwxNjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJyaXQ5Iil9LDE3OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlRPUHoiKX0sMTg6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiRTdVUCIpfSwyOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjVmN24iKX0sMjk6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigidzBpSiIpfSwzOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInZWK0ciKX0sMzM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVXl4UCIpfSwzNDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJXbVMxIil9LDQwOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkJzNDciKX0sNDU6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVFVneSIpfSw1OTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJYdGtvIil9LDY6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVFNZUSIpfSw2MDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIVUVMIil9LDc6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigid2QvUiIpfSw3NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPWsobigwKSksaT1rKG4oNykpLHU9ayhuKDYpKSxzPWsobig0MCkpLGw9bigxKSxjPW4oMTgpLGY9ayhuKDkpKSxkPWsobig0NSkpLHA9bigzKSxoPWsobigxNykpLHk9ayhuKDM0KSksbT1rKG4oMzMpKSx2PWsobigyOSkpLGc9ayhuKDEzKSksYj1rKG4oNjApKSx3PWsobig1OSkpLF89ayhuKDExKSksRT1rKG4oMTYpKSxPPW4oMik7ZnVuY3Rpb24gayhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIEM9KDAsbC5mb3JiaWRFeHRyYVByb3BzKShkLmRlZmF1bHQpLHg9e2RhdGU6bnVsbCxmb2N1c2VkOiExLGlkOiJkYXRlIixwbGFjZWhvbGRlcjoiRGF0ZSIsZGlzYWJsZWQ6ITEscmVxdWlyZWQ6ITEscmVhZE9ubHk6ITEsc2NyZWVuUmVhZGVySW5wdXRNZXNzYWdlOiIiLHNob3dDbGVhckRhdGU6ITEsc2hvd0RlZmF1bHRJbnB1dEljb246ITEsaW5wdXRJY29uUG9zaXRpb246Ty5JQ09OX0JFRk9SRV9QT1NJVElPTixjdXN0b21JbnB1dEljb246bnVsbCxjdXN0b21DbG9zZUljb246bnVsbCxvcmllbnRhdGlvbjpPLkhPUklaT05UQUxfT1JJRU5UQVRJT04sYW5jaG9yRGlyZWN0aW9uOk8uQU5DSE9SX0xFRlQsb3BlbkRpcmVjdGlvbjpPLk9QRU5fRE9XTixob3Jpem9udGFsTWFyZ2luOjAsd2l0aFBvcnRhbDohMSx3aXRoRnVsbFNjcmVlblBvcnRhbDohMSxpbml0aWFsVmlzaWJsZU1vbnRoOm51bGwsZmlyc3REYXlPZldlZWs6bnVsbCxudW1iZXJPZk1vbnRoczoyLGtlZXBPcGVuT25EYXRlU2VsZWN0OiExLHJlb3BlblBpY2tlck9uQ2xlYXJEYXRlOiExLHJlbmRlckNhbGVuZGFySW5mbzpudWxsLGhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsOiExLGRheVNpemU6Ty5EQVlfU0laRSxpc1JUTDohMSxuYXZQcmV2Om51bGwsbmF2TmV4dDpudWxsLG9uUHJldk1vbnRoQ2xpY2s6ZnVuY3Rpb24oKXt9LG9uTmV4dE1vbnRoQ2xpY2s6ZnVuY3Rpb24oKXt9LG9uQ2xvc2U6ZnVuY3Rpb24oKXt9LHJlbmRlck1vbnRoOm51bGwscmVuZGVyRGF5Om51bGwsZW5hYmxlT3V0c2lkZURheXM6ITEsaXNEYXlCbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGlzT3V0c2lkZVJhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiEoMCxFLmRlZmF1bHQpKGUsKDAsaS5kZWZhdWx0KSgpKX0saXNEYXlIaWdobGlnaHRlZDpmdW5jdGlvbigpe30sZGlzcGxheUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiBpLmRlZmF1bHQubG9jYWxlRGF0YSgpLmxvbmdEYXRlRm9ybWF0KCJMIil9LG1vbnRoRm9ybWF0OiJNTU1NIFlZWVkiLHdlZWtEYXlGb3JtYXQ6ImRkIixwaHJhc2VzOnAuU2luZ2xlRGF0ZVBpY2tlclBocmFzZXN9LFM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gbi5pc1RvdWNoRGV2aWNlPSExLG4uc3RhdGU9e2RheVBpY2tlckNvbnRhaW5lclN0eWxlczp7fSxpc0RheVBpY2tlckZvY3VzZWQ6ITEsaXNJbnB1dEZvY3VzZWQ6ITF9LG4ub25EYXlQaWNrZXJGb2N1cz1uLm9uRGF5UGlja2VyRm9jdXMuYmluZChuKSxuLm9uRGF5UGlja2VyQmx1cj1uLm9uRGF5UGlja2VyQmx1ci5iaW5kKG4pLG4ub25DaGFuZ2U9bi5vbkNoYW5nZS5iaW5kKG4pLG4ub25Gb2N1cz1uLm9uRm9jdXMuYmluZChuKSxuLm9uQ2xlYXJGb2N1cz1uLm9uQ2xlYXJGb2N1cy5iaW5kKG4pLG4uY2xlYXJEYXRlPW4uY2xlYXJEYXRlLmJpbmQobiksbi5yZXNwb25zaXZpemVQaWNrZXJQb3NpdGlvbj1uLnJlc3BvbnNpdml6ZVBpY2tlclBvc2l0aW9uLmJpbmQobiksbi5zZXREYXlQaWNrZXJDb250YWluZXJSZWY9bi5zZXREYXlQaWNrZXJDb250YWluZXJSZWYuYmluZChuKSxufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrKHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlc2l6ZUhhbmRsZT0oMCxjLmFkZEV2ZW50TGlzdGVuZXIpKHdpbmRvdywicmVzaXplIix0aGlzLnJlc3BvbnNpdml6ZVBpY2tlclBvc2l0aW9uLHtwYXNzaXZlOiEwfSksdGhpcy5yZXNwb25zaXZpemVQaWNrZXJQb3NpdGlvbigpLHRoaXMucHJvcHMuZm9jdXNlZCYmdGhpcy5zZXRTdGF0ZSh7aXNJbnB1dEZvY3VzZWQ6ITB9KSx0aGlzLmlzVG91Y2hEZXZpY2U9KDAsZi5kZWZhdWx0KSgpfX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXshZS5mb2N1c2VkJiZ0aGlzLnByb3BzLmZvY3VzZWQmJnRoaXMucmVzcG9uc2l2aXplUGlja2VyUG9zaXRpb24oKX19LHtrZXk6ImNvbXBvbmVudFdpbGxVbm1vdW50Iix2YWx1ZTpmdW5jdGlvbigpeygwLGMucmVtb3ZlRXZlbnRMaXN0ZW5lcikodGhpcy5yZXNpemVIYW5kbGUpfX0se2tleToib25DaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmlzT3V0c2lkZVJhbmdlLHI9dC5rZWVwT3Blbk9uRGF0ZVNlbGVjdCxvPXQub25EYXRlQ2hhbmdlLGE9dC5vbkZvY3VzQ2hhbmdlLGk9dC5vbkNsb3NlLHU9KDAseS5kZWZhdWx0KShlLHRoaXMuZ2V0RGlzcGxheUZvcm1hdCgpKTt1JiYhbih1KT8obyh1KSxyfHwoYSh7Zm9jdXNlZDohMX0pLGkoe2RhdGU6dX0pKSk6byhudWxsKX19LHtrZXk6Im9uRm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuZGlzYWJsZWQsbj1lLm9uRm9jdXNDaGFuZ2Uscj1lLndpdGhQb3J0YWwsbz1lLndpdGhGdWxsU2NyZWVuUG9ydGFsO3J8fG98fHRoaXMuaXNUb3VjaERldmljZT90aGlzLm9uRGF5UGlja2VyRm9jdXMoKTp0aGlzLm9uRGF5UGlja2VyQmx1cigpLHR8fG4oe2ZvY3VzZWQ6ITB9KX19LHtrZXk6Im9uQ2xlYXJGb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5zdGFydERhdGUsbj1lLmVuZERhdGUscj1lLmZvY3VzZWQsbz1lLm9uRm9jdXNDaGFuZ2UsYT1lLm9uQ2xvc2U7ciYmKHRoaXMuc2V0U3RhdGUoe2lzSW5wdXRGb2N1c2VkOiExLGlzRGF5UGlja2VyRm9jdXNlZDohMX0pLG8oe2ZvY3VzZWQ6ITF9KSxhKHtzdGFydERhdGU6dCxlbmREYXRlOm59KSl9fSx7a2V5OiJvbkRheVBpY2tlckZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2lzSW5wdXRGb2N1c2VkOiExLGlzRGF5UGlja2VyRm9jdXNlZDohMH0pfX0se2tleToib25EYXlQaWNrZXJCbHVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2lzSW5wdXRGb2N1c2VkOiEwLGlzRGF5UGlja2VyRm9jdXNlZDohMX0pfX0se2tleToiZ2V0RGF0ZVN0cmluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXREaXNwbGF5Rm9ybWF0KCk7cmV0dXJuIGUmJnQ/ZSYmZS5mb3JtYXQodCk6KDAsbS5kZWZhdWx0KShlKX19LHtrZXk6ImdldERheVBpY2tlckNvbnRhaW5lckNsYXNzZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUub3JpZW50YXRpb24sbj1lLndpdGhQb3J0YWwscj1lLndpdGhGdWxsU2NyZWVuUG9ydGFsLG89ZS5hbmNob3JEaXJlY3Rpb24sYT1lLm9wZW5EaXJlY3Rpb24saT1lLmlzUlRMO3JldHVybigwLHUuZGVmYXVsdCkoIlNpbmdsZURhdGVQaWNrZXJfX3BpY2tlciIseyJTaW5nbGVEYXRlUGlja2VyX19waWNrZXItLWRpcmVjdGlvbi1sZWZ0IjpvPT09Ty5BTkNIT1JfTEVGVCwiU2luZ2xlRGF0ZVBpY2tlcl9fcGlja2VyLS1kaXJlY3Rpb24tcmlnaHQiOm89PT1PLkFOQ0hPUl9SSUdIVCwiU2luZ2xlRGF0ZVBpY2tlcl9fcGlja2VyLS1vcGVuLWRvd24iOmE9PT1PLk9QRU5fRE9XTiwiU2luZ2xlRGF0ZVBpY2tlcl9fcGlja2VyLS1vcGVuLXVwIjphPT09Ty5PUEVOX1VQLCJTaW5nbGVEYXRlUGlja2VyX19waWNrZXItLWhvcml6b250YWwiOnQ9PT1PLkhPUklaT05UQUxfT1JJRU5UQVRJT04sIlNpbmdsZURhdGVQaWNrZXJfX3BpY2tlci0tdmVydGljYWwiOnQ9PT1PLlZFUlRJQ0FMX09SSUVOVEFUSU9OLCJTaW5nbGVEYXRlUGlja2VyX19waWNrZXItLXBvcnRhbCI6bnx8ciwiU2luZ2xlRGF0ZVBpY2tlcl9fcGlja2VyLS1mdWxsLXNjcmVlbi1wb3J0YWwiOnIsIlNpbmdsZURhdGVQaWNrZXJfX3BpY2tlci0tcnRsIjppfSl9fSx7a2V5OiJnZXREaXNwbGF5Rm9ybWF0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuZGlzcGxheUZvcm1hdDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplKCl9fSx7a2V5OiJzZXREYXlQaWNrZXJDb250YWluZXJSZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZGF5UGlja2VyQ29udGFpbmVyPWV9fSx7a2V5OiJjbGVhckRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUub25EYXRlQ2hhbmdlLG49ZS5yZW9wZW5QaWNrZXJPbkNsZWFyRGF0ZSxyPWUub25Gb2N1c0NoYW5nZTt0KG51bGwpLG4mJnIoe2ZvY3VzZWQ6ITB9KX19LHtrZXk6InJlc3BvbnNpdml6ZVBpY2tlclBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2RheVBpY2tlckNvbnRhaW5lclN0eWxlczp7fX0pO3ZhciBlPXRoaXMucHJvcHMsdD1lLmFuY2hvckRpcmVjdGlvbixuPWUuaG9yaXpvbnRhbE1hcmdpbixyPWUud2l0aFBvcnRhbCxvPWUud2l0aEZ1bGxTY3JlZW5Qb3J0YWwsYT1lLmZvY3VzZWQsaT10aGlzLnN0YXRlLmRheVBpY2tlckNvbnRhaW5lclN0eWxlcztpZihhKXt2YXIgdT10PT09Ty5BTkNIT1JfTEVGVDtpZighciYmIW8pe3ZhciBzPXRoaXMuZGF5UGlja2VyQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9aVt0XXx8MCxjPXU/c1tPLkFOQ0hPUl9SSUdIVF06c1tPLkFOQ0hPUl9MRUZUXTt0aGlzLnNldFN0YXRlKHtkYXlQaWNrZXJDb250YWluZXJTdHlsZXM6KDAsdi5kZWZhdWx0KSh0LGwsYyxuKX0pfX19fSx7a2V5OiJtYXliZVJlbmRlckRheVBpY2tlcldpdGhQb3J0YWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuZm9jdXNlZCxuPWUud2l0aFBvcnRhbCxyPWUud2l0aEZ1bGxTY3JlZW5Qb3J0YWw7cmV0dXJuIHQ/bnx8cj9hLmRlZmF1bHQuY3JlYXRlRWxlbWVudChzLmRlZmF1bHQse2lzT3BlbmVkOiEwfSx0aGlzLnJlbmRlckRheVBpY2tlcigpKTp0aGlzLnJlbmRlckRheVBpY2tlcigpOm51bGx9fSx7a2V5OiJyZW5kZXJEYXlQaWNrZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUub25EYXRlQ2hhbmdlLG49ZS5kYXRlLHI9ZS5vbkZvY3VzQ2hhbmdlLG89ZS5mb2N1c2VkLGk9ZS5lbmFibGVPdXRzaWRlRGF5cyx1PWUubnVtYmVyT2ZNb250aHMscz1lLm9yaWVudGF0aW9uLGw9ZS5tb250aEZvcm1hdCxjPWUubmF2UHJldixmPWUubmF2TmV4dCxkPWUub25QcmV2TW9udGhDbGljayxwPWUub25OZXh0TW9udGhDbGljayxoPWUud2l0aFBvcnRhbCx5PWUud2l0aEZ1bGxTY3JlZW5Qb3J0YWwsbT1lLmtlZXBPcGVuT25EYXRlU2VsZWN0LHY9ZS5pbml0aWFsVmlzaWJsZU1vbnRoLGc9ZS5yZW5kZXJNb250aCxiPWUucmVuZGVyRGF5LEU9ZS5yZW5kZXJDYWxlbmRhckluZm8sTz1lLmhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsLGs9ZS5maXJzdERheU9mV2VlayxDPWUuY3VzdG9tQ2xvc2VJY29uLHg9ZS5waHJhc2VzLFM9ZS5kYXlTaXplLEQ9ZS5pc1JUTCxUPWUuaXNPdXRzaWRlUmFuZ2UsTT1lLmlzRGF5QmxvY2tlZCxQPWUuaXNEYXlIaWdobGlnaHRlZCxOPWUud2Vla0RheUZvcm1hdCxqPXRoaXMuc3RhdGUsTD1qLmRheVBpY2tlckNvbnRhaW5lclN0eWxlcyxSPWouaXNEYXlQaWNrZXJGb2N1c2VkLEk9IXkmJmg/dGhpcy5vbkNsZWFyRm9jdXM6dm9pZCAwLEE9Q3x8YS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXy5kZWZhdWx0LG51bGwpO3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7cmVmOnRoaXMuc2V0RGF5UGlja2VyQ29udGFpbmVyUmVmLGNsYXNzTmFtZTp0aGlzLmdldERheVBpY2tlckNvbnRhaW5lckNsYXNzZXMoKSxzdHlsZTpMLG9uQ2xpY2s6SX0sYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQody5kZWZhdWx0LHtkYXRlOm4sb25EYXRlQ2hhbmdlOnQsb25Gb2N1c0NoYW5nZTpyLG9yaWVudGF0aW9uOnMsZW5hYmxlT3V0c2lkZURheXM6aSxudW1iZXJPZk1vbnRoczp1LG1vbnRoRm9ybWF0Omwsd2l0aFBvcnRhbDpofHx5LGZvY3VzZWQ6byxrZWVwT3Blbk9uRGF0ZVNlbGVjdDptLGhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsOk8saW5pdGlhbFZpc2libGVNb250aDp2LG5hdlByZXY6YyxuYXZOZXh0OmYsb25QcmV2TW9udGhDbGljazpkLG9uTmV4dE1vbnRoQ2xpY2s6cCxyZW5kZXJNb250aDpnLHJlbmRlckRheTpiLHJlbmRlckNhbGVuZGFySW5mbzpFLGlzRm9jdXNlZDpSLHBocmFzZXM6eCxkYXlTaXplOlMsaXNSVEw6RCxpc091dHNpZGVSYW5nZTpULGlzRGF5QmxvY2tlZDpNLGlzRGF5SGlnaGxpZ2h0ZWQ6UCxmaXJzdERheU9mV2VlazprLHdlZWtEYXlGb3JtYXQ6Tn0pLHkmJmEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHsiYXJpYS1sYWJlbCI6eC5jbG9zZURhdGVQaWNrZXIsY2xhc3NOYW1lOiJTaW5nbGVEYXRlUGlja2VyX19jbG9zZSIsdHlwZToiYnV0dG9uIixvbkNsaWNrOnRoaXMub25DbGVhckZvY3VzfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJTaW5nbGVEYXRlUGlja2VyX19jbG9zZS1pY29uIn0sQSkpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5pZCxuPWUucGxhY2Vob2xkZXIscj1lLmRpc2FibGVkLG89ZS5mb2N1c2VkLGk9ZS5yZXF1aXJlZCx1PWUucmVhZE9ubHkscz1lLm9wZW5EaXJlY3Rpb24sbD1lLnNob3dDbGVhckRhdGUsYz1lLnNob3dEZWZhdWx0SW5wdXRJY29uLGY9ZS5pbnB1dEljb25Qb3NpdGlvbixkPWUuY3VzdG9tSW5wdXRJY29uLHA9ZS5kYXRlLHk9ZS5waHJhc2VzLG09ZS53aXRoUG9ydGFsLHY9ZS53aXRoRnVsbFNjcmVlblBvcnRhbCx3PWUuc2NyZWVuUmVhZGVySW5wdXRNZXNzYWdlLF89ZS5pc1JUTCxFPXRoaXMuc3RhdGUuaXNJbnB1dEZvY3VzZWQsTz10aGlzLmdldERhdGVTdHJpbmcocCksaz0oMCxnLmRlZmF1bHQpKHApLEM9bXx8dj92b2lkIDA6dGhpcy5vbkNsZWFyRm9jdXM7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlNpbmdsZURhdGVQaWNrZXIifSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChoLmRlZmF1bHQse29uT3V0c2lkZUNsaWNrOkN9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGIuZGVmYXVsdCx7aWQ6dCxwbGFjZWhvbGRlcjpuLGZvY3VzZWQ6byxpc0ZvY3VzZWQ6RSxkaXNhYmxlZDpyLHJlcXVpcmVkOmkscmVhZE9ubHk6dSxvcGVuRGlyZWN0aW9uOnMsc2hvd0NhcmV0OiFtJiYhdixvbkNsZWFyRGF0ZTp0aGlzLmNsZWFyRGF0ZSxzaG93Q2xlYXJEYXRlOmwsc2hvd0RlZmF1bHRJbnB1dEljb246YyxpbnB1dEljb25Qb3NpdGlvbjpmLGN1c3RvbUlucHV0SWNvbjpkLGRpc3BsYXlWYWx1ZTpPLGlucHV0VmFsdWU6ayxvbkNoYW5nZTp0aGlzLm9uQ2hhbmdlLG9uRm9jdXM6dGhpcy5vbkZvY3VzLG9uS2V5RG93blNoaWZ0VGFiOnRoaXMub25DbGVhckZvY3VzLG9uS2V5RG93blRhYjp0aGlzLm9uQ2xlYXJGb2N1cyxvbktleURvd25BcnJvd0Rvd246dGhpcy5vbkRheVBpY2tlckZvY3VzLHNjcmVlblJlYWRlck1lc3NhZ2U6dyxwaHJhc2VzOnksaXNSVEw6X30pLHRoaXMubWF5YmVSZW5kZXJEYXlQaWNrZXJXaXRoUG9ydGFsKCkpKX19XSksdH0oYS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PVMsUy5wcm9wVHlwZXM9QyxTLmRlZmF1bHRQcm9wcz14fSw5OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkxUQUMiKX19KX0sIjRKbEQiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6cmV0dXJuIGU7Y2FzZSJib29sZWFuIjpyZXR1cm4gZT8idHJ1ZSI6ImZhbHNlIjtjYXNlIm51bWJlciI6cmV0dXJuIGlzRmluaXRlKGUpP2U6IiI7ZGVmYXVsdDpyZXR1cm4iIn19O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbix1KXtyZXR1cm4gdD10fHwiJiIsbj1ufHwiPSIsbnVsbD09PWUmJihlPXZvaWQgMCksIm9iamVjdCI9PXR5cGVvZiBlP2EoaShlKSwoZnVuY3Rpb24oaSl7dmFyIHU9ZW5jb2RlVVJJQ29tcG9uZW50KHIoaSkpK247cmV0dXJuIG8oZVtpXSk/YShlW2ldLChmdW5jdGlvbihlKXtyZXR1cm4gdStlbmNvZGVVUklDb21wb25lbnQocihlKSl9KSkuam9pbih0KTp1K2VuY29kZVVSSUNvbXBvbmVudChyKGVbaV0pKX0pKS5qb2luKHQpOnU/ZW5jb2RlVVJJQ29tcG9uZW50KHIodSkpK24rZW5jb2RlVVJJQ29tcG9uZW50KHIoZSkpOiIifTt2YXIgbz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfTtmdW5jdGlvbiBhKGUsdCl7aWYoZS5tYXApcmV0dXJuIGUubWFwKHQpO2Zvcih2YXIgbj1bXSxyPTA7cjxlLmxlbmd0aDtyKyspbi5wdXNoKHQoZVtyXSxyKSk7cmV0dXJuIG59dmFyIGk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0LnB1c2gobik7cmV0dXJuIHR9fSwiNFhyWSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgbz1uKCI0cElCIiksYT1uKCJrYzlZIiksaT1uKCJXYUdDIiksdT1uKCJKUGN2Iikscz1uKCJtRnlWIiksbD1uKCJxeXN2IiksYz11Lk1hcCxmPXtzdWJ0cmVlOiEwLGNoYXJhY3RlckRhdGE6ITAsY2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGFPbGRWYWx1ZTohMSxhdHRyaWJ1dGVzOiExfSxkPW8uaXNCcm93c2VyKCJJRSA8PSAxMSIpLHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PXRoaXM7cih0aGlzLCJvYnNlcnZlciIsdm9pZCAwKSxyKHRoaXMsImNvbnRhaW5lciIsdm9pZCAwKSxyKHRoaXMsIm11dGF0aW9ucyIsdm9pZCAwKSxyKHRoaXMsIm9uQ2hhckRhdGEiLHZvaWQgMCksdGhpcy5jb250YWluZXI9ZSx0aGlzLm11dGF0aW9ucz1jKCk7dmFyIG49aShlKTtuLk11dGF0aW9uT2JzZXJ2ZXImJiFkP3RoaXMub2JzZXJ2ZXI9bmV3IG4uTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHQucmVnaXN0ZXJNdXRhdGlvbnMoZSl9KSk6dGhpcy5vbkNoYXJEYXRhPWZ1bmN0aW9uKGUpe2UudGFyZ2V0IGluc3RhbmNlb2YgTm9kZXx8cyghMSksdC5yZWdpc3Rlck11dGF0aW9uKHt0eXBlOiJjaGFyYWN0ZXJEYXRhIix0YXJnZXQ6ZS50YXJnZXR9KX19dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQuc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLm9ic2VydmVyP3RoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRhaW5lcixmKTp0aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLHRoaXMub25DaGFyRGF0YSl9LHQuc3RvcEFuZEZsdXNoTXV0YXRpb25zPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vYnNlcnZlcjtlPyh0aGlzLnJlZ2lzdGVyTXV0YXRpb25zKGUudGFrZVJlY29yZHMoKSksZS5kaXNjb25uZWN0KCkpOnRoaXMuY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsdGhpcy5vbkNoYXJEYXRhKTt2YXIgdD10aGlzLm11dGF0aW9ucztyZXR1cm4gdGhpcy5tdXRhdGlvbnM9YygpLHR9LHQucmVnaXN0ZXJNdXRhdGlvbnM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5yZWdpc3Rlck11dGF0aW9uKGVbdF0pfSx0LmdldE11dGF0aW9uVGV4dENvbnRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50eXBlLG49ZS50YXJnZXQscj1lLnJlbW92ZWROb2RlcztpZigiY2hhcmFjdGVyRGF0YSI9PT10KXtpZigiIiE9PW4udGV4dENvbnRlbnQpcmV0dXJuIGQ/bi50ZXh0Q29udGVudC5yZXBsYWNlKCJcbiIsIiIpOm4udGV4dENvbnRlbnR9ZWxzZSBpZigiY2hpbGRMaXN0Ij09PXQpe2lmKHImJnIubGVuZ3RoKXJldHVybiIiO2lmKCIiIT09bi50ZXh0Q29udGVudClyZXR1cm4gbi50ZXh0Q29udGVudH1yZXR1cm4gbnVsbH0sdC5yZWdpc3Rlck11dGF0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TXV0YXRpb25UZXh0Q29udGVudChlKTtpZihudWxsIT10KXt2YXIgbj1sKGEoZS50YXJnZXQpKTt0aGlzLm11dGF0aW9ucz10aGlzLm11dGF0aW9ucy5zZXQobix0KX19LGV9KCk7ZS5leHBvcnRzPXB9LCI0Y1NkIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjgyYzIiKSxvPW4oInJReTMiKSxhPW4oInhvajIiKSxpPW4oImliN1EiKSx1PWEoKTtyKHUse2dldFBvbHlmaWxsOmEsaW1wbGVtZW50YXRpb246byxzaGltOml9KSxlLmV4cG9ydHM9dX0sIjRkT3ciOmZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZGVmaW5lTG9jYWxlKCJlbi1pZSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDtyZXR1cm4gZSsoMT09fn4oZSUxMDAvMTApPyJ0aCI6MT09PXQ/InN0IjoyPT09dD8ibmQiOjM9PT10PyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSwiNHA3SSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyVzZ6Iiksbz1uLm4ociksYT1uKCJRTGFQIiksaT1uLm4oYSksdT1uKCJxMXRJIikscz1uLm4odSksbD1uKCIxN3g5IiksYz1uLm4obCksZj1uKCJTc0tYIiksZD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTtmdW5jdGlvbiBwKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciB5PWZ1bmN0aW9uKGUpe3JldHVybiAwPT09cy5hLkNoaWxkcmVuLmNvdW50KGUpfSxtPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixyO3AodGhpcyx0KTtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KG8pLGk9MDtpPG87aSsrKWFbaV09YXJndW1lbnRzW2ldO3JldHVybiBuPXI9aCh0aGlzLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYSkpKSxyLnN0YXRlPXttYXRjaDpyLmNvbXB1dGVNYXRjaChyLnByb3BzLHIuY29udGV4dC5yb3V0ZXIpfSxoKHIsbil9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0LnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm57cm91dGVyOmQoe30sdGhpcy5jb250ZXh0LnJvdXRlcix7cm91dGU6e2xvY2F0aW9uOnRoaXMucHJvcHMubG9jYXRpb258fHRoaXMuY29udGV4dC5yb3V0ZXIucm91dGUubG9jYXRpb24sbWF0Y2g6dGhpcy5zdGF0ZS5tYXRjaH19KX19LHQucHJvdG90eXBlLmNvbXB1dGVNYXRjaD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuY29tcHV0ZWRNYXRjaCxyPWUubG9jYXRpb24sbz1lLnBhdGgsYT1lLnN0cmljdCx1PWUuZXhhY3Qscz1lLnNlbnNpdGl2ZTtpZihuKXJldHVybiBuO2koKSh0LCJZb3Ugc2hvdWxkIG5vdCB1c2UgPFJvdXRlPiBvciB3aXRoUm91dGVyKCkgb3V0c2lkZSBhIDxSb3V0ZXI+Iik7dmFyIGw9dC5yb3V0ZSxjPShyfHxsLmxvY2F0aW9uKS5wYXRobmFtZTtyZXR1cm4gT2JqZWN0KGYuYSkoYyx7cGF0aDpvLHN0cmljdDphLGV4YWN0OnUsc2Vuc2l0aXZlOnN9LGwubWF0Y2gpfSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24oKXtvKCkoISh0aGlzLnByb3BzLmNvbXBvbmVudCYmdGhpcy5wcm9wcy5yZW5kZXIpLCJZb3Ugc2hvdWxkIG5vdCB1c2UgPFJvdXRlIGNvbXBvbmVudD4gYW5kIDxSb3V0ZSByZW5kZXI+IGluIHRoZSBzYW1lIHJvdXRlOyA8Um91dGUgcmVuZGVyPiB3aWxsIGJlIGlnbm9yZWQiKSxvKCkoISh0aGlzLnByb3BzLmNvbXBvbmVudCYmdGhpcy5wcm9wcy5jaGlsZHJlbiYmIXkodGhpcy5wcm9wcy5jaGlsZHJlbikpLCJZb3Ugc2hvdWxkIG5vdCB1c2UgPFJvdXRlIGNvbXBvbmVudD4gYW5kIDxSb3V0ZSBjaGlsZHJlbj4gaW4gdGhlIHNhbWUgcm91dGU7IDxSb3V0ZSBjaGlsZHJlbj4gd2lsbCBiZSBpZ25vcmVkIiksbygpKCEodGhpcy5wcm9wcy5yZW5kZXImJnRoaXMucHJvcHMuY2hpbGRyZW4mJiF5KHRoaXMucHJvcHMuY2hpbGRyZW4pKSwiWW91IHNob3VsZCBub3QgdXNlIDxSb3V0ZSByZW5kZXI+IGFuZCA8Um91dGUgY2hpbGRyZW4+IGluIHRoZSBzYW1lIHJvdXRlOyA8Um91dGUgY2hpbGRyZW4+IHdpbGwgYmUgaWdub3JlZCIpfSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPWZ1bmN0aW9uKGUsdCl7bygpKCEoZS5sb2NhdGlvbiYmIXRoaXMucHJvcHMubG9jYXRpb24pLCc8Um91dGU+IGVsZW1lbnRzIHNob3VsZCBub3QgY2hhbmdlIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiBZb3UgaW5pdGlhbGx5IHVzZWQgbm8gImxvY2F0aW9uIiBwcm9wIGFuZCB0aGVuIHByb3ZpZGVkIG9uZSBvbiBhIHN1YnNlcXVlbnQgcmVuZGVyLicpLG8oKSghKCFlLmxvY2F0aW9uJiZ0aGlzLnByb3BzLmxvY2F0aW9uKSwnPFJvdXRlPiBlbGVtZW50cyBzaG91bGQgbm90IGNoYW5nZSBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gWW91IHByb3ZpZGVkIGEgImxvY2F0aW9uIiBwcm9wIGluaXRpYWxseSBidXQgb21pdHRlZCBpdCBvbiBhIHN1YnNlcXVlbnQgcmVuZGVyLicpLHRoaXMuc2V0U3RhdGUoe21hdGNoOnRoaXMuY29tcHV0ZU1hdGNoKGUsdC5yb3V0ZXIpfSl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUubWF0Y2gsdD10aGlzLnByb3BzLG49dC5jaGlsZHJlbixyPXQuY29tcG9uZW50LG89dC5yZW5kZXIsYT10aGlzLmNvbnRleHQucm91dGVyLGk9YS5oaXN0b3J5LHU9YS5yb3V0ZSxsPWEuc3RhdGljQ29udGV4dCxjPXttYXRjaDplLGxvY2F0aW9uOnRoaXMucHJvcHMubG9jYXRpb258fHUubG9jYXRpb24saGlzdG9yeTppLHN0YXRpY0NvbnRleHQ6bH07cmV0dXJuIHI/ZT9zLmEuY3JlYXRlRWxlbWVudChyLGMpOm51bGw6bz9lP28oYyk6bnVsbDoiZnVuY3Rpb24iPT10eXBlb2Ygbj9uKGMpOm4mJiF5KG4pP3MuYS5DaGlsZHJlbi5vbmx5KG4pOm51bGx9LHR9KHMuYS5Db21wb25lbnQpO20ucHJvcFR5cGVzPXtjb21wdXRlZE1hdGNoOmMuYS5vYmplY3QscGF0aDpjLmEuc3RyaW5nLGV4YWN0OmMuYS5ib29sLHN0cmljdDpjLmEuYm9vbCxzZW5zaXRpdmU6Yy5hLmJvb2wsY29tcG9uZW50OmMuYS5mdW5jLHJlbmRlcjpjLmEuZnVuYyxjaGlsZHJlbjpjLmEub25lT2ZUeXBlKFtjLmEuZnVuYyxjLmEubm9kZV0pLGxvY2F0aW9uOmMuYS5vYmplY3R9LG0uY29udGV4dFR5cGVzPXtyb3V0ZXI6Yy5hLnNoYXBlKHtoaXN0b3J5OmMuYS5vYmplY3QuaXNSZXF1aXJlZCxyb3V0ZTpjLmEub2JqZWN0LmlzUmVxdWlyZWQsc3RhdGljQ29udGV4dDpjLmEub2JqZWN0fSl9LG0uY2hpbGRDb250ZXh0VHlwZXM9e3JvdXRlcjpjLmEub2JqZWN0LmlzUmVxdWlyZWR9LHQuYT1tfSwiNHBJQiI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJUYXZ5Iiksbz1uKCJmK2V3IiksYT1uKCJvMkdBIiksaT1uKCJWTGtsIik7ZnVuY3Rpb24gdShlLHQsbixyKXtpZihlPT09bilyZXR1cm4hMDtpZighbi5zdGFydHNXaXRoKGUpKXJldHVybiExO3ZhciBhPW4uc2xpY2UoZS5sZW5ndGgpO3JldHVybiEhdCYmKGE9cj9yKGEpOmEsby5jb250YWlucyhhLHQpKX1mdW5jdGlvbiBzKGUpe3JldHVybiJXaW5kb3dzIj09PXIucGxhdGZvcm1OYW1lP2UucmVwbGFjZSgvXlxzKk5ULywiIik6ZX12YXIgbD17aXNCcm93c2VyOmZ1bmN0aW9uKGUpe3JldHVybiB1KHIuYnJvd3Nlck5hbWUsci5icm93c2VyRnVsbFZlcnNpb24sZSl9LGlzQnJvd3NlckFyY2hpdGVjdHVyZTpmdW5jdGlvbihlKXtyZXR1cm4gdShyLmJyb3dzZXJBcmNoaXRlY3R1cmUsbnVsbCxlKX0saXNEZXZpY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoci5kZXZpY2VOYW1lLG51bGwsZSl9LGlzRW5naW5lOmZ1bmN0aW9uKGUpe3JldHVybiB1KHIuZW5naW5lTmFtZSxyLmVuZ2luZVZlcnNpb24sZSl9LGlzUGxhdGZvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIHUoci5wbGF0Zm9ybU5hbWUsci5wbGF0Zm9ybUZ1bGxWZXJzaW9uLGUscyl9LGlzUGxhdGZvcm1BcmNoaXRlY3R1cmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoci5wbGF0Zm9ybUFyY2hpdGVjdHVyZSxudWxsLGUpfX07ZS5leHBvcnRzPWEobCxpKX0sIjUrRHQiOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImJhbm5lciI6eyJvcmNoYXJkR28iOnsiYW5jaG9yVGV4dCI6IlNjYXJpY2Egc3ViaXRvIE9yY2hhcmRHbyIsImRlc2NyaXB0aW9uIjoiSSB0dW9pIGFuYWx5dGljcyBzZW1wcmUgYSBwb3J0YXRhIGRpIG1hbm8hIn19LCJlcnJvcnMiOnsicGFnZU5vdEZvdW5kIjoiQ2kgZGlzcGlhY2UsIG1hIGxhIHBhZ2luYSByaWNoaWVzdGEgbm9uIGVzaXN0ZS4ifSwiZm9vdGVyIjp7ImhlbHAiOiJhaXV0byB3b3Jrc3RhdGlvbiIsInByaXZhY3lQb2xpY3kiOiJwcml2YWN5IHBvbGljeSIsInRlcm1zQW5kQ29uZGl0aW9ucyI6InRlcm1pbmkgZSBjb25kaXppb25pIiwidHJhZGVtYXJrIjoiVGhlIE9yY2hhcmQgw6ggdW4gbWFyY2hpbyByZWdpc3RyYXRvIGUgaWwgbG9nbyDDqCB1biBzZXJ2aWNlIG1hcmsgZGkgT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiJ9LCJnbG9iYWxTZWFyY2giOnsicGxhY2Vob2xkZXIiOiJDZXJjYSBwcm9nZXR0bywgcHJvZG90dG8sIGFydGlzdGEuLi4ifSwiaGVhZGVyIjp7ImFjY291bnRpbmciOiJDb250YWJpbGl0w6AiLCJhbmFseXRpY3MiOiJBbmFseXRpY3MiLCJjYXRhbG9nIjoiQ2F0YWxvZ28iLCJkcm9wZG93biI6eyJhZG1pbiI6IkFtbWluaXN0cmF0b3JlIiwiZGVmYXVsdHMiOiJQcmVkZWZpbml0aSIsImxvZ091dCI6IkVzY2kiLCJsb2dvcyI6IkxvZ2hpIiwibXlBY2NvdW50IjoiSWwgbWlvIGFjY291bnQiLCJwcm9maWxlIjoiUHJvZmlsbyJ9LCJoZWxwIjoiQWl1dG8iLCJtYXJrZXRpbmciOiJNYXJrZXRpbmcifSwic3ViaGVhZGVyIjp7ImFuYWx5dGljcyI6eyJhdWRpZW5jZSI6IlB1YmJsaWNvIiwiZW5nYWdlbWVudCI6IkVuZ2FnZW1lbnQiLCJmaWxtVHJhbnNwYXJlbmN5IjoiVHJhc3BhcmVuemEgZGVpIHJpY2F2aSIsImhlYXRtYXAiOiJIZWF0bWFwIiwib3ZlcnZpZXciOiJQYW5vcmFtaWNhIiwicGh5c2ljYWxSZXBvcnRpbmciOiJSZXNvY29udG8gZmlzaWNvIiwidG9wQ2hhcnRzIjoiQ2xhc3NpZmljaGUifX19Jyl9LCI1UlNpIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIklxOEUiKSxvPW4oInF5c3YiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4sYSxpKXt2YXIgdT1vKGUuZ2V0U2VsZWN0aW9uKCkpLHM9ci5kZWNvZGUodCksbD1zLmJsb2NrS2V5LGM9ZS5nZXRCbG9ja1RyZWUobCkuZ2V0SW4oW3MuZGVjb3JhdG9yS2V5LCJsZWF2ZXMiLHMubGVhZktleV0pLGY9ci5kZWNvZGUoYSksZD1mLmJsb2NrS2V5LHA9ZS5nZXRCbG9ja1RyZWUoZCkuZ2V0SW4oW2YuZGVjb3JhdG9yS2V5LCJsZWF2ZXMiLGYubGVhZktleV0pO2lmKCFjfHwhcClyZXR1cm4gdTt2YXIgaD1jLmdldCgic3RhcnQiKSx5PXAuZ2V0KCJzdGFydCIpLG09Yz9oK246bnVsbCx2PXA/eStpOm51bGw7aWYodS5nZXRBbmNob3JLZXkoKT09PWwmJnUuZ2V0QW5jaG9yT2Zmc2V0KCk9PT1tJiZ1LmdldEZvY3VzS2V5KCk9PT1kJiZ1LmdldEZvY3VzT2Zmc2V0KCk9PT12KXJldHVybiB1O3ZhciBnPSExO2lmKGw9PT1kKXt2YXIgYj1jLmdldCgiZW5kIiksdz1wLmdldCgiZW5kIik7Zz15PT09aCYmdz09PWI/aTxuOnk8aH1lbHNle2c9ZS5nZXRDdXJyZW50Q29udGVudCgpLmdldEJsb2NrTWFwKCkua2V5U2VxKCkuc2tpcFVudGlsKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PWx8fGU9PT1kfSkpLmZpcnN0KCk9PT1kfXJldHVybiB1Lm1lcmdlKHthbmNob3JLZXk6bCxhbmNob3JPZmZzZXQ6bSxmb2N1c0tleTpkLGZvY3VzT2Zmc2V0OnYsaXNCYWNrd2FyZDpnfSl9fSwiNWJOOSI6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPW4oIjE3eDkiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfSxpPW4oIjVmN24iKTt0LmRlZmF1bHQ9YS5kZWZhdWx0Lm9uZU9mKFtpLlNUQVJUX0RBVEUsaS5FTkRfREFURV0pfSwiNWY3biI6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e0RJU1BMQVlfRk9STUFUOiJMIixJU09fRk9STUFUOiJZWVlZLU1NLUREIixJU09fTU9OVEhfRk9STUFUOiJZWVlZLU1NIixTVEFSVF9EQVRFOiJzdGFydERhdGUiLEVORF9EQVRFOiJlbmREYXRlIixIT1JJWk9OVEFMX09SSUVOVEFUSU9OOiJob3Jpem9udGFsIixWRVJUSUNBTF9PUklFTlRBVElPTjoidmVydGljYWwiLFZFUlRJQ0FMX1NDUk9MTEFCTEU6InZlcnRpY2FsU2Nyb2xsYWJsZSIsSUNPTl9CRUZPUkVfUE9TSVRJT046ImJlZm9yZSIsSUNPTl9BRlRFUl9QT1NJVElPTjoiYWZ0ZXIiLEFOQ0hPUl9MRUZUOiJsZWZ0IixBTkNIT1JfUklHSFQ6InJpZ2h0IixPUEVOX0RPV046ImRvd24iLE9QRU5fVVA6InVwIixEQVlfU0laRTozOSxCTE9DS0VEX01PRElGSUVSOiJibG9ja2VkIixXRUVLREFZUzpbMCwxLDIsMyw0LDUsNl19fSwiNXdwTCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybihyPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09cihlKSYmbnVsbCE9PWV9fSwiNkRZeiI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPWMobigicTF0SSIpKSxpPWMobigiMTd4OSIpKSx1PWMobigiak1ZYSIpKSxzPWMobigicWlvZSIpKSxsPWMobigiS1ZtZyIpKTtmdW5jdGlvbiBjKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgZj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCk7dmFyIHI9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUsbikpO3JldHVybiByLmZpbHRlck9wdGlvbnM9ci5maWx0ZXJPcHRpb25zLmJpbmQociksci5tZW51UmVuZGVyZXI9ci5tZW51UmVuZGVyZXIuYmluZChyKSxyLm9uSW5wdXRLZXlEb3duPXIub25JbnB1dEtleURvd24uYmluZChyKSxyLm9uSW5wdXRDaGFuZ2U9ci5vbklucHV0Q2hhbmdlLmJpbmQociksci5vbk9wdGlvblNlbGVjdD1yLm9uT3B0aW9uU2VsZWN0LmJpbmQocikscn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG8odCxbe2tleToiY3JlYXRlTmV3T3B0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmlzVmFsaWROZXdPcHRpb24sbj1lLm5ld09wdGlvbkNyZWF0b3Iscj1lLm9uTmV3T3B0aW9uQ2xpY2ssbz1lLm9wdGlvbnMsYT12b2lkIDA9PT1vP1tdOm87ZS5zaG91bGRLZXlEb3duRXZlbnRDcmVhdGVOZXdPcHRpb247aWYodCh7bGFiZWw6dGhpcy5pbnB1dFZhbHVlfSkpe3ZhciBpPW4oe2xhYmVsOnRoaXMuaW5wdXRWYWx1ZSxsYWJlbEtleTp0aGlzLmxhYmVsS2V5LHZhbHVlS2V5OnRoaXMudmFsdWVLZXl9KTt0aGlzLmlzT3B0aW9uVW5pcXVlKHtvcHRpb246aX0pJiYocj9yKGkpOihhLnVuc2hpZnQoaSksdGhpcy5zZWxlY3Quc2VsZWN0VmFsdWUoaSkpKX19fSx7a2V5OiJmaWx0ZXJPcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmZpbHRlck9wdGlvbnMsbj1lLmlzVmFsaWROZXdPcHRpb24scj0oZS5vcHRpb25zLGUucHJvbXB0VGV4dENyZWF0b3IpLG89KGFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXSl8fFtdLGE9dC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKXx8W107aWYobih7bGFiZWw6dGhpcy5pbnB1dFZhbHVlfSkpe3ZhciBpPXRoaXMucHJvcHMubmV3T3B0aW9uQ3JlYXRvcix1PWkoe2xhYmVsOnRoaXMuaW5wdXRWYWx1ZSxsYWJlbEtleTp0aGlzLmxhYmVsS2V5LHZhbHVlS2V5OnRoaXMudmFsdWVLZXl9KSxzPXRoaXMuaXNPcHRpb25VbmlxdWUoe29wdGlvbjp1LG9wdGlvbnM6by5jb25jYXQoYSl9KTtpZihzKXt2YXIgbD1yKHRoaXMuaW5wdXRWYWx1ZSk7dGhpcy5fY3JlYXRlUGxhY2Vob2xkZXJPcHRpb249aSh7bGFiZWw6bCxsYWJlbEtleTp0aGlzLmxhYmVsS2V5LHZhbHVlS2V5OnRoaXMudmFsdWVLZXl9KSxhLnVuc2hpZnQodGhpcy5fY3JlYXRlUGxhY2Vob2xkZXJPcHRpb24pfX1yZXR1cm4gYX19LHtrZXk6ImlzT3B0aW9uVW5pcXVlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLm9wdGlvbixuPWUub3B0aW9ucyxyPXRoaXMucHJvcHMuaXNPcHRpb25VbmlxdWU7cmV0dXJuIG49bnx8dGhpcy5zZWxlY3QuZmlsdGVyT3B0aW9ucygpLHIoe2xhYmVsS2V5OnRoaXMubGFiZWxLZXksb3B0aW9uOnQsb3B0aW9uczpuLHZhbHVlS2V5OnRoaXMudmFsdWVLZXl9KX19LHtrZXk6Im1lbnVSZW5kZXJlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5tZW51UmVuZGVyZXI7cmV0dXJuIHQocih7fSxlLHtvblNlbGVjdDp0aGlzLm9uT3B0aW9uU2VsZWN0LHNlbGVjdFZhbHVlOnRoaXMub25PcHRpb25TZWxlY3R9KSl9fSx7a2V5OiJvbklucHV0Q2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2U7dCYmdChlKSx0aGlzLmlucHV0VmFsdWU9ZX19LHtrZXk6Im9uSW5wdXRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5zaG91bGRLZXlEb3duRXZlbnRDcmVhdGVOZXdPcHRpb24scj10Lm9uSW5wdXRLZXlEb3duLG89dGhpcy5zZWxlY3QuZ2V0Rm9jdXNlZE9wdGlvbigpO28mJm89PT10aGlzLl9jcmVhdGVQbGFjZWhvbGRlck9wdGlvbiYmbih7a2V5Q29kZTplLmtleUNvZGV9KT8odGhpcy5jcmVhdGVOZXdPcHRpb24oKSxlLnByZXZlbnREZWZhdWx0KCkpOnImJnIoZSl9fSx7a2V5OiJvbk9wdGlvblNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtlPT09dGhpcy5fY3JlYXRlUGxhY2Vob2xkZXJPcHRpb24/dGhpcy5jcmVhdGVOZXdPcHRpb24oKTp0aGlzLnNlbGVjdC5zZWxlY3RWYWx1ZShlKX19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0LmZvY3VzKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj0odC5uZXdPcHRpb25DcmVhdG9yLHQuc2hvdWxkS2V5RG93bkV2ZW50Q3JlYXRlTmV3T3B0aW9uLGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KHQsWyJuZXdPcHRpb25DcmVhdG9yIiwic2hvdWxkS2V5RG93bkV2ZW50Q3JlYXRlTmV3T3B0aW9uIl0pKSxvPXRoaXMucHJvcHMuY2hpbGRyZW47cmV0dXJuIG98fChvPWQpLG8ocih7fSxuLHthbGxvd0NyZWF0ZTohMCxmaWx0ZXJPcHRpb25zOnRoaXMuZmlsdGVyT3B0aW9ucyxtZW51UmVuZGVyZXI6dGhpcy5tZW51UmVuZGVyZXIsb25JbnB1dENoYW5nZTp0aGlzLm9uSW5wdXRDaGFuZ2Usb25JbnB1dEtleURvd246dGhpcy5vbklucHV0S2V5RG93bixyZWY6ZnVuY3Rpb24odCl7ZS5zZWxlY3Q9dCx0JiYoZS5sYWJlbEtleT10LnByb3BzLmxhYmVsS2V5LGUudmFsdWVLZXk9dC5wcm9wcy52YWx1ZUtleSl9fSkpfX1dKSx0fShhLmRlZmF1bHQuQ29tcG9uZW50KTtmdW5jdGlvbiBkKGUpe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1LmRlZmF1bHQsZSl9ZnVuY3Rpb24gcChlKXt2YXIgdD1lLm9wdGlvbixuPWUub3B0aW9ucyxyPWUubGFiZWxLZXksbz1lLnZhbHVlS2V5O3JldHVybiAwPT09bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlW3JdPT09dFtyXXx8ZVtvXT09PXRbb119KSkubGVuZ3RofWZ1bmN0aW9uIGgoZSl7cmV0dXJuISFlLmxhYmVsfWZ1bmN0aW9uIHkoZSl7dmFyIHQ9ZS5sYWJlbCxuPWUubGFiZWxLZXkscj17fTtyZXR1cm4gcltlLnZhbHVlS2V5XT10LHJbbl09dCxyLmNsYXNzTmFtZT0iU2VsZWN0LWNyZWF0ZS1vcHRpb24tcGxhY2Vob2xkZXIiLHJ9ZnVuY3Rpb24gbShlKXtyZXR1cm4nQ3JlYXRlIG9wdGlvbiAiJytlKyciJ31mdW5jdGlvbiB2KGUpe3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgOTpjYXNlIDEzOmNhc2UgMTg4OnJldHVybiEwfXJldHVybiExfWYuaXNPcHRpb25VbmlxdWU9cCxmLmlzVmFsaWROZXdPcHRpb249aCxmLm5ld09wdGlvbkNyZWF0b3I9eSxmLnByb21wdFRleHRDcmVhdG9yPW0sZi5zaG91bGRLZXlEb3duRXZlbnRDcmVhdGVOZXdPcHRpb249dixmLmRlZmF1bHRQcm9wcz17ZmlsdGVyT3B0aW9uczpzLmRlZmF1bHQsaXNPcHRpb25VbmlxdWU6cCxpc1ZhbGlkTmV3T3B0aW9uOmgsbWVudVJlbmRlcmVyOmwuZGVmYXVsdCxuZXdPcHRpb25DcmVhdG9yOnkscHJvbXB0VGV4dENyZWF0b3I6bSxzaG91bGRLZXlEb3duRXZlbnRDcmVhdGVOZXdPcHRpb246dn0sZi5wcm9wVHlwZXM9e2NoaWxkcmVuOmkuZGVmYXVsdC5mdW5jLGZpbHRlck9wdGlvbnM6aS5kZWZhdWx0LmFueSxpc09wdGlvblVuaXF1ZTppLmRlZmF1bHQuZnVuYyxpc1ZhbGlkTmV3T3B0aW9uOmkuZGVmYXVsdC5mdW5jLG1lbnVSZW5kZXJlcjppLmRlZmF1bHQuYW55LG5ld09wdGlvbkNyZWF0b3I6aS5kZWZhdWx0LmZ1bmMsb25JbnB1dENoYW5nZTppLmRlZmF1bHQuZnVuYyxvbklucHV0S2V5RG93bjppLmRlZmF1bHQuZnVuYyxvbk5ld09wdGlvbkNsaWNrOmkuZGVmYXVsdC5mdW5jLG9wdGlvbnM6aS5kZWZhdWx0LmFycmF5LHByb21wdFRleHRDcmVhdG9yOmkuZGVmYXVsdC5mdW5jLHNob3VsZEtleURvd25FdmVudENyZWF0ZU5ld09wdGlvbjppLmRlZmF1bHQuZnVuY30sdC5kZWZhdWx0PWZ9LCI2YXloIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPVR5cGVFcnJvcixvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7aWYobyl0cnl7byh7fSwiIil9Y2F0Y2goZSl7bz1udWxsfXZhciBhPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IHJ9LGk9bz9mdW5jdGlvbigpe3RyeXtyZXR1cm4gYXJndW1lbnRzLmNhbGxlZSxhfWNhdGNoKGUpe3RyeXtyZXR1cm4gbyhhcmd1bWVudHMsImNhbGxlZSIpLmdldH1jYXRjaChlKXtyZXR1cm4gYX19fSgpOmEsdT1uKCJSS3hHIikoKSxzPU9iamVjdC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffSxsPXZvaWQgMCxjPSJ1bmRlZmluZWQiPT10eXBlb2YgVWludDhBcnJheT92b2lkIDA6cyhVaW50OEFycmF5KSxmPXsiJUFycmF5JSI6QXJyYXksIiVBcnJheUJ1ZmZlciUiOiJ1bmRlZmluZWQiPT10eXBlb2YgQXJyYXlCdWZmZXI/dm9pZCAwOkFycmF5QnVmZmVyLCIlQXJyYXlCdWZmZXJQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09dHlwZW9mIEFycmF5QnVmZmVyP3ZvaWQgMDpBcnJheUJ1ZmZlci5wcm90b3R5cGUsIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSI6dT9zKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSk6dm9pZCAwLCIlQXJyYXlQcm90b3R5cGUlIjpBcnJheS5wcm90b3R5cGUsIiVBcnJheVByb3RvX2VudHJpZXMlIjpBcnJheS5wcm90b3R5cGUuZW50cmllcywiJUFycmF5UHJvdG9fZm9yRWFjaCUiOkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLCIlQXJyYXlQcm90b19rZXlzJSI6QXJyYXkucHJvdG90eXBlLmtleXMsIiVBcnJheVByb3RvX3ZhbHVlcyUiOkFycmF5LnByb3RvdHlwZS52YWx1ZXMsIiVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlIjp2b2lkIDAsIiVBc3luY0Z1bmN0aW9uJSI6dm9pZCAwLCIlQXN5bmNGdW5jdGlvblByb3RvdHlwZSUiOnZvaWQgMCwiJUFzeW5jR2VuZXJhdG9yJSI6dm9pZCAwLCIlQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUiOnZvaWQgMCwiJUFzeW5jR2VuZXJhdG9yUHJvdG90eXBlJSI6dm9pZCAwLCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiOmwmJnUmJlN5bWJvbC5hc3luY0l0ZXJhdG9yP2xbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk6dm9pZCAwLCIlQXRvbWljcyUiOiJ1bmRlZmluZWQiPT10eXBlb2YgQXRvbWljcz92b2lkIDA6QXRvbWljcywiJUJvb2xlYW4lIjpCb29sZWFuLCIlQm9vbGVhblByb3RvdHlwZSUiOkJvb2xlYW4ucHJvdG90eXBlLCIlRGF0YVZpZXclIjoidW5kZWZpbmVkIj09dHlwZW9mIERhdGFWaWV3P3ZvaWQgMDpEYXRhVmlldywiJURhdGFWaWV3UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBEYXRhVmlldz92b2lkIDA6RGF0YVZpZXcucHJvdG90eXBlLCIlRGF0ZSUiOkRhdGUsIiVEYXRlUHJvdG90eXBlJSI6RGF0ZS5wcm90b3R5cGUsIiVkZWNvZGVVUkklIjpkZWNvZGVVUkksIiVkZWNvZGVVUklDb21wb25lbnQlIjpkZWNvZGVVUklDb21wb25lbnQsIiVlbmNvZGVVUkklIjplbmNvZGVVUkksIiVlbmNvZGVVUklDb21wb25lbnQlIjplbmNvZGVVUklDb21wb25lbnQsIiVFcnJvciUiOkVycm9yLCIlRXJyb3JQcm90b3R5cGUlIjpFcnJvci5wcm90b3R5cGUsIiVldmFsJSI6ZXZhbCwiJUV2YWxFcnJvciUiOkV2YWxFcnJvciwiJUV2YWxFcnJvclByb3RvdHlwZSUiOkV2YWxFcnJvci5wcm90b3R5cGUsIiVGbG9hdDMyQXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIEZsb2F0MzJBcnJheT92b2lkIDA6RmxvYXQzMkFycmF5LCIlRmxvYXQzMkFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBGbG9hdDMyQXJyYXk/dm9pZCAwOkZsb2F0MzJBcnJheS5wcm90b3R5cGUsIiVGbG9hdDY0QXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIEZsb2F0NjRBcnJheT92b2lkIDA6RmxvYXQ2NEFycmF5LCIlRmxvYXQ2NEFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBGbG9hdDY0QXJyYXk/dm9pZCAwOkZsb2F0NjRBcnJheS5wcm90b3R5cGUsIiVGdW5jdGlvbiUiOkZ1bmN0aW9uLCIlRnVuY3Rpb25Qcm90b3R5cGUlIjpGdW5jdGlvbi5wcm90b3R5cGUsIiVHZW5lcmF0b3IlIjp2b2lkIDAsIiVHZW5lcmF0b3JGdW5jdGlvbiUiOnZvaWQgMCwiJUdlbmVyYXRvclByb3RvdHlwZSUiOnZvaWQgMCwiJUludDhBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgSW50OEFycmF5P3ZvaWQgMDpJbnQ4QXJyYXksIiVJbnQ4QXJyYXlQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09dHlwZW9mIEludDhBcnJheT92b2lkIDA6SW50OEFycmF5LnByb3RvdHlwZSwiJUludDE2QXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIEludDE2QXJyYXk/dm9pZCAwOkludDE2QXJyYXksIiVJbnQxNkFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBJbnQxNkFycmF5P3ZvaWQgMDpJbnQ4QXJyYXkucHJvdG90eXBlLCIlSW50MzJBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgSW50MzJBcnJheT92b2lkIDA6SW50MzJBcnJheSwiJUludDMyQXJyYXlQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09dHlwZW9mIEludDMyQXJyYXk/dm9pZCAwOkludDMyQXJyYXkucHJvdG90eXBlLCIlaXNGaW5pdGUlIjppc0Zpbml0ZSwiJWlzTmFOJSI6aXNOYU4sIiVJdGVyYXRvclByb3RvdHlwZSUiOnU/cyhzKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkpOnZvaWQgMCwiJUpTT04lIjoib2JqZWN0Ij09dHlwZW9mIEpTT04/SlNPTjp2b2lkIDAsIiVKU09OUGFyc2UlIjoib2JqZWN0Ij09dHlwZW9mIEpTT04/SlNPTi5wYXJzZTp2b2lkIDAsIiVNYXAlIjoidW5kZWZpbmVkIj09dHlwZW9mIE1hcD92b2lkIDA6TWFwLCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlIjoidW5kZWZpbmVkIiE9dHlwZW9mIE1hcCYmdT9zKChuZXcgTWFwKVtTeW1ib2wuaXRlcmF0b3JdKCkpOnZvaWQgMCwiJU1hcFByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgTWFwP3ZvaWQgMDpNYXAucHJvdG90eXBlLCIlTWF0aCUiOk1hdGgsIiVOdW1iZXIlIjpOdW1iZXIsIiVOdW1iZXJQcm90b3R5cGUlIjpOdW1iZXIucHJvdG90eXBlLCIlT2JqZWN0JSI6T2JqZWN0LCIlT2JqZWN0UHJvdG90eXBlJSI6T2JqZWN0LnByb3RvdHlwZSwiJU9ialByb3RvX3RvU3RyaW5nJSI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywiJU9ialByb3RvX3ZhbHVlT2YlIjpPYmplY3QucHJvdG90eXBlLnZhbHVlT2YsIiVwYXJzZUZsb2F0JSI6cGFyc2VGbG9hdCwiJXBhcnNlSW50JSI6cGFyc2VJbnQsIiVQcm9taXNlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9taXNlP3ZvaWQgMDpQcm9taXNlLCIlUHJvbWlzZVByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgUHJvbWlzZT92b2lkIDA6UHJvbWlzZS5wcm90b3R5cGUsIiVQcm9taXNlUHJvdG9fdGhlbiUiOiJ1bmRlZmluZWQiPT10eXBlb2YgUHJvbWlzZT92b2lkIDA6UHJvbWlzZS5wcm90b3R5cGUudGhlbiwiJVByb21pc2VfYWxsJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9taXNlP3ZvaWQgMDpQcm9taXNlLmFsbCwiJVByb21pc2VfcmVqZWN0JSI6InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9taXNlP3ZvaWQgMDpQcm9taXNlLnJlamVjdCwiJVByb21pc2VfcmVzb2x2ZSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgUHJvbWlzZT92b2lkIDA6UHJvbWlzZS5yZXNvbHZlLCIlUHJveHklIjoidW5kZWZpbmVkIj09dHlwZW9mIFByb3h5P3ZvaWQgMDpQcm94eSwiJVJhbmdlRXJyb3IlIjpSYW5nZUVycm9yLCIlUmFuZ2VFcnJvclByb3RvdHlwZSUiOlJhbmdlRXJyb3IucHJvdG90eXBlLCIlUmVmZXJlbmNlRXJyb3IlIjpSZWZlcmVuY2VFcnJvciwiJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSI6UmVmZXJlbmNlRXJyb3IucHJvdG90eXBlLCIlUmVmbGVjdCUiOiJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD92b2lkIDA6UmVmbGVjdCwiJVJlZ0V4cCUiOlJlZ0V4cCwiJVJlZ0V4cFByb3RvdHlwZSUiOlJlZ0V4cC5wcm90b3R5cGUsIiVTZXQlIjoidW5kZWZpbmVkIj09dHlwZW9mIFNldD92b2lkIDA6U2V0LCIlU2V0SXRlcmF0b3JQcm90b3R5cGUlIjoidW5kZWZpbmVkIiE9dHlwZW9mIFNldCYmdT9zKChuZXcgU2V0KVtTeW1ib2wuaXRlcmF0b3JdKCkpOnZvaWQgMCwiJVNldFByb3RvdHlwZSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgU2V0P3ZvaWQgMDpTZXQucHJvdG90eXBlLCIlU2hhcmVkQXJyYXlCdWZmZXIlIjoidW5kZWZpbmVkIj09dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyP3ZvaWQgMDpTaGFyZWRBcnJheUJ1ZmZlciwiJVNoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlcj92b2lkIDA6U2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLCIlU3RyaW5nJSI6U3RyaW5nLCIlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIjp1P3MoIiJbU3ltYm9sLml0ZXJhdG9yXSgpKTp2b2lkIDAsIiVTdHJpbmdQcm90b3R5cGUlIjpTdHJpbmcucHJvdG90eXBlLCIlU3ltYm9sJSI6dT9TeW1ib2w6dm9pZCAwLCIlU3ltYm9sUHJvdG90eXBlJSI6dT9TeW1ib2wucHJvdG90eXBlOnZvaWQgMCwiJVN5bnRheEVycm9yJSI6U3ludGF4RXJyb3IsIiVTeW50YXhFcnJvclByb3RvdHlwZSUiOlN5bnRheEVycm9yLnByb3RvdHlwZSwiJVRocm93VHlwZUVycm9yJSI6aSwiJVR5cGVkQXJyYXklIjpjLCIlVHlwZWRBcnJheVByb3RvdHlwZSUiOmM/Yy5wcm90b3R5cGU6dm9pZCAwLCIlVHlwZUVycm9yJSI6ciwiJVR5cGVFcnJvclByb3RvdHlwZSUiOnIucHJvdG90eXBlLCIlVWludDhBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgVWludDhBcnJheT92b2lkIDA6VWludDhBcnJheSwiJVVpbnQ4QXJyYXlQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQ4QXJyYXk/dm9pZCAwOlVpbnQ4QXJyYXkucHJvdG90eXBlLCIlVWludDhDbGFtcGVkQXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5P3ZvaWQgMDpVaW50OENsYW1wZWRBcnJheSwiJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50OENsYW1wZWRBcnJheT92b2lkIDA6VWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlLCIlVWludDE2QXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQxNkFycmF5P3ZvaWQgMDpVaW50MTZBcnJheSwiJVVpbnQxNkFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50MTZBcnJheT92b2lkIDA6VWludDE2QXJyYXkucHJvdG90eXBlLCIlVWludDMyQXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIFVpbnQzMkFycmF5P3ZvaWQgMDpVaW50MzJBcnJheSwiJVVpbnQzMkFycmF5UHJvdG90eXBlJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50MzJBcnJheT92b2lkIDA6VWludDMyQXJyYXkucHJvdG90eXBlLCIlVVJJRXJyb3IlIjpVUklFcnJvciwiJVVSSUVycm9yUHJvdG90eXBlJSI6VVJJRXJyb3IucHJvdG90eXBlLCIlV2Vha01hcCUiOiJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha01hcD92b2lkIDA6V2Vha01hcCwiJVdlYWtNYXBQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09dHlwZW9mIFdlYWtNYXA/dm9pZCAwOldlYWtNYXAucHJvdG90eXBlLCIlV2Vha1NldCUiOiJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha1NldD92b2lkIDA6V2Vha1NldCwiJVdlYWtTZXRQcm90b3R5cGUlIjoidW5kZWZpbmVkIj09dHlwZW9mIFdlYWtTZXQ/dm9pZCAwOldlYWtTZXQucHJvdG90eXBlfSxkPW4oIkQzekEiKS5jYWxsKEZ1bmN0aW9uLmNhbGwsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSxwPS9bXiUuW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwlJCkpL2csaD0vXFwoXFwpPy9nLHk9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIGQoZSxwLChmdW5jdGlvbihlLG4scixvKXt0W3QubGVuZ3RoXT1yP2QobyxoLCIkMSIpOm58fGV9KSksdH0sbT1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbiBmKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoImludHJpbnNpYyAiK2UrIiBkb2VzIG5vdCBleGlzdCEiKTtpZih2b2lkIDA9PT1mW2VdJiYhdCl0aHJvdyBuZXcgcigiaW50cmluc2ljICIrZSsiIGV4aXN0cywgYnV0IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBmaWxlIGFuIGlzc3VlISIpO3JldHVybiBmW2VdfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmImJvb2xlYW4iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCciYWxsb3dNaXNzaW5nIiBhcmd1bWVudCBtdXN0IGJlIGEgYm9vbGVhbicpO2Zvcih2YXIgbj15KGUpLGE9bSgiJSIrKG4ubGVuZ3RoPjA/blswXToiIikrIiUiLHQpLGk9MTtpPG4ubGVuZ3RoO2krPTEpaWYobnVsbCE9YSlpZihvJiZpKzE+PW4ubGVuZ3RoKXt2YXIgdT1vKGEsbltpXSk7aWYoISh0fHxuW2ldaW4gYSkpdGhyb3cgbmV3IHIoImJhc2UgaW50cmluc2ljIGZvciAiK2UrIiBleGlzdHMsIGJ1dCB0aGUgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZS4iKTthPXU/dS5nZXR8fHUudmFsdWU6YVtuW2ldXX1lbHNlIGE9YVtuW2ldXTtyZXR1cm4gYX19LCI2ZmRIIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIik6dm9pZCAwO3QuZGVmYXVsdD1yfSwiNnR5eCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIHI9bigiTWd6VyIpO2Z1bmN0aW9uIG8oKXtyZXR1cm4obz1yfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pOyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSksci5mb3JFYWNoKChmdW5jdGlvbih0KXt1KGUsdCxuW3RdKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBpKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB1KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBzKGUsdCl7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLl9fcHJvdG9fXz10fXZhciBsPW4oInJBVjkiKSxjPW4oIjBUUkQiKSxmPW4oImpsMVciKSxkPW4oIklkdHEiKSxwPW4oIklTUjAiKSxoPW4oIjFKYngiKSx5PW4oIkhkbHUiKSxtPW4oIm03NVMiKSx2PW4oIjNzT0oiKSxnPW4oInExdEkiKSxiPW4oImk4aTQiKSx3PW4oInNPc2wiKSxfPW4oImJVM3YiKSxFPW4oIjRwSUIiKSxPPW4oInBYbXAiKSxrPW4oInJKWTEiKSxDPW4oIkF5QjUiKSx4PW4oIkdYYmsiKSxTPW4oImN3RlkiKSxEPW4oIm1GeVYiKSxUPW4oIk9MekEiKSxNPW4oInF5c3YiKSxQPUUuaXNCcm93c2VyKCJJRSIpLE49IVAsaj17ZWRpdDpoLGNvbXBvc2l0ZTpmLGRyYWc6cCxjdXQ6bnVsbCxyZW5kZXI6bnVsbH0sTD0hMSxSPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cyh0LGUpO3ZhciBuPXQucHJvdG90eXBlO3JldHVybiBuLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBudWxsfSxuLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlKCl9LG4uY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlKCl9LG4uX3VwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuZWRpdG9yO2UuX2xhdGVzdEVkaXRvclN0YXRlPXRoaXMucHJvcHMuZWRpdG9yU3RhdGUsZS5fYmxvY2tTZWxlY3RFdmVudHM9ITB9LHR9KGcuQ29tcG9uZW50KSxJPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7dmFyIG47cmV0dXJuIHUoaShuPWUuY2FsbCh0aGlzLHQpfHx0aGlzKSwiX2Jsb2NrU2VsZWN0RXZlbnRzIix2b2lkIDApLHUoaShuKSwiX2NsaXBib2FyZCIsdm9pZCAwKSx1KGkobiksIl9oYW5kbGVyIix2b2lkIDApLHUoaShuKSwiX2RyYWdDb3VudCIsdm9pZCAwKSx1KGkobiksIl9pbnRlcm5hbERyYWciLHZvaWQgMCksdShpKG4pLCJfZWRpdG9yS2V5Iix2b2lkIDApLHUoaShuKSwiX3BsYWNlaG9sZGVyQWNjZXNzaWJpbGl0eUlEIix2b2lkIDApLHUoaShuKSwiX2xhdGVzdEVkaXRvclN0YXRlIix2b2lkIDApLHUoaShuKSwiX2xhdGVzdENvbW1pdHRlZEVkaXRvclN0YXRlIix2b2lkIDApLHUoaShuKSwiX3BlbmRpbmdTdGF0ZUZyb21CZWZvcmVJbnB1dCIsdm9pZCAwKSx1KGkobiksIl9vbkJlZm9yZUlucHV0Iix2b2lkIDApLHUoaShuKSwiX29uQmx1ciIsdm9pZCAwKSx1KGkobiksIl9vbkNoYXJhY3RlckRhdGEiLHZvaWQgMCksdShpKG4pLCJfb25Db21wb3NpdGlvbkVuZCIsdm9pZCAwKSx1KGkobiksIl9vbkNvbXBvc2l0aW9uU3RhcnQiLHZvaWQgMCksdShpKG4pLCJfb25Db3B5Iix2b2lkIDApLHUoaShuKSwiX29uQ3V0Iix2b2lkIDApLHUoaShuKSwiX29uRHJhZ0VuZCIsdm9pZCAwKSx1KGkobiksIl9vbkRyYWdPdmVyIix2b2lkIDApLHUoaShuKSwiX29uRHJhZ1N0YXJ0Iix2b2lkIDApLHUoaShuKSwiX29uRHJvcCIsdm9pZCAwKSx1KGkobiksIl9vbklucHV0Iix2b2lkIDApLHUoaShuKSwiX29uRm9jdXMiLHZvaWQgMCksdShpKG4pLCJfb25LZXlEb3duIix2b2lkIDApLHUoaShuKSwiX29uS2V5UHJlc3MiLHZvaWQgMCksdShpKG4pLCJfb25LZXlVcCIsdm9pZCAwKSx1KGkobiksIl9vbk1vdXNlRG93biIsdm9pZCAwKSx1KGkobiksIl9vbk1vdXNlVXAiLHZvaWQgMCksdShpKG4pLCJfb25QYXN0ZSIsdm9pZCAwKSx1KGkobiksIl9vblNlbGVjdCIsdm9pZCAwKSx1KGkobiksImVkaXRvciIsdm9pZCAwKSx1KGkobiksImVkaXRvckNvbnRhaW5lciIsdm9pZCAwKSx1KGkobiksImZvY3VzIix2b2lkIDApLHUoaShuKSwiYmx1ciIsdm9pZCAwKSx1KGkobiksInNldE1vZGUiLHZvaWQgMCksdShpKG4pLCJleGl0Q3VycmVudE1vZGUiLHZvaWQgMCksdShpKG4pLCJyZXN0b3JlRWRpdG9yRE9NIix2b2lkIDApLHUoaShuKSwic2V0Q2xpcGJvYXJkIix2b2lkIDApLHUoaShuKSwiZ2V0Q2xpcGJvYXJkIix2b2lkIDApLHUoaShuKSwiZ2V0RWRpdG9yS2V5Iix2b2lkIDApLHUoaShuKSwidXBkYXRlIix2b2lkIDApLHUoaShuKSwib25EcmFnRW50ZXIiLHZvaWQgMCksdShpKG4pLCJvbkRyYWdMZWF2ZSIsdm9pZCAwKSx1KGkobiksImZvY3VzIiwoZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcy5lZGl0b3JTdGF0ZSxyPXQuZ2V0U2VsZWN0aW9uKCkuZ2V0SGFzRm9jdXMoKSxvPW4uZWRpdG9yO2lmKG8pe3ZhciBhPV8uZ2V0U2Nyb2xsUGFyZW50KG8pLGk9ZXx8eChhKSx1PWkueCxzPWkueTtUKG8pfHxEKCExKSxvLmZvY3VzKCksYT09PXdpbmRvdz93aW5kb3cuc2Nyb2xsVG8odSxzKTp3LnNldFRvcChhLHMpLHJ8fG4udXBkYXRlKHYuZm9yY2VTZWxlY3Rpb24odCx0LmdldFNlbGVjdGlvbigpKSl9fSkpLHUoaShuKSwiYmx1ciIsKGZ1bmN0aW9uKCl7dmFyIGU9bi5lZGl0b3I7ZSYmKFQoZSl8fEQoITEpLGUuYmx1cigpKX0pKSx1KGkobiksInNldE1vZGUiLChmdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLHI9dC5vblBhc3RlLG89dC5vbkN1dCxpPXQub25Db3B5LHU9YSh7fSxqLmVkaXQpO3ImJih1Lm9uUGFzdGU9ciksbyYmKHUub25DdXQ9byksaSYmKHUub25Db3B5PWkpO3ZhciBzPWEoe30saix7ZWRpdDp1fSk7bi5faGFuZGxlcj1zW2VdfSkpLHUoaShuKSwiZXhpdEN1cnJlbnRNb2RlIiwoZnVuY3Rpb24oKXtuLnNldE1vZGUoImVkaXQiKX0pKSx1KGkobiksInJlc3RvcmVFZGl0b3JET00iLChmdW5jdGlvbihlKXtuLnNldFN0YXRlKHtjb250ZW50c0tleTpuLnN0YXRlLmNvbnRlbnRzS2V5KzF9LChmdW5jdGlvbigpe24uZm9jdXMoZSl9KSl9KSksdShpKG4pLCJzZXRDbGlwYm9hcmQiLChmdW5jdGlvbihlKXtuLl9jbGlwYm9hcmQ9ZX0pKSx1KGkobiksImdldENsaXBib2FyZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2NsaXBib2FyZH0pKSx1KGkobiksInVwZGF0ZSIsKGZ1bmN0aW9uKGUpe24uX2xhdGVzdEVkaXRvclN0YXRlPWUsbi5wcm9wcy5vbkNoYW5nZShlKX0pKSx1KGkobiksIm9uRHJhZ0VudGVyIiwoZnVuY3Rpb24oKXtuLl9kcmFnQ291bnQrK30pKSx1KGkobiksIm9uRHJhZ0xlYXZlIiwoZnVuY3Rpb24oKXtuLl9kcmFnQ291bnQtLSwwPT09bi5fZHJhZ0NvdW50JiZuLmV4aXRDdXJyZW50TW9kZSgpfSkpLG4uX2Jsb2NrU2VsZWN0RXZlbnRzPSExLG4uX2NsaXBib2FyZD1udWxsLG4uX2hhbmRsZXI9bnVsbCxuLl9kcmFnQ291bnQ9MCxuLl9lZGl0b3JLZXk9dC5lZGl0b3JLZXl8fGsoKSxuLl9wbGFjZWhvbGRlckFjY2Vzc2liaWxpdHlJRD0icGxhY2Vob2xkZXItIituLl9lZGl0b3JLZXksbi5fbGF0ZXN0RWRpdG9yU3RhdGU9dC5lZGl0b3JTdGF0ZSxuLl9sYXRlc3RDb21taXR0ZWRFZGl0b3JTdGF0ZT10LmVkaXRvclN0YXRlLG4uX29uQmVmb3JlSW5wdXQ9bi5fYnVpbGRIYW5kbGVyKCJvbkJlZm9yZUlucHV0Iiksbi5fb25CbHVyPW4uX2J1aWxkSGFuZGxlcigib25CbHVyIiksbi5fb25DaGFyYWN0ZXJEYXRhPW4uX2J1aWxkSGFuZGxlcigib25DaGFyYWN0ZXJEYXRhIiksbi5fb25Db21wb3NpdGlvbkVuZD1uLl9idWlsZEhhbmRsZXIoIm9uQ29tcG9zaXRpb25FbmQiKSxuLl9vbkNvbXBvc2l0aW9uU3RhcnQ9bi5fYnVpbGRIYW5kbGVyKCJvbkNvbXBvc2l0aW9uU3RhcnQiKSxuLl9vbkNvcHk9bi5fYnVpbGRIYW5kbGVyKCJvbkNvcHkiKSxuLl9vbkN1dD1uLl9idWlsZEhhbmRsZXIoIm9uQ3V0Iiksbi5fb25EcmFnRW5kPW4uX2J1aWxkSGFuZGxlcigib25EcmFnRW5kIiksbi5fb25EcmFnT3Zlcj1uLl9idWlsZEhhbmRsZXIoIm9uRHJhZ092ZXIiKSxuLl9vbkRyYWdTdGFydD1uLl9idWlsZEhhbmRsZXIoIm9uRHJhZ1N0YXJ0Iiksbi5fb25Ecm9wPW4uX2J1aWxkSGFuZGxlcigib25Ecm9wIiksbi5fb25JbnB1dD1uLl9idWlsZEhhbmRsZXIoIm9uSW5wdXQiKSxuLl9vbkZvY3VzPW4uX2J1aWxkSGFuZGxlcigib25Gb2N1cyIpLG4uX29uS2V5RG93bj1uLl9idWlsZEhhbmRsZXIoIm9uS2V5RG93biIpLG4uX29uS2V5UHJlc3M9bi5fYnVpbGRIYW5kbGVyKCJvbktleVByZXNzIiksbi5fb25LZXlVcD1uLl9idWlsZEhhbmRsZXIoIm9uS2V5VXAiKSxuLl9vbk1vdXNlRG93bj1uLl9idWlsZEhhbmRsZXIoIm9uTW91c2VEb3duIiksbi5fb25Nb3VzZVVwPW4uX2J1aWxkSGFuZGxlcigib25Nb3VzZVVwIiksbi5fb25QYXN0ZT1uLl9idWlsZEhhbmRsZXIoIm9uUGFzdGUiKSxuLl9vblNlbGVjdD1uLl9idWlsZEhhbmRsZXIoIm9uU2VsZWN0Iiksbi5nZXRFZGl0b3JLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gbi5fZWRpdG9yS2V5fSxuLnN0YXRlPXtjb250ZW50c0tleTowfSxufXMobixlKTt2YXIgcj1uLnByb3RvdHlwZTtyZXR1cm4gci5fYnVpbGRIYW5kbGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1iLnVuc3RhYmxlX2ZsdXNoQ29udHJvbGxlZDtyZXR1cm4gZnVuY3Rpb24ocil7aWYoIXQucHJvcHMucmVhZE9ubHkpe3ZhciBvPXQuX2hhbmRsZXImJnQuX2hhbmRsZXJbZV07byYmKG4/bigoZnVuY3Rpb24oKXtyZXR1cm4gbyh0LHIpfSkpOm8odCxyKSl9fX0sci5fc2hvd1BsYWNlaG9sZGVyPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb3BzLnBsYWNlaG9sZGVyJiYhdGhpcy5wcm9wcy5lZGl0b3JTdGF0ZS5pc0luQ29tcG9zaXRpb25Nb2RlKCkmJiF0aGlzLnByb3BzLmVkaXRvclN0YXRlLmdldEN1cnJlbnRDb250ZW50KCkuaGFzVGV4dCgpfSxyLl9yZW5kZXJQbGFjZWhvbGRlcj1mdW5jdGlvbigpe2lmKHRoaXMuX3Nob3dQbGFjZWhvbGRlcigpKXt2YXIgZT17dGV4dDpNKHRoaXMucHJvcHMucGxhY2Vob2xkZXIpLGVkaXRvclN0YXRlOnRoaXMucHJvcHMuZWRpdG9yU3RhdGUsdGV4dEFsaWdubWVudDp0aGlzLnByb3BzLnRleHRBbGlnbm1lbnQsYWNjZXNzaWJpbGl0eUlEOnRoaXMuX3BsYWNlaG9sZGVyQWNjZXNzaWJpbGl0eUlEfTtyZXR1cm4gZy5jcmVhdGVFbGVtZW50KHksZSl9cmV0dXJuIG51bGx9LHIucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmJsb2NrUmVuZGVyTWFwLHI9dC5ibG9ja1JlbmRlcmVyRm4saT10LmJsb2NrU3R5bGVGbix1PXQuY3VzdG9tU3R5bGVGbixzPXQuY3VzdG9tU3R5bGVNYXAsbD10LmVkaXRvclN0YXRlLGY9dC5yZWFkT25seSxwPXQudGV4dEFsaWdubWVudCxoPXQudGV4dERpcmVjdGlvbmFsaXR5LHk9Tyh7IkRyYWZ0RWRpdG9yL3Jvb3QiOiEwLCJEcmFmdEVkaXRvci9hbGlnbkxlZnQiOiJsZWZ0Ij09PXAsIkRyYWZ0RWRpdG9yL2FsaWduUmlnaHQiOiJyaWdodCI9PT1wLCJEcmFmdEVkaXRvci9hbGlnbkNlbnRlciI6ImNlbnRlciI9PT1wfSksbT10aGlzLnByb3BzLnJvbGV8fCJ0ZXh0Ym94Iix2PSJjb21ib2JveCI9PT1tPyEhdGhpcy5wcm9wcy5hcmlhRXhwYW5kZWQ6bnVsbCxiPXtibG9ja1JlbmRlck1hcDpuLGJsb2NrUmVuZGVyZXJGbjpyLGJsb2NrU3R5bGVGbjppLGN1c3RvbVN0eWxlTWFwOmEoe30sYyxzKSxjdXN0b21TdHlsZUZuOnUsZWRpdG9yS2V5OnRoaXMuX2VkaXRvcktleSxlZGl0b3JTdGF0ZTpsLHRleHREaXJlY3Rpb25hbGl0eTpofTtyZXR1cm4gZy5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6eX0sdGhpcy5fcmVuZGVyUGxhY2Vob2xkZXIoKSxnLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpPKCJEcmFmdEVkaXRvci9lZGl0b3JDb250YWluZXIiKSxyZWY6ZnVuY3Rpb24odCl7cmV0dXJuIGUuZWRpdG9yQ29udGFpbmVyPXR9fSxnLmNyZWF0ZUVsZW1lbnQoImRpdiIseyJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOmY/bnVsbDp0aGlzLnByb3BzLmFyaWFBY3RpdmVEZXNjZW5kYW50SUQsImFyaWEtYXV0b2NvbXBsZXRlIjpmP251bGw6dGhpcy5wcm9wcy5hcmlhQXV0b0NvbXBsZXRlLCJhcmlhLWNvbnRyb2xzIjpmP251bGw6dGhpcy5wcm9wcy5hcmlhQ29udHJvbHMsImFyaWEtZGVzY3JpYmVkYnkiOnRoaXMucHJvcHMuYXJpYURlc2NyaWJlZEJ5fHx0aGlzLl9wbGFjZWhvbGRlckFjY2Vzc2liaWxpdHlJRCwiYXJpYS1leHBhbmRlZCI6Zj9udWxsOnYsImFyaWEtbGFiZWwiOnRoaXMucHJvcHMuYXJpYUxhYmVsLCJhcmlhLWxhYmVsbGVkYnkiOnRoaXMucHJvcHMuYXJpYUxhYmVsbGVkQnksImFyaWEtbXVsdGlsaW5lIjp0aGlzLnByb3BzLmFyaWFNdWx0aWxpbmUsImFyaWEtb3ducyI6Zj9udWxsOnRoaXMucHJvcHMuYXJpYU93bmVlSUQsYXV0b0NhcGl0YWxpemU6dGhpcy5wcm9wcy5hdXRvQ2FwaXRhbGl6ZSxhdXRvQ29tcGxldGU6dGhpcy5wcm9wcy5hdXRvQ29tcGxldGUsYXV0b0NvcnJlY3Q6dGhpcy5wcm9wcy5hdXRvQ29ycmVjdCxjbGFzc05hbWU6Tyh7bm90cmFuc2xhdGU6IWYsInB1YmxpYy9EcmFmdEVkaXRvci9jb250ZW50IjohMH0pLGNvbnRlbnRFZGl0YWJsZTohZiwiZGF0YS10ZXN0aWQiOnRoaXMucHJvcHMud2ViRHJpdmVyVGVzdElELG9uQmVmb3JlSW5wdXQ6dGhpcy5fb25CZWZvcmVJbnB1dCxvbkJsdXI6dGhpcy5fb25CbHVyLG9uQ29tcG9zaXRpb25FbmQ6dGhpcy5fb25Db21wb3NpdGlvbkVuZCxvbkNvbXBvc2l0aW9uU3RhcnQ6dGhpcy5fb25Db21wb3NpdGlvblN0YXJ0LG9uQ29weTp0aGlzLl9vbkNvcHksb25DdXQ6dGhpcy5fb25DdXQsb25EcmFnRW5kOnRoaXMuX29uRHJhZ0VuZCxvbkRyYWdFbnRlcjp0aGlzLm9uRHJhZ0VudGVyLG9uRHJhZ0xlYXZlOnRoaXMub25EcmFnTGVhdmUsb25EcmFnT3Zlcjp0aGlzLl9vbkRyYWdPdmVyLG9uRHJhZ1N0YXJ0OnRoaXMuX29uRHJhZ1N0YXJ0LG9uRHJvcDp0aGlzLl9vbkRyb3Asb25Gb2N1czp0aGlzLl9vbkZvY3VzLG9uSW5wdXQ6dGhpcy5fb25JbnB1dCxvbktleURvd246dGhpcy5fb25LZXlEb3duLG9uS2V5UHJlc3M6dGhpcy5fb25LZXlQcmVzcyxvbktleVVwOnRoaXMuX29uS2V5VXAsb25Nb3VzZVVwOnRoaXMuX29uTW91c2VVcCxvblBhc3RlOnRoaXMuX29uUGFzdGUsb25TZWxlY3Q6dGhpcy5fb25TZWxlY3QscmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLmVkaXRvcj10fSxyb2xlOmY/bnVsbDptLHNwZWxsQ2hlY2s6TiYmdGhpcy5wcm9wcy5zcGVsbENoZWNrLHN0eWxlOntvdXRsaW5lOiJub25lIix1c2VyU2VsZWN0OiJ0ZXh0IixXZWJraXRVc2VyU2VsZWN0OiJ0ZXh0Iix3aGl0ZVNwYWNlOiJwcmUtd3JhcCIsd29yZFdyYXA6ImJyZWFrLXdvcmQifSxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6ITAsdGFiSW5kZXg6dGhpcy5wcm9wcy50YWJJbmRleH0sZy5jcmVhdGVFbGVtZW50KFIse2VkaXRvcjp0aGlzLGVkaXRvclN0YXRlOmx9KSxnLmNyZWF0ZUVsZW1lbnQoZCxvKHt9LGIse2tleToiY29udGVudHMiK3RoaXMuc3RhdGUuY29udGVudHNLZXl9KSkpKSl9LHIuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt0aGlzLl9ibG9ja1NlbGVjdEV2ZW50cz0hMSwhTCYmUygiZHJhZnRfb2RzX2VuYWJsZWQiKSYmKEw9ITAsbS5pbml0T0RTKCkpLHRoaXMuc2V0TW9kZSgiZWRpdCIpLFAmJih0aGlzLmVkaXRvcj90aGlzLmVkaXRvci5vd25lckRvY3VtZW50LmV4ZWNDb21tYW5kKCJBdXRvVXJsRGV0ZWN0IiwhMSwhMSk6dC5leGVjQ29tbWFuZCgiQXV0b1VybERldGVjdCIsITEsITEpKX0sci5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl9ibG9ja1NlbGVjdEV2ZW50cz0hMSx0aGlzLl9sYXRlc3RFZGl0b3JTdGF0ZT10aGlzLnByb3BzLmVkaXRvclN0YXRlLHRoaXMuX2xhdGVzdENvbW1pdHRlZEVkaXRvclN0YXRlPXRoaXMucHJvcHMuZWRpdG9yU3RhdGV9LG59KGcuQ29tcG9uZW50KTt1KEksImRlZmF1bHRQcm9wcyIse2Jsb2NrUmVuZGVyTWFwOmwsYmxvY2tSZW5kZXJlckZuOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGJsb2NrU3R5bGVGbjpmdW5jdGlvbigpe3JldHVybiIifSxrZXlCaW5kaW5nRm46QyxyZWFkT25seTohMSxzcGVsbENoZWNrOiExLHN0cmlwUGFzdGVkU3R5bGVzOiExfSksZS5leHBvcnRzPUl9KS5jYWxsKHRoaXMsbigieUxwaiIpKX0sIjcvMlkiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiR3lPZiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5vd25lckRvY3VtZW50KSYmKHIoZSkmJiJBIj09PWUubm9kZU5hbWUpfX0sIjdJbmIiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiVzZSayIpLmRlZmF1bHQ7big0KSwodD1lLmV4cG9ydHM9cikuZGVmYXVsdD10fSwiN05seCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09KGU9ZXx8KCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1jYXRjaCh0KXtyZXR1cm4gZS5ib2R5fX19LCI3UHVzIjpmdW5jdGlvbihlLHQsbil7fSwiN1JMOCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLnIodCk7dmFyIHI9e307bi5yKHIpLG4uZChyLCJnZXQiLChmdW5jdGlvbigpe3JldHVybiBZZX0pKSxuLmQociwiZGVmYXVsdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEhlfSkpO3ZhciBvPXt9O24ucihvKSxuLmQobywiSGV1cmlzdGljRnJhZ21lbnRNYXRjaGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gTXV9KSksbi5kKG8sIkluTWVtb3J5Q2FjaGUiLChmdW5jdGlvbigpe3JldHVybiBKdX0pKSxuLmQobywiSW50cm9zcGVjdGlvbkZyYWdtZW50TWF0Y2hlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIFB1fSkpLG4uZChvLCJPYmplY3RDYWNoZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEJ1fSkpLG4uZChvLCJTdG9yZVJlYWRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIFJ1fSkpLG4uZChvLCJTdG9yZVdyaXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIFZ1fSkpLG4uZChvLCJXcml0ZUVycm9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gS3V9KSksbi5kKG8sImFzc2VydElkVmFsdWUiLChmdW5jdGlvbigpe3JldHVybiBGdX0pKSxuLmQobywiZGVmYXVsdERhdGFJZEZyb21PYmplY3QiLChmdW5jdGlvbigpe3JldHVybiBIdX0pKSxuLmQobywiZGVmYXVsdE5vcm1hbGl6ZWRDYWNoZUZhY3RvcnkiLChmdW5jdGlvbigpe3JldHVybiB6dX0pKSxuLmQobywiZW5oYW5jZUVycm9yV2l0aERvY3VtZW50IiwoZnVuY3Rpb24oKXtyZXR1cm4gcXV9KSk7dmFyIGE9e307bi5yKGEpLG4uZChhLCJkZWZhdWx0IiwoZnVuY3Rpb24oKXtyZXR1cm4gTXN9KSksbi5kKGEsIkFwb2xsb0NsaWVudCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFRzfSkpLG4uZChhLCJBcG9sbG9FcnJvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZzfSkpLG4uZChhLCJGZXRjaFR5cGUiLChmdW5jdGlvbigpe3JldHVybiBtc30pKSxuLmQoYSwiTmV0d29ya1N0YXR1cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGxzfSkpLG4uZChhLCJPYnNlcnZhYmxlUXVlcnkiLChmdW5jdGlvbigpe3JldHVybiBnc30pKSxuLmQoYSwiaXNBcG9sbG9FcnJvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHlzfSkpO3ZhciBpPXt9O24ucihpKSxuLmQoaSwic2V0Q29udGV4dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFBzfSkpO3ZhciB1PXt9O24ucih1KSxuLmQodSwiSHR0cExpbmsiLChmdW5jdGlvbigpe3JldHVybiBCc30pKSxuLmQodSwiY3JlYXRlSHR0cExpbmsiLChmdW5jdGlvbigpe3JldHVybiBJc30pKTt2YXIgcz17fTtuLnIocyksbi5kKHMsIlRlbXBsYXRlVGFnIiwoZnVuY3Rpb24oKXtyZXR1cm4gVnN9KSksbi5kKHMsInRyaW1SZXN1bHRUcmFuc2Zvcm1lciIsKGZ1bmN0aW9uKCl7cmV0dXJuIFVzfSkpLG4uZChzLCJzdHJpcEluZGVudFRyYW5zZm9ybWVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gWXN9KSksbi5kKHMsInJlcGxhY2VSZXN1bHRUcmFuc2Zvcm1lciIsKGZ1bmN0aW9uKCl7cmV0dXJuIEhzfSkpLG4uZChzLCJyZXBsYWNlU3Vic3RpdHV0aW9uVHJhbnNmb3JtZXIiLChmdW5jdGlvbigpe3JldHVybiBHc30pKSxuLmQocywicmVwbGFjZVN0cmluZ1RyYW5zZm9ybWVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gUXN9KSksbi5kKHMsImlubGluZUFycmF5VHJhbnNmb3JtZXIiLChmdW5jdGlvbigpe3JldHVybiBac30pKSxuLmQocywic3BsaXRTdHJpbmdUcmFuc2Zvcm1lciIsKGZ1bmN0aW9uKCl7cmV0dXJuICRzfSkpLG4uZChzLCJyZW1vdmVOb25QcmludGluZ1ZhbHVlc1RyYW5zZm9ybWVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gZWx9KSksbi5kKHMsImNvbW1hTGlzdHMiLChmdW5jdGlvbigpe3JldHVybiB0bH0pKSxuLmQocywiY29tbWFMaXN0c0FuZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG5sfSkpLG4uZChzLCJjb21tYUxpc3RzT3IiLChmdW5jdGlvbigpe3JldHVybiBybH0pKSxuLmQocywiaHRtbCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG9sfSkpLG4uZChzLCJjb2RlQmxvY2siLChmdW5jdGlvbigpe3JldHVybiBvbH0pKSxuLmQocywic291cmNlIiwoZnVuY3Rpb24oKXtyZXR1cm4gb2x9KSksbi5kKHMsInNhZmVIdG1sIiwoZnVuY3Rpb24oKXtyZXR1cm4gYWx9KSksbi5kKHMsIm9uZUxpbmUiLChmdW5jdGlvbigpe3JldHVybiBpbH0pKSxuLmQocywib25lTGluZVRyaW0iLChmdW5jdGlvbigpe3JldHVybiB1bH0pKSxuLmQocywib25lTGluZUNvbW1hTGlzdHMiLChmdW5jdGlvbigpe3JldHVybiBzbH0pKSxuLmQocywib25lTGluZUNvbW1hTGlzdHNPciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGxsfSkpLG4uZChzLCJvbmVMaW5lQ29tbWFMaXN0c0FuZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGNsfSkpLG4uZChzLCJpbmxpbmVMaXN0cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZsfSkpLG4uZChzLCJvbmVMaW5lSW5saW5lTGlzdHMiLChmdW5jdGlvbigpe3JldHVybiBkbH0pKSxuLmQocywic3RyaXBJbmRlbnQiLChmdW5jdGlvbigpe3JldHVybiBwbH0pKSxuLmQocywic3RyaXBJbmRlbnRzIiwoZnVuY3Rpb24oKXtyZXR1cm4gaGx9KSk7dmFyIGw9e307bi5yKGwpLG4uZChsLCJBcG9sbG9Db25zdW1lciIsKGZ1bmN0aW9uKCl7cmV0dXJuIE19KSksbi5kKGwsIkFwb2xsb1Byb3ZpZGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gVH0pKSxuLmQobCwiZ2V0QXBvbGxvQ29udGV4dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHh9KSksbi5kKGwsInJlc2V0QXBvbGxvQ29udGV4dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFN9KSksbi5kKGwsIk11dGF0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gUmx9KSksbi5kKGwsIlF1ZXJ5IiwoZnVuY3Rpb24oKXtyZXR1cm4gTGx9KSksbi5kKGwsIlN1YnNjcmlwdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIElsfSkpLG4uZChsLCJncmFwaHFsIiwoZnVuY3Rpb24oKXtyZXR1cm4gSGx9KSksbi5kKGwsIndpdGhBcG9sbG8iLChmdW5jdGlvbigpe3JldHVybiBHbH0pKSxuLmQobCwid2l0aE11dGF0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gV2x9KSksbi5kKGwsIndpdGhRdWVyeSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFVsfSkpLG4uZChsLCJ3aXRoU3Vic2NyaXB0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gWWx9KSksbi5kKGwsInVzZUFwb2xsb0NsaWVudCIsKGZ1bmN0aW9uKCl7cmV0dXJuIE5sfSkpLG4uZChsLCJ1c2VMYXp5UXVlcnkiLChmdW5jdGlvbigpe3JldHVybiBTbH0pKSxuLmQobCwidXNlTXV0YXRpb24iLChmdW5jdGlvbigpe3JldHVybiBUbH0pKSxuLmQobCwidXNlUXVlcnkiLChmdW5jdGlvbigpe3JldHVybiB4bH0pKSxuLmQobCwidXNlU3Vic2NyaXB0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gUGx9KSksbi5kKGwsImdldERhdGFGcm9tVHJlZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFFsfSkpLG4uZChsLCJnZXRNYXJrdXBGcm9tVHJlZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEpsfSkpLG4uZChsLCJyZW5kZXJUb1N0cmluZ1dpdGhEYXRhIiwoZnVuY3Rpb24oKXtyZXR1cm4gWmx9KSk7dmFyIGM9e307bi5yKGMpLG4uZChjLCJjcmVhdGVTdG9yZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEFjfSkpLG4uZChjLCJjb21iaW5lUmVkdWNlcnMiLChmdW5jdGlvbigpe3JldHVybiBCY30pKSxuLmQoYywiYmluZEFjdGlvbkNyZWF0b3JzIiwoZnVuY3Rpb24oKXtyZXR1cm4gS2N9KSksbi5kKGMsImFwcGx5TWlkZGxld2FyZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFVjfSkpLG4uZChjLCJjb21wb3NlIiwoZnVuY3Rpb24oKXtyZXR1cm4gcWN9KSk7dmFyIGY9e307bi5yKGYpLG4uZChmLCJQcm92aWRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIG5jfSkpLG4uZChmLCJjcmVhdGVQcm92aWRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRjfSkpLG4uZChmLCJjb25uZWN0QWR2YW5jZWQiLChmdW5jdGlvbigpe3JldHVybiBkY30pKSxuLmQoZiwiY29ubmVjdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG1mfSkpO3ZhciBkPXt9O24ucihkKSxuLmQoZCwiYWRkTG9jYWxlRGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHhmfSkpLG4uZChkLCJpbnRsU2hhcGUiLChmdW5jdGlvbigpe3JldHVybiBaZn0pKSxuLmQoZCwiaW5qZWN0SW50bCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHBkfSkpLG4uZChkLCJkZWZpbmVNZXNzYWdlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGhkfSkpLG4uZChkLCJJbnRsUHJvdmlkZXIiLChmdW5jdGlvbigpe3JldHVybiBNZH0pKSxuLmQoZCwiRm9ybWF0dGVkRGF0ZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFBkfSkpLG4uZChkLCJGb3JtYXR0ZWRUaW1lIiwoZnVuY3Rpb24oKXtyZXR1cm4gTmR9KSksbi5kKGQsIkZvcm1hdHRlZFJlbGF0aXZlIiwoZnVuY3Rpb24oKXtyZXR1cm4gamR9KSksbi5kKGQsIkZvcm1hdHRlZE51bWJlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIExkfSkpLG4uZChkLCJGb3JtYXR0ZWRQbHVyYWwiLChmdW5jdGlvbigpe3JldHVybiBSZH0pKSxuLmQoZCwiRm9ybWF0dGVkTWVzc2FnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEFkfSkpLG4uZChkLCJGb3JtYXR0ZWRIVE1MTWVzc2FnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEZkfSkpO3ZhciBwPXt9O24ucihwKSxuLmQocCwiTWVtb3J5Um91dGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gemQuYX0pKSxuLmQocCwiUHJvbXB0IiwoZnVuY3Rpb24oKXtyZXR1cm4gS2QuYX0pKSxuLmQocCwiUmVkaXJlY3QiLChmdW5jdGlvbigpe3JldHVybiBxZC5hfSkpLG4uZChwLCJSb3V0ZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFZkLmF9KSksbi5kKHAsIlJvdXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIFVkLmF9KSksbi5kKHAsIlN0YXRpY1JvdXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIFdkLmF9KSksbi5kKHAsIlN3aXRjaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFlkLmF9KSksbi5kKHAsImdlbmVyYXRlUGF0aCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEhkLmF9KSksbi5kKHAsIm1hdGNoUGF0aCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEdkLmF9KSksbi5kKHAsIndpdGhSb3V0ZXIiLChmdW5jdGlvbigpe3JldHVybiBRZC5hfSkpO3ZhciBoPXt9O24ucihoKSxuLmQoaCwiZGVmYXVsdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFhkfSkpO3ZhciB5PXt9O24ucih5KSxuLmQoeSwiTW9kYWwiLChmdW5jdGlvbigpe3JldHVybiBmcH0pKSxuLmQoeSwiSGVscCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEFwfSkpLG4uZCh5LCJQYWdpbmF0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gbGh9KSksbi5kKHksIlNlbGVjdElucHV0V2l0aEFkZE5ldyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHFofSkpLG4uZCh5LCJTZWxlY3RJbnB1dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRufSkpLG4uZCh5LCJEYXlJbnB1dCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHh5fSkpLG4uZCh5LCJSaWNoVGV4dEVkaXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGV2fSkpLG4uZCh5LCJMb2FkZXJXcmFwcGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gS259KSksbi5kKHksIlVwbG9hZEFyZWEiLChmdW5jdGlvbigpe3JldHVybiBCdn0pKSxuLmQoeSwiTGVmdE5hdiIsKGZ1bmN0aW9uKCl7cmV0dXJuIFZ2fSkpLG4uZCh5LCJUaW1lSW5wdXQiLChmdW5jdGlvbigpe3JldHVybiBIdn0pKSxuLmQoeSwiQWxlcnQiLChmdW5jdGlvbigpe3JldHVybiBuZ30pKSxuLmQoeSwiQnJlYWRjcnVtYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHNnfSkpLG4uZCh5LCJCdXR0b24iLChmdW5jdGlvbigpe3JldHVybiB5aH0pKSxuLmQoeSwiRHJvcGRvd24iLChmdW5jdGlvbigpe3JldHVybiBwZ30pKSxuLmQoeSwiQnV0dG9uR3JvdXAiLChmdW5jdGlvbigpe3JldHVybiBtZ30pKSxuLmQoeSwiQnV0dG9uVG9vbGJhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGdnfSkpLG4uZCh5LCJGb3JtIiwoZnVuY3Rpb24oKXtyZXR1cm4gVmd9KSksbi5kKHksIkJhZGdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gV2d9KSksbi5kKHksIlRhYmxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gWWd9KSksbi5kKHksIkZpZWxkIiwoZnVuY3Rpb24oKXtyZXR1cm4gJGd9KSksbi5kKHksIklubGluZUZpZWxkIiwoZnVuY3Rpb24oKXtyZXR1cm4gbmJ9KSksbi5kKHksIkNvbnRyb2wiLChmdW5jdGlvbigpe3JldHVybiBKZ30pKSxuLmQoeSwiTGFiZWwiLChmdW5jdGlvbigpe3JldHVybiBHZ30pKSxuLmQoeSwiSW5wdXRHcm91cCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHVifSkpLG4uZCh5LCJUYWJzIiwoZnVuY3Rpb24oKXtyZXR1cm4gbWJ9KSksbi5kKHksIlRhYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGdifSkpLG4uZCh5LCJUb29sdGlwIiwoZnVuY3Rpb24oKXtyZXR1cm4gTnB9KSksbi5kKHksIk92ZXJsYXkiLChmdW5jdGlvbigpe3JldHVybiBFcH0pKSxuLmQoeSwiTmF2IiwoZnVuY3Rpb24oKXtyZXR1cm4gWXJ9KSksbi5kKHksIk5hdkl0ZW0iLChmdW5jdGlvbigpe3JldHVybiBqcn0pKSxuLmQoeSwiRHJvcGRvd25JdGVtIiwoZnVuY3Rpb24oKXtyZXR1cm4gUGF9KSksbi5kKHksIk5hdkRyb3Bkb3duIiwoZnVuY3Rpb24oKXtyZXR1cm4gVmF9KSksbi5kKHksIk92ZXJsYXlUcmlnZ2VyIiwoZnVuY3Rpb24oKXtyZXR1cm4geHB9KSksbi5kKHksIlBvcG92ZXIiLChmdW5jdGlvbigpe3JldHVybiBNcH0pKSxuLmQoeSwiTmF2YmFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gam99KSksbi5kKHksIkNhcmQiLChmdW5jdGlvbigpe3JldHVybiB4Yn0pKSxuLmQoeSwiQ29udGFpbmVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gRGJ9KSksbi5kKHksIlJvdyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGVifSkpLG4uZCh5LCJDb2wiLChmdW5jdGlvbigpe3JldHVybiBSZ30pKSxuLmQoeSwiU25hcHNob3QiLChmdW5jdGlvbigpe3JldHVybiBNYn0pKSxuLmQoeSwiU25hcHNob3RJdGVtIiwoZnVuY3Rpb24oKXtyZXR1cm4gcWJ9KSksbi5kKHksIkNoYXJ0Q29udGFpbmVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gUWJ9KSksbi5kKHksIkNoYXJ0UmVjdENsaXBQYXRoIiwoZnVuY3Rpb24oKXtyZXR1cm4gWmJ9KSksbi5kKHksIkNoYXJ0T3ZlcmxheVRyaWdnZXIiLChmdW5jdGlvbigpe3JldHVybiBhd30pKSxuLmQoeSwiQ2hhcnRYQXhpcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV3fSkpLG4uZCh5LCJDaGFydFlBeGlzIiwoZnVuY3Rpb24oKXtyZXR1cm4gbHd9KSksbi5kKHksIkNoYXJ0R3JpZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ3fSkpLG4uZCh5LCJDaGFydExpbmUiLChmdW5jdGlvbigpe3JldHVybiB4d30pKSxuLmQoeSwiQ2hhcnRHcmFwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIE1rfSkpLG4uZCh5LCJDaGFydEdyYXBoQ29udGFpbmVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gTGt9KSksbi5kKHksIkRvdWdobnV0Q2hhcnQiLChmdW5jdGlvbigpe3JldHVybiB5Q30pKSxuLmQoeSwiR3JvdXBlZEJhckNoYXJ0IiwoZnVuY3Rpb24oKXtyZXR1cm4gakN9KSksbi5kKHksIkNoYXJhY3RlckxpbWl0SW5kaWNhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gVUN9KSksbi5kKHksIkNoZWNrYm94IiwoZnVuY3Rpb24oKXtyZXR1cm4gJEN9KSksbi5kKHksIkZvcm1GaWVsZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN4fSkpLG4uZCh5LCJTaW5nbGVEYXRlSW5wdXQiLChmdW5jdGlvbigpe3JldHVybiBNeH0pKSxuLmQoeSwiUmFuZ2VEYXRlSW5wdXQiLChmdW5jdGlvbigpe3JldHVybiBGeH0pKSxuLmQoeSwiUmFkaW9CdXR0b24iLChmdW5jdGlvbigpe3JldHVybiB6eH0pKSxuLmQoeSwiUmFkaW9CdXR0b25Hcm91cCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHF4fSkpLG4uZCh5LCJUYWdzSW5wdXQiLChmdW5jdGlvbigpe3JldHVybiBHeH0pKSxuLmQoeSwiRnVsbFdpZHRoQnV0dG9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gSnh9KSksbi5kKHksIkxvYWRpbmdJbmRpY2F0b3IiLChmdW5jdGlvbigpe3JldHVybiBOa30pKSxuLmQoeSwiTG9hZGluZ1N0YXRlV3JhcHBlciIsKGZ1bmN0aW9uKCl7cmV0dXJuICR4fSkpLG4uZCh5LCJNYWluTmF2aWdhdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGVTfSkpLG4uZCh5LCJTdWJOYXZpZ2F0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gb1N9KSksbi5kKHksIlN1Yk5hdmlnYXRpb25JdGVtIiwoZnVuY3Rpb24oKXtyZXR1cm4gblN9KSksbi5kKHksIlNlYXJjaFJlc3VsdHMiLChmdW5jdGlvbigpe3JldHVybiBMU30pKSxuLmQoeSwiU2VhcmNoUm93IiwoZnVuY3Rpb24oKXtyZXR1cm4gcVN9KSksbi5kKHksIlRlcnJpdG9yaWVzTGlzdE1hbmFnZXIiLChmdW5jdGlvbigpe3JldHVybiBqRH0pKSxuLmQoeSwiTGlzdEhlYWRlclNlYXJjaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGVEfSkpLG4uZCh5LCJUaWxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gekR9KSksbi5kKHksIkNsaWNrYWJsZVRhYmxlIiwoZnVuY3Rpb24oKXtyZXR1cm4gWkR9KSksbi5kKHksIk1haW50ZW5hbmNlU2NyZWVuIiwoZnVuY3Rpb24oKXtyZXR1cm4gYVR9KSksbi5kKHksIkNvbmZpcm0iLChmdW5jdGlvbigpe3JldHVybiB1VH0pKSxuLmQoeSwiVG9nZ2xlSW5wdXQiLChmdW5jdGlvbigpe3JldHVybiBsVH0pKSxuLmQoeSwiUHJvZHVjdERpc3BsYXlUeXBlIiwoZnVuY3Rpb24oKXtyZXR1cm4gcFR9KSksbi5kKHksIkxvYWRpbmdCdXR0b24iLChmdW5jdGlvbigpe3JldHVybiB2VH0pKSxuLmQoeSwiQnV0dG9uc1JvdyIsKGZ1bmN0aW9uKCl7cmV0dXJuIE1UfSkpLG4uZCh5LCJDb2xsYXBzYWJsZUFsZXJ0IiwoZnVuY3Rpb24oKXtyZXR1cm4gWVR9KSksbi5kKHksIkRpc21pc3NpYmxlQWxlcnQiLChmdW5jdGlvbigpe3JldHVybiBaVH0pKSxuLmQoeSwiRHJvcGRvd25CdXR0b24iLChmdW5jdGlvbigpe3JldHVybiByTX0pKSxuLmQoeSwiQWFuSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGlNfSkpLG4uZCh5LCJBZG1pbkljb24iLChmdW5jdGlvbigpe3JldHVybiBsTX0pKSxuLmQoeSwiQWR2ZXJ0aXNlSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGRNfSkpLG4uZCh5LCJBbmFseXRpY3NJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4geU19KSksbi5kKHksIkFwcGxlTXVzaWNJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ019KSksbi5kKHksIkFydHdvcmtFbXB0eUljb24iLChmdW5jdGlvbigpe3JldHVybiBfTX0pKSxuLmQoeSwiQXR0ZW50aW9uSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGNTfSkpLG4uZCh5LCJBdWRpb0Rpc2FibGVkSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGtNfSkpLG4uZCh5LCJBdWRpb0VuYWJsZWRJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gU019KSksbi5kKHksIkF1ZGlvUGxheWVyTXV0ZUljb24iLChmdW5jdGlvbigpe3JldHVybiBNTX0pKSxuLmQoeSwiQXVkaW9QbGF5ZXJOZXh0SWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGpNfSkpLG4uZCh5LCJBdWRpb1BsYXllck5leHRMaXRlSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIElNfSkpLG4uZCh5LCJBdWRpb1BsYXllclBhdXNlSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIEJNfSkpLG4uZCh5LCJBdWRpb1BsYXllclBhdXNlTGl0ZUljb24iLChmdW5jdGlvbigpe3JldHVybiBxTX0pKSxuLmQoeSwiQXVkaW9QbGF5ZXJQbGF5SWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIFdNfSkpLG4uZCh5LCJBdWRpb1BsYXllclByZXZpb3VzSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIEdNfSkpLG4uZCh5LCJBdWRpb1BsYXllclByZXZpb3VzTGl0ZUljb24iLChmdW5jdGlvbigpe3JldHVybiBaTX0pKSxuLmQoeSwiQXVkaW9QbGF5ZXJWb2x1bWVJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gZVB9KSksbi5kKHksIkNhbGVuZGFySWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh4fSkpLG4uZCh5LCJDYW1lcmFJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gclB9KSksbi5kKHksIkNhdGFsb2dJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gaVB9KSksbi5kKHksIkNoZXZyb25JY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gUWF9KSksbi5kKHksIkNsZWFuVmVyc2lvbkljb24iLChmdW5jdGlvbigpe3JldHVybiBsUH0pKSxuLmQoeSwiQ2xvc2VJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gcml9KSksbi5kKHksIkNsb3NlUm91bmRJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gJFN9KSksbi5kKHksIkNvbXBsZXRlQ2hlY2ttYXJrSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIFFUfSkpLG4uZCh5LCJEZWV6ZXJJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gZFB9KSksbi5kKHksIkRpZ2l0YWxJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4geVB9KSksbi5kKHksIkRpZ2l0YWxBdWRpb0ljb24iLChmdW5jdGlvbigpe3JldHVybiBDbn0pKSxuLmQoeSwiRG93bkRpcmVjdGlvbkFycm93SWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGpUfSkpLG4uZCh5LCJEb3dubG9hZFN5bWJvbEljb24iLChmdW5jdGlvbigpe3JldHVybiBnUH0pKSxuLmQoeSwiRWRpdEljb24iLChmdW5jdGlvbigpe3JldHVybiBfUH0pKSxuLmQoeSwiRXhwbGljaXRJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4ga1B9KSksbi5kKHksIkV4dGVybmFsTGlua0ljb24iLChmdW5jdGlvbigpe3JldHVybiBTUH0pKSxuLmQoeSwiRmFjZWJvb2tJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gTVB9KSksbi5kKHksIkZhY2Vib29rQWR2ZXJ0aXNpbmdJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4galB9KSksbi5kKHksIkZpbGxlZENoZXZyb25Eb3duSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIElQfSkpLG4uZCh5LCJGaWxsZWRDaGV2cm9uVXBJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gQlB9KSksbi5kKHksIkZpbG1JY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gcVB9KSksbi5kKHksIkdlYXJJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gV1B9KSksbi5kKHksIkdvVG9DYXRhbG9nSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIEdQfSkpLG4uZCh5LCJJY29uSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJufSkpLG4uZCh5LCJJbXBvcnRBcnJvd0ljb24iLChmdW5jdGlvbigpe3JldHVybiBaUH0pKSxuLmQoeSwiSW5mb0ljb24iLChmdW5jdGlvbigpe3JldHVybiBScH0pKSxuLmQoeSwiSW5zdGFncmFtSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGVOfSkpLG4uZCh5LCJMZWZ0UGFnaW5hdGlvbkFycm93SWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ4fSkpLG4uZCh5LCJMaW5rSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJOfSkpLG4uZCh5LCJMb2FkaW5nQXJyb3dzSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGlOfSkpLG4uZCh5LCJMb2FkaW5nUmluZ0ljb24iLChmdW5jdGlvbigpe3JldHVybiBsTn0pKSxuLmQoeSwiTG9nb0ljb24iLChmdW5jdGlvbigpe3JldHVybiBnaX0pKSxuLmQoeSwiTG9nb0FuZE5hbWVJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gZVR9KSksbi5kKHksIkxvZ29Gb290ZXJJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gaml9KSksbi5kKHksIkxvZ291dEljb24iLChmdW5jdGlvbigpe3JldHVybiBkTn0pKSxuLmQoeSwiTWFpbnRlbmFuY2VJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gclR9KSksbi5kKHksIk5ld1Byb2R1Y3RJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4geU59KSksbi5kKHksIlBoeXNpY2FsSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGdOfSkpLG4uZCh5LCJQaHlzaWNhbEF1ZGlvSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIEVufSkpLG4uZCh5LCJQbGF5SWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIF9OfSkpLG4uZCh5LCJQbGF5bGlzdFBsYWNlaG9sZGVySWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGtOfSkpLG4uZCh5LCJQbHVzSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIFNOfSkpLG4uZCh5LCJQcm9maWxlSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIE1OfSkpLG4uZCh5LCJSZWZyZXNoSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGpOfSkpLG4uZCh5LCJSaWdodERpcmVjdGlvbkFycm93SWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIElOfSkpLG4uZCh5LCJSaWdodFBhZ2luYXRpb25BcnJvd0ljb24iLChmdW5jdGlvbigpe3JldHVybiB3eH0pKSxuLmQoeSwiU2VhcmNoSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGxufSkpLG4uZCh5LCJTZXJ2ZXJFcnJvckljb24iLChmdW5jdGlvbigpe3JldHVybiBCTn0pKSxuLmQoeSwiU3BvdGlmeUljb24iLChmdW5jdGlvbigpe3JldHVybiBxTn0pKSxuLmQoeSwiU3RhdHVzSWNvbkljb24iLChmdW5jdGlvbigpe3JldHVybiBKTn0pKSxuLmQoeSwiU3RvcEljb24iLChmdW5jdGlvbigpe3JldHVybiBYTn0pKSxuLmQoeSwiU3VjY2Vzc0NoZWNrbWFya0ljb24iLChmdW5jdGlvbigpe3JldHVybiBuan0pKSxuLmQoeSwiVGhyZWVEb3RzSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGFqfSkpLG4uZCh5LCJUaHJlZVJpZ2h0RGlyZWN0ZWRBcnJvd3NJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gdUR9KSksbi5kKHksIlRyYWNrc0NvbXBsZXRlQ2hlY2ttYXJrSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHNqfSkpLG4uZCh5LCJUcmFja3NFbXB0eUljb24iLChmdW5jdGlvbigpe3JldHVybiBman0pKSxuLmQoeSwiVHJhbnNwYXJlbnRMb2dvSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGhqfSkpLG4uZCh5LCJUcmFzaENhbkljb24iLChmdW5jdGlvbigpe3JldHVybiB2an0pKSxuLmQoeSwiVHJpcGxlQ2hlY2ttYXJrSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHdqfSkpLG4uZCh5LCJUd2l0dGVySWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIE9qfSkpLG4uZCh5LCJVcEFuZERvd25BcnJvd3NJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4geGp9KSksbi5kKHksIlVwRGlyZWN0aW9uQXJyb3dJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gSVR9KSksbi5kKHksIlVwbG9hZEljb24iLChmdW5jdGlvbigpe3JldHVybiBUan0pKSxuLmQoeSwiVXBsb2FkQXJyb3dJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gTmp9KSksbi5kKHksIlZpZGVvSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJufSkpLG4uZCh5LCJWaWV3TW9yZU5leHRBcnJvd0ljb24iLChmdW5jdGlvbigpe3JldHVybiBSan0pKSxuLmQoeSwiV2VzdGVyblVuaW9uSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIEZqfSkpLG4uZCh5LCJZb3V0dWJlSWNvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIEtqfSkpLG4uZCh5LCJBdWRpb1BsYXlJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gVmp9KSksbi5kKHksIkF1ZGlvUGF1c2VJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gV2p9KSksbi5kKHksIk9yY2hhcmRJY29uIiwoZnVuY3Rpb24oKXtyZXR1cm4gS3Z9KSksbi5kKHksIkFkZEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gZmh9KSksbi5kKHksIkFuYWx5dGljc0dseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gSGp9KSksbi5kKHksIkFyY2hpdmVHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFFqfSkpLG4uZCh5LCJBcnJvd0Rvd25HbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFpqfSkpLG4uZCh5LCJBcnJvd0xlZnRHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFhqfSkpLG4uZCh5LCJBcnJvd1JpZ2h0R2x5cGgiLChmdW5jdGlvbigpe3JldHVybiB0TH0pKSxuLmQoeSwiQXJyb3dVcEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gckx9KSksbi5kKHksIkJvbGRHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEJtfSkpLG4uZCh5LCJDYWxlbmRhckdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gcnl9KSksbi5kKHksIkNhcmV0RG93bkdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gYUx9KSksbi5kKHksIkNhcmV0TGVmdEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gdUx9KSksbi5kKHksIkNhcmV0UmlnaHRHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGxMfSkpLG4uZCh5LCJDYXJldFVwR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBmTH0pKSxuLmQoeSwiQ2hlY2ttYXJrR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBRbX0pKSxuLmQoeSwiQ2hldkRvd25HbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGNnfSkpLG4uZCh5LCJDaGV2TGVmdEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gSnB9KSksbi5kKHksIkNoZXZSaWdodEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gJHB9KSksbi5kKHksIkNoZXZVcEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gcEx9KSksbi5kKHksIkNsZWFyRm9ybWF0dGluZ0dseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4geUx9KSksbi5kKHksIkNsZWFyR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiB2TH0pKSxuLmQoeSwiQ2xvc2VHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFh2fSkpLG4uZCh5LCJEaWdpdGFsR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBiTH0pKSxuLmQoeSwiRG93bmxvYWRHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIF9MfSkpLG4uZCh5LCJFZGl0R2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBPTH0pKSxuLmQoeSwiSW5mb0dseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gWnZ9KSksbi5kKHksIkl0YWxpY0dseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gS219KSksbi5kKHksIkthYm9iR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBDTH0pKSxuLmQoeSwiTGlua0dseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gSG19KSksbi5kKHksIkxpc3RHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFdtfSkpLG4uZCh5LCJPcHRpb25zR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiB0aH0pKSxuLmQoeSwiUGFwZXJjbGlwR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBTTH0pKSxuLmQoeSwiUGh5c2ljYWxHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFRMfSkpLG4uZCh5LCJSZWZyZXNoR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBQTH0pKSxuLmQoeSwiUnNzR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBqTH0pKSxuLmQoeSwiU2VhcmNoR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBSTH0pKSxuLmQoeSwiU2V0dGluZ3NHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEFMfSkpLG4uZCh5LCJUcmFzaEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gQkx9KSksbi5kKHksIlVuYXJjaGl2ZUdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gS0x9KSksbi5kKHksIlVuZGVybGluZUdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gVm19KSksbi5kKHksIlVwbG9hZEdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gVkx9KSksbi5kKHksIlZpZGVvR2x5cGgiLChmdW5jdGlvbigpe3JldHVybiBXTH0pKSxuLmQoeSwiV2FybmluZ0dseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gUXZ9KSksbi5kKHksIlpvb21JbkdseXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4gSEx9KSksbi5kKHksIlpvb21PdXRHbHlwaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFFMfSkpLG4uZCh5LCJBY2NvdW50aW5nT3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFpMfSkpLG4uZCh5LCJBbmFseXRpY3NPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gWEx9KSksbi5kKHksIkFydGlzdHNPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gdFJ9KSksbi5kKHksIkFydHdvcmtPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gclJ9KSksbi5kKHksIkNkT3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGFSfSkpLG4uZCh5LCJDc3ZPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gdVJ9KSksbi5kKHksIkNhbGVuZGFyT3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGxSfSkpLG4uZCh5LCJDbGlwYm9hcmRPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gZlJ9KSksbi5kKHksIkNvdmVyYXJ0T3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHBSfSkpLG4uZCh5LCJEYXRhT3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHlSfSkpLG4uZCh5LCJEaWdpdGFsQXVkaW9PdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gdlJ9KSksbi5kKHksIkZpbG1PdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gYlJ9KSksbi5kKHksIklkZWFzT3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIF9SfSkpLG4uZCh5LCJNYXJrZXRpbmdPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gT1J9KSksbi5kKHksIk11c2ljVmlkZW9PdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gQ1J9KSksbi5kKHksIk5ld3NPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gU1J9KSksbi5kKHksIlBkZk91dGxpbmUiLChmdW5jdGlvbigpe3JldHVybiBUUn0pKSxuLmQoeSwiUGhvdG9PdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gUFJ9KSksbi5kKHksIlBvZGNhc3RGaWxlT3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGpSfSkpLG4uZCh5LCJQcm9kdWN0c091dGxpbmUiLChmdW5jdGlvbigpe3JldHVybiBSUn0pKSxuLmQoeSwiUHJvamVjdE91dGxpbmUiLChmdW5jdGlvbigpe3JldHVybiBBUn0pKSxuLmQoeSwiU2VhcmNoUmVzdWx0c091dGxpbmUiLChmdW5jdGlvbigpe3JldHVybiBDdH0pKSxuLmQoeSwiVGVjaG5vbG9neU91dGxpbmUiLChmdW5jdGlvbigpe3JldHVybiBCUn0pKSxuLmQoeSwiVHJhY2tsaXN0T3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEtSfSkpLG4uZCh5LCJWaWRlb1RvdXJPdXRsaW5lIiwoZnVuY3Rpb24oKXtyZXR1cm4gVlJ9KSksbi5kKHksIlZpbnlsT3V0bGluZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEhSfSkpO3ZhciBtLHY9bigiUklxUCIpLGc9bi5uKHYpLGI9bigibFNOQSIpLHc9bi5uKGIpLF89bigicTF0SSIpLEU9bi5uKF8pLE89bigiaThpNCIpLGs9bi5uKE8pLEM9bigicVZkVCIpO2Z1bmN0aW9uIHgoKXtyZXR1cm4gbXx8KG09RS5hLmNyZWF0ZUNvbnRleHQoe30pKSxtfWZ1bmN0aW9uIFMoKXttPUUuYS5jcmVhdGVDb250ZXh0KHt9KX12YXIgRCxUPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2xpZW50LG49ZS5jaGlsZHJlbixyPXgoKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoci5Db25zdW1lcixudWxsLChmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHQmJmUuY2xpZW50IT09dCYmKGU9T2JqZWN0LmFzc2lnbih7fSxlLHtjbGllbnQ6dH0pKSxPYmplY3QoQy5iKShlLmNsaWVudCw1KSxFLmEuY3JlYXRlRWxlbWVudChyLlByb3ZpZGVyLHt2YWx1ZTplfSxuKX0pKX0sTT1mdW5jdGlvbihlKXt2YXIgdD14KCk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHQuQ29uc3VtZXIsbnVsbCwoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChDLmIpKHQmJnQuY2xpZW50LDYpLGUuY2hpbGRyZW4odC5jbGllbnQpfSkpfTshZnVuY3Rpb24oZSl7ZVtlLlF1ZXJ5PTBdPSJRdWVyeSIsZVtlLk11dGF0aW9uPTFdPSJNdXRhdGlvbiIsZVtlLlN1YnNjcmlwdGlvbj0yXT0iU3Vic2NyaXB0aW9uIn0oRHx8KEQ9e30pKTt2YXIgUD1uZXcgTWFwO2Z1bmN0aW9uIE4oZSl7dmFyIHQ7c3dpdGNoKGUpe2Nhc2UgRC5RdWVyeTp0PSJRdWVyeSI7YnJlYWs7Y2FzZSBELk11dGF0aW9uOnQ9Ik11dGF0aW9uIjticmVhaztjYXNlIEQuU3Vic2NyaXB0aW9uOnQ9IlN1YnNjcmlwdGlvbiJ9cmV0dXJuIHR9ZnVuY3Rpb24gaihlKXt2YXIgdCxuLHI9UC5nZXQoZSk7aWYocilyZXR1cm4gcjtPYmplY3QoQy5iKSghIWUmJiEhZS5raW5kLDEpO3ZhciBvPWUuZGVmaW5pdGlvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4iRnJhZ21lbnREZWZpbml0aW9uIj09PWUua2luZH0pKSxhPWUuZGVmaW5pdGlvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4iT3BlcmF0aW9uRGVmaW5pdGlvbiI9PT1lLmtpbmQmJiJxdWVyeSI9PT1lLm9wZXJhdGlvbn0pKSxpPWUuZGVmaW5pdGlvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4iT3BlcmF0aW9uRGVmaW5pdGlvbiI9PT1lLmtpbmQmJiJtdXRhdGlvbiI9PT1lLm9wZXJhdGlvbn0pKSx1PWUuZGVmaW5pdGlvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4iT3BlcmF0aW9uRGVmaW5pdGlvbiI9PT1lLmtpbmQmJiJzdWJzY3JpcHRpb24iPT09ZS5vcGVyYXRpb259KSk7T2JqZWN0KEMuYikoIW8ubGVuZ3RofHxhLmxlbmd0aHx8aS5sZW5ndGh8fHUubGVuZ3RoLDIpLE9iamVjdChDLmIpKGEubGVuZ3RoK2kubGVuZ3RoK3UubGVuZ3RoPD0xLDMpLG49YS5sZW5ndGg/RC5RdWVyeTpELk11dGF0aW9uLGEubGVuZ3RofHxpLmxlbmd0aHx8KG49RC5TdWJzY3JpcHRpb24pO3ZhciBzPWEubGVuZ3RoP2E6aS5sZW5ndGg/aTp1O09iamVjdChDLmIpKDE9PT1zLmxlbmd0aCw0KTt2YXIgbD1zWzBdO3Q9bC52YXJpYWJsZURlZmluaXRpb25zfHxbXTt2YXIgYz17bmFtZTpsLm5hbWUmJiJOYW1lIj09PWwubmFtZS5raW5kP2wubmFtZS52YWx1ZToiZGF0YSIsdHlwZTpuLHZhcmlhYmxlczp0fTtyZXR1cm4gUC5zZXQoZSxjKSxjfXZhciBMPW4oIkRsVnkiKSxSPW4ubihMKSxJPW4oInM0TlIiKSxBPW4ubihJKSxGPW4oIkx2RGwiKSxCPW4ubihGKSx6PW4oIko0enAiKSxLPW4ubih6KSxxPW4oIjE3eDkiKSxWPW4ubihxKSxVPWZ1bmN0aW9uKGUpe3JldHVybiIvcHJvamVjdHMvc2VhcmNoLyIuY29uY2F0KGUpfSxXPWZ1bmN0aW9uKGUpe3JldHVybiIvY2F0YWxvZz90ZXJtPSIuY29uY2F0KGUpfSxZPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIi9wcm9qZWN0LyIuY29uY2F0KGUsIi9wcm9kdWN0LyIpLmNvbmNhdCh0KX0sSD1uKCJHcjdTIiksRz1uLm4oSCksUT1uKCJsd3NFIiksSj1uLm4oUSksWj1uKCJXOE1KIiksJD1uLm4oWiksWD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1uLnJvbGVzVG9DaGVjayxvPW4uZmVhdHVyZXNUb0NoZWNrO2lmKCEociYmQXJyYXkuaXNBcnJheShyKXx8byYmQXJyYXkuaXNBcnJheShvKSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cy4gRWl0aGVyIHJvbGVzVG9DaGVjayBvciBmZWF0dXJlc1RvQ2hlY2sgbXVzdCBoYXZlIHZhbHVlcy4iKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITA7aWYoIWV8fDA9PT1lLmxlbmd0aClyZXR1cm4hMTt2YXIgbj1PYmplY3QoRi5mbGF0dGVuKShPYmplY3QoRi5tYXApKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJvbGUudmVuZG9yUm9sZVBlcm1pc3Npb25zfSkpKTtyZXR1cm4gT2JqZWN0KEYuZXZlcnkpKHQsKGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1PYmplY3QoRi5maW5kKShuLChmdW5jdGlvbih0KXtyZXR1cm4gdC5wZXJtaXNzaW9uLnJlc291cmNlLnJlc291cmNlPT09ZS5wZXJtaXNzaW9uJiZ0LnBlcm1pc3Npb24ucHJpdmlsZWdlPT09ZS5wcml2aWxlZ2V9KSl9KSl9KHIpJiZmdW5jdGlvbihlKXtyZXR1cm4hZXx8ISF0JiZPYmplY3QoRi5ldmVyeSkoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIXQuaW5jbHVkZXMoZSl9KSl9KG8pfX07ZnVuY3Rpb24gZWUoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHRlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2VlKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dygpKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTplZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX12YXIgbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19LHJlPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGUoe30sZSx3KCkoe30sdCwhMCkpfSksdCk6T2JqZWN0KEYuaXNPYmplY3QpKGUpJiZlfHx7fX07ZnVuY3Rpb24gb2UoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGFlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP29lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dygpKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpvZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX12YXIgaWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O0ooKSh0aGlzLGUpO3ZhciByPXQudmVuZENvbnRhY3RSb2xlcyxvPXZvaWQgMD09PXI/W106cixhPXQudmVuZG9yLGk9dm9pZCAwPT09YT97fTphLHU9dC5zdWJhY2NvdW50LHM9aS52ZW5kb3JSZXN0cmljdGVkRmVhdHVyZXMsbD12b2lkIDA9PT1zP1tdOnMsYz1uLmZlYXR1cmVGbGFncyxmPXZvaWQgMD09PWM/e306YyxkPW4udXNlclJlc3RyaWN0ZWRGZWF0dXJlcyxwPXZvaWQgMD09PWQ/W106ZDtPYmplY3QoRi5tZXJnZSkodGhpcyx0KSx0aGlzLnZlbmRvcj1pLHRoaXMucm9sZXM9byx0aGlzLmZlYXR1cmVGbGFncz1mLHRoaXMucGVybWlzc2lvbnM9ZS5mbGF0dGVuUm9sZXMobyksdGhpcy5yZXN0cmljdGVkRmVhdHVyZXM9cmUobCxyZShwKSksdGhpcy52ZW5kb3JJZD1pLnZlbmRvcklkLHRoaXMuc3ViYWNjb3VudElkPXU/dS5zdWJhY2NvdW50SWQ6dm9pZCAwLHRoaXMuaGFzQXV0aGVudGljYXRpb249WChvLGwpfXJldHVybiAkKCkoZSxudWxsLFt7a2V5OiJmbGF0dGVuUm9sZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYWUoe30sZSx7fSx0LnJvbGUudmVuZG9yUm9sZVBlcm1pc3Npb25zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj10LnBlcm1pc3Npb24scj1uLnJlc291cmNlLnJlc291cmNlLG89bi5wcml2aWxlZ2U7cmV0dXJuIGFlKHt9LGUsdygpKHt9LHIsbykpfSkse30pKX0pLHt9KX19XSksJCgpKGUsW3trZXk6ImlzQW5vbnltb3VzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEodGhpcy5pZD4wKX19LHtrZXk6Imhhc1Blcm1pc3Npb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIWV8fCEhdGhpcy5wZXJtaXNzaW9ucyYmbmUoZSkuZXZlcnkoKGZ1bmN0aW9uKGUpe3ZhciBuPWUucGVybWlzc2lvbixyPWUucHJpdmlsZWdlO3JldHVybiB2b2lkIDAhPT10LnBlcm1pc3Npb25zW25dJiYoIXJ8fHQucGVybWlzc2lvbnNbbl09PT1yKX0pKX19LHtrZXk6Imhhc0ZlYXR1cmVDb250cm9sIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiFlfHwhIXRoaXMucmVzdHJpY3RlZEZlYXR1cmVzJiZuZShlKS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIXQucmVzdHJpY3RlZEZlYXR1cmVzW2VdfSkpfX0se2tleToiaGFzRmVhdHVyZUZsYWciLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiZW5hYmxlZCI7cmV0dXJuISFlJiYoISF0aGlzLmZlYXR1cmVGbGFncyYmdGhpcy5mZWF0dXJlRmxhZ3NbZV09PT10KX19XSksZX0oKTtmdW5jdGlvbiB1ZShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gc2UoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/dWUoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXt3KCkoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnVlKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfXZhciBsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7SigpKHRoaXMsZSksdygpKHRoaXMsInVzZXJGZWF0dXJlRmxhZ3MiLHt9KSx3KCkodGhpcywidXNlclJlc3RyaWN0ZWRGZWF0dXJlcyIsW10pLHRoaXMuaWRlbnRpdHk9dH1yZXR1cm4gJCgpKGUsW3trZXk6InNldEZlYXR1cmVGbGFncyIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5mZWF0dXJlRmxhZ3M9c2Uoe30sZSx7fSx0aGlzLnVzZXJGZWF0dXJlRmxhZ3MpLGZ1bmN0aW9uKGUsdCl7d2luZG93LmdldFVzZXJGZWF0dXJlcz1mdW5jdGlvbigpe3JldHVybiBzZSh7fSx3aW5kb3cuZ2V0VXNlckZlYXR1cmVzRGVmYXVsdHM/d2luZG93LmdldFVzZXJGZWF0dXJlc0RlZmF1bHRzKCk6e30se30sZSx7fSx3aW5kb3cuZ2V0VXNlckZlYXR1cmVzT3ZlcnJpZGVzP3dpbmRvdy5nZXRVc2VyRmVhdHVyZXNPdmVycmlkZXMoKTp7fSx7fSx0KX19KGUsdGhpcy51c2VyRmVhdHVyZUZsYWdzKX19LHtrZXk6InNldE92ZXJyaWRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS51c2VyRmVhdHVyZUZsYWdzLG49dm9pZCAwPT09dD97fTp0LHI9ZS51c2VyUmVzdHJpY3RlZEZlYXR1cmVzLG89dm9pZCAwPT09cj9bXTpyO3RoaXMudXNlckZlYXR1cmVGbGFncz1uLHRoaXMudXNlclJlc3RyaWN0ZWRGZWF0dXJlcz1vfX0se2tleToic2V0SWRlbnRpdHkiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudXNlclJlc3RyaWN0ZWRGZWF0dXJlcyxuPXRoaXMuZmVhdHVyZUZsYWdzO3RoaXMuaWRlbnRpdHk9bmV3IGllKGUse2ZlYXR1cmVGbGFnczpuLHVzZXJSZXN0cmljdGVkRmVhdHVyZXM6dH0pfX0se2tleToiaGFzUGVybWlzc2lvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmlkZW50aXR5JiZ0aGlzLmlkZW50aXR5Lmhhc1Blcm1pc3Npb24oZSl9fSx7a2V5OiJoYXNGZWF0dXJlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmlkZW50aXR5JiZ0aGlzLmlkZW50aXR5Lmhhc0ZlYXR1cmVDb250cm9sKGUpfX0se2tleToiaGFzRmVhdHVyZUZsYWciLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiZW5hYmxlZCI7cmV0dXJuISFlJiYoISF0aGlzLmZlYXR1cmVGbGFncyYmdGhpcy5mZWF0dXJlRmxhZ3NbZV09PT10KX19XSksZX0oKTt3KCkobGUsImluc3RhbmNlIixuZXcgbGUpO3ZhciBjZT1uZXcgRy5hLGZlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGNlLmZvcm1hdE1lc3NhZ2UoZSx0KX0sZGU9ZnVuY3Rpb24oKXtyZXR1cm4gY2UuZ2V0Q3VycmVudExvY2FsZSgpfSxwZT1FLmEuY3JlYXRlQ29udGV4dCh7aWRlbnRpdHk6bnVsbCxoYXNBdXRoZW50aWNhdGlvbjpmdW5jdGlvbigpe3JldHVybiExfX0pO2Z1bmN0aW9uIGhlKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB5ZShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9oZShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3coKShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6aGUoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gbWUoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufXZhciB2ZT17dXNlUmVxdWVzdDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89T2JqZWN0KF8udXNlU3RhdGUpKHtsb2FkaW5nOiEwfSksYT1LKCkobywyKSxpPWFbMF0sdT1hWzFdLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoeWUoe2xvYWRpbmc6ITF9LGUpKX07cmV0dXJuIE9iamVjdChfLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7aS5sb2FkaW5nfHx1KHtsb2FkaW5nOiEwfSksZS5hcHBseSh2b2lkIDAsbikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHMoe2RhdGE6ZX0pfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gcyh7ZXJyb3I6ZX0pfSkpfSksW2VdLmNvbmNhdChuKSksaX0sdXNlTGF6eVJlcXVlc3Q6ZnVuY3Rpb24oZSl7T2JqZWN0KF8udXNlRGVidWdWYWx1ZSkoZSk7dmFyIHQ9T2JqZWN0KF8udXNlU3RhdGUpKHtsb2FkaW5nOiExfSksbj1LKCkodCwyKSxyPW5bMF0sbz1uWzFdLGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyhmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9tZShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3coKShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6bWUoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHtsb2FkaW5nOiExLHF1ZXJ5OnR9LGUpKX07cmV0dXJuIE9iamVjdChfLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7ci5sb2FkaW5nJiZlKHIucXVlcnkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhKHtkYXRhOmV9LHIucXVlcnkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gYSh7ZXJyb3I6ZX0sci5xdWVyeSl9KSl9KSxbZSxyLmxvYWRpbmcsci5xdWVyeV0pLFtmdW5jdGlvbihlKXtyZXR1cm4gbyh7cXVlcnk6ZSxsb2FkaW5nOiEwfSl9LHJdfX0sZ2U9bigiY0RmNSIpLGJlPW4ubihnZSksd2U9bigibzBvMSIpLF9lPW4ubih3ZSksRWU9bigiUUlMbSIpLE9lPW4ubihFZSksa2U9bigieVhQVSIpLENlPW4ubihrZSkseGU9bigiYTFndSIpLFNlPW4ubih4ZSksRGU9bigiTnNiayIpLFRlPW4ubihEZSksTWU9bigiUEpZWiIpLFBlPW4ubihNZSksTmU9bigiN1cyaSIpLGplPW4ubihOZSksTGU9bigib1NobCIpLFJlPW4ubihMZSksSWU9bigiMjRJaSIpLEFlPW4ubihJZSksRmU9ZnVuY3Rpb24gZSh0LG4pe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG4pfSkpOk9iamVjdChGLmlzUGxhaW5PYmplY3QpKHQpP09iamVjdChGLnJlZHVjZSkodCwoZnVuY3Rpb24odCxyLG8pe3JldHVybiB0W24obyldPWUocixuKSx0fSkse30pOnR9O2Z1bmN0aW9uIEJlKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn12YXIgemUsS2U9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4gSigpKHRoaXMsdCksbj1TZSgpKHRoaXMsVGUoKSh0KS5jYWxsKHRoaXMsIkFQSSBFcnJvciIpKSxPYmplY3QuYXNzaWduKFBlKCkobiksZSksbn1yZXR1cm4gamUoKSh0LGUpLHR9KFJlKCkoRXJyb3IpKSxxZT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cudG9rZW5NYW5hZ2VyP3dpbmRvdy50b2tlbk1hbmFnZXIudG9rZW46IiJ9LFZlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9CZShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3coKShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6QmUoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LGUse2JvZHk6KHQ9ZS5ib2R5LEZlKHQsRi5jYW1lbENhc2UpKX0pO3ZhciB0fSxVZT1WZSxXZT1mdW5jdGlvbihlKXsoZnVuY3Rpb24oZSl7cmV0dXJuIHdpbmRvdy50b2tlbk1hbmFnZXImJjQwMT09PWUuc3RhdHVzfSkoZSkmJmZ1bmN0aW9uKGUpe3dpbmRvdy50b2tlbk1hbmFnZXIuZmV0Y2hUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7ZS5yZXNwb25zZS5yZXEuc2VuZCgpLnRoZW4oVWUpLmNhdGNoKChmdW5jdGlvbihlKXt0aHJvdyBuZXcgS2UoVmUoZS5yZXNwb25zZSkpfSkpfSkpfShlKTt2YXIgdD1lLnJlc3BvbnNlO3Rocm93IG5ldyBLZSh0P1ZlKHQpOmUpfSxZZT1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj10LnBhcmFtcyxyPXZvaWQgMD09PW4/e306bixvPXQuaGVhZGVycyxhPXZvaWQgMD09PW8/eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIixzZXNzaW9uOnFlKCl9Om8saT10LmZvcm1hdFJlc3BvbnNlLHU9dm9pZCAwPT09aXx8aTtyZXR1cm4gQWUuYS5nZXQoIi9ncmFzcy8iLmNvbmNhdChlKSkucXVlcnkocikuc2V0KGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiB1P1VlKGUpOmV9KSkuY2F0Y2goV2UpfSxIZT17Z2V0OlllfSxHZT0iIi5jb25jYXQoInNlYXJjaC9hcGkvdjEvIiwiY2F0YWxvZ3N1Z2dlc3QiKSxRZT0iIi5jb25jYXQoInVzZXJzIiwiL3VzZXJzL3Nlc3Npb24vYWx3IiksSmU9InJlc3VsdHMiLFplPVsiV09SS1NUQVRJT05fUFJPSkVDVCIsIldPUktTVEFUSU9OX1BST0RVQ1QiXSwkZT1bIldPUktTVEFUSU9OX1BST0pFQ1RfU1VCQUNDT1VOVCIsIldPUktTVEFUSU9OX1BST0RVQ1RfU1VCQUNDT1VOVCJdLFhlPXcoKSh7fSxKZSx7fSksZXQ9KHplPXt9LHcoKSh6ZSwicHJvZHVjdCIsWGUpLHcoKSh6ZSwicHJvamVjdCIsWGUpLHplKSx0dD1mdW5jdGlvbihlKXt2YXIgdD1lLnRlcm0sbj1lLnZlbmRvcklkLHI9ZS5zdWJhY2NvdW50SWQsbz1lLnBhZ2VTaXplLGE9ZS5jdXJyZW50UGFnZSxpPWVuY29kZVVSSUNvbXBvbmVudCh0KSx1PVtdLHM9J1siJy5jb25jYXQoKHI/JGU6WmUpLmpvaW4oJyIsIicpLCciXScpO2lmKHUucHVzaCgiY29udGV4dD0iLmNvbmNhdChzKSksdS5wdXNoKCJ0b2tlbj0iLmNvbmNhdCgiYzkwNDdhZmVmY2Q2IikpLHQmJnUucHVzaCgidGVybT0iLmNvbmNhdChpKSksbyYmdS5wdXNoKCJwYWdlX3NpemU9Ii5jb25jYXQobykpLGEmJnUucHVzaCgicGFnZT0iLmNvbmNhdChhKSksbnx8cil7dmFyIGw9cj8ic3ViYWNjb3VudF9pZD0iLmNvbmNhdChyKToidmVuZG9yX2lkPSIuY29uY2F0KG4pO3UucHVzaCgiZmlsdGVyLiIuY29uY2F0KGwpKX1yZXR1cm4iIi5jb25jYXQoR2UsIj8iKS5jb25jYXQodS5qb2luKCImIikpfSxudD17Y2F0YWxvZ1NlYXJjaDpmdW5jdGlvbigpe3ZhciBlPUNlKCkoX2UuYS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciBuLHIsbyxhLGksdTtyZXR1cm4gX2UuYS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihyPXQudGVybSxvPXQuc3ViYWNjb3VudElkLHImJnIudHJpbSgpKXtlLm5leHQ9MzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZXQpO2Nhc2UgMzpyZXR1cm4gYT10dCh0KSxlLm5leHQ9NixIZS5nZXQoYSk7Y2FzZSA2OnJldHVybiBpPWUuc2VudCx1PWkuYm9keSxlLmFicnVwdCgicmV0dXJuIiwobj17fSx3KCkobiwicHJvamVjdCIsT2JqZWN0KEYuZ2V0KSh1LG8/InByb2plY3RTdWJhY2NvdW50IjoicHJvamVjdCIse30pKSx3KCkobiwicHJvZHVjdCIsT2JqZWN0KEYuZ2V0KSh1LG8/InByb2R1Y3RTdWJhY2NvdW50IjoicHJvZHVjdCIse30pKSxuKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSxydD1mdW5jdGlvbihlLHQpe3JldHVybiIiLmNvbmNhdCgiYXNzZXRzIiwiL2ltYWdlL3ZlbmRvci8iKS5jb25jYXQoZSwiL2Fzc2V0LyIpLmNvbmNhdCh0fHwwKX0sb3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4iIi5jb25jYXQoImh0dHBzOi8vaW1hZ2VzLnRoZW9yY2hhcmQuY29tIikrIi92ZW5kb3IvdmVuZG9yX2ljb24vIi5jb25jYXQoZSwiLyIpLmNvbmNhdChlLCIvIikuY29uY2F0KHQsIi5wbmciKX0sYXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ImNvdmVyIjtyZXR1cm4iIi5jb25jYXQoImFzc2V0cyIsIi9pbWFnZS8iKS5jb25jYXQoZSwiLyIpLmNvbmNhdChuLCIvbG9jYXRpb24/aWRzPSIpLmNvbmNhdCh0LmpvaW4oIiwiKSl9LGl0PWZ1bmN0aW9uKCl7dmFyIGU9Q2UoKShfZS5hLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIG4scixvLGEsaTtyZXR1cm4gX2UuYS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihuPXQudmVuZG9yLHI9KG49dm9pZCAwPT09bj97fTpuKS52ZW5kb3JJZCxvPW4uaW1hZ2VBc3NldElkLHIpe2UubmV4dD01O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDU6aWYoIXQuaGFzRmVhdHVyZUZsYWcoImhlYWRlcl9pY29uX2VuZHBvaW50Iikpe2UubmV4dD0xMjticmVha31yZXR1cm4gZS5uZXh0PTgsSGUuZ2V0KHJ0KHIsbykpO2Nhc2UgODppZihhPWUuc2VudCwhKGk9YS50ZXh0KSl7ZS5uZXh0PTEyO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixpKTtjYXNlIDEyOmlmKCFvKXtlLm5leHQ9MTQ7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG90KHIsbykpO2Nhc2UgMTQ6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMTU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksdXQ9e2dldFByb2R1Y3RJbWFnZVVybHM6ZnVuY3Rpb24oKXt2YXIgZT1DZSgpKF9lLmEubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByLG87cmV0dXJuIF9lLmEud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYodC5sZW5ndGgpe2UubmV4dD0yO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix7fSk7Y2FzZSAyOnJldHVybiBlLm5leHQ9NCxIZS5nZXQoYXQoInByb2R1Y3QiLHQsbikpO2Nhc2UgNDpyZXR1cm4gcj1lLnNlbnQsbz1yLmJvZHksZS5hYnJ1cHQoInJldHVybiIsbyk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksZ2V0VmVuZG9ySWNvblVybDppdH07ZnVuY3Rpb24gc3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGx0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3N0KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dygpKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpzdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX12YXIgY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9TdHJpbmcoKX0sZnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O0ooKSh0aGlzLGUpLHcoKSh0aGlzLCJfbm9ybWFsaXplS2V5cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QoRi5yZWR1Y2UpKGUsKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbHQoe30sZSx3KCkoe30sY3QobiksdCkpfSkse30pfSkpLHRoaXMuY2FjaGU9dGhpcy5fbm9ybWFsaXplS2V5cyh0KX1yZXR1cm4gJCgpKGUsW3trZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FjaGVbY3QoZSldfX0se2tleToibm90SW5DYWNoZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiF0LmNhY2hlW2N0KGUpXX0pKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FjaGU9bHQoe30sdGhpcy5jYWNoZSx7fSx0aGlzLl9ub3JtYWxpemVLZXlzKGUpKSx0aGlzLmNhY2hlfX1dKSxlfSgpO2Z1bmN0aW9uIGR0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBwdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9kdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3coKShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZHQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaHQoZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9PWJlKCkoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwoZSx0fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09YmUoKShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PXQ/U3RyaW5nOk51bWJlcikoZSl9KGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09YmUoKSh0KT90OlN0cmluZyh0KX12YXIgeXQ9bmV3IGZ0LG10PW5ldyBmdCx2dD1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QoRi5mbGF0TWFwKShlLChmdW5jdGlvbihlLG4pe3JldHVybiBPYmplY3QoRi5tYXApKGUucmVzdWx0cywoZnVuY3Rpb24ocil7cmV0dXJue3R5cGU6bixzdWJ0eXBlOnIucHJvZHVjdENvbmZpZ3VyYXRpb24sY291bnQ6ZS50b3RhbEhpdHMsdGl0bGU6ci5yZWxlYXNlTmFtZXx8ci5wcm9qZWN0TmFtZSxzdWJ0aXRsZTpyLmFydGlzdE5hbWUsY29kZTpyLmRpc3BsYXlVcGN8fHIucHJvamVjdENvZGUsaW1hZ2VVcmw6ci5pbWFnZVVybCx2YWx1ZTpyLnJlbGVhc2VJZHx8ci5wcm9qZWN0SWQsZGF0YTpyLHRlcm06dH19KSl9KSl9LGd0PWZ1bmN0aW9uKCl7dmFyIGU9Q2UoKShfZS5hLm1hcmsoKGZ1bmN0aW9uIGUodCxuKXt2YXIgcixvLGEsaSx1LHMsbDtyZXR1cm4gX2UuYS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihyPXQucHJvZHVjdCxvPShyPXZvaWQgMD09PXI/e306cilbSmVdLGE9dm9pZCAwPT09bz97fTpvLGk9T2UoKShyLFtKZV0ubWFwKGh0KSksdT1PYmplY3QoRi5tYXApKGEsKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVsZWFzZUlkO3JldHVybiBwYXJzZUludCh0LDEwKX0pKSxzPW4ubm90SW5DYWNoZSh1KSxlLnByZXY9NSwhcy5sZW5ndGgpe2UubmV4dD0xMjticmVha31yZXR1cm4gZS5uZXh0PTksdXQuZ2V0UHJvZHVjdEltYWdlVXJscyhzKTtjYXNlIDk6ZS50MD1lLnNlbnQsZS5uZXh0PTEzO2JyZWFrO2Nhc2UgMTI6ZS50MD17fTtjYXNlIDEzOnJldHVybiBsPWUudDAsbi51cGRhdGUobCksZS5hYnJ1cHQoInJldHVybiIscHQoe30sdCx3KCkoe30sInByb2R1Y3QiLHB0KHt9LGksdygpKHt9LEplLE9iamVjdChGLm1hcCkoYSwoZnVuY3Rpb24oZSl7cmV0dXJuIHB0KHt9LGUse2ltYWdlVXJsOm4uZ2V0KGUucmVsZWFzZUlkKX0pfSkpKSkpKSk7Y2FzZSAxODpyZXR1cm4gZS5wcmV2PTE4LGUudDE9ZS5jYXRjaCg1KSxjb25zb2xlLmVycm9yKGUudDEpLGUuYWJydXB0KCJyZXR1cm4iLHQpO2Nhc2UgMjI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s1LDE4XV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGJ0PWZ1bmN0aW9uKCl7dmFyIGU9Q2UoKShfZS5hLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIG4scixvLGEsaSx1LHMsbCxjLGYsZCxwLGgseSxtLHY9YXJndW1lbnRzO3JldHVybiBfZS5hLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKG49di5sZW5ndGg+MSYmdm9pZCAwIT09dlsxXT92WzFdOnt9LHI9dC50ZXJtLG89bi5wYWdlU2l6ZSxhPW4ucGFnZU9mZnNldCxpPW4uaWRlbnRpdHksdT1uLmltYWdlQ2FjaGUscz12b2lkIDA9PT11P210OnUsbD1uLnF1ZXJ5Q2FjaGUsYz12b2lkIDA9PT1sP3l0OmwsZj1pLnZlbmRvcklkLGQ9aS5zdWJhY2NvdW50SWQsIShwPWMuZ2V0KHIpKSl7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHApO2Nhc2UgNzpyZXR1cm4gZS5uZXh0PTksbnQuY2F0YWxvZ1NlYXJjaCh7dGVybTpyLHBhZ2VTaXplOm8scGFnZU9mZnNldDphLHZlbmRvcklkOmYsc3ViYWNjb3VudElkOmR9KTtjYXNlIDk6cmV0dXJuIGg9ZS5zZW50LGUubmV4dD0xMixndChoLHMpO2Nhc2UgMTI6cmV0dXJuIHk9ZS5zZW50LG09dnQoeSxyKSxjLnVwZGF0ZSh3KCkoe30scixtKSksZS5hYnJ1cHQoInJldHVybiIsbSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx3dD17Y3JlYXRlR2xvYmFsU2VhcmNoUXVlcnk6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBidCh0LGUpfX19LF90PW4oIndJczEiKSxFdD1uKCJwVm5MIiksT3Q9bi5uKEV0KSxrdD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yNyA1M0g3VjEwaDYydjQzaC04TTcgMTZoNjJIN3ptMzcgNDhjOS45NDEgMCAxOC04LjA1OSAxOC0xOHMtOC4wNTktMTgtMTgtMTgtMTggOC4wNTktMTggMTggOC4wNTkgMTggMTggMTh6bTI0LjEwNyA3LjY5M2wtMTEuOC0xMS44IDExLjggMTEuOHoiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07a3QuZGlzcGxheU5hbWU9IlNlYXJjaFJlc3VsdHMiLGt0LmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBDdD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChrdCx7Y2xhc3NOYW1lOiJPdXRsaW5lIFNlYXJjaFJlc3VsdHMifSl9LHh0PW4oInlHNFoiKSxTdD1uLm4oeHQpLER0PW4oIlRTWVEiKSxUdD1uLm4oRHQpLE10PWZ1bmN0aW9uKCl7fSxQdD1uKCJVT3EwIiksTnQ9bi5uKFB0KTtmdW5jdGlvbiBqdChlKXtyZXR1cm4oanQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBMdCgpe3JldHVybihMdD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFJ0KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gSXQoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIEF0KGUsdCxuKXtyZXR1cm4oQXQ9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oZSx0KXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSYmbnVsbCE9PShlPUZ0KGUpKTspO3JldHVybiBlfShlLHQpO2lmKHIpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KTtyZXR1cm4gby5nZXQ/by5nZXQuY2FsbChuKTpvLnZhbHVlfX0pKGUsdCxufHxlKX1mdW5jdGlvbiBGdChlKXtyZXR1cm4oRnQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIEJ0KGUsdCl7cmV0dXJuKEJ0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX12YXIgenQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbixyLG8sYTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSxuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09anQodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P0l0KGUpOnR9KHRoaXMsRnQodCkuY2FsbCh0aGlzLGUpKSxyPUl0KG4pLGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNsb25lRWxlbWVudChlLHtzdHlsZTp7cG9zaXRpb246InN0YXRpYyIsd2lkdGg6dH19KX19LChvPSJyZW5kZXJFbGVtZW50IilpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWEsbi5yZW5kZXJPdXRlcj1uLl9yZW5kZXJPdXRlcixufXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmQnQoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6Il9yZW5kZXJPdXRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyluW3JdPWFyZ3VtZW50c1tyXTt2YXIgbz1BdChGdCh0LnByb3RvdHlwZSksInJlbmRlck91dGVyIix0aGlzKS5hcHBseSh0aGlzLG4pLGE9dGhpcy5wcm9wcy50ZXRoZXJQcm9wcztpZihvKXt2YXIgaT10aGlzLndyYXBwZXI/dGhpcy53cmFwcGVyLm9mZnNldFdpZHRoOm51bGw7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KE50LmEsTHQoe3JlbmRlckVsZW1lbnRUbzoiYm9keSIscmVmOiJ0ZXRoZXJlZC1jb21wb25lbnQiLGF0dGFjaG1lbnQ6InRvcCBsZWZ0Iix0YXJnZXRBdHRhY2htZW50OiJ0b3AgbGVmdCIsY29uc3RyYWludHM6W3t0bzoid2luZG93IixhdHRhY2htZW50OiJ0b2dldGhlciIscGluOlsidG9wIl19XX0sYSx7cmVuZGVyRWxlbWVudDp0aGlzLnJlbmRlckVsZW1lbnQobyxpKX0pKX19fV0pJiZSdChuLnByb3RvdHlwZSxyKSxvJiZSdChuLG8pLHR9KFN0LmEpO2Z1bmN0aW9uIEt0KGUpe3JldHVybihLdD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIHF0KCl7cmV0dXJuKHF0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVnQoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfWZ1bmN0aW9uIFV0KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gV3QoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBZdChlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PUt0KHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9HdChlKTp0fWZ1bmN0aW9uIEh0KGUpe3JldHVybihIdD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gR3QoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIFF0KGUsdCl7cmV0dXJuKFF0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBKdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe1p0KGUsdCxuW3RdKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBadChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyICR0PUp0KHtjbGFzc05hbWU6Vi5hLnN0cmluZyxjb250YWluZXJDbGFzc05hbWU6Vi5hLnN0cmluZyxpZDpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5udW1iZXJdKSxpbnB1dFByb3BzOlYuYS5vYmplY3QscGxhY2Vob2xkZXI6Vi5hLnN0cmluZyx2YWx1ZTpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5udW1iZXJdKSxvcHRpb25zOlYuYS5hcnJheU9mKFYuYS5zaGFwZSh7bGFiZWw6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLHZhbHVlOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLm51bWJlcl0pLmlzUmVxdWlyZWR9KSksbWVudVJlbmRlcmVyOlYuYS5mdW5jLG9uQ2hhbmdlOlYuYS5mdW5jLGRpc2FibGVkOlYuYS5ib29sLHJlcXVpcmVkOlYuYS5ib29sLHFhaWQ6Vi5hLnN0cmluZyxzZWxlY3RUeXBlOlYuYS5vbmVPZihbInNlbGVjdCIsInRldGhlciIsImFzeW5jIiwiY3JlYXRhYmxlIl0pLHRldGhlclByb3BzOlYuYS5vYmplY3QsbXVsdGk6Vi5hLmJvb2wsZHJvcFVwSWZPdXRPZlZpZXdwb3J0OlYuYS5ib29sfSxTdC5hLnByb3BUeXBlcyksWHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQmJnQudmFsdWUpfX0sZW49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47VXQodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gWnQoR3Qobj1ZdCh0aGlzLChlPUh0KHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwiaGFuZGxlT25PcGVuIiwoZnVuY3Rpb24oKXt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe2lmKG4uc2VsZWN0Q29tcG9uZW50KXt2YXIgZT13aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsdD1uLnNlbGVjdENvbXBvbmVudC53cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoIi5TZWxlY3QtbWVudS1vdXRlciIpO24uZmxpcERyb3Bkb3duSWZPdXRPZlZpZXdwb3J0KHQsZSl9fSkpfSkpLFp0KEd0KG4pLCJmbGlwRHJvcGRvd25JZk91dE9mVmlld3BvcnQiLChmdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bi5ib3R0b20+dCYmKGUuc3R5bGUudG9wPSIiLmNvbmNhdCgtMSpuLmhlaWdodCwicHgiKSl9KSksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJlF0KGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmNsYXNzTmFtZSxyPXQuY29udGFpbmVyQ2xhc3NOYW1lLG89dC5pZCxhPXQuaW5wdXRQcm9wcyxpPXQucGxhY2Vob2xkZXIsdT10LnZhbHVlLHM9dC5vcHRpb25zLGw9dC5tZW51UmVuZGVyZXIsYz10Lm9uQ2hhbmdlLGY9dC5kaXNhYmxlZCxkPXQucmVxdWlyZWQscD10LnFhaWQsaD10Lm11bHRpLHk9dC5zZWxlY3RUeXBlLG09dC50ZXRoZXJQcm9wcyx2PXQuZHJvcFVwSWZPdXRPZlZpZXdwb3J0LGc9VnQodCxbImNsYXNzTmFtZSIsImNvbnRhaW5lckNsYXNzTmFtZSIsImlkIiwiaW5wdXRQcm9wcyIsInBsYWNlaG9sZGVyIiwidmFsdWUiLCJvcHRpb25zIiwibWVudVJlbmRlcmVyIiwib25DaGFuZ2UiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwicWFpZCIsIm11bHRpIiwic2VsZWN0VHlwZSIsInRldGhlclByb3BzIiwiZHJvcFVwSWZPdXRPZlZpZXdwb3J0Il0pLGI9enQsdz0iYXN5bmMiPT09eSxfPSJjcmVhdGFibGUiPT09eTtpZigic2VsZWN0Ij09PXk/Yj1TdC5hOnc/Yj14dC5Bc3luYzpfJiYoYj14dC5DcmVhdGFibGUpLHYpaWYoZy5vbk9wZW4pe3ZhciBPPWcub25PcGVuO2cub25PcGVuPWZ1bmN0aW9uKCl7TygpLGUuaGFuZGxlT25PcGVuKCl9fWVsc2UgZy5vbk9wZW49dGhpcy5oYW5kbGVPbk9wZW47cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtpZDpwLGNsYXNzTmFtZTpyfSxFLmEuY3JlYXRlRWxlbWVudChiLHF0KHtjbGFzc05hbWU6VHQoKSgiU2VsZWN0SW5wdXQtc2VsZWN0IixuKSxpbnB1dFByb3BzOkp0KHtpZDpvfSxhKSxwbGFjZWhvbGRlcjppLHZhbHVlOnUsb3B0aW9uczpzLG1lbnVSZW5kZXJlcjpsLG9uQ2hhbmdlOmh8fHc/YzpYdChjKSxkaXNhYmxlZDpmLHJlcXVpcmVkOmQsaWQ6byxtdWx0aTpofSxnLHt0ZXRoZXJQcm9wczptLHJlZjpmdW5jdGlvbih0KXtlLnNlbGVjdENvbXBvbmVudD10fX0pKSl9fV0pJiZXdChuLnByb3RvdHlwZSxyKSxvJiZXdChuLG8pLHR9KEUuYS5Db21wb25lbnQpO2VuLmRpc3BsYXlOYW1lPSJTZWxlY3RJbnB1dCIsZW4ucHJvcFR5cGVzPSR0LGVuLmRlZmF1bHRQcm9wcz17b25DaGFuZ2U6TXQsc2VsZWN0VHlwZToic2VsZWN0IixtdWx0aTohMSxkcm9wVXBJZk91dE9mVmlld3BvcnQ6ITF9O3ZhciB0bj1lbixubj1mdW5jdGlvbihlKXt2YXIgdD1lLmNsYXNzTmFtZSxuPWUuaWQscj1lLnN2ZyxvPWUub25DbGljaztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse2NsYXNzTmFtZTp0LG9uQ2xpY2s6byxwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0scigpLEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHt4bGlua0hyZWY6IiMiLmNvbmNhdChuKX0pKX07bm4uZGlzcGxheU5hbWU9Ikljb24iLG5uLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsaWQ6Vi5hLnN0cmluZyxzdmc6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxvbkNsaWNrOlYuYS5mdW5jfSxubi5kZWZhdWx0UHJvcHM9e2NsYXNzTmFtZToiIn07dmFyIHJuPW5uLG9uPSJpY29uLXNlYXJjaCIsYW49ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOm9uLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEyLjEyMzczNDEsMTAuMTIzNzM0MSBMMTUsMTMgTDEzLDE1IEwxMC4xMjM3MzQxLDEyLjEyMzczNDEgQzkuMjEzODM3NzEsMTIuNjc5NjQ4MyA4LjE0NDMyOTkzLDEzIDcsMTMgQzMuNjg2MjkxNSwxMyAxLDEwLjMxMzcwODUgMSw3IEMxLDMuNjg2MjkxNSAzLjY4NjI5MTUsMSA3LDEgQzEwLjMxMzcwODUsMSAxMywzLjY4NjI5MTUgMTMsNyBDMTMsOC4xNDQzMjk5MyAxMi42Nzk2NDgzLDkuMjEzODM3NzEgMTIuMTIzNzM0MSwxMC4xMjM3MzQxIFogTTcsMTEgQzkuMjA5MTM5LDExIDExLDkuMjA5MTM5IDExLDcgQzExLDQuNzkwODYxIDkuMjA5MTM5LDMgNywzIEM0Ljc5MDg2MSwzIDMsNC43OTA4NjEgMyw3IEMzLDkuMjA5MTM5IDQuNzkwODYxLDExIDcsMTEgWiJ9KSl9O2FuLmRpc3BsYXlOYW1lPSJTVkdTZWFyY2giO3ZhciB1bj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOm9uLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXNlYXJjaCIpOiJJY29ucy1zZWFyY2giLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzphbn0pfTt1bi5kaXNwbGF5TmFtZT0iU2VhcmNoIix1bi5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBzbixsbj11bixjbj0oc249e30sdygpKHNuLCJwcm9kdWN0IiwiZ2xvYmFsU2VhcmNoUHJvZHVjdHNCdXR0b24iKSx3KCkoc24sInByb2plY3QiLCJnbG9iYWxTZWFyY2hQcm9qZWN0c0J1dHRvbiIpLHNuKSxmbj1mdW5jdGlvbihlKXt2YXIgdD1lLmdyb3VwQ291bnQsbj1lLnRvdGFsQ291bnQscj1lLmZvb3RlclR5cGUsbz1lLmZvcm1hdE1lc3NhZ2UsYT1lLnR5cGUsaT1lLmlkUHJlZml4LHU9ZS5vbkNsaWNrO2lmKCJsaW5rIj09PXIpe3ZhciBzPW8oIiIuY29uY2F0KGEsIlJlc3VsdHMiKSx7Y291bnQ6bn0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiR2xvYmFsU2VhcmNoUmVzdWx0cyIsIi1mb290ZXIiKSxvbkNsaWNrOnUsaWQ6aSYmY25bYV0/IiIuY29uY2F0KGksIi0iKS5jb25jYXQoY25bYV0pOnZvaWQgMH0scyxFLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToibWwtMSJ9LCLihpIiKSl9cmV0dXJuImxpbWl0ZWQiPT09ciYmdDxuP0UuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJHbG9iYWxTZWFyY2hSZXN1bHRzIiwiLWZvb3Rlci1zdGF0aWMiKX0sbygidG9vTWFueVJlc3VsdHMiKSk6RS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIkdsb2JhbFNlYXJjaFJlc3VsdHMiLCItZm9vdGVyIil9KX07Zm4ucHJvcFR5cGVzPXtncm91cENvdW50OlYuYS5udW1iZXIsdG90YWxDb3VudDpWLmEubnVtYmVyLGZvb3RlclR5cGU6Vi5hLnN0cmluZyx0eXBlOlYuYS5zdHJpbmcsZm9ybWF0TWVzc2FnZTpWLmEuZnVuYyxvbkNsaWNrOlYuYS5mdW5jLGlkUHJlZml4OlYuYS5zdHJpbmd9O3ZhciBkbj1mbixwbj1mdW5jdGlvbihlKXt2YXIgdD1lLm1lc3NhZ2U7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJHbG9iYWxTZWFyY2hSZXN1bHRzIiwiLWhlYWRpbmciKX0sdCl9O3BuLnByb3BUeXBlcz17bWVzc2FnZTpWLmEuc3RyaW5nfTt2YXIgaG49cG4seW49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47SigpKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuIG49U2UoKSh0aGlzLChlPVRlKCkodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSksdygpKFBlKCkobiksInJlbmRlckdyb3VwIiwoZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQuZm9jdXNlZE9wdGlvbixvPXQub3B0aW9uQ2xhc3NOYW1lLGE9dC5vcHRpb25Db21wb25lbnQsaT10Lm9wdGlvblJlbmRlcmVyLHU9dC52YWx1ZUFycmF5LHM9dC52YWx1ZUtleSxsPXQub25PcHRpb25SZWYsYz1PZSgpKHQsWyJmb2N1c2VkT3B0aW9uIiwib3B0aW9uQ2xhc3NOYW1lIiwib3B0aW9uQ29tcG9uZW50Iiwib3B0aW9uUmVuZGVyZXIiLCJ2YWx1ZUFycmF5IiwidmFsdWVLZXkiLCJvbk9wdGlvblJlZiJdKTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUsdCl7dmFyIG49dSYmdS5pbmRleE9mKGUpPi0xLGY9ZT09PXIsZD1UdCgpKG8seyJTZWxlY3Qtb3B0aW9uIjohMCwiaXMtc2VsZWN0ZWQiOm4sImlzLWZvY3VzZWQiOmYsImlzLWRpc2FibGVkIjplLmRpc2FibGVkfSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGEsT3QoKSh7fSxjLHtjbGFzc05hbWU6ZCxpc0Rpc2FibGVkOmUuZGlzYWJsZWQsaXNGb2N1c2VkOmYsaXNTZWxlY3RlZDpuLGtleToib3B0aW9uLSIuY29uY2F0KGVbc10pLG9wdGlvbjplLG9wdGlvbkluZGV4OnQscmVmOmZ1bmN0aW9uKGUpe3JldHVybiBsJiZsKGUsZil9fSksaShlLHQpKX0pKX0pKSxufXJldHVybiBqZSgpKHQsZSksJCgpKHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuZm9vdGVyVHlwZSxyPXQub3B0aW9ucyxvPXQuaWRQcmVmaXgsYT10Lm9uRm9vdGVyQ2xpY2ssaT10LmZvcm1hdE1lc3NhZ2U7cmV0dXJuIE9iamVjdChGLmZsYXRNYXApKE9iamVjdChGLmdyb3VwQnkpKHIsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGV9KSksKGZ1bmN0aW9uKHQscil7dmFyIHU9SygpKHQsMSlbMF0scz0odT12b2lkIDA9PT11P3t9OnUpLmNvdW50LGw9dm9pZCAwPT09cz8wOnMsYz11LnRlcm0sZj1pKCIiLmNvbmNhdChyLCJQbHVyYWwiKSk7cmV0dXJuW0UuYS5jcmVhdGVFbGVtZW50KGhuLHtrZXk6ImhlYWRlci0iLmNvbmNhdChyKSxtZXNzYWdlOmZ9KV0uY29uY2F0KGcoKShlLnJlbmRlckdyb3VwKHQpKSxbRS5hLmNyZWF0ZUVsZW1lbnQoZG4se2dyb3VwQ291bnQ6dC5sZW5ndGgsdG90YWxDb3VudDpsLGZvb3RlclR5cGU6bixmb3JtYXRNZXNzYWdlOmksa2V5OiJmb290ZXItIi5jb25jYXQociksdHlwZTpyLGlkUHJlZml4Om8sb25DbGljazpmdW5jdGlvbigpe3JldHVybiBhJiZhKHt0eXBlOnIsdGVybTpjfSl9fSldKX0pKX19XSksdH0oRS5hLkNvbXBvbmVudCk7dygpKHluLCJwcm9wVHlwZXMiLHtmb2N1c2VkT3B0aW9uOlYuYS5vYmplY3QsZm9vdGVyVHlwZTpWLmEuc3RyaW5nLG9wdGlvbkNsYXNzTmFtZTpWLmEuc3RyaW5nLG9wdGlvbkNvbXBvbmVudDpWLmEuZnVuYyxvcHRpb25SZW5kZXJlcjpWLmEuZnVuYyx2YWx1ZUFycmF5OlYuYS5hcnJheU9mKFYuYS5vYmplY3QpLHZhbHVlS2V5OlYuYS5zdHJpbmcsb25PcHRpb25SZWY6Vi5hLmZ1bmMsb25TZWxlY3Q6Vi5hLmZ1bmMsb25Gb290ZXJDbGljazpWLmEuZnVuYyxvcHRpb25zOlYuYS5hcnJheU9mKFYuYS5vYmplY3QpLGlkUHJlZml4OlYuYS5zdHJpbmcsZm9ybWF0TWVzc2FnZTpWLmEuZnVuY30pLHcoKSh5biwiZGVmYXVsdFByb3BzIix7b3B0aW9uczpbXSxmb3JtYXRNZXNzYWdlOmZ1bmN0aW9uKGUpe3JldHVybiBlfX0pO3ZhciBtbj15bix2bj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tdmlkZW8iLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTAuNSwzIEwxNS41LDMgTDE1LjUsMTMgTDAuNSwxMyBMMC41LDMgWiBNNi41LDUgTDYuNSwxMSBMMTAuNSw4IEw2LjUsNSBaIn0pKX07dm4uZGlzcGxheU5hbWU9IlNWR1ZpZGVvIjt2YXIgZ249ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi12aWRlbyIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtdmlkZW8iKToiSWNvbnMtdmlkZW8iLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp2bn0pfTtnbi5kaXNwbGF5TmFtZT0iVmlkZW8iLGduLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGJuPWduLHduPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1waHlzaWNhbC1hdWRpbyIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOCwxNSBDNC4xMzQwMDY3NSwxNSAxLDExLjg2NTk5MzIgMSw4IEMxLDQuMTM0MDA2NzUgNC4xMzQwMDY3NSwxIDgsMSBDMTEuODY1OTkzMiwxIDE1LDQuMTM0MDA2NzUgMTUsOCBDMTUsMTEuODY1OTkzMiAxMS44NjU5OTMyLDE1IDgsMTUgWiBNOCwxMS41IEM5LjkzMjk5NjYyLDExLjUgMTEuNSw5LjkzMjk5NjYyIDExLjUsOCBDMTEuNSw2LjA2NzAwMzM4IDkuOTMyOTk2NjIsNC41IDgsNC41IEM2LjA2NzAwMzM4LDQuNSA0LjUsNi4wNjcwMDMzOCA0LjUsOCBDNC41LDkuOTMyOTk2NjIgNi4wNjcwMDMzOCwxMS41IDgsMTEuNSBaIE04LDkuNSBDNy4xNzE1NzI4OCw5LjUgNi41LDguODI4NDI3MTIgNi41LDggQzYuNSw3LjE3MTU3Mjg4IDcuMTcxNTcyODgsNi41IDgsNi41IEM4LjgyODQyNzEyLDYuNSA5LjUsNy4xNzE1NzI4OCA5LjUsOCBDOS41LDguODI4NDI3MTIgOC44Mjg0MjcxMiw5LjUgOCw5LjUgWiJ9KSl9O3duLmRpc3BsYXlOYW1lPSJTVkdQaHlzaWNhbEF1ZGlvIjt2YXIgX249ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1waHlzaWNhbC1hdWRpbyIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtcGh5c2ljYWwtYXVkaW8iKToiSWNvbnMtcGh5c2ljYWwtYXVkaW8iLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp3bn0pfTtfbi5kaXNwbGF5TmFtZT0iUGh5c2ljYWxBdWRpbyIsX24ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgRW49X24sT249ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWRpZ2l0YWwtYXVkaW8iLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzLDAuNSBMMTMsMTEuNSBMMTIuOTg2MjY3OCwxMS41IEMxMi44NjE5MDY3LDEyLjYyNDk4NzYgMTEuOTA4MTM4NCwxMy41IDEwLjc1LDEzLjUgQzkuNTA3MzU5MzEsMTMuNSA4LjUsMTIuNDkyNjQwNyA4LjUsMTEuMjUgQzguNSwxMC4wMDczNTkzIDkuNTA3MzU5MzEsOSAxMC43NSw5IEMxMC44MzQ1MDIzLDkgMTAuOTE3OTE2NSw5LjAwNDY1ODMzIDExLDkuMDEzNzMyMTkgTDExLDMuOTc3Nzc3ODUgTDYsNS40MjIyMjIyNCBMNiwxMy41IEw1Ljk4NjI2NzgxLDEzLjUgQzUuODYxOTA2NzMsMTQuNjI0OTg3NiA0LjkwODEzODQxLDE1LjUgMy43NSwxNS41IEMyLjUwNzM1OTMxLDE1LjUgMS41LDE0LjQ5MjY0MDcgMS41LDEzLjI1IEMxLjUsMTIuMDA3MzU5MyAyLjUwNzM1OTMxLDExIDMuNzUsMTEgQzMuODM0NTAyMjcsMTEgMy45MTc5MTY1NCwxMS4wMDQ2NTgzIDQsMTEuMDEzNzMyMiBMNCwzIEwxMywwLjUgWiJ9KSl9O09uLmRpc3BsYXlOYW1lPSJTVkdEaWdpdGFsQXVkaW8iO3ZhciBrbj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWRpZ2l0YWwtYXVkaW8iLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWRpZ2l0YWwtYXVkaW8iKToiSWNvbnMtZGlnaXRhbC1hdWRpbyIsb25DbGljazplLm9uQ2xpY2ssc3ZnOk9ufSl9O2tuLmRpc3BsYXlOYW1lPSJEaWdpdGFsQXVkaW8iLGtuLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIENuPWtuLHhuPSIiLmNvbmNhdCgiR2xvYmFsU2VhcmNoUmVzdWx0cy1vcHRpb24iLCItaW1hZ2UiKSxTbj0iIi5jb25jYXQoIkdsb2JhbFNlYXJjaFJlc3VsdHMtb3B0aW9uIiwiLWltYWdlLWltZyIpLERuPSIiLmNvbmNhdCgiR2xvYmFsU2VhcmNoUmVzdWx0cy1vcHRpb24iLCItaW1hZ2UtcGxhY2Vob2xkZXIiKSxUbj0iIi5jb25jYXQoIkdsb2JhbFNlYXJjaFJlc3VsdHMtb3B0aW9uIiwiLXR5cGUiKSxNbj0iIi5jb25jYXQoIkdsb2JhbFNlYXJjaFJlc3VsdHMtb3B0aW9uIiwiLWJvZHkiKSxQbj0iIi5jb25jYXQoIkdsb2JhbFNlYXJjaFJlc3VsdHMtb3B0aW9uIiwiLWNvZGUiKSxObj0iIi5jb25jYXQoIkdsb2JhbFNlYXJjaFJlc3VsdHMtb3B0aW9uIiwiLXRpdGxlIiksam49IiIuY29uY2F0KCJHbG9iYWxTZWFyY2hSZXN1bHRzLW9wdGlvbiIsIi1zdWJ0aXRsZSIpLExuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuO0ooKSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybiBuPVNlKCkodGhpcywoZT1UZSgpKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpLHcoKShQZSgpKG4pLCJoYW5kbGVPbkNsaWNrIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnByb3BzLHQ9ZS5vblNlbGVjdCxyPWUub3B0aW9uO3QmJnQocil9KSksdygpKFBlKCkobiksInJlbmRlck9wdGlvbkljb24iLChmdW5jdGlvbihlKXtzd2l0Y2goZS50b0xvd2VyQ2FzZSgpKXtjYXNlImZpbG0iOmNhc2UibXVzaWMgdmlkZW8iOnJldHVybiBFLmEuY3JlYXRlRWxlbWVudChibixudWxsKTtjYXNlInBoeXNpY2FsIGF1ZGlvIjpyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoRW4sbnVsbCk7Y2FzZSJkaWdpdGFsIGF1ZGlvIjpyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoQ24sbnVsbCk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KSksbn1yZXR1cm4gamUoKSh0LGUpLCQoKSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2xhc3NOYW1lLG49ZS5vcHRpb24scj1uLmNvZGUsbz1uLnRpdGxlLGE9bi5zdWJ0aXRsZSxpPW4uaW1hZ2VVcmwsdT1uLnN1YnR5cGU7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6VHQoKSgiR2xvYmFsU2VhcmNoUmVzdWx0cy1vcHRpb24iLHQpLG9uQ2xpY2s6dGhpcy5oYW5kbGVPbkNsaWNrfSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOnhufSxpP0UuYS5jcmVhdGVFbGVtZW50KCJpbWciLHtjbGFzc05hbWU6U24sc3JjOmksYWx0OiIifSk6RS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpEbn0pKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOlRufSx1JiZ0aGlzLnJlbmRlck9wdGlvbkljb24odSkpLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6TW59LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Tm59LG8pLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6am59LGEpKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOlBufSxyKSl9fV0pLHR9KEUuYS5QdXJlQ29tcG9uZW50KTt3KCkoTG4sInByb3BUeXBlcyIse2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9wdGlvbjpWLmEuc2hhcGUoe2NvZGU6Vi5hLnN0cmluZyx0aXRsZTpWLmEuc3RyaW5nLHN1YnRpdGxlOlYuYS5zdHJpbmcsaW1hZ2VVcmw6Vi5hLnN0cmluZyxzdWJ0eXBlOlYuYS5zdHJpbmd9KS5pc1JlcXVpcmVkLG9uU2VsZWN0OlYuYS5mdW5jfSk7dmFyIFJuPSIiLmNvbmNhdCgiTG9hZGVyV3JhcHBlciIsIi1pdGVtIiksSW49IiIuY29uY2F0KCJMb2FkZXJXcmFwcGVyIiwiLXZlcnRpY2FsIiksQW49IiIuY29uY2F0KCJMb2FkZXJXcmFwcGVyIiwiLWhvcml6b250YWwiKSxGbj0iIi5jb25jYXQoIkxvYWRlcldyYXBwZXIiLCItbGluZSIpLEJuPSIiLmNvbmNhdCgiTG9hZGVyV3JhcHBlciIsIi1zcXVhcmUiKSx6bj1mdW5jdGlvbihlKXt2YXIgdD1lLmNsYXNzTmFtZSxuPWUuaGVhZGVyLHI9ZS5jb250ZW50LG89ZS5udW1iZXJPZkl0ZW1zLGE9ZS52ZXJ0aWNhbDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpUdCgpKCJMb2FkZXJXcmFwcGVyIixhP0luOkFuLHQpfSxuLE9iamVjdChGLnJhbmdlKShvKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7a2V5OmUsY2xhc3NOYW1lOlJufSxFLmEuY3JlYXRlRWxlbWVudChyLG51bGwpKX0pKSl9O3puLmRpc3BsYXlOYW1lPSJMb2FkZXJXcmFwcGVyIix6bi5MaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Rm59KX0sem4uU3F1YXJlPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Qm59KX0sem4ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxoZWFkZXI6Vi5hLm9uZU9mVHlwZShbVi5hLm5vZGUsVi5hLmZ1bmNdKSxjb250ZW50OlYuYS5vbmVPZlR5cGUoW1YuYS5lbGVtZW50LFYuYS5mdW5jXSksbnVtYmVyT2ZJdGVtczpWLmEubnVtYmVyLHZlcnRpY2FsOlYuYS5ib29sfSx6bi5kZWZhdWx0UHJvcHM9e2NvbnRlbnQ6em4uTGluZSxoZWFkZXI6bnVsbCxudW1iZXJPZkl0ZW1zOjEsdmVydGljYWw6ITF9O3ZhciBLbj16bixxbj0iIi5jb25jYXQoIkdsb2JhbFNlYXJjaFJlc3VsdHMiLCItaGVhZGluZyIpLFZuPSIiLmNvbmNhdCgiU2VhcmNoUmVzdWx0c0xvYWRpbmdJbmRpY2F0b3IiLCItY292ZXIiKSxVbj0iIi5jb25jYXQoIlNlYXJjaFJlc3VsdHNMb2FkaW5nSW5kaWNhdG9yIiwiLWxpbmUiKSxXbj0iIi5jb25jYXQoIlNlYXJjaFJlc3VsdHNMb2FkaW5nSW5kaWNhdG9yIiwiLWxpbmUtc20iKSxZbj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJHbG9iYWxTZWFyY2hSZXN1bHRzLW9wdGlvbiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6VHQoKShWbix4bil9KSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOk1ufSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOlR0KCkoVW4sTm4pfSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpVbn0pKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOldufSkpfSxIbj1mdW5jdGlvbihlKXt2YXIgdD1lLnRpdGxlO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChLbix7aGVhZGVyOkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6cW59LHQpLG51bWJlck9mSXRlbXM6Myxjb250ZW50OlluLHZlcnRpY2FsOiEwfSl9O0huLnByb3BUeXBlcz17dGl0bGU6Vi5hLnN0cmluZ307dmFyIEduPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2F0ZWdvcmllcyxuPWUuZm9ybWF0TWVzc2FnZTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiU2VhcmNoUmVzdWx0c0xvYWRpbmdJbmRpY2F0b3IiLCJkYXRhLXRlc3RpZCI6ImdzLWxvYWRpbmctaW5kaWNhdG9yIn0sdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChIbix7a2V5OmUsdGl0bGU6bigiIi5jb25jYXQoZSwiUGx1cmFsIikpfSl9KSkpfTtHbi5wcm9wVHlwZXM9e2NhdGVnb3JpZXM6Vi5hLmFycmF5T2YoVi5hLnN0cmluZyksZm9ybWF0TWVzc2FnZTpWLmEuZnVuYy5pc1JlcXVpcmVkfSxHbi5kZWZhdWx0UHJvcHM9e2NhdGVnb3JpZXM6WyJyZXN1bHQiXX07dmFyIFFuPUduLEpuPTAsWm49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtKKCkodGhpcyx0KSxuPVNlKCkodGhpcyxUZSgpKHQpLmNhbGwodGhpcyxlKSksdygpKFBlKCkobiksImZvcm1hdE1lc3NhZ2UiLChmdW5jdGlvbihlLHQpe3JldHVybigwLG4ucHJvcHMuZm9ybWF0TWVzc2FnZSkoIiIuY29uY2F0KCJnbG9iYWxTZWFyY2giLCIuIikuY29uY2F0KGUpLHQpfSkpLHcoKShQZSgpKG4pLCJoYW5kbGVJbnB1dENoYW5nZSIsKGZ1bmN0aW9uKGUpe2lmKCFuLl9kaXNwb3NlZCl7dmFyIHQ9ZS50cmltKCkscj1uLnN0YXRlLnF1ZXJ5VGVybTtpZih0IT09cil7dmFyIG89bi5wcm9wcyxhPW8ub25TZWFyY2gsaT0oMCxvLmlkU2VxdWVuY2UpKCk7bi5zZXRTdGF0ZSh7cXVlcnlJZDppLHF1ZXJ5VGVybTp0fSwoZnVuY3Rpb24oKXtyZXR1cm4gYSYmYSh7dGVybTp0LHF1ZXJ5SWQ6aX0pfSkpfX19KSksdygpKFBlKCkobiksImhhbmRsZUNoYW5nZSIsKGZ1bmN0aW9uKGUpe2lmKCFuLl9kaXNwb3NlZCl7dmFyIHQ9bi5wcm9wcyxyPXQub25TZWxlY3Qsbz10Lm9wdGlvbnM7aWYocil7dmFyIGE9by5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlPT09ZX0pKSxpPUsoKShhLDEpWzBdO2kmJnIoaSl9fX0pKSx3KCkoUGUoKShuKSwiaGFuZGxlRm9vdGVyQ2xpY2siLChmdW5jdGlvbihlKXtpZighbi5fZGlzcG9zZWQpe3ZhciB0PW4ucHJvcHMub25TZWxlY3Q7dCYmdChlKX19KSksbi5zdGF0ZT17cXVlcnlJZDowLHF1ZXJ5VGVybToiIn07dmFyIHI9ZS5kZWJvdW5jZVRpbWU7cmV0dXJuIHImJihuLmhhbmRsZUlucHV0Q2hhbmdlPU9iamVjdChGLmRlYm91bmNlKShuLmhhbmRsZUlucHV0Q2hhbmdlLHIse3RyYWlsaW5nOiEwfSkpLG59cmV0dXJuIGplKCkodCxlKSwkKCkodCxbe2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0YXRlLnF1ZXJ5SWQ7cmV0dXJuIGUucXVlcnlJZD09PXR9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9kaXNwb3NlZD0hMH19LHtrZXk6Im5vUmVzdWx0c1RleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUubG9hZGluZyxuPWUuZXJyb3Iscj1lLmNhdGVnb3JpZXMsbz10aGlzLnN0YXRlLnF1ZXJ5VGVybTtyZXR1cm4gbj9FLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJlcnJvci10ZXh0In0sdGhpcy5mb3JtYXRNZXNzYWdlKCJlcnJvciIpKTp0P0UuYS5jcmVhdGVFbGVtZW50KFFuLHtmb3JtYXRNZXNzYWdlOnRoaXMuZm9ybWF0TWVzc2FnZSxjYXRlZ29yaWVzOnJ9KTpvP0UuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Im5vcmVzdWx0cy1jb250YWluZXIifSxFLmEuY3JlYXRlRWxlbWVudChDdCxudWxsKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJub3Jlc3VsdHMtdGV4dCJ9LHRoaXMuZm9ybWF0TWVzc2FnZSgibm9SZXN1bHQiLHtxdWVyeTpvfSkpKTpudWxsfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5hdXRvRm9jdXMscj10LmZvb3RlclR5cGUsbz10LmlkUHJlZml4LGE9dC5vcHRpb25zLGk9dC5sb2FkaW5nLHU9dC5vcGVuT25Gb2N1cztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiR2xvYmFsU2VhcmNoUmVzdWx0cyIsaWQ6bz8iIi5jb25jYXQobywiLSIpLmNvbmNhdCgiZ2xvYmFsU2VhcmNoUmVzdWx0cyIpOnZvaWQgMH0sRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQodG4se2F1dG9mb2N1czpuLGxhYmVsS2V5OiJ0aXRsZSIsdmFsdWVLZXk6InZhbHVlIixvcHRpb25zOmk/W106YSxpc0xvYWRpbmc6aSxmaWx0ZXJPcHRpb25zOiExLHBsYWNlaG9sZGVyOnRoaXMuZm9ybWF0TWVzc2FnZSgicGxhY2Vob2xkZXIiKSxub1Jlc3VsdHNUZXh0OnRoaXMubm9SZXN1bHRzVGV4dCgpLG9uSW5wdXRDaGFuZ2U6dGhpcy5oYW5kbGVJbnB1dENoYW5nZSxvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxvcHRpb25Db21wb25lbnQ6TG4sb3Blbk9uRm9jdXM6dSxtZW51UmVuZGVyZXI6ZnVuY3Rpb24odCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KG1uLE90KCkoe30sdCx7Zm9vdGVyVHlwZTpyLG9uRm9vdGVyQ2xpY2s6ZS5oYW5kbGVGb290ZXJDbGljayxmb3JtYXRNZXNzYWdlOmUuZm9ybWF0TWVzc2FnZX0pKX19KSxFLmEuY3JlYXRlRWxlbWVudCgic3BhbiIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudChsbix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiR2xvYmFsU2VhcmNoUmVzdWx0cyIsIi1zZWFyY2giKX0pKSkpfX1dKSx0fShfLkNvbXBvbmVudCk7dygpKFpuLCJwcm9wVHlwZXMiLHthdXRvRm9jdXM6Vi5hLmJvb2wsaWRQcmVmaXg6Vi5hLnN0cmluZyxmb290ZXJUeXBlOlYuYS5zdHJpbmcsZm9ybWF0TWVzc2FnZTpWLmEuZnVuYyxjYXRlZ29yaWVzOlYuYS5hcnJheU9mKFYuYS5zdHJpbmcpLGxvYWRpbmc6Vi5hLmJvb2wsb3B0aW9uczpWLmEuYXJyYXlPZihWLmEub2JqZWN0KSxlcnJvcjpWLmEuYm9vbCxxdWVyeUlkOlYuYS5udW1iZXIsb25TZWFyY2g6Vi5hLmZ1bmMsb25TZWxlY3Q6Vi5hLmZ1bmMsZGVib3VuY2VUaW1lOlYuYS5udW1iZXIsaWRTZXF1ZW5jZTpWLmEuZnVuYyxvcGVuT25Gb2N1czpWLmEuYm9vbH0pLHcoKShabiwiZGVmYXVsdFByb3BzIix7YXV0b0ZvY3VzOiExLGZvb3RlclR5cGU6ImxpbmsiLGZvcm1hdE1lc3NhZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGlkU2VxdWVuY2U6ZnVuY3Rpb24oKXtyZXR1cm4rK0pufSxvcHRpb25zOltdLHF1ZXJ5SWQ6MCxkZWJvdW5jZVRpbWU6MzAwLG9wZW5PbkZvY3VzOiExfSk7dmFyICRuPVpuLFhuPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10LnByb2plY3RJZCxvPXQucmVsZWFzZUlkO3N3aXRjaChlKXtjYXNlInByb2plY3QiOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iL3Byb2plY3QvIi5jb25jYXQoZSl9KHIpO2Nhc2UicHJvZHVjdCI6cmV0dXJuKG49dC5wcm9kdWN0VHlwZUlkKSYmMz09PXBhcnNlSW50KG4sMTApP2Z1bmN0aW9uKGUpe3JldHVybiIvcmVsZWFzZWJ1aWxkZXIvdmlldz9yZWxlYXNlX2lkPSIuY29uY2F0KGUpfShvKTpmdW5jdGlvbihlKXt2YXIgdD1lLnByb2R1Y3RDb25maWd1cmF0aW9uO3JldHVybiB0JiYibXVzaWMgdmlkZW8iPT09dC50b0xvd2VyQ2FzZSgpfSh0KT9mdW5jdGlvbihlLHQpe3JldHVybiIiLmNvbmNhdChZKGUsdCksIi92aWRlbyIpfShyLG8pOlkocixvKTtkZWZhdWx0OnJldHVybiBudWxsfX0sZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5oaXN0b3J5LG49ZS5zZXRBY3RpdmUscj1lLmlzU3BhUGFnZSxvPWUubG9jYXRpb24sYT12b2lkIDA9PT1vP3dpbmRvdy5sb2NhdGlvbjpvO3JldHVybiBPYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe3ZhciBvPWUudHlwZSxpPWUudGVybSx1PWUuZGF0YSxzPXU/WG4obyx1KTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IiI7c3dpdGNoKGUpe2Nhc2UicHJvamVjdCI6cmV0dXJuIFUodCk7Y2FzZSJwcm9kdWN0IjpyZXR1cm4gVyh0KTtkZWZhdWx0OnJldHVybiBudWxsfX0obyxpKTtzJiYocj8obiYmbighMSksdC5wdXNoKHMpKTphLmFzc2lnbihzKSl9KSxbdCxuLHJdKX0sdHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hdXRvRm9jdXMsbj1lLmlkUHJlZml4LHI9ZS5pZFNlcXVlbmNlLG89ZS5oaXN0b3J5LGE9ZS5zZXRBY3RpdmUsaT1lLmlzU3BhUGFnZSx1PU9iamVjdChfLnVzZUNvbnRleHQpKHBlKS5pZGVudGl0eSxzPXZlLnVzZUxhenlSZXF1ZXN0KHd0LmNyZWF0ZUdsb2JhbFNlYXJjaFF1ZXJ5KHtpZGVudGl0eTp1fSkpLGw9SygpKHMsMiksYz1sWzBdLGY9bFsxXSxkPWYubG9hZGluZyxwPWYuZGF0YSxoPWYuZXJyb3IseT1mLnF1ZXJ5LG09KHk9dm9pZCAwPT09eT97fTp5KS5xdWVyeUlkLHY9ZXIoe2hpc3Rvcnk6byxpZGVudGl0eTp1LHNldEFjdGl2ZTphLGlzU3BhUGFnZTppfSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCRuLHthdXRvRm9jdXM6dCxpZFByZWZpeDpuLG9uU2VsZWN0OnYsb25TZWFyY2g6Yyxsb2FkaW5nOmQsb3B0aW9uczpwLHF1ZXJ5SWQ6bSxlcnJvcjohIWgsY2F0ZWdvcmllczpbInByb2plY3QiLCJwcm9kdWN0Il0sZm9ybWF0TWVzc2FnZTpmZSxpZFNlcXVlbmNlOnJ9KX07dHIucHJvcFR5cGVzPXthdXRvRm9jdXM6Vi5hLmJvb2wsaWRQcmVmaXg6Vi5hLnN0cmluZyxpZFNlcXVlbmNlOlYuYS5mdW5jLGhpc3Rvcnk6Vi5hLm9iamVjdC5pc1JlcXVpcmVkLHNldEFjdGl2ZTpWLmEuZnVuYyxpc1NwYVBhZ2U6Vi5hLmJvb2x9LHRyLmRlZmF1bHRQcm9wcz17aXNTcGFQYWdlOiExfTt2YXIgbnI9T2JqZWN0KF90LmEpKHRyKSxycj0obigicWJUUSIpLGZ1bmN0aW9uKGUpe3ZhciB0PWUuZXJyb3Isbj12b2lkIDA9PT10PyIiOnQscj1lLnRlcm0sbz12b2lkIDA9PT1yPyJkZWZhdWx0IjpyO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJFcnJvck1lc3NhZ2UifSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJlcnJvci10ZXh0In0sZmUoIiIuY29uY2F0KCJlcnJvcnMiLCIuIikuY29uY2F0KG8pKSksbiYmRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZXJyb3ItZGV0YWlscyJ9LGZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgdD1lLm1lc3NhZ2Usbj1lLmVycm9yLHI9dm9pZCAwPT09bj97fTpuLG89ZS5zdGF0dXNDb2RlLGE9dm9pZCAwPT09bz8iQ0xJRU5UIjpvLGk9ZS5zdGF0dXNUZXh0LHU9dm9pZCAwPT09aT8iRVJST1IiOmkscz1yLm1lc3NhZ2U7cmV0dXJuIHZvaWQgMD09PXM/dHx8IiIuY29uY2F0KGEsIiAiKS5jb25jYXQodSk6c30obikpKX0pO3JyLnByb3BUeXBlcz17dGVybTpWLmEuc3RyaW5nLGVycm9yOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLnNoYXBlKHttZXNzYWdlOlYuYS5zdHJpbmd9KV0pfTt2YXIgb3I9cnIsYXI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4gSigpKHRoaXMsdCksKG49U2UoKSh0aGlzLFRlKCkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e2Vycm9yOm51bGx9LG59cmV0dXJuIGplKCkodCxlKSwkKCkodCxbe2tleToiY29tcG9uZW50RGlkQ2F0Y2giLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe2Vycm9yOmV9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmNoaWxkcmVuLHQ9dGhpcy5zdGF0ZS5lcnJvcjtyZXR1cm4gdD9FLmEuY3JlYXRlRWxlbWVudChvcix7ZXJyb3I6dH0pOmV9fV0pLHR9KEUuYS5Db21wb25lbnQpO3coKShhciwicHJvcFR5cGVzIix7Y2hpbGRyZW46Vi5hLmVsZW1lbnR9KTt2YXIgaXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGFyLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoZSxudWxsKSl9fSx1cj1uKCJvRkZKIik7bigiUWREbiIpO2Z1bmN0aW9uIHNyKCl7cmV0dXJuKHNyPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbHIoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99bigiSzlTNiIpO3ZhciBjcj1uKCJRTGFQIiksZnI9bi5uKGNyKTtmdW5jdGlvbiBkcihlKXtyZXR1cm4iZGVmYXVsdCIrZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnN1YnN0cigxKX1mdW5jdGlvbiBwcihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbChlLHR8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09dD9TdHJpbmc6TnVtYmVyKShlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfWZ1bmN0aW9uIGhyKGUsdCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLnJlZHVjZSgoZnVuY3Rpb24obixyKXt2YXIgbyxhPW4saT1hW2RyKHIpXSx1PWFbcl0scz1scihhLFtkcihyKSxyXS5tYXAocHIpKSxsPXRbcl0sYz1mdW5jdGlvbihlLHQsbil7dmFyIHI9T2JqZWN0KF8udXNlUmVmKSh2b2lkIDAhPT1lKSxvPU9iamVjdChfLnVzZVN0YXRlKSh0KSxhPW9bMF0saT1vWzFdLHU9dm9pZCAwIT09ZSxzPXIuY3VycmVudDtyZXR1cm4gci5jdXJyZW50PXUsIXUmJnMmJmEhPT10JiZpKHQpLFt1P2U6YSxPYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KHQ+MT90LTE6MCksbz0xO288dDtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtuJiZuLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KHIpKSxpKGUpfSksW25dKV19KHUsaSxlW2xdKSxmPWNbMF0sZD1jWzFdO3JldHVybiBzcih7fSxzLCgobz17fSlbcl09ZixvW2xdPWQsbykpfSksZSl9ZnVuY3Rpb24geXIoZSx0KXtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuX19wcm90b19fPXR9bigiVkNMOCIpO24oIlFBMHAiKTt2YXIgbXI9RS5hLmNyZWF0ZUNvbnRleHQoe30pO21yLkNvbnN1bWVyLG1yLlByb3ZpZGVyO2Z1bmN0aW9uIHZyKGUsdCl7dmFyIG49T2JqZWN0KF8udXNlQ29udGV4dCkobXIpO3JldHVybiBlfHxuW3RdfHx0fXZhciBncj1FLmEuY3JlYXRlQ29udGV4dChudWxsKSxicj1FLmEuY3JlYXRlQ29udGV4dChudWxsKSx3cj1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLFtdLnNsaWNlKTtmdW5jdGlvbiBfcihlLHQpe3JldHVybiB3cihlLnF1ZXJ5U2VsZWN0b3JBbGwodCkpfWZ1bmN0aW9uIEVyKCl7cmV0dXJuIE9iamVjdChfLnVzZVJlZHVjZXIpKChmdW5jdGlvbihlKXtyZXR1cm4hZX0pLCExKVsxXX12YXIgT3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2Z1bmN0aW9uKHQpe2UuY3VycmVudD10fTplfTt2YXIga3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0KF8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49T3IoZSkscj1Pcih0KTtyZXR1cm4gZnVuY3Rpb24oZSl7biYmbihlKSxyJiZyKGUpfX0oZSx0KX0pLFtlLHRdKX0sQ3I9RS5hLmNyZWF0ZUNvbnRleHQobnVsbCkseHI9RS5hLmNyZWF0ZUNvbnRleHQoKSxTcj1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lP1N0cmluZyhlKTp0fHxudWxsfSxEcj14cixUcj1FLmEuY3JlYXRlQ29udGV4dChudWxsKSxNcj1mdW5jdGlvbigpe30sUHI9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWUuYXMsYT12b2lkIDA9PT1vPyJ1bCI6byxpPWUub25TZWxlY3QsdT1lLmFjdGl2ZUtleSxzPWUucm9sZSxsPWUub25LZXlEb3duLGM9bHIoZSxbImFzIiwib25TZWxlY3QiLCJhY3RpdmVLZXkiLCJyb2xlIiwib25LZXlEb3duIl0pLGY9RXIoKSxkPU9iamVjdChfLnVzZVJlZikoITEpLHA9T2JqZWN0KF8udXNlQ29udGV4dCkoRHIpLGg9T2JqZWN0KF8udXNlQ29udGV4dCkoVHIpO2gmJihzPXN8fCJ0YWJsaXN0Iix1PWguYWN0aXZlS2V5LG49aC5nZXRDb250cm9sbGVkSWQscj1oLmdldENvbnRyb2xsZXJJZCk7dmFyIHk9T2JqZWN0KF8udXNlUmVmKShudWxsKSxtPWZ1bmN0aW9uKGUpe2lmKCF5LmN1cnJlbnQpcmV0dXJuIG51bGw7dmFyIHQ9X3IoeS5jdXJyZW50LCJbZGF0YS1yYi1ldmVudC1rZXldOm5vdCguZGlzYWJsZWQpIiksbj15LmN1cnJlbnQucXVlcnlTZWxlY3RvcigiLmFjdGl2ZSIpLHI9dC5pbmRleE9mKG4pO2lmKC0xPT09cilyZXR1cm4gbnVsbDt2YXIgbz1yK2U7cmV0dXJuIG8+PXQubGVuZ3RoJiYobz0wKSxvPDAmJihvPXQubGVuZ3RoLTEpLHRbb119LHY9ZnVuY3Rpb24oZSx0KXtudWxsIT1lJiYoaSYmaShlLHQpLHAmJnAoZSx0KSl9O09iamVjdChfLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7aWYoeS5jdXJyZW50JiZkLmN1cnJlbnQpe3ZhciBlPXkuY3VycmVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1yYi1ldmVudC1rZXldLmFjdGl2ZSIpO2UmJmUuZm9jdXMoKX1kLmN1cnJlbnQ9ITF9KSk7dmFyIGc9a3IodCx5KTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoRHIuUHJvdmlkZXIse3ZhbHVlOnZ9LEUuYS5jcmVhdGVFbGVtZW50KENyLlByb3ZpZGVyLHt2YWx1ZTp7cm9sZTpzLGFjdGl2ZUtleTpTcih1KSxnZXRDb250cm9sbGVkSWQ6bnx8TXIsZ2V0Q29udHJvbGxlcklkOnJ8fE1yfX0sRS5hLmNyZWF0ZUVsZW1lbnQoYSxzcih7fSxjLHtvbktleURvd246ZnVuY3Rpb24oZSl7dmFyIHQ7c3dpdGNoKGwmJmwoZSksZS5rZXkpe2Nhc2UiQXJyb3dMZWZ0IjpjYXNlIkFycm93VXAiOnQ9bSgtMSk7YnJlYWs7Y2FzZSJBcnJvd1JpZ2h0IjpjYXNlIkFycm93RG93biI6dD1tKDEpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufXQmJihlLnByZXZlbnREZWZhdWx0KCksdih0LmRhdGFzZXQucmJFdmVudEtleSxlKSxkLmN1cnJlbnQ9ITAsZigpKX0scmVmOmcscm9sZTpzfSkpKSl9KSksTnI9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuY2xhc3NOYW1lLG89ZS5jaGlsZHJlbixhPWUuYXMsaT12b2lkIDA9PT1hPyJkaXYiOmEsdT1scihlLFsiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImFzIl0pO3JldHVybiBuPXZyKG4sIm5hdi1pdGVtIiksRS5hLmNyZWF0ZUVsZW1lbnQoaSxzcih7fSx1LHtyZWY6dCxjbGFzc05hbWU6VHQoKShyLG4pfSksbyl9KSk7TnIuZGlzcGxheU5hbWU9Ik5hdkl0ZW0iO3ZhciBqcj1Ocjt2YXIgTHI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lfSkpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgQXJndW1lbnQgVHlwZSwgbXVzdCBvbmx5IHByb3ZpZGUgZnVuY3Rpb25zLCB1bmRlZmluZWQsIG9yIG51bGwuIik7cmV0dXJuIG51bGw9PT1lP3Q6ZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylyW29dPWFyZ3VtZW50c1tvXTtlLmFwcGx5KHRoaXMsciksdC5hcHBseSh0aGlzLHIpfX0pLG51bGwpfTtmdW5jdGlvbiBScihlKXtyZXR1cm4hZXx8IiMiPT09ZS50cmltKCl9dmFyIElyPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYXMscj12b2lkIDA9PT1uPyJhIjpuLG89ZS5kaXNhYmxlZCxhPWUub25LZXlEb3duLGk9bHIoZSxbImFzIiwiZGlzYWJsZWQiLCJvbktleURvd24iXSksdT1mdW5jdGlvbihlKXt2YXIgdD1pLmhyZWYsbj1pLm9uQ2xpY2s7KG98fFJyKHQpKSYmZS5wcmV2ZW50RGVmYXVsdCgpLG8/ZS5zdG9wUHJvcGFnYXRpb24oKTpuJiZuKGUpfTtyZXR1cm4gUnIoaS5ocmVmKSYmKGkucm9sZT1pLnJvbGV8fCJidXR0b24iLGkuaHJlZj1pLmhyZWZ8fCIjIiksbyYmKGkudGFiSW5kZXg9LTEsaVsiYXJpYS1kaXNhYmxlZCJdPSEwKSxFLmEuY3JlYXRlRWxlbWVudChyLHNyKHtyZWY6dH0saSx7b25DbGljazp1LG9uS2V5RG93bjpMcigoZnVuY3Rpb24oZSl7IiAiPT09ZS5rZXkmJihlLnByZXZlbnREZWZhdWx0KCksdShlKSl9KSxhKX0pKX0pKTtJci5kaXNwbGF5TmFtZT0iU2FmZUFuY2hvciI7dmFyIEFyPUlyO3ZhciBGcj1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoXy51c2VSZWYpKGUpO3JldHVybiBPYmplY3QoXy51c2VFZmZlY3QpKChmdW5jdGlvbigpe3QuY3VycmVudD1lfSksW2VdKSx0fTtmdW5jdGlvbiBCcihlKXt2YXIgdD1GcihlKTtyZXR1cm4gT2JqZWN0KF8udXNlQ2FsbGJhY2spKChmdW5jdGlvbigpe3JldHVybiB0LmN1cnJlbnQmJnQuY3VycmVudC5hcHBseSh0LGFyZ3VtZW50cyl9KSxbdF0pfXZhciB6cj1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFjdGl2ZSxyPWUuY2xhc3NOYW1lLG89ZS50YWJJbmRleCxhPWUuZXZlbnRLZXksaT1lLm9uU2VsZWN0LHU9ZS5vbkNsaWNrLHM9ZS5hcyxsPWxyKGUsWyJhY3RpdmUiLCJjbGFzc05hbWUiLCJ0YWJJbmRleCIsImV2ZW50S2V5Iiwib25TZWxlY3QiLCJvbkNsaWNrIiwiYXMiXSksYz1TcihhLGwuaHJlZiksZj1PYmplY3QoXy51c2VDb250ZXh0KShEciksZD1PYmplY3QoXy51c2VDb250ZXh0KShDcikscD1uO2QmJihsLnJvbGV8fCJ0YWJsaXN0IiE9PWQucm9sZXx8KGwucm9sZT0idGFiIiksbFsiZGF0YS1yYi1ldmVudC1rZXkiXT1jLGwuaWQ9ZC5nZXRDb250cm9sbGVySWQoYyksbFsiYXJpYS1jb250cm9scyJdPWQuZ2V0Q29udHJvbGxlZElkKGMpLHA9bnVsbD09biYmbnVsbCE9Yz9kLmFjdGl2ZUtleT09PWM6biksInRhYiI9PT1sLnJvbGUmJihsLnRhYkluZGV4PXA/bzotMSxsWyJhcmlhLXNlbGVjdGVkIl09cCk7dmFyIGg9QnIoKGZ1bmN0aW9uKGUpe3UmJnUoZSksbnVsbCE9YyYmKGkmJmkoYyxlKSxmJiZmKGMsZSkpfSkpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChzLHNyKHt9LGwse3JlZjp0LG9uQ2xpY2s6aCxjbGFzc05hbWU6VHQoKShyLHAmJiJhY3RpdmUiKX0pKX0pKTt6ci5kZWZhdWx0UHJvcHM9e2Rpc2FibGVkOiExfTt2YXIgS3I9enIscXI9e2Rpc2FibGVkOiExLGFzOkFyfSxWcj1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5kaXNhYmxlZCxvPWUuY2xhc3NOYW1lLGE9ZS5ocmVmLGk9ZS5ldmVudEtleSx1PWUub25TZWxlY3Qscz1lLmFzLGw9bHIoZSxbImJzUHJlZml4IiwiZGlzYWJsZWQiLCJjbGFzc05hbWUiLCJocmVmIiwiZXZlbnRLZXkiLCJvblNlbGVjdCIsImFzIl0pO3JldHVybiBuPXZyKG4sIm5hdi1saW5rIiksRS5hLmNyZWF0ZUVsZW1lbnQoS3Isc3Ioe30sbCx7aHJlZjphLHJlZjp0LGV2ZW50S2V5OmksYXM6cyxkaXNhYmxlZDpyLG9uU2VsZWN0OnUsY2xhc3NOYW1lOlR0KCkobyxuLHImJiJkaXNhYmxlZCIpfSkpfSkpO1ZyLmRpc3BsYXlOYW1lPSJOYXZMaW5rIixWci5kZWZhdWx0UHJvcHM9cXI7dmFyIFVyPVZyLFdyPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhPWhyKGUse2FjdGl2ZUtleToib25TZWxlY3QifSksaT1hLmFzLHU9dm9pZCAwPT09aT8iZGl2IjppLHM9YS5ic1ByZWZpeCxsPWEudmFyaWFudCxjPWEuZmlsbCxmPWEuanVzdGlmeSxkPWEubmF2YmFyLHA9YS5jbGFzc05hbWUsaD1hLmNoaWxkcmVuLHk9YS5hY3RpdmVLZXksbT1scihhLFsiYXMiLCJic1ByZWZpeCIsInZhcmlhbnQiLCJmaWxsIiwianVzdGlmeSIsIm5hdmJhciIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiYWN0aXZlS2V5Il0pO3M9dnIocywibmF2Iik7dmFyIHY9T2JqZWN0KF8udXNlQ29udGV4dCkoZ3IpLGc9T2JqZWN0KF8udXNlQ29udGV4dCkoYnIpO3JldHVybiB2PyhyPXYuYnNQcmVmaXgsZD1udWxsPT1kfHxkKTpnJiYobz1nLmNhcmRIZWFkZXJCc1ByZWZpeCksRS5hLmNyZWF0ZUVsZW1lbnQoUHIsc3Ioe2FzOnUscmVmOnQsYWN0aXZlS2V5OnksY2xhc3NOYW1lOlR0KCkocCwobj17fSxuW3NdPSFkLG5bcisiLW5hdiJdPWQsbltvKyItIitsXT0hIW8sbltzKyItIitsXT0hIWwsbltzKyItZmlsbCJdPWMsbltzKyItanVzdGlmaWVkIl09ZixuKSl9LG0pLGgpfSkpO1dyLmRpc3BsYXlOYW1lPSJOYXYiLFdyLmRlZmF1bHRQcm9wcz17anVzdGlmeTohMSxmaWxsOiExfSxXci5JdGVtPWpyLFdyLkxpbms9VXI7dmFyIFlyPVdyLEhyPS8tKC4pL2c7dmFyIEdyPWZ1bmN0aW9uKGUpe3JldHVybiBlWzBdLnRvVXBwZXJDYXNlKCkrKHQ9ZSx0LnJlcGxhY2UoSHIsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pKSkuc2xpY2UoMSk7dmFyIHR9O2Z1bmN0aW9uIFFyKGUsdCl7dmFyIG49dm9pZCAwPT09dD97fTp0LHI9bi5kaXNwbGF5TmFtZSxvPXZvaWQgMD09PXI/R3IoZSk6cixhPW4uQ29tcG9uZW50LGk9dm9pZCAwPT09YT8iZGl2IjphLHU9bi5kZWZhdWx0UHJvcHMscz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24odCxuKXt2YXIgcj10LmNsYXNzTmFtZSxvPXQuYnNQcmVmaXgsYT10LmFzLHU9dm9pZCAwPT09YT9pOmEscz1scih0LFsiY2xhc3NOYW1lIiwiYnNQcmVmaXgiLCJhcyJdKSxsPXZyKG8sZSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHUsc3Ioe3JlZjpuLGNsYXNzTmFtZTpUdCgpKHIsbCl9LHMpKX0pKTtyZXR1cm4gcy5kZWZhdWx0UHJvcHM9dSxzLmRpc3BsYXlOYW1lPW8sc312YXIgSnI9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuY2xhc3NOYW1lLG89ZS5hcyxhPWxyKGUsWyJic1ByZWZpeCIsImNsYXNzTmFtZSIsImFzIl0pO249dnIobiwibmF2YmFyLWJyYW5kIik7dmFyIGk9b3x8KGEuaHJlZj8iYSI6InNwYW4iKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoaSxzcih7fSxhLHtyZWY6dCxjbGFzc05hbWU6VHQoKShyLG4pfSkpfSkpO0pyLmRpc3BsYXlOYW1lPSJOYXZiYXJCcmFuZCI7dmFyIFpyPUpyO2Z1bmN0aW9uICRyKGUpe3JldHVybiBlJiZlLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fWZ1bmN0aW9uIFhyKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PSRyKGUpO3JldHVybiB0JiZ0LmRlZmF1bHRWaWV3fHx3aW5kb3d9KGUpLmdldENvbXB1dGVkU3R5bGUoZSx0KX12YXIgZW89LyhbQS1aXSkvZzt2YXIgdG89L15tcy0vO2Z1bmN0aW9uIG5vKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGVvLCItJDEiKS50b0xvd2VyQ2FzZSgpfShlKS5yZXBsYWNlKHRvLCItbXMtIil9dmFyIHJvPS9eKCh0cmFuc2xhdGV8cm90YXRlfHNjYWxlKShYfFl8WnwzZCk/fG1hdHJpeCgzZCk/fHBlcnNwZWN0aXZlfHNrZXcoWHxZKT8pJC9pO3ZhciBvbz1mdW5jdGlvbihlLHQpe3ZhciBuPSIiLHI9IiI7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBlLnN0eWxlLmdldFByb3BlcnR5VmFsdWUobm8odCkpfHxYcihlKS5nZXRQcm9wZXJ0eVZhbHVlKG5vKHQpKTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgYT10W29dO2F8fDA9PT1hPyFmdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhcm8udGVzdChlKSl9KG8pP24rPW5vKG8pKyI6ICIrYSsiOyI6cis9bysiKCIrYSsiKSAiOmUuc3R5bGUucmVtb3ZlUHJvcGVydHkobm8obykpfSkpLHImJihuKz0idHJhbnNmb3JtOiAiK3IrIjsiKSxlLnN0eWxlLmNzc1RleHQrPSI7IitufSxhbz0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGlvPSExLHVvPSExO3RyeXt2YXIgc289e2dldCBwYXNzaXZlKCl7cmV0dXJuIGlvPSEwfSxnZXQgb25jZSgpe3JldHVybiB1bz1pbz0hMH19O2FvJiYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHNvLHNvKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsc28sITApKX1jYXRjaChlKXt9dmFyIGxvPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHImJiJib29sZWFuIiE9dHlwZW9mIHImJiF1byl7dmFyIG89ci5vbmNlLGE9ci5jYXB0dXJlLGk9bjshdW8mJm8mJihpPW4uX19vbmNlfHxmdW5jdGlvbiBlKHIpe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsYSksbi5jYWxsKHRoaXMscil9LG4uX19vbmNlPWkpLGUuYWRkRXZlbnRMaXN0ZW5lcih0LGksaW8/cjphKX1lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpfTt2YXIgY289ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ciYmImJvb2xlYW4iIT10eXBlb2Ygcj9yLmNhcHR1cmU6cjtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLG8pLG4uX19vbmNlJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLl9fb25jZSxvKX07dmFyIGZvPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBsbyhlLHQsbixyKSxmdW5jdGlvbigpe2NvKGUsdCxuLHIpfX0scG89YW8mJiJvbnRyYW5zaXRpb25lbmQiaW4gd2luZG93O2Z1bmN0aW9uIGhvKGUsdCxuKXt2b2lkIDA9PT1uJiYobj01KTt2YXIgcj0hMSxvPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cnx8ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTt0LmluaXRFdmVudCgidHJhbnNpdGlvbmVuZCIsITAsITApLGUuZGlzcGF0Y2hFdmVudCh0KX0oZSl9KSx0K24pLGE9Zm8oZSwidHJhbnNpdGlvbmVuZCIsKGZ1bmN0aW9uKCl7cj0hMH0pLHtvbmNlOiEwfSk7cmV0dXJuIGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KG8pLGEoKX19dmFyIHlvPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcG8/KG51bGw9PW4mJihyPW9vKGUsInRyYW5zaXRpb25EdXJhdGlvbiIpfHwiIixvPS0xPT09ci5pbmRleE9mKCJtcyIpPzFlMzoxLG49cGFyc2VGbG9hdChyKSpvfHwwKSxobyhlLG4pLGZvKGUsInRyYW5zaXRpb25lbmQiLHQpKTpobyhlLDAsMCk7dmFyIHIsb30sbW89ITEsdm89RS5hLmNyZWF0ZUNvbnRleHQobnVsbCksZ289ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByO3I9ZS5jYWxsKHRoaXMsdCxuKXx8dGhpczt2YXIgbyxhPW4mJiFuLmlzTW91bnRpbmc/dC5lbnRlcjp0LmFwcGVhcjtyZXR1cm4gci5hcHBlYXJTdGF0dXM9bnVsbCx0LmluP2E/KG89ImV4aXRlZCIsci5hcHBlYXJTdGF0dXM9ImVudGVyaW5nIik6bz0iZW50ZXJlZCI6bz10LnVubW91bnRPbkV4aXR8fHQubW91bnRPbkVudGVyPyJ1bm1vdW50ZWQiOiJleGl0ZWQiLHIuc3RhdGU9e3N0YXR1czpvfSxyLm5leHRDYWxsYmFjaz1udWxsLHJ9eXIodCxlKSx0LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmluJiYidW5tb3VudGVkIj09PXQuc3RhdHVzP3tzdGF0dXM6ImV4aXRlZCJ9Om51bGx9O3ZhciBuPXQucHJvdG90eXBlO3JldHVybiBuLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdGF0dXMoITAsdGhpcy5hcHBlYXJTdGF0dXMpfSxuLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKGUhPT10aGlzLnByb3BzKXt2YXIgbj10aGlzLnN0YXRlLnN0YXR1czt0aGlzLnByb3BzLmluPyJlbnRlcmluZyIhPT1uJiYiZW50ZXJlZCIhPT1uJiYodD0iZW50ZXJpbmciKToiZW50ZXJpbmciIT09biYmImVudGVyZWQiIT09bnx8KHQ9ImV4aXRpbmciKX10aGlzLnVwZGF0ZVN0YXR1cyghMSx0KX0sbi5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCl9LG4uZ2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scj10aGlzLnByb3BzLnRpbWVvdXQ7cmV0dXJuIGU9dD1uPXIsbnVsbCE9ciYmIm51bWJlciIhPXR5cGVvZiByJiYoZT1yLmV4aXQsdD1yLmVudGVyLG49dm9pZCAwIT09ci5hcHBlYXI/ci5hcHBlYXI6dCkse2V4aXQ6ZSxlbnRlcjp0LGFwcGVhcjpufX0sbi51cGRhdGVTdGF0dXM9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT1lJiYoZT0hMSksbnVsbCE9PXQpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7dmFyIG49ay5hLmZpbmRET01Ob2RlKHRoaXMpOyJlbnRlcmluZyI9PT10P3RoaXMucGVyZm9ybUVudGVyKG4sZSk6dGhpcy5wZXJmb3JtRXhpdChuKX1lbHNlIHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCYmImV4aXRlZCI9PT10aGlzLnN0YXRlLnN0YXR1cyYmdGhpcy5zZXRTdGF0ZSh7c3RhdHVzOiJ1bm1vdW50ZWQifSl9LG4ucGVyZm9ybUVudGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPXRoaXMucHJvcHMuZW50ZXIsbz10aGlzLmNvbnRleHQ/dGhpcy5jb250ZXh0LmlzTW91bnRpbmc6dCxhPXRoaXMuZ2V0VGltZW91dHMoKSxpPW8/YS5hcHBlYXI6YS5lbnRlcjshdCYmIXJ8fG1vP3RoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6ImVudGVyZWQifSwoZnVuY3Rpb24oKXtuLnByb3BzLm9uRW50ZXJlZChlKX0pKToodGhpcy5wcm9wcy5vbkVudGVyKGUsbyksdGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czoiZW50ZXJpbmcifSwoZnVuY3Rpb24oKXtuLnByb3BzLm9uRW50ZXJpbmcoZSxvKSxuLm9uVHJhbnNpdGlvbkVuZChlLGksKGZ1bmN0aW9uKCl7bi5zYWZlU2V0U3RhdGUoe3N0YXR1czoiZW50ZXJlZCJ9LChmdW5jdGlvbigpe24ucHJvcHMub25FbnRlcmVkKGUsbyl9KSl9KSl9KSkpfSxuLnBlcmZvcm1FeGl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnByb3BzLmV4aXQscj10aGlzLmdldFRpbWVvdXRzKCk7biYmIW1vPyh0aGlzLnByb3BzLm9uRXhpdChlKSx0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOiJleGl0aW5nIn0sKGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkV4aXRpbmcoZSksdC5vblRyYW5zaXRpb25FbmQoZSxyLmV4aXQsKGZ1bmN0aW9uKCl7dC5zYWZlU2V0U3RhdGUoe3N0YXR1czoiZXhpdGVkIn0sKGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkV4aXRlZChlKX0pKX0pKX0pKSk6dGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czoiZXhpdGVkIn0sKGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkV4aXRlZChlKX0pKX0sbi5jYW5jZWxOZXh0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5uZXh0Q2FsbGJhY2smJih0aGlzLm5leHRDYWxsYmFjay5jYW5jZWwoKSx0aGlzLm5leHRDYWxsYmFjaz1udWxsKX0sbi5zYWZlU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt0PXRoaXMuc2V0TmV4dENhbGxiYWNrKHQpLHRoaXMuc2V0U3RhdGUoZSx0KX0sbi5zZXROZXh0Q2FsbGJhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPSEwO3JldHVybiB0aGlzLm5leHRDYWxsYmFjaz1mdW5jdGlvbihyKXtuJiYobj0hMSx0Lm5leHRDYWxsYmFjaz1udWxsLGUocikpfSx0aGlzLm5leHRDYWxsYmFjay5jYW5jZWw9ZnVuY3Rpb24oKXtuPSExfSx0aGlzLm5leHRDYWxsYmFja30sbi5vblRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuc2V0TmV4dENhbGxiYWNrKG4pO3ZhciByPW51bGw9PXQmJiF0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyO2UmJiFyPyh0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyJiZ0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKGUsdGhpcy5uZXh0Q2FsbGJhY2spLG51bGwhPXQmJnNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssdCkpOnNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssMCl9LG4ucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5zdGF0dXM7aWYoInVubW91bnRlZCI9PT1lKXJldHVybiBudWxsO3ZhciB0PXRoaXMucHJvcHMsbj10LmNoaWxkcmVuLHI9bHIodCxbImNoaWxkcmVuIl0pO2lmKGRlbGV0ZSByLmluLGRlbGV0ZSByLm1vdW50T25FbnRlcixkZWxldGUgci51bm1vdW50T25FeGl0LGRlbGV0ZSByLmFwcGVhcixkZWxldGUgci5lbnRlcixkZWxldGUgci5leGl0LGRlbGV0ZSByLnRpbWVvdXQsZGVsZXRlIHIuYWRkRW5kTGlzdGVuZXIsZGVsZXRlIHIub25FbnRlcixkZWxldGUgci5vbkVudGVyaW5nLGRlbGV0ZSByLm9uRW50ZXJlZCxkZWxldGUgci5vbkV4aXQsZGVsZXRlIHIub25FeGl0aW5nLGRlbGV0ZSByLm9uRXhpdGVkLCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiBFLmEuY3JlYXRlRWxlbWVudCh2by5Qcm92aWRlcix7dmFsdWU6bnVsbH0sbihlLHIpKTt2YXIgbz1FLmEuQ2hpbGRyZW4ub25seShuKTtyZXR1cm4oRS5hLmNyZWF0ZUVsZW1lbnQodm8uUHJvdmlkZXIse3ZhbHVlOm51bGx9LEUuYS5jbG9uZUVsZW1lbnQobyxyKSkpfSx0fShFLmEuQ29tcG9uZW50KTtmdW5jdGlvbiBibygpe31nby5jb250ZXh0VHlwZT12byxnby5wcm9wVHlwZXM9e30sZ28uZGVmYXVsdFByb3BzPXtpbjohMSxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITEsZW50ZXI6ITAsZXhpdDohMCxvbkVudGVyOmJvLG9uRW50ZXJpbmc6Ym8sb25FbnRlcmVkOmJvLG9uRXhpdDpibyxvbkV4aXRpbmc6Ym8sb25FeGl0ZWQ6Ym99LGdvLlVOTU9VTlRFRD0wLGdvLkVYSVRFRD0xLGdvLkVOVEVSSU5HPTIsZ28uRU5URVJFRD0zLGdvLkVYSVRJTkc9NDt2YXIgd28sX289Z287ZnVuY3Rpb24gRW8oZSl7ZS5vZmZzZXRIZWlnaHR9dmFyIE9vPXtoZWlnaHQ6WyJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iXSx3aWR0aDpbIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCJdfTt2YXIga289KCh3bz17fSkuZXhpdGVkPSJjb2xsYXBzZSIsd28uZXhpdGluZz0iY29sbGFwc2luZyIsd28uZW50ZXJpbmc9ImNvbGxhcHNpbmciLHdvLmVudGVyZWQ9ImNvbGxhcHNlIHNob3ciLHdvKSxDbz17aW46ITEsdGltZW91dDozMDAsbW91bnRPbkVudGVyOiExLHVubW91bnRPbkV4aXQ6ITEsYXBwZWFyOiExLGRpbWVuc2lvbjoiaGVpZ2h0IixnZXREaW1lbnNpb25WYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRbIm9mZnNldCIrZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSldLHI9T29bZV07cmV0dXJuIG4rcGFyc2VJbnQob28odCxyWzBdKSwxMCkrcGFyc2VJbnQob28odCxyWzFdKSwxMCl9fSx4bz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylyW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4odD1lLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHIpKXx8dGhpcykuaGFuZGxlRW50ZXI9ZnVuY3Rpb24oZSl7ZS5zdHlsZVt0LmdldERpbWVuc2lvbigpXT0iMCJ9LHQuaGFuZGxlRW50ZXJpbmc9ZnVuY3Rpb24oZSl7dmFyIG49dC5nZXREaW1lbnNpb24oKTtlLnN0eWxlW25dPXQuX2dldFNjcm9sbERpbWVuc2lvblZhbHVlKGUsbil9LHQuaGFuZGxlRW50ZXJlZD1mdW5jdGlvbihlKXtlLnN0eWxlW3QuZ2V0RGltZW5zaW9uKCldPW51bGx9LHQuaGFuZGxlRXhpdD1mdW5jdGlvbihlKXt2YXIgbj10LmdldERpbWVuc2lvbigpO2Uuc3R5bGVbbl09dC5wcm9wcy5nZXREaW1lbnNpb25WYWx1ZShuLGUpKyJweCIsRW8oZSl9LHQuaGFuZGxlRXhpdGluZz1mdW5jdGlvbihlKXtlLnN0eWxlW3QuZ2V0RGltZW5zaW9uKCldPW51bGx9LHR9eXIodCxlKTt2YXIgbj10LnByb3RvdHlwZTtyZXR1cm4gbi5nZXREaW1lbnNpb249ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5wcm9wcy5kaW1lbnNpb24/dGhpcy5wcm9wcy5kaW1lbnNpb24oKTp0aGlzLnByb3BzLmRpbWVuc2lvbn0sbi5fZ2V0U2Nyb2xsRGltZW5zaW9uVmFsdWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVsic2Nyb2xsIit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0rInB4In0sbi5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQub25FbnRlcixyPXQub25FbnRlcmluZyxvPXQub25FbnRlcmVkLGE9dC5vbkV4aXQsaT10Lm9uRXhpdGluZyx1PXQuY2xhc3NOYW1lLHM9dC5jaGlsZHJlbixsPWxyKHQsWyJvbkVudGVyIiwib25FbnRlcmluZyIsIm9uRW50ZXJlZCIsIm9uRXhpdCIsIm9uRXhpdGluZyIsImNsYXNzTmFtZSIsImNoaWxkcmVuIl0pO2RlbGV0ZSBsLmRpbWVuc2lvbixkZWxldGUgbC5nZXREaW1lbnNpb25WYWx1ZTt2YXIgYz1Mcih0aGlzLmhhbmRsZUVudGVyLG4pLGY9THIodGhpcy5oYW5kbGVFbnRlcmluZyxyKSxkPUxyKHRoaXMuaGFuZGxlRW50ZXJlZCxvKSxwPUxyKHRoaXMuaGFuZGxlRXhpdCxhKSxoPUxyKHRoaXMuaGFuZGxlRXhpdGluZyxpKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoX28sc3Ioe2FkZEVuZExpc3RlbmVyOnlvfSxsLHsiYXJpYS1leHBhbmRlZCI6bC5yb2xlP2wuaW46bnVsbCxvbkVudGVyOmMsb25FbnRlcmluZzpmLG9uRW50ZXJlZDpkLG9uRXhpdDpwLG9uRXhpdGluZzpofSksKGZ1bmN0aW9uKHQsbil7cmV0dXJuIEUuYS5jbG9uZUVsZW1lbnQocyxzcih7fSxuLHtjbGFzc05hbWU6VHQoKSh1LHMucHJvcHMuY2xhc3NOYW1lLGtvW3RdLCJ3aWR0aCI9PT1lLmdldERpbWVuc2lvbigpJiYid2lkdGgiKX0pKX0pKX0sdH0oRS5hLkNvbXBvbmVudCk7eG8uZGVmYXVsdFByb3BzPUNvO3ZhciBTbz14byxEbz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuLHI9ZS5ic1ByZWZpeCxvPWxyKGUsWyJjaGlsZHJlbiIsImJzUHJlZml4Il0pO3JldHVybiByPXZyKHIsIm5hdmJhci1jb2xsYXBzZSIpLEUuYS5jcmVhdGVFbGVtZW50KGdyLkNvbnN1bWVyLG51bGwsKGZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChTbyxzcih7aW46ISghZXx8IWUuZXhwYW5kZWQpfSxvKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7cmVmOnQsY2xhc3NOYW1lOnJ9LG4pKX0pKX0pKTtEby5kaXNwbGF5TmFtZT0iTmF2YmFyQ29sbGFwc2UiO3ZhciBUbz1EbyxNbz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5jbGFzc05hbWUsbz1lLmNoaWxkcmVuLGE9ZS5sYWJlbCxpPWUuYXMsdT12b2lkIDA9PT1pPyJidXR0b24iOmkscz1lLm9uQ2xpY2ssbD1scihlLFsiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImxhYmVsIiwiYXMiLCJvbkNsaWNrIl0pO249dnIobiwibmF2YmFyLXRvZ2dsZXIiKTt2YXIgYz1PYmplY3QoXy51c2VDb250ZXh0KShncil8fHt9LGY9Yy5vblRvZ2dsZSxkPWMuZXhwYW5kZWQscD1CcigoZnVuY3Rpb24oZSl7cyYmcyhlKSxmJiZmKCl9KSk7cmV0dXJuImJ1dHRvbiI9PT11JiYobC50eXBlPSJidXR0b24iKSxFLmEuY3JlYXRlRWxlbWVudCh1LHNyKHt9LGwse3JlZjp0LG9uQ2xpY2s6cCwiYXJpYS1sYWJlbCI6YSxjbGFzc05hbWU6VHQoKShyLG4sIWQmJiJjb2xsYXBzZWQiKX0pLG98fEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOm4rIi1pY29uIn0pKX0pKTtNby5kaXNwbGF5TmFtZT0iTmF2YmFyVG9nZ2xlIixNby5kZWZhdWx0UHJvcHM9e2xhYmVsOiJUb2dnbGUgbmF2aWdhdGlvbiJ9O3ZhciBQbz1NbyxObz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1ocihlLHtleHBhbmRlZDoib25Ub2dnbGUifSkscj1uLmJzUHJlZml4LG89bi5leHBhbmQsYT1uLnZhcmlhbnQsaT1uLmJnLHU9bi5maXhlZCxzPW4uc3RpY2t5LGw9bi5jbGFzc05hbWUsYz1uLmNoaWxkcmVuLGY9bi5hcyxkPXZvaWQgMD09PWY/Im5hdiI6ZixwPW4uZXhwYW5kZWQsaD1uLm9uVG9nZ2xlLHk9bi5vblNlbGVjdCxtPW4uY29sbGFwc2VPblNlbGVjdCx2PWxyKG4sWyJic1ByZWZpeCIsImV4cGFuZCIsInZhcmlhbnQiLCJiZyIsImZpeGVkIiwic3RpY2t5IiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJhcyIsImV4cGFuZGVkIiwib25Ub2dnbGUiLCJvblNlbGVjdCIsImNvbGxhcHNlT25TZWxlY3QiXSk7cj12cihyLCJuYXZiYXIiKTt2YXIgZz1PYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7eSYmeS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSxtJiZwJiZoKCExKX0pLFt5LG0scCxoXSk7dm9pZCAwPT09di5yb2xlJiYibmF2IiE9PWQmJih2LnJvbGU9Im5hdmlnYXRpb24iKTt2YXIgYj1yKyItZXhwYW5kIjsic3RyaW5nIj09dHlwZW9mIG8mJihiPWIrIi0iK28pO3ZhciB3PU9iamVjdChfLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybntvblRvZ2dsZTpmdW5jdGlvbigpe3JldHVybiBoKCFwKX0sYnNQcmVmaXg6cixleHBhbmRlZDpwfX0pLFtyLHAsaF0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChnci5Qcm92aWRlcix7dmFsdWU6d30sRS5hLmNyZWF0ZUVsZW1lbnQoRHIuUHJvdmlkZXIse3ZhbHVlOmd9LEUuYS5jcmVhdGVFbGVtZW50KGQsc3Ioe3JlZjp0fSx2LHtjbGFzc05hbWU6VHQoKShsLHIsbyYmYixhJiZyKyItIithLGkmJiJiZy0iK2kscyYmInN0aWNreS0iK3MsdSYmImZpeGVkLSIrdSl9KSxjKSkpfSkpO05vLmRlZmF1bHRQcm9wcz17ZXhwYW5kOiEwLHZhcmlhbnQ6ImxpZ2h0Iixjb2xsYXBzZU9uU2VsZWN0OiExfSxOby5kaXNwbGF5TmFtZT0iTmF2YmFyIixOby5CcmFuZD1acixOby5Ub2dnbGU9UG8sTm8uQ29sbGFwc2U9VG8sTm8uVGV4dD1RcigibmF2YmFyLXRleHQiLHtDb21wb25lbnQ6InNwYW4ifSk7dmFyIGpvPU5vLExvPW4oIlZjK2wiKSxSbz0iL3RyYWNrLWFuYWx5dGljcy1vbi10aGUtZ28td2l0aC10aGUtb3JjaGFyZGdvLWFwcCIsSW89WyJ3b3Jrc3RhdGlvbi11dGlscyIsIkBvcmNoYXJkL2Zyb250ZW5kLWxvY2FsaXphdGlvbiIsImZyb250ZW5kLWxvY2FsaXphdGlvbiJdLEFvPWZ1bmN0aW9uKGUsdCl7dmFyIG49Imh0dHBzOi8vaGVscGNlbnRlci50aGVvcmNoYXJkLmNvbSI7cmV0dXJuIGUuaGFzRmVhdHVyZUZsYWcoImhlbHBjZW50ZXJfYXV0b19sb2dpbiIpPyIiLmNvbmNhdChuLCIvaGVscGNlbnRlci8iKToiIi5jb25jYXQobiwiLz9sYW5nPSIpLmNvbmNhdCh0KX0sRm89bigiWlRJZCIpO2Z1bmN0aW9uIEJvKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn12YXIgem89ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmZlYXR1cmVGbGFnLHI9dC5mZWF0dXJlQ29udHJvbCxvPXQucGVybWlzc2lvbixhPXQucHJpdmlsZWdlLGk9dm9pZCAwPT09YT9udWxsOmEsdT10LnN1YmFjY291bnRSZXN0cmljdGlvbixzPXQucGVybWlzc2lvbnMsbD12b2lkIDA9PT1zP28/W3twZXJtaXNzaW9uOm8scHJpdmlsZWdlOml9XTpudWxsOnMsYz0hbHx8ZS5oYXNQZXJtaXNzaW9uKGwpLGY9IXJ8fGUuaGFzRmVhdHVyZUNvbnRyb2wociksZD0hbnx8ZS5oYXNGZWF0dXJlRmxhZyhuKTtyZXR1cm4gdT9kJiZjJiZmJiYhZnVuY3Rpb24oZSl7cmV0dXJuInN1YmFjY291bnQiPT09ZS5hY2NvdW50VHlwZX0oZSk6ZCYmYyYmZn0sS289ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnZhcmlhbnRzLHI9KHZvaWQgMD09PW4/W106bikuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gem8oZSx0KX0pKSxvPUsoKShyLDEpWzBdO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9CbyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3coKShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6Qm8oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LHQse30sdm9pZCAwPT09bz97fTpvKX0scW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBLbyhlLHQpfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUudXJsfHxlLm1hdGNofSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHpvKGUsdCl9KSl9LFZvPXtjbGFzc05hbWU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLHRlcm06Vi5hLnN0cmluZy5pc1JlcXVpcmVkLHVybE1hdGNoOlYuYS5zdHJpbmcsYWN0aXZlQ2xhc3NOYW1lOlYuYS5zdHJpbmcsdXJsOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLmFycmF5T2YoVi5hLnN0cmluZyldKX0sVW89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbGFzc05hbWUsbj1lLmFjdGl2ZUNsYXNzTmFtZSxyPWUudGVybSxvPWUudXJsLGE9ZS51cmxNYXRjaCxpPWEmJndpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaChhLnJlcGxhY2UoIioiLCIuKiIpKSx1PVR0KCkodCx3KCkoe30sbixpKSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFlyLkxpbmsse2NsYXNzTmFtZTp1LGhyZWY6b30sZmUocikpfTtVby5wcm9wVHlwZXM9Vm87dmFyIFdvPVVvLFlvPW4oInVOT3QiKSxIbz1mdW5jdGlvbihlKXt2YXIgdD1lLmNsYXNzTmFtZSxuPWUuYWN0aXZlQ2xhc3NOYW1lLHI9ZS50ZXJtLG89ZS51cmwsYT1lLnVybE1hdGNoO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChZby5hLHt0bzpvLGV4YWN0OiEwLGNsYXNzTmFtZTpUdCgpKCJuYXYtbGluayIsdCksYWN0aXZlQ2xhc3NOYW1lOm4saXNBY3RpdmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiEoIWV8fCFlLmlzRXhhY3QpfHwhIW4mJihBcnJheS5pc0FycmF5KG4pP246W25dKS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gdC5wYXRobmFtZS5tYXRjaChlLnJlcGxhY2UoIioiLCIuKiIpKX0pKX0oZSx0LGEpfX0sZmUocikpfTtIby5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsdGVybTpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsYWN0aXZlQ2xhc3NOYW1lOlYuYS5zdHJpbmcsdXJsOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLmFycmF5T2YoVi5hLnN0cmluZyldKSx1cmxNYXRjaDpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5hcnJheU9mKFYuYS5zdHJpbmcpXSl9O3ZhciBHbz1IbztmdW5jdGlvbiBRbyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59dmFyIEpvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaXRlbXMsbj1lLmNsYXNzTmFtZSxyPUUuYS51c2VDb250ZXh0KHBlKS5pZGVudGl0eSxvPXtjbGFzc05hbWU6IiIuY29uY2F0KG4sIi0iKS5jb25jYXQoIm5hdkl0ZW0iKSxhY3RpdmVDbGFzc05hbWU6IiIuY29uY2F0KG4sIi0iKS5jb25jYXQoIm5hdkl0ZW0iLCItYWN0aXZlIil9LGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tb2R1bGUsbj1lLmtleSxyPWUudXJsLGE9ZS5tYXRjaCxpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1FvKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dygpKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpRbyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sbyx7dXJsOnIsdXJsTWF0Y2g6YSx0ZXJtOm59KSx1PXQ/R286V287cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHUsT3QoKSh7a2V5Om59LGkpKX07cmV0dXJuIHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gS28ocixlKX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVybCYmem8ocixlKX0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpfTtKby5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsaXRlbXM6Vi5hLmFycmF5T2YoVi5hLm9iamVjdCl9LEpvLmRlZmF1bHRQcm9wcz17aXRlbXM6W119O3ZhciBabywkbz1KbyxYbz0iIi5jb25jYXQoIkhlYWRlckRyb3Bkb3duTG9hZGVyIiwiLXdyYXBwZXIiKSxlYT0iIi5jb25jYXQoIkhlYWRlckRyb3Bkb3duTG9hZGVyIiwiLWl0ZW0iKSx0YT0iIi5jb25jYXQoIkhlYWRlckRyb3Bkb3duTG9hZGVyIiwiLWxpbmUtdG9wIiksbmE9IiIuY29uY2F0KCJIZWFkZXJEcm9wZG93bkxvYWRlciIsIi1saW5lLWJvdHRvbSIpLHJhPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ZWF9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6dGF9KSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOm5hfSkpfSxvYT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChLbix7Y29udGVudDpyYSxjbGFzc05hbWU6WG99KX07ZnVuY3Rpb24gYWEoKXtyZXR1cm4gT2JqZWN0KF8udXNlU3RhdGUpKG51bGwpfXZhciBpYT1FLmEuY3JlYXRlQ29udGV4dCh7bWVudVJlZjpmdW5jdGlvbigpe30sdG9nZ2xlUmVmOmZ1bmN0aW9uKCl7fSxvblRvZ2dsZTpmdW5jdGlvbigpe30sdG9nZ2xlTm9kZTp2b2lkIDAsYWxpZ25FbmQ6bnVsbCxzaG93Om51bGwsZHJvcDpudWxsfSk7ZnVuY3Rpb24gdWEoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99ZnVuY3Rpb24gc2EoKXtyZXR1cm4oc2E9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgbGE9bigiOEwzRiIpLGNhPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiMCIsbGVmdDoiMCIsb3BhY2l0eToiMCIscG9pbnRlckV2ZW50czoibm9uZSJ9LGZhPXt9O2Z1bmN0aW9uIGRhKGUsdCxuKXt2YXIgcj12b2lkIDA9PT1uP3t9Om4sbz1yLmVuYWJsZWQsYT12b2lkIDA9PT1vfHxvLGk9ci5wbGFjZW1lbnQsdT12b2lkIDA9PT1pPyJib3R0b20iOmkscz1yLnBvc2l0aW9uRml4ZWQsbD12b2lkIDAhPT1zJiZzLGM9ci5ldmVudHNFbmFibGVkLGY9dm9pZCAwPT09Y3x8YyxkPXIubW9kaWZpZXJzLHA9dm9pZCAwPT09ZD97fTpkLGg9T2JqZWN0KF8udXNlUmVmKSgpLHk9ISghcC5hcnJvd3x8IXAuYXJyb3cuZWxlbWVudCksbT1PYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7aC5jdXJyZW50JiZoLmN1cnJlbnQuc2NoZWR1bGVVcGRhdGUoKX0pLFtdKSx2PU9iamVjdChfLnVzZVN0YXRlKSh7cGxhY2VtZW50OnUsc2NoZWR1bGVVcGRhdGU6bSxvdXRPZkJvdW5kYXJpZXM6ITEsc3R5bGVzOmNhLGFycm93U3R5bGVzOmZhfSksZz12WzBdLGI9dlsxXTtyZXR1cm4gT2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXttKCl9KSxbZy5wbGFjZW1lbnQsbV0pLE9iamVjdChfLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7aC5jdXJyZW50JiYoZj9oLmN1cnJlbnQuZW5hYmxlRXZlbnRMaXN0ZW5lcnMoKTpoLmN1cnJlbnQuZGlzYWJsZUV2ZW50TGlzdGVuZXJzKCkpfSksW2ZdKSxPYmplY3QoXy51c2VFZmZlY3QpKChmdW5jdGlvbigpe2lmKGEmJm51bGwhPWUmJm51bGwhPXQpe3ZhciBuPXAuYXJyb3cmJnNhKHt9LHAuYXJyb3cse2VsZW1lbnQ6cC5hcnJvdy5lbGVtZW50fSk7cmV0dXJuIGguY3VycmVudD1uZXcgbGEuYShlLHQse3BsYWNlbWVudDp1LHBvc2l0aW9uRml4ZWQ6bCxtb2RpZmllcnM6c2Eoe30scCx7YXJyb3c6bixhcHBseVN0eWxlOntlbmFibGVkOiExfSx1cGRhdGVTdGF0ZU1vZGlmaWVyOntlbmFibGVkOiEwLG9yZGVyOjkwMCxmbjpmdW5jdGlvbihlKXtiKHtzY2hlZHVsZVVwZGF0ZTptLHN0eWxlczpzYSh7cG9zaXRpb246ZS5vZmZzZXRzLnBvcHBlci5wb3NpdGlvbn0sZS5zdHlsZXMpLGFycm93U3R5bGVzOmUuYXJyb3dTdHlsZXMsb3V0T2ZCb3VuZGFyaWVzOmUuaGlkZSxwbGFjZW1lbnQ6ZS5wbGFjZW1lbnR9KX19fSl9KSxmdW5jdGlvbigpe251bGwhPT1oLmN1cnJlbnQmJihoLmN1cnJlbnQuZGVzdHJveSgpLGguY3VycmVudD1udWxsKX19fSksW2EsdSxsLGUsdCx5XSksZ31mdW5jdGlvbiBwYShlLHQpe3JldHVybiBlLmNvbnRhaW5zP2UuY29udGFpbnModCk6ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9lPT09dHx8ISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSk6dm9pZCAwfXZhciBoYT1uKCIyVzZ6IikseWE9bi5uKGhhKSxtYT1mdW5jdGlvbigpe307dmFyIHZhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj12b2lkIDA9PT1uP3t9Om4sbz1yLmRpc2FibGVkLGE9ci5jbGlja1RyaWdnZXIsaT12b2lkIDA9PT1hPyJjbGljayI6YSx1PU9iamVjdChfLnVzZVJlZikoITEpLHM9dHx8bWEsbD1PYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKHQpe3ZhciBuLHI9ZSYmKCJjdXJyZW50ImluIGU/ZS5jdXJyZW50OmUpO3lhKCkoISFyLCJSb290Q2xvc2UgY2FwdHVyZWQgYSBjbG9zZSBldmVudCBidXQgZG9lcyBub3QgaGF2ZSBhIHJlZiB0byBjb21wYXJlIGl0IHRvLiB1c2VSb290Q2xvc2UoKSwgc2hvdWxkIGJlIHBhc3NlZCBhIHJlZiB0aGF0IHJlc29sdmVzIHRvIGEgRE9NIG5vZGUiKSx1LmN1cnJlbnQ9IXJ8fCEhKChuPXQpLm1ldGFLZXl8fG4uYWx0S2V5fHxuLmN0cmxLZXl8fG4uc2hpZnRLZXkpfHwhZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmJ1dHRvbn0odCl8fHBhKHIsdC50YXJnZXQpfSksW2VdKSxjPUJyKChmdW5jdGlvbihlKXt1LmN1cnJlbnR8fHMoZSl9KSksZj1CcigoZnVuY3Rpb24oZSl7Mjc9PT1lLmtleUNvZGUmJnMoZSl9KSk7T2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtpZighbyYmbnVsbCE9ZSl7dmFyIHQsbj0odD1lLmN1cnJlbnQsJHIoay5hLmZpbmRET01Ob2RlKHQpKSkscj1mbyhuLGksbCwhMCksYT1mbyhuLGksYyksdT1mbyhuLCJrZXl1cCIsZikscz1bXTtyZXR1cm4ib250b3VjaHN0YXJ0ImluIG4uZG9jdW1lbnRFbGVtZW50JiYocz1bXS5zbGljZS5jYWxsKG4uYm9keS5jaGlsZHJlbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZm8oZSwibW91c2Vtb3ZlIixtYSl9KSkpLGZ1bmN0aW9uKCl7cigpLGEoKSx1KCkscy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpfX19KSxbZSxvLGksbCxjLGZdKX07ZnVuY3Rpb24gZ2EoZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0PU9iamVjdChfLnVzZUNvbnRleHQpKGlhKSxuPWFhKCkscj1uWzBdLG89blsxXSxhPU9iamVjdChfLnVzZVJlZikoITEpLGk9ZSx1PWkuZmxpcCxzPWkucm9vdENsb3NlRXZlbnQsbD1pLnBvcHBlckNvbmZpZyxjPXZvaWQgMD09PWw/e306bCxmPWkudXNlUG9wcGVyLGQ9dm9pZCAwPT09Znx8ZixwPW51bGw9PXQuc2hvdz9lLnNob3c6dC5zaG93LGg9bnVsbD09dC5hbGlnbkVuZD9lLmFsaWduRW5kOnQuYWxpZ25FbmQ7cCYmIWEuY3VycmVudCYmKGEuY3VycmVudD0hMCk7dmFyIHk9ZnVuY3Rpb24oZSl7dC50b2dnbGUmJnQudG9nZ2xlKCExLGUpfSxtPXQuZHJvcCx2PXQuc2V0TWVudSxnPXQubWVudUVsZW1lbnQsYj10LnRvZ2dsZUVsZW1lbnQsdz1oPyJib3R0b20tZW5kIjoiYm90dG9tLXN0YXJ0IjsidXAiPT09bT93PWg/InRvcC1lbmQiOiJ0b3Atc3RhcnQiOiJyaWdodCI9PT1tP3c9aD8icmlnaHQtZW5kIjoicmlnaHQtc3RhcnQiOiJsZWZ0Ij09PW0mJih3PWg/ImxlZnQtZW5kIjoibGVmdC1zdGFydCIpO3ZhciBFPWRhKGIsZyx7cGxhY2VtZW50OncsZW5hYmxlZDohKCFkfHwhcCksZXZlbnRzRW5hYmxlZDohIXAsbW9kaWZpZXJzOnNhKHtmbGlwOntlbmFibGVkOiEhdX0sYXJyb3c6c2Eoe30sYy5tb2RpZmllcnMmJmMubW9kaWZpZXJzLmFycm93LHtlbmFibGVkOiEhcixlbGVtZW50OnJ9KX0sYy5tb2RpZmllcnMpfSksTz1udWxsLGs9e3JlZjp2LCJhcmlhLWxhYmVsbGVkYnkiOmImJmIuaWR9LEM9e3Nob3c6cCxhbGlnbkVuZDpoLGhhc1Nob3duOmEuY3VycmVudCxjbG9zZTp5fTtyZXR1cm4gTz1kP3NhKHt9LEUse30sQyx7cHJvcHM6c2Eoe30sayx7c3R5bGU6RS5zdHlsZXN9KSxhcnJvd1Byb3BzOntyZWY6byxzdHlsZTpFLmFycm93U3R5bGVzfX0pOnNhKHt9LEMse3Byb3BzOmt9KSx2YShnLHkse2NsaWNrVHJpZ2dlcjpzLGRpc2FibGVkOiEoTyYmcCl9KSxPfXZhciBiYT17Y2hpbGRyZW46Vi5hLmZ1bmMuaXNSZXF1aXJlZCxzaG93OlYuYS5ib29sLGFsaWduRW5kOlYuYS5ib29sLGZsaXA6Vi5hLmJvb2wsdXNlUG9wcGVyOlYuYS5vbmVPZihbITAsITFdKSxwb3BwZXJDb25maWc6Vi5hLm9iamVjdCxyb290Q2xvc2VFdmVudDpWLmEuc3RyaW5nfTtmdW5jdGlvbiB3YShlKXt2YXIgdD1lLmNoaWxkcmVuLG49Z2EodWEoZSxbImNoaWxkcmVuIl0pKTtyZXR1cm4gbi5oYXNTaG93bj90KG4pOm51bGx9d2EuZGlzcGxheU5hbWU9IlJlYWN0T3ZlcmxheXNEcm9wZG93bk1lbnUiLHdhLnByb3BUeXBlcz1iYSx3YS5kZWZhdWx0UHJvcHM9e3VzZVBvcHBlcjohMH07dmFyIF9hPXdhO2Z1bmN0aW9uIEVhKCl7dmFyIGU9T2JqZWN0KF8udXNlQ29udGV4dCkoaWEpLHQ9ZS5zaG93LG49ZS50b2dnbGU7cmV0dXJuW3tyZWY6ZS5zZXRUb2dnbGUsImFyaWEtaGFzcG9wdXAiOiEwLCJhcmlhLWV4cGFuZGVkIjohIXR9LHtzaG93OnQsdG9nZ2xlOm59XX12YXIgT2E9e2NoaWxkcmVuOlYuYS5mdW5jLmlzUmVxdWlyZWR9O2Z1bmN0aW9uIGthKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1FYSgpLHI9blswXSxvPW5bMV07cmV0dXJuIHQoe3Nob3c6by5zaG93LHRvZ2dsZTpvLnRvZ2dsZSxwcm9wczpyfSl9a2EuZGlzcGxheU5hbWU9IlJlYWN0T3ZlcmxheXNEcm9wZG93blRvZ2dsZSIsa2EucHJvcFR5cGVzPU9hO3ZhciBDYT1rYSx4YT17Y2hpbGRyZW46Vi5hLmZ1bmMuaXNSZXF1aXJlZCxkcm9wOlYuYS5vbmVPZihbInVwIiwibGVmdCIsInJpZ2h0IiwiZG93biJdKSxmb2N1c0ZpcnN0SXRlbU9uU2hvdzpWLmEub25lT2YoWyExLCEwLCJrZXlib2FyZCJdKSxpdGVtU2VsZWN0b3I6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGFsaWduRW5kOlYuYS5ib29sLHNob3c6Vi5hLmJvb2wsZGVmYXVsdFNob3c6Vi5hLmJvb2wsb25Ub2dnbGU6Vi5hLmZ1bmN9O2Z1bmN0aW9uIFNhKGUpe3ZhciB0LG4scj1lLmRyb3Asbz1lLmFsaWduRW5kLGE9ZS5kZWZhdWx0U2hvdyxpPWUuc2hvdyx1PWUub25Ub2dnbGUscz1lLml0ZW1TZWxlY3RvcixsPWUuZm9jdXNGaXJzdEl0ZW1PblNob3csYz1lLmNoaWxkcmVuLGY9RXIoKSxkPWhyKHtkZWZhdWx0U2hvdzphLHNob3c6aSxvblRvZ2dsZTp1fSx7c2hvdzoib25Ub2dnbGUifSkscD1kLnNob3csaD1kLm9uVG9nZ2xlLHk9YWEoKSxtPXlbMF0sdj15WzFdLGc9T2JqZWN0KF8udXNlUmVmKSgpLGI9Zy5jdXJyZW50LHc9T2JqZWN0KF8udXNlQ2FsbGJhY2spKChmdW5jdGlvbihlKXtnLmN1cnJlbnQ9ZSxmKCl9KSxbZl0pLE89KHQ9cCxuPU9iamVjdChfLnVzZVJlZikobnVsbCksT2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtuLmN1cnJlbnQ9dH0pKSxuLmN1cnJlbnQpLGs9T2JqZWN0KF8udXNlUmVmKShudWxsKSxDPU9iamVjdChfLnVzZVJlZikoITEpLHg9T2JqZWN0KF8udXNlQ2FsbGJhY2spKChmdW5jdGlvbihlKXtoKCFwLGUpfSksW2gscF0pLFM9T2JqZWN0KF8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJue3RvZ2dsZTp4LGRyb3A6cixzaG93OnAsYWxpZ25FbmQ6byxtZW51RWxlbWVudDpiLHRvZ2dsZUVsZW1lbnQ6bSxzZXRNZW51Oncsc2V0VG9nZ2xlOnZ9fSksW3gscixwLG8sYixtLHcsdl0pO2ImJk8mJiFwJiYoQy5jdXJyZW50PWIuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpO3ZhciBEPUJyKChmdW5jdGlvbigpe20mJm0uZm9jdXMmJm0uZm9jdXMoKX0pKSxUPUJyKChmdW5jdGlvbigpe3ZhciBlPWsuY3VycmVudCx0PWw7aWYobnVsbD09dCYmKHQ9ISghZy5jdXJyZW50fHwhZnVuY3Rpb24oZSx0KXtpZighWm8pe3ZhciBuPWRvY3VtZW50LmJvZHkscj1uLm1hdGNoZXN8fG4ubWF0Y2hlc1NlbGVjdG9yfHxuLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8bi5tb3pNYXRjaGVzU2VsZWN0b3J8fG4ubXNNYXRjaGVzU2VsZWN0b3I7Wm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5jYWxsKGUsdCl9fXJldHVybiBabyhlLHQpfShnLmN1cnJlbnQsIltyb2xlPW1lbnVdIikpJiYia2V5Ym9hcmQiKSwhMSE9PXQmJigia2V5Ym9hcmQiIT09dHx8L15rZXkuKyQvLnRlc3QoZSkpKXt2YXIgbj1fcihnLmN1cnJlbnQscylbMF07biYmbi5mb2N1cyYmbi5mb2N1cygpfX0pKTtPYmplY3QoXy51c2VFZmZlY3QpKChmdW5jdGlvbigpe3A/VCgpOkMuY3VycmVudCYmKEMuY3VycmVudD0hMSxEKCkpfSksW3AsQyxELFRdKSxPYmplY3QoXy51c2VFZmZlY3QpKChmdW5jdGlvbigpe2suY3VycmVudD1udWxsfSkpO3ZhciBNPWZ1bmN0aW9uKGUsdCl7aWYoIWcuY3VycmVudClyZXR1cm4gbnVsbDt2YXIgbj1fcihnLmN1cnJlbnQscykscj1uLmluZGV4T2YoZSkrdDtyZXR1cm4gbltyPU1hdGgubWF4KDAsTWF0aC5taW4ocixuLmxlbmd0aCkpXX07cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGlhLlByb3ZpZGVyLHt2YWx1ZTpTfSxjKHtwcm9wczp7b25LZXlEb3duOmZ1bmN0aW9uKGUpe3ZhciB0PWUua2V5LG49ZS50YXJnZXQ7aWYoIS9pbnB1dHx0ZXh0YXJlYS9pLnRlc3Qobi50YWdOYW1lKXx8ISgiICI9PT10fHwiRXNjYXBlIiE9PXQmJmcuY3VycmVudCYmZy5jdXJyZW50LmNvbnRhaW5zKG4pKSlzd2l0Y2goay5jdXJyZW50PWUudHlwZSx0KXtjYXNlIkFycm93VXAiOnZhciByPU0obiwtMSk7cmV0dXJuIHImJnIuZm9jdXMmJnIuZm9jdXMoKSx2b2lkIGUucHJldmVudERlZmF1bHQoKTtjYXNlIkFycm93RG93biI6aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHApe3ZhciBvPU0obiwxKTtvJiZvLmZvY3VzJiZvLmZvY3VzKCl9ZWxzZSB4KGUpO3JldHVybjtjYXNlIkVzY2FwZSI6Y2FzZSJUYWIiOmgoITEsZSl9fX19KSl9U2EuZGlzcGxheU5hbWU9IlJlYWN0T3ZlcmxheXNEcm9wZG93biIsU2EucHJvcFR5cGVzPXhhLFNhLmRlZmF1bHRQcm9wcz17aXRlbVNlbGVjdG9yOiIqID4gKiJ9LFNhLk1lbnU9X2EsU2EuVG9nZ2xlPUNhO3ZhciBEYT1TYSxUYT17YXM6QXIsZGlzYWJsZWQ6ITF9LE1hPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLmNsYXNzTmFtZSxvPWUuY2hpbGRyZW4sYT1lLmV2ZW50S2V5LGk9ZS5kaXNhYmxlZCx1PWUuaHJlZixzPWUub25DbGljayxsPWUub25TZWxlY3QsYz1lLmFjdGl2ZSxmPWUuYXMsZD1scihlLFsiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImV2ZW50S2V5IiwiZGlzYWJsZWQiLCJocmVmIiwib25DbGljayIsIm9uU2VsZWN0IiwiYWN0aXZlIiwiYXMiXSkscD12cihuLCJkcm9wZG93bi1pdGVtIiksaD1PYmplY3QoXy51c2VDb250ZXh0KShEcikseT0oT2JqZWN0KF8udXNlQ29udGV4dCkoQ3IpfHx7fSkuYWN0aXZlS2V5LG09U3IoYSx1KSx2PW51bGw9PWMmJm51bGwhPW0/U3IoeSk9PT1tOmMsZz1CcigoZnVuY3Rpb24oZSl7aXx8KHMmJnMoZSksaCYmaChtLGUpLGwmJmwobSxlKSl9KSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGYsc3Ioe30sZCx7cmVmOnQsaHJlZjp1LGRpc2FibGVkOmksY2xhc3NOYW1lOlR0KCkocixwLHYmJiJhY3RpdmUiLGkmJiJkaXNhYmxlZCIpLG9uQ2xpY2s6Z30pLG8pfSkpO01hLmRpc3BsYXlOYW1lPSJEcm9wZG93bkl0ZW0iLE1hLmRlZmF1bHRQcm9wcz1UYTt2YXIgUGE9TWE7ZnVuY3Rpb24gTmEoZSx0KXtyZXR1cm4gZX12YXIgamE9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuY2xhc3NOYW1lLG89ZS5hbGlnblJpZ2h0LGE9ZS5yb290Q2xvc2VFdmVudCxpPWUuZmxpcCx1PWUucG9wcGVyQ29uZmlnLHM9ZS5zaG93LGw9ZS5hcyxjPXZvaWQgMD09PWw/ImRpdiI6bCxmPWxyKGUsWyJic1ByZWZpeCIsImNsYXNzTmFtZSIsImFsaWduUmlnaHQiLCJyb290Q2xvc2VFdmVudCIsImZsaXAiLCJwb3BwZXJDb25maWciLCJzaG93IiwiYXMiXSksZD1PYmplY3QoXy51c2VDb250ZXh0KShncikscD12cihuLCJkcm9wZG93bi1tZW51IiksaD1nYSh7ZmxpcDppLHBvcHBlckNvbmZpZzp1LHJvb3RDbG9zZUV2ZW50OmEsc2hvdzpzLGFsaWduRW5kOm8sdXNlUG9wcGVyOiFkfSkseT1oLmhhc1Nob3duLG09aC5wbGFjZW1lbnQsdj1oLnNob3csZz1oLmFsaWduRW5kLGI9aC5jbG9zZSx3PWgucHJvcHM7aWYody5yZWY9a3Iody5yZWYsTmEodCkpLCF5KXJldHVybiBudWxsOyJzdHJpbmciIT10eXBlb2YgYyYmKHcuc2hvdz12LHcuY2xvc2U9Yix3LmFsaWduUmlnaHQ9Zyk7dmFyIE89Zi5zdHlsZTtyZXR1cm4gbSYmKE89c3Ioe30sTyx7fSx3LnN0eWxlKSxmWyJ4LXBsYWNlbWVudCJdPW0pLEUuYS5jcmVhdGVFbGVtZW50KGMsc3Ioe30sZix3LHtzdHlsZTpPLGNsYXNzTmFtZTpUdCgpKHIscCx2JiYic2hvdyIsZyYmcCsiLXJpZ2h0Iil9KSl9KSk7amEuZGlzcGxheU5hbWU9IkRyb3Bkb3duTWVudSIsamEuZGVmYXVsdFByb3BzPXthbGlnblJpZ2h0OiExLGZsaXA6ITB9O3ZhciBMYT1qYSxSYT0obigiQk8vdCIpLEUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLnZhcmlhbnQsbz1lLnNpemUsYT1lLmFjdGl2ZSxpPWUuY2xhc3NOYW1lLHU9ZS5ibG9jayxzPWUudHlwZSxsPWUuYXMsYz1scihlLFsiYnNQcmVmaXgiLCJ2YXJpYW50Iiwic2l6ZSIsImFjdGl2ZSIsImNsYXNzTmFtZSIsImJsb2NrIiwidHlwZSIsImFzIl0pLGY9dnIobiwiYnRuIiksZD1UdCgpKGksZixhJiYiYWN0aXZlIixmKyItIityLHUmJmYrIi1ibG9jayIsbyYmZisiLSIrbyk7aWYoYy5ocmVmKXJldHVybiBFLmEuY3JlYXRlRWxlbWVudChBcixzcih7fSxjLHthczpsLHJlZjp0LGNsYXNzTmFtZTpUdCgpKGQsYy5kaXNhYmxlZCYmImRpc2FibGVkIil9KSk7dCYmKGMucmVmPXQpLGx8fChjLnR5cGU9cyk7dmFyIHA9bHx8ImJ1dHRvbiI7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHAsc3Ioe30sYyx7Y2xhc3NOYW1lOmR9KSl9KSkpO1JhLmRpc3BsYXlOYW1lPSJCdXR0b24iLFJhLmRlZmF1bHRQcm9wcz17dmFyaWFudDoicHJpbWFyeSIsYWN0aXZlOiExLGRpc2FibGVkOiExLHR5cGU6ImJ1dHRvbiJ9O3ZhciBJYT1SYSxBYT1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5zcGxpdCxvPWUuY2xhc3NOYW1lLGE9ZS5jaGlsZHJlbixpPWUuY2hpbGRCc1ByZWZpeCx1PWUuYXMscz12b2lkIDA9PT11P0lhOnUsbD1scihlLFsiYnNQcmVmaXgiLCJzcGxpdCIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiY2hpbGRCc1ByZWZpeCIsImFzIl0pLGM9dnIobiwiZHJvcGRvd24tdG9nZ2xlIik7dm9pZCAwIT09aSYmKGwuYnNQcmVmaXg9aSk7dmFyIGY9RWEoKSxkPWZbMF0scD1mWzFdLnRvZ2dsZTtyZXR1cm4gZC5yZWY9a3IoZC5yZWYsTmEodCkpLEUuYS5jcmVhdGVFbGVtZW50KHMsc3Ioe29uQ2xpY2s6cCxjbGFzc05hbWU6VHQoKShvLGMsciYmYysiLXNwbGl0Iil9LGQsbCksYSl9KSk7QWEuZGlzcGxheU5hbWU9IkRyb3Bkb3duVG9nZ2xlIjt2YXIgRmE9QWEsQmE9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49aHIoZSx7c2hvdzoib25Ub2dnbGUifSkscj1uLmJzUHJlZml4LG89bi5kcm9wLGE9bi5zaG93LGk9bi5jbGFzc05hbWUsdT1uLmFsaWduUmlnaHQscz1uLm9uU2VsZWN0LGw9bi5vblRvZ2dsZSxjPW4uZm9jdXNGaXJzdEl0ZW1PblNob3csZj1uLmFzLGQ9dm9pZCAwPT09Zj8iZGl2IjpmLHA9KG4ubmF2YmFyLGxyKG4sWyJic1ByZWZpeCIsImRyb3AiLCJzaG93IiwiY2xhc3NOYW1lIiwiYWxpZ25SaWdodCIsIm9uU2VsZWN0Iiwib25Ub2dnbGUiLCJmb2N1c0ZpcnN0SXRlbU9uU2hvdyIsImFzIiwibmF2YmFyIl0pKSxoPU9iamVjdChfLnVzZUNvbnRleHQpKERyKSx5PXZyKHIsImRyb3Bkb3duIiksbT1CcigoZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPXQudHlwZSksdC5jdXJyZW50VGFyZ2V0PT09ZG9jdW1lbnQmJihuPSJyb290Q2xvc2UiKSxsKGUsdCx7c291cmNlOm59KX0pKSx2PUJyKChmdW5jdGlvbihlLHQpe2gmJmgoZSx0KSxzJiZzKGUsdCksbSghMSx0LCJzZWxlY3QiKX0pKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoRHIuUHJvdmlkZXIse3ZhbHVlOnZ9LEUuYS5jcmVhdGVFbGVtZW50KERhLHtkcm9wOm8sc2hvdzphLGFsaWduRW5kOnUsb25Ub2dnbGU6bSxmb2N1c0ZpcnN0SXRlbU9uU2hvdzpjLGl0ZW1TZWxlY3RvcjoiLiIreSsiLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCkifSwoZnVuY3Rpb24oZSl7dmFyIG49ZS5wcm9wcztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoZCxzcih7fSxwLG4se3JlZjp0LGNsYXNzTmFtZTpUdCgpKGksYSYmInNob3ciLCghb3x8ImRvd24iPT09bykmJnksInVwIj09PW8mJiJkcm9wdXAiLCJyaWdodCI9PT1vJiYiZHJvcHJpZ2h0IiwibGVmdCI9PT1vJiYiZHJvcGxlZnQiKX0pKX0pKSl9KSk7QmEuZGlzcGxheU5hbWU9IkRyb3Bkb3duIixCYS5kZWZhdWx0UHJvcHM9e25hdmJhcjohMX0sQmEuVG9nZ2xlPUZhLEJhLk1lbnU9TGEsQmEuSXRlbT1QYSxCYS5IZWFkZXI9UXIoImRyb3Bkb3duLWhlYWRlciIse2RlZmF1bHRQcm9wczp7cm9sZToiaGVhZGluZyJ9fSksQmEuRGl2aWRlcj1RcigiZHJvcGRvd24tZGl2aWRlciIse2RlZmF1bHRQcm9wczp7cm9sZToic2VwYXJhdG9yIn19KTt2YXIgemE9QmEsS2E9e2lkOlYuYS5hbnksb25DbGljazpWLmEuZnVuYyx0aXRsZTpWLmEubm9kZS5pc1JlcXVpcmVkLGRpc2FibGVkOlYuYS5ib29sLGFjdGl2ZTpWLmEuYm9vbCxtZW51Um9sZTpWLmEuc3RyaW5nLHJvb3RDbG9zZUV2ZW50OlYuYS5zdHJpbmcsYnNQcmVmaXg6Vi5hLnN0cmluZ30scWE9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pZCxyPWUudGl0bGUsbz1lLmNoaWxkcmVuLGE9ZS5ic1ByZWZpeCxpPWUucm9vdENsb3NlRXZlbnQsdT1lLm1lbnVSb2xlLHM9ZS5kaXNhYmxlZCxsPWUuYWN0aXZlLGM9bHIoZSxbImlkIiwidGl0bGUiLCJjaGlsZHJlbiIsImJzUHJlZml4Iiwicm9vdENsb3NlRXZlbnQiLCJtZW51Um9sZSIsImRpc2FibGVkIiwiYWN0aXZlIl0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCh6YSxzcih7cmVmOnR9LGMse2FzOmpyfSksRS5hLmNyZWF0ZUVsZW1lbnQoemEuVG9nZ2xlLHtpZDpuLGV2ZW50S2V5Om51bGwsYWN0aXZlOmwsZGlzYWJsZWQ6cyxjaGlsZEJzUHJlZml4OmEsYXM6VXJ9LHIpLEUuYS5jcmVhdGVFbGVtZW50KHphLk1lbnUse3JvbGU6dSxyb290Q2xvc2VFdmVudDppfSxvKSl9KSk7cWEuZGlzcGxheU5hbWU9Ik5hdkRyb3Bkb3duIixxYS5wcm9wVHlwZXM9S2EscWEuSXRlbT16YS5JdGVtLHFhLkRpdmlkZXI9emEuRGl2aWRlcixxYS5IZWFkZXI9emEuSGVhZGVyO3ZhciBWYT1xYSxVYT1mdW5jdGlvbihlKXt2YXIgdD1lLmFjY291bnROYW1lLG49ZS5hY2NvdW50SWQscj1lLmhyZWYsbz1lLmNoZWNrbWFyayxhPWUuaXNTdWJhY2NvdW50LGk9ZS52ZW5kb3JOYW1lO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChWYS5JdGVtLHtjbGFzc05hbWU6IiIuY29uY2F0KCJMaW5rZWRBY2NvdW50c0Ryb3Bkb3duIiwiLWxpbmtlZC1tZW51LWl0ZW0iKSxocmVmOnJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJMaW5rZWRBY2NvdW50c0Ryb3Bkb3duIiwiLWxpbmtlZC1tZW51LWl0ZW0tcm93Iil9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJMaW5rZWRBY2NvdW50c0Ryb3Bkb3duIiwiLWFjY291bnQtdGl0bGUiKX0sYSYmRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIkxpbmtlZEFjY291bnRzRHJvcGRvd24iLCItdmVuZG9yLW5hbWUiKX0saSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIkxpbmtlZEFjY291bnRzRHJvcGRvd24iLCItYWNjb3VudC1uYW1lIil9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJMaW5rZWRBY2NvdW50c0Ryb3Bkb3duIiwiLXZlbmRvci1vci1zdWJhY2NvdW50Iil9LHQpLCLCoDrCoCIsRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIkxpbmtlZEFjY291bnRzRHJvcGRvd24iLCItdmVuZG9yLW9yLXN1YmFjY291bnQtaWQiKX0sbikpKSxvJiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiTGlua2VkQWNjb3VudHNEcm9wZG93biIsIi1jaGVja21hcmsiKX0pKSl9O1VhLnByb3BUeXBlcz17YWNjb3VudE5hbWU6Vi5hLnN0cmluZyxhY2NvdW50SWQ6Vi5hLm51bWJlcixpc1N1YmFjY291bnQ6Vi5hLmJvb2wsdmVuZG9yTmFtZTpWLmEuc3RyaW5nLGhyZWY6Vi5hLnN0cmluZyxjaGVja21hcms6Vi5hLmJvb2x9O3ZhciBXYT1mdW5jdGlvbihlKXt2YXIgdD1lLmNsYXNzTmFtZSxuPWUubGlua2VkQWNjb3VudHMscj1lLnRpdGxlLG89ZS5hY2NvdW50TmFtZSxhPWUuYWNjb3VudElkLGk9ZS5pc1N1YmFjY291bnQsdT1lLnZlbmRvck5hbWU7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFZhLHt0aXRsZTpyLGlkOiJoZWFkZXItZHJvcGRvd24iLGNsYXNzTmFtZTp0fSxuLmxlbmd0aD4wJiZFLmEuY3JlYXRlRWxlbWVudChVYSx7YWNjb3VudE5hbWU6byxhY2NvdW50SWQ6YSxpc1N1YmFjY291bnQ6aSx2ZW5kb3JOYW1lOnUsaHJlZjoiL2FjY291bnQvbXlwcm9maWxlIixjaGVja21hcms6ITB9KSxuLmxlbmd0aD4wJiZuLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnZjSWQscj1lLnZlbmRvcklkLG89ZS5jb21wYW55LGE9ZS5zdWJhY2NvdW50SWQsaT1lLnN1YmFjY291bnROYW1lO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChVYSx7a2V5OiJhY2NvdW50LSIuY29uY2F0KG4pLGFjY291bnRJZDphfHxyLGFjY291bnROYW1lOml8fG8saXNTdWJhY2NvdW50OkJvb2xlYW4oYSksdmVuZG9yTmFtZTpvLGhyZWY6KHQ9biwiL2xvZ2luL3N3aXRjaD91c2VyPSIuY29uY2F0KHQpKX0pfSkpLEUuYS5jcmVhdGVFbGVtZW50KFZhLkl0ZW0se2hyZWY6Ii9hY2NvdW50L215cHJvZmlsZSJ9LGZlKCJoZWFkZXIuZHJvcGRvd24ubXlBY2NvdW50IikpLEUuYS5jcmVhdGVFbGVtZW50KFZhLkl0ZW0se2hyZWY6Ii9sb2dvdXQvdjIifSxmZSgiaGVhZGVyLmRyb3Bkb3duLmxvZ091dCIpKSl9O1dhLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxsaW5rZWRBY2NvdW50czpWLmEuYXJyYXlPZihWLmEub2JqZWN0KSx0aXRsZTpWLmEubm9kZS5pc1JlcXVpcmVkLGlzU3ViYWNjb3VudDpWLmEuYm9vbCx2ZW5kb3JOYW1lOlYuYS5zdHJpbmcsYWNjb3VudE5hbWU6Vi5hLnN0cmluZyxhY2NvdW50SWQ6Vi5hLm51bWJlcn0sV2EuZGVmYXVsdFByb3BzPXtsaW5rZWRBY2NvdW50czpbXX07dmFyIFlhPVdhLEhhPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHt2aWV3Qm94OiIwIDAgMTMgOCIsaWQ6Imljb24tY2hldnJvbiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKC0xOTUuMDAwMDAwLCAtODQuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE5NS4xMzQsODUuMzI1IEwyMDAuOTcsOTEuMTYgQzIwMS4wMzcsOTEuMjUgMjAxLjE1LDkxLjI5NSAyMDEuMjM5LDkxLjI5NSBDMjAxLjM1Miw5MS4yOTUgMjAxLjQ2NCw5MS4yNSAyMDEuNTMxLDkxLjE2IEwyMDcuMzY3LDg1LjMyNSBDMjA3LjQ1Nyw4NS4yMzUgMjA3LjUwMiw4NS4xNDUgMjA3LjUwMiw4NS4wMzMgQzIwNy41MDIsODQuOTQzIDIwNy40NTcsODQuODMxIDIwNy4zNjcsODQuNzQxIEwyMDYuNzM5LDg0LjEzNSBDMjA2LjY3MSw4NC4wNDUgMjA2LjU1OSw4NCAyMDYuNDY5LDg0IEMyMDYuMzU3LDg0IDIwNi4yNDUsODQuMDQ1IDIwNi4xNzgsODQuMTM1IEwyMDEuMjM5LDg5LjA1MSBMMTk2LjMyNCw4NC4xMzUgQzE5Ni4yMzQsODQuMDQ1IDE5Ni4xNDQsODQgMTk2LjAzMiw4NCBDMTk1LjkyLDg0IDE5NS44Myw4NC4wNDUgMTk1Ljc0LDg0LjEzNSBMMTk1LjEzNCw4NC43NDEgQzE5NS4wNDQsODQuODMxIDE5NSw4NC45NDMgMTk1LDg1LjAzMyBDMTk1LDg1LjE0NSAxOTUuMDQ0LDg1LjIzNSAxOTUuMTM0LDg1LjMyNSJ9KSkpKX07SGEuZGlzcGxheU5hbWU9IlNWR0NoZXZyb24iO3ZhciBHYT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWNoZXZyb24iLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWNoZXZyb24iKToiSWNvbnMtY2hldnJvbiIsb25DbGljazplLm9uQ2xpY2ssc3ZnOkhhfSl9O0dhLmRpc3BsYXlOYW1lPSJDaGV2cm9uIixHYS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBRYT1HYSxKYT0iIi5jb25jYXQoIkhlYWRlciIsIi1kcm9wZG93blRpdGxlIiksWmE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250YWN0TmFtZSxuPWUuYWNjb3VudE5hbWUscj1lLmFjY291bnRJZDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpKYSxpZDoiSGVhZGVyQWNjb3VudERldGFpbHMifSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsdCksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiZm9udC13ZWlnaHQtYm9sZCBwci0xIn0sbiksRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsIklEOiAiLmNvbmNhdChyKSkpKSxFLmEuY3JlYXRlRWxlbWVudChRYSxudWxsKSl9O1phLnByb3BUeXBlcz17Y29udGFjdE5hbWU6Vi5hLnN0cmluZyxhY2NvdW50TmFtZTpWLmEuc3RyaW5nLGFjY291bnRJZDpWLmEubnVtYmVyfTt2YXIgJGE9WmEsWGE9IiIuY29uY2F0KCJIZWFkZXIiLCItYWNjb3VudE1lbnUiKSxlaT1mdW5jdGlvbigpe3ZhciBlPUUuYS51c2VDb250ZXh0KHBlKS5pZGVudGl0eTtpZihlLmlzQW5vbnltb3VzKCkpcmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KG9hLG51bGwpO3ZhciB0LG4scixvLGEsaSx1LHMsbCxjLGYsZCxwLGgseT0obj0odD1lKS5jb250YWN0LHI9KG49dm9pZCAwPT09bj97fTpuKS5jb250YWN0Rmlyc3ROYW1lLG89dm9pZCAwPT09cj8iIjpyLGE9bi5jb250YWN0TGFzdE5hbWUsaT12b2lkIDA9PT1hPyIiOmEsdT10LnN1YmFjY291bnQscz10LnZlbmRvcixsPShzPXZvaWQgMD09PXM/e306cykuY29tcGFueSxjPXZvaWQgMD09PWw/IiI6bCxmPXMudmVuZG9ySWQsZD12b2lkIDA9PT1mPzA6ZixwPXQubGlua2VkQWNjb3VudHMsaD12b2lkIDA9PT1wP1tdOnAse2NvbnRhY3ROYW1lOltvLGldLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuKGV8fCIiKS50cmltKCl9KSkuam9pbigiICIpLGFjY291bnROYW1lOk9iamVjdChGLmdldCkodSwic3ViYWNjb3VudE5hbWUiLGMpLGFjY291bnRJZDpPYmplY3QoRi5nZXQpKHUsInN1YmFjY291bnRJZCIsZCksaXNTdWJhY2NvdW50OkJvb2xlYW4odSYmdS5zdWJhY2NvdW50SWQpLHZlbmRvck5hbWU6YyxsaW5rZWRBY2NvdW50czpofSksbT1lLmhhc1Blcm1pc3Npb24oe3Blcm1pc3Npb246ImFjY291bnQiLHByaXZpbGVnZToibWFuYWdldXNlcnMifSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFlhLE90KCkoe2NsYXNzTmFtZTpYYSx0aXRsZTpFLmEuY3JlYXRlRWxlbWVudCgkYSx5KSxzaG93QWRtaW5MaW5rOm19LHkpKX0sdGk9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWNsb3NlIix2aWV3Qm94OiIwIDAgMTUgMTYifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik03LjQyNSA2LjUxTDEuNzYyLjg0OEMxLjM4Mi40NjguNzQ0LjQ2My4zNTQuODU0Yy0uMzk0LjM5My0uMzk0IDEuMDItLjAwNiAxLjQwOEw2LjAxIDcuOTI1LjM0OCAxMy41ODdjLS4zOC4zOC0uMzg1IDEuMDE4LjAwNiAxLjQxLjM5My4zOTIgMS4wMi4zOTIgMS40MDguMDA0bDUuNjYzLTUuNjZMMTMuMDg3IDE1Yy4zOC4zOCAxLjAxOC4zODYgMS40MS0uMDA0LjM5Mi0uMzk0LjM5Mi0xLjAyLjAwNC0xLjQxbC01LjY2LTUuNjZMMTQuNSAyLjI2Yy4zOC0uMzguMzg2LTEuMDE4LS4wMDQtMS40MDgtLjM5NC0uMzk0LTEuMDItLjM5NC0xLjQxLS4wMDZMNy40MjcgNi41MXoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07dGkuZGlzcGxheU5hbWU9IlNWR0Nsb3NlIjt2YXIgbmk9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1jbG9zZSIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtY2xvc2UiKToiSWNvbnMtY2xvc2UiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp0aX0pfTtuaS5kaXNwbGF5TmFtZT0iQ2xvc2UiLG5pLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIHJpPW5pLG9pPSIiLmNvbmNhdCgiSGVhZGVyIiwiLWdsb2JhbFNlYXJjaCIpLGFpPSIiLmNvbmNhdCgiSGVhZGVyIiwiLWNsb3NlT3ZlcmxheSIpLGlpPSIiLmNvbmNhdCgiSGVhZGVyIiwiLW5hdkl0ZW0iKSx1aT1mdW5jdGlvbihlKXt2YXIgdD1lLmlzU3BhUGFnZSxuPUUuYS51c2VTdGF0ZSghMSkscj1LKCkobiwyKSxvPXJbMF0sYT1yWzFdO2lmKCFFLmEudXNlQ29udGV4dChwZSkuaWRlbnRpdHkuaGFzUGVybWlzc2lvbih7cGVybWlzc2lvbjoiY2F0YWxvZyIscHJpdmlsZWdlOiJpbmRleCJ9KSlyZXR1cm4gbnVsbDt2YXIgaT1mdW5jdGlvbigpe3JldHVybiBhKCExKX07cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEUuYS5GcmFnbWVudCxudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtpZDoiaGVhZGVyR2xvYmFsU2VhcmNoSWNvbiIsY2xhc3NOYW1lOlR0KCkoW2lpLCJnbG9iYWxTZWFyY2hJY29uIix7YWN0aXZlOm99XSksb25DbGljazpmdW5jdGlvbigpe3JldHVybiBhKCFvKX19LEUuYS5jcmVhdGVFbGVtZW50KGxuLG51bGwpKSxvJiZFLmEuY3JlYXRlRWxlbWVudChFLmEuRnJhZ21lbnQsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOm9pfSxFLmEuY3JlYXRlRWxlbWVudChucix7aWRQcmVmaXg6IkhlYWRlciIsc2V0QWN0aXZlOmEsYXV0b0ZvY3VzOiEwLGlzU3BhUGFnZTp0fSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2xvc2VTZWFyY2hCdXR0b24iLG9uQ2xpY2s6aX0sRS5hLmNyZWF0ZUVsZW1lbnQocmksbnVsbCkpKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOmFpLG9uQ2xpY2s6aX0pKSl9O3VpLnByb3BUeXBlcz17aXNTcGFQYWdlOlYuYS5ib29sfSx1aS5kZWZhdWx0UHJvcHM9e2lzU3BhUGFnZTohMX07dmFyIHNpPXVpLGxpPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5jb29raWVOYW1lLHI9ZS5oYXNBbmFseXRpY3NQZXJtaXNzaW9uLG89ZS5oYXNPcmNoYXJkR29GZWF0dXJlQ29udHJvbCxhPWUuY2hpbGRyZW4saT0iIi5jb25jYXQobiwiPWZhbHNlIiksdT1PYmplY3QoXy51c2VTdGF0ZSkoZG9jdW1lbnQuY29va2llLmluY2x1ZGVzKGkpKSxzPUsoKSh1LDIpLGw9c1swXSxjPXNbMV07cmV0dXJuIHQ9ciYmbz8iT3JjaGFyZC1nby1iYW5uZXIiOiJBZHZlcnRpc2luZy1iYW5uZXIiLGw/bnVsbDpFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOnR9LGEsRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQodCwiLWNsb3NlQmFubmVyQnV0dG9uIiksb25DbGljazpmdW5jdGlvbigpe2RvY3VtZW50LmNvb2tpZT1pLGMoITApfX0sRS5hLmNyZWF0ZUVsZW1lbnQocmksbnVsbCkpKX07bGkucHJvcFR5cGVzPXtjb29raWVOYW1lOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxoYXNBbmFseXRpY3NQZXJtaXNzaW9uOlYuYS5ib29sLGhhc09yY2hhcmRHb0ZlYXR1cmVDb250cm9sOlYuYS5ib29sLGNoaWxkcmVuOlYuYS5vbmVPZlR5cGUoW1YuYS5lbGVtZW50LFYuYS5hcnJheU9mKFYuYS5lbGVtZW50KV0pfTt2YXIgY2k9bGksZmk9WyIvaW5kZXgyIiwiLyJdLGRpPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkFkLWNhbXBhaWduLXByb21vIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIkFkLWNhbXBhaWduLXByb21vIiwiLXRpdGxlIil9LGZlKCJiYW5uZXIuYWR2ZXJ0aXNpbmcuZGVzY3JpcHRpb24iKSwiwqAiLEUuYS5jcmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiQWQtY2FtcGFpZ24tcHJvbW8iLCItdXJsIiksaHJlZjoiL21hcmtldGluZzI/YWRfY2FtcGFpZ25zX3Byb21vPXRydWUifSxmZSgiYmFubmVyLmFkdmVydGlzaW5nLmFuY2hvclRleHQiKSkpKX0scGk9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUubGFuZ3VhZ2U7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ik9yY2hhcmQtZ28tYWQifSxFLmEuY3JlYXRlRWxlbWVudCgiaW1nIix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiT3JjaGFyZC1nby1hZCIsIi1pY29uIiksc3JjOiJodHRwczovL2Nkbi50aGVvcmNoYXJkLmlvL3dlYi1pY29ucy9HTy1CYW5uZXItSWNvbi5zdmciLGFsdDoiT3JjaGFyZEdPX0ljb24ifSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIk9yY2hhcmQtZ28tYWQiLCItdGl0bGUiKX0sZmUoImJhbm5lci5vcmNoYXJkR28uZGVzY3JpcHRpb24iKSxFLmEuY3JlYXRlRWxlbWVudCgiYSIse2NsYXNzTmFtZToiIi5jb25jYXQoIk9yY2hhcmQtZ28tYWQiLCItdXJsIiksaHJlZjoodD1yLG49IiIuY29uY2F0KCJodHRwczovL2hlbHBjZW50ZXIudGhlb3JjaGFyZC5jb20iKS5jb25jYXQoUm8pLCIiLmNvbmNhdChuLCIvP2xhbmc9IikuY29uY2F0KHQpKX0sZmUoImJhbm5lci5vcmNoYXJkR28uYW5jaG9yVGV4dCIpKSkpfTtwaS5wcm9wVHlwZXM9e2xhbmd1YWdlOlYuYS5zdHJpbmd9O3ZhciBoaT1mdW5jdGlvbihlKXt2YXIgdCxuPWUubG9jYXRpb24scj1FLmEudXNlQ29udGV4dChwZSkuaWRlbnRpdHksbz1uLnBhdGhuYW1lLGE9ci5sYW5ndWFnZTtpZighZmkuaW5jbHVkZXMobykpcmV0dXJuIG51bGw7dmFyIGk9ci5oYXNQZXJtaXNzaW9uKHtwZXJtaXNzaW9uOiJhbmFseXRpY3MifSksdT1yLmhhc0ZlYXR1cmVDb250cm9sKCJPcmNoYXJkR28gQmFubmVyIikscz1yLmhhc1Blcm1pc3Npb24oe3Blcm1pc3Npb246Im1hcmtldGluZyJ9KSxsPXIuaGFzRmVhdHVyZUNvbnRyb2woIkZhY2Vib29rIEFkdmVydGlzaW5nIEJhbm5lciIpO3JldHVybiBpJiZ1Pyh0PSJvcmNoYXJkLWdvLWJhbm5lciIsRS5hLmNyZWF0ZUVsZW1lbnQoY2kse2Nvb2tpZU5hbWU6dCxoYXNBbmFseXRpY3NQZXJtaXNzaW9uOmksaGFzT3JjaGFyZEdvRmVhdHVyZUNvbnRyb2w6dX0sRS5hLmNyZWF0ZUVsZW1lbnQocGkse2xhbmd1YWdlOmF9KSkpOnMmJmw/KHQ9ImJhbm5lciIsRS5hLmNyZWF0ZUVsZW1lbnQoY2kse2Nvb2tpZU5hbWU6dCxoYXNBbmFseXRpY3NQZXJtaXNzaW9uOmksaGFzT3JjaGFyZEdvRmVhdHVyZUNvbnRyb2w6dX0sRS5hLmNyZWF0ZUVsZW1lbnQoZGksbnVsbCkpKTpudWxsfTtoaS5wcm9wVHlwZXM9e2xvY2F0aW9uOlYuYS5zaGFwZSh7cGF0aG5hbWU6Vi5hLnN0cmluZ30pfTt2YXIgeWk9T2JqZWN0KF90LmEpKGhpKSxtaT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tbG9nbyIsdmlld0JveDoiMCAwIDIzIDMyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTIyLjg1NjQ4MTMsMjAuNDE0Nzc5NSBDMjIuODU2NDgxMywyNi41MzIwMzcyIDE3Ljg0NTQyMywzMS40OTAxMjQxIDExLjY1OTUxNDMsMzEuNDkwMTI0MSBDNS40Nzg2NDI0OSwzMS40OTE5OTI4IDAuNDYzODA2NTgzLDI2LjUzMjY2MDEgMC40NjM4MDY1ODMsMjAuNDE0Nzc5NSBDMC40NjM4MDY1ODMsMTQuMjk4MTQ0NiA1LjQ3ODY0MjQ5LDkuMzM5NDM0NzkgMTEuNjU4ODg0Nyw5LjMzOTQzNDc5IEMxNy44NDU0MjMsOS4zMzk0MzQ3OSAyMi44NTY0ODEzLDE0LjI5ODE0NDYgMjIuODU2NDgxMywyMC40MTQ3Nzk1IixmaWxsOiIjRkY4OTNFIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzLjE1MjMxNzMsMi4xMjkwMzA5OSBDMTEuOTg4Nzk5OCwxLjk0ODM5NzE3IDExLjA0NDM4NjMsMS45NTIxMzQ0MiAxMC4yMzQ3MDkxLDEuODM4NzcxMTMgQzkuMjMzMDAxMTIsMS43NjIxNTc0NyA3LjMzODUwNzU2LDEuNTAxNzk1NjIgNi43OTA3NDc3LDAuNjE5MTgxNDA2IEM2Ljc5MDc0NzcsMC42MTkxODE0MDYgNi43NzgxNTU1MiwwLjY5NzY2MzY4NiA2Ljc2OTM0MSwwLjg0Mjc5MzYxOCBDNi43NDc5MzQyOSwxLjE2NzMxMTYyIDYuNzQ2MDQ1NDYsMS44MTY5NzA1IDYuOTM5MzM1NDQsMi42NTM0OTE5NCBDNy4xMjMxODEyNywzLjM2MDQ1NTM0IDcuMzg4ODc2MjgsNC4wODI5OTA2MiA3Ljc2NjAxMjA5LDQuNzY4Nzc2MjYgQzcuODg2ODk3MDIsNC45ODU1MzY4NSA4LjAyNDc4MTQsNS4yMDQ3ODg5MyA4LjE3NjUxNzE3LDUuNDI3MTU1MzkgQzkuMTExNDg2NTgsNi43Njk0NTE1NCAxMC41OTQ4NDU1LDcuNzI3NDMzNjYgMTIuODI0OTIwNiw4LjIyNTExMDk4IEMxNS43NDg4MjUsOC44NzYwMTU2MSAxOC41MjM1MTE5LDkuMzQ0NDE3NzkgMjAuNjc2Nzc0OCwxMi4wNTcwMzk1IEMyMC42ODE4MTE3LDEyLjA0NjQ1MDYgMjAuNjg0MzMwMSwxMi4wMzI3NDczIDIwLjY4OTk5NjYsMTIuMDIwOTEyNyBDMjEuMDg2MDIwNywxMC41NDk2ODE0IDE5LjU4NTY2MjQsMy4xMjA2NDgzOCAxMy4xNTIzMTczLDIuMTI5MDMwOTkiLGZpbGw6IiM3OEEyMkYifSkpKSl9O21pLmRpc3BsYXlOYW1lPSJTVkdMb2dvIjt2YXIgdmk9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1sb2dvIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1sb2dvIik6Ikljb25zLWxvZ28iLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzptaX0pfTt2aS5kaXNwbGF5TmFtZT0iTG9nbyIsdmkucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgZ2k9dmksYmk9bigiK1R2cyIpLHdpPSgiIi5jb25jYXQoIkhlYWRlclZlbmRvckljb25Mb2FkZXIiLCItd3JhcHBlciIpLCIiLmNvbmNhdCgiSGVhZGVyVmVuZG9ySWNvbkxvYWRlciIsIi1pdGVtIikpLF9pPSIiLmNvbmNhdCgiSGVhZGVyVmVuZG9ySWNvbkxvYWRlciIsIi1pbWFnZSIpLEVpPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6d2l9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6X2l9KSl9LE9pPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEtuLHtjb250ZW50OkVpLGNsYXNzTmFtZToiIi5jb25jYXQoIkhlYWRlclZlbmRvckljb25Mb2FkZXIiLCItd3JhcHBlciIpfSl9LGtpPSIiLmNvbmNhdCgiSGVhZGVyIiwiLWxvZ28iKSxDaT0iIi5jb25jYXQoIkhlYWRlciIsIi1sb2dvSW1hZ2UiKSx4aT1mdW5jdGlvbigpe3ZhciBlPUUuYS51c2VDb250ZXh0KHBlKS5pZGVudGl0eSx0PXZlLnVzZVJlcXVlc3QoaXQsZSksbj10LmxvYWRpbmcscj10LmRhdGE7cmV0dXJuIG58fGUuaXNBbm9ueW1vdXMoKT9FLmEuY3JlYXRlRWxlbWVudChPaSxudWxsKTpFLmEuY3JlYXRlRWxlbWVudChiaS5MaW5rQ29udGFpbmVyLHt0bzoiL2luZGV4MiIsYWN0aXZlQ2xhc3NOYW1lOiIifSxFLmEuY3JlYXRlRWxlbWVudChZci5MaW5rLHtjbGFzc05hbWU6a2l9LHI/RS5hLmNyZWF0ZUVsZW1lbnQoImltZyIse2NsYXNzTmFtZTpDaSxzcmM6cixhbHQ6ImxvZ28ifSk6RS5hLmNyZWF0ZUVsZW1lbnQoZ2ksbnVsbCkpKX0sU2k9IiIuY29uY2F0KCJIZWFkZXIiLCItaGVscCAiKS5jb25jYXQoIkhlYWRlciIsIi1uYXZJdGVtIiksRGk9IiIuY29uY2F0KCJoZWFkZXIiLCIuaGVscCIpLFRpPWZ1bmN0aW9uKCl7dmFyIGU9RS5hLnVzZUNvbnRleHQocGUpLmlkZW50aXR5LHQ9ZGUoKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoWXIuTGluayx7aHJlZjpBbyhlLHQpLGNsYXNzTmFtZTpTaX0sZmUoRGkpKX0sTWk9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoRS5hLkZyYWdtZW50LG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoeWksbnVsbCksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiSGVhZGVyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoam8se2JnOiJkYXJrIix2YXJpYW50OiJkYXJrIn0sRS5hLmNyZWF0ZUVsZW1lbnQoam8uQnJhbmQsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCh4aSxudWxsKSksRS5hLmNyZWF0ZUVsZW1lbnQoam8uQnJhbmQsbnVsbCxFLmEuY3JlYXRlRWxlbWVudChzaSx7aXNTcGFQYWdlOiEwfSkpLEUuYS5jcmVhdGVFbGVtZW50KFlyLHtjbGFzc05hbWU6Im1yLWF1dG8ifSxFLmEuY3JlYXRlRWxlbWVudCgkbyx7Y2xhc3NOYW1lOiJIZWFkZXIiLGl0ZW1zOkZvLmF9KSksRS5hLmNyZWF0ZUVsZW1lbnQoWXIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudChlaSxudWxsKSxFLmEuY3JlYXRlRWxlbWVudChUaSxudWxsKSkpKSl9LFBpPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1sb2dvLWZvb3RlciIsdmlld0JveDoiMCAwIDIxIDI5In0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjAuOTg0Mzc1LDE4LjM3ODgwNDIgQzIwLjk4NDM3NSwyNC4xMTEzNDA5IDE2LjI4ODQ2NzcsMjguNzU3NjA4NCAxMC40OTE1OTc1LDI4Ljc1NzYwODQgQzQuNjk5NDQ3NDIsMjguNzU5MzU5NSAwLDI0LjExMTkyNDYgMCwxOC4zNzg4MDQyIEMwLDEyLjY0Njg1MTEgNC42OTk0NDc0Miw4IDEwLjQ5MTAwNzUsOCBDMTYuMjg4NDY3Nyw4IDIwLjk4NDM3NSwxMi42NDY4NTExIDIwLjk4NDM3NSwxOC4zNzg4MDQyIixpZDoiRmlsbC0xLUNvcHktMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMS45OTA1OTI3LDEuNDE0ODkzNSBDMTAuOTAwMjUwMSwxLjI0NTYxOTk0IDEwLjAxNTIzMTgsMS4yNDkxMjIxNSA5LjI1NjQ3NjAzLDEuMTQyODg4NCBDOC4zMTc3NjY1NywxLjA3MTA5MzA2IDYuNTQyNDE5NzcsMC44MjcxMDU2NDggNi4wMjkxMDkxMywwIEM2LjAyOTEwOTEzLDAgNi4wMTczMDg4OSwwLjA3MzU0NjQ0NDQgNi4wMDkwNDg3MiwwLjIwOTU0ODk5NiBDNS45ODg5ODgzLDAuNTEzNjU3NzA3IDUuOTg3MjE4MjYsMS4xMjI0NTg4MyA2LjE2ODM1MjAyLDEuOTA2MzcwNTMgQzYuMzQwNjM1NTksMi41Njg4NzIyNCA2LjU4OTYyMDc1LDMuMjQ1OTY2NDkgNi45NDMwMzgwOCwzLjg4ODYyMjMyIEM3LjA1NjMyMDQzLDQuMDkxNzUwNiA3LjE4NTUzMzEsNC4yOTcyMTM2OCA3LjMyNzcyNjA1LDQuNTA1NTk1MjcgQzguMjAzODk0MjEsNS43NjM0NzI5NSA5LjU5Mzk2MzAzLDYuNjYxMjA2NTMgMTEuNjgzNzg2NCw3LjEyNzU4NDM4IEMxNC40MjM4MDMyLDcuNzM3NTUyOTEgMTcuMDIzOTg3MSw4LjE3NjQ5Njc3IDE5LjA0MTgyODksMTAuNzE4NTE4NyBDMTkuMDQ2NTQ5LDEwLjcwODU5NTggMTkuMDQ4OTA5LDEwLjY5NTc1NDMgMTkuMDU0MjE5MSwxMC42ODQ2NjQgQzE5LjQyNTMzNjgsOS4zMDU5NjAwMiAxOC4wMTkzMzc3LDIuMzQ0MTQ2OTkgMTEuOTkwNTkyNywxLjQxNDg5MzUiLGlkOiJGaWxsLTItQ29weS0yIn0pKX07UGkuZGlzcGxheU5hbWU9IlNWR0xvZ29Gb290ZXIiO3ZhciBOaT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWxvZ28tZm9vdGVyIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1sb2dvLWZvb3RlciIpOiJJY29ucy1sb2dvLWZvb3RlciIsb25DbGljazplLm9uQ2xpY2ssc3ZnOlBpfSl9O05pLmRpc3BsYXlOYW1lPSJMb2dvRm9vdGVyIixOaS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBqaT1OaSxMaT0iIi5jb25jYXQoIkZvb3RlciIsIi1jb3B5cmlnaHQiKSxSaT0iIi5jb25jYXQoIkZvb3RlciIsIl9oZWxwX2xpbmsiKSxJaT0iIi5jb25jYXQoIkZvb3RlciIsIi1sb2dvRm9vdGVyIiksQWk9IiIuY29uY2F0KCJGb290ZXIiLCItdGV4dExpbmUiKSxGaT0iIi5jb25jYXQoIkZvb3RlciIsIi10ZXh0TGluZVBhcnQiKSxCaT1mdW5jdGlvbihlKXt2YXIgdD1lLnRleHQsbj1lLnRlcm0scj1lLmhyZWYsbz1lLmlkLGE9ImhlbHAiIT09bj8iX2JsYW5rIjoiX3NlbGYiO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiYSIse2lkOm98fCIiLmNvbmNhdCgiRm9vdGVyIiwiXyIpLmNvbmNhdChuLCJfbGluayIpLGNsYXNzTmFtZTpUdCgpKEZpLHtkaXZpZGVyOiEhcn0pLGhyZWY6cix0YXJnZXQ6YX0sdHx8ZmUoImZvb3Rlci4iLmNvbmNhdChuKSkpfTtCaS5wcm9wVHlwZXM9e2lkOlYuYS5zdHJpbmcsdGV4dDpWLmEuc3RyaW5nLGhyZWY6Vi5hLnN0cmluZyx0ZXJtOlYuYS5zdHJpbmcuaXNSZXF1aXJlZH07dmFyIHppPWZ1bmN0aW9uKCl7dmFyIGU9RS5hLnVzZUNvbnRleHQocGUpLmlkZW50aXR5LHQ9IWUuaXNBbm9ueW1vdXMoKSYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS52ZW5kb3Isbj0odD12b2lkIDA9PT10P3t9OnQpLnN1cHBvcnRDb250YWN0RW1haWwscj10LmFzc2lnbmVkVG9FbWFpbDtyZXR1cm4gbnx8cnx8ImNsaWVudHNlcnZpY2VzQHRoZW9yY2hhcmQuY29tIn0oZSksbj1be3Rlcm06ImhlbHAiLGhyZWY6QW8oZSxkZSgpKSxpZDpSaX0se3Rlcm06InByaXZhY3lQb2xpY3kiLGhyZWY6Ii9sZWdhbC9wcml2YWN5In0se3Rlcm06InRlcm1zQW5kQ29uZGl0aW9ucyIsaHJlZjoiL2xlZ2FsL3Rlcm1zIn1dO3JldHVybiBlLnN1YmFjY291bnQ/bi51bnNoaWZ0KHt0ZXJtOiJjb250YWN0RGlzdHJpYnV0b3IifSk6dCYmKG4udW5zaGlmdCh7dGVybToic3VwcG9ydEVtYWlsIix0ZXh0OnQsaHJlZjoibWFpbHRvOiIuY29uY2F0KHQpfSksbi51bnNoaWZ0KHt0ZXJtOiJzdXBwb3J0Q29udGFjdCJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpUdCgpKCJGb290ZXIiLCJkLXByaW50LW5vbmUiKX0sRS5hLmNyZWF0ZUVsZW1lbnQoamkse2NsYXNzTmFtZTpJaX0pLEUuYS5jcmVhdGVFbGVtZW50KCJwIix7Y2xhc3NOYW1lOkFpfSxuLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEJpLE90KCkoe2tleTplLnRlcm19LGUpKX0pKSksRS5hLmNyZWF0ZUVsZW1lbnQoInAiLHtjbGFzc05hbWU6VHQoKShBaSxMaSl9LGZlKCJmb290ZXIuY29weXJpZ2h0Iix7eWVhcjoobmV3IERhdGUpLmdldEZ1bGxZZWFyKCl9KSksRS5hLmNyZWF0ZUVsZW1lbnQoInAiLHtjbGFzc05hbWU6QWl9LGZlKCJmb290ZXIudHJhZGVtYXJrIikpKX0sS2k9bigiMklOTiIpLHFpPW4oImpLZTciKSxWaT1uKCJpWmpjIiksVWk9bi5uKFZpKSxXaT1uKCJtclNHIiksWWk9bigiUlJnUSIpO2Z1bmN0aW9uIEhpKGUpe3JldHVybntraW5kOiJEb2N1bWVudCIsZGVmaW5pdGlvbnM6W3traW5kOiJPcGVyYXRpb25EZWZpbml0aW9uIixvcGVyYXRpb246InF1ZXJ5IixuYW1lOntraW5kOiJOYW1lIix2YWx1ZToiR2VuZXJhdGVkQ2xpZW50UXVlcnkifSxzZWxlY3Rpb25TZXQ6R2koZSl9XX19ZnVuY3Rpb24gR2koZSl7aWYoIm51bWJlciI9PXR5cGVvZiBlfHwiYm9vbGVhbiI9PXR5cGVvZiBlfHwic3RyaW5nIj09dHlwZW9mIGV8fG51bGw9PWUpcmV0dXJuIG51bGw7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gR2koZVswXSk7dmFyIHQ9W107cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPXtraW5kOiJGaWVsZCIsbmFtZTp7a2luZDoiTmFtZSIsdmFsdWU6bn0sc2VsZWN0aW9uU2V0OkdpKGVbbl0pfHx2b2lkIDB9O3QucHVzaChyKX0pKSx7a2luZDoiU2VsZWN0aW9uU2V0IixzZWxlY3Rpb25zOnR9fXZhciBRaSxKaT17a2luZDoiRG9jdW1lbnQiLGRlZmluaXRpb25zOlt7a2luZDoiT3BlcmF0aW9uRGVmaW5pdGlvbiIsb3BlcmF0aW9uOiJxdWVyeSIsbmFtZTpudWxsLHZhcmlhYmxlRGVmaW5pdGlvbnM6bnVsbCxkaXJlY3RpdmVzOltdLHNlbGVjdGlvblNldDp7a2luZDoiU2VsZWN0aW9uU2V0IixzZWxlY3Rpb25zOlt7a2luZDoiRmllbGQiLGFsaWFzOm51bGwsbmFtZTp7a2luZDoiTmFtZSIsdmFsdWU6Il9fdHlwZW5hbWUifSxhcmd1bWVudHM6W10sZGlyZWN0aXZlczpbXSxzZWxlY3Rpb25TZXQ6bnVsbH1dfX1dfSxaaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUucHJvdG90eXBlLnRyYW5zZm9ybURvY3VtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZS50cmFuc2Zvcm1Gb3JMaW5rPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZS5yZWFkUXVlcnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLHRoaXMucmVhZCh7cXVlcnk6ZS5xdWVyeSx2YXJpYWJsZXM6ZS52YXJpYWJsZXMsb3B0aW1pc3RpYzp0fSl9LGUucHJvdG90eXBlLnJlYWRGcmFnbWVudD1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMSksdGhpcy5yZWFkKHtxdWVyeTpPYmplY3QoWWkuaykoZS5mcmFnbWVudCxlLmZyYWdtZW50TmFtZSksdmFyaWFibGVzOmUudmFyaWFibGVzLHJvb3RJZDplLmlkLG9wdGltaXN0aWM6dH0pfSxlLnByb3RvdHlwZS53cml0ZVF1ZXJ5PWZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoe2RhdGFJZDoiUk9PVF9RVUVSWSIscmVzdWx0OmUuZGF0YSxxdWVyeTplLnF1ZXJ5LHZhcmlhYmxlczplLnZhcmlhYmxlc30pfSxlLnByb3RvdHlwZS53cml0ZUZyYWdtZW50PWZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoe2RhdGFJZDplLmlkLHJlc3VsdDplLmRhdGEsdmFyaWFibGVzOmUudmFyaWFibGVzLHF1ZXJ5Ok9iamVjdChZaS5rKShlLmZyYWdtZW50LGUuZnJhZ21lbnROYW1lKX0pfSxlLnByb3RvdHlwZS53cml0ZURhdGE9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUuaWQsbz1lLmRhdGE7aWYodm9pZCAwIT09cil7dmFyIGE9bnVsbDt0cnl7YT10aGlzLnJlYWQoe3Jvb3RJZDpyLG9wdGltaXN0aWM6ITEscXVlcnk6Sml9KX1jYXRjaChlKXt9dmFyIGk9YSYmYS5fX3R5cGVuYW1lfHwiX19DbGllbnREYXRhIix1PU9iamVjdC5hc3NpZ24oe19fdHlwZW5hbWU6aX0sbyk7dGhpcy53cml0ZUZyYWdtZW50KHtpZDpyLGZyYWdtZW50Oih0PXUsbj1pLHtraW5kOiJEb2N1bWVudCIsZGVmaW5pdGlvbnM6W3traW5kOiJGcmFnbWVudERlZmluaXRpb24iLHR5cGVDb25kaXRpb246e2tpbmQ6Ik5hbWVkVHlwZSIsbmFtZTp7a2luZDoiTmFtZSIsdmFsdWU6bnx8Il9fRmFrZVR5cGUifX0sbmFtZTp7a2luZDoiTmFtZSIsdmFsdWU6IkdlbmVyYXRlZENsaWVudFF1ZXJ5In0sc2VsZWN0aW9uU2V0OkdpKHQpfV19KSxkYXRhOnV9KX1lbHNlIHRoaXMud3JpdGVRdWVyeSh7cXVlcnk6SGkobyksZGF0YTpvfSl9LGV9KCk7UWl8fChRaT17fSk7dmFyICRpPW4oInF4Mm4iKSxYaT1udWxsLGV1PXt9LHR1PTEsbnU9QXJyYXkscnU9bnVbIkB3cnkvY29udGV4dDpTbG90Il18fGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5pZD1bInNsb3QiLHR1KyssRGF0ZS5ub3coKSxNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKV0uam9pbigiOiIpfXJldHVybiBlLnByb3RvdHlwZS5oYXNWYWx1ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1YaTtlO2U9ZS5wYXJlbnQpaWYodGhpcy5pZCBpbiBlLnNsb3RzKXt2YXIgdD1lLnNsb3RzW3RoaXMuaWRdO2lmKHQ9PT1ldSlicmVhaztyZXR1cm4gZSE9PVhpJiYoWGkuc2xvdHNbdGhpcy5pZF09dCksITB9cmV0dXJuIFhpJiYoWGkuc2xvdHNbdGhpcy5pZF09ZXUpLCExfSxlLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe2lmKHRoaXMuaGFzVmFsdWUoKSlyZXR1cm4gWGkuc2xvdHNbdGhpcy5pZF19LGUucHJvdG90eXBlLndpdGhWYWx1ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxhPSgobz17X19wcm90b19fOm51bGx9KVt0aGlzLmlkXT1lLG8pLGk9WGk7WGk9e3BhcmVudDppLHNsb3RzOmF9O3RyeXtyZXR1cm4gdC5hcHBseShyLG4pfWZpbmFsbHl7WGk9aX19LGUuYmluZD1mdW5jdGlvbihlKXt2YXIgdD1YaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1YaTt0cnl7cmV0dXJuIFhpPXQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtYaT1ufX19LGUubm9Db250ZXh0PWZ1bmN0aW9uKGUsdCxuKXtpZighWGkpcmV0dXJuIGUuYXBwbHkobix0KTt2YXIgcj1YaTt0cnl7cmV0dXJuIFhpPW51bGwsZS5hcHBseShuLHQpfWZpbmFsbHl7WGk9cn19LGV9KCk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShudSwiQHdyeS9jb250ZXh0OlNsb3QiLHt2YWx1ZTpudVsiQHdyeS9jb250ZXh0OlNsb3QiXT1lLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiExfSl9ZmluYWxseXtyZXR1cm4gZX19KCk7cnUuYmluZCxydS5ub0NvbnRleHQ7ZnVuY3Rpb24gb3UoKXt9dmFyIGF1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZvaWQgMD09PWUmJihlPTEvMCksdm9pZCAwPT09dCYmKHQ9b3UpLHRoaXMubWF4PWUsdGhpcy5kaXNwb3NlPXQsdGhpcy5tYXA9bmV3IE1hcCx0aGlzLm5ld2VzdD1udWxsLHRoaXMub2xkZXN0PW51bGx9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tYXAuaGFzKGUpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRFbnRyeShlKTtyZXR1cm4gdCYmdC52YWx1ZX0sZS5wcm90b3R5cGUuZ2V0RW50cnk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5tYXAuZ2V0KGUpO2lmKHQmJnQhPT10aGlzLm5ld2VzdCl7dmFyIG49dC5vbGRlcixyPXQubmV3ZXI7ciYmKHIub2xkZXI9biksbiYmKG4ubmV3ZXI9ciksdC5vbGRlcj10aGlzLm5ld2VzdCx0Lm9sZGVyLm5ld2VyPXQsdC5uZXdlcj1udWxsLHRoaXMubmV3ZXN0PXQsdD09PXRoaXMub2xkZXN0JiYodGhpcy5vbGRlc3Q9cil9cmV0dXJuIHR9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0RW50cnkoZSk7cmV0dXJuIG4/bi52YWx1ZT10OihuPXtrZXk6ZSx2YWx1ZTp0LG5ld2VyOm51bGwsb2xkZXI6dGhpcy5uZXdlc3R9LHRoaXMubmV3ZXN0JiYodGhpcy5uZXdlc3QubmV3ZXI9biksdGhpcy5uZXdlc3Q9bix0aGlzLm9sZGVzdD10aGlzLm9sZGVzdHx8bix0aGlzLm1hcC5zZXQoZSxuKSxuLnZhbHVlKX0sZS5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IoO3RoaXMub2xkZXN0JiZ0aGlzLm1hcC5zaXplPnRoaXMubWF4Oyl0aGlzLmRlbGV0ZSh0aGlzLm9sZGVzdC5rZXkpfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5tYXAuZ2V0KGUpO3JldHVybiEhdCYmKHQ9PT10aGlzLm5ld2VzdCYmKHRoaXMubmV3ZXN0PXQub2xkZXIpLHQ9PT10aGlzLm9sZGVzdCYmKHRoaXMub2xkZXN0PXQubmV3ZXIpLHQubmV3ZXImJih0Lm5ld2VyLm9sZGVyPXQub2xkZXIpLHQub2xkZXImJih0Lm9sZGVyLm5ld2VyPXQubmV3ZXIpLHRoaXMubWFwLmRlbGV0ZShlKSx0aGlzLmRpc3Bvc2UodC52YWx1ZSxlKSwhMCl9LGV9KCksaXU9bmV3IHJ1LHV1PVtdLHN1PVtdO2Z1bmN0aW9uIGx1KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHR8fCJhc3NlcnRpb24gZmFpbHVyZSIpfWZ1bmN0aW9uIGN1KGUpe3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnRocm93IG5ldyBFcnJvcigidW5rbm93biB2YWx1ZSIpO2Nhc2UgMTpyZXR1cm4gZVswXTtjYXNlIDI6dGhyb3cgZVsxXX19dmFyIGZ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3RoaXMuZm49dCx0aGlzLmFyZ3M9bix0aGlzLnBhcmVudHM9bmV3IFNldCx0aGlzLmNoaWxkVmFsdWVzPW5ldyBNYXAsdGhpcy5kaXJ0eUNoaWxkcmVuPW51bGwsdGhpcy5kaXJ0eT0hMCx0aGlzLnJlY29tcHV0aW5nPSExLHRoaXMudmFsdWU9W10sKytlLmNvdW50fXJldHVybiBlLnByb3RvdHlwZS5yZWNvbXB1dGU9ZnVuY3Rpb24oKXtpZihsdSghdGhpcy5yZWNvbXB1dGluZywiYWxyZWFkeSByZWNvbXB1dGluZyIpLGZ1bmN0aW9uKGUpe3ZhciB0PWl1LmdldFZhbHVlKCk7aWYodClyZXR1cm4gZS5wYXJlbnRzLmFkZCh0KSx0LmNoaWxkVmFsdWVzLmhhcyhlKXx8dC5jaGlsZFZhbHVlcy5zZXQoZSxbXSkscHUoZSk/bXUodCxlKTp2dSh0LGUpLHR9KHRoaXMpfHwhYnUodGhpcykpcmV0dXJuIHB1KHRoaXMpP2Z1bmN0aW9uKGUpe3ZhciB0PXd1KGUpO2l1LndpdGhWYWx1ZShlLGR1LFtlXSksZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUuc3Vic2NyaWJlKXRyeXtFdShlKSxlLnVuc3Vic2NyaWJlPWUuc3Vic2NyaWJlLmFwcGx5KG51bGwsZS5hcmdzKX1jYXRjaCh0KXtyZXR1cm4gZS5zZXREaXJ0eSgpLCExfXJldHVybiEwfShlKSYmZnVuY3Rpb24oZSl7aWYoZS5kaXJ0eT0hMSxwdShlKSlyZXR1cm47eXUoZSl9KGUpO3JldHVybiB0LmZvckVhY2goYnUpLGN1KGUudmFsdWUpfSh0aGlzKTpjdSh0aGlzLnZhbHVlKX0sZS5wcm90b3R5cGUuc2V0RGlydHk9ZnVuY3Rpb24oKXt0aGlzLmRpcnR5fHwodGhpcy5kaXJ0eT0hMCx0aGlzLnZhbHVlLmxlbmd0aD0wLGh1KHRoaXMpLEV1KHRoaXMpKX0sZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7d3UodGhpcykuZm9yRWFjaChidSksRXUodGhpcyksdGhpcy5wYXJlbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Quc2V0RGlydHkoKSxfdSh0LGUpfSkpfSxlLmNvdW50PTAsZX0oKTtmdW5jdGlvbiBkdShlKXtlLnJlY29tcHV0aW5nPSEwLGUudmFsdWUubGVuZ3RoPTA7dHJ5e2UudmFsdWVbMF09ZS5mbi5hcHBseShudWxsLGUuYXJncyl9Y2F0Y2godCl7ZS52YWx1ZVsxXT10fWUucmVjb21wdXRpbmc9ITF9ZnVuY3Rpb24gcHUoZSl7cmV0dXJuIGUuZGlydHl8fCEoIWUuZGlydHlDaGlsZHJlbnx8IWUuZGlydHlDaGlsZHJlbi5zaXplKX1mdW5jdGlvbiBodShlKXtlLnBhcmVudHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIG11KHQsZSl9KSl9ZnVuY3Rpb24geXUoZSl7ZS5wYXJlbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB2dSh0LGUpfSkpfWZ1bmN0aW9uIG11KGUsdCl7aWYobHUoZS5jaGlsZFZhbHVlcy5oYXModCkpLGx1KHB1KHQpKSxlLmRpcnR5Q2hpbGRyZW4pe2lmKGUuZGlydHlDaGlsZHJlbi5oYXModCkpcmV0dXJufWVsc2UgZS5kaXJ0eUNoaWxkcmVuPXN1LnBvcCgpfHxuZXcgU2V0O2UuZGlydHlDaGlsZHJlbi5hZGQodCksaHUoZSl9ZnVuY3Rpb24gdnUoZSx0KXtsdShlLmNoaWxkVmFsdWVzLmhhcyh0KSksbHUoIXB1KHQpKTt2YXIgbixyLG8sYT1lLmNoaWxkVmFsdWVzLmdldCh0KTswPT09YS5sZW5ndGg/ZS5jaGlsZFZhbHVlcy5zZXQodCx0LnZhbHVlLnNsaWNlKDApKToobj1hLHI9dC52YWx1ZSwobz1uLmxlbmd0aCk+MCYmbz09PXIubGVuZ3RoJiZuW28tMV09PT1yW28tMV18fGUuc2V0RGlydHkoKSksZ3UoZSx0KSxwdShlKXx8eXUoZSl9ZnVuY3Rpb24gZ3UoZSx0KXt2YXIgbj1lLmRpcnR5Q2hpbGRyZW47biYmKG4uZGVsZXRlKHQpLDA9PT1uLnNpemUmJihzdS5sZW5ndGg8MTAwJiZzdS5wdXNoKG4pLGUuZGlydHlDaGlsZHJlbj1udWxsKSl9ZnVuY3Rpb24gYnUoZSl7cmV0dXJuIDA9PT1lLnBhcmVudHMuc2l6ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUucmVwb3J0T3JwaGFuJiYhMD09PWUucmVwb3J0T3JwaGFuKCl9ZnVuY3Rpb24gd3UoZSl7dmFyIHQ9dXU7cmV0dXJuIGUuY2hpbGRWYWx1ZXMuc2l6ZT4wJiYodD1bXSxlLmNoaWxkVmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKG4scil7X3UoZSxyKSx0LnB1c2gocil9KSkpLGx1KG51bGw9PT1lLmRpcnR5Q2hpbGRyZW4pLHR9ZnVuY3Rpb24gX3UoZSx0KXt0LnBhcmVudHMuZGVsZXRlKGUpLGUuY2hpbGRWYWx1ZXMuZGVsZXRlKHQpLGd1KGUsdCl9ZnVuY3Rpb24gRXUoZSl7dmFyIHQ9ZS51bnN1YnNjcmliZTsiZnVuY3Rpb24iPT10eXBlb2YgdCYmKGUudW5zdWJzY3JpYmU9dm9pZCAwLHQoKSl9dmFyIE91PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLndlYWtuZXNzPWV9cmV0dXJuIGUucHJvdG90eXBlLmxvb2t1cD1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gdGhpcy5sb29rdXBBcnJheShlKX0sZS5wcm90b3R5cGUubG9va3VwQXJyYXk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdD10LmdldENoaWxkVHJpZShlKX0pKSx0LmRhdGF8fCh0LmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKSl9LGUucHJvdG90eXBlLmdldENoaWxkVHJpZT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLndlYWtuZXNzJiZmdW5jdGlvbihlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2Uib2JqZWN0IjppZihudWxsPT09ZSlicmVhaztjYXNlImZ1bmN0aW9uIjpyZXR1cm4hMH1yZXR1cm4hMX0odCk/dGhpcy53ZWFrfHwodGhpcy53ZWFrPW5ldyBXZWFrTWFwKTp0aGlzLnN0cm9uZ3x8KHRoaXMuc3Ryb25nPW5ldyBNYXApLHI9bi5nZXQodCk7cmV0dXJuIHJ8fG4uc2V0KHQscj1uZXcgZSh0aGlzLndlYWtuZXNzKSkscn0sZX0oKTt2YXIga3U9bmV3IE91KCJmdW5jdGlvbiI9PXR5cGVvZiBXZWFrTWFwKTtmdW5jdGlvbiBDdSgpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4ga3UubG9va3VwQXJyYXkoZSl9dmFyIHh1PW5ldyBTZXQ7ZnVuY3Rpb24gU3UoZSx0KXt2b2lkIDA9PT10JiYodD1PYmplY3QuY3JlYXRlKG51bGwpKTt2YXIgbj1uZXcgYXUodC5tYXh8fE1hdGgucG93KDIsMTYpLChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNwb3NlKCl9KSkscj0hIXQuZGlzcG9zYWJsZSxvPXQubWFrZUNhY2hlS2V5fHxDdTtmdW5jdGlvbiBhKCl7aWYoIXJ8fGl1Lmhhc1ZhbHVlKCkpe3ZhciBhPW8uYXBwbHkobnVsbCxhcmd1bWVudHMpO2lmKCFhKXJldHVybiBlLmFwcGx5KG51bGwsYXJndW1lbnRzKTt2YXIgaT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLHU9bi5nZXQoYSk7dT91LmFyZ3M9aToodT1uZXcgZnUoZSxpKSxuLnNldChhLHUpLHUuc3Vic2NyaWJlPXQuc3Vic2NyaWJlLHImJih1LnJlcG9ydE9ycGhhbj1mdW5jdGlvbigpe3JldHVybiBuLmRlbGV0ZShhKX0pKTt2YXIgcz11LnJlY29tcHV0ZSgpO3JldHVybiBuLnNldChhLHUpLHh1LmFkZChuKSxpdS5oYXNWYWx1ZSgpfHwoeHUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xlYW4oKX0pKSx4dS5jbGVhcigpKSxyP3ZvaWQgMDpzfX1yZXR1cm4gYS5kaXJ0eT1mdW5jdGlvbigpe3ZhciBlPW8uYXBwbHkobnVsbCxhcmd1bWVudHMpLHQ9ZSYmbi5nZXQoZSk7dCYmdC5zZXREaXJ0eSgpfSxhfXZhciBEdT0hMTtmdW5jdGlvbiBUdSgpe3ZhciBlPSFEdTtyZXR1cm4gT2JqZWN0KFlpLnkpKCl8fChEdT0hMCksZX12YXIgTXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5lbnN1cmVSZWFkeT1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sZS5wcm90b3R5cGUuY2FuQnlwYXNzSW5pdD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9bi5zdG9yZS5nZXQoZS5pZCksbz0iUk9PVF9RVUVSWSI9PT1lLmlkO2lmKCFyKXJldHVybiBvO3ZhciBhPXIuX190eXBlbmFtZSxpPXZvaWQgMD09PWE/byYmIlF1ZXJ5IjphO3JldHVybiBpJiZpPT09dHx8KFR1KCksImhldXJpc3RpYyIpfSxlfSgpLFB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtlJiZlLmludHJvc3BlY3Rpb25RdWVyeVJlc3VsdERhdGE/KHRoaXMucG9zc2libGVUeXBlc01hcD10aGlzLnBhcnNlSW50cm9zcGVjdGlvblJlc3VsdChlLmludHJvc3BlY3Rpb25RdWVyeVJlc3VsdERhdGEpLHRoaXMuaXNSZWFkeT0hMCk6dGhpcy5pc1JlYWR5PSExLHRoaXMubWF0Y2g9dGhpcy5tYXRjaC5iaW5kKHRoaXMpfXJldHVybiBlLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlLHQsbil7T2JqZWN0KEMuYikodGhpcy5pc1JlYWR5LDYpO3ZhciByPW4uc3RvcmUuZ2V0KGUuaWQpLG89IlJPT1RfUVVFUlkiPT09ZS5pZDtpZighcilyZXR1cm4gbzt2YXIgYT1yLl9fdHlwZW5hbWUsaT12b2lkIDA9PT1hP28mJiJRdWVyeSI6YTtpZihPYmplY3QoQy5iKShpLDcpLGk9PT10KXJldHVybiEwO3ZhciB1PXRoaXMucG9zc2libGVUeXBlc01hcFt0XTtyZXR1cm4hIShpJiZ1JiZ1LmluZGV4T2YoaSk+LTEpfSxlLnByb3RvdHlwZS5wYXJzZUludHJvc3BlY3Rpb25SZXN1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuX19zY2hlbWEudHlwZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7IlVOSU9OIiE9PWUua2luZCYmIklOVEVSRkFDRSIhPT1lLmtpbmR8fCh0W2UubmFtZV09ZS5wb3NzaWJsZVR5cGVzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZX0pKSl9KSksdH0sZX0oKSxOdT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGp1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD10aGlzO3ZvaWQgMD09PWUmJihlPU9iamVjdC5jcmVhdGUobnVsbCkpLHRoaXMuZGF0YT1lLHRoaXMuZGVwZW5kPVN1KChmdW5jdGlvbihlKXtyZXR1cm4gdC5kYXRhW2VdfSkse2Rpc3Bvc2FibGU6ITAsbWFrZUNhY2hlS2V5OmZ1bmN0aW9uKGUpe3JldHVybiBlfX0pfXJldHVybiBlLnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGF9LGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kZXBlbmQoZSksdGhpcy5kYXRhW2VdfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt0IT09dGhpcy5kYXRhW2VdJiYodGhpcy5kYXRhW2VdPXQsdGhpcy5kZXBlbmQuZGlydHkoZSkpfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7TnUuY2FsbCh0aGlzLmRhdGEsZSkmJihkZWxldGUgdGhpcy5kYXRhW2VdLHRoaXMuZGVwZW5kLmRpcnR5KGUpKX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnJlcGxhY2UobnVsbCl9LGUucHJvdG90eXBlLnJlcGxhY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlPyhPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXt0LnNldChuLGVbbl0pfSkpLE9iamVjdC5rZXlzKHRoaXMuZGF0YSkuZm9yRWFjaCgoZnVuY3Rpb24obil7TnUuY2FsbChlLG4pfHx0LmRlbGV0ZShuKX0pKSk6T2JqZWN0LmtleXModGhpcy5kYXRhKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmRlbGV0ZShlKX0pKX0sZX0oKTtmdW5jdGlvbiBMdShlKXtyZXR1cm4gbmV3IGp1KGUpfXZhciBSdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpcyxuPXZvaWQgMD09PWU/e306ZSxyPW4uY2FjaGVLZXlSb290LG89dm9pZCAwPT09cj9uZXcgT3UoWWkuZSk6cixhPW4uZnJlZXplUmVzdWx0cyxpPXZvaWQgMCE9PWEmJmEsdT10aGlzLmV4ZWN1dGVTdG9yZVF1ZXJ5LHM9dGhpcy5leGVjdXRlU2VsZWN0aW9uU2V0LGw9dGhpcy5leGVjdXRlU3ViU2VsZWN0ZWRBcnJheTt0aGlzLmZyZWV6ZVJlc3VsdHM9aSx0aGlzLmV4ZWN1dGVTdG9yZVF1ZXJ5PVN1KChmdW5jdGlvbihlKXtyZXR1cm4gdS5jYWxsKHQsZSl9KSx7bWFrZUNhY2hlS2V5OmZ1bmN0aW9uKGUpe3ZhciB0PWUucXVlcnksbj1lLnJvb3RWYWx1ZSxyPWUuY29udGV4dFZhbHVlLGE9ZS52YXJpYWJsZVZhbHVlcyxpPWUuZnJhZ21lbnRNYXRjaGVyO2lmKHIuc3RvcmUgaW5zdGFuY2VvZiBqdSlyZXR1cm4gby5sb29rdXAoci5zdG9yZSx0LGksSlNPTi5zdHJpbmdpZnkoYSksbi5pZCl9fSksdGhpcy5leGVjdXRlU2VsZWN0aW9uU2V0PVN1KChmdW5jdGlvbihlKXtyZXR1cm4gcy5jYWxsKHQsZSl9KSx7bWFrZUNhY2hlS2V5OmZ1bmN0aW9uKGUpe3ZhciB0PWUuc2VsZWN0aW9uU2V0LG49ZS5yb290VmFsdWUscj1lLmV4ZWNDb250ZXh0O2lmKHIuY29udGV4dFZhbHVlLnN0b3JlIGluc3RhbmNlb2YganUpcmV0dXJuIG8ubG9va3VwKHIuY29udGV4dFZhbHVlLnN0b3JlLHQsci5mcmFnbWVudE1hdGNoZXIsSlNPTi5zdHJpbmdpZnkoci52YXJpYWJsZVZhbHVlcyksbi5pZCl9fSksdGhpcy5leGVjdXRlU3ViU2VsZWN0ZWRBcnJheT1TdSgoZnVuY3Rpb24oZSl7cmV0dXJuIGwuY2FsbCh0LGUpfSkse21ha2VDYWNoZUtleTpmdW5jdGlvbihlKXt2YXIgdD1lLmZpZWxkLG49ZS5hcnJheSxyPWUuZXhlY0NvbnRleHQ7aWYoci5jb250ZXh0VmFsdWUuc3RvcmUgaW5zdGFuY2VvZiBqdSlyZXR1cm4gby5sb29rdXAoci5jb250ZXh0VmFsdWUuc3RvcmUsdCxuLEpTT04uc3RyaW5naWZ5KHIudmFyaWFibGVWYWx1ZXMpKX19KX1yZXR1cm4gZS5wcm90b3R5cGUucmVhZFF1ZXJ5RnJvbVN0b3JlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRpZmZRdWVyeUFnYWluc3RTdG9yZShPYmplY3QoV2kuYSkoe30sZSx7cmV0dXJuUGFydGlhbERhdGE6ITF9KSkucmVzdWx0fSxlLnByb3RvdHlwZS5kaWZmUXVlcnlBZ2FpbnN0U3RvcmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9yZSxuPWUucXVlcnkscj1lLnZhcmlhYmxlcyxvPWUucHJldmlvdXNSZXN1bHQsYT1lLnJldHVyblBhcnRpYWxEYXRhLGk9dm9pZCAwPT09YXx8YSx1PWUucm9vdElkLHM9dm9pZCAwPT09dT8iUk9PVF9RVUVSWSI6dSxsPWUuZnJhZ21lbnRNYXRjaGVyRnVuY3Rpb24sYz1lLmNvbmZpZyxmPU9iamVjdChZaS5vKShuKTtyPU9iamVjdChZaS5jKSh7fSxPYmplY3QoWWkuaCkoZikscik7dmFyIGQ9e3N0b3JlOnQsZGF0YUlkRnJvbU9iamVjdDpjJiZjLmRhdGFJZEZyb21PYmplY3QsY2FjaGVSZWRpcmVjdHM6YyYmYy5jYWNoZVJlZGlyZWN0c3x8e319LHA9dGhpcy5leGVjdXRlU3RvcmVRdWVyeSh7cXVlcnk6bixyb290VmFsdWU6e3R5cGU6ImlkIixpZDpzLGdlbmVyYXRlZDohMCx0eXBlbmFtZToiUXVlcnkifSxjb250ZXh0VmFsdWU6ZCx2YXJpYWJsZVZhbHVlczpyLGZyYWdtZW50TWF0Y2hlcjpsfSksaD1wLm1pc3NpbmcmJnAubWlzc2luZy5sZW5ndGg+MDtyZXR1cm4gaCYmIWkmJnAubWlzc2luZy5mb3JFYWNoKChmdW5jdGlvbihlKXtpZighZS50b2xlcmFibGUpdGhyb3cgbmV3IEMuYSg4KX0pKSxvJiZPYmplY3QoJGkuYSkobyxwLnJlc3VsdCkmJihwLnJlc3VsdD1vKSx7cmVzdWx0OnAucmVzdWx0LGNvbXBsZXRlOiFofX0sZS5wcm90b3R5cGUuZXhlY3V0ZVN0b3JlUXVlcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5xdWVyeSxuPWUucm9vdFZhbHVlLHI9ZS5jb250ZXh0VmFsdWUsbz1lLnZhcmlhYmxlVmFsdWVzLGE9ZS5mcmFnbWVudE1hdGNoZXIsaT12b2lkIDA9PT1hP0F1OmEsdT1PYmplY3QoWWkubCkodCkscz1PYmplY3QoWWkuaikodCksbD17cXVlcnk6dCxmcmFnbWVudE1hcDpPYmplY3QoWWkuZykocyksY29udGV4dFZhbHVlOnIsdmFyaWFibGVWYWx1ZXM6byxmcmFnbWVudE1hdGNoZXI6aX07cmV0dXJuIHRoaXMuZXhlY3V0ZVNlbGVjdGlvblNldCh7c2VsZWN0aW9uU2V0OnUuc2VsZWN0aW9uU2V0LHJvb3RWYWx1ZTpuLGV4ZWNDb250ZXh0Omx9KX0sZS5wcm90b3R5cGUuZXhlY3V0ZVNlbGVjdGlvblNldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ZS5zZWxlY3Rpb25TZXQscj1lLnJvb3RWYWx1ZSxvPWUuZXhlY0NvbnRleHQsYT1vLmZyYWdtZW50TWFwLGk9by5jb250ZXh0VmFsdWUsdT1vLnZhcmlhYmxlVmFsdWVzLHM9e3Jlc3VsdDpudWxsfSxsPVtdLGM9aS5zdG9yZS5nZXQoci5pZCksZj1jJiZjLl9fdHlwZW5hbWV8fCJST09UX1FVRVJZIj09PXIuaWQmJiJRdWVyeSJ8fHZvaWQgMDtmdW5jdGlvbiBkKGUpe3ZhciB0O3JldHVybiBlLm1pc3NpbmcmJihzLm1pc3Npbmc9cy5taXNzaW5nfHxbXSwodD1zLm1pc3NpbmcpLnB1c2guYXBwbHkodCxlLm1pc3NpbmcpKSxlLnJlc3VsdH1yZXR1cm4gbi5zZWxlY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuO2lmKE9iamVjdChZaS5GKShlLHUpKWlmKE9iamVjdChZaS50KShlKSl7dmFyIHM9ZCh0LmV4ZWN1dGVGaWVsZChjLGYsZSxvKSk7dm9pZCAwIT09cyYmbC5wdXNoKCgobj17fSlbT2JqZWN0KFlpLkUpKGUpXT1zLG4pKX1lbHNle3ZhciBwPXZvaWQgMDtpZihPYmplY3QoWWkudikoZSkpcD1lO2Vsc2UgaWYoIShwPWFbZS5uYW1lLnZhbHVlXSkpdGhyb3cgbmV3IEMuYSg5KTt2YXIgaD1wLnR5cGVDb25kaXRpb24mJnAudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlLHk9IWh8fG8uZnJhZ21lbnRNYXRjaGVyKHIsaCxpKTtpZih5KXt2YXIgbT10LmV4ZWN1dGVTZWxlY3Rpb25TZXQoe3NlbGVjdGlvblNldDpwLnNlbGVjdGlvblNldCxyb290VmFsdWU6cixleGVjQ29udGV4dDpvfSk7ImhldXJpc3RpYyI9PT15JiZtLm1pc3NpbmcmJihtPU9iamVjdChXaS5hKSh7fSxtLHttaXNzaW5nOm0ubWlzc2luZy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QoV2kuYSkoe30sZSx7dG9sZXJhYmxlOiEwfSl9KSl9KSksbC5wdXNoKGQobSkpfX19KSkscy5yZXN1bHQ9T2JqZWN0KFlpLkIpKGwpLHRoaXMuZnJlZXplUmVzdWx0cyxzfSxlLnByb3RvdHlwZS5leGVjdXRlRmllbGQ9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ci52YXJpYWJsZVZhbHVlcyxhPXIuY29udGV4dFZhbHVlLGk9ZnVuY3Rpb24oZSx0LG4scixvLGEpe2EucmVzdWx0S2V5O3ZhciBpPWEuZGlyZWN0aXZlcyx1PW47KHJ8fGkpJiYodT1PYmplY3QoWWkucCkodSxyLGkpKTt2YXIgcz12b2lkIDA7aWYoZSYmdm9pZCAwPT09KHM9ZVt1XSkmJm8uY2FjaGVSZWRpcmVjdHMmJiJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGw9by5jYWNoZVJlZGlyZWN0c1t0XTtpZihsKXt2YXIgYz1sW25dO2MmJihzPWMoZSxyLHtnZXRDYWNoZUtleTpmdW5jdGlvbihlKXt2YXIgdD1vLmRhdGFJZEZyb21PYmplY3QoZSk7cmV0dXJuIHQmJk9iamVjdChZaS5IKSh7aWQ6dCx0eXBlbmFtZTplLl9fdHlwZW5hbWV9KX19KSl9fWlmKHZvaWQgMD09PXMpcmV0dXJue3Jlc3VsdDpzLG1pc3Npbmc6W3tvYmplY3Q6ZSxmaWVsZE5hbWU6dSx0b2xlcmFibGU6ITF9XX07T2JqZWN0KFlpLncpKHMpJiYocz1zLmpzb24pO3JldHVybntyZXN1bHQ6c319KGUsdCxuLm5hbWUudmFsdWUsT2JqZWN0KFlpLmIpKG4sbyksYSx7cmVzdWx0S2V5Ok9iamVjdChZaS5FKShuKSxkaXJlY3RpdmVzOk9iamVjdChZaS5pKShuLG8pfSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoaS5yZXN1bHQpP3RoaXMuY29tYmluZUV4ZWNSZXN1bHRzKGksdGhpcy5leGVjdXRlU3ViU2VsZWN0ZWRBcnJheSh7ZmllbGQ6bixhcnJheTppLnJlc3VsdCxleGVjQ29udGV4dDpyfSkpOm4uc2VsZWN0aW9uU2V0P251bGw9PWkucmVzdWx0P2k6dGhpcy5jb21iaW5lRXhlY1Jlc3VsdHMoaSx0aGlzLmV4ZWN1dGVTZWxlY3Rpb25TZXQoe3NlbGVjdGlvblNldDpuLnNlbGVjdGlvblNldCxyb290VmFsdWU6aS5yZXN1bHQsZXhlY0NvbnRleHQ6cn0pKTooSXUobixpLnJlc3VsdCksdGhpcy5mcmVlemVSZXN1bHRzLGkpfSxlLnByb3RvdHlwZS5jb21iaW5lRXhlY1Jlc3VsdHM9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt0Lm1pc3NpbmcmJihlPWV8fFtdKS5wdXNoLmFwcGx5KGUsdC5taXNzaW5nKX0pKSx7cmVzdWx0OnQucG9wKCkucmVzdWx0LG1pc3Npbmc6ZX19LGUucHJvdG90eXBlLmV4ZWN1dGVTdWJTZWxlY3RlZEFycmF5PWZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcyxyPWUuZmllbGQsbz1lLmFycmF5LGE9ZS5leGVjQ29udGV4dDtmdW5jdGlvbiBpKGUpe3JldHVybiBlLm1pc3NpbmcmJih0PXR8fFtdKS5wdXNoLmFwcGx5KHQsZS5taXNzaW5nKSxlLnJlc3VsdH1yZXR1cm4gbz1vLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lP251bGw6QXJyYXkuaXNBcnJheShlKT9pKG4uZXhlY3V0ZVN1YlNlbGVjdGVkQXJyYXkoe2ZpZWxkOnIsYXJyYXk6ZSxleGVjQ29udGV4dDphfSkpOnIuc2VsZWN0aW9uU2V0P2kobi5leGVjdXRlU2VsZWN0aW9uU2V0KHtzZWxlY3Rpb25TZXQ6ci5zZWxlY3Rpb25TZXQscm9vdFZhbHVlOmUsZXhlY0NvbnRleHQ6YX0pKTooSXUocixlKSxlKX0pKSx0aGlzLmZyZWV6ZVJlc3VsdHMse3Jlc3VsdDpvLG1pc3Npbmc6dH19LGV9KCk7ZnVuY3Rpb24gSXUoZSx0KXtpZighZS5zZWxlY3Rpb25TZXQmJk9iamVjdChZaS51KSh0KSl0aHJvdyBuZXcgQy5hKDEwKX1mdW5jdGlvbiBBdSgpe3JldHVybiEwfWZ1bmN0aW9uIEZ1KGUpe09iamVjdChDLmIpKE9iamVjdChZaS51KShlKSwxMSl9dmFyIEJ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT1PYmplY3QuY3JlYXRlKG51bGwpKSx0aGlzLmRhdGE9ZX1yZXR1cm4gZS5wcm90b3R5cGUudG9PYmplY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGF0YVtlXX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dGhpcy5kYXRhW2VdPXR9LGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt0aGlzLmRhdGFbZV09dm9pZCAwfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZGF0YT1PYmplY3QuY3JlYXRlKG51bGwpfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUpe3RoaXMuZGF0YT1lfHxPYmplY3QuY3JlYXRlKG51bGwpfSxlfSgpO2Z1bmN0aW9uIHp1KGUpe3JldHVybiBuZXcgQnUoZSl9dmFyIEt1PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQudHlwZT0iV3JpdGVFcnJvciIsdH1yZXR1cm4gT2JqZWN0KFdpLmMpKHQsZSksdH0oRXJyb3IpO2Z1bmN0aW9uIHF1KGUsdCl7dmFyIG49bmV3IEt1KCJFcnJvciB3cml0aW5nIHJlc3VsdCB0byBzdG9yZSBmb3IgcXVlcnk6XG4gIitKU09OLnN0cmluZ2lmeSh0KSk7cmV0dXJuIG4ubWVzc2FnZSs9IlxuIitlLm1lc3NhZ2Usbi5zdGFjaz1lLnN0YWNrLG59dmFyIFZ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUud3JpdGVRdWVyeVRvU3RvcmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5xdWVyeSxuPWUucmVzdWx0LHI9ZS5zdG9yZSxvPXZvaWQgMD09PXI/THUoKTpyLGE9ZS52YXJpYWJsZXMsaT1lLmRhdGFJZEZyb21PYmplY3QsdT1lLmZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uO3JldHVybiB0aGlzLndyaXRlUmVzdWx0VG9TdG9yZSh7ZGF0YUlkOiJST09UX1FVRVJZIixyZXN1bHQ6bixkb2N1bWVudDp0LHN0b3JlOm8sdmFyaWFibGVzOmEsZGF0YUlkRnJvbU9iamVjdDppLGZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uOnV9KX0sZS5wcm90b3R5cGUud3JpdGVSZXN1bHRUb1N0b3JlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YUlkLG49ZS5yZXN1bHQscj1lLmRvY3VtZW50LG89ZS5zdG9yZSxhPXZvaWQgMD09PW8/THUoKTpvLGk9ZS52YXJpYWJsZXMsdT1lLmRhdGFJZEZyb21PYmplY3Qscz1lLmZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uLGw9T2JqZWN0KFlpLm0pKHIpO3RyeXtyZXR1cm4gdGhpcy53cml0ZVNlbGVjdGlvblNldFRvU3RvcmUoe3Jlc3VsdDpuLGRhdGFJZDp0LHNlbGVjdGlvblNldDpsLnNlbGVjdGlvblNldCxjb250ZXh0OntzdG9yZTphLHByb2Nlc3NlZERhdGE6e30sdmFyaWFibGVzOk9iamVjdChZaS5jKSh7fSxPYmplY3QoWWkuaCkobCksaSksZGF0YUlkRnJvbU9iamVjdDp1LGZyYWdtZW50TWFwOk9iamVjdChZaS5nKShPYmplY3QoWWkuaikocikpLGZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uOnN9fSl9Y2F0Y2goZSl7dGhyb3cgcXUoZSxyKX19LGUucHJvdG90eXBlLndyaXRlU2VsZWN0aW9uU2V0VG9TdG9yZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ZS5yZXN1bHQscj1lLmRhdGFJZCxvPWUuc2VsZWN0aW9uU2V0LGE9ZS5jb250ZXh0LGk9YS52YXJpYWJsZXMsdT1hLnN0b3JlLHM9YS5mcmFnbWVudE1hcDtyZXR1cm4gby5zZWxlY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBvO2lmKE9iamVjdChZaS5GKShlLGkpKWlmKE9iamVjdChZaS50KShlKSl7dmFyIHU9T2JqZWN0KFlpLkUpKGUpLGw9blt1XTtpZih2b2lkIDAhPT1sKXQud3JpdGVGaWVsZFRvU3RvcmUoe2RhdGFJZDpyLHZhbHVlOmwsZmllbGQ6ZSxjb250ZXh0OmF9KTtlbHNle3ZhciBjPSExLGY9ITE7ZS5kaXJlY3RpdmVzJiZlLmRpcmVjdGl2ZXMubGVuZ3RoJiYoYz1lLmRpcmVjdGl2ZXMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZSYmImRlZmVyIj09PWUubmFtZS52YWx1ZX0pKSxmPWUuZGlyZWN0aXZlcy5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lJiYiY2xpZW50Ij09PWUubmFtZS52YWx1ZX0pKSksIWMmJiFmJiZhLmZyYWdtZW50TWF0Y2hlckZ1bmN0aW9ufX1lbHNle3ZhciBkPXZvaWQgMDtPYmplY3QoWWkudikoZSk/ZD1lOihkPShzfHx7fSlbZS5uYW1lLnZhbHVlXSxPYmplY3QoQy5iKShkLDIpKTt2YXIgcD0hMDtpZihhLmZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uJiZkLnR5cGVDb25kaXRpb24pe3ZhciBoPXJ8fCJzZWxmIix5PU9iamVjdChZaS5IKSh7aWQ6aCx0eXBlbmFtZTp2b2lkIDB9KSxtPXtzdG9yZTpuZXcgQnUoKG89e30sb1toXT1uLG8pKSxjYWNoZVJlZGlyZWN0czp7fX0sdj1hLmZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uKHksZC50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWUsbSk7T2JqZWN0KFlpLngpKCkscD0hIXZ9cCYmdC53cml0ZVNlbGVjdGlvblNldFRvU3RvcmUoe3Jlc3VsdDpuLHNlbGVjdGlvblNldDpkLnNlbGVjdGlvblNldCxkYXRhSWQ6cixjb250ZXh0OmF9KX19KSksdX0sZS5wcm90b3R5cGUud3JpdGVGaWVsZFRvU3RvcmU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89ZS5maWVsZCxhPWUudmFsdWUsaT1lLmRhdGFJZCx1PWUuY29udGV4dCxzPXUudmFyaWFibGVzLGw9dS5kYXRhSWRGcm9tT2JqZWN0LGM9dS5zdG9yZSxmPU9iamVjdChZaS5HKShvLHMpO2lmKG8uc2VsZWN0aW9uU2V0JiZudWxsIT09YSlpZihBcnJheS5pc0FycmF5KGEpKXt2YXIgZD1pKyIuIitmO249dGhpcy5wcm9jZXNzQXJyYXlWYWx1ZShhLGQsby5zZWxlY3Rpb25TZXQsdSl9ZWxzZXt2YXIgcD1pKyIuIitmLGg9ITA7aWYoVXUocCl8fChwPSIkIitwKSxsKXt2YXIgeT1sKGEpO09iamVjdChDLmIpKCF5fHwhVXUoeSksMyksKHl8fCJudW1iZXIiPT10eXBlb2YgeSYmMD09PXkpJiYocD15LGg9ITEpfVd1KHAsbyx1LnByb2Nlc3NlZERhdGEpfHx0aGlzLndyaXRlU2VsZWN0aW9uU2V0VG9TdG9yZSh7ZGF0YUlkOnAscmVzdWx0OmEsc2VsZWN0aW9uU2V0Om8uc2VsZWN0aW9uU2V0LGNvbnRleHQ6dX0pO3ZhciBtPWEuX190eXBlbmFtZTtuPU9iamVjdChZaS5IKSh7aWQ6cCx0eXBlbmFtZTptfSxoKTt2YXIgdj0ocj1jLmdldChpKSkmJnJbZl07aWYodiE9PW4mJk9iamVjdChZaS51KSh2KSl7dmFyIGc9dm9pZCAwIT09di50eXBlbmFtZSxiPXZvaWQgMCE9PW0sdz1nJiZiJiZ2LnR5cGVuYW1lIT09bTtPYmplY3QoQy5iKSghaHx8di5nZW5lcmF0ZWR8fHcsNCksT2JqZWN0KEMuYikoIWd8fGIsNSksdi5nZW5lcmF0ZWQmJih3P2h8fGMuZGVsZXRlKHYuaWQpOmZ1bmN0aW9uIGUodCxuLHIpe2lmKHQ9PT1uKXJldHVybiExO3ZhciBvPXIuZ2V0KHQpLGE9ci5nZXQobiksaT0hMTtPYmplY3Qua2V5cyhvKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1vW3RdLHU9YVt0XTtPYmplY3QoWWkudSkobikmJlV1KG4uaWQpJiZPYmplY3QoWWkudSkodSkmJiFPYmplY3QoJGkuYSkobix1KSYmZShuLmlkLHUuaWQscikmJihpPSEwKX0pKSxyLmRlbGV0ZSh0KTt2YXIgdT1PYmplY3QoV2kuYSkoe30sbyxhKTtpZihPYmplY3QoJGkuYSkodSxhKSlyZXR1cm4gaTtyZXR1cm4gci5zZXQobix1KSwhMH0odi5pZCxuLmlkLGMpKX19ZWxzZSBuPW51bGwhPWEmJiJvYmplY3QiPT10eXBlb2YgYT97dHlwZToianNvbiIsanNvbjphfTphOyhyPWMuZ2V0KGkpKSYmT2JqZWN0KCRpLmEpKG4scltmXSl8fGMuc2V0KGksT2JqZWN0KFdpLmEpKHt9LHIsKCh0PXt9KVtmXT1uLHQpKSl9LGUucHJvdG90eXBlLnByb2Nlc3NBcnJheVZhbHVlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlLGEpe2lmKG51bGw9PT1lKXJldHVybiBudWxsO3ZhciBpPXQrIi4iK2E7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gby5wcm9jZXNzQXJyYXlWYWx1ZShlLGksbixyKTt2YXIgdT0hMDtpZihyLmRhdGFJZEZyb21PYmplY3Qpe3ZhciBzPXIuZGF0YUlkRnJvbU9iamVjdChlKTtzJiYoaT1zLHU9ITEpfXJldHVybiBXdShpLG4sci5wcm9jZXNzZWREYXRhKXx8by53cml0ZVNlbGVjdGlvblNldFRvU3RvcmUoe2RhdGFJZDppLHJlc3VsdDplLHNlbGVjdGlvblNldDpuLGNvbnRleHQ6cn0pLE9iamVjdChZaS5IKSh7aWQ6aSx0eXBlbmFtZTplLl9fdHlwZW5hbWV9LHUpfSkpfSxlfSgpO2Z1bmN0aW9uIFV1KGUpe3JldHVybiIkIj09PWVbMF19ZnVuY3Rpb24gV3UoZSx0LG4pe2lmKCFuKXJldHVybiExO2lmKG5bZV0pe2lmKG5bZV0uaW5kZXhPZih0KT49MClyZXR1cm4hMDtuW2VdLnB1c2godCl9ZWxzZSBuW2VdPVt0XTtyZXR1cm4hMX12YXIgWXU9e2ZyYWdtZW50TWF0Y2hlcjpuZXcgTXUsZGF0YUlkRnJvbU9iamVjdDpIdSxhZGRUeXBlbmFtZTohMCxyZXN1bHRDYWNoaW5nOiEwLGZyZWV6ZVJlc3VsdHM6ITF9O2Z1bmN0aW9uIEh1KGUpe2lmKGUuX190eXBlbmFtZSl7aWYodm9pZCAwIT09ZS5pZClyZXR1cm4gZS5fX3R5cGVuYW1lKyI6IitlLmlkO2lmKHZvaWQgMCE9PWUuX2lkKXJldHVybiBlLl9fdHlwZW5hbWUrIjoiK2UuX2lkfXJldHVybiBudWxsfXZhciBHdT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFF1PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuLHIpe3ZhciBvPWUuY2FsbCh0aGlzLE9iamVjdC5jcmVhdGUobnVsbCkpfHx0aGlzO3JldHVybiBvLm9wdGltaXN0aWNJZD10LG8ucGFyZW50PW4sby50cmFuc2FjdGlvbj1yLG99cmV0dXJuIE9iamVjdChXaS5jKSh0LGUpLHQucHJvdG90eXBlLnRvT2JqZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdChXaS5hKSh7fSx0aGlzLnBhcmVudC50b09iamVjdCgpLHRoaXMuZGF0YSl9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gR3UuY2FsbCh0aGlzLmRhdGEsZSk/dGhpcy5kYXRhW2VdOnRoaXMucGFyZW50LmdldChlKX0sdH0oQnUpLEp1PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztuLndhdGNoZXM9bmV3IFNldCxuLnR5cGVuYW1lRG9jdW1lbnRDYWNoZT1uZXcgTWFwLG4uY2FjaGVLZXlSb290PW5ldyBPdShZaS5lKSxuLnNpbGVuY2VCcm9hZGNhc3Q9ITEsbi5jb25maWc9T2JqZWN0KFdpLmEpKHt9LFl1LHQpLG4uY29uZmlnLmN1c3RvbVJlc29sdmVycyYmKG4uY29uZmlnLmNhY2hlUmVkaXJlY3RzPW4uY29uZmlnLmN1c3RvbVJlc29sdmVycyksbi5jb25maWcuY2FjaGVSZXNvbHZlcnMmJihuLmNvbmZpZy5jYWNoZVJlZGlyZWN0cz1uLmNvbmZpZy5jYWNoZVJlc29sdmVycyksbi5hZGRUeXBlbmFtZT0hIW4uY29uZmlnLmFkZFR5cGVuYW1lLG4uZGF0YT1uLmNvbmZpZy5yZXN1bHRDYWNoaW5nP25ldyBqdTpuZXcgQnUsbi5vcHRpbWlzdGljRGF0YT1uLmRhdGEsbi5zdG9yZVdyaXRlcj1uZXcgVnUsbi5zdG9yZVJlYWRlcj1uZXcgUnUoe2NhY2hlS2V5Um9vdDpuLmNhY2hlS2V5Um9vdCxmcmVlemVSZXN1bHRzOnQuZnJlZXplUmVzdWx0c30pO3ZhciByPW4sbz1yLm1heWJlQnJvYWRjYXN0V2F0Y2g7cmV0dXJuIG4ubWF5YmVCcm9hZGNhc3RXYXRjaD1TdSgoZnVuY3Rpb24oZSl7cmV0dXJuIG8uY2FsbChuLGUpfSkse21ha2VDYWNoZUtleTpmdW5jdGlvbihlKXtpZighZS5vcHRpbWlzdGljJiYhZS5wcmV2aW91c1Jlc3VsdClyZXR1cm4gci5kYXRhIGluc3RhbmNlb2YganU/ci5jYWNoZUtleVJvb3QubG9va3VwKGUucXVlcnksSlNPTi5zdHJpbmdpZnkoZS52YXJpYWJsZXMpKTp2b2lkIDB9fSksbn1yZXR1cm4gT2JqZWN0KFdpLmMpKHQsZSksdC5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmdGhpcy5kYXRhLnJlcGxhY2UoZSksdGhpc30sdC5wcm90b3R5cGUuZXh0cmFjdD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLChlP3RoaXMub3B0aW1pc3RpY0RhdGE6dGhpcy5kYXRhKS50b09iamVjdCgpfSx0LnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZS5yb290SWQmJnZvaWQgMD09PXRoaXMuZGF0YS5nZXQoZS5yb290SWQpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY29uZmlnLmZyYWdtZW50TWF0Y2hlcixuPXQmJnQubWF0Y2g7cmV0dXJuIHRoaXMuc3RvcmVSZWFkZXIucmVhZFF1ZXJ5RnJvbVN0b3JlKHtzdG9yZTplLm9wdGltaXN0aWM/dGhpcy5vcHRpbWlzdGljRGF0YTp0aGlzLmRhdGEscXVlcnk6dGhpcy50cmFuc2Zvcm1Eb2N1bWVudChlLnF1ZXJ5KSx2YXJpYWJsZXM6ZS52YXJpYWJsZXMscm9vdElkOmUucm9vdElkLGZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uOm4scHJldmlvdXNSZXN1bHQ6ZS5wcmV2aW91c1Jlc3VsdCxjb25maWc6dGhpcy5jb25maWd9KXx8bnVsbH0sdC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb25maWcuZnJhZ21lbnRNYXRjaGVyLG49dCYmdC5tYXRjaDt0aGlzLnN0b3JlV3JpdGVyLndyaXRlUmVzdWx0VG9TdG9yZSh7ZGF0YUlkOmUuZGF0YUlkLHJlc3VsdDplLnJlc3VsdCx2YXJpYWJsZXM6ZS52YXJpYWJsZXMsZG9jdW1lbnQ6dGhpcy50cmFuc2Zvcm1Eb2N1bWVudChlLnF1ZXJ5KSxzdG9yZTp0aGlzLmRhdGEsZGF0YUlkRnJvbU9iamVjdDp0aGlzLmNvbmZpZy5kYXRhSWRGcm9tT2JqZWN0LGZyYWdtZW50TWF0Y2hlckZ1bmN0aW9uOm59KSx0aGlzLmJyb2FkY2FzdFdhdGNoZXMoKX0sdC5wcm90b3R5cGUuZGlmZj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbmZpZy5mcmFnbWVudE1hdGNoZXIsbj10JiZ0Lm1hdGNoO3JldHVybiB0aGlzLnN0b3JlUmVhZGVyLmRpZmZRdWVyeUFnYWluc3RTdG9yZSh7c3RvcmU6ZS5vcHRpbWlzdGljP3RoaXMub3B0aW1pc3RpY0RhdGE6dGhpcy5kYXRhLHF1ZXJ5OnRoaXMudHJhbnNmb3JtRG9jdW1lbnQoZS5xdWVyeSksdmFyaWFibGVzOmUudmFyaWFibGVzLHJldHVyblBhcnRpYWxEYXRhOmUucmV0dXJuUGFydGlhbERhdGEscHJldmlvdXNSZXN1bHQ6ZS5wcmV2aW91c1Jlc3VsdCxmcmFnbWVudE1hdGNoZXJGdW5jdGlvbjpuLGNvbmZpZzp0aGlzLmNvbmZpZ30pfSx0LnByb3RvdHlwZS53YXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLndhdGNoZXMuYWRkKGUpLGZ1bmN0aW9uKCl7dC53YXRjaGVzLmRlbGV0ZShlKX19LHQucHJvdG90eXBlLmV2aWN0PWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBDLmEoMSl9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5jbGVhcigpLHRoaXMuYnJvYWRjYXN0V2F0Y2hlcygpLFByb21pc2UucmVzb2x2ZSgpfSx0LnByb3RvdHlwZS5yZW1vdmVPcHRpbWlzdGljPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTAscj10aGlzLm9wdGltaXN0aWNEYXRhO3IgaW5zdGFuY2VvZiBRdTspci5vcHRpbWlzdGljSWQ9PT1lPysrbjp0LnB1c2gocikscj1yLnBhcmVudDtpZihuPjApe2Zvcih0aGlzLm9wdGltaXN0aWNEYXRhPXI7dC5sZW5ndGg+MDspe3ZhciBvPXQucG9wKCk7dGhpcy5wZXJmb3JtVHJhbnNhY3Rpb24oby50cmFuc2FjdGlvbixvLm9wdGltaXN0aWNJZCl9dGhpcy5icm9hZGNhc3RXYXRjaGVzKCl9fSx0LnByb3RvdHlwZS5wZXJmb3JtVHJhbnNhY3Rpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmRhdGEscj10aGlzLnNpbGVuY2VCcm9hZGNhc3Q7dGhpcy5zaWxlbmNlQnJvYWRjYXN0PSEwLCJzdHJpbmciPT10eXBlb2YgdCYmKHRoaXMuZGF0YT10aGlzLm9wdGltaXN0aWNEYXRhPW5ldyBRdSh0LHRoaXMub3B0aW1pc3RpY0RhdGEsZSkpO3RyeXtlKHRoaXMpfWZpbmFsbHl7dGhpcy5zaWxlbmNlQnJvYWRjYXN0PXIsdGhpcy5kYXRhPW59dGhpcy5icm9hZGNhc3RXYXRjaGVzKCl9LHQucHJvdG90eXBlLnJlY29yZE9wdGltaXN0aWNUcmFuc2FjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnBlcmZvcm1UcmFuc2FjdGlvbihlLHQpfSx0LnByb3RvdHlwZS50cmFuc2Zvcm1Eb2N1bWVudD1mdW5jdGlvbihlKXtpZih0aGlzLmFkZFR5cGVuYW1lKXt2YXIgdD10aGlzLnR5cGVuYW1lRG9jdW1lbnRDYWNoZS5nZXQoZSk7cmV0dXJuIHR8fCh0PU9iamVjdChZaS5hKShlKSx0aGlzLnR5cGVuYW1lRG9jdW1lbnRDYWNoZS5zZXQoZSx0KSx0aGlzLnR5cGVuYW1lRG9jdW1lbnRDYWNoZS5zZXQodCx0KSksdH1yZXR1cm4gZX0sdC5wcm90b3R5cGUuYnJvYWRjYXN0V2F0Y2hlcz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5zaWxlbmNlQnJvYWRjYXN0fHx0aGlzLndhdGNoZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUubWF5YmVCcm9hZGNhc3RXYXRjaCh0KX0pKX0sdC5wcm90b3R5cGUubWF5YmVCcm9hZGNhc3RXYXRjaD1mdW5jdGlvbihlKXtlLmNhbGxiYWNrKHRoaXMuZGlmZih7cXVlcnk6ZS5xdWVyeSx2YXJpYWJsZXM6ZS52YXJpYWJsZXMscHJldmlvdXNSZXN1bHQ6ZS5wcmV2aW91c1Jlc3VsdCYmZS5wcmV2aW91c1Jlc3VsdCgpLG9wdGltaXN0aWM6ZS5vcHRpbWlzdGljfSkpfSx0fShaaSksWnU9bigiQUJKLyIpLCR1PW4ubihadSkuYTshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByPWUuY2FsbCh0aGlzLHQpfHx0aGlzO3JldHVybiByLmxpbms9bixyfU9iamVjdChXaS5jKSh0LGUpfShFcnJvcik7ZnVuY3Rpb24gWHUoZSl7cmV0dXJuIGUucmVxdWVzdC5sZW5ndGg8PTF9ZnVuY3Rpb24gZXMoZSl7cmV0dXJuIG5ldyAkdSgoZnVuY3Rpb24odCl7dC5lcnJvcihlKX0pKX1mdW5jdGlvbiB0cyhlLHQpe3ZhciBuPU9iamVjdChXaS5hKSh7fSxlKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNldENvbnRleHQiLHtlbnVtZXJhYmxlOiExLHZhbHVlOmZ1bmN0aW9uKGUpe249ImZ1bmN0aW9uIj09dHlwZW9mIGU/T2JqZWN0KFdpLmEpKHt9LG4sZShuKSk6T2JqZWN0KFdpLmEpKHt9LG4sZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldENvbnRleHQiLHtlbnVtZXJhYmxlOiExLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdChXaS5hKSh7fSxuKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidG9LZXkiLHtlbnVtZXJhYmxlOiExLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUucXVlcnksbj1lLnZhcmlhYmxlcyxyPWUub3BlcmF0aW9uTmFtZTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoW3IsdCxuXSl9KHQpfX0pLHR9ZnVuY3Rpb24gbnMoZSx0KXtyZXR1cm4gdD90KGUpOiR1Lm9mKCl9ZnVuY3Rpb24gcnMoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/bmV3IHVzKGUpOmV9ZnVuY3Rpb24gb3MoKXtyZXR1cm4gbmV3IHVzKChmdW5jdGlvbigpe3JldHVybiAkdS5vZigpfSkpfWZ1bmN0aW9uIGFzKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/b3MoKTplLm1hcChycykucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0KX0pKX1mdW5jdGlvbiBpcyhlLHQsbil7dmFyIHI9cnModCksbz1ycyhufHxuZXcgdXMobnMpKTtyZXR1cm4gWHUocikmJlh1KG8pP25ldyB1cygoZnVuY3Rpb24odCl7cmV0dXJuIGUodCk/ci5yZXF1ZXN0KHQpfHwkdS5vZigpOm8ucmVxdWVzdCh0KXx8JHUub2YoKX0pKTpuZXcgdXMoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodCk/ci5yZXF1ZXN0KHQsbil8fCR1Lm9mKCk6by5yZXF1ZXN0KHQsbil8fCR1Lm9mKCl9KSl9dmFyIHVzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtlJiYodGhpcy5yZXF1ZXN0PWUpfXJldHVybiBlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LG4scil7cmV0dXJuIHRoaXMuY29uY2F0KGlzKHQsbixyfHxuZXcgZShucykpKX0sZS5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPXJzKGUpO2lmKFh1KG4pKXJldHVybiBuO3ZhciByPXJzKHQpO3JldHVybiBYdShyKT9uZXcgdXMoKGZ1bmN0aW9uKGUpe3JldHVybiBuLnJlcXVlc3QoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHIucmVxdWVzdChlKXx8JHUub2YoKX0pKXx8JHUub2YoKX0pKTpuZXcgdXMoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4ucmVxdWVzdChlLChmdW5jdGlvbihlKXtyZXR1cm4gci5yZXF1ZXN0KGUsdCl8fCR1Lm9mKCl9KSl8fCR1Lm9mKCl9KSl9KHRoaXMsZSl9LGUucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSx0KXt0aHJvdyBuZXcgQy5hKDEpfSxlLmVtcHR5PW9zLGUuZnJvbT1hcyxlLnNwbGl0PWlzLGUuZXhlY3V0ZT1zcyxlfSgpO2Z1bmN0aW9uIHNzKGUsdCl7cmV0dXJuIGUucmVxdWVzdCh0cyh0LmNvbnRleHQsZnVuY3Rpb24oZSl7dmFyIHQ9e3ZhcmlhYmxlczplLnZhcmlhYmxlc3x8e30sZXh0ZW5zaW9uczplLmV4dGVuc2lvbnN8fHt9LG9wZXJhdGlvbk5hbWU6ZS5vcGVyYXRpb25OYW1lLHF1ZXJ5OmUucXVlcnl9O3JldHVybiB0Lm9wZXJhdGlvbk5hbWV8fCh0Lm9wZXJhdGlvbk5hbWU9InN0cmluZyIhPXR5cGVvZiB0LnF1ZXJ5P09iamVjdChZaS5uKSh0LnF1ZXJ5KToiIiksdH0oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVsicXVlcnkiLCJvcGVyYXRpb25OYW1lIiwidmFyaWFibGVzIiwiZXh0ZW5zaW9ucyIsImNvbnRleHQiXSxuPTAscj1PYmplY3Qua2V5cyhlKTtuPHIubGVuZ3RoO24rKyl7dmFyIG89cltuXTtpZih0LmluZGV4T2Yobyk8MCl0aHJvdyBuZXcgQy5hKDIpfXJldHVybiBlfSh0KSkpKXx8JHUub2YoKX12YXIgbHMsY3M9bigiYkNDWCIpLGZzPW4oInRxQ3giKTtmdW5jdGlvbiBkcyhlKXtyZXR1cm4gZTw3fSFmdW5jdGlvbihlKXtlW2UubG9hZGluZz0xXT0ibG9hZGluZyIsZVtlLnNldFZhcmlhYmxlcz0yXT0ic2V0VmFyaWFibGVzIixlW2UuZmV0Y2hNb3JlPTNdPSJmZXRjaE1vcmUiLGVbZS5yZWZldGNoPTRdPSJyZWZldGNoIixlW2UucG9sbD02XT0icG9sbCIsZVtlLnJlYWR5PTddPSJyZWFkeSIsZVtlLmVycm9yPThdPSJlcnJvciJ9KGxzfHwobHM9e30pKTt2YXIgcHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE9iamVjdChXaS5jKSh0LGUpLHQucHJvdG90eXBlW2NzLmFdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlWyJAQG9ic2VydmFibGUiXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0fSgkdSk7ZnVuY3Rpb24gaHMoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjB9ZnVuY3Rpb24geXMoZSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoImdyYXBoUUxFcnJvcnMiKX12YXIgbXMsdnM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXt2YXIgcixvLGE9bi5ncmFwaFFMRXJyb3JzLGk9bi5uZXR3b3JrRXJyb3IsdT1uLmVycm9yTWVzc2FnZSxzPW4uZXh0cmFJbmZvLGw9ZS5jYWxsKHRoaXMsdSl8fHRoaXM7cmV0dXJuIGwuZ3JhcGhRTEVycm9ycz1hfHxbXSxsLm5ldHdvcmtFcnJvcj1pfHxudWxsLGwubWVzc2FnZT11fHwobz0iIixocygocj1sKS5ncmFwaFFMRXJyb3JzKSYmci5ncmFwaFFMRXJyb3JzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWU/ZS5tZXNzYWdlOiJFcnJvciBtZXNzYWdlIG5vdCBmb3VuZC4iO28rPSJHcmFwaFFMIGVycm9yOiAiK3QrIlxuIn0pKSxyLm5ldHdvcmtFcnJvciYmKG8rPSJOZXR3b3JrIGVycm9yOiAiK3IubmV0d29ya0Vycm9yLm1lc3NhZ2UrIlxuIiksbz1vLnJlcGxhY2UoL1xuJC8sIiIpKSxsLmV4dHJhSW5mbz1zLGwuX19wcm90b19fPXQucHJvdG90eXBlLGx9cmV0dXJuIE9iamVjdChXaS5jKSh0LGUpLHR9KEVycm9yKTshZnVuY3Rpb24oZSl7ZVtlLm5vcm1hbD0xXT0ibm9ybWFsIixlW2UucmVmZXRjaD0yXT0icmVmZXRjaCIsZVtlLnBvbGw9M109InBvbGwifShtc3x8KG1zPXt9KSk7dmFyIGdzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIG49dC5xdWVyeU1hbmFnZXIscj10Lm9wdGlvbnMsbz10LnNob3VsZFN1YnNjcmliZSxhPXZvaWQgMD09PW98fG8saT1lLmNhbGwodGhpcywoZnVuY3Rpb24oZSl7cmV0dXJuIGkub25TdWJzY3JpYmUoZSl9KSl8fHRoaXM7aS5vYnNlcnZlcnM9bmV3IFNldCxpLnN1YnNjcmlwdGlvbnM9bmV3IFNldCxpLmlzVG9ybkRvd249ITEsaS5vcHRpb25zPXIsaS52YXJpYWJsZXM9ci52YXJpYWJsZXN8fHt9LGkucXVlcnlJZD1uLmdlbmVyYXRlUXVlcnlJZCgpLGkuc2hvdWxkU3Vic2NyaWJlPWE7dmFyIHU9T2JqZWN0KFlpLm0pKHIucXVlcnkpO3JldHVybiBpLnF1ZXJ5TmFtZT11JiZ1Lm5hbWUmJnUubmFtZS52YWx1ZSxpLnF1ZXJ5TWFuYWdlcj1uLGl9cmV0dXJuIE9iamVjdChXaS5jKSh0LGUpLHQucHJvdG90eXBlLnJlc3VsdD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG4pe3ZhciByPXtuZXh0OmZ1bmN0aW9uKG4pe3QobiksZS5vYnNlcnZlcnMuZGVsZXRlKHIpLGUub2JzZXJ2ZXJzLnNpemV8fGUucXVlcnlNYW5hZ2VyLnJlbW92ZVF1ZXJ5KGUucXVlcnlJZCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtvLnVuc3Vic2NyaWJlKCl9KSwwKX0sZXJyb3I6bn0sbz1lLnN1YnNjcmliZShyKX0pKX0sdC5wcm90b3R5cGUuY3VycmVudFJlc3VsdD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Q3VycmVudFJlc3VsdCgpO3JldHVybiB2b2lkIDA9PT1lLmRhdGEmJihlLmRhdGE9e30pLGV9LHQucHJvdG90eXBlLmdldEN1cnJlbnRSZXN1bHQ9ZnVuY3Rpb24oKXtpZih0aGlzLmlzVG9ybkRvd24pe3ZhciBlPXRoaXMubGFzdFJlc3VsdDtyZXR1cm57ZGF0YTohdGhpcy5sYXN0RXJyb3ImJmUmJmUuZGF0YXx8dm9pZCAwLGVycm9yOnRoaXMubGFzdEVycm9yLGxvYWRpbmc6ITEsbmV0d29ya1N0YXR1czpscy5lcnJvcn19dmFyIHQsbixyLG89dGhpcy5xdWVyeU1hbmFnZXIuZ2V0Q3VycmVudFF1ZXJ5UmVzdWx0KHRoaXMpLGE9by5kYXRhLGk9by5wYXJ0aWFsLHU9dGhpcy5xdWVyeU1hbmFnZXIucXVlcnlTdG9yZS5nZXQodGhpcy5xdWVyeUlkKSxzPXRoaXMub3B0aW9ucy5mZXRjaFBvbGljeSxsPSJuZXR3b3JrLW9ubHkiPT09c3x8Im5vLWNhY2hlIj09PXM7aWYodSl7dmFyIGM9dS5uZXR3b3JrU3RhdHVzO2lmKG49dSx2b2lkIDA9PT0ocj10aGlzLm9wdGlvbnMuZXJyb3JQb2xpY3kpJiYocj0ibm9uZSIpLG4mJihuLm5ldHdvcmtFcnJvcnx8Im5vbmUiPT09ciYmaHMobi5ncmFwaFFMRXJyb3JzKSkpcmV0dXJue2RhdGE6dm9pZCAwLGxvYWRpbmc6ITEsbmV0d29ya1N0YXR1czpjLGVycm9yOm5ldyB2cyh7Z3JhcGhRTEVycm9yczp1LmdyYXBoUUxFcnJvcnMsbmV0d29ya0Vycm9yOnUubmV0d29ya0Vycm9yfSl9O3UudmFyaWFibGVzJiYodGhpcy5vcHRpb25zLnZhcmlhYmxlcz1PYmplY3QoV2kuYSkoe30sdGhpcy5vcHRpb25zLnZhcmlhYmxlcyx1LnZhcmlhYmxlcyksdGhpcy52YXJpYWJsZXM9dGhpcy5vcHRpb25zLnZhcmlhYmxlcyksdD17ZGF0YTphLGxvYWRpbmc6ZHMoYyksbmV0d29ya1N0YXR1czpjfSx1LmdyYXBoUUxFcnJvcnMmJiJhbGwiPT09dGhpcy5vcHRpb25zLmVycm9yUG9saWN5JiYodC5lcnJvcnM9dS5ncmFwaFFMRXJyb3JzKX1lbHNle3ZhciBmPWx8fGkmJiJjYWNoZS1vbmx5IiE9PXM7dD17ZGF0YTphLGxvYWRpbmc6ZixuZXR3b3JrU3RhdHVzOmY/bHMubG9hZGluZzpscy5yZWFkeX19cmV0dXJuIGl8fHRoaXMudXBkYXRlTGFzdFJlc3VsdChPYmplY3QoV2kuYSkoe30sdCx7c3RhbGU6ITF9KSksT2JqZWN0KFdpLmEpKHt9LHQse3BhcnRpYWw6aX0pfSx0LnByb3RvdHlwZS5pc0RpZmZlcmVudEZyb21MYXN0UmVzdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubGFzdFJlc3VsdFNuYXBzaG90O3JldHVybiEodCYmZSYmdC5uZXR3b3JrU3RhdHVzPT09ZS5uZXR3b3JrU3RhdHVzJiZ0LnN0YWxlPT09ZS5zdGFsZSYmT2JqZWN0KCRpLmEpKHQuZGF0YSxlLmRhdGEpKX0sdC5wcm90b3R5cGUuZ2V0TGFzdFJlc3VsdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhc3RSZXN1bHR9LHQucHJvdG90eXBlLmdldExhc3RFcnJvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhc3RFcnJvcn0sdC5wcm90b3R5cGUucmVzZXRMYXN0UmVzdWx0cz1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmxhc3RSZXN1bHQsZGVsZXRlIHRoaXMubGFzdFJlc3VsdFNuYXBzaG90LGRlbGV0ZSB0aGlzLmxhc3RFcnJvcix0aGlzLmlzVG9ybkRvd249ITF9LHQucHJvdG90eXBlLnJlc2V0UXVlcnlTdG9yZUVycm9ycz1mdW5jdGlvbigpe3ZhciBlPXRoaXMucXVlcnlNYW5hZ2VyLnF1ZXJ5U3RvcmUuZ2V0KHRoaXMucXVlcnlJZCk7ZSYmKGUubmV0d29ya0Vycm9yPW51bGwsZS5ncmFwaFFMRXJyb3JzPVtdKX0sdC5wcm90b3R5cGUucmVmZXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMuZmV0Y2hQb2xpY3k7cmV0dXJuImNhY2hlLW9ubHkiPT09dD9Qcm9taXNlLnJlamVjdChuZXcgQy5hKDMpKTooIm5vLWNhY2hlIiE9PXQmJiJjYWNoZS1hbmQtbmV0d29yayIhPT10JiYodD0ibmV0d29yay1vbmx5IiksT2JqZWN0KCRpLmEpKHRoaXMudmFyaWFibGVzLGUpfHwodGhpcy52YXJpYWJsZXM9T2JqZWN0KFdpLmEpKHt9LHRoaXMudmFyaWFibGVzLGUpKSxPYmplY3QoJGkuYSkodGhpcy5vcHRpb25zLnZhcmlhYmxlcyx0aGlzLnZhcmlhYmxlcyl8fCh0aGlzLm9wdGlvbnMudmFyaWFibGVzPU9iamVjdChXaS5hKSh7fSx0aGlzLm9wdGlvbnMudmFyaWFibGVzLHRoaXMudmFyaWFibGVzKSksdGhpcy5xdWVyeU1hbmFnZXIuZmV0Y2hRdWVyeSh0aGlzLnF1ZXJ5SWQsT2JqZWN0KFdpLmEpKHt9LHRoaXMub3B0aW9ucyx7ZmV0Y2hQb2xpY3k6dH0pLG1zLnJlZmV0Y2gpKX0sdC5wcm90b3R5cGUuZmV0Y2hNb3JlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7T2JqZWN0KEMuYikoZS51cGRhdGVRdWVyeSw0KTt2YXIgbj1PYmplY3QoV2kuYSkoe30sZS5xdWVyeT9lOk9iamVjdChXaS5hKSh7fSx0aGlzLm9wdGlvbnMsZSx7dmFyaWFibGVzOk9iamVjdChXaS5hKSh7fSx0aGlzLnZhcmlhYmxlcyxlLnZhcmlhYmxlcyl9KSx7ZmV0Y2hQb2xpY3k6Im5ldHdvcmstb25seSJ9KSxyPXRoaXMucXVlcnlNYW5hZ2VyLmdlbmVyYXRlUXVlcnlJZCgpO3JldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5mZXRjaFF1ZXJ5KHIsbixtcy5ub3JtYWwsdGhpcy5xdWVyeUlkKS50aGVuKChmdW5jdGlvbihvKXtyZXR1cm4gdC51cGRhdGVRdWVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIGUudXBkYXRlUXVlcnkodCx7ZmV0Y2hNb3JlUmVzdWx0Om8uZGF0YSx2YXJpYWJsZXM6bi52YXJpYWJsZXN9KX0pKSx0LnF1ZXJ5TWFuYWdlci5zdG9wUXVlcnkociksb30pLChmdW5jdGlvbihlKXt0aHJvdyB0LnF1ZXJ5TWFuYWdlci5zdG9wUXVlcnkociksZX0pKX0sdC5wcm90b3R5cGUuc3Vic2NyaWJlVG9Nb3JlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnF1ZXJ5TWFuYWdlci5zdGFydEdyYXBoUUxTdWJzY3JpcHRpb24oe3F1ZXJ5OmUuZG9jdW1lbnQsdmFyaWFibGVzOmUudmFyaWFibGVzfSkuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKG4pe3ZhciByPWUudXBkYXRlUXVlcnk7ciYmdC51cGRhdGVRdWVyeSgoZnVuY3Rpb24oZSx0KXt2YXIgbz10LnZhcmlhYmxlcztyZXR1cm4gcihlLHtzdWJzY3JpcHRpb25EYXRhOm4sdmFyaWFibGVzOm99KX0pKX0sZXJyb3I6ZnVuY3Rpb24odCl7ZS5vbkVycm9yJiZlLm9uRXJyb3IodCl9fSk7cmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQobiksZnVuY3Rpb24oKXt0LnN1YnNjcmlwdGlvbnMuZGVsZXRlKG4pJiZuLnVuc3Vic2NyaWJlKCl9fSx0LnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucy5mZXRjaFBvbGljeTt0aGlzLm9wdGlvbnM9T2JqZWN0KFdpLmEpKHt9LHRoaXMub3B0aW9ucyxlKSxlLnBvbGxJbnRlcnZhbD90aGlzLnN0YXJ0UG9sbGluZyhlLnBvbGxJbnRlcnZhbCk6MD09PWUucG9sbEludGVydmFsJiZ0aGlzLnN0b3BQb2xsaW5nKCk7dmFyIG49ZS5mZXRjaFBvbGljeTtyZXR1cm4gdGhpcy5zZXRWYXJpYWJsZXModGhpcy5vcHRpb25zLnZhcmlhYmxlcyx0IT09biYmKCJjYWNoZS1vbmx5Ij09PXR8fCJzdGFuZGJ5Ij09PXR8fCJuZXR3b3JrLW9ubHkiPT09biksZS5mZXRjaFJlc3VsdHMpfSx0LnByb3RvdHlwZS5zZXRWYXJpYWJsZXM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10JiYodD0hMSksdm9pZCAwPT09biYmKG49ITApLHRoaXMuaXNUb3JuRG93bj0hMSxlPWV8fHRoaXMudmFyaWFibGVzLCF0JiZPYmplY3QoJGkuYSkoZSx0aGlzLnZhcmlhYmxlcyk/dGhpcy5vYnNlcnZlcnMuc2l6ZSYmbj90aGlzLnJlc3VsdCgpOlByb21pc2UucmVzb2x2ZSgpOih0aGlzLnZhcmlhYmxlcz10aGlzLm9wdGlvbnMudmFyaWFibGVzPWUsdGhpcy5vYnNlcnZlcnMuc2l6ZT90aGlzLnF1ZXJ5TWFuYWdlci5mZXRjaFF1ZXJ5KHRoaXMucXVlcnlJZCx0aGlzLm9wdGlvbnMpOlByb21pc2UucmVzb2x2ZSgpKX0sdC5wcm90b3R5cGUudXBkYXRlUXVlcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5xdWVyeU1hbmFnZXIsbj10LmdldFF1ZXJ5V2l0aFByZXZpb3VzUmVzdWx0KHRoaXMucXVlcnlJZCkscj1uLnByZXZpb3VzUmVzdWx0LG89bi52YXJpYWJsZXMsYT1uLmRvY3VtZW50LGk9T2JqZWN0KFlpLkkpKChmdW5jdGlvbigpe3JldHVybiBlKHIse3ZhcmlhYmxlczpvfSl9KSk7aSYmKHQuZGF0YVN0b3JlLm1hcmtVcGRhdGVRdWVyeVJlc3VsdChhLG8saSksdC5icm9hZGNhc3RRdWVyaWVzKCkpfSx0LnByb3RvdHlwZS5zdG9wUG9sbGluZz1mdW5jdGlvbigpe3RoaXMucXVlcnlNYW5hZ2VyLnN0b3BQb2xsaW5nUXVlcnkodGhpcy5xdWVyeUlkKSx0aGlzLm9wdGlvbnMucG9sbEludGVydmFsPXZvaWQgMH0sdC5wcm90b3R5cGUuc3RhcnRQb2xsaW5nPWZ1bmN0aW9uKGUpe19zKHRoaXMpLHRoaXMub3B0aW9ucy5wb2xsSW50ZXJ2YWw9ZSx0aGlzLnF1ZXJ5TWFuYWdlci5zdGFydFBvbGxpbmdRdWVyeSh0aGlzLm9wdGlvbnMsdGhpcy5xdWVyeUlkKX0sdC5wcm90b3R5cGUudXBkYXRlTGFzdFJlc3VsdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmxhc3RSZXN1bHQ7cmV0dXJuIHRoaXMubGFzdFJlc3VsdD1lLHRoaXMubGFzdFJlc3VsdFNuYXBzaG90PXRoaXMucXVlcnlNYW5hZ2VyLmFzc3VtZUltbXV0YWJsZVJlc3VsdHM/ZTpPYmplY3QoWWkuZikoZSksdH0sdC5wcm90b3R5cGUub25TdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0cnl7dmFyIG49ZS5fc3Vic2NyaXB0aW9uLl9vYnNlcnZlcjtuJiYhbi5lcnJvciYmKG4uZXJyb3I9YnMpfWNhdGNoKGUpe312YXIgcj0hdGhpcy5vYnNlcnZlcnMuc2l6ZTtyZXR1cm4gdGhpcy5vYnNlcnZlcnMuYWRkKGUpLGUubmV4dCYmdGhpcy5sYXN0UmVzdWx0JiZlLm5leHQodGhpcy5sYXN0UmVzdWx0KSxlLmVycm9yJiZ0aGlzLmxhc3RFcnJvciYmZS5lcnJvcih0aGlzLmxhc3RFcnJvciksciYmdGhpcy5zZXRVcFF1ZXJ5KCksZnVuY3Rpb24oKXt0Lm9ic2VydmVycy5kZWxldGUoZSkmJiF0Lm9ic2VydmVycy5zaXplJiZ0LnRlYXJEb3duUXVlcnkoKX19LHQucHJvdG90eXBlLnNldFVwUXVlcnk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5xdWVyeU1hbmFnZXIsbj10aGlzLnF1ZXJ5SWQ7dGhpcy5zaG91bGRTdWJzY3JpYmUmJnQuYWRkT2JzZXJ2YWJsZVF1ZXJ5KG4sdGhpcyksdGhpcy5vcHRpb25zLnBvbGxJbnRlcnZhbCYmKF9zKHRoaXMpLHQuc3RhcnRQb2xsaW5nUXVlcnkodGhpcy5vcHRpb25zLG4pKTt2YXIgcj1mdW5jdGlvbih0KXtlLnVwZGF0ZUxhc3RSZXN1bHQoT2JqZWN0KFdpLmEpKHt9LGUubGFzdFJlc3VsdCx7ZXJyb3JzOnQuZ3JhcGhRTEVycm9ycyxuZXR3b3JrU3RhdHVzOmxzLmVycm9yLGxvYWRpbmc6ITF9KSksd3MoZS5vYnNlcnZlcnMsImVycm9yIixlLmxhc3RFcnJvcj10KX07dC5vYnNlcnZlUXVlcnkobix0aGlzLm9wdGlvbnMse25leHQ6ZnVuY3Rpb24obil7aWYoZS5sYXN0RXJyb3J8fGUuaXNEaWZmZXJlbnRGcm9tTGFzdFJlc3VsdChuKSl7dmFyIHI9ZS51cGRhdGVMYXN0UmVzdWx0KG4pLG89ZS5vcHRpb25zLGE9by5xdWVyeSxpPW8udmFyaWFibGVzLHU9by5mZXRjaFBvbGljeTt0LnRyYW5zZm9ybShhKS5oYXNDbGllbnRFeHBvcnRzP3QuZ2V0TG9jYWxTdGF0ZSgpLmFkZEV4cG9ydGVkVmFyaWFibGVzKGEsaSkudGhlbigoZnVuY3Rpb24obyl7dmFyIGk9ZS52YXJpYWJsZXM7ZS52YXJpYWJsZXM9ZS5vcHRpb25zLnZhcmlhYmxlcz1vLCFuLmxvYWRpbmcmJnImJiJjYWNoZS1vbmx5IiE9PXUmJnQudHJhbnNmb3JtKGEpLnNlcnZlclF1ZXJ5JiYhT2JqZWN0KCRpLmEpKGksbyk/ZS5yZWZldGNoKCk6d3MoZS5vYnNlcnZlcnMsIm5leHQiLG4pfSkpOndzKGUub2JzZXJ2ZXJzLCJuZXh0IixuKX19LGVycm9yOnJ9KS5jYXRjaChyKX0sdC5wcm90b3R5cGUudGVhckRvd25RdWVyeT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucXVlcnlNYW5hZ2VyO3RoaXMuaXNUb3JuRG93bj0hMCxlLnN0b3BQb2xsaW5nUXVlcnkodGhpcy5xdWVyeUlkKSx0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudW5zdWJzY3JpYmUoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMuY2xlYXIoKSxlLnJlbW92ZU9ic2VydmFibGVRdWVyeSh0aGlzLnF1ZXJ5SWQpLGUuc3RvcFF1ZXJ5KHRoaXMucXVlcnlJZCksdGhpcy5vYnNlcnZlcnMuY2xlYXIoKX0sdH0ocHMpO2Z1bmN0aW9uIGJzKGUpe31mdW5jdGlvbiB3cyhlLHQsbil7dmFyIHI9W107ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZVt0XSYmci5wdXNoKGUpfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbdF0obil9KSl9ZnVuY3Rpb24gX3MoZSl7dmFyIHQ9ZS5vcHRpb25zLmZldGNoUG9saWN5O09iamVjdChDLmIpKCJjYWNoZS1maXJzdCIhPT10JiYiY2FjaGUtb25seSIhPT10LDUpfXZhciBFcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnN0b3JlPXt9fXJldHVybiBlLnByb3RvdHlwZS5nZXRTdG9yZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3JlfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc3RvcmVbZV19LGUucHJvdG90eXBlLmluaXRNdXRhdGlvbj1mdW5jdGlvbihlLHQsbil7dGhpcy5zdG9yZVtlXT17bXV0YXRpb246dCx2YXJpYWJsZXM6bnx8e30sbG9hZGluZzohMCxlcnJvcjpudWxsfX0sZS5wcm90b3R5cGUubWFya011dGF0aW9uRXJyb3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnN0b3JlW2VdO24mJihuLmxvYWRpbmc9ITEsbi5lcnJvcj10KX0sZS5wcm90b3R5cGUubWFya011dGF0aW9uUmVzdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RvcmVbZV07dCYmKHQubG9hZGluZz0hMSx0LmVycm9yPW51bGwpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuc3RvcmU9e319LGV9KCksT3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5zdG9yZT17fX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0U3RvcmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9yZX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnN0b3JlW2VdfSxlLnByb3RvdHlwZS5pbml0UXVlcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdG9yZVtlLnF1ZXJ5SWRdO09iamVjdChDLmIpKCF0fHx0LmRvY3VtZW50PT09ZS5kb2N1bWVudHx8T2JqZWN0KCRpLmEpKHQuZG9jdW1lbnQsZS5kb2N1bWVudCksMTkpO3ZhciBuLHI9ITEsbz1udWxsO2Uuc3RvcmVQcmV2aW91c1ZhcmlhYmxlcyYmdCYmdC5uZXR3b3JrU3RhdHVzIT09bHMubG9hZGluZyYmKE9iamVjdCgkaS5hKSh0LnZhcmlhYmxlcyxlLnZhcmlhYmxlcyl8fChyPSEwLG89dC52YXJpYWJsZXMpKSxuPXI/bHMuc2V0VmFyaWFibGVzOmUuaXNQb2xsP2xzLnBvbGw6ZS5pc1JlZmV0Y2g/bHMucmVmZXRjaDpscy5sb2FkaW5nO3ZhciBhPVtdO3QmJnQuZ3JhcGhRTEVycm9ycyYmKGE9dC5ncmFwaFFMRXJyb3JzKSx0aGlzLnN0b3JlW2UucXVlcnlJZF09e2RvY3VtZW50OmUuZG9jdW1lbnQsdmFyaWFibGVzOmUudmFyaWFibGVzLHByZXZpb3VzVmFyaWFibGVzOm8sbmV0d29ya0Vycm9yOm51bGwsZ3JhcGhRTEVycm9yczphLG5ldHdvcmtTdGF0dXM6bixtZXRhZGF0YTplLm1ldGFkYXRhfSwic3RyaW5nIj09dHlwZW9mIGUuZmV0Y2hNb3JlRm9yUXVlcnlJZCYmdGhpcy5zdG9yZVtlLmZldGNoTW9yZUZvclF1ZXJ5SWRdJiYodGhpcy5zdG9yZVtlLmZldGNoTW9yZUZvclF1ZXJ5SWRdLm5ldHdvcmtTdGF0dXM9bHMuZmV0Y2hNb3JlKX0sZS5wcm90b3R5cGUubWFya1F1ZXJ5UmVzdWx0PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnN0b3JlJiZ0aGlzLnN0b3JlW2VdJiYodGhpcy5zdG9yZVtlXS5uZXR3b3JrRXJyb3I9bnVsbCx0aGlzLnN0b3JlW2VdLmdyYXBoUUxFcnJvcnM9aHModC5lcnJvcnMpP3QuZXJyb3JzOltdLHRoaXMuc3RvcmVbZV0ucHJldmlvdXNWYXJpYWJsZXM9bnVsbCx0aGlzLnN0b3JlW2VdLm5ldHdvcmtTdGF0dXM9bHMucmVhZHksInN0cmluZyI9PXR5cGVvZiBuJiZ0aGlzLnN0b3JlW25dJiYodGhpcy5zdG9yZVtuXS5uZXR3b3JrU3RhdHVzPWxzLnJlYWR5KSl9LGUucHJvdG90eXBlLm1hcmtRdWVyeUVycm9yPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnN0b3JlJiZ0aGlzLnN0b3JlW2VdJiYodGhpcy5zdG9yZVtlXS5uZXR3b3JrRXJyb3I9dCx0aGlzLnN0b3JlW2VdLm5ldHdvcmtTdGF0dXM9bHMuZXJyb3IsInN0cmluZyI9PXR5cGVvZiBuJiZ0aGlzLm1hcmtRdWVyeVJlc3VsdENsaWVudChuLCEwKSl9LGUucHJvdG90eXBlLm1hcmtRdWVyeVJlc3VsdENsaWVudD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuc3RvcmUmJnRoaXMuc3RvcmVbZV07biYmKG4ubmV0d29ya0Vycm9yPW51bGwsbi5wcmV2aW91c1ZhcmlhYmxlcz1udWxsLHQmJihuLm5ldHdvcmtTdGF0dXM9bHMucmVhZHkpKX0sZS5wcm90b3R5cGUuc3RvcFF1ZXJ5PWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLnN0b3JlW2VdfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO09iamVjdC5rZXlzKHRoaXMuc3RvcmUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2UuaW5kZXhPZihuKTwwP3Quc3RvcFF1ZXJ5KG4pOnQuc3RvcmVbbl0ubmV0d29ya1N0YXR1cz1scy5sb2FkaW5nfSkpfSxlfSgpO3ZhciBrcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9ZS5jYWNoZSxuPWUuY2xpZW50LHI9ZS5yZXNvbHZlcnMsbz1lLmZyYWdtZW50TWF0Y2hlcjt0aGlzLmNhY2hlPXQsbiYmKHRoaXMuY2xpZW50PW4pLHImJnRoaXMuYWRkUmVzb2x2ZXJzKHIpLG8mJnRoaXMuc2V0RnJhZ21lbnRNYXRjaGVyKG8pfXJldHVybiBlLnByb3RvdHlwZS5hZGRSZXNvbHZlcnM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLnJlc29sdmVycz10aGlzLnJlc29sdmVyc3x8e30sQXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QucmVzb2x2ZXJzPU9iamVjdChZaS5BKSh0LnJlc29sdmVycyxlKX0pKTp0aGlzLnJlc29sdmVycz1PYmplY3QoWWkuQSkodGhpcy5yZXNvbHZlcnMsZSl9LGUucHJvdG90eXBlLnNldFJlc29sdmVycz1mdW5jdGlvbihlKXt0aGlzLnJlc29sdmVycz17fSx0aGlzLmFkZFJlc29sdmVycyhlKX0sZS5wcm90b3R5cGUuZ2V0UmVzb2x2ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzb2x2ZXJzfHx7fX0sZS5wcm90b3R5cGUucnVuUmVzb2x2ZXJzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9jdW1lbnQsbj1lLnJlbW90ZVJlc3VsdCxyPWUuY29udGV4dCxvPWUudmFyaWFibGVzLGE9ZS5vbmx5UnVuRm9yY2VkUmVzb2x2ZXJzLGk9dm9pZCAwIT09YSYmYTtyZXR1cm4gT2JqZWN0KFdpLmIpKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0KFdpLmQpKHRoaXMsKGZ1bmN0aW9uKGUpe3JldHVybiB0P1syLHRoaXMucmVzb2x2ZURvY3VtZW50KHQsbi5kYXRhLHIsbyx0aGlzLmZyYWdtZW50TWF0Y2hlcixpKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KFdpLmEpKHt9LG4se2RhdGE6ZS5yZXN1bHR9KX0pKV06WzIsbl19KSl9KSl9LGUucHJvdG90eXBlLnNldEZyYWdtZW50TWF0Y2hlcj1mdW5jdGlvbihlKXt0aGlzLmZyYWdtZW50TWF0Y2hlcj1lfSxlLnByb3RvdHlwZS5nZXRGcmFnbWVudE1hdGNoZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mcmFnbWVudE1hdGNoZXJ9LGUucHJvdG90eXBlLmNsaWVudFF1ZXJ5PWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QoWWkucykoWyJjbGllbnQiXSxlKSYmdGhpcy5yZXNvbHZlcnM/ZTpudWxsfSxlLnByb3RvdHlwZS5zZXJ2ZXJRdWVyeT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXNvbHZlcnM/T2JqZWN0KFlpLkMpKGUpOmV9LGUucHJvdG90eXBlLnByZXBhcmVDb250ZXh0PWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPXt9KTt2YXIgdD10aGlzLmNhY2hlO3JldHVybiBPYmplY3QoV2kuYSkoe30sZSx7Y2FjaGU6dCxnZXRDYWNoZUtleTpmdW5jdGlvbihlKXtpZih0LmNvbmZpZylyZXR1cm4gdC5jb25maWcuZGF0YUlkRnJvbU9iamVjdChlKTtPYmplY3QoQy5iKSghMSw2KX19KX0sZS5wcm90b3R5cGUuYWRkRXhwb3J0ZWRWYXJpYWJsZXM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10JiYodD17fSksdm9pZCAwPT09biYmKG49e30pLE9iamVjdChXaS5iKSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdChXaS5kKSh0aGlzLChmdW5jdGlvbihyKXtyZXR1cm4gZT9bMix0aGlzLnJlc29sdmVEb2N1bWVudChlLHRoaXMuYnVpbGRSb290VmFsdWVGcm9tQ2FjaGUoZSx0KXx8e30sdGhpcy5wcmVwYXJlQ29udGV4dChuKSx0KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KFdpLmEpKHt9LHQsZS5leHBvcnRlZFZhcmlhYmxlcyl9KSldOlsyLE9iamVjdChXaS5hKSh7fSx0KV19KSl9KSl9LGUucHJvdG90eXBlLnNob3VsZEZvcmNlUmVzb2x2ZXJzPWZ1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVybiBPYmplY3QoZnMudmlzaXQpKGUse0RpcmVjdGl2ZTp7ZW50ZXI6ZnVuY3Rpb24oZSl7aWYoImNsaWVudCI9PT1lLm5hbWUudmFsdWUmJmUuYXJndW1lbnRzJiYodD1lLmFyZ3VtZW50cy5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4iYWx3YXlzIj09PWUubmFtZS52YWx1ZSYmIkJvb2xlYW5WYWx1ZSI9PT1lLnZhbHVlLmtpbmQmJiEwPT09ZS52YWx1ZS52YWx1ZX0pKSkpcmV0dXJuIGZzLkJSRUFLfX19KSx0fSxlLnByb3RvdHlwZS5idWlsZFJvb3RWYWx1ZUZyb21DYWNoZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNhY2hlLmRpZmYoe3F1ZXJ5Ok9iamVjdChZaS5kKShlKSx2YXJpYWJsZXM6dCxyZXR1cm5QYXJ0aWFsRGF0YTohMCxvcHRpbWlzdGljOiExfSkucmVzdWx0fSxlLnByb3RvdHlwZS5yZXNvbHZlRG9jdW1lbnQ9ZnVuY3Rpb24oZSx0LG4scixvLGEpe3JldHVybiB2b2lkIDA9PT1uJiYobj17fSksdm9pZCAwPT09ciYmKHI9e30pLHZvaWQgMD09PW8mJihvPWZ1bmN0aW9uKCl7cmV0dXJuITB9KSx2b2lkIDA9PT1hJiYoYT0hMSksT2JqZWN0KFdpLmIpKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgaSx1LHMsbCxjLGYsZCxwLGg7cmV0dXJuIE9iamVjdChXaS5kKSh0aGlzLChmdW5jdGlvbih5KXt2YXIgbTtyZXR1cm4gaT1PYmplY3QoWWkubCkoZSksdT1PYmplY3QoWWkuaikoZSkscz1PYmplY3QoWWkuZykodSksbD1pLm9wZXJhdGlvbixjPWw/KG09bCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbS5zbGljZSgxKToiUXVlcnkiLGQ9KGY9dGhpcykuY2FjaGUscD1mLmNsaWVudCxoPXtmcmFnbWVudE1hcDpzLGNvbnRleHQ6T2JqZWN0KFdpLmEpKHt9LG4se2NhY2hlOmQsY2xpZW50OnB9KSx2YXJpYWJsZXM6cixmcmFnbWVudE1hdGNoZXI6byxkZWZhdWx0T3BlcmF0aW9uVHlwZTpjLGV4cG9ydGVkVmFyaWFibGVzOnt9LG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnM6YX0sWzIsdGhpcy5yZXNvbHZlU2VsZWN0aW9uU2V0KGkuc2VsZWN0aW9uU2V0LHQsaCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJue3Jlc3VsdDplLGV4cG9ydGVkVmFyaWFibGVzOmguZXhwb3J0ZWRWYXJpYWJsZXN9fSkpXX0pKX0pKX0sZS5wcm90b3R5cGUucmVzb2x2ZVNlbGVjdGlvblNldD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIE9iamVjdChXaS5iKSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHIsbyxhLGksdSxzPXRoaXM7cmV0dXJuIE9iamVjdChXaS5kKSh0aGlzLChmdW5jdGlvbihsKXtyZXR1cm4gcj1uLmZyYWdtZW50TWFwLG89bi5jb250ZXh0LGE9bi52YXJpYWJsZXMsaT1bdF0sdT1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KFdpLmIpKHMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgdSxzO3JldHVybiBPYmplY3QoV2kuZCkodGhpcywoZnVuY3Rpb24obCl7cmV0dXJuIE9iamVjdChZaS5GKShlLGEpP09iamVjdChZaS50KShlKT9bMix0aGlzLnJlc29sdmVGaWVsZChlLHQsbikudGhlbigoZnVuY3Rpb24odCl7dmFyIG47dm9pZCAwIT09dCYmaS5wdXNoKCgobj17fSlbT2JqZWN0KFlpLkUpKGUpXT10LG4pKX0pKV06KE9iamVjdChZaS52KShlKT91PWU6KHU9cltlLm5hbWUudmFsdWVdLE9iamVjdChDLmIpKHUsNykpLHUmJnUudHlwZUNvbmRpdGlvbiYmKHM9dS50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWUsbi5mcmFnbWVudE1hdGNoZXIodCxzLG8pKT9bMix0aGlzLnJlc29sdmVTZWxlY3Rpb25TZXQodS5zZWxlY3Rpb25TZXQsdCxuKS50aGVuKChmdW5jdGlvbihlKXtpLnB1c2goZSl9KSldOlsyXSk6WzJdfSkpfSkpfSxbMixQcm9taXNlLmFsbChlLnNlbGVjdGlvbnMubWFwKHUpKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBPYmplY3QoWWkuQikoaSl9KSldfSkpfSkpfSxlLnByb3RvdHlwZS5yZXNvbHZlRmllbGQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBPYmplY3QoV2kuYikodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciByLG8sYSxpLHUscyxsLGMsZixkPXRoaXM7cmV0dXJuIE9iamVjdChXaS5kKSh0aGlzLChmdW5jdGlvbihwKXtyZXR1cm4gcj1uLnZhcmlhYmxlcyxvPWUubmFtZS52YWx1ZSxhPU9iamVjdChZaS5FKShlKSxpPW8hPT1hLHU9dFthXXx8dFtvXSxzPVByb21pc2UucmVzb2x2ZSh1KSxuLm9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMmJiF0aGlzLnNob3VsZEZvcmNlUmVzb2x2ZXJzKGUpfHwobD10Ll9fdHlwZW5hbWV8fG4uZGVmYXVsdE9wZXJhdGlvblR5cGUsKGM9dGhpcy5yZXNvbHZlcnMmJnRoaXMucmVzb2x2ZXJzW2xdKSYmKGY9Y1tpP286YV0pJiYocz1Qcm9taXNlLnJlc29sdmUoZih0LE9iamVjdChZaS5iKShlLHIpLG4uY29udGV4dCx7ZmllbGQ6ZX0pKSkpLFsyLHMudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXUpLGUuZGlyZWN0aXZlcyYmZS5kaXJlY3RpdmVzLmZvckVhY2goKGZ1bmN0aW9uKGUpeyJleHBvcnQiPT09ZS5uYW1lLnZhbHVlJiZlLmFyZ3VtZW50cyYmZS5hcmd1bWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ImFzIj09PWUubmFtZS52YWx1ZSYmIlN0cmluZ1ZhbHVlIj09PWUudmFsdWUua2luZCYmKG4uZXhwb3J0ZWRWYXJpYWJsZXNbZS52YWx1ZS52YWx1ZV09dCl9KSl9KSksZS5zZWxlY3Rpb25TZXQ/bnVsbD09dD90OkFycmF5LmlzQXJyYXkodCk/ZC5yZXNvbHZlU3ViU2VsZWN0ZWRBcnJheShlLHQsbik6ZS5zZWxlY3Rpb25TZXQ/ZC5yZXNvbHZlU2VsZWN0aW9uU2V0KGUuc2VsZWN0aW9uU2V0LHQsbik6dm9pZCAwOnR9KSldfSkpfSkpfSxlLnByb3RvdHlwZS5yZXNvbHZlU3ViU2VsZWN0ZWRBcnJheT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztyZXR1cm4gUHJvbWlzZS5hbGwodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dD9udWxsOkFycmF5LmlzQXJyYXkodCk/ci5yZXNvbHZlU3ViU2VsZWN0ZWRBcnJheShlLHQsbik6ZS5zZWxlY3Rpb25TZXQ/ci5yZXNvbHZlU2VsZWN0aW9uU2V0KGUuc2VsZWN0aW9uU2V0LHQsbik6dm9pZCAwfSkpKX0sZX0oKTtmdW5jdGlvbiBDcyhlKXt2YXIgdD1uZXcgU2V0LG49bnVsbDtyZXR1cm4gbmV3IHBzKChmdW5jdGlvbihyKXtyZXR1cm4gdC5hZGQociksbj1ufHxlLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5leHQmJnQubmV4dChlKX0pKX0sZXJyb3I6ZnVuY3Rpb24oZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5lcnJvciYmdC5lcnJvcihlKX0pKX0sY29tcGxldGU6ZnVuY3Rpb24oKXt0LmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlJiZlLmNvbXBsZXRlKCl9KSl9fSksZnVuY3Rpb24oKXt0LmRlbGV0ZShyKSYmIXQuc2l6ZSYmbiYmKG4udW5zdWJzY3JpYmUoKSxuPW51bGwpfX0pKX12YXIgeHM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxTcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9ZS5saW5rLG49ZS5xdWVyeURlZHVwbGljYXRpb24scj12b2lkIDAhPT1uJiZuLG89ZS5zdG9yZSxhPWUub25Ccm9hZGNhc3QsaT12b2lkIDA9PT1hP2Z1bmN0aW9uKCl7fTphLHU9ZS5zc3JNb2RlLHM9dm9pZCAwIT09dSYmdSxsPWUuY2xpZW50QXdhcmVuZXNzLGM9dm9pZCAwPT09bD97fTpsLGY9ZS5sb2NhbFN0YXRlLGQ9ZS5hc3N1bWVJbW11dGFibGVSZXN1bHRzO3RoaXMubXV0YXRpb25TdG9yZT1uZXcgRXMsdGhpcy5xdWVyeVN0b3JlPW5ldyBPcyx0aGlzLmNsaWVudEF3YXJlbmVzcz17fSx0aGlzLmlkQ291bnRlcj0xLHRoaXMucXVlcmllcz1uZXcgTWFwLHRoaXMuZmV0Y2hRdWVyeVJlamVjdEZucz1uZXcgTWFwLHRoaXMudHJhbnNmb3JtQ2FjaGU9bmV3KFlpLmU/V2Vha01hcDpNYXApLHRoaXMuaW5GbGlnaHRMaW5rT2JzZXJ2YWJsZXM9bmV3IE1hcCx0aGlzLnBvbGxpbmdJbmZvQnlRdWVyeUlkPW5ldyBNYXAsdGhpcy5saW5rPXQsdGhpcy5xdWVyeURlZHVwbGljYXRpb249cix0aGlzLmRhdGFTdG9yZT1vLHRoaXMub25Ccm9hZGNhc3Q9aSx0aGlzLmNsaWVudEF3YXJlbmVzcz1jLHRoaXMubG9jYWxTdGF0ZT1mfHxuZXcga3Moe2NhY2hlOm8uZ2V0Q2FjaGUoKX0pLHRoaXMuc3NyTW9kZT1zLHRoaXMuYXNzdW1lSW1tdXRhYmxlUmVzdWx0cz0hIWR9cmV0dXJuIGUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMucXVlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0LG4pe2Uuc3RvcFF1ZXJ5Tm9Ccm9hZGNhc3Qobil9KSksdGhpcy5mZXRjaFF1ZXJ5UmVqZWN0Rm5zLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UobmV3IEMuYSg4KSl9KSl9LGUucHJvdG90eXBlLm11dGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLm11dGF0aW9uLG49ZS52YXJpYWJsZXMscj1lLm9wdGltaXN0aWNSZXNwb25zZSxvPWUudXBkYXRlUXVlcmllcyxhPWUucmVmZXRjaFF1ZXJpZXMsaT12b2lkIDA9PT1hP1tdOmEsdT1lLmF3YWl0UmVmZXRjaFF1ZXJpZXMscz12b2lkIDAhPT11JiZ1LGw9ZS51cGRhdGUsYz1lLmVycm9yUG9saWN5LGY9dm9pZCAwPT09Yz8ibm9uZSI6YyxkPWUuZmV0Y2hQb2xpY3kscD1lLmNvbnRleHQsaD12b2lkIDA9PT1wP3t9OnA7cmV0dXJuIE9iamVjdChXaS5iKSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGUsYSx1LGM9dGhpcztyZXR1cm4gT2JqZWN0KFdpLmQpKHRoaXMsKGZ1bmN0aW9uKHApe3N3aXRjaChwLmxhYmVsKXtjYXNlIDA6cmV0dXJuIE9iamVjdChDLmIpKHQsOSksT2JqZWN0KEMuYikoIWR8fCJuby1jYWNoZSI9PT1kLDEwKSxlPXRoaXMuZ2VuZXJhdGVRdWVyeUlkKCksdD10aGlzLnRyYW5zZm9ybSh0KS5kb2N1bWVudCx0aGlzLnNldFF1ZXJ5KGUsKGZ1bmN0aW9uKCl7cmV0dXJue2RvY3VtZW50OnR9fSkpLG49dGhpcy5nZXRWYXJpYWJsZXModCxuKSx0aGlzLnRyYW5zZm9ybSh0KS5oYXNDbGllbnRFeHBvcnRzP1s0LHRoaXMubG9jYWxTdGF0ZS5hZGRFeHBvcnRlZFZhcmlhYmxlcyh0LG4saCldOlszLDJdO2Nhc2UgMTpuPXAuc2VudCgpLHAubGFiZWw9MjtjYXNlIDI6cmV0dXJuIGE9ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gbyYmYy5xdWVyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7dmFyIHI9dC5vYnNlcnZhYmxlUXVlcnk7aWYocil7dmFyIGE9ci5xdWVyeU5hbWU7YSYmeHMuY2FsbChvLGEpJiYoZVtuXT17dXBkYXRlcjpvW2FdLHF1ZXJ5OmMucXVlcnlTdG9yZS5nZXQobil9KX19KSksZX0sdGhpcy5tdXRhdGlvblN0b3JlLmluaXRNdXRhdGlvbihlLHQsbiksdGhpcy5kYXRhU3RvcmUubWFya011dGF0aW9uSW5pdCh7bXV0YXRpb25JZDplLGRvY3VtZW50OnQsdmFyaWFibGVzOm4sdXBkYXRlUXVlcmllczphKCksdXBkYXRlOmwsb3B0aW1pc3RpY1Jlc3BvbnNlOnJ9KSx0aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKSx1PXRoaXMsWzIsbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8sYyl7dmFyIHAseTt1LmdldE9ic2VydmFibGVGcm9tTGluayh0LE9iamVjdChXaS5hKSh7fSxoLHtvcHRpbWlzdGljUmVzcG9uc2U6cn0pLG4sITEpLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihyKXtPYmplY3QoWWkucSkocikmJiJub25lIj09PWY/eT1uZXcgdnMoe2dyYXBoUUxFcnJvcnM6ci5lcnJvcnN9KToodS5tdXRhdGlvblN0b3JlLm1hcmtNdXRhdGlvblJlc3VsdChlKSwibm8tY2FjaGUiIT09ZCYmdS5kYXRhU3RvcmUubWFya011dGF0aW9uUmVzdWx0KHttdXRhdGlvbklkOmUscmVzdWx0OnIsZG9jdW1lbnQ6dCx2YXJpYWJsZXM6bix1cGRhdGVRdWVyaWVzOmEoKSx1cGRhdGU6bH0pLHA9cil9LGVycm9yOmZ1bmN0aW9uKHQpe3UubXV0YXRpb25TdG9yZS5tYXJrTXV0YXRpb25FcnJvcihlLHQpLHUuZGF0YVN0b3JlLm1hcmtNdXRhdGlvbkNvbXBsZXRlKHttdXRhdGlvbklkOmUsb3B0aW1pc3RpY1Jlc3BvbnNlOnJ9KSx1LmJyb2FkY2FzdFF1ZXJpZXMoKSx1LnNldFF1ZXJ5KGUsKGZ1bmN0aW9uKCl7cmV0dXJue2RvY3VtZW50Om51bGx9fSkpLGMobmV3IHZzKHtuZXR3b3JrRXJyb3I6dH0pKX0sY29tcGxldGU6ZnVuY3Rpb24oKXtpZih5JiZ1Lm11dGF0aW9uU3RvcmUubWFya011dGF0aW9uRXJyb3IoZSx5KSx1LmRhdGFTdG9yZS5tYXJrTXV0YXRpb25Db21wbGV0ZSh7bXV0YXRpb25JZDplLG9wdGltaXN0aWNSZXNwb25zZTpyfSksdS5icm9hZGNhc3RRdWVyaWVzKCkseSljKHkpO2Vsc2V7ImZ1bmN0aW9uIj09dHlwZW9mIGkmJihpPWkocCkpO3ZhciB0PVtdO2hzKGkpJiZpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl1LnF1ZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI9bi5vYnNlcnZhYmxlUXVlcnk7ciYmci5xdWVyeU5hbWU9PT1lJiZ0LnB1c2goci5yZWZldGNoKCkpfSkpO2Vsc2V7dmFyIG49e3F1ZXJ5OmUucXVlcnksdmFyaWFibGVzOmUudmFyaWFibGVzLGZldGNoUG9saWN5OiJuZXR3b3JrLW9ubHkifTtlLmNvbnRleHQmJihuLmNvbnRleHQ9ZS5jb250ZXh0KSx0LnB1c2godS5xdWVyeShuKSl9fSkpLFByb21pc2UuYWxsKHM/dDpbXSkudGhlbigoZnVuY3Rpb24oKXt1LnNldFF1ZXJ5KGUsKGZ1bmN0aW9uKCl7cmV0dXJue2RvY3VtZW50Om51bGx9fSkpLCJpZ25vcmUiPT09ZiYmcCYmT2JqZWN0KFlpLnEpKHApJiZkZWxldGUgcC5lcnJvcnMsbyhwKX0pKX19fSl9KSldfX0pKX0pKX0sZS5wcm90b3R5cGUuZmV0Y2hRdWVyeT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gT2JqZWN0KFdpLmIpKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbyxhLGksdSxzLGwsYyxmLGQscCxoLHksbSx2LGcsYix3LF8sRT10aGlzO3JldHVybiBPYmplY3QoV2kuZCkodGhpcywoZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbz10Lm1ldGFkYXRhLGE9dm9pZCAwPT09bz9udWxsOm8saT10LmZldGNoUG9saWN5LHU9dm9pZCAwPT09aT8iY2FjaGUtZmlyc3QiOmkscz10LmNvbnRleHQsbD12b2lkIDA9PT1zP3t9OnMsYz10aGlzLnRyYW5zZm9ybSh0LnF1ZXJ5KS5kb2N1bWVudCxmPXRoaXMuZ2V0VmFyaWFibGVzKGMsdC52YXJpYWJsZXMpLHRoaXMudHJhbnNmb3JtKGMpLmhhc0NsaWVudEV4cG9ydHM/WzQsdGhpcy5sb2NhbFN0YXRlLmFkZEV4cG9ydGVkVmFyaWFibGVzKGMsZixsKV06WzMsMl07Y2FzZSAxOmY9Ty5zZW50KCksTy5sYWJlbD0yO2Nhc2UgMjppZih0PU9iamVjdChXaS5hKSh7fSx0LHt2YXJpYWJsZXM6Zn0pLGg9cD0ibmV0d29yay1vbmx5Ij09PXV8fCJuby1jYWNoZSI9PT11LHB8fCh5PXRoaXMuZGF0YVN0b3JlLmdldENhY2hlKCkuZGlmZih7cXVlcnk6Yyx2YXJpYWJsZXM6ZixyZXR1cm5QYXJ0aWFsRGF0YTohMCxvcHRpbWlzdGljOiExfSksbT15LmNvbXBsZXRlLHY9eS5yZXN1bHQsaD0hbXx8ImNhY2hlLWFuZC1uZXR3b3JrIj09PXUsZD12KSxnPWgmJiJjYWNoZS1vbmx5IiE9PXUmJiJzdGFuZGJ5IiE9PXUsT2JqZWN0KFlpLnMpKFsibGl2ZSJdLGMpJiYoZz0hMCksYj10aGlzLmlkQ291bnRlcisrLHc9Im5vLWNhY2hlIiE9PXU/dGhpcy51cGRhdGVRdWVyeVdhdGNoKGUsYyx0KTp2b2lkIDAsdGhpcy5zZXRRdWVyeShlLChmdW5jdGlvbigpe3JldHVybntkb2N1bWVudDpjLGxhc3RSZXF1ZXN0SWQ6YixpbnZhbGlkYXRlZDohMCxjYW5jZWw6d319KSksdGhpcy5pbnZhbGlkYXRlKHIpLHRoaXMucXVlcnlTdG9yZS5pbml0UXVlcnkoe3F1ZXJ5SWQ6ZSxkb2N1bWVudDpjLHN0b3JlUHJldmlvdXNWYXJpYWJsZXM6Zyx2YXJpYWJsZXM6Zixpc1BvbGw6bj09PW1zLnBvbGwsaXNSZWZldGNoOm49PT1tcy5yZWZldGNoLG1ldGFkYXRhOmEsZmV0Y2hNb3JlRm9yUXVlcnlJZDpyfSksdGhpcy5icm9hZGNhc3RRdWVyaWVzKCksZyl7aWYoXz10aGlzLmZldGNoUmVxdWVzdCh7cmVxdWVzdElkOmIscXVlcnlJZDplLGRvY3VtZW50OmMsb3B0aW9uczp0LGZldGNoTW9yZUZvclF1ZXJ5SWQ6cn0pLmNhdGNoKChmdW5jdGlvbih0KXt0aHJvdyB5cyh0KT90OihiPj1FLmdldFF1ZXJ5KGUpLmxhc3RSZXF1ZXN0SWQmJihFLnF1ZXJ5U3RvcmUubWFya1F1ZXJ5RXJyb3IoZSx0LHIpLEUuaW52YWxpZGF0ZShlKSxFLmludmFsaWRhdGUociksRS5icm9hZGNhc3RRdWVyaWVzKCkpLG5ldyB2cyh7bmV0d29ya0Vycm9yOnR9KSl9KSksImNhY2hlLWFuZC1uZXR3b3JrIiE9PXUpcmV0dXJuWzIsX107Xy5jYXRjaCgoZnVuY3Rpb24oKXt9KSl9cmV0dXJuIHRoaXMucXVlcnlTdG9yZS5tYXJrUXVlcnlSZXN1bHRDbGllbnQoZSwhZyksdGhpcy5pbnZhbGlkYXRlKGUpLHRoaXMuaW52YWxpZGF0ZShyKSx0aGlzLnRyYW5zZm9ybShjKS5oYXNGb3JjZWRSZXNvbHZlcnM/WzIsdGhpcy5sb2NhbFN0YXRlLnJ1blJlc29sdmVycyh7ZG9jdW1lbnQ6YyxyZW1vdGVSZXN1bHQ6e2RhdGE6ZH0sY29udGV4dDpsLHZhcmlhYmxlczpmLG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnM6ITB9KS50aGVuKChmdW5jdGlvbihuKXtyZXR1cm4gRS5tYXJrUXVlcnlSZXN1bHQoZSxuLHQsciksRS5icm9hZGNhc3RRdWVyaWVzKCksbn0pKV06KHRoaXMuYnJvYWRjYXN0UXVlcmllcygpLFsyLHtkYXRhOmR9XSl9fSkpfSkpfSxlLnByb3RvdHlwZS5tYXJrUXVlcnlSZXN1bHQ9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bi5mZXRjaFBvbGljeSxhPW4udmFyaWFibGVzLGk9bi5lcnJvclBvbGljeTsibm8tY2FjaGUiPT09bz90aGlzLnNldFF1ZXJ5KGUsKGZ1bmN0aW9uKCl7cmV0dXJue25ld0RhdGE6e3Jlc3VsdDp0LmRhdGEsY29tcGxldGU6ITB9fX0pKTp0aGlzLmRhdGFTdG9yZS5tYXJrUXVlcnlSZXN1bHQodCx0aGlzLmdldFF1ZXJ5KGUpLmRvY3VtZW50LGEsciwiaWdub3JlIj09PWl8fCJhbGwiPT09aSl9LGUucHJvdG90eXBlLnF1ZXJ5TGlzdGVuZXJGb3JPYnNlcnZlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztmdW5jdGlvbiBvKGUsdCl7aWYobltlXSl0cnl7bltlXSh0KX1jYXRjaChlKXt9fXJldHVybiBmdW5jdGlvbihuLGEpe2lmKHIuaW52YWxpZGF0ZShlLCExKSxuKXt2YXIgaT1yLmdldFF1ZXJ5KGUpLHU9aS5vYnNlcnZhYmxlUXVlcnkscz1pLmRvY3VtZW50LGw9dT91Lm9wdGlvbnMuZmV0Y2hQb2xpY3k6dC5mZXRjaFBvbGljeTtpZigic3RhbmRieSIhPT1sKXt2YXIgYz1kcyhuLm5ldHdvcmtTdGF0dXMpLGY9dSYmdS5nZXRMYXN0UmVzdWx0KCksZD0hKCFmfHxmLm5ldHdvcmtTdGF0dXM9PT1uLm5ldHdvcmtTdGF0dXMpLHA9dC5yZXR1cm5QYXJ0aWFsRGF0YXx8IWEmJm4ucHJldmlvdXNWYXJpYWJsZXN8fGQmJnQubm90aWZ5T25OZXR3b3JrU3RhdHVzQ2hhbmdlfHwiY2FjaGUtb25seSI9PT1sfHwiY2FjaGUtYW5kLW5ldHdvcmsiPT09bDtpZighY3x8cCl7dmFyIGg9aHMobi5ncmFwaFFMRXJyb3JzKSx5PXUmJnUub3B0aW9ucy5lcnJvclBvbGljeXx8dC5lcnJvclBvbGljeXx8Im5vbmUiO2lmKCJub25lIj09PXkmJmh8fG4ubmV0d29ya0Vycm9yKXJldHVybiBvKCJlcnJvciIsbmV3IHZzKHtncmFwaFFMRXJyb3JzOm4uZ3JhcGhRTEVycm9ycyxuZXR3b3JrRXJyb3I6bi5uZXR3b3JrRXJyb3J9KSk7dHJ5e3ZhciBtPXZvaWQgMCx2PXZvaWQgMDtpZihhKSJuby1jYWNoZSIhPT1sJiYibmV0d29yay1vbmx5IiE9PWwmJnIuc2V0UXVlcnkoZSwoZnVuY3Rpb24oKXtyZXR1cm57bmV3RGF0YTpudWxsfX0pKSxtPWEucmVzdWx0LHY9IWEuY29tcGxldGU7ZWxzZXt2YXIgZz11JiZ1LmdldExhc3RFcnJvcigpLGI9Im5vbmUiIT09eSYmKGcmJmcuZ3JhcGhRTEVycm9ycykhPT1uLmdyYXBoUUxFcnJvcnM7aWYoZiYmZi5kYXRhJiYhYiltPWYuZGF0YSx2PSExO2Vsc2V7dmFyIHc9ci5kYXRhU3RvcmUuZ2V0Q2FjaGUoKS5kaWZmKHtxdWVyeTpzLHZhcmlhYmxlczpuLnByZXZpb3VzVmFyaWFibGVzfHxuLnZhcmlhYmxlcyxyZXR1cm5QYXJ0aWFsRGF0YTohMCxvcHRpbWlzdGljOiEwfSk7bT13LnJlc3VsdCx2PSF3LmNvbXBsZXRlfX12YXIgXz12JiYhKHQucmV0dXJuUGFydGlhbERhdGF8fCJjYWNoZS1vbmx5Ij09PWwpLEU9e2RhdGE6Xz9mJiZmLmRhdGE6bSxsb2FkaW5nOmMsbmV0d29ya1N0YXR1czpuLm5ldHdvcmtTdGF0dXMsc3RhbGU6X307ImFsbCI9PT15JiZoJiYoRS5lcnJvcnM9bi5ncmFwaFFMRXJyb3JzKSxvKCJuZXh0IixFKX1jYXRjaChlKXtvKCJlcnJvciIsbmV3IHZzKHtuZXR3b3JrRXJyb3I6ZX0pKX19fX19fSxlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2Zvcm1DYWNoZTtpZighdC5oYXMoZSkpe3ZhciBuPXRoaXMuZGF0YVN0b3JlLmdldENhY2hlKCkscj1uLnRyYW5zZm9ybURvY3VtZW50KGUpLG89T2JqZWN0KFlpLkQpKG4udHJhbnNmb3JtRm9yTGluayhyKSksYT10aGlzLmxvY2FsU3RhdGUuY2xpZW50UXVlcnkociksaT10aGlzLmxvY2FsU3RhdGUuc2VydmVyUXVlcnkobyksdT17ZG9jdW1lbnQ6cixoYXNDbGllbnRFeHBvcnRzOk9iamVjdChZaS5yKShyKSxoYXNGb3JjZWRSZXNvbHZlcnM6dGhpcy5sb2NhbFN0YXRlLnNob3VsZEZvcmNlUmVzb2x2ZXJzKHIpLGNsaWVudFF1ZXJ5OmEsc2VydmVyUXVlcnk6aSxkZWZhdWx0VmFyczpPYmplY3QoWWkuaCkoT2JqZWN0KFlpLm0pKHIpKX0scz1mdW5jdGlvbihlKXtlJiYhdC5oYXMoZSkmJnQuc2V0KGUsdSl9O3MoZSkscyhyKSxzKGEpLHMoaSl9cmV0dXJuIHQuZ2V0KGUpfSxlLnByb3RvdHlwZS5nZXRWYXJpYWJsZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0KFdpLmEpKHt9LHRoaXMudHJhbnNmb3JtKGUpLmRlZmF1bHRWYXJzLHQpfSxlLnByb3RvdHlwZS53YXRjaFF1ZXJ5PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApLE9iamVjdChDLmIpKCJzdGFuZGJ5IiE9PWUuZmV0Y2hQb2xpY3ksMTEpLGUudmFyaWFibGVzPXRoaXMuZ2V0VmFyaWFibGVzKGUucXVlcnksZS52YXJpYWJsZXMpLHZvaWQgMD09PWUubm90aWZ5T25OZXR3b3JrU3RhdHVzQ2hhbmdlJiYoZS5ub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2U9ITEpO3ZhciBuPU9iamVjdChXaS5hKSh7fSxlKTtyZXR1cm4gbmV3IGdzKHtxdWVyeU1hbmFnZXI6dGhpcyxvcHRpb25zOm4sc2hvdWxkU3Vic2NyaWJlOnR9KX0sZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gT2JqZWN0KEMuYikoZS5xdWVyeSwxMiksT2JqZWN0KEMuYikoIkRvY3VtZW50Ij09PWUucXVlcnkua2luZCwxMyksT2JqZWN0KEMuYikoIWUucmV0dXJuUGFydGlhbERhdGEsMTQpLE9iamVjdChDLmIpKCFlLnBvbGxJbnRlcnZhbCwxNSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7dmFyIG89dC53YXRjaFF1ZXJ5KGUsITEpO3QuZmV0Y2hRdWVyeVJlamVjdEZucy5zZXQoInF1ZXJ5OiIrby5xdWVyeUlkLHIpLG8ucmVzdWx0KCkudGhlbihuLHIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZmV0Y2hRdWVyeVJlamVjdEZucy5kZWxldGUoInF1ZXJ5OiIrby5xdWVyeUlkKX0pKX0pKX0sZS5wcm90b3R5cGUuZ2VuZXJhdGVRdWVyeUlkPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLmlkQ291bnRlcisrKX0sZS5wcm90b3R5cGUuc3RvcFF1ZXJ5SW5TdG9yZT1mdW5jdGlvbihlKXt0aGlzLnN0b3BRdWVyeUluU3RvcmVOb0Jyb2FkY2FzdChlKSx0aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKX0sZS5wcm90b3R5cGUuc3RvcFF1ZXJ5SW5TdG9yZU5vQnJvYWRjYXN0PWZ1bmN0aW9uKGUpe3RoaXMuc3RvcFBvbGxpbmdRdWVyeShlKSx0aGlzLnF1ZXJ5U3RvcmUuc3RvcFF1ZXJ5KGUpLHRoaXMuaW52YWxpZGF0ZShlKX0sZS5wcm90b3R5cGUuYWRkUXVlcnlMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3RoaXMuc2V0UXVlcnkoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubGlzdGVuZXJzLmFkZCh0KSx7aW52YWxpZGF0ZWQ6ITF9fSkpfSxlLnByb3RvdHlwZS51cGRhdGVRdWVyeVdhdGNoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLG89dGhpcy5nZXRRdWVyeShlKS5jYW5jZWw7byYmbygpO3JldHVybiB0aGlzLmRhdGFTdG9yZS5nZXRDYWNoZSgpLndhdGNoKHtxdWVyeTp0LHZhcmlhYmxlczpuLnZhcmlhYmxlcyxvcHRpbWlzdGljOiEwLHByZXZpb3VzUmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxuPXIuZ2V0UXVlcnkoZSkub2JzZXJ2YWJsZVF1ZXJ5O2lmKG4pe3ZhciBvPW4uZ2V0TGFzdFJlc3VsdCgpO28mJih0PW8uZGF0YSl9cmV0dXJuIHR9LGNhbGxiYWNrOmZ1bmN0aW9uKHQpe3Iuc2V0UXVlcnkoZSwoZnVuY3Rpb24oKXtyZXR1cm57aW52YWxpZGF0ZWQ6ITAsbmV3RGF0YTp0fX0pKX19KX0sZS5wcm90b3R5cGUuYWRkT2JzZXJ2YWJsZVF1ZXJ5PWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXRRdWVyeShlLChmdW5jdGlvbigpe3JldHVybntvYnNlcnZhYmxlUXVlcnk6dH19KSl9LGUucHJvdG90eXBlLnJlbW92ZU9ic2VydmFibGVRdWVyeT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFF1ZXJ5KGUpLmNhbmNlbDt0aGlzLnNldFF1ZXJ5KGUsKGZ1bmN0aW9uKCl7cmV0dXJue29ic2VydmFibGVRdWVyeTpudWxsfX0pKSx0JiZ0KCl9LGUucHJvdG90eXBlLmNsZWFyU3RvcmU9ZnVuY3Rpb24oKXt0aGlzLmZldGNoUXVlcnlSZWplY3RGbnMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZShuZXcgQy5hKDE2KSl9KSk7dmFyIGU9W107cmV0dXJuIHRoaXMucXVlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3Qub2JzZXJ2YWJsZVF1ZXJ5JiZlLnB1c2gobil9KSksdGhpcy5xdWVyeVN0b3JlLnJlc2V0KGUpLHRoaXMubXV0YXRpb25TdG9yZS5yZXNldCgpLHRoaXMuZGF0YVN0b3JlLnJlc2V0KCl9LGUucHJvdG90eXBlLnJlc2V0U3RvcmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLmNsZWFyU3RvcmUoKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLnJlRmV0Y2hPYnNlcnZhYmxlUXVlcmllcygpfSkpfSxlLnByb3RvdHlwZS5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIG49W107cmV0dXJuIHRoaXMucXVlcmllcy5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3ZhciBhPXIub2JzZXJ2YWJsZVF1ZXJ5O2lmKGEpe3ZhciBpPWEub3B0aW9ucy5mZXRjaFBvbGljeTthLnJlc2V0TGFzdFJlc3VsdHMoKSwiY2FjaGUtb25seSI9PT1pfHwhZSYmInN0YW5kYnkiPT09aXx8bi5wdXNoKGEucmVmZXRjaCgpKSx0LnNldFF1ZXJ5KG8sKGZ1bmN0aW9uKCl7cmV0dXJue25ld0RhdGE6bnVsbH19KSksdC5pbnZhbGlkYXRlKG8pfX0pKSx0aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKSxQcm9taXNlLmFsbChuKX0sZS5wcm90b3R5cGUub2JzZXJ2ZVF1ZXJ5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5hZGRRdWVyeUxpc3RlbmVyKGUsdGhpcy5xdWVyeUxpc3RlbmVyRm9yT2JzZXJ2ZXIoZSx0LG4pKSx0aGlzLmZldGNoUXVlcnkoZSx0KX0sZS5wcm90b3R5cGUuc3RhcnRRdWVyeT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYWRkUXVlcnlMaXN0ZW5lcihlLG4pLHRoaXMuZmV0Y2hRdWVyeShlLHQpLmNhdGNoKChmdW5jdGlvbigpe30pKSxlfSxlLnByb3RvdHlwZS5zdGFydEdyYXBoUUxTdWJzY3JpcHRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWUucXVlcnkscj1lLmZldGNoUG9saWN5LG89ZS52YXJpYWJsZXM7bj10aGlzLnRyYW5zZm9ybShuKS5kb2N1bWVudCxvPXRoaXMuZ2V0VmFyaWFibGVzKG4sbyk7dmFyIGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2V0T2JzZXJ2YWJsZUZyb21MaW5rKG4se30sZSwhMSkubWFwKChmdW5jdGlvbihvKXtpZihyJiYibm8tY2FjaGUiPT09cnx8KHQuZGF0YVN0b3JlLm1hcmtTdWJzY3JpcHRpb25SZXN1bHQobyxuLGUpLHQuYnJvYWRjYXN0UXVlcmllcygpKSxPYmplY3QoWWkucSkobykpdGhyb3cgbmV3IHZzKHtncmFwaFFMRXJyb3JzOm8uZXJyb3JzfSk7cmV0dXJuIG99KSl9O2lmKHRoaXMudHJhbnNmb3JtKG4pLmhhc0NsaWVudEV4cG9ydHMpe3ZhciBpPXRoaXMubG9jYWxTdGF0ZS5hZGRFeHBvcnRlZFZhcmlhYmxlcyhuLG8pLnRoZW4oYSk7cmV0dXJuIG5ldyBwcygoZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gaS50aGVuKChmdW5jdGlvbihuKXtyZXR1cm4gdD1uLnN1YnNjcmliZShlKX0pLGUuZXJyb3IpLGZ1bmN0aW9uKCl7cmV0dXJuIHQmJnQudW5zdWJzY3JpYmUoKX19KSl9cmV0dXJuIGEobyl9LGUucHJvdG90eXBlLnN0b3BRdWVyeT1mdW5jdGlvbihlKXt0aGlzLnN0b3BRdWVyeU5vQnJvYWRjYXN0KGUpLHRoaXMuYnJvYWRjYXN0UXVlcmllcygpfSxlLnByb3RvdHlwZS5zdG9wUXVlcnlOb0Jyb2FkY2FzdD1mdW5jdGlvbihlKXt0aGlzLnN0b3BRdWVyeUluU3RvcmVOb0Jyb2FkY2FzdChlKSx0aGlzLnJlbW92ZVF1ZXJ5KGUpfSxlLnByb3RvdHlwZS5yZW1vdmVRdWVyeT1mdW5jdGlvbihlKXt0aGlzLmZldGNoUXVlcnlSZWplY3RGbnMuZGVsZXRlKCJxdWVyeToiK2UpLHRoaXMuZmV0Y2hRdWVyeVJlamVjdEZucy5kZWxldGUoImZldGNoUmVxdWVzdDoiK2UpLHRoaXMuZ2V0UXVlcnkoZSkuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS51bnN1YnNjcmliZSgpfSkpLHRoaXMucXVlcmllcy5kZWxldGUoZSl9LGUucHJvdG90eXBlLmdldEN1cnJlbnRRdWVyeVJlc3VsdD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgbj1lLm9wdGlvbnMscj1uLnZhcmlhYmxlcyxvPW4ucXVlcnksYT1uLmZldGNoUG9saWN5LGk9bi5yZXR1cm5QYXJ0aWFsRGF0YSx1PWUuZ2V0TGFzdFJlc3VsdCgpLHM9dGhpcy5nZXRRdWVyeShlLnF1ZXJ5SWQpLm5ld0RhdGE7aWYocyYmcy5jb21wbGV0ZSlyZXR1cm57ZGF0YTpzLnJlc3VsdCxwYXJ0aWFsOiExfTtpZigibm8tY2FjaGUiPT09YXx8Im5ldHdvcmstb25seSI9PT1hKXJldHVybntkYXRhOnZvaWQgMCxwYXJ0aWFsOiExfTt2YXIgbD10aGlzLmRhdGFTdG9yZS5nZXRDYWNoZSgpLmRpZmYoe3F1ZXJ5Om8sdmFyaWFibGVzOnIscHJldmlvdXNSZXN1bHQ6dT91LmRhdGE6dm9pZCAwLHJldHVyblBhcnRpYWxEYXRhOiEwLG9wdGltaXN0aWM6dH0pLGM9bC5yZXN1bHQsZj1sLmNvbXBsZXRlO3JldHVybntkYXRhOmZ8fGk/Yzp2b2lkIDAscGFydGlhbDohZn19LGUucHJvdG90eXBlLmdldFF1ZXJ5V2l0aFByZXZpb3VzUmVzdWx0PWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIG49dGhpcy5nZXRRdWVyeShlKS5vYnNlcnZhYmxlUXVlcnk7T2JqZWN0KEMuYikobiwxNyksdD1ufWVsc2UgdD1lO3ZhciByPXQub3B0aW9ucyxvPXIudmFyaWFibGVzLGE9ci5xdWVyeTtyZXR1cm57cHJldmlvdXNSZXN1bHQ6dGhpcy5nZXRDdXJyZW50UXVlcnlSZXN1bHQodCwhMSkuZGF0YSx2YXJpYWJsZXM6byxkb2N1bWVudDphfX0sZS5wcm90b3R5cGUuYnJvYWRjYXN0UXVlcmllcz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5vbkJyb2FkY2FzdCgpLHRoaXMucXVlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3QuaW52YWxpZGF0ZWQmJnQubGlzdGVuZXJzLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ImJnIoZS5xdWVyeVN0b3JlLmdldChuKSx0Lm5ld0RhdGEpfSkpfSkpfSxlLnByb3RvdHlwZS5nZXRMb2NhbFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9jYWxTdGF0ZX0sZS5wcm90b3R5cGUuZ2V0T2JzZXJ2YWJsZUZyb21MaW5rPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGE9dGhpczt2b2lkIDA9PT1yJiYocj10aGlzLnF1ZXJ5RGVkdXBsaWNhdGlvbik7dmFyIGk9dGhpcy50cmFuc2Zvcm0oZSkuc2VydmVyUXVlcnk7aWYoaSl7dmFyIHU9dGhpcy5pbkZsaWdodExpbmtPYnNlcnZhYmxlcyxzPXRoaXMubGluayxsPXtxdWVyeTppLHZhcmlhYmxlczpuLG9wZXJhdGlvbk5hbWU6T2JqZWN0KFlpLm4pKGkpfHx2b2lkIDAsY29udGV4dDp0aGlzLnByZXBhcmVDb250ZXh0KE9iamVjdChXaS5hKSh7fSx0LHtmb3JjZUZldGNoOiFyfSkpfTtpZih0PWwuY29udGV4dCxyKXt2YXIgYz11LmdldChpKXx8bmV3IE1hcDt1LnNldChpLGMpO3ZhciBmPUpTT04uc3RyaW5naWZ5KG4pO2lmKCEobz1jLmdldChmKSkpe2Muc2V0KGYsbz1DcyhzcyhzLGwpKSk7dmFyIGQ9ZnVuY3Rpb24oKXtjLmRlbGV0ZShmKSxjLnNpemV8fHUuZGVsZXRlKGkpLHAudW5zdWJzY3JpYmUoKX0scD1vLnN1YnNjcmliZSh7bmV4dDpkLGVycm9yOmQsY29tcGxldGU6ZH0pfX1lbHNlIG89Q3Moc3MocyxsKSl9ZWxzZSBvPXBzLm9mKHtkYXRhOnt9fSksdD10aGlzLnByZXBhcmVDb250ZXh0KHQpO3ZhciBoPXRoaXMudHJhbnNmb3JtKGUpLmNsaWVudFF1ZXJ5O3JldHVybiBoJiYobz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcHMoKGZ1bmN0aW9uKG4pe3ZhciByPW4ubmV4dCxvPW4uZXJyb3IsYT1uLmNvbXBsZXRlLGk9MCx1PSExLHM9e25leHQ6ZnVuY3Rpb24oZSl7KytpLG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXtuKHQoZSkpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpey0taSxyJiZyLmNhbGwobixlKSx1JiZzLmNvbXBsZXRlKCl9KSwoZnVuY3Rpb24oZSl7LS1pLG8mJm8uY2FsbChuLGUpfSkpfSxlcnJvcjpmdW5jdGlvbihlKXtvJiZvLmNhbGwobixlKX0sY29tcGxldGU6ZnVuY3Rpb24oKXt1PSEwLGl8fGEmJmEuY2FsbChuKX19LGw9ZS5zdWJzY3JpYmUocyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGwudW5zdWJzY3JpYmUoKX19KSl9KG8sKGZ1bmN0aW9uKGUpe3JldHVybiBhLmxvY2FsU3RhdGUucnVuUmVzb2x2ZXJzKHtkb2N1bWVudDpoLHJlbW90ZVJlc3VsdDplLGNvbnRleHQ6dCx2YXJpYWJsZXM6bn0pfSkpKSxvfSxlLnByb3RvdHlwZS5mZXRjaFJlcXVlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPXRoaXMsbz1lLnJlcXVlc3RJZCxhPWUucXVlcnlJZCxpPWUuZG9jdW1lbnQsdT1lLm9wdGlvbnMscz1lLmZldGNoTW9yZUZvclF1ZXJ5SWQsbD11LnZhcmlhYmxlcyxjPXUuZXJyb3JQb2xpY3ksZj12b2lkIDA9PT1jPyJub25lIjpjLGQ9dS5mZXRjaFBvbGljeTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsYyl7dmFyIHA9ci5nZXRPYnNlcnZhYmxlRnJvbUxpbmsoaSx1LmNvbnRleHQsbCksaD0iZmV0Y2hSZXF1ZXN0OiIrYTtyLmZldGNoUXVlcnlSZWplY3RGbnMuc2V0KGgsYyk7dmFyIHk9ZnVuY3Rpb24oKXtyLmZldGNoUXVlcnlSZWplY3RGbnMuZGVsZXRlKGgpLHIuc2V0UXVlcnkoYSwoZnVuY3Rpb24oZSl7ZS5zdWJzY3JpcHRpb25zLmRlbGV0ZShtKX0pKX0sbT1wLm1hcCgoZnVuY3Rpb24oZSl7aWYobz49ci5nZXRRdWVyeShhKS5sYXN0UmVxdWVzdElkJiYoci5tYXJrUXVlcnlSZXN1bHQoYSxlLHUscyksci5xdWVyeVN0b3JlLm1hcmtRdWVyeVJlc3VsdChhLGUscyksci5pbnZhbGlkYXRlKGEpLHIuaW52YWxpZGF0ZShzKSxyLmJyb2FkY2FzdFF1ZXJpZXMoKSksIm5vbmUiPT09ZiYmaHMoZS5lcnJvcnMpKXJldHVybiBjKG5ldyB2cyh7Z3JhcGhRTEVycm9yczplLmVycm9yc30pKTtpZigiYWxsIj09PWYmJihuPWUuZXJyb3JzKSxzfHwibm8tY2FjaGUiPT09ZCl0PWUuZGF0YTtlbHNle3ZhciBwPXIuZGF0YVN0b3JlLmdldENhY2hlKCkuZGlmZih7dmFyaWFibGVzOmwscXVlcnk6aSxvcHRpbWlzdGljOiExLHJldHVyblBhcnRpYWxEYXRhOiEwfSksaD1wLnJlc3VsdDsocC5jb21wbGV0ZXx8dS5yZXR1cm5QYXJ0aWFsRGF0YSkmJih0PWgpfX0pKS5zdWJzY3JpYmUoe2Vycm9yOmZ1bmN0aW9uKGUpe3koKSxjKGUpfSxjb21wbGV0ZTpmdW5jdGlvbigpe3koKSxlKHtkYXRhOnQsZXJyb3JzOm4sbG9hZGluZzohMSxuZXR3b3JrU3RhdHVzOmxzLnJlYWR5LHN0YWxlOiExfSl9fSk7ci5zZXRRdWVyeShhLChmdW5jdGlvbihlKXtlLnN1YnNjcmlwdGlvbnMuYWRkKG0pfSkpfSkpfSxlLnByb3RvdHlwZS5nZXRRdWVyeT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5xdWVyaWVzLmdldChlKXx8e2xpc3RlbmVyczpuZXcgU2V0LGludmFsaWRhdGVkOiExLGRvY3VtZW50Om51bGwsbmV3RGF0YTpudWxsLGxhc3RSZXF1ZXN0SWQ6MSxvYnNlcnZhYmxlUXVlcnk6bnVsbCxzdWJzY3JpcHRpb25zOm5ldyBTZXR9fSxlLnByb3RvdHlwZS5zZXRRdWVyeT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0UXVlcnkoZSkscj1PYmplY3QoV2kuYSkoe30sbix0KG4pKTt0aGlzLnF1ZXJpZXMuc2V0KGUscil9LGUucHJvdG90eXBlLmludmFsaWRhdGU9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMCksZSYmdGhpcy5zZXRRdWVyeShlLChmdW5jdGlvbigpe3JldHVybntpbnZhbGlkYXRlZDp0fX0pKX0sZS5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQ9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0PXRoaXMubG9jYWxTdGF0ZS5wcmVwYXJlQ29udGV4dChlKTtyZXR1cm4gT2JqZWN0KFdpLmEpKHt9LHQse2NsaWVudEF3YXJlbmVzczp0aGlzLmNsaWVudEF3YXJlbmVzc30pfSxlLnByb3RvdHlwZS5jaGVja0luRmxpZ2h0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucXVlcnlTdG9yZS5nZXQoZSk7cmV0dXJuIHQmJnQubmV0d29ya1N0YXR1cyE9PWxzLnJlYWR5JiZ0Lm5ldHdvcmtTdGF0dXMhPT1scy5lcnJvcn0sZS5wcm90b3R5cGUuc3RhcnRQb2xsaW5nUXVlcnk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz1lLnBvbGxJbnRlcnZhbDtpZihPYmplY3QoQy5iKShvLDE4KSwhdGhpcy5zc3JNb2RlKXt2YXIgYT10aGlzLnBvbGxpbmdJbmZvQnlRdWVyeUlkLmdldCh0KTthfHx0aGlzLnBvbGxpbmdJbmZvQnlRdWVyeUlkLnNldCh0LGE9e30pLGEuaW50ZXJ2YWw9byxhLm9wdGlvbnM9T2JqZWN0KFdpLmEpKHt9LGUse2ZldGNoUG9saWN5OiJuZXR3b3JrLW9ubHkifSk7dmFyIGk9ZnVuY3Rpb24oKXt2YXIgZT1yLnBvbGxpbmdJbmZvQnlRdWVyeUlkLmdldCh0KTtlJiYoci5jaGVja0luRmxpZ2h0KHQpP3UoKTpyLmZldGNoUXVlcnkodCxlLm9wdGlvbnMsbXMucG9sbCkudGhlbih1LHUpKX0sdT1mdW5jdGlvbigpe3ZhciBlPXIucG9sbGluZ0luZm9CeVF1ZXJ5SWQuZ2V0KHQpO2UmJihjbGVhclRpbWVvdXQoZS50aW1lb3V0KSxlLnRpbWVvdXQ9c2V0VGltZW91dChpLGUuaW50ZXJ2YWwpKX07biYmdGhpcy5hZGRRdWVyeUxpc3RlbmVyKHQsbiksdSgpfXJldHVybiB0fSxlLnByb3RvdHlwZS5zdG9wUG9sbGluZ1F1ZXJ5PWZ1bmN0aW9uKGUpe3RoaXMucG9sbGluZ0luZm9CeVF1ZXJ5SWQuZGVsZXRlKGUpfSxlfSgpLERzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmNhY2hlPWV9cmV0dXJuIGUucHJvdG90eXBlLmdldENhY2hlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FjaGV9LGUucHJvdG90eXBlLm1hcmtRdWVyeVJlc3VsdD1mdW5jdGlvbihlLHQsbixyLG8pe3ZvaWQgMD09PW8mJihvPSExKTt2YXIgYT0hT2JqZWN0KFlpLnEpKGUpO28mJk9iamVjdChZaS5xKShlKSYmZS5kYXRhJiYoYT0hMCksIXImJmEmJnRoaXMuY2FjaGUud3JpdGUoe3Jlc3VsdDplLmRhdGEsZGF0YUlkOiJST09UX1FVRVJZIixxdWVyeTp0LHZhcmlhYmxlczpufSl9LGUucHJvdG90eXBlLm1hcmtTdWJzY3JpcHRpb25SZXN1bHQ9ZnVuY3Rpb24oZSx0LG4pe09iamVjdChZaS5xKShlKXx8dGhpcy5jYWNoZS53cml0ZSh7cmVzdWx0OmUuZGF0YSxkYXRhSWQ6IlJPT1RfU1VCU0NSSVBUSU9OIixxdWVyeTp0LHZhcmlhYmxlczpufSl9LGUucHJvdG90eXBlLm1hcmtNdXRhdGlvbkluaXQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzO2Uub3B0aW1pc3RpY1Jlc3BvbnNlJiYodD0iZnVuY3Rpb24iPT10eXBlb2YgZS5vcHRpbWlzdGljUmVzcG9uc2U/ZS5vcHRpbWlzdGljUmVzcG9uc2UoZS52YXJpYWJsZXMpOmUub3B0aW1pc3RpY1Jlc3BvbnNlLHRoaXMuY2FjaGUucmVjb3JkT3B0aW1pc3RpY1RyYW5zYWN0aW9uKChmdW5jdGlvbihyKXt2YXIgbz1uLmNhY2hlO24uY2FjaGU9cjt0cnl7bi5tYXJrTXV0YXRpb25SZXN1bHQoe211dGF0aW9uSWQ6ZS5tdXRhdGlvbklkLHJlc3VsdDp7ZGF0YTp0fSxkb2N1bWVudDplLmRvY3VtZW50LHZhcmlhYmxlczplLnZhcmlhYmxlcyx1cGRhdGVRdWVyaWVzOmUudXBkYXRlUXVlcmllcyx1cGRhdGU6ZS51cGRhdGV9KX1maW5hbGx5e24uY2FjaGU9b319KSxlLm11dGF0aW9uSWQpKX0sZS5wcm90b3R5cGUubWFya011dGF0aW9uUmVzdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoIU9iamVjdChZaS5xKShlLnJlc3VsdCkpe3ZhciBuPVt7cmVzdWx0OmUucmVzdWx0LmRhdGEsZGF0YUlkOiJST09UX01VVEFUSU9OIixxdWVyeTplLmRvY3VtZW50LHZhcmlhYmxlczplLnZhcmlhYmxlc31dLHI9ZS51cGRhdGVRdWVyaWVzO3ImJk9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKG8pe3ZhciBhPXJbb10saT1hLnF1ZXJ5LHU9YS51cGRhdGVyLHM9dC5jYWNoZS5kaWZmKHtxdWVyeTppLmRvY3VtZW50LHZhcmlhYmxlczppLnZhcmlhYmxlcyxyZXR1cm5QYXJ0aWFsRGF0YTohMCxvcHRpbWlzdGljOiExfSksbD1zLnJlc3VsdDtpZihzLmNvbXBsZXRlKXt2YXIgYz1PYmplY3QoWWkuSSkoKGZ1bmN0aW9uKCl7cmV0dXJuIHUobCx7bXV0YXRpb25SZXN1bHQ6ZS5yZXN1bHQscXVlcnlOYW1lOk9iamVjdChZaS5uKShpLmRvY3VtZW50KXx8dm9pZCAwLHF1ZXJ5VmFyaWFibGVzOmkudmFyaWFibGVzfSl9KSk7YyYmbi5wdXNoKHtyZXN1bHQ6YyxkYXRhSWQ6IlJPT1RfUVVFUlkiLHF1ZXJ5OmkuZG9jdW1lbnQsdmFyaWFibGVzOmkudmFyaWFibGVzfSl9fSkpLHRoaXMuY2FjaGUucGVyZm9ybVRyYW5zYWN0aW9uKChmdW5jdGlvbih0KXtuLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0LndyaXRlKGUpfSkpO3ZhciByPWUudXBkYXRlO3ImJk9iamVjdChZaS5JKSgoZnVuY3Rpb24oKXtyZXR1cm4gcih0LGUucmVzdWx0KX0pKX0pKX19LGUucHJvdG90eXBlLm1hcmtNdXRhdGlvbkNvbXBsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUubXV0YXRpb25JZDtlLm9wdGltaXN0aWNSZXNwb25zZSYmdGhpcy5jYWNoZS5yZW1vdmVPcHRpbWlzdGljKHQpfSxlLnByb3RvdHlwZS5tYXJrVXBkYXRlUXVlcnlSZXN1bHQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuY2FjaGUud3JpdGUoe3Jlc3VsdDpuLGRhdGFJZDoiUk9PVF9RVUVSWSIsdmFyaWFibGVzOnQscXVlcnk6ZX0pfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhY2hlLnJlc2V0KCl9LGV9KCksVHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PXRoaXM7dGhpcy5kZWZhdWx0T3B0aW9ucz17fSx0aGlzLnJlc2V0U3RvcmVDYWxsYmFja3M9W10sdGhpcy5jbGVhclN0b3JlQ2FsbGJhY2tzPVtdO3ZhciBuPWUuY2FjaGUscj1lLnNzck1vZGUsbz12b2lkIDAhPT1yJiZyLGE9ZS5zc3JGb3JjZUZldGNoRGVsYXksaT12b2lkIDA9PT1hPzA6YSx1PWUuY29ubmVjdFRvRGV2VG9vbHMscz1lLnF1ZXJ5RGVkdXBsaWNhdGlvbixsPXZvaWQgMD09PXN8fHMsYz1lLmRlZmF1bHRPcHRpb25zLGY9ZS5hc3N1bWVJbW11dGFibGVSZXN1bHRzLGQ9dm9pZCAwIT09ZiYmZixwPWUucmVzb2x2ZXJzLGg9ZS50eXBlRGVmcyx5PWUuZnJhZ21lbnRNYXRjaGVyLG09ZS5uYW1lLHY9ZS52ZXJzaW9uLGc9ZS5saW5rO2lmKCFnJiZwJiYoZz11cy5lbXB0eSgpKSwhZ3x8IW4pdGhyb3cgbmV3IEMuYSgxKTt0aGlzLmxpbms9Zyx0aGlzLmNhY2hlPW4sdGhpcy5zdG9yZT1uZXcgRHMobiksdGhpcy5kaXNhYmxlTmV0d29ya0ZldGNoZXM9b3x8aT4wLHRoaXMucXVlcnlEZWR1cGxpY2F0aW9uPWwsdGhpcy5kZWZhdWx0T3B0aW9ucz1jfHx7fSx0aGlzLnR5cGVEZWZzPWgsaSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdC5kaXNhYmxlTmV0d29ya0ZldGNoZXM9ITF9KSxpKSx0aGlzLndhdGNoUXVlcnk9dGhpcy53YXRjaFF1ZXJ5LmJpbmQodGhpcyksdGhpcy5xdWVyeT10aGlzLnF1ZXJ5LmJpbmQodGhpcyksdGhpcy5tdXRhdGU9dGhpcy5tdXRhdGUuYmluZCh0aGlzKSx0aGlzLnJlc2V0U3RvcmU9dGhpcy5yZXNldFN0b3JlLmJpbmQodGhpcyksdGhpcy5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXM9dGhpcy5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMuYmluZCh0aGlzKTt2b2lkIDAhPT11JiYodSYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpJiYod2luZG93Ll9fQVBPTExPX0NMSUVOVF9fPXRoaXMpLHRoaXMudmVyc2lvbj0iMi42LjQiLHRoaXMubG9jYWxTdGF0ZT1uZXcga3Moe2NhY2hlOm4sY2xpZW50OnRoaXMscmVzb2x2ZXJzOnAsZnJhZ21lbnRNYXRjaGVyOnl9KSx0aGlzLnF1ZXJ5TWFuYWdlcj1uZXcgU3Moe2xpbms6dGhpcy5saW5rLHN0b3JlOnRoaXMuc3RvcmUscXVlcnlEZWR1cGxpY2F0aW9uOmwsc3NyTW9kZTpvLGNsaWVudEF3YXJlbmVzczp7bmFtZTptLHZlcnNpb246dn0sbG9jYWxTdGF0ZTp0aGlzLmxvY2FsU3RhdGUsYXNzdW1lSW1tdXRhYmxlUmVzdWx0czpkLG9uQnJvYWRjYXN0OmZ1bmN0aW9uKCl7dC5kZXZUb29sc0hvb2tDYiYmdC5kZXZUb29sc0hvb2tDYih7YWN0aW9uOnt9LHN0YXRlOntxdWVyaWVzOnQucXVlcnlNYW5hZ2VyLnF1ZXJ5U3RvcmUuZ2V0U3RvcmUoKSxtdXRhdGlvbnM6dC5xdWVyeU1hbmFnZXIubXV0YXRpb25TdG9yZS5nZXRTdG9yZSgpfSxkYXRhV2l0aE9wdGltaXN0aWNSZXN1bHRzOnQuY2FjaGUuZXh0cmFjdCghMCl9KX19KX1yZXR1cm4gZS5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMucXVlcnlNYW5hZ2VyLnN0b3AoKX0sZS5wcm90b3R5cGUud2F0Y2hRdWVyeT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kZWZhdWx0T3B0aW9ucy53YXRjaFF1ZXJ5JiYoZT1PYmplY3QoV2kuYSkoe30sdGhpcy5kZWZhdWx0T3B0aW9ucy53YXRjaFF1ZXJ5LGUpKSwhdGhpcy5kaXNhYmxlTmV0d29ya0ZldGNoZXN8fCJuZXR3b3JrLW9ubHkiIT09ZS5mZXRjaFBvbGljeSYmImNhY2hlLWFuZC1uZXR3b3JrIiE9PWUuZmV0Y2hQb2xpY3l8fChlPU9iamVjdChXaS5hKSh7fSxlLHtmZXRjaFBvbGljeToiY2FjaGUtZmlyc3QifSkpLHRoaXMucXVlcnlNYW5hZ2VyLndhdGNoUXVlcnkoZSl9LGUucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRlZmF1bHRPcHRpb25zLnF1ZXJ5JiYoZT1PYmplY3QoV2kuYSkoe30sdGhpcy5kZWZhdWx0T3B0aW9ucy5xdWVyeSxlKSksT2JqZWN0KEMuYikoImNhY2hlLWFuZC1uZXR3b3JrIiE9PWUuZmV0Y2hQb2xpY3ksMiksdGhpcy5kaXNhYmxlTmV0d29ya0ZldGNoZXMmJiJuZXR3b3JrLW9ubHkiPT09ZS5mZXRjaFBvbGljeSYmKGU9T2JqZWN0KFdpLmEpKHt9LGUse2ZldGNoUG9saWN5OiJjYWNoZS1maXJzdCJ9KSksdGhpcy5xdWVyeU1hbmFnZXIucXVlcnkoZSl9LGUucHJvdG90eXBlLm11dGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kZWZhdWx0T3B0aW9ucy5tdXRhdGUmJihlPU9iamVjdChXaS5hKSh7fSx0aGlzLmRlZmF1bHRPcHRpb25zLm11dGF0ZSxlKSksdGhpcy5xdWVyeU1hbmFnZXIubXV0YXRlKGUpfSxlLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyLnN0YXJ0R3JhcGhRTFN1YnNjcmlwdGlvbihlKX0sZS5wcm90b3R5cGUucmVhZFF1ZXJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx0aGlzLmNhY2hlLnJlYWRRdWVyeShlLHQpfSxlLnByb3RvdHlwZS5yZWFkRnJhZ21lbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLHRoaXMuY2FjaGUucmVhZEZyYWdtZW50KGUsdCl9LGUucHJvdG90eXBlLndyaXRlUXVlcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jYWNoZS53cml0ZVF1ZXJ5KGUpO3JldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5icm9hZGNhc3RRdWVyaWVzKCksdH0sZS5wcm90b3R5cGUud3JpdGVGcmFnbWVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNhY2hlLndyaXRlRnJhZ21lbnQoZSk7cmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyLmJyb2FkY2FzdFF1ZXJpZXMoKSx0fSxlLnByb3RvdHlwZS53cml0ZURhdGE9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jYWNoZS53cml0ZURhdGEoZSk7cmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyLmJyb2FkY2FzdFF1ZXJpZXMoKSx0fSxlLnByb3RvdHlwZS5fX2FjdGlvbkhvb2tGb3JEZXZUb29scz1mdW5jdGlvbihlKXt0aGlzLmRldlRvb2xzSG9va0NiPWV9LGUucHJvdG90eXBlLl9fcmVxdWVzdFJhdz1mdW5jdGlvbihlKXtyZXR1cm4gc3ModGhpcy5saW5rLGUpfSxlLnByb3RvdHlwZS5pbml0UXVlcnlNYW5hZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyfSxlLnByb3RvdHlwZS5yZXNldFN0b3JlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5xdWVyeU1hbmFnZXIuY2xlYXJTdG9yZSgpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UuYWxsKGUucmVzZXRTdG9yZUNhbGxiYWNrcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzKCl9KSl9LGUucHJvdG90eXBlLmNsZWFyU3RvcmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLnF1ZXJ5TWFuYWdlci5jbGVhclN0b3JlKCl9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoZS5jbGVhclN0b3JlQ2FsbGJhY2tzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKSl9KSl9LGUucHJvdG90eXBlLm9uUmVzZXRTdG9yZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLnJlc2V0U3RvcmVDYWxsYmFja3MucHVzaChlKSxmdW5jdGlvbigpe3QucmVzZXRTdG9yZUNhbGxiYWNrcz10LnJlc2V0U3RvcmVDYWxsYmFja3MuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KSl9fSxlLnByb3RvdHlwZS5vbkNsZWFyU3RvcmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5jbGVhclN0b3JlQ2FsbGJhY2tzLnB1c2goZSksZnVuY3Rpb24oKXt0LmNsZWFyU3RvcmVDYWxsYmFja3M9dC5jbGVhclN0b3JlQ2FsbGJhY2tzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSkpfX0sZS5wcm90b3R5cGUucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMoZSl9LGUucHJvdG90eXBlLmV4dHJhY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FjaGUuZXh0cmFjdChlKX0sZS5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jYWNoZS5yZXN0b3JlKGUpfSxlLnByb3RvdHlwZS5hZGRSZXNvbHZlcnM9ZnVuY3Rpb24oZSl7dGhpcy5sb2NhbFN0YXRlLmFkZFJlc29sdmVycyhlKX0sZS5wcm90b3R5cGUuc2V0UmVzb2x2ZXJzPWZ1bmN0aW9uKGUpe3RoaXMubG9jYWxTdGF0ZS5zZXRSZXNvbHZlcnMoZSl9LGUucHJvdG90eXBlLmdldFJlc29sdmVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsU3RhdGUuZ2V0UmVzb2x2ZXJzKCl9LGUucHJvdG90eXBlLnNldExvY2FsU3RhdGVGcmFnbWVudE1hdGNoZXI9ZnVuY3Rpb24oZSl7dGhpcy5sb2NhbFN0YXRlLnNldEZyYWdtZW50TWF0Y2hlcihlKX0sZX0oKSxNcz1UcztmdW5jdGlvbiBQcyhlKXtyZXR1cm4gbmV3IHVzKChmdW5jdGlvbih0LG4pe3ZhciByPU9iamVjdChXaS5lKSh0LFtdKTtyZXR1cm4gbmV3ICR1KChmdW5jdGlvbihvKXt2YXIgYTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybiBlKG4sdC5nZXRDb250ZXh0KCkpfSkpLnRoZW4odC5zZXRDb250ZXh0KS50aGVuKChmdW5jdGlvbigpe2E9bih0KS5zdWJzY3JpYmUoe25leHQ6by5uZXh0LmJpbmQobyksZXJyb3I6by5lcnJvci5iaW5kKG8pLGNvbXBsZXRlOm8uY29tcGxldGUuYmluZChvKX0pfSkpLmNhdGNoKG8uZXJyb3IuYmluZChvKSksZnVuY3Rpb24oKXthJiZhLnVuc3Vic2NyaWJlKCl9fSkpfSkpfXZhciBOcz1uKCJnQ0pxIiksanM9e2h0dHA6e2luY2x1ZGVRdWVyeTohMCxpbmNsdWRlRXh0ZW5zaW9uczohMX0saGVhZGVyczp7YWNjZXB0OiIqLyoiLCJjb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sb3B0aW9uczp7bWV0aG9kOiJQT1NUIn19LExzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uZXcgRXJyb3Iobik7dGhyb3cgci5uYW1lPSJTZXJ2ZXJFcnJvciIsci5yZXNwb25zZT1lLHIuc3RhdHVzQ29kZT1lLnN0YXR1cyxyLnJlc3VsdD10LHJ9LFJzPWZ1bmN0aW9uKGUsdCl7dmFyIG47dHJ5e249SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2goZSl7dmFyIHI9bmV3IEMuYSgyKTt0aHJvdyByLnBhcnNlRXJyb3I9ZSxyfXJldHVybiBufSxJcz1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHQ9ZS51cmksbj12b2lkIDA9PT10PyIvZ3JhcGhxbCI6dCxyPWUuZmV0Y2gsbz1lLmluY2x1ZGVFeHRlbnNpb25zLGE9ZS51c2VHRVRGb3JRdWVyaWVzLGk9T2JqZWN0KFdpLmUpKGUsWyJ1cmkiLCJmZXRjaCIsImluY2x1ZGVFeHRlbnNpb25zIiwidXNlR0VURm9yUXVlcmllcyJdKTshZnVuY3Rpb24oZSl7aWYoIWUmJiJ1bmRlZmluZWQiPT10eXBlb2YgZmV0Y2gpe3Rocm93InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiJub2RlLWZldGNoIixuZXcgQy5hKDEpfX0ocikscnx8KHI9ZmV0Y2gpO3ZhciB1PXtodHRwOntpbmNsdWRlRXh0ZW5zaW9uczpvfSxvcHRpb25zOmkuZmV0Y2hPcHRpb25zLGNyZWRlbnRpYWxzOmkuY3JlZGVudGlhbHMsaGVhZGVyczppLmhlYWRlcnN9O3JldHVybiBuZXcgdXMoKGZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRDb250ZXh0KCkudXJpO3JldHVybiBufHwoImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChlKTp0fHwiL2dyYXBocWwiKX0oZSxuKSxvPWUuZ2V0Q29udGV4dCgpLGk9e307aWYoby5jbGllbnRBd2FyZW5lc3Mpe3ZhciBzPW8uY2xpZW50QXdhcmVuZXNzLGw9cy5uYW1lLGM9cy52ZXJzaW9uO2wmJihpWyJhcG9sbG9ncmFwaHFsLWNsaWVudC1uYW1lIl09bCksYyYmKGlbImFwb2xsb2dyYXBocWwtY2xpZW50LXZlcnNpb24iXT1jKX12YXIgZixkPU9iamVjdChXaS5hKSh7fSxpLG8uaGVhZGVycykscD17aHR0cDpvLmh0dHAsb3B0aW9uczpvLmZldGNoT3B0aW9ucyxjcmVkZW50aWFsczpvLmNyZWRlbnRpYWxzLGhlYWRlcnM6ZH0saD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3ZhciBvPU9iamVjdChXaS5hKSh7fSx0Lm9wdGlvbnMse2hlYWRlcnM6dC5oZWFkZXJzLGNyZWRlbnRpYWxzOnQuY3JlZGVudGlhbHN9KSxhPXQuaHR0cDtuLmZvckVhY2goKGZ1bmN0aW9uKGUpe289T2JqZWN0KFdpLmEpKHt9LG8sZS5vcHRpb25zLHtoZWFkZXJzOk9iamVjdChXaS5hKSh7fSxvLmhlYWRlcnMsZS5oZWFkZXJzKX0pLGUuY3JlZGVudGlhbHMmJihvLmNyZWRlbnRpYWxzPWUuY3JlZGVudGlhbHMpLGE9T2JqZWN0KFdpLmEpKHt9LGEsZS5odHRwKX0pKTt2YXIgaT1lLm9wZXJhdGlvbk5hbWUsdT1lLmV4dGVuc2lvbnMscz1lLnZhcmlhYmxlcyxsPWUucXVlcnksYz17b3BlcmF0aW9uTmFtZTppLHZhcmlhYmxlczpzfTtyZXR1cm4gYS5pbmNsdWRlRXh0ZW5zaW9ucyYmKGMuZXh0ZW5zaW9ucz11KSxhLmluY2x1ZGVRdWVyeSYmKGMucXVlcnk9T2JqZWN0KE5zLnByaW50KShsKSkse29wdGlvbnM6byxib2R5OmN9fShlLGpzLHUscCkseT1oLm9wdGlvbnMsbT1oLmJvZHk7aWYoIXkuc2lnbmFsKXt2YXIgdj1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQWJvcnRDb250cm9sbGVyKXJldHVybntjb250cm9sbGVyOiExLHNpZ25hbDohMX07dmFyIGU9bmV3IEFib3J0Q29udHJvbGxlcjtyZXR1cm57Y29udHJvbGxlcjplLHNpZ25hbDplLnNpZ25hbH19KCksZz12LmNvbnRyb2xsZXIsYj12LnNpZ25hbDsoZj1nKSYmKHkuc2lnbmFsPWIpfWlmKGEmJiFlLnF1ZXJ5LmRlZmluaXRpb25zLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJPcGVyYXRpb25EZWZpbml0aW9uIj09PWUua2luZCYmIm11dGF0aW9uIj09PWUub3BlcmF0aW9ufSkpJiYoeS5tZXRob2Q9IkdFVCIpLCJHRVQiPT09eS5tZXRob2Qpe3ZhciB3PWZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj1mdW5jdGlvbihlLHQpe24ucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpfTsicXVlcnkiaW4gdCYmcigicXVlcnkiLHQucXVlcnkpO3Qub3BlcmF0aW9uTmFtZSYmcigib3BlcmF0aW9uTmFtZSIsdC5vcGVyYXRpb25OYW1lKTtpZih0LnZhcmlhYmxlcyl7dmFyIG89dm9pZCAwO3RyeXtvPVJzKHQudmFyaWFibGVzKX1jYXRjaChlKXtyZXR1cm57cGFyc2VFcnJvcjplfX1yKCJ2YXJpYWJsZXMiLG8pfWlmKHQuZXh0ZW5zaW9ucyl7dmFyIGE9dm9pZCAwO3RyeXthPVJzKHQuZXh0ZW5zaW9ucyl9Y2F0Y2goZSl7cmV0dXJue3BhcnNlRXJyb3I6ZX19cigiZXh0ZW5zaW9ucyIsYSl9dmFyIGk9IiIsdT1lLHM9ZS5pbmRleE9mKCIjIik7LTEhPT1zJiYoaT1lLnN1YnN0cihzKSx1PWUuc3Vic3RyKDAscykpO3ZhciBsPS0xPT09dS5pbmRleE9mKCI/Iik/Ij8iOiImIjtyZXR1cm57bmV3VVJJOnUrbCtuLmpvaW4oIiYiKStpfX0odCxtKSxfPXcubmV3VVJJLEU9dy5wYXJzZUVycm9yO2lmKEUpcmV0dXJuIGVzKEUpO3Q9X31lbHNlIHRyeXt5LmJvZHk9UnMobSl9Y2F0Y2goRSl7cmV0dXJuIGVzKEUpfXJldHVybiBuZXcgJHUoKGZ1bmN0aW9uKG4pe3ZhciBvO3JldHVybiByKHQseSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGUuc2V0Q29udGV4dCh7cmVzcG9uc2U6dH0pLHR9KSkudGhlbigobz1lLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHQoKS50aGVuKChmdW5jdGlvbih0KXt0cnl7cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2gocil7dmFyIG49cjtyZXR1cm4gbi5uYW1lPSJTZXJ2ZXJQYXJzZUVycm9yIixuLnJlc3BvbnNlPWUsbi5zdGF0dXNDb2RlPWUuc3RhdHVzLG4uYm9keVRleHQ9dCxQcm9taXNlLnJlamVjdChuKX19KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGUuc3RhdHVzPj0zMDAmJkxzKGUsdCwiUmVzcG9uc2Ugbm90IHN1Y2Nlc3NmdWw6IFJlY2VpdmVkIHN0YXR1cyBjb2RlICIrZS5zdGF0dXMpLEFycmF5LmlzQXJyYXkodCl8fHQuaGFzT3duUHJvcGVydHkoImRhdGEiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZXJyb3JzIil8fExzKGUsdCwiU2VydmVyIHJlc3BvbnNlIHdhcyBtaXNzaW5nIGZvciBxdWVyeSAnIisoQXJyYXkuaXNBcnJheShvKT9vLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3BlcmF0aW9uTmFtZX0pKTpvLm9wZXJhdGlvbk5hbWUpKyInLiIpLHR9KSl9KSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubmV4dChlKSxuLmNvbXBsZXRlKCksZX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7IkFib3J0RXJyb3IiIT09ZS5uYW1lJiYoZS5yZXN1bHQmJmUucmVzdWx0LmVycm9ycyYmZS5yZXN1bHQuZGF0YSYmbi5uZXh0KGUucmVzdWx0KSxuLmVycm9yKGUpKX0pKSxmdW5jdGlvbigpe2YmJmYuYWJvcnQoKX19KSl9KSl9O3ZhciBBcyxGcyxCcz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3JldHVybiBlLmNhbGwodGhpcyxJcyh0KS5yZXF1ZXN0KXx8dGhpc31yZXR1cm4gT2JqZWN0KFdpLmMpKHQsZSksdH0odXMpLHpzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLEtzPShBcz1bIiIsIiJdLEZzPVsiIiwiIl0sT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBcyx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKEZzKX19KSkpO2Z1bmN0aW9uIHFzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIFZzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2Zvcih2YXIgdD10aGlzLG49YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KG4pLG89MDtvPG47bysrKXJbb109YXJndW1lbnRzW29dO3JldHVybiBxcyh0aGlzLGUpLHRoaXMudGFnPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkobj4xP24tMTowKSxvPTE7bzxuO28rKylyW28tMV09YXJndW1lbnRzW29dO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP3QuaW50ZXJpbVRhZy5iaW5kKHQsZSk6InN0cmluZyI9PXR5cGVvZiBlP3QudHJhbnNmb3JtRW5kUmVzdWx0KGUpOihlPWUubWFwKHQudHJhbnNmb3JtU3RyaW5nLmJpbmQodCkpLHQudHJhbnNmb3JtRW5kUmVzdWx0KGUucmVkdWNlKHQucHJvY2Vzc1N1YnN0aXR1dGlvbnMuYmluZCh0LHIpKSkpfSxyLmxlbmd0aD4wJiZBcnJheS5pc0FycmF5KHJbMF0pJiYocj1yWzBdKSx0aGlzLnRyYW5zZm9ybWVycz1yLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmV9KSksdGhpcy50YWd9cmV0dXJuIHpzKGUsW3trZXk6ImludGVyaW1UYWciLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShuPjI/bi0yOjApLG89MjtvPG47bysrKXJbby0yXT1hcmd1bWVudHNbb107cmV0dXJuIHRoaXMudGFnKEtzLGUuYXBwbHkodm9pZCAwLFt0XS5jb25jYXQocikpKX19LHtrZXk6InByb2Nlc3NTdWJzdGl0dXRpb25zIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy50cmFuc2Zvcm1TdWJzdGl0dXRpb24oZS5zaGlmdCgpLHQpO3JldHVybiIiLmNvbmNhdCh0LHIsbil9fSx7a2V5OiJ0cmFuc2Zvcm1TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRyYW5zZm9ybWVycy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQub25TdHJpbmc/dC5vblN0cmluZyhlKTplfSksZSl9fSx7a2V5OiJ0cmFuc2Zvcm1TdWJzdGl0dXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtZXJzLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi5vblN1YnN0aXR1dGlvbj9uLm9uU3Vic3RpdHV0aW9uKGUsdCk6ZX0pLGUpfX0se2tleToidHJhbnNmb3JtRW5kUmVzdWx0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm1lcnMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0Lm9uRW5kUmVzdWx0P3Qub25FbmRSZXN1bHQoZSk6ZX0pLGUpfX1dKSxlfSgpLFVzPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiO3JldHVybntvbkVuZFJlc3VsdDpmdW5jdGlvbih0KXtpZigiIj09PWUpcmV0dXJuIHQudHJpbSgpO2lmKCJzdGFydCI9PT0oZT1lLnRvTG93ZXJDYXNlKCkpfHwibGVmdCI9PT1lKXJldHVybiB0LnJlcGxhY2UoL15ccyovLCIiKTtpZigiZW5kIj09PWV8fCJyaWdodCI9PT1lKXJldHVybiB0LnJlcGxhY2UoL1xzKiQvLCIiKTt0aHJvdyBuZXcgRXJyb3IoIlNpZGUgbm90IHN1cHBvcnRlZDogIitlKX19fTtmdW5jdGlvbiBXcyhlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPUFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59cmV0dXJuIEFycmF5LmZyb20oZSl9dmFyIFlzPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJpbml0aWFsIjtyZXR1cm57b25FbmRSZXN1bHQ6ZnVuY3Rpb24odCl7aWYoImluaXRpYWwiPT09ZSl7dmFyIG49dC5tYXRjaCgvXlteXFNcbl0qKD89XFMpL2dtKSxyPW4mJk1hdGgubWluLmFwcGx5KE1hdGgsV3Mobi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aH0pKSkpO2lmKHIpe3ZhciBvPW5ldyBSZWdFeHAoIl4ueyIrcisifSIsImdtIik7cmV0dXJuIHQucmVwbGFjZShvLCIiKX1yZXR1cm4gdH1pZigiYWxsIj09PWUpcmV0dXJuIHQucmVwbGFjZSgvXlteXFNcbl0rL2dtLCIiKTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gdHlwZTogIitlKX19fSxIcz1mdW5jdGlvbihlLHQpe3JldHVybntvbkVuZFJlc3VsdDpmdW5jdGlvbihuKXtpZihudWxsPT1lfHxudWxsPT10KXRocm93IG5ldyBFcnJvcigicmVwbGFjZVJlc3VsdFRyYW5zZm9ybWVyIHJlcXVpcmVzIGF0IGxlYXN0IDIgYXJndW1lbnRzLiIpO3JldHVybiBuLnJlcGxhY2UoZSx0KX19fSxHcz1mdW5jdGlvbihlLHQpe3JldHVybntvblN1YnN0aXR1dGlvbjpmdW5jdGlvbihuLHIpe2lmKG51bGw9PWV8fG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKCJyZXBsYWNlU3Vic3RpdHV0aW9uVHJhbnNmb3JtZXIgcmVxdWlyZXMgYXQgbGVhc3QgMiBhcmd1bWVudHMuIik7cmV0dXJuIG51bGw9PW4/bjpuLnRvU3RyaW5nKCkucmVwbGFjZShlLHQpfX19LFFzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue29uU3RyaW5nOmZ1bmN0aW9uKG4pe2lmKG51bGw9PWV8fG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKCJyZXBsYWNlU3RyaW5nVHJhbnNmb3JtZXIgcmVxdWlyZXMgYXQgbGVhc3QgMiBhcmd1bWVudHMuIik7cmV0dXJuIG4ucmVwbGFjZShlLHQpfX19LEpzPXtzZXBhcmF0b3I6IiIsY29uanVuY3Rpb246IiIsc2VyaWFsOiExfSxacz1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpKcztyZXR1cm57b25TdWJzdGl0dXRpb246ZnVuY3Rpb24odCxuKXtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcj10Lmxlbmd0aCxvPWUuc2VwYXJhdG9yLGE9ZS5jb25qdW5jdGlvbixpPWUuc2VyaWFsLHU9bi5tYXRjaCgvKFxuP1teXFNcbl0rKSQvKTtpZih0PXU/dC5qb2luKG8rdVsxXSk6dC5qb2luKG8rIiAiKSxhJiZyPjEpe3ZhciBzPXQubGFzdEluZGV4T2Yobyk7dD10LnNsaWNlKDAscykrKGk/bzoiIikrIiAiK2ErdC5zbGljZShzKzEpfX1yZXR1cm4gdH19fSwkcz1mdW5jdGlvbihlKXtyZXR1cm57b25TdWJzdGl0dXRpb246ZnVuY3Rpb24odCxuKXtpZihudWxsPT1lfHwic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVlZCB0byBzcGVjaWZ5IGEgc3RyaW5nIGNoYXJhY3RlciB0byBzcGxpdCBieS4iKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJnQuaW5jbHVkZXMoZSkmJih0PXQuc3BsaXQoZSkpLHR9fX0sWHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiFOdW1iZXIuaXNOYU4oZSkmJiJib29sZWFuIiE9dHlwZW9mIGV9LGVsPWZ1bmN0aW9uKCl7cmV0dXJue29uU3Vic3RpdHV0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKFhzKTpYcyhlKT9lOiIifX19LHRsPW5ldyBWcyhacyh7c2VwYXJhdG9yOiIsIn0pLFlzLFVzKSxubD1uZXcgVnMoWnMoe3NlcGFyYXRvcjoiLCIsY29uanVuY3Rpb246ImFuZCJ9KSxZcyxVcykscmw9bmV3IFZzKFpzKHtzZXBhcmF0b3I6IiwiLGNvbmp1bmN0aW9uOiJvciJ9KSxZcyxVcyksb2w9bmV3IFZzKCRzKCJcbiIpLGVsLFpzLFlzLFVzKSxhbD1uZXcgVnMoJHMoIlxuIiksWnMsWXMsVXMsR3MoLyYvZywiJmFtcDsiKSxHcygvPC9nLCImbHQ7IiksR3MoLz4vZywiJmd0OyIpLEdzKC8iL2csIiZxdW90OyIpLEdzKC8nL2csIiYjeDI3OyIpLEdzKC9gL2csIiYjeDYwOyIpKSxpbD1uZXcgVnMoSHMoLyg/OlxuKD86XHMqKSkrL2csIiAiKSxVcyksdWw9bmV3IFZzKEhzKC8oPzpcblxzKikvZywiIiksVXMpLHNsPW5ldyBWcyhacyh7c2VwYXJhdG9yOiIsIn0pLEhzKC8oPzpccyspL2csIiAiKSxVcyksbGw9bmV3IFZzKFpzKHtzZXBhcmF0b3I6IiwiLGNvbmp1bmN0aW9uOiJvciJ9KSxIcygvKD86XHMrKS9nLCIgIiksVXMpLGNsPW5ldyBWcyhacyh7c2VwYXJhdG9yOiIsIixjb25qdW5jdGlvbjoiYW5kIn0pLEhzKC8oPzpccyspL2csIiAiKSxVcyksZmw9bmV3IFZzKFpzLFlzLFVzKSxkbD1uZXcgVnMoWnMsSHMoLyg/OlxzKykvZywiICIpLFVzKSxwbD1uZXcgVnMoWXMsVXMpLGhsPW5ldyBWcyhZcygiYWxsIiksVXMpLHlsPW4oIndkL1IiKSxtbD1uLm4oeWwpLHZsPW4oIkZvWm0iKSxnbD1uLm4odmwpLGJsPW4oIllTM0siKSx3bD1uLm4oYmwpLF9sPW4oImxUQ1IiKSxFbD1uLm4oX2wpLE9sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMuaXNNb3VudGVkPSExLHRoaXMucHJldmlvdXNPcHRpb25zPXt9LHRoaXMuY29udGV4dD17fSx0aGlzLm9wdGlvbnM9e30sdGhpcy5vcHRpb25zPWV8fHt9LHRoaXMuY29udGV4dD10fHx7fX1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnN9LGUucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMSksdCYmIU9iamVjdCgkaS5hKSh0aGlzLm9wdGlvbnMsZSkmJih0aGlzLnByZXZpb3VzT3B0aW9ucz10aGlzLm9wdGlvbnMpLHRoaXMub3B0aW9ucz1lfSxlLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5pc01vdW50ZWQ9ITF9LGUucHJvdG90eXBlLnJlZnJlc2hDbGllbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5jbGllbnR8fHRoaXMuY29udGV4dCYmdGhpcy5jb250ZXh0LmNsaWVudDtPYmplY3QoQy5iKSghIWUsMik7dmFyIHQ9ITE7cmV0dXJuIGUhPT10aGlzLmNsaWVudCYmKHQ9ITAsdGhpcy5jbGllbnQ9ZSx0aGlzLmNsZWFudXAoKSkse2NsaWVudDp0aGlzLmNsaWVudCxpc05ldzp0fX0sZS5wcm90b3R5cGUudmVyaWZ5RG9jdW1lbnRUeXBlPWZ1bmN0aW9uKGUsdCl7dmFyIG49aihlKTtOKHQpLE4obi50eXBlKTtPYmplY3QoQy5iKShuLnR5cGU9PT10LDMpfSxlfSgpLGtsPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIG49dC5vcHRpb25zLHI9dC5jb250ZXh0LG89dC5mb3JjZVVwZGF0ZSxhPWUuY2FsbCh0aGlzLG4scil8fHRoaXM7cmV0dXJuIGEucHJldmlvdXNEYXRhPXt9LGEuY3VycmVudE9ic2VydmFibGU9e30sYS5ydW5MYXp5PSExLGEucnVuTGF6eVF1ZXJ5PWZ1bmN0aW9uKGUpe2EuY2xlYW51cCgpLGEucnVuTGF6eT0hMCxhLmxhenlPcHRpb25zPWUsYS5mb3JjZVVwZGF0ZSgpfSxhLmdldEV4ZWN1dGVSZXN1bHQ9ZnVuY3Rpb24oKXt2YXIgZT1hLmdldFF1ZXJ5UmVzdWx0KCk7cmV0dXJuIGEuc3RhcnRRdWVyeVN1YnNjcmlwdGlvbigpLGV9LGEub2JzUmVmZXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gYS5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5yZWZldGNoKGUpfSxhLm9ic0ZldGNoTW9yZT1mdW5jdGlvbihlKXtyZXR1cm4gYS5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5mZXRjaE1vcmUoZSl9LGEub2JzVXBkYXRlUXVlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGEuY3VycmVudE9ic2VydmFibGUucXVlcnkudXBkYXRlUXVlcnkoZSl9LGEub2JzU3RhcnRQb2xsaW5nPWZ1bmN0aW9uKGUpe2EuY3VycmVudE9ic2VydmFibGUmJmEuY3VycmVudE9ic2VydmFibGUucXVlcnkmJmEuY3VycmVudE9ic2VydmFibGUucXVlcnkuc3RhcnRQb2xsaW5nKGUpfSxhLm9ic1N0b3BQb2xsaW5nPWZ1bmN0aW9uKCl7YS5jdXJyZW50T2JzZXJ2YWJsZSYmYS5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeSYmYS5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5zdG9wUG9sbGluZygpfSxhLm9ic1N1YnNjcmliZVRvTW9yZT1mdW5jdGlvbihlKXtyZXR1cm4gYS5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5zdWJzY3JpYmVUb01vcmUoZSl9LGEuZm9yY2VVcGRhdGU9byxhfXJldHVybiBPYmplY3QoV2kuYykodCxlKSx0LnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoQ2xpZW50KCk7dmFyIGU9dGhpcy5nZXRPcHRpb25zKCksdD1lLnNraXAsbj1lLnF1ZXJ5O3JldHVybih0fHxuIT09dGhpcy5wcmV2aW91c0RhdGEucXVlcnkpJiYodGhpcy5yZW1vdmVRdWVyeVN1YnNjcmlwdGlvbigpLHRoaXMucHJldmlvdXNEYXRhLnF1ZXJ5PW4pLHRoaXMudXBkYXRlT2JzZXJ2YWJsZVF1ZXJ5KCksdGhpcy5pc01vdW50ZWQmJnRoaXMuc3RhcnRRdWVyeVN1YnNjcmlwdGlvbigpLHRoaXMuZ2V0RXhlY3V0ZVNzclJlc3VsdCgpfHx0aGlzLmdldEV4ZWN1dGVSZXN1bHQoKX0sdC5wcm90b3R5cGUuZXhlY3V0ZUxhenk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ydW5MYXp5P1t0aGlzLnJ1bkxhenlRdWVyeSx0aGlzLmV4ZWN1dGUoKV06W3RoaXMucnVuTGF6eVF1ZXJ5LHtsb2FkaW5nOiExLG5ldHdvcmtTdGF0dXM6bHMucmVhZHksY2FsbGVkOiExLGRhdGE6dm9pZCAwfV19LHQucHJvdG90eXBlLmZldGNoRGF0YT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0T3B0aW9ucygpO2lmKGUuc2tpcHx8ITE9PT1lLnNzcilyZXR1cm4hMTt2YXIgdD10aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5O3JldHVybiEhdC5nZXRDdXJyZW50UmVzdWx0KCkubG9hZGluZyYmdC5yZXN1bHQoKX0sdC5wcm90b3R5cGUuYWZ0ZXJFeGVjdXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj0odm9pZCAwPT09ZT97fTplKS5sYXp5LHI9dm9pZCAwIT09biYmbjtyZXR1cm4gdGhpcy5pc01vdW50ZWQ9ITAsciYmIXRoaXMucnVuTGF6eXx8KHRoaXMuaGFuZGxlRXJyb3JPckNvbXBsZXRlZCgpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeSYmdC5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5yZXNldFF1ZXJ5U3RvcmVFcnJvcnMoKX0pKSksdGhpcy5wcmV2aW91c09wdGlvbnM9dGhpcy5nZXRPcHRpb25zKCksdGhpcy51bm1vdW50LmJpbmQodGhpcyl9LHQucHJvdG90eXBlLmNsZWFudXA9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZVF1ZXJ5U3Vic2NyaXB0aW9uKCksZGVsZXRlIHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnksZGVsZXRlIHRoaXMucHJldmlvdXNEYXRhLnJlc3VsdH0sdC5wcm90b3R5cGUuZ2V0T3B0aW9ucz1mdW5jdGlvbigpe3ZhciB0PWUucHJvdG90eXBlLmdldE9wdGlvbnMuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5sYXp5T3B0aW9ucyYmKHQudmFyaWFibGVzPU9iamVjdChXaS5hKShPYmplY3QoV2kuYSkoe30sdC52YXJpYWJsZXMpLHRoaXMubGF6eU9wdGlvbnMudmFyaWFibGVzKSx0LmNvbnRleHQ9T2JqZWN0KFdpLmEpKE9iamVjdChXaS5hKSh7fSx0LmNvbnRleHQpLHRoaXMubGF6eU9wdGlvbnMuY29udGV4dCkpLHRoaXMucnVuTGF6eSYmZGVsZXRlIHQuc2tpcCx0fSx0LnByb3RvdHlwZS5nZXRFeGVjdXRlU3NyUmVzdWx0PWZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLmNvbnRleHQmJnRoaXMuY29udGV4dC5yZW5kZXJQcm9taXNlcyxuPSExPT09dGhpcy5nZXRPcHRpb25zKCkuc3NyLHI9dGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50LmRpc2FibGVOZXR3b3JrRmV0Y2hlcyxvPXtsb2FkaW5nOiEwLG5ldHdvcmtTdGF0dXM6bHMubG9hZGluZyxjYWxsZWQ6ITAsZGF0YTp2b2lkIDB9O3JldHVybiBuJiYodHx8cik/bzoodCYmKGU9dGhpcy5jb250ZXh0LnJlbmRlclByb21pc2VzLmFkZFF1ZXJ5UHJvbWlzZSh0aGlzLHRoaXMuZ2V0RXhlY3V0ZVJlc3VsdCl8fG8pLGUpfSx0LnByb3RvdHlwZS5wcmVwYXJlT2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0T3B0aW9ucygpO3RoaXMudmVyaWZ5RG9jdW1lbnRUeXBlKGUucXVlcnksRC5RdWVyeSk7dmFyIHQ9ZS5kaXNwbGF5TmFtZXx8IlF1ZXJ5IjtyZXR1cm4gdGhpcy5jb250ZXh0JiZ0aGlzLmNvbnRleHQucmVuZGVyUHJvbWlzZXMmJigibmV0d29yay1vbmx5Ij09PWUuZmV0Y2hQb2xpY3l8fCJjYWNoZS1hbmQtbmV0d29yayI9PT1lLmZldGNoUG9saWN5KSYmKGUuZmV0Y2hQb2xpY3k9ImNhY2hlLWZpcnN0IiksT2JqZWN0KFdpLmEpKE9iamVjdChXaS5hKSh7fSxlKSx7ZGlzcGxheU5hbWU6dCxjb250ZXh0OmUuY29udGV4dCxtZXRhZGF0YTp7cmVhY3RDb21wb25lbnQ6e2Rpc3BsYXlOYW1lOnR9fX0pfSx0LnByb3RvdHlwZS5pbml0aWFsaXplT2JzZXJ2YWJsZVF1ZXJ5PWZ1bmN0aW9uKCl7aWYodGhpcy5jb250ZXh0JiZ0aGlzLmNvbnRleHQucmVuZGVyUHJvbWlzZXMmJih0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5PXRoaXMuY29udGV4dC5yZW5kZXJQcm9taXNlcy5nZXRTU1JPYnNlcnZhYmxlKHRoaXMuZ2V0T3B0aW9ucygpKSksIXRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkpe3ZhciBlPXRoaXMucHJlcGFyZU9ic2VydmFibGVRdWVyeU9wdGlvbnMoKTt0aGlzLnByZXZpb3VzRGF0YS5vYnNlcnZhYmxlUXVlcnlPcHRpb25zPU9iamVjdChXaS5hKShPYmplY3QoV2kuYSkoe30sZSkse2NoaWxkcmVuOm51bGx9KSx0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5PXRoaXMucmVmcmVzaENsaWVudCgpLmNsaWVudC53YXRjaFF1ZXJ5KE9iamVjdChXaS5hKSh7fSxlKSksdGhpcy5jb250ZXh0JiZ0aGlzLmNvbnRleHQucmVuZGVyUHJvbWlzZXMmJnRoaXMuY29udGV4dC5yZW5kZXJQcm9taXNlcy5yZWdpc3RlclNTUk9ic2VydmFibGUodGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeSxlKX19LHQucHJvdG90eXBlLnVwZGF0ZU9ic2VydmFibGVRdWVyeT1mdW5jdGlvbigpe2lmKHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkpe3ZhciBlPU9iamVjdChXaS5hKShPYmplY3QoV2kuYSkoe30sdGhpcy5wcmVwYXJlT2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucygpKSx7Y2hpbGRyZW46bnVsbH0pO09iamVjdCgkaS5hKShlLHRoaXMucHJldmlvdXNEYXRhLm9ic2VydmFibGVRdWVyeU9wdGlvbnMpfHwodGhpcy5wcmV2aW91c0RhdGEub2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucz1lLHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuc2V0T3B0aW9ucyhlKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSkpfWVsc2UgdGhpcy5pbml0aWFsaXplT2JzZXJ2YWJsZVF1ZXJ5KCl9LHQucHJvdG90eXBlLnN0YXJ0UXVlcnlTdWJzY3JpcHRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCF0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbiYmIXRoaXMuZ2V0T3B0aW9ucygpLnNraXApe3ZhciB0PXRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnk7dGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5zdWJzY3JpcHRpb249dC5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24odCl7dmFyIG49dC5sb2FkaW5nLHI9dC5uZXR3b3JrU3RhdHVzLG89dC5kYXRhLGE9ZS5wcmV2aW91c0RhdGEucmVzdWx0O2EmJmEubG9hZGluZz09PW4mJmEubmV0d29ya1N0YXR1cz09PXImJk9iamVjdCgkaS5hKShhLmRhdGEsbyl8fGUuZm9yY2VVcGRhdGUoKX0sZXJyb3I6ZnVuY3Rpb24odCl7aWYoZS5yZXN1YnNjcmliZVRvUXVlcnkoKSwhdC5oYXNPd25Qcm9wZXJ0eSgiZ3JhcGhRTEVycm9ycyIpKXRocm93IHQ7dmFyIG49ZS5wcmV2aW91c0RhdGEucmVzdWx0OyhuJiZuLmxvYWRpbmd8fCFPYmplY3QoJGkuYSkodCxlLnByZXZpb3VzRGF0YS5lcnJvcikpJiYoZS5wcmV2aW91c0RhdGEuZXJyb3I9dCxlLmZvcmNlVXBkYXRlKCkpfX0pfX0sdC5wcm90b3R5cGUucmVzdWJzY3JpYmVUb1F1ZXJ5PWZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVRdWVyeVN1YnNjcmlwdGlvbigpO3ZhciBlPXRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuZ2V0TGFzdEVycm9yKCksdD10aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5LmdldExhc3RSZXN1bHQoKTt0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5LnJlc2V0TGFzdFJlc3VsdHMoKSx0aGlzLnN0YXJ0UXVlcnlTdWJzY3JpcHRpb24oKSxPYmplY3QuYXNzaWduKHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkse2xhc3RFcnJvcjplLGxhc3RSZXN1bHQ6dH0pfSx0LnByb3RvdHlwZS5nZXRRdWVyeVJlc3VsdD1mdW5jdGlvbigpe3ZhciBlPXRoaXMub2JzZXJ2YWJsZVF1ZXJ5RmllbGRzKCksdD10aGlzLmdldE9wdGlvbnMoKTtpZih0LnNraXApZT1PYmplY3QoV2kuYSkoT2JqZWN0KFdpLmEpKHt9LGUpLHtkYXRhOnZvaWQgMCxlcnJvcjp2b2lkIDAsbG9hZGluZzohMSxjYWxsZWQ6ITB9KTtlbHNle3ZhciBuPXRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuZ2V0Q3VycmVudFJlc3VsdCgpLHI9bi5sb2FkaW5nLG89bi5wYXJ0aWFsLGE9bi5uZXR3b3JrU3RhdHVzLGk9bi5lcnJvcnMsdT1uLmVycm9yLHM9bi5kYXRhO2lmKGkmJmkubGVuZ3RoPjAmJih1PW5ldyB2cyh7Z3JhcGhRTEVycm9yczppfSkpLGU9T2JqZWN0KFdpLmEpKE9iamVjdChXaS5hKSh7fSxlKSx7bG9hZGluZzpyLG5ldHdvcmtTdGF0dXM6YSxlcnJvcjp1LGNhbGxlZDohMH0pLHIpe3ZhciBsPXRoaXMucHJldmlvdXNEYXRhLnJlc3VsdCYmdGhpcy5wcmV2aW91c0RhdGEucmVzdWx0LmRhdGE7ZS5kYXRhPWwmJnM/T2JqZWN0KFdpLmEpKE9iamVjdChXaS5hKSh7fSxsKSxzKTpsfHxzfWVsc2UgaWYodSlPYmplY3QuYXNzaWduKGUse2RhdGE6KHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuZ2V0TGFzdFJlc3VsdCgpfHx7fSkuZGF0YX0pO2Vsc2V7dmFyIGM9dGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5vcHRpb25zLmZldGNoUG9saWN5O2lmKHQucGFydGlhbFJlZmV0Y2gmJiFzJiZvJiYiY2FjaGUtb25seSIhPT1jKXJldHVybiBPYmplY3QuYXNzaWduKGUse2xvYWRpbmc6ITAsbmV0d29ya1N0YXR1czpscy5sb2FkaW5nfSksZS5yZWZldGNoKCksZTtlLmRhdGE9c319cmV0dXJuIGUuY2xpZW50PXRoaXMuY2xpZW50LHRoaXMucHJldmlvdXNEYXRhLmxvYWRpbmc9dGhpcy5wcmV2aW91c0RhdGEucmVzdWx0JiZ0aGlzLnByZXZpb3VzRGF0YS5yZXN1bHQubG9hZGluZ3x8ITEsdGhpcy5wcmV2aW91c0RhdGEucmVzdWx0PWUsZX0sdC5wcm90b3R5cGUuaGFuZGxlRXJyb3JPckNvbXBsZXRlZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnk7aWYoZSl7dmFyIHQ9ZS5nZXRDdXJyZW50UmVzdWx0KCksbj10LmRhdGEscj10LmxvYWRpbmcsbz10LmVycm9yO2lmKCFyKXt2YXIgYT10aGlzLmdldE9wdGlvbnMoKSxpPWEucXVlcnksdT1hLnZhcmlhYmxlcyxzPWEub25Db21wbGV0ZWQsbD1hLm9uRXJyb3I7aWYodGhpcy5wcmV2aW91c09wdGlvbnMmJiF0aGlzLnByZXZpb3VzRGF0YS5sb2FkaW5nJiZPYmplY3QoJGkuYSkodGhpcy5wcmV2aW91c09wdGlvbnMucXVlcnksaSkmJk9iamVjdCgkaS5hKSh0aGlzLnByZXZpb3VzT3B0aW9ucy52YXJpYWJsZXMsdSkpcmV0dXJuO3MmJiFvP3Mobik6bCYmbyYmbChvKX19fSx0LnByb3RvdHlwZS5yZW1vdmVRdWVyeVN1YnNjcmlwdGlvbj1mdW5jdGlvbigpe3RoaXMuY3VycmVudE9ic2VydmFibGUuc3Vic2NyaXB0aW9uJiYodGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxkZWxldGUgdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5zdWJzY3JpcHRpb24pfSx0LnByb3RvdHlwZS5vYnNlcnZhYmxlUXVlcnlGaWVsZHM9ZnVuY3Rpb24oKXtyZXR1cm57dmFyaWFibGVzOnRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkudmFyaWFibGVzLHJlZmV0Y2g6dGhpcy5vYnNSZWZldGNoLGZldGNoTW9yZTp0aGlzLm9ic0ZldGNoTW9yZSx1cGRhdGVRdWVyeTp0aGlzLm9ic1VwZGF0ZVF1ZXJ5LHN0YXJ0UG9sbGluZzp0aGlzLm9ic1N0YXJ0UG9sbGluZyxzdG9wUG9sbGluZzp0aGlzLm9ic1N0b3BQb2xsaW5nLHN1YnNjcmliZVRvTW9yZTp0aGlzLm9ic1N1YnNjcmliZVRvTW9yZX19LHR9KE9sKTtmdW5jdGlvbiBDbChlLHQsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciByPU9iamVjdChfLnVzZUNvbnRleHQpKHgoKSksbz1PYmplY3QoXy51c2VSZWR1Y2VyKSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUrMX0pLDApLGE9b1swXSxpPW9bMV0sdT10P09iamVjdChXaS5hKShPYmplY3QoV2kuYSkoe30sdCkse3F1ZXJ5OmV9KTp7cXVlcnk6ZX0scz1PYmplY3QoXy51c2VSZWYpKCk7cy5jdXJyZW50fHwocy5jdXJyZW50PW5ldyBrbCh7b3B0aW9uczp1LGNvbnRleHQ6cixmb3JjZVVwZGF0ZTppfSkpO3ZhciBsPXMuY3VycmVudDtsLnNldE9wdGlvbnModSksbC5jb250ZXh0PXI7dmFyIGMsZixkLHA9e29wdGlvbnM6T2JqZWN0KFdpLmEpKE9iamVjdChXaS5hKSh7fSx1KSx7b25FcnJvcjp2b2lkIDAsb25Db21wbGV0ZWQ6dm9pZCAwfSksY29udGV4dDpyLHRpY2s6YX0saD0oYz1mdW5jdGlvbigpe3JldHVybiBuP2wuZXhlY3V0ZUxhenkoKTpsLmV4ZWN1dGUoKX0sZj1wLChkPU9iamVjdChfLnVzZVJlZikoKSkuY3VycmVudCYmT2JqZWN0KCRpLmEpKGYsZC5jdXJyZW50LmtleSl8fChkLmN1cnJlbnQ9e2tleTpmLHZhbHVlOmMoKX0pLGQuY3VycmVudC52YWx1ZSkseT1uP2hbMV06aDtyZXR1cm4gT2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtyZXR1cm4gbC5hZnRlckV4ZWN1dGUoe2xhenk6bn0pfSksW3kubG9hZGluZyx5Lm5ldHdvcmtTdGF0dXMseS5lcnJvcix5LmRhdGFdKSxPYmplY3QoXy51c2VFZmZlY3QpKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBsLmNsZWFudXAoKX19KSxbXSksaH1mdW5jdGlvbiB4bChlLHQpe3JldHVybiBDbChlLHQsITEpfWZ1bmN0aW9uIFNsKGUsdCl7cmV0dXJuIENsKGUsdCwhMCl9dmFyIERsPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIG49dC5vcHRpb25zLHI9dC5jb250ZXh0LG89dC5yZXN1bHQsYT10LnNldFJlc3VsdCxpPWUuY2FsbCh0aGlzLG4scil8fHRoaXM7cmV0dXJuIGkucnVuTXV0YXRpb249ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pLGkub25NdXRhdGlvblN0YXJ0KCk7dmFyIHQ9aS5nZW5lcmF0ZU5ld011dGF0aW9uSWQoKTtyZXR1cm4gaS5tdXRhdGUoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkub25NdXRhdGlvbkNvbXBsZXRlZChlLHQpLGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKGkub25NdXRhdGlvbkVycm9yKGUsdCksIWkuZ2V0T3B0aW9ucygpLm9uRXJyb3IpdGhyb3cgZX0pKX0saS52ZXJpZnlEb2N1bWVudFR5cGUobi5tdXRhdGlvbixELk11dGF0aW9uKSxpLnJlc3VsdD1vLGkuc2V0UmVzdWx0PWEsaS5tb3N0UmVjZW50TXV0YXRpb25JZD0wLGl9cmV0dXJuIE9iamVjdChXaS5jKSh0LGUpLHQucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaXNNb3VudGVkPSEwLHRoaXMudmVyaWZ5RG9jdW1lbnRUeXBlKHRoaXMuZ2V0T3B0aW9ucygpLm11dGF0aW9uLEQuTXV0YXRpb24pLGUuY2xpZW50PXRoaXMucmVmcmVzaENsaWVudCgpLmNsaWVudCxbdGhpcy5ydW5NdXRhdGlvbixlXX0sdC5wcm90b3R5cGUuYWZ0ZXJFeGVjdXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNNb3VudGVkPSEwLHRoaXMudW5tb3VudC5iaW5kKHRoaXMpfSx0LnByb3RvdHlwZS5jbGVhbnVwPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5tdXRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRPcHRpb25zKCksbj10Lm11dGF0aW9uLHI9dC52YXJpYWJsZXMsbz10Lm9wdGltaXN0aWNSZXNwb25zZSxhPXQudXBkYXRlLGk9dC5jb250ZXh0LHU9dm9pZCAwPT09aT97fTppLHM9dC5hd2FpdFJlZmV0Y2hRdWVyaWVzLGw9dm9pZCAwIT09cyYmcyxjPXQuZmV0Y2hQb2xpY3ksZj1PYmplY3QoV2kuYSkoe30sZSksZD1PYmplY3QuYXNzaWduKHt9LHIsZi52YXJpYWJsZXMpO3JldHVybiBkZWxldGUgZi52YXJpYWJsZXMsdGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50Lm11dGF0ZShPYmplY3QoV2kuYSkoe211dGF0aW9uOm4sb3B0aW1pc3RpY1Jlc3BvbnNlOm8scmVmZXRjaFF1ZXJpZXM6Zi5yZWZldGNoUXVlcmllc3x8dGhpcy5nZXRPcHRpb25zKCkucmVmZXRjaFF1ZXJpZXMsYXdhaXRSZWZldGNoUXVlcmllczpsLHVwZGF0ZTphLGNvbnRleHQ6dSxmZXRjaFBvbGljeTpjLHZhcmlhYmxlczpkfSxmKSl9LHQucHJvdG90eXBlLm9uTXV0YXRpb25TdGFydD1mdW5jdGlvbigpe3RoaXMucmVzdWx0LmxvYWRpbmd8fHRoaXMuZ2V0T3B0aW9ucygpLmlnbm9yZVJlc3VsdHN8fHRoaXMudXBkYXRlUmVzdWx0KHtsb2FkaW5nOiEwLGVycm9yOnZvaWQgMCxkYXRhOnZvaWQgMCxjYWxsZWQ6ITB9KX0sdC5wcm90b3R5cGUub25NdXRhdGlvbkNvbXBsZXRlZD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0T3B0aW9ucygpLHI9bi5vbkNvbXBsZXRlZCxvPW4uaWdub3JlUmVzdWx0cyxhPWUuZGF0YSxpPWUuZXJyb3JzLHU9aSYmaS5sZW5ndGg+MD9uZXcgdnMoe2dyYXBoUUxFcnJvcnM6aX0pOnZvaWQgMDt0aGlzLmlzTW9zdFJlY2VudE11dGF0aW9uKHQpJiYhbyYmdGhpcy51cGRhdGVSZXN1bHQoe2NhbGxlZDohMCxsb2FkaW5nOiExLGRhdGE6YSxlcnJvcjp1fSksciYmcihhKX0sdC5wcm90b3R5cGUub25NdXRhdGlvbkVycm9yPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRPcHRpb25zKCkub25FcnJvcjt0aGlzLmlzTW9zdFJlY2VudE11dGF0aW9uKHQpJiZ0aGlzLnVwZGF0ZVJlc3VsdCh7bG9hZGluZzohMSxlcnJvcjplLGRhdGE6dm9pZCAwLGNhbGxlZDohMH0pLG4mJm4oZSl9LHQucHJvdG90eXBlLmdlbmVyYXRlTmV3TXV0YXRpb25JZD1mdW5jdGlvbigpe3JldHVybisrdGhpcy5tb3N0UmVjZW50TXV0YXRpb25JZH0sdC5wcm90b3R5cGUuaXNNb3N0UmVjZW50TXV0YXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubW9zdFJlY2VudE11dGF0aW9uSWQ9PT1lfSx0LnByb3RvdHlwZS51cGRhdGVSZXN1bHQ9ZnVuY3Rpb24oZSl7IXRoaXMuaXNNb3VudGVkfHx0aGlzLnByZXZpb3VzUmVzdWx0JiZPYmplY3QoJGkuYSkodGhpcy5wcmV2aW91c1Jlc3VsdCxlKXx8KHRoaXMuc2V0UmVzdWx0KGUpLHRoaXMucHJldmlvdXNSZXN1bHQ9ZSl9LHR9KE9sKTtmdW5jdGlvbiBUbChlLHQpe3ZhciBuPU9iamVjdChfLnVzZUNvbnRleHQpKHgoKSkscj1PYmplY3QoXy51c2VTdGF0ZSkoe2NhbGxlZDohMSxsb2FkaW5nOiExfSksbz1yWzBdLGE9clsxXSxpPXQ/T2JqZWN0KFdpLmEpKE9iamVjdChXaS5hKSh7fSx0KSx7bXV0YXRpb246ZX0pOnttdXRhdGlvbjplfSx1PU9iamVjdChfLnVzZVJlZikoKTt2YXIgcz0odS5jdXJyZW50fHwodS5jdXJyZW50PW5ldyBEbCh7b3B0aW9uczppLGNvbnRleHQ6bixyZXN1bHQ6byxzZXRSZXN1bHQ6YX0pKSx1LmN1cnJlbnQpO3JldHVybiBzLnNldE9wdGlvbnMoaSkscy5jb250ZXh0PW4sT2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtyZXR1cm4gcy5hZnRlckV4ZWN1dGUoKX0pKSxzLmV4ZWN1dGUobyl9dmFyIE1sPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIG49dC5vcHRpb25zLHI9dC5jb250ZXh0LG89dC5zZXRSZXN1bHQsYT1lLmNhbGwodGhpcyxuLHIpfHx0aGlzO3JldHVybiBhLmN1cnJlbnRPYnNlcnZhYmxlPXt9LGEuc2V0UmVzdWx0PW8sYS5pbml0aWFsaXplKG4pLGF9cmV0dXJuIE9iamVjdChXaS5jKSh0LGUpLHQucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oZSl7aWYoITA9PT10aGlzLmdldE9wdGlvbnMoKS5za2lwKXJldHVybiB0aGlzLmNsZWFudXAoKSx7bG9hZGluZzohMSxlcnJvcjp2b2lkIDAsZGF0YTp2b2lkIDAsdmFyaWFibGVzOnRoaXMuZ2V0T3B0aW9ucygpLnZhcmlhYmxlc307dmFyIHQ9ZTt0aGlzLnJlZnJlc2hDbGllbnQoKS5pc05ldyYmKHQ9dGhpcy5nZXRMb2FkaW5nUmVzdWx0KCkpO3ZhciBuPXRoaXMuZ2V0T3B0aW9ucygpLnNob3VsZFJlc3Vic2NyaWJlO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYobj0hIW4odGhpcy5nZXRPcHRpb25zKCkpKSwhMSE9PW4mJnRoaXMucHJldmlvdXNPcHRpb25zJiZPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzT3B0aW9ucykubGVuZ3RoPjAmJih0aGlzLnByZXZpb3VzT3B0aW9ucy5zdWJzY3JpcHRpb24hPT10aGlzLmdldE9wdGlvbnMoKS5zdWJzY3JpcHRpb258fCFPYmplY3QoJGkuYSkodGhpcy5wcmV2aW91c09wdGlvbnMudmFyaWFibGVzLHRoaXMuZ2V0T3B0aW9ucygpLnZhcmlhYmxlcyl8fHRoaXMucHJldmlvdXNPcHRpb25zLnNraXAhPT10aGlzLmdldE9wdGlvbnMoKS5za2lwKSYmKHRoaXMuY2xlYW51cCgpLHQ9dGhpcy5nZXRMb2FkaW5nUmVzdWx0KCkpLHRoaXMuaW5pdGlhbGl6ZSh0aGlzLmdldE9wdGlvbnMoKSksdGhpcy5zdGFydFN1YnNjcmlwdGlvbigpLHRoaXMucHJldmlvdXNPcHRpb25zPXRoaXMuZ2V0T3B0aW9ucygpLE9iamVjdChXaS5hKShPYmplY3QoV2kuYSkoe30sdCkse3ZhcmlhYmxlczp0aGlzLmdldE9wdGlvbnMoKS52YXJpYWJsZXN9KX0sdC5wcm90b3R5cGUuYWZ0ZXJFeGVjdXRlPWZ1bmN0aW9uKCl7dGhpcy5pc01vdW50ZWQ9ITB9LHQucHJvdG90eXBlLmNsZWFudXA9ZnVuY3Rpb24oKXt0aGlzLmVuZFN1YnNjcmlwdGlvbigpLGRlbGV0ZSB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5fSx0LnByb3RvdHlwZS5pbml0aWFsaXplPWZ1bmN0aW9uKGUpe3RoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnl8fCEwPT09dGhpcy5nZXRPcHRpb25zKCkuc2tpcHx8KHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnk9dGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50LnN1YnNjcmliZSh7cXVlcnk6ZS5zdWJzY3JpcHRpb24sdmFyaWFibGVzOmUudmFyaWFibGVzLGZldGNoUG9saWN5OmUuZmV0Y2hQb2xpY3l9KSl9LHQucHJvdG90eXBlLnN0YXJ0U3Vic2NyaXB0aW9uPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5zdWJzY3JpcHRpb258fCh0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbj10aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5LnN1YnNjcmliZSh7bmV4dDp0aGlzLnVwZGF0ZUN1cnJlbnREYXRhLmJpbmQodGhpcyksZXJyb3I6dGhpcy51cGRhdGVFcnJvci5iaW5kKHRoaXMpLGNvbXBsZXRlOnRoaXMuY29tcGxldGVTdWJzY3JpcHRpb24uYmluZCh0aGlzKX0pKX0sdC5wcm90b3R5cGUuZ2V0TG9hZGluZ1Jlc3VsdD1mdW5jdGlvbigpe3JldHVybntsb2FkaW5nOiEwLGVycm9yOnZvaWQgMCxkYXRhOnZvaWQgMH19LHQucHJvdG90eXBlLnVwZGF0ZVJlc3VsdD1mdW5jdGlvbihlKXt0aGlzLmlzTW91bnRlZCYmdGhpcy5zZXRSZXN1bHQoZSl9LHQucHJvdG90eXBlLnVwZGF0ZUN1cnJlbnREYXRhPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0T3B0aW9ucygpLm9uU3Vic2NyaXB0aW9uRGF0YTt0aGlzLnVwZGF0ZVJlc3VsdCh7ZGF0YTplLmRhdGEsbG9hZGluZzohMSxlcnJvcjp2b2lkIDB9KSx0JiZ0KHtjbGllbnQ6dGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50LHN1YnNjcmlwdGlvbkRhdGE6ZX0pfSx0LnByb3RvdHlwZS51cGRhdGVFcnJvcj1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZVJlc3VsdCh7ZXJyb3I6ZSxsb2FkaW5nOiExfSl9LHQucHJvdG90eXBlLmNvbXBsZXRlU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRPcHRpb25zKCkub25TdWJzY3JpcHRpb25Db21wbGV0ZTtlJiZlKCksdGhpcy5lbmRTdWJzY3JpcHRpb24oKX0sdC5wcm90b3R5cGUuZW5kU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5zdWJzY3JpcHRpb24mJih0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLGRlbGV0ZSB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbil9LHR9KE9sKTtmdW5jdGlvbiBQbChlLHQpe3ZhciBuPU9iamVjdChfLnVzZUNvbnRleHQpKHgoKSkscj10P09iamVjdChXaS5hKShPYmplY3QoV2kuYSkoe30sdCkse3N1YnNjcmlwdGlvbjplfSk6e3N1YnNjcmlwdGlvbjplfSxvPU9iamVjdChfLnVzZVN0YXRlKSh7bG9hZGluZzohci5za2lwLGVycm9yOnZvaWQgMCxkYXRhOnZvaWQgMH0pLGE9b1swXSxpPW9bMV0sdT1PYmplY3QoXy51c2VSZWYpKCk7dmFyIHM9KHUuY3VycmVudHx8KHUuY3VycmVudD1uZXcgTWwoe29wdGlvbnM6cixjb250ZXh0Om4sc2V0UmVzdWx0Oml9KSksdS5jdXJyZW50KTtyZXR1cm4gcy5zZXRPcHRpb25zKHIsITApLHMuY29udGV4dD1uLE9iamVjdChfLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7cmV0dXJuIHMuYWZ0ZXJFeGVjdXRlKCl9KSksT2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtyZXR1cm4gcy5jbGVhbnVwLmJpbmQocyl9KSxbXSkscy5leGVjdXRlKGEpfWZ1bmN0aW9uIE5sKCl7dmFyIGU9RS5hLnVzZUNvbnRleHQoeCgpKS5jbGllbnQ7cmV0dXJuIE9iamVjdChDLmIpKGUsMSksZX12YXIgamw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5xdWVyeVByb21pc2VzPW5ldyBNYXAsdGhpcy5xdWVyeUluZm9UcmllPW5ldyBNYXB9cmV0dXJuIGUucHJvdG90eXBlLnJlZ2lzdGVyU1NST2JzZXJ2YWJsZT1mdW5jdGlvbihlLHQpe3RoaXMubG9va3VwUXVlcnlJbmZvKHQpLm9ic2VydmFibGU9ZX0sZS5wcm90b3R5cGUuZ2V0U1NST2JzZXJ2YWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sb29rdXBRdWVyeUluZm8oZSkub2JzZXJ2YWJsZX0sZS5wcm90b3R5cGUuYWRkUXVlcnlQcm9taXNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubG9va3VwUXVlcnlJbmZvKGUuZ2V0T3B0aW9ucygpKS5zZWVuP3QoKToodGhpcy5xdWVyeVByb21pc2VzLnNldChlLmdldE9wdGlvbnMoKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChlLmZldGNoRGF0YSgpKX0pKSksbnVsbCl9LGUucHJvdG90eXBlLmhhc1Byb21pc2VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlQcm9taXNlcy5zaXplPjB9LGUucHJvdG90eXBlLmNvbnN1bWVBbmRBd2FpdFByb21pc2VzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PVtdO3JldHVybiB0aGlzLnF1ZXJ5UHJvbWlzZXMuZm9yRWFjaCgoZnVuY3Rpb24obixyKXtlLmxvb2t1cFF1ZXJ5SW5mbyhyKS5zZWVuPSEwLHQucHVzaChuKX0pKSx0aGlzLnF1ZXJ5UHJvbWlzZXMuY2xlYXIoKSxQcm9taXNlLmFsbCh0KX0sZS5wcm90b3R5cGUubG9va3VwUXVlcnlJbmZvPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucXVlcnlJbmZvVHJpZSxuPWUucXVlcnkscj1lLnZhcmlhYmxlcyxvPXQuZ2V0KG4pfHxuZXcgTWFwO3QuaGFzKG4pfHx0LnNldChuLG8pO3ZhciBhPUpTT04uc3RyaW5naWZ5KHIpLGk9by5nZXQoYSl8fHtzZWVuOiExLG9ic2VydmFibGU6bnVsbH07cmV0dXJuIG8uaGFzKGEpfHxvLnNldChhLGkpLGl9LGV9KCk7ZnVuY3Rpb24gTGwoZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPXhsKGUucXVlcnksT2JqZWN0KFdpLmUpKGUsWyJjaGlsZHJlbiIsInF1ZXJ5Il0pKTtyZXR1cm4gdCYmbj90KG4pOm51bGx9ZnVuY3Rpb24gUmwoZSl7dmFyIHQ9VGwoZS5tdXRhdGlvbixlKSxuPXRbMF0scj10WzFdO3JldHVybiBlLmNoaWxkcmVuP2UuY2hpbGRyZW4obixyKTpudWxsfWZ1bmN0aW9uIElsKGUpe3ZhciB0PVBsKGUuc3Vic2NyaXB0aW9uLGUpO3JldHVybiBlLmNoaWxkcmVuJiZ0P2UuY2hpbGRyZW4odCk6bnVsbH0oTGx8fChMbD17fSkpLnByb3BUeXBlcz17Y2xpZW50OlYuYS5vYmplY3QsY2hpbGRyZW46Vi5hLmZ1bmMuaXNSZXF1aXJlZCxmZXRjaFBvbGljeTpWLmEuc3RyaW5nLG5vdGlmeU9uTmV0d29ya1N0YXR1c0NoYW5nZTpWLmEuYm9vbCxvbkNvbXBsZXRlZDpWLmEuZnVuYyxvbkVycm9yOlYuYS5mdW5jLHBvbGxJbnRlcnZhbDpWLmEubnVtYmVyLHF1ZXJ5OlYuYS5vYmplY3QuaXNSZXF1aXJlZCx2YXJpYWJsZXM6Vi5hLm9iamVjdCxzc3I6Vi5hLmJvb2wscGFydGlhbFJlZmV0Y2g6Vi5hLmJvb2wscmV0dXJuUGFydGlhbERhdGE6Vi5hLmJvb2x9LChSbHx8KFJsPXt9KSkucHJvcFR5cGVzPXttdXRhdGlvbjpWLmEub2JqZWN0LmlzUmVxdWlyZWQsdmFyaWFibGVzOlYuYS5vYmplY3Qsb3B0aW1pc3RpY1Jlc3BvbnNlOlYuYS5vbmVPZlR5cGUoW1YuYS5vYmplY3QsVi5hLmZ1bmNdKSxyZWZldGNoUXVlcmllczpWLmEub25lT2ZUeXBlKFtWLmEuYXJyYXlPZihWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5vYmplY3RdKSksVi5hLmZ1bmNdKSxhd2FpdFJlZmV0Y2hRdWVyaWVzOlYuYS5ib29sLHVwZGF0ZTpWLmEuZnVuYyxjaGlsZHJlbjpWLmEuZnVuYy5pc1JlcXVpcmVkLG9uQ29tcGxldGVkOlYuYS5mdW5jLG9uRXJyb3I6Vi5hLmZ1bmMsZmV0Y2hQb2xpY3k6Vi5hLnN0cmluZ30sKElsfHwoSWw9e30pKS5wcm9wVHlwZXM9e3N1YnNjcmlwdGlvbjpWLmEub2JqZWN0LmlzUmVxdWlyZWQsdmFyaWFibGVzOlYuYS5vYmplY3QsY2hpbGRyZW46Vi5hLmZ1bmMsb25TdWJzY3JpcHRpb25EYXRhOlYuYS5mdW5jLG9uU3Vic2NyaXB0aW9uQ29tcGxldGU6Vi5hLmZ1bmMsc2hvdWxkUmVzdWJzY3JpYmU6Vi5hLm9uZU9mVHlwZShbVi5hLmZ1bmMsVi5hLmJvb2xdKX07dmFyIEFsPW4oIjJtcWwiKSxGbD1uLm4oQWwpLEJsPWZ1bmN0aW9uKCl7cmV0dXJue319LHpsPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2Z1bmN0aW9uIEtsKGUpe3JldHVybiBlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fCJDb21wb25lbnQifWZ1bmN0aW9uIHFsKGUsdCl7Zm9yKHZhciBuPXt9LHI9MCxvPWUudmFyaWFibGVzO3I8by5sZW5ndGg7cisrKXt2YXIgYT1vW3JdLGk9YS52YXJpYWJsZSx1PWEudHlwZTtpZihpLm5hbWUmJmkubmFtZS52YWx1ZSl7dmFyIHM9aS5uYW1lLnZhbHVlLGw9dFtzXTt2b2lkIDA9PT1sPyJOb25OdWxsVHlwZSIhPT11LmtpbmQmJihuW3NdPXZvaWQgMCk6bltzXT1sfX1yZXR1cm4gbn12YXIgVmw9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXt2YXIgbj1lLmNhbGwodGhpcyx0KXx8dGhpcztyZXR1cm4gbi53aXRoUmVmPSExLG4uc2V0V3JhcHBlZEluc3RhbmNlPW4uc2V0V3JhcHBlZEluc3RhbmNlLmJpbmQobiksbn1yZXR1cm4gT2JqZWN0KFdpLmMpKHQsZSksdC5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdChDLmIpKHRoaXMud2l0aFJlZiwyKSx0aGlzLndyYXBwZWRJbnN0YW5jZX0sdC5wcm90b3R5cGUuc2V0V3JhcHBlZEluc3RhbmNlPWZ1bmN0aW9uKGUpe3RoaXMud3JhcHBlZEluc3RhbmNlPWV9LHR9KEUuYS5Db21wb25lbnQpO2Z1bmN0aW9uIFVsKGUsdCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPWooZSkscj10Lm9wdGlvbnMsbz12b2lkIDA9PT1yP0JsOnIsYT10LnNraXAsaT12b2lkIDA9PT1hP3psOmEsdT10LmFsaWFzLHM9dm9pZCAwPT09dT8iQXBvbGxvIjp1LGw9bzsiZnVuY3Rpb24iIT10eXBlb2YgbCYmKGw9ZnVuY3Rpb24oKXtyZXR1cm4gb30pO3ZhciBjLGY9aTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZiYmKGY9ZnVuY3Rpb24oKXtyZXR1cm4gaX0pLGZ1bmN0aW9uKHIpe3ZhciBvPXMrIigiK0tsKHIpKyIpIixhPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gbnVsbCE9PWEmJmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBPYmplY3QoV2kuYykoaSxhKSxpLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGk9dGhpcy5wcm9wcyx1PWYoaSkscz11P09iamVjdC5jcmVhdGUobnVsbCk6T2JqZWN0KFdpLmEpKHt9LGwoaSkpO3JldHVybiF1JiYhcy52YXJpYWJsZXMmJm4udmFyaWFibGVzLmxlbmd0aD4wJiYocy52YXJpYWJsZXM9cWwobixpKSksRS5hLmNyZWF0ZUVsZW1lbnQoTGwsT2JqZWN0KFdpLmEpKHt9LHMse2Rpc3BsYXlOYW1lOm8sc2tpcDp1LHF1ZXJ5OmV9KSwoZnVuY3Rpb24oZSl7ZS5jbGllbnQ7dmFyIG4sbyxzPWUuZGF0YSxsPU9iamVjdChXaS5lKShlLFsiY2xpZW50IiwiZGF0YSJdKTtpZih0LndpdGhSZWYmJihhLndpdGhSZWY9ITAsaT1PYmplY3QuYXNzaWduKHt9LGkse3JlZjphLnNldFdyYXBwZWRJbnN0YW5jZX0pKSx1KXJldHVybiBFLmEuY3JlYXRlRWxlbWVudChyLE9iamVjdChXaS5hKSh7fSxpLHt9KSk7dmFyIGY9T2JqZWN0LmFzc2lnbihsLHN8fHt9KSxkPXQubmFtZXx8ImRhdGEiLHA9KChuPXt9KVtkXT1mLG4pO2lmKHQucHJvcHMpe3ZhciBoPSgobz17fSlbZF09ZixvLm93blByb3BzPWksbyk7cD1jPXQucHJvcHMoaCxjKX1yZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocixPYmplY3QoV2kuYSkoe30saSxwKSl9KSl9LGkuZGlzcGxheU5hbWU9byxpLldyYXBwZWRDb21wb25lbnQ9cixpfShWbCk7cmV0dXJuIEZsKCkoYSxyLHt9KX19ZnVuY3Rpb24gV2woZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG49aihlKSxyPXQub3B0aW9ucyxvPXZvaWQgMD09PXI/Qmw6cixhPXQuYWxpYXMsaT12b2lkIDA9PT1hPyJBcG9sbG8iOmEsdT1vO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB1JiYodT1mdW5jdGlvbigpe3JldHVybiBvfSksZnVuY3Rpb24ocil7dmFyIG89aSsiKCIrS2wocikrIikiLGE9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gaSgpe3JldHVybiBudWxsIT09YSYmYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE9iamVjdChXaS5jKShpLGEpLGkucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBvPXRoaXMucHJvcHMsYT11KG8pO3JldHVybiB0LndpdGhSZWYmJih0aGlzLndpdGhSZWY9ITAsbz1PYmplY3QuYXNzaWduKHt9LG8se3JlZjp0aGlzLnNldFdyYXBwZWRJbnN0YW5jZX0pKSwhYS52YXJpYWJsZXMmJm4udmFyaWFibGVzLmxlbmd0aD4wJiYoYS52YXJpYWJsZXM9cWwobixvKSksRS5hLmNyZWF0ZUVsZW1lbnQoUmwsT2JqZWN0KFdpLmEpKHtpZ25vcmVSZXN1bHRzOiEwfSxhLHttdXRhdGlvbjplfSksKGZ1bmN0aW9uKGUsbil7dmFyIGEsaSx1PW4uZGF0YSxzPU9iamVjdChXaS5lKShuLFsiZGF0YSJdKSxsPU9iamVjdC5hc3NpZ24ocyx1fHx7fSksYz10Lm5hbWV8fCJtdXRhdGUiLGY9dC5uYW1lP2MrIlJlc3VsdCI6InJlc3VsdCIsZD0oKGE9e30pW2NdPWUsYVtmXT1sLGEpO2lmKHQucHJvcHMpe3ZhciBwPSgoaT17fSlbY109ZSxpW2ZdPWwsaS5vd25Qcm9wcz1vLGkpO2Q9dC5wcm9wcyhwKX1yZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocixPYmplY3QoV2kuYSkoe30sbyxkKSl9KSl9LGkuZGlzcGxheU5hbWU9byxpLldyYXBwZWRDb21wb25lbnQ9cixpfShWbCk7cmV0dXJuIEZsKCkoYSxyLHt9KX19ZnVuY3Rpb24gWWwoZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG49aihlKSxyPXQub3B0aW9ucyxvPXZvaWQgMD09PXI/Qmw6cixhPXQuc2tpcCxpPXZvaWQgMD09PWE/emw6YSx1PXQuYWxpYXMscz12b2lkIDA9PT11PyJBcG9sbG8iOnUsbD10LnNob3VsZFJlc3Vic2NyaWJlLGM9bzsiZnVuY3Rpb24iIT10eXBlb2YgYyYmKGM9ZnVuY3Rpb24oKXtyZXR1cm4gb30pO3ZhciBmLGQ9aTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZCYmKGQ9ZnVuY3Rpb24oKXtyZXR1cm4gaX0pLGZ1bmN0aW9uKHIpe3ZhciBvPXMrIigiK0tsKHIpKyIpIixhPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGkoZSl7dmFyIHQ9YS5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHQuc3RhdGU9e3Jlc3Vic2NyaWJlOiExfSx0fXJldHVybiBPYmplY3QoV2kuYykoaSxhKSxpLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGF0ZT1mdW5jdGlvbihlKXtsJiZ0aGlzLnNldFN0YXRlKHtyZXN1YnNjcmliZTpsKGUsdGhpcy5wcm9wcyl9KX0saS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxpPXRoaXMucHJvcHMsdT1kKGkpLHM9dT9PYmplY3QuY3JlYXRlKG51bGwpOmMoaSk7cmV0dXJuIXUmJiFzLnZhcmlhYmxlcyYmbi52YXJpYWJsZXMubGVuZ3RoPjAmJihzLnZhcmlhYmxlcz1xbChuLGkpKSxFLmEuY3JlYXRlRWxlbWVudChJbCxPYmplY3QoV2kuYSkoe30scyx7ZGlzcGxheU5hbWU6byxza2lwOnUsc3Vic2NyaXB0aW9uOmUsc2hvdWxkUmVzdWJzY3JpYmU6dGhpcy5zdGF0ZS5yZXN1YnNjcmliZX0pLChmdW5jdGlvbihlKXt2YXIgbixvLHM9ZS5kYXRhLGw9T2JqZWN0KFdpLmUpKGUsWyJkYXRhIl0pO2lmKHQud2l0aFJlZiYmKGEud2l0aFJlZj0hMCxpPU9iamVjdC5hc3NpZ24oe30saSx7cmVmOmEuc2V0V3JhcHBlZEluc3RhbmNlfSkpLHUpcmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHIsT2JqZWN0KFdpLmEpKHt9LGkse30pKTt2YXIgYz1PYmplY3QuYXNzaWduKGwsc3x8e30pLGQ9dC5uYW1lfHwiZGF0YSIscD0oKG49e30pW2RdPWMsbik7aWYodC5wcm9wcyl7dmFyIGg9KChvPXt9KVtkXT1jLG8ub3duUHJvcHM9aSxvKTtwPWY9dC5wcm9wcyhoLGYpfXJldHVybiBFLmEuY3JlYXRlRWxlbWVudChyLE9iamVjdChXaS5hKSh7fSxpLHApKX0pKX0saS5kaXNwbGF5TmFtZT1vLGkuV3JhcHBlZENvbXBvbmVudD1yLGl9KFZsKTtyZXR1cm4gRmwoKShhLHIse30pfX1mdW5jdGlvbiBIbChlLHQpe3N3aXRjaCh2b2lkIDA9PT10JiYodD17fSksaihlKS50eXBlKXtjYXNlIEQuTXV0YXRpb246cmV0dXJuIFdsKGUsdCk7Y2FzZSBELlN1YnNjcmlwdGlvbjpyZXR1cm4gWWwoZSx0KTtjYXNlIEQuUXVlcnk6ZGVmYXVsdDpyZXR1cm4gVWwoZSx0KX19ZnVuY3Rpb24gR2woZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG49IndpdGhBcG9sbG8oIitmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiQ29tcG9uZW50In0oZSkrIikiLHI9ZnVuY3Rpb24ocil7ZnVuY3Rpb24gbyhlKXt2YXIgdD1yLmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gdC5zZXRXcmFwcGVkSW5zdGFuY2U9dC5zZXRXcmFwcGVkSW5zdGFuY2UuYmluZCh0KSx0fXJldHVybiBPYmplY3QoV2kuYykobyxyKSxvLnByb3RvdHlwZS5nZXRXcmFwcGVkSW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0KEMuYikodC53aXRoUmVmLDEpLHRoaXMud3JhcHBlZEluc3RhbmNlfSxvLnByb3RvdHlwZS5zZXRXcmFwcGVkSW5zdGFuY2U9ZnVuY3Rpb24oZSl7dGhpcy53cmFwcGVkSW5zdGFuY2U9ZX0sby5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoTSxudWxsLChmdW5jdGlvbihyKXt2YXIgbz1PYmplY3QuYXNzaWduKHt9LG4ucHJvcHMse2NsaWVudDpyLHJlZjp0LndpdGhSZWY/bi5zZXRXcmFwcGVkSW5zdGFuY2U6dm9pZCAwfSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGUsT2JqZWN0KFdpLmEpKHt9LG8pKX0pKX0sby5kaXNwbGF5TmFtZT1uLG8uV3JhcHBlZENvbXBvbmVudD1lLG99KEUuYS5Db21wb25lbnQpO3JldHVybiBGbCgpKHIsZSx7fSl9ZnVuY3Rpb24gUWwoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9e30pLEpsKHt0cmVlOmUsY29udGV4dDp0LHJlbmRlckZ1bmN0aW9uOm4oIktBeTYiKS5yZW5kZXJUb1N0YXRpY01hcmt1cH0pfWZ1bmN0aW9uIEpsKGUpe3ZhciB0PWUudHJlZSxyPWUuY29udGV4dCxvPXZvaWQgMD09PXI/e306cixhPWUucmVuZGVyRnVuY3Rpb24saT12b2lkIDA9PT1hP24oIktBeTYiKS5yZW5kZXJUb1N0YXRpY01hcmt1cDphLHU9bmV3IGpsO3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbiBlKCl7dmFyIG49eCgpLHI9aShFLmEuY3JlYXRlRWxlbWVudChuLlByb3ZpZGVyLHt2YWx1ZTpPYmplY3QoV2kuYSkoT2JqZWN0KFdpLmEpKHt9LG8pLHtyZW5kZXJQcm9taXNlczp1fSl9LHQpKTtyZXR1cm4gdS5oYXNQcm9taXNlcygpP3UuY29uc3VtZUFuZEF3YWl0UHJvbWlzZXMoKS50aGVuKGUpOnJ9KSl9ZnVuY3Rpb24gWmwoZSl7cmV0dXJuIEpsKHt0cmVlOmUscmVuZGVyRnVuY3Rpb246bigiS0F5NiIpLnJlbmRlclRvU3RyaW5nfSl9ZnVuY3Rpb24gJGwoZSx0KXtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuX19wcm90b19fPXR9dmFyIFhsPVYuYS5zaGFwZSh7dHJ5U3Vic2NyaWJlOlYuYS5mdW5jLmlzUmVxdWlyZWQsdHJ5VW5zdWJzY3JpYmU6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxub3RpZnlOZXN0ZWRTdWJzOlYuYS5mdW5jLmlzUmVxdWlyZWQsaXNTdWJzY3JpYmVkOlYuYS5mdW5jLmlzUmVxdWlyZWR9KSxlYz1WLmEuc2hhcGUoe3N1YnNjcmliZTpWLmEuZnVuYy5pc1JlcXVpcmVkLGRpc3BhdGNoOlYuYS5mdW5jLmlzUmVxdWlyZWQsZ2V0U3RhdGU6Vi5hLmZ1bmMuaXNSZXF1aXJlZH0pO2Z1bmN0aW9uIHRjKGUpe3ZhciB0O3ZvaWQgMD09PWUmJihlPSJzdG9yZSIpO3ZhciBuPWUrIlN1YnNjcmlwdGlvbiIscj1mdW5jdGlvbih0KXskbChvLHQpO3ZhciByPW8ucHJvdG90eXBlO2Z1bmN0aW9uIG8obixyKXt2YXIgbztyZXR1cm4obz10LmNhbGwodGhpcyxuLHIpfHx0aGlzKVtlXT1uLnN0b3JlLG99cmV0dXJuIHIuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9e30pW2VdPXRoaXNbZV0sdFtuXT1udWxsLHR9LHIucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIF8uQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKX0sb30oXy5Db21wb25lbnQpO3JldHVybiByLnByb3BUeXBlcz17c3RvcmU6ZWMuaXNSZXF1aXJlZCxjaGlsZHJlbjpWLmEuZWxlbWVudC5pc1JlcXVpcmVkfSxyLmNoaWxkQ29udGV4dFR5cGVzPSgodD17fSlbZV09ZWMuaXNSZXF1aXJlZCx0W25dPVhsLHQpLHJ9dmFyIG5jPXRjKCk7ZnVuY3Rpb24gcmMoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIG9jKCl7cmV0dXJuKG9jPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYWMoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99dmFyIGljPW4oIjB2eEQiKSx1Yz17bm90aWZ5OmZ1bmN0aW9uKCl7fX07dmFyIHNjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5zdG9yZT1lLHRoaXMucGFyZW50U3ViPXQsdGhpcy5vblN0YXRlQ2hhbmdlPW4sdGhpcy51bnN1YnNjcmliZT1udWxsLHRoaXMubGlzdGVuZXJzPXVjfXZhciB0PWUucHJvdG90eXBlO3JldHVybiB0LmFkZE5lc3RlZFN1Yj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cnlTdWJzY3JpYmUoKSx0aGlzLmxpc3RlbmVycy5zdWJzY3JpYmUoZSl9LHQubm90aWZ5TmVzdGVkU3Vicz1mdW5jdGlvbigpe3RoaXMubGlzdGVuZXJzLm5vdGlmeSgpfSx0LmlzU3Vic2NyaWJlZD1mdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMudW5zdWJzY3JpYmUpfSx0LnRyeVN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciBlLHQ7dGhpcy51bnN1YnNjcmliZXx8KHRoaXMudW5zdWJzY3JpYmU9dGhpcy5wYXJlbnRTdWI/dGhpcy5wYXJlbnRTdWIuYWRkTmVzdGVkU3ViKHRoaXMub25TdGF0ZUNoYW5nZSk6dGhpcy5zdG9yZS5zdWJzY3JpYmUodGhpcy5vblN0YXRlQ2hhbmdlKSx0aGlzLmxpc3RlbmVycz0oZT1bXSx0PVtdLHtjbGVhcjpmdW5jdGlvbigpe3Q9bnVsbCxlPW51bGx9LG5vdGlmeTpmdW5jdGlvbigpe2Zvcih2YXIgbj1lPXQscj0wO3I8bi5sZW5ndGg7cisrKW5bcl0oKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHN1YnNjcmliZTpmdW5jdGlvbihuKXt2YXIgcj0hMDtyZXR1cm4gdD09PWUmJih0PWUuc2xpY2UoKSksdC5wdXNoKG4pLGZ1bmN0aW9uKCl7ciYmbnVsbCE9PWUmJihyPSExLHQ9PT1lJiYodD1lLnNsaWNlKCkpLHQuc3BsaWNlKHQuaW5kZXhPZihuKSwxKSl9fX0pKX0sdC50cnlVbnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5zdWJzY3JpYmUmJih0aGlzLnVuc3Vic2NyaWJlKCksdGhpcy51bnN1YnNjcmliZT1udWxsLHRoaXMubGlzdGVuZXJzLmNsZWFyKCksdGhpcy5saXN0ZW5lcnM9dWMpfSxlfSgpLGxjPTAsY2M9e307ZnVuY3Rpb24gZmMoKXt9ZnVuY3Rpb24gZGMoZSx0KXt2YXIgbixyO3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgbz10LGE9by5nZXREaXNwbGF5TmFtZSxpPXZvaWQgMD09PWE/ZnVuY3Rpb24oZSl7cmV0dXJuIkNvbm5lY3RBZHZhbmNlZCgiK2UrIikifTphLHU9by5tZXRob2ROYW1lLHM9dm9pZCAwPT09dT8iY29ubmVjdEFkdmFuY2VkIjp1LGw9by5yZW5kZXJDb3VudFByb3AsYz12b2lkIDA9PT1sP3ZvaWQgMDpsLGY9by5zaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsZD12b2lkIDA9PT1mfHxmLHA9by5zdG9yZUtleSxoPXZvaWQgMD09PXA/InN0b3JlIjpwLHk9by53aXRoUmVmLG09dm9pZCAwIT09eSYmeSx2PWFjKG8sWyJnZXREaXNwbGF5TmFtZSIsIm1ldGhvZE5hbWUiLCJyZW5kZXJDb3VudFByb3AiLCJzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMiLCJzdG9yZUtleSIsIndpdGhSZWYiXSksZz1oKyJTdWJzY3JpcHRpb24iLGI9bGMrKyx3PSgobj17fSlbaF09ZWMsbltnXT1YbCxuKSxFPSgocj17fSlbZ109WGwscik7cmV0dXJuIGZ1bmN0aW9uKHQpe2ZyKCkoT2JqZWN0KGljLmlzVmFsaWRFbGVtZW50VHlwZSkodCksIllvdSBtdXN0IHBhc3MgYSBjb21wb25lbnQgdG8gdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5ICIrcysiLiBJbnN0ZWFkIHJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkodCkpO3ZhciBuPXQuZGlzcGxheU5hbWV8fHQubmFtZXx8IkNvbXBvbmVudCIscj1pKG4pLG89b2Moe30sdix7Z2V0RGlzcGxheU5hbWU6aSxtZXRob2ROYW1lOnMscmVuZGVyQ291bnRQcm9wOmMsc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOmQsc3RvcmVLZXk6aCx3aXRoUmVmOm0sZGlzcGxheU5hbWU6cix3cmFwcGVkQ29tcG9uZW50TmFtZTpuLFdyYXBwZWRDb21wb25lbnQ6dH0pLGE9ZnVuY3Rpb24obil7ZnVuY3Rpb24gYShlLHQpe3ZhciBvO3JldHVybihvPW4uY2FsbCh0aGlzLGUsdCl8fHRoaXMpLnZlcnNpb249YixvLnN0YXRlPXt9LG8ucmVuZGVyQ291bnQ9MCxvLnN0b3JlPWVbaF18fHRbaF0sby5wcm9wc01vZGU9Qm9vbGVhbihlW2hdKSxvLnNldFdyYXBwZWRJbnN0YW5jZT1vLnNldFdyYXBwZWRJbnN0YW5jZS5iaW5kKHJjKHJjKG8pKSksZnIoKShvLnN0b3JlLCdDb3VsZCBub3QgZmluZCAiJytoKyciIGluIGVpdGhlciB0aGUgY29udGV4dCBvciBwcm9wcyBvZiAiJytyKyciLiBFaXRoZXIgd3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYSA8UHJvdmlkZXI+LCBvciBleHBsaWNpdGx5IHBhc3MgIicraCsnIiBhcyBhIHByb3AgdG8gIicrcisnIi4nKSxvLmluaXRTZWxlY3RvcigpLG8uaW5pdFN1YnNjcmlwdGlvbigpLG99JGwoYSxuKTt2YXIgaT1hLnByb3RvdHlwZTtyZXR1cm4gaS5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMucHJvcHNNb2RlP251bGw6dGhpcy5zdWJzY3JpcHRpb247cmV0dXJuKGU9e30pW2ddPXR8fHRoaXMuY29udGV4dFtnXSxlfSxpLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7ZCYmKHRoaXMuc3Vic2NyaXB0aW9uLnRyeVN1YnNjcmliZSgpLHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpLHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlJiZ0aGlzLmZvcmNlVXBkYXRlKCkpfSxpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSl7dGhpcy5zZWxlY3Rvci5ydW4oZSl9LGkuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlfSxpLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCksdGhpcy5zdWJzY3JpcHRpb249bnVsbCx0aGlzLm5vdGlmeU5lc3RlZFN1YnM9ZmMsdGhpcy5zdG9yZT1udWxsLHRoaXMuc2VsZWN0b3IucnVuPWZjLHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlPSExfSxpLmdldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBmcigpKG0sIlRvIGFjY2VzcyB0aGUgd3JhcHBlZCBpbnN0YW5jZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB7IHdpdGhSZWY6IHRydWUgfSBpbiB0aGUgb3B0aW9ucyBhcmd1bWVudCBvZiB0aGUgIitzKyIoKSBjYWxsLiIpLHRoaXMud3JhcHBlZEluc3RhbmNlfSxpLnNldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbihlKXt0aGlzLndyYXBwZWRJbnN0YW5jZT1lfSxpLmluaXRTZWxlY3Rvcj1mdW5jdGlvbigpe3ZhciB0PWUodGhpcy5zdG9yZS5kaXNwYXRjaCxvKTt0aGlzLnNlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7dmFyIG49e3J1bjpmdW5jdGlvbihyKXt0cnl7dmFyIG89ZSh0LmdldFN0YXRlKCkscik7KG8hPT1uLnByb3BzfHxuLmVycm9yKSYmKG4uc2hvdWxkQ29tcG9uZW50VXBkYXRlPSEwLG4ucHJvcHM9byxuLmVycm9yPW51bGwpfWNhdGNoKGUpe24uc2hvdWxkQ29tcG9uZW50VXBkYXRlPSEwLG4uZXJyb3I9ZX19fTtyZXR1cm4gbn0odCx0aGlzLnN0b3JlKSx0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKX0saS5pbml0U3Vic2NyaXB0aW9uPWZ1bmN0aW9uKCl7aWYoZCl7dmFyIGU9KHRoaXMucHJvcHNNb2RlP3RoaXMucHJvcHM6dGhpcy5jb250ZXh0KVtnXTt0aGlzLnN1YnNjcmlwdGlvbj1uZXcgc2ModGhpcy5zdG9yZSxlLHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLm5vdGlmeU5lc3RlZFN1YnM9dGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vicy5iaW5kKHRoaXMuc3Vic2NyaXB0aW9uKX19LGkub25TdGF0ZUNoYW5nZT1mdW5jdGlvbigpe3RoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpLHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlPyh0aGlzLmNvbXBvbmVudERpZFVwZGF0ZT10aGlzLm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZSx0aGlzLnNldFN0YXRlKGNjKSk6dGhpcy5ub3RpZnlOZXN0ZWRTdWJzKCl9LGkubm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5jb21wb25lbnREaWRVcGRhdGU9dm9pZCAwLHRoaXMubm90aWZ5TmVzdGVkU3VicygpfSxpLmlzU3Vic2NyaWJlZD1mdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuc3Vic2NyaXB0aW9uKSYmdGhpcy5zdWJzY3JpcHRpb24uaXNTdWJzY3JpYmVkKCl9LGkuYWRkRXh0cmFQcm9wcz1mdW5jdGlvbihlKXtpZighKG18fGN8fHRoaXMucHJvcHNNb2RlJiZ0aGlzLnN1YnNjcmlwdGlvbikpcmV0dXJuIGU7dmFyIHQ9b2Moe30sZSk7cmV0dXJuIG0mJih0LnJlZj10aGlzLnNldFdyYXBwZWRJbnN0YW5jZSksYyYmKHRbY109dGhpcy5yZW5kZXJDb3VudCsrKSx0aGlzLnByb3BzTW9kZSYmdGhpcy5zdWJzY3JpcHRpb24mJih0W2ddPXRoaXMuc3Vic2NyaXB0aW9uKSx0fSxpLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2VsZWN0b3I7aWYoZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ITEsZS5lcnJvcil0aHJvdyBlLmVycm9yO3JldHVybiBPYmplY3QoXy5jcmVhdGVFbGVtZW50KSh0LHRoaXMuYWRkRXh0cmFQcm9wcyhlLnByb3BzKSl9LGF9KF8uQ29tcG9uZW50KTtyZXR1cm4gYS5XcmFwcGVkQ29tcG9uZW50PXQsYS5kaXNwbGF5TmFtZT1yLGEuY2hpbGRDb250ZXh0VHlwZXM9RSxhLmNvbnRleHRUeXBlcz13LGEucHJvcFR5cGVzPXcsRmwoKShhLHQpfX12YXIgcGM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBoYyhlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09MS90OmUhPWUmJnQhPXR9ZnVuY3Rpb24geWMoZSx0KXtpZihoYyhlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKWlmKCFwYy5jYWxsKHQsbltvXSl8fCFoYyhlW25bb11dLHRbbltvXV0pKXJldHVybiExO3JldHVybiEwfXZhciBtYz1uKCJYcU1rIiksdmM9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixnYz0obWMuYXx8dmN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkpLlN5bWJvbCxiYz1PYmplY3QucHJvdG90eXBlLHdjPWJjLmhhc093blByb3BlcnR5LF9jPWJjLnRvU3RyaW5nLEVjPWdjP2djLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgT2M9ZnVuY3Rpb24oZSl7dmFyIHQ9d2MuY2FsbChlLEVjKSxuPWVbRWNdO3RyeXtlW0VjXT12b2lkIDA7dmFyIHI9ITB9Y2F0Y2goZSl7fXZhciBvPV9jLmNhbGwoZSk7cmV0dXJuIHImJih0P2VbRWNdPW46ZGVsZXRlIGVbRWNdKSxvfSxrYz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBDYz1mdW5jdGlvbihlKXtyZXR1cm4ga2MuY2FsbChlKX0seGM9Z2M/Z2MudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBTYz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA9PT1lPyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjp4YyYmeGMgaW4gT2JqZWN0KGUpP09jKGUpOkNjKGUpfTt2YXIgRGM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodChuKSl9fShPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KTt2YXIgVGM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiJvYmplY3QiPT10eXBlb2YgZX0sTWM9RnVuY3Rpb24ucHJvdG90eXBlLFBjPU9iamVjdC5wcm90b3R5cGUsTmM9TWMudG9TdHJpbmcsamM9UGMuaGFzT3duUHJvcGVydHksTGM9TmMuY2FsbChPYmplY3QpO3ZhciBSYz1mdW5jdGlvbihlKXtpZighVGMoZSl8fCJbb2JqZWN0IE9iamVjdF0iIT1TYyhlKSlyZXR1cm4hMTt2YXIgdD1EYyhlKTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgbj1qYy5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuJiZOYy5jYWxsKG4pPT1MY30sSWM9IkBAcmVkdXgvSU5JVCI7ZnVuY3Rpb24gQWMoZSx0LG4pe3ZhciByO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uJiYobj10LHQ9dm9pZCAwKSx2b2lkIDAhPT1uKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSBlbmhhbmNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO3JldHVybiBuKEFjKShlLHQpfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdGhlIHJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTt2YXIgbz1lLGE9dCxpPVtdLHU9aSxzPSExO2Z1bmN0aW9uIGwoKXt1PT09aSYmKHU9aS5zbGljZSgpKX1mdW5jdGlvbiBjKCl7cmV0dXJuIGF9ZnVuY3Rpb24gZihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24uIik7dmFyIHQ9ITA7cmV0dXJuIGwoKSx1LnB1c2goZSksZnVuY3Rpb24oKXtpZih0KXt0PSExLGwoKTt2YXIgbj11LmluZGV4T2YoZSk7dS5zcGxpY2UobiwxKX19fWZ1bmN0aW9uIGQoZSl7aWYoIVJjKGUpKXRocm93IG5ldyBFcnJvcigiQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuIFVzZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0aW9ucy4iKTtpZih2b2lkIDA9PT1lLnR5cGUpdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1heSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgInR5cGUiIHByb3BlcnR5LiBIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7aWYocyl0aHJvdyBuZXcgRXJyb3IoIlJlZHVjZXJzIG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4iKTt0cnl7cz0hMCxhPW8oYSxlKX1maW5hbGx5e3M9ITF9Zm9yKHZhciB0PWk9dSxuPTA7bjx0Lmxlbmd0aDtuKyspeygwLHRbbl0pKCl9cmV0dXJuIGV9cmV0dXJuIGQoe3R5cGU6SWN9KSwocj17ZGlzcGF0Y2g6ZCxzdWJzY3JpYmU6ZixnZXRTdGF0ZTpjLHJlcGxhY2VSZWR1Y2VyOmZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdGhlIG5leHRSZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uIik7bz1lLGQoe3R5cGU6SWN9KX19KVtjcy5hXT1mdW5jdGlvbigpe3ZhciBlLHQ9ZjtyZXR1cm4oZT17c3Vic2NyaWJlOmZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4gb2JqZWN0LiIpO2Z1bmN0aW9uIG4oKXtlLm5leHQmJmUubmV4dChjKCkpfXJldHVybiBuKCkse3Vuc3Vic2NyaWJlOnQobil9fX0pW2NzLmFdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGV9LHJ9ZnVuY3Rpb24gRmMoZSx0KXt2YXIgbj10JiZ0LnR5cGU7cmV0dXJuIkdpdmVuIGFjdGlvbiAiKyhuJiYnIicrbi50b1N0cmluZygpKyciJ3x8ImFuIGFjdGlvbiIpKycsIHJlZHVjZXIgIicrZSsnIiByZXR1cm5lZCB1bmRlZmluZWQuIFRvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4gSWYgeW91IHdhbnQgdGhpcyByZWR1Y2VyIHRvIGhvbGQgbm8gdmFsdWUsIHlvdSBjYW4gcmV0dXJuIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuJ31mdW5jdGlvbiBCYyhlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj17fSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07MCwiZnVuY3Rpb24iPT10eXBlb2YgZVtvXSYmKG5bb109ZVtvXSl9dmFyIGE9T2JqZWN0LmtleXMobik7dmFyIGk9dm9pZCAwO3RyeXshZnVuY3Rpb24oZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49ZVt0XTtpZih2b2lkIDA9PT1uKHZvaWQgMCx7dHlwZTpJY30pKXRocm93IG5ldyBFcnJvcignUmVkdWNlciAiJyt0KyJcIiByZXR1cm5lZCB1bmRlZmluZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBJZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZSByZWR1Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBzZXQgYSB2YWx1ZSBmb3IgdGhpcyByZWR1Y2VyLCB5b3UgY2FuIHVzZSBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLiIpO2lmKHZvaWQgMD09PW4odm9pZCAwLHt0eXBlOiJAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0KCIiKS5qb2luKCIuIil9KSl0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgIicrdCsiXCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlwZS4gRG9uJ3QgdHJ5IHRvIGhhbmRsZSAiK0ljKycgb3Igb3RoZXIgYWN0aW9ucyBpbiAicmVkdXgvKiIgbmFtZXNwYWNlLiBUaGV5IGFyZSBjb25zaWRlcmVkIHByaXZhdGUuIEluc3RlYWQsIHlvdSBtdXN0IHJldHVybiB0aGUgY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFjdGlvbiB0eXBlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZCwgYnV0IGNhbiBiZSBudWxsLicpfSkpfShuKX1jYXRjaChlKXtpPWV9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzWzFdO2lmKGkpdGhyb3cgaTtmb3IodmFyIHI9ITEsbz17fSx1PTA7dTxhLmxlbmd0aDt1Kyspe3ZhciBzPWFbdV0sbD1uW3NdLGM9ZVtzXSxmPWwoYyx0KTtpZih2b2lkIDA9PT1mKXt2YXIgZD1GYyhzLHQpO3Rocm93IG5ldyBFcnJvcihkKX1vW3NdPWYscj1yfHxmIT09Y31yZXR1cm4gcj9vOmV9fWZ1bmN0aW9uIHpjKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQoZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIEtjKGUsdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIHpjKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyBuZXcgRXJyb3IoImJpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAiKyhudWxsPT09ZT8ibnVsbCI6dHlwZW9mIGUpKycuIERpZCB5b3Ugd3JpdGUgImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tIiBpbnN0ZWFkIG9mICJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tIj8nKTtmb3IodmFyIG49T2JqZWN0LmtleXMoZSkscj17fSxvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBhPW5bb10saT1lW2FdOyJmdW5jdGlvbiI9PXR5cGVvZiBpJiYoclthXT16YyhpLHQpKX1yZXR1cm4gcn1mdW5jdGlvbiBxYygpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIDA9PT10Lmxlbmd0aD9mdW5jdGlvbihlKXtyZXR1cm4gZX06MT09PXQubGVuZ3RoP3RbMF06dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUodC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fSkpfXZhciBWYz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTtmdW5jdGlvbiBVYygpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIsbyl7dmFyIGEsaT1lKG4scixvKSx1PWkuZGlzcGF0Y2gscz17Z2V0U3RhdGU6aS5nZXRTdGF0ZSxkaXNwYXRjaDpmdW5jdGlvbihlKXtyZXR1cm4gdShlKX19O3JldHVybiBhPXQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZShzKX0pKSx1PXFjLmFwcGx5KHZvaWQgMCxhKShpLmRpc3BhdGNoKSxWYyh7fSxpLHtkaXNwYXRjaDp1fSl9fX1mdW5jdGlvbiBXYyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj1lKHQsbik7ZnVuY3Rpb24gbygpe3JldHVybiByfXJldHVybiBvLmRlcGVuZHNPbk93blByb3BzPSExLG99fWZ1bmN0aW9uIFljKGUpe3JldHVybiBudWxsIT09ZS5kZXBlbmRzT25Pd25Qcm9wcyYmdm9pZCAwIT09ZS5kZXBlbmRzT25Pd25Qcm9wcz9Cb29sZWFuKGUuZGVwZW5kc09uT3duUHJvcHMpOjEhPT1lLmxlbmd0aH1mdW5jdGlvbiBIYyhlLHQpe3JldHVybiBmdW5jdGlvbih0LG4pe24uZGlzcGxheU5hbWU7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5kZXBlbmRzT25Pd25Qcm9wcz9yLm1hcFRvUHJvcHMoZSx0KTpyLm1hcFRvUHJvcHMoZSl9O3JldHVybiByLmRlcGVuZHNPbk93blByb3BzPSEwLHIubWFwVG9Qcm9wcz1mdW5jdGlvbih0LG4pe3IubWFwVG9Qcm9wcz1lLHIuZGVwZW5kc09uT3duUHJvcHM9WWMoZSk7dmFyIG89cih0LG4pO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBvJiYoci5tYXBUb1Byb3BzPW8sci5kZXBlbmRzT25Pd25Qcm9wcz1ZYyhvKSxvPXIodCxuKSksb30scn19dmFyIEdjPVtmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9IYyhlKTp2b2lkIDB9LGZ1bmN0aW9uKGUpe3JldHVybiBlP3ZvaWQgMDpXYygoZnVuY3Rpb24oZSl7cmV0dXJue2Rpc3BhdGNoOmV9fSkpfSxmdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlP1djKChmdW5jdGlvbih0KXtyZXR1cm4gS2MoZSx0KX0pKTp2b2lkIDB9XTt2YXIgUWM9W2Z1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP0hjKGUpOnZvaWQgMH0sZnVuY3Rpb24oZSl7cmV0dXJuIGU/dm9pZCAwOldjKChmdW5jdGlvbigpe3JldHVybnt9fSkpfV07ZnVuY3Rpb24gSmMoZSx0LG4pe3JldHVybiBvYyh7fSxuLGUsdCl9dmFyIFpjPVtmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtuLmRpc3BsYXlOYW1lO3ZhciByLG89bi5wdXJlLGE9bi5hcmVNZXJnZWRQcm9wc0VxdWFsLGk9ITE7cmV0dXJuIGZ1bmN0aW9uKHQsbix1KXt2YXIgcz1lKHQsbix1KTtyZXR1cm4gaT9vJiZhKHMscil8fChyPXMpOihpPSEwLHI9cykscn19fShlKTp2b2lkIDB9LGZ1bmN0aW9uKGUpe3JldHVybiBlP3ZvaWQgMDpmdW5jdGlvbigpe3JldHVybiBKY319XTtmdW5jdGlvbiAkYyhlLHQsbixyKXtyZXR1cm4gZnVuY3Rpb24obyxhKXtyZXR1cm4gbihlKG8sYSksdChyLGEpLGEpfX1mdW5jdGlvbiBYYyhlLHQsbixyLG8pe3ZhciBhLGksdSxzLGwsYz1vLmFyZVN0YXRlc0VxdWFsLGY9by5hcmVPd25Qcm9wc0VxdWFsLGQ9by5hcmVTdGF0ZVByb3BzRXF1YWwscD0hMTtmdW5jdGlvbiBoKG8scCl7dmFyIGgseSxtPSFmKHAsaSksdj0hYyhvLGEpO3JldHVybiBhPW8saT1wLG0mJnY/KHU9ZShhLGkpLHQuZGVwZW5kc09uT3duUHJvcHMmJihzPXQocixpKSksbD1uKHUscyxpKSk6bT8oZS5kZXBlbmRzT25Pd25Qcm9wcyYmKHU9ZShhLGkpKSx0LmRlcGVuZHNPbk93blByb3BzJiYocz10KHIsaSkpLGw9bih1LHMsaSkpOnY/KGg9ZShhLGkpLHk9IWQoaCx1KSx1PWgseSYmKGw9bih1LHMsaSkpLGwpOmx9cmV0dXJuIGZ1bmN0aW9uKG8sYyl7cmV0dXJuIHA/aChvLGMpOih1PWUoYT1vLGk9Yykscz10KHIsaSksbD1uKHUscyxpKSxwPSEwLGwpfX1mdW5jdGlvbiBlZihlLHQpe3ZhciBuPXQuaW5pdE1hcFN0YXRlVG9Qcm9wcyxyPXQuaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxvPXQuaW5pdE1lcmdlUHJvcHMsYT1hYyh0LFsiaW5pdE1hcFN0YXRlVG9Qcm9wcyIsImluaXRNYXBEaXNwYXRjaFRvUHJvcHMiLCJpbml0TWVyZ2VQcm9wcyJdKSxpPW4oZSxhKSx1PXIoZSxhKSxzPW8oZSxhKTtyZXR1cm4oYS5wdXJlP1hjOiRjKShpLHUscyxlLGEpfWZ1bmN0aW9uIHRmKGUsdCxuKXtmb3IodmFyIHI9dC5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIG89dFtyXShlKTtpZihvKXJldHVybiBvfXJldHVybiBmdW5jdGlvbih0LHIpe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YWx1ZSBvZiB0eXBlICIrdHlwZW9mIGUrIiBmb3IgIituKyIgYXJndW1lbnQgd2hlbiBjb25uZWN0aW5nIGNvbXBvbmVudCAiK3Iud3JhcHBlZENvbXBvbmVudE5hbWUrIi4iKX19ZnVuY3Rpb24gbmYoZSx0KXtyZXR1cm4gZT09PXR9dmFyIHJmLG9mLGFmLHVmLHNmLGxmLGNmLGZmLGRmLHBmLGhmLHlmLG1mPShhZj0ob2Y9dm9pZCAwPT09cmY/e306cmYpLmNvbm5lY3RIT0MsdWY9dm9pZCAwPT09YWY/ZGM6YWYsc2Y9b2YubWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLGxmPXZvaWQgMD09PXNmP1FjOnNmLGNmPW9mLm1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcyxmZj12b2lkIDA9PT1jZj9HYzpjZixkZj1vZi5tZXJnZVByb3BzRmFjdG9yaWVzLHBmPXZvaWQgMD09PWRmP1pjOmRmLGhmPW9mLnNlbGVjdG9yRmFjdG9yeSx5Zj12b2lkIDA9PT1oZj9lZjpoZixmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG89cixhPW8ucHVyZSxpPXZvaWQgMD09PWF8fGEsdT1vLmFyZVN0YXRlc0VxdWFsLHM9dm9pZCAwPT09dT9uZjp1LGw9by5hcmVPd25Qcm9wc0VxdWFsLGM9dm9pZCAwPT09bD95YzpsLGY9by5hcmVTdGF0ZVByb3BzRXF1YWwsZD12b2lkIDA9PT1mP3ljOmYscD1vLmFyZU1lcmdlZFByb3BzRXF1YWwsaD12b2lkIDA9PT1wP3ljOnAseT1hYyhvLFsicHVyZSIsImFyZVN0YXRlc0VxdWFsIiwiYXJlT3duUHJvcHNFcXVhbCIsImFyZVN0YXRlUHJvcHNFcXVhbCIsImFyZU1lcmdlZFByb3BzRXF1YWwiXSksbT10ZihlLGxmLCJtYXBTdGF0ZVRvUHJvcHMiKSx2PXRmKHQsZmYsIm1hcERpc3BhdGNoVG9Qcm9wcyIpLGc9dGYobixwZiwibWVyZ2VQcm9wcyIpO3JldHVybiB1Zih5ZixvYyh7bWV0aG9kTmFtZToiY29ubmVjdCIsZ2V0RGlzcGxheU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIkNvbm5lY3QoIitlKyIpIn0sc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOkJvb2xlYW4oZSksaW5pdE1hcFN0YXRlVG9Qcm9wczptLGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6dixpbml0TWVyZ2VQcm9wczpnLHB1cmU6aSxhcmVTdGF0ZXNFcXVhbDpzLGFyZU93blByb3BzRXF1YWw6YyxhcmVTdGF0ZVByb3BzRXF1YWw6ZCxhcmVNZXJnZWRQcm9wc0VxdWFsOmh9LHkpKX0pLHZmPW4oMCksZ2Y9bi5uKHZmKSxiZj1uKCIyVUQ0Iiksd2Y9bi5uKGJmKSxfZj1uKCI3SW5iIiksRWY9bi5uKF9mKTtmdW5jdGlvbiBPZihlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGU/KHQ9ZSxPYmplY3Qua2V5cyh0KS5zb3J0KCkubWFwKChmdW5jdGlvbihlKXt2YXIgbjtyZXR1cm4obj17fSlbZV09dFtlXSxufSkpKTplO3ZhciB0fSkpKX12YXIga2Y9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9e30pLGZ1bmN0aW9uKCl7Zm9yKHZhciBuLHI9W10sbz0wO288YXJndW1lbnRzLmxlbmd0aDtvKyspcltvXT1hcmd1bWVudHNbb107dmFyIGE9T2YociksaT1hJiZ0W2FdO3JldHVybiBpfHwoaT1uZXcoKG49ZSkuYmluZC5hcHBseShuLFt2b2lkIDBdLmNvbmNhdChyKSkpLGEmJih0W2FdPWkpKSxpfX0sQ2Y9e2xvY2FsZToiZW4iLHBsdXJhbFJ1bGVGdW5jdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPVN0cmluZyhlKS5zcGxpdCgiLiIpLHI9IW5bMV0sbz1OdW1iZXIoblswXSk9PWUsYT1vJiZuWzBdLnNsaWNlKC0xKSxpPW8mJm5bMF0uc2xpY2UoLTIpO3JldHVybiB0PzE9PWEmJjExIT1pPyJvbmUiOjI9PWEmJjEyIT1pPyJ0d28iOjM9PWEmJjEzIT1pPyJmZXciOiJvdGhlciI6MT09ZSYmcj8ib25lIjoib3RoZXIifSxmaWVsZHM6e3llYXI6e2Rpc3BsYXlOYW1lOiJ5ZWFyIixyZWxhdGl2ZTp7MDoidGhpcyB5ZWFyIiwxOiJuZXh0IHllYXIiLCItMSI6Imxhc3QgeWVhciJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSB5ZWFyIixvdGhlcjoiaW4gezB9IHllYXJzIn0scGFzdDp7b25lOiJ7MH0geWVhciBhZ28iLG90aGVyOiJ7MH0geWVhcnMgYWdvIn19fSwieWVhci1zaG9ydCI6e2Rpc3BsYXlOYW1lOiJ5ci4iLHJlbGF0aXZlOnswOiJ0aGlzIHlyLiIsMToibmV4dCB5ci4iLCItMSI6Imxhc3QgeXIuIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IHlyLiIsb3RoZXI6ImluIHswfSB5ci4ifSxwYXN0OntvbmU6InswfSB5ci4gYWdvIixvdGhlcjoiezB9IHlyLiBhZ28ifX19LG1vbnRoOntkaXNwbGF5TmFtZToibW9udGgiLHJlbGF0aXZlOnswOiJ0aGlzIG1vbnRoIiwxOiJuZXh0IG1vbnRoIiwiLTEiOiJsYXN0IG1vbnRoIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IG1vbnRoIixvdGhlcjoiaW4gezB9IG1vbnRocyJ9LHBhc3Q6e29uZToiezB9IG1vbnRoIGFnbyIsb3RoZXI6InswfSBtb250aHMgYWdvIn19fSwibW9udGgtc2hvcnQiOntkaXNwbGF5TmFtZToibW8uIixyZWxhdGl2ZTp7MDoidGhpcyBtby4iLDE6Im5leHQgbW8uIiwiLTEiOiJsYXN0IG1vLiJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSBtby4iLG90aGVyOiJpbiB7MH0gbW8uIn0scGFzdDp7b25lOiJ7MH0gbW8uIGFnbyIsb3RoZXI6InswfSBtby4gYWdvIn19fSxkYXk6e2Rpc3BsYXlOYW1lOiJkYXkiLHJlbGF0aXZlOnswOiJ0b2RheSIsMToidG9tb3Jyb3ciLCItMSI6Inllc3RlcmRheSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSBkYXkiLG90aGVyOiJpbiB7MH0gZGF5cyJ9LHBhc3Q6e29uZToiezB9IGRheSBhZ28iLG90aGVyOiJ7MH0gZGF5cyBhZ28ifX19LCJkYXktc2hvcnQiOntkaXNwbGF5TmFtZToiZGF5IixyZWxhdGl2ZTp7MDoidG9kYXkiLDE6InRvbW9ycm93IiwiLTEiOiJ5ZXN0ZXJkYXkifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gZGF5IixvdGhlcjoiaW4gezB9IGRheXMifSxwYXN0OntvbmU6InswfSBkYXkgYWdvIixvdGhlcjoiezB9IGRheXMgYWdvIn19fSxob3VyOntkaXNwbGF5TmFtZToiaG91ciIscmVsYXRpdmU6ezA6InRoaXMgaG91ciJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSBob3VyIixvdGhlcjoiaW4gezB9IGhvdXJzIn0scGFzdDp7b25lOiJ7MH0gaG91ciBhZ28iLG90aGVyOiJ7MH0gaG91cnMgYWdvIn19fSwiaG91ci1zaG9ydCI6e2Rpc3BsYXlOYW1lOiJoci4iLHJlbGF0aXZlOnswOiJ0aGlzIGhvdXIifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gaHIuIixvdGhlcjoiaW4gezB9IGhyLiJ9LHBhc3Q6e29uZToiezB9IGhyLiBhZ28iLG90aGVyOiJ7MH0gaHIuIGFnbyJ9fX0sbWludXRlOntkaXNwbGF5TmFtZToibWludXRlIixyZWxhdGl2ZTp7MDoidGhpcyBtaW51dGUifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gbWludXRlIixvdGhlcjoiaW4gezB9IG1pbnV0ZXMifSxwYXN0OntvbmU6InswfSBtaW51dGUgYWdvIixvdGhlcjoiezB9IG1pbnV0ZXMgYWdvIn19fSwibWludXRlLXNob3J0Ijp7ZGlzcGxheU5hbWU6Im1pbi4iLHJlbGF0aXZlOnswOiJ0aGlzIG1pbnV0ZSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSBtaW4uIixvdGhlcjoiaW4gezB9IG1pbi4ifSxwYXN0OntvbmU6InswfSBtaW4uIGFnbyIsb3RoZXI6InswfSBtaW4uIGFnbyJ9fX0sc2Vjb25kOntkaXNwbGF5TmFtZToic2Vjb25kIixyZWxhdGl2ZTp7MDoibm93In0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IHNlY29uZCIsb3RoZXI6ImluIHswfSBzZWNvbmRzIn0scGFzdDp7b25lOiJ7MH0gc2Vjb25kIGFnbyIsb3RoZXI6InswfSBzZWNvbmRzIGFnbyJ9fX0sInNlY29uZC1zaG9ydCI6e2Rpc3BsYXlOYW1lOiJzZWMuIixyZWxhdGl2ZTp7MDoibm93In0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IHNlYy4iLG90aGVyOiJpbiB7MH0gc2VjLiJ9LHBhc3Q6e29uZToiezB9IHNlYy4gYWdvIixvdGhlcjoiezB9IHNlYy4gYWdvIn19fX19O2Z1bmN0aW9uIHhmKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLHQ9QXJyYXkuaXNBcnJheShlKT9lOltlXTt0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2UmJmUubG9jYWxlJiYod2YuYS5fX2FkZExvY2FsZURhdGEoZSksRWYuYS5fX2FkZExvY2FsZURhdGEoZSkpfSkpfWZ1bmN0aW9uIFNmKGUpe3ZhciB0PWUmJmUudG9Mb3dlckNhc2UoKTtyZXR1cm4hKCF3Zi5hLl9fbG9jYWxlRGF0YV9fW3RdfHwhRWYuYS5fX2xvY2FsZURhdGFfX1t0XSl9dmFyIERmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxUZj0oZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMudmFsdWU9ZX1mdW5jdGlvbiB0KHQpe3ZhciBuLHI7ZnVuY3Rpb24gbyhuLHIpe3RyeXt2YXIgaT10W25dKHIpLHU9aS52YWx1ZTt1IGluc3RhbmNlb2YgZT9Qcm9taXNlLnJlc29sdmUodS52YWx1ZSkudGhlbigoZnVuY3Rpb24oZSl7bygibmV4dCIsZSl9KSwoZnVuY3Rpb24oZSl7bygidGhyb3ciLGUpfSkpOmEoaS5kb25lPyJyZXR1cm4iOiJub3JtYWwiLGkudmFsdWUpfWNhdGNoKGUpe2EoInRocm93IixlKX19ZnVuY3Rpb24gYShlLHQpe3N3aXRjaChlKXtjYXNlInJldHVybiI6bi5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITB9KTticmVhaztjYXNlInRocm93IjpuLnJlamVjdCh0KTticmVhaztkZWZhdWx0Om4ucmVzb2x2ZSh7dmFsdWU6dCxkb25lOiExfSl9KG49bi5uZXh0KT9vKG4ua2V5LG4uYXJnKTpyPW51bGx9dGhpcy5faW52b2tlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLGkpe3ZhciB1PXtrZXk6ZSxhcmc6dCxyZXNvbHZlOmEscmVqZWN0OmksbmV4dDpudWxsfTtyP3I9ci5uZXh0PXU6KG49cj11LG8oZSx0KSl9KSl9LCJmdW5jdGlvbiIhPXR5cGVvZiB0LnJldHVybiYmKHRoaXMucmV0dXJuPXZvaWQgMCl9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmFzeW5jSXRlcmF0b3ImJih0LnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSgibmV4dCIsZSl9LHQucHJvdG90eXBlLnRocm93PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnZva2UoInRocm93IixlKX0sdC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnZva2UoInJldHVybiIsZSl9fSgpLGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSxNZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxQZj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9LE5mPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGpmPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0sTGY9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0sUmY9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1BcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufXJldHVybiBBcnJheS5mcm9tKGUpfSxJZj1WLmEuYm9vbCxBZj1WLmEubnVtYmVyLEZmPVYuYS5zdHJpbmcsQmY9Vi5hLmZ1bmMsemY9Vi5hLm9iamVjdCxLZj1WLmEub25lT2YscWY9Vi5hLnNoYXBlLFZmPVYuYS5hbnksVWY9Vi5hLm9uZU9mVHlwZSxXZj1LZihbImJlc3QgZml0IiwibG9va3VwIl0pLFlmPUtmKFsibmFycm93Iiwic2hvcnQiLCJsb25nIl0pLEhmPUtmKFsibnVtZXJpYyIsIjItZGlnaXQiXSksR2Y9QmYuaXNSZXF1aXJlZCxRZj17bG9jYWxlOkZmLHRpbWVab25lOkZmLGZvcm1hdHM6emYsbWVzc2FnZXM6emYsdGV4dENvbXBvbmVudDpWZixkZWZhdWx0TG9jYWxlOkZmLGRlZmF1bHRGb3JtYXRzOnpmLG9uRXJyb3I6QmZ9LEpmPXtmb3JtYXREYXRlOkdmLGZvcm1hdFRpbWU6R2YsZm9ybWF0UmVsYXRpdmU6R2YsZm9ybWF0TnVtYmVyOkdmLGZvcm1hdFBsdXJhbDpHZixmb3JtYXRNZXNzYWdlOkdmLGZvcm1hdEhUTUxNZXNzYWdlOkdmfSxaZj1xZihOZih7fSxRZixKZix7Zm9ybWF0dGVyczp6Zixub3c6R2Z9KSksJGY9KEZmLmlzUmVxdWlyZWQsVWYoW0ZmLHpmXSkse2xvY2FsZU1hdGNoZXI6V2YsZm9ybWF0TWF0Y2hlcjpLZihbImJhc2ljIiwiYmVzdCBmaXQiXSksdGltZVpvbmU6RmYsaG91cjEyOklmLHdlZWtkYXk6WWYsZXJhOllmLHllYXI6SGYsbW9udGg6S2YoWyJudW1lcmljIiwiMi1kaWdpdCIsIm5hcnJvdyIsInNob3J0IiwibG9uZyJdKSxkYXk6SGYsaG91cjpIZixtaW51dGU6SGYsc2Vjb25kOkhmLHRpbWVab25lTmFtZTpLZihbInNob3J0IiwibG9uZyJdKX0pLFhmPXtsb2NhbGVNYXRjaGVyOldmLHN0eWxlOktmKFsiZGVjaW1hbCIsImN1cnJlbmN5IiwicGVyY2VudCJdKSxjdXJyZW5jeTpGZixjdXJyZW5jeURpc3BsYXk6S2YoWyJzeW1ib2wiLCJjb2RlIiwibmFtZSJdKSx1c2VHcm91cGluZzpJZixtaW5pbXVtSW50ZWdlckRpZ2l0czpBZixtaW5pbXVtRnJhY3Rpb25EaWdpdHM6QWYsbWF4aW11bUZyYWN0aW9uRGlnaXRzOkFmLG1pbmltdW1TaWduaWZpY2FudERpZ2l0czpBZixtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6QWZ9LGVkPXtzdHlsZTpLZihbImJlc3QgZml0IiwibnVtZXJpYyJdKSx1bml0czpLZihbInNlY29uZCIsIm1pbnV0ZSIsImhvdXIiLCJkYXkiLCJtb250aCIsInllYXIiLCJzZWNvbmQtc2hvcnQiLCJtaW51dGUtc2hvcnQiLCJob3VyLXNob3J0IiwiZGF5LXNob3J0IiwibW9udGgtc2hvcnQiLCJ5ZWFyLXNob3J0Il0pfSx0ZD17c3R5bGU6S2YoWyJjYXJkaW5hbCIsIm9yZGluYWwiXSl9LG5kPU9iamVjdC5rZXlzKFFmKSxyZD17IiYiOiImYW1wOyIsIj4iOiImZ3Q7IiwiPCI6IiZsdDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyJ9LG9kPS9bJj48IiddL2c7ZnVuY3Rpb24gYWQoZSl7cmV0dXJuKCIiK2UpLnJlcGxhY2Uob2QsKGZ1bmN0aW9uKGUpe3JldHVybiByZFtlXX0pKX1mdW5jdGlvbiBpZChlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkocik/dFtyXT1lW3JdOm4uaGFzT3duUHJvcGVydHkocikmJih0W3JdPW5bcl0pLHR9KSx7fSl9ZnVuY3Rpb24gdWQoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLmludGw7ZnIoKSh0LCJbUmVhY3QgSW50bF0gQ291bGQgbm90IGZpbmQgcmVxdWlyZWQgYGludGxgIG9iamVjdC4gPEludGxQcm92aWRlcj4gbmVlZHMgdG8gZXhpc3QgaW4gdGhlIGNvbXBvbmVudCBhbmNlc3RyeS4iKX1mdW5jdGlvbiBzZChlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKCJvYmplY3QiIT09KHZvaWQgMD09PWU/InVuZGVmaW5lZCI6RGYoZSkpfHxudWxsPT09ZXx8Im9iamVjdCIhPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpEZih0KSl8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5iaW5kKHQpLGE9MDthPG4ubGVuZ3RoO2ErKylpZighbyhuW2FdKXx8ZVtuW2FdXSE9PXRbblthXV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbGQoZSx0LG4pe3ZhciByPWUucHJvcHMsbz1lLnN0YXRlLGE9ZS5jb250ZXh0LGk9dm9pZCAwPT09YT97fTphLHU9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LHM9aS5pbnRsLGw9dm9pZCAwPT09cz97fTpzLGM9dS5pbnRsLGY9dm9pZCAwPT09Yz97fTpjO3JldHVybiFzZCh0LHIpfHwhc2QobixvKXx8IShmPT09bHx8c2QoaWQoZixuZCksaWQobCxuZCkpKX1mdW5jdGlvbiBjZChlLHQpe3JldHVybiJbUmVhY3QgSW50bF0gIitlKyh0PyJcbiIrdDoiIil9ZnVuY3Rpb24gZmQoZSl7MH1mdW5jdGlvbiBkZChlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiQ29tcG9uZW50In1mdW5jdGlvbiBwZChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj10LmludGxQcm9wTmFtZSxyPXZvaWQgMD09PW4/ImludGwiOm4sbz10LndpdGhSZWYsYT12b2lkIDAhPT1vJiZvLGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLHQpe1RmKHRoaXMsbik7dmFyIHI9TGYodGhpcywobi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKSkuY2FsbCh0aGlzLGUsdCkpO3JldHVybiB1ZCh0KSxyfXJldHVybiBqZihuLHQpLE1mKG4sW3trZXk6ImdldFdyYXBwZWRJbnN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnIoKShhLCJbUmVhY3QgSW50bF0gVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB0aGUgYHt3aXRoUmVmOiB0cnVlfWAgb3B0aW9uIG11c3QgYmUgc2V0IHdoZW4gY2FsbGluZzogYGluamVjdEludGwoKWAiKSx0aGlzLl93cmFwcGVkSW5zdGFuY2V9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoZSxOZih7fSx0aGlzLnByb3BzLFBmKHt9LHIsdGhpcy5jb250ZXh0LmludGwpLHtyZWY6YT9mdW5jdGlvbihlKXtyZXR1cm4gdC5fd3JhcHBlZEluc3RhbmNlPWV9Om51bGx9KSl9fV0pLG59KF8uQ29tcG9uZW50KTtyZXR1cm4gaS5kaXNwbGF5TmFtZT0iSW5qZWN0SW50bCgiK2RkKGUpKyIpIixpLmNvbnRleHRUeXBlcz17aW50bDpaZn0saS5XcmFwcGVkQ29tcG9uZW50PWUsRmwoKShpLGUpfWZ1bmN0aW9uIGhkKGUpe3JldHVybiBlfWZ1bmN0aW9uIHlkKGUpe3JldHVybiB3Zi5hLnByb3RvdHlwZS5fcmVzb2x2ZUxvY2FsZShlKX1mdW5jdGlvbiBtZChlKXtyZXR1cm4gd2YuYS5wcm90b3R5cGUuX2ZpbmRQbHVyYWxSdWxlRnVuY3Rpb24oZSl9dmFyIHZkPWZ1bmN0aW9uIGUodCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O1RmKHRoaXMsZSk7dmFyIHI9Im9yZGluYWwiPT09bi5zdHlsZSxvPW1kKHlkKHQpKTt0aGlzLmZvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gbyhlLHIpfX0sZ2Q9T2JqZWN0LmtleXMoJGYpLGJkPU9iamVjdC5rZXlzKFhmKSx3ZD1PYmplY3Qua2V5cyhlZCksX2Q9T2JqZWN0LmtleXModGQpLEVkPXtzZWNvbmQ6NjAsbWludXRlOjYwLGhvdXI6MjQsZGF5OjMwLG1vbnRoOjEyfTtmdW5jdGlvbiBPZChlKXt2YXIgdD1FZi5hLnRocmVzaG9sZHM7dC5zZWNvbmQ9ZS5zZWNvbmQsdC5taW51dGU9ZS5taW51dGUsdC5ob3VyPWUuaG91cix0LmRheT1lLmRheSx0Lm1vbnRoPWUubW9udGgsdFsic2Vjb25kLXNob3J0Il09ZVsic2Vjb25kLXNob3J0Il0sdFsibWludXRlLXNob3J0Il09ZVsibWludXRlLXNob3J0Il0sdFsiaG91ci1zaG9ydCJdPWVbImhvdXItc2hvcnQiXSx0WyJkYXktc2hvcnQiXT1lWyJkYXktc2hvcnQiXSx0WyJtb250aC1zaG9ydCJdPWVbIm1vbnRoLXNob3J0Il19ZnVuY3Rpb24ga2QoZSx0LG4scil7dmFyIG89ZSYmZVt0XSYmZVt0XVtuXTtpZihvKXJldHVybiBvO3IoY2QoIk5vICIrdCsiIGZvcm1hdCBuYW1lZDogIituKSl9ZnVuY3Rpb24gQ2QoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30scj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e30sbz1lLmxvY2FsZSxhPWUuZm9ybWF0cyxpPWUubWVzc2FnZXMsdT1lLmRlZmF1bHRMb2NhbGUscz1lLmRlZmF1bHRGb3JtYXRzLGw9bi5pZCxjPW4uZGVmYXVsdE1lc3NhZ2U7ZnIoKShsLCJbUmVhY3QgSW50bF0gQW4gYGlkYCBtdXN0IGJlIHByb3ZpZGVkIHRvIGZvcm1hdCBhIG1lc3NhZ2UuIik7dmFyIGY9aSYmaVtsXSxkPU9iamVjdC5rZXlzKHIpLmxlbmd0aD4wO2lmKCFkKXJldHVybiBmfHxjfHxsO3ZhciBwPXZvaWQgMCxoPWUub25FcnJvcnx8ZmQ7aWYoZil0cnl7dmFyIHk9dC5nZXRNZXNzYWdlRm9ybWF0KGYsbyxhKTtwPXkuZm9ybWF0KHIpfWNhdGNoKGUpe2goY2QoJ0Vycm9yIGZvcm1hdHRpbmcgbWVzc2FnZTogIicrbCsnIiBmb3IgbG9jYWxlOiAiJytvKyciJysoYz8iLCB1c2luZyBkZWZhdWx0IG1lc3NhZ2UgYXMgZmFsbGJhY2suIjoiIiksZSkpfWVsc2UoIWN8fG8mJm8udG9Mb3dlckNhc2UoKSE9PXUudG9Mb3dlckNhc2UoKSkmJmgoY2QoJ01pc3NpbmcgbWVzc2FnZTogIicrbCsnIiBmb3IgbG9jYWxlOiAiJytvKyciJysoYz8iLCB1c2luZyBkZWZhdWx0IG1lc3NhZ2UgYXMgZmFsbGJhY2suIjoiIikpKTtpZighcCYmYyl0cnl7dmFyIG09dC5nZXRNZXNzYWdlRm9ybWF0KGMsdSxzKTtwPW0uZm9ybWF0KHIpfWNhdGNoKGUpe2goY2QoJ0Vycm9yIGZvcm1hdHRpbmcgdGhlIGRlZmF1bHQgbWVzc2FnZSBmb3I6ICInK2wrJyInLGUpKX1yZXR1cm4gcHx8aChjZCgnQ2Fubm90IGZvcm1hdCBtZXNzYWdlOiAiJytsKyciLCB1c2luZyBtZXNzYWdlICcrKGZ8fGM/InNvdXJjZSI6ImlkIikrIiBhcyBmYWxsYmFjay4iKSkscHx8Znx8Y3x8bH12YXIgeGQ9T2JqZWN0LmZyZWV6ZSh7Zm9ybWF0RGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LG89ZS5sb2NhbGUsYT1lLmZvcm1hdHMsaT1lLnRpbWVab25lLHU9ci5mb3JtYXQscz1lLm9uRXJyb3J8fGZkLGw9bmV3IERhdGUobiksYz1OZih7fSxpJiZ7dGltZVpvbmU6aX0sdSYma2QoYSwiZGF0ZSIsdSxzKSksZj1pZChyLGdkLGMpO3RyeXtyZXR1cm4gdC5nZXREYXRlVGltZUZvcm1hdChvLGYpLmZvcm1hdChsKX1jYXRjaChlKXtzKGNkKCJFcnJvciBmb3JtYXR0aW5nIGRhdGUuIixlKSl9cmV0dXJuIFN0cmluZyhsKX0sZm9ybWF0VGltZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LG89ZS5sb2NhbGUsYT1lLmZvcm1hdHMsaT1lLnRpbWVab25lLHU9ci5mb3JtYXQscz1lLm9uRXJyb3J8fGZkLGw9bmV3IERhdGUobiksYz1OZih7fSxpJiZ7dGltZVpvbmU6aX0sdSYma2QoYSwidGltZSIsdSxzKSksZj1pZChyLGdkLGMpO2YuaG91cnx8Zi5taW51dGV8fGYuc2Vjb25kfHwoZj1OZih7fSxmLHtob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMifSkpO3RyeXtyZXR1cm4gdC5nZXREYXRlVGltZUZvcm1hdChvLGYpLmZvcm1hdChsKX1jYXRjaChlKXtzKGNkKCJFcnJvciBmb3JtYXR0aW5nIHRpbWUuIixlKSl9cmV0dXJuIFN0cmluZyhsKX0sZm9ybWF0UmVsYXRpdmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fSxvPWUubG9jYWxlLGE9ZS5mb3JtYXRzLGk9ci5mb3JtYXQsdT1lLm9uRXJyb3J8fGZkLHM9bmV3IERhdGUobiksbD1uZXcgRGF0ZShyLm5vdyksYz1pJiZrZChhLCJyZWxhdGl2ZSIsaSx1KSxmPWlkKHIsd2QsYyksZD1OZih7fSxFZi5hLnRocmVzaG9sZHMpO09kKEVkKTt0cnl7cmV0dXJuIHQuZ2V0UmVsYXRpdmVGb3JtYXQobyxmKS5mb3JtYXQocyx7bm93OmlzRmluaXRlKGwpP2w6dC5ub3coKX0pfWNhdGNoKGUpe3UoY2QoIkVycm9yIGZvcm1hdHRpbmcgcmVsYXRpdmUgdGltZS4iLGUpKX1maW5hbGx5e09kKGQpfXJldHVybiBTdHJpbmcocyl9LGZvcm1hdE51bWJlcjpmdW5jdGlvbihlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LG89ZS5sb2NhbGUsYT1lLmZvcm1hdHMsaT1yLmZvcm1hdCx1PWUub25FcnJvcnx8ZmQscz1pJiZrZChhLCJudW1iZXIiLGksdSksbD1pZChyLGJkLHMpO3RyeXtyZXR1cm4gdC5nZXROdW1iZXJGb3JtYXQobyxsKS5mb3JtYXQobil9Y2F0Y2goZSl7dShjZCgiRXJyb3IgZm9ybWF0dGluZyBudW1iZXIuIixlKSl9cmV0dXJuIFN0cmluZyhuKX0sZm9ybWF0UGx1cmFsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e30sbz1lLmxvY2FsZSxhPWlkKHIsX2QpLGk9ZS5vbkVycm9yfHxmZDt0cnl7cmV0dXJuIHQuZ2V0UGx1cmFsRm9ybWF0KG8sYSkuZm9ybWF0KG4pfWNhdGNoKGUpe2koY2QoIkVycm9yIGZvcm1hdHRpbmcgcGx1cmFsLiIsZSkpfXJldHVybiJvdGhlciJ9LGZvcm1hdE1lc3NhZ2U6Q2QsZm9ybWF0SFRNTE1lc3NhZ2U6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fSxvPU9iamVjdC5rZXlzKHIpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj1yW3RdO3JldHVybiBlW3RdPSJzdHJpbmciPT10eXBlb2Ygbj9hZChuKTpuLGV9KSx7fSk7cmV0dXJuIENkKGUsdCxuLG8pfX0pLFNkPU9iamVjdC5rZXlzKFFmKSxEZD1PYmplY3Qua2V5cyhKZiksVGQ9e2Zvcm1hdHM6e30sbWVzc2FnZXM6e30sdGltZVpvbmU6bnVsbCx0ZXh0Q29tcG9uZW50OiJzcGFuIixkZWZhdWx0TG9jYWxlOiJlbiIsZGVmYXVsdEZvcm1hdHM6e30sb25FcnJvcjpmZH0sTWQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307VGYodGhpcyx0KTt2YXIgcj1MZih0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSxuKSk7ZnIoKSgidW5kZWZpbmVkIiE9dHlwZW9mIEludGwsIltSZWFjdCBJbnRsXSBUaGUgYEludGxgIEFQSXMgbXVzdCBiZSBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUsIGFuZCBkbyBub3QgYXBwZWFyIHRvIGJlIGJ1aWx0LWluLiBBbiBgSW50bGAgcG9seWZpbGwgc2hvdWxkIGJlIGxvYWRlZC5cblNlZTogaHR0cDovL2Zvcm1hdGpzLmlvL2d1aWRlcy9ydW50aW1lLWVudmlyb25tZW50cy8iKTt2YXIgbz1uLmludGwsYT12b2lkIDA7YT1pc0Zpbml0ZShlLmluaXRpYWxOb3cpP051bWJlcihlLmluaXRpYWxOb3cpOm8/by5ub3coKTpEYXRlLm5vdygpO3ZhciBpPW98fHt9LHU9aS5mb3JtYXR0ZXJzLHM9dm9pZCAwPT09dT97Z2V0RGF0ZVRpbWVGb3JtYXQ6a2YoSW50bC5EYXRlVGltZUZvcm1hdCksZ2V0TnVtYmVyRm9ybWF0OmtmKEludGwuTnVtYmVyRm9ybWF0KSxnZXRNZXNzYWdlRm9ybWF0OmtmKHdmLmEpLGdldFJlbGF0aXZlRm9ybWF0OmtmKEVmLmEpLGdldFBsdXJhbEZvcm1hdDprZih2ZCl9OnU7cmV0dXJuIHIuc3RhdGU9TmYoe30scyx7bm93OmZ1bmN0aW9uKCl7cmV0dXJuIHIuX2RpZERpc3BsYXk/RGF0ZS5ub3coKTphfX0pLHJ9cmV0dXJuIGpmKHQsZSksTWYodCxbe2tleToiZ2V0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29udGV4dC5pbnRsLHQ9aWQodGhpcy5wcm9wcyxTZCxlKTtmb3IodmFyIG4gaW4gVGQpdm9pZCAwPT09dFtuXSYmKHRbbl09VGRbbl0pO2lmKCFmdW5jdGlvbihlKXtmb3IodmFyIHQ9KGV8fCIiKS5zcGxpdCgiLSIpO3QubGVuZ3RoPjA7KXtpZihTZih0LmpvaW4oIi0iKSkpcmV0dXJuITA7dC5wb3AoKX1yZXR1cm4hMX0odC5sb2NhbGUpKXt2YXIgcj10LG89ci5sb2NhbGUsYT1yLmRlZmF1bHRMb2NhbGUsaT1yLmRlZmF1bHRGb3JtYXRzOygwLHIub25FcnJvcikoY2QoJ01pc3NpbmcgbG9jYWxlIGRhdGEgZm9yIGxvY2FsZTogIicrbysnIi4gVXNpbmcgZGVmYXVsdCBsb2NhbGU6ICInK2ErJyIgYXMgZmFsbGJhY2suJykpLHQ9TmYoe30sdCx7bG9jYWxlOmEsZm9ybWF0czppLG1lc3NhZ2VzOlRkLm1lc3NhZ2VzfSl9cmV0dXJuIHR9fSx7a2V5OiJnZXRCb3VuZEZvcm1hdEZucyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRGQucmVkdWNlKChmdW5jdGlvbihuLHIpe3JldHVybiBuW3JdPXhkW3JdLmJpbmQobnVsbCxlLHQpLG59KSx7fSl9fSx7a2V5OiJnZXRDaGlsZENvbnRleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRDb25maWcoKSx0PXRoaXMuZ2V0Qm91bmRGb3JtYXRGbnMoZSx0aGlzLnN0YXRlKSxuPXRoaXMuc3RhdGUscj1uLm5vdyxvPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KG4sWyJub3ciXSk7cmV0dXJue2ludGw6TmYoe30sZSx0LHtmb3JtYXR0ZXJzOm8sbm93OnJ9KX19fSx7a2V5OiJzaG91bGRDb21wb25lbnRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbGQuYXBwbHkodm9pZCAwLFt0aGlzXS5jb25jYXQodCkpfX0se2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZGlkRGlzcGxheT0hMH19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXy5DaGlsZHJlbi5vbmx5KHRoaXMucHJvcHMuY2hpbGRyZW4pfX1dKSx0fShfLkNvbXBvbmVudCk7TWQuZGlzcGxheU5hbWU9IkludGxQcm92aWRlciIsTWQuY29udGV4dFR5cGVzPXtpbnRsOlpmfSxNZC5jaGlsZENvbnRleHRUeXBlcz17aW50bDpaZi5pc1JlcXVpcmVkfTt2YXIgUGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe1RmKHRoaXMsdCk7dmFyIHI9TGYodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUsbikpO3JldHVybiB1ZChuKSxyfXJldHVybiBqZih0LGUpLE1mKHQsW3trZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBsZC5hcHBseSh2b2lkIDAsW3RoaXNdLmNvbmNhdCh0KSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb250ZXh0LmludGwsdD1lLmZvcm1hdERhdGUsbj1lLnRleHRDb21wb25lbnQscj10aGlzLnByb3BzLG89ci52YWx1ZSxhPXIuY2hpbGRyZW4saT10KG8sdGhpcy5wcm9wcyk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGE/YShpKTpFLmEuY3JlYXRlRWxlbWVudChuLG51bGwsaSl9fV0pLHR9KF8uQ29tcG9uZW50KTtQZC5kaXNwbGF5TmFtZT0iRm9ybWF0dGVkRGF0ZSIsUGQuY29udGV4dFR5cGVzPXtpbnRsOlpmfTt2YXIgTmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe1RmKHRoaXMsdCk7dmFyIHI9TGYodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUsbikpO3JldHVybiB1ZChuKSxyfXJldHVybiBqZih0LGUpLE1mKHQsW3trZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBsZC5hcHBseSh2b2lkIDAsW3RoaXNdLmNvbmNhdCh0KSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb250ZXh0LmludGwsdD1lLmZvcm1hdFRpbWUsbj1lLnRleHRDb21wb25lbnQscj10aGlzLnByb3BzLG89ci52YWx1ZSxhPXIuY2hpbGRyZW4saT10KG8sdGhpcy5wcm9wcyk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGE/YShpKTpFLmEuY3JlYXRlRWxlbWVudChuLG51bGwsaSl9fV0pLHR9KF8uQ29tcG9uZW50KTtOZC5kaXNwbGF5TmFtZT0iRm9ybWF0dGVkVGltZSIsTmQuY29udGV4dFR5cGVzPXtpbnRsOlpmfTt2YXIgamQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe1RmKHRoaXMsdCk7dmFyIHI9TGYodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUsbikpO3VkKG4pO3ZhciBvPWlzRmluaXRlKGUuaW5pdGlhbE5vdyk/TnVtYmVyKGUuaW5pdGlhbE5vdyk6bi5pbnRsLm5vdygpO3JldHVybiByLnN0YXRlPXtub3c6b30scn1yZXR1cm4gamYodCxlKSxNZih0LFt7a2V5OiJzY2hlZHVsZU5leHRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO3ZhciByPWUudmFsdWUsbz1lLnVuaXRzLGE9ZS51cGRhdGVJbnRlcnZhbCxpPW5ldyBEYXRlKHIpLmdldFRpbWUoKTtpZihhJiZpc0Zpbml0ZShpKSl7dmFyIHU9aS10Lm5vdyxzPWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlInNlY29uZCI6cmV0dXJuIDFlMztjYXNlIm1pbnV0ZSI6cmV0dXJuIDZlNDtjYXNlImhvdXIiOnJldHVybiAzNmU1O2Nhc2UiZGF5IjpyZXR1cm4gODY0ZTU7ZGVmYXVsdDpyZXR1cm4gMjE0NzQ4MzY0N319KG98fGZ1bmN0aW9uKGUpe3ZhciB0PU1hdGguYWJzKGUpO3JldHVybiB0PDZlND8ic2Vjb25kIjp0PDM2ZTU/Im1pbnV0ZSI6dDw4NjRlNT8iaG91ciI6ImRheSJ9KHUpKSxsPU1hdGguYWJzKHUlcyksYz11PDA/TWF0aC5tYXgoYSxzLWwpOk1hdGgubWF4KGEsbCk7dGhpcy5fdGltZXI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtuLnNldFN0YXRlKHtub3c6bi5jb250ZXh0LmludGwubm93KCl9KX0pLGMpfX19LHtrZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2NoZWR1bGVOZXh0VXBkYXRlKHRoaXMucHJvcHMsdGhpcy5zdGF0ZSl9fSx7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXsoZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1uZXcgRGF0ZShlKS5nZXRUaW1lKCkscj1uZXcgRGF0ZSh0KS5nZXRUaW1lKCk7cmV0dXJuIGlzRmluaXRlKG4pJiZpc0Zpbml0ZShyKSYmbj09PXJ9KShlLnZhbHVlLHRoaXMucHJvcHMudmFsdWUpfHx0aGlzLnNldFN0YXRlKHtub3c6dGhpcy5jb250ZXh0LmludGwubm93KCl9KX19LHtrZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBsZC5hcHBseSh2b2lkIDAsW3RoaXNdLmNvbmNhdCh0KSl9fSx7a2V5OiJjb21wb25lbnRXaWxsVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMuc2NoZWR1bGVOZXh0VXBkYXRlKGUsdCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29udGV4dC5pbnRsLHQ9ZS5mb3JtYXRSZWxhdGl2ZSxuPWUudGV4dENvbXBvbmVudCxyPXRoaXMucHJvcHMsbz1yLnZhbHVlLGE9ci5jaGlsZHJlbixpPXQobyxOZih7fSx0aGlzLnByb3BzLHRoaXMuc3RhdGUpKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hKGkpOkUuYS5jcmVhdGVFbGVtZW50KG4sbnVsbCxpKX19XSksdH0oXy5Db21wb25lbnQpO2pkLmRpc3BsYXlOYW1lPSJGb3JtYXR0ZWRSZWxhdGl2ZSIsamQuY29udGV4dFR5cGVzPXtpbnRsOlpmfSxqZC5kZWZhdWx0UHJvcHM9e3VwZGF0ZUludGVydmFsOjFlNH07dmFyIExkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXtUZih0aGlzLHQpO3ZhciByPUxmKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlLG4pKTtyZXR1cm4gdWQobikscn1yZXR1cm4gamYodCxlKSxNZih0LFt7a2V5OiJzaG91bGRDb21wb25lbnRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbGQuYXBwbHkodm9pZCAwLFt0aGlzXS5jb25jYXQodCkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29udGV4dC5pbnRsLHQ9ZS5mb3JtYXROdW1iZXIsbj1lLnRleHRDb21wb25lbnQscj10aGlzLnByb3BzLG89ci52YWx1ZSxhPXIuY2hpbGRyZW4saT10KG8sdGhpcy5wcm9wcyk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGE/YShpKTpFLmEuY3JlYXRlRWxlbWVudChuLG51bGwsaSl9fV0pLHR9KF8uQ29tcG9uZW50KTtMZC5kaXNwbGF5TmFtZT0iRm9ybWF0dGVkTnVtYmVyIixMZC5jb250ZXh0VHlwZXM9e2ludGw6WmZ9O3ZhciBSZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7VGYodGhpcyx0KTt2YXIgcj1MZih0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSxuKSk7cmV0dXJuIHVkKG4pLHJ9cmV0dXJuIGpmKHQsZSksTWYodCxbe2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGxkLmFwcGx5KHZvaWQgMCxbdGhpc10uY29uY2F0KHQpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnRleHQuaW50bCx0PWUuZm9ybWF0UGx1cmFsLG49ZS50ZXh0Q29tcG9uZW50LHI9dGhpcy5wcm9wcyxvPXIudmFsdWUsYT1yLm90aGVyLGk9ci5jaGlsZHJlbix1PXQobyx0aGlzLnByb3BzKSxzPXRoaXMucHJvcHNbdV18fGE7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGk/aShzKTpFLmEuY3JlYXRlRWxlbWVudChuLG51bGwscyl9fV0pLHR9KF8uQ29tcG9uZW50KTtSZC5kaXNwbGF5TmFtZT0iRm9ybWF0dGVkUGx1cmFsIixSZC5jb250ZXh0VHlwZXM9e2ludGw6WmZ9LFJkLmRlZmF1bHRQcm9wcz17c3R5bGU6ImNhcmRpbmFsIn07dmFyIElkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIENkKHt9LHtnZXRNZXNzYWdlRm9ybWF0OmtmKHdmLmEpfSxlLHQpfSxBZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7VGYodGhpcyx0KTt2YXIgcj1MZih0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSxuKSk7cmV0dXJuIGUuZGVmYXVsdE1lc3NhZ2V8fHVkKG4pLHJ9cmV0dXJuIGpmKHQsZSksTWYodCxbe2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLnZhbHVlcyxuPWUudmFsdWVzO2lmKCFzZChuLHQpKXJldHVybiEwO2Zvcih2YXIgcj1OZih7fSxlLHt2YWx1ZXM6dH0pLG89YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KG8+MT9vLTE6MCksaT0xO2k8bztpKyspYVtpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gbGQuYXBwbHkodm9pZCAwLFt0aGlzLHJdLmNvbmNhdChhKSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLmNvbnRleHQuaW50bHx8e30sbj10LmZvcm1hdE1lc3NhZ2Uscj12b2lkIDA9PT1uP0lkOm4sbz10LnRleHRDb21wb25lbnQsYT12b2lkIDA9PT1vPyJzcGFuIjpvLGk9dGhpcy5wcm9wcyx1PWkuaWQscz1pLmRlc2NyaXB0aW9uLGw9aS5kZWZhdWx0TWVzc2FnZSxjPWkudmFsdWVzLGY9aS50YWdOYW1lLGQ9dm9pZCAwPT09Zj9hOmYscD1pLmNoaWxkcmVuLGg9dm9pZCAwLHk9dm9pZCAwLG09dm9pZCAwO2lmKGMmJk9iamVjdC5rZXlzKGMpLmxlbmd0aD4wKXt2YXIgdj1NYXRoLmZsb29yKDEwOTk1MTE2Mjc3NzYqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpLGc9KGU9MCxmdW5jdGlvbigpe3JldHVybiJFTEVNRU5ULSIrdisiLSIrKGUrPTEpfSk7aD0iQF9fIit2KyJfX0AiLHk9e30sbT17fSxPYmplY3Qua2V5cyhjKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1jW2VdO2lmKE9iamVjdChfLmlzVmFsaWRFbGVtZW50KSh0KSl7dmFyIG49ZygpO3lbZV09aCtuK2gsbVtuXT10fWVsc2UgeVtlXT10fSkpfXZhciBiPXIoe2lkOnUsZGVzY3JpcHRpb246cyxkZWZhdWx0TWVzc2FnZTpsfSx5fHxjKSx3PXZvaWQgMDtyZXR1cm4gdz1tJiZPYmplY3Qua2V5cyhtKS5sZW5ndGg+MD9iLnNwbGl0KGgpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuISFlfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG1bZV18fGV9KSk6W2JdLCJmdW5jdGlvbiI9PXR5cGVvZiBwP3AuYXBwbHkodm9pZCAwLFJmKHcpKTpfLmNyZWF0ZUVsZW1lbnQuYXBwbHkodm9pZCAwLFtkLG51bGxdLmNvbmNhdChSZih3KSkpfX1dKSx0fShfLkNvbXBvbmVudCk7QWQuZGlzcGxheU5hbWU9IkZvcm1hdHRlZE1lc3NhZ2UiLEFkLmNvbnRleHRUeXBlcz17aW50bDpaZn0sQWQuZGVmYXVsdFByb3BzPXt2YWx1ZXM6e319O3ZhciBGZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7VGYodGhpcyx0KTt2YXIgcj1MZih0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSxuKSk7cmV0dXJuIHVkKG4pLHJ9cmV0dXJuIGpmKHQsZSksTWYodCxbe2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLnZhbHVlcyxuPWUudmFsdWVzO2lmKCFzZChuLHQpKXJldHVybiEwO2Zvcih2YXIgcj1OZih7fSxlLHt2YWx1ZXM6dH0pLG89YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KG8+MT9vLTE6MCksaT0xO2k8bztpKyspYVtpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gbGQuYXBwbHkodm9pZCAwLFt0aGlzLHJdLmNvbmNhdChhKSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb250ZXh0LmludGwsdD1lLmZvcm1hdEhUTUxNZXNzYWdlLG49ZS50ZXh0Q29tcG9uZW50LHI9dGhpcy5wcm9wcyxvPXIuaWQsYT1yLmRlc2NyaXB0aW9uLGk9ci5kZWZhdWx0TWVzc2FnZSx1PXIudmFsdWVzLHM9ci50YWdOYW1lLGw9dm9pZCAwPT09cz9uOnMsYz1yLmNoaWxkcmVuLGY9dCh7aWQ6byxkZXNjcmlwdGlvbjphLGRlZmF1bHRNZXNzYWdlOml9LHUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjKXJldHVybiBjKGYpO3ZhciBkPXtfX2h0bWw6Zn07cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGwse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOmR9KX19XSksdH0oXy5Db21wb25lbnQpO0ZkLmRpc3BsYXlOYW1lPSJGb3JtYXR0ZWRIVE1MTWVzc2FnZSIsRmQuY29udGV4dFR5cGVzPXtpbnRsOlpmfSxGZC5kZWZhdWx0UHJvcHM9e3ZhbHVlczp7fX0seGYoQ2YpLHhmKGdmLmEpO3ZhciBCZD1uKCJDbkJNIiksemQ9bigiOFdhMyIpLEtkPW4oIkxXWWEiKSxxZD1uKCJtTHcxIiksVmQ9bigiNHA3SSIpLFVkPW4oIm5yNk8iKSxXZD1uKCJ5Y3pwIiksWWQ9bigieW9LdiIpLEhkPW4oImwxUEYiKSxHZD1uKCJTc0tYIiksUWQ9bigiOUMvYiIpLEpkPW4oImVPOEgiKTtmdW5jdGlvbiBaZChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dC5kaXNwYXRjaCxyPXQuZ2V0U3RhdGU7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbz9vKG4scixlKTp0KG8pfX19fXZhciAkZD1aZCgpOyRkLndpdGhFeHRyYUFyZ3VtZW50PVpkO3ZhciBYZD0kZCxlcD1uKCJsdFZPIiksdHA9bi5uKGVwKSxucD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG4pfX0scnA9bnAoKGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXQuZGVmYXVsdExvY2FsZSxyPXZvaWQgMD09PW4/ImVuIjpuLG89bmV3IEcuYShyKTtyZXR1cm57Y29uZmlndXJlTG9jYWxpemF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBvLmNvbmZpZ3VyZShlKX0sZ2V0Q3VycmVudExvY2FsZTpmdW5jdGlvbigpe3JldHVybiBvLmdldEN1cnJlbnRMb2NhbGUoKX0sZm9ybWF0TWVzc2FnZTpmdW5jdGlvbihlLHQpe3JldHVybiBvLmZvcm1hdE1lc3NhZ2UoZSx0KX0sc2V0Q3VycmVudExvY2FsZTpmdW5jdGlvbihlKXtyZXR1cm4gby5zZXRDdXJyZW50TG9jYWxlKGUpfSxyZWdpc3RlclRyYW5zbGF0aW9uczpmdW5jdGlvbihlLHQpe3JldHVybiBvLnJlZ2lzdGVyVHJhbnNsYXRpb25zKGUsdCl9fX0pKSxvcD17cmVhY3Q6RS5hLCJjYWNoZS1zZXJ2aWNlLWNhY2hlLW1vZHVsZSI6VWkuYSwiYXBvbGxvLWNhY2hlLWlubWVtb3J5IjpvLCJhcG9sbG8tY2xpZW50IjphLCJhcG9sbG8tbGluay1jb250ZXh0IjppLCJhcG9sbG8tbGluay1odHRwIjp1LCJncmFwaHFsLXRhZyI6RWwuYSwiY29tbW9uLXRhZ3MiOnMsaW50bDpnbC5hLCJqcy1ncmFzcy10b2tlbm1hbmFnZXIiOkwsY2xhc3NuYW1lczpUdC5hLGxvZGFzaDpCLmEsImxvZGFzaC9mcCI6d2wuYSxtb21lbnQ6bWwuYSwicHJvcC10eXBlcyI6cSwicmVhY3QtYXBvbGxvIjpsLCJyZWFjdC1kb20iOk8sInJlYWN0LXJlZHV4IjpmLCJyZWFjdC1pbnRsIjpkLCJyZWFjdC1sb2FkYWJsZSI6QmQsInJlYWN0LXJvdXRlciI6cCwicmVhY3Qtcm91dGVyLWJvb3RzdHJhcCI6YmksInJlYWN0LXJvdXRlci1kb20iOkpkLHJlZHV4OmMsInJlZHV4LXRodW5rIjpoLHN1cGVyYWdlbnQ6SWUsInN1cGVyYWdlbnQtY2FjaGUtcGx1Z2luIjp0cC5hLHVuZmV0Y2g6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHx7fSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXt2YXIgbz1uZXcgWE1MSHR0cFJlcXVlc3QsYT1bXSxpPVtdLHU9e30scz1mdW5jdGlvbigpe3JldHVybntvazoyPT0oby5zdGF0dXMvMTAwfDApLHN0YXR1c1RleHQ6by5zdGF0dXNUZXh0LHN0YXR1czpvLnN0YXR1cyx1cmw6by5yZXNwb25zZVVSTCx0ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShvLnJlc3BvbnNlVGV4dCl9LGpzb246ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKEpTT04ucGFyc2Uoby5yZXNwb25zZVRleHQpKX0sYmxvYjpmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW28ucmVzcG9uc2VdKSl9LGNsb25lOnMsaGVhZGVyczp7a2V5czpmdW5jdGlvbigpe3JldHVybiBhfSxlbnRyaWVzOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdVtlLnRvTG93ZXJDYXNlKCldfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKWluIHV9fX19O2Zvcih2YXIgbCBpbiBvLm9wZW4odC5tZXRob2R8fCJnZXQiLGUsITApLG8ub25sb2FkPWZ1bmN0aW9uKCl7by5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKS5yZXBsYWNlKC9eKC4qPyk6W15cU1xuXSooW1xzXFNdKj8pJC9nbSwoZnVuY3Rpb24oZSx0LG4pe2EucHVzaCh0PXQudG9Mb3dlckNhc2UoKSksaS5wdXNoKFt0LG5dKSx1W3RdPXVbdF0/dVt0XSsiLCIrbjpufSkpLG4ocygpKX0sby5vbmVycm9yPXIsby53aXRoQ3JlZGVudGlhbHM9ImluY2x1ZGUiPT10LmNyZWRlbnRpYWxzLHQuaGVhZGVycylvLnNldFJlcXVlc3RIZWFkZXIobCx0LmhlYWRlcnNbbF0pO28uc2VuZCh0LmJvZHl8fG51bGwpfSkpfSwiZnJvbnRlbmQtbG9jYWxpemF0aW9uIjpycCwiQG9yY2hhcmQvZnJvbnRlbmQtbG9jYWxpemF0aW9uIjpycH0sYXA9bigiOXJaWCIpLGlwPW4ubihhcCk7ZnVuY3Rpb24gdXAoKXtyZXR1cm4odXA9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBzcChlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99dmFyIGxwPXtvdmVybGF5OntiYWNrZ3JvdW5kQ29sb3I6InJnYmEoNzUsIDc1LCA3NSwgMC43NDkwMikifX0sY3A9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbGFzc05hbWUsbj1lLmNoaWxkcmVuLHI9ZS5pc09wZW4sbz1lLmhlYWRlckxhYmVsLGE9ZS5vblJlcXVlc3RDbG9zZSxpPWUuZm9vdGVyLHU9ZS56SW5kZXgscz1lLnNob3VsZENsb3NlT25PdmVybGF5Q2xpY2ssbD1lLmhpZGVNb2RhbCxjPWUuc2hvdWxkRm9vdGVyQWxpZ25SaWdodCxmPXNwKGUsWyJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImlzT3BlbiIsImhlYWRlckxhYmVsIiwib25SZXF1ZXN0Q2xvc2UiLCJmb290ZXIiLCJ6SW5kZXgiLCJzaG91bGRDbG9zZU9uT3ZlcmxheUNsaWNrIiwiaGlkZU1vZGFsIiwic2hvdWxkRm9vdGVyQWxpZ25SaWdodCJdKTtscC5vdmVybGF5LnpJbmRleD11O3ZhciBkPWM/IiBSZWFjdE1vZGFsLWZvb3Rlci1yaWdodC1hbGlnbiI6IiI7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGlwLmEsdXAoe2NsYXNzTmFtZTpUdCgpKHQsIlJlYWN0TW9kYWwiKSxpc09wZW46cixzdHlsZTpscCxvblJlcXVlc3RDbG9zZTphLGNvbnRlbnRMYWJlbDoiTW9kYWwiLHNob3VsZENsb3NlT25PdmVybGF5Q2xpY2s6cyxhcmlhSGlkZUFwcDohMSxib2R5T3BlbkNsYXNzTmFtZToiUmVhY3RNb2RhbC1ib2R5LW9wZW4ifSxmKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJSZWFjdE1vZGFsLWNvbnRlbnQifSxvJiZFLmEuY3JlYXRlRWxlbWVudCgiaGVhZGVyIix7Y2xhc3NOYW1lOiJSZWFjdE1vZGFsLWhlYWRlciJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlJlYWN0TW9kYWwtY2xvc2UiLG9uQ2xpY2s6bHx8YX0sRS5hLmNyZWF0ZUVsZW1lbnQocmksbnVsbCkpLEUuYS5jcmVhdGVFbGVtZW50KCJoNCIse2NsYXNzTmFtZToiUmVhY3RNb2RhbC1oZWFkZXItdGV4dCJ9LG8pKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJSZWFjdE1vZGFsLWJvZHkifSxuKSxpJiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJSZWFjdE1vZGFsLWZvb3RlciIuY29uY2F0KGQpfSxpKSkpfTtjcC5kaXNwbGF5TmFtZT0iTW9kYWwiLGNwLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsY2hpbGRyZW46Vi5hLmFueSxpc09wZW46Vi5hLmJvb2wuaXNSZXF1aXJlZCxvblJlcXVlc3RDbG9zZTpWLmEuZnVuYy5pc1JlcXVpcmVkLHNob3VsZENsb3NlT25PdmVybGF5Q2xpY2s6Vi5hLmJvb2wsaGVhZGVyTGFiZWw6Vi5hLnN0cmluZyxmb290ZXI6Vi5hLmFueSx6SW5kZXg6Vi5hLm51bWJlcixoaWRlTW9kYWw6Vi5hLmZ1bmMsc2hvdWxkRm9vdGVyQWxpZ25SaWdodDpWLmEuYm9vbH0sY3AuZGVmYXVsdFByb3BzPXtzaG91bGRDbG9zZU9uT3ZlcmxheUNsaWNrOiEwLHpJbmRleDozfTt2YXIgZnA9Y3AsZHA9ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudClyZXR1cm4gbnVsbD09ZT8kcigpLmJvZHk6KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKCkpLGUmJmUuY3VycmVudCYmKGU9ZS5jdXJyZW50KSxlJiZlLm5vZGVUeXBlP2U6bnVsbCl9O2Z1bmN0aW9uIHBwKGUsdCl7dmFyIG49T2JqZWN0KF8udXNlU3RhdGUpKChmdW5jdGlvbigpe3JldHVybiBkcChlKX0pKSxyPW5bMF0sbz1uWzFdO2lmKCFyKXt2YXIgYT1kcChlKTthJiZvKGEpfXJldHVybiBPYmplY3QoXy51c2VFZmZlY3QpKChmdW5jdGlvbigpe3QmJnImJnQocil9KSxbdCxyXSksT2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXt2YXIgdD1kcChlKTt0IT09ciYmbyh0KX0pLFtlLHJdKSxyfXZhciBocD1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmZsaXAscj1lLnBsYWNlbWVudCxvPWUuY29udGFpbmVyUGFkZGluZyxhPWUucG9wcGVyQ29uZmlnLGk9dm9pZCAwPT09YT97fTphLHU9ZS50cmFuc2l0aW9uLHM9YWEoKSxsPXNbMF0sYz1zWzFdLGY9YWEoKSxkPWZbMF0scD1mWzFdLGg9a3IoYyx0KSx5PXBwKGUuY29udGFpbmVyKSxtPXBwKGUudGFyZ2V0KSx2PU9iamVjdChfLnVzZVN0YXRlKSghZS5zaG93KSxnPXZbMF0sYj12WzFdLHc9aS5tb2RpZmllcnMsTz12b2lkIDA9PT13P3t9OncsQz1kYShtLGwsc2Eoe30saSx7cGxhY2VtZW50OnJ8fCJib3R0b20iLGVuYWJsZUV2ZW50czplLnNob3csbW9kaWZpZXJzOnNhKHt9LE8se3ByZXZlbnRPdmVyZmxvdzpzYSh7cGFkZGluZzpvfHw1fSxPLnByZXZlbnRPdmVyZmxvdyksYXJyb3c6c2Eoe30sTy5hcnJvdyx7ZW5hYmxlZDohIWQsZWxlbWVudDpkfSksZmxpcDpzYSh7ZW5hYmxlZDohIW59LE8ucHJldmVudE92ZXJmbG93KX0pfSkpLHg9Qy5zdHlsZXMsUz1DLmFycm93U3R5bGVzLEQ9dWEoQyxbInN0eWxlcyIsImFycm93U3R5bGVzIl0pO2Uuc2hvdz9nJiZiKCExKTplLnRyYW5zaXRpb258fGd8fGIoITApO3ZhciBUPWUuc2hvd3x8dSYmIWc7aWYodmEobCxlLm9uSGlkZSx7ZGlzYWJsZWQ6IWUucm9vdENsb3NlfHxlLnJvb3RDbG9zZURpc2FibGVkLGNsaWNrVHJpZ2dlcjplLnJvb3RDbG9zZUV2ZW50fSksIVQpcmV0dXJuIG51bGw7dmFyIE09ZS5jaGlsZHJlbihzYSh7fSxELHtzaG93OmUuc2hvdyxwcm9wczp7c3R5bGU6eCxyZWY6aH0sYXJyb3dQcm9wczp7c3R5bGU6UyxyZWY6cH19KSk7aWYodSl7dmFyIFA9ZS5vbkV4aXQsTj1lLm9uRXhpdGluZyxqPWUub25FbnRlcixMPWUub25FbnRlcmluZyxSPWUub25FbnRlcmVkO009RS5hLmNyZWF0ZUVsZW1lbnQodSx7aW46ZS5zaG93LGFwcGVhcjohMCxvbkV4aXQ6UCxvbkV4aXRpbmc6TixvbkV4aXRlZDpmdW5jdGlvbigpe2IoITApLGUub25FeGl0ZWQmJmUub25FeGl0ZWQuYXBwbHkoZSxhcmd1bWVudHMpfSxvbkVudGVyOmosb25FbnRlcmluZzpMLG9uRW50ZXJlZDpSfSxNKX1yZXR1cm4geT9rLmEuY3JlYXRlUG9ydGFsKE0seSk6bnVsbH0pKTtocC5kaXNwbGF5TmFtZT0iT3ZlcmxheSIsaHAucHJvcFR5cGVzPXtzaG93OlYuYS5ib29sLHBsYWNlbWVudDpWLmEub25lT2YobGEuYS5wbGFjZW1lbnRzKSx0YXJnZXQ6Vi5hLmFueSxjb250YWluZXI6Vi5hLmFueSxmbGlwOlYuYS5ib29sLGNoaWxkcmVuOlYuYS5mdW5jLmlzUmVxdWlyZWQsY29udGFpbmVyUGFkZGluZzpWLmEubnVtYmVyLHBvcHBlckNvbmZpZzpWLmEub2JqZWN0LHJvb3RDbG9zZTpWLmEuYm9vbCxyb290Q2xvc2VFdmVudDpWLmEub25lT2YoWyJjbGljayIsIm1vdXNlZG93biJdKSxyb290Q2xvc2VEaXNhYmxlZDpWLmEuYm9vbCxvbkhpZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9Vi5hLmZ1bmM7ZS5yb290Q2xvc2UmJih0PXQuaXNSZXF1aXJlZCk7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobj4xP24tMTowKSxvPTE7bzxuO28rKylyW28tMV09YXJndW1lbnRzW29dO3JldHVybiB0LmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KHIpKX0sdHJhbnNpdGlvbjpWLmEuZWxlbWVudFR5cGUsb25FbnRlcjpWLmEuZnVuYyxvbkVudGVyaW5nOlYuYS5mdW5jLG9uRW50ZXJlZDpWLmEuZnVuYyxvbkV4aXQ6Vi5hLmZ1bmMsb25FeGl0aW5nOlYuYS5mdW5jLG9uRXhpdGVkOlYuYS5mdW5jfSxocC5kZWZhdWx0UHJvcHM9e2NvbnRhaW5lclBhZGRpbmc6NX07dmFyIHlwLG1wPWhwLHZwPSgoeXA9e30pLmVudGVyaW5nPSJzaG93Iix5cC5lbnRlcmVkPSJzaG93Iix5cCksZ3A9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jbGFzc05hbWUscj1lLmNoaWxkcmVuLG89bHIoZSxbImNsYXNzTmFtZSIsImNoaWxkcmVuIl0pLGE9T2JqZWN0KF8udXNlQ2FsbGJhY2spKChmdW5jdGlvbihlKXtFbyhlKSxvLm9uRW50ZXImJm8ub25FbnRlcihlKX0pLFtvXSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KF9vLHNyKHtyZWY6dCxhZGRFbmRMaXN0ZW5lcjp5b30sbyx7b25FbnRlcjphfSksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUuYS5jbG9uZUVsZW1lbnQocixzcih7fSx0LHtjbGFzc05hbWU6VHQoKSgiZmFkZSIsbixyLnByb3BzLmNsYXNzTmFtZSx2cFtlXSl9KSl9KSl9KSk7Z3AuZGVmYXVsdFByb3BzPXtpbjohMSx0aW1lb3V0OjMwMCxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITF9LGdwLmRpc3BsYXlOYW1lPSJGYWRlIjt2YXIgYnA9Z3Asd3A9e3RyYW5zaXRpb246YnAscm9vdENsb3NlOiExLHNob3c6ITEscGxhY2VtZW50OiJ0b3AifTtmdW5jdGlvbiBfcChlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS50cmFuc2l0aW9uLHI9bHIoZSxbImNoaWxkcmVuIiwidHJhbnNpdGlvbiJdKTtyZXR1cm4gbj0hMD09PW4/YnA6bnx8bnVsbCxFLmEuY3JlYXRlRWxlbWVudChtcCxzcih7fSxyLHt0cmFuc2l0aW9uOm59KSwoZnVuY3Rpb24oZSl7dmFyIHI9ZS5wcm9wcyxvPWUuYXJyb3dQcm9wcyxhPWUuc2hvdyxpPWxyKGUsWyJwcm9wcyIsImFycm93UHJvcHMiLCJzaG93Il0pO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUucmVmLHI9dC5yZWY7ZS5yZWY9bi5fX3dyYXBwZWR8fChuLl9fd3JhcHBlZD1mdW5jdGlvbihlKXtyZXR1cm4gbihPYmplY3QoTy5maW5kRE9NTm9kZSkoZSkpfSksdC5yZWY9ci5fX3dyYXBwZWR8fChyLl9fd3JhcHBlZD1mdW5jdGlvbihlKXtyZXR1cm4gcihPYmplY3QoTy5maW5kRE9NTm9kZSkoZSkpfSl9KHIsbyksImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChzcih7fSxpLHt9LHIse3Nob3c6YSxhcnJvd1Byb3BzOm99KSk6RS5hLmNsb25lRWxlbWVudCh0LHNyKHt9LGkse30scix7YXJyb3dQcm9wczpvLGNsYXNzTmFtZTpUdCgpKHQucHJvcHMuY2xhc3NOYW1lLCFuJiZhJiYic2hvdyIpLHN0eWxlOnNyKHt9LHQucHJvcHMuc3R5bGUse30sci5zdHlsZSl9KSl9KSl9X3AuZGVmYXVsdFByb3BzPXdwO3ZhciBFcD1fcCxPcD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiB5cih0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmNoaWxkcmVufSx0fShFLmEuQ29tcG9uZW50KSxrcD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlP2U6e3Nob3c6ZSxoaWRlOmV9fSxDcD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI7cmV0dXJuKHI9ZS5jYWxsKHRoaXMsdCxuKXx8dGhpcykuZ2V0VGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGsuYS5maW5kRE9NTm9kZShyLnRyaWdnZXIuY3VycmVudCl9LHIuaGFuZGxlU2hvdz1mdW5jdGlvbigpe2NsZWFyVGltZW91dChyLl90aW1lb3V0KSxyLl9ob3ZlclN0YXRlPSJzaG93Ijt2YXIgZT1rcChyLnByb3BzLmRlbGF5KTtlLnNob3c/ci5fdGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpeyJzaG93Ij09PXIuX2hvdmVyU3RhdGUmJnIuc2hvdygpfSksZS5zaG93KTpyLnNob3coKX0sci5oYW5kbGVIaWRlPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHIuX3RpbWVvdXQpLHIuX2hvdmVyU3RhdGU9ImhpZGUiO3ZhciBlPWtwKHIucHJvcHMuZGVsYXkpO2UuaGlkZT9yLl90aW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ImhpZGUiPT09ci5faG92ZXJTdGF0ZSYmci5oaWRlKCl9KSxlLmhpZGUpOnIuaGlkZSgpfSxyLmhhbmRsZUZvY3VzPWZ1bmN0aW9uKGUpe3ZhciB0PXIuZ2V0Q2hpbGRQcm9wcygpLm9uRm9jdXM7ci5oYW5kbGVTaG93KGUpLHQmJnQoZSl9LHIuaGFuZGxlQmx1cj1mdW5jdGlvbihlKXt2YXIgdD1yLmdldENoaWxkUHJvcHMoKS5vbkJsdXI7ci5oYW5kbGVIaWRlKGUpLHQmJnQoZSl9LHIuaGFuZGxlQ2xpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5nZXRDaGlsZFByb3BzKCkub25DbGljaztyLnN0YXRlLnNob3c/ci5oaWRlKCk6ci5zaG93KCksdCYmdChlKX0sci5oYW5kbGVNb3VzZU92ZXI9ZnVuY3Rpb24oZSl7ci5oYW5kbGVNb3VzZU92ZXJPdXQoci5oYW5kbGVTaG93LGUsImZyb21FbGVtZW50Iil9LHIuaGFuZGxlTW91c2VPdXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuaGFuZGxlTW91c2VPdmVyT3V0KHIuaGFuZGxlSGlkZSxlLCJ0b0VsZW1lbnQiKX0sci50cmlnZ2VyPUUuYS5jcmVhdGVSZWYoKSxyLnN0YXRlPXtzaG93OiEhdC5kZWZhdWx0U2hvd30sci5hcmlhTW9kaWZpZXI9e2VuYWJsZWQ6ITAsb3JkZXI6OTAwLGZuOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5zdGFuY2UucG9wcGVyLG49ci5nZXRUYXJnZXQoKTtpZighci5zdGF0ZS5zaG93fHwhbilyZXR1cm4gZTt2YXIgbz10LmdldEF0dHJpYnV0ZSgicm9sZSIpfHwiIjtyZXR1cm4gdC5pZCYmInRvb2x0aXAiPT09by50b0xvd2VyQ2FzZSgpJiZuLnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsdC5pZCksZX19LHJ9eXIodCxlKTt2YXIgbj10LnByb3RvdHlwZTtyZXR1cm4gbi5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KX0sbi5nZXRDaGlsZFByb3BzPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5DaGlsZHJlbi5vbmx5KHRoaXMucHJvcHMuY2hpbGRyZW4pLnByb3BzfSxuLmhhbmRsZU1vdXNlT3Zlck91dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC5jdXJyZW50VGFyZ2V0LG89dC5yZWxhdGVkVGFyZ2V0fHx0Lm5hdGl2ZUV2ZW50W25dO28mJm89PT1yfHxwYShyLG8pfHxlKHQpfSxuLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLnNldFN0YXRlKHtzaG93OiExfSl9LG4uc2hvdz1mdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe3Nob3c6ITB9KX0sbi5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS50cmlnZ2VyLG49ZS5vdmVybGF5LHI9ZS5jaGlsZHJlbixvPWUucG9wcGVyQ29uZmlnLGE9dm9pZCAwPT09bz97fTpvLGk9bHIoZSxbInRyaWdnZXIiLCJvdmVybGF5IiwiY2hpbGRyZW4iLCJwb3BwZXJDb25maWciXSk7ZGVsZXRlIGkuZGVsYXksZGVsZXRlIGkuZGVmYXVsdFNob3c7dmFyIHU9RS5hLkNoaWxkcmVuLm9ubHkocikscz17fSxsPW51bGw9PXQ/W106W10uY29uY2F0KHQpO3JldHVybi0xIT09bC5pbmRleE9mKCJjbGljayIpJiYocy5vbkNsaWNrPXRoaXMuaGFuZGxlQ2xpY2spLC0xIT09bC5pbmRleE9mKCJmb2N1cyIpJiYocy5vbkZvY3VzPXRoaXMuaGFuZGxlU2hvdyxzLm9uQmx1cj10aGlzLmhhbmRsZUhpZGUpLC0xIT09bC5pbmRleE9mKCJob3ZlciIpJiYocy5vbk1vdXNlT3Zlcj10aGlzLmhhbmRsZU1vdXNlT3ZlcixzLm9uTW91c2VPdXQ9dGhpcy5oYW5kbGVNb3VzZU91dCksRS5hLmNyZWF0ZUVsZW1lbnQoRS5hLkZyYWdtZW50LG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoT3Ase3JlZjp0aGlzLnRyaWdnZXJ9LE9iamVjdChfLmNsb25lRWxlbWVudCkodSxzKSksRS5hLmNyZWF0ZUVsZW1lbnQoRXAsc3Ioe30saSx7cG9wcGVyQ29uZmlnOnNyKHt9LGEse21vZGlmaWVyczpzcih7fSxhLm1vZGlmaWVycyx7YXJpYU1vZGlmaWVyOnRoaXMuYXJpYU1vZGlmaWVyfSl9KSxzaG93OnRoaXMuc3RhdGUuc2hvdyxvbkhpZGU6dGhpcy5oYW5kbGVIaWRlLHRhcmdldDp0aGlzLmdldFRhcmdldH0pLG4pKX0sdH0oRS5hLkNvbXBvbmVudCk7Q3AuZGVmYXVsdFByb3BzPXtkZWZhdWx0T3ZlcmxheVNob3duOiExLHRyaWdnZXI6WyJob3ZlciIsImZvY3VzIl19O3ZhciB4cD1DcCxTcD1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFzLHI9dm9pZCAwPT09bj8iZGl2IjpuLG89ZS5ic1ByZWZpeCxhPWUuY2xhc3NOYW1lLGk9ZS5jaGlsZHJlbix1PWxyKGUsWyJhcyIsImJzUHJlZml4IiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iXSk7cmV0dXJuIG89dnIobywicG9wb3Zlci1oZWFkZXIiKSxFLmEuY3JlYXRlRWxlbWVudChyLHNyKHtyZWY6dH0sdSx7Y2xhc3NOYW1lOlR0KCkobyxhKX0pLGkpfSkpLERwPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYXMscj12b2lkIDA9PT1uPyJkaXYiOm4sbz1lLmJzUHJlZml4LGE9ZS5jbGFzc05hbWUsaT1lLmNoaWxkcmVuLHU9bHIoZSxbImFzIiwiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiJdKTtyZXR1cm4gbz12cihvLCJwb3BvdmVyLWJvZHkiKSxFLmEuY3JlYXRlRWxlbWVudChyLHNyKHtyZWY6dH0sdSx7Y2xhc3NOYW1lOlR0KCkoYSxvKX0pLGkpfSkpLFRwPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLnBsYWNlbWVudCxvPWUuY2xhc3NOYW1lLGE9ZS5zdHlsZSxpPWUuY2hpbGRyZW4sdT1lLmNvbnRlbnQscz1lLmFycm93UHJvcHMsbD0oZS5zY2hlZHVsZVVwZGF0ZSxlLm91dE9mQm91bmRhcmllcyxscihlLFsiYnNQcmVmaXgiLCJwbGFjZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsImNoaWxkcmVuIiwiY29udGVudCIsImFycm93UHJvcHMiLCJzY2hlZHVsZVVwZGF0ZSIsIm91dE9mQm91bmRhcmllcyJdKSksYz12cihuLCJwb3BvdmVyIik7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHNyKHtyZWY6dCxyb2xlOiJ0b29sdGlwIixzdHlsZTphLCJ4LXBsYWNlbWVudCI6cixjbGFzc05hbWU6VHQoKShvLGMsImJzLXBvcG92ZXItIityKX0sbCksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsc3Ioe2NsYXNzTmFtZToiYXJyb3cifSxzKSksdT9FLmEuY3JlYXRlRWxlbWVudChEcCxudWxsLGkpOmkpfSkpO1RwLmRlZmF1bHRQcm9wcz17cGxhY2VtZW50OiJyaWdodCJ9LFRwLlRpdGxlPVNwLFRwLkNvbnRlbnQ9RHA7dmFyIE1wPVRwLFBwPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLnBsYWNlbWVudCxvPWUuY2xhc3NOYW1lLGE9ZS5zdHlsZSxpPWUuY2hpbGRyZW4sdT1lLmFycm93UHJvcHMscz0oZS5zY2hlZHVsZVVwZGF0ZSxlLm91dE9mQm91bmRhcmllcyxscihlLFsiYnNQcmVmaXgiLCJwbGFjZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsImNoaWxkcmVuIiwiYXJyb3dQcm9wcyIsInNjaGVkdWxlVXBkYXRlIiwib3V0T2ZCb3VuZGFyaWVzIl0pKTtyZXR1cm4gbj12cihuLCJ0b29sdGlwIiksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsc3Ioe3JlZjp0LHN0eWxlOmEscm9sZToidG9vbHRpcCIsIngtcGxhY2VtZW50IjpyLGNsYXNzTmFtZTpUdCgpKG8sbiwiYnMtdG9vbHRpcC0iK3IpfSxzKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iixzcih7Y2xhc3NOYW1lOiJhcnJvdyJ9LHUpKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOm4rIi1pbm5lciJ9LGkpKX0pKTtQcC5kZWZhdWx0UHJvcHM9e3BsYWNlbWVudDoicmlnaHQifSxQcC5kaXNwbGF5TmFtZT0iVG9vbHRpcCI7dmFyIE5wPVBwLGpwPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1pbmZvIix2aWV3Qm94OiIwIDAgMTAgMTAifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHtmaWxsOiJjdXJyZW50Q29sb3IiLHdpZHRoOiIxMCIsaGVpZ2h0OiIxMCIscng6IjcyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTUuMDc4IDEuMTU3Yy4yNDMgMCAuNDUuMDg1LjYyLjI1Ni4xNy4xNy4yNTYuMzc3LjI1Ni42MiAwIC4yNDUtLjA4NS40NTQtLjI1Ni42MjQtLjE3LjE3LS4zNzcuMjU2LS42Mi4yNTYtLjI0MiAwLS40NS0uMDg1LS42Mi0uMjU2LS4xNy0uMTctLjI1Ni0uMzc3LS4yNTYtLjYyIDAtLjI0LjA4OC0uNDQ2LjI2My0uNjIuMTc2LS4xNzQuMzgtLjI2LjYxMy0uMjZ6bS43NzYgMi4xMzVWNi44M2MwIC4xNjguMDEuMjcyLjAyOC4zMS4wMi4wNC4wNTQuMDY4LjEwMy4wOS4wNS4wMi4xNi4wMy4zMzMuMDNoLjI1OHYuOTI0SDMuNjE4VjcuMjZoLjI1NGMuMTY2IDAgLjI3Mi0uMDEuMzE4LS4wMjYuMDQ2LS4wMTguMDgtLjA0Ny4xMDMtLjA5LjAyMi0uMDQuMDM0LS4xMjMuMDM0LS4yNDhWNC42MTNoLS43MXYtLjljLjI1My0uMDEzLjQ5NS0uMDQuNzI2LS4wODIuMjMyLS4wNC40MzgtLjA5LjYyLS4xNDcuMTE4LS4wMzguMjY0LS4xMDIuNDM2LS4xOWguNDU0eiIsZmlsbDoiI0ZGRiJ9KSkpfTtqcC5kaXNwbGF5TmFtZT0iU1ZHSW5mbyI7dmFyIExwPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24taW5mbyIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtaW5mbyIpOiJJY29ucy1pbmZvIixvbkNsaWNrOmUub25DbGljayxzdmc6anB9KX07THAuZGlzcGxheU5hbWU9IkluZm8iLExwLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIFJwPUxwLElwPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5jaGlsZHJlbixyPWUuaWQsbz1lLm1lc3NhZ2UsYT1lLm92ZXJsYXlDbGFzc05hbWUsaT1lLm92ZXJsYXlUeXBlLHU9ZS5yb290Q2xvc2Uscz1lLnRvb2x0aXBQbGFjZW1lbnQsbD1lLnRyaWdnZXIsYz1lLnRyaWdnZXJPdmVycmlkZSxmPSJ0b29sdGlwIj09PWk/TnA6TXAsZD1ufHxFLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiSGVscCJ9LEUuYS5jcmVhdGVFbGVtZW50KFJwLHtjbGFzc05hbWU6IiIuY29uY2F0KCJmcmMtaGVscCIsIi1pY29uIil9KSkscD1FLmEuY3JlYXRlRWxlbWVudChmLHtpZDpyLGNsYXNzTmFtZTphfSxvKTtyZXR1cm4gYz9FLmEuY3JlYXRlRWxlbWVudCgic3BhbiIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudChFcCx7c2hvdzoic2hvdyI9PT1jLHBsYWNlbWVudDpzLHRhcmdldDpmdW5jdGlvbigpe3JldHVybiB0fX0scCksRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtyZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZX19LGQpKTpFLmEuY3JlYXRlRWxlbWVudCh4cCx7b3ZlcmxheTpwLHBsYWNlbWVudDpzLHJvb3RDbG9zZTp1LHRyaWdnZXI6bH0sZCl9O0lwLmRpc3BsYXlOYW1lPSJIZWxwIixJcC5wcm9wVHlwZXM9e2NoaWxkcmVuOlYuYS5ub2RlLGlkOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxtZXNzYWdlOlYuYS5vbmVPZlR5cGUoW1YuYS5ub2RlLFYuYS5zdHJpbmddKSxvdmVybGF5Q2xhc3NOYW1lOlYuYS5zdHJpbmcsb3ZlcmxheVR5cGU6Vi5hLm9uZU9mKFsicG9wb3ZlciIsInRvb2x0aXAiXSkscm9vdENsb3NlOlYuYS5ib29sLHRvb2x0aXBQbGFjZW1lbnQ6Vi5hLm9uZU9mKFsidG9wIiwibGVmdCIsImJvdHRvbSIsInJpZ2h0Il0pLHRyaWdnZXI6Vi5hLm9uZU9mVHlwZShbVi5hLmFycmF5LFYuYS5zdHJpbmddKSx0cmlnZ2VyT3ZlcnJpZGU6Vi5hLm9uZU9mKFsic2hvdyIsImhpZGUiXSl9LElwLmRlZmF1bHRQcm9wcz17b3ZlcmxheVR5cGU6InRvb2x0aXAiLHJvb3RDbG9zZTohMSx0b29sdGlwUGxhY2VtZW50OiJ0b3AiLHRyaWdnZXI6WyJob3ZlciIsImZvY3VzIl19O3ZhciBBcD1JcCxGcD1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmFjdGl2ZSxyPWUuZGlzYWJsZWQsbz1lLmNsYXNzTmFtZSxhPWUuc3R5bGUsaT1lLmFjdGl2ZUxhYmVsLHU9ZS5jaGlsZHJlbixzPWxyKGUsWyJhY3RpdmUiLCJkaXNhYmxlZCIsImNsYXNzTmFtZSIsInN0eWxlIiwiYWN0aXZlTGFiZWwiLCJjaGlsZHJlbiJdKSxsPW58fHI/InNwYW4iOkFyO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgibGkiLHtyZWY6dCxzdHlsZTphLGNsYXNzTmFtZTpUdCgpKG8sInBhZ2UtaXRlbSIse2FjdGl2ZTpuLGRpc2FibGVkOnJ9KX0sRS5hLmNyZWF0ZUVsZW1lbnQobCxzcih7Y2xhc3NOYW1lOiJwYWdlLWxpbmsiLGRpc2FibGVkOnJ9LHMpLHUsbiYmaSYmRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6InNyLW9ubHkifSxpKSkpfSkpO0ZwLmRlZmF1bHRQcm9wcz17YWN0aXZlOiExLGRpc2FibGVkOiExLGFjdGl2ZUxhYmVsOiIoY3VycmVudCkifSxGcC5kaXNwbGF5TmFtZT0iUGFnZUl0ZW0iO3ZhciBCcD1GcDtmdW5jdGlvbiB6cChlLHQsbil7dmFyIHIsbztyZXR1cm4gdm9pZCAwPT09biYmKG49ZSksbz1yPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHlyKHIsZSksci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyxyPWUuY2hpbGRyZW4sbz1scihlLFsiY2hpbGRyZW4iXSk7cmV0dXJuIGRlbGV0ZSBvLmFjdGl2ZSxFLmEuY3JlYXRlRWxlbWVudChGcCxvLEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHJ8fHQpLEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJzci1vbmx5In0sbikpfSxyfShFLmEuQ29tcG9uZW50KSxyLmRpc3BsYXlOYW1lPWUsb312YXIgS3A9enAoIkZpcnN0IiwiwqsiKSxxcD16cCgiUHJldiIsIuKAuSIsIlByZXZpb3VzIiksVnA9enAoIkVsbGlwc2lzIiwi4oCmIiwiTW9yZSIpLFVwPXpwKCJOZXh0Iiwi4oC6IiksV3A9enAoIkxhc3QiLCLCuyIpLFlwPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLmNsYXNzTmFtZSxvPWUuY2hpbGRyZW4sYT1lLnNpemUsaT1scihlLFsiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInNpemUiXSksdT12cihuLCJwYWdpbmF0aW9uIik7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJ1bCIsc3Ioe3JlZjp0fSxpLHtjbGFzc05hbWU6VHQoKShyLHUsYSYmdSsiLSIrYSl9KSxvKX0pKTtZcC5GaXJzdD1LcCxZcC5QcmV2PXFwLFlwLkVsbGlwc2lzPVZwLFlwLkl0ZW09QnAsWXAuTmV4dD1VcCxZcC5MYXN0PVdwO3ZhciBIcD1ZcCxHcD1uKCIvZ1hrIiksUXA9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNC4xMyA3LjczTDkuNzI5IDIuMTNhLjM3OS4zNzkgMCAwIDEgLjI4LS4xMjljLjA4NiAwIC4xOTQuMDQyLjI4LjEyOWwuNTgxLjU4MWEuMzguMzggMCAwIDEgLjEzLjI4LjM4LjM4IDAgMCAxLS4xMy4yOEw2LjE1MyA3Ljk4OWw0LjcxNyA0Ljc0MWEuMzQ1LjM0NSAwIDAgMSAwIC41MzlsLS41ODEuNjAyYS40MTcuNDE3IDAgMCAxLS4yOC4xMy4zOC4zOCAwIDAgMS0uMjgtLjEzbC01LjYtNS42MDFhLjM0Ni4zNDYgMCAwIDEgMC0uNTM5eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtRcC5kaXNwbGF5TmFtZT0iQ2hldkxlZnQiLFFwLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBKcD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChRcCx7Y2xhc3NOYW1lOiJHbHlwaCBDaGV2TGVmdCJ9KX0sWnA9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTEuODcgNy43M2MuMDg3LjA2NS4xMy4xNzMuMTMuMjU4YS4zNDYuMzQ2IDAgMCAxLS4xMy4yOEw2LjI3MSAxMy44N2EuMzguMzggMCAwIDEtLjI4LjEzLjQxNy40MTcgMCAwIDEtLjI4LS4xM2wtLjU4MS0uNjAyYS4zNDUuMzQ1IDAgMCAxIDAtLjUzOGw0LjcxNy00Ljc0Mkw1LjEzIDMuMjcxQS4zOC4zOCAwIDAgMSA1IDIuOTlhLjM4LjM4IDAgMCAxIC4xMy0uMjhsLjU4MS0uNTgyQS40MTUuNDE1IDAgMCAxIDUuOTkxIDJjLjEwOCAwIC4xOTQuMDQyLjI4LjEyOWw1LjYgNS42MDF6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O1pwLmRpc3BsYXlOYW1lPSJDaGV2UmlnaHQiLFpwLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciAkcD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChacCx7Y2xhc3NOYW1lOiJHbHlwaCBDaGV2UmlnaHQifSl9LFhwPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTIgMTBhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0em02IDBhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0em02IDBhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtYcC5kaXNwbGF5TmFtZT0iT3B0aW9ucyIsWHAuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIGVoLHRoPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFhwLHtjbGFzc05hbWU6IkdseXBoIE9wdGlvbnMifSl9O2Z1bmN0aW9uIG5oKCl7cmV0dXJuKG5oPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcmgoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBvaD1FLmEuY3JlYXRlRWxlbWVudChKcCxudWxsKSxhaD1FLmEuY3JlYXRlRWxlbWVudCgkcCxudWxsKSxpaD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZnJjLXBhZ2luYXRpb24ifSxFLmEuY3JlYXRlRWxlbWVudChIcCxlKSl9O2loLmRpc3BsYXlOYW1lPSJXcmFwcGVyQ29tcG9uZW50Ijt2YXIgdWg9T2JqZWN0KEdwLmNyZWF0ZVVsdGltYXRlUGFnaW5hdGlvbikoe1dyYXBwZXJDb21wb25lbnQ6aWgsaXRlbVR5cGVUb0NvbXBvbmVudDooZWg9e30scmgoZWgsR3AuSVRFTV9UWVBFUy5QQUdFLChmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlLG49ZS5pc0FjdGl2ZSxyPWUub25DbGljaztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoSHAuSXRlbSx7YWN0aXZlOm4sb25DbGljazpyfSx0KX0pKSxyaChlaCxHcC5JVEVNX1RZUEVTLkVMTElQU0lTLChmdW5jdGlvbihlKXt2YXIgdD1lLmlzQWN0aXZlLG49ZS5vbkNsaWNrO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChIcC5FbGxpcHNpcyx7ZGlzYWJsZWQ6dCxvbkNsaWNrOm59LEUuYS5jcmVhdGVFbGVtZW50KHRoLG51bGwpKX0pKSxyaChlaCxHcC5JVEVNX1RZUEVTLkZJUlNUX1BBR0VfTElOSywoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbkNsaWNrO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChIcC5GaXJzdCx7b25DbGljazp0fSxvaCl9KSkscmgoZWgsR3AuSVRFTV9UWVBFUy5MQVNUX1BBR0VfTElOSywoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbkNsaWNrO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChIcC5GaXJzdCx7b25DbGljazp0fSxhaCl9KSksZWgpfSksc2g9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHVoLG5oKHtoaWRlUHJldmlvdXNBbmROZXh0UGFnZUxpbmtzOiEwfSxlKSl9O3NoLmRpc3BsYXlOYW1lPSJQYWdpbmF0aW9uIixzaC5wcm9wVHlwZXM9e3RvdGFsUGFnZXM6Vi5hLm51bWJlci5pc1JlcXVpcmVkLGN1cnJlbnRQYWdlOlYuYS5udW1iZXIuaXNSZXF1aXJlZCxoaWRlRWxsaXBzaXM6Vi5hLmJvb2wsb25DaGFuZ2U6Vi5hLmZ1bmMsZGlzYWJsZWQ6Vi5hLmJvb2x9LHNoLmRlZmF1bHRQcm9wcz17aGlkZUVsbGlwc2lzOiExLGRpc2FibGVkOiExfTt2YXIgbGg9c2gsY2g9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOSA3aDR2Mkg5djRIN1Y5SDNWN2g0VjNoMnoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07Y2guZGlzcGxheU5hbWU9IkFkZCIsY2guZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIGZoPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGNoLHtjbGFzc05hbWU6IkdseXBoIEFkZCJ9KX0sZGg9Vi5hLm9uZU9mKFsic20iLCJsZyJdKSxwaD1WLmEub25lT2YoWyJwcmltYXJ5Iiwib3V0bGluZS1wcmltYXJ5Iiwic2Vjb25kYXJ5Iiwib3V0bGluZS1zZWNvbmRhcnkiLCJzdWNjZXNzIiwib3V0bGluZS1zdWNjZXNzIiwid2FybmluZyIsIm91dGxpbmUtd2FybmluZyIsImRhbmdlciIsIm91dGxpbmUtZGFuZ2VyIiwiaW5mbyIsIm91dGxpbmUtaW5mbyIsImxpZ2h0Iiwib3V0bGluZS1saWdodCIsImRhcmsiLCJvdXRsaW5lLWRhcmsiLCJsaW5rIl0pLGhoPUlhO2hoLmRpc3BsYXlOYW1lPSJCdXR0b24iLGhoLnByb3BUeXBlcz17YWN0aXZlOlYuYS5ib29sLGFzOlYuYS5lbGVtZW50VHlwZSxibG9jazpWLmEuYm9vbCxkaXNhYmxlZDpWLmEuYm9vbCxocmVmOlYuYS5zdHJpbmcsdHlwZTpWLmEub25lT2YoWyJidXR0b24iLCJyZXNldCIsInN1Ym1pdCJdKSx2YXJpYW50OnBoLHNpemU6ZGh9LGhoLmRlZmF1bHRQcm9wcz17YWN0aXZlOiExLHZhcmlhbnQ6InNlY29uZGFyeSIsZGlzYWJsZWQ6ITEsdHlwZToiYnV0dG9uIn07dmFyIHloPWhoLG1oPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGlzYWJsZWQsbj1lLnRleHQscj1lLm9uQ2xpY2s7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHloLHtkaXNhYmxlZDp0LG9uQ2xpY2s6cn0sbil9O21oLmRpc3BsYXlOYW1lPSJTYXZlQWRkQnV0dG9uIixtaC5wcm9wVHlwZXM9e2Rpc2FibGVkOlYuYS5ib29sLHRleHQ6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2xpY2s6Vi5hLmZ1bmMuaXNSZXF1aXJlZH07dmFyIHZoPW1oLGdoPWZ1bmN0aW9uKGUpe3ZhciB0PWUub25DbGljayxuPWUudGV4dDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoeWgse29uQ2xpY2s6dCx2YXJpYW50OiJsaW5rIn0sbil9O2doLmRpc3BsYXlOYW1lPSJDYW5jZWxBZGRCdXR0b24iLGdoLnByb3BUeXBlcz17dGV4dDpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmMuaXNSZXF1aXJlZH0sZ2guZGVmYXVsdFByb3BzPXt0ZXh0OiJDYW5jZWwifTt2YXIgYmg9Z2g7ZnVuY3Rpb24gd2goZSl7cmV0dXJuKHdoPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gX2goZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBFaChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIE9oKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09d2godCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P0NoKGUpOnR9ZnVuY3Rpb24ga2goZSl7cmV0dXJuKGtoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBDaChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24geGgoZSx0KXtyZXR1cm4oeGg9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIFNoKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgRGg9ZnVuY3Rpb24oZSl7cmV0dXJuImFkZC1uZXctIi5jb25jYXQoZSl9LFRoPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QoRi5yZWR1Y2UpKGUsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7U2goZSx0LG5bdF0pfSkpfXJldHVybiBlfSh7fSxlLFNoKHt9LHQubmFtZSx0LnZhbHVlKSl9KSx7fSl9LE1oPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBTaCh7fSx0Lm5hbWUsdC52YWx1ZSl9LFBoPWZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gXy5DaGlsZHJlbi5tYXAodCwoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChfLmNsb25lRWxlbWVudCkodCx7Y2hpbGRyZW46dC5wcm9wcy5jaGlsZHJlbj9lKHQucHJvcHMuY2hpbGRyZW4sbik6dC5wcm9wcy5jaGlsZHJlbixmb3JtOm59KX0pKX0sTmg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47X2godGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gU2goQ2gobj1PaCh0aGlzLChlPWtoKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwic3RhdGUiLHt2YWxpZDohMX0pLFNoKENoKG4pLCJmb3JtTmFtZSIsRGgobi5wcm9wcy5uYW1lKSksU2goQ2gobiksImZpZWxkcyIsUGgobi5wcm9wcy5maWVsZHMsbi5mb3JtTmFtZSkpLFNoKENoKG4pLCJoYW5kbGVDYW5jZWxDbGljayIsKGZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMub25DYW5jZWw7ZS5wcmV2ZW50RGVmYXVsdCgpLHQoKX0pKSxTaChDaChuKSwiaGFuZGxlU2F2ZUNsaWNrIiwoZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcy5vblNhdmUscj1UaChuLmZvcm0pLG89T2JqZWN0KEYuaXNFbXB0eSkocik/TWgobi5wcm9wcy5pbnB1dElkKTpyO2UucHJldmVudERlZmF1bHQoKSx0KG8pfSkpLFNoKENoKG4pLCJoYW5kbGVGb3JtQ2hhbmdlIiwoZnVuY3Rpb24oKXtuLnNldFN0YXRlKHt2YWxpZDpuLmZvcm0uY2hlY2tWYWxpZGl0eSgpfSl9KSksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJnhoKGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJjb21wb25lbnRXaWxsTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jcmVhdGVkRm9ybT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIiksdGhpcy5jcmVhdGVkRm9ybS5pZD10aGlzLmZvcm1OYW1lLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVkRm9ybSl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZWRGb3JtO2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc2F2ZUJ1dHRvblRleHQsbj1lLmNhbmNlbEJ1dHRvblRleHQscj10aGlzLnN0YXRlLnZhbGlkLG89dGhpcy5maWVsZHM7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJhcnRpY2xlIix7Y2xhc3NOYW1lOiJTZWxlY3RJbnB1dFdpdGhBZGROZXctbmV3LWJveCIsb25DaGFuZ2U6dGhpcy5oYW5kbGVGb3JtQ2hhbmdlfSxvLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlNlbGVjdElucHV0V2l0aEFkZE5ldy1idXR0b24td3JhcHBlciJ9LEUuYS5jcmVhdGVFbGVtZW50KGJoLHtvbkNsaWNrOnRoaXMuaGFuZGxlQ2FuY2VsQ2xpY2ssdGV4dDpufSksRS5hLmNyZWF0ZUVsZW1lbnQodmgse2Rpc2FibGVkOiFyLHRleHQ6dCxvbkNsaWNrOnRoaXMuaGFuZGxlU2F2ZUNsaWNrfSkpKX19LHtrZXk6ImZvcm0iLGdldDpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5mb3Jtc1t0aGlzLmZvcm1OYW1lXX19XSkmJkVoKG4ucHJvdG90eXBlLHIpLG8mJkVoKG4sbyksdH0oXy5Db21wb25lbnQpO2Z1bmN0aW9uIGpoKGUpe3JldHVybihqaD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIExoKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPW5ldyBBcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSl8fCJbb2JqZWN0IEFyZ3VtZW50c10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfWZ1bmN0aW9uIFJoKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gSWgoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBBaChlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PWpoKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9CaChlKTp0fWZ1bmN0aW9uIEZoKGUpe3JldHVybihGaD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gQmgoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIHpoKGUsdCl7cmV0dXJuKHpoPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBLaChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9U2goTmgsInByb3BUeXBlcyIse3NhdmVCdXR0b25UZXh0OlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxjYW5jZWxCdXR0b25UZXh0OlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxuYW1lOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxmaWVsZHM6Vi5hLm5vZGUuaXNSZXF1aXJlZCxvbkNhbmNlbDpWLmEuZnVuYy5pc1JlcXVpcmVkLG9uU2F2ZTpWLmEuZnVuYy5pc1JlcXVpcmVkLGlucHV0SWQ6Vi5hLnN0cmluZ30pLE5oLmRpc3BsYXlOYW1lPSJBZGROZXdCb3giO3ZhciBxaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjtSaCh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybiBLaChCaChuPUFoKHRoaXMsKGU9RmgodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLCJzdGF0ZSIse2V4cGFuZGVkOm4ucHJvcHMuZGVmYXVsdEV4cGFuZGVkLG5ld09wdGlvbjpudWxsfSksS2goQmgobiksImhhbmRsZUFkZE5ld0NsaWNrIiwoZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PW4uc3RhdGUuZXhwYW5kZWQ7bi5zZXRTdGF0ZSh7ZXhwYW5kZWQ6IXR9KX0pKSxLaChCaChuKSwiaGFuZGxlQWRkQ2FuY2VsIiwoZnVuY3Rpb24oKXtuLnNldFN0YXRlKHtleHBhbmRlZDohMX0pfSkpLEtoKEJoKG4pLCJoYW5kbGVBZGRTYXZlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQubWFwVmFsdWVzVG9PcHRpb24sbz10Lm9uQ2hhbmdlLGE9dC5vblNhdmU7aWYoYSlhKGUpLG4uc2V0U3RhdGUoe2V4cGFuZGVkOiExfSk7ZWxzZXt2YXIgaT1yKGUpO24uc2V0U3RhdGUoe2V4cGFuZGVkOiExLG5ld09wdGlvbjppfSwoZnVuY3Rpb24oKXtyZXR1cm4gbyhpLnZhbHVlKX0pKX19KSksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJnpoKGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuYWRkQnV0dG9uVGV4dCxuPWUuY2FuY2VsQnV0dG9uVGV4dCxyPWUuY2hpbGRyZW4sbz1lLmRpc2FibGVkLGE9ZS5pbnB1dFByb3BzLGk9ZS5uYW1lLHU9ZS5vcHRpb25zLHM9ZS52YWx1ZSxsPWUub25DaGFuZ2UsYz1lLnBsYWNlaG9sZGVyLGY9ZS5zYXZlQnV0dG9uVGV4dCxkPWUuaW5wdXRJZCxwPWUucWFpZCxoPXRoaXMuc3RhdGUseT1oLmV4cGFuZGVkLG09aC5uZXdPcHRpb247cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtpZDpwfSxFLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiU2VsZWN0SW5wdXRXaXRoQWRkTmV3LWNvbnRhaW5lciJ9LEUuYS5jcmVhdGVFbGVtZW50KHRuLHtjbGFzc05hbWU6IlNlbGVjdElucHV0V2l0aEFkZE5ldy1kcm9wZG93biIsZGlzYWJsZWQ6byxpbnB1dFByb3BzOmEsb3B0aW9uczptP1ttXS5jb25jYXQoTGgodSkpOnUscGxhY2Vob2xkZXI6YyxvbkNoYW5nZTpsLHZhbHVlOnN9KSxFLmEuY3JlYXRlRWxlbWVudCh5aCx7Y2xhc3NOYW1lOiJTZWxlY3RJbnB1dFdpdGhBZGROZXctYWRkLWJ1dHRvbiBpY29uLWxlZnQiLGRpc2FibGVkOm8sdHlwZToiYnV0dG9uIixvbkNsaWNrOnRoaXMuaGFuZGxlQWRkTmV3Q2xpY2ssdmFyaWFudDoibGluayJ9LCIgIixFLmEuY3JlYXRlRWxlbWVudChmaCxudWxsKSx0KSx5P0UuYS5jcmVhdGVFbGVtZW50KE5oLHtuYW1lOmksc2F2ZUJ1dHRvblRleHQ6ZixjYW5jZWxCdXR0b25UZXh0Om4sZmllbGRzOnIsb25DYW5jZWw6dGhpcy5oYW5kbGVBZGRDYW5jZWwsb25TYXZlOnRoaXMuaGFuZGxlQWRkU2F2ZSxpbnB1dElkOmR9KTpudWxsKSl9fV0pJiZJaChuLnByb3RvdHlwZSxyKSxvJiZJaChuLG8pLHR9KF8uQ29tcG9uZW50KTtLaChxaCwicHJvcFR5cGVzIix7YWRkQnV0dG9uVGV4dDpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsY2FuY2VsQnV0dG9uVGV4dDpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsY2hpbGRyZW46Vi5hLm5vZGUuaXNSZXF1aXJlZCxkZWZhdWx0RXhwYW5kZWQ6Vi5hLmJvb2wsZGlzYWJsZWQ6Vi5hLmJvb2wsaW5wdXRQcm9wczpWLmEub2JqZWN0LGlucHV0SWQ6Vi5hLnN0cmluZyxtYXBWYWx1ZXNUb09wdGlvbjpWLmEuZnVuYyxuYW1lOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxvbkNoYW5nZTpWLmEuZnVuYy5pc1JlcXVpcmVkLG9uU2F2ZTpWLmEuZnVuYyxvcHRpb25zOlYuYS5hcnJheU9mKFYuYS5zaGFwZSh7bGFiZWw6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLHZhbHVlOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLm51bWJlcl0pLmlzUmVxdWlyZWR9KSkscGxhY2Vob2xkZXI6Vi5hLnN0cmluZyxzYXZlQnV0dG9uVGV4dDpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsdmFsdWU6Vi5hLm9uZU9mVHlwZShbVi5hLnN0cmluZyxWLmEubnVtYmVyXSkscWFpZDpWLmEuc3RyaW5nfSksS2gocWgsImRlZmF1bHRQcm9wcyIse2RlZmF1bHRFeHBhbmRlZDohMSxkaXNhYmxlZDohMSxvcHRpb25zOltdLHBsYWNlaG9sZGVyOiIifSkscWguZGlzcGxheU5hbWU9IlNlbGVjdElucHV0V2l0aEFkZE5ldyI7dmFyIFZoPW4oImQzTFgiKSxVaD1uLm4oVmgpLFdoPW4oIlZ6aFIiKSxZaD1uLm4oV2gpLEhoPTM2NSxHaD0yNyxRaD02LEpoPTkwLFpoPSJhcnRpc3RzIiwkaD0idHJhY2tzIixYaD0xMyxleT1mdW5jdGlvbihlKXt2YXIgdD1lLnNob3dOZXh0QnV0dG9uLG49ZS5zaG93UHJldmlvdXNCdXR0b24scj1lLm9uUHJldmlvdXNDbGljayxvPWUub25OZXh0Q2xpY2ssYT1lLmNsYXNzTmFtZTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTphfSxuJiZFLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJEYXlQaWNrZXItbGVmdC1hcnJvdyIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiByKCl9LHR5cGU6ImJ1dHRvbiJ9LEUuYS5jcmVhdGVFbGVtZW50KEpwLG51bGwpKSx0JiZFLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJEYXlQaWNrZXItcmlnaHQtYXJyb3ciLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbygpfSx0eXBlOiJidXR0b24ifSxFLmEuY3JlYXRlRWxlbWVudCgkcCxudWxsKSkpfTtleS5kaXNwbGF5TmFtZT0iTmF2YmFyIixleS5wcm9wVHlwZXM9e3Nob3dOZXh0QnV0dG9uOlYuYS5ib29sLHNob3dQcmV2aW91c0J1dHRvbjpWLmEuYm9vbCxvblByZXZpb3VzQ2xpY2s6Vi5hLmZ1bmMsb25OZXh0Q2xpY2s6Vi5hLmZ1bmMsY2xhc3NOYW1lOlYuYS5zdHJpbmd9O3ZhciB0eT1leSxueT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNCAyaDEuNTA0Yy4yNzQgMCAuNDk2LjIyNi40OTYuNDk0djEyLjAxMmEuNDk4LjQ5OCAwIDAgMS0uNDk2LjQ5NEguNDk2QS40OTguNDk4IDAgMCAxIDAgMTQuNTA2VjIuNDk0QzAgMi4yMi4yMjYgMiAuNDk2IDJIMlYxaDN2MWg2VjFoM3Yxek0yIDZ2N2gxMlY2SDJ6bTIgMWgydjJINFY3em0wIDNoMnYySDR2LTJ6bTMtM2gydjJIN1Y3em0wIDNoMnYySDd2LTJ6bTMtM2gydjJoLTJWN3ptMCAzaDJ2MmgtMnYtMnoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07bnkuZGlzcGxheU5hbWU9IkNhbGVuZGFyIixueS5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgcnk9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQobnkse2NsYXNzTmFtZToiR2x5cGggQ2FsZW5kYXIifSl9O2Z1bmN0aW9uIG95KGUpe3JldHVybihveT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGF5KCl7cmV0dXJuKGF5PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaXkoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfWZ1bmN0aW9uIHV5KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gc3koZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBseShlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PW95KHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9meShlKTp0fWZ1bmN0aW9uIGN5KGUpe3JldHVybihjeT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gZnkoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIGR5KGUsdCl7cmV0dXJuKGR5PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBweShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGh5PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuO3V5KHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuIHB5KGZ5KG49bHkodGhpcywoZT1jeSh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSksImhhbmRsZUJlZm9yZUtleURvd24iLChmdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLHI9dC5vbktleURvd24sbz10Lm9uQmVmb3JlS2V5RG93bjtvJiZvKGUpLHImJiFlLmRlZmF1bHRQcmV2ZW50ZWQmJnIoZSl9KSksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJmR5KGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlucHV0JiZ0aGlzLmlucHV0LmZvY3VzKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj0odC5vbktleURvd24sdC5vbkJlZm9yZUtleURvd24saXkodCxbIm9uS2V5RG93biIsIm9uQmVmb3JlS2V5RG93biJdKSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRheVBpY2tlcklucHV0LXdyYXBwZXIifSxFLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLGF5KHt9LG4se3JlZjpmdW5jdGlvbih0KXtlLmlucHV0PXR9LG9uS2V5RG93bjp0aGlzLmhhbmRsZUJlZm9yZUtleURvd259KSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRGF5UGlja2VySW5wdXQtaWNvbiJ9LEUuYS5jcmVhdGVFbGVtZW50KHJ5LG51bGwpKSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQ/dGhpcy5pbnB1dC52YWx1ZToiIn19XSkmJnN5KG4ucHJvdG90eXBlLHIpLG8mJnN5KG4sbyksdH0oXy5Db21wb25lbnQpO2h5LmRpc3BsYXlOYW1lPSJJbnB1dCIsaHkucHJvcFR5cGVzPXtvbktleURvd246Vi5hLmZ1bmMsb25CZWZvcmVLZXlEb3duOlYuYS5mdW5jfTt2YXIgeXk9aHksbXk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mcm9tTW9udGgsbj1lLnRvTW9udGgscj1lLmRhdGUsbz1lLmxvY2FsZSxhPWUubG9jYWxlVXRpbHMsaT1lLm9uQ2hhbmdlLHU9dHx8bmV3IERhdGUoMTkwMCwwLDEpLHM9bnx8bmV3IERhdGUoMjA5OSwxMSwxKSxsPU9iamVjdChGLnJhbmdlKSh1LmdldEZ1bGxZZWFyKCkscy5nZXRGdWxsWWVhcigpKzEpLGM9YS5nZXRNb250aHMobyksZj1yLmdldEZ1bGxZZWFyKCksZD1mPT09dS5nZXRGdWxsWWVhcigpP3UuZ2V0TW9udGgoKTowLHA9Zj09PXMuZ2V0RnVsbFllYXIoKT9zLmdldE1vbnRoKCk6MTEsaD1mdW5jdGlvbihlKXt2YXIgdD0ieWVhciI9PT1lLnRhcmdldC5uYW1lP3BhcnNlSW50KGUudGFyZ2V0LnZhbHVlLDEwKTpyLmdldEZ1bGxZZWFyKCksbj0ibW9udGgiPT09ZS50YXJnZXQubmFtZT9wYXJzZUludChlLnRhcmdldC52YWx1ZSwxMCk6ci5nZXRNb250aCgpO2kobmV3IERhdGUodCxuKSl9O3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJEYXlQaWNrZXItQ2FwdGlvbiBmb3JtLWlubGluZSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiLHtjbGFzc05hbWU6IkRheVBpY2tlci1Nb250aC1QaWNrZXIgZm9ybS1jb250cm9sIixuYW1lOiJtb250aCIsdmFsdWU6ci5nZXRNb250aCgpLG9uQ2hhbmdlOmh9LGMuc2xpY2UoZCxwKzEpLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIse2tleTplLHZhbHVlOnQrZH0sZSl9KSkpLEUuYS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiLHtjbGFzc05hbWU6IkRheVBpY2tlci1ZZWFyLVBpY2tlciBmb3JtLWNvbnRyb2wiLG5hbWU6InllYXIiLHZhbHVlOnIuZ2V0RnVsbFllYXIoKSxvbkNoYW5nZTpofSxsLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJvcHRpb24iLHtrZXk6ZSx2YWx1ZTplfSxlKX0pKSkpfTtteS5kaXNwbGF5TmFtZT0iQ2FwdGlvbiIsbXkucHJvcFR5cGVzPXtmcm9tTW9udGg6Vi5hLmluc3RhbmNlT2YoRGF0ZSksdG9Nb250aDpWLmEuaW5zdGFuY2VPZihEYXRlKSxkYXRlOlYuYS5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsbG9jYWxlOlYuYS5zdHJpbmcsbG9jYWxlVXRpbHM6Vi5hLm9iamVjdC5pc1JlcXVpcmVkLG9uQ2hhbmdlOlYuYS5mdW5jLmlzUmVxdWlyZWR9O3ZhciB2eT1teTtmdW5jdGlvbiBneShlKXtyZXR1cm4oZ3k9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBieSgpe3JldHVybihieT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHd5KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7Q3koZSx0LG5bdF0pfSkpfXJldHVybiBlfWZ1bmN0aW9uIF95KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gRXkoZSl7cmV0dXJuKEV5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBPeShlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24ga3koZSx0KXtyZXR1cm4oa3k9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIEN5KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgeHk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe3ZhciByO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1neSh0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/T3koZSk6dH0odGhpcyxFeSh0KS5jYWxsKHRoaXMsZSxuKSksQ3koT3kociksImdldExvY2FsZVV0aWxzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHd5KHt9LFloLmEse2dldE1vbnRoczpmdW5jdGlvbih0KXtmb3IodmFyIG49bWwoKSgpLmxvY2FsZSh0fHwiZW4iKSxyPWU/Ik1NTSI6Ik1NTU0iLG89W10sYT0wO2E8MTI7YSsrKW8ucHVzaChuLm1vbnRoKGEpLmZvcm1hdChyKS5yZXBsYWNlKC9cLiQvLCIiKSk7cmV0dXJuIG99fSl9KSksQ3koT3kociksImZvcm1hdERhdGUiLChmdW5jdGlvbihlKXt2YXIgdD1tbCgpKGUpO3JldHVybiB0LmlzVmFsaWQoKT90LmZvcm1hdChyLmRhdGVGb3JtYXQpOiIifSkpLEN5KE95KHIpLCJoYW5kbGVEYXlQaWNrZXJJbnB1dEtleVVwIiwoZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT09WGgmJnIuZGF5UGlja2VySW5wdXQmJihyLnBhcnNlRGF0ZShlLnRhcmdldC52YWx1ZSk/ci5zaG93T3ZlcmxheSYmci5kYXlQaWNrZXJJbnB1dC5oaWRlRGF5UGlja2VyKCk6ci5kYXlQaWNrZXJJbnB1dC5oYW5kbGVJbnB1dENoYW5nZSh3eSh7fSxlLHt0YXJnZXQ6d3koe30sZS50YXJnZXQse3ZhbHVlOnIuZm9ybWF0RGF0ZShEYXRlLm5vdygpKX0pfSkpKX0pKSxDeShPeShyKSwiaGFuZGxlRGF5UGlja2VySW5wdXRCZWZvcmVLZXlEb3duIiwoZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT09WGgmJnIuZGF5UGlja2VySW5wdXQmJihlLnByZXZlbnREZWZhdWx0KCksci5zaG93T3ZlcmxheT1yLmRheVBpY2tlcklucHV0LnN0YXRlLnNob3dPdmVybGF5KX0pKSxDeShPeShyKSwiaGFuZGxlWWVhck1vbnRoQ2hhbmdlIiwoZnVuY3Rpb24oZSl7ci5zZXRTdGF0ZSh7ZGF0ZTplfSl9KSksQ3koT3kociksInBhcnNlRGF0ZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PW1sKCkoZSxyLmRhdGVGb3JtYXQsITApO3JldHVybiB0LmlzVmFsaWQoKT90LnRvRGF0ZSgpOnZvaWQgMH0pKSxDeShPeShyKSwiaGFuZGxlQ2hhbmdlIiwoZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCx0PXIucHJvcHMsbj10Lm9uQ2hhbmdlLG89dC5yZXR1cm5FdmVudElmRXJyb3I7aWYobil7dmFyIGEsaT1tbCgpKGUpO2lmKCFpLmlzVmFsaWQoKSYmbyl7dmFyIHU9IiI7aWYoci5kYXlQaWNrZXJJbnB1dCl7dmFyIHM9ci5kYXlQaWNrZXJJbnB1dC5nZXRJbnB1dCgpO3MmJih1PXMudmFsdWUpfWE9e3RhcmdldDp7dmFsdWU6dX19fWVsc2UgYT1yLmZvcm1hdERhdGUoZSk7bihhLHtkYXRlTW9tZW50Oml9KX19KSksci5zdGF0ZT17ZGF0ZTpyLnBhcnNlRGF0ZShlLnZhbHVlKX0scn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJmt5KGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzKCl9fSx7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXMoKX19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuZGF5UGlja2VySW5wdXQmJnRoaXMucHJvcHMuZm9jdXMpe3ZhciBlPXRoaXMuZGF5UGlja2VySW5wdXQuZ2V0SW5wdXQoKTtlJiZlLmZvY3VzKCl9fX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5zaG9ydE1vbnRoLHI9dC5kaXNhYmxlZCxvPXQucmVuZGVyVG9kYXlCdXR0b24sYT10Lm1pbkRhdGUsaT10Lm1heERhdGUsdT10Lm5hbWUscz10LnZhbHVlLGw9dC5mb3JtYXRNZXNzYWdlLGM9dC5tZXNzYWdlcy50b2RheUxhYmVsLGY9dC5kYXlQaWNrZXJPcHRpb25zLGQ9dC5kYXlQaWNrZXJJbnB1dE9wdGlvbnMscD10aGlzLnBhcnNlRGF0ZShhKSxoPXRoaXMucGFyc2VEYXRlKGkpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChVaC5hLGJ5KHtyZWY6ZnVuY3Rpb24odCl7ZS5kYXlQaWNrZXJJbnB1dD10fSxwbGFjZWhvbGRlcjp0aGlzLmRhdGVGb3JtYXQsZm9ybWF0OnRoaXMuZGF0ZUZvcm1hdCxmb3JtYXREYXRlOnRoaXMuZm9ybWF0RGF0ZSxwYXJzZURhdGU6dGhpcy5wYXJzZURhdGUsb25EYXlDaGFuZ2U6dGhpcy5oYW5kbGVDaGFuZ2UsaW5wdXRQcm9wczp7ZGlzYWJsZWQ6cixuYW1lOnUsY2xhc3NOYW1lOiJEYXRlRmllbGQtZm9ybS1jb250cm9sIGZvcm0tY29udHJvbCBEYXlQaWNrZXJJbnB1dC1pbnB1dCIsb25LZXlVcDp0aGlzLmhhbmRsZURheVBpY2tlcklucHV0S2V5VXAsb25CZWZvcmVLZXlEb3duOnRoaXMuaGFuZGxlRGF5UGlja2VySW5wdXRCZWZvcmVLZXlEb3dufSx2YWx1ZTpzLGNvbXBvbmVudDp5eSxkYXlQaWNrZXJQcm9wczp3eSh7bW9udGg6dGhpcy5zdGF0ZS5kYXRlLGZyb21Nb250aDpwLHRvTW9udGg6aCxsb2NhbGU6ImVuIixsb2NhbGVVdGlsczp0aGlzLmdldExvY2FsZVV0aWxzKG4pLHNob3dPdXRzaWRlRGF5czohMSxlbmFibGVPdXRzaWRlRGF5c0NsaWNrOiExLGNhbkNoYW5nZU1vbnRoOiEwLG5hdmJhckVsZW1lbnQ6dHksY2FwdGlvbkVsZW1lbnQ6ZnVuY3Rpb24odCl7dmFyIG49dC5kYXRlLHI9dC5sb2NhbGUsbz10LmxvY2FsZVV0aWxzO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCh2eSx7ZnJvbU1vbnRoOnAsdG9Nb250aDpoLGRhdGU6bixsb2NhbGU6cixsb2NhbGVVdGlsczpvLG9uQ2hhbmdlOmUuaGFuZGxlWWVhck1vbnRoQ2hhbmdlfSl9LHRvZGF5QnV0dG9uOm8/bChjKToiIixtb2RpZmllcnM6e2Rpc2FibGVkOntiZWZvcmU6cCxhZnRlcjpofX19LGYpfSxkKSl9fSx7a2V5OiJkYXRlRm9ybWF0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5kYXRlRm9ybWF0fHx0LmRlZmF1bHRQcm9wcy5kYXRlRm9ybWF0fX1dKSYmX3kobi5wcm90b3R5cGUsciksbyYmX3kobixvKSx0fShfLkNvbXBvbmVudCk7Q3koeHksInByb3BUeXBlcyIse25hbWU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2hhbmdlOlYuYS5mdW5jLHZhbHVlOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLmluc3RhbmNlT2YoRGF0ZSldKSxkaXNhYmxlZDpWLmEuYm9vbCxtaW5EYXRlOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLmluc3RhbmNlT2YoRGF0ZSldKSxtYXhEYXRlOlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLmluc3RhbmNlT2YoRGF0ZSldKSxmb2N1czpWLmEuYm9vbCxzaG9ydE1vbnRoOlYuYS5ib29sLGRhdGVGb3JtYXQ6Vi5hLnN0cmluZyxyZW5kZXJUb2RheUJ1dHRvbjpWLmEuYm9vbCxmb3JtYXRNZXNzYWdlOlYuYS5mdW5jLG1lc3NhZ2VzOlYuYS5zaGFwZSh7dG9kYXlMYWJlbDpWLmEub2JqZWN0fSksZGF5UGlja2VyT3B0aW9uczpWLmEub2JqZWN0LGRheVBpY2tlcklucHV0T3B0aW9uczpWLmEub2JqZWN0LHJldHVybkV2ZW50SWZFcnJvcjpWLmEuYm9vbH0pLEN5KHh5LCJkZWZhdWx0UHJvcHMiLHtvbkNoYW5nZTpNdCxkYXRlRm9ybWF0OiJZWVlZLU1NLUREIixmb2N1czohMSxzaG9ydE1vbnRoOiExLHJlbmRlclRvZGF5QnV0dG9uOiEwLGZvcm1hdE1lc3NhZ2U6TXQsbWVzc2FnZXM6e30scmV0dXJuRXZlbnRJZkVycm9yOiExfSkseHkuZGlzcGxheU5hbWU9IkRheUlucHV0Ijt2YXIgU3k9bigidjgzeSIpO2Z1bmN0aW9uIER5KGUsdCxuKXtmb3IodmFyIHI9ZS50ZXh0LG89ZS5jaGFyYWN0ZXJNZXRhLGE9dC5sZW5ndGgsaT1uLmxlbmd0aCx1PVtdLHM9by5zbGljZSgwLDApLGw9MCxjPXIuaW5kZXhPZih0KTstMSE9PWM7KXUucHVzaChyLnNsaWNlKGwsYykrbikscz1zLmNvbmNhdChvLnNsaWNlKGwsYyksVHkoby5zbGljZShjLGMrMSksaSkpLGw9YythLGM9ci5pbmRleE9mKHQsbCk7cmV0dXJuIHUucHVzaChyLnNsaWNlKGwpKSxzPXMuY29uY2F0KG8uc2xpY2UobCkpLHt0ZXh0OnUuam9pbigiIiksY2hhcmFjdGVyTWV0YTpzfX1mdW5jdGlvbiBUeShlLHQpe2Zvcih2YXIgbj1lLnNsaWNlKDAsMCk7dC0tID4wOyluPW4uY29uY2F0KGUpO3JldHVybiBufXZhciBNeT1uKCJKUGN2IiksUHk9e1VOU1RZTEVEOiJ1bnN0eWxlZCIsSEVBREVSX09ORToiaGVhZGVyLW9uZSIsSEVBREVSX1RXTzoiaGVhZGVyLXR3byIsSEVBREVSX1RIUkVFOiJoZWFkZXItdGhyZWUiLEhFQURFUl9GT1VSOiJoZWFkZXItZm91ciIsSEVBREVSX0ZJVkU6ImhlYWRlci1maXZlIixIRUFERVJfU0lYOiJoZWFkZXItc2l4IixVTk9SREVSRURfTElTVF9JVEVNOiJ1bm9yZGVyZWQtbGlzdC1pdGVtIixPUkRFUkVEX0xJU1RfSVRFTToib3JkZXJlZC1saXN0LWl0ZW0iLEJMT0NLUVVPVEU6ImJsb2NrcXVvdGUiLFBVTExRVU9URToicHVsbHF1b3RlIixDT0RFOiJjb2RlLWJsb2NrIixBVE9NSUM6ImF0b21pYyJ9LE55PXtMSU5LOiJMSU5LIixJTUFHRToiSU1BR0UiLEVNQkVEOiJlbWJlZCJ9LGp5PXtCT0xEOiJCT0xEIixDT0RFOiJDT0RFIixJVEFMSUM6IklUQUxJQyIsU1RSSUtFVEhST1VHSDoiU1RSSUtFVEhST1VHSCIsVU5ERVJMSU5FOiJVTkRFUkxJTkUifSxMeT1uZXcgTXkuT3JkZXJlZFNldDtmdW5jdGlvbiBSeShlLHQpe2Zvcih2YXIgbj1MeSxyPUx5LG89W10sYT0wLGk9MCx1PWUubGVuZ3RoO2k8dTtpKyspe3I9bjt2YXIgcz10LmdldChpKTtuPXM/cy5nZXRTdHlsZSgpOkx5LGk+MCYmIU9iamVjdChNeS5pcykobixyKSYmKG8ucHVzaChbZS5zbGljZShhLGkpLHJdKSxhPWkpfXJldHVybiBvLnB1c2goW2Uuc2xpY2UoYSksbl0pLG99dmFyIEl5PXthOjEsYWJicjoxLGFyZWE6MSxhdWRpbzoxLGI6MSxiZGk6MSxiZG86MSxicjoxLGJ1dHRvbjoxLGNhbnZhczoxLGNpdGU6MSxjb2RlOjEsY29tbWFuZDoxLGRhdGFsaXN0OjEsZGVsOjEsZGZuOjEsZW06MSxlbWJlZDoxLGk6MSxpZnJhbWU6MSxpbWc6MSxpbnB1dDoxLGluczoxLGtiZDoxLGtleWdlbjoxLGxhYmVsOjEsbWFwOjEsbWFyazoxLG1ldGVyOjEsbm9zY3JpcHQ6MSxvYmplY3Q6MSxvdXRwdXQ6MSxwcm9ncmVzczoxLHE6MSxydWJ5OjEsczoxLHNhbXA6MSxzY3JpcHQ6MSxzZWxlY3Q6MSxzbWFsbDoxLHNwYW46MSxzdHJvbmc6MSxzdWI6MSxzdXA6MSx0ZXh0YXJlYToxLHRpbWU6MSx1OjEsdmFyOjEsdmlkZW86MSx3YnI6MSxhY3JvbnltOjEsYXBwbGV0OjEsYmFzZWZvbnQ6MSxiaWc6MSxmb250OjEsaXNpbmRleDoxLHN0cmlrZToxLHN0eWxlOjEsdHQ6MX0sQXk9e2FyZWE6MSxiYXNlOjEsYnI6MSxjb2w6MSxjb2xncm91cDoxLGNvbW1hbmQ6MSxkbDoxLGVtYmVkOjEsaGVhZDoxLGhncm91cDoxLGhyOjEsaWZyYW1lOjEsaW1nOjEsaW5wdXQ6MSxrZXlnZW46MSxsaW5rOjEsbWV0YToxLG9sOjEsb3B0Z3JvdXA6MSxvcHRpb246MSxwYXJhbToxLHNjcmlwdDoxLHNlbGVjdDoxLHNvdXJjZToxLHN0eWxlOjEsdGFibGU6MSx0Ym9keToxLHRleHRhcmVhOjEsdGZvb3Q6MSx0aGVhZDoxLHRpdGxlOjEsdHI6MSx0cmFjazoxLHVsOjEsd2JyOjEsYmFzZWZvbnQ6MSxkaWFsb2c6MSxkaXI6MSxpc2luZGV4OjF9LEZ5PXtpbWc6MX07ZnVuY3Rpb24gQnkoZSl7cmV0dXJuKEJ5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24genkoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmbi5wdXNoLmFwcGx5KG4sT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSksdCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbn1mdW5jdGlvbiBLeShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHF5KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gVnkoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBVeT0vXmRhdGE6L2ksV3k9T2JqZWN0KE15Lk9yZGVyZWRTZXQpKCksWXk9bmV3IFN5LkNvbnRlbnRCbG9jayh7a2V5Ok9iamVjdChTeS5nZW5LZXkpKCksdGV4dDoiIix0eXBlOlB5LlVOU1RZTEVELGNoYXJhY3Rlckxpc3Q6T2JqZWN0KE15Lkxpc3QpKCksZGVwdGg6MH0pLEh5PS8oXHJcbnxccnxcbikvZyxHeT0vXmRhdGEtKFthLXowLTktXSspJC8sUXk9e2E6e2hyZWY6InVybCIscmVsOiJyZWwiLHRhcmdldDoidGFyZ2V0Iix0aXRsZToidGl0bGUifSxpbWc6e3NyYzoic3JjIixhbHQ6ImFsdCIsd2lkdGg6IndpZHRoIixoZWlnaHQ6ImhlaWdodCJ9fSxKeT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2lmKFF5Lmhhc093blByb3BlcnR5KGUpKWZvcih2YXIgcj1ReVtlXSxvPTA7bzx0LmF0dHJpYnV0ZXMubGVuZ3RoO28rKyl7dmFyIGE9dC5hdHRyaWJ1dGVzW29dLGk9YS5uYW1lLHU9YS52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIHUpe3ZhciBzPXU7aWYoci5oYXNPd25Qcm9wZXJ0eShpKSluW3JbaV1dPXM7ZWxzZSBHeS50ZXN0KGkpJiYobltpXT1zKX19cmV0dXJuIG59LFp5PXthOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvPUp5KHQsbik7aWYobnVsbCE9KHI9by51cmwpJiYhci5tYXRjaChVeSkpcmV0dXJuIGUuY3JlYXRlRW50aXR5KE55LkxJTkssbyl9LGltZzpmdW5jdGlvbihlLHQsbil7dmFyIHI9SnkodCxuKTtpZihudWxsIT1yLnNyYylyZXR1cm4gZS5jcmVhdGVFbnRpdHkoTnkuSU1BR0Uscil9fSwkeT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgdD10aGlzLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O0t5KHRoaXMsZSksVnkodGhpcywiY29udGVudFN0YXRlRm9yRW50aXRpZXMiLHZvaWQgMCksVnkodGhpcywiYmxvY2tTdGFjayIsdm9pZCAwKSxWeSh0aGlzLCJibG9ja0xpc3QiLHZvaWQgMCksVnkodGhpcywiZGVwdGgiLHZvaWQgMCksVnkodGhpcywib3B0aW9ucyIsdm9pZCAwKSxWeSh0aGlzLCJpbmxpbmVDcmVhdG9ycyIse1N0eWxlOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGUudG9TdHJpbmcoKX0sdH0oKGZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOiJTVFlMRSIsc3R5bGU6ZX19KSksRW50aXR5OmZ1bmN0aW9uKGUsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJNVVRBQkxFIjtyZXR1cm57dHlwZToiRU5USVRZIixlbnRpdHlLZXk6dC5jcmVhdGVFbnRpdHkoZSxYeShuKSxyKX19fSksdGhpcy5vcHRpb25zPW4sdGhpcy5jb250ZW50U3RhdGVGb3JFbnRpdGllcz1TeS5Db250ZW50U3RhdGUuY3JlYXRlRnJvbUJsb2NrQXJyYXkoW10pLHRoaXMuYmxvY2tTdGFjaz1bXSx0aGlzLmJsb2NrTGlzdD1bXSx0aGlzLmRlcHRoPTB9dmFyIHQsbixyO3JldHVybiB0PWUsKG49W3trZXk6InByb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucHJvY2Vzc0Jsb2NrRWxlbWVudChlKTt2YXIgdD1bXTtyZXR1cm4gdGhpcy5ibG9ja0xpc3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9IiIsbj1PYmplY3QoTXkuU2VxKSgpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QrPWUudGV4dCxuPW4uY29uY2F0KGUuY2hhcmFjdGVyTWV0YSl9KSkse3RleHQ6dCxjaGFyYWN0ZXJNZXRhOm59fShlLnRleHRGcmFnbWVudHMpLHI9bi50ZXh0LG89bi5jaGFyYWN0ZXJNZXRhLGE9ITE7aWYoIlxyIj09PXImJihhPSEwLHI9IiIpLCJwcmUiPT09ZS50YWdOYW1lKXt2YXIgaT1mdW5jdGlvbihlLHQpe3JldHVybiJcbiI9PT1lLmNoYXJBdCgwKSYmKGU9ZS5zbGljZSgxKSx0PXQuc2xpY2UoMSkpLHt0ZXh0OmUsY2hhcmFjdGVyTWV0YTp0fX0ocixvKTtyPWkudGV4dCxvPWkuY2hhcmFjdGVyTWV0YX1lbHNle3ZhciB1PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSx0KXtmb3IoOyIgIj09PWUuY2hhckF0KDApOyllPWUuc2xpY2UoMSksdD10LnNsaWNlKDEpO3JldHVybnt0ZXh0OmUsY2hhcmFjdGVyTWV0YTp0fX0oZT1lLnJlcGxhY2UoL1sgXHRcbl0vZywiICIpLHQpO2U9bi50ZXh0LHQ9bi5jaGFyYWN0ZXJNZXRhO3ZhciByPWZ1bmN0aW9uKGUsdCl7Zm9yKDsiICI9PT1lLnNsaWNlKC0xKTspZT1lLnNsaWNlKDAsLTEpLHQ9dC5zbGljZSgwLC0xKTtyZXR1cm57dGV4dDplLGNoYXJhY3Rlck1ldGE6dH19KGUsdCk7ZT1yLnRleHQsdD1yLmNoYXJhY3Rlck1ldGE7Zm9yKHZhciBvPWUubGVuZ3RoO28tLTspIiAiPT09ZS5jaGFyQXQobykmJiIgIj09PWUuY2hhckF0KG8tMSkmJihlPWUuc2xpY2UoMCxvKStlLnNsaWNlKG8rMSksdD10LnNsaWNlKDAsbykuY29uY2F0KHQuc2xpY2UobysxKSkpO3ZhciBhPUR5KHt0ZXh0OmUsY2hhcmFjdGVyTWV0YTp0fSwiXHIgIiwiXHIiKTtlPWEudGV4dCx0PWEuY2hhcmFjdGVyTWV0YTt2YXIgaT1EeSh7dGV4dDplLGNoYXJhY3Rlck1ldGE6dH0sIiBcciIsIlxyIik7cmV0dXJuIGU9aS50ZXh0LHQ9aS5jaGFyYWN0ZXJNZXRhLHt0ZXh0OmUsY2hhcmFjdGVyTWV0YTp0fX0ocixvKTtyPXUudGV4dCxvPXUuY2hhcmFjdGVyTWV0YX0oKHI9ci5zcGxpdCgiXHIiKS5qb2luKCJcbiIpKS5sZW5ndGh8fGEpJiZ0LnB1c2gobmV3IFN5LkNvbnRlbnRCbG9jayh7a2V5Ok9iamVjdChTeS5nZW5LZXkpKCksdGV4dDpyLHR5cGU6ZS50eXBlLGNoYXJhY3Rlckxpc3Q6by50b0xpc3QoKSxkZXB0aDplLmRlcHRoLGRhdGE6ZS5kYXRhP09iamVjdChNeS5NYXApKGUuZGF0YSk6T2JqZWN0KE15Lk1hcCkoKX0pKX0pKSx0Lmxlbmd0aHx8KHQ9W1l5XSksU3kuQ29udGVudFN0YXRlLmNyZWF0ZUZyb21CbG9ja0FycmF5KHQsdGhpcy5jb250ZW50U3RhdGVGb3JFbnRpdGllcy5nZXRFbnRpdHlNYXAoKSl9fSx7a2V5OiJnZXRCbG9ja1R5cGVGcm9tVGFnTmFtZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vcHRpb25zLmJsb2NrVHlwZXM7aWYodCYmdFtlXSlyZXR1cm4gdFtlXTtzd2l0Y2goZSl7Y2FzZSJsaSI6cmV0dXJuIm9sIj09PXRoaXMuYmxvY2tTdGFjay5zbGljZSgtMSlbMF0udGFnTmFtZT9QeS5PUkRFUkVEX0xJU1RfSVRFTTpQeS5VTk9SREVSRURfTElTVF9JVEVNO2Nhc2UiYmxvY2txdW90ZSI6cmV0dXJuIFB5LkJMT0NLUVVPVEU7Y2FzZSJoMSI6cmV0dXJuIFB5LkhFQURFUl9PTkU7Y2FzZSJoMiI6cmV0dXJuIFB5LkhFQURFUl9UV087Y2FzZSJoMyI6cmV0dXJuIFB5LkhFQURFUl9USFJFRTtjYXNlImg0IjpyZXR1cm4gUHkuSEVBREVSX0ZPVVI7Y2FzZSJoNSI6cmV0dXJuIFB5LkhFQURFUl9GSVZFO2Nhc2UiaDYiOnJldHVybiBQeS5IRUFERVJfU0lYO2Nhc2UicHJlIjpyZXR1cm4gUHkuQ09ERTtjYXNlImZpZ3VyZSI6cmV0dXJuIFB5LkFUT01JQztkZWZhdWx0OnJldHVybiBQeS5VTlNUWUxFRH19fSx7a2V5OiJwcm9jZXNzQmxvY2tFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtpZihlKXt2YXIgdCxuLHI9dGhpcy5vcHRpb25zLmN1c3RvbUJsb2NrRm4sbz1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYocil7dmFyIGE9cihlKTtudWxsIT1hJiYodD1hLnR5cGUsbj1hLmRhdGEpfXZhciBpPSEwO2lmKG51bGw9PXQmJihpPSExLHQ9dGhpcy5nZXRCbG9ja1R5cGVGcm9tVGFnTmFtZShvKSksdD09PVB5LkNPREUpe3ZhciB1PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWxhbmd1YWdlIik7dSYmKG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/enkobiwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7VnkoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnp5KG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sbix7bGFuZ3VhZ2U6dX0pKX12YXIgcz1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBQeS5VTk9SREVSRURfTElTVF9JVEVNOmNhc2UgUHkuT1JERVJFRF9MSVNUX0lURU06cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHQpLGw9IUF5Lmhhc093blByb3BlcnR5KG8pO2lmKCFpJiZ0PT09UHkuVU5TVFlMRUQpe3ZhciBjPXRoaXMuYmxvY2tTdGFjay5zbGljZSgtMSlbMF07YyYmKHQ9Yy50eXBlKX12YXIgZj17dGFnTmFtZTpvLHRleHRGcmFnbWVudHM6W10sdHlwZTp0LHN0eWxlU3RhY2s6W1d5XSxlbnRpdHlTdGFjazpbbnVsbF0sZGVwdGg6cz90aGlzLmRlcHRoOjAsZGF0YTpufTtsJiYodGhpcy5ibG9ja0xpc3QucHVzaChmKSxzJiYodGhpcy5kZXB0aCs9MSkpLHRoaXMuYmxvY2tTdGFjay5wdXNoKGYpLG51bGwhPWUuY2hpbGROb2RlcyYmQXJyYXkuZnJvbShlLmNoaWxkTm9kZXMpLmZvckVhY2godGhpcy5wcm9jZXNzTm9kZSx0aGlzKSx0aGlzLmJsb2NrU3RhY2sucG9wKCksbCYmcyYmKHRoaXMuZGVwdGgtPTEpfX19LHtrZXk6InByb2Nlc3NJbmxpbmVFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoImJyIiE9PXQpe3ZhciBuPXRoaXMuYmxvY2tTdGFjay5zbGljZSgtMSlbMF0scj1uLnN0eWxlU3RhY2suc2xpY2UoLTEpWzBdLG89bi5lbnRpdHlTdGFjay5zbGljZSgtMSlbMF0sYT10aGlzLm9wdGlvbnMuY3VzdG9tSW5saW5lRm4saT1hP2EoZSx0aGlzLmlubGluZUNyZWF0b3JzKTpudWxsO2lmKG51bGwhPWkpc3dpdGNoKGkudHlwZSl7Y2FzZSJTVFlMRSI6cj1yLmFkZChpLnN0eWxlKTticmVhaztjYXNlIkVOVElUWSI6bz1pLmVudGl0eUtleX1lbHNlIHI9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh0KXtjYXNlImIiOmNhc2Uic3Ryb25nIjpyZXR1cm4gZS5hZGQoankuQk9MRCk7Y2FzZSJpIjpjYXNlImVtIjpyZXR1cm4gZS5hZGQoankuSVRBTElDKTtjYXNlInUiOmNhc2UiaW5zIjpyZXR1cm4gZS5hZGQoankuVU5ERVJMSU5FKTtjYXNlImNvZGUiOnJldHVybiBlLmFkZChqeS5DT0RFKTtjYXNlInMiOmNhc2UiZGVsIjpyZXR1cm4gZS5hZGQoankuU1RSSUtFVEhST1VHSCk7ZGVmYXVsdDpyZXR1cm4gbiYmblt0XT9lLmFkZChuW3RdKTplfX0ocix0LHRoaXMub3B0aW9ucy5lbGVtZW50U3R5bGVzKSxaeS5oYXNPd25Qcm9wZXJ0eSh0KSYmKG89WnlbdF0odGhpcyx0LGUpfHxvKTtuLnN0eWxlU3RhY2sucHVzaChyKSxuLmVudGl0eVN0YWNrLnB1c2gobyksbnVsbCE9ZS5jaGlsZE5vZGVzJiZBcnJheS5mcm9tKGUuY2hpbGROb2RlcykuZm9yRWFjaCh0aGlzLnByb2Nlc3NOb2RlLHRoaXMpLEZ5Lmhhc093blByb3BlcnR5KHQpJiZ0aGlzLnByb2Nlc3NUZXh0KCLCoCIpLG4uZW50aXR5U3RhY2sucG9wKCksbi5zdHlsZVN0YWNrLnBvcCgpfWVsc2UgdGhpcy5wcm9jZXNzVGV4dCgiXHIiKX19LHtrZXk6InByb2Nlc3NUZXh0Tm9kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlVmFsdWU7dD0odD10LnJlcGxhY2UoSHksIlxuIikpLnNwbGl0KCLigIsiKS5qb2luKCJcciIpLHRoaXMucHJvY2Vzc1RleHQodCl9fSx7a2V5OiJwcm9jZXNzVGV4dCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ibG9ja1N0YWNrLnNsaWNlKC0xKVswXSxuPXQuc3R5bGVTdGFjay5zbGljZSgtMSlbMF0scj10LmVudGl0eVN0YWNrLnNsaWNlKC0xKVswXSxvPVN5LkNoYXJhY3Rlck1ldGFkYXRhLmNyZWF0ZSh7c3R5bGU6bixlbnRpdHk6cn0pLGE9T2JqZWN0KE15LlJlcGVhdCkobyxlLmxlbmd0aCk7dC50ZXh0RnJhZ21lbnRzLnB1c2goe3RleHQ6ZSxjaGFyYWN0ZXJNZXRhOmF9KX19LHtrZXk6InByb2Nlc3NOb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtpZigxPT09ZS5ub2RlVHlwZSl7dmFyIHQ9ZSxuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtJeS5oYXNPd25Qcm9wZXJ0eShuKT90aGlzLnByb2Nlc3NJbmxpbmVFbGVtZW50KHQpOnRoaXMucHJvY2Vzc0Jsb2NrRWxlbWVudCh0KX1lbHNlIDM9PT1lLm5vZGVUeXBlJiZ0aGlzLnByb2Nlc3NUZXh0Tm9kZShlKX19LHtrZXk6ImNyZWF0ZUVudGl0eSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06Ik1VVEFCTEUiO3JldHVybiB0aGlzLmNvbnRlbnRTdGF0ZUZvckVudGl0aWVzPXRoaXMuY29udGVudFN0YXRlRm9yRW50aXRpZXMuY3JlYXRlRW50aXR5KGUsbix0KSx0aGlzLmNvbnRlbnRTdGF0ZUZvckVudGl0aWVzLmdldExhc3RDcmVhdGVkRW50aXR5S2V5KCl9fV0pJiZxeSh0LnByb3RvdHlwZSxuKSxyJiZxeSh0LHIpLGV9KCk7ZnVuY3Rpb24gWHkoZSl7dmFyIHQ9e307aWYobnVsbCE9PWUmJiJvYmplY3QiPT09QnkoZSkmJiFBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgbj1lLHI9MCxvPU9iamVjdC5rZXlzKG4pO3I8by5sZW5ndGg7cisrKXt2YXIgYT1vW3JdLGk9blthXTsic3RyaW5nIj09dHlwZW9mIGkmJih0W2FdPWkpfXJldHVybiB0fWZ1bmN0aW9uIGVtKGUsdCl7cmV0dXJuIG5ldyAkeSh0KS5wcm9jZXNzKGUpfWZ1bmN0aW9uIHRtKGUpe3ZhciB0OyJ1bmRlZmluZWQiIT10eXBlb2YgRE9NUGFyc2VyP3Q9KG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L2h0bWwiKToodD1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5kb2N1bWVudEVsZW1lbnQmJih0LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9ZSk7cmV0dXJuIHQuYm9keXx8dC5jcmVhdGVFbGVtZW50KCJib2R5Iil9ZnVuY3Rpb24gbm0oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciBybT17fTtmdW5jdGlvbiBvbShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBhbShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiZuLnB1c2guYXBwbHkobixPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKSx0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxufWZ1bmN0aW9uIGltKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2FtKG4sITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3VtKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTphbShuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gdW0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHNtKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLHU9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPXUubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09dS5yZXR1cm58fHUucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX12YXIgbG09ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybiB0O2Zvcih2YXIgbj1zbSh0LDIpLHI9blswXSxvPW5bMV0sYT1pbSh7fSxyKSxpPW9tKG8pLHU9MCxzPU9iamVjdC5rZXlzKGUpO3U8cy5sZW5ndGg7dSsrKXt2YXIgbD1zW3VdO2lmKHIuaGFzT3duUHJvcGVydHkobCkpe3ZhciBjPXJbbF07YVtsXT1pbSh7fSxjLHt9LGVbbF0pfWVsc2UgYVtsXT1lW2xdLGkucHVzaChsKX1yZXR1cm5bYSxpXX0sY209e2FjY2VwdENoYXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVpdjoiaHR0cC1lcXVpdiJ9O3ZhciBmbT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiBlO2Zvcih2YXIgdD17fSxuPSExLHI9MCxvPU9iamVjdC5rZXlzKGUpO3I8by5sZW5ndGg7cisrKXt2YXIgYT1vW3JdLGk9YTtjbS5oYXNPd25Qcm9wZXJ0eShhKSYmKGk9Y21bYV0sbj0hMCksdFtpXT1lW2FdfXJldHVybiBuP3Q6ZX0sZG09L14obW96fG1zfG98d2Via2l0KS0vLHBtPS9eXGQrJC8saG09LyhbQS1aXSkvZyx5bT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9O3ZhciBtbSx2bSxnbSxibT1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKChmdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uPXBtLnRlc3QodCk6KG49ITAsdD1TdHJpbmcodCkpLG4mJiIwIiE9PXQmJiEwIT09eW1bZV0/dCsicHgiOnR9KHQsZVt0XSkscj1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGhtLCItJDEiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoZG0sIi0kMS0iKX0odCk7cmV0dXJuIiIuY29uY2F0KHIsIjogIikuY29uY2F0KG4pfSkpLmpvaW4oIjsgIil9O2Z1bmN0aW9uIHdtKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJm4ucHVzaC5hcHBseShuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSkpLHQmJihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG59ZnVuY3Rpb24gX20oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/d20obiwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7a20oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOndtKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBFbShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSx1PWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT11Lm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PXUucmV0dXJufHx1LnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gT20oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBrbShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIENtPWp5LkJPTEQseG09ankuQ09ERSxTbT1qeS5JVEFMSUMsRG09ankuU1RSSUtFVEhST1VHSCxUbT1qeS5VTkRFUkxJTkUsTW09L15kYXRhLShbYS16MC05LV0rKSQvLFBtPShrbShtbT17fSxDbSx7ZWxlbWVudDoic3Ryb25nIn0pLGttKG1tLHhtLHtlbGVtZW50OiJjb2RlIn0pLGttKG1tLFNtLHtlbGVtZW50OiJlbSJ9KSxrbShtbSxEbSx7ZWxlbWVudDoiZGVsIn0pLGttKG1tLFRtLHtlbGVtZW50OiJ1In0pLG1tKSxObT1bQ20sU20sVG0sRG0seG1dLGptPShrbSh2bT17fSxOeS5MSU5LLHt1cmw6ImhyZWYiLGhyZWY6ImhyZWYiLHJlbDoicmVsIix0YXJnZXQ6InRhcmdldCIsdGl0bGU6InRpdGxlIixjbGFzc05hbWU6ImNsYXNzIn0pLGttKHZtLE55LklNQUdFLHtzcmM6InNyYyIsaGVpZ2h0OiJoZWlnaHQiLHdpZHRoOiJ3aWR0aCIsYWx0OiJhbHQiLGNsYXNzTmFtZToiY2xhc3MifSksdm0pLExtPShrbShnbT17fSxOeS5MSU5LLChmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1qbS5oYXNPd25Qcm9wZXJ0eShlKT9qbVtlXTp7fSxyPXQuZ2V0RGF0YSgpLG89e30sYT0wLGk9T2JqZWN0LmtleXMocik7YTxpLmxlbmd0aDthKyspe3ZhciB1PWlbYV0scz1yW3VdO2lmKG4uaGFzT3duUHJvcGVydHkodSkpb1tuW3VdXT1zO2Vsc2UgTW0udGVzdCh1KSYmKG9bdV09cyl9cmV0dXJuIG99KSksa20oZ20sTnkuSU1BR0UsKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWptLmhhc093blByb3BlcnR5KGUpP2ptW2VdOnt9LHI9dC5nZXREYXRhKCksbz17fSxhPTAsaT1PYmplY3Qua2V5cyhyKTthPGkubGVuZ3RoO2ErKyl7dmFyIHU9aVthXSxzPXJbdV07aWYobi5oYXNPd25Qcm9wZXJ0eSh1KSlvW25bdV1dPXM7ZWxzZSBNbS50ZXN0KHUpJiYob1t1XT1zKX1yZXR1cm4gb30pKSxnbSk7ZnVuY3Rpb24gUm0oZSx0KXtzd2l0Y2goZSl7Y2FzZSBQeS5IRUFERVJfT05FOnJldHVyblsiaDEiXTtjYXNlIFB5LkhFQURFUl9UV086cmV0dXJuWyJoMiJdO2Nhc2UgUHkuSEVBREVSX1RIUkVFOnJldHVyblsiaDMiXTtjYXNlIFB5LkhFQURFUl9GT1VSOnJldHVyblsiaDQiXTtjYXNlIFB5LkhFQURFUl9GSVZFOnJldHVyblsiaDUiXTtjYXNlIFB5LkhFQURFUl9TSVg6cmV0dXJuWyJoNiJdO2Nhc2UgUHkuVU5PUkRFUkVEX0xJU1RfSVRFTTpjYXNlIFB5Lk9SREVSRURfTElTVF9JVEVNOnJldHVyblsibGkiXTtjYXNlIFB5LkJMT0NLUVVPVEU6cmV0dXJuWyJibG9ja3F1b3RlIl07Y2FzZSBQeS5DT0RFOnJldHVyblsicHJlIiwiY29kZSJdO2Nhc2UgUHkuQVRPTUlDOnJldHVyblsiZmlndXJlIl07ZGVmYXVsdDpyZXR1cm4gbnVsbD09PXQ/W106W3R8fCJwIl19fXZhciBJbT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKSxrbSh0aGlzLCJibG9ja3MiLHZvaWQgMCksa20odGhpcywiY29udGVudFN0YXRlIix2b2lkIDApLGttKHRoaXMsImN1cnJlbnRCbG9jayIsdm9pZCAwKSxrbSh0aGlzLCJpbmRlbnRMZXZlbCIsdm9pZCAwKSxrbSh0aGlzLCJvdXRwdXQiLHZvaWQgMCksa20odGhpcywidG90YWxCbG9ja3MiLHZvaWQgMCksa20odGhpcywid3JhcHBlclRhZyIsdm9pZCAwKSxrbSh0aGlzLCJvcHRpb25zIix2b2lkIDApLGttKHRoaXMsImlubGluZVN0eWxlcyIsdm9pZCAwKSxrbSh0aGlzLCJpbmxpbmVTdHlsZUZuIix2b2lkIDApLGttKHRoaXMsInN0eWxlT3JkZXIiLHZvaWQgMCksbnVsbD09biYmKG49e30pLHRoaXMuY29udGVudFN0YXRlPXQsdGhpcy5vcHRpb25zPW47dmFyIHI9RW0obG0obi5pbmxpbmVTdHlsZXMsW1BtLE5tXSksMiksbz1yWzBdLGE9clsxXTt0aGlzLmlubGluZVN0eWxlcz1vLHRoaXMuaW5saW5lU3R5bGVGbj1uLmlubGluZVN0eWxlRm4sdGhpcy5zdHlsZU9yZGVyPWF9dmFyIHQsbixyO3JldHVybiB0PWUsKG49W3trZXk6ImdlbmVyYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih0aGlzLm91dHB1dD1bXSx0aGlzLmJsb2Nrcz10aGlzLmNvbnRlbnRTdGF0ZS5nZXRCbG9ja3NBc0FycmF5KCksdGhpcy50b3RhbEJsb2Nrcz10aGlzLmJsb2Nrcy5sZW5ndGgsdGhpcy5jdXJyZW50QmxvY2s9MCx0aGlzLmluZGVudExldmVsPTAsdGhpcy53cmFwcGVyVGFnPW51bGw7dGhpcy5jdXJyZW50QmxvY2s8dGhpcy50b3RhbEJsb2NrczspdGhpcy5wcm9jZXNzQmxvY2soKTtyZXR1cm4gdGhpcy5jbG9zZVdyYXBwZXJUYWcoKSx0aGlzLm91dHB1dC5qb2luKCIiKS50cmltKCl9fSx7a2V5OiJwcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLHQ9ZS5ibG9ja1JlbmRlcmVycyxuPWUuZGVmYXVsdEJsb2NrVGFnLHI9dGhpcy5ibG9ja3NbdGhpcy5jdXJyZW50QmxvY2tdLG89ci5nZXRUeXBlKCksYT1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBQeS5VTk9SREVSRURfTElTVF9JVEVNOnJldHVybiJ1bCI7Y2FzZSBQeS5PUkRFUkVEX0xJU1RfSVRFTTpyZXR1cm4ib2wiO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShvKTt0aGlzLndyYXBwZXJUYWchPT1hJiYodGhpcy53cmFwcGVyVGFnJiZ0aGlzLmNsb3NlV3JhcHBlclRhZygpLGEmJnRoaXMub3BlbldyYXBwZXJUYWcoYSkpLHRoaXMuaW5kZW50KCk7dmFyIGk9bnVsbCE9dCYmdC5oYXNPd25Qcm9wZXJ0eShvKT90W29dOm51bGwsdT1pP2kocik6bnVsbDtpZihudWxsIT11KXJldHVybiB0aGlzLm91dHB1dC5wdXNoKHUpLHRoaXMub3V0cHV0LnB1c2goIlxuIiksdm9pZCh0aGlzLmN1cnJlbnRCbG9jays9MSk7dGhpcy53cml0ZVN0YXJ0VGFnKHIsbiksdGhpcy5vdXRwdXQucHVzaCh0aGlzLnJlbmRlckJsb2NrQ29udGVudChyKSk7dmFyIHM9dGhpcy5nZXROZXh0QmxvY2soKTtpZihmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBQeS5VTk9SREVSRURfTElTVF9JVEVNOmNhc2UgUHkuT1JERVJFRF9MSVNUX0lURU06cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KG8pJiZzJiZzLmdldERlcHRoKCk9PT1yLmdldERlcHRoKCkrMSl7dGhpcy5vdXRwdXQucHVzaCgiXG4iKTt2YXIgbD10aGlzLndyYXBwZXJUYWc7dGhpcy53cmFwcGVyVGFnPW51bGwsdGhpcy5pbmRlbnRMZXZlbCs9MSx0aGlzLmN1cnJlbnRCbG9jays9MSx0aGlzLnByb2Nlc3NCbG9ja3NBdERlcHRoKHMuZ2V0RGVwdGgoKSksdGhpcy53cmFwcGVyVGFnPWwsdGhpcy5pbmRlbnRMZXZlbC09MSx0aGlzLmluZGVudCgpfWVsc2UgdGhpcy5jdXJyZW50QmxvY2srPTE7dGhpcy53cml0ZUVuZFRhZyhyLG4pfX0se2tleToicHJvY2Vzc0Jsb2Nrc0F0RGVwdGgiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLmJsb2Nrc1t0aGlzLmN1cnJlbnRCbG9ja107dCYmdC5nZXREZXB0aCgpPT09ZTspdGhpcy5wcm9jZXNzQmxvY2soKSx0PXRoaXMuYmxvY2tzW3RoaXMuY3VycmVudEJsb2NrXTt0aGlzLmNsb3NlV3JhcHBlclRhZygpfX0se2tleToiZ2V0TmV4dEJsb2NrIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJsb2Nrc1t0aGlzLmN1cnJlbnRCbG9jaysxXX19LHtrZXk6IndyaXRlU3RhcnRUYWciLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1SbShlLmdldFR5cGUoKSx0KTtpZih0aGlzLm9wdGlvbnMuYmxvY2tTdHlsZUZuKXt2YXIgbz10aGlzLm9wdGlvbnMuYmxvY2tTdHlsZUZuKGUpfHx7fSxhPW8uYXR0cmlidXRlcyxpPW8uc3R5bGU7aWYoYT1mbShhKSxudWxsIT1pKXt2YXIgdT1ibShpKTthPW51bGw9PWE/e3N0eWxlOnV9Ol9tKHt9LGEse3N0eWxlOnV9KX1uPUFtKGEpfWVsc2Ugbj0iIjt2YXIgcz0hMCxsPSExLGM9dm9pZCAwO3RyeXtmb3IodmFyIGYsZD1yW1N5bWJvbC5pdGVyYXRvcl0oKTshKHM9KGY9ZC5uZXh0KCkpLmRvbmUpO3M9ITApe3ZhciBwPWYudmFsdWU7dGhpcy5vdXRwdXQucHVzaCgiPCIuY29uY2F0KHApLmNvbmNhdChuLCI+IikpfX1jYXRjaChlKXtsPSEwLGM9ZX1maW5hbGx5e3RyeXtzfHxudWxsPT1kLnJldHVybnx8ZC5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgY319fX0se2tleToid3JpdGVFbmRUYWciLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49Um0oZS5nZXRUeXBlKCksdCk7aWYoMT09PW4ubGVuZ3RoKXRoaXMub3V0cHV0LnB1c2goIjwvIi5jb25jYXQoblswXSwiPlxuIikpO2Vsc2V7dmFyIHI9W10sbz0hMCxhPSExLGk9dm9pZCAwO3RyeXtmb3IodmFyIHUscz1uW1N5bWJvbC5pdGVyYXRvcl0oKTshKG89KHU9cy5uZXh0KCkpLmRvbmUpO289ITApe3ZhciBsPXUudmFsdWU7ci51bnNoaWZ0KCI8LyIuY29uY2F0KGwsIj4iKSl9fWNhdGNoKGUpe2E9ITAsaT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBpfX10aGlzLm91dHB1dC5wdXNoKHIuam9pbigiIikrIlxuIil9fX0se2tleToib3BlbldyYXBwZXJUYWciLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMud3JhcHBlclRhZz1lLHRoaXMuaW5kZW50KCksdGhpcy5vdXRwdXQucHVzaCgiPCIuY29uY2F0KGUsIj5cbiIpKSx0aGlzLmluZGVudExldmVsKz0xfX0se2tleToiY2xvc2VXcmFwcGVyVGFnIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMud3JhcHBlclRhZztlJiYodGhpcy5pbmRlbnRMZXZlbC09MSx0aGlzLmluZGVudCgpLHRoaXMub3V0cHV0LnB1c2goIjwvIi5jb25jYXQoZSwiPlxuIikpLHRoaXMud3JhcHBlclRhZz1udWxsKX19LHtrZXk6ImluZGVudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm91dHB1dC5wdXNoKCIgICIucmVwZWF0KHRoaXMuaW5kZW50TGV2ZWwpKX19LHtrZXk6IndpdGhDdXN0b21JbmxpbmVTdHlsZXMiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuaW5saW5lU3R5bGVGbilyZXR1cm4gZTt2YXIgbj10aGlzLmlubGluZVN0eWxlRm4odCk7aWYoIW4pcmV0dXJuIGU7dmFyIHI9bi5lbGVtZW50LG89dm9pZCAwPT09cj8ic3BhbiI6cixhPW4uYXR0cmlidXRlcyxpPW4uc3R5bGUsdT1BbShfbSh7fSxhLHtzdHlsZTppJiZibShpKX0pKTtyZXR1cm4iPCIuY29uY2F0KG8pLmNvbmNhdCh1LCI+IikuY29uY2F0KGUsIjwvIikuY29uY2F0KG8sIj4iKX19LHtrZXk6InJlbmRlckJsb2NrQ29udGVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWUuZ2V0VHlwZSgpLHI9ZS5nZXRUZXh0KCk7cmV0dXJuIiI9PT1yPyI8YnI+IjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1udWxsLHI9bnVsbCxvPVtdLGE9MCxpPTAsdT1lLmxlbmd0aDtpPHU7aSsrKXtyPW47dmFyIHM9dC5nZXQoaSk7bj1zP3MuZ2V0RW50aXR5KCk6bnVsbCxpPjAmJm4hPT1yJiYoby5wdXNoKFtyLFJ5KGUuc2xpY2UoYSxpKSx0LnNsaWNlKGEsaSkpXSksYT1pKX1yZXR1cm4gby5wdXNoKFtuLFJ5KGUuc2xpY2UoYSksdC5zbGljZShhKSldKSxvfShyPXRoaXMucHJlc2VydmVXaGl0ZXNwYWNlKHIpLGUuZ2V0Q2hhcmFjdGVyTGlzdCgpKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByLG89RW0oZSwyKSxhPW9bMF0saT1vWzFdLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9RW0oZSwyKSxvPXJbMF0sYT1yWzFdLGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoIiYiKS5qb2luKCImYW1wOyIpLnNwbGl0KCI8Iikuam9pbigiJmx0OyIpLnNwbGl0KCI+Iikuam9pbigiJmd0OyIpLnNwbGl0KCLCoCIpLmpvaW4oIiZuYnNwOyIpLnNwbGl0KCJcbiIpLmpvaW4oIjxicj5cbiIpfShvKSx1PSEwLHM9ITEsbD12b2lkIDA7dHJ5e2Zvcih2YXIgYyxmPXQuc3R5bGVPcmRlcltTeW1ib2wuaXRlcmF0b3JdKCk7ISh1PShjPWYubmV4dCgpKS5kb25lKTt1PSEwKXt2YXIgZD1jLnZhbHVlO2lmKChkIT09eG18fG4hPT1QeS5DT0RFKSYmYS5oYXMoZCkpe3ZhciBwPXQuaW5saW5lU3R5bGVzW2RdLGg9cC5lbGVtZW50LHk9cC5hdHRyaWJ1dGVzLG09cC5zdHlsZTtpZihudWxsPT1oJiYoaD0ic3BhbiIpLHk9Zm0oeSksbnVsbCE9bSl7dmFyIHY9Ym0obSk7eT1udWxsPT15P3tzdHlsZTp2fTpfbSh7fSx5LHtzdHlsZTp2fSl9dmFyIGc9QW0oeSk7aT0iPCIuY29uY2F0KGgpLmNvbmNhdChnLCI+IikuY29uY2F0KGksIjwvIikuY29uY2F0KGgsIj4iKX19fWNhdGNoKGUpe3M9ITAsbD1lfWZpbmFsbHl7dHJ5e3V8fG51bGw9PWYucmV0dXJufHxmLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBsfX1yZXR1cm4gdC53aXRoQ3VzdG9tSW5saW5lU3R5bGVzKGksYSl9KSkuam9pbigiIiksdT1hP3QuY29udGVudFN0YXRlLmdldEVudGl0eShhKTpudWxsLHM9bnVsbD09dT9udWxsOnUuZ2V0VHlwZSgpLnRvVXBwZXJDYXNlKCk7aWYobnVsbCE9dSYmdC5vcHRpb25zLmVudGl0eVN0eWxlRm4mJihyPXQub3B0aW9ucy5lbnRpdHlTdHlsZUZuKHUpKSl7dmFyIGw9cixjPWwuZWxlbWVudCxmPWwuYXR0cmlidXRlcyxkPWwuc3R5bGU7aWYobnVsbD09YyYmKGM9InNwYW4iKSxmPWZtKGYpLG51bGwhPWQpe3ZhciBwPWJtKGQpO2Y9bnVsbD09Zj97c3R5bGU6cH06X20oe30sZix7c3R5bGU6cH0pfXZhciBoPUFtKGYpO3JldHVybiI8Ii5jb25jYXQoYykuY29uY2F0KGgsIj4iKS5jb25jYXQoaSwiPC8iKS5jb25jYXQoYywiPiIpfWlmKG51bGwhPXMmJnM9PT1OeS5MSU5LKXt2YXIgeT1BbShMbS5oYXNPd25Qcm9wZXJ0eShzKT9MbVtzXShzLHUpOm51bGwpO3JldHVybiI8YSIuY29uY2F0KHksIj4iKS5jb25jYXQoaSwiPC9hPiIpfWlmKG51bGwhPXMmJnM9PT1OeS5JTUFHRSl7dmFyIG09QW0oTG0uaGFzT3duUHJvcGVydHkocyk/TG1bc10ocyx1KTpudWxsKTtyZXR1cm4iPGltZyIuY29uY2F0KG0sIi8+Iil9cmV0dXJuIGl9KSkuam9pbigiIil9fSx7a2V5OiJwcmVzZXJ2ZVdoaXRlc3BhY2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKykiICIhPT1lW3JdfHwwIT09ciYmciE9PXQtMSYmIiAiIT09ZVtyLTFdP25bcl09ZVtyXTpuW3JdPSLCoCI7cmV0dXJuIG4uam9pbigiIil9fV0pJiZPbSh0LnByb3RvdHlwZSxuKSxyJiZPbSh0LHIpLGV9KCk7ZnVuY3Rpb24gQW0oZSl7aWYobnVsbD09ZSlyZXR1cm4iIjtmb3IodmFyIHQ9W10sbj0wLHI9T2JqZWN0LmtleXMoZSk7bjxyLmxlbmd0aDtuKyspe3ZhciBvPXJbbl0sYT1lW29dO251bGwhPWEmJnQucHVzaCgiICIuY29uY2F0KG8sJz0iJykuY29uY2F0KChhKyIiKS5zcGxpdCgiJiIpLmpvaW4oIiZhbXA7Iikuc3BsaXQoIjwiKS5qb2luKCImbHQ7Iikuc3BsaXQoIj4iKS5qb2luKCImZ3Q7Iikuc3BsaXQoJyInKS5qb2luKCImcXVvdDsiKSwnIicpKX1yZXR1cm4gdC5qb2luKCIiKX12YXIgRm09ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOC41NTMgNC4wMmMuOTY1IDAgMS42ODMuMTk4IDIuMTU0LjU5My40NzIuMzk1LjcwNy45NTcuNzA3IDEuNjg3IDAgLjM2NS0uMDk3LjY4LS4yOS45NDYtLjE5NC4yNjYtLjQwOS40Ni0uNjQ1LjU4Mi4zMTIuMTM2LjU3NC4zNjIuNzg3LjY3OC4yMTMuMzE1LjMyLjY3LjMyIDEuMDY2IDAgLjc2Ny0uMjUzIDEuMzY0LS43NTkgMS43OS0uNTA1LjQyNS0xLjIzLjYzOC0yLjE3MS42MzhINS4wM2EuMjczLjI3MyAwIDAgMS0uMi0uMDg1LjI3My4yNzMgMCAwIDEtLjA4NS0uMlY0LjMxNmMwLS4wODMuMDI3LS4xNTMuMDgtLjIxYS4yNjguMjY4IDAgMCAxIC4yMDUtLjA4NmgzLjUyM3ptLS4xMzcgNC42NTFINi44ODh2MS43OWgxLjUyOGMuMjk3IDAgLjUyNi0uMDg1LjY5LS4yNTdhLjg4Ljg4IDAgMCAwIC4yNDUtLjYzMi44ODQuODg0IDAgMCAwLS4yNS0uNjQ0Yy0uMTY4LS4xNzEtLjM5Ni0uMjU3LS42ODUtLjI1N3pNOC4zMTMgNS41Nkg2Ljg4OHYxLjYxOWgxLjQyNWMuMjgyIDAgLjQ5OC0uMDc2LjY1LS4yMjhhLjgwMi44MDIgMCAwIDAgLjIyOC0uNTkzLjc3OS43NzkgMCAwIDAtLjIyMi0uNTc2Yy0uMTQ4LS4xNDgtLjM2Ny0uMjIyLS42NTUtLjIyMnoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07Rm0uZGlzcGxheU5hbWU9IkJvbGQiLEZtLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBCbT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChGbSx7Y2xhc3NOYW1lOiJHbHlwaCBCb2xkIn0pfSx6bT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02LjA0OSA1LjEzN2wuMjg0LTEuNDQ4aDQuOTQ4bC0uMjgzIDEuNDQ4SDkuMzQ0bC0xLjA0NiA1LjQxNkg5Ljk1TDkuNjYxIDEySDQuNzJsLjI4My0xLjQ0N2gxLjY1NGwxLjA0Ni01LjQxNnoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07em0uZGlzcGxheU5hbWU9Ikl0YWxpYyIsem0uZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIEttPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHptLHtjbGFzc05hbWU6IkdseXBoIEl0YWxpYyJ9KX0scW09ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTEgMTJhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41SDVhLjUuNSAwIDAgMS0uNS0uNXYtMUEuNS41IDAgMCAxIDUgMTJoNnpNNi40MDQgMy4wMmMuMDg0IDAgLjE1NC4wMjguMjEuMDg2YS4yODcuMjg3IDAgMCAxIC4wODYuMjF2NC42MjljMCAuNDcxLjExMi44MjQuMzM3IDEuMDYuMjI0LjIzNi41NDUuMzUzLjk2My4zNTMuNDE4IDAgLjc0LS4xMi45NjMtLjM1OS4yMjUtLjI0LjMzNy0uNTkuMzM3LTEuMDU0VjMuMzE2YzAtLjA4My4wMjgtLjE1My4wODUtLjIxYS4yODcuMjg3IDAgMCAxIC4yMTEtLjA4NmgxLjU1Yy4wODQgMCAuMTU0LjAyOC4yMTEuMDg2YS4yODcuMjg3IDAgMCAxIC4wODYuMjF2NC42NTJjMCAxLjA0OC0uMzA0IDEuODM1LS45MTIgMi4zNi0uNjA4LjUyNC0xLjQ0OC43ODYtMi41Mi43ODYtMS4wNzkgMC0xLjkyNC0uMjYyLTIuNTM2LS43ODctLjYxMi0uNTI0LS45MTgtMS4zMS0uOTE4LTIuMzZ2LTQuNjVjMC0uMDg0LjAyNy0uMTU0LjA4LS4yMTJhLjI2OC4yNjggMCAwIDEgLjIwNS0uMDg1aDEuNTYyeiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtxbS5kaXNwbGF5TmFtZT0iVW5kZXJsaW5lIixxbS5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgVm09ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocW0se2NsYXNzTmFtZToiR2x5cGggVW5kZXJsaW5lIn0pfSxVbT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMiA1YTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHpNMiAxMGEyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6TTIgMTVhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0ek02IDJoMTB2Mkg2ek02IDdoMTB2Mkg2ek02IDEyaDEwdjJINnoifSkpKX07VW0uZGlzcGxheU5hbWU9Ikxpc3QiLFVtLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBXbT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChVbSx7Y2xhc3NOYW1lOiJHbHlwaCBMaXN0In0pfSxZbT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMC44NTQgMTAuMzE5Yy0uMTk1LjUwNi0uNDk2Ljk4LS45MDQgMS4zODhsLTIuMTIyIDIuMTIxYTQgNCAwIDAgMS01LjY1Ni01LjY1NmwyLjEyLTIuMTIyYy40MDktLjQwOC44ODMtLjcxIDEuMzktLjkwNC4xOTQtLjUwNi40OTYtLjk4LjkwNC0xLjM4OWwyLjEyMS0yLjEyMWE0IDQgMCAwIDEgNS42NTcgNS42NTdsLTIuMTIxIDIuMTIxYy0uNDA4LjQwOC0uODgzLjcxLTEuMzg5LjkwNXptLTIuNDc2LjEzMWEzLjk4MiAzLjk4MiAwIDAgMS0xLjc5Mi0xLjAzNkEzLjk4MiAzLjk4MiAwIDAgMSA1LjU1IDcuNjIyTDMuNTg2IDkuNTg2YTIgMiAwIDEgMCAyLjgyOCAyLjgyOGwxLjk2NC0xLjk2NHptMi42MDgtMi42MDdsMS45NjQtMS45NjRBMiAyIDAgMCAwIDEwLjEyIDMuMDVMOC4xNTcgNS4wMTRjLjY1Ny4xNzYgMS4yNzguNTIxIDEuNzkzIDEuMDM2LjUxNS41MTUuODYgMS4xMzYgMS4wMzYgMS43OTN6bS0xLjg5LjcxN2ExLjk5MSAxLjk5MSAwIDAgMC0uNTYtMS4wOTYgMS45OTEgMS45OTEgMCAwIDAtMS4wOTYtLjU2Yy4wNjQuNDAxLjI1Ljc4Ny41NiAxLjA5Ni4zMS4zMS42OTUuNDk2IDEuMDk2LjU2eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtZbS5kaXNwbGF5TmFtZT0iTGlua1N2ZyIsWW0uZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIEhtPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFltLHtjbGFzc05hbWU6IkdseXBoIExpbmsifSl9LEdtPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTMgOC41TDQuNSA3bDIgMiA1LTVMMTMgNS41IDYuNSAxMnoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07R20uZGlzcGxheU5hbWU9IkNoZWNrbWFyayIsR20uZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFFtPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEdtLHtjbGFzc05hbWU6IkdseXBoIENoZWNrbWFyayJ9KX07ZnVuY3Rpb24gSm0oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksdT1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9dS5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT11LnJldHVybnx8dS5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfXZhciBabT1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5lZGl0b3JTdGF0ZSxvPWUuc2V0RWRpdG9yU3RhdGUsYT1lLnBsYWNlaG9sZGVyLGk9dm9pZCAwPT09YT8iIjphLHU9Sm0oRS5hLnVzZVN0YXRlKCExKSwyKSxzPXVbMF0sbD11WzFdLGM9Sm0oRS5hLnVzZVN0YXRlKCIiKSwyKSxmPWNbMF0sZD1jWzFdLHA9RS5hLnVzZVJlZihudWxsKSxoPWZ1bmN0aW9uKGUsdCl7ZS5wcmV2ZW50RGVmYXVsdCgpLG8oU3kuUmljaFV0aWxzLnRvZ2dsZUlubGluZVN0eWxlKHIsdCkpfSx5PWZ1bmN0aW9uKGUpe3JldHVybiByLmdldEN1cnJlbnRJbmxpbmVTdHlsZSgpLmhhcyhlKT8iUmljaFRleHRFZGl0b3ItYWN0aXZlIjoiIn0sbT0iUmljaFRleHRFZGl0b3IiLHY9ci5nZXRDdXJyZW50Q29udGVudCgpO3JldHVybiB2Lmhhc1RleHQoKXx8InVuc3R5bGVkIj09PXYuZ2V0QmxvY2tNYXAoKS5maXJzdCgpLmdldFR5cGUoKXx8KG0rPSIgUmljaFRleHRFZGl0b3ItaGlkZVBsYWNlaG9sZGVyIiksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTptfSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJSaWNoVGV4dEVkaXRvci1idXR0b25zIn0sRS5hLmNyZWF0ZUVsZW1lbnQoeWgse2FjdGl2ZTohIXkoIkJPTEQiKSxjbGFzc05hbWU6IlJpY2hUZXh0RWRpdG9yLWJ1dHRvbiBpY29uLW9ubHkiLG9uTW91c2VEb3duOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsIkJPTEQiKX19LEUuYS5jcmVhdGVFbGVtZW50KEJtLG51bGwpKSxFLmEuY3JlYXRlRWxlbWVudCh5aCx7YWN0aXZlOiEheSgiSVRBTElDIiksY2xhc3NOYW1lOiJSaWNoVGV4dEVkaXRvci1idXR0b24gaWNvbi1vbmx5Iixvbk1vdXNlRG93bjpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJJVEFMSUMiKX19LEUuYS5jcmVhdGVFbGVtZW50KEttLG51bGwpKSxFLmEuY3JlYXRlRWxlbWVudCh5aCx7YWN0aXZlOiEheSgiVU5ERVJMSU5FIiksY2xhc3NOYW1lOiJSaWNoVGV4dEVkaXRvci1idXR0b24gaWNvbi1vbmx5Iixvbk1vdXNlRG93bjpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJVTkRFUkxJTkUiKX19LEUuYS5jcmVhdGVFbGVtZW50KFZtLG51bGwpKSxFLmEuY3JlYXRlRWxlbWVudCh5aCx7YWN0aXZlOih0PSJ1bm9yZGVyZWQtbGlzdC1pdGVtIixuPXIuZ2V0U2VsZWN0aW9uKCksIShyLmdldEN1cnJlbnRDb250ZW50KCkuZ2V0QmxvY2tGb3JLZXkobi5nZXRTdGFydEtleSgpKS5nZXRUeXBlKCkhPT10KSksb25Nb3VzZURvd246ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZS5wcmV2ZW50RGVmYXVsdCgpLG8oU3kuUmljaFV0aWxzLnRvZ2dsZUJsb2NrVHlwZShyLHQpKX0oZSwidW5vcmRlcmVkLWxpc3QtaXRlbSIpfSxjbGFzc05hbWU6IlJpY2hUZXh0RWRpdG9yLWJ1dHRvbiBpY29uLW9ubHkifSxFLmEuY3JlYXRlRWxlbWVudChXbSxudWxsKSksRS5hLmNyZWF0ZUVsZW1lbnQoeWgse29uTW91c2VEb3duOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD1yLmdldFNlbGVjdGlvbigpO2lmKCF0LmlzQ29sbGFwc2VkKCkpe3ZhciBuPXIuZ2V0Q3VycmVudENvbnRlbnQoKSxvPXQuZ2V0U3RhcnRLZXkoKSxhPXQuZ2V0U3RhcnRPZmZzZXQoKSxpPW4uZ2V0QmxvY2tGb3JLZXkobykuZ2V0RW50aXR5QXQoYSksdT0iIjtpZihpKXU9bi5nZXRFbnRpdHkoaSkuZ2V0RGF0YSgpLnVybDtsKCEwKSxkKHUpfX0sY2xhc3NOYW1lOiJSaWNoVGV4dEVkaXRvci1idXR0b24gaWNvbi1vbmx5In0sRS5hLmNyZWF0ZUVsZW1lbnQoSG0sbnVsbCkpLEUuYS5jcmVhdGVFbGVtZW50KHloLHtvbk1vdXNlRG93bjpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9ci5nZXRTZWxlY3Rpb24oKTt0LmlzQ29sbGFwc2VkKCl8fG8oU3kuUmljaFV0aWxzLnRvZ2dsZUxpbmsocix0LG51bGwpKX0sY2xhc3NOYW1lOiJSaWNoVGV4dEVkaXRvci1idXR0b24ifSwiUmVtb3ZlIExpbmsiKSxzJiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJSaWNoVGV4dEVkaXRvci1saW5rLWlucHV0In0sRS5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7b25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS50YXJnZXQudmFsdWUpfSx0eXBlOiJ0ZXh0Iix2YWx1ZTpmLGNsYXNzTmFtZToiUmljaFRleHRFZGl0b3ItdXJsIn0pLEUuYS5jcmVhdGVFbGVtZW50KHloLHtjbGFzc05hbWU6IlJpY2hUZXh0RWRpdG9yLWNvbmZpcm0iLG9uTW91c2VEb3duOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD1yLmdldEN1cnJlbnRDb250ZW50KCkuY3JlYXRlRW50aXR5KCJMSU5LIiwiTVVUQUJMRSIse3VybDpmfSksbj10LmdldExhc3RDcmVhdGVkRW50aXR5S2V5KCksYT1TeS5FZGl0b3JTdGF0ZS5zZXQocix7Y3VycmVudENvbnRlbnQ6dH0pO28oU3kuUmljaFV0aWxzLnRvZ2dsZUxpbmsoYSxhLmdldFNlbGVjdGlvbigpLG4pKSxsKCExKSxkKCIiKX19LEUuYS5jcmVhdGVFbGVtZW50KFFtLG51bGwpKSkpLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlJpY2hUZXh0RWRpdG9yLXRleHQtYXJlYSIsb25DbGljazpmdW5jdGlvbigpe3AuY3VycmVudC5mb2N1cygpfX0sRS5hLmNyZWF0ZUVsZW1lbnQoU3kuRWRpdG9yLHtlZGl0b3JTdGF0ZTpyLG9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSxwbGFjZWhvbGRlcjppLHJlZjpwfSkpKX07Wm0uZGlzcGxheU5hbWU9IlJpY2hUZXh0RWRpdG9yIixabS5wcm9wVHlwZXM9e2VkaXRvclN0YXRlOlYuYS5vYmplY3QuaXNSZXF1aXJlZCxzZXRFZGl0b3JTdGF0ZTpWLmEuZnVuYy5pc1JlcXVpcmVkLHBsYWNlaG9sZGVyOlYuYS5zdHJpbmd9O3ZhciAkbT1mdW5jdGlvbihlLHQsbil7ZS5maW5kRW50aXR5UmFuZ2VzKChmdW5jdGlvbihlKXt2YXIgdD1lLmdldEVudGl0eSgpO3JldHVybiBudWxsIT09dCYmIkxJTksiPT09bi5nZXRFbnRpdHkodCkuZ2V0VHlwZSgpfSksdCl9LFhtPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29udGVudFN0YXRlLG49ZS5jaGlsZHJlbixyPWUuZW50aXR5S2V5LG89dC5nZXRFbnRpdHkocikuZ2V0RGF0YSgpLnVybDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImEiLHtocmVmOm8sc3R5bGU6e2NvbG9yOiIjM2I1OTk4Iix0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn19LG4pfTtYbS5kaXNwbGF5TmFtZT0iTGluayIsWG0ucHJvcFR5cGVzPXtjb250ZW50U3RhdGU6Vi5hLm9iamVjdC5pc1JlcXVpcmVkLGVudGl0eUtleTpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsY2hpbGRyZW46Vi5hLmVsZW1lbnQuaXNSZXF1aXJlZH0sWm0uY3JlYXRlRWRpdG9yU3RhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFN5LkNvbXBvc2l0ZURlY29yYXRvcihbe3N0cmF0ZWd5OiRtLGNvbXBvbmVudDpYbX1dKTtyZXR1cm4gU3kuRWRpdG9yU3RhdGUuY3JlYXRlV2l0aENvbnRlbnQoZnVuY3Rpb24oZSx0KXt2YXIgbj10fHxybSxyPW4ucGFyc2VyLG89bm0obixbInBhcnNlciJdKTtyZXR1cm4gbnVsbD09ciYmKHI9dG0pLGVtKHIoZSksbyl9KGUpLHQpfSxabS51c2VFZGl0b3JTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLnVzZVN0YXRlKFptLmNyZWF0ZUVkaXRvclN0YXRlKGUpKX0sWm0uZXhwb3J0PWZ1bmN0aW9uKGUpe3JldHVybiB0PWUuZ2V0Q3VycmVudENvbnRlbnQoKSxuZXcgSW0odCxuKS5nZW5lcmF0ZSgpO3ZhciB0LG59O3ZhciBldj1abSx0dj1uZXcgTWFwKFtbImF2aSIsInZpZGVvL2F2aSJdLFsiZ2lmIiwiaW1hZ2UvZ2lmIl0sWyJpY28iLCJpbWFnZS94LWljb24iXSxbImpwZWciLCJpbWFnZS9qcGVnIl0sWyJqcGciLCJpbWFnZS9qcGVnIl0sWyJta3YiLCJ2aWRlby94LW1hdHJvc2thIl0sWyJtb3YiLCJ2aWRlby9xdWlja3RpbWUiXSxbIm1wNCIsInZpZGVvL21wNCJdLFsicGRmIiwiYXBwbGljYXRpb24vcGRmIl0sWyJwbmciLCJpbWFnZS9wbmciXSxbInppcCIsImFwcGxpY2F0aW9uL3ppcCJdLFsiZG9jIiwiYXBwbGljYXRpb24vbXN3b3JkIl0sWyJkb2N4IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQiXV0pO2Z1bmN0aW9uIG52KGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lO2lmKHQmJi0xIT09dC5sYXN0SW5kZXhPZigiLiIpJiYhZS50eXBlKXt2YXIgbj10LnNwbGl0KCIuIikucG9wKCkudG9Mb3dlckNhc2UoKSxyPXR2LmdldChuKTtyJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidHlwZSIse3ZhbHVlOnIsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITB9KX1yZXR1cm4gZX0oZSk7aWYoInN0cmluZyIhPXR5cGVvZiBuLnBhdGgpe3ZhciByPWUud2Via2l0UmVsYXRpdmVQYXRoO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJwYXRoIix7dmFsdWU6InN0cmluZyI9PXR5cGVvZiB0P3Q6InN0cmluZyI9PXR5cGVvZiByJiZyLmxlbmd0aD4wP3I6ZS5uYW1lLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwfSl9cmV0dXJuIG59dmFyIHJ2PVsiLkRTX1N0b3JlIiwiVGh1bWJzLmRiIl07ZnVuY3Rpb24gb3YoZSl7cmV0dXJuIFdpLmIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBXaS5kKHRoaXMsKGZ1bmN0aW9uKHQpe3JldHVyblsyLChuPWUsbi5kYXRhVHJhbnNmZXImJmUuZGF0YVRyYW5zZmVyP2l2KGUuZGF0YVRyYW5zZmVyLGUudHlwZSk6YXYoZSkpXTt2YXIgbn0pKX0pKX1mdW5jdGlvbiBhdihlKXtyZXR1cm4obnVsbCE9PWUudGFyZ2V0JiZlLnRhcmdldC5maWxlcz9zdihlLnRhcmdldC5maWxlcyk6W10pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG52KGUpfSkpfWZ1bmN0aW9uIGl2KGUsdCl7cmV0dXJuIFdpLmIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBuO3JldHVybiBXaS5kKHRoaXMsKGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGUuaXRlbXM/KG49c3YoZS5pdGVtcykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4iZmlsZSI9PT1lLmtpbmR9KSksImRyb3AiIT09dD9bMixuXTpbNCxQcm9taXNlLmFsbChuLm1hcChsdikpXSk6WzMsMl07Y2FzZSAxOnJldHVyblsyLHV2KGN2KHIuc2VudCgpKSldO2Nhc2UgMjpyZXR1cm5bMix1dihzdihlLmZpbGVzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBudihlKX0pKSldfX0pKX0pKX1mdW5jdGlvbiB1dihlKXtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09cnYuaW5kZXhPZihlLm5hbWUpfSkpfWZ1bmN0aW9uIHN2KGUpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07dC5wdXNoKHIpfXJldHVybiB0fWZ1bmN0aW9uIGx2KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlLndlYmtpdEdldEFzRW50cnkpcmV0dXJuIGZ2KGUpO3ZhciB0PWUud2Via2l0R2V0QXNFbnRyeSgpO3JldHVybiB0JiZ0LmlzRGlyZWN0b3J5P3B2KHQpOmZ2KGUpfWZ1bmN0aW9uIGN2KGUpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gV2kuZihlLEFycmF5LmlzQXJyYXkodCk/Y3YodCk6W3RdKX0pLFtdKX1mdW5jdGlvbiBmdihlKXt2YXIgdD1lLmdldEFzRmlsZSgpO2lmKCF0KXJldHVybiBQcm9taXNlLnJlamVjdChlKyIgaXMgbm90IGEgRmlsZSIpO3ZhciBuPW52KHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUobil9ZnVuY3Rpb24gZHYoZSl7cmV0dXJuIFdpLmIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBXaS5kKHRoaXMsKGZ1bmN0aW9uKHQpe3JldHVyblsyLGUuaXNEaXJlY3Rvcnk/cHYoZSk6aHYoZSldfSkpfSkpfWZ1bmN0aW9uIHB2KGUpe3ZhciB0PWUuY3JlYXRlUmVhZGVyKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLG4pe3ZhciByPVtdOyFmdW5jdGlvbiBvKCl7dmFyIGE9dGhpczt0LnJlYWRFbnRyaWVzKChmdW5jdGlvbih0KXtyZXR1cm4gV2kuYihhLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGEsaSx1O3JldHVybiBXaS5kKHRoaXMsKGZ1bmN0aW9uKHMpe3N3aXRjaChzLmxhYmVsKXtjYXNlIDA6aWYodC5sZW5ndGgpcmV0dXJuWzMsNV07cy5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gcy50cnlzLnB1c2goWzEsMywsNF0pLFs0LFByb21pc2UuYWxsKHIpXTtjYXNlIDI6cmV0dXJuIGE9cy5zZW50KCksZShhKSxbMyw0XTtjYXNlIDM6cmV0dXJuIGk9cy5zZW50KCksbihpKSxbMyw0XTtjYXNlIDQ6cmV0dXJuWzMsNl07Y2FzZSA1OnU9UHJvbWlzZS5hbGwodC5tYXAoZHYpKSxyLnB1c2godSksbygpLHMubGFiZWw9NjtjYXNlIDY6cmV0dXJuWzJdfX0pKX0pKX0pLChmdW5jdGlvbihlKXtuKGUpfSkpfSgpfSkpfWZ1bmN0aW9uIGh2KGUpe3JldHVybiBXaS5iKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gV2kuZCh0aGlzLChmdW5jdGlvbih0KXtyZXR1cm5bMixuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxuKXtlLmZpbGUoKGZ1bmN0aW9uKG4pe3ZhciByPW52KG4sZS5mdWxsUGF0aCk7dChyKX0pLChmdW5jdGlvbihlKXtuKGUpfSkpfSkpXX0pKX0pKX12YXIgeXY9bigiZU1iaCIpLG12PW4ubih5dik7ZnVuY3Rpb24gdnYoZSx0KXtyZXR1cm4iYXBwbGljYXRpb24veC1tb3otZmlsZSI9PT1lLnR5cGV8fG12KCkoZSx0KX1mdW5jdGlvbiBndihlLHQsbil7aWYoYnYoZS5zaXplKSl7aWYoYnYodCkmJmJ2KG4pKXJldHVybiBlLnNpemU+PXQmJmUuc2l6ZTw9bjtpZihidih0KSlyZXR1cm4gZS5zaXplPj10O2lmKGJ2KG4pKXJldHVybiBlLnNpemU8PW59cmV0dXJuITB9ZnVuY3Rpb24gYnYoZSl7cmV0dXJuIG51bGwhPWV9ZnVuY3Rpb24gd3YoZSx0LG4scil7cmV0dXJuIGUuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiB2dihlLHQpJiZndihlLG4scil9KSl9ZnVuY3Rpb24gX3YoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuaXNQcm9wYWdhdGlvblN0b3BwZWQ/ZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOnZvaWQgMCE9PWUuY2FuY2VsQnViYmxlJiZlLmNhbmNlbEJ1YmJsZX1mdW5jdGlvbiBFdihlKXtyZXR1cm4gZS5kYXRhVHJhbnNmZXI/QXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChlLmRhdGFUcmFuc2Zlci50eXBlcywoZnVuY3Rpb24oZSl7cmV0dXJuIkZpbGVzIj09PWV8fCJhcHBsaWNhdGlvbi94LW1vei1maWxlIj09PWV9KSk6ISFlLnRhcmdldCYmISFlLnRhcmdldC5maWxlc31mdW5jdGlvbiBPdihlKXtlLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24ga3YoZSl7cmV0dXJuLTEhPT1lLmluZGV4T2YoIk1TSUUiKXx8LTEhPT1lLmluZGV4T2YoIlRyaWRlbnQvIil9ZnVuY3Rpb24gQ3YoZSl7cmV0dXJuLTEhPT1lLmluZGV4T2YoIkVkZ2UvIil9ZnVuY3Rpb24geHYoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7cmV0dXJuIGt2KGUpfHxDdihlKX1mdW5jdGlvbiBTdigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuPjE/bi0xOjApLG89MTtvPG47bysrKXJbby0xXT1hcmd1bWVudHNbb107cmV0dXJuIHQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIV92KGUpJiZ0JiZ0LmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KHIpKSxfdihlKX0pKX19ZnVuY3Rpb24gRHYoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gVHYoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7aWYoIShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSkpcmV0dXJuO3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLHU9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPXUubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09dS5yZXR1cm58fHUucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBNdihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gUHYoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/TXYobiwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7TnYoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOk12KG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBOdihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24ganYoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciBMdj1PYmplY3QoXy5mb3J3YXJkUmVmKSgoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuLHI9SXYoanYoZSxbImNoaWxkcmVuIl0pKSxvPXIub3BlbixhPWp2KHIsWyJvcGVuIl0pO3JldHVybiBPYmplY3QoXy51c2VJbXBlcmF0aXZlSGFuZGxlKSh0LChmdW5jdGlvbigpe3JldHVybntvcGVuOm99fSksW29dKSxFLmEuY3JlYXRlRWxlbWVudChfLkZyYWdtZW50LG51bGwsbihQdih7fSxhLHtvcGVuOm99KSkpfSkpO0x2LmRpc3BsYXlOYW1lPSJEcm9wem9uZSIsTHYucHJvcFR5cGVzPXtjaGlsZHJlbjpWLmEuZnVuYyxhY2NlcHQ6Vi5hLm9uZU9mVHlwZShbVi5hLnN0cmluZyxWLmEuYXJyYXlPZihWLmEuc3RyaW5nKV0pLG11bHRpcGxlOlYuYS5ib29sLHByZXZlbnREcm9wT25Eb2N1bWVudDpWLmEuYm9vbCxub0NsaWNrOlYuYS5ib29sLG5vS2V5Ym9hcmQ6Vi5hLmJvb2wsbm9EcmFnOlYuYS5ib29sLG5vRHJhZ0V2ZW50c0J1YmJsaW5nOlYuYS5ib29sLG1pblNpemU6Vi5hLm51bWJlcixtYXhTaXplOlYuYS5udW1iZXIsZGlzYWJsZWQ6Vi5hLmJvb2wsZ2V0RmlsZXNGcm9tRXZlbnQ6Vi5hLmZ1bmMsb25GaWxlRGlhbG9nQ2FuY2VsOlYuYS5mdW5jLG9uRHJhZ0VudGVyOlYuYS5mdW5jLG9uRHJhZ0xlYXZlOlYuYS5mdW5jLG9uRHJhZ092ZXI6Vi5hLmZ1bmMsb25Ecm9wOlYuYS5mdW5jLG9uRHJvcEFjY2VwdGVkOlYuYS5mdW5jLG9uRHJvcFJlamVjdGVkOlYuYS5mdW5jfTt2YXIgUnY9e2lzRm9jdXNlZDohMSxpc0ZpbGVEaWFsb2dBY3RpdmU6ITEsaXNEcmFnQWN0aXZlOiExLGlzRHJhZ0FjY2VwdDohMSxpc0RyYWdSZWplY3Q6ITEsZHJhZ2dlZEZpbGVzOltdLGFjY2VwdGVkRmlsZXM6W10scmVqZWN0ZWRGaWxlczpbXX07ZnVuY3Rpb24gSXYoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLmFjY2VwdCxuPWUuZGlzYWJsZWQscj12b2lkIDAhPT1uJiZuLG89ZS5nZXRGaWxlc0Zyb21FdmVudCxhPXZvaWQgMD09PW8/b3Y6byxpPWUubWF4U2l6ZSx1PXZvaWQgMD09PWk/MS8wOmkscz1lLm1pblNpemUsbD12b2lkIDA9PT1zPzA6cyxjPWUubXVsdGlwbGUsZj12b2lkIDA9PT1jfHxjLGQ9ZS5vbkRyYWdFbnRlcixwPWUub25EcmFnTGVhdmUsaD1lLm9uRHJhZ092ZXIseT1lLm9uRHJvcCxtPWUub25Ecm9wQWNjZXB0ZWQsdj1lLm9uRHJvcFJlamVjdGVkLGc9ZS5vbkZpbGVEaWFsb2dDYW5jZWwsYj1lLnByZXZlbnREcm9wT25Eb2N1bWVudCx3PXZvaWQgMD09PWJ8fGIsRT1lLm5vQ2xpY2ssTz12b2lkIDAhPT1FJiZFLGs9ZS5ub0tleWJvYXJkLEM9dm9pZCAwIT09ayYmayx4PWUubm9EcmFnLFM9dm9pZCAwIT09eCYmeCxEPWUubm9EcmFnRXZlbnRzQnViYmxpbmcsVD12b2lkIDAhPT1EJiZELE09T2JqZWN0KF8udXNlUmVmKShudWxsKSxQPU9iamVjdChfLnVzZVJlZikobnVsbCksTj1PYmplY3QoXy51c2VSZWR1Y2VyKShBdixSdiksaj1UdihOLDIpLEw9alswXSxSPWpbMV0sST1MLmlzRm9jdXNlZCxBPUwuaXNGaWxlRGlhbG9nQWN0aXZlLEY9TC5kcmFnZ2VkRmlsZXMsQj1PYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7UC5jdXJyZW50JiYoUih7dHlwZToib3BlbkRpYWxvZyJ9KSxQLmN1cnJlbnQudmFsdWU9bnVsbCxQLmN1cnJlbnQuY2xpY2soKSl9KSxbUl0pLHo9ZnVuY3Rpb24oKXtBJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe1AuY3VycmVudCYmKFAuY3VycmVudC5maWxlcy5sZW5ndGh8fChSKHt0eXBlOiJjbG9zZURpYWxvZyJ9KSwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZygpKSl9KSwzMDApfTtPYmplY3QoXy51c2VFZmZlY3QpKChmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHosITEpLGZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix6LCExKX19KSxbUCxBLGddKTt2YXIgSz1PYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe00uY3VycmVudCYmTS5jdXJyZW50LmlzRXF1YWxOb2RlKGUudGFyZ2V0KSYmKDMyIT09ZS5rZXlDb2RlJiYxMyE9PWUua2V5Q29kZXx8KGUucHJldmVudERlZmF1bHQoKSxCKCkpKX0pLFtNLFBdKSxxPU9iamVjdChfLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oKXtSKHt0eXBlOiJmb2N1cyJ9KX0pLFtdKSxWPU9iamVjdChfLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oKXtSKHt0eXBlOiJibHVyIn0pfSksW10pLFU9T2JqZWN0KF8udXNlQ2FsbGJhY2spKChmdW5jdGlvbigpe098fCh4digpP3NldFRpbWVvdXQoQiwwKTpCKCkpfSksW1AsT10pLFc9T2JqZWN0KF8udXNlUmVmKShbXSksWT1mdW5jdGlvbihlKXtNLmN1cnJlbnQmJk0uY3VycmVudC5jb250YWlucyhlLnRhcmdldCl8fChlLnByZXZlbnREZWZhdWx0KCksVy5jdXJyZW50PVtdKX07T2JqZWN0KF8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtyZXR1cm4gdyYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixPdiwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsWSwhMSkpLGZ1bmN0aW9uKCl7dyYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixPdiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJvcCIsWSkpfX0pLFtNLHddKTt2YXIgSD1PYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnBlcnNpc3QoKSxlZShlKSwtMT09PVcuY3VycmVudC5pbmRleE9mKGUudGFyZ2V0KSYmKFcuY3VycmVudD1bXS5jb25jYXQoRHYoVy5jdXJyZW50KSxbZS50YXJnZXRdKSksRXYoZSkmJlByb21pc2UucmVzb2x2ZShhKGUpKS50aGVuKChmdW5jdGlvbih0KXtfdihlKSYmIVR8fChSKHtkcmFnZ2VkRmlsZXM6dCxpc0RyYWdBY3RpdmU6ITAsdHlwZToic2V0RHJhZ2dlZEZpbGVzIn0pLGQmJmQoZSkpfSkpfSksW2EsZCxUXSksRz1PYmplY3QoXy51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe2lmKGUucHJldmVudERlZmF1bHQoKSxlLnBlcnNpc3QoKSxlZShlKSxlLmRhdGFUcmFuc2Zlcil0cnl7ZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0iY29weSJ9Y2F0Y2goZSl7fXJldHVybiBFdihlKSYmaCYmaChlKSwhMX0pLFtoLFRdKSxRPU9iamVjdChfLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUucGVyc2lzdCgpLGVlKGUpO3ZhciB0PVcuY3VycmVudC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZS50YXJnZXQmJk0uY3VycmVudCYmTS5jdXJyZW50LmNvbnRhaW5zKHQpfSkpO1cuY3VycmVudD10LHQubGVuZ3RoPjB8fChSKHtpc0RyYWdBY3RpdmU6ITEsdHlwZToic2V0RHJhZ2dlZEZpbGVzIixkcmFnZ2VkRmlsZXM6W119KSxFdihlKSYmcCYmcChlKSl9KSxbTSxwLFRdKSxKPU9iamVjdChfLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUucGVyc2lzdCgpLGVlKGUpLFcuY3VycmVudD1bXSxSKHt0eXBlOiJyZXNldCJ9KSxFdihlKSYmUHJvbWlzZS5yZXNvbHZlKGEoZSkpLnRoZW4oKGZ1bmN0aW9uKG4pe2lmKCFfdihlKXx8VCl7dmFyIHI9W10sbz1bXTtuLmZvckVhY2goKGZ1bmN0aW9uKGUpe3Z2KGUsdCkmJmd2KGUsbCx1KT9yLnB1c2goZSk6by5wdXNoKGUpfSkpLCFmJiZyLmxlbmd0aD4xJiZvLnB1c2guYXBwbHkobyxEdihyLnNwbGljZSgwKSkpLFIoe2FjY2VwdGVkRmlsZXM6cixyZWplY3RlZEZpbGVzOm8sdHlwZToic2V0RmlsZXMifSkseSYmeShyLG8sZSksby5sZW5ndGg+MCYmdiYmdihvLGUpLHIubGVuZ3RoPjAmJm0mJm0ocixlKX19KSl9KSxbZix0LGwsdSxhLHksbSx2LFRdKSxaPWZ1bmN0aW9uKGUpe3JldHVybiByP251bGw6ZX0sJD1mdW5jdGlvbihlKXtyZXR1cm4gQz9udWxsOlooZSl9LFg9ZnVuY3Rpb24oZSl7cmV0dXJuIFM/bnVsbDpaKGUpfSxlZT1mdW5jdGlvbihlKXtUJiZlLnN0b3BQcm9wYWdhdGlvbigpfSx0ZT1PYmplY3QoXy51c2VNZW1vKSgoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLnJlZktleSxuPXZvaWQgMD09PXQ/InJlZiI6dCxvPWUub25LZXlEb3duLGE9ZS5vbkZvY3VzLGk9ZS5vbkJsdXIsdT1lLm9uQ2xpY2sscz1lLm9uRHJhZ0VudGVyLGw9ZS5vbkRyYWdPdmVyLGM9ZS5vbkRyYWdMZWF2ZSxmPWUub25Ecm9wLGQ9anYoZSxbInJlZktleSIsIm9uS2V5RG93biIsIm9uRm9jdXMiLCJvbkJsdXIiLCJvbkNsaWNrIiwib25EcmFnRW50ZXIiLCJvbkRyYWdPdmVyIiwib25EcmFnTGVhdmUiLCJvbkRyb3AiXSk7cmV0dXJuIFB2KE52KHtvbktleURvd246JChTdihvLEspKSxvbkZvY3VzOiQoU3YoYSxxKSksb25CbHVyOiQoU3YoaSxWKSksb25DbGljazpaKFN2KHUsVSkpLG9uRHJhZ0VudGVyOlgoU3YocyxIKSksb25EcmFnT3ZlcjpYKFN2KGwsRykpLG9uRHJhZ0xlYXZlOlgoU3YoYyxRKSksb25Ecm9wOlgoU3YoZixKKSl9LG4sTSkscnx8Qz97fTp7dGFiSW5kZXg6MH0se30sZCl9fSksW00sSyxxLFYsVSxILEcsUSxKLEMsUyxyXSksbmU9T2JqZWN0KF8udXNlQ2FsbGJhY2spKChmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfSksW10pLHJlPU9iamVjdChfLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWUucmVmS2V5LHI9dm9pZCAwPT09bj8icmVmIjpuLG89ZS5vbkNoYW5nZSxhPWUub25DbGljayxpPWp2KGUsWyJyZWZLZXkiLCJvbkNoYW5nZSIsIm9uQ2xpY2siXSksdT1Odih7YWNjZXB0OnQsbXVsdGlwbGU6Zix0eXBlOiJmaWxlIixzdHlsZTp7ZGlzcGxheToibm9uZSJ9LG9uQ2hhbmdlOlooU3YobyxKKSksb25DbGljazpaKFN2KGEsbmUpKSxhdXRvQ29tcGxldGU6Im9mZiIsdGFiSW5kZXg6LTF9LHIsUCk7cmV0dXJuIFB2KHt9LHUse30saSl9fSksW1AsdCxmLEoscl0pLG9lPUYubGVuZ3RoLGFlPWZ8fG9lPD0xLGllPW9lPjAmJnd2KEYsdCxsLHUpLHVlPW9lPjAmJighaWV8fCFhZSk7cmV0dXJuIFB2KHt9LEwse2lzRHJhZ0FjY2VwdDppZSxpc0RyYWdSZWplY3Q6dWUsaXNGb2N1c2VkOkkmJiFyLGdldFJvb3RQcm9wczp0ZSxnZXRJbnB1dFByb3BzOnJlLHJvb3RSZWY6TSxpbnB1dFJlZjpQLG9wZW46WihCKX0pfWZ1bmN0aW9uIEF2KGUsdCl7c3dpdGNoKHQudHlwZSl7Y2FzZSJmb2N1cyI6cmV0dXJuIFB2KHt9LGUse2lzRm9jdXNlZDohMH0pO2Nhc2UiYmx1ciI6cmV0dXJuIFB2KHt9LGUse2lzRm9jdXNlZDohMX0pO2Nhc2Uib3BlbkRpYWxvZyI6cmV0dXJuIFB2KHt9LGUse2lzRmlsZURpYWxvZ0FjdGl2ZTohMH0pO2Nhc2UiY2xvc2VEaWFsb2ciOnJldHVybiBQdih7fSxlLHtpc0ZpbGVEaWFsb2dBY3RpdmU6ITF9KTtjYXNlInNldERyYWdnZWRGaWxlcyI6dmFyIG49dC5pc0RyYWdBY3RpdmU7cmV0dXJuIFB2KHt9LGUse2RyYWdnZWRGaWxlczp0LmRyYWdnZWRGaWxlcyxpc0RyYWdBY3RpdmU6bn0pO2Nhc2Uic2V0RmlsZXMiOnJldHVybiBQdih7fSxlLHthY2NlcHRlZEZpbGVzOnQuYWNjZXB0ZWRGaWxlcyxyZWplY3RlZEZpbGVzOnQucmVqZWN0ZWRGaWxlc30pO2Nhc2UicmVzZXQiOnJldHVybiBQdih7fSxlLHtpc0ZpbGVEaWFsb2dBY3RpdmU6ITEsaXNEcmFnQWN0aXZlOiExLGRyYWdnZWRGaWxlczpbXX0pO2RlZmF1bHQ6cmV0dXJuIGV9fXZhciBGdj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1lLmNoaWxkcmVuLGE9ZS5vblVwbG9hZCxpPWUuaW5wdXRJZCx1PWUuYWNjZXB0LHM9ZS5jbGFzc05hbWUsbD1Jdih7b25Ecm9wOkUuYS51c2VDYWxsYmFjaygoZnVuY3Rpb24oZSl7YShlKX0pLFtdKSxhY2NlcHQ6dX0pLGM9bC5nZXRSb290UHJvcHMsZj1sLmlzRHJhZ0FjdGl2ZSxkPVR0KCkoIlVwbG9hZEFyZWEiLCh0PXsiVXBsb2FkQXJlYS1kcmFnLWlzLWFjdGl2ZSI6Zn0sbj1zLHI9cy5sZW5ndGg+MCxuIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbbl09cix0KSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLGMoe2NsYXNzTmFtZTpkfSksaSYmRS5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7b25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZS50YXJnZXQuZmlsZXMpfSxjbGFzc05hbWU6IlVwbG9hZEFyZWEtaW5wdXQiLGlkOmksdHlwZToiZmlsZSIsYWNjZXB0OnV9KSxvKX07RnYuZGlzcGxheU5hbWU9IlVwbG9hZEFyZWEiLEZ2LnByb3BUeXBlcz17Y2hpbGRyZW46Vi5hLm9uZU9mVHlwZShbVi5hLm5vZGUsVi5hLmFycmF5T2YoVi5hLm5vZGUpXSksb25VcGxvYWQ6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxpbnB1dElkOlYuYS5zdHJpbmcsYWNjZXB0OlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLmFycmF5T2YoVi5hLnN0cmluZyldKSxjbGFzc05hbWU6Vi5hLnN0cmluZ30sRnYuZGVmYXVsdFByb3BzPXtjbGFzc05hbWU6IiIsYWNjZXB0OiIqIn07dmFyIEJ2PUZ2LHp2PWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJsaW5lYXJHcmFkaWVudCIse2lkOiJiIix4MToiNTAlIix4MjoiNTAlIix5MToiMCUiLHkyOiI5OS4yMjMlIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInN0b3AiLHtvZmZzZXQ6IjAiLHN0b3BDb2xvcjoiIzgzY2EwNyIsc3RvcE9wYWNpdHk6Ii41In0pLEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7b2Zmc2V0OiIxIixzdG9wQ29sb3I6IiMwMDczNzIiLHN0b3BPcGFjaXR5OiIuNSJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtpZDoiYSIsZDoiTTI2LjkxIDYuMDY3Yy0xLjU5My0uMjM5LTIuODY3LS4yMzktMy45OC0uMzk3LTEuMzU2LS4xMi0zLjk4My0uNDc4LTQuNy0xLjY3IDAgMCAwIC4xMTktLjA0LjMxNy0uMDQuNDM5LS4wNCAxLjM1My4yNCAyLjUwNS4yMzguOTk0LjU5OCAxLjk4OCAxLjExNSAyLjk0Mi4xNTguMzE4LjM1Ny41OTcuNTU3LjkxNSAxLjI3NCAxLjg2OCAzLjMwNCAzLjE4IDYuMzcxIDMuODU2IDQuMDIuOTE0IDcuODA0IDEuNTUxIDEwLjc1IDUuMjg3di0uMDM5Yy41MTgtMi4wNjctMS41MTQtMTIuMzI1LTEwLjMxMi0xMy43MTYifSksRS5hLmNyZWF0ZUVsZW1lbnQoInJhZGlhbEdyYWRpZW50Iix7aWQ6ImMiLGN4OiI0MC4wMTQlIixjeToiMjUuODMzJSIscjoiNzQuMTY3JSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7b2Zmc2V0OiIwIixzdG9wQ29sb3I6IiNmZjhjMjgifSksRS5hLmNyZWF0ZUVsZW1lbnQoInN0b3AiLHtvZmZzZXQ6Ii40NzMiLHN0b3BDb2xvcjoiI2Y5NmEzMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgic3RvcCIse29mZnNldDoiMSIsc3RvcENvbG9yOiIjZjA0ODYxIn0pKSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHtmaWxsOiIjNzZiMzBjIix4bGlua0hyZWY6IiNhIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHtmaWxsOiJ1cmwoI2IpIix4bGlua0hyZWY6IiNhIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwIDMxLjczMmMwIDguMDMzIDYuNTIzIDE0LjUxOSAxNC41MTkgMTQuNTE5YTE0LjUgMTQuNSAwIDAgMCAxNC41MTctMTQuMzYydi0uMzE1YTE0LjUwMSAxNC41MDEgMCAwIDAtMTQuNTE3LTE0LjM2QzE2LjUyMyAxNy4yMTQgMTAgMjMuNzAxIDEwIDMxLjczMiIsZmlsbDoidXJsKCNjKSJ9KSkpfTt6di5kaXNwbGF5TmFtZT0iT3JjaGFyZCIsenYuZGVmYXVsdFByb3BzPXtoZWlnaHQ6IjUwIix2aWV3Qm94OiIwIDAgNTAgNTAiLHdpZHRoOiI1MCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4bWxuc1hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIn07dmFyIEt2PWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHp2LHtjbGFzc05hbWU6Ikljb24gT3JjaGFyZCJ9KX0scXY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wdXNoLG49ZS50aXRsZSxyPWUubGlua3Msbz1lLmZvb3RlcjtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiTGVmdE5hdiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkxlZnROYXYtdGl0bGUifSxFLmEuY3JlYXRlRWxlbWVudChLdixudWxsKSxuKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJMZWZ0TmF2LW1lbnUtaXRlbXMifSxyLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtrZXk6ZS51cmwsY2xhc3NOYW1lOmUuYWN0aXZlPyJMZWZ0TmF2LW1lbnUtaXRlbS1zZWxlY3RlZCI6IkxlZnROYXYtbWVudS1pdGVtIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHQoZS51cmwpfX0sZS50aXRsZSl9KSkpLG8pfTtxdi5kaXNwbGF5TmFtZT0iTGVmdE5hdiIscXYucHJvcFR5cGVzPXtwdXNoOlYuYS5mdW5jLmlzUmVxdWlyZWQsdGl0bGU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGxpbmtzOlYuYS5hcnJheU9mKFYuYS5vYmplY3QpLmlzUmVxdWlyZWQsZm9vdGVyOlYuYS5ub2RlfTt2YXIgVnY9cXY7ZnVuY3Rpb24gVXYoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gV3YoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksdT1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9dS5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT11LnJldHVybnx8dS5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfXZhciBZdj1mdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlLG49ZS5vbkNoYW5nZSxyPWUuaW50ZXJ2YWwsbz12b2lkIDA9PT1yPzMwOnIsYT1XdihFLmEudXNlU3RhdGUoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW1sKCkoWzJlMywwLDEsMCwwLDAsMF0pLG49W107MT09PXQuZGF0ZSgpOyl7dmFyIHI9dC5mb3JtYXQoImg6bW0gQSIpO24ucHVzaCh7bGFiZWw6cix2YWx1ZTpyfSksdC5hZGQoZSwibWludXRlcyIpfXJldHVybiBufShvKSksMiksaT1hWzBdLHU9YVsxXTtFLmEudXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciBlOyhlPXQpJiYhT2JqZWN0KEYuZmluZCkoaSx7dmFsdWU6ZX0pJiZ1KFt7bGFiZWw6ZSx2YWx1ZTplfV0uY29uY2F0KFV2KGkpKSl9KSxbdF0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJUaW1lSW5wdXQifSxFLmEuY3JlYXRlRWxlbWVudCh0bix7dmFsdWU6dCxzZWxlY3RUeXBlOiJjcmVhdGFibGUiLHBsYWNlaG9sZGVyOiJTZXQgVGltZSIsb3B0aW9uczppLHByb21wdFRleHRDcmVhdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxpc09wdGlvblVuaXF1ZTpmdW5jdGlvbigpe3JldHVybiEwfSxvbkNoYW5nZTpuLGlzVmFsaWROZXdPcHRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sYWJlbDtyZXR1cm4hIXQmJm1sKCkodCwiaDptbSBBIiwhMCkuaXNWYWxpZCgpfSxjbGVhcmFibGU6ITF9KSl9O1l2LmRpc3BsYXlOYW1lPSJUaW1lSW5wdXQiLFl2LnByb3BUeXBlcz17dmFsdWU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2hhbmdlOlYuYS5mdW5jLmlzUmVxdWlyZWQsaW50ZXJ2YWw6Vi5hLm51bWJlcn07dmFyIEh2PVl2LEd2PWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTcuNDg1IDMuMzZjLjI4OS0uNDc1Ljc1MS0uNDg2IDEuMDQ3IDBsNS4zNTMgOC44MDNjLjI5LjQ3Ni4wNjguODYyLS40OC44NjJIMi42MTFjLS41NTUgMC0uNzc2LS4zNzUtLjQ4LS44NjJsNS4zNTMtOC44MDJ6TTggMTJhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyek03IDZ2M2gyVjZIN3oiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07R3YuZGlzcGxheU5hbWU9Ildhcm5pbmciLEd2LmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBRdj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChHdix7Y2xhc3NOYW1lOiJHbHlwaCBXYXJuaW5nIn0pfSxKdj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yIDhjMC0zLjMxNCAyLjY5My02IDYtNiAzLjMxNCAwIDYgMi42OTMgNiA2IDAgMy4zMTQtMi42OTMgNi02IDYtMy4zMTQgMC02LTIuNjkzLTYtNnptNC4zNDMtMXYxLjAwNGgxLjI2MXYyLjk5Mkg2VjEyaDQuNDkxdi0xLjAwNGgtMS42VjdINi4zNDR6bTEuOTA3LS41YTEuMjUgMS4yNSAwIDEgMCAwLTIuNSAxLjI1IDEuMjUgMCAwIDAgMCAyLjV6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O0p2LmRpc3BsYXlOYW1lPSJJbmZvIixKdi5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgWnY9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoSnYse2NsYXNzTmFtZToiR2x5cGggSW5mbyJ9KX0sJHY9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOS4zNjQgNy45NWwzLjUzNSAzLjUzNS0xLjQxNCAxLjQxNEw3Ljk1IDkuMzY0bC0zLjUzNiAzLjUzNUwzIDExLjQ4NSA2LjUzNiA3Ljk1IDMgNC40MTQgNC40MTQgMyA3Ljk1IDYuNTM2IDExLjQ4NSAzIDEyLjkgNC40MTR6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9OyR2LmRpc3BsYXlOYW1lPSJDbG9zZSIsJHYuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFh2PWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCR2LHtjbGFzc05hbWU6IkdseXBoIENsb3NlIn0pfSxlZz1mdW5jdGlvbihlKXtyZXR1cm4ic3VjY2VzcyI9PT1lP0UuYS5jcmVhdGVFbGVtZW50KFFtLG51bGwpOiJkYW5nZXIiPT09ZT9FLmEuY3JlYXRlRWxlbWVudChRdixudWxsKToid2FybmluZyI9PT1lP0UuYS5jcmVhdGVFbGVtZW50KFF2LG51bGwpOkUuYS5jcmVhdGVFbGVtZW50KFp2LG51bGwpfTtlZy5kaXNwbGF5TmFtZT0iZ2V0SWNvbkZyb21WYXJpYW50Ijt2YXIgdGc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YXJpYW50LG49ZS50aXRsZSxyPWUuaGFzSWNvbixvPWUuY2hpbGRyZW4sYT1lLnNob3csaT1lLmRpc21pc3NpYmxlLHU9ZS5vbkRpc21pc3M7cmV0dXJuIGE/RS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoImZyYy1hbGVydCIsIiAiKS5jb25jYXQoImZyYy1hbGVydCIsIi12YXJpYW50LSIpLmNvbmNhdCh0KX0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoImZyYy1hbGVydCIsIi1pbm5lciIpfSxyJiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiZnJjLWFsZXJ0IiwiLWljb24iKX0sZWcodCkpLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJmcmMtYWxlcnQiLCItY29udGVudCIpfSxuJiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiZnJjLWFsZXJ0IiwiLXRpdGxlIil9LG4pLG8mJkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJmcmMtYWxlcnQiLCItY2hpbGRyZW4iKX0sbykpLGkmJkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtvbkNsaWNrOnV8fG51bGwsY2xhc3NOYW1lOiIiLmNvbmNhdCgiZnJjLWFsZXJ0IiwiLWRpc21pc3MiKX0sRS5hLmNyZWF0ZUVsZW1lbnQoWHYsbnVsbCkpKSk6bnVsbH07dGcuZGlzcGxheU5hbWU9IkFsZXJ0Iix0Zy5wcm9wVHlwZXM9e3Nob3c6Vi5hLmJvb2wsaGFzSWNvbjpWLmEuYm9vbCx0aXRsZTpWLmEuc3RyaW5nLGRpc21pc3NpYmxlOlYuYS5ib29sLHZhcmlhbnQ6Vi5hLm9uZU9mKFsiaW5mbyIsImRhbmdlciIsInN1Y2Nlc3MiLCJ3YXJuaW5nIl0pLGNoaWxkcmVuOlYuYS5ub2RlLG9uRGlzbWlzczpWLmEuZnVuY30sdGcuZGVmYXVsdFByb3BzPXtoYXNJY29uOiEwLHNob3c6ITB9LHRnLlZBUklBTlRfSU5GTz0iaW5mbyIsdGcuVkFSSUFOVF9EQU5HRVI9ImRhbmdlciIsdGcuVkFSSUFOVF9TVUNDRVNTPSJzdWNjZXNzIix0Zy5WQVJJQU5UX1dBUk5JTkc9Indhcm5pbmciO3ZhciBuZz10ZyxyZz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5hY3RpdmUsbz1lLmNsYXNzTmFtZSxhPWUuYXMsaT12b2lkIDA9PT1hPyJsaSI6YSx1PWxyKGUsWyJic1ByZWZpeCIsImFjdGl2ZSIsImNsYXNzTmFtZSIsImFzIl0pLHM9dnIobiwiYnJlYWRjcnVtYi1pdGVtIiksbD11LmhyZWYsYz11LnRpdGxlLGY9dS50YXJnZXQsZD1scih1LFsiaHJlZiIsInRpdGxlIiwidGFyZ2V0Il0pLHA9e2hyZWY6bCx0aXRsZTpjLHRhcmdldDpmfTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoaSx7cmVmOnQsY2xhc3NOYW1lOlR0KCkocyxvLHthY3RpdmU6cn0pLCJhcmlhLWN1cnJlbnQiOnI/InBhZ2UiOnZvaWQgMH0scj9FLmEuY3JlYXRlRWxlbWVudCgic3BhbiIsc3Ioe30sZCx7Y2xhc3NOYW1lOlR0KCkoe2FjdGl2ZTpyfSl9KSk6RS5hLmNyZWF0ZUVsZW1lbnQoQXIsc3Ioe30sZCxwKSkpfSkpO3JnLmRpc3BsYXlOYW1lPSJCcmVhZGNydW1iSXRlbSIscmcuZGVmYXVsdFByb3BzPXthY3RpdmU6ITF9O3ZhciBvZz1yZyxhZz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5jbGFzc05hbWUsbz1lLmxpc3RQcm9wcyxhPWUuY2hpbGRyZW4saT1lLmxhYmVsLHU9ZS5hcyxzPXZvaWQgMD09PXU/Im5hdiI6dSxsPWxyKGUsWyJic1ByZWZpeCIsImNsYXNzTmFtZSIsImxpc3RQcm9wcyIsImNoaWxkcmVuIiwibGFiZWwiLCJhcyJdKSxjPXZyKG4sImJyZWFkY3J1bWIiKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocyxzcih7ImFyaWEtbGFiZWwiOmksY2xhc3NOYW1lOnIscmVmOnR9LGwpLEUuYS5jcmVhdGVFbGVtZW50KCJvbCIsc3Ioe30sbyx7Y2xhc3NOYW1lOlR0KCkoYyxvLmNsYXNzTmFtZSl9KSxhKSl9KSk7YWcuZGlzcGxheU5hbWU9IkJyZWFkY3J1bWIiLGFnLmRlZmF1bHRQcm9wcz17bGFiZWw6ImJyZWFkY3J1bWIiLGxpc3RQcm9wczp7fX0sYWcuSXRlbT1vZzt2YXIgaWc9YWcsdWc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ic1ByZWZpeCxuPWUuY2hpbGRyZW47cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGlnLHtic1ByZWZpeDp0LGNsYXNzTmFtZToiQnJlYWRjcnVtYkNvbnRlbnQifSxuKX07dWcuZGlzcGxheU5hbWU9IkJyZWFkY3J1bWIiLHVnLnByb3BUeXBlcz17YnNQcmVmaXg6Vi5hLnN0cmluZyxjaGlsZHJlbjpWLmEuYW55fSwodWcuSXRlbT1vZykuZGlzcGxheU5hbWU9IkJyZWFkY3J1bWJJdGVtIjt2YXIgc2c9dWcsbGc9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNy43MyAxMS44N0wyLjEzIDYuMjcxQS4zNzkuMzc5IDAgMCAxIDIgNS45OTFjMC0uMDg2LjA0Mi0uMTk0LjEyOS0uMjhsLjU4MS0uNTgxQS4zOC4zOCAwIDAgMSAyLjk5IDVhLjM4LjM4IDAgMCAxIC4yOC4xM2w0LjcxOCA0LjcxN0wxMi43MyA1LjEzYS4zNDUuMzQ1IDAgMCAxIC41MzkgMGwuNjAyLjU4MWMuMDg3LjA4Ni4xMy4xOTQuMTMuMjhhLjM4LjM4IDAgMCAxLS4xMy4yOGwtNS42MDEgNS42YS4zNDYuMzQ2IDAgMCAxLS41MzkgMHoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07bGcuZGlzcGxheU5hbWU9IkNoZXZEb3duIixsZy5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgY2c9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQobGcse2NsYXNzTmFtZToiR2x5cGggQ2hldkRvd24ifSl9O2Z1bmN0aW9uIGZnKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb312YXIgZGc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZCxuPXZvaWQgMD09PXQ/dm9pZCAwOnQscj1lLnRpdGxlLG89dm9pZCAwPT09cj92b2lkIDA6cixhPWUuY2hpbGRyZW4saT1lLnNob3csdT12b2lkIDA9PT1pP3ZvaWQgMDppLHM9ZS5hbGlnblJpZ2h0LGw9dm9pZCAwPT09cz92b2lkIDA6cyxjPWUub25TZWxlY3QsZj12b2lkIDA9PT1jP3ZvaWQgMDpjLGQ9ZS5vblRvZ2dsZSxwPXZvaWQgMD09PWQ/dm9pZCAwOmQsaD1lLmJzUHJlZml4LHk9dm9pZCAwPT09aD92b2lkIDA6aCxtPWUud2l0aENoZXZyb24sdj12b2lkIDAhPT1tJiZtLGc9ZS5pY29uT25seSxiPXZvaWQgMCE9PWcmJmcsdz1mZyhlLFsiaWQiLCJ0aXRsZSIsImNoaWxkcmVuIiwic2hvdyIsImFsaWduUmlnaHQiLCJvblNlbGVjdCIsIm9uVG9nZ2xlIiwiYnNQcmVmaXgiLCJ3aXRoQ2hldnJvbiIsImljb25Pbmx5Il0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCh6YSx7c2hvdzp1LGJzUHJlZml4Onksb25TZWxlY3Q6ZixvblRvZ2dsZTpwLGlkOm4sY2xhc3NOYW1lOmI/IkRyb3Bkb3duSWNvbk9ubHkiOiIifSxFLmEuY3JlYXRlRWxlbWVudChGYSx3LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRyb3Bkb3duVG9nZ2xlQ29udGVudCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRyb3Bkb3duVG9nZ2xlTGFiZWwifSxvKSx2JiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJEcm9wZG93blRvZ2dsZUNoZXZyb24ifSxFLmEuY3JlYXRlRWxlbWVudChjZyxudWxsKSkpKSxFLmEuY3JlYXRlRWxlbWVudChMYSx7YWxpZ25SaWdodDpsfSxhKSl9O2RnLmRpc3BsYXlOYW1lPSJEcm9wZG93biIsZGcucHJvcFR5cGVzPXtpZDpWLmEuc3RyaW5nLGNoaWxkcmVuOlYuYS5hbnksZGlzYWJsZWQ6Vi5hLmJvb2wsYWxpZ25SaWdodDpWLmEuYm9vbCxzaG93OlYuYS5ib29sLG9uVG9nZ2xlOlYuYS5mdW5jLG9uU2VsZWN0OlYuYS5mdW5jLHZhcmlhbnQ6cGgsc2l6ZTpkaCx0aXRsZTpWLmEubm9kZS5pc1JlcXVpcmVkLGJzUHJlZml4OlYuYS5zdHJpbmcsd2l0aENoZXZyb246Vi5hLmJvb2wsaWNvbk9ubHk6Vi5hLmJvb2x9LGRnLmRlZmF1bHRQcm9wcz17dmFyaWFudDoic2Vjb25kYXJ5IixkaXNhYmxlZDohMSx3aXRoQ2hldnJvbjohMCxpY29uT25seTohMX0sKGRnLkhlYWRlcj16YS5IZWFkZXIpLmRpc3BsYXlOYW1lPSJEcm9wZG93bkhlYWRlciIsKGRnLkl0ZW09UGEpLmRpc3BsYXlOYW1lPSJEcm9wZG93bkl0ZW0iLChkZy5EaXZpZGVyPXphLkRpdmlkZXIpLmRpc3BsYXlOYW1lPSJEcm9wZG93bkRpdmlkZXIiO3ZhciBwZz1kZyxoZz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5zaXplLG89ZS50b2dnbGUsYT1lLnZlcnRpY2FsLGk9ZS5jbGFzc05hbWUsdT1lLmFzLHM9dm9pZCAwPT09dT8iZGl2Ijp1LGw9bHIoZSxbImJzUHJlZml4Iiwic2l6ZSIsInRvZ2dsZSIsInZlcnRpY2FsIiwiY2xhc3NOYW1lIiwiYXMiXSksYz12cihuLCJidG4tZ3JvdXAiKSxmPWM7cmV0dXJuIGEmJihmPWMrIi12ZXJ0aWNhbCIpLEUuYS5jcmVhdGVFbGVtZW50KHMsc3Ioe30sbCx7cmVmOnQsY2xhc3NOYW1lOlR0KCkoaSxmLHImJmMrIi0iK3IsbyYmYysiLXRvZ2dsZSIpfSkpfSkpO2hnLmRpc3BsYXlOYW1lPSJCdXR0b25Hcm91cCIsaGcuZGVmYXVsdFByb3BzPXt2ZXJ0aWNhbDohMSx0b2dnbGU6ITEscm9sZToiZ3JvdXAifTt2YXIgeWc9aGcsbWc9eWcsdmc9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuY2xhc3NOYW1lLG89bHIoZSxbImJzUHJlZml4IiwiY2xhc3NOYW1lIl0pLGE9dnIobiwiYnRuLXRvb2xiYXIiKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsc3Ioe30sbyx7cmVmOnQsY2xhc3NOYW1lOlR0KCkocixhKX0pKX0pKTt2Zy5kaXNwbGF5TmFtZT0iQnV0dG9uVG9vbGJhciIsdmcuZGVmYXVsdFByb3BzPXtyb2xlOiJ0b29sYmFyIn07dmFyIGdnPXZnLGJnPXt0eXBlOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxhczpWLmEuZWxlbWVudFR5cGV9LHdnPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYXMscj12b2lkIDA9PT1uPyJkaXYiOm4sbz1lLmNsYXNzTmFtZSxhPWUudHlwZSxpPWxyKGUsWyJhcyIsImNsYXNzTmFtZSIsInR5cGUiXSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHIsc3Ioe30saSx7cmVmOnQsY2xhc3NOYW1lOlR0KCkobyxhJiZhKyItZmVlZGJhY2siKX0pKX0pKTt3Zy5kaXNwbGF5TmFtZT0iRmVlZGJhY2siLHdnLnByb3BUeXBlcz1iZyx3Zy5kZWZhdWx0UHJvcHM9e3R5cGU6InZhbGlkIn07dmFyIF9nPXdnLEVnPUUuYS5jcmVhdGVDb250ZXh0KHtjb250cm9sSWQ6dm9pZCAwfSksT2c9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pZCxyPWUuYnNQcmVmaXgsbz1lLmJzQ3VzdG9tUHJlZml4LGE9ZS5jbGFzc05hbWUsaT1lLmlzVmFsaWQsdT1lLmlzSW52YWxpZCxzPWUuaXNTdGF0aWMsbD1lLmFzLGM9dm9pZCAwPT09bD8iaW5wdXQiOmwsZj1scihlLFsiaWQiLCJic1ByZWZpeCIsImJzQ3VzdG9tUHJlZml4IiwiY2xhc3NOYW1lIiwiaXNWYWxpZCIsImlzSW52YWxpZCIsImlzU3RhdGljIiwiYXMiXSksZD1PYmplY3QoXy51c2VDb250ZXh0KShFZykscD1kLmNvbnRyb2xJZDtyZXR1cm4gcj1kLmN1c3RvbT92cihvLCJjdXN0b20tY29udHJvbC1pbnB1dCIpOnZyKHIsImZvcm0tY2hlY2staW5wdXQiKSxFLmEuY3JlYXRlRWxlbWVudChjLHNyKHt9LGYse3JlZjp0LGlkOm58fHAsY2xhc3NOYW1lOlR0KCkoYSxyLGkmJiJpcy12YWxpZCIsdSYmImlzLWludmFsaWQiLHMmJiJwb3NpdGlvbi1zdGF0aWMiKX0pKX0pKTtPZy5kaXNwbGF5TmFtZT0iRm9ybUNoZWNrSW5wdXQiLE9nLmRlZmF1bHRQcm9wcz17dHlwZToiY2hlY2tib3gifTt2YXIga2c9T2csQ2c9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuYnNDdXN0b21QcmVmaXgsbz1lLmNsYXNzTmFtZSxhPWUuaHRtbEZvcixpPWxyKGUsWyJic1ByZWZpeCIsImJzQ3VzdG9tUHJlZml4IiwiY2xhc3NOYW1lIiwiaHRtbEZvciJdKSx1PU9iamVjdChfLnVzZUNvbnRleHQpKEVnKSxzPXUuY29udHJvbElkO3JldHVybiBuPXUuY3VzdG9tP3ZyKHIsImN1c3RvbS1jb250cm9sLWxhYmVsIik6dnIobiwiZm9ybS1jaGVjay1sYWJlbCIpLEUuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIsc3Ioe30saSx7cmVmOnQsaHRtbEZvcjphfHxzLGNsYXNzTmFtZTpUdCgpKG8sbil9KSl9KSk7Q2cuZGlzcGxheU5hbWU9IkZvcm1DaGVja0xhYmVsIjt2YXIgeGc9Q2csU2c9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pZCxyPWUuYnNQcmVmaXgsbz1lLmJzQ3VzdG9tUHJlZml4LGE9ZS5pbmxpbmUsaT1lLmRpc2FibGVkLHU9ZS5pc1ZhbGlkLHM9ZS5pc0ludmFsaWQsbD1lLmZlZWRiYWNrLGM9ZS5jbGFzc05hbWUsZj1lLnN0eWxlLGQ9ZS50aXRsZSxwPWUudHlwZSxoPWUubGFiZWwseT1lLmNoaWxkcmVuLG09ZS5jdXN0b20sdj1lLmFzLGc9dm9pZCAwPT09dj8iaW5wdXQiOnYsYj1scihlLFsiaWQiLCJic1ByZWZpeCIsImJzQ3VzdG9tUHJlZml4IiwiaW5saW5lIiwiZGlzYWJsZWQiLCJpc1ZhbGlkIiwiaXNJbnZhbGlkIiwiZmVlZGJhY2siLCJjbGFzc05hbWUiLCJzdHlsZSIsInRpdGxlIiwidHlwZSIsImxhYmVsIiwiY2hpbGRyZW4iLCJjdXN0b20iLCJhcyJdKSx3PSJzd2l0Y2giPT09cHx8bTtyPXc/dnIobywiY3VzdG9tLWNvbnRyb2wiKTp2cihyLCJmb3JtLWNoZWNrIik7dmFyIE89T2JqZWN0KF8udXNlQ29udGV4dCkoRWcpLmNvbnRyb2xJZCxrPU9iamVjdChfLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybntjb250cm9sSWQ6bnx8TyxjdXN0b206d319KSxbTyx3LG5dKSxDPW51bGwhPWgmJiExIT09aCYmIXkseD1FLmEuY3JlYXRlRWxlbWVudChrZyxzcih7fSxiLHt0eXBlOiJzd2l0Y2giPT09cD8iY2hlY2tib3giOnAscmVmOnQsaXNWYWxpZDp1LGlzSW52YWxpZDpzLGlzU3RhdGljOiFDLGRpc2FibGVkOmksYXM6Z30pKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoRWcuUHJvdmlkZXIse3ZhbHVlOmt9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtzdHlsZTpmLGNsYXNzTmFtZTpUdCgpKGMscix3JiYiY3VzdG9tLSIrcCxhJiZyKyItaW5saW5lIil9LHl8fEUuYS5jcmVhdGVFbGVtZW50KEUuYS5GcmFnbWVudCxudWxsLHgsQyYmRS5hLmNyZWF0ZUVsZW1lbnQoeGcse3RpdGxlOmR9LGgpLCh1fHxzKSYmRS5hLmNyZWF0ZUVsZW1lbnQoX2cse3R5cGU6dT8idmFsaWQiOiJpbnZhbGlkIn0sbCkpKSl9KSk7U2cuZGlzcGxheU5hbWU9IkZvcm1DaGVjayIsU2cuZGVmYXVsdFByb3BzPXt0eXBlOiJjaGVja2JveCIsaW5saW5lOiExLGRpc2FibGVkOiExLGlzVmFsaWQ6ITEsaXNJbnZhbGlkOiExLHRpdGxlOiIifSxTZy5JbnB1dD1rZyxTZy5MYWJlbD14Zzt2YXIgRGc9U2csVGc9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWUuYnNQcmVmaXgsYT1lLnR5cGUsaT1lLnNpemUsdT1lLmlkLHM9ZS5jbGFzc05hbWUsbD1lLmlzVmFsaWQsYz1lLmlzSW52YWxpZCxmPWUucGxhaW50ZXh0LGQ9ZS5yZWFkT25seSxwPWUuYXMsaD12b2lkIDA9PT1wPyJpbnB1dCI6cCx5PWxyKGUsWyJic1ByZWZpeCIsInR5cGUiLCJzaXplIiwiaWQiLCJjbGFzc05hbWUiLCJpc1ZhbGlkIiwiaXNJbnZhbGlkIiwicGxhaW50ZXh0IiwicmVhZE9ubHkiLCJhcyJdKSxtPU9iamVjdChfLnVzZUNvbnRleHQpKEVnKS5jb250cm9sSWQ7aWYobz12cihvLCJmb3JtLWNvbnRyb2wiKSxmKShyPXt9KVtvKyItcGxhaW50ZXh0Il09ITAsbj1yO2Vsc2UgaWYoImZpbGUiPT09YSl7dmFyIHY7KHY9e30pW28rIi1maWxlIl09ITAsbj12fWVsc2V7dmFyIGc7KGc9e30pW29dPSEwLGdbbysiLSIraV09aSxuPWd9cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGgsc3Ioe30seSx7dHlwZTphLHJlZjp0LHJlYWRPbmx5OmQsaWQ6dXx8bSxjbGFzc05hbWU6VHQoKShzLG4sbCYmImlzLXZhbGlkIixjJiYiaXMtaW52YWxpZCIpfSkpfSkpO1RnLmRpc3BsYXlOYW1lPSJGb3JtQ29udHJvbCIsVGcuRmVlZGJhY2s9X2c7dmFyIE1nPVRnLFBnPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLmNsYXNzTmFtZSxvPWUuY2hpbGRyZW4sYT1lLmNvbnRyb2xJZCxpPWUuYXMsdT12b2lkIDA9PT1pPyJkaXYiOmkscz1scihlLFsiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImNvbnRyb2xJZCIsImFzIl0pO249dnIobiwiZm9ybS1ncm91cCIpO3ZhciBsPU9iamVjdChfLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybntjb250cm9sSWQ6YX19KSxbYV0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChFZy5Qcm92aWRlcix7dmFsdWU6bH0sRS5hLmNyZWF0ZUVsZW1lbnQodSxzcih7fSxzLHtyZWY6dCxjbGFzc05hbWU6VHQoKShyLG4pfSksbykpfSkpO1BnLmRpc3BsYXlOYW1lPSJGb3JtR3JvdXAiO3ZhciBOZz1QZyxqZz1bInhsIiwibGciLCJtZCIsInNtIiwieHMiXSxMZz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5jbGFzc05hbWUsbz1lLmFzLGE9dm9pZCAwPT09bz8iZGl2IjpvLGk9bHIoZSxbImJzUHJlZml4IiwiY2xhc3NOYW1lIiwiYXMiXSksdT12cihuLCJjb2wiKSxzPVtdLGw9W107cmV0dXJuIGpnLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvPWlbZV07aWYoZGVsZXRlIGlbZV0sbnVsbCE9byYmIm9iamVjdCI9PXR5cGVvZiBvKXt2YXIgYT1vLnNwYW47dD12b2lkIDA9PT1hfHxhLG49by5vZmZzZXQscj1vLm9yZGVyfWVsc2UgdD1vO3ZhciBjPSJ4cyIhPT1lPyItIitlOiIiO251bGwhPXQmJnMucHVzaCghMD09PXQ/IiIrdStjOiIiK3UrYysiLSIrdCksbnVsbCE9ciYmbC5wdXNoKCJvcmRlciIrYysiLSIrciksbnVsbCE9biYmbC5wdXNoKCJvZmZzZXQiK2MrIi0iK24pfSkpLHMubGVuZ3RofHxzLnB1c2godSksRS5hLmNyZWF0ZUVsZW1lbnQoYSxzcih7fSxpLHtyZWY6dCxjbGFzc05hbWU6VHQuYS5hcHBseSh2b2lkIDAsW3JdLmNvbmNhdChzLGwpKX0pKX0pKTtMZy5kaXNwbGF5TmFtZT0iQ29sIjt2YXIgUmc9TGcsSWc9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuY29sdW1uLG89ZS5zck9ubHksYT1lLmNsYXNzTmFtZSxpPWUuaHRtbEZvcix1PWxyKGUsWyJic1ByZWZpeCIsImNvbHVtbiIsInNyT25seSIsImNsYXNzTmFtZSIsImh0bWxGb3IiXSkscz1PYmplY3QoXy51c2VDb250ZXh0KShFZykuY29udHJvbElkO249dnIobiwiZm9ybS1sYWJlbCIpO3ZhciBsPVR0KCkoYSxuLG8mJiJzci1vbmx5IixyJiYiY29sLWZvcm0tbGFiZWwiKTtyZXR1cm4gaT1pfHxzLHI/RS5hLmNyZWF0ZUVsZW1lbnQoUmcsc3Ioe2FzOiJsYWJlbCIsY2xhc3NOYW1lOmwsaHRtbEZvcjppfSx1KSk6RS5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIixzcih7cmVmOnQsY2xhc3NOYW1lOmwsaHRtbEZvcjppfSx1KSl9KSk7SWcuZGlzcGxheU5hbWU9IkZvcm1MYWJlbCIsSWcuZGVmYXVsdFByb3BzPXtjb2x1bW46ITEsc3JPbmx5OiExfTt2YXIgQWc9SWcsRmc9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuY2xhc3NOYW1lLG89ZS5hcyxhPXZvaWQgMD09PW8/InNtYWxsIjpvLGk9ZS5tdXRlZCx1PWxyKGUsWyJic1ByZWZpeCIsImNsYXNzTmFtZSIsImFzIiwibXV0ZWQiXSk7cmV0dXJuIG49dnIobiwiZm9ybS10ZXh0IiksRS5hLmNyZWF0ZUVsZW1lbnQoYSxzcih7fSx1LHtyZWY6dCxjbGFzc05hbWU6VHQoKShyLG4saSYmInRleHQtbXV0ZWQiKX0pKX0pKTtGZy5kaXNwbGF5TmFtZT0iRm9ybVRleHQiO3ZhciBCZz1GZyx6Zz1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoRGcsc3Ioe30sZSx7cmVmOnQsdHlwZToic3dpdGNoIn0pKX0pKTt6Zy5kaXNwbGF5TmFtZT0iU3dpdGNoIix6Zy5JbnB1dD1EZy5JbnB1dCx6Zy5MYWJlbD1EZy5MYWJlbDt2YXIgS2c9emcscWc9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuaW5saW5lLG89ZS5jbGFzc05hbWUsYT1lLnZhbGlkYXRlZCxpPWUuYXMsdT12b2lkIDA9PT1pPyJmb3JtIjppLHM9bHIoZSxbImJzUHJlZml4IiwiaW5saW5lIiwiY2xhc3NOYW1lIiwidmFsaWRhdGVkIiwiYXMiXSk7cmV0dXJuIG49dnIobiwiZm9ybSIpLEUuYS5jcmVhdGVFbGVtZW50KHUsc3Ioe30scyx7cmVmOnQsY2xhc3NOYW1lOlR0KCkobyxhJiYid2FzLXZhbGlkYXRlZCIsciYmbisiLWlubGluZSIpfSkpfSkpO3FnLmRpc3BsYXlOYW1lPSJGb3JtIixxZy5kZWZhdWx0UHJvcHM9e2lubGluZTohMX0scWcuUm93PVFyKCJmb3JtLXJvdyIpLHFnLkdyb3VwPU5nLHFnLkNvbnRyb2w9TWcscWcuQ2hlY2s9RGcscWcuU3dpdGNoPUtnLHFnLkxhYmVsPUFnLHFnLlRleHQ9Qmc7dmFyIFZnPXFnLFVnPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLnZhcmlhbnQsbz1lLnBpbGwsYT1lLmNsYXNzTmFtZSxpPWUuYXMsdT12b2lkIDA9PT1pPyJzcGFuIjppLHM9bHIoZSxbImJzUHJlZml4IiwidmFyaWFudCIsInBpbGwiLCJjbGFzc05hbWUiLCJhcyJdKSxsPXZyKG4sImJhZGdlIik7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHUsc3Ioe3JlZjp0fSxzLHtjbGFzc05hbWU6VHQoKShhLGwsbyYmbCsiLXBpbGwiLHImJmwrIi0iK3IpfSkpfSkpO1VnLmRpc3BsYXlOYW1lPSJCYWRnZSIsVWcuZGVmYXVsdFByb3BzPXtwaWxsOiExfTt2YXIgV2c9VWcsWWc9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUuY2xhc3NOYW1lLG89ZS5zdHJpcGVkLGE9ZS5ib3JkZXJlZCxpPWUuYm9yZGVybGVzcyx1PWUuaG92ZXIscz1lLnNpemUsbD1lLnZhcmlhbnQsYz1lLnJlc3BvbnNpdmUsZj1scihlLFsiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJzdHJpcGVkIiwiYm9yZGVyZWQiLCJib3JkZXJsZXNzIiwiaG92ZXIiLCJzaXplIiwidmFyaWFudCIsInJlc3BvbnNpdmUiXSksZD12cihuLCJ0YWJsZSIpLHA9VHQoKShyLGQsbCYmZCsiLSIrbCxzJiZkKyItIitzLG8mJmQrIi1zdHJpcGVkIixhJiZkKyItYm9yZGVyZWQiLGkmJmQrIi1ib3JkZXJsZXNzIix1JiZkKyItaG92ZXIiKSxoPUUuYS5jcmVhdGVFbGVtZW50KCJ0YWJsZSIsc3Ioe30sZix7Y2xhc3NOYW1lOnAscmVmOnR9KSk7aWYoYyl7dmFyIHk9ZCsiLXJlc3BvbnNpdmUiO3JldHVybiJzdHJpbmciPT10eXBlb2YgYyYmKHk9eSsiLSIrYyksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp5fSxoKX1yZXR1cm4gaH0pKSxIZz1mdW5jdGlvbihlKXt2YXIgdD1lLmhlbHAsbj1lLmlzUmVxdWlyZWQscj1lLnRleHQsbz1lLmhhc0Vycm9yLGE9ZS5oZWxwSWQsaT1FLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiRlJDTGFiZWwtcmVxdWlyZWQiLHJvbGU6InRvb2x0aXAiLHRpdGxlOiJyZXF1aXJlZCJ9LCIgKiIpLHU9VHQoKSgiRlJDTGFiZWwiLHsiRlJDTGFiZWwtZXJyb3IiOm99KTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp1fSxFLmEuY3JlYXRlRWxlbWVudChWZy5MYWJlbCxudWxsLHIsbiYmaSksdCYmRS5hLmNyZWF0ZUVsZW1lbnQoQXAse21lc3NhZ2U6dCxpZDphfSkpfTtIZy5kaXNwbGF5TmFtZT0iTGFiZWwiLEhnLnByb3BUeXBlcz17aGVscDpWLmEub25lT2ZUeXBlKFtWLmEubm9kZSxWLmEuc3RyaW5nXSksaXNSZXF1aXJlZDpWLmEuYm9vbCx0ZXh0OlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxoYXNFcnJvcjpWLmEuYm9vbCxoZWxwSWQ6Vi5hLnN0cmluZ307dmFyIEdnPUhnO3ZhciBRZz1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1lLmNoaWxkcmVuLGE9ZS5lcnJvck1lc3NhZ2UsaT1lLm5vdGUsdT1lLmNsYXNzTmFtZSxzPVR0KCkoIkZSQ0NvbnRyb2wiLChyPSEhdSwobj11KWluKHQ9eyJGUkNDb250cm9sLWVycm9yIjohIWF9KT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtuXT1yLHQpKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpzfSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJGUkNDb250cm9sLUlucHV0In0sbyksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCJ9LGkpLGEmJkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkZSQ0NvbnRyb2wtZXJyb3ItbWVzc2FnZSJ9LGEpKX07UWcuZGlzcGxheU5hbWU9IkNvbnRyb2wiLFFnLnByb3BUeXBlcz17Y2hpbGRyZW46Vi5hLm9uZU9mVHlwZShbVi5hLm5vZGUsVi5hLmFycmF5T2YoVi5hLm5vZGUpXSkuaXNSZXF1aXJlZCxlcnJvck1lc3NhZ2U6Vi5hLm9uZU9mVHlwZShbVi5hLm5vZGUsVi5hLnN0cmluZ10pLG5vdGU6Vi5hLm9uZU9mVHlwZShbVi5hLm5vZGUsVi5hLnN0cmluZ10pLGNsYXNzTmFtZTpWLmEuc3RyaW5nfTt2YXIgSmc9UWcsWmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250cm9sSWQsbj1lLmxhYmVsVGV4dCxyPWUuaGVscFRleHQsbz1lLmlzUmVxdWlyZWQsYT1lLmVycm9yTWVzc2FnZSxpPWUubm90ZSx1PWUuY2hpbGRyZW47cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFZnLkdyb3VwLHtjb250cm9sSWQ6dH0sRS5hLmNyZWF0ZUVsZW1lbnQoR2cse3RleHQ6bixoZWxwOnIsaXNSZXF1aXJlZDpvLGhhc0Vycm9yOiEhYSxoZWxwSWQ6ImhlbHAtIi5jb25jYXQodCl9KSxFLmEuY3JlYXRlRWxlbWVudChKZyx7ZXJyb3JNZXNzYWdlOmEsbm90ZTppfSx1KSl9O1pnLmRpc3BsYXlOYW1lPSJGaWVsZCIsWmcucHJvcFR5cGVzPXtjb250cm9sSWQ6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGNoaWxkcmVuOlYuYS5vbmVPZlR5cGUoW1YuYS5ub2RlLFYuYS5hcnJheU9mKFYuYS5ub2RlKV0pLmlzUmVxdWlyZWQsZXJyb3JNZXNzYWdlOlYuYS5vbmVPZlR5cGUoW1YuYS5ub2RlLFYuYS5zdHJpbmddKSxub3RlOlYuYS5vbmVPZlR5cGUoW1YuYS5ub2RlLFYuYS5zdHJpbmddKSxoZWxwVGV4dDpWLmEub25lT2ZUeXBlKFtWLmEubm9kZSxWLmEuc3RyaW5nXSksaXNSZXF1aXJlZDpWLmEuYm9vbCxsYWJlbFRleHQ6Vi5hLnN0cmluZy5pc1JlcXVpcmVkfTt2YXIgJGc9WmcsWGc9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5ic1ByZWZpeCxyPWUubm9HdXR0ZXJzLG89ZS5hcyxhPXZvaWQgMD09PW8/ImRpdiI6byxpPWUuY2xhc3NOYW1lLHU9bHIoZSxbImJzUHJlZml4Iiwibm9HdXR0ZXJzIiwiYXMiLCJjbGFzc05hbWUiXSkscz12cihuLCJyb3ciKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoYSxzcih7cmVmOnR9LHUse2NsYXNzTmFtZTpUdCgpKGkscyxyJiYibm8tZ3V0dGVycyIpfSkpfSkpO1hnLmRlZmF1bHRQcm9wcz17bm9HdXR0ZXJzOiExfTt2YXIgZWI9WGcsdGI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250cm9sSWQsbj1lLmxhYmVsVGV4dCxyPWUuaGVscFRleHQsbz1lLmlzUmVxdWlyZWQsYT1lLmVycm9yTWVzc2FnZSxpPWUubm90ZSx1PWUuY2hpbGRyZW4scz1lLmlzSW52YWxpZCxsPWUubGFiZWxHcmlkU2l6ZSxjPXZvaWQgMD09PWw/MzpsLGY9ZS5jb250cm9sR3JpZFNpemUsZD12b2lkIDA9PT1mPzk6ZjtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoVmcuR3JvdXAse2NvbnRyb2xJZDp0fSxFLmEuY3JlYXRlRWxlbWVudChlYixudWxsLEUuYS5jcmVhdGVFbGVtZW50KFJnLHt4czpjfSxFLmEuY3JlYXRlRWxlbWVudChHZyx7dGV4dDpuLGhlbHA6cixpc1JlcXVpcmVkOm8saGFzRXJyb3I6ISFhLGhlbHBJZDoiaGVscC0iLmNvbmNhdCh0KX0pKSxFLmEuY3JlYXRlRWxlbWVudChSZyx7eHM6ZH0sRS5hLmNyZWF0ZUVsZW1lbnQoSmcse2lzSW52YWxpZDpzLGVycm9yTWVzc2FnZTphLG5vdGU6aX0sdSkpKSl9O3RiLmRpc3BsYXlOYW1lPSJJbmxpbmVGaWVsZCIsdGIucHJvcFR5cGVzPXtjb250cm9sSWQ6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGNoaWxkcmVuOlYuYS5vbmVPZlR5cGUoW1YuYS5ub2RlLFYuYS5hcnJheU9mKFYuYS5ub2RlKV0pLmlzUmVxdWlyZWQsZXJyb3JNZXNzYWdlOlYuYS5vbmVPZlR5cGUoW1YuYS5ub2RlLFYuYS5zdHJpbmddKSxub3RlOlYuYS5vbmVPZlR5cGUoW1YuYS5ub2RlLFYuYS5zdHJpbmddKSxoZWxwVGV4dDpWLmEub25lT2ZUeXBlKFtWLmEubm9kZSxWLmEuc3RyaW5nXSksaXNSZXF1aXJlZDpWLmEuYm9vbCxsYWJlbFRleHQ6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGxhYmVsR3JpZFNpemU6Vi5hLm51bWJlcixjb250cm9sR3JpZFNpemU6Vi5hLm51bWJlcixpc0ludmFsaWQ6Vi5hLm51bWJlcn07dmFyIG5iPXRiLHJiPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLnNpemUsbz1lLmNsYXNzTmFtZSxhPWUuYXMsaT12b2lkIDA9PT1hPyJkaXYiOmEsdT1scihlLFsiYnNQcmVmaXgiLCJzaXplIiwiY2xhc3NOYW1lIiwiYXMiXSk7cmV0dXJuIG49dnIobiwiaW5wdXQtZ3JvdXAiKSxFLmEuY3JlYXRlRWxlbWVudChpLHNyKHtyZWY6dH0sdSx7Y2xhc3NOYW1lOlR0KCkobyxuLHImJm4rIi0iK3IpfSkpfSkpLG9iPVFyKCJpbnB1dC1ncm91cC1hcHBlbmQiKSxhYj1RcigiaW5wdXQtZ3JvdXAtcHJlcGVuZCIpLGliPVFyKCJpbnB1dC1ncm91cC10ZXh0Iix7Q29tcG9uZW50OiJzcGFuIn0pO3JiLmRpc3BsYXlOYW1lPSJJbnB1dEdyb3VwIixyYi5UZXh0PWliLHJiLlJhZGlvPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChpYixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIsc3Ioe3R5cGU6InJhZGlvIn0sZSkpKX0scmIuQ2hlY2tib3g9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGliLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iixzcih7dHlwZToiY2hlY2tib3gifSxlKSkpfSxyYi5BcHBlbmQ9b2IscmIuUHJlcGVuZD1hYjt2YXIgdWI9cmIsc2I9ZnVuY3Rpb24oZSl7dmFyIHQ9aHIoZSx7YWN0aXZlS2V5OiJvblNlbGVjdCJ9KSxuPXQuaWQscj10LmdlbmVyYXRlQ2hpbGRJZCxvPXQub25TZWxlY3QsYT10LmFjdGl2ZUtleSxpPXQudHJhbnNpdGlvbix1PXQubW91bnRPbkVudGVyLHM9dC51bm1vdW50T25FeGl0LGw9dC5jaGlsZHJlbixjPU9iamVjdChfLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybiByfHxmdW5jdGlvbihlLHQpe3JldHVybiBuP24rIi0iK3QrIi0iK2U6bnVsbH19KSxbbixyXSksZj1PYmplY3QoXy51c2VNZW1vKSgoZnVuY3Rpb24oKXtyZXR1cm57b25TZWxlY3Q6byxhY3RpdmVLZXk6YSx0cmFuc2l0aW9uOmksbW91bnRPbkVudGVyOnUsdW5tb3VudE9uRXhpdDpzLGdldENvbnRyb2xsZWRJZDpmdW5jdGlvbihlKXtyZXR1cm4gYyhlLCJ0YWJwYW5lIil9LGdldENvbnRyb2xsZXJJZDpmdW5jdGlvbihlKXtyZXR1cm4gYyhlLCJ0YWIiKX19fSksW28sYSxpLHUscyxjXSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFRyLlByb3ZpZGVyLHt2YWx1ZTpmfSxFLmEuY3JlYXRlRWxlbWVudChEci5Qcm92aWRlcix7dmFsdWU6b30sbCkpfSxsYj1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5hcyxvPXZvaWQgMD09PXI/ImRpdiI6cixhPWUuY2xhc3NOYW1lLGk9bHIoZSxbImJzUHJlZml4IiwiYXMiLCJjbGFzc05hbWUiXSksdT12cihuLCJ0YWItY29udGVudCIpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChvLHNyKHtyZWY6dH0saSx7Y2xhc3NOYW1lOlR0KCkoYSx1KX0pKX0pKTt2YXIgY2I9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KF8udXNlQ29udGV4dCkoVHIpO2lmKCF0KXJldHVybiBlO3ZhciBuPXQuYWN0aXZlS2V5LHI9dC5nZXRDb250cm9sbGVkSWQsbz10LmdldENvbnRyb2xsZXJJZCxhPWxyKHQsWyJhY3RpdmVLZXkiLCJnZXRDb250cm9sbGVkSWQiLCJnZXRDb250cm9sbGVySWQiXSksaT0hMSE9PWUudHJhbnNpdGlvbiYmITEhPT1hLnRyYW5zaXRpb24sdT1TcihlLmV2ZW50S2V5KTtyZXR1cm4gc3Ioe30sZSx7YWN0aXZlOm51bGw9PWUuYWN0aXZlJiZudWxsIT11P1NyKG4pPT09dTplLmFjdGl2ZSxpZDpyKGUuZXZlbnRLZXkpLCJhcmlhLWxhYmVsbGVkYnkiOm8oZS5ldmVudEtleSksdHJhbnNpdGlvbjppJiYoZS50cmFuc2l0aW9ufHxhLnRyYW5zaXRpb258fGJwKSxtb3VudE9uRW50ZXI6bnVsbCE9ZS5tb3VudE9uRW50ZXI/ZS5tb3VudE9uRW50ZXI6YS5tb3VudE9uRW50ZXIsdW5tb3VudE9uRXhpdDpudWxsIT1lLnVubW91bnRPbkV4aXQ/ZS51bm1vdW50T25FeGl0OmEudW5tb3VudE9uRXhpdH0pfShlKSxyPW4uYnNQcmVmaXgsbz1uLmNsYXNzTmFtZSxhPW4uYWN0aXZlLGk9bi5vbkVudGVyLHU9bi5vbkVudGVyaW5nLHM9bi5vbkVudGVyZWQsbD1uLm9uRXhpdCxjPW4ub25FeGl0aW5nLGY9bi5vbkV4aXRlZCxkPW4ubW91bnRPbkVudGVyLHA9bi51bm1vdW50T25FeGl0LGg9bi50cmFuc2l0aW9uLHk9bi5hcyxtPXZvaWQgMD09PXk/ImRpdiI6eSx2PShuLmV2ZW50S2V5LGxyKG4sWyJic1ByZWZpeCIsImNsYXNzTmFtZSIsImFjdGl2ZSIsIm9uRW50ZXIiLCJvbkVudGVyaW5nIiwib25FbnRlcmVkIiwib25FeGl0Iiwib25FeGl0aW5nIiwib25FeGl0ZWQiLCJtb3VudE9uRW50ZXIiLCJ1bm1vdW50T25FeGl0IiwidHJhbnNpdGlvbiIsImFzIiwiZXZlbnRLZXkiXSkpLGc9dnIociwidGFiLXBhbmUiKTtpZighYSYmcClyZXR1cm4gbnVsbDt2YXIgYj1FLmEuY3JlYXRlRWxlbWVudChtLHNyKHt9LHYse3JlZjp0LHJvbGU6InRhYnBhbmVsIiwiYXJpYS1oaWRkZW4iOiFhLGNsYXNzTmFtZTpUdCgpKG8sZyx7YWN0aXZlOmF9KX0pKTtyZXR1cm4gaCYmKGI9RS5hLmNyZWF0ZUVsZW1lbnQoaCx7aW46YSxvbkVudGVyOmksb25FbnRlcmluZzp1LG9uRW50ZXJlZDpzLG9uRXhpdDpsLG9uRXhpdGluZzpjLG9uRXhpdGVkOmYsbW91bnRPbkVudGVyOmQsdW5tb3VudE9uRXhpdDpwfSxiKSksRS5hLmNyZWF0ZUVsZW1lbnQoVHIuUHJvdmlkZXIse3ZhbHVlOm51bGx9LEUuYS5jcmVhdGVFbGVtZW50KERyLlByb3ZpZGVyLHt2YWx1ZTpudWxsfSxiKSl9KSk7Y2IuZGlzcGxheU5hbWU9IlRhYlBhbmUiO3ZhciBmYj1jYjtmdW5jdGlvbiBkYihlLHQpe3ZhciBuPTA7cmV0dXJuIEUuYS5DaGlsZHJlbi5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5pc1ZhbGlkRWxlbWVudChlKT90KGUsbisrKTplfSkpfWZ1bmN0aW9uIHBiKGUpe3ZhciB0O3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPTA7RS5hLkNoaWxkcmVuLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7RS5hLmlzVmFsaWRFbGVtZW50KGUpJiZ0KGUsbisrKX0pKX0oZSwoZnVuY3Rpb24oZSl7bnVsbD09dCYmKHQ9ZS5wcm9wcy5ldmVudEtleSl9KSksdH1mdW5jdGlvbiBoYihlKXt2YXIgdD1lLnByb3BzLG49dC50aXRsZSxyPXQuZXZlbnRLZXksbz10LmRpc2FibGVkLGE9dC50YWJDbGFzc05hbWU7cmV0dXJuIG51bGw9PW4/bnVsbDpFLmEuY3JlYXRlRWxlbWVudChqcix7YXM6VXIsZXZlbnRLZXk6cixkaXNhYmxlZDpvLGNsYXNzTmFtZTphfSxuKX12YXIgeWI9RS5hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49aHIoZSx7YWN0aXZlS2V5OiJvblNlbGVjdCJ9KSxyPW4uaWQsbz1uLm9uU2VsZWN0LGE9bi50cmFuc2l0aW9uLGk9bi5tb3VudE9uRW50ZXIsdT1uLnVubW91bnRPbkV4aXQscz1uLmNoaWxkcmVuLGw9bi5hY3RpdmVLZXksYz12b2lkIDA9PT1sP3BiKHMpOmwsZj1scihuLFsiaWQiLCJvblNlbGVjdCIsInRyYW5zaXRpb24iLCJtb3VudE9uRW50ZXIiLCJ1bm1vdW50T25FeGl0IiwiY2hpbGRyZW4iLCJhY3RpdmVLZXkiXSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHNiLHtyZWY6dCxpZDpyLGFjdGl2ZUtleTpjLG9uU2VsZWN0Om8sdHJhbnNpdGlvbjphLG1vdW50T25FbnRlcjppLHVubW91bnRPbkV4aXQ6dX0sRS5hLmNyZWF0ZUVsZW1lbnQoWXIsc3Ioe30sZix7cm9sZToidGFibGlzdCIsYXM6Im5hdiJ9KSxkYihzLGhiKSksRS5hLmNyZWF0ZUVsZW1lbnQobGIsbnVsbCxkYihzLChmdW5jdGlvbihlKXt2YXIgdD1zcih7fSxlLnByb3BzKTtyZXR1cm4gZGVsZXRlIHQudGl0bGUsZGVsZXRlIHQuZGlzYWJsZWQsZGVsZXRlIHQudGFiQ2xhc3NOYW1lLEUuYS5jcmVhdGVFbGVtZW50KGZiLHQpfSkpKSl9KSk7eWIuZGVmYXVsdFByb3BzPXt2YXJpYW50OiJ0YWJzIixtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMX0seWIuZGlzcGxheU5hbWU9IlRhYnMiO3ZhciBtYj15Yix2Yj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiB5cih0LGUpLHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVhY3RCb290c3RyYXA6IFRoZSBgVGFiYCBjb21wb25lbnQgaXMgbm90IG1lYW50IHRvIGJlIHJlbmRlcmVkISBJdCdzIGFuIGFic3RyYWN0IGNvbXBvbmVudCB0aGF0IGlzIG9ubHkgdmFsaWQgYXMgYSBkaXJlY3QgQ2hpbGQgb2YgdGhlIGBUYWJzYCBDb21wb25lbnQuIEZvciBjdXN0b20gdGFicyBjb21wb25lbnRzIHVzZSBUYWJQYW5lIGFuZCBUYWJzQ29udGFpbmVyIGRpcmVjdGx5Iil9LHR9KEUuYS5Db21wb25lbnQpO3ZiLkNvbnRhaW5lcj1zYix2Yi5Db250ZW50PWxiLHZiLlBhbmU9ZmI7dmFyIGdiPXZiLGJiPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24odCxuKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsc3Ioe30sdCx7cmVmOm4sY2xhc3NOYW1lOlR0KCkodC5jbGFzc05hbWUsZSl9KSl9KSl9LHdiPUUuYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuYnNQcmVmaXgscj1lLmNsYXNzTmFtZSxvPWUudmFyaWFudCxhPWUuYXMsaT12b2lkIDA9PT1hPyJpbWciOmEsdT1scihlLFsiYnNQcmVmaXgiLCJjbGFzc05hbWUiLCJ2YXJpYW50IiwiYXMiXSkscz12cihuLCJjYXJkLWltZyIpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChpLHNyKHtyZWY6dCxjbGFzc05hbWU6VHQoKShvP3MrIi0iK286cyxyKX0sdSkpfSkpO3diLmRpc3BsYXlOYW1lPSJDYXJkSW1nIix3Yi5kZWZhdWx0UHJvcHM9e3ZhcmlhbnQ6bnVsbH07dmFyIF9iPXdiLEViPWJiKCJoNSIpLE9iPWJiKCJoNiIpLGtiPVFyKCJjYXJkLWJvZHkiKSxDYj1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5jbGFzc05hbWUsbz1lLmJnLGE9ZS50ZXh0LGk9ZS5ib3JkZXIsdT1lLmJvZHkscz1lLmNoaWxkcmVuLGw9ZS5hcyxjPXZvaWQgMD09PWw/ImRpdiI6bCxmPWxyKGUsWyJic1ByZWZpeCIsImNsYXNzTmFtZSIsImJnIiwidGV4dCIsImJvcmRlciIsImJvZHkiLCJjaGlsZHJlbiIsImFzIl0pLGQ9dnIobiwiY2FyZCIpLHA9T2JqZWN0KF8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJue2NhcmRIZWFkZXJCc1ByZWZpeDpkKyItaGVhZGVyIn19KSxbZF0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChici5Qcm92aWRlcix7dmFsdWU6cH0sRS5hLmNyZWF0ZUVsZW1lbnQoYyxzcih7cmVmOnR9LGYse2NsYXNzTmFtZTpUdCgpKHIsZCxvJiYiYmctIitvLGEmJiJ0ZXh0LSIrYSxpJiYiYm9yZGVyLSIraSl9KSx1P0UuYS5jcmVhdGVFbGVtZW50KGtiLG51bGwscyk6cykpfSkpO0NiLmRpc3BsYXlOYW1lPSJDYXJkIixDYi5kZWZhdWx0UHJvcHM9e2JvZHk6ITF9LENiLkltZz1fYixDYi5UaXRsZT1RcigiY2FyZC10aXRsZSIse0NvbXBvbmVudDpFYn0pLENiLlN1YnRpdGxlPVFyKCJjYXJkLXN1YnRpdGxlIix7Q29tcG9uZW50Ok9ifSksQ2IuQm9keT1rYixDYi5MaW5rPVFyKCJjYXJkLWxpbmsiLHtDb21wb25lbnQ6ImEifSksQ2IuVGV4dD1RcigiY2FyZC10ZXh0Iix7Q29tcG9uZW50OiJwIn0pLENiLkhlYWRlcj1RcigiY2FyZC1oZWFkZXIiKSxDYi5Gb290ZXI9UXIoImNhcmQtZm9vdGVyIiksQ2IuSW1nT3ZlcmxheT1RcigiY2FyZC1pbWctb3ZlcmxheSIpO3ZhciB4Yj1DYixTYj1FLmEuZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJzUHJlZml4LHI9ZS5mbHVpZCxvPWUuYXMsYT12b2lkIDA9PT1vPyJkaXYiOm8saT1lLmNsYXNzTmFtZSx1PWxyKGUsWyJic1ByZWZpeCIsImZsdWlkIiwiYXMiLCJjbGFzc05hbWUiXSkscz12cihuLCJjb250YWluZXIiKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoYSxzcih7cmVmOnR9LHUse2NsYXNzTmFtZTpUdCgpKGkscj9zKyItZmx1aWQiOnMpfSkpfSkpO1NiLmRpc3BsYXlOYW1lPSJDb250YWluZXIiLFNiLmRlZmF1bHRQcm9wcz17Zmx1aWQ6ITF9O3ZhciBEYj1TYixUYj1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJTbmFwc2hvdCJ9LHQpfTtUYi5kaXNwbGF5TmFtZT0iU25hcHNob3QiLFRiLnByb3BUeXBlcz17Y2hpbGRyZW46Vi5hLmFueX07dmFyIE1iPVRiLFBiPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdChGLnVuaXF1ZUlkKShNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoMikpfTtmdW5jdGlvbiBOYihlKXtyZXR1cm4oTmI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBqYihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIExiKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gUmIoZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1OYih0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKTp0fWZ1bmN0aW9uIEliKGUpe3JldHVybihJYj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gQWIoZSx0KXtyZXR1cm4oQWI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfXZhciBGYixCYix6YixLYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGpiKHRoaXMsdCksUmIodGhpcyxJYih0KS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmQWIoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6ImNvbXBvbmVudFdpbGxNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlbHBJZD1QYigpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnRpdGxlLG49ZS5jaGlsZHJlbixyPWUubGluZVN0eWxlLG89ZS5saW5lQ29sb3IsYT1lLnZhbHVlQ29sb3IsaT1lLnRvb2x0aXAsdT1lLnRvb2x0aXBQbGFjZW1lbnQscz1lLnZhbHVlSGludCxsPWUuaWNvbjtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiU25hcHNob3RJdGVtIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiU25hcHNob3RJdGVtLWxpbmUiLHN0eWxlOntib3JkZXI6IjFweCAiLmNvbmNhdChyLCIgIikuY29uY2F0KG8pfX0pLGwmJkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlNuYXBzaG90SXRlbS11cHBlci1pY29uIn0sbCksRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6IlNuYXBzaG90SXRlbS10aXRsZSJ9LHQpLGk/RS5hLmNyZWF0ZUVsZW1lbnQoQXAse2lkOnRoaXMuaGVscElkLG1lc3NhZ2U6aSx0b29sdGlwUGxhY2VtZW50OnV9KTpudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJoMiIse2NsYXNzTmFtZToiU25hcHNob3RJdGVtLXZhbHVlIixzdHlsZTp7Y29sb3I6YX19LG4pLHMpfX1dKSYmTGIobi5wcm90b3R5cGUsciksbyYmTGIobixvKSx0fShfLkNvbXBvbmVudCk7RmI9S2IsQmI9InByb3BUeXBlcyIsemI9e3RpdGxlOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxjaGlsZHJlbjpWLmEuYW55LmlzUmVxdWlyZWQsbGluZVN0eWxlOlYuYS5vbmVPZihbImRvdHRlZCIsImRhc2hlZCIsInNvbGlkIiwiZG91YmxlIiwiZ3Jvb3ZlIiwicmlkZ2UiLCJpbnNldCIsIm91dHNldCJdKSxsaW5lQ29sb3I6Vi5hLnN0cmluZyx2YWx1ZUNvbG9yOlYuYS5zdHJpbmcsdG9vbHRpcDpWLmEuc3RyaW5nLHRvb2x0aXBQbGFjZW1lbnQ6Vi5hLm9uZU9mKFsidG9wIiwibGVmdCIsImJvdHRvbSIsInJpZ2h0Il0pLHZhbHVlSGludDpWLmEubm9kZSxpY29uOlYuYS5ub2RlfSxCYiBpbiBGYj9PYmplY3QuZGVmaW5lUHJvcGVydHkoRmIsQmIse3ZhbHVlOnpiLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6RmJbQmJdPXpiLEtiLmRpc3BsYXlOYW1lPSJTbmFwc2hvdEl0ZW0iO3ZhciBxYj1LYjtmdW5jdGlvbiBWYihlKXtyZXR1cm4oVmI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBVYihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIFdiKGUpe3JldHVybihXYj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gWWIoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIEhiKGUsdCl7cmV0dXJuKEhiPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBHYihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIFFiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksbj1mdW5jdGlvbihlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PVZiKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9ZYihlKTp0fSh0aGlzLFdiKHQpLmNhbGwodGhpcyxlKSksR2IoWWIobiksInN0YXRlIix7d2lkdGg6MH0pLEdiKFliKG4pLCJzZXRXaWR0aCIsKGZ1bmN0aW9uKCl7bi5fY2hhcnRDb250YWluZXImJm4uc2V0U3RhdGUoe3dpZHRoOm4uX2NoYXJ0Q29udGFpbmVyLmNsaWVudFdpZHRofSl9KSksbi5fY2hhcnRDb250YWluZXI9T2JqZWN0KF8uY3JlYXRlUmVmKSgpLG59dmFyIG4scixvO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZIYihlLHQpfSh0LGUpLG49dCwocj1be2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRXaWR0aCgpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuc2V0V2lkdGgpfX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5zZXRXaWR0aCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY2xhc3NOYW1lLG49ZS5jaGlsZHJlbixyPWUuaGVpZ2h0LG89dGhpcy5zdGF0ZS53aWR0aDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpUdCgpKCJDaGFydENvbnRhaW5lciIsdCkscmVmOnRoaXMuX2NoYXJ0Q29udGFpbmVyfSxFLmEuY3JlYXRlRWxlbWVudCgic3ZnIix7d2lkdGg6byxoZWlnaHQ6cixjbGFzc05hbWU6IkNoYXJ0Q29udGFpbmVyLXN2ZyJ9LF8uQ2hpbGRyZW4ubWFwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QoXy5jbG9uZUVsZW1lbnQpKGUse3dpZHRoOm8saGVpZ2h0OnJ9KX0pKSkpfX1dKSYmVWIobi5wcm90b3R5cGUsciksbyYmVWIobixvKSx0fShfLkNvbXBvbmVudCk7R2IoUWIsInByb3BUeXBlcyIse2NsYXNzTmFtZTpWLmEuc3RyaW5nLGNoaWxkcmVuOlYuYS5hbnksaGVpZ2h0OlYuYS5udW1iZXJ9KSxHYihRYiwiZGVmYXVsdFByb3BzIix7aGVpZ2h0OjQwMH0pLFFiLmRpc3BsYXlOYW1lPSJDaGFydENvbnRhaW5lciI7dmFyIEpiPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaWQsbj1lLngscj1lLnksbz1lLndpZHRoLGE9ZS5oZWlnaHQ7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJjbGlwUGF0aCIse2lkOnR9LEUuYS5jcmVhdGVFbGVtZW50KCJyZWN0Iix7eDpuLHk6cix3aWR0aDpvLGhlaWdodDphfSkpfTtKYi5kaXNwbGF5TmFtZT0iQ2hhcnRSZWN0Q2xpcFBhdGgiLEpiLnByb3BUeXBlcz17eDpWLmEubnVtYmVyLHk6Vi5hLm51bWJlcixpZDpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsd2lkdGg6Vi5hLm51bWJlci5pc1JlcXVpcmVkLGhlaWdodDpWLmEubnVtYmVyLmlzUmVxdWlyZWR9LEpiLmRlZmF1bHRQcm9wcz17eDowLHk6MH07dmFyIFpiPUpiO2Z1bmN0aW9uICRiKGUpe3JldHVybigkYj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIFhiKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZXcoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiB0dyhlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PSRiKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpOnR9ZnVuY3Rpb24gbncoZSl7cmV0dXJuKG53PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBydyhlLHQpe3JldHVybihydz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gb3coZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBhdz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIFhiKHRoaXMsdCksdHcodGhpcyxudyh0KS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmcncoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jbGFzc05hbWUsbj1lLngscj1lLnksbz1lLndpZHRoLGE9ZS5oZWlnaHQsaT1lLm9uTW91c2VNb3ZlLHU9ZS5vbk1vdXNlTGVhdmUscz1lLm9uQ2xpY2s7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJnIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJyZWN0Iix7Y2xhc3NOYW1lOlR0KCkoIkNoYXJ0T3ZlcmxheVRyaWdnZXIiLHQpLHN0eWxlOntsZWZ0Om4sdG9wOnIsd2lkdGg6byxoZWlnaHQ6YX0sb25Nb3VzZU1vdmU6aSxvbk1vdXNlTGVhdmU6dSxvbkNsaWNrOnN9KSl9fV0pJiZldyhuLnByb3RvdHlwZSxyKSxvJiZldyhuLG8pLHR9KF8uQ29tcG9uZW50KTtvdyhhdywicHJvcFR5cGVzIix7Y2xhc3NOYW1lOlYuYS5zdHJpbmcseDpWLmEubnVtYmVyLHk6Vi5hLm51bWJlcix3aWR0aDpWLmEubnVtYmVyLmlzUmVxdWlyZWQsaGVpZ2h0OlYuYS5udW1iZXIuaXNSZXF1aXJlZCxvbk1vdXNlTW92ZTpWLmEuZnVuYyxvbk1vdXNlTGVhdmU6Vi5hLmZ1bmMsb25DbGljazpWLmEuZnVuY30pLG93KGF3LCJkZWZhdWx0UHJvcHMiLHt4OjAseTowfSksYXcuZGlzcGxheU5hbWU9IkNoYXJ0T3ZlcmxheVRyaWdnZXIiO3ZhciBpdz1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksdT1lLmhlaWdodCxzPWUuaG92ZXIsbD1lLnRpY2tzLGM9ZS53aWR0aCxmPWUueEF4aXNPZmZzZXQsZD1lLnNjYWxlLHA9ZS5kYXRlRm9ybWF0O3JldHVybiBzJiYodD1zLmhvdmVyUG9zaXRpb24sbj1zLmhvdmVyVGV4dCxyPXMuaG92ZXJMYWJlbFhPZmZzZXR8fDAsbz1zLmhvdmVyTGFiZWxZT2Zmc2V0fHwwLGk9KGE9dC1mKTwwPyJzdGFydCI6Im1pZGRsZSIsdCtmPj1jJiYoYT1jLWYtcixpPSJlbmQiKSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtjbGFzc05hbWU6IkNoYXJ0WGF4aXMiLHRyYW5zZm9ybToidHJhbnNsYXRlKCIuY29uY2F0KGYsIiwgMCkiKX0scz9FLmEuY3JlYXRlRWxlbWVudCgidGV4dCIse2NsYXNzTmFtZToiQ2hhcnRYYXhpcy1ob3Zlci10ZXh0Iix4OmEseTp1LW8sdGV4dEFuY2hvcjppfSxuKTpudWxsLGwubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gcz9udWxsOkUuYS5jcmVhdGVFbGVtZW50KCJnIix7a2V5OmV9LEUuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0Iix7Y2xhc3NOYW1lOiJDaGFydFhheGlzLWxhYmVsIix4OmQoZSkseTp1fSxtbCgpKGUpLmZvcm1hdChwKSkpfSkpKX07aXcuZGlzcGxheU5hbWU9IkNoYXJ0WGF4aXMiLGl3LnByb3BUeXBlcz17aGVpZ2h0OlYuYS5udW1iZXIuaXNSZXF1aXJlZCxob3ZlcjpWLmEub2JqZWN0LHRpY2tzOlYuYS5hcnJheS5pc1JlcXVpcmVkLHdpZHRoOlYuYS5udW1iZXIuaXNSZXF1aXJlZCx4QXhpc09mZnNldDpWLmEubnVtYmVyLmlzUmVxdWlyZWQsc2NhbGU6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxkYXRlRm9ybWF0OlYuYS5zdHJpbmd9LGl3LmRlZmF1bHRQcm9wcz17ZGF0ZUZvcm1hdDoibGwifTt2YXIgdXc9aXcsc3c9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50aWNrcyxuPWUuc2NhbGUscj1lLngsbz1lLnksYT1lLndpZHRoLGk9ZS5oZWlnaHQsdT1lLnRpY2tXaWR0aCxzPWUudGlja0Zvcm1hdDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtjbGFzc05hbWU6IkNoYXJ0WWF4aXMiLHRyYW5zZm9ybToidHJhbnNsYXRlKCIuY29uY2F0KHIsIiwgIikuY29uY2F0KG8sIikiKX0sRS5hLmNyZWF0ZUVsZW1lbnQoImxpbmUiLHtjbGFzc05hbWU6IkNoYXJ0WWF4aXMtbGluZSIseTE6aSx5MjppLHgxOiIwIix4MjphfSksdC5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJnIix7a2V5OmV9LEUuYS5jcmVhdGVFbGVtZW50KCJsaW5lIix7Y2xhc3NOYW1lOiJDaGFydFlheGlzLXRpY2siLHkxOnQseTI6dCx4MToiMCIseDI6dX0pLEUuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0Iix7Y2xhc3NOYW1lOiJDaGFydFlheGlzLWxhYmVsIix4OiIwIix5OnR9LHMoZSkpKX0pKSl9O3N3LmRpc3BsYXlOYW1lPSJDaGFydFlheGlzIixzdy5wcm9wVHlwZXM9e3RpY2tzOlYuYS5hcnJheSxzY2FsZTpWLmEuZnVuYy5pc1JlcXVpcmVkLHg6Vi5hLm51bWJlcix5OlYuYS5udW1iZXIsd2lkdGg6Vi5hLm51bWJlcixoZWlnaHQ6Vi5hLm51bWJlcix0aWNrV2lkdGg6Vi5hLm51bWJlcix0aWNrRm9ybWF0OlYuYS5mdW5jfSxzdy5kZWZhdWx0UHJvcHM9e3RpY2tXaWR0aDo2LHRpY2tGb3JtYXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fTt2YXIgbHc9c3csY3c9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54VGlja3Msbj1lLnlUaWNrcyxyPWUueFNjYWxlLG89ZS55U2NhbGUsYT1lLnhPZmZzZXQsaT1lLndpZHRoLHU9ZS5oZWlnaHQ7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJnIix7Y2xhc3NOYW1lOiJDaGFydEdyaWQifSxuLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJsaW5lIix7a2V5OiJncmlkLXktbGluZS0iLmNvbmNhdChlKSxjbGFzc05hbWU6IkNoYXJ0R3JpZC15LWxpbmUiLHgxOmEseDI6aSthLHkxOm8oZSkseTI6byhlKX0pfSkpLHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImxpbmUiLHtrZXk6ImdyaWQteC1saW5lLSIuY29uY2F0KGUpLGNsYXNzTmFtZToiQ2hhcnRHcmlkLXgtbGluZSIseDE6cihlKSthLHgyOnIoZSkrYSx5Mjp1fSl9KSkpfTtjdy5kaXNwbGF5TmFtZT0iQ2hhcnRHcmlkIixjdy5wcm9wVHlwZXM9e3hUaWNrczpWLmEuYXJyYXkuaXNSZXF1aXJlZCx5VGlja3M6Vi5hLmFycmF5LmlzUmVxdWlyZWQseFNjYWxlOlYuYS5mdW5jLmlzUmVxdWlyZWQseVNjYWxlOlYuYS5mdW5jLmlzUmVxdWlyZWQseE9mZnNldDpWLmEubnVtYmVyLHdpZHRoOlYuYS5udW1iZXIsaGVpZ2h0OlYuYS5udW1iZXJ9LGN3LmRlZmF1bHRQcm9wcz17eE9mZnNldDowfTt2YXIgZnc9Y3csZHc9TWF0aC5QSSxwdz0yKmR3LGh3PXB3LTFlLTY7ZnVuY3Rpb24geXcoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBtdygpe3JldHVybiBuZXcgeXd9eXcucHJvdG90eXBlPW13LnByb3RvdHlwZT17Y29uc3RydWN0b3I6eXcsbW92ZVRvOmZ1bmN0aW9uKGUsdCl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPStlKSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPSt0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24oZSx0KXt0aGlzLl8rPSJMIisodGhpcy5feDE9K2UpKyIsIisodGhpcy5feTE9K3QpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuXys9IlEiKyArZSsiLCIrICt0KyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K3IpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKGUsdCxuLHIsbyxhKXt0aGlzLl8rPSJDIisgK2UrIiwiKyArdCsiLCIrICtuKyIsIisgK3IrIiwiKyh0aGlzLl94MT0rbykrIiwiKyh0aGlzLl95MT0rYSl9LGFyY1RvOmZ1bmN0aW9uKGUsdCxuLHIsbyl7ZT0rZSx0PSt0LG49K24scj0rcixvPStvO3ZhciBhPXRoaXMuX3gxLGk9dGhpcy5feTEsdT1uLWUscz1yLXQsbD1hLWUsYz1pLXQsZj1sKmwrYypjO2lmKG88MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitvKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPWUpKyIsIisodGhpcy5feTE9dCk7ZWxzZSBpZihmPjFlLTYpaWYoTWF0aC5hYnMoYyp1LXMqbCk+MWUtNiYmbyl7dmFyIGQ9bi1hLHA9ci1pLGg9dSp1K3Mqcyx5PWQqZCtwKnAsbT1NYXRoLnNxcnQoaCksdj1NYXRoLnNxcnQoZiksZz1vKk1hdGgudGFuKChkdy1NYXRoLmFjb3MoKGgrZi15KS8oMiptKnYpKSkvMiksYj1nL3Ysdz1nL207TWF0aC5hYnMoYi0xKT4xZS02JiYodGhpcy5fKz0iTCIrKGUrYipsKSsiLCIrKHQrYipjKSksdGhpcy5fKz0iQSIrbysiLCIrbysiLDAsMCwiKyArKGMqZD5sKnApKyIsIisodGhpcy5feDE9ZSt3KnUpKyIsIisodGhpcy5feTE9dCt3KnMpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPWUpKyIsIisodGhpcy5feTE9dCk7ZWxzZTt9LGFyYzpmdW5jdGlvbihlLHQsbixyLG8sYSl7ZT0rZSx0PSt0LGE9ISFhO3ZhciBpPShuPStuKSpNYXRoLmNvcyhyKSx1PW4qTWF0aC5zaW4ocikscz1lK2ksbD10K3UsYz0xXmEsZj1hP3ItbzpvLXI7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitzKyIsIitsOihNYXRoLmFicyh0aGlzLl94MS1zKT4xZS02fHxNYXRoLmFicyh0aGlzLl95MS1sKT4xZS02KSYmKHRoaXMuXys9IkwiK3MrIiwiK2wpLG4mJihmPDAmJihmPWYlcHcrcHcpLGY+aHc/dGhpcy5fKz0iQSIrbisiLCIrbisiLDAsMSwiK2MrIiwiKyhlLWkpKyIsIisodC11KSsiQSIrbisiLCIrbisiLDAsMSwiK2MrIiwiKyh0aGlzLl94MT1zKSsiLCIrKHRoaXMuX3kxPWwpOmY+MWUtNiYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoZj49ZHcpKyIsIitjKyIsIisodGhpcy5feDE9ZStuKk1hdGguY29zKG8pKSsiLCIrKHRoaXMuX3kxPXQrbipNYXRoLnNpbihvKSkpKX0scmVjdDpmdW5jdGlvbihlLHQsbixyKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K2UpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K3QpKyJoIisgK24rInYiKyArcisiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgdnc9bXcsZ3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fTtmdW5jdGlvbiBidyhlKXt0aGlzLl9jb250ZXh0PWV9YncucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZT0rZSx0PSt0LHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9fX07dmFyIHd3PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYncoZSl9O2Z1bmN0aW9uIF93KGUpe3JldHVybiBlWzBdfWZ1bmN0aW9uIEV3KGUpe3JldHVybiBlWzFdfXZhciBPdz1mdW5jdGlvbigpe3ZhciBlPV93LHQ9RXcsbj1ndyghMCkscj1udWxsLG89d3csYT1udWxsO2Z1bmN0aW9uIGkoaSl7dmFyIHUscyxsLGM9aS5sZW5ndGgsZj0hMTtmb3IobnVsbD09ciYmKGE9byhsPXZ3KCkpKSx1PTA7dTw9YzsrK3UpISh1PGMmJm4ocz1pW3VdLHUsaSkpPT09ZiYmKChmPSFmKT9hLmxpbmVTdGFydCgpOmEubGluZUVuZCgpKSxmJiZhLnBvaW50KCtlKHMsdSxpKSwrdChzLHUsaSkpO2lmKGwpcmV0dXJuIGE9bnVsbCxsKyIifHxudWxsfXJldHVybiBpLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpndygrdCksaSk6ZX0saS55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z3coK2UpLGkpOnR9LGkuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmd3KCEhZSksaSk6bn0saS5jdXJ2ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLG51bGwhPXImJihhPW8ocikpLGkpOm99LGkuY29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09ZT9yPWE9bnVsbDphPW8ocj1lKSxpKTpyfSxpfSxrdz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIE93KCkueCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9KSkueSgoZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSl9KSkoZSl9LEN3PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2xhc3NOYW1lLG49ZS5kYXRhLHI9ZS54U2NhbGUsbz1lLnlTY2FsZTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6IiMwMDAiLGNsYXNzTmFtZTpUdCgpKCJDaGFydExpbmUiLHQpLGQ6a3cobixyLG8pfSkpfTtDdy5kaXNwbGF5TmFtZT0iQ2hhcnRMaW5lIixDdy5wcm9wVHlwZXM9e2RhdGE6Vi5hLmFycmF5LmlzUmVxdWlyZWQsY2xhc3NOYW1lOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCx4U2NhbGU6Vi5hLmZ1bmMuaXNSZXF1aXJlZCx5U2NhbGU6Vi5hLmZ1bmMuaXNSZXF1aXJlZH07dmFyIHh3PUN3LFN3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxEdz1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMT09PWUubGVuZ3RoJiYodD1lLGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gU3codChlKSxuKX0pLHtsZWZ0OmZ1bmN0aW9uKHQsbixyLG8pe2ZvcihudWxsPT1yJiYocj0wKSxudWxsPT1vJiYobz10Lmxlbmd0aCk7cjxvOyl7dmFyIGE9citvPj4+MTtlKHRbYV0sbik8MD9yPWErMTpvPWF9cmV0dXJuIHJ9LHJpZ2h0OmZ1bmN0aW9uKHQsbixyLG8pe2ZvcihudWxsPT1yJiYocj0wKSxudWxsPT1vJiYobz10Lmxlbmd0aCk7cjxvOyl7dmFyIGE9citvPj4+MTtlKHRbYV0sbik+MD9vPWE6cj1hKzF9cmV0dXJuIHJ9fX07dmFyIFR3PU1hdGguc3FydCg1MCksTXc9TWF0aC5zcXJ0KDEwKSxQdz1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gTncoZSx0LG4pe3ZhciByPSh0LWUpL01hdGgubWF4KDAsbiksbz1NYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGguTE4xMCksYT1yL01hdGgucG93KDEwLG8pO3JldHVybiBvPj0wPyhhPj1Udz8xMDphPj1Ndz81OmE+PVB3PzI6MSkqTWF0aC5wb3coMTAsbyk6LU1hdGgucG93KDEwLC1vKS8oYT49VHc/MTA6YT49TXc/NTphPj1Qdz8yOjEpfWZ1bmN0aW9uIGp3KGUsdCxuKXt2YXIgcj1NYXRoLmFicyh0LWUpL01hdGgubWF4KDAsbiksbz1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGguTE4xMCkpLGE9ci9vO3JldHVybiBhPj1Udz9vKj0xMDphPj1Ndz9vKj01OmE+PVB3JiYobyo9MiksdDxlPy1vOm99dmFyIEx3PW5ldyBEYXRlLFJ3PW5ldyBEYXRlO2Z1bmN0aW9uIEl3KGUsdCxuLHIpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIGUodD0wPT09YXJndW1lbnRzLmxlbmd0aD9uZXcgRGF0ZTpuZXcgRGF0ZSgrdCkpLHR9cmV0dXJuIG8uZmxvb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCkpLHR9LG8uY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gZShuPW5ldyBEYXRlKG4tMSkpLHQobiwxKSxlKG4pLG59LG8ucm91bmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9byhlKSxuPW8uY2VpbChlKTtyZXR1cm4gZS10PG4tZT90Om59LG8ub2Zmc2V0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLGV9LG8ucmFuZ2U9ZnVuY3Rpb24obixyLGEpe3ZhciBpLHU9W107aWYobj1vLmNlaWwobiksYT1udWxsPT1hPzE6TWF0aC5mbG9vcihhKSwhKG48ciYmYT4wKSlyZXR1cm4gdTtkb3t1LnB1c2goaT1uZXcgRGF0ZSgrbikpLHQobixhKSxlKG4pfXdoaWxlKGk8biYmbjxyKTtyZXR1cm4gdX0sby5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIEl3KChmdW5jdGlvbih0KXtpZih0Pj10KWZvcig7ZSh0KSwhbih0KTspdC5zZXRUaW1lKHQtMSl9KSwoZnVuY3Rpb24oZSxyKXtpZihlPj1lKWlmKHI8MClmb3IoOysrcjw9MDspZm9yKDt0KGUsLTEpLCFuKGUpOyk7ZWxzZSBmb3IoOy0tcj49MDspZm9yKDt0KGUsMSksIW4oZSk7KTt9KSl9LG4mJihvLmNvdW50PWZ1bmN0aW9uKHQscil7cmV0dXJuIEx3LnNldFRpbWUoK3QpLFJ3LnNldFRpbWUoK3IpLGUoTHcpLGUoUncpLE1hdGguZmxvb3IobihMdyxSdykpfSxvLmV2ZXJ5PWZ1bmN0aW9uKGUpe3JldHVybiBlPU1hdGguZmxvb3IoZSksaXNGaW5pdGUoZSkmJmU+MD9lPjE/by5maWx0ZXIocj9mdW5jdGlvbih0KXtyZXR1cm4gcih0KSVlPT0wfTpmdW5jdGlvbih0KXtyZXR1cm4gby5jb3VudCgwLHQpJWU9PTB9KTpvOm51bGx9KSxvfXZhciBBdz1JdygoZnVuY3Rpb24oZSl7ZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSx0KXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKSt0KX0pLChmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCktZS5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCl9KSk7QXcuZXZlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGlzRmluaXRlKGU9TWF0aC5mbG9vcihlKSkmJmU+MD9JdygoZnVuY3Rpb24odCl7dC5zZXRGdWxsWWVhcihNYXRoLmZsb29yKHQuZ2V0RnVsbFllYXIoKS9lKSplKSx0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LG4pe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK24qZSl9KSk6bnVsbH07dmFyIEZ3PUF3LEJ3PShBdy5yYW5nZSxJdygoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSx0KXtlLnNldE1vbnRoKGUuZ2V0TW9udGgoKSt0KX0pLChmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldE1vbnRoKCktZS5nZXRNb250aCgpKzEyKih0LmdldEZ1bGxZZWFyKCktZS5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNb250aCgpfSkpKSx6dz1CdztCdy5yYW5nZTtmdW5jdGlvbiBLdyhlKXtyZXR1cm4gSXcoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSh0LmdldERhdGUoKS0odC5nZXREYXkoKSs3LWUpJTcpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSx0KXtlLnNldERhdGUoZS5nZXREYXRlKCkrNyp0KX0pLChmdW5jdGlvbihlLHQpe3JldHVybih0LWUtNmU0Kih0LmdldFRpbWV6b25lT2Zmc2V0KCktZS5nZXRUaW1lem9uZU9mZnNldCgpKSkvNjA0OGU1fSkpfXZhciBxdz1LdygwKSxWdz1LdygxKSxVdz1LdygyKSxXdz1LdygzKSxZdz1Ldyg0KSxIdz1Ldyg1KSxHdz1Ldyg2KSxRdz0ocXcucmFuZ2UsVncucmFuZ2UsVXcucmFuZ2UsV3cucmFuZ2UsWXcucmFuZ2UsSHcucmFuZ2UsR3cucmFuZ2UsSXcoKGZ1bmN0aW9uKGUpe2Uuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSx0KXtlLnNldERhdGUoZS5nZXREYXRlKCkrdCl9KSwoZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lLTZlNCoodC5nZXRUaW1lem9uZU9mZnNldCgpLWUuZ2V0VGltZXpvbmVPZmZzZXQoKSkpLzg2NGU1fSksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldERhdGUoKS0xfSkpKSxKdz1Rdyxadz0oUXcucmFuZ2UsSXcoKGZ1bmN0aW9uKGUpe2Uuc2V0VGltZShlLWUuZ2V0TWlsbGlzZWNvbmRzKCktMWUzKmUuZ2V0U2Vjb25kcygpLTZlNCplLmdldE1pbnV0ZXMoKSl9KSwoZnVuY3Rpb24oZSx0KXtlLnNldFRpbWUoK2UrMzZlNSp0KX0pLChmdW5jdGlvbihlLHQpe3JldHVybih0LWUpLzM2ZTV9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG91cnMoKX0pKSksJHc9WncsWHc9KFp3LnJhbmdlLEl3KChmdW5jdGlvbihlKXtlLnNldFRpbWUoZS1lLmdldE1pbGxpc2Vjb25kcygpLTFlMyplLmdldFNlY29uZHMoKSl9KSwoZnVuY3Rpb24oZSx0KXtlLnNldFRpbWUoK2UrNmU0KnQpfSksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZSkvNmU0fSksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldE1pbnV0ZXMoKX0pKSksZV89WHcsdF89KFh3LnJhbmdlLEl3KChmdW5jdGlvbihlKXtlLnNldFRpbWUoZS1lLmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSsxZTMqdCl9KSwoZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS8xZTN9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDU2Vjb25kcygpfSkpKSxuXz10XyxyXz0odF8ucmFuZ2UsSXcoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QpfSksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQtZX0pKSk7cl8uZXZlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9TWF0aC5mbG9vcihlKSxpc0Zpbml0ZShlKSYmZT4wP2U+MT9JdygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKE1hdGguZmxvb3IodC9lKSplKX0pLChmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKmUpfSksKGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvZX0pKTpyXzpudWxsfTt2YXIgb189cl87cl8ucmFuZ2U7ZnVuY3Rpb24gYV8oZSl7cmV0dXJuIEl3KChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCktKHQuZ2V0VVRDRGF5KCkrNy1lKSU3KSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsdCl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpKzcqdCl9KSwoZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS82MDQ4ZTV9KSl9dmFyIGlfPWFfKDApLHVfPWFfKDEpLHNfPWFfKDIpLGxfPWFfKDMpLGNfPWFfKDQpLGZfPWFfKDUpLGRfPWFfKDYpLHBfPShpXy5yYW5nZSx1Xy5yYW5nZSxzXy5yYW5nZSxsXy5yYW5nZSxjXy5yYW5nZSxmXy5yYW5nZSxkXy5yYW5nZSxJdygoZnVuY3Rpb24oZSl7ZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLHQpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKSt0KX0pLChmdW5jdGlvbihlLHQpe3JldHVybih0LWUpLzg2NGU1fSksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0RhdGUoKS0xfSkpKSxoXz1wXyx5Xz0ocF8ucmFuZ2UsSXcoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsdCl7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrdCl9KSwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpLWUuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpfSkpKTt5Xy5ldmVyeT1mdW5jdGlvbihlKXtyZXR1cm4gaXNGaW5pdGUoZT1NYXRoLmZsb29yKGUpKSYmZT4wP0l3KChmdW5jdGlvbih0KXt0LnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IodC5nZXRVVENGdWxsWWVhcigpL2UpKmUpLHQuc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrbiplKX0pKTpudWxsfTt2YXIgbV89eV87eV8ucmFuZ2U7ZnVuY3Rpb24gdl8oZSl7aWYoMDw9ZS55JiZlLnk8MTAwKXt2YXIgdD1uZXcgRGF0ZSgtMSxlLm0sZS5kLGUuSCxlLk0sZS5TLGUuTCk7cmV0dXJuIHQuc2V0RnVsbFllYXIoZS55KSx0fXJldHVybiBuZXcgRGF0ZShlLnksZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpfWZ1bmN0aW9uIGdfKGUpe2lmKDA8PWUueSYmZS55PDEwMCl7dmFyIHQ9bmV3IERhdGUoRGF0ZS5VVEMoLTEsZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpKTtyZXR1cm4gdC5zZXRVVENGdWxsWWVhcihlLnkpLHR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGUueSxlLm0sZS5kLGUuSCxlLk0sZS5TLGUuTCkpfWZ1bmN0aW9uIGJfKGUsdCxuKXtyZXR1cm57eTplLG06dCxkOm4sSDowLE06MCxTOjAsTDowfX12YXIgd18sX18sRV89eyItIjoiIixfOiIgIiwwOiIwIn0sT189L15ccypcZCsvLGtfPS9eJS8sQ189L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIHhfKGUsdCxuKXt2YXIgcj1lPDA/Ii0iOiIiLG89KHI/LWU6ZSkrIiIsYT1vLmxlbmd0aDtyZXR1cm4gcisoYTxuP25ldyBBcnJheShuLWErMSkuam9pbih0KStvOm8pfWZ1bmN0aW9uIFNfKGUpe3JldHVybiBlLnJlcGxhY2UoQ18sIlxcJCYiKX1mdW5jdGlvbiBEXyhlKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrZS5tYXAoU18pLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBUXyhlKXtmb3IodmFyIHQ9e30sbj0tMSxyPWUubGVuZ3RoOysrbjxyOyl0W2Vbbl0udG9Mb3dlckNhc2UoKV09bjtyZXR1cm4gdH1mdW5jdGlvbiBNXyhlLHQsbil7dmFyIHI9T18uZXhlYyh0LnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/KGUudz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQXyhlLHQsbil7dmFyIHI9T18uZXhlYyh0LnNsaWNlKG4sbisxKSk7cmV0dXJuIHI/KGUudT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBOXyhlLHQsbil7dmFyIHI9T18uZXhlYyh0LnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KGUuVT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBqXyhlLHQsbil7dmFyIHI9T18uZXhlYyh0LnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KGUuVj0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBMXyhlLHQsbil7dmFyIHI9T18uZXhlYyh0LnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KGUuVz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSXyhlLHQsbil7dmFyIHI9T18uZXhlYyh0LnNsaWNlKG4sbis0KSk7cmV0dXJuIHI/KGUueT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJXyhlLHQsbil7dmFyIHI9T18uZXhlYyh0LnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KGUueT0rclswXSsoK3JbMF0+Njg/MTkwMDoyZTMpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFfKGUsdCxuKXt2YXIgcj0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyh0LnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KGUuWj1yWzFdPzA6LShyWzJdKyhyWzNdfHwiMDAiKSksbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRl8oZSx0LG4pe3ZhciByPU9fLmV4ZWModC5zbGljZShuLG4rMSkpO3JldHVybiByPyhlLnE9MypyWzBdLTMsbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQl8oZSx0LG4pe3ZhciByPU9fLmV4ZWModC5zbGljZShuLG4rMikpO3JldHVybiByPyhlLm09clswXS0xLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHpfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8oZS5kPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEtfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobixuKzMpKTtyZXR1cm4gcj8oZS5tPTAsZS5kPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHFfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8oZS5IPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFZfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8oZS5NPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFVfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8oZS5TPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFdfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobixuKzMpKTtyZXR1cm4gcj8oZS5MPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFlfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobixuKzYpKTtyZXR1cm4gcj8oZS5MPU1hdGguZmxvb3IoclswXS8xZTMpLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEhfKGUsdCxuKXt2YXIgcj1rXy5leGVjKHQuc2xpY2UobixuKzEpKTtyZXR1cm4gcj9uK3JbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIEdfKGUsdCxuKXt2YXIgcj1PXy5leGVjKHQuc2xpY2UobikpO3JldHVybiByPyhlLlE9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUV8oZSx0LG4pe3ZhciByPU9fLmV4ZWModC5zbGljZShuKSk7cmV0dXJuIHI/KGUucz0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBKXyhlLHQpe3JldHVybiB4XyhlLmdldERhdGUoKSx0LDIpfWZ1bmN0aW9uIFpfKGUsdCl7cmV0dXJuIHhfKGUuZ2V0SG91cnMoKSx0LDIpfWZ1bmN0aW9uICRfKGUsdCl7cmV0dXJuIHhfKGUuZ2V0SG91cnMoKSUxMnx8MTIsdCwyKX1mdW5jdGlvbiBYXyhlLHQpe3JldHVybiB4XygxK0p3LmNvdW50KEZ3KGUpLGUpLHQsMyl9ZnVuY3Rpb24gZUUoZSx0KXtyZXR1cm4geF8oZS5nZXRNaWxsaXNlY29uZHMoKSx0LDMpfWZ1bmN0aW9uIHRFKGUsdCl7cmV0dXJuIGVFKGUsdCkrIjAwMCJ9ZnVuY3Rpb24gbkUoZSx0KXtyZXR1cm4geF8oZS5nZXRNb250aCgpKzEsdCwyKX1mdW5jdGlvbiByRShlLHQpe3JldHVybiB4XyhlLmdldE1pbnV0ZXMoKSx0LDIpfWZ1bmN0aW9uIG9FKGUsdCl7cmV0dXJuIHhfKGUuZ2V0U2Vjb25kcygpLHQsMil9ZnVuY3Rpb24gYUUoZSl7dmFyIHQ9ZS5nZXREYXkoKTtyZXR1cm4gMD09PXQ/Nzp0fWZ1bmN0aW9uIGlFKGUsdCl7cmV0dXJuIHhfKHF3LmNvdW50KEZ3KGUpLTEsZSksdCwyKX1mdW5jdGlvbiB1RShlLHQpe3ZhciBuPWUuZ2V0RGF5KCk7cmV0dXJuIGU9bj49NHx8MD09PW4/WXcoZSk6WXcuY2VpbChlKSx4XyhZdy5jb3VudChGdyhlKSxlKSsoND09PUZ3KGUpLmdldERheSgpKSx0LDIpfWZ1bmN0aW9uIHNFKGUpe3JldHVybiBlLmdldERheSgpfWZ1bmN0aW9uIGxFKGUsdCl7cmV0dXJuIHhfKFZ3LmNvdW50KEZ3KGUpLTEsZSksdCwyKX1mdW5jdGlvbiBjRShlLHQpe3JldHVybiB4XyhlLmdldEZ1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gZkUoZSx0KXtyZXR1cm4geF8oZS5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIGRFKGUpe3ZhciB0PWUuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4odD4wPyItIjoodCo9LTEsIisiKSkreF8odC82MHwwLCIwIiwyKSt4Xyh0JTYwLCIwIiwyKX1mdW5jdGlvbiBwRShlLHQpe3JldHVybiB4XyhlLmdldFVUQ0RhdGUoKSx0LDIpfWZ1bmN0aW9uIGhFKGUsdCl7cmV0dXJuIHhfKGUuZ2V0VVRDSG91cnMoKSx0LDIpfWZ1bmN0aW9uIHlFKGUsdCl7cmV0dXJuIHhfKGUuZ2V0VVRDSG91cnMoKSUxMnx8MTIsdCwyKX1mdW5jdGlvbiBtRShlLHQpe3JldHVybiB4XygxK2hfLmNvdW50KG1fKGUpLGUpLHQsMyl9ZnVuY3Rpb24gdkUoZSx0KXtyZXR1cm4geF8oZS5nZXRVVENNaWxsaXNlY29uZHMoKSx0LDMpfWZ1bmN0aW9uIGdFKGUsdCl7cmV0dXJuIHZFKGUsdCkrIjAwMCJ9ZnVuY3Rpb24gYkUoZSx0KXtyZXR1cm4geF8oZS5nZXRVVENNb250aCgpKzEsdCwyKX1mdW5jdGlvbiB3RShlLHQpe3JldHVybiB4XyhlLmdldFVUQ01pbnV0ZXMoKSx0LDIpfWZ1bmN0aW9uIF9FKGUsdCl7cmV0dXJuIHhfKGUuZ2V0VVRDU2Vjb25kcygpLHQsMil9ZnVuY3Rpb24gRUUoZSl7dmFyIHQ9ZS5nZXRVVENEYXkoKTtyZXR1cm4gMD09PXQ/Nzp0fWZ1bmN0aW9uIE9FKGUsdCl7cmV0dXJuIHhfKGlfLmNvdW50KG1fKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBrRShlLHQpe3ZhciBuPWUuZ2V0VVRDRGF5KCk7cmV0dXJuIGU9bj49NHx8MD09PW4/Y18oZSk6Y18uY2VpbChlKSx4XyhjXy5jb3VudChtXyhlKSxlKSsoND09PW1fKGUpLmdldFVUQ0RheSgpKSx0LDIpfWZ1bmN0aW9uIENFKGUpe3JldHVybiBlLmdldFVUQ0RheSgpfWZ1bmN0aW9uIHhFKGUsdCl7cmV0dXJuIHhfKHVfLmNvdW50KG1fKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBTRShlLHQpe3JldHVybiB4XyhlLmdldFVUQ0Z1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gREUoZSx0KXtyZXR1cm4geF8oZS5nZXRVVENGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIFRFKCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBNRSgpe3JldHVybiIlIn1mdW5jdGlvbiBQRShlKXtyZXR1cm4rZX1mdW5jdGlvbiBORShlKXtyZXR1cm4gTWF0aC5mbG9vcigrZS8xZTMpfXdfPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0ZVRpbWUsbj1lLmRhdGUscj1lLnRpbWUsbz1lLnBlcmlvZHMsYT1lLmRheXMsaT1lLnNob3J0RGF5cyx1PWUubW9udGhzLHM9ZS5zaG9ydE1vbnRocyxsPURfKG8pLGM9VF8obyksZj1EXyhhKSxkPVRfKGEpLHA9RF8oaSksaD1UXyhpKSx5PURfKHUpLG09VF8odSksdj1EXyhzKSxnPVRfKHMpLGI9e2E6ZnVuY3Rpb24oZSl7cmV0dXJuIGlbZS5nZXREYXkoKV19LEE6ZnVuY3Rpb24oZSl7cmV0dXJuIGFbZS5nZXREYXkoKV19LGI6ZnVuY3Rpb24oZSl7cmV0dXJuIHNbZS5nZXRNb250aCgpXX0sQjpmdW5jdGlvbihlKXtyZXR1cm4gdVtlLmdldE1vbnRoKCldfSxjOm51bGwsZDpKXyxlOkpfLGY6dEUsSDpaXyxJOiRfLGo6WF8sTDplRSxtOm5FLE06ckUscDpmdW5jdGlvbihlKXtyZXR1cm4gb1srKGUuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbihlKXtyZXR1cm4gMSt+fihlLmdldE1vbnRoKCkvMyl9LFE6UEUsczpORSxTOm9FLHU6YUUsVTppRSxWOnVFLHc6c0UsVzpsRSx4Om51bGwsWDpudWxsLHk6Y0UsWTpmRSxaOmRFLCIlIjpNRX0sdz17YTpmdW5jdGlvbihlKXtyZXR1cm4gaVtlLmdldFVUQ0RheSgpXX0sQTpmdW5jdGlvbihlKXtyZXR1cm4gYVtlLmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbihlKXtyZXR1cm4gc1tlLmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uKGUpe3JldHVybiB1W2UuZ2V0VVRDTW9udGgoKV19LGM6bnVsbCxkOnBFLGU6cEUsZjpnRSxIOmhFLEk6eUUsajptRSxMOnZFLG06YkUsTTp3RSxwOmZ1bmN0aW9uKGUpe3JldHVybiBvWysoZS5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uKGUpe3JldHVybiAxK35+KGUuZ2V0VVRDTW9udGgoKS8zKX0sUTpQRSxzOk5FLFM6X0UsdTpFRSxVOk9FLFY6a0UsdzpDRSxXOnhFLHg6bnVsbCxYOm51bGwseTpTRSxZOkRFLFo6VEUsIiUiOk1FfSxfPXthOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1wLmV4ZWModC5zbGljZShuKSk7cmV0dXJuIHI/KGUudz1oW3JbMF0udG9Mb3dlckNhc2UoKV0sbityWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWYuZXhlYyh0LnNsaWNlKG4pKTtyZXR1cm4gcj8oZS53PWRbclswXS50b0xvd2VyQ2FzZSgpXSxuK3JbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbihlLHQsbil7dmFyIHI9di5leGVjKHQuc2xpY2UobikpO3JldHVybiByPyhlLm09Z1tyWzBdLnRvTG93ZXJDYXNlKCldLG4rclswXS5sZW5ndGgpOi0xfSxCOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj15LmV4ZWModC5zbGljZShuKSk7cmV0dXJuIHI/KGUubT1tW3JbMF0udG9Mb3dlckNhc2UoKV0sbityWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiBrKGUsdCxuLHIpfSxkOnpfLGU6el8sZjpZXyxIOnFfLEk6cV8sajpLXyxMOldfLG06Ql8sTTpWXyxwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1sLmV4ZWModC5zbGljZShuKSk7cmV0dXJuIHI/KGUucD1jW3JbMF0udG9Mb3dlckNhc2UoKV0sbityWzBdLmxlbmd0aCk6LTF9LHE6Rl8sUTpHXyxzOlFfLFM6VV8sdTpQXyxVOk5fLFY6al8sdzpNXyxXOkxfLHg6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBrKGUsbix0LHIpfSxYOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gayhlLHIsdCxuKX0seTpJXyxZOlJfLFo6QV8sIiUiOkhffTtmdW5jdGlvbiBFKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLG8sYSxpPVtdLHU9LTEscz0wLGw9ZS5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrdTxsOykzNz09PWUuY2hhckNvZGVBdCh1KSYmKGkucHVzaChlLnNsaWNlKHMsdSkpLG51bGwhPShvPUVfW3I9ZS5jaGFyQXQoKyt1KV0pP3I9ZS5jaGFyQXQoKyt1KTpvPSJlIj09PXI/IiAiOiIwIiwoYT10W3JdKSYmKHI9YShuLG8pKSxpLnB1c2gocikscz11KzEpO3JldHVybiBpLnB1c2goZS5zbGljZShzLHUpKSxpLmpvaW4oIiIpfX1mdW5jdGlvbiBPKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLG8sYT1iXygxOTAwLHZvaWQgMCwxKTtpZihrKGEsZSxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoIXR8fCJaImluIGF8fChhLlo9MCksInAiaW4gYSYmKGEuSD1hLkglMTIrMTIqYS5wKSx2b2lkIDA9PT1hLm0mJihhLm09InEiaW4gYT9hLnE6MCksIlYiaW4gYSl7aWYoYS5WPDF8fGEuVj41MylyZXR1cm4gbnVsbDsidyJpbiBhfHwoYS53PTEpLCJaImluIGE/KG89KHI9Z18oYl8oYS55LDAsMSkpKS5nZXRVVENEYXkoKSxyPW8+NHx8MD09PW8/dV8uY2VpbChyKTp1XyhyKSxyPWhfLm9mZnNldChyLDcqKGEuVi0xKSksYS55PXIuZ2V0VVRDRnVsbFllYXIoKSxhLm09ci5nZXRVVENNb250aCgpLGEuZD1yLmdldFVUQ0RhdGUoKSsoYS53KzYpJTcpOihvPShyPXZfKGJfKGEueSwwLDEpKSkuZ2V0RGF5KCkscj1vPjR8fDA9PT1vP1Z3LmNlaWwocik6Vncocikscj1Kdy5vZmZzZXQociw3KihhLlYtMSkpLGEueT1yLmdldEZ1bGxZZWFyKCksYS5tPXIuZ2V0TW9udGgoKSxhLmQ9ci5nZXREYXRlKCkrKGEudys2KSU3KX1lbHNlKCJXImluIGF8fCJVImluIGEpJiYoInciaW4gYXx8KGEudz0idSJpbiBhP2EudSU3OiJXImluIGE/MTowKSxvPSJaImluIGE/Z18oYl8oYS55LDAsMSkpLmdldFVUQ0RheSgpOnZfKGJfKGEueSwwLDEpKS5nZXREYXkoKSxhLm09MCxhLmQ9IlciaW4gYT8oYS53KzYpJTcrNyphLlctKG8rNSklNzphLncrNyphLlUtKG8rNiklNyk7cmV0dXJuIloiaW4gYT8oYS5IKz1hLlovMTAwfDAsYS5NKz1hLlolMTAwLGdfKGEpKTp2XyhhKX19ZnVuY3Rpb24gayhlLHQsbixyKXtmb3IodmFyIG8sYSxpPTAsdT10Lmxlbmd0aCxzPW4ubGVuZ3RoO2k8dTspe2lmKHI+PXMpcmV0dXJuLTE7aWYoMzc9PT0obz10LmNoYXJDb2RlQXQoaSsrKSkpe2lmKG89dC5jaGFyQXQoaSsrKSwhKGE9X1tvIGluIEVfP3QuY2hhckF0KGkrKyk6b10pfHwocj1hKGUsbixyKSk8MClyZXR1cm4tMX1lbHNlIGlmKG8hPW4uY2hhckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfXJldHVybihiLng9RShuLGIpLGIuWD1FKHIsYiksYi5jPUUodCxiKSx3Lng9RShuLHcpLHcuWD1FKHIsdyksdy5jPUUodCx3KSx7Zm9ybWF0OmZ1bmN0aW9uKGUpe3ZhciB0PUUoZSs9IiIsYik7cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sdH0scGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9TyhlKz0iIiwhMSk7cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sdH0sdXRjRm9ybWF0OmZ1bmN0aW9uKGUpe3ZhciB0PUUoZSs9IiIsdyk7cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sdH0sdXRjUGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9TyhlKz0iIiwhMCk7cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sdH19KX0oe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KSxfXz13Xy5mb3JtYXQsd18ucGFyc2Usd18udXRjRm9ybWF0LHdfLnV0Y1BhcnNlO3ZhciBqRT1EdyhTdyksTEU9akUucmlnaHQsUkU9KGpFLmxlZnQsTEUpLElFPWZ1bmN0aW9uKGUsdCxuKXtlLnByb3RvdHlwZT10LnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9ZX07ZnVuY3Rpb24gQUUoZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gdCluW3JdPXRbcl07cmV0dXJuIG59ZnVuY3Rpb24gRkUoKXt9dmFyIEJFPSJcXHMqKFsrLV0/XFxkKylcXHMqIix6RT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixLRT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIscUU9L14jKFswLTlhLWZdezMsOH0pJC8sVkU9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0JFLEJFLEJFXSsiXFwpJCIpLFVFPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tLRSxLRSxLRV0rIlxcKSQiKSxXRT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW0JFLEJFLEJFLHpFXSsiXFwpJCIpLFlFPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbS0UsS0UsS0UsekVdKyJcXCkkIiksSEU9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW3pFLEtFLEtFXSsiXFwpJCIpLEdFPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbekUsS0UsS0UsekVdKyJcXCkkIiksUUU9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gSkUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBaRSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uICRFKGUpe3ZhciB0LG47cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PXFFLmV4ZWMoZSkpPyhuPXRbMV0ubGVuZ3RoLHQ9cGFyc2VJbnQodFsxXSwxNiksNj09PW4/WEUodCk6Mz09PW4/bmV3IHJPKHQ+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXwyNDAmdCwoMTUmdCk8PDR8MTUmdCwxKTo4PT09bj9uZXcgck8odD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwoMjU1JnQpLzI1NSk6ND09PW4/bmV3IHJPKHQ+PjEyJjE1fHQ+PjgmMjQwLHQ+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXwyNDAmdCwoKDE1JnQpPDw0fDE1JnQpLzI1NSk6bnVsbCk6KHQ9VkUuZXhlYyhlKSk/bmV3IHJPKHRbMV0sdFsyXSx0WzNdLDEpOih0PVVFLmV4ZWMoZSkpP25ldyByTygyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCwxKToodD1XRS5leGVjKGUpKT9lTyh0WzFdLHRbMl0sdFszXSx0WzRdKToodD1ZRS5leGVjKGUpKT9lTygyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCx0WzRdKToodD1IRS5leGVjKGUpKT91Tyh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLDEpOih0PUdFLmV4ZWMoZSkpP3VPKHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XSk6UUUuaGFzT3duUHJvcGVydHkoZSk/WEUoUUVbZV0pOiJ0cmFuc3BhcmVudCI9PT1lP25ldyByTyhOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFhFKGUpe3JldHVybiBuZXcgck8oZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDEpfWZ1bmN0aW9uIGVPKGUsdCxuLHIpe3JldHVybiByPD0wJiYoZT10PW49TmFOKSxuZXcgck8oZSx0LG4scil9ZnVuY3Rpb24gdE8oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBGRXx8KGU9JEUoZSkpLGU/bmV3IHJPKChlPWUucmdiKCkpLnIsZS5nLGUuYixlLm9wYWNpdHkpOm5ldyByT31mdW5jdGlvbiBuTyhlLHQsbixyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dE8oZSk6bmV3IHJPKGUsdCxuLG51bGw9PXI/MTpyKX1mdW5jdGlvbiByTyhlLHQsbixyKXt0aGlzLnI9K2UsdGhpcy5nPSt0LHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gb08oKXtyZXR1cm4iIyIraU8odGhpcy5yKStpTyh0aGlzLmcpK2lPKHRoaXMuYil9ZnVuY3Rpb24gYU8oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT1lPyIpIjoiLCAiK2UrIikiKX1mdW5jdGlvbiBpTyhlKXtyZXR1cm4oKGU9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChlKXx8MCkpKTwxNj8iMCI6IiIpK2UudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHVPKGUsdCxuLHIpe3JldHVybiByPD0wP2U9dD1uPU5hTjpuPD0wfHxuPj0xP2U9dD1OYU46dDw9MCYmKGU9TmFOKSxuZXcgbE8oZSx0LG4scil9ZnVuY3Rpb24gc08oZSl7aWYoZSBpbnN0YW5jZW9mIGxPKXJldHVybiBuZXcgbE8oZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgRkV8fChlPSRFKGUpKSwhZSlyZXR1cm4gbmV3IGxPO2lmKGUgaW5zdGFuY2VvZiBsTylyZXR1cm4gZTt2YXIgdD0oZT1lLnJnYigpKS5yLzI1NSxuPWUuZy8yNTUscj1lLmIvMjU1LG89TWF0aC5taW4odCxuLHIpLGE9TWF0aC5tYXgodCxuLHIpLGk9TmFOLHU9YS1vLHM9KGErbykvMjtyZXR1cm4gdT8oaT10PT09YT8obi1yKS91KzYqKG48cik6bj09PWE/KHItdCkvdSsyOih0LW4pL3UrNCx1Lz1zPC41P2ErbzoyLWEtbyxpKj02MCk6dT1zPjAmJnM8MT8wOmksbmV3IGxPKGksdSxzLGUub3BhY2l0eSl9ZnVuY3Rpb24gbE8oZSx0LG4scil7dGhpcy5oPStlLHRoaXMucz0rdCx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIGNPKGUsdCxuKXtyZXR1cm4gMjU1KihlPDYwP3QrKG4tdCkqZS82MDplPDE4MD9uOmU8MjQwP3QrKG4tdCkqKDI0MC1lKS82MDp0KX1mdW5jdGlvbiBmTyhlLHQsbixyLG8pe3ZhciBhPWUqZSxpPWEqZTtyZXR1cm4oKDEtMyplKzMqYS1pKSp0Kyg0LTYqYSszKmkpKm4rKDErMyplKzMqYS0zKmkpKnIraSpvKS82fUlFKEZFLCRFLHtjb3B5OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsZSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OkpFLGZvcm1hdEhleDpKRSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXtyZXR1cm4gc08odGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjpaRSx0b1N0cmluZzpaRX0pLElFKHJPLG5PLEFFKEZFLHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1udWxsPT1lPzEvLjc6TWF0aC5wb3coMS8uNyxlKSxuZXcgck8odGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPW51bGw9PWU/Ljc6TWF0aC5wb3coLjcsZSksbmV3IHJPKHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6b08sZm9ybWF0SGV4Om9PLGZvcm1hdFJnYjphTyx0b1N0cmluZzphT30pKSxJRShsTywoZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3NPKGUpOm5ldyBsTyhlLHQsbixudWxsPT1yPzE6cil9KSxBRShGRSx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bnVsbD09ZT8xLy43Ok1hdGgucG93KDEvLjcsZSksbmV3IGxPKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPW51bGw9PWU/Ljc6TWF0aC5wb3coLjcsZSksbmV3IGxPKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSx0PWlzTmFOKGUpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLHI9bisobjwuNT9uOjEtbikqdCxvPTIqbi1yO3JldHVybiBuZXcgck8oY08oZT49MjQwP2UtMjQwOmUrMTIwLG8sciksY08oZSxvLHIpLGNPKGU8MTIwP2UrMjQwOmUtMTIwLG8sciksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PShlPWlzTmFOKGUpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT1lPyIpIjoiLCAiK2UrIikiKX19KSk7dmFyIGRPPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX07ZnVuY3Rpb24gcE8oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUrbip0fX1mdW5jdGlvbiBoTyhlKXtyZXR1cm4gMT09KGU9K2UpP3lPOmZ1bmN0aW9uKHQsbil7cmV0dXJuIG4tdD9mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9TWF0aC5wb3coZSxuKSx0PU1hdGgucG93KHQsbiktZSxuPTEvbixmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3coZStyKnQsbil9fSh0LG4sZSk6ZE8oaXNOYU4odCk/bjp0KX19ZnVuY3Rpb24geU8oZSx0KXt2YXIgbj10LWU7cmV0dXJuIG4/cE8oZSxuKTpkTyhpc05hTihlKT90OmUpfXZhciBtTz1mdW5jdGlvbiBlKHQpe3ZhciBuPWhPKHQpO2Z1bmN0aW9uIHIoZSx0KXt2YXIgcj1uKChlPW5PKGUpKS5yLCh0PW5PKHQpKS5yKSxvPW4oZS5nLHQuZyksYT1uKGUuYix0LmIpLGk9eU8oZS5vcGFjaXR5LHQub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnI9cih0KSxlLmc9byh0KSxlLmI9YSh0KSxlLm9wYWNpdHk9aSh0KSxlKyIifX1yZXR1cm4gci5nYW1tYT1lLHJ9KDEpO2Z1bmN0aW9uIHZPKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbixyLG89dC5sZW5ndGgsYT1uZXcgQXJyYXkobyksaT1uZXcgQXJyYXkobyksdT1uZXcgQXJyYXkobyk7Zm9yKG49MDtuPG87KytuKXI9bk8odFtuXSksYVtuXT1yLnJ8fDAsaVtuXT1yLmd8fDAsdVtuXT1yLmJ8fDA7cmV0dXJuIGE9ZShhKSxpPWUoaSksdT1lKHUpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKGUpe3JldHVybiByLnI9YShlKSxyLmc9aShlKSxyLmI9dShlKSxyKyIifX19dk8oKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPW48PTA/bj0wOm4+PTE/KG49MSx0LTEpOk1hdGguZmxvb3Iobip0KSxvPWVbcl0sYT1lW3IrMV0saT1yPjA/ZVtyLTFdOjIqby1hLHU9cjx0LTE/ZVtyKzJdOjIqYS1vO3JldHVybiBmTygobi1yL3QpKnQsaSxvLGEsdSl9fSkpLHZPKChmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9TWF0aC5mbG9vcigoKG4lPTEpPDA/KytuOm4pKnQpLG89ZVsocit0LTEpJXRdLGE9ZVtyJXRdLGk9ZVsocisxKSV0XSx1PWVbKHIrMikldF07cmV0dXJuIGZPKChuLXIvdCkqdCxvLGEsaSx1KX19KSk7dmFyIGdPPWZ1bmN0aW9uKGUsdCl7dHx8KHQ9W10pO3ZhciBuLHI9ZT9NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCk6MCxvPXQuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24oYSl7Zm9yKG49MDtuPHI7KytuKW9bbl09ZVtuXSooMS1hKSt0W25dKmE7cmV0dXJuIG99fTtmdW5jdGlvbiBiTyhlKXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGUpJiYhKGUgaW5zdGFuY2VvZiBEYXRhVmlldyl9ZnVuY3Rpb24gd08oZSx0KXt2YXIgbixyPXQ/dC5sZW5ndGg6MCxvPWU/TWF0aC5taW4ocixlLmxlbmd0aCk6MCxhPW5ldyBBcnJheShvKSxpPW5ldyBBcnJheShyKTtmb3Iobj0wO248bzsrK24pYVtuXT1TTyhlW25dLHRbbl0pO2Zvcig7bjxyOysrbilpW25dPXRbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe2ZvcihuPTA7bjxvOysrbilpW25dPWFbbl0oZSk7cmV0dXJuIGl9fXZhciBfTz1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBEYXRlO3JldHVybiBlPStlLHQ9K3QsZnVuY3Rpb24ocil7cmV0dXJuIG4uc2V0VGltZShlKigxLXIpK3Qqciksbn19LEVPPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9K2UsdD0rdCxmdW5jdGlvbihuKXtyZXR1cm4gZSooMS1uKSt0Km59fSxPTz1mdW5jdGlvbihlLHQpe3ZhciBuLHI9e30sbz17fTtmb3IobiBpbiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfHwoZT17fSksbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLHQpbiBpbiBlP3Jbbl09U08oZVtuXSx0W25dKTpvW25dPXRbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe2ZvcihuIGluIHIpb1tuXT1yW25dKGUpO3JldHVybiBvfX0sa089L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLENPPW5ldyBSZWdFeHAoa08uc291cmNlLCJnIik7dmFyIHhPPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGE9a08ubGFzdEluZGV4PUNPLmxhc3RJbmRleD0wLGk9LTEsdT1bXSxzPVtdO2ZvcihlKz0iIix0Kz0iIjsobj1rTy5leGVjKGUpKSYmKHI9Q08uZXhlYyh0KSk7KShvPXIuaW5kZXgpPmEmJihvPXQuc2xpY2UoYSxvKSx1W2ldP3VbaV0rPW86dVsrK2ldPW8pLChuPW5bMF0pPT09KHI9clswXSk/dVtpXT91W2ldKz1yOnVbKytpXT1yOih1WysraV09bnVsbCxzLnB1c2goe2k6aSx4OkVPKG4scil9KSksYT1DTy5sYXN0SW5kZXg7cmV0dXJuIGE8dC5sZW5ndGgmJihvPXQuc2xpY2UoYSksdVtpXT91W2ldKz1vOnVbKytpXT1vKSx1Lmxlbmd0aDwyP3NbMF0/ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpKyIifX0oc1swXS54KTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19KHQpOih0PXMubGVuZ3RoLGZ1bmN0aW9uKGUpe2Zvcih2YXIgbixyPTA7cjx0Oysrcil1WyhuPXNbcl0pLmldPW4ueChlKTtyZXR1cm4gdS5qb2luKCIiKX0pfSxTTz1mdW5jdGlvbihlLHQpe3ZhciBuLHI9dHlwZW9mIHQ7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09PXI/ZE8odCk6KCJudW1iZXIiPT09cj9FTzoic3RyaW5nIj09PXI/KG49JEUodCkpPyh0PW4sbU8pOnhPOnQgaW5zdGFuY2VvZiAkRT9tTzp0IGluc3RhbmNlb2YgRGF0ZT9fTzpiTyh0KT9nTzpBcnJheS5pc0FycmF5KHQpP3dPOiJmdW5jdGlvbiIhPXR5cGVvZiB0LnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiB0LnRvU3RyaW5nfHxpc05hTih0KT9PTzpFTykoZSx0KX0sRE89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT0rZSx0PSt0LGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKGUqKDEtbikrdCpuKX19LFRPPWZ1bmN0aW9uKGUpe3JldHVybitlfSxNTz1bMCwxXTtmdW5jdGlvbiBQTyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBOTyhlLHQpe3JldHVybih0LT1lPStlKT9mdW5jdGlvbihuKXtyZXR1cm4obi1lKS90fToobj1pc05hTih0KT9OYU46LjUsZnVuY3Rpb24oKXtyZXR1cm4gbn0pO3ZhciBufWZ1bmN0aW9uIGpPKGUsdCxuKXt2YXIgcj1lWzBdLG89ZVsxXSxhPXRbMF0saT10WzFdO3JldHVybiBvPHI/KHI9Tk8obyxyKSxhPW4oaSxhKSk6KHI9Tk8ocixvKSxhPW4oYSxpKSksZnVuY3Rpb24oZSl7cmV0dXJuIGEocihlKSl9fWZ1bmN0aW9uIExPKGUsdCxuKXt2YXIgcj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCktMSxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxpPS0xO2ZvcihlW3JdPGVbMF0mJihlPWUuc2xpY2UoKS5yZXZlcnNlKCksdD10LnNsaWNlKCkucmV2ZXJzZSgpKTsrK2k8cjspb1tpXT1OTyhlW2ldLGVbaSsxXSksYVtpXT1uKHRbaV0sdFtpKzFdKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49UkUoZSx0LDEsciktMTtyZXR1cm4gYVtuXShvW25dKHQpKX19ZnVuY3Rpb24gUk8oZSx0KXtyZXR1cm4gdC5kb21haW4oZS5kb21haW4oKSkucmFuZ2UoZS5yYW5nZSgpKS5pbnRlcnBvbGF0ZShlLmludGVycG9sYXRlKCkpLmNsYW1wKGUuY2xhbXAoKSkudW5rbm93bihlLnVua25vd24oKSl9ZnVuY3Rpb24gSU8oKXt2YXIgZSx0LG4scixvLGEsaT1NTyx1PU1PLHM9U08sbD1QTztmdW5jdGlvbiBjKCl7dmFyIGUsdCxuLHM9TWF0aC5taW4oaS5sZW5ndGgsdS5sZW5ndGgpO3JldHVybiBsIT09UE8mJihlPWlbMF0sdD1pW3MtMV0sZT50JiYobj1lLGU9dCx0PW4pLGw9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxuKSl9KSxyPXM+Mj9MTzpqTyxvPWE9bnVsbCxmfWZ1bmN0aW9uIGYodCl7cmV0dXJuIGlzTmFOKHQ9K3QpP246KG98fChvPXIoaS5tYXAoZSksdSxzKSkpKGUobCh0KSkpfXJldHVybiBmLmludmVydD1mdW5jdGlvbihuKXtyZXR1cm4gbCh0KChhfHwoYT1yKHUsaS5tYXAoZSksRU8pKSkobikpKX0sZi5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9QXJyYXkuZnJvbShlLFRPKSxjKCkpOmkuc2xpY2UoKX0sZi5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1BcnJheS5mcm9tKGUpLGMoKSk6dS5zbGljZSgpfSxmLnJhbmdlUm91bmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHU9QXJyYXkuZnJvbShlKSxzPURPLGMoKX0sZi5jbGFtcD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0hIWV8fFBPLGMoKSk6bCE9PVBPfSxmLmludGVycG9sYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsYygpKTpzfSxmLnVua25vd249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxmKTpufSxmdW5jdGlvbihuLHIpe3JldHVybiBlPW4sdD1yLGMoKX19ZnVuY3Rpb24gQU8oKXtyZXR1cm4gSU8oKShQTyxQTyl9ZnVuY3Rpb24gRk8oZSx0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZSh0KS5kb21haW4oZSl9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gQk8oZSl7cmV0dXJuIG5ldyBEYXRlKGUpfWZ1bmN0aW9uIHpPKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRGF0ZT8rZTorbmV3IERhdGUoK2UpfWZ1bmN0aW9uIEtPKGUsdCxuLHIsbyxhLGksdSxzKXt2YXIgbD1BTygpLGM9bC5pbnZlcnQsZj1sLmRvbWFpbixkPXMoIi4lTCIpLHA9cygiOiVTIiksaD1zKCIlSTolTSIpLHk9cygiJUkgJXAiKSxtPXMoIiVhICVkIiksdj1zKCIlYiAlZCIpLGc9cygiJUIiKSxiPXMoIiVZIiksdz1bW2ksMSwxZTNdLFtpLDUsNWUzXSxbaSwxNSwxNWUzXSxbaSwzMCwzZTRdLFthLDEsNmU0XSxbYSw1LDNlNV0sW2EsMTUsOWU1XSxbYSwzMCwxOGU1XSxbbywxLDM2ZTVdLFtvLDMsMTA4ZTVdLFtvLDYsMjE2ZTVdLFtvLDEyLDQzMmU1XSxbciwxLDg2NGU1XSxbciwyLDE3MjhlNV0sW24sMSw2MDQ4ZTVdLFt0LDEsMjU5MmU2XSxbdCwzLDc3NzZlNl0sW2UsMSwzMTUzNmU2XV07ZnVuY3Rpb24gXyh1KXtyZXR1cm4oaSh1KTx1P2Q6YSh1KTx1P3A6byh1KTx1P2g6cih1KTx1P3k6dCh1KTx1P24odSk8dT9tOnY6ZSh1KTx1P2c6YikodSl9ZnVuY3Rpb24gRSh0LG4scil7aWYobnVsbD09dCYmKHQ9MTApLCJudW1iZXIiPT10eXBlb2YgdCl7dmFyIG8sYT1NYXRoLmFicyhyLW4pL3QsaT1EdygoZnVuY3Rpb24oZSl7cmV0dXJuIGVbMl19KSkucmlnaHQodyxhKTtyZXR1cm4gaT09PXcubGVuZ3RoPyhvPWp3KG4vMzE1MzZlNixyLzMxNTM2ZTYsdCksdD1lKTppPyhvPShpPXdbYS93W2ktMV1bMl08d1tpXVsyXS9hP2ktMTppXSlbMV0sdD1pWzBdKToobz1NYXRoLm1heChqdyhuLHIsdCksMSksdD11KSx0LmV2ZXJ5KG8pfXJldHVybiB0fXJldHVybiBsLmludmVydD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IERhdGUoYyhlKSl9LGwuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2YoQXJyYXkuZnJvbShlLHpPKSk6ZigpLm1hcChCTyl9LGwudGlja3M9ZnVuY3Rpb24oZSl7dmFyIHQsbj1mKCkscj1uWzBdLG89bltuLmxlbmd0aC0xXSxhPW88cjtyZXR1cm4gYSYmKHQ9cixyPW8sbz10KSx0PSh0PUUoZSxyLG8pKT90LnJhbmdlKHIsbysxKTpbXSxhP3QucmV2ZXJzZSgpOnR9LGwudGlja0Zvcm1hdD1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT10P186cyh0KX0sbC5uaWNlPWZ1bmN0aW9uKGUpe3ZhciB0PWYoKTtyZXR1cm4oZT1FKGUsdFswXSx0W3QubGVuZ3RoLTFdKSk/ZihmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxvPShlPWUuc2xpY2UoKSkubGVuZ3RoLTEsYT1lW3JdLGk9ZVtvXTtyZXR1cm4gaTxhJiYobj1yLHI9byxvPW4sbj1hLGE9aSxpPW4pLGVbcl09dC5mbG9vcihhKSxlW29dPXQuY2VpbChpKSxlfSh0LGUpKTpsfSxsLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUk8obCxLTyhlLHQsbixyLG8sYSxpLHUscykpfSxsfXZhciBxTz1mdW5jdGlvbigpe3JldHVybiBGTy5hcHBseShLTyhGdyx6dyxxdyxKdywkdyxlXyxuXyxvXyxfXykuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9LFZPPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIFVPKGUpe2lmKCEodD1WTy5leGVjKGUpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK2UpO3ZhciB0O3JldHVybiBuZXcgV08oe2ZpbGw6dFsxXSxhbGlnbjp0WzJdLHNpZ246dFszXSxzeW1ib2w6dFs0XSx6ZXJvOnRbNV0sd2lkdGg6dFs2XSxjb21tYTp0WzddLHByZWNpc2lvbjp0WzhdJiZ0WzhdLnNsaWNlKDEpLHRyaW06dFs5XSx0eXBlOnRbMTBdfSl9ZnVuY3Rpb24gV08oZSl7dGhpcy5maWxsPXZvaWQgMD09PWUuZmlsbD8iICI6ZS5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09ZS5hbGlnbj8iPiI6ZS5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09ZS5zaWduPyItIjplLnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09ZS5zeW1ib2w/IiI6ZS5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhZS56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09ZS53aWR0aD92b2lkIDA6K2Uud2lkdGgsdGhpcy5jb21tYT0hIWUuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09ZS5wcmVjaXNpb24/dm9pZCAwOitlLnByZWNpc2lvbix0aGlzLnRyaW09ISFlLnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PWUudHlwZT8iIjplLnR5cGUrIiJ9VU8ucHJvdG90eXBlPVdPLnByb3RvdHlwZSxXTy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodm9pZCAwPT09dGhpcy53aWR0aD8iIjpNYXRoLm1heCgxLDB8dGhpcy53aWR0aCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHZvaWQgMD09PXRoaXMucHJlY2lzaW9uPyIiOiIuIitNYXRoLm1heCgwLDB8dGhpcy5wcmVjaXNpb24pKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfTt2YXIgWU8sSE8sR08sUU8sSk89ZnVuY3Rpb24oZSx0KXtpZigobj0oZT10P2UudG9FeHBvbmVudGlhbCh0LTEpOmUudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIG4scj1lLnNsaWNlKDAsbik7cmV0dXJuW3IubGVuZ3RoPjE/clswXStyLnNsaWNlKDIpOnIsK2Uuc2xpY2UobisxKV19LFpPPWZ1bmN0aW9uKGUpe3JldHVybihlPUpPKE1hdGguYWJzKGUpKSk/ZVsxXTpOYU59LCRPPWZ1bmN0aW9uKGUsdCl7dmFyIG49Sk8oZSx0KTtpZighbilyZXR1cm4gZSsiIjt2YXIgcj1uWzBdLG89blsxXTtyZXR1cm4gbzwwPyIwLiIrbmV3IEFycmF5KC1vKS5qb2luKCIwIikrcjpyLmxlbmd0aD5vKzE/ci5zbGljZSgwLG8rMSkrIi4iK3Iuc2xpY2UobysxKTpyK25ldyBBcnJheShvLXIubGVuZ3RoKzIpLmpvaW4oIjAiKX0sWE89eyIlIjpmdW5jdGlvbihlLHQpe3JldHVybigxMDAqZSkudG9GaXhlZCh0KX0sYjpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygyKX0sYzpmdW5jdGlvbihlKXtyZXR1cm4gZSsiIn0sZDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygxMCl9LGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b0V4cG9uZW50aWFsKHQpfSxmOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudG9GaXhlZCh0KX0sZzpmdW5jdGlvbihlLHQpe3JldHVybiBlLnRvUHJlY2lzaW9uKHQpfSxvOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuICRPKDEwMCplLHQpfSxyOiRPLHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1KTyhlLHQpO2lmKCFuKXJldHVybiBlKyIiO3ZhciByPW5bMF0sbz1uWzFdLGE9by0oWU89MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3Ioby8zKSkpKSsxLGk9ci5sZW5ndGg7cmV0dXJuIGE9PT1pP3I6YT5pP3IrbmV3IEFycmF5KGEtaSsxKS5qb2luKCIwIik6YT4wP3Iuc2xpY2UoMCxhKSsiLiIrci5zbGljZShhKToiMC4iK25ldyBBcnJheSgxLWEpLmpvaW4oIjAiKStKTyhlLE1hdGgubWF4KDAsdCthLTEpKVswXX0sWDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygxNil9fSxlaz1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdGs9QXJyYXkucHJvdG90eXBlLm1hcCxuaz1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl0scms9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPXZvaWQgMD09PWUuZ3JvdXBpbmd8fHZvaWQgMD09PWUudGhvdXNhbmRzP2VrOih0PXRrLmNhbGwoZS5ncm91cGluZyxOdW1iZXIpLG49ZS50aG91c2FuZHMrIiIsZnVuY3Rpb24oZSxyKXtmb3IodmFyIG89ZS5sZW5ndGgsYT1bXSxpPTAsdT10WzBdLHM9MDtvPjAmJnU+MCYmKHMrdSsxPnImJih1PU1hdGgubWF4KDEsci1zKSksYS5wdXNoKGUuc3Vic3RyaW5nKG8tPXUsbyt1KSksISgocys9dSsxKT5yKSk7KXU9dFtpPShpKzEpJXQubGVuZ3RoXTtyZXR1cm4gYS5yZXZlcnNlKCkuam9pbihuKX0pLG89dm9pZCAwPT09ZS5jdXJyZW5jeT8iIjplLmN1cnJlbmN5WzBdKyIiLGE9dm9pZCAwPT09ZS5jdXJyZW5jeT8iIjplLmN1cnJlbmN5WzFdKyIiLGk9dm9pZCAwPT09ZS5kZWNpbWFsPyIuIjplLmRlY2ltYWwrIiIsdT12b2lkIDA9PT1lLm51bWVyYWxzP2VrOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbih0KXtyZXR1cm4gZVsrdF19KSl9fSh0ay5jYWxsKGUubnVtZXJhbHMsU3RyaW5nKSkscz12b2lkIDA9PT1lLnBlcmNlbnQ/IiUiOmUucGVyY2VudCsiIixsPXZvaWQgMD09PWUubWludXM/Ii0iOmUubWludXMrIiIsYz12b2lkIDA9PT1lLm5hbj8iTmFOIjplLm5hbisiIjtmdW5jdGlvbiBmKGUpe3ZhciB0PShlPVVPKGUpKS5maWxsLG49ZS5hbGlnbixmPWUuc2lnbixkPWUuc3ltYm9sLHA9ZS56ZXJvLGg9ZS53aWR0aCx5PWUuY29tbWEsbT1lLnByZWNpc2lvbix2PWUudHJpbSxnPWUudHlwZTsibiI9PT1nPyh5PSEwLGc9ImciKTpYT1tnXXx8KHZvaWQgMD09PW0mJihtPTEyKSx2PSEwLGc9ImciKSwocHx8IjAiPT09dCYmIj0iPT09bikmJihwPSEwLHQ9IjAiLG49Ij0iKTt2YXIgYj0iJCI9PT1kP286IiMiPT09ZCYmL1tib3hYXS8udGVzdChnKT8iMCIrZy50b0xvd2VyQ2FzZSgpOiIiLHc9IiQiPT09ZD9hOi9bJXBdLy50ZXN0KGcpP3M6IiIsXz1YT1tnXSxFPS9bZGVmZ3BycyVdLy50ZXN0KGcpO2Z1bmN0aW9uIE8oZSl7dmFyIG8sYSxzLGQ9YixPPXc7aWYoImMiPT09ZylPPV8oZSkrTyxlPSIiO2Vsc2V7dmFyIGs9KGU9K2UpPDA7aWYoZT1pc05hTihlKT9jOl8oTWF0aC5hYnMoZSksbSksdiYmKGU9ZnVuY3Rpb24oZSl7ZTpmb3IodmFyIHQsbj1lLmxlbmd0aCxyPTEsbz0tMTtyPG47KytyKXN3aXRjaChlW3JdKXtjYXNlIi4iOm89dD1yO2JyZWFrO2Nhc2UiMCI6MD09PW8mJihvPXIpLHQ9cjticmVhaztkZWZhdWx0OmlmKCErZVtyXSlicmVhayBlO28+MCYmKG89MCl9cmV0dXJuIG8+MD9lLnNsaWNlKDAsbykrZS5zbGljZSh0KzEpOmV9KGUpKSxrJiYwPT0rZSYmKGs9ITEpLGQ9KGs/IigiPT09Zj9mOmw6Ii0iPT09Znx8IigiPT09Zj8iIjpmKStkLE89KCJzIj09PWc/bmtbOCtZTy8zXToiIikrTysoayYmIigiPT09Zj8iKSI6IiIpLEUpZm9yKG89LTEsYT1lLmxlbmd0aDsrK288YTspaWYoNDg+KHM9ZS5jaGFyQ29kZUF0KG8pKXx8cz41Nyl7Tz0oNDY9PT1zP2krZS5zbGljZShvKzEpOmUuc2xpY2UobykpK08sZT1lLnNsaWNlKDAsbyk7YnJlYWt9fXkmJiFwJiYoZT1yKGUsMS8wKSk7dmFyIEM9ZC5sZW5ndGgrZS5sZW5ndGgrTy5sZW5ndGgseD1DPGg/bmV3IEFycmF5KGgtQysxKS5qb2luKHQpOiIiO3N3aXRjaCh5JiZwJiYoZT1yKHgrZSx4Lmxlbmd0aD9oLU8ubGVuZ3RoOjEvMCkseD0iIiksbil7Y2FzZSI8IjplPWQrZStPK3g7YnJlYWs7Y2FzZSI9IjplPWQreCtlK087YnJlYWs7Y2FzZSJeIjplPXguc2xpY2UoMCxDPXgubGVuZ3RoPj4xKStkK2UrTyt4LnNsaWNlKEMpO2JyZWFrO2RlZmF1bHQ6ZT14K2QrZStPfXJldHVybiB1KGUpfXJldHVybiBtPXZvaWQgMD09PW0/NjovW2dwcnNdLy50ZXN0KGcpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsbSkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsbSkpLE8udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZSsiIn0sT31yZXR1cm57Zm9ybWF0OmYsZm9ybWF0UHJlZml4OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZigoKGU9VU8oZSkpLnR5cGU9ImYiLGUpKSxyPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFpPKHQpLzMpKSksbz1NYXRoLnBvdygxMCwtciksYT1ua1s4K3IvM107cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuKG8qZSkrYX19fX07IWZ1bmN0aW9uKGUpe0hPPXJrKGUpLEdPPUhPLmZvcm1hdCxRTz1ITy5mb3JtYXRQcmVmaXh9KHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KTt2YXIgb2s9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8sYT1qdyhlLHQsbik7c3dpdGNoKChyPVVPKG51bGw9PXI/IixmIjpyKSkudHlwZSl7Y2FzZSJzIjp2YXIgaT1NYXRoLm1heChNYXRoLmFicyhlKSxNYXRoLmFicyh0KSk7cmV0dXJuIG51bGwhPXIucHJlY2lzaW9ufHxpc05hTihvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoWk8odCkvMykpKS1aTyhNYXRoLmFicyhlKSkpfShhLGkpKXx8KHIucHJlY2lzaW9uPW8pLFFPKHIsaSk7Y2FzZSIiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UiciI6bnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1NYXRoLmFicyhlKSx0PU1hdGguYWJzKHQpLWUsTWF0aC5tYXgoMCxaTyh0KS1aTyhlKSkrMX0oYSxNYXRoLm1heChNYXRoLmFicyhlKSxNYXRoLmFicyh0KSkpKXx8KHIucHJlY2lzaW9uPW8tKCJlIj09PXIudHlwZSkpO2JyZWFrO2Nhc2UiZiI6Y2FzZSIlIjpudWxsIT1yLnByZWNpc2lvbnx8aXNOYU4obz1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoMCwtWk8oTWF0aC5hYnMoZSkpKX0oYSkpfHwoci5wcmVjaXNpb249by0yKigiJSI9PT1yLnR5cGUpKX1yZXR1cm4gR08ocil9O2Z1bmN0aW9uIGFrKGUpe3ZhciB0PWUuZG9tYWluO3JldHVybiBlLnRpY2tzPWZ1bmN0aW9uKGUpe3ZhciBuPXQoKTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYSxpLHU9LTE7aWYobj0rbiwoZT0rZSk9PT0odD0rdCkmJm4+MClyZXR1cm5bZV07aWYoKHI9dDxlKSYmKG89ZSxlPXQsdD1vKSwwPT09KGk9TncoZSx0LG4pKXx8IWlzRmluaXRlKGkpKXJldHVybltdO2lmKGk+MClmb3IoZT1NYXRoLmNlaWwoZS9pKSx0PU1hdGguZmxvb3IodC9pKSxhPW5ldyBBcnJheShvPU1hdGguY2VpbCh0LWUrMSkpOysrdTxvOylhW3VdPShlK3UpKmk7ZWxzZSBmb3IoZT1NYXRoLmZsb29yKGUqaSksdD1NYXRoLmNlaWwodCppKSxhPW5ldyBBcnJheShvPU1hdGguY2VpbChlLXQrMSkpOysrdTxvOylhW3VdPShlLXUpL2k7cmV0dXJuIHImJmEucmV2ZXJzZSgpLGF9KG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT1lPzEwOmUpfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oZSxuKXt2YXIgcj10KCk7cmV0dXJuIG9rKHJbMF0scltyLmxlbmd0aC0xXSxudWxsPT1lPzEwOmUsbil9LGUubmljZT1mdW5jdGlvbihuKXtudWxsPT1uJiYobj0xMCk7dmFyIHIsbz10KCksYT0wLGk9by5sZW5ndGgtMSx1PW9bYV0scz1vW2ldO3JldHVybiBzPHUmJihyPXUsdT1zLHM9cixyPWEsYT1pLGk9ciksKHI9TncodSxzLG4pKT4wP3I9TncodT1NYXRoLmZsb29yKHUvcikqcixzPU1hdGguY2VpbChzL3IpKnIsbik6cjwwJiYocj1Odyh1PU1hdGguY2VpbCh1KnIpL3Iscz1NYXRoLmZsb29yKHMqcikvcixuKSkscj4wPyhvW2FdPU1hdGguZmxvb3IodS9yKSpyLG9baV09TWF0aC5jZWlsKHMvcikqcix0KG8pKTpyPDAmJihvW2FdPU1hdGguY2VpbCh1KnIpL3Isb1tpXT1NYXRoLmZsb29yKHMqcikvcix0KG8pKSxlfSxlfWZ1bmN0aW9uIGlrKCl7dmFyIGU9QU8oKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFJPKGUsaWsoKSl9LEZPLmFwcGx5KGUsYXJndW1lbnRzKSxhayhlKX12YXIgdWs9ZnVuY3Rpb24oKXt2YXIgZT1fdyx0PW51bGwsbj1ndygwKSxyPUV3LG89Z3coITApLGE9bnVsbCxpPXd3LHU9bnVsbDtmdW5jdGlvbiBzKHMpe3ZhciBsLGMsZixkLHAsaD1zLmxlbmd0aCx5PSExLG09bmV3IEFycmF5KGgpLHY9bmV3IEFycmF5KGgpO2ZvcihudWxsPT1hJiYodT1pKHA9dncoKSkpLGw9MDtsPD1oOysrbCl7aWYoIShsPGgmJm8oZD1zW2xdLGwscykpPT09eSlpZih5PSF5KWM9bCx1LmFyZWFTdGFydCgpLHUubGluZVN0YXJ0KCk7ZWxzZXtmb3IodS5saW5lRW5kKCksdS5saW5lU3RhcnQoKSxmPWwtMTtmPj1jOy0tZil1LnBvaW50KG1bZl0sdltmXSk7dS5saW5lRW5kKCksdS5hcmVhRW5kKCl9eSYmKG1bbF09K2UoZCxsLHMpLHZbbF09K24oZCxsLHMpLHUucG9pbnQodD8rdChkLGwscyk6bVtsXSxyPytyKGQsbCxzKTp2W2xdKSl9aWYocClyZXR1cm4gdT1udWxsLHArIiJ8fG51bGx9ZnVuY3Rpb24gbCgpe3JldHVybiBPdygpLmRlZmluZWQobykuY3VydmUoaSkuY29udGV4dChhKX1yZXR1cm4gcy54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246Z3coK24pLHQ9bnVsbCxzKTplfSxzLngwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z3coK3QpLHMpOmV9LHMueDE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bnVsbD09ZT9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z3coK2UpLHMpOnR9LHMueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmd3KCtlKSxyPW51bGwscyk6bn0scy55MD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmd3KCtlKSxzKTpufSxzLnkxPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PWU/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOmd3KCtlKSxzKTpyfSxzLmxpbmVYMD1zLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBsKCkueChlKS55KG4pfSxzLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBsKCkueChlKS55KHIpfSxzLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBsKCkueCh0KS55KG4pfSxzLmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpndyghIWUpLHMpOm99LHMuY3VydmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ZSxudWxsIT1hJiYodT1pKGEpKSxzKTppfSxzLmNvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PWU/YT11PW51bGw6dT1pKGE9ZSkscyk6YX0sc307ZnVuY3Rpb24gc2soZSx0KXtsZXQgbjtpZih2b2lkIDA9PT10KWZvcihjb25zdCB0IG9mIGUpbnVsbCE9dCYmKG48dHx8dm9pZCAwPT09biYmdD49dCkmJihuPXQpO2Vsc2V7bGV0IHI9LTE7Zm9yKGxldCBvIG9mIGUpbnVsbCE9KG89dChvLCsrcixlKSkmJihuPG98fHZvaWQgMD09PW4mJm8+PW8pJiYobj1vKX1yZXR1cm4gbn12YXIgbGs9WyIiLCJrIiwiTSIsIkIiXSxjaz1mdW5jdGlvbihlKXt2YXIgdD1NYXRoLmxvZyhNYXRoLmFicyhlKSkqTWF0aC5MT0cxMEUvM3wwO2lmKDA9PT10KXJldHVybiIiLmNvbmNhdChlKTt2YXIgbj1sa1t0XSxyPU1hdGgucG93KDEwLDMqdCk7cmV0dXJuIiIuY29uY2F0KChlL3IpLnRvRml4ZWQoMSkpLmNvbmNhdChuKX0sZms9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGU7bis9MSl7dmFyIHI9bWwoKSgpLnN0YXJ0T2YoImRheSIpLnN1YnRyYWN0KGUsImRheXMiKS5hZGQobiwiZGF5cyIpO3QucHVzaChyLnZhbHVlT2YoKSl9cmV0dXJuIHR9LGRrPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gTWF0aC5yb3VuZCh0KyhvLWUpKihyLXQpLyhuLWUpKX19LHBrPWRrKEdoLFFoKzEsSmgsMyooUWgrMSkpLGhrPWRrKFFoKzEsMSxHaCxRaCsxKSx5az1kayhKaCwzKihRaCsxKSxIaCxHaCs0KSxtaz1mdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9MTtlPD1HaCYmKHI9aGsoZSkpLGU+R2gmJmU8SmgmJihyPXBrKGUpKSxlPj1KaCYmKHI9eWsoZSkpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7KytvKW8lcj09MCYmbi5wdXNoKHRbb10pO3JldHVybiBufSx2az1mdW5jdGlvbihlKXt2YXIgdD1lLmhlaWdodCxuPWUud2lkdGgscj1lLm5vRGF0YVRleHQ7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJnIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0Iix7Y2xhc3NOYW1lOiJOb0dyYXBoRGF0YSIseDpuLzIseTp0LzIsdGV4dEFuY2hvcjoibWlkZGxlIn0scikpfTt2ay5kaXNwbGF5TmFtZT0iQ2hhcnROb0RhdGEiLHZrLnByb3BUeXBlcz17aGVpZ2h0OlYuYS5udW1iZXIuaXNSZXF1aXJlZCx3aWR0aDpWLmEubnVtYmVyLmlzUmVxdWlyZWQsbm9EYXRhVGV4dDpWLmEuc3RyaW5nLmlzUmVxdWlyZWR9O3ZhciBnaz12aztmdW5jdGlvbiBiayhlKXtyZXR1cm4oYms9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiB3ayhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe0RrKGUsdCxuW3RdKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBfayhlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBFayhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIE9rKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24ga2soZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1iayh0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/eGsoZSk6dH1mdW5jdGlvbiBDayhlKXtyZXR1cm4oQ2s9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIHhrKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBTayhlLHQpe3JldHVybihTaz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gRGsoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBUaz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjtFayh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybiBEayh4ayhuPWtrKHRoaXMsKGU9Q2sodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLCJzdGF0ZSIse30pLERrKHhrKG4pLCJnZXRQb2ludHMiLChmdW5jdGlvbihlLHQscixvKXt2YXIgYT1uLnByb3BzLGk9YS54QXhpc0tleSx1PWEueUF4aXNLZXk7cmV0dXJuIHVrKCkueCgoZnVuY3Rpb24odCl7cmV0dXJuIGUobWwoKSh0W2ldKS5zdGFydE9mKCJkYXkiKSl9KSkueTAobi5wcm9wcy5oZWlnaHQpLnkxKChmdW5jdGlvbihlKXtyZXR1cm4gdChlW29dW3VdKX0pKShyKX0pKSxEayh4ayhuKSwiZ2V0WFNjYWxlIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnByb3BzLHQ9ZS53aWR0aCxyPWUueEF4aXNPZmZzZXQsbz1lLmRheXM7cmV0dXJuIHFPKCkuZG9tYWluKFttbCgpKCkuc3RhcnRPZigiZGF5Iikuc3VidHJhY3QobywiZGF5cyIpLG1sKCkoKS5zdGFydE9mKCJkYXkiKV0pLnJhbmdlKFswLHQtci0yXSl9KSksRGsoeGsobiksImdldE1heFlWYWx1ZSIsKGZ1bmN0aW9uKCl7dmFyIGU9bi5wcm9wcyx0PWUuZGF0YSxyPWUuc291cmNlVHlwZXMsbz1lLnlBeGlzS2V5O3JldHVybiAxLjEqc2sodC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuW10uY29uY2F0KF9rKGUpLF9rKHIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXVtvXX0pKSkpfSksW10pKXx8Nn0pKSxEayh4ayhuKSwiZ2V0WVNjYWxlIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnByb3BzLHQ9ZS5oZWlnaHQscj1lLnRvb2x0aXBIZWlnaHQsbz1uLmdldE1heFlWYWx1ZSgpO3JldHVybiBpaygpLmRvbWFpbihbMCxvXSkucmFuZ2UoW3Qscl0pfSkpLERrKHhrKG4pLCJoYW5kbGVNb3VzZU1vdmUiLChmdW5jdGlvbihlKXt2YXIgdD1lLmNsaWVudFg7aWYobi5fY29udGFpbmVyKXt2YXIgcj1uLnByb3BzLG89ci5ob3Zlck9uRGF0ZSxhPXIuZGF0YSxpPXIueEF4aXNPZmZzZXQsdT1yLnlBeGlzT2Zmc2V0LHM9ci5jaXJjbGVZT2Zmc2V0LGw9ci5zb3VyY2VUeXBlcyxjPXIueEF4aXNLZXksZj1yLnlBeGlzS2V5LGQ9ci5ob3ZlclR5cGU7aWYoIWEpcmV0dXJuO3ZhciBwPXQtbi5fY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsaD1uLmdldFhTY2FsZSgpLHk9bi5nZXRZU2NhbGUoKSxtPWguaW52ZXJ0KHAtaSksdj1hLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj1tbCgpKHRbY10pLnRvRGF0ZSgpLHI9TWF0aC5hYnMobi1tKTtyZXR1cm4gdm9pZCAwPT09ZS5kaWZmfHxlLmRpZmY+cj97ZGlmZjpyLGNsb3Nlc3Q6d2soe30sdCx7cGFyc2VkRGF0ZTpufSl9OmV9KSx7fSkuY2xvc2VzdDtwPWgodi5wYXJzZWREYXRlKStpO3ZhciBnPWwubWFwKChmdW5jdGlvbihlKXt2YXIgdD12W2VdW2ZdO3JldHVybnt4OnAseTp5KHQpK3Utcyx0eXBlOmUsdmFsdWU6dH19KSk7ImFjY3VtdWxhdGlvbiI9PT1kJiYoZz1nLnNsaWNlKDAsMSkpLG8odltjXSksbi5zZXRTdGF0ZSh7aG92ZXJQb3NpdGlvbjpwLGhvdmVyRGF0ZTp2LnBhcnNlZERhdGUsY2lyY2xlczpnfSl9fSkpLERrKHhrKG4pLCJoYW5kbGVNb3VzZU91dCIsKGZ1bmN0aW9uKCl7KDAsbi5wcm9wcy5ob3Zlck9uRGF0ZSkobnVsbCksbi5zZXRTdGF0ZSh7aG92ZXJQb3NpdGlvbjpudWxsLGhvdmVyRGF0ZTpudWxsLGNpcmNsZXM6bnVsbH0pfSkpLERrKHhrKG4pLCJyZW5kZXJDaXJjbGVzIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnByb3BzLHQ9ZS5jaXJjbGVSYWRpdXMscj1lLmhvdmVyVHlwZSxvPWUueEF4aXNPZmZzZXQsYT1lLndpZHRoLGk9bi5zdGF0ZSx1PWkuY2lyY2xlcyxzPWkuaG92ZXJQb3NpdGlvbitvPj1hLTIwPyJlbmQiOiJzdGFydCI7cmV0dXJuIHUubWFwKChmdW5jdGlvbihlLG4pe2lmKCFlKXJldHVybiBudWxsO3ZhciBvPWUueCxhPWUueSxpPWUudmFsdWU7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJnIix7a2V5Om59LEUuYS5jcmVhdGVFbGVtZW50KCJjaXJjbGUiLHtjeDpvLGN5OmEsY2xhc3NOYW1lOiJDaXJjbGUiLHI6dH0pLCJhY2N1bXVsYXRpb24iPT09ciYmRS5hLmNyZWF0ZUVsZW1lbnQoInRleHQiLHt4Om8seTphLGNsYXNzTmFtZToiQ2lyY2xlLXRleHQiLHRleHRBbmNob3I6cyx0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdCgic3RhcnQiPT09cz8xMDotMTAsIiwgMCkiKX0saSkpfSkpfSkpLERrKHhrKG4pLCJyZW5kZXJIb3ZlclBvc2l0aW9uIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnByb3BzLHQ9ZS5oZWlnaHQscj1lLnlBeGlzT2Zmc2V0LG89bi5zdGF0ZS5ob3ZlclBvc2l0aW9uO3JldHVybiBvP0UuYS5jcmVhdGVFbGVtZW50KCJnIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJsaW5lIix7Y2xhc3NOYW1lOiJIb3ZlckxpbmUiLHgxOm8seDI6byx5MToiMCIseTI6dCtyfSksbi5yZW5kZXJDaXJjbGVzKCkpOm51bGx9KSksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJlNrKGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJyZW5kZXJBcmVhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZyIse2NsYXNzTmFtZToiQ2hhcnRBcmVhIixrZXk6dH0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOnRoaXMucHJvcHMuY29sb3JzW3RdLGNsYXNzTmFtZToiQ2hhcnRBcmVhUGF0aCIsZDplfSkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5kYXRhLHI9dC5pc0xvYWRpbmcsbz10LmRheXMsYT10LmhlaWdodCxpPXQud2lkdGgsdT10LnhBeGlzT2Zmc2V0LHM9dC55QXhpc09mZnNldCxsPXQuaG92ZXJTcG90T2Zmc2V0LGM9dC5zb3VyY2VUeXBlcyxmPXQueEF4aXNEYXRlRm9ybWF0SG92ZXIsZD10Lm5vRGF0YVRleHQscD10aGlzLnN0YXRlLGg9cC5ob3ZlclBvc2l0aW9uLHk9cC5ob3ZlckRhdGUsbT1bXSx2PXRoaXMuZ2V0WFNjYWxlKCksZz10aGlzLmdldFlTY2FsZSgpLGI9e3RpY2tzOmcudGlja3MoNSksc2NhbGU6Zyx4OjAseTpzLHdpZHRoOmksaGVpZ2h0OmEsdGlja1dpZHRoOmksdGlja0Zvcm1hdDpja30sdz17aGVpZ2h0OmEsaG92ZXI6aCYme2hvdmVyUG9zaXRpb246aCxob3ZlclRleHQ6bWwoKSh5KS5mb3JtYXQoZil9LHRpY2tzOm1rKG8sZmsobykpLHdpZHRoOmkseEF4aXNPZmZzZXQ6dSxzY2FsZTp2LHlBeGlzT2Zmc2V0OjAsZGF0ZUZvcm1hdDp0aGlzLnByb3BzLnhBeGlzRGF0ZUZvcm1hdH0sXz17eFRpY2tzOm1rKG8sZmsobykpLHlUaWNrczpnLnRpY2tzKDUpLHhTY2FsZTp2LHlTY2FsZTpnLHhPZmZzZXQ6dSx5T2Zmc2V0OnMsd2lkdGg6aSxoZWlnaHQ6YX0sTz17Y2xhc3NOYW1lOiJIb3ZlclNwb3QiLHg6dS1sLHk6LXMsd2lkdGg6aSxoZWlnaHQ6YSxvbk1vdXNlTW92ZTp0aGlzLmhhbmRsZU1vdXNlTW92ZSxvbk1vdXNlTGVhdmU6dGhpcy5oYW5kbGVNb3VzZU91dH07cmV0dXJuIG4mJm4ubGVuZ3RoJiZpJiYobT1jLm1hcCgoZnVuY3Rpb24odCxyKXt2YXIgbz1lLmdldFBvaW50cyh2LGcsbix0KTtyZXR1cm4gZS5yZW5kZXJBcmVhKG8scil9KSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7Y2xhc3NOYW1lOiJHcmFwaCIscmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLl9jb250YWluZXI9dH19LEUuYS5jcmVhdGVFbGVtZW50KFpiLHtpZDoiY2xpcCIsd2lkdGg6aSxoZWlnaHQ6YSx5Oi1zfSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAiLmNvbmNhdChzLCIpIiksc3R5bGU6e2NsaXBQYXRoOiJ1cmwoI2NsaXApIn19LEUuYS5jcmVhdGVFbGVtZW50KGZ3LF8pKSxFLmEuY3JlYXRlRWxlbWVudChsdyxiKSxFLmEuY3JlYXRlRWxlbWVudCh1dyx3KSwhciYmRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdCh1LCIsICIpLmNvbmNhdChzLCIpIiksc3R5bGU6e2NsaXBQYXRoOiJ1cmwoI2NsaXApIn19LG0pLHRoaXMucmVuZGVySG92ZXJQb3NpdGlvbigpLCFtLmxlbmd0aCYmRS5hLmNyZWF0ZUVsZW1lbnQoZ2sse2hlaWdodDphLHdpZHRoOmksbm9EYXRhVGV4dDpkfSkpLCFyJiZuJiZuLmxlbmd0aD4wJiZFLmEuY3JlYXRlRWxlbWVudChhdyxPKSl9fV0pJiZPayhuLnByb3RvdHlwZSxyKSxvJiZPayhuLG8pLHR9KF8uQ29tcG9uZW50KTtEayhUaywicHJvcFR5cGVzIix7ZGF0YTpWLmEuYXJyYXkuaXNSZXF1aXJlZCxpc0xvYWRpbmc6Vi5hLmJvb2wsZGF5czpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5udW1iZXJdKS5pc1JlcXVpcmVkLGhvdmVyT25EYXRlOlYuYS5mdW5jLmlzUmVxdWlyZWQsaGVpZ2h0OlYuYS5udW1iZXIsd2lkdGg6Vi5hLm51bWJlcix4QXhpc09mZnNldDpWLmEubnVtYmVyLHlBeGlzT2Zmc2V0OlYuYS5udW1iZXIsY2lyY2xlWU9mZnNldDpWLmEubnVtYmVyLGxlZnRUb29sdGlwT2Zmc2V0OlYuYS5udW1iZXIsdG9wVG9vbHRpcE9mZnNldDpWLmEubnVtYmVyLGNpcmNsZVJhZGl1czpWLmEubnVtYmVyLHRvb2x0aXBIZWlnaHQ6Vi5hLm51bWJlcixob3ZlclNwb3RPZmZzZXQ6Vi5hLm51bWJlcix4QXhpc0tleTpWLmEuc3RyaW5nLHlBeGlzS2V5OlYuYS5zdHJpbmcsbm9EYXRhVGV4dDpWLmEuc3RyaW5nLHNvdXJjZVR5cGVzOlYuYS5hcnJheS5pc1JlcXVpcmVkLGNvbG9yczpWLmEuYXJyYXkseEF4aXNEYXRlRm9ybWF0OlYuYS5zdHJpbmcseEF4aXNEYXRlRm9ybWF0SG92ZXI6Vi5hLnN0cmluZyxob3ZlclR5cGU6Vi5hLnN0cmluZ30pLERrKFRrLCJkZWZhdWx0UHJvcHMiLHtoZWlnaHQ6NDAwLHhBeGlzT2Zmc2V0OjUwLHlBeGlzT2Zmc2V0Oi0yNSxjaXJjbGVZT2Zmc2V0OjIsbGVmdFRvb2x0aXBPZmZzZXQ6Myx0b3BUb29sdGlwT2Zmc2V0OjE1LGNpcmNsZVJhZGl1czo2LHRvb2x0aXBIZWlnaHQ6MjUsaG92ZXJTcG90T2Zmc2V0OjgseEF4aXNLZXk6IngiLHlBeGlzS2V5OiJ5Iixub0RhdGFUZXh0OiItIixjb2xvcnM6WyIjNEIzREEzIiwiIzQxOUI4NiIsIiMwMjZFQUQiXSx4QXhpc0RhdGVGb3JtYXQ6Ik1NTSBEIix4QXhpc0RhdGVGb3JtYXRIb3ZlcjoiZGRkZCwgTU1NTSBEIixob3ZlclR5cGU6ImFjY3VtdWxhdGlvbiJ9KSxUay5kaXNwbGF5TmFtZT0iR3JhcGgiO3ZhciBNaz1UayxQaz1mdW5jdGlvbihlKXt2YXIgdD1UdCgpKCJMb2FkaW5nSW5kaWNhdG9yIix7IkxvYWRpbmdJbmRpY2F0b3ItZnVsbHNjcmVlbiI6ZS5mdWxsc2NyZWVufSksbj1UdCgpKCJMb2FkaW5nSW5kaWNhdG9yLWRvdHMiLHsiTG9hZGluZ0luZGljYXRvci1kb3RzLXNtYWxsIjplLnNtYWxsfSkscj1UdCgpKCJMb2FkaW5nSW5kaWNhdG9yLWxvYWRlci1kb3QiLHsiTG9hZGluZ0luZGljYXRvci1sb2FkZXItZG90LXNtYWxsIjplLnNtYWxsfSksbz1lLnRvcHx8MDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0fSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJMb2FkaW5nSW5kaWNhdG9yLW91dGVyIixzdHlsZTp7dG9wOm99fSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOm59LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6cn0pLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6cn0pLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6cn0pLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6cn0pLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6cn0pKSkpfTtQay5kaXNwbGF5TmFtZT0iTG9hZGluZ0luZGljYXRvciIsUGsucHJvcFR5cGVzPXtzbWFsbDpWLmEuYm9vbCx0b3A6Vi5hLm51bWJlcixmdWxsc2NyZWVuOlYuYS5ib29sfTt2YXIgTms9UGssams9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkNoYXJ0SW50ZXJhY3RpdmUifSxFLmEuY3JlYXRlRWxlbWVudChRYixudWxsLEUuYS5jcmVhdGVFbGVtZW50KE1rLGUpKSxlLmlzTG9hZGluZyYmRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiR3JhcGgtaW5kaWNhdG9yLWNvbnRhaW5lciJ9LEUuYS5jcmVhdGVFbGVtZW50KE5rLG51bGwpKSl9O2prLmRpc3BsYXlOYW1lPSJDaGFydEludGVyYWN0aXZlIixqay5wcm9wVHlwZXM9e2lzTG9hZGluZzpWLmEuYm9vbH07dmFyIExrPWprLFJrPU1hdGguYWJzLElrPU1hdGguYXRhbjIsQWs9TWF0aC5jb3MsRms9TWF0aC5tYXgsQms9TWF0aC5taW4sems9TWF0aC5zaW4sS2s9TWF0aC5zcXJ0LHFrPU1hdGguUEksVms9cWsvMixVaz0yKnFrO2Z1bmN0aW9uIFdrKGUpe3JldHVybiBlPjE/MDplPC0xP3FrOk1hdGguYWNvcyhlKX1mdW5jdGlvbiBZayhlKXtyZXR1cm4gZT49MT9WazplPD0tMT8tVms6TWF0aC5hc2luKGUpfWZ1bmN0aW9uIEhrKGUpe3JldHVybiBlLmlubmVyUmFkaXVzfWZ1bmN0aW9uIEdrKGUpe3JldHVybiBlLm91dGVyUmFkaXVzfWZ1bmN0aW9uIFFrKGUpe3JldHVybiBlLnN0YXJ0QW5nbGV9ZnVuY3Rpb24gSmsoZSl7cmV0dXJuIGUuZW5kQW5nbGV9ZnVuY3Rpb24gWmsoZSl7cmV0dXJuIGUmJmUucGFkQW5nbGV9ZnVuY3Rpb24gJGsoZSx0LG4scixvLGEsaSx1KXt2YXIgcz1uLWUsbD1yLXQsYz1pLW8sZj11LWEsZD1mKnMtYypsO2lmKCEoZCpkPDFlLTEyKSlyZXR1cm5bZSsoZD0oYyoodC1hKS1mKihlLW8pKS9kKSpzLHQrZCpsXX1mdW5jdGlvbiBYayhlLHQsbixyLG8sYSxpKXt2YXIgdT1lLW4scz10LXIsbD0oaT9hOi1hKS9Layh1KnUrcypzKSxjPWwqcyxmPS1sKnUsZD1lK2MscD10K2YsaD1uK2MseT1yK2YsbT0oZCtoKS8yLHY9KHAreSkvMixnPWgtZCxiPXktcCx3PWcqZytiKmIsXz1vLWEsRT1kKnktaCpwLE89KGI8MD8tMToxKSpLayhGaygwLF8qXyp3LUUqRSkpLGs9KEUqYi1nKk8pL3csQz0oLUUqZy1iKk8pL3cseD0oRSpiK2cqTykvdyxTPSgtRSpnK2IqTykvdyxEPWstbSxUPUMtdixNPXgtbSxQPVMtdjtyZXR1cm4gRCpEK1QqVD5NKk0rUCpQJiYoaz14LEM9Uykse2N4OmssY3k6Qyx4MDE6LWMseTAxOi1mLHgxMTprKihvL18tMSkseTExOkMqKG8vXy0xKX19dmFyIGVDPWZ1bmN0aW9uKCl7dmFyIGU9SGssdD1HayxuPWd3KDApLHI9bnVsbCxvPVFrLGE9SmssaT1aayx1PW51bGw7ZnVuY3Rpb24gcygpe3ZhciBzLGwsYz0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZj0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksZD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1WayxwPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLVZrLGg9UmsocC1kKSx5PXA+ZDtpZih1fHwodT1zPXZ3KCkpLGY8YyYmKGw9ZixmPWMsYz1sKSxmPjFlLTEyKWlmKGg+VWstMWUtMTIpdS5tb3ZlVG8oZipBayhkKSxmKnprKGQpKSx1LmFyYygwLDAsZixkLHAsIXkpLGM+MWUtMTImJih1Lm1vdmVUbyhjKkFrKHApLGMqemsocCkpLHUuYXJjKDAsMCxjLHAsZCx5KSk7ZWxzZXt2YXIgbSx2LGc9ZCxiPXAsdz1kLF89cCxFPWgsTz1oLGs9aS5hcHBseSh0aGlzLGFyZ3VtZW50cykvMixDPWs+MWUtMTImJihyPytyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpLayhjKmMrZipmKSkseD1CayhSayhmLWMpLzIsK24uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxTPXgsRD14O2lmKEM+MWUtMTIpe3ZhciBUPVlrKEMvYyp6ayhrKSksTT1ZayhDL2YqemsoaykpOyhFLT0yKlQpPjFlLTEyPyh3Kz1UKj15PzE6LTEsXy09VCk6KEU9MCx3PV89KGQrcCkvMiksKE8tPTIqTSk+MWUtMTI/KGcrPU0qPXk/MTotMSxiLT1NKTooTz0wLGc9Yj0oZCtwKS8yKX12YXIgUD1mKkFrKGcpLE49Zip6ayhnKSxqPWMqQWsoXyksTD1jKnprKF8pO2lmKHg+MWUtMTIpe3ZhciBSLEk9ZipBayhiKSxBPWYqemsoYiksRj1jKkFrKHcpLEI9Yyp6ayh3KTtpZihoPHFrJiYoUj0kayhQLE4sRixCLEksQSxqLEwpKSl7dmFyIHo9UC1SWzBdLEs9Ti1SWzFdLHE9SS1SWzBdLFY9QS1SWzFdLFU9MS96ayhXaygoeipxK0sqVikvKEtrKHoqeitLKkspKktrKHEqcStWKlYpKSkvMiksVz1LayhSWzBdKlJbMF0rUlsxXSpSWzFdKTtTPUJrKHgsKGMtVykvKFUtMSkpLEQ9QmsoeCwoZi1XKS8oVSsxKSl9fU8+MWUtMTI/RD4xZS0xMj8obT1YayhGLEIsUCxOLGYsRCx5KSx2PVhrKEksQSxqLEwsZixELHkpLHUubW92ZVRvKG0uY3grbS54MDEsbS5jeSttLnkwMSksRDx4P3UuYXJjKG0uY3gsbS5jeSxELElrKG0ueTAxLG0ueDAxKSxJayh2LnkwMSx2LngwMSksIXkpOih1LmFyYyhtLmN4LG0uY3ksRCxJayhtLnkwMSxtLngwMSksSWsobS55MTEsbS54MTEpLCF5KSx1LmFyYygwLDAsZixJayhtLmN5K20ueTExLG0uY3grbS54MTEpLElrKHYuY3krdi55MTEsdi5jeCt2LngxMSksIXkpLHUuYXJjKHYuY3gsdi5jeSxELElrKHYueTExLHYueDExKSxJayh2LnkwMSx2LngwMSksIXkpKSk6KHUubW92ZVRvKFAsTiksdS5hcmMoMCwwLGYsZyxiLCF5KSk6dS5tb3ZlVG8oUCxOKSxjPjFlLTEyJiZFPjFlLTEyP1M+MWUtMTI/KG09WGsoaixMLEksQSxjLC1TLHkpLHY9WGsoUCxOLEYsQixjLC1TLHkpLHUubGluZVRvKG0uY3grbS54MDEsbS5jeSttLnkwMSksUzx4P3UuYXJjKG0uY3gsbS5jeSxTLElrKG0ueTAxLG0ueDAxKSxJayh2LnkwMSx2LngwMSksIXkpOih1LmFyYyhtLmN4LG0uY3ksUyxJayhtLnkwMSxtLngwMSksSWsobS55MTEsbS54MTEpLCF5KSx1LmFyYygwLDAsYyxJayhtLmN5K20ueTExLG0uY3grbS54MTEpLElrKHYuY3krdi55MTEsdi5jeCt2LngxMSkseSksdS5hcmModi5jeCx2LmN5LFMsSWsodi55MTEsdi54MTEpLElrKHYueTAxLHYueDAxKSwheSkpKTp1LmFyYygwLDAsYyxfLHcseSk6dS5saW5lVG8oaixMKX1lbHNlIHUubW92ZVRvKDAsMCk7aWYodS5jbG9zZVBhdGgoKSxzKXJldHVybiB1PW51bGwscysiInx8bnVsbH1yZXR1cm4gcy5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciBuPSgrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykrICt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMixyPSgrby5hcHBseSh0aGlzLGFyZ3VtZW50cykrICthLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMi1xay8yO3JldHVybltBayhyKSpuLHprKHIpKm5dfSxzLmlubmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z3coK3QpLHMpOmV9LHMub3V0ZXJSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpndygrZSkscyk6dH0scy5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpndygrZSkscyk6bn0scy5wYWRSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09ZT9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z3coK2UpLHMpOnJ9LHMuc3RhcnRBbmdsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmd3KCtlKSxzKTpvfSxzLmVuZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z3coK2UpLHMpOmF9LHMucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpndygrZSkscyk6aX0scy5jb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW51bGw9PWU/bnVsbDplLHMpOnV9LHN9LHRDPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfSxuQz1mdW5jdGlvbihlKXtyZXR1cm4gZX07ZnVuY3Rpb24gckMoZSl7cmV0dXJuKHJDPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gb0MoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pOyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSksci5mb3JFYWNoKChmdW5jdGlvbih0KXtwQyhlLHQsblt0XSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYUMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksdT1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9dS5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT11LnJldHVybnx8dS5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfWZ1bmN0aW9uIGlDKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPW5ldyBBcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSl8fCJbb2JqZWN0IEFyZ3VtZW50c10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfWZ1bmN0aW9uIHVDKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gc0MoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBsQyhlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PXJDKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9mQyhlKTp0fWZ1bmN0aW9uIGNDKGUpe3JldHVybihjQz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gZkMoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIGRDKGUsdCl7cmV0dXJuKGRDPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBwQyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGhDPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuO3VDKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuIHBDKGZDKG49bEModGhpcywoZT1jQyh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSksInN0YXRlIix7aGVpZ2h0OjM3NSxzaXplOjIwLG1hcmdpbjo3NSxob3ZlcmVkOm51bGx9KSxwQyhmQyhuKSwic2V0U2l6ZSIsKGZ1bmN0aW9uKCl7aWYobi5fcGFuZWwpe3ZhciBlPW4uX3BhbmVsLmNsaWVudFdpZHRoO24uc2V0U3RhdGUoe3dpZHRoOmV9KX19KSksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJmRDKGUsdCl9KHQsZSksbj10LG89W3trZXk6Im1ha2luZ1Zpc2liaWxpdHkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aUMoZSkscj1uLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZStuW3RdfSksMCk7cmV0dXJuIG4ubWFwKChmdW5jdGlvbihlKXt2YXIgbj1lW3RdL3I7cmV0dXJuIG9DKHt9LGUse3Zpc2libGVWYWx1ZTplW3RdKihuPC4wMDU/LjAwNS9uOjEpfSl9KSl9fSx7a2V5OiJjYWxjdWxhdGVQZXJjZW50YWdlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWlDKGUpLHI9bi5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrblt0XX0pLDApO3JldHVybiBuLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49MTAwKmVbdF0vcjtyZXR1cm4gb0Moe30sZSx7cGVyY2VudGFnZTpuPW4+MT9NYXRoLnJvdW5kKG4pOm4udG9GaXhlZCgxKX0pfSkpfX0se2tleToicmVhcnJhbmdlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pQyhlKTtuPW4uc29ydCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZVt0XS1uW3RdfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT1lW3RdfSkpO2Zvcih2YXIgcj1bXTtuLmxlbmd0aDspci5wdXNoKG5bbi5sZW5ndGgtMV0pLG4ucG9wKCksbi5sZW5ndGgmJihyLnB1c2goblswXSksbi5zaGlmdCgpKTtyZXR1cm4gcn19LHtrZXk6ImdldFBpZUZuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW5DLHQ9dEMsbj1udWxsLHI9Z3coMCksbz1ndyhVayksYT1ndygwKTtmdW5jdGlvbiBpKGkpe3ZhciB1LHMsbCxjLGYsZD1pLmxlbmd0aCxwPTAsaD1uZXcgQXJyYXkoZCkseT1uZXcgQXJyYXkoZCksbT0rci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdj1NYXRoLm1pbihVayxNYXRoLm1heCgtVWssby5hcHBseSh0aGlzLGFyZ3VtZW50cyktbSkpLGc9TWF0aC5taW4oTWF0aC5hYnModikvZCxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYj1nKih2PDA/LTE6MSk7Zm9yKHU9MDt1PGQ7Kyt1KShmPXlbaFt1XT11XT0rZShpW3VdLHUsaSkpPjAmJihwKz1mKTtmb3IobnVsbCE9dD9oLnNvcnQoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoeVtlXSx5W25dKX0pKTpudWxsIT1uJiZoLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4oaVtlXSxpW3RdKX0pKSx1PTAsbD1wPyh2LWQqYikvcDowO3U8ZDsrK3UsbT1jKXM9aFt1XSxjPW0rKChmPXlbc10pPjA/ZipsOjApK2IseVtzXT17ZGF0YTppW3NdLGluZGV4OnUsdmFsdWU6ZixzdGFydEFuZ2xlOm0sZW5kQW5nbGU6YyxwYWRBbmdsZTpnfTtyZXR1cm4geX1yZXR1cm4gaS52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Omd3KCt0KSxpKTplfSxpLnNvcnRWYWx1ZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuPW51bGwsaSk6dH0saS5zb3J0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsdD1udWxsLGkpOm59LGkuc3RhcnRBbmdsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmd3KCtlKSxpKTpyfSxpLmVuZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z3coK2UpLGkpOm99LGkucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpndygrZSksaSk6YX0saX0oKS52YWx1ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmlzaWJsZVZhbHVlfSkpLnNvcnQobnVsbCl9fSx7a2V5OiJtb3ZlTGluZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnkxLHI9ZS55MixvPWUueTMsYT1lLngxPDA7cmV0dXJuIG9DKHt9LGUse3kxOmE/bit0Om4seTI6cit0LHkzOmE/bzpvK3R9KX19LHtrZXk6Im1vdmVMaW5lVXAiLHZhbHVlOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHQubW92ZUxpbmUoZSxlLnkxPDA/LW46TnVtYmVyKG4pKX19LHtrZXk6Im1vdmVMaW5lRG93biIsdmFsdWU6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5tb3ZlTGluZShlLGUueTE8MD9OdW1iZXIobik6LW4pfX1dLChyPVt7a2V5OiJjb21wb25lbnRXaWxsTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5kYXRhO3RoaXMudXBkYXRlVmlzaWJsZURhdGEoZSl9fSx7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFNpemUoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnNldFNpemUpfX0se2tleToiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO3RoaXMudXBkYXRlVmlzaWJsZURhdGEodCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnNldFNpemUpfX0se2tleToiZ2V0SW5jcmVhc2VkT3V0ZXJBcmNGbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXRlLnNpemU7cmV0dXJuIGVDKCkuaW5uZXJSYWRpdXModGhpcy5yYWRpdXMoKStlKS5vdXRlclJhZGl1cyh0aGlzLnJhZGl1cygpK2UpfX0se2tleToiZ2V0SW5jcmVhc2VkQXJjRm4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5zaXplO3JldHVybiBlQygpLmlubmVyUmFkaXVzKHRoaXMucmFkaXVzKCktZSkub3V0ZXJSYWRpdXModGhpcy5yYWRpdXMoKStlKX19LHtrZXk6ImdldE91dGVyQXJjRm4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGVDKCkuaW5uZXJSYWRpdXModGhpcy5yYWRpdXMoKSkub3V0ZXJSYWRpdXModGhpcy5yYWRpdXMoKSl9fSx7a2V5OiJnZXRBcmNGbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXRlLnNpemU7cmV0dXJuIGVDKCkuaW5uZXJSYWRpdXModGhpcy5yYWRpdXMoKS1lKS5vdXRlclJhZGl1cyh0aGlzLnJhZGl1cygpKX19LHtrZXk6InJhZGl1cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXRlLHQ9ZS5tYXJnaW4sbj1lLndpZHRoLHI9ZS5oZWlnaHQ7cmV0dXJuIE1hdGgubWluKG4scikvMi10fX0se2tleToidXBkYXRlVmlzaWJsZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMucHJvcHMudmFsdWVLZXk7aWYoZSl7dmFyIHI9dC5tYWtpbmdWaXNpYmlsaXR5KHQucmVhcnJhbmdlRGF0YSh0LmNhbGN1bGF0ZVBlcmNlbnRhZ2UoZSxuKSxuKSxuKTt0aGlzLnNldFN0YXRlKHtkYXRhOnJ9KX19fSx7a2V5OiJpc1JlY29yZEhvdmVyZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RhdGUuaG92ZXJlZDtyZXR1cm4hIXQmJnQuaW5kZXg9PT1lLmluZGV4fX0se2tleToiaW5jcmVhc2VBcmMiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe2hvdmVyZWQ6ZX0pLHRoaXMucHJvcHMub25Ib3ZlcihlKX19LHtrZXk6ImRlY3JlYXNlQXJjIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2hvdmVyZWQ6bnVsbH0pLHRoaXMucHJvcHMub25Ib3ZlcihudWxsKX19LHtrZXk6Im1vdmVQb2x5bGluZXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1pQyhlKSxyPXRoaXMucmFkaXVzKCkvNCxvPTE7bzxuLmxlbmd0aDsrK28pe3ZhciBhPU1hdGguYWJzKG5bb10ueTItbltvLTFdLnkyKTtpZihhPHIpe3ZhciBpPU1hdGguYWJzKGEtcik7bltvXT10Lm1vdmVMaW5lVXAobltvXSxpLzIpLG5bby0xXT10Lm1vdmVMaW5lRG93bihuW28tMV0saS8yKX19cmV0dXJuIG59fSx7a2V5OiJyZW5kZXJBcmMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXRoaXMuc3RhdGUuZGF0YSxyPXRoaXMuZ2V0SW5jcmVhc2VkQXJjRm4oKSxvPXRoaXMuZ2V0QXJjRm4oKTtyZXR1cm4gdC5nZXRQaWVGbigpKG4pLm1hcCgoZnVuY3Rpb24odCxuKXt2YXIgYT1lLmlzUmVjb3JkSG92ZXJlZCh0KSxpPXt9O3JldHVybiBhJiYoaS5maWx0ZXI9InVybCgjZHJvcFNoYWRvdykiKSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2NsYXNzTmFtZToiRG91Z2hudXQtY2hhcnQtc2VnbWVudCIsa2V5Om4sZmlsbDp0LmRhdGEuY29sb3IsZDphP3IodCk6byh0KSxzdHlsZTppLG9uTW91c2VPdmVyOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaW5jcmVhc2VBcmModCl9LG9uTW91c2VPdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWNyZWFzZUFyYyh0KX19KX0pKX19LHtrZXk6InJlbmRlckxpbmVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10aGlzLnByb3BzLHI9bi5sYWJlbEtleSxvPW4uc3ViTGFiZWxLZXksYT1uLnJlbmRlckxhYmVsLGk9dGhpcy5zdGF0ZSx1PWkud2lkdGgscz1pLmRhdGEsbD10aGlzLnJhZGl1cygpLzE1LGM9dGhpcy5nZXRJbmNyZWFzZWRPdXRlckFyY0ZuKCksZj10aGlzLmdldE91dGVyQXJjRm4oKSxkPXQuZ2V0UGllRm4oKShzKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWFDKGYuY2VudHJvaWQoZSksMiksbj10WzBdLHI9dFsxXTtyZXR1cm57eDE6bjwwPy11LzI6bix4MjpuPDA/bjp1LzIseTE6cix5MjpyLHJlY29yZDplfX0pKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWUueDEsbj1lLngyLHI9ZS55MSxvPWUueTIsYT1lLnJlY29yZCxpPWFDKGMuY2VudHJvaWQoYSksMiksdT1pWzBdLHM9aVsxXSxsPXU8MDtyZXR1cm57eDE6dCx5MTpsP3M6cix4Mjp1LHkyOnMseDM6bix5MzpsP286cyxyZWNvcmQ6YX19KSk7cmV0dXJuIHRoaXMubW92ZVBvbHlsaW5lcyhkKS5tYXAoKGZ1bmN0aW9uKHQsbil7dmFyIGk9dC54MSx1PXQueTEscz10LngyLGM9dC55MixmPXQueDMsZD10LnkzLHA9dC5yZWNvcmQsaD1UdCgpKCJEb3VnaG51dC1jaGFydC10eC1hbW91bnQiLHsiRG91Z2hudXQtY2hhcnQtdHgtYW1vdW50LXN0cm9uZyI6ZS5pc1JlY29yZEhvdmVyZWQocCl9KSx5PXAuZGF0YSxtPXlbcl0sdj15W29dO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZyIse2tleTpufSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWxpbmUiLHtjbGFzc05hbWU6IkRvdWdobnV0LWNoYXJ0LXR4LWxpbmUiLHBvaW50czoiIi5jb25jYXQoaSwiLCIpLmNvbmNhdCh1LCIgIikuY29uY2F0KHMsIiwiKS5jb25jYXQoYywiICIpLmNvbmNhdChmLCIsIikuY29uY2F0KGQpLHN0cm9rZVdpZHRoOmUuaXNSZWNvcmRIb3ZlcmVkKHApPzI6MX0pLGE/YSh0LG4pOkUuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0Iix7Y2xhc3NOYW1lOmgsZHk6IjAuMWVtIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdChpPDA/aTpmLCIsIikuY29uY2F0KGMtbCwiKSIpLHN0eWxlOnt0ZXh0QW5jaG9yOmk8MD8ic3RhcnQiOiJlbmQifX0sbSksdj9FLmEuY3JlYXRlRWxlbWVudCgidGV4dCIse2NsYXNzTmFtZToiRG91Z2hudXQtY2hhcnQtdHgtdHlwZSIsZHk6IjAuNWVtIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdChpPDA/aTpmLCIsIikuY29uY2F0KGMrbCwiKSIpLHN0eWxlOnt0ZXh0QW5jaG9yOmk8MD8ic3RhcnQiOiJlbmQifX0sdik6bnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse2ZpbGxPcGFjaXR5OiIwIix4OmktMTAseTpNYXRoLm1pbih1LGMsZCktMjAsd2lkdGg6Zi1pKzIwLGhlaWdodDpNYXRoLm1heCh1LGMsZCktTWF0aC5taW4odSxjLGQpKzQwLG9uTW91c2VPdmVyOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaW5jcmVhc2VBcmMocCl9LG9uTW91c2VPdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWNyZWFzZUFyYyhwKX19KSl9KSl9fSx7a2V5OiJyZW5kZXJUaXRsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnRpdGxlO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgidGV4dCIse2NsYXNzTmFtZToiRG91Z2hudXQtY2hhcnQtdGl0bGUifSxlKSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuc3RhdGUsbj10LmNsYXNzTmFtZSxyPXQud2lkdGgsbz10LmhlaWdodDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpUdCgpKCJEb3VnaG51dC1jaGFydCIsbikscmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLl9wYW5lbD10fX0sRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3dpZHRoOnJ8fG8saGVpZ2h0Om99LEUuYS5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJmaWx0ZXIiLHtpZDoiZHJvcFNoYWRvdyIseDoiMCIseToiMCIsd2lkdGg6IjMwMCUiLGhlaWdodDoiMzAwJSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJmZUdhdXNzaWFuQmx1ciIse2luOiJTb3VyY2VBbHBoYSIscmVzdWx0OiJibHVyLW91dCIsc3RkRGV2aWF0aW9uOiIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJmZU9mZnNldCIse2luOiJibHVyLW91dCIscmVzdWx0OiJ0aGUtc2hhZG93IixkeDoiMiIsZHk6IjEifSksRS5hLmNyZWF0ZUVsZW1lbnQoImZlQ29sb3JNYXRyaXgiLHtpbjoidGhlLXNoYWRvdyIscmVzdWx0OiJjb2xvci1vdXQiLHR5cGU6Im1hdHJpeCIsdmFsdWVzOiIwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAuMjUgMCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgiZmVCbGVuZCIse2luOiJTb3VyY2VHcmFwaGljIixpbjI6ImNvbG9yLW91dCIsbW9kZToibm9ybWFsIn0pKSkscj9FLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKCIuY29uY2F0KHIvMiwiLCIpLmNvbmNhdChvLzIsIikiKX0sdGhpcy5yZW5kZXJMaW5lcygpLHRoaXMucmVuZGVyQXJjKCksdGhpcy5yZW5kZXJUaXRsZSgpKTpudWxsKSl9fV0pJiZzQyhuLnByb3RvdHlwZSxyKSxvJiZzQyhuLG8pLHR9KF8uQ29tcG9uZW50KTtwQyhoQywicHJvcFR5cGVzIix7dGl0bGU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGRhdGE6Vi5hLmFycmF5LmlzUmVxdWlyZWQsdmFsdWVLZXk6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGxhYmVsS2V5OlYuYS5zdHJpbmcsc3ViTGFiZWxLZXk6Vi5hLnN0cmluZyxyZW5kZXJMYWJlbDpWLmEuZnVuYyxvbkhvdmVyOlYuYS5mdW5jfSkscEMoaEMsImRlZmF1bHRQcm9wcyIse29uSG92ZXI6TXR9KSxoQy5kaXNwbGF5TmFtZT0iRG91Z2hudXRDaGFydCI7dmFyIHlDPWhDLG1DPWZ1bmN0aW9uKGUsdCxuKXtlPStlLHQ9K3Qsbj0obz1hcmd1bWVudHMubGVuZ3RoKTwyPyh0PWUsZT0wLDEpOm88Mz8xOituO2Zvcih2YXIgcj0tMSxvPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKHQtZSkvbikpLGE9bmV3IEFycmF5KG8pOysrcjxvOylhW3JdPWUrcipuO3JldHVybiBhfTtjb25zdCB2Qz1TeW1ib2woImltcGxpY2l0Iik7ZnVuY3Rpb24gZ0MoKXt2YXIgZT1uZXcgTWFwLHQ9W10sbj1bXSxyPXZDO2Z1bmN0aW9uIG8obyl7dmFyIGE9bysiIixpPWUuZ2V0KGEpO2lmKCFpKXtpZihyIT09dkMpcmV0dXJuIHI7ZS5zZXQoYSxpPXQucHVzaChvKSl9cmV0dXJuIG5bKGktMSklbi5sZW5ndGhdfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W10sZT1uZXcgTWFwO2Zvcihjb25zdCByIG9mIG4pe2NvbnN0IG49cisiIjtlLmhhcyhuKXx8ZS5zZXQobix0LnB1c2gocikpfXJldHVybiBvfSxvLnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPUFycmF5LmZyb20oZSksbyk6bi5zbGljZSgpfSxvLnVua25vd249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSxvKTpyfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZ0ModCxuKS51bmtub3duKHIpfSxGTy5hcHBseShvLGFyZ3VtZW50cyksb31mdW5jdGlvbiBiQygpe3ZhciBlLHQsbj1nQygpLnVua25vd24odm9pZCAwKSxyPW4uZG9tYWluLG89bi5yYW5nZSxhPTAsaT0xLHU9ITEscz0wLGw9MCxjPS41O2Z1bmN0aW9uIGYoKXt2YXIgbj1yKCkubGVuZ3RoLGY9aTxhLGQ9Zj9pOmEscD1mP2E6aTtlPShwLWQpL01hdGgubWF4KDEsbi1zKzIqbCksdSYmKGU9TWF0aC5mbG9vcihlKSksZCs9KHAtZC1lKihuLXMpKSpjLHQ9ZSooMS1zKSx1JiYoZD1NYXRoLnJvdW5kKGQpLHQ9TWF0aC5yb3VuZCh0KSk7dmFyIGg9bUMobikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZCtlKnR9KSk7cmV0dXJuIG8oZj9oLnJldmVyc2UoKTpoKX1yZXR1cm4gZGVsZXRlIG4udW5rbm93bixuLmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocihlKSxmKCkpOnIoKX0sbi5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW2EsaV09ZSxhPSthLGk9K2ksZigpKTpbYSxpXX0sbi5yYW5nZVJvdW5kPWZ1bmN0aW9uKGUpe3JldHVyblthLGldPWUsYT0rYSxpPStpLHU9ITAsZigpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiB0fSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sbi5yb3VuZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0hIWUsZigpKTp1fSxuLnBhZGRpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxsPStlKSxmKCkpOnN9LG4ucGFkZGluZ0lubmVyPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsZSksZigpKTpzfSxuLnBhZGRpbmdPdXRlcj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rZSxmKCkpOmx9LG4uYWxpZ249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKSxmKCkpOmN9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiBiQyhyKCksW2EsaV0pLnJvdW5kKHUpLnBhZGRpbmdJbm5lcihzKS5wYWRkaW5nT3V0ZXIobCkuYWxpZ24oYyl9LEZPLmFwcGx5KGYoKSxhcmd1bWVudHMpfXZhciB3Qz1mdW5jdGlvbihlKXt2YXIgdD1lLndpZHRoLG49ZS5oZWlnaHQscj1lLnhPZmZzZXQsbz1lLnlPZmZzZXQ7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJnIix7Y2xhc3NOYW1lOiJHcm91cGVkQmFyQ2hhcnRYYXhpcyJ9LEUuYS5jcmVhdGVFbGVtZW50KCJsaW5lIix7eTE6bi1vLHkyOm4tbyx4MTpyLHgyOnQsY2xhc3NOYW1lOiJHcm91cGVkQmFyQ2hhcnRYYXhpcy1saW5lIn0pKX07d0MuZGlzcGxheU5hbWU9Ikdyb3VwZWRCYXJDaGFydFhheGlzIix3Qy5wcm9wVHlwZXM9e3dpZHRoOlYuYS5udW1iZXIuaXNSZXF1aXJlZCxoZWlnaHQ6Vi5hLm51bWJlci5pc1JlcXVpcmVkLHhPZmZzZXQ6Vi5hLm51bWJlci5pc1JlcXVpcmVkLHlPZmZzZXQ6Vi5hLm51bWJlci5pc1JlcXVpcmVkfTt2YXIgX0M9d0M7ZnVuY3Rpb24gRUMoZSl7cmV0dXJuKEVDPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gT0MoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBrQyhlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIENDKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09RUModCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P1NDKGUpOnR9ZnVuY3Rpb24geEMoZSl7cmV0dXJuKHhDPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBTQyhlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gREMoZSx0KXtyZXR1cm4oREM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIFRDKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgTUM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47T0ModGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gVEMoU0Mobj1DQyh0aGlzLChlPXhDKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwicHJlcGVuZEZvcmVncm91bmQiLChmdW5jdGlvbihlKXt2YXIgdD1lLmdldEJCb3goKSxuPXQueCxyPXQueSxvPXQud2lkdGgsYT10LmhlaWdodCxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWN0Iik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixuKSxpLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHIpLGkuc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLG8pLGkuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixhKSxpLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjZmZmIiksaS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiR3JvdXBlZEJhckNoYXJ0WWF4aXMtZm9yZWdyb3VuZCIpLGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxlKX0pKSxufXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmREMoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5wcm9wcy50aWNrcy5mb3JFYWNoKChmdW5jdGlvbih0LG4pe2VbIl90aWNrIi5jb25jYXQobildJiZlLnByZXBlbmRGb3JlZ3JvdW5kKGVbIl90aWNrIi5jb25jYXQobildKX0pKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQudGlja3Mscj10LnRpY2tzRm9ybWF0LG89dC5zY2FsZSxhPXQuaGVpZ2h0LGk9dC53aWR0aCx1PXQueE9mZnNldCxzPXQueU9mZnNldDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoImxpbmUiLHt5MTpzLHkyOmEseDE6dSx4Mjp1LGNsYXNzTmFtZToiR3JvdXBlZEJhckNoYXJ0WWF4aXMtbGluZSJ9KSxuLm1hcCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtrZXk6bn0sRS5hLmNyZWF0ZUVsZW1lbnQoImxpbmUiLHt5MTpvKHQpLHkyOm8odCkseDE6MCx4MjppLGNsYXNzTmFtZToiR3JvdXBlZEJhckNoYXJ0WWF4aXMtdGljayJ9KSwwIT09bj9FLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgidGV4dCIse3g6MCx5Om8odCksY2xhc3NOYW1lOiJHcm91cGVkQmFyQ2hhcnRZYXhpcy1sYWJlbCIscmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlWyJfdGljayIuY29uY2F0KG4pXT10fX0scih0KSkpOm51bGwpfSkpKX19XSkmJmtDKG4ucHJvdG90eXBlLHIpLG8mJmtDKG4sbyksdH0oXy5Db21wb25lbnQpO1RDKE1DLCJwcm9wVHlwZXMiLHt0aWNrczpWLmEuYXJyYXlPZihWLmEubnVtYmVyKS5pc1JlcXVpcmVkLHRpY2tzRm9ybWF0OlYuYS5mdW5jLmlzUmVxdWlyZWQsc2NhbGU6Vi5hLmZ1bmMuaXNSZXF1aXJlZCx3aWR0aDpWLmEubnVtYmVyLmlzUmVxdWlyZWQsaGVpZ2h0OlYuYS5udW1iZXIuaXNSZXF1aXJlZCx4T2Zmc2V0OlYuYS5udW1iZXIuaXNSZXF1aXJlZCx5T2Zmc2V0OlYuYS5udW1iZXIuaXNSZXF1aXJlZH0pLE1DLmRpc3BsYXlOYW1lPSJHcm91cGVkQmFyQ2hhcnRZYXhpcyI7dmFyIFBDPU1DLE5DPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2xhc3NOYW1lLG49ZS5kYXRhLHI9ZS5jaGlsZHJlbixvPWUubWF4WVZhbHVlLGE9ZS55VGlja3MsaT1lLnlUaWNrc0Zvcm1hdCx1PWUud2lkdGgscz1lLmhlaWdodCxsPWUueE9mZnNldCxjPWUueU9mZnNldCxmPWUudmFsdWVzRm9ybWF0LGQ9ZS5pbm5lclBhZGRpbmcscD1iQygpLnJhbmdlUm91bmQoW2wsdV0pLGg9YkMoKS5wYWRkaW5nKGQpLHk9aWsoKS5yYW5nZVJvdW5kKFtzLWMsY10pLG09bi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pKSx2PW4ubGVuZ3RoP09iamVjdChGLnJhbmdlKShuWzBdLnZhbHVlcy5sZW5ndGgrMSk6W107cC5kb21haW4obSksaC5kb21haW4odikucmFuZ2VSb3VuZChbMCxwLmJhbmR3aWR0aCgpXSk7dmFyIGc9dm9pZCAwPT09bz9zayhuLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQodCl9KSxbXSkpOm87eS5kb21haW4oWzAsZ10pLm5pY2UoKTt2YXIgYj1oLmJhbmR3aWR0aCgpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOlR0KCkoIkdyb3VwZWRCYXJDaGFydCIsdCl9LEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLHt3aWR0aDp1LGhlaWdodDpzfSxyLEUuYS5jcmVhdGVFbGVtZW50KFBDLHt0aWNrczphLHRpY2tzRm9ybWF0Omksc2NhbGU6eSx3aWR0aDp1LGhlaWdodDpzLHhPZmZzZXQ6bCx5T2Zmc2V0OmN9KSxuLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5rZXksbj1lLnZhbHVlcztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtrZXk6dCx0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdChwKHQpLCIsIDApIil9LG4ubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZyIse2tleTpuLGNsYXNzTmFtZToiR3JvdXBlZEJhckNoYXJ0LWJhci1ob2xkZXIifSxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6aChuKSx5OnkoZSksd2lkdGg6YixoZWlnaHQ6cy1jLXkoZSksY2xhc3NOYW1lOiJHcm91cGVkQmFyQ2hhcnQtYmFyLSIuY29uY2F0KHQsIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwZWRCYXJDaGFydC1iYXItaSIpLmNvbmNhdChuKX0pLEUuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0Iix7eDpoKG4pK2IvMix5OnkoZSksY2xhc3NOYW1lOlR0KCkoIkdyb3VwZWRCYXJDaGFydC1iYXItdmFsdWUiLHsiR3JvdXBlZEJhckNoYXJ0LWJhci12YWx1ZS1sYXN0IjpuPjB9KX0sZihlKSkpfSkpLEUuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0Iix7eTpzLHg6YipuLmxlbmd0aC8yLGNsYXNzTmFtZToiR3JvdXBlZEJhckNoYXJ0WGF4aXMtbGFiZWwifSx0KSl9KSksRS5hLmNyZWF0ZUVsZW1lbnQoX0Mse3dpZHRoOnUsaGVpZ2h0OnMseE9mZnNldDpsLHlPZmZzZXQ6Y30pKSl9O05DLmRpc3BsYXlOYW1lPSJHcm91cGVkQmFyQ2hhcnQiLE5DLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsZGF0YTpWLmEuYXJyYXlPZihWLmEuc2hhcGUoe2tleTpWLmEuYW55LmlzUmVxdWlyZWQsdmFsdWVzOlYuYS5hcnJheS5pc1JlcXVpcmVkfSkpLmlzUmVxdWlyZWQsY2hpbGRyZW46Vi5hLmFueSxtYXhZVmFsdWU6Vi5hLm51bWJlcix5VGlja3M6Vi5hLmFycmF5T2YoVi5hLm51bWJlcikuaXNSZXF1aXJlZCx5VGlja3NGb3JtYXQ6Vi5hLmZ1bmMsd2lkdGg6Vi5hLm51bWJlci5pc1JlcXVpcmVkLGhlaWdodDpWLmEubnVtYmVyLmlzUmVxdWlyZWQseE9mZnNldDpWLmEubnVtYmVyLHlPZmZzZXQ6Vi5hLm51bWJlcix2YWx1ZXNGb3JtYXQ6Vi5hLmZ1bmMsaW5uZXJQYWRkaW5nOlYuYS5udW1iZXJ9LE5DLmRlZmF1bHRQcm9wcz17dmFsdWVzRm9ybWF0OmZ1bmN0aW9uKGUpe3JldHVybiBlfSx5VGlja3NGb3JtYXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHhPZmZzZXQ6MCx5T2Zmc2V0OjAsaW5uZXJQYWRkaW5nOjB9O3ZhciBqQz1OQyxMQz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5yZXBsYWNlKC9cclxufFxyfFxuL2csIlxyXG4iKX07ZnVuY3Rpb24gUkMoZSl7cmV0dXJuKFJDPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gSUMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBBQyhlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIEZDKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09UkModCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P3pDKGUpOnR9ZnVuY3Rpb24gQkMoZSl7cmV0dXJuKEJDPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiB6QyhlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gS0MoZSx0KXtyZXR1cm4oS0M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIHFDKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgVkM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47SUModGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gcUMoekMobj1GQyh0aGlzLChlPUJDKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwic3RhdGUiLHtoYXNGb2N1czohMX0pLG59dmFyIG4scixvO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZLQyhlLHQpfSh0LGUpLG49dCwocj1be2tleToiX2hhbmRsZUZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5zZXRTdGF0ZSh7aGFzRm9jdXM6ITB9KX19fSx7a2V5OiJfaGFuZGxlQmx1ciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBmdW5jdGlvbigpe2Uuc2V0U3RhdGUoe2hhc0ZvY3VzOiExfSl9fX0se2tleToiX3JlbmRlckluZGljYXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5saW1pdCxuPWUudmFsdWUscj1lLm1lc3NhZ2Usbz1lLmZvcm1hdE1lc3NhZ2UsYT1lLmZvcm1hdE51bWJlcixpPXRoaXMuc3RhdGUuaGFzRm9jdXMsdT10LUxDKG4/bi50cmltKCk6IiIpLmxlbmd0aDtyZXR1cm4gaXx8dTwwP0UuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6VHQoKSgiQ2hhcmFjdGVyTGltaXRJbmRpY2F0b3ItaW5kaWNhdG9yIix7IkNoYXJhY3RlckxpbWl0SW5kaWNhdG9yLWluZGljYXRvci1lcnJvciI6dTwwfSl9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkNoYXJhY3RlckxpbWl0SW5kaWNhdG9yLW1lc3NhZ2UifSxvKHIse2xpbWl0OnR9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiQ2hhcmFjdGVyTGltaXRJbmRpY2F0b3ItcmVtYWluaW5nIn0sIiAoIi5jb25jYXQoYSh1KSwiKSIpKSk6bnVsbH19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmNoaWxkcmVuLHQ9Xy5DaGlsZHJlbi5vbmx5KGUpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJDaGFyYWN0ZXJMaW1pdEluZGljYXRvciIsb25Gb2N1czp0aGlzLl9oYW5kbGVGb2N1cygpLG9uQmx1cjp0aGlzLl9oYW5kbGVCbHVyKCl9LHRoaXMuX3JlbmRlckluZGljYXRvcigpLHQpfX1dKSYmQUMobi5wcm90b3R5cGUsciksbyYmQUMobixvKSx0fShfLkNvbXBvbmVudCk7cUMoVkMsImRlZmF1bHRQcm9wcyIse2Zvcm1hdE1lc3NhZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmxpbWl0O3JldHVybiIiLmNvbmNhdChlLCIgIikuY29uY2F0KG4pfSxmb3JtYXROdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSkscUMoVkMsInByb3BUeXBlcyIse2NoaWxkcmVuOlYuYS5ub2RlLmlzUmVxdWlyZWQsZm9ybWF0TnVtYmVyOlYuYS5mdW5jLGZvcm1hdE1lc3NhZ2U6Vi5hLmZ1bmMsbGltaXQ6Vi5hLm51bWJlci5pc1JlcXVpcmVkLG1lc3NhZ2U6Vi5hLm9uZU9mVHlwZShbVi5hLnN0cmluZyxWLmEuc2hhcGUoe2RlZmF1bHRNZXNzYWdlOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxkZXNjcmlwdGlvbjpWLmEuc3RyaW5nLGlkOlYuYS5zdHJpbmcuaXNSZXF1aXJlZH0pXSksdmFsdWU6Vi5hLnN0cmluZ30pLHFDKFZDLCJkaXNwbGF5TmFtZSIsIkNoYXJhY3RlckxpbWl0SW5kaWNhdG9yIiksVkMuZGlzcGxheU5hbWU9IkNoYXJhY3RlckxpbWl0SW5kaWNhdG9yIjt2YXIgVUM9VkM7ZnVuY3Rpb24gV0MoZSl7cmV0dXJuKFdDPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gWUMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBIQyhlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIEdDKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09V0ModCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2Z1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSk6dH1mdW5jdGlvbiBRQyhlKXtyZXR1cm4oUUM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIEpDKGUsdCl7cmV0dXJuKEpDPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX12YXIgWkM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBZQyh0aGlzLHQpLEdDKHRoaXMsUUModCkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJkpDKGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJjb21wb25lbnRXaWxsTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pZD1QYigpfX0se2tleToic2V0SW5kZXRlcm1pbmF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0P2Uuc2V0QXR0cmlidXRlKCJkYXRhLWluZGV0ZXJtaW5hdGUiLCIiKTplLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1pbmRldGVybWluYXRlIil9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmNoaWxkcmVuLHI9dC5jbGFzc05hbWUsbz10LmNoZWNrZWQsYT10LmRpc2FibGVkLGk9dC5yZWFkT25seSx1PXQub25DaGFuZ2Uscz10Lm9uQ2xpY2ssbD10LmlzSW5kZXRlcm1pbmF0ZSxjPXQucGFydGlhbCxmPXQub25MYWJlbENsaWNrO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOlR0KCkociwiY2hlY2tib3giKX0sRS5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7aWQ6dGhpcy5pZCx0eXBlOiJjaGVja2JveCIsY2hlY2tlZDpvLHJlYWRPbmx5Omksb25DaGFuZ2U6dSxvbkNsaWNrOnMsZGlzYWJsZWQ6YSxjbGFzc05hbWU6VHQoKSgiY2hlY2tib3gtaW5wdXQiLHtkaXNhYmxlZDphfSkscmVmOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZlLnNldEluZGV0ZXJtaW5hdGUodCxsKX19KSxFLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtvbkNsaWNrOmYsY2xhc3NOYW1lOlR0KCkoe3BhcnRpYWw6Y30pLGh0bWxGb3I6dGhpcy5pZH0sbikpfX1dKSYmSEMobi5wcm90b3R5cGUsciksbyYmSEMobixvKSx0fShfLkNvbXBvbmVudCk7IWZ1bmN0aW9uKGUsdCxuKXt0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bn0oWkMsInByb3BUeXBlcyIse2NoaWxkcmVuOlYuYS5hbnksY2xhc3NOYW1lOlYuYS5zdHJpbmcsY2hlY2tlZDpWLmEuYm9vbCxyZWFkT25seTpWLmEuYm9vbCxkaXNhYmxlZDpWLmEuYm9vbCxvbkNoYW5nZTpWLmEuZnVuYyxvbkNsaWNrOlYuYS5mdW5jLGlzSW5kZXRlcm1pbmF0ZTpWLmEuYm9vbCxwYXJ0aWFsOlYuYS5ib29sLG9uTGFiZWxDbGljazpWLmEuZnVuY30pLFpDLmRpc3BsYXlOYW1lPSJDaGVja2JveCI7dmFyICRDPVpDO2Z1bmN0aW9uIFhDKGUpe3JldHVybihYQz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGV4KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gdHgoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBueChlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PVhDKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9veChlKTp0fWZ1bmN0aW9uIHJ4KGUpe3JldHVybihyeD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gb3goZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIGF4KGUsdCl7cmV0dXJuKGF4PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBpeChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHV4PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuO2V4KHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuIGl4KG94KG49bngodGhpcywoZT1yeCh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSksImdldENoaWxkT3JTaW5nbGVDaGlsZCIsKGZ1bmN0aW9uKCl7dmFyIGU9bi5wcm9wcy5jaGlsZHJlbjtyZXR1cm4gMT09PV8uQ2hpbGRyZW4uY291bnQoZSkmJkFycmF5LmlzQXJyYXkoZSk/ZVswXTplfSkpLGl4KG94KG4pLCJyZW5kZXJIZWxwIiwoZnVuY3Rpb24oZSx0KXtpZihlKXJldHVybiBPYmplY3QoXy5pc1ZhbGlkRWxlbWVudCkoZSk/ZTpFLmEuY3JlYXRlRWxlbWVudChBcCx7bWVzc2FnZTplLGlkOiJoZWxwLSIuY29uY2F0KHQpfSl9KSksaXgob3gobiksInJlbmRlclJlcXVpcmVkIiwoZnVuY3Rpb24oKXtpZihuLnByb3BzLmlzUmVxdWlyZWQpcmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJGb3JtRmllbGQtcmVxdWlyZWQiLHJvbGU6InRvb2x0aXAiLHRpdGxlOiJyZXF1aXJlZCJ9LCIqIil9KSksaXgob3gobiksInJlbmRlckxhYmVsIiwoZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0P0UuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6ZSxjbGFzc05hbWU6IkZvcm1GaWVsZC1sYWJlbCJ9LHQsbi5yZW5kZXJSZXF1aXJlZCgpLG4ucmVuZGVySGVscChyLGUpKTpudWxsfSkpLG59dmFyIG4scixvO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZheChlLHQpfSh0LGUpLG49dCwocj1be2tleToiY29tcG9uZW50V2lsbE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29tcG9uZW50SWQ9UGIoKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jbGFzc05hbWUsbj1lLmVycm9yTWVzc2FnZSxyPWUuaGVscCxvPWUuaWQsYT1lLmxhYmVsLGk9ZS5ub3RlLHU9ZS5sYWJlbEFwcGVuZGl4LHM9Xy5DaGlsZHJlbi5vbmx5KHRoaXMuZ2V0Q2hpbGRPclNpbmdsZUNoaWxkKCkpLGw9IiIuY29uY2F0KHMucHJvcHMuaWR8fHRoaXMuY29tcG9uZW50SWQpLGM9VHQoKSh7ImZvcm0tZ3JvdXAiOiEwLCJGb3JtRmllbGQtZ3JvdXAtaGFzLWVycm9yIjpufSx0KTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2lkOm8sY2xhc3NOYW1lOmN9LHU/RS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRm9ybUZpZWxkLWxhYmVsV3JhcHBlciJ9LHRoaXMucmVuZGVyTGFiZWwobCxhLHIpLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkZvcm1GaWVsZC1sYWJlbEFwcGVuZGl4In0sdSkpOnRoaXMucmVuZGVyTGFiZWwobCxhLHIpLEUuYS5jbG9uZUVsZW1lbnQocyx7aWQ6bCxjbGFzc05hbWU6VHQoKSgiRm9ybUZpZWxkLWZvcm0tY29udHJvbCIscy5wcm9wcy5jbGFzc05hbWUpfSksRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6IkZvcm1GaWVsZC1ub3RlIn0saSksbj9FLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiRm9ybUZpZWxkLWVycm9yTWVzc2FnZSJ9LG4pOm51bGwpfX1dKSYmdHgobi5wcm90b3R5cGUsciksbyYmdHgobixvKSx0fShfLkNvbXBvbmVudCk7aXgodXgsInByb3BUeXBlcyIse2xhYmVsOlYuYS5zdHJpbmcsaGVscDpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5ub2RlXSksbm90ZTpWLmEuc3RyaW5nLGVycm9yTWVzc2FnZTpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5ub2RlXSksY2xhc3NOYW1lOlYuYS5zdHJpbmcsaWQ6Vi5hLnN0cmluZyxpc1JlcXVpcmVkOlYuYS5ib29sLGNoaWxkcmVuOlYuYS5ub2RlLmlzUmVxdWlyZWQsbGFiZWxBcHBlbmRpeDpWLmEubm9kZX0pLHV4LmRpc3BsYXlOYW1lPSJGb3JtRmllbGQiO3ZhciBzeD11eCxseD1uKCJxTkdJIiksY3g9bigiZHZnNyIpLGZ4PW4ubihjeCksZHg9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWNhbGVuZGFyIix2aWV3Qm94OiIwIDAgMTcgMTcifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNS42NCAyLjc5Yy0uMjQ0LS4yNC0uNTMzLS4zNi0uODY2LS4zNmgtMS4yM3YtLjkxMmMwLS40MTctLjE1Mi0uNzc1LS40NTMtMS4wNzJDMTIuNzkuMTUgMTIuNDI4IDAgMTIuMDA1IDBoLS42MTZjLS40MjMgMC0uNzg1LjE1LTEuMDg3LjQ0Ni0uMy4yOTctLjQ1LjY1NS0uNDUgMS4wNzJ2LjkxSDYuMTU1di0uOTFjMC0uNDE3LS4xNS0uNzc1LS40NTItMS4wNzJDNS40MDIuMTUgNS4wNCAwIDQuNjE3IDBINGMtLjQyMiAwLS43ODQuMTUtMS4wODYuNDQ2LS4zLjI5Ny0uNDUyLjY1NS0uNDUyIDEuMDcydi45MWgtMS4yM2MtLjMzNCAwLS42MjMuMTItLjg2Ny4zNi0uMjQzLjI0LS4zNjUuNTI2LS4zNjUuODU1djEyLjE0M2MwIC4zMjguMTIyLjYxMy4zNjUuODU0LjI0NC4yNC41MzMuMzYuODY2LjM2aDEzLjU0NGMuMzMzIDAgLjYyMi0uMTIuODY1LS4zNnMuMzY1LS41MjYuMzY1LS44NTRWMy42NDNjMC0uMzMtLjEyMi0uNjE0LS4zNjYtLjg1NHpNNCAxNS43ODVIMS4yM3YtMi43MzNINHYyLjczM3ptMC0zLjM0SDEuMjNWOS40MUg0djMuMDM2em0wLTMuNjQySDEuMjNWNi4wN0g0djIuNzM0em0tLjIxNS00LjM0Yy0uMDYtLjA2LS4wOS0uMTMyLS4wOS0uMjE0VjEuNTE4YzAtLjA4Mi4wMy0uMTUzLjA5LS4yMTNzLjEzMy0uMDkuMjE2LS4wOWguNjE3Yy4wODMgMCAuMTU1LjAzLjIxNi4wOS4wNi4wNi4wOTIuMTMuMDkyLjIxM1Y0LjI1YzAgLjA4Mi0uMDMuMTUzLS4wOTIuMjEzLS4wNi4wNi0uMTMzLjA5LS4yMTYuMDlINGMtLjA4MiAwLS4xNTQtLjAzLS4yMTUtLjA5em0zLjkxIDExLjMyMkg0LjYxN3YtMi43MzNoMy4wNzh2Mi43MzN6bTAtMy4zNEg0LjYxN1Y5LjQxaDMuMDc4djMuMDM2em0wLTMuNjQySDQuNjE3VjYuMDdoMy4wNzh2Mi43MzR6bTMuNjkzIDYuOTgySDguMzF2LTIuNzMzaDMuMDc4djIuNzMzem0wLTMuMzRIOC4zMVY5LjQxaDMuMDc4djMuMDM2em0wLTMuNjQySDguMzFWNi4wN2gzLjA3OHYyLjczNHptLS4yMTYtNC4zNGMtLjA2LS4wNi0uMDktLjEzMi0uMDktLjIxNFYxLjUxOGMwLS4wODIuMDMtLjE1My4wOS0uMjEzcy4xMzMtLjA5LjIxNi0uMDloLjYxNmMuMDgzIDAgLjE1NS4wMy4yMTYuMDkuMDYuMDYuMDkuMTMuMDkuMjEzVjQuMjVjMCAuMDgyLS4wMy4xNTMtLjA5LjIxM3MtLjEzMy4wOS0uMjE2LjA5aC0uNjE2Yy0uMDgzIDAtLjE1Ni0uMDMtLjIxNi0uMDl6bTMuNjAyIDExLjMyMmgtMi43N3YtMi43MzNoMi43N3YyLjczM3ptMC0zLjM0aC0yLjc3VjkuNDFoMi43N3YzLjAzNnptMC0zLjY0MmgtMi43N1Y2LjA3aDIuNzd2Mi43MzR6IixmaWxsOiIjQkFCN0I2IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O2R4LmRpc3BsYXlOYW1lPSJTVkdDYWxlbmRhciI7dmFyIHB4PWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tY2FsZW5kYXIiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWNhbGVuZGFyIik6Ikljb25zLWNhbGVuZGFyIixvbkNsaWNrOmUub25DbGljayxzdmc6ZHh9KX07cHguZGlzcGxheU5hbWU9IkNhbGVuZGFyIixweC5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBoeD1weCx5eD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tbGVmdC1wYWdpbmF0aW9uLWFycm93Iix3aWR0aDoiOHB4IixoZWlnaHQ6IjEzcHgiLHZpZXdCb3g6IjAgMCA4IDEzIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNLjEzNSA2LjUzMkMuMDQ1IDYuNDY1IDAgNi4zNTIgMCA2LjI2MmMwLS4xMTIuMDQ1LS4yMjQuMTM1LS4yOUw1Ljk3LjEzNEM2LjA2LjA0NSA2LjE1IDAgNi4yNjIgMGMuMDkgMCAuMjAyLjA0NS4yOTIuMTM1bC42MDYuNjI4Yy4wOS4wNjguMTM1LjE4LjEzNS4yNyAwIC4xMTItLjA0NS4yMjQtLjEzNS4yOWwtNC45MTYgNC45NCA0LjkxNiA0LjkxNWMuMDkuMDkuMTM1LjE4LjEzNS4yOTIgMCAuMTEyLS4wNDUuMjAyLS4xMzUuMjkybC0uNjA2LjYwNmMtLjA5LjA5LS4yMDIuMTM0LS4yOTIuMTM0LS4xMTIgMC0uMjAyLS4wNDQtLjI5Mi0uMTM0TC4xMzUgNi41MzJ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O3l4LmRpc3BsYXlOYW1lPSJTVkdMZWZ0UGFnaW5hdGlvbkFycm93Ijt2YXIgbXg9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1sZWZ0LXBhZ2luYXRpb24tYXJyb3ciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWxlZnQtcGFnaW5hdGlvbi1hcnJvdyIpOiJJY29ucy1sZWZ0LXBhZ2luYXRpb24tYXJyb3ciLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp5eH0pfTtteC5kaXNwbGF5TmFtZT0iTGVmdFBhZ2luYXRpb25BcnJvdyIsbXgucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgdng9bXgsZ3g9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXJpZ2h0LXBhZ2luYXRpb24tYXJyb3ciLHdpZHRoOiI4cHgiLGhlaWdodDoiMTNweCIsdmlld0JveDoiMCAwIDggMTMifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xLjMyNSAxMi4zNjhMNy4xNiA2LjUzMmMuMDktLjA2Ny4xMzUtLjE4LjEzNS0uMjcgMC0uMTEyLS4wNDUtLjIyNC0uMTM1LS4yOUwxLjMyNS4xMzRDMS4yMzUuMDQ1IDEuMTQ1IDAgMS4wMzMgMCAuOTQzIDAgLjgzLjA0NS43NC4xMzVMLjEzNi43NjNDLjA0NS44MyAwIC45NDMgMCAxLjAzM2MwIC4xMTIuMDQ1LjIyNC4xMzUuMjlsNC45MTYgNC45NC00LjkxNSA0LjkxNWMtLjA5LjA5LS4xMzUuMTgtLjEzNS4yOTIgMCAuMTEyLjA0NS4yMDIuMTM1LjI5MmwuNjA2LjYwNmMuMDkuMDkuMjAzLjEzNC4yOTMuMTM0LjExMiAwIC4yMDItLjA0NC4yOTItLjEzNCIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtneC5kaXNwbGF5TmFtZT0iU1ZHUmlnaHRQYWdpbmF0aW9uQXJyb3ciO3ZhciBieD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXJpZ2h0LXBhZ2luYXRpb24tYXJyb3ciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXJpZ2h0LXBhZ2luYXRpb24tYXJyb3ciKToiSWNvbnMtcmlnaHQtcGFnaW5hdGlvbi1hcnJvdyIsb25DbGljazplLm9uQ2xpY2ssc3ZnOmd4fSl9O2J4LmRpc3BsYXlOYW1lPSJSaWdodFBhZ2luYXRpb25BcnJvdyIsYngucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgd3g9Yng7ZnVuY3Rpb24gX3goZSl7cmV0dXJuKF94PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gRXgoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfWZ1bmN0aW9uIE94KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24ga3goZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBDeChlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PV94KHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9TeChlKTp0fWZ1bmN0aW9uIHh4KGUpe3JldHVybih4eD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gU3goZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIER4KGUsdCl7cmV0dXJuKER4PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBUeChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIE14PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuO094KHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjthKyspb1thXT1hcmd1bWVudHNbYV07cmV0dXJuIFR4KFN4KG49Q3godGhpcywoZT14eCh0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobykpKSksInN0YXRlIix7Zm9jdXNlZDohMX0pLFR4KFN4KG4pLCJpc091dHNpZGVSYW5nZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PW4ucHJvcHMscj10Lm1pbkRhdGUsbz10Lm1heERhdGU7cmV0dXJuIHImJm8/IWUuaXNCZXR3ZWVuKHIsbywiZGF5IiwiW10iKTpyPyFlLmlzU2FtZU9yQWZ0ZXIociwiZGF5Iik6ISFvJiYhZS5pc1NhbWVPckJlZm9yZShvLCJkYXkiKX0pKSxUeChTeChuKSwidG9nZ2xlIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnN0YXRlLmZvY3VzZWQ7bi5zZXRTdGF0ZSh7Zm9jdXNlZDohZX0pLCFlJiZuLmRhdGVJbnB1dCYmbi5kYXRlSW5wdXQuZm9jdXMoKX0pKSxUeChTeChuKSwiZm9jdXMiLChmdW5jdGlvbigpe24uZGF0ZUlucHV0JiZuLmRhdGVJbnB1dC5mb2N1cygpLG4uc2V0U3RhdGUoe2ZvY3VzZWQ6ITB9KX0pKSxUeChTeChuKSwiYmx1ciIsKGZ1bmN0aW9uKCl7bi5kYXRlSW5wdXQmJm4uZGF0ZUlucHV0LmJsdXIoKSxuLnNldFN0YXRlKHtmb2N1c2VkOiExfSl9KSksVHgoU3gobiksImJpbmRSZWYiLChmdW5jdGlvbihlKXtuLmRhdGVJbnB1dD1lfSkpLG59dmFyIG4scixvO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZEeChlLHQpfSh0LGUpLG49dCwocj1be2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm5hbWUsbj1lLmRhdGUscj1FeChlLFsibmFtZSIsImRhdGUiXSksbz10aGlzLnN0YXRlLmZvY3VzZWQsYT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe1R4KGUsdCxuW3RdKX0pKX1yZXR1cm4gZX0oe25hdlByZXY6RS5hLmNyZWF0ZUVsZW1lbnQodngsbnVsbCksbmF2TmV4dDpFLmEuY3JlYXRlRWxlbWVudCh3eCxudWxsKSxvbkZvY3VzQ2hhbmdlOnRoaXMudG9nZ2xlLGlzT3V0c2lkZVJhbmdlOnRoaXMuaXNPdXRzaWRlUmFuZ2UsZGF0ZTpuLGZvY3VzZWQ6b30scik7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGZ4LmEse29uQ2xpY2tPdXRzaWRlOnRoaXMuYmx1cn0sRS5hLmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iLHtjbGFzc05hbWU6IkRhdGVJbnB1dC1zZWN0aW9uIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRGF0ZUlucHV0LWNvbnRhaW5lciJ9LEUuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLHJlZjp0aGlzLmJpbmRSZWYsbmFtZTp0LHZhbHVlOm4mJm4uZm9ybWF0KCJNTS9ERC9ZWVlZIiksY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLG9uRm9jdXM6dGhpcy5mb2N1c30pLEUuYS5jcmVhdGVFbGVtZW50KGh4LG51bGwpLG8mJkUuYS5jcmVhdGVFbGVtZW50KGx4LkRheVBpY2tlclNpbmdsZURhdGVDb250cm9sbGVyLGEpKSkpfX1dKSYma3gobi5wcm90b3R5cGUsciksbyYma3gobixvKSx0fShfLkNvbXBvbmVudCk7ZnVuY3Rpb24gUHgoZSl7cmV0dXJuKFB4PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gTngoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfWZ1bmN0aW9uIGp4KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gTHgoZSl7cmV0dXJuKEx4PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBSeChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gSXgoZSx0KXtyZXR1cm4oSXg9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIEF4KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1UeChNeCwicHJvcFR5cGVzIix7bmFtZTpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsZGF0ZTpWLmEuaW5zdGFuY2VPZihtbC5hKSxtaW5EYXRlOlYuYS5pbnN0YW5jZU9mKG1sLmEpLG1heERhdGU6Vi5hLmluc3RhbmNlT2YobWwuYSksb25EYXRlQ2hhbmdlOlYuYS5mdW5jfSksTXguZGlzcGxheU5hbWU9IlNpbmdsZURhdGVJbnB1dCI7dmFyIEZ4PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksbj1mdW5jdGlvbihlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PVB4KHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9SeChlKTp0fSh0aGlzLEx4KHQpLmNhbGwodGhpcyxlKSksQXgoUngobiksInN0YXRlIix7Zm9jdXNlZElucHV0Om51bGwsc3RhcnQ6bnVsbCxlbmQ6bnVsbH0pLEF4KFJ4KG4pLCJvbkRhdGVzQ2hhbmdlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcyxyPXQub25EYXRlc0NoYW5nZSxvPXQuc2VsZWN0TW9kZSxhPSJzdGFydERhdGUiPT09bi5zdGF0ZS5mb2N1c2VkSW5wdXQ7aWYoYT9uLmZvY3VzRW5kKCk6bi5ibHVyKCksImRheSIhPT1vKXt2YXIgaT0oYT9lLnN0YXJ0RGF0ZTplLmVuZERhdGUpLmNsb25lKCk7aWYoInJlbGVhc2Ugd2VlayI9PT1vKXt2YXIgdT1pLmlzb1dlZWtkYXkoKT49NTthP2kuaXNvV2Vla2RheSh1PzU6LTIpOmkuaXNvV2Vla2RheSh1PzExOjQpfWVsc2V7aVthPyJzdGFydE9mIjoiZW5kT2YiXShvKX1hP2Uuc3RhcnREYXRlPWk6ZS5lbmREYXRlPWl9cihlKX0pKSxBeChSeChuKSwiaXNPdXRzaWRlUmFuZ2UiLChmdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLHI9dC5taW5EYXRlLG89dC5tYXhEYXRlO3JldHVybiByJiZvPyFlLmlzQmV0d2VlbihyLG8sImRheSIsIltdIik6cj8hZS5pc1NhbWVPckFmdGVyKHIsImRheSIpOiEhbyYmIWUuaXNTYW1lT3JCZWZvcmUobywiZGF5Iil9KSksQXgoUngobiksInRvZ2dsZSIsKGZ1bmN0aW9uKCl7dmFyIGU9bi5zdGF0ZS5mb2N1c2VkSW5wdXQ7bi5zZXRTdGF0ZShlP3tmb2N1c2VkSW5wdXQ6bnVsbCxzdGFydDpudWxsLGVuZDpudWxsfTp7Zm9jdXNlZElucHV0OiJzdGFydERhdGUiLGVuZDpudWxsfSksIWUmJm4uc3RhcnREYXRlSW5wdXQmJm4uc3RhcnREYXRlSW5wdXQuZm9jdXMoKX0pKSxBeChSeChuKSwiZm9jdXMiLChmdW5jdGlvbigpe24udXBkYXRlRGF0ZXNGcm9tU3RhdGUoKSxuLnN0YXJ0RGF0ZUlucHV0JiZuLnN0YXJ0RGF0ZUlucHV0LmZvY3VzKCksbi5zZXRTdGF0ZSh7Zm9jdXNlZElucHV0OiJzdGFydERhdGUiLGVuZDpudWxsfSl9KSksQXgoUngobiksImZvY3VzRW5kIiwoZnVuY3Rpb24oKXtuLnVwZGF0ZURhdGVzRnJvbVN0YXRlKCksbi5lbmREYXRlSW5wdXQmJm4uZW5kRGF0ZUlucHV0LmZvY3VzKCksbi5zZXRTdGF0ZSh7Zm9jdXNlZElucHV0OiJlbmREYXRlIixzdGFydDpudWxsfSl9KSksQXgoUngobiksImJsdXIiLChmdW5jdGlvbigpe24udXBkYXRlRGF0ZXNGcm9tU3RhdGUoKSxuLnN0YXJ0RGF0ZUlucHV0JiZuLnN0YXJ0RGF0ZUlucHV0LmJsdXIoKSxuLmVuZERhdGVJbnB1dCYmbi5lbmREYXRlSW5wdXQuYmx1cigpLG4uc2V0U3RhdGUoe2ZvY3VzZWRJbnB1dDpudWxsLHN0YXJ0Om51bGwsZW5kOm51bGx9KX0pKSxBeChSeChuKSwiaGFuZGxlTWFudWFsbHlDaGFuZ2UiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYobi5wcm9wcy5pc01hbnVhbGx5RWRpdGFibGUmJiFuLnByb3BzWyIiLmNvbmNhdChlLCJGb3JtYXR0ZXIiKV0pe3ZhciByPU9iamVjdChGLmdldCkodCxbInRhcmdldCIsInZhbHVlIl0sdCk7bi5zZXRTdGF0ZShBeCh7fSxlLHIpKX19fSkpLEF4KFJ4KG4pLCJoYW5kbGVLZXlEb3duIiwoZnVuY3Rpb24oZSl7aWYobi5wcm9wcy5rZXlib2FyZE5hdmlnYXRpb25FbmFibGVkJiZuLmRheVBpY2tlclJhbmdlQ29udHJvbGxlcil7dmFyIHQ9bi5kYXlQaWNrZXJSYW5nZUNvbnRyb2xsZXIuZGF5UGlja2VyO3QmJnQub25LZXlEb3duKGUpfX0pKSxBeChSeChuKSwidXBkYXRlRGF0ZXNGcm9tU3RhdGUiLChmdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMsdD1lLmlzTWFudWFsbHlFZGl0YWJsZSxyPWUuc3RhcnREYXRlLG89ZS5lbmREYXRlLGE9ZS5vbkRhdGVzQ2hhbmdlLGk9ZS5kYXRlRm9ybWF0LHU9bi5zdGF0ZSxzPXUuZm9jdXNlZElucHV0LGw9dS5zdGFydCxjPXUuZW5kO2lmKHQmJnMpe3ZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtpZihudWxsIT09dClpZih0KXt2YXIgcj1tbCgpKHQsaSk7ci5pc1ZhbGlkKCkmJihuPXIpfWVsc2Ugbj1udWxsO3JldHVybiBufSxkPXtzdGFydERhdGU6ZihyLGwpLGVuZERhdGU6ZihvLGMpfTtkLnN0YXJ0RGF0ZSYmZC5lbmREYXRlJiYoInN0YXJ0RGF0ZSI9PT1zJiZkLnN0YXJ0RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLmlzQWZ0ZXIoZC5lbmREYXRlLmNsb25lKCkuc3RhcnRPZigiZGF5IikpP2QuZW5kRGF0ZT1udWxsOiJlbmREYXRlIj09PXMmJmQuZW5kRGF0ZS5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLmlzQmVmb3JlKGQuc3RhcnREYXRlLmNsb25lKCkuc3RhcnRPZigiZGF5IikpJiYoZC5zdGFydERhdGU9bnVsbCkpLGEoZCl9fSkpLG4uZGF5UGlja2VyUmFuZ2VDb250cm9sbGVyPU9iamVjdChfLmNyZWF0ZVJlZikoKSxufXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmSXgoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuc3RhcnROYW1lLHI9dC5lbmROYW1lLG89dC5zdGFydERhdGUsYT10LmVuZERhdGUsaT10LmRhdGVGb3JtYXQsdT10LnN0YXJ0UGxhY2Vob2xkZXIscz10LmVuZFBsYWNlaG9sZGVyLGw9dC5zdGFydEZvcm1hdHRlcixjPXQuZW5kRm9ybWF0dGVyLGY9TngodCxbInN0YXJ0TmFtZSIsImVuZE5hbWUiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZGF0ZUZvcm1hdCIsInN0YXJ0UGxhY2Vob2xkZXIiLCJlbmRQbGFjZWhvbGRlciIsInN0YXJ0Rm9ybWF0dGVyIiwiZW5kRm9ybWF0dGVyIl0pLGQ9dGhpcy5zdGF0ZSxwPWQuZm9jdXNlZElucHV0LGg9ZC5zdGFydCx5PWQuZW5kLG09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pOyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSksci5mb3JFYWNoKChmdW5jdGlvbih0KXtBeChlLHQsblt0XSl9KSl9cmV0dXJuIGV9KHtyZWY6dGhpcy5kYXlQaWNrZXJSYW5nZUNvbnRyb2xsZXIsbmF2UHJldjpFLmEuY3JlYXRlRWxlbWVudCh2eCxudWxsKSxuYXZOZXh0OkUuYS5jcmVhdGVFbGVtZW50KHd4LG51bGwpLGtlZXBPcGVuT25EYXRlU2VsZWN0OiEwLG51bWJlck9mTW9udGhzOjIsaXNPdXRzaWRlUmFuZ2U6dGhpcy5pc091dHNpZGVSYW5nZSxzdGFydERhdGU6byxlbmREYXRlOmEsZm9jdXNlZElucHV0OnB9LE9iamVjdChGLm9taXQpKGYsImlzTWFudWFsbHlFZGl0YWJsZSIsIm1pbkRhdGUiLCJtYXhEYXRlIiwia2V5Ym9hcmROYXZpZ2F0aW9uRW5hYmxlZCIsInNlbGVjdE1vZGUiKSx7b25EYXRlc0NoYW5nZTp0aGlzLm9uRGF0ZXNDaGFuZ2V9KSx2PWg7bnVsbD09PXYmJih2PWw/bChvLGkpOm8/by5mb3JtYXQoaSk6IiIpO3ZhciBnPXk7cmV0dXJuIG51bGw9PT1nJiYoZz1jP2MoYSxpKTphP2EuZm9ybWF0KGkpOiIiKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJEYXlQaWNrZXIifSxFLmEuY3JlYXRlRWxlbWVudChmeC5hLHtvbkNsaWNrT3V0c2lkZTp0aGlzLmJsdXJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJEYXRlSW5wdXQtc2VjdGlvbiJ9LEUuYS5jcmVhdGVFbGVtZW50KGViLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoUmcse3hzOjYsY2xhc3NOYW1lOiJEYXRlSW5wdXQtY29udGFpbmVyIGluLXJhbmdlIGRhc2gtYWZ0ZXIifSxFLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixyZWY6ZnVuY3Rpb24odCl7cmV0dXJuIGUuc3RhcnREYXRlSW5wdXQ9dH0sbmFtZTpuLHZhbHVlOnYsb25DaGFuZ2U6dGhpcy5oYW5kbGVNYW51YWxseUNoYW5nZSgic3RhcnQiKSxjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsb25Gb2N1czp0aGlzLmZvY3VzLHBsYWNlaG9sZGVyOnUsb25LZXlEb3duOnRoaXMuaGFuZGxlS2V5RG93bn0pLEUuYS5jcmVhdGVFbGVtZW50KGh4LG51bGwpKSxFLmEuY3JlYXRlRWxlbWVudChSZyx7eHM6NixjbGFzc05hbWU6IkRhdGVJbnB1dC1jb250YWluZXIgaW4tcmFuZ2UifSxFLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixyZWY6ZnVuY3Rpb24odCl7cmV0dXJuIGUuZW5kRGF0ZUlucHV0PXR9LG5hbWU6cix2YWx1ZTpnLG9uQ2hhbmdlOnRoaXMuaGFuZGxlTWFudWFsbHlDaGFuZ2UoImVuZCIpLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixvbkZvY3VzOnRoaXMuZm9jdXNFbmQscGxhY2Vob2xkZXI6cyxvbktleURvd246dGhpcy5oYW5kbGVLZXlEb3dufSksRS5hLmNyZWF0ZUVsZW1lbnQoaHgsbnVsbCkpKSxwJiZFLmEuY3JlYXRlRWxlbWVudChseC5EYXlQaWNrZXJSYW5nZUNvbnRyb2xsZXIsbSkpKSl9fV0pJiZqeChuLnByb3RvdHlwZSxyKSxvJiZqeChuLG8pLHR9KF8uQ29tcG9uZW50KTtBeChGeCwicHJvcFR5cGVzIix7c3RhcnROYW1lOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxlbmROYW1lOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxzdGFydERhdGU6Vi5hLmluc3RhbmNlT2YobWwuYSksZW5kRGF0ZTpWLmEuaW5zdGFuY2VPZihtbC5hKSxtaW5EYXRlOlYuYS5pbnN0YW5jZU9mKG1sLmEpLG1heERhdGU6Vi5hLmluc3RhbmNlT2YobWwuYSksb25EYXRlc0NoYW5nZTpWLmEuZnVuYyxkYXRlRm9ybWF0OlYuYS5zdHJpbmcsaXNNYW51YWxseUVkaXRhYmxlOlYuYS5ib29sLHN0YXJ0UGxhY2Vob2xkZXI6Vi5hLnN0cmluZyxlbmRQbGFjZWhvbGRlcjpWLmEuc3RyaW5nLGtleWJvYXJkTmF2aWdhdGlvbkVuYWJsZWQ6Vi5hLmJvb2wsc2VsZWN0TW9kZTpWLmEub25lT2YoWyJkYXkiLCJ3ZWVrIiwicmVsZWFzZSB3ZWVrIiwibW9udGgiLCJxdWFydGVyIiwieWVhciJdKSxzdGFydEZvcm1hdHRlcjpWLmEuZnVuYyxlbmRGb3JtYXR0ZXI6Vi5hLmZ1bmN9KSxBeChGeCwiZGVmYXVsdFByb3BzIix7c3RhcnREYXRlOm51bGwsZW5kRGF0ZTpudWxsLG1pbkRhdGU6bnVsbCxtYXhEYXRlOm51bGwsb25EYXRlc0NoYW5nZTpNdCxkYXRlRm9ybWF0OiJNTS9ERC9ZWVlZIixpc01hbnVhbGx5RWRpdGFibGU6ITEsc3RhcnRQbGFjZWhvbGRlcjpudWxsLGVuZFBsYWNlaG9sZGVyOm51bGwsa2V5Ym9hcmROYXZpZ2F0aW9uRW5hYmxlZDohMSxzZWxlY3RNb2RlOiJkYXkiLHN0YXJ0Rm9ybWF0dGVyOm51bGwsZW5kRm9ybWF0dGVyOm51bGx9KSxGeC5kaXNwbGF5TmFtZT0iUmFuZ2VEYXRlSW5wdXQiO3ZhciBCeD1mdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLnZhbHVlLHI9ZS5kaXNhYmxlZCxvPWUub25DaGFuZ2UsYT1lLmNoZWNrZWQsaT1lLmxhYmVsLHU9ZS5hZGRvbixzPWUubGFiZWxDbGFzc05hbWUsbD1lLmxhYmVsQ29udGVudHNDbGFzc05hbWUsYz1lLmlucHV0Q2xhc3NOYW1lO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJSYWRpb0J1dHRvbi13cmFwcGVyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7Y2xhc3NOYW1lOlR0KCkoIlJhZGlvQnV0dG9uLWxhYmVsIixzKX0sRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6VHQoKShsLHsiT3BtLWRpc2FibGVkIjpyfSl9LEUuYS5jcmVhdGVFbGVtZW50KE1nLHt0eXBlOiJyYWRpbyIsY2xhc3NOYW1lOlR0KCkoIlJhZGlvQnV0dG9uLXJhZGlvIixjKSxuYW1lOnQsdmFsdWU6bixvbkNoYW5nZTpvLGNoZWNrZWQ6YSxkaXNhYmxlZDpyfSksaSksdSkpfTtCeC5kaXNwbGF5TmFtZT0iUmFkaW9CdXR0b24iLEJ4LnByb3BUeXBlcz17YWRkb246Vi5hLmFueSxjaGVja2VkOlYuYS5ib29sLmlzUmVxdWlyZWQsZGlzYWJsZWQ6Vi5hLmJvb2wsaW5wdXRDbGFzc05hbWU6Vi5hLnN0cmluZyxsYWJlbDpWLmEuYW55LGxhYmVsQ2xhc3NOYW1lOlYuYS5zdHJpbmcsbGFiZWxDb250ZW50c0NsYXNzTmFtZTpWLmEuc3RyaW5nLG5hbWU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2hhbmdlOlYuYS5mdW5jLmlzUmVxdWlyZWQsdmFsdWU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkfTt2YXIgeng9QngsS3g9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuaWQscj1lLmNsYXNzTmFtZTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpUdCgpKCJSYWRpb0J1dHRvbkdyb3VwIixyKSxpZDpufSx0KX07S3guZGlzcGxheU5hbWU9IlJhZGlvQnV0dG9uR3JvdXAiLEt4LnByb3BUeXBlcz17Y2hpbGRyZW46Vi5hLmFycmF5T2YoKGZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoZVt0XS50eXBlIT09engpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHByb3AgJyIuY29uY2F0KG8sIicgc3VwcGxpZWQgdG8gJyIpLmNvbmNhdChuLCInIFZhbGlkYXRpb24gZmFpbGVkLiIpKX0pKS5pc1JlcXVpcmVkLGlkOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxjbGFzc05hbWU6Vi5hLnN0cmluZ307dmFyIHF4PUt4LFZ4PW4oIjE5N3MiKSxVeD1uLm4oVngpO2Z1bmN0aW9uIFd4KCl7cmV0dXJuKFd4PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWXgoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciBIeD1mdW5jdGlvbihlKXt2YXIgdD1lLnFhaWQsbj1ZeChlLFsicWFpZCJdKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2lkOnR9LEUuYS5jcmVhdGVFbGVtZW50KFV4LmEsV3goe2NsYXNzTmFtZTpUdCgpKCJUYWdzSW5wdXQiLHsiVGFnc0lucHV0LWRpc2FibGVkIjpuLmRpc2FibGVkfSl9LG4pKSl9O0h4LmRpc3BsYXlOYW1lPSJUYWdzSW5wdXQiLEh4LnByb3BUeXBlcz17Zm9jdXNlZENsYXNzTmFtZTpWLmEuc3RyaW5nLGFkZEtleXM6Vi5hLmFycmF5LGFkZE9uQmx1cjpWLmEuYm9vbCxhZGRPblBhc3RlOlYuYS5ib29sLGN1cnJlbnRWYWx1ZTpWLmEuc3RyaW5nLGlucHV0VmFsdWU6Vi5hLnN0cmluZyxpbnB1dFByb3BzOlYuYS5vYmplY3Qsb25DaGFuZ2U6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxvbkNoYW5nZUlucHV0OlYuYS5mdW5jLHJlbW92ZUtleXM6Vi5hLmFycmF5LHJlbmRlcklucHV0OlYuYS5mdW5jLHJlbmRlclRhZzpWLmEuZnVuYyxyZW5kZXJMYXlvdXQ6Vi5hLmZ1bmMscGFzdGVTcGxpdDpWLmEuZnVuYyx0YWdQcm9wczpWLmEub2JqZWN0LG9ubHlVbmlxdWU6Vi5hLmJvb2wsdmFsdWU6Vi5hLmFycmF5LmlzUmVxdWlyZWQsbWF4VGFnczpWLmEubnVtYmVyLHZhbGlkYXRpb25SZWdleDpWLmEuaW5zdGFuY2VPZihSZWdFeHApLGRpc2FibGVkOlYuYS5ib29sLHRhZ0Rpc3BsYXlQcm9wOlYuYS5zdHJpbmcscWFpZDpWLmEuc3RyaW5nfSxIeC5kZWZhdWx0UHJvcHM9e2ZvY3VzZWRDbGFzc05hbWU6IlRhZ3NJbnB1dC1mb2N1c2VkIixpbnB1dFByb3BzOntjbGFzc05hbWU6IlRhZ3NJbnB1dC1pbnB1dCIscGxhY2Vob2xkZXI6IiJ9LHRhZ1Byb3BzOntjbGFzc05hbWU6IlRhZ3NJbnB1dC10YWciLGNsYXNzTmFtZVJlbW92ZToiVGFnc0lucHV0LXJlbW92ZSJ9fTt2YXIgR3g9SHgsUXg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5oYW5kbGVDbGljayxuPWUuYnV0dG9uQ29udGVudCxyPWUuZGlzYWJsZWQsbz1lLmRpc2FibGVkTGF5b3V0LGE9ZS5ub3RlO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJGdWxsV2lkdGhCdXR0b24ifSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJGdWxsV2lkdGhCdXR0b24tYnV0dG9uLWNvbnRhaW5lciJ9LHImJm8/RS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRnVsbFdpZHRoQnV0dG9uLWRpc2FibGVkLWxheW91dCJ9LG8pOkUuYS5jcmVhdGVFbGVtZW50KHloLHtjbGFzc05hbWU6IkZ1bGxXaWR0aEJ1dHRvbi1idXR0b24iLG9uQ2xpY2s6dCxkaXNhYmxlZDpyfSxuKSksYSYmRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRnVsbFdpZHRoQnV0dG9uLWFkZC1ub3RlIn0sYSkpfTtReC5kaXNwbGF5TmFtZT0iRnVsbFdpZHRoQnV0dG9uIixReC5kZWZhdWx0UHJvcHM9e2Rpc2FibGVkOiExfSxReC5wcm9wVHlwZXM9e2hhbmRsZUNsaWNrOlYuYS5mdW5jLmlzUmVxdWlyZWQsYnV0dG9uQ29udGVudDpWLmEub25lT2ZUeXBlKFtWLmEuZWxlbWVudCxWLmEuc3RyaW5nXSkuaXNSZXF1aXJlZCxub3RlOlYuYS5zdHJpbmcsZGlzYWJsZWQ6Vi5hLmJvb2wsZGlzYWJsZWRMYXlvdXQ6Vi5hLmVsZW1lbnR9O3ZhciBKeD1ReCxaeD1mdW5jdGlvbihlKXt2YXIgdD1lLmlzTG9hZGluZyxuPWUuY2hpbGRyZW47cmV0dXJuIHQ/RS5hLmNyZWF0ZUVsZW1lbnQoTmssbnVsbCk6bn07WngucHJvcFR5cGVzPXtpc0xvYWRpbmc6Vi5hLmJvb2wuaXNSZXF1aXJlZCxjaGlsZHJlbjpWLmEub2JqZWN0LmlzUmVxdWlyZWR9O3ZhciAkeD1aeCxYeD1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5sb2dvLHI9ZS5sb2dvSHJlZjtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiTWFpbk5hdmlnYXRpb24ifSxFLmEuY3JlYXRlRWxlbWVudChqbyx7YnNDbGFzczoibmF2aWdhdGlvbiIsY2xhc3NOYW1lOiJoZWFkZXItbWFpbiIsY29tcG9uZW50Q2xhc3M6ImhlYWRlciJ9LEUuYS5jcmVhdGVFbGVtZW50KGpvLkJyYW5kLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoImEiLHtocmVmOnIsY2xhc3NOYW1lOiJsb2dvIn0sbnx8RS5hLmNyZWF0ZUVsZW1lbnQoZ2ksbnVsbCkpKSx0KSl9O1h4LmRpc3BsYXlOYW1lPSJNYWluTmF2aWdhdGlvbiIsWHgucHJvcFR5cGVzPXtjaGlsZHJlbjpWLmEub25lT2ZUeXBlKFtWLmEuYXJyYXksVi5hLm9iamVjdF0pLGxvZ29IcmVmOlYuYS5zdHJpbmcsbG9nbzpWLmEub2JqZWN0fSxYeC5kZWZhdWx0UHJvcHM9e2xvZ29IcmVmOiIvIixsb2dvOm51bGx9O3ZhciBlUz1YeCx0Uz1mdW5jdGlvbihlKXt2YXIgdD1lLmV2ZW50S2V5LG49ZS5ocmVmLHI9ZS5jaGlsZHJlbixvPWUub25DbGljayxhPWUuY2xhc3NOYW1lO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiYSIse2hyZWY6bixjbGFzc05hbWU6YSxvbkNsaWNrOmZ1bmN0aW9uKGUpe28mJihlLnByZXZlbnREZWZhdWx0KCksbyh0LGUpKX19LHIpfTt0Uy5kaXNwbGF5TmFtZT0iU3ViTmF2aWdhdGlvbkl0ZW0iLHRTLnByb3BUeXBlcz17ZXZlbnRLZXk6Vi5hLmFueSxocmVmOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxjaGlsZHJlbjpWLmEuYW55LG9uQ2xpY2s6Vi5hLmZ1bmMsY2xhc3NOYW1lOlYuYS5zdHJpbmd9O3ZhciBuUz10UyxyUz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5vblNlbGVjdDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiU3ViTmF2aWdhdGlvbiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJuYXYiLHtjbGFzc05hbWU6Im1haW4tc3VibmF2In0sXy5DaGlsZHJlbi5tYXAodCwoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChfLmNsb25lRWxlbWVudCkoZSx7b25DbGljazpufSl9KSkpKX07clMuZGlzcGxheU5hbWU9IlN1Yk5hdmlnYXRpb24iLHJTLnByb3BUeXBlcz17Y2hpbGRyZW46Vi5hLmFycmF5T2YoKGZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoZVt0XS50eXBlIT09blMpcmV0dXJuIG5ldyBFcnJvcigiSW52YWxpZCBwcm9wICciLmNvbmNhdChvLCInIHN1cHBsaWVkIHRvICciKS5jb25jYXQobiwiJyBWYWxpZGF0aW9uIGZhaWxlZC4iKSl9KSkuaXNSZXF1aXJlZCxvblNlbGVjdDpWLmEuZnVuY307dmFyIG9TPXJTO2Z1bmN0aW9uIGFTKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgaVM9ImVycm9yIix1Uz0iaW5jb21wbGV0ZSIsc1M9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWF0dGVudGlvbiIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNy40ODQ1NjY1OCwzLjM2MDkwODM0IEM3Ljc3Mzg0NjAxLDIuODg1MjI3NDggOC4yMzYxNTM1NCwyLjg3NDE5ODU2IDguNTMyMTQwMDgsMy4zNjA5MDgzNCBMMTMuODg1MTUxOCwxMi4xNjMyMTE0IEMxNC4xNzQ0MzEyLDEyLjYzODg5MjMgMTMuOTUzMzM4MSwxMy4wMjQ1MDc4IDEzLjQwNDQ1MjEsMTMuMDI0NTA3OCBMMi42MTIyNTQ1MSwxMy4wMjQ1MDc4IEMyLjA1NzQ5MjAxLDEzLjAyNDUwNzggMS44MzU1NjgzNiwxMi42NDk5MjEyIDIuMTMxNTU0ODksMTIuMTYzMjExNCBMNy40ODQ1NjY1OCwzLjM2MDkwODM0IFogTTgsMTIgQzguNTUyMjg0NzUsMTIgOSwxMS41NTIyODQ3IDksMTEgQzksMTAuNDQ3NzE1MyA4LjU1MjI4NDc1LDEwIDgsMTAgQzcuNDQ3NzE1MjUsMTAgNywxMC40NDc3MTUzIDcsMTEgQzcsMTEuNTUyMjg0NyA3LjQ0NzcxNTI1LDEyIDgsMTIgWiBNNyw2IEw3LDkgTDksOSBMOSw2IEw3LDYgWiJ9KSl9O3NTLmRpc3BsYXlOYW1lPSJTVkdBdHRlbnRpb24iO3ZhciBsUz1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWF0dGVudGlvbiIsY2xhc3NOYW1lOlR0KCkoIkljb25zLWF0dGVudGlvbiIsYVMoe30sIiIuY29uY2F0KCJJY29ucy1hdHRlbnRpb24iLCItIikuY29uY2F0KGUuc3RhdHVzKSxudWxsIT09ZS5zdGF0dXMmJnZvaWQgMCE9PWUuc3RhdHVzKSxlLmNsYXNzTmFtZSksb25DbGljazplLm9uQ2xpY2ssc3ZnOnNTfSl9O2xTLmRpc3BsYXlOYW1lPSJBdHRlbnRpb24iLGxTLnByb3BUeXBlcz17c3RhdHVzOlYuYS5vbmVPZihbaVMsdVNdKS5pc1JlcXVpcmVkLGNsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBjUz1sUztmdW5jdGlvbiBmUyhlKXtyZXR1cm4oZlM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBkUyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHBTKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gaFMoZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1mUyh0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/bVMoZSk6dH1mdW5jdGlvbiB5UyhlKXtyZXR1cm4oeVM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIG1TKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB2UyhlLHQpe3JldHVybih2Uz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gZ1MoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBiUz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjtkUyh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybiBnUyhtUyhuPWhTKHRoaXMsKGU9eVModCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8pKSkpLCJnZXRIaWdobGlnaHRlZFRpdGxlIiwoZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsdD1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtpZighdClyZXR1cm4gZTt2YXIgbj1lLnRvTG93ZXJDYXNlKCkscj10LnRvTG93ZXJDYXNlKCksbz1uLnNwbGl0KHIpO2lmKG8ubGVuZ3RoPjEpe3ZhciBhPTAsaT1vLmxlbmd0aC0xO3JldHVybiBvLm1hcCgoZnVuY3Rpb24obixyKXt2YXIgbz1FLmEuY3JlYXRlRWxlbWVudCgic3BhbiIsbnVsbCxlLnNsaWNlKGEsYStuLmxlbmd0aCkpO2ErPW4ubGVuZ3RoO3ZhciB1PXIhPT1pP0UuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJoaWdobGlnaHRlZCJ9LGUuc2xpY2UoYSxhK3QubGVuZ3RoKSk6bnVsbDtyZXR1cm4gYSs9dC5sZW5ndGgsRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtrZXk6cn0sbyx1KX0pKX1yZXR1cm4gZX0pKSxnUyhtUyhuKSwiaXNTZWFyY2hGb3JUcmFja3MiLChmdW5jdGlvbigpe3JldHVybiBuLnByb3BzLnNlYXJjaE5hbWU9PT0kaH0pKSxnUyhtUyhuKSwiaGFuZGxlQ2xpY2siLChmdW5jdGlvbihlKXtuLnByb3BzLm9uU2VsZWN0KG4ucHJvcHMub3B0aW9uLGUpfSkpLGdTKG1TKG4pLCJoYW5kbGVNb3VzZU1vdmUiLChmdW5jdGlvbihlKXtuLnByb3BzLm9uRm9jdXMobi5wcm9wcy5vcHRpb24sZSl9KSksZ1MobVMobiksInJlbmRlckltYWdlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIG4uaXNTZWFyY2hGb3JUcmFja3MoKT9FLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiU2VhcmNoUm93LW9wdGlvbiIsIi1pbWciKX0sZT9FLmEuY3JlYXRlRWxlbWVudCgiaW1nIix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiU2VhcmNoUm93LW9wdGlvbiIsIi1pbWctY292ZXIiKSxzcmM6ZSxyb2xlOiJwcmVzZW50YXRpb24ifSk6RS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIlNlYXJjaFJvdy1vcHRpb24iLCItaW1nLXBsYWNlaG9sZGVyIil9KSk6IiJ9KSksZ1MobVMobiksInJlbmRlclJlbGVhc2VOYW1lIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnByb3BzLnJlbGVhc2VOYW1lO3JldHVybiBlP0UuYS5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLCIgIiwiwrciLCIgIixlKToiIn0pKSxufXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmdlMoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5vcHRpb24sbj1lLmNsYXNzTmFtZSxyPWUuYXJ0aXN0TmFtZSxvPWUuaW1hZ2VVcmwsYT1lLmlzcmMsaT1lLnF1ZXJ5O3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiU2VhcmNoUm93LW9wdGlvbiIsIiAiKS5jb25jYXQobikscm9sZToib3B0aW9uIixvbkNsaWNrOnRoaXMuaGFuZGxlQ2xpY2ssb25Nb3VzZU1vdmU6dGhpcy5oYW5kbGVNb3VzZU1vdmV9LHRoaXMucmVuZGVySW1hZ2UobyksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIlNlYXJjaFJvdy1vcHRpb24iLCItY29udGVudCIpfSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiU2VhcmNoUm93LW9wdGlvbiIsIi10aXRsZSIpfSx0aGlzLmdldEhpZ2hsaWdodGVkVGl0bGUodC50cmFja05hbWV8fHIsaSkpLHQudHJhY2tOYW1lJiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiU2VhcmNoUm93LW9wdGlvbiIsIi1hcnRpc3QiKX0sdGhpcy5nZXRIaWdobGlnaHRlZFRpdGxlKE9iamVjdChGLnVuZXNjYXBlKShyKSxpKSwiICIsdGhpcy5yZW5kZXJSZWxlYXNlTmFtZSgpKSksdC50cmFja05hbWUmJkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJTZWFyY2hSb3ctb3B0aW9uIiwiLWlzcmMiKX0sdGhpcy5nZXRIaWdobGlnaHRlZFRpdGxlKGEsaSkpKX19XSkmJnBTKG4ucHJvdG90eXBlLHIpLG8mJnBTKG4sbyksdH0oXy5Db21wb25lbnQpO2dTKGJTLCJwcm9wVHlwZXMiLHtvcHRpb246Vi5hLnNoYXBlKHt1cGM6Vi5hLm9uZU9mVHlwZShbVi5hLnN0cmluZyxWLmEubnVtYmVyXSksdHJhY2tOYW1lOlYuYS5zdHJpbmd9KS5pc1JlcXVpcmVkLGlzcmM6Vi5hLnN0cmluZyxpbWFnZVVybDpWLmEuc3RyaW5nLGFydGlzdE5hbWU6Vi5hLnN0cmluZyxyZWxlYXNlTmFtZTpWLmEuc3RyaW5nLHF1ZXJ5OlYuYS5zdHJpbmcsY2xhc3NOYW1lOlYuYS5zdHJpbmcsb25TZWxlY3Q6Vi5hLmZ1bmMsb25Gb2N1czpWLmEuZnVuYyxzZWFyY2hOYW1lOlYuYS5zdHJpbmd9KSxiUy5kaXNwbGF5TmFtZT0iU2VhcmNoUmVzdWx0T3B0aW9uIjt2YXIgd1M9YlM7ZnVuY3Rpb24gX1MoZSl7cmV0dXJuKF9TPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gRVMoKXtyZXR1cm4oRVM9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBPUyhlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBrUyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIENTKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24geFMoZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1fUyh0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/RFMoZSk6dH1mdW5jdGlvbiBTUyhlKXtyZXR1cm4oU1M9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIERTKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBUUyhlLHQpe3JldHVybihUUz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gTVMoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBQUz1WLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5vYmplY3RdKSxOUz1WLmEuc2hhcGUoe2FydGlzdHNMYWJlbDpQUyx0cmFja3NMYWJlbDpQUyxzZWFyY2hSZXN1bHRzSGVhZGluZ0xhYmVsOlBTLG5vTWF0Y2hMYWJlbDpQUyxzZWFyY2hQbGFjZWhvbGRlckxhYmVsOlBTLHNlYXJjaEFydGlzdHNQbGFjZWhvbGRlckxhYmVsOlBTLHRyeUFnYWluTGFiZWw6UFMsdGVtcG9yYXJ5RXJyb3JMYWJlbDpQUyxzZWFyY2hFcnJvckxhYmVsOlBTLGNoZWNrU3BlbGxpbmdMYWJlbDpQUyxyZWxlYXNlZERhdGVMYWJlbDpQUyxyZWxlYXNlTmFtZUxhYmVsOlBTfSksalM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47a1ModGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gTVMoRFMobj14Uyh0aGlzLChlPVNTKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwiaXNUcmFja1NlYXJjaCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09JGh9KSksTVMoRFMobiksIm1lbnVSZW5kZXJlciIsKGZ1bmN0aW9uKGUsdCxyLG8sYSxpKXt2YXIgdT1pLnNlYXJjaFJlc3VsdHNIZWFkaW5nTGFiZWw7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBsPXMub3B0aW9ucyxjPXZvaWQgMD09PWw/W106bCxmPXMub25TZWxlY3QsZD1zLmZvY3VzT3B0aW9uLHA9cy5mb2N1c2VkT3B0aW9uO3JldHVybiBlP24ucmVuZGVyU2VhcmNoRXJyb3IoYSxpKTp0P1tFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7a2V5OjAsY2xhc3NOYW1lOiIiLmNvbmNhdCgiU2VhcmNoUm93IiwiLWhlYWRpbmciKX0sYSh1LHtzZWFyY2hOYW1lOm8sc2VhcmNoTmFtZURpc3BsYXk6T2JqZWN0KEYuY2FwaXRhbGl6ZSkobyksc2VhcmNoTmFtZVVwcGVyOk9iamVjdChGLnRvVXBwZXIpKG8pfSkpXS5jb25jYXQoT1MoYy5tYXAoKGZ1bmN0aW9uKGUsYSl7dmFyIGksdT1uLmlzVHJhY2tTZWFyY2gobyk/T2JqZWN0KEYuc29tZSkociwoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNyYz09PWUuaXNyY30pKTpPYmplY3QoRi5zb21lKShyLChmdW5jdGlvbih0KXtyZXR1cm4gdC5hcnRpc3RJZD09PWUuYXJ0aXN0SWR9KSkscz1lPT09cCxsPVR0KCkoKE1TKGk9eyJTZWxlY3Qtb3B0aW9uIjohMH0sIlNlbGVjdC0iLmNvbmNhdChvKSwhMCksTVMoaSwiaXMtc2VsZWN0ZWQiLHUpLE1TKGksImlzLWZvY3VzZWQiLHMpLGkpKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQod1MsRVMoe2tleTphKzEsb3B0aW9uOmUsY2xhc3NOYW1lOmwsb25Gb2N1czpkLG9uU2VsZWN0OmYscXVlcnk6dCxzZWFyY2hOYW1lOm99LGUpKX0pKSkpOm51bGx9fSkpLE1TKERTKG4pLCJidWlsZE9wdGlvbnMiLChmdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMsdD1lLm9wdGlvbnMscj1lLnNlYXJjaE5hbWUsbz1uLmlzVHJhY2tTZWFyY2gocik7cmV0dXJuIHQubWFwKChmdW5jdGlvbihlLHQpe3ZhciBuPWUuaXNyYyxyPWUudHJhY2tOYW1lLGE9ZS5hcnRpc3RJZCxpPWUuYXJ0aXN0TmFtZSx1PWUuaW1hZ2VVcmwscz1lLnJlbGVhc2VOYW1lO3JldHVybntpbmRleDp0LGFydGlzdElkOmEsYXJ0aXN0TmFtZTppLGltYWdlVXJsOnUsaXNyYzpuLHVwYzplLnVwYyx0cmFja05hbWU6cixyZWxlYXNlTmFtZTpzLHZhbHVlOm8/bjphLGxhYmVsOm8/cjppfX0pKX0pKSxNUyhEUyhuKSwicmVuZGVyVmFsdWVDb21wb25lbnQiLChmdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6IiIuY29uY2F0KCJTZWFyY2hSb3ciLCItdGFnIFNlbGVjdC12YWx1ZSIpfSxlLnZhbHVlLnRyYWNrTmFtZXx8ZS52YWx1ZS5hcnRpc3ROYW1lLEUuYS5jcmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOiIiLmNvbmNhdCgiU2VhcmNoUm93IiwiLXRhZy1yZW1vdmUgU2VsZWN0LXJlbW92ZSIpLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZS5vblJlbW92ZShlLnZhbHVlKX19LEUuYS5jcmVhdGVFbGVtZW50KHJpLG51bGwpKSl9KSksTVMoRFMobiksInJlbmRlck5vUmVzdWx0c09yTG9hZGluZyIsKGZ1bmN0aW9uKGUsdCxyLG8sYSxpKXtpZih0KXJldHVybiBuLnJlbmRlclNlYXJjaEVycm9yKGEsaSk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIHU9aS5ub01hdGNoTGFiZWwscz1pLmNoZWNrU3BlbGxpbmdMYWJlbDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIlNlYXJjaFJvdyIsIi1lbXB0eSIpfSxvP0UuYS5jcmVhdGVFbGVtZW50KE5rLG51bGwpOkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibWItMiJ9LGEodSx7cXVlcnk6ZSxzZWFyY2hOYW1lOnIsc2VhcmNoTmFtZVVwcGVyOk9iamVjdChGLnRvVXBwZXIpKHIpfSkpLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYShzKSkpKX0pKSxNUyhEUyhuKSwicmVuZGVyU2VhcmNoRXJyb3IiLChmdW5jdGlvbihlLHQpe3ZhciBuPXQudHJ5QWdhaW5MYWJlbCxyPXQudGVtcG9yYXJ5RXJyb3JMYWJlbCxvPXQuc2VhcmNoRXJyb3JMYWJlbDtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiIi5jb25jYXQoIlNlYXJjaFJvdyIsIi1lcnJvciIpfSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLEUuYS5jcmVhdGVFbGVtZW50KGNTLHtzdGF0dXM6ImluY29tcGxldGUifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJoNSIsbnVsbCxlKG8pKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtYi0xIn0sZShyKSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxlKG4pKSl9KSksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJlRTKGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY3VycmVudFNlYXJjaCxuPWUub25JbnB1dENoYW5nZSxyPWUub25DaGFuZ2Usbz1lLnNlYXJjaEVycm9yLGE9ZS5pc0xvYWRpbmcsaT1lLnRhZ3MsdT1lLnNlYXJjaE5hbWUscz1lLmZvcm1hdE1lc3NhZ2UsbD1lLm1lc3NhZ2VzLGM9dGhpcy5idWlsZE9wdGlvbnMoKSxmPWwuc2VhcmNoUGxhY2Vob2xkZXJMYWJlbCxkPWwuc2VhcmNoQXJ0aXN0c1BsYWNlaG9sZGVyTGFiZWw7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IiIuY29uY2F0KCJTZWFyY2hSb3ciLCItaW5wdXQiKX0sRS5hLmNyZWF0ZUVsZW1lbnQodG4se2Fycm93UmVuZGVyZXI6TXQsY2FjaGU6ITEsZmlsdGVyT3B0aW9uczohMSxtZW51UmVuZGVyZXI6dGhpcy5tZW51UmVuZGVyZXIobyx0LGksdSxzLGwpLG11bHRpOiEwLG5vUmVzdWx0c1RleHQ6dGhpcy5yZW5kZXJOb1Jlc3VsdHNPckxvYWRpbmcodCxvLHUsYSxzLGwpLG9uQmx1clJlc2V0c0lucHV0OiExLG9uQ2hhbmdlOnIsb25JbnB1dENoYW5nZTpuLG9wdGlvbnM6YyxwbGFjZWhvbGRlcjp0aGlzLmlzVHJhY2tTZWFyY2godSk/cyhmKTpzKGQpLHNjcm9sbE1lbnVJbnRvVmlldzohMSxzZWFyY2hhYmxlOiEwLHZhbHVlOmksdmFsdWVDb21wb25lbnQ6dGhpcy5yZW5kZXJWYWx1ZUNvbXBvbmVudH0pLEUuYS5jcmVhdGVFbGVtZW50KGxuLG51bGwpKX19XSkmJkNTKG4ucHJvdG90eXBlLHIpLG8mJkNTKG4sbyksdH0oXy5Db21wb25lbnQpO01TKGpTLCJwcm9wVHlwZXMiLHtvcHRpb25zOlYuYS5hcnJheSxjdXJyZW50U2VhcmNoOlYuYS5zdHJpbmcsb25JbnB1dENoYW5nZTpWLmEuZnVuYy5pc1JlcXVpcmVkLG9uQ2hhbmdlOlYuYS5mdW5jLmlzUmVxdWlyZWQsc2VhcmNoRXJyb3I6Vi5hLnN0cmluZyxpc0xvYWRpbmc6Vi5hLmJvb2wsdGFnczpWLmEuYXJyYXksc2VhcmNoTmFtZTpWLmEuc3RyaW5nLGZvcm1hdE1lc3NhZ2U6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxtZXNzYWdlczpOUy5pc1JlcXVpcmVkfSksTVMoalMsImRlZmF1bHRQcm9wcyIse29wdGlvbnM6W10sc2VhcmNoRXJyb3I6bnVsbCxpc0xvYWRpbmc6ITEsdGFnczpbXSxzZWFyY2hOYW1lOlpofSksalMuZGlzcGxheU5hbWU9IlNlYXJjaFJlc3VsdHMiO3ZhciBMUz1qUztmdW5jdGlvbiBSUyhlKXtyZXR1cm4oUlM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBJUygpe3JldHVybihJUz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEFTKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gRlMoZSl7cmV0dXJuKEZTPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBCUyhlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gelMoZSx0KXtyZXR1cm4oelM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIEtTKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgcVM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSxuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09UlModCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P0JTKGUpOnR9KHRoaXMsRlModCkuY2FsbCh0aGlzLGUpKSxLUyhCUyhuKSwiZ2V0VmFsdWVPckRlZmF1bHQiLChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KEYuaXNFbXB0eSkoZSk/e306ZX0pKSxLUyhCUyhuKSwiZ2V0QXJ0aXN0c0Zyb21TZWFyY2hSZXN1bHRzIiwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0KEYudW5pcSkoZSkubWFwKChmdW5jdGlvbihlKXt2YXIgbj1PYmplY3QoRi5maW5kKShPYmplY3QoRi5rZXlzKSh0KSwoZnVuY3Rpb24odCl7cmV0dXJuIFJlZ0V4cCgiXmFydGlzdCIuY29uY2F0KGUpLCJnIikudGVzdCh0KX0pKTtyZXR1cm4gdFtuXX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfSkpLEtTKEJTKG4pLCJpc1NlYXJjaEZvclRyYWNrcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucHJvcHMuYXJ0aXN0c09yVHJhY2tzPT09JGh9KSksS1MoQlMobiksImhhbmRsZVNlYXJjaFN0cmluZ0NoYW5naW5nIiwoZnVuY3Rpb24oZSl7dmFyIHQ9bi5wcm9wcy5vblNlYXJjaFN0cmluZ0NoYW5naW5nO3QmJnQoZSksbi5fb25TZWFyY2hSZXF1ZXN0JiZuLl9vblNlYXJjaFJlcXVlc3QoZSxuLmlzU2VhcmNoRm9yVHJhY2tzKCkpfSkpLEtTKEJTKG4pLCJoYW5kbGVTZWxlY3QiLChmdW5jdGlvbihlKXt2YXIgdD1uLnByb3BzLm9uU2VsZWN0O3QmJnQoZSxuLmlzU2VhcmNoRm9yVHJhY2tzKCkpfSkpLEtTKEJTKG4pLCJzZWFyY2hOYW1lIiwoZnVuY3Rpb24oKXtyZXR1cm4gbi5pc1NlYXJjaEZvclRyYWNrcygpPyRoOlpofSkpLEtTKEJTKG4pLCJyZW5kZXJBcnRpc3RzVHJhY2tzRHJvcGRvd24iLChmdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMsdD1lLm9uQXJ0aXN0c1RyYWNrc0Ryb3Bkb3duU2VsZWN0LHI9ZS5mb3JtYXRNZXNzYWdlLG89ZS5tZXNzYWdlcyxhPW8uYXJ0aXN0c0xhYmVsLGk9by50cmFja3NMYWJlbCx1PW4uaXNTZWFyY2hGb3JUcmFja3MoKT9yKGkpOnIoYSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHBnLHtjbGFzc05hbWU6IiIuY29uY2F0KCJTZWFyY2hSb3ciLCItZHJvcGRvd24iKSxpZDoiIi5jb25jYXQoIlNlYXJjaFJvdyIsIkRyb3Bkb3duIiksb25TZWxlY3Q6dCx0aXRsZTp1LHZhcmlhbnQ6InNlY29uZGFyeSJ9LEUuYS5jcmVhdGVFbGVtZW50KHBnLkl0ZW0se2V2ZW50S2V5OlpoLGNsYXNzTmFtZToiIi5jb25jYXQoIlNlYXJjaFJvdyIsIi1kcm9wZG93bi1pdGVtLWFydGlzdCIpfSxyKGEpKSxFLmEuY3JlYXRlRWxlbWVudChwZy5JdGVtLHtldmVudEtleTokaCxjbGFzc05hbWU6IiIuY29uY2F0KCJTZWFyY2hSb3ciLCItZHJvcGRvd24taXRlbS10cmFjayIpfSxyKGkpKSl9KSksS1MoQlMobiksInJlbmRlclNlYXJjaCIsKGZ1bmN0aW9uKCl7dmFyIGUsdD1uLnByb3BzLHI9dC50YWdzLG89dC5yZXN1bHRzLGE9dC5hcnRpc3RzLGk9dC50cmFja3MsdT10LmlzTG9hZGluZyxzPXQuY3VycmVudFNlYXJjaCxsPXQuc2VhcmNoRXJyb3IsYz10LmZvcm1hdE1lc3NhZ2UsZj10Lm1lc3NhZ2VzLGQ9bi5zZWFyY2hOYW1lKCkscD1vP29bc106bnVsbCxoPW4uZ2V0VmFsdWVPckRlZmF1bHQoaSkseT1uLmdldFZhbHVlT3JEZWZhdWx0KGEpLG09e2lzTG9hZGluZzp1LGN1cnJlbnRTZWFyY2g6cyxvbklucHV0Q2hhbmdlOm4uaGFuZGxlU2VhcmNoU3RyaW5nQ2hhbmdpbmcsc2VhcmNoRXJyb3I6bCx0YWdzOnIsc2VhcmNoTmFtZTpkLGZvcm1hdE1lc3NhZ2U6YyxtZXNzYWdlczpmLG9uQ2hhbmdlOm4uaGFuZGxlU2VsZWN0fTtyZXR1cm4gZT1uLmlzU2VhcmNoRm9yVHJhY2tzKCk/cD9wLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGhbZV19KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKTpbXTpwP24uZ2V0QXJ0aXN0c0Zyb21TZWFyY2hSZXN1bHRzKHAseSk6W10sRS5hLmNyZWF0ZUVsZW1lbnQoTFMsSVMoe30sbSx7b3B0aW9uczplfSkpfSkpO3ZhciByPWUub25TZWFyY2hSZXF1ZXN0LG89ZS5kZWJvdW5jZVRpbWU7cmV0dXJuIHImJihuLl9vblNlYXJjaFJlcXVlc3Q9bz9PYmplY3QoRi5kZWJvdW5jZSkocixvKTpyKSxufXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmelMoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiU2VhcmNoUm93In0sdGhpcy5yZW5kZXJBcnRpc3RzVHJhY2tzRHJvcGRvd24oKSx0aGlzLnJlbmRlclNlYXJjaCgpKX19XSkmJkFTKG4ucHJvdG90eXBlLHIpLG8mJkFTKG4sbyksdH0oXy5Db21wb25lbnQpO0tTKHFTLCJwcm9wVHlwZXMiLHtyZXN1bHRzOlYuYS5vYmplY3QsYXJ0aXN0czpWLmEub25lT2ZUeXBlKFtWLmEub2JqZWN0LFYuYS5hcnJheV0pLHRyYWNrczpWLmEub25lT2ZUeXBlKFtWLmEub2JqZWN0LFYuYS5hcnJheV0pLGN1cnJlbnRTZWFyY2g6Vi5hLnN0cmluZyxzZWFyY2hFcnJvcjpWLmEuc3RyaW5nLGlzTG9hZGluZzpWLmEuYm9vbCx0YWdzOlYuYS5hcnJheSxhcnRpc3RzT3JUcmFja3M6Vi5hLnN0cmluZyxmb3JtYXRNZXNzYWdlOlYuYS5mdW5jLG1lc3NhZ2VzOk5TLG9uU2VhcmNoU3RyaW5nQ2hhbmdpbmc6Vi5hLmZ1bmMsb25TZWFyY2hSZXF1ZXN0OlYuYS5mdW5jLG9uU2VsZWN0OlYuYS5mdW5jLG9uQXJ0aXN0c1RyYWNrc0Ryb3Bkb3duU2VsZWN0OlYuYS5mdW5jLGRlYm91bmNlVGltZTpWLmEubnVtYmVyfSksS1MocVMsImRlZmF1bHRQcm9wcyIse2RlYm91bmNlVGltZTo0MDAsZm9ybWF0TWVzc2FnZTpmdW5jdGlvbihlKXtyZXR1cm4gZX0sbWVzc2FnZXM6e2FydGlzdHNMYWJlbDoiQXJ0aXN0cyIsdHJhY2tzTGFiZWw6IlRyYWNrcyIsdHJ5QWdhaW5MYWJlbDoiUGxlYXNlIHRyeSBhZ2FpbiIsc2VhcmNoRXJyb3JMYWJlbDoiU29ycnkgd2UgaGFkIGFuIGVycm9yIixub01hdGNoTGFiZWw6Ik5vIG1hdGNoIixzZWFyY2hSZXN1bHRzSGVhZGluZ0xhYmVsOiJSZXN1bHRzIixjaGVja1NwZWxsaW5nTGFiZWw6IkNoZWNrIHNwZWxsaW5nIn19KSxxUy5kaXNwbGF5TmFtZT0iU2VhcmNoUm93Ijt2YXIgVlM9Im9yY2hJZCIsVVM9InRlcnJpdG9yeU5hbWUiLFdTPSJjb250aW5lbnQiLFlTPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2VsZWN0ZWRDb3VudHJpZXNOdW1iZXIsbj1lLnRvdGFsQ291bnRyaWVzTnVtYmVyLHI9ZS5mb3JtYXRNZXNzYWdlLG89ZS5tZXNzYWdlcztyZXR1cm4oRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiQ291bnRyaWVzQ291bnRlciJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLHQsIiAiLHIoby5jb3VudHJpZXNDb3VudGVyT2YpLCIgIixuKSkpfTtZUy5kaXNwbGF5TmFtZT0iQ291bnRyaWVzQ291bnRlciIsWVMucHJvcFR5cGVzPXtzZWxlY3RlZENvdW50cmllc051bWJlcjpWLmEubnVtYmVyLHRvdGFsQ291bnRyaWVzTnVtYmVyOlYuYS5udW1iZXIsZm9ybWF0TWVzc2FnZTpWLmEuZnVuYy5pc1JlcXVpcmVkLG1lc3NhZ2VzOlYuYS5vYmplY3QuaXNSZXF1aXJlZH07dmFyIEhTPVlTLEdTPWZ1bmN0aW9uKGUpe3ZhciB0PWUub25UZXJyaXRvcnlTZWxlY3Qsbj1lLmZvcm1hdE1lc3NhZ2Uscj1lLm1lc3NhZ2VzO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJHbG9iYWxDb3VudHJpZXNTZWxlY3RvciJ9LEUuYS5jcmVhdGVFbGVtZW50KCJiIixudWxsLCJTZWxlY3Q6IiksRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Ikdsb2JhbENvdW50cmllc1NlbGVjdG9yLWFsbCBidG4tbGluayIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiB0KG51bGwsITApfX0sRS5hLmNyZWF0ZUVsZW1lbnQoImIiLG51bGwsbihyLnNlbGVjdEFsbExhYmVsKSkpLEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJHbG9iYWxDb3VudHJpZXNTZWxlY3Rvci1ub25lIGJ0bi1saW5rIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHQobnVsbCxudWxsLCEwKX19LEUuYS5jcmVhdGVFbGVtZW50KCJiIixudWxsLG4oci5zZWxlY3ROb25lTGFiZWwpKSkpfTtHUy5kaXNwbGF5TmFtZT0iR2xvYmFsQ291bnRyaWVzU2VsZWN0b3IiLEdTLnByb3BUeXBlcz17b25UZXJyaXRvcnlTZWxlY3Q6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxmb3JtYXRNZXNzYWdlOlYuYS5mdW5jLmlzUmVxdWlyZWQsbWVzc2FnZXM6Vi5hLm9iamVjdC5pc1JlcXVpcmVkfTt2YXIgUVM9R1MsSlM9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWNsb3NlLXJvdW5kIix2aWV3Qm94OiIwIDAgMjIgMjIifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNzc4LjAwMDAwMCwgLTM4OC4wMDAwMDApIixmaWxsOiIjQkFCN0I3In0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNzkwLjQ0Mzc1LDM5OS4xNTUgTDc5NC4zMSwzOTUuMjg4NzUgTDc5My4wMjEyNSwzOTQgTDc4OS4xNTUsMzk3Ljg2NjI1IEw3ODUuMjg4NzUsMzk0IEw3ODQsMzk1LjI4ODc1IEw3ODcuODY2MjUsMzk5LjE1NSBMNzg0LDQwMy4wMjEyNSBMNzg1LjI4ODc1LDQwNC4zMSBMNzg5LjE1NSw0MDAuNDQzNzUgTDc5My4wMjEyNSw0MDQuMzEgTDc5NC4zMSw0MDMuMDIxMjUgTDc5MC40NDM3NSwzOTkuMTU1IFogTTc4OSw0MTAgQzc5NS4wNzUxMzIsNDEwIDgwMCw0MDUuMDc1MTMyIDgwMCwzOTkgQzgwMCwzOTIuOTI0ODY4IDc5NS4wNzUxMzIsMzg4IDc4OSwzODggQzc4Mi45MjQ4NjgsMzg4IDc3OCwzOTIuOTI0ODY4IDc3OCwzOTkgQzc3OCw0MDUuMDc1MTMyIDc4Mi45MjQ4NjgsNDEwIDc4OSw0MTAgWiJ9KSkpKX07SlMuZGlzcGxheU5hbWU9IlNWR0Nsb3NlUm91bmQiO3ZhciBaUz1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWNsb3NlLXJvdW5kIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1jbG9zZS1yb3VuZCIpOiJJY29ucy1jbG9zZS1yb3VuZCIsb25DbGljazplLm9uQ2xpY2ssc3ZnOkpTfSl9O1pTLmRpc3BsYXlOYW1lPSJDbG9zZVJvdW5kIixaUy5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciAkUz1aUyxYUz1mdW5jdGlvbihlKXt2YXIgdD1lLm9uQ291bnRyeVNlYXJjaCxuPWUub25Db3VudHJ5U2VhcmNoQ2FuY2VsLHI9ZS5zZWFyY2hRdWVyeSxvPWUuZm9ybWF0TWVzc2FnZSxhPWUubWVzc2FnZXMsaT1UdCgpKHsiTGlzdEhlYWRlclNlYXJjaC1jbG9zZSI6ITAsaGlkZTowPT09ci5sZW5ndGh9KTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiTGlzdEhlYWRlclNlYXJjaCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJMaXN0SGVhZGVyU2VhcmNoLXNlYXJjaCJ9LEUuYS5jcmVhdGVFbGVtZW50KGxuLG51bGwpKSxFLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixjbGFzc05hbWU6Ikxpc3RIZWFkZXJTZWFyY2gtZmllbGQiLHBsYWNlaG9sZGVyOm8oYS5zZWFyY2hQbGFjZWhvbGRlciksb25DaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHI9ZS50YXJnZXQudmFsdWU7cmV0dXJuIDA9PT1yLmxlbmd0aD9uKCk6dChyKX0sdmFsdWU6cn0pLEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOmksb25DbGljazpmdW5jdGlvbigpe24oKX19LEUuYS5jcmVhdGVFbGVtZW50KCRTLG51bGwpKSl9O1hTLmRpc3BsYXlOYW1lPSJMaXN0SGVhZGVyU2VhcmNoIixYUy5wcm9wVHlwZXM9e29uQ291bnRyeVNlYXJjaDpWLmEuZnVuYyxvbkNvdW50cnlTZWFyY2hDYW5jZWw6Vi5hLmZ1bmMsc2VhcmNoUXVlcnk6Vi5hLnN0cmluZyxmb3JtYXRNZXNzYWdlOlYuYS5mdW5jLmlzUmVxdWlyZWQsbWVzc2FnZXM6Vi5hLm9iamVjdC5pc1JlcXVpcmVkfTt2YXIgZUQ9WFMsdEQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5oZWFkZXIsbj1lLnNlbGVjdGVkQ291bnRyaWVzTnVtYmVyLHI9ZS50b3RhbENvdW50cmllc051bWJlcixvPWUub25UZXJyaXRvcnlTZWxlY3QsYT1lLm9uQ291bnRyeVNlYXJjaCxpPWUub25Db3VudHJ5U2VhcmNoQ2xvc2UsdT1lLnNlYXJjaFF1ZXJ5LHM9ZS5mb3JtYXRNZXNzYWdlLGw9ZS5tZXNzYWdlcztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiTGlzdEhlYWRlciJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ikxpc3RIZWFkZXItbGlzdC10eXBlIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImhlYWRlciIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgiaDQiLHtjbGFzc05hbWU6Ikxpc3RIZWFkZXItaGVhZGVyLXRleHQifSx0KSksRS5hLmNyZWF0ZUVsZW1lbnQoSFMse3NlbGVjdGVkQ291bnRyaWVzTnVtYmVyOm4sdG90YWxDb3VudHJpZXNOdW1iZXI6cixmb3JtYXRNZXNzYWdlOnMsbWVzc2FnZXM6bH0pKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJMaXN0SGVhZGVyLXNlYXJjaCJ9LEUuYS5jcmVhdGVFbGVtZW50KGVELHtvbkNvdW50cnlTZWFyY2g6YSxvbkNvdW50cnlTZWFyY2hDYW5jZWw6aSxzZWFyY2hRdWVyeTp1LGZvcm1hdE1lc3NhZ2U6cyxtZXNzYWdlczpsfSkpLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ikxpc3RIZWFkZXItZ2xvYmFsLXNlbGVjdG9yIn0sRS5hLmNyZWF0ZUVsZW1lbnQoUVMse29uVGVycml0b3J5U2VsZWN0Om8sZm9ybWF0TWVzc2FnZTpzLG1lc3NhZ2VzOmx9KSkpfTt0RC5kaXNwbGF5TmFtZT0iTGlzdEhlYWRlciIsdEQucHJvcFR5cGVzPXtoZWFkZXI6Vi5hLnN0cmluZyxzZWxlY3RlZENvdW50cmllc051bWJlcjpWLmEubnVtYmVyLHRvdGFsQ291bnRyaWVzTnVtYmVyOlYuYS5udW1iZXIsb25UZXJyaXRvcnlTZWxlY3Q6Vi5hLmZ1bmMsb25Db3VudHJ5U2VhcmNoOlYuYS5mdW5jLG9uQ291bnRyeVNlYXJjaENsb3NlOlYuYS5mdW5jLHNlYXJjaFF1ZXJ5OlYuYS5zdHJpbmcsZm9ybWF0TWVzc2FnZTpWLmEuZnVuYy5pc1JlcXVpcmVkLG1lc3NhZ2VzOlYuYS5vYmplY3QuaXNSZXF1aXJlZH07dmFyIG5EPXRELHJEPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaGFuZGxlVW5kb0NoYW5nZXMsbj1lLmhhbmRsZU5vdGlmaWNhdGlvbkNsb3NlLHI9ZS5tb3ZlZENvdW50cmllc051bWJlcixvPWUuZm9ybWF0TWVzc2FnZSxhPWUubWVzc2FnZXM7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlVuZG9MaW5rIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsIiIuY29uY2F0KHIsIiAiKS5jb25jYXQobyhhLnVuZG9EZXNjcmlwdGlvbikpKSxFLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiVW5kb0xpbmstbGluayBidG4gYnRuLWxpbmsiLG9uQ2xpY2s6dH0sbyhhLnVuZG9MYWJlbCkpKSxFLmEuY3JlYXRlRWxlbWVudChyaSx7b25DbGljazpufSkpfTtyRC5kaXNwbGF5TmFtZT0iVW5kb0xpbmsiLHJELnByb3BUeXBlcz17bW92ZWRDb3VudHJpZXNOdW1iZXI6Vi5hLm51bWJlcixoYW5kbGVVbmRvQ2hhbmdlczpWLmEuZnVuYyxoYW5kbGVOb3RpZmljYXRpb25DbG9zZTpWLmEuZnVuYyxmb3JtYXRNZXNzYWdlOlYuYS5mdW5jLmlzUmVxdWlyZWQsbWVzc2FnZXM6Vi5hLm9iamVjdC5pc1JlcXVpcmVkfTt2YXIgb0Q9ckQsYUQ9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXRocmVlLXJpZ2h0LWRpcmVjdGVkLWFycm93cyIsdmlld0JveDoiMCAwIDMwIDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiVGVycml0b3J5UmVzdHJpY3Rpb25zIixzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6IkNvdW50cnktU2VsZWN0ZWQiLHRyYW5zZm9ybToidHJhbnNsYXRlKC03NjguMDAwMDAwLCAtODA2LjAwMDAwMCkiLHN0cm9rZVdpZHRoOiIyIixzdHJva2U6IiNGRkZGRkYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJNb3ZlLUJ1dHRvbiIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoNDAwLjAwMDAwMCwgNzgxLjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJHcm91cCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoMzY5LjAwMDAwMCwgMjYuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5bGluZSIse2lkOiJMaW5lIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgyMy41MDAwMDAsIDcuMDAwMDAwKSBzY2FsZSgxLCAtMSkgcm90YXRlKC0yNzAuMDAwMDAwKSB0cmFuc2xhdGUoLTIzLjUwMDAwMCwgLTcuMDAwMDAwKSAiLHBvaW50czoiMTYuNSAxMC41IDIzLjUgMy41IDMwLjUgMTAuNSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWxpbmUiLHtpZDoiTGluZSIsc3Ryb2tlT3BhY2l0eToiMC42Iix0cmFuc2Zvcm06InRyYW5zbGF0ZSgxMy41MDAwMDAsIDcuMDAwMDAwKSBzY2FsZSgxLCAtMSkgcm90YXRlKC0yNzAuMDAwMDAwKSB0cmFuc2xhdGUoLTEzLjUwMDAwMCwgLTcuMDAwMDAwKSAiLHBvaW50czoiNi41IDEwLjUgMTMuNSAzLjUgMjAuNSAxMC41In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5bGluZSIse2lkOiJMaW5lIixzdHJva2VPcGFjaXR5OiIwLjMiLHRyYW5zZm9ybToidHJhbnNsYXRlKDMuNTAwMDAwLCA3LjAwMDAwMCkgc2NhbGUoMSwgLTEpIHJvdGF0ZSgtMjcwLjAwMDAwMCkgdHJhbnNsYXRlKC0zLjUwMDAwMCwgLTcuMDAwMDAwKSAiLHBvaW50czoiLTMuNSAxMC41IDMuNSAzLjUgMTAuNSAxMC41In0pKSkpKSl9O2FELmRpc3BsYXlOYW1lPSJTVkdUaHJlZVJpZ2h0RGlyZWN0ZWRBcnJvd3MiO3ZhciBpRD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXRocmVlLXJpZ2h0LWRpcmVjdGVkLWFycm93cyIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtdGhyZWUtcmlnaHQtZGlyZWN0ZWQtYXJyb3dzIik6Ikljb25zLXRocmVlLXJpZ2h0LWRpcmVjdGVkLWFycm93cyIsb25DbGljazplLm9uQ2xpY2ssc3ZnOmFEfSl9O2lELmRpc3BsYXlOYW1lPSJUaHJlZVJpZ2h0RGlyZWN0ZWRBcnJvd3MiLGlELnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIHVEPWlELHNEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmV2ZXJzZWQsbj1lLmlzSGlkZGVuLHI9VHQoKSh7Ik1vdmVDb3VudHJ5QnV0dG9uLWljb25zIjohMCwiTW92ZUNvdW50cnlCdXR0b24tcmV2ZXJzZSI6dCxoaWRlOm59KTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpyfSxFLmEuY3JlYXRlRWxlbWVudCh1RCxudWxsKSl9O3NELmRpc3BsYXlOYW1lPSJUaHJlZUFycm93c0ljb24iLHNELnByb3BUeXBlcz17cmV2ZXJzZWQ6Vi5hLmJvb2wuaXNSZXF1aXJlZCxpc0hpZGRlbjpWLmEuYm9vbC5pc1JlcXVpcmVkfTt2YXIgbEQ9c0QsY0Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50aGlzTGlzdFR5cGUsbj1lLnRoZU90aGVyTGlzdFR5cGUscj1lLnNlbGVjdGVkQ291bnRyaWVzTnVtYmVyLG89ZS5vbkNvdW50cnlNb3ZlLGE9ZS50aGVPdGhlckxpc3RMYWJlbCxpPWUuZm9yd2FyZCx1PWUuZm9ybWF0TWVzc2FnZSxzPWUubWVzc2FnZXM7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ik1vdmVDb3VudHJ5QnV0dG9uIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIG8odCxuKX19LEUuYS5jcmVhdGVFbGVtZW50KGxELHtyZXZlcnNlZDohMCxpc0hpZGRlbjppfSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiTW92ZUNvdW50cnlCdXR0b24tdGV4dCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwIixudWxsLHUocy5tb3ZlU2VsZWN0ZWRMYWJlbCksIiAoIi5jb25jYXQociwiKSIpKSxFLmEuY3JlYXRlRWxlbWVudCgicCIsbnVsbCx1KHMubW92ZVRvTGFiZWwpLEUuYS5jcmVhdGVFbGVtZW50KCJiIixudWxsLCIgIi5jb25jYXQoYSkpKSksRS5hLmNyZWF0ZUVsZW1lbnQobEQse3JldmVyc2VkOiExLGlzSGlkZGVuOiFpfSkpfTtjRC5kaXNwbGF5TmFtZT0iTW92ZUNvdW50cnlCdXR0b24iLGNELnByb3BUeXBlcz17dGhpc0xpc3RUeXBlOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCx0aGVPdGhlckxpc3RUeXBlOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxzZWxlY3RlZENvdW50cmllc051bWJlcjpWLmEubnVtYmVyLmlzUmVxdWlyZWQsb25Db3VudHJ5TW92ZTpWLmEuZnVuYyx0aGVPdGhlckxpc3RMYWJlbDpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsZm9yd2FyZDpWLmEuYm9vbC5pc1JlcXVpcmVkLGZvcm1hdE1lc3NhZ2U6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxtZXNzYWdlczpWLmEub2JqZWN0LmlzUmVxdWlyZWR9O3ZhciBmRD1jRCxkRD1mdW5jdGlvbihlKXt2YXIgdD1lLmlzU2VsZWN0ZWQsbj1lLnRlcnJpdG9yeU5hbWUscj1lLm9uSGFuZGxlU2VsZWN0LG89ZS5pc0Rpc2FibGVkLGE9dm9pZCAwIT09byYmbyxpPVR0KCkoe2Rpc2FibGVkOmF9KSx1PVR0KCkoeyJDb250aW5lbnRJdGVtLWRpc2FibGVkIjphLCJDb250aW5lbnRJdGVtLWxhYmVsIjohMH0pO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtjbGFzc05hbWU6dX0sRS5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNsYXNzTmFtZTppLGNoZWNrZWQ6dCxvbkNoYW5nZTpyLGRpc2FibGVkOmF9KSxuKX07ZEQuZGlzcGxheU5hbWU9IkNvdW50cnlJdGVtIixkRC5wcm9wVHlwZXM9e2lzU2VsZWN0ZWQ6Vi5hLmJvb2wuaXNSZXF1aXJlZCxpc0Rpc2FibGVkOlYuYS5ib29sLHRlcnJpdG9yeU5hbWU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLG9uSGFuZGxlU2VsZWN0OlYuYS5mdW5jLmlzUmVxdWlyZWR9O3ZhciBwRD1kRDtmdW5jdGlvbiBoRChlKXtyZXR1cm4oaEQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiB5RChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIG1EKGUpe3JldHVybihtRD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gdkQoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIGdEKGUsdCl7cmV0dXJuKGdEPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBiRChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHdEPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksbj1mdW5jdGlvbihlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PWhEKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD92RChlKTp0fSh0aGlzLG1EKHQpLmNhbGwodGhpcyxlKSksYkQodkQobiksImhhbmRsZUNvbGxhcHNlIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnN0YXRlLmlzQ29sbGFwc2VkO24uc2V0U3RhdGUoe2lzQ29sbGFwc2VkOiFlfSl9KSksYkQodkQobiksImhhbmRsZUNvbnRpbmVudFNlbGVjdCIsKGZ1bmN0aW9uKCl7dmFyIGU9bi5wcm9wczsoMCxlLm9uQ291bnRyeVNlbGVjdCkobnVsbCxudWxsLG51bGwsZS5uYW1lKX0pKSxiRCh2RChuKSwiX2hhbmRsZUNvdW50cnlTZWxlY3QiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXsoMCxuLnByb3BzLm9uQ291bnRyeVNlbGVjdCkoZSl9fSkpLG4uc3RhdGU9e2lzQ29sbGFwc2VkOiEwfSxufXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmZ0QoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6ImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZXhwYW5kQWxsLG49dGhpcy5zdGF0ZS5pc0NvbGxhcHNlZDt0aGlzLnNldFN0YXRlKHtpc0NvbGxhcHNlZDpuJiYhdH0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5uYW1lLHI9dC5jb3VudHJpZXMsbz10LnRlcnJpdG9yeUlkS2V5LGE9dC50ZXJyaXRvcnlOYW1lS2V5LGk9dGhpcy5zdGF0ZS5pc0NvbGxhcHNlZCx1PXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hZS5pc0Rpc2FibGVkfSkpLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gZS5pc1NlbGVjdGVkfSkpLHM9ci5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNEaXNhYmxlZH0pKSxsPVR0KCkoIkNvbnRpbmVudEl0ZW0tbGFiZWwiLHsiQ29udGluZW50SXRlbS1sYWJlbC1pbnZlcnRlZCI6IWksIkNvbnRpbmVudEl0ZW0tZnVsbFdpZHRoIjohMH0pLGM9VHQoKSh7Y2hlY2tib3g6ITAsIkNvbnRpbmVudEl0ZW0tYm9yZGVyZWQiOiFpLCJDb250aW5lbnRJdGVtLWNvbnRhaW5lciI6ITB9KTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiQ29udGluZW50SXRlbSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Y30sRS5hLmNyZWF0ZUVsZW1lbnQocEQse2lzU2VsZWN0ZWQ6dSx0ZXJyaXRvcnlOYW1lOiIiLmNvbmNhdChuLCIgKCIpLmNvbmNhdChyLmxlbmd0aCwiKSIpLGlzRGlzYWJsZWQ6cyxvbkhhbmRsZVNlbGVjdDp0aGlzLmhhbmRsZUNvbnRpbmVudFNlbGVjdH0pLEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOmwsb25DbGljazp0aGlzLmhhbmRsZUNvbGxhcHNlfSxFLmEuY3JlYXRlRWxlbWVudChRYSxudWxsKSkpLGk/bnVsbDpyLm1hcCgoZnVuY3Rpb24odCxuKXt2YXIgcj10W29dLGk9dC5pc1NlbGVjdGVkLHU9dC5pc0Rpc2FibGVkLHM9dFthXTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2tleTpuLGNsYXNzTmFtZToiY2hlY2tib3ggQ29udGluZW50SXRlbS1jb250YWluZXIgQ29udGluZW50SXRlbS1jb3VudHJ5In0sRS5hLmNyZWF0ZUVsZW1lbnQocEQse2lzU2VsZWN0ZWQ6aSxpc0Rpc2FibGVkOnUsdGVycml0b3J5TmFtZTpzLG9uSGFuZGxlU2VsZWN0OmUuX2hhbmRsZUNvdW50cnlTZWxlY3Qocil9KSl9KSkpfX1dKSYmeUQobi5wcm90b3R5cGUsciksbyYmeUQobixvKSx0fShfLkNvbXBvbmVudCk7YkQod0QsInByb3BUeXBlcyIse29uQ291bnRyeVNlbGVjdDpWLmEuZnVuYy5pc1JlcXVpcmVkLG5hbWU6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGNvdW50cmllczpWLmEuYXJyYXkuaXNSZXF1aXJlZCxleHBhbmRBbGw6Vi5hLmJvb2wsdGVycml0b3J5SWRLZXk6Vi5hLnN0cmluZyx0ZXJyaXRvcnlOYW1lS2V5OlYuYS5zdHJpbmd9KSx3RC5kaXNwbGF5TmFtZT0iQ29udGluZW50SXRlbSI7dmFyIF9EPXdEO2Z1bmN0aW9uIEVEKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgT0Q9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLG8pe3ZhciBhPW9bcl0saT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe0VEKGUsdCxuW3RdKX0pKX1yZXR1cm4gZX0oe2lzU2VsZWN0ZWQ6Qm9vbGVhbihPYmplY3QoRi5maW5kKSh0LChmdW5jdGlvbihlKXtyZXR1cm4gZVtuXT09PW9bbl19KSkpfSxvKTtyZXR1cm4gZVthXT9lW2FdLnB1c2goaSk6ZVthXT1baV0sZX0pLHt9KX0sa0Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbkNvdW50cnlTZWxlY3Qsbj1lLnRlcnJpdG9yaWVzLHI9ZS5zZWxlY3RlZENvdW50cmllcyxvPWUuZXhwYW5kQWxsLGE9ZS50aGVPdGhlckxpc3RMYWJlbCxpPWUudGVycml0b3J5SWRLZXksdT1lLnRlcnJpdG9yeU5hbWVLZXkscz1lLmNvbnRpbmVudE5hbWVLZXksbD1lLmZvcm1hdE1lc3NhZ2UsYz1lLm1lc3NhZ2VzO2lmKCFufHwwPT09bi5sZW5ndGgpcmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlRlcnJpdG9yaWVzTGlzdC1lbXB0eSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwIixudWxsLGwoYy5lbXB0eUxpc3RMYWJlbCkpLEUuYS5jcmVhdGVFbGVtZW50KCJwIixudWxsLGwoYy5lbXB0eUxpc3RMYWJlbEZyb20pLEUuYS5jcmVhdGVFbGVtZW50KCJiIixudWxsLCIgIi5jb25jYXQoYSwiICIpKSxsKGMuZW1wdHlMaXN0RGVzY3JpcHRpb24pKSk7dmFyIGY9T0QobixyLGkscyk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlRlcnJpdG9yaWVzTGlzdCJ9LE9iamVjdC5rZXlzKGYpLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoX0Qse2tleTpuLG9uQ291bnRyeVNlbGVjdDp0LG5hbWU6ZSxjb3VudHJpZXM6ZltlXSxleHBhbmRBbGw6byx0ZXJyaXRvcnlJZEtleTppLHRlcnJpdG9yeU5hbWVLZXk6dX0pfSkpKX07a0QuZGlzcGxheU5hbWU9IlRlcnJpdG9yaWVzTGlzdCIsa0QucHJvcFR5cGVzPXtvbkNvdW50cnlTZWxlY3Q6Vi5hLmZ1bmMuaXNSZXF1aXJlZCx0ZXJyaXRvcmllczpWLmEuYXJyYXkuaXNSZXF1aXJlZCxzZWxlY3RlZENvdW50cmllczpWLmEuYXJyYXkuaXNSZXF1aXJlZCxleHBhbmRBbGw6Vi5hLmJvb2wsdGhlT3RoZXJMaXN0TGFiZWw6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGZvcm1hdE1lc3NhZ2U6Vi5hLmZ1bmMuaXNSZXF1aXJlZCxtZXNzYWdlczpWLmEub2JqZWN0LmlzUmVxdWlyZWQsdGVycml0b3J5SWRLZXk6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLHRlcnJpdG9yeU5hbWVLZXk6Vi5hLnN0cmluZy5pc1JlcXVpcmVkLGNvbnRpbmVudE5hbWVLZXk6Vi5hLnN0cmluZy5pc1JlcXVpcmVkfTt2YXIgQ0Q9a0Q7ZnVuY3Rpb24geEQoZSl7cmV0dXJuKHhEPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gU0QoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBERChlKXtyZXR1cm4oREQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIFREKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBNRChlLHQpe3JldHVybihNRD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gUEQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBORD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBuO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT14RCh0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/VEQoZSk6dH0odGhpcyxERCh0KS5jYWxsKHRoaXMsZSkpLFBEKFREKG4pLCJnZXRVbmRvTGlua1N0YXR1cyIsKGZ1bmN0aW9uKCl7dmFyIGU9bi5wcm9wcyx0PWUudW5kb05vdGlmaWNhdGlvblZpc2libGUscj1lLm1vdmVkQ291bnRyaWVzTnVtYmVyO3JldHVybiB0JiZyPjB9KSksUEQoVEQobiksImhhbmRsZVRlcnJpdG9yeVNlYXJjaCIsKGZ1bmN0aW9uKGUpe3ZhciB0PW4uZmluZFRlcnJpdG9yeShuLnByb3BzLmNvdW50cmllcyxlKTtuLnNldFN0YXRlKHtzZWFyY2hRdWVyeTplLHNlYXJjaGVkQ291bnRyaWVzOnR9KX0pKSxQRChURChuKSwiaGFuZGxlVGVycml0b3J5U2VhcmNoQ2xvc2UiLChmdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMub25UZXJyaXRvcnlTZWFyY2hDbG9zZTtuLnNldFN0YXRlKHtzZWFyY2hRdWVyeToiIn0pLGUmJmUoKX0pKSxQRChURChuKSwiZmluZFRlcnJpdG9yeSIsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgcj1uLnByb3BzLG89ci50ZXJyaXRvcnlOYW1lS2V5LGE9ci5jb250aW5lbnROYW1lS2V5LGk9ZVtvXSx1PWVbYV0scz1uZXcgUmVnRXhwKHQudG9Mb3dlckNhc2UoKSk7cmV0dXJuIHMudGVzdChpLnRvTG93ZXJDYXNlKCkpfHxzLnRlc3QodS50b0xvd2VyQ2FzZSgpKX0pKX0pKSxuLnN0YXRlPXtzZWFyY2hRdWVyeToiIixzZWFyY2hlZENvdW50cmllczpudWxsfSxufXZhciBuLHIsbztyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmTUQoZSx0KX0odCxlKSxuPXQsKHI9W3trZXk6ImNvbXBvbmVudFdpbGxNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFN0YXRlKHtzZWFyY2hlZENvdW50cmllczp0aGlzLnByb3BzLmNvdW50cmllc30pfX0se2tleToiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb3VudHJpZXMsbj10aGlzLnN0YXRlLnNlYXJjaFF1ZXJ5OzA9PT1uLmxlbmd0aD90aGlzLnNldFN0YXRlKHtzZWFyY2hlZENvdW50cmllczp0fSk6dGhpcy5zZXRTdGF0ZSh7c2VhcmNoZWRDb3VudHJpZXM6dGhpcy5maW5kVGVycml0b3J5KHQsbil9KX19LHtrZXk6ImNvbXBvbmVudFdpbGxVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zdGF0ZS5zZWFyY2hRdWVyeSxyPXQuc2VhcmNoUXVlcnk7biYmIXImJnRoaXMuc2V0U3RhdGUoe3NlYXJjaGVkQ291bnRyaWVzOnRoaXMucHJvcHMuY291bnRyaWVzfSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUudGhpc0xpc3RUeXBlLG49ZS50aGVPdGhlckxpc3RUeXBlLHI9ZS5oZWFkZXIsbz1lLm9uVW5kb05vdGlmaWNhdGlvbkNsb3NlLGE9ZS50b3RhbE51bWJlck9mQ291bnRyaWVzLGk9ZS5tb3ZlZENvdW50cmllc051bWJlcix1PWUuc2VsZWN0ZWRDb3VudHJpZXMscz1lLm9uVGVycml0b3J5TW92ZWRVbmRvLGw9ZS5vblRlcnJpdG9yeU1vdmUsYz1lLm9uQ291bnRyeVNlbGVjdCxmPWUuY291bnRyaWVzLGQ9ZS50aGVPdGhlckxpc3RMYWJlbCxwPWUuZm9yd2FyZCxoPWUudGVycml0b3J5SWRLZXkseT1lLnRlcnJpdG9yeU5hbWVLZXksbT1lLmNvbnRpbmVudE5hbWVLZXksdj1lLmZvcm1hdE1lc3NhZ2UsZz1lLm1lc3NhZ2VzLGI9dS5sZW5ndGgsdz10aGlzLnN0YXRlLF89dy5zZWFyY2hRdWVyeSxPPXcuc2VhcmNoZWRDb3VudHJpZXMsaz1UdCgpKHsiVGVycml0b3JpZXNMaXN0TWFuYWdlci1tb3ZlLWJ1dHRvbiI6ITAsIk9wbS1ib3JkZXItcmFkaXVzIjohMCxoaWRlOmI8PTB9KSxDPVR0KCkoeyJUZXJyaXRvcmllc0xpc3RNYW5hZ2VyLXVuZG8tbWVzc2FnZSI6ITAsIk9wbS10aGluLWdyZXktYm9yZGVyIjohMCxoaWRlOiF0aGlzLmdldFVuZG9MaW5rU3RhdHVzKCl9KTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiVGVycml0b3JpZXNMaXN0TWFuYWdlciBjb2wteHMtNiIsaWQ6dH0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiVGVycml0b3JpZXNMaXN0TWFuYWdlci1saXN0IE9wbS10aGluLWdyZXktYm9yZGVyIE9wbS1ib3JkZXItcmFkaXVzIn0sRS5hLmNyZWF0ZUVsZW1lbnQobkQse2hlYWRlcjpyLHNlbGVjdGVkQ291bnRyaWVzTnVtYmVyOmYubGVuZ3RoLHRvdGFsQ291bnRyaWVzTnVtYmVyOmEsb25UZXJyaXRvcnlTZWxlY3Q6YyxvbkNvdW50cnlTZWFyY2g6dGhpcy5oYW5kbGVUZXJyaXRvcnlTZWFyY2gsb25Db3VudHJ5U2VhcmNoQ2xvc2U6dGhpcy5oYW5kbGVUZXJyaXRvcnlTZWFyY2hDbG9zZSxzZWFyY2hRdWVyeTpfLGZvcm1hdE1lc3NhZ2U6dixtZXNzYWdlczpnfSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiVGVycml0b3JpZXNMaXN0TWFuYWdlci10ZXJyaXRvcmllcy1saXN0In0sRS5hLmNyZWF0ZUVsZW1lbnQoQ0Qse29uQ291bnRyeVNlbGVjdDpjLHRlcnJpdG9yaWVzOk8sc2VsZWN0ZWRDb3VudHJpZXM6dSxleHBhbmRBbGw6MCE9PV8ubGVuZ3RoLHRoZU90aGVyTGlzdExhYmVsOmQsdGVycml0b3J5SWRLZXk6aCx0ZXJyaXRvcnlOYW1lS2V5OnksY29udGluZW50TmFtZUtleTptLGZvcm1hdE1lc3NhZ2U6dixtZXNzYWdlczpnfSkpKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOkN9LEUuYS5jcmVhdGVFbGVtZW50KG9ELHtoYW5kbGVVbmRvQ2hhbmdlczpzLGhhbmRsZU5vdGlmaWNhdGlvbkNsb3NlOm8sbW92ZWRDb3VudHJpZXNOdW1iZXI6aSxmb3JtYXRNZXNzYWdlOnYsbWVzc2FnZXM6Z30pKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOmt9LEUuYS5jcmVhdGVFbGVtZW50KGZELHt0aGlzTGlzdFR5cGU6dCx0aGVPdGhlckxpc3RUeXBlOm4sc2VsZWN0ZWRDb3VudHJpZXNOdW1iZXI6YixvbkNvdW50cnlNb3ZlOmwsZm9yd2FyZDpwLHRoZU90aGVyTGlzdExhYmVsOmQsZm9ybWF0TWVzc2FnZTp2LG1lc3NhZ2VzOmd9KSkpfX1dKSYmU0Qobi5wcm90b3R5cGUsciksbyYmU0QobixvKSx0fShfLkNvbXBvbmVudCk7UEQoTkQsInByb3BUeXBlcyIse2hlYWRlcjpWLmEuc3RyaW5nLmlzUmVxdWlyZWQsdGhpc0xpc3RUeXBlOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCx0aGVPdGhlckxpc3RUeXBlOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxvblVuZG9Ob3RpZmljYXRpb25DbG9zZTpWLmEuZnVuYyx1bmRvTm90aWZpY2F0aW9uVmlzaWJsZTpWLmEuYm9vbCx0b3RhbE51bWJlck9mQ291bnRyaWVzOlYuYS5udW1iZXIuaXNSZXF1aXJlZCxjb3VudHJpZXM6Vi5hLmFycmF5LmlzUmVxdWlyZWQsc2VsZWN0ZWRDb3VudHJpZXM6Vi5hLmFycmF5LmlzUmVxdWlyZWQsbW92ZWRDb3VudHJpZXNOdW1iZXI6Vi5hLm51bWJlcixvblRlcnJpdG9yeU1vdmVkVW5kbzpWLmEuZnVuYyxvblRlcnJpdG9yeVNlYXJjaENsb3NlOlYuYS5mdW5jLG9uVGVycml0b3J5TW92ZTpWLmEuZnVuYy5pc1JlcXVpcmVkLG9uQ291bnRyeVNlbGVjdDpWLmEuZnVuYy5pc1JlcXVpcmVkLHRoZU90aGVyTGlzdExhYmVsOlYuYS5zdHJpbmcuaXNSZXF1aXJlZCxmb3J3YXJkOlYuYS5ib29sLmlzUmVxdWlyZWQsZm9ybWF0TWVzc2FnZTpWLmEuZnVuYy5pc1JlcXVpcmVkLG1lc3NhZ2VzOlYuYS5zaGFwZSh7Y291bnRyaWVzQ291bnRlck9mOlYuYS5vYmplY3QsZW1wdHlMaXN0TGFiZWw6Vi5hLm9iamVjdCxlbXB0eUxpc3RMYWJlbEZyb206Vi5hLm9iamVjdCxlbXB0eUxpc3REZXNjcmlwdGlvbjpWLmEub2JqZWN0LHNlYXJjaFBsYWNlaG9sZGVyOlYuYS5vYmplY3Qsc2VsZWN0QWxsTGFiZWw6Vi5hLm9iamVjdCxzZWxlY3ROb25lTGFiZWw6Vi5hLm9iamVjdCx1bmRvRGVzY3JpcHRpb246Vi5hLm9iamVjdCx1bmRvTGFiZWw6Vi5hLm9iamVjdCxtb3ZlU2VsZWN0ZWRMYWJlbDpWLmEub2JqZWN0LG1vdmVUb0xhYmVsOlYuYS5vYmplY3R9KS5pc1JlcXVpcmVkLHRlcnJpdG9yeUlkS2V5OlYuYS5zdHJpbmcsdGVycml0b3J5TmFtZUtleTpWLmEuc3RyaW5nLGNvbnRpbmVudE5hbWVLZXk6Vi5hLnN0cmluZ30pLFBEKE5ELCJkZWZhdWx0UHJvcHMiLHt0ZXJyaXRvcnlJZEtleTpWUyx0ZXJyaXRvcnlOYW1lS2V5OlVTLGNvbnRpbmVudE5hbWVLZXk6V1N9KSxORC5kaXNwbGF5TmFtZT0iVGVycml0b3JpZXNMaXN0TWFuYWdlciI7dmFyIGpEPU5EO2Z1bmN0aW9uIExEKGUpe3JldHVybihMRD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIFJEKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gSUQoZSl7cmV0dXJuKElEPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBBRChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gRkQoZSx0KXtyZXR1cm4oRkQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIEJEKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgekQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSxuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09TEQodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P0FEKGUpOnR9KHRoaXMsSUQodCkuY2FsbCh0aGlzLGUpKSxCRChBRChuKSwiZmlsbEltYWdlIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnByb3BzLmltYWdlO24uX2ltYWdlJiYobi5faW1hZ2Uuc3R5bGUuYmFja2dyb3VuZEltYWdlPSJ1cmwoIi5jb25jYXQoZSwiKSIpKX0pKSxuLl9pbWFnZT1PYmplY3QoXy5jcmVhdGVSZWYpKCksbn12YXIgbixyLG87cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJkZEKGUsdCl9KHQsZSksbj10LChyPVt7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZpbGxJbWFnZSgpfX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZmlsbEltYWdlKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuaW1hZ2Usbj1lLmNoaWxkcmVuLHI9ZS5vbkNsaWNrO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJUaWxlIixvbkNsaWNrOnJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJvdyJ9LHQ/RS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiVGlsZS1pbWFnZS1jb2x1bW4gY29sLXhzLTQifSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJUaWxlLWltYWdlLWNvbHVtbi1pbm5lciIscmVmOnRoaXMuX2ltYWdlfSkpOm51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpUdCgpKCJUaWxlLWNvbHVtbiIseyJjb2wteHMtOCI6dCwiY29sLXhzLTEyIjohdH0pfSxuKSkpfX1dKSYmUkQobi5wcm90b3R5cGUsciksbyYmUkQobixvKSx0fShfLkNvbXBvbmVudCk7ZnVuY3Rpb24gS0QoZSl7cmV0dXJuKEtEPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gcUQoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBWRChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIFVEKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09S0QodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P1lEKGUpOnR9ZnVuY3Rpb24gV0QoZSl7cmV0dXJuKFdEPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBZRChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gSEQoZSx0KXtyZXR1cm4oSEQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIEdEKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1CRCh6RCwicHJvcFR5cGVzIix7aW1hZ2U6Vi5hLnN0cmluZyxjaGlsZHJlbjpWLmEuYW55LG9uQ2xpY2s6Vi5hLmZ1bmN9KSx6RC5kaXNwbGF5TmFtZT0iVGlsZSI7dmFyIFFEPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgidHIiLHtjbGFzc05hbWU6dH0sZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QoXy5jcmVhdGVFbGVtZW50KShyLHtjbGFzc05hbWU6bixrZXk6ZX0sZSl9KSkpfTtRRC5kaXNwbGF5TmFtZT0iZGVmYXVsdFJlbmRlcmVyIjt2YXIgSkQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47cUQodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gR0QoWUQobj1VRCh0aGlzLChlPVdEKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwiaGFuZGxlUm93Q2xpY2siLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7bi5wcm9wcy5vblJvd0NsaWNrKGUsdCl9fSkpLG59dmFyIG4scixvO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZIRChlLHQpfSh0LGUpLG49dCwocj1be2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmhlYWRlcixuPWUuaGVhZGVyQ2xhc3NOYW1lLHI9ZS5oZWFkZXJDZWxsQ2xhc3NOYW1lLG89ZS5oZWFkZXJSZW5kZXJlcixhPWUucm93cyxpPWUucm93Q2xhc3NOYW1lLHU9ZS5jZWxsUmVuZGVyZXIscz1lLmNlbGxDbGFzc05hbWUsbD1lLnRhYmxlSGVhZGluZyxjPWUudGFibGVDbGFzc05hbWUsZj1lLmZvb3RlcixkPWUuZm9vdGVyQ2xhc3NOYW1lLHA9ZS5mb290ZXJDZWxsQ2xhc3NOYW1lLGg9ZS5mb290ZXJSZW5kZXJlcix5PWUucm93UmVuZGVyZXI7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJ0YWJsZSIse2NsYXNzTmFtZTpjfSx0JiZFLmEuY3JlYXRlRWxlbWVudCgidGhlYWQiLG51bGwsbCYmRS5hLmNyZWF0ZUVsZW1lbnQoInRyIix7Y2xhc3NOYW1lOm59LEUuYS5jcmVhdGVFbGVtZW50KCJ0aCIse2NvbFNwYW46dC5sZW5ndGgsY2xhc3NOYW1lOnJ9LGwpKSxvKHQsbixyLCJ0aCIpKSxFLmEuY3JlYXRlRWxlbWVudCgidGJvZHkiLG51bGwseShhLGkscyx1LHRoaXMuaGFuZGxlUm93Q2xpY2spKSxmJiZFLmEuY3JlYXRlRWxlbWVudCgidGZvb3QiLG51bGwsaChmLGQscCwidGQiKSkpfX1dKSYmVkQobi5wcm90b3R5cGUsciksbyYmVkQobixvKSx0fShfLkNvbXBvbmVudCk7R0QoSkQsInByb3BUeXBlcyIse2hlYWRlcjpWLmEuYXJyYXksdGFibGVIZWFkaW5nOlYuYS5zdHJpbmcsaGVhZGVyQ2xhc3NOYW1lOlYuYS5zdHJpbmcsaGVhZGVyQ2VsbENsYXNzTmFtZTpWLmEuc3RyaW5nLGZvb3RlcjpWLmEuYXJyYXksZm9vdGVyUmVuZGVyZXI6Vi5hLmZ1bmMsaGVhZGVyUmVuZGVyZXI6Vi5hLmZ1bmMsZm9vdGVyQ2xhc3NOYW1lOlYuYS5zdHJpbmcsZm9vdGVyQ2VsbENsYXNzTmFtZTpWLmEuc3RyaW5nLHJvd3M6Vi5hLmFycmF5LGNlbGxSZW5kZXJlcjpWLmEuZnVuYyxyb3dSZW5kZXJlcjpWLmEuZnVuYyxvblJvd0NsaWNrOlYuYS5mdW5jLHRhYmxlQ2xhc3NOYW1lOlYuYS5zdHJpbmcsY2VsbENsYXNzTmFtZTpWLmEuc3RyaW5nLHJvd0NsYXNzTmFtZTpWLmEuc3RyaW5nfSksR0QoSkQsImRlZmF1bHRQcm9wcyIse3RhYmxlSGVhZGluZzpudWxsLGhlYWRlcjpudWxsLGZvb3RlcjpudWxsLGNlbGxSZW5kZXJlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sZm9vdGVyUmVuZGVyZXI6UUQsaGVhZGVyUmVuZGVyZXI6UUQscm93UmVuZGVyZXI6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgidHIiLHtrZXk6ZS5pZCxjbGFzc05hbWU6dCxvbkNsaWNrOm8oZS5pZCl9LGUuY29scy5tYXAoKGZ1bmN0aW9uKHQsbyl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJ0ZCIse2tleTpvLGNsYXNzTmFtZTpufSxyKHQsbyxlKSl9KSkpfSkpfX0pLEpELmRpc3BsYXlOYW1lPSJDbGlja2FibGVUYWJsZSI7dmFyIFpEPUpELCREPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1sb2dvLWFuZC1uYW1lIix2aWV3Qm94OiIwIDAgMTEwIDQwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiVGhlT3JjaGFyZExvZ29BbmROYW1lIixzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoLTYzMy4wMDAwMDAsIC0xMTguMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6IlRoZU9yY2hhcmRMb2dvIix0cmFuc2Zvcm06InRyYW5zbGF0ZSg2MzMuMDAwMDAwLCAxMTguMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6IkZpbGwtMSIsZmlsbDoiI0ZGRkZGRiIscG9pbnRzOiI0OS4xMjQ3NCAxNi4wMTYxOTkgNDkuMTI0NzQgMjIuNDQ4MjM4OCA0Ny41MTM3NCAyMi40NDgyMzg4IDQ3LjUxMzc0IDE2LjAxNjE5OSA0NS4yMDMzNCAxNi4wMTYxOTkgNDUuMjAzMzQgMTQuNDM4NDg3NiA1MS40MzcxNCAxNC40Mzg0ODc2IDUxLjQzNzE0IDE2LjAxNjE5OSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik01Ni4xOTc4LDIyLjQ0ODE5OSBMNTYuMTk3OCwxOS4xOTk4NDA4IEM1Ni4xOTc4LDE4LjEyNDAxOTkgNTUuODMxNiwxNy44MDI4MjU5IDU1LjE3NTIsMTcuODAyODI1OSBDNTQuNTE5LDE3LjgwMjgyNTkgNTQuMTM5LDE4LjEyNDAxOTkgNTQuMTM5LDE5LjE2NzYwMiBMNTQuMTM5LDIyLjQ0ODE5OSBMNTIuNTUzNCwyMi40NDgxOTkgTDUyLjU1MzQsMTQuODk2NTU3MiBMNTQuMTM5LDE0LjEwODA5OTUgTDU0LjEzOSwxNi44NDA2MzY4IEM1NC40MTYsMTYuNTU1NjYxNyA1NC45MjQsMTYuMzE0NDY3NyA1NS41NTM4LDE2LjMxNDQ2NzcgQzU3LjA5MzYsMTYuMzE0NDY3NyA1Ny43ODgyLDE3LjM2OTE5NCA1Ny43ODgyLDE5LjA1OTU0MjMgTDU3Ljc4ODIsMjIuNDQ4MTk5IEw1Ni4xOTc4LDIyLjQ0ODE5OSBaIixpZDoiRmlsbC0yIixmaWxsOiIjRkZGRkZGIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTYxLjU2OTY4LDE3LjY4NDQxNzkgQzYwLjk5NjA4LDE3LjY4NDQxNzkgNjAuNjM4ODgsMTguMTU3MDU0NyA2MC41Nzk2OCwxOC43NjQwMTk5IEw2Mi42NDgyOCwxOC43NjQwMTk5IEM2Mi42MDMyOCwxOC4yMjcxMDQ1IDYyLjI4MDg4LDE3LjY4NDQxNzkgNjEuNTY5NjgsMTcuNjg0NDE3OSBNNjQuMTY5NDgsMTkuOTUyNjc2NiBMNjAuNTU2ODgsMTkuOTUyNjc2NiBDNjAuNjE0MDgsMjAuNzc3MTU0MiA2MS4yMjM0OCwyMS4wODU4MTA5IDYxLjc5ODA4LDIxLjA4NTgxMDkgQzYyLjIzNTY4LDIxLjA4NTgxMDkgNjIuNjAzMjgsMjAuOTI2NDA4IDYyLjgzMjQ4LDIwLjY2MjUyNzQgTDYzLjk2MjI4LDIxLjYwMjAyOTkgQzYzLjQ3OTQ4LDIyLjIxODk0NTMgNjIuNjAzMjgsMjIuNTc0MTY5MiA2MS43OTgwOCwyMi41NzQxNjkyIEM2MC4wNjIwOCwyMi41NzQxNjkyIDU4Ljk1ODQ4LDIxLjM0OTg5MDUgNTguOTU4NDgsMTkuNDQ4NTk3IEM1OC45NTg0OCwxNy42MDkzOTMgNjAuMTIwNDgsMTYuMzE0NDY3NyA2MS42NDY4OCwxNi4zMTQ0Njc3IEM2My4yNTkyOCwxNi4zMTQ0Njc3IDY0LjE4OTQ4LDE3LjczNTU2MjIgNjQuMTg5NDgsMTkuNDQ4NTk3IEM2NC4xODk0OCwxOS42ODIyMjg5IDY0LjE3OTI4LDE5LjgzOTA0NDggNjQuMTY5NDgsMTkuOTUyNjc2NiIsaWQ6IkZpbGwtNCIsZmlsbDoiI0ZGRkZGRiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zOS4wMDk3MiwyNC4xNjAxMzkzIEMzNi43MzE3MiwyNC4xNjAxMzkzIDM1Ljc4MTcyLDI2LjEwOCAzNS43ODE3MiwyOC42MDg2OTY1IEMzNS43ODE3MiwzMS4xMTQxNjkyIDM2LjczMTcyLDMzLjA2MjQyNzkgMzkuMDA5NzIsMzMuMDYyNDI3OSBDNDEuMjg2OTIsMzMuMDYyNDI3OSA0Mi4yMzMxMiwzMS4xMTQxNjkyIDQyLjIzMzEyLDI4LjYwODY5NjUgQzQyLjIzMzEyLDI2LjEwOCA0MS4yODY5MiwyNC4xNjAxMzkzIDM5LjAwOTcyLDI0LjE2MDEzOTMgTTM5LjAwOTcyLDM1Ljg1MDY4NjYgQzM1LjE2MTkyLDM1Ljg1MDY4NjYgMzIuODgzMTIsMzIuODgyNTI3NCAzMi44ODMxMiwyOC42MDg2OTY1IEMzMi44ODMxMiwyNC4zMzkyNDM4IDM1LjE2MTkyLDIxLjM3Mjg3NTYgMzkuMDA5NzIsMjEuMzcyODc1NiBDNDIuODU2NTIsMjEuMzcyODc1NiA0NS4xMzU1MiwyNC4zMzkyNDM4IDQ1LjEzNTUyLDI4LjYwODY5NjUgQzQ1LjEzNTUyLDMyLjg4MjUyNzQgNDIuODU2NTIsMzUuODUwNjg2NiAzOS4wMDk3MiwzNS44NTA2ODY2IixpZDoiRmlsbC02IixmaWxsOiIjRkZGRkZGIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTUzLjczODIyLDI4LjMzNDIwOSBDNTMuMjk1NjIsMjcuOTI3NDQyOCA1Mi43NDkwMiwyNy42NTE2MjE5IDUyLjEyNDQyLDI3LjY1MTYyMTkgQzUxLjAzNzQyLDI3LjY1MTYyMTkgNTAuMzMxNjIsMjguMTA5MTM0MyA1MC4zMzE2MiwyOS45MzYxOTkgTDUwLjMzMTYyLDM1LjYyOTEzNDMgTDQ3LjU1MTYyLDM1LjYyOTEzNDMgTDQ3LjU1MTYyLDI1LjEwNTM1MzIgTDUwLjMzMTYyLDI1LjEwNTM1MzIgTDUwLjMzMTYyLDI1LjgwMjY2NjcgQzUwLjgxODYyLDI1LjMwNDE1OTIgNTEuNTIyNDIsMjQuODc5ODgwNiA1Mi41MTEyMiwyNC44Nzk4ODA2IEM1My40MTY4MiwyNC44Nzk4ODA2IDU0LjEwMjgyLDI1LjIzOTg4MDYgNTQuNDYzMjIsMjUuNjIyMTY5MiBMNTMuNzM4MjIsMjguMzM0MjA5IFoiLGlkOiJGaWxsLTgiLGZpbGw6IiNGRkZGRkYifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNjAuMjkwMzgsMzUuODUwNzI2NCBDNTcuNTI3MzgsMzUuODUwNzI2NCA1NS4zMzA3OCwzMy42MDU1NTIyIDU1LjMzMDc4LDMwLjM3NjY5NjUgQzU1LjMzMDc4LDI3LjE1MDYyNjkgNTcuNDY5NTgsMjQuODc5NzgxMSA2MC40MDkzOCwyNC44Nzk3ODExIEM2Mi40MjYxOCwyNC44Nzk3ODExIDYzLjcxNjE4LDI1Ljg2MjA2OTcgNjQuNjAxNzgsMjcuMjA4MTM5MyBMNjIuNzY2MzgsMjkuMDUzOTEwNCBDNjIuMTQzNTgsMjguMTcxOTIwNCA2MS40Nzc3OCwyNy41NDgwMzk4IDYwLjM0ODE4LDI3LjU0ODAzOTggQzU5LjAxNzc4LDI3LjU0ODAzOTggNTguMTUyMTgsMjguNjQ4MzM4MyA1OC4xNTIxOCwzMC4zNzY2OTY1IEM1OC4xNTIxOCwzMi4wNjM0NjI3IDU5LjAxNzc4LDMzLjE4MzQ2MjcgNjAuMzQ4MTgsMzMuMTgzNDYyNyBDNjEuNDM1NTgsMzMuMTgzNDYyNyA2Mi4xMjM5OCwzMi42OTkyODM2IDYyLjg0NzE4LDMxLjg0MTU3MjEgTDY0LjYyMDc4LDMzLjUwMTg3MDYgQzYzLjU5NDU4LDM0Ljg2NDY1NjcgNjIuMzg1MzgsMzUuODUwNzI2NCA2MC4yOTAzOCwzNS44NTA3MjY0IixpZDoiRmlsbC0xMCIsZmlsbDoiI0ZGRkZGRiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik03My4wODI5NiwzNS42MjkxNzQxIEw3My4wODI5NiwyOS45MzYyMzg4IEM3My4wODI5NiwyOC4wNDkyNzM2IDcyLjQzODM2LDI3LjQ4Njg4NTYgNzEuMjkwNTYsMjcuNDg2ODg1NiBDNzAuMTM5NzYsMjcuNDg2ODg1NiA2OS40NzM1NiwyOC4wNDkyNzM2IDY5LjQ3MzU2LDI5Ljg3NjMzODMgTDY5LjQ3MzU2LDM1LjYyOTE3NDEgTDY2LjY5NTc2LDM1LjYyOTE3NDEgTDY2LjY5NTc2LDIyLjM5NzMzMzMgTDY5LjQ3MzU2LDIxLjAxMzQ1MjcgTDY5LjQ3MzU2LDI1LjgwMjcwNjUgQzY5Ljk2MTU2LDI1LjMwNDE5OSA3MC44NDQ5NiwyNC44Nzk3MjE0IDcxLjk1MzE2LDI0Ljg3OTcyMTQgQzc0LjY1NTk2LDI0Ljg3OTcyMTQgNzUuODY1OTYsMjYuNzI3ODgwNiA3NS44NjU5NiwyOS42OTE0NjI3IEw3NS44NjU5NiwzNS42MjkxNzQxIEw3My4wODI5NiwzNS42MjkxNzQxIFoiLGlkOiJGaWxsLTEyIixmaWxsOiIjRkZGRkZGIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTg0LjI4ODA0LDMxLjIxNzgzMDggQzgzLjgwMTQ0LDMwLjkxNzkzMDMgODMuMzQwNDQsMzAuNzgxNjExOSA4Mi4zNTI0NCwzMC43ODE2MTE5IEM4MS4zMDQ2NCwzMC43ODE2MTE5IDgwLjc0MDQ0LDMxLjI1NjIzODggODAuNzQwNDQsMzIuMTAwNDE3OSBDODAuNzQwNDQsMzIuODQxOTEwNCA4MS4xNjE4NCwzMy41MDIwMSA4Mi4zNTI0NCwzMy41MDIwMSBDODMuMjU4MDQsMzMuNTAyMDEgODMuOTg0NjQsMzMuMDQzOTAwNSA4NC4yODgwNCwzMi41NDAwMTk5IEw4NC4yODgwNCwzMS4yMTc4MzA4IFogTTg0LjI4ODA0LDM1LjYyOTE3NDEgTDg0LjI4ODA0LDM0LjkyODQ3NzYgQzgzLjc4MjA0LDM1LjQ0NjA4OTYgODIuODk2NDQsMzUuODUwNjY2NyA4MS45MDg0NCwzNS44NTA2NjY3IEM3OS45MzUwNCwzNS44NTA2NjY3IDc3Ljk1ODQ0LDM0LjY0NjA4OTYgNzcuOTU4NDQsMzIuMTAwNDE3OSBDNzcuOTU4NDQsMjkuNzc1MDQ0OCA3OS44NTM0NCwyOC42MDg2NzY2IDgyLjI0OTY0LDI4LjYwODY3NjYgQzgzLjIyMDY0LDI4LjYwODY3NjYgODMuODQxMDQsMjguODE0MDQ5OCA4NC4yODgwNCwyOS4wMzM5NTAyIEw4NC4yODgwNCwyOC41MDkzNzMxIEM4NC4yODgwNCwyNy43Njk2NzE2IDgzLjc4MjA0LDI3LjE2ODg3NTYgODIuNzc0NDQsMjcuMTY4ODc1NiBDODEuNTA0ODQsMjcuMTY4ODc1NiA4MC44NDE0NCwyNy4zNDY1ODcxIDc5Ljg3NTI0LDI3Ljg2ODU3NzEgTDc4LjgwNjQ0LDI1Ljk0NjE4OTEgQzgwLjAzNTI0LDI1LjIzOTkyMDQgODEuMDY0MjQsMjQuODc5NzIxNCA4Mi43NzQ0NCwyNC44Nzk3MjE0IEM4NS4zMzU4NCwyNC44Nzk3MjE0IDg3LjA2NjI0LDI2LjIwMzEwNDUgODcuMDY2MjQsMjguNTY5MjczNiBMODcuMDY2MjQsMzUuNjI5MTc0MSBMODQuMjg4MDQsMzUuNjI5MTc0MSBaIixpZDoiRmlsbC0xNCIsZmlsbDoiI0ZGRkZGRiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik05NS44NTA1NCwyOC4zMzQyMDkgQzk1LjQxMTE0LDI3LjkyNzQ0MjggOTQuODY0NTQsMjcuNjUxNjIxOSA5NC4yNDI5NCwyNy42NTE2MjE5IEM5My4xNTM5NCwyNy42NTE2MjE5IDkyLjQ0NzE0LDI4LjEwOTEzNDMgOTIuNDQ3MTQsMjkuOTM2MTk5IEw5Mi40NDcxNCwzNS42MjkxMzQzIEw4OS42NjYzNCwzNS42MjkxMzQzIEw4OS42NjYzNCwyNS4xMDUzNTMyIEw5Mi40NDcxNCwyNS4xMDUzNTMyIEw5Mi40NDcxNCwyNS44MDI2NjY3IEM5Mi45MzE1NCwyNS4zMDQxNTkyIDkzLjYzODM0LDI0Ljg3OTg4MDYgOTQuNjIzMzQsMjQuODc5ODgwNiBDOTUuNTMxMzQsMjQuODc5ODgwNiA5Ni4yMTUxNCwyNS4yMzk4ODA2IDk2LjU3Nzc0LDI1LjYyMjE2OTIgTDk1Ljg1MDU0LDI4LjMzNDIwOSBaIixpZDoiRmlsbC0xNiIsZmlsbDoiI0ZGRkZGRiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMDMuNzkzNSwyOC4zOTMyNzM2IEMxMDMuMzY5OSwyNy44MDg1OTcgMTAyLjcyNjMsMjcuNDg2ODA2IDEwMS45MjA3LDI3LjQ4NjgwNiBDMTAwLjg1MTcsMjcuNDg2ODA2IDEwMC4yNjczLDI4LjQxMDc4NjEgMTAwLjI2NzMsMzAuMTc1MTY0MiBDMTAwLjI2NzMsMzIuMzM5MTQ0MyAxMDAuOTkzOSwzMy4yMzk4NDA4IDEwMi4wODA3LDMzLjIzOTg0MDggQzEwMi45NDYxLDMzLjIzOTg0MDggMTAzLjM4OTcsMzIuODgyNjI2OSAxMDMuNzkzNSwzMi4zNTk0NDI4IEwxMDMuNzkzNSwyOC4zOTMyNzM2IFogTTEwMy43OTM1LDM1LjYyOTA5NDUgTDEwMy43OTM1LDM0Ljk2MjgyNTkgQzEwMy4yNjk5LDM1LjQyNzEwNDUgMTAyLjU2NDMsMzUuODUwNzg2MSAxMDEuNTU3OSwzNS44NTA3ODYxIEM5OS4zMDIzLDM1Ljg1MDc4NjEgOTcuNDQ4MywzNC4xNjQ0MTc5IDk3LjQ0ODMsMzAuMjM0MjY4NyBDOTcuNDQ4MywyNy4wODcwMDUgOTguOTM2OSwyNC44Nzk4NDA4IDEwMS41NTc5LDI0Ljg3OTg0MDggQzEwMi40ODIxLDI0Ljg3OTg0MDggMTAzLjI5MjMsMjUuMjM5ODQwOCAxMDMuNzkzNSwyNS43MDQxMTk0IEwxMDMuNzkzNSwyMi4zOTcyNTM3IEwxMDYuNTczNywyMS4wMTMzNzMxIEwxMDYuNTczNywzNS42MjkwOTQ1IEwxMDMuNzkzNSwzNS42MjkwOTQ1IFoiLGlkOiJGaWxsLTE4IixmaWxsOiIjRkZGRkZGIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTI4LjY5MDg2LDI1LjUwNjM0ODMgQzI4LjY5MDg2LDMzLjMzOTk4MDEgMjIuMzEwODYsMzkuNjkwMjI4OSAxNC40MzM4NiwzOS42OTAyMjg5IEM2LjU2NDI2LDM5LjY5MDIyODkgMC4xNzkwNiwzMy4zMzk5ODAxIDAuMTc5MDYsMjUuNTA2MzQ4MyBDMC4xNzkwNiwxNy42NzIxMTk0IDYuNTY0MjYsMTEuMzIyNjY2NyAxNC40MzM4NiwxMS4zMjI2NjY3IEMyMi4zMTA4NiwxMS4zMjI2NjY3IDI4LjY5MDg2LDE3LjY3MjExOTQgMjguNjkwODYsMjUuNTA2MzQ4MyIsaWQ6IkZpbGwtMjAiLGZpbGw6IiNGRjg5M0UifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTYuMDAyOTgsMi4wOTEyMDM5OCBDMTQuNTIxOTgsMS44NjAzNTgyMSAxMy4zMTk3OCwxLjg2NDMzODMxIDEyLjI4Nzk4LDEuNzE5MjYzNjggQzExLjAxMzM4LDEuNjIxMTU0MjMgOC42MDEzOCwxLjI4NzQyMjg5IDcuOTA0MTgsMC4xNTc0NzI2MzcgQzcuOTA0MTgsMC4xNTc0NzI2MzcgNy44ODgzOCwwLjI1ODU2NzE2NCA3Ljg3Njk4LDAuNDQ0NjM2ODE2IEM3Ljg0OTk4LDAuODU5MTY0MTc5IDcuODQ2OTgsMS42OTE4MDEgOC4wOTMzOCwyLjc2Mjg0NTc3IEM4LjMyNjU4LDMuNjY4NTE3NDEgOC42NjQ3OCw0LjU5MzI5MzUzIDkuMTQ2OTgsNS40NzA3MDY0NyBDOS4zMDA1OCw1Ljc0ODMxODQxIDkuNDc1OTgsNi4wMzAzMDg0NiA5LjY2ODc4LDYuMzE0ODg1NTcgQzEwLjg1OTk4LDguMDMyODk1NTIgMTIuNzQ4MzgsOS4yNTk5NjAyIDE1LjU4Nzk4LDkuODk3NzcxMTQgQzE5LjMwOTE4LDEwLjczMTQwMyAyMi44NDI5OCwxMS4zMzEwMDUgMjUuNTg1MzgsMTQuODA1NDMyOCBDMjUuNTkwNTgsMTQuNzkxOTAwNSAyNS41OTQzOCwxNC43NzM1OTIgMjUuNTk5OTgsMTQuNzU4NjY2NyBDMjYuMTA0MTgsMTIuODc0ODg1NiAyNC4xOTQ1OCwzLjM2MTA1NDczIDE2LjAwMjk4LDIuMDkxMjAzOTgiLGlkOiJGaWxsLTIyIixmaWxsOiIjNzhBMjJGIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwOC42OTkxNiwzNC44ODAxNzkxIEwxMDguNzgzNzYsMzQuODgwMTc5MSBDMTA4Ljg5Mjc2LDM0Ljg4MDE3OTEgMTA4Ljk2NTM2LDM0LjgzMTgyMDkgMTA4Ljk2NTM2LDM0Ljc2NTc1MTIgQzEwOC45NjUzNiwzNC42ODczNDMzIDEwOC44OTg5NiwzNC42NDQ3NTYyIDEwOC43OTU3NiwzNC42NDQ3NTYyIEMxMDguNzU5NTYsMzQuNjQ0NzU2MiAxMDguNzIzMTYsMzQuNjUxMTI0NCAxMDguNjk5MTYsMzQuNjUxMTI0NCBMMTA4LjY5OTE2LDM0Ljg4MDE3OTEgWiBNMTA4LjY4Njc2LDM1LjQyODgzNTggTDEwOC4zODk5NiwzNS40Mjg4MzU4IEwxMDguMzg5OTYsMzQuNDcwMDI5OSBDMTA4LjQ1NjU2LDM0LjQ1ODI4ODYgMTA4LjYxNDE2LDM0LjQzNDIwOSAxMDguODEzOTYsMzQuNDM0MjA5IEMxMDkuMDMyMzYsMzQuNDM0MjA5IDEwOS4xMjkxNiwzNC40NjQyNTg3IDEwOS4yMDE5NiwzNC41MTI0MTc5IEMxMDkuMjYyMzYsMzQuNTU0NjA3IDEwOS4zMDQ3NiwzNC42MjcwNDQ4IDEwOS4zMDQ3NiwzNC43MjMzNjMyIEMxMDkuMzA0NzYsMzQuODE5ODgwNiAxMDkuMjE0MTYsMzQuOTA0MDU5NyAxMDkuMDgwNzYsMzQuOTQwNDc3NiBMMTA5LjA4MDc2LDM0Ljk1MjYxNjkgQzEwOS4xODk5NiwzNC45ODI2NjY3IDEwOS4yNTAzNiwzNS4wNjA4NzU2IDEwOS4yODA1NiwzNS4xOTk3ODExIEMxMDkuMzEwOTYsMzUuMzM4Njg2NiAxMDkuMzI4OTYsMzUuMzkyNjE2OSAxMDkuMzQ3MzYsMzUuNDI4ODM1OCBMMTA5LjAxNDE2LDM1LjQyODgzNTggQzEwOC45ODM5NiwzNS4zOTI2MTY5IDEwOC45NjUzNiwzNS4zMDg0Mzc4IDEwOC45NDczNiwzNS4yMjQwNTk3IEMxMDguOTI5MTYsMzUuMTI3NTQyMyAxMDguODgwNzYsMzUuMDc5MzgzMSAxMDguNzgzNzYsMzUuMDc5MzgzMSBMMTA4LjY4Njc2LDM1LjA3OTM4MzEgTDEwOC42ODY3NiwzNS40Mjg4MzU4IFogTTEwOC44MDgxNiwzNC4xNTYzOTggQzEwOC4zODM5NiwzNC4xNTYzOTggMTA4LjA2MjU2LDM0LjUwMDI3ODYgMTA4LjA2MjU2LDM0Ljk0MDQ3NzYgQzEwOC4wNjI1NiwzNS4zNjg1MzczIDEwOC4zODM5NiwzNS43MTgzODgxIDEwOC44MTk5NiwzNS43MTgzODgxIEMxMDkuMjU2MzYsMzUuNzI0NTU3MiAxMDkuNTc3NzYsMzUuMzY4NTM3MyAxMDkuNTc3NzYsMzQuOTM0MzA4NSBDMTA5LjU3Nzc2LDM0LjUwMDI3ODYgMTA5LjI1NjM2LDM0LjE1NjM5OCAxMDguODEzOTYsMzQuMTU2Mzk4IEwxMDguODA4MTYsMzQuMTU2Mzk4IFogTTEwOC44MjYzNiwzMy44OTc2OTE1IEMxMDkuNDE5OTYsMzMuODk3NjkxNSAxMDkuODkyOTYsMzQuMzYxOTcwMSAxMDkuODkyOTYsMzQuOTM0MzA4NSBDMTA5Ljg5Mjk2LDM1LjUxMzQxMjkgMTA5LjQxOTk2LDM1Ljk3Nzg5MDUgMTA4LjgxOTk2LDM1Ljk3Nzg5MDUgQzEwOC4yMTk5NiwzNS45Nzc4OTA1IDEwNy43NDE1NiwzNS41MTM0MTI5IDEwNy43NDE1NiwzNC45MzQzMDg1IEMxMDcuNzQxNTYsMzQuMzYxOTcwMSAxMDguMjE5OTYsMzMuODk3NjkxNSAxMDguODE5OTYsMzMuODk3NjkxNSBMMTA4LjgyNjM2LDMzLjg5NzY5MTUgWiIsaWQ6IkZpbGwtMjQiLGZpbGw6IiNGRkZGRkYifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjQuODkxOTQsMzcuOTI5MTk0IEwyNC45NzY1NCwzNy45MjkxOTQgQzI1LjA4NTU0LDM3LjkyOTE5NCAyNS4xNTgzNCwzNy44ODEwMzQ4IDI1LjE1ODM0LDM3LjgxNDc2NjIgQzI1LjE1ODM0LDM3LjczNjM1ODIgMjUuMDkxNzQsMzcuNjkzNzcxMSAyNC45ODg3NCwzNy42OTM3NzExIEMyNC45NTIzNCwzNy42OTM3NzExIDI0LjkxNjE0LDM3LjcwMDEzOTMgMjQuODkxOTQsMzcuNzAwMTM5MyBMMjQuODkxOTQsMzcuOTI5MTk0IFogTTI0Ljg3OTU0LDM4LjQ3ODA0OTggTDI0LjU4Mjk0LDM4LjQ3ODA0OTggTDI0LjU4Mjk0LDM3LjUxOTA0NDggQzI0LjY0OTM0LDM3LjUwNzMwMzUgMjQuODA2OTQsMzcuNDgzMjIzOSAyNS4wMDY5NCwzNy40ODMyMjM5IEMyNS4yMjUxNCwzNy40ODMyMjM5IDI1LjMyMTk0LDM3LjUxMzI3MzYgMjUuMzk0NzQsMzcuNTYxNDMyOCBDMjUuNDU1MzQsMzcuNjAzNjIxOSAyNS40OTc3NCwzNy42NzYwNTk3IDI1LjQ5Nzc0LDM3Ljc3MjM3ODEgQzI1LjQ5Nzc0LDM3Ljg2OTA5NDUgMjUuNDA2OTQsMzcuOTUzMjczNiAyNS4yNzM1NCwzNy45ODk2OTE1IEwyNS4yNzM1NCwzOC4wMDE4MzA4IEMyNS4zODI3NCwzOC4wMzE2ODE2IDI1LjQ0MzE0LDM4LjExMDA4OTYgMjUuNDczNTQsMzguMjQ4Nzk2IEMyNS41MDM5NCwzOC4zODc3MDE1IDI1LjUyMTk0LDM4LjQ0MTYzMTggMjUuNTQwMzQsMzguNDc4MDQ5OCBMMjUuMjA3MTQsMzguNDc4MDQ5OCBDMjUuMTc2NzQsMzguNDQxNjMxOCAyNS4xNTgzNCwzOC4zNTc0NTI3IDI1LjE0MDE0LDM4LjI3MzA3NDYgQzI1LjEyMjE0LDM4LjE3NjU1NzIgMjUuMDczNzQsMzguMTI4Mzk4IDI0Ljk3NjU0LDM4LjEyODM5OCBMMjQuODc5NTQsMzguMTI4Mzk4IEwyNC44Nzk1NCwzOC40NzgwNDk4IFogTTI1LjAwMDk0LDM3LjIwNTQxMjkgQzI0LjU3Njc0LDM3LjIwNTQxMjkgMjQuMjU1MzQsMzcuNTQ5NDkyNSAyNC4yNTUzNCwzNy45ODk2OTE1IEMyNC4yNTUzNCwzOC40MTc1NTIyIDI0LjU3Njc0LDM4Ljc2NzQwMyAyNS4wMTI5NCwzOC43Njc0MDMgQzI1LjQ0OTM0LDM4Ljc3MzU3MjEgMjUuNzcwNTQsMzguNDE3NTUyMiAyNS43NzA1NCwzNy45ODMzMjM0IEMyNS43NzA1NCwzNy41NDk0OTI1IDI1LjQ0OTM0LDM3LjIwNTQxMjkgMjUuMDA2OTQsMzcuMjA1NDEyOSBMMjUuMDAwOTQsMzcuMjA1NDEyOSBaIE0yNS4wMTkxNCwzNi45NDY3MDY1IEMyNS42MTI5NCwzNi45NDY3MDY1IDI2LjA4NTc0LDM3LjQxMDk4NTEgMjYuMDg1NzQsMzcuOTgzMzIzNCBDMjYuMDg1NzQsMzguNTYyNjI2OSAyNS42MTI5NCwzOS4wMjY5MDU1IDI1LjAxMjk0LDM5LjAyNjkwNTUgQzI0LjQxMjk0LDM5LjAyNjkwNTUgMjMuOTM0MzQsMzguNTYyNjI2OSAyMy45MzQzNCwzNy45ODMzMjM0IEMyMy45MzQzNCwzNy40MTA5ODUxIDI0LjQxMjk0LDM2Ljk0NjcwNjUgMjUuMDEyOTQsMzYuOTQ2NzA2NSBMMjUuMDE5MTQsMzYuOTQ2NzA2NSBaIixpZDoiRmlsbC0yNiIsZmlsbDoiI0ZGRkZGRiJ9KSkpKX07JEQuZGlzcGxheU5hbWU9IlNWR0xvZ29BbmROYW1lIjt2YXIgWEQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1sb2dvLWFuZC1uYW1lIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1sb2dvLWFuZC1uYW1lIik6Ikljb25zLWxvZ28tYW5kLW5hbWUiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzokRH0pfTtYRC5kaXNwbGF5TmFtZT0iTG9nb0FuZE5hbWUiLFhELnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGVUPVhELHRUPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1tYWludGVuYW5jZSIsdmlld0JveDoiMCAwIDIyMCAxMzEifSxFLmEuY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgibGluZWFyR3JhZGllbnQiLHt4MToiMTI5LjU0Nzg5NiUiLHkxOiIxMzAuNjA1NSUiLHgyOiIwJSIseTI6IjAlIixpZDoibGluZWFyR3JhZGllbnQtMSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7c3RvcENvbG9yOiIjMzM0NDhBIixvZmZzZXQ6IjAlIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7c3RvcENvbG9yOiIjMDI2RUFEIixvZmZzZXQ6IjEwMCUifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJsaW5lYXJHcmFkaWVudCIse3gxOiIwJSIseTE6IjAlIix4MjoiMTAwJSIseTI6IjEwMCUiLGlkOiJsaW5lYXJHcmFkaWVudC0yIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInN0b3AiLHtzdG9wQ29sb3I6IiNGNkRCMzgiLG9mZnNldDoiMCUifSksRS5hLmNyZWF0ZUVsZW1lbnQoInN0b3AiLHtzdG9wQ29sb3I6IiNGRjg5M0UiLG9mZnNldDoiMTAwJSJ9KSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6IjVhIixzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoLTU5NC4wMDAwMDAsIC0yODMuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6Ikdyb3VwIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgyODguMDAwMDAwLCAyMDkuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6Ikdyb3VwLTMiLHRyYW5zZm9ybToidHJhbnNsYXRlKDExOC4wMDAwMDAsIDc1LjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJHcm91cC0yIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgxODkuMDAwMDAwLCAwLjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xOS42OTY3MTkyLDI1LjUgQzIyLjQ1ODE0MjksMjUuNSAyNC42OTY3MTkyLDIzLjI2MTQyMzcgMjQuNjk2NzE5MiwyMC41IEMyNC42OTY3MTkyLDE3LjczODU3NjMgMjIuNDU4MTQyOSwxNS41IDE5LjY5NjcxOTIsMTUuNSBDMTYuOTM1Mjk1NCwxNS41IDE0LjY5NjcxOTIsMTcuNzM4NTc2MyAxNC42OTY3MTkyLDIwLjUgQzE0LjY5NjcxOTIsMjMuMjYxNDIzNyAxNi45MzUyOTU0LDI1LjUgMTkuNjk2NzE5MiwyNS41IFogTTE5LjY5NjcxOTIsNjUuNSBDMjIuNDU4MTQyOSw2NS41IDI0LjY5NjcxOTIsNjMuMjYxNDIzNyAyNC42OTY3MTkyLDYwLjUgQzI0LjY5NjcxOTIsNTcuNzM4NTc2MyAyMi40NTgxNDI5LDU1LjUgMTkuNjk2NzE5Miw1NS41IEMxNi45MzUyOTU0LDU1LjUgMTQuNjk2NzE5Miw1Ny43Mzg1NzYzIDE0LjY5NjcxOTIsNjAuNSBDMTQuNjk2NzE5Miw2My4yNjE0MjM3IDE2LjkzNTI5NTQsNjUuNSAxOS42OTY3MTkyLDY1LjUgWiBNMTkuNjk2NzE5MiwxMDUuNSBDMjIuNDU4MTQyOSwxMDUuNSAyNC42OTY3MTkyLDEwMy4yNjE0MjQgMjQuNjk2NzE5MiwxMDAuNSBDMjQuNjk2NzE5Miw5Ny43Mzg1NzYzIDIyLjQ1ODE0MjksOTUuNSAxOS42OTY3MTkyLDk1LjUgQzE2LjkzNTI5NTQsOTUuNSAxNC42OTY3MTkyLDk3LjczODU3NjMgMTQuNjk2NzE5MiwxMDAuNSBDMTQuNjk2NzE5MiwxMDMuMjYxNDI0IDE2LjkzNTI5NTQsMTA1LjUgMTkuNjk2NzE5MiwxMDUuNSBaIE0wLjUsNS41MDUzMjIxMyBDMC41LDIuNzQwOTU5MDUgMi43MzE3MTQ0NiwwLjUgNS40OTY1OTgwNywwLjUgTDE2OS41MDM0MDIsMC41IEMxNzIuMjYyOTQ3LDAuNSAxNzQuNSwyLjczNjI4NDM5IDE3NC41LDUuNTA1MzIyMTMgTDE3NC41LDM1LjQ5NDY3NzkgQzE3NC41LDM4LjI1OTA0MSAxNzIuMjY4Mjg2LDQwLjUgMTY5LjUwMzQwMiw0MC41IEw1LjQ5NjU5ODA3LDQwLjUgQzIuNzM3MDUzMTUsNDAuNSAwLjUsMzguMjYzNzE1NiAwLjUsMzUuNDk0Njc3OSBMMC41LDUuNTA1MzIyMTMgWiBNMC41LDQ1LjUwNTMyMjEgQzAuNSw0Mi43NDA5NTkgMi43MzE3MTQ0Niw0MC41IDUuNDk2NTk4MDcsNDAuNSBMMTY5LjUwMzQwMiw0MC41IEMxNzIuMjYyOTQ3LDQwLjUgMTc0LjUsNDIuNzM2Mjg0NCAxNzQuNSw0NS41MDUzMjIxIEwxNzQuNSw3NS40OTQ2Nzc5IEMxNzQuNSw3OC4yNTkwNDEgMTcyLjI2ODI4Niw4MC41IDE2OS41MDM0MDIsODAuNSBMNS40OTY1OTgwNyw4MC41IEMyLjczNzA1MzE1LDgwLjUgMC41LDc4LjI2MzcxNTYgMC41LDc1LjQ5NDY3NzkgTDAuNSw0NS41MDUzMjIxIFogTTAuNSw4NS41MDUzMjIxIEMwLjUsODIuNzQwOTU5IDIuNzMxNzE0NDYsODAuNSA1LjQ5NjU5ODA3LDgwLjUgTDE2OS41MDM0MDIsODAuNSBDMTcyLjI2Mjk0Nyw4MC41IDE3NC41LDgyLjczNjI4NDQgMTc0LjUsODUuNTA1MzIyMSBMMTc0LjUsMTE1LjQ5NDY3OCBDMTc0LjUsMTE4LjI1OTA0MSAxNzIuMjY4Mjg2LDEyMC41IDE2OS41MDM0MDIsMTIwLjUgTDUuNDk2NTk4MDcsMTIwLjUgQzIuNzM3MDUzMTUsMTIwLjUgMC41LDExOC4yNjM3MTYgMC41LDExNS40OTQ2NzggTDAuNSw4NS41MDUzMjIxIFogTTE1Ny41LDEyIEwxNTcuNSwyOCBMMTU3LjUsMTIgWiBNMTQ3LjUsMTIgTDE0Ny41LDI4IEwxNDcuNSwxMiBaIE0xMzcuNSwxMiBMMTM3LjUsMjggTDEzNy41LDEyIFogTTEyNy41LDEyIEwxMjcuNSwyOCBMMTI3LjUsMTIgWiIsaWQ6IkNvbWJpbmVkLVNoYXBlIixzdHJva2U6InVybCgjbGluZWFyR3JhZGllbnQtMSkiLHN0cm9rZVdpZHRoOiIzIixzdHJva2VMaW5lY2FwOiJzcXVhcmUifSksRS5hLmNyZWF0ZUVsZW1lbnQoImNpcmNsZSIse2lkOiJPdmFsLTQiLGZpbGw6IiMwOTNDNUEiLGN4OiIxNjMuNSIsY3k6Ijc1LjUiLHI6IjQwLjUifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTgzLjk5Nyw0MC4zNjI2IEwxODQsNzEuOTg5NiBMMTY2LDcxLjk4OTYgTDE2Niw0MC4zNjM2IEMxNTMuODI5LDQ0LjE4NjYgMTQ1LDU1LjU1NjYgMTQ1LDY4Ljk4OTYgQzE0NSw4Mi40MTg2IDE1My44MjMsOTMuNzg2NiAxNjUuOTg4LDk3LjYxMjYgTDE2NiwxMzQuOTg5NiBMMTg0LDEzNC45ODk2IEwxODMuOTg3LDk3LjYyMDYgQzE5Ni4xNjUsOTMuODAxNiAyMDUsODIuNDI3NiAyMDUsNjguOTg5NiBDMjA1LDU1LjU1NTYgMTk2LjE3LDQ0LjE4NDYgMTgzLjk5Nyw0MC4zNjI2IFoiLGlkOiJQYWdlLTEiLHN0cm9rZToidXJsKCNsaW5lYXJHcmFkaWVudC0yKSIsc3Ryb2tlV2lkdGg6IjMiLHRyYW5zZm9ybToidHJhbnNsYXRlKDE3Ni4wMDAwMDAsIDg2LjQ5NDgwMCkgcm90YXRlKC00NS4wMDAwMDApIHRyYW5zbGF0ZSgtMTc2LjAwMDAwMCwgLTg2LjQ5NDgwMCkgIn0pKSkpKSl9O3RULmRpc3BsYXlOYW1lPSJTVkdNYWludGVuYW5jZSI7dmFyIG5UPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tbWFpbnRlbmFuY2UiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLW1haW50ZW5hbmNlIik6Ikljb25zLW1haW50ZW5hbmNlIixvbkNsaWNrOmUub25DbGljayxzdmc6dFR9KX07blQuZGlzcGxheU5hbWU9Ik1haW50ZW5hbmNlIixuVC5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciByVD1uVCxvVD1mdW5jdGlvbihlKXt2YXIgdD1lLnRpdGxlLG49dC50ZXh0LHI9dC50aW1lLG89dC50aW1lWm9uZSxhPWUuc3ViVGl0bGU7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ik1haW50ZW5hbmNlU2NyZWVuIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiTWFpbnRlbmFuY2VTY3JlZW4tbG9nbyJ9LEUuYS5jcmVhdGVFbGVtZW50KGVULG51bGwpKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJNYWludGVuYW5jZVNjcmVlbi1jb250ZW50In0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiTWFpbnRlbmFuY2VTY3JlZW4tZ3JhcGhpYyJ9LEUuYS5jcmVhdGVFbGVtZW50KHJULG51bGwpKSxFLmEuY3JlYXRlRWxlbWVudCgicCIse2NsYXNzTmFtZToiTWFpbnRlbmFuY2VTY3JlZW4tdGl0bGUifSxuLCLCoCIsRS5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Ik1haW50ZW5hbmNlU2NyZWVuLWhpZ2hsaWdodGVkIn0sciksbyksRS5hLmNyZWF0ZUVsZW1lbnQoInAiLHtjbGFzc05hbWU6Ik1haW50ZW5hbmNlU2NyZWVuLXN1YnRpdGxlIn0sYSkpKX07b1QuZGlzcGxheU5hbWU9Ik1haW50ZW5hbmNlU2NyZWVuIixvVC5wcm9wVHlwZXM9e3RpdGxlOlYuYS5zaGFwZSh7dGV4dDpWLmEuc3RyaW5nLHRpbWU6Vi5hLnN0cmluZyx0aW1lWm9uZTpWLmEuc3RyaW5nfSksc3ViVGl0bGU6Vi5hLmFueX0sb1QuZGVmYXVsdFByb3BzPXt0aXRsZTp7dGV4dDoiV2UncmUgZG93biBmb3IgbWFpbnRlbmFuY2UuIFdlJ2xsIGJlIGJhY2sgdXAgYnkiLHRpbWU6IjIgQU0gIix0aW1lWm9uZToiRVNULiJ9LHN1YlRpdGxlOiJTb3JyeSBmb3IgYW55IGluY29udmVuaWVuY2UuIn07dmFyIGFUPW9ULGlUPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlybU1lc3NhZ2Usbj1lLmlzT3BlbixyPWUuaGVhZGVyTGFiZWwsbz1lLm9uQ29uZmlybU1vZGFsQ2FuY2VsLGE9ZS5vbkNvbmZpcm1Nb2RhbENvbnRpbnVlLGk9ZS5jb25maXJtQ2FuY2VsQnRuTWVzc2FnZSx1PWUuY29uZmlybUNvbnRpbnVlQnRuTWVzc2FnZTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoZnAse2lzT3BlbjpuLGhlYWRlckxhYmVsOnIsb25SZXF1ZXN0Q2xvc2U6byxzaG91bGRDbG9zZU9uT3ZlcmxheUNsaWNrOiEwLHpJbmRleDozfSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJDb25maXJtIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiQ29uZmlybS1NZXNzYWdlIn0sIiAiLHQsIiAiKSxFLmEuY3JlYXRlRWxlbWVudCh5aCx7Y2xhc3NOYW1lOiJDb25maXJtLUNhbmNlbEJ0biIsYWN0aXZlOiEwLGRpc2FibGVkOiExLGJzU2l6ZToibGFyZ2UiLGJzU3R5bGU6ImRlZmF1bHQiLG9uQ2xpY2s6byx0eXBlOiJidXR0b24ifSxpKSxFLmEuY3JlYXRlRWxlbWVudCh5aCx7Y2xhc3NOYW1lOiJDb25maXJtLUNvbnRpbnVlQnRuIixhY3RpdmU6ITAsZGlzYWJsZWQ6ITEsYnNTaXplOiJsYXJnZSIsYnNTdHlsZToiZGVmYXVsdCIsb25DbGljazphLHR5cGU6ImJ1dHRvbiJ9LHUpKSl9O2lULmRpc3BsYXlOYW1lPSJDb25maXJtIixpVC5wcm9wVHlwZXM9e2lzT3BlbjpWLmEuYm9vbC5pc1JlcXVpcmVkLG9uQ29uZmlybU1vZGFsQ2FuY2VsOlYuYS5mdW5jLmlzUmVxdWlyZWQsb25Db25maXJtTW9kYWxDb250aW51ZTpWLmEuZnVuYy5pc1JlcXVpcmVkLGNvbmZpcm1DYW5jZWxCdG5NZXNzYWdlOlYuYS5zdHJpbmcsY29uZmlybUNvbnRpbnVlQnRuTWVzc2FnZTpWLmEuc3RyaW5nLGhlYWRlckxhYmVsOlYuYS5zdHJpbmcsY29uZmlybU1lc3NhZ2U6Vi5hLnN0cmluZy5pc1JlcXVpcmVkfTt2YXIgdVQ9aVQsc1Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5xYWlkLG49ZS5jbGFzc05hbWUscj1lLmxlZnRMYWJlbCxvPWUucmlnaHRMYWJlbCxhPWUubGVmdFZhbHVlLGk9ZS5yaWdodFZhbHVlLHU9ZS52YWx1ZSxzPWUub25DbGljayxsPWUuZGlzYWJsZWQsYz1UdCgpKCJUb2dnbGVJbnB1dCIsbiksZj0hMTthPT09dSYmKGY9ITApO3ZhciBkPVR0KCkoIlRvZ2dsZUlucHV0LXRvZ2dsZSIseyJUb2dnbGVJbnB1dC10b2dnbGUtbGVmdCI6ZiwiVG9nZ2xlSW5wdXQtdG9nZ2xlLXJpZ2h0IjohZn0pLHA9VHQoKSgiVG9nZ2xlSW5wdXQtbGFiZWwiLHsiVG9nZ2xlSW5wdXQtbGFiZWwtZW5hYmxlZCI6ZiYmIWx9KSxoPVR0KCkoIlRvZ2dsZUlucHV0LWxhYmVsIix7IlRvZ2dsZUlucHV0LWxhYmVsLWVuYWJsZWQiOiFmJiYhbH0pLHk9VHQoKSgiVG9nZ2xlSW5wdXQtdG9nZ2xlLWJnIix7IlRvZ2dsZUlucHV0LXRvZ2dsZS1iZy1kaXNhYmxlZCI6bH0pLG09YTthPT09dSYmKG09aSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtpZDp0LGNsYXNzTmFtZTpjfSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOnAsb25DbGljazpmdW5jdGlvbigpe2x8fHMoYSl9fSxyKSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOnksb25DbGljazpmdW5jdGlvbigpe2x8fHMobSl9fSxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOmR9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpoLG9uQ2xpY2s6ZnVuY3Rpb24oKXtsfHxzKGkpfX0sbykpfTtzVC5kaXNwbGF5TmFtZT0iVG9nZ2xlSW5wdXQiLHNULnByb3BUeXBlcz17bGVmdExhYmVsOlYuYS5zdHJpbmcscmlnaHRMYWJlbDpWLmEuc3RyaW5nLGxlZnRWYWx1ZTpWLmEuYW55LmlzUmVxdWlyZWQscmlnaHRWYWx1ZTpWLmEuYW55LmlzUmVxdWlyZWQscWFpZDpWLmEuc3RyaW5nLGNsYXNzTmFtZTpWLmEuc3RyaW5nLHZhbHVlOlYuYS5hbnkuaXNSZXF1aXJlZCxvbkNsaWNrOlYuYS5mdW5jLmlzUmVxdWlyZWQsZGlzYWJsZWQ6Vi5hLmJvb2x9O3ZhciBsVD1zVCxjVD17ZGlnaXRhbF9hdWRpb19mdWxsX2xlbmd0aF9kaWdpdGFsOiJBbGJ1bSIsZGlnaXRhbF9hdWRpb19lcF9kaWdpdGFsOiJFUCIsZGlnaXRhbF9hdWRpb19zaW5nbGVfZGlnaXRhbDoiU2luZ2xlIixkaWdpdGFsX2F1ZGlvX3NpbmdsZToiU2luZ2xlIixkaWdpdGFsX2F1ZGlvX2Z1bGxfbGVuZ3RoOiJBbGJ1bSIscGh5c2ljYWxfYXVkaW9fMTJfdmlueWxfYWxidW06JzEyIiBBbGJ1bScscGh5c2ljYWxfYXVkaW9fY2RfYWxidW06IkNEIEFsYnVtIixtdXNpY192aWRlb19mdWxsX2xlbmd0aDoiTXVzaWMgVmlkZW8iLG11c2ljX3ZpZGVvX2Z1bGxfbGVuZ3RoX211c2ljX3ZpZGVvOiJNdXNpYyBWaWRlbyIscGh5c2ljYWxfYXVkaW9fMTJfdmlueWxfZXA6JzEyIiBFUCcscGh5c2ljYWxfYXVkaW9fMTJfdmlueWxfc2luZ2xlOicxMiIgU2luZ2xlJyxwaHlzaWNhbF9hdWRpb18xMF92aW55bF9lcDonMTAiIEVQJyxwaHlzaWNhbF9hdWRpb18xMF92aW55bF9zaW5nbGU6JzEyIiBTaW5nbGUnLHBoeXNpY2FsX2F1ZGlvXzEwX3ZpbnlsX2FsYnVtOicxMCIgQWxidW0nLHBoeXNpY2FsX2F1ZGlvXzdfdmlueWxfZXA6JzciIEVQJyxwaHlzaWNhbF9hdWRpb183X3ZpbnlsX3NpbmdsZTonNyIgU2luZ2xlJyxkaWdpdGFsX2F1ZGlvX2VwOiJFUCIscGh5c2ljYWxfYXVkaW9fY2Fzc2V0dGVfZXA6IkNhc3NldHRlIEVQIixwaHlzaWNhbF9hdWRpb19jYXNzZXR0ZV9zaW5nbGU6IkNhc3NldHRlIFNpbmdsZSIscGh5c2ljYWxfYXVkaW9fY2Fzc2V0dGVfYWxidW06IkNhc3NldHRlIEFsYnVtIixwaHlzaWNhbF9hdWRpb19jZF9lcDoiQ0QgRVAiLHBoeXNpY2FsX2F1ZGlvX2NkX3NpbmdsZToiQ0QgU2luZ2xlIixtdXNpY192aWRlb19seXJpY3M6Ikx5cmljcyBNdXNpYyBWaWRlbyIsbXVzaWNfdmlkZW9fcHN1ZWRvOiJQc2V1ZG8gVmlkZW8iLG11c2ljX3ZpZGVvX3BzZXVkbzoiUHNldWRvIFZpZGVvIixtdXNpY192aWRlb19wcm9tbzoiUHJvbW8iLG11c2ljX3ZpZGVvX2xpdmU6IkxpdmUiLG11c2ljX3ZpZGVvX290aGVyOiJPdGhlciJ9LGZUPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iIi5jb25jYXQoT2JqZWN0KEYudG9Mb3dlcikoZSksIl8iKS5jb25jYXQoT2JqZWN0KEYudG9Mb3dlcikodCksIl8iKS5jb25jYXQoT2JqZWN0KEYudG9Mb3dlcikobikpO3I9KHI9KHI9KHI9ci5yZXBsYWNlKC9bXmEtejAtOV0vZywiXyIpKS5yZXBsYWNlKC9cZF94Xy8sIl8iKSkucmVwbGFjZSgvX3syLH0vZywiXyIpKS5yZXBsYWNlKC9eX3xfJC9nLCIiKTt2YXIgbz1jVFtyXTtyZXR1cm4gb3x8ITF9LGRUPWZ1bmN0aW9uKGUpe3ZhciB0PWUudHlwZU9mVmlkZW8sbj1lLnByb2R1Y3RDb25maWd1cmF0aW9uLHI9ZS5mb3JtYXQsbz1lLmNvbmZpZ3VyYXRpb247cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLHR8fChmVChuLHIsbyk/ZlQobixyLG8pOnIpfHwiVmlkZW8iKX07ZFQuZGlzcGxheU5hbWU9IlByb2R1Y3REaXNwbGF5VHlwZSIsZFQucHJvcFR5cGVzPXtwcm9kdWN0Q29uZmlndXJhdGlvbjpWLmEuc3RyaW5nLGZvcm1hdDpWLmEuc3RyaW5nLHR5cGVPZlZpZGVvOlYuYS5zdHJpbmcsY29uZmlndXJhdGlvbjpWLmEuc3RyaW5nfTt2YXIgcFQ9ZFQ7ZnVuY3Rpb24gaFQoKXtyZXR1cm4oaFQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB5VChlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99dmFyIG1UPWZ1bmN0aW9uKGUpe3ZhciB0PWUubG9hZGluZyxuPXlUKGUsWyJsb2FkaW5nIl0pLHI9bi5kaXNhYmxlZCxvPXlUKG4sWyJkaXNhYmxlZCJdKSxhPSJ2aXNpYmxlIjtyZXR1cm4gdCYmKGE9ImhpZGRlbiIscj0hMCksRS5hLmNyZWF0ZUVsZW1lbnQoeWgsaFQoe30sbyx7ZGlzYWJsZWQ6cn0pLHQmJkUuYS5jcmVhdGVFbGVtZW50KE5rLHtzbWFsbDohMCx0b3A6N30pLEUuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7c3R5bGU6e3Zpc2liaWxpdHk6YX19LGUuY2hpbGRyZW4pKX07bVQuZGlzcGxheU5hbWU9IkxvYWRpbmdCdXR0b24iLG1ULnByb3BUeXBlcz17bG9hZGluZzpWLmEuYm9vbCxjaGlsZHJlbjpWLmEubm9kZSxkaXNhYmxlZDpWLmEuYm9vbH07dmFyIHZUPW1ULGdUPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIiIuY29uY2F0KGUsIiBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlICIpLmNvbmNhdCh0LCIgaW5zdGVhZC4gQ2hlY2sgdGhlIEZSQyB3ZWJzaXRlIGZvciBtb3JlIGluZm8uIil9LGJUPWZ1bmN0aW9uKGUsdCl7InByb2QiIT09d2luZG93Lk9SQ0hBUkRfRU5WJiZjb25zb2xlLndhcm4oZ1QoZSx0KSl9O2Z1bmN0aW9uIHdUKGUpe3JldHVybih3VD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIF9UKCl7cmV0dXJuKF9UPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRVQoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBPVChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIGtUKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09d1QodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P3hUKGUpOnR9ZnVuY3Rpb24gQ1QoZSl7cmV0dXJuKENUPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiB4VChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gU1QoZSx0KXtyZXR1cm4oU1Q9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIERUKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgVFQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47RVQodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gRFQoeFQobj1rVCh0aGlzLChlPUNUKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwiaGFuZGxlQnV0dG9uQ2xpY2siLChmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPW4ucHJvcHMub25TZWxlY3Q7ciYmcih0LGUpfX0pKSxEVCh4VChuKSwiX3JlbmRlckNoaWxkRWxlbWVudHMiLChmdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMsdD1lLmNoaWxkRWxlbWVudHMscj1lLnNlbGVjdGVkSW5kZXgsbz1lLnNlbGVjdGVkSW5kZXhlcyxhPWUudmFyaWFudCxpPWUuc2l6ZSx1PWUuZGlzYWJsZWQscz1lLmF1dG9TZXRXaWR0aCxsPWUubXVsdGksYz0iIi5jb25jYXQoMTAwL01hdGgubWF4KDEsdC5sZW5ndGgpLCIlIik7cmV0dXJuIHQubWFwKChmdW5jdGlvbihlLHQpe3ZhciBmPWUuaWNvbixkPXZvaWQgMD09PWY/bnVsbDpmLHA9ZS50ZXh0LGg9dm9pZCAwPT09cD9udWxsOnAseT1lLmlkLG09dm9pZCAwPT09eT9udWxsOnksdj1lLmNsYXNzTmFtZSxnPXZvaWQgMD09PXY/bnVsbDp2LGI9e3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOlR0KCkoeyJCdXR0b25zUm93LWFjdGl2ZSI6bD9PYmplY3QoRi5pbmNsdWRlcykobyx0KTp0PT09cn0sZyksc3R5bGU6cz97d2lkdGg6Y306bnVsbCx2YXJpYW50OmEsc2l6ZTppLGRpc2FibGVkOnUsb25DbGljazpuLmhhbmRsZUJ1dHRvbkNsaWNrKHQsZSl9O3JldHVybiBtJiYoYi5pZD1tKSxFLmEuY3JlYXRlRWxlbWVudCh5aCxfVCh7a2V5OnR9LGIpLGQsRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiQnV0dG9uc1Jvdy10ZXh0In0saCkpfSkpfSkpLG59dmFyIG4scixvO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZTVChlLHQpfSh0LGUpLG49dCwocj1be2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2JUKCJCdXR0b25zUm93IiwiQnV0dG9uR3JvdXAiKTt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jbGFzc05hbWUsbj1lLnNpemU7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHlnLHtzaXplOm4sY2xhc3NOYW1lOlR0KCkoIkJ1dHRvbnNSb3ciLHQpfSx0aGlzLl9yZW5kZXJDaGlsZEVsZW1lbnRzKCkpfX1dKSYmT1Qobi5wcm90b3R5cGUsciksbyYmT1QobixvKSx0fShfLkNvbXBvbmVudCk7RFQoVFQsInByb3BUeXBlcyIse2NoaWxkRWxlbWVudHM6Vi5hLmFycmF5LmlzUmVxdWlyZWQsY2xhc3NOYW1lOlYuYS5zdHJpbmcsb25TZWxlY3Q6Vi5hLmZ1bmMsZGlzYWJsZWQ6Vi5hLmJvb2wsc2VsZWN0ZWRJbmRleDpWLmEubnVtYmVyLHNlbGVjdGVkSW5kZXhlczpWLmEuYXJyYXlPZihWLmEubnVtYmVyKSxhdXRvU2V0V2lkdGg6Vi5hLmJvb2wsdmFyaWFudDpWLmEub25lT2YoWyJwcmltYXJ5Iiwib3V0bGluZS1wcmltYXJ5Iiwic2Vjb25kYXJ5Iiwib3V0bGluZS1zZWNvbmRhcnkiLCJzdWNjZXNzIiwib3V0bGluZS1zdWNjZXNzIiwid2FybmluZyIsIm91dGxpbmUtd2FybmluZyIsImRhbmdlciIsIm91dGxpbmUtZGFuZ2VyIiwiaW5mbyIsIm91dGxpbmUtaW5mbyIsImxpZ2h0Iiwib3V0bGluZS1saWdodCIsImRhcmsiLCJvdXRsaW5lLWRhcmsiLCJsaW5rIl0pLHNpemU6Vi5hLm9uZU9mKFsic20iLCJsZyJdKSxtdWx0aTpWLmEuYm9vbH0pLERUKFRULCJkZWZhdWx0UHJvcHMiLHt2YXJpYW50OiJzZWNvbmRhcnkiLGRpc2FibGVkOiExLGF1dG9TZXRXaWR0aDohMCxzZWxlY3RlZEluZGV4ZXM6W10sbXVsdGk6ITF9KSxUVC5kaXNwbGF5TmFtZT0iQnV0dG9uc1JvdyI7dmFyIE1UPVRULFBUPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1kb3duLWRpcmVjdGlvbi1hcnJvdyIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTcuNzMwMjgzMTUsMTEuODcyNTAwNCBDNy43OTQ1OTI4NywxMS45NTg4ODY2IDcuOTAzMDU1NTEsMTIuMDAyMDc5NyA3Ljk4ODQ4MTg0LDEyLjAwMjA3OTcgQzguMDk2OTQ0NDksMTIuMDAyMDc5NyA4LjIwNDQ0NzI5LDExLjk1ODg4NjYgOC4yNjg3NTcsMTEuODcyNTAwNCBMMTMuODcwNDIwNyw2LjI3MTc5NjUxIEMxMy45NTY4MDY5LDYuMTg1NDEwMzMgMTQsNi4wOTkwMjQxNiAxNCw1Ljk5MTUyMTM2IEMxNCw1LjkwNTEzNTE4IDEzLjk1NjgwNjksNS43OTc2MzIzOCAxMy44NzA0MjA3LDUuNzExMjQ2MiBMMTMuMjY3NjM3Miw1LjEyOTU3OTI3IEMxMy4yMDIzNjc2LDUuMDQzMTkzMDkgMTMuMDk0ODY0OCw1IDEzLjAwODQ3ODYsNSBDMTIuOTAwOTc1OCw1IDEyLjc5MzQ3Myw1LjA0MzE5MzA5IDEyLjcyOTE2MzMsNS4xMjk1NzkyNyBMNy45ODg0ODE4NCw5Ljg0ODE4NDI5IEwzLjI3MDgzNjY3LDUuMTI5NTc5MjcgQzMuMTg0NDUwNDksNS4wNDMxOTMwOSAzLjA5ODA2NDMxLDUgMi45OTA1NjE1MSw1IEMyLjg4MzA1ODcxLDUgMi43OTY2NzI1Myw1LjA0MzE5MzA5IDIuNzEwMjg2MzUsNS4xMjk1NzkyNyBMMi4xMjg2MTk0Miw1LjcxMTI0NjIgQzIuMDQyMjMzMjQsNS43OTc2MzIzOCAyLDUuOTA1MTM1MTggMiw1Ljk5MTUyMTM2IEMyLDYuMDk5MDI0MTYgMi4wNDIyMzMyNCw2LjE4NTQxMDMzIDIuMTI4NjE5NDIsNi4yNzE3OTY1MSBMNy43MzAyODMxNSwxMS44NzI1MDA0IFoifSkpKX07UFQuZGlzcGxheU5hbWU9IlNWR0Rvd25EaXJlY3Rpb25BcnJvdyI7dmFyIE5UPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tZG93bi1kaXJlY3Rpb24tYXJyb3ciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWRvd24tZGlyZWN0aW9uLWFycm93Iik6Ikljb25zLWRvd24tZGlyZWN0aW9uLWFycm93IixvbkNsaWNrOmUub25DbGljayxzdmc6UFR9KX07TlQuZGlzcGxheU5hbWU9IkRvd25EaXJlY3Rpb25BcnJvdyIsTlQucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgalQ9TlQsTFQ9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXVwLWRpcmVjdGlvbi1hcnJvdyIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTcuNzMwMjgzMTUsMTAuODcwNDIwNyBDNy43OTQ1OTI4NywxMC45NTY4MDY5IDcuOTAzMDU1NTEsMTEgNy45ODg0ODE4NCwxMSBDOC4wOTY5NDQ0OSwxMSA4LjIwNDQ0NzI5LDEwLjk1NjgwNjkgOC4yNjg3NTcsMTAuODcwNDIwNyBMMTMuODcwNDIwNyw1LjI2OTcxNjg1IEMxMy45NTY4MDY5LDUuMTgzMzMwNjcgMTQsNS4wOTY5NDQ0OSAxNCw0Ljk4OTQ0MTY5IEMxNCw0LjkwMzA1NTUxIDEzLjk1NjgwNjksNC43OTU1NTI3MSAxMy44NzA0MjA3LDQuNzA5MTY2NTMgTDEzLjI2NzYzNzIsNC4xMjc0OTk2IEMxMy4yMDIzNjc2LDQuMDQxMTEzNDIgMTMuMDk0ODY0OCwzLjk5NzkyMDMzIDEzLjAwODQ3ODYsMy45OTc5MjAzMyBDMTIuOTAwOTc1OCwzLjk5NzkyMDMzIDEyLjc5MzQ3Myw0LjA0MTExMzQyIDEyLjcyOTE2MzMsNC4xMjc0OTk2IEw3Ljk4ODQ4MTg0LDguODQ2MTA0NjIgTDMuMjcwODM2NjcsNC4xMjc0OTk2IEMzLjE4NDQ1MDQ5LDQuMDQxMTEzNDIgMy4wOTgwNjQzMSwzLjk5NzkyMDMzIDIuOTkwNTYxNTEsMy45OTc5MjAzMyBDMi44ODMwNTg3MSwzLjk5NzkyMDMzIDIuNzk2NjcyNTMsNC4wNDExMTM0MiAyLjcxMDI4NjM1LDQuMTI3NDk5NiBMMi4xMjg2MTk0Miw0LjcwOTE2NjUzIEMyLjA0MjIzMzI0LDQuNzk1NTUyNzEgMiw0LjkwMzA1NTUxIDIsNC45ODk0NDE2OSBDMiw1LjA5Njk0NDQ5IDIuMDQyMjMzMjQsNS4xODMzMzA2NyAyLjEyODYxOTQyLDUuMjY5NzE2ODUgTDcuNzMwMjgzMTUsMTAuODcwNDIwNyBaIix0cmFuc2Zvcm06InRyYW5zbGF0ZSg4LjAwMDAwMCwgNy40OTg5NjApIHNjYWxlKDEsIC0xKSByb3RhdGUoLTM2MC4wMDAwMDApIHRyYW5zbGF0ZSgtOC4wMDAwMDAsIC03LjQ5ODk2MCkgIn0pKSl9O0xULmRpc3BsYXlOYW1lPSJTVkdVcERpcmVjdGlvbkFycm93Ijt2YXIgUlQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi11cC1kaXJlY3Rpb24tYXJyb3ciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXVwLWRpcmVjdGlvbi1hcnJvdyIpOiJJY29ucy11cC1kaXJlY3Rpb24tYXJyb3ciLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpMVH0pfTtSVC5kaXNwbGF5TmFtZT0iVXBEaXJlY3Rpb25BcnJvdyIsUlQucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgSVQ9UlQ7ZnVuY3Rpb24gQVQoZSl7cmV0dXJuKEFUPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gRlQoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBCVChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIHpUKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09QVQodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P3FUKGUpOnR9ZnVuY3Rpb24gS1QoZSl7cmV0dXJuKEtUPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBxVChlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gVlQoZSx0KXtyZXR1cm4oVlQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIFVUKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgV1Q9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG47RlQodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyO2ErKylvW2FdPWFyZ3VtZW50c1thXTtyZXR1cm4gVVQocVQobj16VCh0aGlzLChlPUtUKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpKSwic3RhdGUiLHtpc0NvbGxhcHNlZDohMH0pLG59dmFyIG4scixvO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZWVChlLHQpfSh0LGUpLG49dCwocj1be2tleToiX3RvZ2dsZUNvbGxhcHNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnN0YXRlLmlzQ29sbGFwc2VkO3JldHVybiBmdW5jdGlvbigpe2Uuc2V0U3RhdGUoe2lzQ29sbGFwc2VkOiF0fSl9fX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnN0eWxlLG49ZS50aXRsZVRleHQscj1lLnN1YnRpdGxlVGV4dCxvPWUuY29sbGFwc2VkVGV4dCxhPWUuZXhwYW5kZWRUZXh0LGk9ZS5jaGlsZHJlbix1PXRoaXMuc3RhdGUuaXNDb2xsYXBzZWQscz0iZGFuZ2VyIj09PXQ/ImVycm9yIjoiaW5jb21wbGV0ZSI7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkNvbGxhcHNhYmxlQWxlcnQgQ29sbGFwc2FibGVBbGVydC0iLmNvbmNhdCh0KX0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiQ29sbGFwc2FibGVBbGVydC10b3AtYmFubmVyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoY1Mse3N0YXR1czpzfSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiQ29sbGFwc2FibGVBbGVydC10aXRsZXMifSxFLmEuY3JlYXRlRWxlbWVudCgiaDMiLHtjbGFzc05hbWU6IkNvbGxhcHNhYmxlQWxlcnQtIi5jb25jYXQodCwiLXRpdGxlIil9LG4pLEUuYS5jcmVhdGVFbGVtZW50KCJwIix7Y2xhc3NOYW1lOiJDb2xsYXBzYWJsZUFsZXJ0LXN1YnRpdGxlIn0scikpLEUuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJzdWJtaXQiLGNsYXNzTmFtZToiQ29sbGFwc2FibGVBbGVydC1idXR0b24iLG9uQ2xpY2s6dGhpcy5fdG9nZ2xlQ29sbGFwc2UoKX0sdT9vOmEsdT9FLmEuY3JlYXRlRWxlbWVudChqVCxudWxsKTpFLmEuY3JlYXRlRWxlbWVudChJVCxudWxsKSkpLCF1JiZFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJDb2xsYXBzYWJsZUFsZXJ0LWV4cGFuZGVkLWNvbnRlbnRzIn0saSkpfX1dKSYmQlQobi5wcm90b3R5cGUsciksbyYmQlQobixvKSx0fShfLkNvbXBvbmVudCk7VVQoV1QsImRlZmF1bHRQcm9wcyIse3N0eWxlOiJkZWZhdWx0Iixjb2xsYXBzZWRUZXh0OiJTRUUgUkVBU09OUyIsZXhwYW5kZWRUZXh0OiJISURFIFJFQVNPTlMifSksVVQoV1QsInByb3BUeXBlcyIse3N0eWxlOlYuYS5vbmVPZihbImRlZmF1bHQiLCJ3YXJuaW5nIiwiZGFuZ2VyIl0pLHRpdGxlVGV4dDpWLmEuc3RyaW5nLHN1YnRpdGxlVGV4dDpWLmEuc3RyaW5nLGNvbGxhcHNlZFRleHQ6Vi5hLnN0cmluZyxleHBhbmRlZFRleHQ6Vi5hLnN0cmluZyxjaGlsZHJlbjpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5ub2RlXSl9KSxVVChXVCwiZGlzcGxheU5hbWUiLCJDb2xsYXBzYWJsZUFsZXJ0IiksV1QuZGlzcGxheU5hbWU9IkNvbGxhcHNhYmxlQWxlcnQiO3ZhciBZVD1XVCxIVD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tY29tcGxldGUtY2hlY2ttYXJrIix2aWV3Qm94OiIwIDAgMTYgMTYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMjYwLjAwMDAwMCwgLTkwLjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDEwMi4wMDAwMDAsIDY0LjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse3BvaW50czoiMTYxIDM0LjUgMTYyLjUgMzMgMTY0LjUgMzUgMTY5LjUgMzAgMTcxIDMxLjUgMTY0LjUgMzgifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMTAwLjAwMDAwMCwgNjQuMDAwMDAwKSJ9KSkpKX07SFQuZGlzcGxheU5hbWU9IlNWR0NvbXBsZXRlQ2hlY2ttYXJrIjt2YXIgR1Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1jb21wbGV0ZS1jaGVja21hcmsiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWNvbXBsZXRlLWNoZWNrbWFyayIpOiJJY29ucy1jb21wbGV0ZS1jaGVja21hcmsiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpIVH0pfTtHVC5kaXNwbGF5TmFtZT0iQ29tcGxldGVDaGVja21hcmsiLEdULnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIFFUPUdULEpUPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3R5bGUsbj1lLnRpdGxlVGV4dCxyPWUuc3VidGl0bGVUZXh0LG89ZS5idXR0b25UZXh0LGE9ZS5vbkRpc21pc3MsaT1lLmRlc2NyaXB0aW9uLHU9aT8iIERpc21pc3NpYmxlQWxlcnQtaGlnaCI6IiIscz1pPyIgRGlzbWlzc2libGVBbGVydC1oaWdoLWJ1dHRvbiI6IiIsbD0iZGFuZ2VyIj09PXQ/ImVycm9yIjoiaW5jb21wbGV0ZSI7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRpc21pc3NpYmxlQWxlcnQgRGlzbWlzc2libGVBbGVydC0iLmNvbmNhdCh0KS5jb25jYXQodSl9LCJzdWNjZXNzIj09PXQ/RS5hLmNyZWF0ZUVsZW1lbnQoUVQsbnVsbCk6RS5hLmNyZWF0ZUVsZW1lbnQoY1Mse3N0YXR1czpsfSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRGlzbWlzc2libGVBbGVydC0iLmNvbmNhdCh0LCItdGl0bGVzIil9LEUuYS5jcmVhdGVFbGVtZW50KCJoMyIse2NsYXNzTmFtZToiRGlzbWlzc2libGVBbGVydC0iLmNvbmNhdCh0LCItdGl0bGUiKX0sbiksRS5hLmNyZWF0ZUVsZW1lbnQoInAiLHtjbGFzc05hbWU6IkRpc21pc3NpYmxlQWxlcnQtIi5jb25jYXQodCwiLXN1YnRpdGxlIil9LHIpLGkmJkUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRpc21pc3NpYmxlQWxlcnQtIi5jb25jYXQodCwiLWRlc2NyaXB0aW9uIil9LGkpKSxvJiZFLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7dHlwZToic3VibWl0IixjbGFzc05hbWU6IkRpc21pc3NpYmxlQWxlcnQtIi5jb25jYXQodCwiLWJ1dHRvbiIpLmNvbmNhdChzKSxvbkNsaWNrOmF9LG8pKX07SlQuZGlzcGxheU5hbWU9IkRpc21pc3NpYmxlQWxlcnQiLEpULnByb3BUeXBlcz17c3R5bGU6Vi5hLm9uZU9mKFsiZGFuZ2VyIiwiZGVmYXVsdCIsInN1Y2Nlc3MiLCJ3YXJuaW5nIl0pLHRpdGxlVGV4dDpWLmEub25lT2ZUeXBlKFtWLmEuc3RyaW5nLFYuYS5udW1iZXIsVi5hLm9iamVjdF0pLmlzUmVxdWlyZWQsc3VidGl0bGVUZXh0OlYuYS5vbmVPZlR5cGUoW1YuYS5zdHJpbmcsVi5hLm51bWJlcixWLmEub2JqZWN0XSkuaXNSZXF1aXJlZCxidXR0b25UZXh0OlYuYS5zdHJpbmcsb25EaXNtaXNzOlYuYS5mdW5jLGRlc2NyaXB0aW9uOlYuYS5hbnl9LEpULmRlZmF1bHRQcm9wcz17c3R5bGU6ImRlZmF1bHQiLGJ1dHRvblRleHQ6IkRJU01JU1MiLGRlc2NyaXB0aW9uOm51bGwsb25EaXNtaXNzOmZ1bmN0aW9uKCl7fX07dmFyIFpUPUpUO2Z1bmN0aW9uICRUKCl7cmV0dXJuKCRUPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWFQoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciBlTT1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jbGFzc05hbWUscj1lLmJzQ2xhc3Msbz1lLnRpdGxlLGE9ZS53aXRoQ2FyZXQsaT0oZS5ic1JvbGUsWFQoZSxbImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiYnNDbGFzcyIsInRpdGxlIiwid2l0aENhcmV0IiwiYnNSb2xlIl0pKTtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoeWgsJFQoe30saSx7Y2xhc3NOYW1lOlR0KCkobixyKX0pLHR8fG8sYT9FLmEuY3JlYXRlRWxlbWVudCgic3BhbiIsbnVsbCwiICIsRS5hLmNyZWF0ZUVsZW1lbnQoUWEsbnVsbCkpOm51bGwpfTtlTS5kaXNwbGF5TmFtZT0iRHJvcGRvd25Ub2dnbGUiLGVNLnByb3BUeXBlcz17Y2hpbGRyZW46Vi5hLmFueSxjbGFzc05hbWU6Vi5hLnN0cmluZyxic0NsYXNzOlYuYS5zdHJpbmcsdGl0bGU6Vi5hLnN0cmluZyxic1JvbGU6Vi5hLnN0cmluZyx3aXRoQ2FyZXQ6Vi5hLmJvb2x9O3ZhciB0TT1lTSxuTT1mdW5jdGlvbihlKXt2YXIgdD1lLmlkLG49ZS5kcm9wdXAscj1lLmRpc2FibGVkLG89ZS5wdWxsUmlnaHQsYT1lLm9wZW4saT1lLm9uVG9nZ2xlLHU9ZS5vblNlbGVjdCxzPWUuYnNTaXplLGw9ZS5ic1N0eWxlLGM9ZS50aXRsZSxmPWUuY2hpbGRyZW4sZD1lLndpdGhDYXJldCxwPWUuY2xhc3NOYW1lO3JldHVybiBiVCgiRHJvcGRvd25CdXR0b24iLCJEcm9wZG93biIpLEUuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6VHQoKSgiRHJvcGRvd25CdXR0b24iLHApfSxFLmEuY3JlYXRlRWxlbWVudCh6YSx7aWQ6dCxkcm9wdXA6bixkaXNhYmxlZDpyLHB1bGxSaWdodDpvLG9wZW46YSxvblRvZ2dsZTppLG9uU2VsZWN0OnUsYnNTaXplOnMsYnNTdHlsZTpsfSxFLmEuY3JlYXRlRWxlbWVudCh0TSx7YnNSb2xlOiJ0b2dnbGUiLGJzQ2xhc3M6ImJ0biIsYnNTaXplOnMsYnNTdHlsZTpsLHdpdGhDYXJldDpkfSxjKSxFLmEuY3JlYXRlRWxlbWVudChMYSxudWxsLGYpKSl9O25NLmRpc3BsYXlOYW1lPSJEcm9wZG93bkJ1dHRvbiIsbk0ucHJvcFR5cGVzPXtpZDpWLmEuc3RyaW5nLGRyb3B1cDpWLmEuYm9vbCxjaGlsZHJlbjpWLmEuYW55LGRpc2FibGVkOlYuYS5ib29sLHB1bGxSaWdodDpWLmEuYm9vbCxvcGVuOlYuYS5ib29sLG9uVG9nZ2xlOlYuYS5mdW5jLG9uU2VsZWN0OlYuYS5mdW5jLGJzU3R5bGU6Vi5hLnN0cmluZyxic1NpemU6Vi5hLnN0cmluZyx0aXRsZTpWLmEubm9kZS5pc1JlcXVpcmVkLHdpdGhDYXJldDpWLmEuYm9vbCxjbGFzc05hbWU6Vi5hLnN0cmluZ30sbk0uZGVmYXVsdFByb3BzPXt3aXRoQ2FyZXQ6ITB9O3ZhciByTT1uTSxvTT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tYWFuIix2aWV3Qm94OiIwIDAgMzIgMTIifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMzI2LjAwMDAwMCwgLTQ0MS4wMDAwMDApIixmaWxsOiIjNkQ2NTY1In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgzMjYuMDAwMDAwLCA0MzkuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMC4wMDAwMDAsIDIuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTAuODYzODgzMTA1LDMuNTY0MzQxMTkgQzAuOTEzODU1NzA4LDMuNzU5ODc3MjYgMC45NDE3MzUxNiwzLjk2NDU4OTU5IDEuMDE4MjcyMTUsNC4xNDkwNzkwOSBDMS4xOTAxNjYyMSw0LjU2MzI5NjQ0IDEuNTE3NzM1MTYsNC43ODc2MTc5IDEuOTY0MTg2Myw0LjgxNDUzMjk3IEMyLjM2Mzg1MDIzLDQuODM4NjEzMzMgMi42NzkxMTU5OCw0LjY3MjA2NzIxIDIuOTA5MDc3NjMsNC4zNDI4MDMyOSBDMy4yMzI2NDI5MiwzLjg3OTQ5MDA1IDMuMjEzMjk2OCwzLjE1ODYyNzk1IDIuODYzMjg0MDIsMi43MTYyMzg5IEMyLjQ4NDUxNTA3LDIuMjM3NTgzMiAxLjgwMzY2MDI3LDIuMTU5NTU1OCAxLjMzMTcyNjAzLDIuNTQ3OTM5MzYgQzEuMDE2NTc3MTcsMi44MDczMDAwOSAwLjkwMDY3NTc5OSwzLjE1ODk0OTQxIDAuODYzODgzMTA1LDMuNTY0MzQxMTkgWiBNMCwzLjM2MDczOTM2IEMwLjAyMTMwNDEwOTYsMy4yNzIzNjY3NiAwLjA0NDU5NTQzMzgsMy4xODQ0MDMyOSAwLjA2MzY3ODUzODgsMy4wOTU1MzM4OCBDMC4yNDI1Mjc4NTQsMi4yNjI3MTU2MiAwLjg3NDcyNTExNCwxLjYzODc1OTQ1IDEuNzExOTg1MzksMS41MTA2MTMzMyBDMi4yMjA0MjAwOSwxLjQzMjc2MTI4IDIuNjk3OTA2ODUsMS41NDkxMzAyMyAzLjExODk2MjU2LDEuODU4OTMxMTQgQzMuMTY1NDI4MzEsMS44OTMxMjI5MiAzLjIxMjA2OTQxLDEuOTI3MTk3ODEgMy4yODI5MDc3NiwxLjk3OTA5OTE4IEMzLjM2ODQ0NTY2LDEuODg0MjM4OSAzLjQ1NDcxNDE2LDEuNzkyNjgwOTEgMy41MzYxMzE1MSwxLjY5NzAwMjM3IEMzLjYwNzcwMDQ2LDEuNjEyODY3MjEgMy42OTI1MDc3NiwxLjU3NTI4NTQ4IDMuODA0NjEwMDUsMS41ODI2MjA2NCBDMy45MjA4OTEzMiwxLjU5MDI0ODA0IDQuMDM4MjUzODgsMS41ODgxMTQ3IDQuMTU0ODU2NjIsMS41ODM0Mzg5IEM0LjI1Njc1OTgyLDEuNTc5MzQ3NTggNC4yOTQzMTIzMywxLjYyMzU2MzExIDQuMjkwNjU5MzYsMS43MjI2MzE2IEM0LjI4NjAxMjc5LDEuODQ4OTk1MDcgNC4zMDAwOTg2MywxLjk3Njg3ODE3IDQuMjg1NjkxMzIsMi4xMDE3NTEyMyBDNC4yNzcwNDExLDIuMTc2Nzk3ODEgNC4yNTAxMjYwMywyLjI3NDg0MzQ3IDQuMTk2MDMyODgsMi4zMTUyODkxMyBDMy45MjM0MzM3OSwyLjUxOTE1Mzk3IDMuODQ3MTg5MDQsMi43NzkyMTYwNyAzLjg3MDgwMTgzLDMuMTEyNDU0NDMgQzMuODk5NTg3MjEsMy41MTkyMTk3MyAzLjg3MjM1MDY4LDMuOTI5Njk2NDQgMy44ODIxNDA2NCw0LjMzODI0NDM4IEMzLjg4NDA5ODYzLDQuNDE5NjkwOTYgMy45MjM5MDEzNyw0LjUxODY0MjU2IDMuOTc5OTUyNTEsNC41NzczMjM4NCBDNC4zMDkxNTc5OSw0LjkyMTkwMSA0LjMxMDM1NjE2LDQuOTE4NTk4NzIgNC4yOTEyNDM4NCw1LjQwNjgxMDU5IEM0LjI4NzMyNzg1LDUuNTA2ODQzNDcgNC4yNTE0NzAzMiw1LjU1MTkwNjQ4IDQuMTUxNTU0MzQsNS41NDE5NzA0MSBDNC4xNDY3MDMyLDUuNTQxNTAyODMgNC4xNDE3MzUxNiw1LjU0MTM1NjcxIDQuMTM2OTQyNDcsNS41NDE5OTk2MyBDMy44MTY1NjI1Niw1LjU4NzM4NDExIDMuNTQyNjE5MTgsNS41MTYyNTM1MiAzLjM1MDczNjA3LDUuMjMyOTI5MzIgQzMuMzMyNTU4OSw1LjIwNjA3MjY5IDMuMzAwOTA5NTksNS4xODgzMzM4OCAzLjI2OTA4NDkzLDUuMTYwNzc1ODkgQzMuMjM5MzA1OTQsNS4xNzg4NjUzOSAzLjIwOTIwNTQ4LDUuMTkyOTgwNDYgMy4xODM3ODA4Miw1LjIxMzA1NzE3IEMyLjA4MzY4MjE5LDYuMDgxNzYyMTkgMC41MDA2MzE5NjMsNS41NDc2MTA1OSAwLjA5Nzk4NzIxNDYsNC4xNjM1MTU2MiBDMC4wNTc2MjkyMjM3LDQuMDI0NzkwNSAwLjAzMjI5MjIzNzQsMy44ODE3MTEwNSAwLDMuNzQwNjQ4MDQgTDAsMy4zNjA3MzkzNiBaIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTExLjQ1MDY4NDIsOC45MTMyMTI3OSBDMTEuNTAzODcxNCw4LjUxMTUwMzIgMTEuMTgwNDIzLDguMTYyMzM3OSAxMC43Mjg3MTE2LDguMTE4ODgyMTkgQzEwLjI0Mjg2NjgsOC4wNzIyMTE4NyA5Ljc5MzI1OTU0LDguNDQxMTAzMiA5Ljc3MTQyOTQxLDguOTEzMjEyNzkgTDExLjQ1MDY4NDIsOC45MTMyMTI3OSBaIE0xMC41Nzg5OTg0LDExLjQ1NTcwNzggQzEwLjQ4NTA3MzIsMTEuNDM2NDc4NSAxMC4zOTEwMzEyLDExLjQxODAwOTEgMTAuMjk3MzEwNywxMS4zOTc4NDQ3IEM5LjUwMTYwNjU4LDExLjIyNjgyNzQgOC45MzkxMDc5NSwxMC42NTA0NzY3IDguODExNjA0NzUsOS44NDk5Nzk5MSBDOC43MTIzMzE2OSw5LjIyNjYwODIyIDguNzg4MDc5NjMsOC42Mjc3ODQ0NyA5LjE0MDgzOTQ1LDguMDg2NDE0NjEgQzkuNTE5Mjg2OTQsNy41MDU2NTExNCAxMC4wNjY2NDc3LDcuMjcxNjU2NjIgMTAuNzQ3NzM2Myw3LjMwNDc2NzEyIEMxMS42MDE0MjAzLDcuMzQ2MjY0ODQgMTIuMjM3MzU4Miw3LjkxNzA2MzAxIDEyLjM3Nzg2NTksOC43OTYyODg1OCBDMTIuNDE0Mjc4Nyw5LjAyNDIzMzc5IDEyLjQwNzU4NjUsOS4yNTg5ODgxMyAxMi40MjE5OTM4LDkuNDkwNTI3ODUgQzEyLjQyOTI3MDUsOS42MDc5MTk2MyAxMi4zNzA1MzA4LDkuNjM2OTk3MjYgMTIuMjYxNDY3OCw5LjYzNjUwMDQ2IEMxMS40NzI5ODE5LDkuNjMzMTEwNSAxMC42ODQ0Mzc2LDkuNjM0Njg4NTggOS44OTU5MjI1Niw5LjYzNDY4ODU4IEM5LjgzODU4NTU3LDkuNjM0NzE3ODEgOS43ODEyNDg1OCw5LjYzNDcxNzgxIDkuNzI2Njg3ODUsOS42MzQ3MTc4MSBDOS42NzQ0MzU4LDEwLjAzODA2MzkgOS45OTg2NzMyNCwxMC40Nzk2MzQ3IDEwLjQyNDk2LDEwLjU4Mzc1ODkgQzEwLjkxMTc2OTEsMTAuNzAyNjk5NSAxMS4zNDE4NTUsMTAuNTk4Nzc5OSAxMS42Nzc5ODY1LDEwLjIwOTg5OTUgQzExLjc2NzM1MjcsMTAuMTA2NTA1OSAxMS44MzIxNDE3LDEwLjEwMjI2ODUgMTEuOTI1NDgyNCwxMC4xOTkxMTYgQzEyLjAzNjcwNzksMTAuMzE0NTQ5OCAxMi4xNTYwMjg1LDEwLjQyMjcwNjggMTIuMjc3MjQ4NiwxMC41Mjc4MjQ3IEMxMi4zNzA5MTA3LDEwLjYwOTAzNzQgMTIuMzc1NzYxOCwxMC42NzkyOTEzIDEyLjI5MDEwNywxMC43NzIzMTA1IEMxMS45NTA5NjU1LDExLjE0MDUyOTcgMTEuNTQzNjE1NywxMS4zNzI2ODMxIDExLjAzOTYyMywxMS40MjIzOTI3IEMxMS4wMDIyNDU4LDExLjQyNjEwNDEgMTAuOTY2MzAwNiwxMS40NDQyNTIxIDEwLjkyOTY4MzMsMTEuNDU1NzA3OCBMMTAuNTc4OTk4NCwxMS40NTU3MDc4IFoifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMzIsMTEuMzM4ODEyOCBDMzEuODExMzMxNSwxMS4zNDQ3NzQ0IDMxLjYyMjIyNDcsMTEuMzYwMzIxNSAzMS40MzQyODY4LDExLjM1MTMyMDUgQzMxLjM3MjMwMzIsMTEuMzQ4MzM5NyAzMS4zMDM3MTUxLDExLjI5MTczMzMgMzEuMjU0NDczMSwxMS4yNDMxMzQyIEMzMC44MjUxNzYzLDEwLjgxOTA2ODUgMzAuMzk5Njc4NSwxMC4zOTExMTYgMjkuOTcyNjMyLDkuOTY0NzcwNzggQzI5LjkzNjMwNjgsOS45Mjg0NzQ4OSAyOS44OTY4NTQ4LDkuODk1MzA1OTQgMjkuODI2OTIyNCw5LjgzMTYyNzQgTDI5LjgyNjkyMjQsMTAuMDIzNDUyMSBDMjkuODI2ODkzMiwxMC40MDc5MTk2IDI5LjgyMzQ3NCwxMC43OTI0MTY0IDI5LjgyODc2MzUsMTEuMTc2Nzk2MyBDMjkuODMwNTc1MywxMS4zMDY1MjA1IDI5Ljc4ODc4NTQsMTEuMzY0NzkyNyAyOS42NTI1NDQzLDExLjM1OTI5ODYgQzI5LjQ2NzkwODcsMTEuMzUxOTA1IDI5LjI4MjQ4NCwxMS4zNTEyMzI5IDI5LjA5NzkwNjgsMTEuMzU5NDc0IEMyOC45NTM5MjE1LDExLjM2NTkzMjQgMjguOTEwOTYyNiwxMS4zMDA1ODgxIDI4LjkxMTQ4ODYsMTEuMTY3NTMyNCBDMjguOTE0MzgxNywxMC40ODEzNTg5IDI4LjkxMjgzMjksOS43OTUxODUzOSAyOC45MTI4MzI5LDkuMTA4OTgyNjUgQzI4LjkxMjgwMzcsOC4yMzc5MTA1IDI4LjkxMjY4NjgsNy4zNjY3Nzk5MSAyOC45MTI5MjA1LDYuNDk1NjQ5MzIgQzI4LjkxMjk3OSw2LjMwMDQ2MzkzIDI4LjkyMzk5NjMsNi4yODk3OTcyNiAyOS4xMTkwOTQxLDYuMjg5Mzg4MTMgQzI5LjI5NDI5MDQsNi4yODkwMDgyMiAyOS40Njk4OTU5LDYuMjk2ODQwMTggMjkuNjQ0NTM3LDYuMjg2OTYyNTYgQzI5Ljc4NTM5NTQsNi4yNzg5ODQ0NyAyOS44MzA2MDQ2LDYuMzI5MDE1NTMgMjkuODI5NTIzMyw2LjQ3MDM0MTU1IEMyOS44MjM5MTIzLDcuMjE5NzU1MjUgMjkuODI2ODkzMiw3Ljk2OTE5ODE3IDI5LjgyNjkyMjQsOC43MTg2NzAzMiBMMjkuODI2OTIyNCw4LjkxMTc1MTYgQzI5Ljg5Nzk2NTMsOC44NDc2OTMxNSAyOS45NDA5MjQyLDguODEyMjQ0NzUgMjkuOTgwMTcxNyw4Ljc3MzA4NDkzIEMzMC4zOTM1NDE2LDguMzYwNTkxNzggMzAuODA5MDc0LDcuOTUwMTczNTIgMzEuMjE3MjcxMiw3LjUzMjU5NTQzIEMzMS4zMTM5NzI2LDcuNDMzNjczMDYgMzEuNDEzMTg3Miw3LjM4NDk1NzA4IDMxLjU1MDk3NzIsNy4zOTgyODMxMSBDMzEuNzAwMDQ3NSw3LjQxMjY5MDQxIDMxLjg1MDI4NjgsNy40MTUxNDUyMSAzMiw3LjQyMjgzMTA1IEwzMiw4LjA2NTc1MzQyIEMzMS45NjI1MDU5LDguMDk0MzYzNDcgMzEuOTIxMjQyLDguMTE5MTc0NDMgMzEuODg4MDczMSw4LjE1MjE2ODA0IEMzMS41MTU4Nzk1LDguNTIyNTc5IDMxLjE0NDc5NjMsOC44OTQxMjk2OCAzMC43NzM4NTk0LDkuMjY1NzY4MDQgQzMwLjc0MDUxNTEsOS4yOTkxNzA3OCAzMC43MTAxNTE2LDkuMzM1NTI1MTEgMzAuNjcxMzQyNSw5LjM3ODI3OTQ1IEMzMC43MTQwMzg0LDkuNDI0MDQzODQgMzAuNzQ4Nzg1NCw5LjQ2MzQ5NTg5IDMwLjc4NTg0MTEsOS41MDA2Njg0OSBDMzEuMDU3MDk1OSw5Ljc3MjU2NjIxIDMxLjMyNzg4MzEsMTAuMDQ1MDQ4NCAzMS42MDA5MjA1LDEwLjMxNTE5MjcgQzMxLjczMTU1MDcsMTAuNDQ0NDQ5MyAzMS44NjY4Mjc0LDEwLjU2OTExNzggMzIsMTAuNjk1ODkwNCBMMzIsMTEuMzM4ODEyOCBaIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTIyLjQ0MjAwOTEsOS4zODEzNjU0OCBDMjIuNDcwNjc3Niw5LjUzNzgyOTQxIDIyLjQ3OTk0MTYsOS43MDEwNzMyNCAyMi41MzE2Njc2LDkuODQ5NTI5ODYgQzIyLjY5NTkwNSwxMC4zMjA3MDQzIDIzLjAyNTU3ODEsMTAuNjAwNjY3OCAyMy41MzM4Mzc0LDEwLjYyNjc2NDYgQzIzLjk5MjcwODcsMTAuNjUwMzE4OSAyNC4zMjc3Mjk3LDEwLjQzMzE4NjUgMjQuNTQyMTE1MSwxMC4wMzY1MDM0IEMyNC43MDIyMzIsOS43NDAyMDM4NCAyNC43Mzc2ODA0LDkuNDE4MjE2NjIgMjQuNjcxODM5Myw5LjA4ODYwMjAxIEMyNC41ODk4Mzc0LDguNjc4MTI1MyAyNC4zODEyMDkxLDguMzUzODAwMTggMjMuOTgxNjMyOSw4LjE5NTExNTI1IEMyMy41ODM3ODA4LDguMDM3MTYwOTEgMjMuMjAzMDUzOSw4LjA5OTkwNDI5IDIyLjg3NTUxNDIsOC4zNzYxODU1NyBDMjIuNTY5MzA3OCw4LjYzNDQ2NTAyIDIyLjQ1MzkzMjQsOC45ODMzMDg4NiAyMi40NDIwMDkxLDkuMzgxMzY1NDggWiBNMjMuNDA4MjMzOCwxMS40NTU2OTYxIEMyMy4zMDQ1NDc5LDExLjQzMzk1MzYgMjMuMjAwOTIwNSwxMS40MTE5Nzc0IDIzLjA5NzE3NjMsMTEuMzkwNTU2MyBDMjIuMjI3MzMxNSwxMS4yMTA2ODQyIDIxLjU2NzI4NCwxMC4zOTkzNzQ2IDIxLjU0MDY2MTIsOS41MTI5NiBDMjEuNTIyMDc0OSw4Ljg5NDA4ODc3IDIxLjY3MTI2MjEsOC4zNDQxODU1NyAyMi4xMTcxODcyLDcuOTAxODg0MiBDMjIuNzE2OTc1Myw3LjMwNjk3NjQ0IDIzLjQ0NTI2MDMsNy4xNTE5NzM3IDI0LjIyOTY4NCw3LjQwNjMzNzE3IEMyNS4wMDUwNzc2LDcuNjU3Nzc4MjYgMjUuNDY4OTc1Myw4LjIyMTc2NzMxIDI1LjU5NDYwODIsOS4wMzcwMjIxIEMyNS43MzU3MDA1LDkuOTUyODM1OCAyNS4zNDI2NzAzLDEwLjc4MzYwODQgMjQuNTU1ODIxLDExLjIwMTUwNzkgQzI0LjM1MDU1MzQsMTEuMzEwNTQxNyAyNC4xMDc4MjEsMTEuMzQ5MTE3MSAyMy44ODIxODQ1LDExLjQxOTcyMTYgQzIzLjg0MTM1ODksMTEuNDMyNTIxNiAyMy44MDAwMzY1LDExLjQ0Mzc0MzYgMjMuNzU4OTE4NywxMS40NTU2OTYxIEwyMy40MDgyMzM4LDExLjQ1NTY5NjEgWiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMy45Mzk3MjYsMCBDMTMuOTc4NTkzNiwwLjAxNzUzNDI0NjYgMTQuMDE2OTA1OSwwLjAzNjM1NDMzNzkgMTQuMDU2MzU4LDAuMDUyMzk4MTczNSBDMTQuMzIxNTkyNywwLjE2MDIwNDU2NiAxNC40NzQ2OTU5LDAuNDM0MTc3MTY5IDE0LjQyMzI2MjEsMC43MTAxNjYyMSBDMTQuMzczMjg5NSwwLjk3ODQ0MDE4MyAxNC4xMzEwODMxLDEuMTgzODUzODggMTMuODU4NzE3OCwxLjE4ODkzODgxIEMxMy41NTYyMjI4LDEuMTk0NTc5IDEzLjMyNjcyODgsMS4wMDc1MTc4MSAxMy4yNTk5MjMzLDAuNzAwODE0NjEyIEMxMy4yMDUwOTk1LDAuNDQ5MTk4MTc0IDEzLjM1NDcyNTEsMC4xNzQwMjczOTcgMTMuNjA2ODY3NiwwLjA2MTYzMjg3NjcgQzEzLjY1MDE3NzIsMC4wNDIzMTU5ODE3IDEzLjY5MjQzNDcsMC4wMjA2MDI3Mzk3IDEzLjczNTE1OTgsMCBMMTMuOTM5NzI2LDAgWiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xOS44NTMyODIyLDEwLjA4OTY5NjQgQzE5Ljg4MTU3MDgsOS45ODUzOTY4OSAxOS45MTE5NjM1LDkuODgxNTk0MTYgMTkuOTM3Nzk3Myw5Ljc3NjY1MTY5IEMyMC4xMTk4MzIsOS4wMzcwMjc5NSAyMC4zMDM4ODMxLDguMjk3OTAxIDIwLjQ3OTUxNzgsNy41NTY3Mjg0IEMyMC41MDkzNTUzLDcuNDMwODYxNzQgMjAuNTY2MTA3OCw3LjM4OTcxNDcgMjAuNjg5ODQxMSw3LjM5NzYzNDM0IEMyMC44MzUzMTY5LDcuNDA2OTI3NDkgMjAuOTgyNDI5Miw3LjQwNzgzMzQyIDIxLjEyNzc1ODksNy4zOTc1NDY2NyBDMjEuMjY3NTA2OCw3LjM4NzYxMDU5IDIxLjI5MDA2NzYsNy40NDg4NjM1NiAyMS4zMDIyMjQ3LDcuNTc1NzUzMDYgQzIxLjM1MDU2MDcsOC4wODA3MzkzNiAyMS4xNzkzOTczLDguNTQzOTk0MTYgMjEuMDUwODQyLDkuMDE1NTQ4NDkgQzIwLjg1MzAyNjUsOS43NDEzNzg2MyAyMC42NDc0OTU5LDEwLjQ2NTEzMzkgMjAuNDUyNTQ0MywxMS4xOTE3MjM4IEMyMC40MTgzNTI1LDExLjMxOTA4MDkgMjAuMzYxNTcwOCwxMS4zNjUxNjY4IDIwLjIyOTkxNzgsMTEuMzYwMjg2NCBDMTkuOTcyMTkzNiwxMS4zNTA3NTk1IDE5LjcxMzc5NzMsMTEuMzUzMzg5NiAxOS40NTU4MzkzLDExLjM1OTM4MDUgQzE5LjM0NDA1ODQsMTEuMzYxOTgxNCAxOS4yOTIxMjc5LDExLjMyMjM1NCAxOS4yNjI1NTM0LDExLjIxMjA2MzYgQzE5LjA0MzY2NzYsMTAuMzk2NDI4OSAxOC44MTg4Nzg1LDkuNTgyNDAxNDYgMTguNTk1NDYzLDguNzY3OTM1NzEgQzE4LjU3ODA0NTcsOC43MDQ1MjAxOCAxOC41NTcxMjE1LDguNjQyMDEwNTkgMTguNTA0MDgwNCw4LjU3NzI4IEMxOC40ODkzNTE2LDguNjI0Mzg4NjggMTguNDczMTkwOSw4LjY3MTExNzQ0IDE4LjQ2MDA5ODYsOC43MTg2NjQ0NyBDMTguMjM0NDAzNyw5LjUzNzcxODM2IDE4LjAwNjg5NjgsMTAuMzU2Mjc1NCAxNy43ODU5OTQ1LDExLjE3NjYxNTIgQzE3Ljc0OTYxMSwxMS4zMTE4MDQyIDE3LjY4OTkzNjEsMTEuMzY4MjA2IDE3LjU0MzA1NzUsMTEuMzYxMDE3IEMxNy4yODU2MjU2LDExLjM0ODM5MjMgMTcuMDI3MDUzOSwxMS4zNTQwOTEgMTYuNzY5MDY2NywxMS4zNTkxNDY3IEMxNi42NjgzOTA5LDExLjM2MTEzMzkgMTYuNjE4MjEzNywxMS4zMjA4MDUxIDE2LjU5MjQzODQsMTEuMjI2NDEyNCBDMTYuMzEyNTA0MSwxMC4yMDExMjY2IDE2LjAyMjgwOTEsOS4xNzgzODMyIDE1Ljc1NjE3MTcsOC4xNDk2NDg5NSBDMTUuNzA0MDA3Myw3Ljk0ODM1NTggMTUuNzMyOTM4OCw3LjcyNDE4MDQ2IDE1LjczOTgzNTYsNy41MTEwNTE2OSBDMTUuNzQxMDYzLDcuNDcyOTE0NyAxNS44MTU4NDY2LDcuNDA4MzMwMjMgMTUuODU5OTE2LDcuNDA1NDM3MDggQzE2LjA0NDE0MjUsNy4zOTM0MjYxMiAxNi4yMjk3MTMyLDcuNDAzODAwNTUgMTYuNDE0NjExOSw3LjM5ODkyMDE4IEMxNi41MzI2MTc0LDcuMzk1NzY0MDIgMTYuNTQxOTk4Miw3LjQ3OTMxNDcgMTYuNTYxODQxMSw3LjU2MDA4OTEzIEMxNi43NTYxNzksOC4zNTE3MDE5MiAxNi45NTA2OTIyLDkuMTQzMjg1NDggMTcuMTQ1NTg1NCw5LjkzNDc4MTM3IEMxNy4xNTgwMDU1LDkuOTg1MzM4NDUgMTcuMTczOTkwOSwxMC4wMzQ5ODk2IDE3LjIwMTIyNzQsMTAuMTMwMDgzNyBDMTcuMjM1OTQ1MiwxMC4wMjY5MjM4IDE3LjI2MDI4ODYsOS45NjYyODQ1NyAxNy4yNzY4NTg0LDkuOTAzNTk5NjMgQzE3LjQ4MjczOTcsOS4xMjQ3ODY4NSAxNy42OTAzNzQ0LDguMzQ2NDQxNjQgMTcuODg5NTkyNyw3LjU2NTkzMzg4IEMxNy45MjIwODk1LDcuNDM4NTc2OCAxNy45NzUyNzY3LDcuMzkyMzQ0ODQgMTguMTA3MzM4OCw3LjM5NjkwMzc0IEMxOC4zODQ1NTUzLDcuNDA2NDg5MTMgMTguNjYyNTMxNSw3LjQwNTkwNDY2IDE4LjkzOTc3NzIsNy4zOTcwNDk4NiBDMTkuMDY1MDU5NCw3LjM5MzA3NTQzIDE5LjEyMDg0NzUsNy40MzU0NzkwOSAxOS4xNTIwODc3LDcuNTU3MDc5MDkgQzE5LjM1NjI3NCw4LjM1MTI5Mjc5IDE5LjU2Njk3NzIsOS4xNDM4NDA3MyAxOS43NzU4OTc3LDkuOTM2ODU2MjYgQzE5Ljc4OTA3NzYsOS45ODY4ODczMSAxOS44MDQ5NzUzLDEwLjAzNjI0NjIgMTkuODE5NTg3MiwxMC4wODU4OTc0IEMxOS44MzA4MDkxLDEwLjA4NzE4MzIgMTkuODQyMDMxMSwxMC4wODg0Mzk4IDE5Ljg1MzI4MjIsMTAuMDg5Njk2NCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMC43MzIxOTIxLDQuODMyNDYxNzQgQzExLjE1NTY3MzQsNC44MzI0MDMyOSAxMS40NzQxMjQ2LDQuNjQ0MzQ4NDkgMTEuNjUyNTY0Nyw0LjI2MTQ4ODIyIEMxMS44NzQ2MzYsMy43ODQ5NjU4NCAxMS44Njk0MDQ5LDMuMzAwODE2MDcgMTEuNjM3MjgwNywyLjgyODk2OTUgQzExLjQ1NzI2MjUsMi40NjMwODgyMiAxMS4xNDAyMTQxLDIuMjg0NDE0MjUgMTAuNzQyNjU0MiwyLjI3OTM1ODU0IEMxMC4zNTc1NDM3LDIuMjc0NDc4MTcgMTAuMDQ4MzI3MywyLjQ0MTI1ODA4IDkuODQ3MjM4NzIsMi43ODE1OTc4MSBDOS42NjEyMDAzNywzLjA5NjUxMjg4IDkuNjMzOTA1MzksMy40NDA3OTc4MSA5LjY2NTk2Mzg0LDMuNzk0NTUxMjMgQzkuNzIyMTAyNjUsNC40MTM1Njg1OCAxMC4xNTM2MjA1LDQuODMyNTIwMTggMTAuNzMyMTkyMSw0LjgzMjQ2MTc0IE0xMS43ODc3MjQ2LDEuODYzNjggTDExLjc4NzcyNDYsMS42ODY5NjQwMiBDMTEuNzg3NzI0NiwxLjIwMDEyNTY2IDExLjc5MDU1OTMsMC43MTMyNTgwODIgMTEuNzg1Njc4OSwwLjIyNjUwNzM5NyBDMTEuNzg0NTEsMC4xMDg0NDM0NyAxMS44MTkwODE2LDAuMDU4MjA3ODUzOSAxMS45NDMxMDcyLDAuMDYyNzY2NzU4IEMxMi4xNDI0NDI0LDAuMDcwMDcyNjk0MSAxMi4zNDIzNjIsMC4wNjkwNzkwODY4IDEyLjU0MTc4NDgsMC4wNjMwNTg5OTU0IEMxMi42NTIzNjc1LDAuMDU5NzI3NDg4NiAxMi42ODczMTkxLDAuMTA2NzE5MjY5IDEyLjY4NTI0NDIsMC4yMTA0MzQzMzggQzEyLjY4MTE1MjksMC40MDk5NDQ4NCAxMi42ODQzMDksMC42MDk2MzA2ODUgMTIuNjg0MzA5LDAuODA5MjI4ODU4IEMxMi42ODQzMzgzLDIuMzEzNTIxMSAxMi42ODQzOTY3LDMuODE3ODEzMzMgMTIuNjg0MjIxNCw1LjMyMjA3NjM1IEMxMi42ODQxOTIxLDUuNTQxNzgwNDYgMTIuNjgzNjY2MSw1LjU0MjMzNTcxIDEyLjQ2Nzc2MTEsNS41NDE3ODA0NiBDMTIuMzI2Njk4MSw1LjU0MTQwMDU1IDEyLjE2NTEyLDUuNTgxNDM3MDggMTIuMDUwMzg3Niw1LjUyNTc5NTA3IEMxMS45MzkyMjA1LDUuNDcxODQ4MDQgMTEuODc2MTg0OCw1LjMxODY4NjM5IDExLjc4NTAwNjgsNS4yMDAwMDg3NyBDMTEuNTg0MDA1OCw1LjM4Mzc5Njg5IDExLjM1NDA0NDIsNS41MTkyNzgxNyAxMS4wODIwODgsNS41ODQ2MjI0NyBDMTAuMDIzNjkxNyw1LjgzODc4MTM3IDguOTQ0NjYzMzgsNS4xMjQ4NDUzIDguNzc4MDg4MDQsNC4wNDk2NzQ1MiBDOC42ODQxMDQ0NywzLjQ0MjkzMTE0IDguNzM0NzQ5MjIsMi44NjA0MTQyNSA5LjA3NTQ2ODg2LDIuMzI0MDQxNjQgQzkuNzA1ODgzNDcsMS4zMzE2NjE3NCAxMS4wNTQ4ODA3LDEuMjg4NjQ0MzggMTEuNzA0NTgzLDEuODE2MDQ1MyBDMTEuNzIxOTQxOSwxLjgzMDEzMTE0IDExLjc0Mzc0MjgsMS44Mzg3ODEzNyAxMS43ODc3MjQ2LDEuODYzNjgifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTUuODc4NTM3NCwzLjA5ODA1ODgxIEwxNy41NjkxMDE3LDMuMDk4MDU4ODEgQzE3LjU5NTAyMzIsMi42NzI5OTk0NSAxNy4yOTk1NDE5LDIuMzU0NzIzNjUgMTYuODQyNjg3MSwyLjMwNDc4MDI3IEMxNi4zNzE2Mjk2LDIuMjUzMjg4MDQgMTUuOTQ5MTQxOSwyLjU5Mzg5MDc4IDE1Ljg3ODUzNzQsMy4wOTgwNTg4MSBaIE0xNS44MzUyNTcsMy44MjIxMzU1MyBDMTUuODE0NjI1LDQuMzA5NjQ2MDMgMTYuMTkxMjAyMiw0LjczNzU2OTMyIDE2LjY2NzYwNzcsNC44MDA4Njc5NSBDMTcuMTE5NjY5OCw0Ljg2MDkyMjc0IDE3LjUwNTk0OTIsNC43NDEwNzYxNiAxNy44MDMzODg1LDQuMzg1NDIzMiBDMTcuODgyODQ3OSw0LjI5MDQ0NjAzIDE3Ljk0NDk0ODMsNC4yOTEzNTE5NiAxOC4wMjkyNTg4LDQuMzc2ODMxNDIgQzE4LjE0ODc1NDcsNC40OTc5OTMwNiAxOC4yNzQzNTg0LDQuNjEzMzY4NCAxOC40MDE1OTg1LDQuNzI2NTIyNzQgQzE4LjQ4NjA1NTIsNC44MDE2Mjc3NiAxOC40ODIzMTQ1LDQuODY4ODcxNiAxOC40MTA3MTYzLDQuOTUwMzE4MTcgQzE4LjEwNzYwNzcsNS4yOTUzNjI5MiAxNy43MzE4NzgsNS41MTgxNjQ3NSAxNy4yODA0NTg4LDUuNTk1MDgxNjQgQzE2Ljc1MjU2MTEsNS42ODUwMDMxMSAxNi4yMzkwMTIyLDUuNjMxNjY5NzcgMTUuNzc3NTQwMSw1LjMzOTM0NDY2IEMxNS4yNTQ5MDI2LDUuMDA4Mjk4MDggMTQuOTgyMzMyOCw0LjUxNzEwNTM5IDE0LjkxMDIwODYsMy45MDY5NzIwNSBDMTQuODQxMTUyOSwzLjMyMjg0Nzg1IDE0LjkzMTk1MTEsMi43NzI0MTg2MyAxNS4yNTUyODI2LDIuMjczOTc4NDUgQzE1LjU2OTg0NjksMS43ODkwNjg4NiAxNi4wMTY2NDg4LDEuNTMwMzgwMjcgMTYuNTk4Nzg1OCwxLjQ5MjI0MzI5IEMxNy43ODE5MzgzLDEuNDE0NzQxOTIgMTguNDA4OTA0NSwyLjIwNTAxMDQxIDE4LjUxOTEzNjQsMy4xNTQ2NjUyMSBDMTguNTM4MTMxOSwzLjMxODI4ODk1IDE4LjUzNDQyMDUsMy40ODQ0MjU5NCAxOC41NDc2MDA0LDMuNjQ4ODY3OTUgQzE4LjU1ODU1OTMsMy43ODU4OTgwOCAxOC40OTY1MTczLDMuODI0Njc3OTkgMTguMzY2OTEsMy44MjQwMzUwNyBDMTcuNTgzMjE2OCwzLjgyMDExOTA5IDE2Ljc5OTQ5NDQsMy44MjIxMDYzIDE2LjAxNTc0MjgsMy44MjIxMzU1MyBMMTUuODM1MjU3LDMuODIyMTM1NTMgWiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yOC4xODU0NzQzLDMuMDk3MDMzMDYgTDI5Ljg3MzkzNDYsMy4wOTcwMzMwNiBDMjkuODk3NzgxMiwyLjY2NTAxODQ1IDI5LjU5MDI4ODksMi4zNDE3NDUzOSAyOS4xMzA3MTYzLDIuMzAzNzI1MyBDMjguNjU5NDU0MiwyLjI2NDc3MDA1IDI4LjIzNzY5NzIsMi42MTIyMTExNCAyOC4xODU0NzQzLDMuMDk3MDMzMDYgTTI4LjE0NTcwMDgsMy44MzEyMjExOSBDMjguMTAwMzQ1Niw0LjIyNTQ3ODcyIDI4LjQxNDE3OTQsNC42NTgwNDg1OCAyOC44MjgzOTY3LDQuNzY2NDM5NDUgQzI5LjMyMDkwNDUsNC44OTUzMTYxNiAyOS43NTU4MTIyLDQuNzg5NDM4NTQgMzAuMDk3MTc0OCw0LjM5NzI4NTExIEMzMC4xODc5NzMsNC4yOTI5NTYzNSAzMC4yNDk0MDEzLDQuMjg4NzQ4MTMgMzAuMzQyNzcxMSw0LjM4NjI5Njk5IEMzMC40NTM3MDQ1LDQuNTAyMTM5OTEgMzAuNTczMDgzNSw0LjYxMDU2IDMwLjY5NDk3NTcsNC43MTQ5NzY0NCBDMzAuNzkxNTAxNyw0Ljc5NzY3OTYzIDMwLjc4ODQ5MTcsNC44NzE1MjgwNCAzMC43MDY3MjM3LDQuOTYxMzYxODMgQzMwLjQwOTE5NjcsNS4yODgyODc4NSAzMC4wNTAyNzA3LDUuNTEwODg1MTEgMjkuNjEyOTA4MSw1LjU4NzcxNDM0IEMyOC45OTkyMDk1LDUuNjk1NTIwNzMgMjguNDE3MzM1NSw1LjYyMDQ0NDkzIDI3LjkxNDg2MjUsNS4yMjEwNzMyNCBDMjcuNDg5NTEwOSw0Ljg4Mjk1NDUyIDI3LjI3Mjc4NzYsNC40Mjg0Mzc2MyAyNy4yMTIwNjA2LDMuODkwOTU0NTIgQzI3LjE1NTQ4MzUsMy4zODk5NDI2NSAyNy4yMTc1NTQ3LDIuOTA5NTMzNTIgMjcuNDUwNTg0OCwyLjQ2MTA5NTE2IEMyNy43NjQ3MTA5LDEuODU2NTcyNzkgMjguMjU1NTIzNywxLjUxOTk0NDQ3IDI4Ljk0OTc5MjEsMS40ODkyNTk1NCBDMzAuMDg0NzU0NywxLjQzOTExMTYgMzAuNjkwMTgzLDIuMTgzODQ5NSAzMC44MTk3MzE5LDMuMTE1NDE0NzkgQzMwLjg0NDM2NzUsMy4yOTI3NDQ0NyAzMC44Mzc4Nzk4LDMuNDc0MjUzMTUgMzAuODUwNjUwNiwzLjY1MzQ4MjM3IEMzMC44NTk3MzkyLDMuNzgwNzIyNTYgMzAuODA1NzA0NSwzLjgyNDQxMjA1IDMwLjY3OTk4MzksMy44MjM4Mjc1OCBDMjkuODk1OTEwOSwzLjgyMDI5MTUxIDI5LjExMTgwODYsMy44MjE4OTg4MSAyOC4zMjc3MDYzLDMuODIyNTQxNzQgQzI4LjI2NjEzMTksMy44MjI1NzA5NiAyOC4yMDQ0OTksMy44MjgyNjk1OSAyOC4xNDU3MDA4LDMuODMxMjIxMTkifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjAuMDE0NjQxMSwxLjkxMzA0MTgzIEMyMC41MzU0MDgyLDEuNDE3MjkwMjMgMjEuMTExMTQ1MiwxLjM5NDk5MjUxIDIxLjcwMzgzMiwxLjYwMDM3Njk5IEMyMi4yMjAyNDQ3LDEuNzc5Mjg0NzUgMjIuNDc4MDU2NiwyLjE5ODk2Njk0IDIyLjU3NzUwNSwyLjcxNjkyODU4IEMyMi42MTY2NjQ4LDIuOTIwODIyNjUgMjIuNjMzMDU5NCwzLjEzMTY3MTk2IDIyLjYzNTI1MTEsMy4zMzk1OTg5IEMyMi42NDIyOTQxLDQuMDA2NDI2MyAyMi42MzgwODU4LDQuNjczMzk5ODIgMjIuNjM3NzA1OSw1LjM0MDI4NTY2IEMyMi42Mzc2MTgzLDUuNTIyNjEyNiAyMi42MTgzODksNS41NDE0NjE5MiAyMi40MzgwNDkzLDUuNTQxODcxMDUgQzIyLjI1Nzk0MzQsNS41NDIyODAxOCAyMi4wNzc1NDUyLDUuNTM1NzA0ODQgMjEuODk3NzksNS41NDM5NzUxNiBDMjEuNzYwMjYzLDUuNTUwMzQ1OTQgMjEuNzIxMzA3OCw1LjQ5MTEwOTQxIDIxLjcyMjAwOTEsNS4zNjIxNDUwMiBDMjEuNzI1NzQ5OCw0LjY0NjYwMTY0IDIxLjczMjM1NDMsMy45MzA4MjQ0NyAyMS43MTc4MDA5LDMuMjE1NTQ0MTEgQzIxLjcxNDA2MDMsMy4wMzI2MDM0NyAyMS42Njg0MTI4LDIuODM1NTc2OTkgMjEuNTg3MTQxNiwyLjY3MjM2MjM3IEMyMS40MzIxMDk2LDIuMzYxMTI5NSAyMS4xMzk4MTM3LDIuMjY4ODcwMTQgMjAuODEwMzE2LDIuMzAzNTAwMjcgQzIwLjQ0ODY0MjksMi4zNDE0OTExNCAyMC4yMTMxNTgsMi41NTA4NzkyNyAyMC4xMDU5OTQ1LDIuODkyMzg3OTUgQzIwLjA2MzA2NDgsMy4wMjkxNTUwNyAyMC4wNDI2OTU5LDMuMTc4MTk2MTYgMjAuMDQxMjkzMiwzLjMyMTg4OTMyIEMyMC4wMzQ3NDcsMy45OTg0Nzc0NCAyMC4wMzg2MDQ2LDQuNjc1MTUzMjQgMjAuMDM4MjI0Nyw1LjM1MTc5OTgyIEMyMC4wMzgxMDc4LDUuNTM0MTg1MjEgMjAuMDMwMzYzNSw1LjU0MTM3NDI1IDE5Ljg0NzE4OSw1LjU0MTg3MTA1IEMxOS42NjcwNTM5LDUuNTQyMzA5NDEgMTkuNDg2NDUxMSw1LjUzMzc0Njg1IDE5LjMwNjk4ODEsNS41NDQ1MzA0MSBDMTkuMTYwMTk3Myw1LjU1MzM1NTk4IDE5LjEzODU0MjUsNS40ODAzMjU4NCAxOS4xMzg5ODA4LDUuMzU5MTA1NzUgQzE5LjE0MTc1NzEsNC41NzUzODMzOCAxOS4xNDAzNTQzLDMuNzkxNjYxIDE5LjE0MDM1NDMsMy4wMDc5MDk0MSBDMTkuMTQwMzU0MywyLjU4OTI3OTI3IDE5LjE0MzU2ODksMi4xNzA1OTA2OCAxOS4xMzg1NDI1LDEuNzUyMDE5IEMxOS4xMzcwODEzLDEuNjI2NTAzMDEgMTkuMTc5NDI2NSwxLjU2OTY2MjgzIDE5LjMwNzgwNjQsMS41ODM1MTQ4OSBDMTkuMzU1OTM3OSwxLjU4ODY4NzQ5IDE5LjQwNTY3NjcsMS41ODkxNTUwNyAxOS40NTM2OTEzLDEuNTgzNDU2NDQgQzE5LjcxMzY2NTgsMS41NTI1NjY5NCAxOS45NDEyODk1LDEuNTgxNDY5MjIgMjAuMDE0NjQxMSwxLjkxMzA0MTgzIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTUuNjMyMDkwNTksNy43MzQwNzU2MiBDNS44NTY3MzM1Miw3LjUxMjUzMDQxIDYuMDc2Mzc5MTgsNy4zNzMwNzQ3IDYuMzQ0OTE2MTYsNy4zMzExMDk0MSBDNy40MDM0MDAxOCw3LjE2NTY0NDU3IDguMTY1MDAwMTgsNy42OTg1OTc5OSA4LjIyNTIzMDMyLDguNzcwMDI4MTMgQzguMjcwODE5MzYsOS41ODA1MTk0NSA4LjIzODExNzk5LDEwLjM5NTMwNjcgOC4yNDMyNjEzNywxMS4yMDgxOTQzIEM4LjI0Mzk2Mjc0LDExLjMyMjk4NTIgOC4xOTczODAwOSwxMS4zNjI2NDE4IDguMDg1NTExNiwxMS4zNTkxMDU4IEM3Ljg5NTgyMDI3LDExLjM1MzExNDkgNy43MDU2OTA1OSwxMS4zNTI5Njg4IDcuNTE2MDI4NDksMTEuMzU5MDQ3MyBDNy4zODk5NTcyNiwxMS4zNjMxMDk0IDcuMzQzNDMzMDYsMTEuMzEzMzEyMSA3LjM0NDA0Njc2LDExLjE4NzMyODYgQzcuMzQ3NTI0MzgsMTAuNDg2MzM4NiA3LjM0NjM1NTQzLDkuNzg1MzE5NDUgNy4zNDQ4OTQyNSw5LjA4NDMyOTUgQzcuMzQ0NzE4OSw4Ljk5MjM2MjM3IDcuMzQ0MTkyODgsOC44OTgyMzI2OSA3LjMyNTg0MDM3LDguODA4Nzc4ODEgQzcuMjI5ODExMTQsOC4zNDA5OTQzNCA2Ljk2MzkwNDI5LDguMTExNTI5NSA2LjUzMDE5NDcsOC4xMTM3NTA1IEM2LjA5NjE5Mjg4LDguMTE2MDAwNzMgNS43ODI1MDUyMSw4LjM3NzgxNjI2IDUuNjkzODExMTQsOC44MjAwNTkxOCBDNS42NzIwMTAyMyw4LjkyODgwMDczIDUuNjYyMTkxMDUsOS4wNDE2NjI4MyA1LjY2MTcyMzQ3LDkuMTUyNjgzODQgQzUuNjU4ODMwMzIsOS44MTk1OTg5IDUuNjYwNDM3NjMsMTAuNDg2NTQzMiA1LjY2MDE3NDYxLDExLjE1MzQ1ODMgQzUuNjYwMDg2OTQsMTEuMzQ5MTExMiA1LjY1MTU1MzYxLDExLjM1NzE0NzggNS40NTExMzcxNywxMS4zNTc0MTA4IEM1LjI3NTg4MjM3LDExLjM1NzcwMyA1LjEwMDM5Mzc5LDExLjM1MjAwNDQgNC45MjU0NjA0NiwxMS4zNTkzNjg4IEM0LjgwNTI5MjQyLDExLjM2NDQyNDUgNC43NTgzODgzMSwxMS4zMTk3MTIxIDQuNzYxMDE4NDUsMTEuMTk5NTQ0MSBDNC43NjYwMTU3MSwxMC45NzA4NjgzIDQuNzYyMjc1MDcsMTAuNzQxOTg3OSA0Ljc2MjI3NTA3LDEwLjUxMzE5NTMgQzQuNzYyMjQ1ODQsOS41Njg3NzE1MSA0Ljc2MjQyMTE5LDguNjI0Mzc2OTkgNC43NjIxNTgxNyw3LjY3OTk1MzI0IEM0Ljc2MjA3MDUsNy4zNTcyNjQ2NiA0Ljc1Mzc0MTc0LDcuNDA3ODgwMTggNS4wNDkxOTM3OSw3LjM5ODQxMTY5IEM1LjMwMTMwNzAzLDcuMzkwMzE2NzEgNS41NTc4MzMwNiw3LjM2MDI0NTQ4IDUuNjMyMDkwNTksNy43MzQwNzU2MiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik03LjM3MzQ3MjE1LDUuMTk0NjM0NTIgQzcuMTI5NTcwNzgsNS40NDQzODA2NCA2Ljg3NjcyNjk0LDUuNTc2MzU1MDcgNi41NzU3MjIzNyw1LjYxNDY2NzQgQzUuNzI5NTE5NjMsNS43MjI0MTUzNCA0Ljk4MTc0MjQ3LDUuMzQ4MzgwNjQgNC44MDI4MDU0OCw0LjM3OTU4NDI5IEM0Ljc3NzM1MTYsNC4yNDE4MjM1NiA0Ljc2NDg0Mzg0LDQuMDk5NzY2OTQgNC43NjQxMTMyNCwzLjk1OTYwOTg2IEM0Ljc2MDM3MjYsMy4yMjkzMzc3MiA0Ljc2NDgxNDYxLDIuNDk5MDM2MzUgNC43NjAxMDk1OSwxLjc2ODc5MzQyIEM0Ljc1OTIzMjg4LDEuNjMyOTMyMjQgNC43OTczMTE0MiwxLjU3MzA1Mjc5IDQuOTQyMTQ0MjksMS41ODE4NzgzNiBDNS4xMTE5MDUwMiwxLjU5MjI1Mjc5IDUuMjgyODA1NDgsMS41ODQwMTE2OSA1LjQ1MzIwOTEzLDEuNTg0MzYyMzcgQzUuNjU3NjU4NDUsMS41ODQ4MDA3MyA1LjY2MDExMzI0LDEuNTg2OTA0ODQgNS42NjAxNzE2OSwxLjc4NjYxOTkxIEM1LjY2MDQzNDcsMi40ODc2OTc1MyA1LjY1OTUyODc3LDMuMTg4Nzc1MTYgNS42NjEzNDA2NCwzLjg4OTg1Mjc5IEM1LjY2MTU0NTIxLDMuOTcxNzY2OTQgNS42Njg3MzQyNSw0LjA1NTE0MjI4IDUuNjg1MTU3OTksNC4xMzUyNzM3OSBDNS43NzU3MjIzNyw0LjU3NzA3ODM2IDYuMDU2Mjk5NTQsNC44MjU1Njc4NSA2LjQ1OTkwODY4LDQuODI2ODI0NDcgQzYuODg5Nzg5OTUsNC44MjgxMzk1NCA3LjIyODI4ODU4LDQuNTQ4MjkyOTcgNy4zMTEyNTQ3OSw0LjExMzE1MTQyIEM3LjMzNDc1MDY4LDMuOTg5OTQ0MTEgNy4zNDM2MzQ3LDMuODYyMzUzMjQgNy4zNDQyMTkxOCwzLjczNjY5MTE0IEM3LjM0NzM3NTM0LDMuMDg0MzI5NSA3LjM0NTUzNDI1LDIuNDMxOTM4NjMgNy4zNDU3OTcyNiwxLjc3OTU0Nzc2IEM3LjM0NTg4NDkzLDEuNTg5OTczMzMgNy4zNTExNzQ0MywxLjU4NTAzNDUyIDcuNTQ1ODMzNzksMS41ODQzOTE2IEM3LjY5Njc3NDQzLDEuNTgzODk0NzkgNy44NDc2ODU4NCwxLjU4NDI0NTQ4IDcuOTk4NjI2NDgsMS41ODQyNzQ3IEM4LjI0MjExODcyLDEuNTg0MzYyMzcgOC4yNDIyNjQ4NCwxLjU4NDM5MTYgOC4yNDIyNjQ4NCwxLjgzNTUxMTIzIEM4LjI0MjM1MjUxLDIuNTAyNDg0NzUgOC4yNDIyOTQwNiwzLjE2OTQ4NzQ5IDguMjQyMjk0MDYsMy44MzY0OTAyMyBDOC4yNDIyOTQwNiw0LjM0MjgyMDgyIDguMjQyNzkwODcsNC44NDkxNTE0MiA4LjI0MjAwMTgzLDUuMzU1NDgyMDEgQzguMjQxNzA5NTksNS41MzU3OTI1MSA4LjIzNDU0OTc3LDUuNTQxMzc0MjUgOC4wNTA3OTA4Nyw1LjU0MTk1ODcyIEM4LjAzMTI5ODYzLDUuNTQyMDE3MTcgOC4wMTE3NzcxNyw1LjU0MDk2NTExIDcuOTkyMzcyNiw1LjU0MjEzNDA2IEM3LjcyNTg1MjA1LDUuNTU4MTE5NDUgNy40NTIxNDI0Nyw1LjU4OTU2NDIgNy4zNzM0NzIxNSw1LjE5NDYzNDUyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTI1LjIyODE2ODgsMS40NzQwNTczNSBDMjUuODEzMDgyLDEuNDgyNjE5OTEgMjYuMzAwMjEyNiwxLjY5NzE4MDY0IDI2LjY5NjQyODEsMi4xMjI2NDkxMyBDMjYuODE2NTk2MiwyLjI1MTY0Mjc0IDI2LjgxNjQ1LDIuMjY3OTQ5NTkgMjYuNjg5MTgwNiwyLjM5MTY4MjkyIEMyNi41NzQwMzkxLDIuNTAzNjA5ODYgMjYuNDYwOTE0LDIuNjE3NjcwMTQgMjYuMzQ0MDQ4MiwyLjcyNzc4NTIxIEMyNi4yMDIxMzc3LDIuODYxNDgzODQgMjYuMTk5MDQsMi44NjA1Nzc5IDI2LjA2ODY0MzcsMi43MTg1NTA1IEMyNS45MDA5Mjg2LDIuNTM1ODcyODggMjUuNzA4MzczMywyLjM4OTc1NDE2IDI1LjQ2MzAxMDgsMi4zMzIyMTI2IEMyNC45ODI2MDE2LDIuMjE5NDk2NjIgMjQuNTE0NjcxMSwyLjQ1ODI4Mzg0IDI0LjI4NjY2NzQsMi45MjY1NjUxMSBDMjQuMDI0MTUwNSwzLjQ2NTgzMDg3IDI0LjE0NzAzNjMsNC4yMDIwMDYyMSAyNC41NTg5MTU4LDQuNTU3Mjc5MjcgQzI1LjAxNjUzMDQsNC45NTIwNjI4MyAyNS42ODM3NjY5LDQuODk5Mjg0NzUgMjYuMDk2NjEwOCw0LjQyNzExNjcxIEMyNi4zMDM2NjEsNC4xOTAzMTY3MSAyNi4yNjM1MzY4LDQuMTk0MjMyNjkgMjYuNTAwMzA3Niw0LjQxMTY4NjU4IEMyNi41OTM1MDIxLDQuNDk3MjUzNyAyNi42ODA0NDI3LDQuNTg5ODkyOTcgMjYuNzc2OTM5NSw0LjY3MTM2ODc3IEMyNi44NzM0OTQ4LDQuNzUyOTYxNDYgMjYuODY4MjYzNyw0LjgyNTYxMTY5IDI2Ljc5MTcyNjgsNC45MTg4OTM4OCBDMjYuNDk5NDYwMSw1LjI3NDk1NTk4IDI2LjEzMDE1OTYsNS40OTM0NjE5MiAyNS42NzgyNDM3LDUuNTg4MDI5OTUgQzI0Ljc3NDMyNCw1Ljc3NzIyNDQ3IDIzLjg5NTUzNjgsNS4zOTI0MzU0MyAyMy40NzI5MzIyLDQuNTc1NjMxNzggQzIyLjg5NzM3MDYsMy40NjMyMDA3MyAyMy4zMzI3NzUyLDEuOTMwNTkwNjggMjQuNzI1NDAzNSwxLjU0NjI2OTIyIEMyNC44ODczMDMsMS41MDE1ODYxMiAyNS4wNjAzMDc2LDEuNDk3MTczMzMgMjUuMjI4MTY4OCwxLjQ3NDA1NzM1In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzLjM5MzU0ODksOS4yNDg1MTcyNiBDMTMuMzkzNTE5Niw4Ljk0NjU3NzUzIDEzLjM4OTY2MjEsOC42NDQ1NzkzNiAxMy4zOTU1NjUzLDguMzQyNzg1NzUgQzEzLjM5NzY2OTQsOC4yMzQ0ODI1NiAxMy4zNjIzMzc5LDguMTk1MjY0MjkgMTMuMjUzNjU0OCw4LjIwMDk5MjE1IEMxMy4xMTI4MjU2LDguMjA4NDQ0MiAxMi45NzEyNjU4LDguMjAwNDk1MzQgMTIuODMwMDg1OCw4LjIwMzMzMDA1IEMxMi43MzE2ODk1LDguMjA1MzE3MjYgMTIuNjg3NTYxNiw4LjE2Mjc5NjcxIDEyLjY4ODk2NDQsOC4wNjM3ODY2NyBDMTIuNjkxNDE5Miw3Ljg4ODUzMTg3IDEyLjY5MjU1ODksNy43MTMxMDE3NCAxMi42ODgzNzk5LDcuNTM3OTA1MzkgQzEyLjY4NjAxMjgsNy40Mzg5NTM3OSAxMi43MjI4MzQ3LDcuMzk1MTQ3NCAxMi44MjQ3OTYzLDcuMzk4ODU4ODEgQzEyLjk1NjA5ODYsNy40MDM2NTE1MSAxMy4wODg0ODIyLDcuMzkwOTY4NCAxMy4yMTg5OTU0LDcuNDAyMTMxODcgQzEzLjM2NDczNDIsNy40MTQ2MTA0MSAxMy40MDE1MjY5LDcuMzU0OTM1NTMgMTMuMzk2MzI1MSw3LjIxODEzOTE4IEMxMy4zODY3Mzk3LDYuOTY1Mjk1MzQgMTMuMzk4NjkyMiw2LjcxMTY2MjQ3IDEzLjM5MTQxNTUsNi40NTg2NDMyOSBDMTMuMzg3ODc5NSw2LjMzNTE0Mzc0IDEzLjQyMjQyMTksNi4yODA2OTk5MSAxMy41NTUwOTc3LDYuMjg3MDQxNDYgQzEzLjc0NDU4NDUsNi4yOTYxMDA4MiAxMy45MzUwMzU2LDYuMjk0Nzg1NzUgMTQuMTI0NjY4NSw2LjI4NzM5MjE1IEMxNC4yNDQyODEzLDYuMjgyNzQ1NTcgMTQuMjg5NTE5Niw2LjMyMjk1NzQ0IDE0LjI4NjMwNSw2LjQ0NTg0MzI5IEMxNC4yNzkzNDk4LDYuNzEzNDc0MzQgMTQuMjg4Mzc5OSw2Ljk4MTU0Mzc0IDE0LjI4MjM4OSw3LjI0OTIzMzI0IEMxNC4yNzk4NDY2LDcuMzYzMjM1MDcgMTQuMzE4ODAxOCw3LjQwNTA4MzQ3IDE0LjQzMzk0MzQsNy40MDE2MzUwNyBDMTQuNjUyODg3Nyw3LjM5NTAzMDUgMTQuODcyMjQxMSw3LjQwMzEyNTQ4IDE1LjA5MTI3MzEsNy4zOTg2NTQyNSBDMTUuMjA0OTgyNiw3LjM5NjM0NTU3IDE1LjI0OTA1MjEsNy40NDMyNzg5IDE1LjI0NTQ1NzUsNy41NTUzNTE5NiBDMTUuMjQwNDYwMyw3LjcxMTAyNjg1IDE1LjIzOTAyODMsNy44NjcxNjkzMiAxNS4yNDU4Mzc0LDguMDIyNzI3MzEgQzE1LjI1MTUwNjgsOC4xNTI4NjA2NCAxNS4yMDUzMzMzLDguMjA5MjkxNjkgMTUuMDY5MjA5MSw4LjIwNDcwMzU2IEMxNC44NTAzMjMzLDguMTk3MzM5MTggMTQuNjMwOTk5MSw4LjIwMzYyMjI4IDE0LjQxMTg1MDIsOC4yMDI0ODI1NiBDMTQuMzQyNTksOC4yMDIxMDI2NSAxNC4yODM5Mzc5LDguMjA4MDA1ODQgMTQuMjg1MDc3Niw4LjI5OTU2Mzg0IEMxNC4yOTI0NDIsOC44OTMwNjg4NiAxNC4yODM1Mjg4LDkuNDg3MzA0NDcgMTQuMzExODE3NCwxMC4wNzk3NTc0IEMxNC4zMjc5MTk2LDEwLjQxNjA5MzUgMTQuNDg0MTQ5OCwxMC41MzU0MTQxIDE0LjgyMDk1MzQsMTAuNTU1MTQwMSBDMTQuOTEzMDk1OSwxMC41NjA1NDY1IDE1LjAwNjIwMjcsMTAuNTU5NzU3NCAxNS4wOTgyNTc1LDEwLjU1MzM1NzQgQzE1LjIwNzcyOTcsMTAuNTQ1NzU5MyAxNS4yNDcyNDAyLDEwLjU5NDY1MDYgMTUuMjQ1MTA2OCwxMC42OTkyMTMyIEMxNS4yNDE2MjkyLDEwLjg2OTU4NzYgMTUuMjQyODU2NiwxMS4wNDAwNzg5IDE1LjI0NDYzOTMsMTEuMjEwNTExOCBDMTUuMjQ1NTQ1MiwxMS4yOTc4MDMxIDE1LjIwOTQyNDcsMTEuMzU4MzI1NSAxNS4xMTk5MTIzLDExLjM1NTI1NyBDMTQuODE5MzQ2MSwxMS4zNDQ4ODI2IDE0LjUxMzUxOTYsMTEuMzU4MzI1NSAxNC4yMTk4Nzk1LDExLjMwNTc1MiBDMTMuNzIyOTAwNSwxMS4yMTY3OTQ5IDEzLjQ2Njk4ODEsMTAuOTA0NDIyMyAxMy40MjM1MzI0LDEwLjQwMDQyOTYgQzEzLjQwNjg0NTcsMTAuMjA2OTY4NCAxMy4zOTk1Mzk3LDEwLjAxMjQ1NTIgMTMuMzk0NjMwMSw5LjgxODIzNDE2IEMxMy4zODk4NjY3LDkuNjI4NDU1MTYgMTMuMzkzNTc4MSw5LjQzODQxMzE1IDEzLjM5MzU0ODksOS4yNDg1MTcyNiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yNy4wMzA4MjA4LDcuODUwMDAwMzcgQzI3LjMwOTg3ODQsNy41MzgwNjYxMiAyNy42MTk3NjY5LDcuNDA4NzgwMjcgMjcuOTcxMzU3OCw3LjM1MzAyMTM3IEMyOC4zOTc0OTg0LDcuMjg1NDU2MDcgMjguNDI4NTA0OCw3LjMwNDgzMTQyIDI4LjQyODUwNDgsNy43MjY0MTMxNSBDMjguNDI4NTA0OCw3LjgwNDI5NDQzIDI4LjQyODU2MzMsNy44ODIxNDY0OCAyOC40Mjg1MDQ4LDcuOTYwMDI3NzYgQzI4LjQyODI3MTEsOC4xNzkwODg5NSAyOC40MjgxMjQ5LDguMTc3OTIgMjguMjA1MTc3LDguMjAwNTA5OTUgQzI4LjA4NDgwNDQsOC4yMTI2OTYyNiAyNy45NjEzOTI1LDguMjE2MTczODggMjcuODQ1NTIwNCw4LjI0Njg1ODgxIEMyNy4zODQ2MDM1LDguMzY4OTU1NjIgMjcuMTcyNTI2OCw4LjcxMjQ1MTUxIDI3LjExNjY4MDIsOS4xNTA4NjYxMiBDMjcuMDcwMjQzNyw5LjUxNTcyNDU3IDI3LjA2NzQ5NjYsOS44ODY3NDkyMiAyNy4wNTY4ODg0LDEwLjI1NTM3NzUgQzI3LjA0Nzc3MDYsMTAuNTcxNDYxNiAyNy4wNTIwMDgsMTAuODg4MDcxNiAyNy4wNTYzOTE2LDExLjIwNDM4OTQgQzI3LjA1Nzk2OTcsMTEuMzE4MDY5OCAyNy4wMTM5MDAzLDExLjM2MTg0NjkgMjYuOTAxMjcyLDExLjM1ODc3ODQgQzI2LjcxNjQ2MSwxMS4zNTM4MTA0IDI2LjUzMTA5NDgsMTEuMzUwODAwNCAyNi4zNDY1NzYxLDExLjM1OTY4NDQgQzI2LjIwNzUwMDMsMTEuMzY2MzQ3NCAyNi4xNTgwMjQ1LDExLjMxODI3NDMgMjYuMTU4OTU5NiwxMS4xNzU4MDg2IEMyNi4xNjQyMTk5LDEwLjM4MjQ3MTYgMjYuMTYxNDQzNyw5LjU4OTEzNDYxIDI2LjE2MTQ0MzcsOC43OTU3Njg0IEMyNi4xNjE0NDM3LDguMzk2Njg4OTUgMjYuMTYxMjA5OSw3Ljk5NzU4MDI3IDI2LjE2MTUzMTMsNy41OTg1MDA4MiBDMjYuMTYxNzA2Nyw3LjQwMDc0Mzc0IDI2LjE2NDY4NzUsNy40MjAxNDgzMSAyNi4zNTIwNzAxLDcuMzk1NTcxMTQgQzI2LjY5NDg2NDcsNy4zNTA2NTQyNSAyNi45NDA4NzAxLDcuNDQzNzAyNjUgMjcuMDMwODIwOCw3Ljg1MDAwMDM3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE0LjI4NDE4OTIsMy41ODA4MDg3NyBDMTQuMjg0MTg5Miw0LjE3NDYwNjAzIDE0LjI4MDUwNyw0Ljc2ODQ2MTc0IDE0LjI4NjkwNyw1LjM2MjIyOTc3IEMxNC4yODg0MjY3LDUuNTAzMTQ2NjcgMTQuMjQ0Mzg2NSw1LjU1MjQ3NjM1IDE0LjEwMjg4NTEsNS41NDQ1ODU5NCBDMTMuOTEzNjMyMSw1LjUzMzk3NzcyIDEzLjcyMzM1NjMsNS41Mzk2MTc5IDEzLjUzMzU0ODEsNS41NDI4MzI1MSBDMTMuNDM1NjQ4Niw1LjU0NDQ5ODI2IDEzLjM5MjYwMiw1LjUwNjY1MzUyIDEzLjM5Mjc0ODEsNS40MDU1MzkzNiBDMTMuMzk0Mjk3LDQuMTc0MTA5MjIgMTMuMzk0MzU1NCwyLjk0MjY3OTA5IDEzLjM5MjY4OTcsMS43MTEyMTk3MyBDMTMuMzkyNTcyOCwxLjYxNDQ1OTkxIDEzLjQzNTU2MDksMS41ODI2OTM3IDEzLjUyNTU3LDEuNTgzODMzNDIgQzEzLjcyMDIyOTQsMS41ODYyNTkgMTMuOTE1MjM5NSwxLjU5MDg3NjM1IDE0LjEwOTUxODksMS41ODIwOCBDMTQuMjQxNTgxLDEuNTc2MDg5MTMgMTQuMjg4MzY4MiwxLjYxODQwNTExIDE0LjI4NjkzNjMsMS43NTU1ODEzNyBDMTQuMjgwNTY1NSwyLjM2MzkzMjA1IDE0LjI4NDE4OTIsMi45NzIzOTk2MyAxNC4yODQxODkyLDMuNTgwODA4NzcifSkpKSkpKX07b00uZGlzcGxheU5hbWU9IlNWR0FhbiI7dmFyIGFNPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tYWFuIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1hYW4iKToiSWNvbnMtYWFuIixvbkNsaWNrOmUub25DbGljayxzdmc6b019KX07YU0uZGlzcGxheU5hbWU9IkFhbiIsYU0ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgaU09YU0sdU09ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWFkbWluIix2aWV3Qm94OiIwIDAgMjAgMTMifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00LjU1ODIwMTA4LDEwLjY5MzE5IEw0LjU1ODIwMTA4LDEwLjY4NzcyNDUgQzQuNTYwOTMzODIsMTAuMzc2MTkyOCA0LjcwMDMwMzI4LDkuMzk1MTQxMDggNi4xNTY4NTA3NCw4LjUwMTUzNjkxIEM2LjQyNDY1ODcyLDguMTM4MDgzMjMgNi42NDMyNzc0OCw3LjY0MzQ1ODI5IDYuODY3MzYxNyw3LjA3MjMxNjc5IEM3LjAyMzEyNzU3LDYuNjc4ODAzMDMgNi45OTg1MzI5Niw2LjM0MjY3NjY5IDYuOTk4NTMyOTYsNS44NjE3MTU0MiBDNi45OTg1MzI5Niw1LjUwOTE5MjY4IDcuMDY0MTE4NTksNC45NDA3ODM5MSA2Ljk3NjY3MTA4LDQuNjI2NTE5NDQgQzYuNjc4ODAzMDMsMy41NzE2ODM5NCA1LjkzMDAzMzc4LDMuMjc5MjgxMzUgNS4wNTI4MjYwMiwzLjI3OTI4MTM1IEM0LjE3Mjg4NTUyLDMuMjc5MjgxMzUgMy40MjQxMTYyOCwzLjU3NDQxNjY4IDMuMTI4OTgwOTYsNC42MzE5ODQ5MSBDMy4wNDE1MzM0Niw0Ljk0MDc4MzkxICAgMy4xMDcxMTkwOCw1LjUwOTE5MjY4IDMuMTA3MTE5MDgsNS44NjE3MTU0MiBDMy4xMDcxMTkwOCw2LjM0MjY3NjY5IDMuMDgyNTI0NDcsNi42ODE1MzU3NiAzLjIzODI5MDM0LDcuMDc3NzgyMjYgQzMuNTA2MDk4MzIsNy43NjA5NjU4NyAzLjc2Mjk3NTM1LDguMzM3NTcyODQgNC4xMDQ1NjcxNiw4LjcwMzc1OTI2IEMyLjc3MzcyNTQ4LDguOTQ2OTcyNjMgMS44NzE5MjMxMSw5LjY0MzgxOTkyIDEuMjYyNTIzMzIsOS45MTQzNjA2MyBDMC4wMDU0NjU0Njg5MiwxMC40NzQ1NzEyIDAsMTEuMDg5NDM2NCAwLDExLjA4OTQzNjQgTDAsMTIuMTMzMzQxIEw0LjU1ODIwMTA4LDEyLjEzMDYwODMgTDQuNTU4MjAxMDgsMTAuNjkzMTkifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTMuOTgwNjY5NSw3LjQ0NjcwMTQxIEMxNC40NTM0MzI2LDYuOTQxMTQ1NTMgMTQuODExNDIwOCw2LjE0ODY1MjU0IDE1LjE4MDMzOTksNS4yMTEzMjQ2MiBDMTUuMzkzNDkzMiw0LjY3MDI0MzIgMTUuMzU1MjM0OSw0LjIwNTY3ODM0IDE1LjM1NTIzNDksMy41NDcwODkzMyBDMTUuMzU1MjM0OSwzLjA2MDY2MjYgMTUuNDQ4MTQ3OSwyLjI3OTEwMDU0IDE1LjMyNzkwNzYsMS44NTAwNjEyMyBDMTQuOTE3OTk3NCwwLjM5ODk3OTIzMiAxMy44OTA0ODkzLDAgMTIuNjgyNjIwNiwwIEMxMS40NzQ3NTIsMCAxMC40NDQ1MTExLDAuNDAxNzExOTY2IDEwLjAzNzMzMzcsMS44NTU1MjY3IEM5LjkxNzA5MzM2LDIuMjgxODMzMjggMTAuMDEwMDA2MywzLjA2MzM5NTMzIDEwLjAxMDAwNjMsMy41NDcwODkzMyBDMTAuMDEwMDA2Myw0LjIwODQxMTA3IDkuOTc0NDgwNzksNC42NzI5NzU5MyAxMC4xODc2MzQxLDUuMjE2NzkwMDkgQzEwLjU1OTI4Niw2LjE1Njg1MDc0ICAgMTAuOTExODA4Nyw2Ljk0NjYxMSAxMS4zODE4MzksNy40NTIxNjY4OCBDOS41NDgxNzQyMSw3Ljc4ODI5MzIyIDguMzEwMjQ1NSw4Ljc0NDc1MDI4IDcuNDc2NzYxNDksOS4xMTY0MDIxNyBDNS43NDY5NDA1Nyw5Ljg4NzAzMzI4IDUuNzM4NzQyMzcsMTAuNzMxNDQ4MiA1LjczODc0MjM3LDEwLjczMTQ0ODIgTDUuNzM4NzQyMzcsMTIuMTY2MTMzOCBMMTkuNjYyMDI0NSwxMi4xNjM0MDExIEwxOS42NjIwMjQ1LDEwLjczMTQ0ODIgQzE5LjY2MjAyNDUsMTAuNzMxNDQ4MiAxOS42NTM4MjYzLDkuODg0MzAwNTUgMTcuOTE4NTM5OSw5LjExMzY2OTQzIEMxNy4wNzY4NTc3LDguNzM5Mjg0ODEgMTUuODI3OTk4LDcuNzc3MzYyMjggMTMuOTgwNjY5NSw3LjQ0NjcwMTQxIFoifSkpKX07dU0uZGlzcGxheU5hbWU9IlNWR0FkbWluIjt2YXIgc009ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1hZG1pbiIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtYWRtaW4iKToiSWNvbnMtYWRtaW4iLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp1TX0pfTtzTS5kaXNwbGF5TmFtZT0iQWRtaW4iLHNNLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGxNPXNNLGNNPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1hZHZlcnRpc2UiLHZpZXdCb3g6IjAgMCA2OCA2NSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKC01LjAwMDAwMCwgLTYuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJyZWN0Iix7eDoiMCIseToiMCIsd2lkdGg6Ijc2IixoZWlnaHQ6Ijc2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTYyLjk5OTg1LDI1LjM5MDYgQzY3Ljk2OTg1LDI1LjM5MDYgNzEuOTk5ODUsMjkuNDQ0NiA3MS45OTk4NSwzNC40NDQ2IEM3MS45OTk4NSwzOS40NDQ2IDY3Ljk2OTg1LDQzLjQ5NjYgNjIuOTk5ODUsNDMuNDk2NiIsc3Ryb2tlOiIjNkQ2NTY1IixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zMS4zMTk5NSw0NS45OTEyIEwzOC4xMDU5NSw2OS45OTgyIEwyNC40MDk5NSw2OS45OTgyIEwxNy44ODE5NSw0NS44NjUyIE0xNS4yMDgxNSwyNCBMNi4wMDAxNSwyNCBMNi4wMDAxNSw0MS45NTYgTDE1LjIwODE1LDQxLjk1NiBNNjIuOTk5ODUsNTguNSBMMzEuMzE5ODUsNDUuOTkxIEwxOC44Mzk4NSw0NS45OTEgQzE2LjcxODg1LDQ1Ljk5MSAxNC45OTk4NSw0NC4yNjggMTQuOTk5ODUsNDIuMTQyIEwxNC45OTk4NSwyMy44NTkgQzE0Ljk5OTg1LDIxLjczMyAxNi43MTg4NSwyMC4wMSAxOC44Mzk4NSwyMC4wMSBMMzEuMzE5ODUsMjAuMDEgTDYyLjk5OTg1LDcuNSBMNjIuOTk5ODUsNTguNSBaIixzdHJva2U6IiM2RDY1NjUiLHN0cm9rZVdpZHRoOiIyIn0pKSkpfTtjTS5kaXNwbGF5TmFtZT0iU1ZHQWR2ZXJ0aXNlIjt2YXIgZk09ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1hZHZlcnRpc2UiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWFkdmVydGlzZSIpOiJJY29ucy1hZHZlcnRpc2UiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpjTX0pfTtmTS5kaXNwbGF5TmFtZT0iQWR2ZXJ0aXNlIixmTS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBkTT1mTSxwTT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tYW5hbHl0aWNzIix2aWV3Qm94OiIwIDAgNTAgNTAifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHt4OiIwIix5OiIwIix3aWR0aDoiNTAiLGhlaWdodDoiNTAifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOCwxOSBMMjAsMTAgTDI5LDE1IEw0MSw3IE0xNywyNCBMMjMsMjQgTDIzLDQyIEwxNyw0MiBMMTcsMjQgWiBNMjYsMjcgTDMyLDI3IEwzMiw0MiBMMjYsNDIgTDI2LDI3IFogTTM1LDE5IEw0MSwxOSBMNDEsNDIgTDM1LDQyIEwzNSwxOSBaIE04LDMyIEwxNCwzMiBMMTQsNDIgTDgsNDIgTDgsMzIgWiBNNiw0MiBMNDMsNDIgTDYsNDIgWiIsc3Ryb2tlOiIjRDlEMkQwIixzdHJva2VXaWR0aDoiMiJ9KSkpfTtwTS5kaXNwbGF5TmFtZT0iU1ZHQW5hbHl0aWNzIjt2YXIgaE09ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1hbmFseXRpY3MiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWFuYWx5dGljcyIpOiJJY29ucy1hbmFseXRpY3MiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpwTX0pfTtoTS5kaXNwbGF5TmFtZT0iQW5hbHl0aWNzIixoTS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciB5TT1oTSxtTT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tYXBwbGUtbXVzaWMiLHZpZXdCb3g6IjAgMCAyNCAyNCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJsaW5lYXJHcmFkaWVudCIse3gxOiI0MS41OTAyMTUxJSIseTE6IjYuODA0Mjg2MDglIix4MjoiNzUuOTk4OTI0OCUiLHkyOiI3Ny4xNzc3ODA2JSIsaWQ6ImFwcGxlLW11c2ljLWxpbmVhci1ncmFkaWVudCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7c3RvcENvbG9yOiIjRkY1MDVDIixvZmZzZXQ6IjAlIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7c3RvcENvbG9yOiIjMzhBREZCIixvZmZzZXQ6IjEwMCUifSkpKSxFLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02LDAgTDE4LDAgQzIxLjMxMzcwODUsLTYuMDg3MTgzNzZlLTE2IDI0LDIuNjg2MjkxNSAyNCw2IEwyNCwxOCBDMjQsMjEuMzEzNzA4NSAyMS4zMTM3MDg1LDI0IDE4LDI0IEw2LDI0IEMyLjY4NjI5MTUsMjQgNC4wNTgxMjI1MWUtMTYsMjEuMzEzNzA4NSAwLDE4IEwwLDYgQy00LjA1ODEyMjUxZS0xNiwyLjY4NjI5MTUgMi42ODYyOTE1LDYuMDg3MTgzNzZlLTE2IDYsMCBaIixmaWxsOiIjRDlEMkQwIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTYsMSBMMTgsMSBDMjAuNzYxNDIzNywxIDIzLDMuMjM4NTc2MjUgMjMsNiBMMjMsMTggQzIzLDIwLjc2MTQyMzcgMjAuNzYxNDIzNywyMyAxOCwyMyBMNiwyMyBDMy4yMzg1NzYyNSwyMyAxLDIwLjc2MTQyMzcgMSwxOCBMMSw2IEMxLDMuMjM4NTc2MjUgMy4yMzg1NzYyNSwxIDYsMSBaIixmaWxsOiIjRkZGRkZGIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE3LjEwODI0MzYsMTUuNTA2OTUyMyBDMTcuMTA4MjQzNiwxNS44ODkzMzAzIDE3LjA1NjczOTYsMTYuMjY1NDY1NCAxNi44ODY2MjA2LDE2LjYxMjcyNyBDMTYuNjIxMjk3MywxNy4xNTQyOTkxIDE2LjE4ODE5NjEsMTcuNDk0NTM3NSAxNS42MTM4NDkzLDE3LjY1NzYzMzQgQzE1LjI5NDY4MSwxNy43NDg5MzU5IDE0Ljk2NzcwOTEsMTcuODAxMjIwMiAxNC42MzM3MTQsMTcuODE2MDQ3MSBDMTMuNzYxMjY4NiwxNy44NTc0MDY0IDEzLjAwNzQzODQsMTcuMjY1ODkxIDEyLjg1MTM2NTksMTYuNDA4MjcxOSBDMTIuNzIxODI1NywxNS43MDA0ODI0IDEzLjA2MTI4MzQsMTQuOTIwMTE5MiAxMy44MDQ5Njg5LDE0LjU1NTY4OTYgQzE0LjEwMTUwNjcsMTQuNDA4OTgxMyAxNC40MTgzMzM5LDE0LjMyNzA0MzEgMTQuNzM3NTAyMiwxNC4yNTgzNzEyIEMxNS4wODM5ODMxLDE0LjE4NDIzNjcgMTUuNDMyODA1MiwxNC4xMTc5MDU4IDE1Ljc3Njk0NTEsMTQuMDM4MzA4NyBDMTYuMDI4MjIxOCwxMy45ODA1NjE5IDE2LjE5NTk5OTgsMTMuODI3NjEwNyAxNi4yNDU5NDMsMTMuNTY1NDA4NiBDMTYuMjU2ODY4LDEzLjUwNzY2MTcgMTYuMjYxNTUwMiwxMy40NDc1NzM4IDE2LjI2MTU1MDIsMTMuMzg4MjY2MiBDMTYuMjYyMzMwNiwxMS43MjQ1MzE4IDE2LjI2MjMzMDYsMTAuMDYxNTc3OCAxNi4yNjA3Njk5LDguMzk4NjIzNzIgQzE2LjI2MDc2OTksOC4zNDE2NTcyMSAxNi4yNTE0MDU1LDguMjgzOTEwMzMgMTYuMjM4MTM5Myw4LjIyOTI4NDkgQzE2LjIwMTQ2MjMsOC4wOTExNjA2MSAxNi4xMDA3OTU1LDguMDA2ODgxMzggMTUuOTU4NzY5NSw4LjAxNDY4NTAyIEMxNS44MTI4NDE4LDguMDIzMjY5MDEgMTUuNjY3Njk0Myw4LjA0NjY3OTkxIDE1LjUyNDEwNzYsOC4wNzU1NTMzNSBDMTQuODI2NDYzNSw4LjIxMjg5NzI4IDE0LjEzMTE2MDUsOC4zNTQxNDMwMiAxMy40MzQyOTY3LDguNDk0NjA4NCBDMTIuNzI0MTY2OCw4LjYzNzQxNDg3IDEyLjAxMjQ3NjIsOC43ODE3ODIwNyAxMS4zMDE1NjU5LDguOTI1MzY4OSBDMTAuODgxNzMwOSw5LjAxMDQyODQ5IDEwLjQ2MTExNTQsOS4wOTQ3MDc3MiAxMC4wNDEyODA0LDkuMTc5NzY3MzEgQzEwLjAyNjQ1MzUsOS4xODI4ODg3NiAxMC4wMTE2MjY2LDkuMTg3NTcwOTQgOS45OTc1ODAxLDkuMTkxNDcyNzYgQzkuNzQzOTYyMjcsOS4yNjE3MDU0NSA5LjY1MTg3OTQ5LDkuMzc3OTc5NTcgOS42NDAxNzQwNSw5LjY0MDE4MTYxIEM5LjYzODYxMzMzLDkuNjc5OTgwMTQgOS42MzkzOTM2OSw5LjcxOTc3ODY2IDkuNjM5MzkzNjksOS43NjAzNTc1NSBDOS42Mzg2MTMzMywxMi4xNDUxNDc2IDkuNjM5MzkzNjksMTQuNTMwNzE3OSA5LjYzNzgzMjk3LDE2LjkxNTUwNzkgQzkuNjM3ODMyOTcsMTcuMzAwMjI3IDkuNTk1NjkzMzksMTcuNjgxMDQ0MyA5LjQ0MDQwMTI0LDE4LjAzOTIzMSBDOS4xODUyMjI2OSwxOC42Mjc2MjQ5IDguNzM0OTUzNTEsMTguOTkzNjE1MiA4LjEyNTQ5MDM2LDE5LjE3MDc1NzcgQzcuODAzOTgwOTksMTkuMjYzNjIwOSA3LjQ3Mzg4NzY0LDE5LjMxNjY4NTYgNy4xNDA2NzI4MywxOS4zMjgzOTEgQzYuMjYxOTg0NjEsMTkuMzYxMTY2MyA1LjUzMjM0NTY0LDE4Ljc3NzQ1NDYgNS4zODA5NTUzLDE3LjkxMjgxMjEgQzUuMjUwNjM0NzYsMTcuMTY3NTY1MyA1LjU5MTY1MzE5LDE2LjM2NzY5MyA2LjQzNzU2NjE5LDE2LjAwOTUwNjIgQzYuNzY1MzE4NDUsMTUuODcyMTYyMyA3LjEwODY3Nzk3LDE1Ljc5NjQ2NzEgNy40NTI4MTc4NSwxNS43MjQ2NzM3IEM3LjcxNTgwMDAzLDE1LjY2OTI2NzkgNy45Nzk1NjI1NywxNS42MTkzMjQ2IDguMjQxNzY0MzgsMTUuNTYzMTM4NSBDOC41OTIxNDcxNiwxNS40ODc0NDMyIDguNzc1NTMyMzYsMTUuMjY2NjAwNSA4Ljc5MDM1OTI1LDE0LjkwODQxMzcgQzguNzkxOTE5OTcsMTQuODYxNTkxOSA4Ljc5MTEzOTYxLDE0LjgxNzExMTIgOC43OTExMzk2MSwxNC43NzEwNjk4IEM4Ljc5MTEzOTYxLDEyLjA1Njk2NjUgOC43OTExMzk2MSw5LjM0Mjg2MzIyIDguNzkyNzAwMzMsNi42Mjk1NDAzIEM4Ljc5MjcwMDMzLDYuNTE2Mzg3NjMgOC44MDQ0MDU3Nyw2LjQwMDExMzUxIDguODMxNzE4NDYsNi4yOTAwODIyOSBDOC44OTU3MDgxOSw2LjAyODY2MDYxIDkuMDgxNDM0NDcsNS44Nzk2MTEyNCA5LjMzMTE1MDQ5LDUuODE0ODQxMDkgQzkuNTY1MjU5MjUsNS43NTM5NzI3NiA5LjgwMzI2OTgyLDUuNzExODMzMTQgMTAuMDQwNSw1LjY2MzQ1MDYyIEMxMC43MTIzOTIyLDUuNTI3NjY3NDIgMTEuMzg1MDY0Nyw1LjM5MjY2NDU5IDEyLjA1NjE3NjUsNS4yNTc2NjE3NSBDMTIuNzUwNjk5MSw1LjExNzE5NjM3IDEzLjQ0NTIyMTgsNC45Nzc1MTEzNSAxNC4xMzg5NjQxLDQuODM3MDQ1OTcgQzE0Ljc1MjMyOTEsNC43MTI5NjgyMiAxNS4zNjY0NzQ0LDQuNTg3MzI5NzQgMTUuOTgxNDAwMSw0LjQ2NjM3MzQ0IEMxNi4xODI3MzM2LDQuNDI2NTc0OTEgMTYuMzg2NDA4Miw0LjM4NTk5NjAzIDE2LjU4OTMwMjUsNC4zNjk2MDg0IEMxNi44NzMzNTQ0LDQuMzQ2OTc3ODcgMTcuMDY4NDQ1MSw0LjUyNTY4MTA0IDE3LjA5NzMxODUsNC44MTEyOTM5OCBDMTcuMTA0MzQxOCw0Ljg3OTE4NTU4IDE3LjEwODI0MzYsNC45NDc4NTc1NSAxNy4xMDgyNDM2LDUuMDE2NTI5NTEgQzE3LjEwOTgwNDMsNi43Njg0NDQ5NSAxNy4xMDk4MDQzLDguNTE5NTgwMDIgMTcuMTA5MDIzOSwxMC4yNzA3MTUxIEMxNy4xMDkwMjM5LDEyLjAxNjM4NzYgMTcuMTA5ODA0MywxMy43NjI4NDA1IDE3LjEwODI0MzYsMTUuNTA2OTUyMyBaIixmaWxsOiJ1cmwoI2FwcGxlLW11c2ljLWxpbmVhci1ncmFkaWVudCkifSkpKX07bU0uZGlzcGxheU5hbWU9IlNWR0FwcGxlTXVzaWMiO3ZhciB2TT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWFwcGxlLW11c2ljIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1hcHBsZS1tdXNpYyIpOiJJY29ucy1hcHBsZS1tdXNpYyIsb25DbGljazplLm9uQ2xpY2ssc3ZnOm1NfSl9O3ZNLmRpc3BsYXlOYW1lPSJBcHBsZU11c2ljIix2TS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBnTT12TSxiTT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tYXJ0d29yay1lbXB0eSIsdmlld0JveDoiMCAwIDgwIDgxIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoLTUwODAuMDAwMDAwLCAtMTcxLjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDEyOC4wMDAwMDAsIDE3Ni4wMDAwMDApIixzdHJva2U6IiNBOEEwQTAiLHN0cm9rZVdpZHRoOiIyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNTAwNy41LDM1LjUwMzk5NjQgQzUwMDcuNSwzNy43MTI5OTY0IDUwMDUuNzA5LDM5LjUwMzk5NjQgNTAwMy41LDM5LjUwMzk5NjQgQzUwMDEuMjkxLDM5LjUwMzk5NjQgNDk5OS41LDM3LjcxMjk5NjQgNDk5OS41LDM1LjUwMzk5NjQgQzQ5OTkuNSwzMy4yOTQ5OTY0IDUwMDEuMjkxLDMxLjUwMzk5NjQgNTAwMy41LDMxLjUwMzk5NjQgQzUwMDUuNzA5LDMxLjUwMzk5NjQgNTAwNy41LDMzLjI5NDk5NjQgNTAwNy41LDM1LjUwMzk5NjQgWiBNNDk2Niw1NS4wMDM5OTY0IEw0OTgxLjYsNDEuMDAzOTk2NCBMNTAxOCw2Mi4wMDM5OTY0IE00OTcwLjM2MzUsMTcuOTk5MDk2NCBDNDk3Mi4yNDY1LDcuNzYxMDk2MzcgNDk4MS4yMTc1LDAuMDA0MDk2MzY2ODggNDk5MS45OTk1LDAuMDA0MDk2MzY2ODggQzUwMDIuNzgyNSwwLjAwNDA5NjM2Njg4IDUwMTEuNzUzNSw3Ljc2MTA5NjM3IDUwMTMuNjM2NSwxNy45OTkwOTY0IE00OTc2LjUzMzksMTguMDA0OTk2NCBDNDk3OC4xNzk5LDEyLjcxOTk5NjQgNDk4Mi4yMzA5LDguNDk0OTk2MzcgNDk4Ny40MDY5LDYuNjEwOTk2MzcgTTQ5NjYsNjguMDAzNjk2NCBMNTAxOCw2OC4wMDM2OTY0IEw1MDE4LDE4LjAwMzY5NjQgTDQ5NjYsMTguMDAzNjk2NCBMNDk2Niw2OC4wMDM2OTY0IFoifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMTE5LjAwMDAwMCwgMTcwLjAwMDAwMCkifSkpKSl9O2JNLmRpc3BsYXlOYW1lPSJTVkdBcnR3b3JrRW1wdHkiO3ZhciB3TT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWFydHdvcmstZW1wdHkiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWFydHdvcmstZW1wdHkiKToiSWNvbnMtYXJ0d29yay1lbXB0eSIsb25DbGljazplLm9uQ2xpY2ssc3ZnOmJNfSl9O3dNLmRpc3BsYXlOYW1lPSJBcnR3b3JrRW1wdHkiLHdNLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIF9NPXdNLEVNPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1hdWRpby1kaXNhYmxlZCIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTYsMTNsLTMtMi4wNkwxMC4zNSw5LjEyaDBMNi4wNiw2LjE3LDUsNS40NCwwLDJWM0w1LDYuNDR2NC44M0EyLDIsMCwxLDAsNiwxM1Y3LjEyTDkuNjEsOS42QTIsMiwwLDAsMCw5LDExYTIsMiwwLDAsMCwzLjgyLjgyTDE2LDE0WiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse3BvaW50czoiMTIgNC4zMSAxMiA5LjI1IDEzIDkuOTQgMTMgNCAxMyAwIDUgMi41IDUgNC40NCA3LjA2IDUuODYgMTIgNC4zMSJ9KSl9O0VNLmRpc3BsYXlOYW1lPSJTVkdBdWRpb0Rpc2FibGVkIjt2YXIgT009ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1hdWRpby1kaXNhYmxlZCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtYXVkaW8tZGlzYWJsZWQiKToiSWNvbnMtYXVkaW8tZGlzYWJsZWQiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpFTX0pfTtPTS5kaXNwbGF5TmFtZT0iQXVkaW9EaXNhYmxlZCIsT00ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIga009T00sQ009ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWF1ZGlvLWVuYWJsZWQiLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEyLDQuMzEsNiw2LjE5VjEzYTIsMiwwLDEsMS0xLTEuNzNWMi41TDEzLDBWMTFhMiwyLDAsMSwxLTEtMS43M1oifSkpfTtDTS5kaXNwbGF5TmFtZT0iU1ZHQXVkaW9FbmFibGVkIjt2YXIgeE09ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1hdWRpby1lbmFibGVkIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1hdWRpby1lbmFibGVkIik6Ikljb25zLWF1ZGlvLWVuYWJsZWQiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpDTX0pfTt4TS5kaXNwbGF5TmFtZT0iUmVmcmVzaCIseE0ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgU009eE0sRE09ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWF1ZGlvLXBsYXllci1tdXRlIix2aWV3Qm94OiIwIDAgMjYgMjEifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMjEuNTE4IDkuNzU0bDMuODI3LTMuODI2LTEuNTMtMS41My0zLjgyNyAzLjgyNi0zLjgyNi0zLjgyNy0xLjUzIDEuNTMxIDMuODI1IDMuODI2LTMuODI2IDMuODI2IDEuNTMgMS41MyAzLjgyNy0zLjgyNSAzLjgyNiAzLjgyNiAxLjUzLTEuNTMtMy44MjYtMy44Mjd6TTEyLjc2OCAwdjIwLjAybC03LjQwMy01LjY2M0wwIDEzLjg4NXYtNy43NWw1LjM2NS0uNDcyTDEyLjc2NyAweiJ9KSl9O0RNLmRpc3BsYXlOYW1lPSJTVkdBdWRpb1BsYXllck11dGUiO3ZhciBUTT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWF1ZGlvLXBsYXllci1tdXRlIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1hdWRpby1wbGF5ZXItbXV0ZSIpOiJJY29ucy1hdWRpby1wbGF5ZXItbXV0ZSIsb25DbGljazplLm9uQ2xpY2ssc3ZnOkRNfSl9O1RNLmRpc3BsYXlOYW1lPSJBdWRpb1BsYXllck11dGUiLFRNLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIE1NPVRNLFBNPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1hdWRpby1wbGF5ZXItbmV4dCIsdmlld0JveDoiMCAwIDMwIDMwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImNpcmNsZSIse2N4OiIxNSIsY3k6IjE1IixyOiIxNSIsaWQ6ImF1ZGlvLXBsYXllci1uZXh0LWNpcmNsZSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2lkOiJhdWRpby1wbGF5ZXItbmV4dC1wYXRoIixkOiJNMTggMTAuNWgzdjloLTN2LTl6TTkgMjFWOWw3LjUgNkw5IDIxeiJ9KSl9O1BNLmRpc3BsYXlOYW1lPSJTVkdBdWRpb1BsYXllck5leHQiO3ZhciBOTT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWF1ZGlvLXBsYXllci1uZXh0IixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1hdWRpby1wbGF5ZXItbmV4dCIpOiJJY29ucy1hdWRpby1wbGF5ZXItbmV4dCIsb25DbGljazplLm9uQ2xpY2ssc3ZnOlBNfSl9O05NLmRpc3BsYXlOYW1lPSJBdWRpb1BsYXllck5leHQiLE5NLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGpNPU5NLExNPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1hdWRpby1wbGF5ZXItbmV4dC1saXRlIix2aWV3Qm94OiIwIDAgMTIgMTIifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2lkOiJhdWRpby1wbGF5ZXItbmV4dC1saXRlLXBhdGgiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNOSAxLjVoM3Y5SDl2LTl6TTAgMTJWMGw3LjUgNkwwIDEyeiJ9KSl9O0xNLmRpc3BsYXlOYW1lPSJTVkdBdWRpb1BsYXllck5leHRMaXRlIjt2YXIgUk09ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1hdWRpby1wbGF5ZXItbmV4dC1saXRlIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1hdWRpby1wbGF5ZXItbmV4dC1saXRlIik6Ikljb25zLWF1ZGlvLXBsYXllci1uZXh0LWxpdGUiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpMTX0pfTtSTS5kaXNwbGF5TmFtZT0iQXVkaW9QbGF5ZXJOZXh0TGl0ZSIsUk0ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgSU09Uk0sQU09ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWF1ZGlvLXBsYXllci1wYXVzZSIsdmlld0JveDoiMCAwIDMwIDMwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJjaXJjbGUiLHtjeDoiMTUiLGN5OiIxNSIscjoiMTUiLGZpbGw6IiNGRjg5M0UifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiIjRkZGIixkOiJNOSA4aDQuMjg2djE0SDlWOHptNy43MTQgMEgyMXYxNGgtNC4yODZWOHoifSkpKX07QU0uZGlzcGxheU5hbWU9IlNWR0F1ZGlvUGxheWVyUGF1c2UiO3ZhciBGTT1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWF1ZGlvLXBsYXllci1wYXVzZSIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtYXVkaW8tcGxheWVyLXBhdXNlIik6Ikljb25zLWF1ZGlvLXBsYXllci1wYXVzZSIsb25DbGljazplLm9uQ2xpY2ssc3ZnOkFNfSl9O0ZNLmRpc3BsYXlOYW1lPSJBdWRpb1BsYXllclBhdXNlIixGTS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBCTT1GTSx6TT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXBhdXNlLWxpdGUiLHZpZXdCb3g6IjAgMCAxMiAxNCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7aWQ6ImF1ZGlvLXBsYXllci1wYXVzZS1saXRlLXBhdGgiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMCAwaDQuMjg2djE0SDBWMHptNy43MTQgMEgxMnYxNEg3LjcxNFYweiJ9KSl9O3pNLmRpc3BsYXlOYW1lPSJTVkdBdWRpb1BsYXllclBhdXNlTGl0ZSI7dmFyIEtNPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXBhdXNlLWxpdGUiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWF1ZGlvLXBsYXllci1wYXVzZS1saXRlIik6Ikljb25zLWF1ZGlvLXBsYXllci1wYXVzZS1saXRlIixvbkNsaWNrOmUub25DbGljayxzdmc6ek19KX07S00uZGlzcGxheU5hbWU9IkF1ZGlvUGxheWVyUGF1c2VMaXRlIixLTS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBxTT1LTSxWTT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXBsYXkiLHZpZXdCb3g6IjAgMCAzMCAzMCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7ZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7Y3g6IjE1IixjeToiMTUiLHI6IjE1IixpZDoiYXVkaW8tcGxheWVyLXBsYXktY2lyY2xlIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoNSA1KSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTAgMGgxNnYxNkgweiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2lkOiJhdWRpby1wbGF5ZXItcGxheS10cmlhbmdsZSIsdHJhbnNmb3JtOiJtYXRyaXgoLTEgMCAwIDEgMjMuNzUgMCkiLGQ6Ik0xNi4yNSAyLjV2MTVMNy41IDEweiJ9KSkpKX07Vk0uZGlzcGxheU5hbWU9IlNWR0F1ZGlvUGxheWVyUGxheSI7dmFyIFVNPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXBsYXkiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWF1ZGlvLXBsYXllci1wbGF5Iik6Ikljb25zLWF1ZGlvLXBsYXllci1wbGF5IixvbkNsaWNrOmUub25DbGljayxzdmc6Vk19KX07VU0uZGlzcGxheU5hbWU9IkF1ZGlvUGxheWVyUGxheSIsVU0ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgV009VU0sWU09ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWF1ZGlvLXBsYXllci1wcmV2aW91cyIsdmlld0JveDoiMCAwIDMwIDMwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJjaXJjbGUiLHtjeDoiMTUiLGN5OiIxNSIscjoiMTUiLGlkOiJhdWRpby1wbGF5ZXItcHJldmlvdXMtY2lyY2xlIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7aWQ6ImF1ZGlvLXBsYXllci1wcmV2aW91cy1wYXRoIixkOiJNOSAxMC41aDN2OUg5di05ek0yMSA5djEybC03LjUtNkwyMSA5eiJ9KSkpfTtZTS5kaXNwbGF5TmFtZT0iU1ZHQXVkaW9QbGF5ZXJQcmV2aW91cyI7dmFyIEhNPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXByZXZpb3VzIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1hdWRpby1wbGF5ZXItcHJldmlvdXMiKToiSWNvbnMtYXVkaW8tcGxheWVyLXByZXZpb3VzIixvbkNsaWNrOmUub25DbGljayxzdmc6WU19KX07SE0uZGlzcGxheU5hbWU9IkF1ZGlvUGxheWVyUHJldmlvdXMiLEhNLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIEdNPUhNLFFNPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1hdWRpby1wbGF5ZXItcHJldmlvdXMtbGl0ZSIsdmlld0JveDoiMCAwIDEyIDEyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtpZDoiYXVkaW8tcGxheWVyLXByZXZpb3VzLWxpdGUtcGF0aCIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0wIDEuNWgzdjlIMHYtOXpNMTIgMHYxMkw0LjUgNiAxMiAweiJ9KSl9O1FNLmRpc3BsYXlOYW1lPSJTVkdBdWRpb1BsYXllclByZXZpb3VzTGl0ZSI7dmFyIEpNPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXByZXZpb3VzLWxpdGUiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWF1ZGlvLXBsYXllci1wcmV2aW91cy1saXRlIik6Ikljb25zLWF1ZGlvLXBsYXllci1wcmV2aW91cy1saXRlIixvbkNsaWNrOmUub25DbGljayxzdmc6UU19KX07Sk0uZGlzcGxheU5hbWU9IkF1ZGlvUGxheWVyUHJldmlvdXNMaXRlIixKTS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBaTT1KTSwkTT1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXZvbHVtZSIsdmlld0JveDoiMCAwIDIzIDIwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToibm9uemVybyIsZDoiTTEyLjc1NCAwdjIwTDUuMzYgMTQuMzQyIDAgMTMuODcxVjYuMTI5bDUuMzYtLjQ3MUwxMi43NTQgMHptMy41NzQgMy41MjRBOS41ODUgOS41ODUgMCAwIDEgMTguODM0IDEwYTkuNTg1IDkuNTg1IDAgMCAxLTIuNTA2IDYuNDc2bC0xLjY2My0xLjUxM2MxLjE5MS0xLjI5IDEuOTEtMy4wNTIgMS45MS00Ljk2MyAwLTEuOTEtLjcxOS0zLjY0OC0xLjkxLTQuOTYzbDEuNjYzLTEuNTEzek0xOS4xMDcuOTkzQTEzLjM1NCAxMy4zNTQgMCAwIDEgMjIuNTggMTBjMCAzLjQ3NC0xLjMxNSA2LjYyNS0zLjQ3NCA5LjAwN2wtMS42NjMtMS41MTNBMTEuMDc2IDExLjA3NiAwIDAgMCAyMC4zNDcgMTBjMC0yLjg3OC0xLjExNi01LjUwOS0yLjkwMy03LjQ5NEwxOS4xMDcuOTkzeiJ9KSl9OyRNLmRpc3BsYXlOYW1lPSJTVkdBdWRpb1BsYXllclZvbHVtZSI7dmFyIFhNPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tYXVkaW8tcGxheWVyLXZvbHVtZSIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtYXVkaW8tcGxheWVyLXZvbHVtZSIpOiJJY29ucy1hdWRpby1wbGF5ZXItdm9sdW1lIixvbkNsaWNrOmUub25DbGljayxzdmc6JE19KX07WE0uZGlzcGxheU5hbWU9IkF1ZGlvUGxheWVyVm9sdW1lIixYTS5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBlUD1YTSx0UD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tY2FtZXJhIix2aWV3Qm94OiIwIDAgMjYgMjYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGw6IiM5Qzk4OTYifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0gMjUuMTg3NSA2LjAxNTYyNSBDIDI1LjE4NzUgNi4wMTU2MjUgMjAuNjA5Mzc1IDYuMDE1NjI1IDE5Ljc5Njg3NSA2LjAxNTYyNSBDIDE4Ljk4NDM3NSA2LjAxNTYyNSAxOC45ODQzNzUgNS4yMDMxMjUgMTguOTg0Mzc1IDUuMjAzMTI1IEwgMTguOTg0Mzc1IDMuODQzNzUgQyAxOC45ODQzNzUgMy4zOTQ1MzEgMTguNjIxMDk0IDMuMDMxMjUgMTguMTcxODc1IDMuMDMxMjUgTCA3LjgxMjUgMy4wMzEyNSBDIDcuMzYzMjgxIDMuMDMxMjUgNyAzLjM5NDUzMSA3IDMuODQzNzUgTCA3IDUuMjAzMTI1IEMgNyA1LjIwMzEyNSA3IDYuMDE1NjI1IDYuMTg3NSA2LjAxNTYyNSBDIDUuMzc1IDYuMDE1NjI1IDAuODEyNSA2LjAxNTYyNSAwLjgxMjUgNi4wMTU2MjUgQyAwLjM2MzI4MSA2LjAxNTYyNSAwIDYuMzc4OTA2IDAgNi44MjgxMjUgTCAwIDIyLjE4NzUgQyAwIDIyLjYzNjcxOSAwLjM2MzI4MSAyMyAwLjgxMjUgMjMgTCAyNS4xODc1IDIzIEMgMjUuNjM2NzE5IDIzIDI2IDIyLjYzNjcxOSAyNiAyMi4xODc1IEwgMjYgNi44MjgxMjUgQyAyNiA2LjM3ODkwNiAyNS42MzY3MTkgNi4wMTU2MjUgMjUuMTg3NSA2LjAxNTYyNSBaIE0gMjMgMTAuMjU3ODEzIEMgMjIuMzA4NTk0IDEwLjI1NzgxMyAyMS43NDIxODggOS42OTUzMTMgMjEuNzQyMTg4IDkgQyAyMS43NDIxODggOC4zMDQ2ODggMjIuMzA4NTk0IDcuNzQyMTg4IDIzIDcuNzQyMTg4IEMgMjMuNjkxNDA2IDcuNzQyMTg4IDI0LjI1NzgxMyA4LjMwNDY4OCAyNC4yNTc4MTMgOSBDIDI0LjI1NzgxMyA5LjY5NTMxMyAyMy42OTE0MDYgMTAuMjU3ODEzIDIzIDEwLjI1NzgxMyBaIE0gMTMgMjEuMTIxMDk0IEMgOS4wNzAzMTMgMjEuMTIxMDk0IDUuODc4OTA2IDE3LjkzMzU5NCA1Ljg3ODkwNiAxNCBDIDUuODc4OTA2IDEwLjA2NjQwNiA5LjA3MDMxMyA2Ljg3ODkwNiAxMyA2Ljg3ODkwNiBDIDE2LjkyOTY4OCA2Ljg3ODkwNiAyMC4xMjEwOTQgMTAuMDY2NDA2IDIwLjEyMTA5NCAxNCBDIDIwLjEyMTA5NCAxNy45Mzc1IDE2LjkyOTY4OCAyMS4xMjEwOTQgMTMgMjEuMTIxMDk0IFogTSAxMyAxOS40NTcwMzEgQyA5Ljk4ODI4MSAxOS40NTcwMzEgNy41NDI5NjkgMTcuMDE1NjI1IDcuNTQyOTY5IDE0IEMgNy41NDI5NjkgMTAuOTg0Mzc1IDkuOTg4MjgxIDguNTQyOTY5IDEzIDguNTQyOTY5IEMgMTYuMDExNzE5IDguNTQyOTY5IDE4LjQ1NzAzMSAxMC45ODQzNzUgMTguNDU3MDMxIDE0IEMgMTguNDU3MDMxIDE3LjAxNTYyNSAxNi4wMTE3MTkgMTkuNDU3MDMxIDEzIDE5LjQ1NzAzMSBaIn0pKSl9O3RQLmRpc3BsYXlOYW1lPSJTVkdDYW1lcmEiO3ZhciBuUD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWNhbWVyYSIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtY2FtZXJhIik6Ikljb25zLWNhbWVyYSIsb25DbGljazplLm9uQ2xpY2ssc3ZnOnRQfSl9O25QLmRpc3BsYXlOYW1lPSJDYW1lcmEiLG5QLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIHJQPW5QLG9QPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1jYXRhbG9nIix2aWV3Qm94OiIwIDAgNTAgNTAifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHt4OiIwIix5OiIwIix3aWR0aDoiNTAiLGhlaWdodDoiNTAifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjUuNjU0NTc2NywxNS44NzAxODc1IEMyNi42OTgzMjY3LDE1LjA4ODMxMjUgMjcuOTk0NTc2NywxNC42MjUxODc1IDI5LjM5ODk1MTcsMTQuNjI1MTg3NSBDMzIuODUwMjAxNywxNC42MjUxODc1IDM1LjY0ODk1MTcsMTcuNDIyNjg3NSAzNS42NDg5NTE3LDIwLjg3NTE4NzUgQzM1LjY0ODk1MTcsMjQuMzI2NDM3NSAzMi44NTAyMDE3LDI3LjEyNTE4NzUgMjkuMzk4OTUxNywyNy4xMjUxODc1IEMyOS4xODk1NzY3LDI3LjEyNTE4NzUgMjguOTgzMzI2NywyNy4xMTQ1NjI1IDI4Ljc3OTU3NjcsMjcuMDk0NTYyNSBNMTMsMzYuNjU0NSBDMTMsMzcuNDgwNzUgMTIuMzMsMzguMTUxMzc1IDExLjUwMzc1LDM4LjE1MTM3NSBDMTAuNjc2ODc1LDM4LjE1MTM3NSAxMC4wMDc1LDM3LjQ4MDc1IDEwLjAwNzUsMzYuNjU0NSBDMTAuMDA3NSwzNS44MjgyNSAxMC42NzY4NzUsMzUuMTU4MjUgMTEuNTAzNzUsMzUuMTU4MjUgQzEyLjMzLDM1LjE1ODI1IDEzLDM1LjgyODI1IDEzLDM2LjY1NDUgWiBNMjEuMDA0OTgxNywzNS4wMzM1IEMyMS4wMDQ5ODE3LDM1Ljg1OTc1IDIwLjMzNDk4MTcsMzYuNTI5NzUgMTkuNTA4NzMxNywzNi41Mjk3NSBDMTguNjgyNDgxNywzNi41Mjk3NSAxOC4wMTI0ODE3LDM1Ljg1OTc1IDE4LjAxMjQ4MTcsMzUuMDMzNSBDMTguMDEyNDgxNywzNC4yMDcyNSAxOC42ODI0ODE3LDMzLjUzNjYyNSAxOS41MDg3MzE3LDMzLjUzNjYyNSBDMjAuMzM0OTgxNywzMy41MzY2MjUgMjEuMDA0OTgxNywzNC4yMDcyNSAyMS4wMDQ5ODE3LDM1LjAzMzUgWiBNMTMsMzYuNjU0NSBMMTMsMjYgTDIxLDI0IEwyMSwzNS4wMzU2MjUgTTEzLDI4LjUgTDIxLDI2LjUgTDEzLDI4LjUgWiBNMTQuMTI0ODg5MiwxMy42OTEyNSBDMTYuODIzMDE0Miw3Ljk2Mzc1IDIyLjY0ODAxNDIsNCAyOS4zOTg2MzkyLDQgQzM4LjcxODYzOTIsNCA0Ni4yNzM2MzkyLDExLjU1NSA0Ni4yNzM2MzkyLDIwLjg3NSBDNDYuMjczNjM5MiwzMC4xOTQzNzUgMzguNzE4NjM5MiwzNy43NSAyOS4zOTg2MzkyLDM3Ljc1IEMyOS4xOTExMzkyLDM3Ljc1IDI4Ljk4NDg4OTIsMzcuNzQ1NjI1IDI4Ljc3OTI2NDIsMzcuNzM4NzUgTTUsMTMgTDUsNDUgTDI4LDQ1IEwyOCwxOCBMMjMsMTMgTDUsMTMgWiBNMjMsMTMgTDIzLDE4IEwyOCwxOCIsc3Ryb2tlOiIjRDlEMkQwIixzdHJva2VXaWR0aDoiMiJ9KSkpfTtvUC5kaXNwbGF5TmFtZT0iU1ZHQ2F0YWxvZyI7dmFyIGFQPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tY2F0YWxvZyIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtY2F0YWxvZyIpOiJJY29ucy1jYXRhbG9nIixvbkNsaWNrOmUub25DbGljayxzdmc6b1B9KX07YVAuZGlzcGxheU5hbWU9IkNhdGFsb2ciLGFQLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGlQPWFQLHVQPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1jbGVhbi12ZXJzaW9uIix2aWV3Qm94OiIwIDAgNDIgMTUifSxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6IjAiLHk6IjAiLG1hc2tDb250ZW50VW5pdHM6InVzZXJTcGFjZU9uVXNlIixtYXNrVW5pdHM6Im9iamVjdEJvdW5kaW5nQm94Iix3aWR0aDoiNDIiLGhlaWdodDoiMTUiLHN0cm9rZVdpZHRoOiIyIixmaWxsOiIjZmZmZmZmIixzdHJva2U6IiM0YTRhNGEifSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgyLjQ0MDY3ODgsMC4xMzU1OTMyMikifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiIzRhNGE0YSIsc3Ryb2tlV2lkdGg6IjAuNDAwMDAwMDEiLGZpbGw6IiM0YTRhNGEiLGQ6Im0gOC44NDIxNDIzLDQuNTE1ODAzMSAwLDEuMDA0OTU0OSBRIDguMzYwODk2Myw1LjA3MjUzODcgNy44MTM1OTY5LDQuODUwNzg4MSA3LjI3MTAxNTYsNC42MjkwMzc0IDYuNjU3NjYyOCw0LjYyOTAzNzQgcSAtMS4yMDc4MzMyLDAgLTEuODQ5NDk0NSwwLjc0MDc0MTUgLTAuNjQxNjYxNCwwLjczNjAyMzMgLTAuNjQxNjYxNCwyLjEzMjU4MDQgMCwxLjM5MTgzOSAwLjY0MTY2MTQsMi4xMzI1ODA1IDAuNjQxNjYxMywwLjczNjAyMzIgMS44NDk0OTQ1LDAuNzM2MDIzMiAwLjYxMzM1MjgsMCAxLjE1NTkzNDEsLTAuMjIxNzUxIDAuNTQ3Mjk5NCwtMC4yMjE3NTAxIDEuMDI4NTQ1NCwtMC42Njk5Njk1IGwgMCwwLjk5NTUxODUgcSAtMC41MDAxMTg0LDAuMzM5NzAzIC0xLjA2MTU3MjEsMC41MDk1NTUgLTAuNTU2NzM1NiwwLjE2OTg1MSAtMS4xNzk1MjQ2LDAuMTY5ODUxIC0xLjU5OTQzNTMsMCAtMi41MTk0NjQ1LC0wLjk3NjY0NiAtMC45MjAwMjkyLC0wLjk4MTM2NDQgLTAuOTIwMDI5MiwtMi42NzUxNjE3IDAsLTEuNjk4NTE1NCAwLjkyMDAyOTIsLTIuNjc1MTYxNyAwLjkyMDAyOTIsLTAuOTgxMzY0NSAyLjUxOTQ2NDUsLTAuOTgxMzY0NSAwLjYzMjIyNTIsMCAxLjE4ODk2MDgsMC4xNjk4NTE2IDAuNTYxNDUzNywwLjE2NTEzMzQgMS4wNTIxMzU5LDAuNTAwMTE4NCB6In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiIjNGE0YTRhIixzdHJva2VXaWR0aDoiMC40MDAwMDAwMSIsZmlsbDoiIzRhNGE0YSIsZDoibSAxMC4zMjM2MjUsMy45NzMyMjE4IDAuOTUzMDU2LDAgMCw2LjI0MjA0NDIgMy40MzAwNTcsMCAwLDAuODAyMDc3IC00LjM4MzExMywwIDAsLTcuMDQ0MTIxMiB6In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiIjNGE0YTRhIixzdHJva2VXaWR0aDoiMC40MDAwMDAwMSIsZmlsbDoiIzRhNGE0YSIsZDoibSAxNS43MDIyNTcsMy45NzMyMjE4IDQuNDUzODg1LDAgMCwwLjgwMjA3NjcgLTMuNTAwODI5LDAgMCwyLjA4NTM5OTQgMy4zNTQ1NjgsMCAwLDAuODAyMDc2OCAtMy4zNTQ1NjgsMCAwLDIuNTUyNDkxMyAzLjU4NTc1NSwwIDAsMC44MDIwNzcgLTQuNTM4ODExLDAgMCwtNy4wNDQxMjEyIHoifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6IiM0YTRhNGEiLHN0cm9rZVdpZHRoOiIwLjQwMDAwMDAxIixmaWxsOiIjNGE0YTRhIixkOiJtIDI0LjE3MTI0Myw0LjkxMjEyMzMgLTEuMjkyNzU5LDMuNTA1NTQ3MSAyLjU5MDIzNiwwIC0xLjI5NzQ3NywtMy41MDU1NDcxIHogbSAtMC41Mzc4NjMsLTAuOTM4OTAxNSAxLjA4MDQ0NCwwIDIuNjg0NTk4LDcuMDQ0MTIxMiAtMC45OTA4MDEsMCAtMC42NDE2NjEsLTEuODA3MDMyMSAtMy4xNzUyOCwwIC0wLjY0MTY2MiwxLjgwNzAzMjEgLTEuMDA0OTU1LDAgMi42ODkzMTcsLTcuMDQ0MTIxMiB6In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiIjNGE0YTRhIixzdHJva2VXaWR0aDoiMC40MDAwMDAwMSIsZmlsbDoiIzRhNGE0YSIsZDoibSAyOC40MjIyNTEsMy45NzMyMjE4IDEuMjgzMzIyLDAgMy4xMjMzODIsNS44OTI5MDQ4IDAsLTUuODkyOTA0OCAwLjkyNDc0NywwIDAsNy4wNDQxMjEyIC0xLjI4MzMyMywwIC0zLjEyMzM4MSwtNS44OTI5MDUyIDAsNS44OTI5MDUyIC0wLjkyNDc0NywwIDAsLTcuMDQ0MTIxMiB6In0pKSl9O3VQLmRpc3BsYXlOYW1lPSJTVkdDbGVhblZlcnNpb24iO3ZhciBzUD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWNsZWFuLXZlcnNpb24iLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWNsZWFuLXZlcnNpb24iKToiSWNvbnMtY2xlYW4tdmVyc2lvbiIsb25DbGljazplLm9uQ2xpY2ssc3ZnOnVQfSl9O3NQLmRpc3BsYXlOYW1lPSJDbGVhblZlcnNpb24iLHNQLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGxQPXNQLGNQPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1kZWV6ZXIiLHZpZXdCb3g6IjAgMCA3MiA3MiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6InBhdGgiLHBvaW50czoiMC4wNiAwLjQyNCA5LjM1NCAwLjQyNCA5LjM1NCAxNy45OTggMC4wNiAxNy45OTgifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7ZmlsbDoiIzI4MjgyOCIsY3g6IjM2IixjeToiMzYiLHI6IjM2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMTAuMDAwMDAwLCAyMi4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTAuNjMzMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJtYXNrIix7aWQ6Im1hc2siLGZpbGw6IndoaXRlIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse3hsaW5rSHJlZjoiI3BhdGgifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0Q4MjMyQSIsbWFzazoidXJsKCNtYXNrKSIscG9pbnRzOiIwLjA2IDE3Ljk5OCA5LjM1NCAxNy45OTggOS4zNTQgMTUuMTYzIDAuMDYgMTUuMTYzIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0Q4MjMyQSIsbWFzazoidXJsKCNtYXNrKSIscG9pbnRzOiIwLjA2IDE0LjMxMyA5LjM1NCAxNC4zMTMgOS4zNTQgMTEuNDc4IDAuMDYgMTEuNDc4In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0Q4MjMyQSIsbWFzazoidXJsKCNtYXNrKSIscG9pbnRzOiIwLjA2IDEwLjYyOSA5LjM1NCAxMC42MjkgOS4zNTQgNy43OTQgMC4wNiA3Ljc5NCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse2ZpbGw6IiNFQjkwNzMiLG1hc2s6InVybCgjbWFzaykiLHBvaW50czoiMC4wNiA2Ljk0MyA5LjM1NCA2Ljk0MyA5LjM1NCA0LjEwOSAwLjA2IDQuMTA5In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0VCOTA3MyIsbWFzazoidXJsKCNtYXNrKSIscG9pbnRzOiIwLjA2IDMuMjU4IDkuMzU0IDMuMjU4IDkuMzU0IDAuNDI0IDAuMDYgMC40MjQifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0ZGRjEwMSIscG9pbnRzOiIxMC40ODggMjguNjMxIDE5Ljg0MiAyOC42MzEgMTkuODQyIDI1Ljc5NiAxMC40ODggMjUuNzk2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0ZGRjEwMSIscG9pbnRzOiIxMC40ODggMjQuOTQ2IDE5Ljg0MiAyNC45NDYgMTkuODQyIDIyLjExMSAxMC40ODggMjIuMTExIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0ZGRjEwMSIscG9pbnRzOiIxMC40ODggMjEuMjYyIDE5Ljg0MiAyMS4yNjIgMTkuODQyIDE4LjQyNyAxMC40ODggMTguNDI3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0Q4MTI3RCIscG9pbnRzOiIyMC45NzcgMjguNjMxIDMwLjMzMSAyOC42MzEgMzAuMzMxIDI1Ljc5NiAyMC45NzcgMjUuNzk2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0Q4MTI3RCIscG9pbnRzOiIyMC45NzcgMjQuOTQ2IDMwLjMzMSAyNC45NDYgMzAuMzMxIDIyLjExMSAyMC45NzcgMjIuMTExIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0Q4MTI3RCIscG9pbnRzOiIyMC45NzcgMjEuMjYyIDMwLjMzMSAyMS4yNjIgMzAuMzMxIDE4LjQyNyAyMC45NzcgMTguNDI3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0U4OTNCNSIscG9pbnRzOiIyMC45NzcgMTcuNTc2IDMwLjMzMSAxNy41NzYgMzAuMzMxIDE0Ljc0MiAyMC45NzcgMTQuNzQyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0U4OTNCNSIscG9pbnRzOiIyMC45NzcgMTMuODkxIDMwLjMzMSAxMy44OTEgMzAuMzMxIDExLjA1NyAyMC45NzcgMTEuMDU3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0U4OTNCNSIscG9pbnRzOiIyMC45NzcgMTAuMjA2IDMwLjMzMSAxMC4yMDYgMzAuMzMxIDcuMzcxIDIwLjk3NyA3LjM3MSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse2ZpbGw6IiNFODkzQjUiLHBvaW50czoiMjAuOTc3IDYuNTIyIDMwLjMzMSA2LjUyMiAzMC4zMzEgMy42ODcgMjAuOTc3IDMuNjg3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0I5RDEzNyIscG9pbnRzOiIzMS40NjUgMjguNjMxIDQwLjgxOSAyOC42MzEgNDAuODE5IDI1Ljc5NiAzMS40NjUgMjUuNzk2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0I5RDEzNyIscG9pbnRzOiIzMS40NjUgMjQuOTQ2IDQwLjgxOSAyNC45NDYgNDAuODE5IDIyLjExMSAzMS40NjUgMjIuMTExIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0I5RDEzNyIscG9pbnRzOiIzMS40NjUgMjEuMjYyIDQwLjgxOSAyMS4yNjIgNDAuODE5IDE4LjQyNyAzMS40NjUgMTguNDI3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0RBRTU5NiIscG9pbnRzOiIzMS40NjUgMTcuNTc2IDQwLjgxOSAxNy41NzYgNDAuODE5IDE0Ljc0MiAzMS40NjUgMTQuNzQyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0RBRTU5NiIscG9pbnRzOiIzMS40NjUgMTMuODkxIDQwLjgxOSAxMy44OTEgNDAuODE5IDExLjA1NyAzMS40NjUgMTEuMDU3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiIzM1QkNFMSIscG9pbnRzOiI0MS45NTMgMjguNjMxIDUxLjMwOCAyOC42MzEgNTEuMzA4IDI1Ljc5NiA0MS45NTMgMjUuNzk2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiIzM1QkNFMSIscG9pbnRzOiI0MS45NTMgMjQuOTQ2IDUxLjMwOCAyNC45NDYgNTEuMzA4IDIyLjExMSA0MS45NTMgMjIuMTExIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiIzM1QkNFMSIscG9pbnRzOiI0MS45NTMgMjEuMjYxIDUxLjMwOCAyMS4yNjEgNTEuMzA4IDE4LjQyNiA0MS45NTMgMTguNDI2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0FCRENFQyIscG9pbnRzOiI0MS45NTMgMTcuNTc2IDUxLjMwOCAxNy41NzYgNTEuMzA4IDE0Ljc0MSA0MS45NTMgMTQuNzQxIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0FCRENFQyIscG9pbnRzOiI0MS45NTMgMTMuODkxIDUxLjMwOCAxMy44OTEgNTEuMzA4IDExLjA1NiA0MS45NTMgMTEuMDU2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiI0FCRENFQyIscG9pbnRzOiI0MS45NTMgMTAuMjA1IDUxLjMwOCAxMC4yMDUgNTEuMzA4IDcuMzcxIDQxLjk1MyA3LjM3MSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse2ZpbGw6IiNBQkRDRUMiLHBvaW50czoiNDEuOTUzIDYuNTIgNTEuMzA4IDYuNTIgNTEuMzA4IDMuNjg2IDQxLjk1MyAzLjY4NiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse2ZpbGw6IiNBQkRDRUMiLHBvaW50czoiNDEuOTUzIDIuODM1IDUxLjMwOCAyLjgzNSA1MS4zMDggMCA0MS45NTMgMCJ9KSkpKX07Y1AuZGlzcGxheU5hbWU9IlNWR0RlZXplciI7dmFyIGZQPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tZGVlemVyIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1kZWV6ZXIiKToiSWNvbnMtZGVlemVyIixvbkNsaWNrOmUub25DbGljayxzdmc6Y1B9KX07ZlAuZGlzcGxheU5hbWU9IkRlZXplciIsZlAucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgZFA9ZlAscFA9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWRpZ2l0YWwiLHZpZXdCb3g6IjAgMCA1OCA2OSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7ZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yNS4yNzcgMzQuNWgzLjY1bC0xLjgyNS01LjUxNyJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik01Mi43NzggMEgxOC41NDRjLS4wNjYgMC0uMTIuMDMtLjE4My4wMzctLjA2Mi4wMS0uMTIuMDItLjE4LjAzOC0uMjQ0LjA2Ni0uNDcyLjE3Mi0uNjQ2LjM0OEwuNDIgMTcuNjdjLS4xNzUuMTc1LS4yOC40MDItLjM0Ni42NS0uMDE3LjA2My0uMDI4LjEyLS4wMzcuMTgzLS4wMDguMDY0LS4wMzcuMTE4LS4wMzcuMTg0djQzLjEyNmMwIC43OTMuNjQgMS40MzcgMS40MjYgMS40MzdoMzMuMDM3Yy40MSAwIC44MDItLjE4IDEuMDczLS40OTIuODE1LS45MzcgMS45NzctMS42MzYgMy4zNi0yLjAyNC42MTYtLjE3MiAxLjA0NC0uNzQgMS4wNDQtMS4zODN2LTEyLjRsMTMuMTg0LTMuMzIyYy42MzYtLjE2NCAxLjA4LS43NCAxLjA4LTEuNFYxLjQzOEM1NC4yMDUuNjQzIDUzLjU2NyAwIDUyLjc4IDB6bS0zNS42NiA0LjkwOHYxMC45MDVjMCAuNzkzLS42NCAxLjQzNy0xLjQyNyAxLjQzN0g0Ljg3TDE3LjExNyA0LjkwOHptLS4wMiAzNy4wMTVjLS4xMTIuNjctLjY3NCAxLjE3My0xLjM1IDEuMjAyaC0uMDU3Yy0uNjUyIDAtMS4yMjYtLjQ0Ni0xLjM4My0xLjA5bC0xLjQ3LTUuOTItMS40NjggNS45MjNjLS4xNjcuNjYyLS44NTcgMS4xMTMtMS40NDIgMS4wOS0uNjc2LS4wMy0xLjI0LS41MzItMS4zNTItMS4yMDJsLTIuODUzLTE3LjI1Yy0uMTI4LS43ODUuNC0xLjUyNiAxLjE3NS0xLjY1Ni43Ni0uMTM1IDEuNTEuMzk3IDEuNjQgMS4xODJsMS43MjQgMTAuNDMzIDEuMTktNC43OTVjLjMxNi0xLjI4IDIuNDUtMS4yOCAyLjc3IDBsMS4xOSA0Ljc5NSAxLjcyMi0xMC40MzNjLjEzMi0uNzg1Ljg4NS0xLjMxNyAxLjY0LTEuMTgyLjc4LjEzIDEuMzA3Ljg3IDEuMTc2IDEuNjUzbC0yLjg1MyAxNy4yNXptMTYuMTYgMS4xM2MtLjE1LjA1LS4zLjA3Mi0uNDUuMDcyLS41OTYgMC0xLjE1Mi0uMzgyLTEuMzU1LS45ODNsLTEuNTc1LTQuNzY3aC01LjU1bC0xLjU4IDQuNzY3Yy0uMjUuNzUzLTEuMDU4IDEuMTYtMS44MDUuOTA4LS43NDctLjI1My0xLjE1LTEuMDY2LS45LTEuODJsNS43MDQtMTcuMjVjLjM5LTEuMTczIDIuMzItMS4xNzMgMi43MDggMGw1LjcwNSAxNy4yNWMuMjUuNzU3LS4xNTQgMS41Ny0uOSAxLjgyM3ptMTUuMTctMTguMTZsLTUuNzA2IDE3LjI1Yy0uMTk3LjU4NS0uNzQyLjk4Mi0xLjM1NS45ODItLjYxNCAwLTEuMTU4LS4zOTctMS4zNTUtLjk4M2wtNS43MDYtMTcuMjVjLS4yNDgtLjc1My4xNTctMS41NjcuOS0xLjgyLjc1Mi0uMjQ3IDEuNTU2LjE1OCAxLjgwNy45MDhsNC4zNSAxMy4xNiA0LjM1Mi0xMy4xNmMuMjU0LS43NTMgMS4wNjQtMS4xNTIgMS44MDUtLjkwOC43NS4yNTMgMS4xNTYgMS4wNjcuOTA4IDEuODJ6In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTU2LjUxIDQ2LjMwMmMtLjM0OC0uMjczLS44LS4zNjgtMS4yMjQtLjI2MmwtMTEuNDEgMi44NzVjLS42MzguMTYtMS4wODMuNzQtMS4wODMgMS4zOTh2MTMuMDk1Yy0uNDQyLS4wOTUtLjkxNi0uMTU4LTEuNDI2LS4xNTgtMi40OCAwLTQuMjggMS4yMS00LjI4IDIuODc1UzM4Ljg4NyA2OSA0MS4zNjcgNjljMi40OCAwIDQuMjgtMS4yMSA0LjI4LTIuODc1VjUxLjQzN2w4LjU1OC0yLjE1N3YxMS4yNTZjLS40NDItLjA5OC0uOTE2LS4xNi0xLjQyNy0uMTYtMi40OCAwLTQuMjggMS4yMS00LjI4IDIuODc0IDAgMS42NjUgMS44IDIuODc1IDQuMjggMi44NzUgMi40OCAwIDQuMjgtMS4yMSA0LjI4LTIuODc1VjQ3LjQzN2MwLS40NDItLjIwMy0uODYyLS41NDgtMS4xMzV6In0pKSl9O3BQLmRpc3BsYXlOYW1lPSJTVkdEaWdpdGFsIjt2YXIgaFA9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1kaWdpdGFsIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1kaWdpdGFsIik6Ikljb25zLWRpZ2l0YWwiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpwUH0pfTtoUC5kaXNwbGF5TmFtZT0iRGlnaXRhbCIsaFAucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgeVA9aFAsbVA9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWRvd25sb2FkLXN5bWJvbCIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoImRlZnMiLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNCwxMiBMMTIsMTIgTDEyLDEwIEwxNCwxMCBMMTQsMTQgTDEyLjUsMTQgTDMuNSwxNCBMMiwxNCBMMiwxMCBMNCwxMCBMNCwxMiBaIE05LDYgTDksMiBMNywyIEw3LDYgTDQsNiBMOCwxMCBMMTIsNiBMOSw2IFoiLGlkOiJwYXRoLTEifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6IlN5bWJvbHMiLHN0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiSWNvbi9HbHlwaC9Eb3dubG9hZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJyZWN0Iix7aWQ6IkJvdW5kIix4OiIwIix5OiIwIix3aWR0aDoiMTYiLGhlaWdodDoiMTYifSksRS5hLmNyZWF0ZUVsZW1lbnQoIm1hc2siLHtpZDoibWFzay0yIixmaWxsOiJ3aGl0ZSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHt4bGlua0hyZWY6IiNwYXRoLTEifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHtpZDoiTWFzayIsZmlsbDoiIzZENjU2NSIseGxpbmtIcmVmOiIjcGF0aC0xIn0pKSkpfTttUC5kaXNwbGF5TmFtZT0iU1ZHRG93bmxvYWRTeW1ib2wiO3ZhciB2UD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWRvd25sb2FkLXN5bWJvbCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtZG93bmxvYWQtc3ltYm9sIik6Ikljb25zLWRvd25sb2FkLXN5bWJvbCIsb25DbGljazplLm9uQ2xpY2ssc3ZnOm1QfSl9O3ZQLmRpc3BsYXlOYW1lPSJEb3dubG9hZFN5bWJvbCIsdlAucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgZ1A9dlAsYlA9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWVkaXQiLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zLDEzIEw5LDEzIEw5LDEyIEwxMSwxMiBMMTEsMTUgTDEsMTUgTDEsNSBMNCw1IEw0LDcgTDMsNyBMMywxMyBaIE0xMi4xNDgzMTg5LDAuODUxNjgxMDc2IEMxMi4zNDI1NDcsMC42NTc0NTI5ODEgMTIuNjYxMjkzLDAuNjYxMjkzMDMgMTIuODU1OTIwMiwwLjg1NTkyMDE5NiBMMTUuMTQ0MDc5OCwzLjE0NDA3OTggQzE1LjM0MDY0OTEsMy4zNDA2NDkxIDE1LjM0MzM1MTgsMy42NTY2NDgxNiAxNS4xNDgzMTg5LDMuODUxNjgxMDggTDgsMTEgTDUsOCBMMTIuMTQ4MzE4OSwwLjg1MTY4MTA3NiBaIE01LDggTDgsMTEgTDQsMTIgTDUsOCBaIE0xMC41LDIuNSBMMTEuNSwxLjUgTDE0LjUsNC41IEwxMy41LDUuNSBMMTAuNSwyLjUgWiBNNSw4IEw2LDcgTDksMTAgTDgsMTEgTDUsOCBaIn0pKSkpfTtiUC5kaXNwbGF5TmFtZT0iU1ZHRWRpdCI7dmFyIHdQPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tZWRpdCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtZWRpdCIpOiJJY29ucy1lZGl0IixvbkNsaWNrOmUub25DbGljayxzdmc6YlB9KX07d1AuZGlzcGxheU5hbWU9IkVkaXQiLHdQLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIF9QPXdQLEVQPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1leHBsaWNpdCIsdmlld0JveDoiMCAwIDU0IDE1In0sRS5hLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHtzdHJva2U6IiNENDY0NUEiLG1hc2tDb250ZW50VW5pdHM6InVzZXJTcGFjZU9uVXNlIixtYXNrVW5pdHM6Im9iamVjdEJvdW5kaW5nQm94Iix4OiIwIix5OiIwIix3aWR0aDoiNTQiLGhlaWdodDoiMTUiLGZpbGw6IndoaXRlIixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMTQxLjAwMDAwMCwgLTE0NC4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSg3Ny4wMDAwMDAsIDg2LjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDY0LjAwMDAwMCwgNTguMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTUuNzYsMy44NiBMMTAuOSwzLjg2IEwxMC45LDQuOTQgTDcuMDEsNC45NCBMNy4wMSw2LjgxIEwxMC42MSw2LjgxIEwxMC42MSw3LjgzIEw3LjAxLDcuODMgTDcuMDEsOS45MiBMMTAuOTcsOS45MiBMMTAuOTcsMTEgTDUuNzYsMTEgTDUuNzYsMy44NiBaIE0xMS40NCwzLjg2IEwxMi45MywzLjg2IEwxNC41NSw2LjM4IEwxNi4yNCwzLjg2IEwxNy42NCwzLjg2IEwxNS4yOCw3LjMgTDE3LjgxLDExIEwxNi4yOSwxMSBMMTQuNTEsOC4yNyBMMTIuNywxMSBMMTEuMjcsMTEgTDEzLjgsNy4zIEwxMS40NCwzLjg2IFogTTE4LjU0LDMuODYgTDIxLjY5LDMuODYgQzIyLjE5NjY2OTIsMy44NiAyMi42MDk5OTg0LDMuOTMzMzMyNiAyMi45Myw0LjA4IEMyMy4yNTAwMDE2LDQuMjI2NjY3NCAyMy40OTY2NjU4LDQuNDA5OTk4OSAyMy42Nyw0LjYzIEMyMy44NDMzMzQyLDQuODUwMDAxMSAyMy45NjE2NjYzLDUuMDg5OTk4NyAyNC4wMjUsNS4zNSBDMjQuMDg4MzMzNiw1LjYxMDAwMTMgMjQuMTIsNS44NDk5OTg5IDI0LjEyLDYuMDcgQzI0LjEyLDYuMjkwMDAxMSAyNC4wODgzMzM2LDYuNTI4MzMyMDUgMjQuMDI1LDYuNzg1IEMyMy45NjE2NjYzLDcuMDQxNjY3OTUgMjMuODQzMzM0Miw3LjI3OTk5ODkgMjMuNjcsNy41IEMyMy40OTY2NjU4LDcuNzIwMDAxMSAyMy4yNTAwMDE2LDcuOTAxNjY1OTUgMjIuOTMsOC4wNDUgQzIyLjYwOTk5ODQsOC4xODgzMzQwNSAyMi4xOTY2NjkyLDguMjYgMjEuNjksOC4yNiBMMTkuNzksOC4yNiBMMTkuNzksMTEgTDE4LjU0LDExIEwxOC41NCwzLjg2IFogTTE5Ljc5LDcuMjQgTDIxLjYyLDcuMjQgQzIxLjc2MDAwMDcsNy4yNCAyMS45MDMzMzI2LDcuMjIwMDAwMiAyMi4wNSw3LjE4IEMyMi4xOTY2Njc0LDcuMTM5OTk5OCAyMi4zMzE2NjYsNy4wNzUwMDA0NSAyMi40NTUsNi45ODUgQzIyLjU3ODMzMzksNi44OTQ5OTk1NSAyMi42NzgzMzI5LDYuNzc1MDAwNzUgMjIuNzU1LDYuNjI1IEMyMi44MzE2NjcsNi40NzQ5OTkyNSAyMi44Nyw2LjI4NjY2NzggMjIuODcsNi4wNiBDMjIuODcsNS44MjY2NjU1IDIyLjgzNjY2Nyw1LjYzMzMzNDEgMjIuNzcsNS40OCBDMjIuNzAzMzMzLDUuMzI2NjY1OSAyMi42MTMzMzM5LDUuMjA1MDAwNDUgMjIuNSw1LjExNSBDMjIuMzg2NjY2MSw1LjAyNDk5OTU1IDIyLjI1NjY2NzQsNC45NjMzMzM1IDIyLjExLDQuOTMgQzIxLjk2MzMzMjYsNC44OTY2NjY1IDIxLjgwNjY2NzUsNC44OCAyMS42NCw0Ljg4IEwxOS43OSw0Ljg4IEwxOS43OSw3LjI0IFogTTI1LjIxLDMuODYgTDI2LjQ2LDMuODYgTDI2LjQ2LDkuOTIgTDMwLjA5LDkuOTIgTDMwLjA5LDExIEwyNS4yMSwxMSBMMjUuMjEsMy44NiBaIE0zMC45NSwzLjg2IEwzMi4yLDMuODYgTDMyLjIsMTEgTDMwLjk1LDExIEwzMC45NSwzLjg2IFogTTM4LjU1LDYuMTMgQzM4LjQ5NjY2NjQsNS45MjMzMzIzIDM4LjQyMzMzMzgsNS43MzMzMzQyIDM4LjMzLDUuNTYgQzM4LjIzNjY2NjIsNS4zODY2NjU4IDM4LjExNjY2NzQsNS4yMzY2NjczIDM3Ljk3LDUuMTEgQzM3LjgyMzMzMjYsNC45ODMzMzI3IDM3LjY1MTY2NzcsNC44ODUwMDAzNSAzNy40NTUsNC44MTUgQzM3LjI1ODMzMjMsNC43NDQ5OTk2NSAzNy4wMzAwMDEzLDQuNzEgMzYuNzcsNC43MSBDMzYuMzg5OTk4MSw0LjcxIDM2LjA2MTY2ODEsNC43ODY2NjU5IDM1Ljc4NSw0Ljk0IEMzNS41MDgzMzE5LDUuMDkzMzM0MSAzNS4yODMzMzQyLDUuMjk4MzMyMDUgMzUuMTEsNS41NTUgQzM0LjkzNjY2NTgsNS44MTE2Njc5NSAzNC44MDgzMzM3LDYuMTAzMzMxNyAzNC43MjUsNi40MyBDMzQuNjQxNjY2Myw2Ljc1NjY2ODMgMzQuNiw3LjA4OTk5ODMgMzQuNiw3LjQzIEMzNC42LDcuNzcwMDAxNyAzNC42NDE2NjYzLDguMTAzMzMxNyAzNC43MjUsOC40MyBDMzQuODA4MzMzNyw4Ljc1NjY2ODMgMzQuOTM2NjY1OCw5LjA0ODMzMjA1IDM1LjExLDkuMzA1IEMzNS4yODMzMzQyLDkuNTYxNjY3OTUgMzUuNTA4MzMxOSw5Ljc2NjY2NTkgMzUuNzg1LDkuOTIgQzM2LjA2MTY2ODEsMTAuMDczMzM0MSAzNi4zODk5OTgxLDEwLjE1IDM2Ljc3LDEwLjE1IEMzNy4wNTAwMDE0LDEwLjE1IDM3LjI5NjY2NTYsMTAuMTAxNjY3MSAzNy41MSwxMC4wMDUgQzM3LjcyMzMzNDQsOS45MDgzMzI4NSAzNy45MDY2NjU5LDkuNzc1MDAwODUgMzguMDYsOS42MDUgQzM4LjIxMzMzNDEsOS40MzQ5OTkxNSAzOC4zMzMzMzI5LDkuMjM2NjY3OCAzOC40Miw5LjAxIEMzOC41MDY2NjcxLDguNzgzMzMyMiAzOC41NjMzMzMyLDguNTQwMDAxMyAzOC41OSw4LjI4IEwzOS44MSw4LjI4IEMzOS43ODMzMzMyLDguNzA2NjY4OCAzOS42OTE2Njc0LDkuMDk2NjY0OSAzOS41MzUsOS40NSBDMzkuMzc4MzMyNSw5LjgwMzMzNTEgMzkuMTY2NjY4LDEwLjEwODMzMiAzOC45LDEwLjM2NSBDMzguNjMzMzMyLDEwLjYyMTY2NzkgMzguMzIwMDAxOCwxMC44MTk5OTkzIDM3Ljk2LDEwLjk2IEMzNy41OTk5OTgyLDExLjEwMDAwMDcgMzcuMjAzMzM1NSwxMS4xNyAzNi43NywxMS4xNyBDMzYuMjM2NjY0LDExLjE3IDM1Ljc1ODMzNTQsMTEuMDcxNjY3NiAzNS4zMzUsMTAuODc1IEMzNC45MTE2NjQ1LDEwLjY3ODMzMjMgMzQuNTUzMzM0OCwxMC40MTAwMDE3IDM0LjI2LDEwLjA3IEMzMy45NjY2NjUyLDkuNzI5OTk4MyAzMy43NDE2Njc1LDkuMzMzMzM1NiAzMy41ODUsOC44OCBDMzMuNDI4MzMyNiw4LjQyNjY2NDQgMzMuMzUsNy45NDMzMzU5IDMzLjM1LDcuNDMgQzMzLjM1LDYuOTIzMzMwOCAzMy40MjgzMzI2LDYuNDQzMzM1NiAzMy41ODUsNS45OSBDMzMuNzQxNjY3NSw1LjUzNjY2NDQgMzMuOTY2NjY1Miw1LjE0MDAwMTcgMzQuMjYsNC44IEMzNC41NTMzMzQ4LDQuNDU5OTk4MyAzNC45MTE2NjQ1LDQuMTkwMDAxIDM1LjMzNSwzLjk5IEMzNS43NTgzMzU0LDMuNzg5OTk5IDM2LjIzNjY2NCwzLjY5IDM2Ljc3LDMuNjkgQzM3LjE3MDAwMiwzLjY5IDM3LjU0NjY2NDksMy43NDQ5OTk0NSAzNy45LDMuODU1IEMzOC4yNTMzMzUxLDMuOTY1MDAwNTUgMzguNTY0OTk4Niw0LjEyNDk5ODk1IDM4LjgzNSw0LjMzNSBDMzkuMTA1MDAxNCw0LjU0NTAwMTA1IDM5LjMyMzMzMjUsNC43OTk5OTg1IDM5LjQ5LDUuMSBDMzkuNjU2NjY3NSw1LjQwMDAwMTUgMzkuNzU5OTk5OCw1Ljc0MzMzMTQgMzkuOCw2LjEzIEwzOC41NSw2LjEzIFogTTQwLjk1LDMuODYgTDQyLjIsMy44NiBMNDIuMiwxMSBMNDAuOTUsMTEgTDQwLjk1LDMuODYgWiBNNDMuMDUsMy44NiBMNDguODMsMy44NiBMNDguODMsNC45NCBMNDYuNTYsNC45NCBMNDYuNTYsMTEgTDQ1LjMxLDExIEw0NS4zMSw0Ljk0IEw0My4wNSw0Ljk0IEw0My4wNSwzLjg2IFoiLGZpbGw6IiNENDY0NUEifSkpKSkpKX07RVAuZGlzcGxheU5hbWU9IlNWR0V4cGxpY2l0Ijt2YXIgT1A9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1leHBsaWNpdCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtZXhwbGljaXQiKToiSWNvbnMtZXhwbGljaXQiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpFUH0pfTtPUC5kaXNwbGF5TmFtZT0iRXhwbGljaXQiLE9QLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGtQPU9QLENQPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1leHRlcm5hbC1saW5rIix2aWV3Qm94OiIwIDAgMTYgMTYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiRXh0ZXJuYWwtTGluayJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6IlBhdGgtMTMiLHBvaW50czoiNy41IDMgMTMgMyAxMyA4LjUgMTEgNi41IDcuNSAxMCA2IDguNSA5LjUgNSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse2lkOiJQYXRoLTUiLHBvaW50czoiNiAzIDMgMyAzIDEzIDEzIDEzIDEzIDEwIDExIDEwIDExIDExIDUgMTEgNSA1IDYgNSJ9KSkpKX07Q1AuZGlzcGxheU5hbWU9IlNWR0V4dGVybmFsTGluayI7dmFyIHhQPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tZXh0ZXJuYWwtbGluayIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtZXh0ZXJuYWwtbGluayIpOiJJY29ucy1leHRlcm5hbC1saW5rIixvbkNsaWNrOmUub25DbGljayxzdmc6Q1B9KX07eFAuZGlzcGxheU5hbWU9IkV4dGVybmFsTGluayIseFAucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgU1A9eFAsRFA9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWZhY2Vib29rIix2aWV3Qm94OiIwIDAgMTYgMTYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMzM0LjAwMDAwMCwgLTM5Mi4wMDAwMDApIixmaWxsOiIjM0E1OTlCIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgzMzQuMDAwMDAwLCAzOTIuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwLjc4MjM0OTEsMTUuMzMzMzMzMyBMMTAuNzgyMzQ5MSw5LjcwNTA2ODY2IEwxMi42ODgwODE5LDkuNzA1MDY4NjYgTDEyLjk3MzM5NTMsNy40OTI0MzQ0NiBMMTAuNzgyMzQ5MSw3LjQ5MjQzNDQ2IEwxMC43ODIzNDkxLDYuMDc5NzY1MjkgQzEwLjc4MjM0OTEsNS40MzkxNTYwNSAxMC45NjAyMTY3LDUuMDAyNjE2NzMgMTEuODc4ODg4NCw1LjAwMjYxNjczIEwxMy4wNTA1NzM4LDUuMDAyMDY3NDIgTDEzLjA1MDU3MzgsMy4wMjMxMTExMSBDMTIuODQ3ODc3MiwyLjk5NjE5NDc2IDEyLjE1MjM5MTUsMi45MzU5MzUwOCAxMS4zNDMyNTI5LDIuOTM1OTM1MDggQzkuNjUzOTQ5NTYsMi45MzU5MzUwOCA4LjQ5NzQ4MDE1LDMuOTY3MDUxMTkgOC40OTc0ODAxNSw1Ljg2MDY5OTEzIEw4LjQ5NzQ4MDE1LDcuNDkyNDM0NDYgTDYuNTg2OTEzMzYsNy40OTI0MzQ0NiBMNi41ODY5MTMzNiw5LjcwNTA2ODY2IEw4LjQ5NzQ4MDE1LDkuNzA1MDY4NjYgTDguNDk3NDgwMTUsMTUuMzMzMzMzMyBMMS42NjY2NjY2NywxNS4zMzMzMzMzIEMxLjExNDM4MTkyLDE1LjMzMzMzMzMgMC42NjY2NjY2NjcsMTQuODg1NjE4MSAwLjY2NjY2NjY2NywxNC4zMzMzMzMzIEwwLjY2NjY2NjY2NywxLjY2NjY2NjY3IEMwLjY2NjY2NjY2NywxLjExNDM4MTkyIDEuMTE0MzgxOTIsMC42NjY2NjY2NjcgMS42NjY2NjY2NywwLjY2NjY2NjY2NyBMMTQuMzMzMzMzMywwLjY2NjY2NjY2NyBDMTQuODg1NjE4MSwwLjY2NjY2NjY2NyAxNS4zMzMzMzMzLDEuMTE0MzgxOTIgMTUuMzMzMzMzMywxLjY2NjY2NjY3IEwxNS4zMzMzMzMzLDE0LjMzMzMzMzMgQzE1LjMzMzMzMzMsMTQuODg1NjE4MSAxNC44ODU2MTgxLDE1LjMzMzMzMzMgMTQuMzMzMzMzMywxNS4zMzMzMzMzIEwxMC43ODIzNDkxLDE1LjMzMzMzMzMgWiJ9KSkpKSl9O0RQLmRpc3BsYXlOYW1lPSJTVkdGYWNlYm9vayI7dmFyIFRQPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tZmFjZWJvb2siLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWZhY2Vib29rIik6Ikljb25zLWZhY2Vib29rIixvbkNsaWNrOmUub25DbGljayxzdmc6RFB9KX07VFAuZGlzcGxheU5hbWU9IkZhY2Vib29rIixUUC5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBNUD1UUCxQUD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6ImZhY2Vib29rLWFkdmVydGlzaW5nIix2aWV3Qm94OiIwIDAgMjEyIDExMyIsc3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNDEuODIzMzE3LDYyIEwxNDEuODIzMzE3LDM1Ljk5OTI3NTcgTDE1MC4zNzM0MTMsMzUuOTk5Mjc1NyBMMTUxLjY1MzQ4NywyNS44NjY0NzQ1IEwxNDEuODIzMzE3LDI1Ljg2NjQ3NDUgTDE0MS44MjMzMTcsMTkuMzk2OTgzOCBDMTQxLjgyMzMxNywxNi40NjMzNjI3IDE0Mi42MjE1MSwxNC40NjM5NDIyIDE0Ni43NDMyNTYsMTQuNDYzOTQyMiBMMTUyLDE0LjQ2MTQ2NDkgTDE1Miw1LjM5ODgzODE1IEMxNTEuMDkwNDM4LDUuMjc1ODAxMTIgMTQ3Ljk3MDIwNyw1IDE0NC4zNDAwNSw1IEMxMzYuNzYwOTk4LDUgMTMxLjU3MjIwOCw5LjcyMTkyNDQ0IDEzMS41NzIyMDgsMTguMzkzOTcwNiBMMTMxLjU3MjIwOCwyNS44NjY3NDk3IEwxMjMsMjUuODY2NzQ5NyBMMTIzLDM1Ljk5OTU1MDkgTDEzMS41NzE5MzksMzUuOTk5NTUwOSBMMTMxLjU3MTkzOSw2MiBMMTQxLjgyMzMxNyw2MiBaIixpZDoicGF0aC0xIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTU4LjgyMzMxNzIsMTA3IEw1OC44MjMzMTcyLDgwLjk5OTI3NTcgTDY3LjM3MzQxMzQsODAuOTk5Mjc1NyBMNjguNjUzNDg3NCw3MC44NjY0NzQ1IEw1OC44MjMzMTcyLDcwLjg2NjQ3NDUgTDU4LjgyMzMxNzIsNjQuMzk2OTgzOCBDNTguODIzMzE3Miw2MS40NjMzNjI3IDU5LjYyMTUwOTUsNTkuNDYzOTQyMiA2My43NDMyNTYyLDU5LjQ2Mzk0MjIgTDY5LDU5LjQ2MTQ2NDkgTDY5LDUwLjM5ODgzODIgQzY4LjA5MDQzODIsNTAuMjc1ODAxMSA2NC45NzAyMDczLDUwIDYxLjM0MDA1LDUwIEM1My43NjA5OTc5LDUwIDQ4LjU3MjIwODMsNTQuNzIxOTI0NCA0OC41NzIyMDgzLDYzLjM5Mzk3MDYgTDQ4LjU3MjIwODMsNzAuODY2NzQ5NyBMNDAsNzAuODY2NzQ5NyBMNDAsODAuOTk5NTUwOSBMNDguNTcxOTM4Nyw4MC45OTk1NTA5IEw0OC41NzE5Mzg3LDEwNyBMNTguODIzMzE3MiwxMDcgWiIsaWQ6InBhdGgtMiJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiUGFnZS0xIixzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6IkFydGJvYXJkIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMzE4LjAwMDAwMCwgLTMwOC4wMDAwMDApIixzdHJva2U6IiNGRkZGRkYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJHcm91cC01Iix0cmFuc2Zvcm06InRyYW5zbGF0ZSgzMjEuMDAwMDAwLCAzMTAuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE2NSw0IEMxNjQuNDQ3NSw0IDE2NCwzLjU1MiAxNjQsMyBDMTY0LDIuNDQ4IDE2NC40NDc1LDIgMTY1LDIgQzE2NS41NTIsMiAxNjYsMi40NDggMTY2LDMgQzE2NiwzLjU1MiAxNjUuNTUyLDQgMTY1LDQgWiIsaWQ6IkZpbGwtMzAtQ29weS0zIixzdHJva2VXaWR0aDoiMiIsZmlsbDoiIzk3OTc5NyJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik04NCw1MSBDODMuNDQ3NSw1MSA4Myw1MC41NTIgODMsNTAgQzgzLDQ5LjQ0OCA4My40NDc1LDQ5IDg0LDQ5IEM4NC41NTIsNDkgODUsNDkuNDQ4IDg1LDUwIEM4NSw1MC41NTIgODQuNTUyLDUxIDg0LDUxIFoiLGlkOiJGaWxsLTMwLUNvcHktNSIsc3Ryb2tlV2lkdGg6IjIiLGZpbGw6IiM5Nzk3OTcifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjgsOCBDMjcuNDQ3NSw4IDI3LDcuNTUyIDI3LDcgQzI3LDYuNDQ4IDI3LjQ0NzUsNiAyOCw2IEMyOC41NTIsNiAyOSw2LjQ0OCAyOSw3IEMyOSw3LjU1MiAyOC41NTIsOCAyOCw4IFoiLGlkOiJGaWxsLTMwLUNvcHktNyIsc3Ryb2tlV2lkdGg6IjIiLGZpbGw6IiM5Nzk3OTcifSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiR3JvdXAtMyIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoMTU1LjAwMDAwMCwgNDguMDAwMDAwKSIsc3Ryb2tlV2lkdGg6IjIifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0wLDAgTDE5LDAgTDAsMCBaIixpZDoiTGluZSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0wLDcgTDMyLDcgTDAsNyBaIixpZDoiTGluZS1Db3B5LTM5In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTAsMTQgTDI3LDE0IEwwLDE0IFoiLGlkOiJMaW5lLUNvcHktNDAifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6Ikdyb3VwLTMtQ29weSIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoOC4wMDAwMDAsIDgzLjAwMDAwMCkiLHN0cm9rZVdpZHRoOiIyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMCwwIEwxOSwwIEwwLDAgWiIsaWQ6IkxpbmUifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMCw3IEwzMiw3IEwwLDcgWiIsaWQ6IkxpbmUtQ29weS0zOSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0wLDE0IEwyNywxNCBMMCwxNCBaIixpZDoiTGluZS1Db3B5LTQwIn0pKSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJHcm91cC00Iix0cmFuc2Zvcm06InRyYW5zbGF0ZSgxNTAuMDAwMDAwLCA3MS4wMDAwMDApIixzdHJva2VXaWR0aDoiMiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6Ikdyb3VwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBvbHlnb24iLHtpZDoiU3Ryb2tlLTE2Iixwb2ludHM6IjYgOCAwIDggMCAxOCA2IDE4In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM1LDkgQzM3LjIwOTIzMDgsOSAzOSwxMS4wMTQ2MDY5IDM5LDEzLjUgQzM5LDE1Ljk4NTM5MzEgMzcuMjA5MjMwOCwxOCAzNSwxOCIsaWQ6IlN0cm9rZS0zOCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWxpbmUiLHtpZDoiU3Ryb2tlLTQwIixwb2ludHM6IjE0LjEzOTE0ODUgMjIgMTggMzQgMTAuNTUwMjk4NSAzNCA3IDIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM1LDMwIEwxNS42ODIxMDg0LDIyLjUgTDguNDA4NjEwNjYsMjIuNSBDNy4wNzg0Mzc5MiwyMi41IDYsMjEuNTg5NSA2LDIwLjI1IEw2LDkgQzYsNy42NjA1IDYuOTU4NTI4NzMsNi43NSA4LjI4ODcwMTQ3LDYuNzUgTDE1LjY4MjEwODQsNi43NSBMMzUsMCBMMzUsMzAgWiIsaWQ6IlN0cm9rZS00MiJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiR3JvdXAtMiIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoNDMuMDAwMDAwLCAyLjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0wLjA2NDcxODE2MjgsMyBDMy4wMDM0Nzk0Nyw0LjgyMDYyNTE4IDUsOC4zODI1ODAwMyA1LDEyLjQ3OTc3OTYgQzUsMTYuNjA3OTA0NSAyLjk3NDI1MTkxLDIwLjE5Mjg1NTEgMCwyMiIsaWQ6IlN0cm9rZS0xOCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zLDAgQzYuNjE5NzYzNDYsMi44MTcxNTQwNCA5LDcuNTg4NjE4NSA5LDEyLjk5OTYyMDIgQzksMTguNDExMzgxNSA2LjYxOTc2MzQ2LDIzLjE4Mjg0NiAzLDI2IixpZDoiU3Ryb2tlLTIwIn0pKSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiR3JvdXAtNC1Db3B5Iix0cmFuc2Zvcm06InRyYW5zbGF0ZSg1MS4wMDAwMDAsIDAuMDAwMDAwKSIsc3Ryb2tlV2lkdGg6IjIifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJHcm91cCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6IlN0cm9rZS0xNiIscG9pbnRzOiI2IDggMCA4IDAgMTggNiAxOCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zNSw5IEMzNy4yMDkyMzA4LDkgMzksMTEuMDE0NjA2OSAzOSwxMy41IEMzOSwxNS45ODUzOTMxIDM3LjIwOTIzMDgsMTggMzUsMTgiLGlkOiJTdHJva2UtMzgifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBvbHlsaW5lIix7aWQ6IlN0cm9rZS00MCIscG9pbnRzOiIxNC4xMzkxNDg1IDIyIDE4IDM0IDEwLjU1MDI5ODUgMzQgNyAyMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zNSwzMCBMMTUuNjgyMTA4NCwyMi41IEw4LjQwODYxMDY2LDIyLjUgQzcuMDc4NDM3OTIsMjIuNSA2LDIxLjU4OTUgNiwyMC4yNSBMNiw5IEM2LDcuNjYwNSA2Ljk1ODUyODczLDYuNzUgOC4yODg3MDE0Nyw2Ljc1IEwxNS42ODIxMDg0LDYuNzUgTDM1LDAgTDM1LDMwIFoiLGlkOiJTdHJva2UtNDIifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6Ikdyb3VwLTIiLHRyYW5zZm9ybToidHJhbnNsYXRlKDQzLjAwMDAwMCwgMi4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMC4wNjQ3MTgxNjI4LDMgQzMuMDAzNDc5NDcsNC44MjA2MjUxOCA1LDguMzgyNTgwMDMgNSwxMi40Nzk3Nzk2IEM1LDE2LjYwNzkwNDUgMi45NzQyNTE5MSwyMC4xOTI4NTUxIDAsMjIiLGlkOiJTdHJva2UtMTgifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMywwIEM2LjYxOTc2MzQ2LDIuODE3MTU0MDQgOSw3LjU4ODYxODUgOSwxMi45OTk2MjAyIEM5LDE4LjQxMTM4MTUgNi42MTk3NjM0NiwyMy4xODI4NDYgMywyNiIsaWQ6IlN0cm9rZS0yMCJ9KSkpLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6IlN0cm9rZS0yNiIsc3Ryb2tlV2lkdGg6IjIiLHBvaW50czoiMTgxLjQwNjI1IDM3IDE2OS41OTM3NSAzNyAxNjkuNTkzNzUgMTkuMzE1Nzg5NSAxNjIgMTkuMzE1Nzg5NSAxNzUuNSA1IDE4OSAxOS4zMTU3ODk1IDE4MS40MDYyNSAxOS4zMTU3ODk1In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6IlN0cm9rZS0yNi1Db3B5LTIiLHN0cm9rZVdpZHRoOiIyIixwb2ludHM6IjE5LjQwNjI1IDM1IDcuNTkzNzUgMzUgNy41OTM3NSAxNy4zMTU3ODk1IDAgMTcuMzE1Nzg5NSAxMy41IDMgMjcgMTcuMzE1Nzg5NSAxOS40MDYyNSAxNy4zMTU3ODk1In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6IlN0cm9rZS0yNi1Db3B5IixzdHJva2VXaWR0aDoiMiIscG9pbnRzOiI5Ni40MDYyNSA4NiA4NC41OTM3NSA4NiA4NC41OTM3NSA2OC4zMTU3ODk1IDc3IDY4LjMxNTc4OTUgOTAuNSA1NCAxMDQgNjguMzE1Nzg5NSA5Ni40MDYyNSA2OC4zMTU3ODk1In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE0OS45MjQ1MTEsMTA1LjIyODgzIEMxNTAuMzUwNTExLDEwNy4zOTU4MyAxNDguOTM4NTExLDEwOS40OTg4MyAxNDYuNzcxNTExLDEwOS45MjM4MyBDMTQ0LjYwNDUxMSwxMTAuMzQ5ODMgMTQyLjUwMTUxMSwxMDguOTM3ODMgMTQyLjA3NTUxMSwxMDYuNzcwODMgQzE0MS42NTA1MTEsMTA0LjYwMzgzIDE0My4wNjI1MTEsMTAyLjUwMDgzIDE0NS4yMjk1MTEsMTAyLjA3NTgzIEMxNDcuMzk2NTExLDEwMS42NDk4MyAxNDkuNDk4NTExLDEwMy4wNjE4MyAxNDkuOTI0NTExLDEwNS4yMjg4MyBaIixpZDoiU3Ryb2tlLTEiLHN0cm9rZVdpZHRoOiIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTExNS45NTI2OTMsNTkuMDE3OTY3MiBDMTE2LjIxODkzNiw2MC4zNzIzMDc3IDExNS4zMzY0NTksNjEuNjg2NjQ5MSAxMTMuOTgyMTE5LDYxLjk1MjI2NzQgQzExMi42Mjc3NzgsNjIuMjE4NTEwNiAxMTEuMzEzNDM3LDYxLjMzNjAzMzEgMTExLjA0NzE5Myw1OS45ODE2OTI2IEMxMTAuNzgxNTc1LDU4LjYyNzM1MjIgMTExLjY2NDA1Myw1Ny4zMTMwMTA3IDExMy4wMTgzOTMsNTcuMDQ3MzkyNSBDMTE0LjM3MjczNCw1Ni43ODExNDkzIDExNS42ODY0NSw1Ny42NjM2MjY4IDExNS45NTI2OTMsNTkuMDE3OTY3MiBaIixpZDoiU3Ryb2tlLTEtQ29weS0zIixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yMDAuOTQzMjk5LDU4LjQyMTU4ODEgQzIwMS4yNjI3OTUsNjAuMDQ2ODE1MSAyMDAuMjAzODEsNjEuNjI0MDQyNyAxOTguNTc4NTgzLDYxLjk0Mjc4ODIgQzE5Ni45NTMzNTYsNjIuMjYyMjgzNyAxOTUuMzc2MTI4LDYxLjIwMzI5ODcgMTk1LjA1NjYzMyw1OS41NzgwNzE3IEMxOTQuNzM3ODg3LDU3Ljk1Mjg0NDggMTk1Ljc5Njg3Miw1Ni4zNzU2MTcxIDE5Ny40MjIwOTksNTYuMDU2ODcxNiBDMTk5LjA0NzMyNiw1NS43MzczNzYyIDIwMC42MjM4MDQsNTYuNzk2MzYxMiAyMDAuOTQzMjk5LDU4LjQyMTU4ODEgWiIsaWQ6IlN0cm9rZS0xLUNvcHktMiIsc3Ryb2tlV2lkdGg6IjIifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTMuOTQzMjk5Myw3MC40MjE1ODgxIEMxNC4yNjI3OTQ3LDcyLjA0NjgxNTEgMTMuMjAzODA5Nyw3My42MjQwNDI3IDExLjU3ODU4MjgsNzMuOTQyNzg4MiBDOS45NTMzNTU4MSw3NC4yNjIyODM3IDguMzc2MTI4MTcsNzMuMjAzMjk4NyA4LjA1NjYzMjcsNzEuNTc4MDcxNyBDNy43Mzc4ODcyMiw2OS45NTI4NDQ4IDguNzk2ODcyMjEsNjguMzc1NjE3MSAxMC40MjIwOTkyLDY4LjA1Njg3MTYgQzEyLjA0NzMyNjEsNjcuNzM3Mzc2MiAxMy42MjM4MDM4LDY4Ljc5NjM2MTIgMTMuOTQzMjk5Myw3MC40MjE1ODgxIFoiLGlkOiJTdHJva2UtMS1Db3B5LTUiLHN0cm9rZVdpZHRoOiIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTExMC45NDMyOTksMTAyLjQyMTU4OCBDMTExLjI2Mjc5NSwxMDQuMDQ2ODE1IDExMC4yMDM4MSwxMDUuNjI0MDQzIDEwOC41Nzg1ODMsMTA1Ljk0Mjc4OCBDMTA2Ljk1MzM1NiwxMDYuMjYyMjg0IDEwNS4zNzYxMjgsMTA1LjIwMzI5OSAxMDUuMDU2NjMzLDEwMy41NzgwNzIgQzEwNC43Mzc4ODcsMTAxLjk1Mjg0NSAxMDUuNzk2ODcyLDEwMC4zNzU2MTcgMTA3LjQyMjA5OSwxMDAuMDU2ODcyIEMxMDkuMDQ3MzI2LDk5LjczNzM3NjIgMTEwLjYyMzgwNCwxMDAuNzk2MzYxIDExMC45NDMyOTksMTAyLjQyMTU4OCBaIixpZDoiU3Ryb2tlLTEtQ29weS00IixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yMDcuOTI0NTExLDQxLjIyODgyOTkgQzIwOC4zNTA1MTEsNDMuMzk1ODI5OSAyMDYuOTM4NTExLDQ1LjQ5ODgyOTkgMjA0Ljc3MTUxMSw0NS45MjM4Mjk5IEMyMDIuNjA0NTExLDQ2LjM0OTgyOTkgMjAwLjUwMTUxMSw0NC45Mzc4Mjk5IDIwMC4wNzU1MTEsNDIuNzcwODI5OSBDMTk5LjY1MDUxMSw0MC42MDM4Mjk5IDIwMS4wNjI1MTEsMzguNTAwODI5OSAyMDMuMjI5NTExLDM4LjA3NTgyOTkgQzIwNS4zOTY1MTEsMzcuNjQ5ODI5OSAyMDcuNDk4NTExLDM5LjA2MTgyOTkgMjA3LjkyNDUxMSw0MS4yMjg4Mjk5IFoiLGlkOiJTdHJva2UtMS1Db3B5IixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMTMuODk2MDQ2LDQyLjQ0MDMyNTMgQzExNC40ODEwNDYsNDUuNDE5MzI1MyAxMTIuNTQwMDQ2LDQ4LjMxMDMyNTMgMTA5LjU2MDA0Niw0OC44OTYzMjUzIEMxMDYuNTgwMDQ2LDQ5LjQ4MTMyNTMgMTAzLjY4OTA0Niw0Ny41NDAzMjUzIDEwMy4xMDQwNDYsNDQuNTYwMzI1MyBDMTAyLjUxOTA0Niw0MS41ODAzMjUzIDEwNC40NjAwNDYsMzguNjg5MzI1MyAxMDcuNDQwMDQ2LDM4LjEwNDMyNTMgQzExMC40MjAwNDYsMzcuNTE4MzI1MyAxMTMuMzEwMDQ2LDM5LjQ2MDMyNTMgMTEzLjg5NjA0Niw0Mi40NDAzMjUzIFoiLGlkOiJTdHJva2UtNSIsc3Ryb2tlV2lkdGg6IjIifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNODIuODk2MDQ2Myw5Ni40NDAzMjUzIEM4My40ODEwNDYzLDk5LjQxOTMyNTMgODEuNTQwMDQ2MywxMDIuMzEwMzI1IDc4LjU2MDA0NjMsMTAyLjg5NjMyNSBDNzUuNTgwMDQ2MywxMDMuNDgxMzI1IDcyLjY4OTA0NjMsMTAxLjU0MDMyNSA3Mi4xMDQwNDYzLDk4LjU2MDMyNTMgQzcxLjUxOTA0NjMsOTUuNTgwMzI1MyA3My40NjAwNDYzLDkyLjY4OTMyNTMgNzYuNDQwMDQ2Myw5Mi4xMDQzMjUzIEM3OS40MjAwNDYzLDkxLjUxODMyNTMgODIuMzEwMDQ2Myw5My40NjAzMjUzIDgyLjg5NjA0NjMsOTYuNDQwMzI1MyBaIixpZDoiU3Ryb2tlLTUtQ29weSIsc3Ryb2tlV2lkdGg6IjIifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjYuODk2MDQ2Myw1Ni40NDAzMjUzIEMyNy40ODEwNDYzLDU5LjQxOTMyNTMgMjUuNTQwMDQ2Myw2Mi4zMTAzMjUzIDIyLjU2MDA0NjMsNjIuODk2MzI1MyBDMTkuNTgwMDQ2Myw2My40ODEzMjUzIDE2LjY4OTA0NjMsNjEuNTQwMzI1MyAxNi4xMDQwNDYzLDU4LjU2MDMyNTMgQzE1LjUxOTA0NjMsNTUuNTgwMzI1MyAxNy40NjAwNDYzLDUyLjY4OTMyNTMgMjAuNDQwMDQ2Myw1Mi4xMDQzMjUzIEMyMy40MjAwNDYzLDUxLjUxODMyNTMgMjYuMzEwMDQ2Myw1My40NjAzMjUzIDI2Ljg5NjA0NjMsNTYuNDQwMzI1MyBaIixpZDoiU3Ryb2tlLTUtQ29weS0yIixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xOTYsMjggQzE5NS40NDc1LDI4IDE5NSwyNy41NTIgMTk1LDI3IEMxOTUsMjYuNDQ4IDE5NS40NDc1LDI2IDE5NiwyNiBDMTk2LjU1MiwyNiAxOTcsMjYuNDQ4IDE5NywyNyBDMTk3LDI3LjU1MiAxOTYuNTUyLDI4IDE5NiwyOCBaIixpZDoiRmlsbC0zMCIsc3Ryb2tlV2lkdGg6IjIiLGZpbGw6IiM5Nzk3OTcifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTA0LDkzIEMxMDMuNDQ3NSw5MyAxMDMsOTIuNTUyIDEwMyw5MiBDMTAzLDkxLjQ0OCAxMDMuNDQ3NSw5MSAxMDQsOTEgQzEwNC41NTIsOTEgMTA1LDkxLjQ0OCAxMDUsOTIgQzEwNSw5Mi41NTIgMTA0LjU1Miw5MyAxMDQsOTMgWiIsaWQ6IkZpbGwtMzAtQ29weS02IixzdHJva2VXaWR0aDoiMiIsZmlsbDoiIzk3OTc5NyJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zMiwxMDYgQzMxLjQ0NzUsMTA2IDMxLDEwNS41NTIgMzEsMTA1IEMzMSwxMDQuNDQ4IDMxLjQ0NzUsMTA0IDMyLDEwNCBDMzIuNTUyLDEwNCAzMywxMDQuNDQ4IDMzLDEwNSBDMzMsMTA1LjU1MiAzMi41NTIsMTA2IDMyLDEwNiBaIixpZDoiRmlsbC0zMC1Db3B5LTkiLHN0cm9rZVdpZHRoOiIyIixmaWxsOiIjOTc5Nzk3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEyOSwxMDYgQzEyOC40NDc1LDEwNiAxMjgsMTA1LjU1MiAxMjgsMTA1IEMxMjgsMTA0LjQ0OCAxMjguNDQ3NSwxMDQgMTI5LDEwNCBDMTI5LjU1MiwxMDQgMTMwLDEwNC40NDggMTMwLDEwNSBDMTMwLDEwNS41NTIgMTI5LjU1MiwxMDYgMTI5LDEwNiBaIixpZDoiRmlsbC0zMC1Db3B5LTIiLHN0cm9rZVdpZHRoOiIyIixmaWxsOiIjOTc5Nzk3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTI4LDc1IEMyNy40NDc1LDc1IDI3LDc0LjU1MiAyNyw3NCBDMjcsNzMuNDQ4IDI3LjQ0NzUsNzMgMjgsNzMgQzI4LjU1Miw3MyAyOSw3My40NDggMjksNzQgQzI5LDc0LjU1MiAyOC41NTIsNzUgMjgsNzUgWiIsaWQ6IkZpbGwtMzAtQ29weS04IixzdHJva2VXaWR0aDoiMiIsZmlsbDoiIzk3OTc5NyJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMTcsMTMgQzExNi40NDc1LDEzIDExNiwxMi41NTIgMTE2LDEyIEMxMTYsMTEuNDQ4IDExNi40NDc1LDExIDExNywxMSBDMTE3LjU1MiwxMSAxMTgsMTEuNDQ4IDExOCwxMiBDMTE4LDEyLjU1MiAxMTcuNTUyLDEzIDExNywxMyBaIixpZDoiRmlsbC0zMC1Db3B5IixzdHJva2VXaWR0aDoiMiIsZmlsbDoiIzk3OTc5NyJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yMDcsNzEgQzIwNi40NDc1LDcxIDIwNiw3MC41NTIgMjA2LDcwIEMyMDYsNjkuNDQ4IDIwNi40NDc1LDY5IDIwNyw2OSBDMjA3LjU1Miw2OSAyMDgsNjkuNDQ4IDIwOCw3MCBDMjA4LDcwLjU1MiAyMDcuNTUyLDcxIDIwNyw3MSBaIixpZDoiRmlsbC0zMC1Db3B5LTQiLHN0cm9rZVdpZHRoOiIyIixmaWxsOiIjOTc5Nzk3In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEyNiw1IEMxMjQuODk2LDUgMTI0LDQuMTA0OCAxMjQsMyBDMTI0LDEuODk1MiAxMjQuODk2LDEgMTI2LDEgQzEyNy4xMDQ4LDEgMTI4LDEuODk1MiAxMjgsMyBDMTI4LDQuMTA0OCAxMjcuMTA0OCw1IDEyNiw1IFoiLGlkOiJGaWxsLTM2IixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik05Miw0MSBDOTAuODk2LDQxIDkwLDQwLjEwNDggOTAsMzkgQzkwLDM3Ljg5NTIgOTAuODk2LDM3IDkyLDM3IEM5My4xMDQ4LDM3IDk0LDM3Ljg5NTIgOTQsMzkgQzk0LDQwLjEwNDggOTMuMTA0OCw0MSA5Miw0MSBaIixpZDoiRmlsbC0zNi1Db3B5IixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zOCw2NCBDMzYuODk2LDY0IDM2LDYzLjEwNDggMzYsNjIgQzM2LDYwLjg5NTIgMzYuODk2LDYwIDM4LDYwIEMzOS4xMDQ4LDYwIDQwLDYwLjg5NTIgNDAsNjIgQzQwLDYzLjEwNDggMzkuMTA0OCw2NCAzOCw2NCBaIixpZDoiRmlsbC0zNi1Db3B5LTIiLHN0cm9rZVdpZHRoOiIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTQwLDE5IEMzOC44OTYsMTkgMzgsMTguMTA0OCAzOCwxNyBDMzgsMTUuODk1MiAzOC44OTYsMTUgNDAsMTUgQzQxLjEwNDgsMTUgNDIsMTUuODk1MiA0MiwxNyBDNDIsMTguMTA0OCA0MS4xMDQ4LDE5IDQwLDE5IFoiLGlkOiJGaWxsLTM2LUNvcHktMyIsc3Ryb2tlV2lkdGg6IjIifSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoiU2hhcGUiLGZpbGxSdWxlOiJub256ZXJvIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse3N0cm9rZVdpZHRoOiIxIix4bGlua0hyZWY6IiNwYXRoLTEifSksRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse3N0cm9rZVdpZHRoOiIyIix4bGlua0hyZWY6IiNwYXRoLTEifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6IlNoYXBlLUNvcHkiLGZpbGxSdWxlOiJub256ZXJvIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse3N0cm9rZVdpZHRoOiIxIix4bGlua0hyZWY6IiNwYXRoLTIifSksRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse3N0cm9rZVdpZHRoOiIyIix4bGlua0hyZWY6IiNwYXRoLTIifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzMS41LDcwIEwxMjEuNSw3MCBMMTIxLjUsNzcuNSBMMTE0LDc3LjUgTDExNCw4Ny41IEwxMjEuNSw4Ny41IEwxMjEuNSw5NSBMMTMxLjUsOTUgTDEzMS41LDg3LjUgTDEzOSw4Ny41IEwxMzksNzcuNSBMMTMxLjUsNzcuNSBMMTMxLjUsNzAgWiIsaWQ6IkNvbWJpbmVkLVNoYXBlIixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00Ni41LDI3IEwzNi41LDI3IEwzNi41LDM0LjUgTDI5LDM0LjUgTDI5LDQ0LjUgTDM2LjUsNDQuNSBMMzYuNSw1MiBMNDYuNSw1MiBMNDYuNSw0NC41IEw1NCw0NC41IEw1NCwzNC41IEw0Ni41LDM0LjUgTDQ2LjUsMjcgWiIsaWQ6IkNvbWJpbmVkLVNoYXBlLUNvcHkiLHN0cm9rZVdpZHRoOiIyIn0pKSkpKX07UFAuZGlzcGxheU5hbWU9IlNWR0NGYWNlYm9va0FkdmVydGlzaW5nIjt2YXIgTlA9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiZmFjZWJvb2stYWR2ZXJ0aXNpbmciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkZhY2Vib29rLWFkdmVydGlzaW5nIik6IkZhY2Vib29rLWFkdmVydGlzaW5nIixvbkNsaWNrOmUub25DbGljayxzdmc6UFB9KX07TlAuZGlzcGxheU5hbWU9IkZhY2Vib29rQWR2ZXJ0aXNpbmciLE5QLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGpQPU5QLExQPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1maWxsZWQtY2hldnJvbi1kb3duIix2aWV3Qm94OiIwIDAgMTYgMTYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtmaWxsOiIjNkQ2NTY1In0sRS5hLmNyZWF0ZUVsZW1lbnQoInBvbHlnb24iLHtwb2ludHM6IjggMTAgMTIgNiA0IDYifSkpKSl9O0xQLmRpc3BsYXlOYW1lPSJTVkdGaWxsZWRDaGV2cm9uRG93biI7dmFyIFJQPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tZmlsbGVkLWNoZXZyb24tZG93biIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtZmlsbGVkLWNoZXZyb24tZG93biIpOiJJY29ucy1maWxsZWQtY2hldnJvbi1kb3duIixvbkNsaWNrOmUub25DbGljayxzdmc6TFB9KX07UlAuZGlzcGxheU5hbWU9IkZpbGxlZENoZXZyb25Eb3duIixSUC5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBJUD1SUCxBUD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tZmlsbGVkLWNoZXZyb24tdXAiLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGw6IiM2RDY1NjUifSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse3BvaW50czoiOCA2IDEyIDEwIDQgMTAifSkpKSl9O0FQLmRpc3BsYXlOYW1lPSJTVkdGaWxsZWRDaGV2cm9uVXAiO3ZhciBGUD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWZpbGxlZC1jaGV2cm9uLXVwIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1maWxsZWQtY2hldnJvbi11cCIpOiJJY29ucy1maWxsZWQtY2hldnJvbi11cCIsb25DbGljazplLm9uQ2xpY2ssc3ZnOkFQfSl9O0ZQLmRpc3BsYXlOYW1lPSJGaWxsZWRDaGV2cm9uVXAiLEZQLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIEJQPUZQLHpQPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1maWxtIix2aWV3Qm94OiIwIDAgNjkgNjkifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0wIDEuMTY2djY2LjY2OEMwIDY4LjUxNC40ODYgNjkgMS4xNjYgNjloNjYuNjY4Yy42OCAwIDEuMTY2LS40ODYgMS4xNjYtMS4xNjZWMS4xNjZDNjkgLjQ4NiA2OC41MTQgMCA2Ny44MzQgMEgxLjE2NkMuNDg2IDAgMCAuNDg2IDAgMS4xNjZ6bTIyLjU0NiAzLjQwMmg2LjQxNWMuNjggMCAxLjE2Ny40ODYgMS4xNjcgMS4xNjZ2Ni40MTRjMCAuNjgtLjQ4NiAxLjE2Ni0xLjE2NiAxLjE2NmgtNi40MTRjLS42OCAwLTEuMTY2LS40ODYtMS4xNjYtMS4xNjZWNS43MzRjMC0uNjguNDg2LTEuMTY2IDEuMTY2LTEuMTY2em0yMC4wMiAyOC4yOGMuODc1Ljg3NS44NzUgMi40MyAwIDMuMzA0bC0xMi43MyAxMi43M2MtMS40NiAxLjQ2LTMuOTg1LjM5LTMuOTg1LTEuNjVWMjEuNzY4YzAtMi4xNCAyLjUyNy0zLjExIDMuOTg1LTEuNjUzbDEyLjczIDEyLjczek0xMS40NjggNjQuNDMySDUuMDU0Yy0uNjggMC0xLjE2Ny0uNDg2LTEuMTY3LTEuMTY2di02LjQxNGMwLS42OC40ODYtMS4xNjYgMS4xNjctMS4xNjZoNi40MTRjLjY4IDAgMS4xNjYuNDg2IDEuMTY2IDEuMTY2djYuNDE0YzAgLjY4LS40ODYgMS4xNjYtMS4xNjYgMS4xNjZ6bTAtNTEuMTE4SDUuMDU0Yy0uNjggMC0xLjE2Ny0uNDg2LTEuMTY3LTEuMTY2VjUuNzM0YzAtLjY4LjQ4Ni0xLjE2NiAxLjE2Ny0xLjE2Nmg2LjQxNGMuNjggMCAxLjE2Ni40ODYgMS4xNjYgMS4xNjZ2Ni40MTRjMCAuNTgzLS40ODYgMS4xNjYtMS4xNjYgMS4xNjZ6TTI4Ljk2IDY0LjQzMmgtNi40MTRjLS42OCAwLTEuMTY2LS40ODYtMS4xNjYtMS4xNjZ2LTYuNDE0YzAtLjY4LjQ4Ni0xLjE2NiAxLjE2Ni0xLjE2Nmg2LjQxNWMuNjggMCAxLjE2Ny40ODYgMS4xNjcgMS4xNjZ2Ni40MTRjMCAuNjgtLjQ4NiAxLjE2Ni0xLjE2NiAxLjE2NnptMTcuNDk0IDBINDAuMDRjLS42OCAwLTEuMTY3LS40ODYtMS4xNjctMS4xNjZ2LTYuNDE0YzAtLjY4LjQ4Ni0xLjE2NiAxLjE2Ni0xLjE2Nmg2LjQxNGMuNjggMCAxLjE2Ni40ODYgMS4xNjYgMS4xNjZ2Ni40MTRjMCAuNjgtLjQ4NiAxLjE2Ni0xLjE2NiAxLjE2NnptMC01MS4xMThINDAuMDRjLS42OCAwLTEuMTY3LS40ODYtMS4xNjctMS4xNjZWNS43MzRjMC0uNjguNDg2LTEuMTY2IDEuMTY2LTEuMTY2aDYuNDE0Yy42OCAwIDEuMTY2LjQ4NiAxLjE2NiAxLjE2NnY2LjQxNGMwIC41ODMtLjQ4NiAxLjE2Ni0xLjE2NiAxLjE2NnptMTcuNDkyIDUxLjExOGgtNi40MTRjLS42OCAwLTEuMTY2LS40ODYtMS4xNjYtMS4xNjZ2LTYuNDE0YzAtLjY4LjQ4Ni0xLjE2NiAxLjE2Ni0xLjE2Nmg2LjQxNGMuNjggMCAxLjE2Ny40ODYgMS4xNjcgMS4xNjZ2Ni40MTRjMCAuNjgtLjQ4NiAxLjE2Ni0xLjE2NyAxLjE2NnptMC01MS4xMThoLTYuNDE0Yy0uNjggMC0xLjE2Ni0uNDg2LTEuMTY2LTEuMTY2VjUuNzM0YzAtLjY4LjQ4Ni0xLjE2NiAxLjE2Ni0xLjE2Nmg2LjQxNGMuNjggMCAxLjE2Ny40ODYgMS4xNjcgMS4xNjZ2Ni40MTRjMCAuNTgzLS40ODYgMS4xNjYtMS4xNjcgMS4xNjZ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O3pQLmRpc3BsYXlOYW1lPSJTVkdGaWxtIjt2YXIgS1A9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1maWxtIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1maWxtIik6Ikljb25zLWZpbG0iLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp6UH0pfTtLUC5kaXNwbGF5TmFtZT0iRmlsbSIsS1AucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgcVA9S1AsVlA9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWdlYXIiLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTgsMTAuNzUgQzYuNDgsMTAuNzUgNS4yNSw5LjUxOSA1LjI1LDggQzUuMjUsNi40ODEgNi40OCw1LjI1IDgsNS4yNSBDOS41MTksNS4yNSAxMC43NSw2LjQ4MSAxMC43NSw4IEMxMC43NSw5LjUxOSA5LjUxOSwxMC43NSA4LDEwLjc1IE0xNC4zMDUsNy4xNjEgTDEzLjU1MSw3LjAxNyBDMTMuMTA3LDYuOTMyIDEyLjc0NSw2LjYzIDEyLjU4LDYuMjA5IEMxMi40MTQsNS43ODkgMTIuNDc2LDUuMzIxIDEyLjc0Myw0Ljk1NyBMMTMuMjE2LDQuMzEyIEMxMy4yODYsNC4yMTcgMTMuMjc2LDQuMDg0IDEzLjE5MSwzLjk5OSBMMTIuMTcxLDIuOTc4IEMxMi4wODksMi44OTYgMTEuOTYxLDIuODg1IDExLjg2NSwyLjk0OSBMMTEuMjMsMy4zNzkgQzEwLjg1NiwzLjYzMyAxMC4zODcsMy42NzYgOS45NzMsMy40OTUgQzkuNTU5LDMuMzE0IDkuMjcxLDIuOTM5IDkuMjAyLDIuNDk0IEw5LjA4LDEuNzAzIEM5LjA2MiwxLjU4NyA4Ljk2MiwxLjUgOC44NDIsMS41IEw3LjM5OCwxLjUgQzcuMjgzLDEuNSA3LjE4NCwxLjU4MiA3LjE2MSwxLjY5NSBMNi45NzQsMi42NjkgQzYuODkxLDMuMTAzIDYuNTk4LDMuNDYyIDYuMTksMy42MyBDNS43ODIsMy44IDUuMzIsMy43NTIgNC45NTQsMy41MDYgTDQuMTM0LDIuOTQ5IEM0LjAzOSwyLjg4NSAzLjkxMSwyLjg5NiAzLjgyOSwyLjk3OSBMMi44MDgsMy45OTkgQzIuNzI0LDQuMDg0IDIuNzE0LDQuMjE3IDIuNzgzLDQuMzEyIEwzLjI1Niw0Ljk1NyBDMy41MjQsNS4zMjEgMy41ODQsNS43ODkgMy40MTksNi4yMSBDMy4yNTUsNi42MyAyLjg5Miw2LjkzMiAyLjQ0OCw3LjAxNyBMMS42OTQsNy4xNjIgQzEuNTgyLDcuMTg0IDEuNSw3LjI4MyAxLjUsNy4zOTggTDEuNSw4Ljg0MiBDMS41LDguOTYxIDEuNTg3LDkuMDYzIDEuNzA0LDkuMDgxIEwyLjQ5NCw5LjIwMiBDMi45NCw5LjI3MSAzLjMxNCw5LjU1OCAzLjQ5NCw5Ljk3MyBDMy42NzYsMTAuMzg3IDMuNjMyLDEwLjg1NyAzLjM3OSwxMS4yMyBMMi45NDksMTEuODY1IEMyLjg4NSwxMS45NjEgMi44OTYsMTIuMDg5IDIuOTc5LDEyLjE3MiBMMy45OTksMTMuMTkyIEM0LjA4MywxMy4yNzYgNC4yMTYsMTMuMjg3IDQuMzEyLDEzLjIxNyBMNC45NTcsMTIuNzQ0IEM1LjMyMSwxMi40NzggNS43ODksMTIuNDE1IDYuMjA5LDEyLjU4IEM2LjYzLDEyLjc0NSA2LjkzMiwxMy4xMDggNy4wMTcsMTMuNTUyIEw3LjE2MSwxNC4zMDUgQzcuMTg0LDE0LjQxOSA3LjI4MywxNC41IDcuMzk4LDE0LjUgTDguODQyLDE0LjUgQzguOTYyLDE0LjUgOS4wNjMsMTQuNDEzIDkuMDgsMTQuMjk3IEw5LjE2NSwxMy43NCBDOS4yMzUsMTMuMjgzIDkuNTMyLDEyLjkwNiA5Ljk1OSwxMi43MjkgQzEwLjM4NiwxMi41NTMgMTAuODYxLDEyLjYxMSAxMS4yMzQsMTIuODg0IEwxMS42ODgsMTMuMjE3IEMxMS43ODMsMTMuMjg3IDExLjkxNiwxMy4yNzYgMTIuMDAxLDEzLjE5MSBMMTMuMDIxLDEyLjE3MiBDMTMuMTA0LDEyLjA4OSAxMy4xMTUsMTEuOTYxIDEzLjA1MSwxMS44NjUgTDEyLjYyLDExLjIzIEMxMi4zNjcsMTAuODU3IDEyLjMyNCwxMC4zODcgMTIuNTA1LDkuOTczIEMxMi42ODUsOS41NTggMTMuMDU5LDkuMjcxIDEzLjUwNSw5LjIwMiBMMTQuMjk1LDkuMDgxIEMxNC40MTMsOS4wNjMgMTQuNSw4Ljk2MSAxNC41LDguODQyIEwxNC41LDcuMzk4IEMxNC41LDcuMjgzIDE0LjQxOSw3LjE4NCAxNC4zMDUsNy4xNjEiLGlkOiJnZWFyLXBhdGgifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJJY29uL0dseXBoL0N1c3RvbWl6ZSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJtYXNrIix7aWQ6Im1hc2stMiIsZmlsbDoid2hpdGUifSxFLmEuY3JlYXRlRWxlbWVudCgidXNlIix7eGxpbmtIcmVmOiIjZ2Vhci1wYXRoIn0pKSxFLmEuY3JlYXRlRWxlbWVudCgidXNlIix7aWQ6Ik1hc2siLHhsaW5rSHJlZjoiI2dlYXItcGF0aCIsZmlsbDoiZ3JleSJ9KSkpKX07VlAuZGlzcGxheU5hbWU9IlNWR0dlYXIiO3ZhciBVUD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWdlYXIiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWdlYXIiKToiSWNvbnMtZ2VhciIsb25DbGljazplLm9uQ2xpY2ssc3ZnOlZQfSl9O1VQLmRpc3BsYXlOYW1lPSJHZWFyIixVUC5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBXUD1VUCxZUD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tZ28tdG8tY2F0YWxvZyIsdmlld0JveDoiMCAwIDY2IDU0In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6ImdvX3RvX2NhdGFsb2ciLHRyYW5zZm9ybToidHJhbnNsYXRlKC02LjAwMDAwMCwgLTExLjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6IjAiLHk6IjAiLHdpZHRoOiI3NiIsaGVpZ2h0OiI3NiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNC4wMTcsMTkgTDE0LjAxNywxMiBMMzIuNywxMiBMMzcuNzk4LDIwIEw3MC4wMTcsMjAgTDcwLjAxNyw1OSBMNzAuMDE3LDYwLjI3OSBDNzAuMDE3LDYyLjMyNiA2OC40MDYsNjQgNjYuNDM1LDY0IEM2NC4zMzksNjQgNjMuMDE3LDYyLjMyNiA2My4wMTcsNjAuMjc5IEw2My4wMTcsNTguMTA4IEw2My4wMTcsNTkgTDYzLjAxNyw1OC4xMDggTDYzLjAxNywyNyBMMzAuNzk4LDI3IEwyNS43LDE5IEw3LjAxNywxOSBMNyw1OS45OTk5NDE2IEM3LDYyLjIxNTk0MTYgOC44MDEsNjQuMDA5OTQxNiAxMS4wMTcsNjMuOTk5OTQxNiBMNjYuMTM5LDY0IixzdHJva2U6IiM2RDY1NjUiLHN0cm9rZVdpZHRoOiIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM0LjAxNywzNi45OTk5NDE2IEw1NC4wMTcsMzYuOTk5OTQxNiBMMzQuMDE3LDM2Ljk5OTk0MTYgWiIsc3Ryb2tlOiIjNkQ2NTY1IixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zNC4wMTcsNDQuOTk5OTQxNiBMNTQuMDE3LDQ0Ljk5OTk0MTYgTDM0LjAxNyw0NC45OTk5NDE2IFoiLHN0cm9rZToiIzZENjU2NSIsc3Ryb2tlV2lkdGg6IjIifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMzQuMDE3LDUyLjk5OTk0MTYgTDU0LjAxNyw1Mi45OTk5NDE2IEwzNC4wMTcsNTIuOTk5OTQxNiBaIixzdHJva2U6IiM2RDY1NjUiLHN0cm9rZVdpZHRoOiIyIn0pKSkpfTtZUC5kaXNwbGF5TmFtZT0iU1ZHR29Ub0NhdGFsb2ciO3ZhciBIUD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWdvLXRvLWNhdGFsb2ciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWdvLXRvLWNhdGFsb2ciKToiSWNvbnMtZ28tdG8tY2F0YWxvZyIsb25DbGljazplLm9uQ2xpY2ssc3ZnOllQfSl9O0hQLmRpc3BsYXlOYW1lPSJHb1RvQ2F0YWxvZyIsSFAucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgR1A9SFAsUVA9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLWltcG9ydC1hcnJvdyIsdmlld0JveDoiMCAwIDEyIDEyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImRlZnMiLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNCw0IEw0LDYgTDIsNiBMMiwyIEwzLDIgTDEzLDIgTDE0LDIgTDE0LDYgTDEyLDYgTDEyLDQgTDQsNCBaIE05LDEwIEwxMiwxMCBMOCwxNCBMNCwxMCBMNywxMCBMNyw2IEw5LDYgTDksMTAgWiIsaWQ6ImltcG9ydC1hcnJvdy1wYXRoIn0pKSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMi4wMDAwMDAsIC0yLjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgibWFzayIse2ZpbGw6IndoaXRlIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse3hsaW5rSHJlZjoiI2ltcG9ydC1hcnJvdy1wYXRoIn0pKSxFLmEuY3JlYXRlRWxlbWVudCgidXNlIix7ZmlsbDoiIzZENjU2NSIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoOC4wMDAwMDAsIDguMDAwMDAwKSBzY2FsZSgxLCAtMSkgcm90YXRlKC05MC4wMDAwMDApIHRyYW5zbGF0ZSgtOC4wMDAwMDAsIC04LjAwMDAwMCkgIix4bGlua0hyZWY6IiNpbXBvcnQtYXJyb3ctcGF0aCJ9KSkpKX07UVAuZGlzcGxheU5hbWU9IlNWR0ltcG9ydEFycm93Ijt2YXIgSlA9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1pbXBvcnQtYXJyb3ciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWltcG9ydC1hcnJvdyIpOiJJY29ucy1pbXBvcnQtYXJyb3ciLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpRUH0pfTtKUC5kaXNwbGF5TmFtZT0iSW1wb3J0QXJyb3ciLEpQLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIFpQPUpQLCRQPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1pbnN0YWdyYW0iLHZpZXdCb3g6IjAgMCAxMjggMTI4In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtpZDoic3ZnLWluc3RhZ3JhbS1jb250YWluZXIifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2lkOiJzdmctaW5zdGFncmFtIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHtjbGlwUnVsZToiZXZlbm9kZCIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQiLHdpZHRoOiIxNiIsaGVpZ2h0OiIxNiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicmFkaWFsR3JhZGllbnQiLHtjeDoiMTkuMTExMSIsY3k6IjEyOC40NDQ0IixncmFkaWVudFVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsaWQ6InN2Zy1pbnN0YWdyYW0tcmFkaWFsIixyOiIxNjMuNTUxOSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7b2Zmc2V0OiIwIixzdHlsZTp7c3RvcENvbG9yOiIjRkZCMTQwIn19KSxFLmEuY3JlYXRlRWxlbWVudCgic3RvcCIse29mZnNldDoiMC4yNTU5IixzdHlsZTp7c3RvcENvbG9yOiIjRkY1NDQ1In19KSxFLmEuY3JlYXRlRWxlbWVudCgic3RvcCIse29mZnNldDoiMC41OTkiLHN0eWxlOntzdG9wQ29sb3I6IiNGQzJCODIifX0pLEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7b2Zmc2V0OiIxIixzdHlsZTp7c3RvcENvbG9yOiIjOEU0MEI3In19KSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtjbGlwUnVsZToiZXZlbm9kZCIsZDoiTTEwNS44NDMsMjkuODM3IGMwLDQuMjQyLTMuNDM5LDcuNjgtNy42OCw3LjY4Yy00LjI0MSwwLTcuNjgtMy40MzgtNy42OC03LjY4YzAtNC4yNDIsMy40MzktNy42OCw3LjY4LTcuNjggQzEwMi40MDUsMjIuMTU3LDEwNS44NDMsMjUuNTk1LDEwNS44NDMsMjkuODM3eiBNNjQsODUuMzMzYy0xMS43ODIsMC0yMS4zMzMtOS41NTEtMjEuMzMzLTIxLjMzMyAgICBjMC0xMS43ODIsOS41NTEtMjEuMzMzLDIxLjMzMy0yMS4zMzNjMTEuNzgyLDAsMjEuMzMzLDkuNTUxLDIxLjMzMywyMS4zMzNDODUuMzMzLDc1Ljc4Miw3NS43ODIsODUuMzMzLDY0LDg1LjMzM3ogTTY0LDMxLjEzNSAgICBjLTE4LjE1MSwwLTMyLjg2NSwxNC43MTQtMzIuODY1LDMyLjg2NWMwLDE4LjE1MSwxNC43MTQsMzIuODY1LDMyLjg2NSwzMi44NjVjMTguMTUxLDAsMzIuODY1LTE0LjcxNCwzMi44NjUtMzIuODY1ICAgIEM5Ni44NjUsNDUuODQ5LDgyLjE1MSwzMS4xMzUsNjQsMzEuMTM1eiBNNjQsMTEuNTMyYzE3LjA4OSwwLDE5LjExMywwLjA2NSwyNS44NjEsMC4zNzNjNi4yNCwwLjI4NSw5LjYyOSwxLjMyNywxMS44ODQsMi4yMDQgICAgYzIuOTg3LDEuMTYxLDUuMTE5LDIuNTQ4LDcuMzU5LDQuNzg4YzIuMjQsMi4yMzksMy42MjcsNC4zNzEsNC43ODgsNy4zNTljMC44NzYsMi4yNTUsMS45MTksNS42NDQsMi4yMDQsMTEuODg0ICAgIGMwLjMwOCw2Ljc0OSwwLjM3Myw4Ljc3MywwLjM3MywyNS44NjJjMCwxNy4wODktMC4wNjUsMTkuMTEzLTAuMzczLDI1Ljg2MWMtMC4yODUsNi4yNC0xLjMyNyw5LjYyOS0yLjIwNCwxMS44ODQgICAgYy0xLjE2MSwyLjk4Ny0yLjU0OCw1LjExOS00Ljc4OCw3LjM1OWMtMi4yMzksMi4yNC00LjM3MSwzLjYyNy03LjM1OSw0Ljc4OGMtMi4yNTUsMC44NzYtNS42NDQsMS45MTktMTEuODg0LDIuMjA0ICAgIGMtNi43NDgsMC4zMDgtOC43NzIsMC4zNzMtMjUuODYxLDAuMzczYy0xNy4wOSwwLTE5LjExNC0wLjA2NS0yNS44NjItMC4zNzNjLTYuMjQtMC4yODUtOS42MjktMS4zMjctMTEuODg0LTIuMjA0ICAgIGMtMi45ODctMS4xNjEtNS4xMTktMi41NDgtNy4zNTktNC43ODhjLTIuMjM5LTIuMjM5LTMuNjI3LTQuMzcxLTQuNzg4LTcuMzU5Yy0wLjg3Ni0yLjI1NS0xLjkxOS01LjY0NC0yLjIwNC0xMS44ODQgICAgYy0wLjMwOC02Ljc0OS0wLjM3My04Ljc3My0wLjM3My0yNS44NjFjMC0xNy4wODksMC4wNjUtMTkuMTEzLDAuMzczLTI1Ljg2MmMwLjI4NS02LjI0LDEuMzI3LTkuNjI5LDIuMjA0LTExLjg4NCAgICBjMS4xNjEtMi45ODcsMi41NDgtNS4xMTksNC43ODgtNy4zNTljMi4yMzktMi4yNCw0LjM3MS0zLjYyNyw3LjM1OS00Ljc4OGMyLjI1NS0wLjg3Niw1LjY0NC0xLjkxOSwxMS44ODQtMi4yMDQgICAgQzQ0Ljg4NywxMS41OTcsNDYuOTExLDExLjUzMiw2NCwxMS41MzJ6IE02NCwwQzQ2LjYxOSwwLDQ0LjQzOSwwLjA3NCwzNy42MTMsMC4zODVDMzAuODAxLDAuNjk2LDI2LjE0OCwxLjc3OCwyMi4wNzgsMy4zNiAgICBjLTQuMjA5LDEuNjM1LTcuNzc4LDMuODI0LTExLjMzNiw3LjM4MkM3LjE4NCwxNC4zLDQuOTk1LDE3Ljg2OSwzLjM2LDIyLjA3OGMtMS41ODIsNC4wNzEtMi42NjQsOC43MjMtMi45NzUsMTUuNTM1ICAgIEMwLjA3NCw0NC40MzksMCw0Ni42MTksMCw2NGMwLDE3LjM4MSwwLjA3NCwxOS41NjEsMC4zODUsMjYuMzg3YzAuMzExLDYuODEyLDEuMzkzLDExLjQ2NCwyLjk3NSwxNS41MzUgICAgYzEuNjM1LDQuMjA5LDMuODI0LDcuNzc4LDcuMzgyLDExLjMzNmMzLjU1OCwzLjU1OCw3LjEyNyw1Ljc0NiwxMS4zMzYsNy4zODJjNC4wNzEsMS41ODIsOC43MjMsMi42NjQsMTUuNTM1LDIuOTc1ICAgIEM0NC40MzksMTI3LjkyNiw0Ni42MTksMTI4LDY0LDEyOGMxNy4zODEsMCwxOS41NjEtMC4wNzQsMjYuMzg3LTAuMzg1YzYuODEyLTAuMzExLDExLjQ2NC0xLjM5MywxNS41MzUtMi45NzUgICAgYzQuMjA5LTEuNjM2LDcuNzc4LTMuODI0LDExLjMzNi03LjM4MmMzLjU1OC0zLjU1OCw1Ljc0Ni03LjEyNyw3LjM4Mi0xMS4zMzZjMS41ODItNC4wNzEsMi42NjQtOC43MjMsMi45NzUtMTUuNTM1ICAgIEMxMjcuOTI2LDgzLjU2MSwxMjgsODEuMzgxLDEyOCw2NGMwLTE3LjM4MS0wLjA3NC0xOS41NjEtMC4zODUtMjYuMzg3Yy0wLjMxMS02LjgxMi0xLjM5My0xMS40NjQtMi45NzUtMTUuNTM1ICAgIGMtMS42MzYtNC4yMDktMy44MjQtNy43NzgtNy4zODItMTEuMzM2Yy0zLjU1OC0zLjU1OC03LjEyNy01Ljc0Ni0xMS4zMzYtNy4zODJjLTQuMDcxLTEuNTgyLTguNzIzLTIuNjY0LTE1LjUzNS0yLjk3NSBDODMuNTYxLDAuMDc0LDgxLjM4MSwwLDY0LDB6IixmaWxsOiJ1cmwoI3N2Zy1pbnN0YWdyYW0tcmFkaWFsKSIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGlkOiJJbnN0YWdyYW0tc3ZnIn0pKSkpfTskUC5kaXNwbGF5TmFtZT0iU1ZHSW5zdGFncmFtIjt2YXIgWFA9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1pbnN0YWdyYW0iLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWluc3RhZ3JhbSIpOiJJY29ucy1pbnN0YWdyYW0iLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzokUH0pfTtYUC5kaXNwbGF5TmFtZT0iSW5zdGFncmFtIixYUC5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBlTj1YUCx0Tj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tbGluayIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoImRlZnMiLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTYsOC41NzYwNzgzNyBDMTUuOTk5NzEyNywxMC41NTAyMzA4IDE0LjM5OTE3NTQsMTIuMTUwNzY4MSAxMi40MjUwMzI2LDEyLjE1MTA1NTQgTDkuMjk1OTc4MzcsMTIuMTUxMzQyNyBDNy4zMjEyNTEzMywxMi4xNTExNTExIDUuNzIwMTEwNjksMTAuNTUwMDM5MiA1LjcyMDE2ODE1LDguNTc1NTYxMjEgQzUuNzIwNzgxMDksOC4yMTg0NzYyOCA1Ljc3MzQ0NTk3LDcuODczMDA4NDcgNS44NzA2NDQ3MSw3LjU0NzgwNTk2IEw2LjcwNDQ3MTc2LDcuNTQ3MjYwMDYgQzYuOTU5MDcxMzUsNy41NDcyNjk2NCA3LjE5OTc5MzYxLDcuNjM5ODQyNiA3LjM4Nzg2MDU3LDcuODA4MjQ3NjIgQzcuMjkwNjQyNjgsOC4wNDg5Nzk0NiA3LjIzOTY5MjEyLDguMzA4MjE0NCA3LjI0MDI2Njc1LDguNTc1MDA1NzMgQzcuMjQwMjI4NDQsOS4xMjQ3NjQyNCA3LjQ1Mzc4MDI2LDkuNjQwMzAzNSA3Ljg0MjY2MTQsMTAuMDI5MTM2OCBDOC4yMzA5MDA4NywxMC40MTczOTU0IDguNzQ3MTEwNTQsMTAuNjMxNTQxIDkuMjk2NTUzLDEwLjYzMTI1MzcgTDEyLjQyNDc0NTMsMTAuNjMxMjUzNyBDMTIuOTczNjEzMSwxMC42MzE1NDEgMTMuNDg5NzI3LDEwLjQxNzM5NTQgMTMuODc4MDgxNCwxMC4wMjkwNDEgQzE0LjI2NjkxNDYsOS42NDAyMDc3MyAxNC40ODA0ODU2LDkuMTI0NjY4NDcgMTQuNDgwMTk4Myw4LjU3NTgxOTc5IEMxNC40ODA0ODU2LDguMDI2Mzg2OTEgMTQuMjY2NDM1OCw3LjUxMDIxNTU1IDEzLjg3ODA4MTQsNy4xMjE4OTk0NiBDMTMuNDg5ODIyOCw2LjczMzYxMjExIDEyLjk3MzYxMzEsNi41MTk1MDQ4MSAxMi40MjQxNzA2LDYuNTE5ODAxNyBMMTAuODI1NjQ0Niw2LjUxOTUyMzk3IEMxMC42MDYzMjczLDYuMDgxNTAyMzUgMTAuMzE1ODUxNiw1LjY3NzYwNDIgOS45NTg4MTQ1Niw1LjMyMDU3Njc0IEM5Ljg0NTQyMDgyLDUuMjA3MTU0MjcgOS43MjczMzQyNyw1LjA5OTUzNTU3IDkuNjAzNTAxNDEsNSBMMTIuNDI0NDU3OSw1LjAwMDU1NTQ4IEMxNC4zOTg4ODgxLDUuMDAwNTM2MzIgMTUuOTk5NzEyNyw2LjYwMTM5OTIzIDE2LDguNTc2MDc4MzcgWiBNNi4wNTc5OTMzOCwxMS44NDczNjMyIEw2LjA1ODUyOTcsMTEuODQ4MDMzNiBDNi4xNjU1OTI5MywxMS45NTUxMDY0IDYuMjc3MDQyNSwxMi4wNTYwNDk4IDYuMzkxODUzNjYsMTIuMTUxMjQ2OSBMMy41NzQ5NDgyNywxMi4xNTEyNDY5IEMxLjYwMDUyNzcsMTIuMTUxMzQyNyAtNC43ODg1ODY4OGUtMDUsMTAuNTUwNzA5NiAyLjU3NTcxNzQyZS0xNCw4LjU3NjMwODIzIEMxLjkxNTQzNDc2ZS0wNSw2LjYwMDc1NzU1IDEuNjAwNTQ2ODYsNS4wMDAyMjk4NSAzLjU3NTU2MTIxLDUuMDAwNzQ3MDIgTDYuNzA0Mzk1MTQsNS4wMDAxNjI4MSBDOC42Nzg4MjUyOSw1LjAwMDE0MzY2IDEwLjI3OTkzNzIsNi42MDEyNzQ3MiAxMC4yNzk5MzcyLDguNTc1Njc2MTMgQzEwLjI3OTY0OTksOC45MzMwMjkyMiAxMC4yMjcyNjI3LDkuMjc4NzY1MTkgMTAuMTI5NDc5OCw5LjYwNDU4MDY0IEw5LjI5Njc0NDU0LDkuNjA1MTU1MjcgQzkuMDQyMTgzMjYsOS42MDUxNTUyNyA4LjgwMDU1MTE3LDkuNTEyODMxMzIgOC42MTI1NTEyNSw5LjM0MzMxNTM0IEM4LjcwOTM3NjQ3LDkuMTAyMjU3ODggOC43NjAwMzk3Miw4Ljg0MjcxNjQ3IDguNzYwMDM5NzIsOC41NzUzNzkyNCBDOC43NTk3NTI0MSw4LjAyNjU0OTcyIDguNTQ2Mjc3Miw3LjUxMDk1Mjk5IDguMTU3MzQ4MTgsNy4xMjIwOTEwMSBDNy43NjkxMDg3MSw2LjczMzgxMzIzIDcuMjUzNTExOTgsNi41MjAyODA1NiA2LjcwNDM1Njg0LDYuNTE5NzA1OTMgTDMuNTc2MTE2NjgsNi41MTk3MDU5MyBDMy4wMjY0MzQ4LDYuNTE5NjY3NjIgMi41MTAyNDQyOCw2LjczMzc5NDA4IDIuMTIxOTM3NzcsNy4xMjIwOTEwMSBDMS43MzM2NDA4NCw3LjUxMDM5NzUyIDEuNTE5NTcxODUsOC4wMjY1MzA1NyAxLjUyMDEyNzMzLDguNTc1Njk1MjkgQzEuNTIwMTI3MzMsOS4xMjU0MzQ2NCAxLjczMzY1OTk5LDkuNjQwOTczOSAyLjEyMTkzNzc3LDEwLjAyOTMyODMgQzIuNTEwMjI1MTMsMTAuNDE3NTg2OSAzLjAyNjM1ODE4LDEwLjYzMTczMjUgMy41NzU1MjI5LDEwLjYzMTA2MjEgTDUuMTg1NDA3NSwxMC42MzEwNjIxIEM1LjQwNzU3ODc4LDExLjA4MTE4OTMgNS43MDAzNzIxMywxMS40ODk3NTE1IDYuMDU3OTkzMzgsMTEuODQ3MzYzMiBaIixpZDoicGF0aCJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJyZWN0Iix7eDoiMCIseToiMCIsd2lkdGg6IjE2IixoZWlnaHQ6IjE2In0pLEUuYS5jcmVhdGVFbGVtZW50KCJtYXNrIix7aWQ6Im1hc2siLGZpbGw6IndoaXRlIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse3hsaW5rSHJlZjoiI3BhdGgtMSJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse2ZpbGw6IiM2RDY1NjUiLGZpbGxSdWxlOiJub256ZXJvIix4bGlua0hyZWY6IiNwYXRoIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7bWFzazoidXJsKCNtYXNrKSIsZmlsbDoiIzZENjU2NSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJyZWN0Iix7eDoiMCIseToiMCIsd2lkdGg6IjE2IixoZWlnaHQ6IjE2In0pKSkpfTt0Ti5kaXNwbGF5TmFtZT0iU1ZHTGluayI7dmFyIG5OPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tbGluayIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtbGluayIpOiJJY29ucy1saW5rIixvbkNsaWNrOmUub25DbGljayxzdmc6dE59KX07bk4uZGlzcGxheU5hbWU9IkxpbmsiLG5OLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIHJOPW5OLG9OPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1sb2FkaW5nLWFycm93cyIsdmlld0JveDoiMCAwIDE1IDIwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOC4zOTgsMTMuMzNsLTMuMzIsMy4zNEw4LjQwOCwyMHYtMi4xM2MxLjMxMy0wLjI2OCwyLjUzMy0wLjg3NCwzLjU0LTEuNzYxYzEuMjU3LTEuMDksMi4xMTYtMi41NjcsMi40NC00LjE5OWMwLjMyLTEuNTY0LDAuMTA5LTMuMTktMC42MDEtNC42MmMtMC42ODUtMS4zNjgtMS43OTgtMi40NzUtMy4xNy0zLjE1YzEuMjEsMC44MzQsMi4xMTIsMi4wNDMsMi41NjksMy40NGMwLjQ0NSwxLjI5NiwwLjQ0NSwyLjcwNCwwLDRjLTAuNDM0LDEuMjM4LTEuMjcxLDIuMjk1LTIuMzc5LDNjLTAuNzIzLDAuNDc3LTEuNTUsMC43NzEtMi40MSwwLjg1OVYxMy4zM3oifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMC43OTgsMTIuNjA5YzAuNjg0LDEuMzYzLDEuNzkzLDIuNDY2LDMuMTYsMy4xNDFjLTEuMTkxLTAuODA2LTIuMDkyLTEuOTczLTIuNTctMy4zM2MtMC40NDQtMS4yOTYtMC40NDQtMi43MDQsMC00YzAuNDM1LTEuMjM5LDEuMjczLTIuMjk1LDIuMzgxLTNjMC43MjMtMC40NzYsMS41NDktMC43NzEsMi40MS0wLjg2djIuMWwzLjMyOS0zLjMzTDYuMTY4LDB2Mi4xM2MtMS4zNDIsMC4yNTQtMi41OTEsMC44NjItMy42MiwxLjc2Yy0xLjI1NywxLjA5LTIuMTE1LDIuNTY4LTIuNDM5LDQuMkMtMC4xNTcsOS42MzIsMC4wODUsMTEuMjE4LDAuNzk4LDEyLjYwOXoifSkpfTtvTi5kaXNwbGF5TmFtZT0iU1ZHTG9hZGluZ0Fycm93cyI7dmFyIGFOPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tbG9hZGluZy1hcnJvd3MiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWxvYWRpbmctYXJyb3dzIik6Ikljb25zLWxvYWRpbmctYXJyb3dzIixvbkNsaWNrOmUub25DbGljayxzdmc6b059KX07YU4uZGlzcGxheU5hbWU9IkxvYWRpbmdBcnJvd3MiLGFOLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGlOPWFOLHVOPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1sb2FkaW5nLXJpbmciLHZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJ4TWlkWU1pZCIsY2xhc3NOYW1lOiJ1aWwtcmluZy1hbHQifSxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6IjAiLHk6IjAiLHdpZHRoOiIxMDAiLGhlaWdodDoiMTAwIixmaWxsOiJub25lIixjbGFzc05hbWU6ImJrIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJjaXJjbGUiLHtjeDoiNTAiLGN5OiI1MCIscjoiNDAiLHN0cm9rZToiI2ZmZGRiMSIsZmlsbDoibm9uZSIsc3Ryb2tlV2lkdGg6IjEwIixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7Y3g6IjUwIixjeToiNTAiLHI6IjQwIixzdHJva2U6IiNmYWE2MzUiLGZpbGw6Im5vbmUiLHN0cm9rZVdpZHRoOiI2IixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJhbmltYXRlIix7YXR0cmlidXRlTmFtZToic3Ryb2tlLWRhc2hvZmZzZXQiLGR1cjoiMnMiLHJlcGVhdENvdW50OiJpbmRlZmluaXRlIixmcm9tOiIwIix0bzoiNTAyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJhbmltYXRlIix7YXR0cmlidXRlTmFtZToic3Ryb2tlLWRhc2hhcnJheSIsZHVyOiIycyIscmVwZWF0Q291bnQ6ImluZGVmaW5pdGUiLHZhbHVlczoiMTUwLjYgMTAwLjQ7MSAyNTA7MTUwLjYgMTAwLjQifSkpKX07dU4uZGlzcGxheU5hbWU9IlNWR0xvYWRpbmdSaW5nIjt2YXIgc049ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1sb2FkaW5nLXJpbmciLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLWxvYWRpbmctcmluZyIpOiJJY29ucy1sb2FkaW5nLXJpbmciLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp1Tn0pfTtzTi5kaXNwbGF5TmFtZT0iTG9hZGluZ1JpbmciLHNOLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGxOPXNOLGNOPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1sb2dvdXQiLHZpZXdCb3g6IjAgMCAyMCAxMiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzLjQ1Mzc3MSw5LjcyNDYwMTYgQzEzLjQ0ODUyNzIsOS43MTY3MzU5MiAxMy40NDMyODM0LDkuNzA4ODcwMjUgMTMuNDM1NDE3OCw5LjcwMTAwNDU3IEwxMC4wMjY5NTY3LDkuNzAxMDA0NTcgQzkuNDEzNDMzNzEsOS43MDEwMDQ1NyA4LjkxNTI3NDAyLDkuMjAyODQ0ODcgOC45MTUyNzQwMiw4LjU4NjY5OTk5IEw4LjkxNTI3NDAyLDcuMjkxNDg0NzggQzguNzEwNzY2MzUsNy4yMzY0MjUwMyA4LjQ5ODM5MzAxLDcuMTg2NjA5MDYgOC4yNzU1MzIwOSw3LjE0NzI4MDY2IEM4LjcyOTExOTYsNi42NjIyMzA0MyA5LjA3MjU4NzYsNS45MDE4ODE0MyA5LjQyNjU0MzE4LDUuMDAyNTcyMDggQzkuNjMxMDUwODQsNC40ODM0MzcyNSA5LjU5NDM0NDM0LDQuMDM3NzE1NDEgOS41OTQzNDQzNCwzLjQwNTgzOTE3IEM5LjU5NDM0NDM0LDIuOTM5MTQyMTkgOS42ODM0ODg3LDIuMTg5MjgwNzYgOS41NjgxMjU0LDEuNzc3NjQzNTQgQzkuMTc0ODQxNDQsMC4zODU0MTgyOSA4LjE4OTAwOTYyLDAgNy4wMzAxMzI4NiwwIEM1Ljg3MTI1NjEsMCA0Ljg4MjgwMjM5LDAuMzg1NDE4MjkgNC40OTIxNDAzMSwxLjc4MDI2NTQzIEM0LjM3Njc3NzAyLDIuMTkxOTAyNjUgNC40NjU5MjEzOCwyLjkzOTE0MjE5IDQuNDY1OTIxMzgsMy40MDU4MzkxNyBDNC40NjU5MjEzOCw0LjA0MDMzNzMxIDQuNDI5MjE0ODgsNC40ODYwNTkxNCA0LjYzNjM0NDQzLDUuMDA3ODE1ODcgQzQuOTkwMzAwMDEsNS45MTIzNjkgNS4zMjg1MjQyMiw2LjY3MDA5NjExIDUuNzgyMTExNzMsNy4xNTI1MjQ0NSBDNC4wMjI4MjE0NCw3LjQ3NTAxNzMgMi44MzUxMDM4Niw4LjM5MjY3OTkgMi4wMzI4MDQ1Niw4Ljc1MTg3OTI1IEMwLjM3MzE0NjIxMiw5LjQ5MTI1MzEyIDAuMzY1MjgwNTMyLDEwLjMwMTQxODEgMC4zNjUyODA1MzIsMTAuMzAxNDE4MSBMMC4zNjUyODA1MzIsMTEuNjc1MjkwMSBMMTMuNDUzNzcxLDExLjY3NTI5MDEgTDEzLjQ1Mzc3MSwxMS42NzAwNDYzIEwxMy40NTM3NzEsOS43MjQ2MDE2IixpZDoiRmlsbC03NTUifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTQuNjA3NDA0LDMuNjcwNjUwMzggTDE0LjYwNzQwNCw2Ljc1Mzk5NjY5IEwxMC4wNjYyODUxLDYuNzUzOTk2NjkgTDEwLjA2NjI4NTEsOC44MDY5MzkwMSBMMTQuNjA3NDA0LDguODA2OTM5MDEgTDE0LjYwNzQwNCwxMS44OTAyODUzIEwxOS4zNjA4OTYyLDcuNzc5MTU2OSBMMTQuNjA3NDA0LDMuNjcwNjUwMzggWiIsaWQ6IkZpbGwtNzU2In0pKSl9O2NOLmRpc3BsYXlOYW1lPSJTVkdMb2dvdXQiO3ZhciBmTj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLWxvZ291dCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtbG9nb3V0Iik6Ikljb25zLWxvZ291dCIsb25DbGljazplLm9uQ2xpY2ssc3ZnOmNOfSl9O2ZOLmRpc3BsYXlOYW1lPSJMb2dvdXQiLGZOLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGROPWZOLHBOPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1uZXctcHJvZHVjdCIsdmlld0JveDoiMCAwIDY4IDY3In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6Im5ld19wcm9kdWN0Iix0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNS4wMDAwMDAsIC00LjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6IjAiLHk6IjAiLHdpZHRoOiI3NiIsaGVpZ2h0OiI3NiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zOC4wNDczMjI3LDIzLjk5MjMgQzM5LjcxNzMyMjcsMjIuNzQxMyA0MS43OTEzMjI3LDIyLjAwMDMgNDQuMDM4MzIyNywyMi4wMDAzIEM0OS41NjAzMjI3LDIyLjAwMDMgNTQuMDM4MzIyNywyNi40NzYzIDU0LjAzODMyMjcsMzIuMDAwMyBDNTQuMDM4MzIyNywzNy41MjIzIDQ5LjU2MDMyMjcsNDIuMDAwMyA0NC4wMzgzMjI3LDQyLjAwMDMgQzQzLjcwMzMyMjcsNDIuMDAwMyA0My4zNzMzMjI3LDQxLjk4MzMgNDMuMDQ3MzIyNyw0MS45NTEzIixzdHJva2U6IiM2RDY1NjUiLHN0cm9rZVdpZHRoOiIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE5LjU5OTgyMjcsMjAuNTA2IEMyMy45MTY4MjI3LDExLjM0MiAzMy4yMzY4MjI3LDUgNDQuMDM3ODIyNyw1IEM1OC45NDk4MjI3LDUgNzEuMDM3ODIyNywxNy4wODggNzEuMDM3ODIyNywzMiBDNzEuMDM3ODIyNyw0Ni45MTEgNTguOTQ5ODIyNyw1OSA0NC4wMzc4MjI3LDU5IEM0My43MDU4MjI3LDU5IDQzLjM3NTgyMjcsNTguOTkzIDQzLjA0NjgyMjcsNTguOTgyIE02LDE5Ljk5OTggTDYsNjkuOTk5OCBMNDQsNjkuOTk5OCBMNDQsMjguOTk5OCBMMzUsMTkuOTk5OCBMNiwxOS45OTk4IFogTTM1LDE5Ljk5OTggTDM1LDI4Ljk5OTggTDQ0LDI4Ljk5OTgiLHN0cm9rZToiIzZENjU2NSIsc3Ryb2tlV2lkdGg6IjIifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTksNTYuMDQ3IEMxOSw1Ny4zNjkgMTcuOTI4LDU4LjQ0MiAxNi42MDYsNTguNDQyIEMxNS4yODMsNTguNDQyIDE0LjIxMiw1Ny4zNjkgMTQuMjEyLDU2LjA0NyBDMTQuMjEyLDU0LjcyNSAxNS4yODMsNTMuNjUzIDE2LjYwNiw1My42NTMgQzE3LjkyOCw1My42NTMgMTksNTQuNzI1IDE5LDU2LjA0NyBaIixzdHJva2U6IiM2RDY1NjUiLHN0cm9rZVdpZHRoOiIyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTMyLjAwNzk3MDcsNTMuNjUzNCBDMzIuMDA3OTcwNyw1NC45NzU0IDMwLjkzNTk3MDcsNTYuMDQ3NCAyOS42MTM5NzA3LDU2LjA0NzQgQzI4LjI5MTk3MDcsNTYuMDQ3NCAyNy4yMTk5NzA3LDU0Ljk3NTQgMjcuMjE5OTcwNyw1My42NTM0IEMyNy4yMTk5NzA3LDUyLjMzMTQgMjguMjkxOTcwNyw1MS4yNTg0IDI5LjYxMzk3MDcsNTEuMjU4NCBDMzAuOTM1OTcwNyw1MS4yNTg0IDMyLjAwNzk3MDcsNTIuMzMxNCAzMi4wMDc5NzA3LDUzLjY1MzQgWiIsc3Ryb2tlOiIjNkQ2NTY1IixzdHJva2VXaWR0aDoiMiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicG9seWxpbmUiLHtzdHJva2U6IiM2RDY1NjUiLHN0cm9rZVdpZHRoOiIyIixwb2ludHM6IjE5IDU2LjA0NyAxOSAzOC45OTk4IDMyIDM1Ljk5OTggMzIgNTMuNjU2OCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xOSw0Mi45OTk4IEwzMiwzOS45OTk4IEwxOSw0Mi45OTk4IFoiLHN0cm9rZToiIzZENjU2NSIsc3Ryb2tlV2lkdGg6IjIifSkpKSl9O3BOLmRpc3BsYXlOYW1lPSJTVkdOZXdQcm9kdWN0Ijt2YXIgaE49ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1uZXctcHJvZHVjdCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtbmV3LXByb2R1Y3QiKToiSWNvbnMtbmV3LXByb2R1Y3QiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpwTn0pfTtoTi5kaXNwbGF5TmFtZT0iTmV3UHJvZHVjdCIsaE4ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgeU49aE4sbU49ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXBoeXNpY2FsIix2aWV3Qm94OiIwIDAgNjkgNjkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjUuNzQzIDI1Ljc0YzQuODA4LTQuODA3IDEyLjYxNy00LjgyNCAxNy40NTItLjA1N0w1NS4zNSAxMC4yNEM0Mi43ODUtLjU3NyAyMy44MS0uMDMgMTEuODkgMTEuODktLjAzIDIzLjgxLS41NzQgNDIuNzg2IDEwLjI0IDU1LjM0OGwxNS40NDUtMTIuMTU1Yy00Ljc2OC00LjgzNC00Ljc1LTEyLjY0NC4wNTgtMTcuNDUyek01OC43NiAxMy42NUw0My4zMTcgMjUuODA1YzQuNzY2IDQuODM1IDQuNzUgMTIuNjQ0LS4wNTggMTcuNDUyLTQuODEgNC44MDctMTIuNjE3IDQuODI0LTE3LjQ1Mi4wNTdMMTMuNjUyIDU4Ljc1OGMxMi41NjIgMTAuODE2IDMxLjUzOCAxMC4yNyA0My40NTgtMS42NSAxMS45Mi0xMS45MiAxMi40NjUtMzAuODk2IDEuNjUtNDMuNDU4eiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00Mi43NCAyNi4yNmMtNC41NS00LjU1LTExLjkyOC00LjU1LTE2LjQ3OCAwLTQuNTUgNC41NS00LjU1IDExLjkzIDAgMTYuNDc3IDQuNTUgNC41NSAxMS45MjcgNC41NSAxNi40NzguMDAyIDQuNTUtNC41NTIgNC41NS0xMS45MyAwLTE2LjQ4ek0yOS43NjUgMzkuMjM1Yy0yLjYxNi0yLjYxNS0yLjYxNi02Ljg1NyAwLTkuNDczIDIuNjE1LTIuNjE2IDYuODU2LTIuNjE1IDkuNDczIDAgMi42MTQgMi42MTYgMi42MTQgNi44NTcgMCA5LjQ3NC0yLjYxNyAyLjYxNS02Ljg1OCAyLjYxNS05LjQ3MyAweiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMC41MiA1OC40OGMtMTMuMjI1LTEzLjIyMy0xMy4yMjUtMzQuNzQgMC00Ny45NjMgMTMuMjIzLTEzLjIyMyAzNC43NC0xMy4yMjMgNDcuOTYyIDAgMTMuMjI0IDEzLjIyNCAxMy4yMjQgMzQuNzQgMCA0Ny45NjUtMTMuMjIzIDEzLjIyMy0zNC43NCAxMy4yMjMtNDcuOTYzLS4wMDJ6bTQ3LjQ0My00Ny40NDRDNDUuMDI1LTEuOSAyMy45NzUtMS45IDExLjAzOCAxMS4wMzYtMS45IDIzLjk3My0xLjkgNDUuMDIzIDExLjAzOCA1Ny45NmMxMi45MzcgMTIuOTM4IDMzLjk5IDEyLjkzOCA0Ni45MjUuMDAyIDEyLjkzNy0xMi45MzcgMTIuOTM3LTMzLjk4OCAwLTQ2LjkyNnoifSkpKX07bU4uZGlzcGxheU5hbWU9IlNWR1BoeXNpY2FsIjt2YXIgdk49ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1waHlzaWNhbCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtcGh5c2ljYWwiKToiSWNvbnMtcGh5c2ljYWwiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzptTn0pfTt2Ti5kaXNwbGF5TmFtZT0iUGh5c2ljYWwiLHZOLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGdOPXZOLGJOPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1wbGF5Iix2aWV3Qm94OiIwIDAgOSAxMiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoLTExMDUuMDAwMDAwLCAtMjQ4LjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDExMDEuMDAwMDAwLCAyNDYuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7cG9pbnRzOiI0IDE0IDQgMiAxMyA4In0pKSkpfTtiTi5kaXNwbGF5TmFtZT0iU1ZHUGxheSI7dmFyIHdOPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tcGxheSIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtcGxheSIpOiJJY29ucy1wbGF5IixvbkNsaWNrOmUub25DbGljayxzdmc6Yk59KX07d04uZGlzcGxheU5hbWU9IlBsYXkiLHdOLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIF9OPXdOLEVOPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1wbGF5bGlzdC1wbGFjZWhvbGRlciIsdmlld0JveDoiMCAwIDEzNSAxMzUifSxFLmEuY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicmFkaWFsR3JhZGllbnQiLHtjeDoiNTAlIixjeToiNTAlIixmeDoiNTAlIixmeToiNTAlIixyOiI3MC43MTA2NzgxJSIsaWQ6InBwLWdyYWRpZW50LTEifSxFLmEuY3JlYXRlRWxlbWVudCgic3RvcCIse3N0b3BDb2xvcjoiI0ZGRkZGRiIsb2Zmc2V0OiIwJSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgic3RvcCIse3N0b3BDb2xvcjoiI0ZCRjhGOCIsb2Zmc2V0OiIxMDAlIn0pKSxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse2lkOiJwcC1wYXRoLTEiLHg6IjAiLHk6IjAiLHdpZHRoOiIxMzUiLGhlaWdodDoiMTM1IixyeDoiMy4zNzUifSksRS5hLmNyZWF0ZUVsZW1lbnQoIm1hc2siLHtpZDoicHAtbWFzay0xIixmaWxsOiJ3aGl0ZSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHt4bGlua0hyZWY6IiNwcC1wYXRoLTEifSkpKSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMTUuMDAwMDAwLCAtMTUuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMTUuMDAwMDAwLCAxNS4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInVzZSIse2ZpbGw6InVybCgjcHAtZ3JhZGllbnQtMSkiLHhsaW5rSHJlZjoiI3BwLXBhdGgtMSJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNDkuODYzNTAzLDEyMy4zNjMgQzE0OS44NjM1MDMsMTU0LjU5MDY5OCAxMjQuNTU5MjI2LDE3OS45MDEgOTMuMzIyMzIyMSwxNzkuOTAxIEM2Mi4xMTA4NTI3LDE3OS45MTA1MzkgMzYuNzg3NSwxNTQuNTkzODc4IDM2Ljc4NzUsMTIzLjM2MyBDMzYuNzg3NSw5Mi4xMzg0ODE3IDYyLjExMDg1MjcsNjYuODI1IDkzLjMxOTE0MjgsNjYuODI1IEMxMjQuNTU5MjI2LDY2LjgyNSAxNDkuODYzNTAzLDkyLjEzODQ4MTcgMTQ5Ljg2MzUwMywxMjMuMzYzIixmaWxsOiIjRkZENUJCIixtYXNrOiJ1cmwoI3BwLW1hc2stMSkifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOTkuNDUzNjY5MiwyOC43MjQ4ODM2IEM5My41NzYzODE0LDI3LjgzMjEwNjcgODguODA1ODU1NiwyNy44NTA1Nzc5IDg0LjcxNTkyNDgsMjcuMjkwMjgzNSBDNzkuNjU1OTg3MSwyNi45MTE2MjI5IDcwLjA4NjMxMjMsMjUuNjI0NzkyNyA2Ny4zMTk0MDczLDIxLjI2MjUgQzY3LjMxOTQwNzMsMjEuMjYyNSA2Ny4yNTU4MDAzLDIxLjY1MDM5NjIgNjcuMjExMjc1NCwyMi4zNjc2OTYzIEM2Ny4xMDMxNDM1LDIzLjk3MTYxNjIgNjcuMDkzNjAyNCwyNy4xODI1MzQ1IDY4LjA2OTk3MDEsMzEuMzE3MDE1MiBDNjguOTk4NjMyNCwzNC44MTExNTkzIDcwLjM0MDc0MDMsMzguMzgyMjY3IDcyLjI0NTc3MDMsNDEuNzcxNzQwNyBDNzIuODU2Mzk3Niw0Mi44NDMwNzMgNzMuNTUyODk0NCw0My45MjY3MTk1IDc0LjMxOTM1ODksNDUuMDI1NzU4NyBDNzkuMDQyMTc5NCw1MS42NjAwMTQ3IDg2LjUzNTA4NTMsNTYuMzk0ODEwOSA5Ny43OTk4ODY5LDU4Ljg1NDU2NTIgQzExMi41Njk0MzUsNjIuMDcxNjQwNyAxMjYuNTg1MjQsNjQuMzg2NzAzNiAxMzcuNDYyMDM4LDc3Ljc5Mzc1IEMxMzcuNDg3NDgxLDc3Ljc0MTQxNDggMTM3LjUwMDIwMyw3Ny42NzM2ODY5IDEzNy41Mjg4MjYsNzcuNjE1MTk0NiBDMTM5LjUyOTI2Niw3MC4zNDM2ODA2IDEzMS45NTA0OTEsMzMuNjI1OTIxIDk5LjQ1MzY2OTIsMjguNzI0ODgzNiIsZmlsbDoiI0NGREVCNiIsbWFzazoidXJsKCNwcC1tYXNrLTEpIn0pKSkpKX07RU4uZGlzcGxheU5hbWU9IlNWR1BsYXlsaXN0UGxhY2Vob2xkZXIiO3ZhciBPTj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXBsYXlsaXN0LXBsYWNlaG9sZGVyIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1wbGF5bGlzdC1wbGFjZWhvbGRlciIpOiJJY29ucy1wbGF5bGlzdC1wbGFjZWhvbGRlciIsb25DbGljazplLm9uQ2xpY2ssc3ZnOkVOfSl9O09OLmRpc3BsYXlOYW1lPSJQbGF5bGlzdFBsYWNlaG9sZGVyIixPTi5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBrTj1PTixDTj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tcGx1cyIsdmlld0JveDoiMCAwIDE2IDE2In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOSw3IEw5LDMgTDcsMyBMNyw3IEwzLDcgTDMsOSBMNyw5IEw3LDEzIEw5LDEzIEw5LDkgTDEzLDkgTDEzLDcgTDksNyBaIn0pKSl9O0NOLmRpc3BsYXlOYW1lPSJTVkdQbHVzIjt2YXIgeE49ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1wbHVzIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1wbHVzIik6Ikljb25zLXBsdXMiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpDTn0pfTt4Ti5kaXNwbGF5TmFtZT0iUGx1cyIseE4ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgU049eE4sRE49ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXByb2ZpbGUiLHZpZXdCb3g6IjAgMCAxNSAxMyJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTguOTgwNjY5NTEsNy40NDY3MDE0MSBDOS40NTM0MzI1Nyw2Ljk0MTE0NTUzIDkuODExNDIwNzksNi4xNDg2NTI1NCAxMC4xODAzMzk5LDUuMjExMzI0NjIgQzEwLjM5MzQ5MzIsNC42NzAyNDMyIDEwLjM1NTIzNDksNC4yMDU2NzgzNCAxMC4zNTUyMzQ5LDMuNTQ3MDg5MzMgQzEwLjM1NTIzNDksMy4wNjA2NjI2IDEwLjQ0ODE0NzksMi4yNzkxMDA1NCAxMC4zMjc5MDc2LDEuODUwMDYxMjMgQzkuOTE3OTk3NDMsMC4zOTg5NzkyMzIgOC44OTA0ODkyNywwIDcuNjgyNjIwNjQsMCBDNi40NzQ3NTIwMSwwIDUuNDQ0NTExMTIsMC40MDE3MTE5NjYgNS4wMzczMzM2OCwxLjg1NTUyNjcgQzQuOTE3MDkzMzYsMi4yODE4MzMyOCA1LjAxMDAwNjM0LDMuMDYzMzk1MzMgNS4wMTAwMDYzNCwzLjU0NzA4OTMzIEM1LjAxMDAwNjM0LDQuMjA4NDExMDcgNC45NzQ0ODA3OSw0LjY3Mjk3NTkzIDUuMTg3NjM0MDgsNS4yMTY3OTAwOSBDNS41NTkyODU5Niw2LjE1Njg1MDc0ICAgNS45MTE4MDg3MSw2Ljk0NjYxMSA2LjM4MTgzOTA0LDcuNDUyMTY2ODggQzQuNTQ4MTc0MjEsNy43ODgyOTMyMiAzLjMxMDI0NTUsOC43NDQ3NTAyOCAyLjQ3Njc2MTQ5LDkuMTE2NDAyMTcgQzAuNzQ2OTQwNTc0LDkuODg3MDMzMjggMC43Mzg3NDIzNzEsMTAuNzMxNDQ4MiAwLjczODc0MjM3MSwxMC43MzE0NDgyIEwwLjczODc0MjM3MSwxMi4xNjYxMzM4IEwxNC42NjIwMjQ1LDEyLjE2MzQwMTEgTDE0LjY2MjAyNDUsMTAuNzMxNDQ4MiBDMTQuNjYyMDI0NSwxMC43MzE0NDgyIDE0LjY1MzgyNjMsOS44ODQzMDA1NSAxMi45MTg1Mzk5LDkuMTEzNjY5NDMgQzEyLjA3Njg1NzcsOC43MzkyODQ4MSAxMC44Mjc5OTgsNy43NzczNjIyOCA4Ljk4MDY2OTUxLDcuNDQ2NzAxNDEgWiJ9KSl9O0ROLmRpc3BsYXlOYW1lPSJTVkdQcm9maWxlIjt2YXIgVE49ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1wcm9maWxlIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1wcm9maWxlIik6Ikljb25zLXByb2ZpbGUiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpETn0pfTtUTi5kaXNwbGF5TmFtZT0iUHJvZmlsZSIsVE4ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgTU49VE4sUE49ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXJlZnJlc2giLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7aWQ6IlN5bWJvbHMiLHN0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNiw5IEw2LDE2IEwyLDEyLjUgTDYsOSBaIE0xMCwwIEwxNCwzLjUgTDEwLDcgTDEwLDAgWiBNMTAsMiBMMTAsNSBDNC42NjY2NjY2Nyw1IDIsNi4zMzMzMzMzMyAyLDkgQzIsNC4zMzMzMzMzMyA0LjY2NjY2NjY3LDIgMTAsMiBaIE02LDE0IEw2LDExIEMxMS4zMzMzMzMzLDExIDE0LDkuNjY2NjY2NjcgMTQsNyBDMTQsMTEuNjY2NjY2NyAxMS4zMzMzMzMzLDE0IDYsMTQgWiJ9KSkpfTtQTi5kaXNwbGF5TmFtZT0iU1ZHUmVmcmVzaCI7dmFyIE5OPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tcmVmcmVzaCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtcmVmcmVzaCIpOiJJY29ucy1yZWZyZXNoIixvbkNsaWNrOmUub25DbGljayxzdmc6UE59KX07Tk4uZGlzcGxheU5hbWU9IlJlZnJlc2giLE5OLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGpOPU5OLExOPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1yaWdodC1kaXJlY3Rpb24tYXJyb3ciLHZpZXdCb3g6IjAgMCAxMiAyMiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKC02MDcuMDAwMDAwLCAtMjI5LjAwMDAwMCkiLGZpbGw6IiNCQUI3QjYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDQwMC4wMDAwMDAsIDIxNC4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjE4LjEzNzM3MiwyNS43MDg2NDU2IEwyMTguMjIyMTY5LDI1LjYyMzg0ODIgTDIwNy41OTgzMjEsMTUgTDIwNywxNS41OTgzMjExIEwyMTcuMTEwMzI1LDI1LjcwODY0NTYgTDIwNywzNS44MTg5NzAyIEwyMDcuNTk4MzIxLDM2LjQxNzI5MTMgTDIxOC4yMjIxNjksMjUuNzkzNDQzMSBMMjE4LjEzNzM3MiwyNS43MDg2NDU2IFoifSkpKSkpfTtMTi5kaXNwbGF5TmFtZT0iU1ZHUmlnaHREaXJlY3Rpb25BcnJvdyI7dmFyIFJOPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tcmlnaHQtZGlyZWN0aW9uLWFycm93IixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1yaWdodC1kaXJlY3Rpb24tYXJyb3ciKToiSWNvbnMtcmlnaHQtZGlyZWN0aW9uLWFycm93IixvbkNsaWNrOmUub25DbGljayxzdmc6TE59KX07Uk4uZGlzcGxheU5hbWU9IlJpZ2h0RGlyZWN0aW9uQXJyb3ciLFJOLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIElOPVJOLEFOPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1zZXJ2ZXItZXJyb3IiLHZpZXdCb3g6IjAgMCA4MCA1MCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKC02NDcuMDAwMDAwLCAtMTA3MC4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgxMDAuMDAwMDAwLCA5NzIuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoNDM2LjAwMDAwMCwgOTkuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMTEyLjAwMDAwMCwgMC4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHtmaWxsOiIjRkZGRkZGIix4OiIwLjA3MTU2MDUxMTkiLHk6IjAuMTY5MTEwMDczIix3aWR0aDoiNjAuNDg3NzgzIixoZWlnaHQ6IjQxLjM1MDQ4OCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02LjcxOTc3NDk0LDguNzg5MzQ1MDIgQzcuNjc2MTEyMTcsOC43ODkzNDUwMiA4LjQ1MTM3NjY3LDguMDE3NDIyMTggOC40NTEzNzY2Nyw3LjA2NTIwNzA5IEM4LjQ1MTM3NjY3LDYuMTEyOTkyIDcuNjc2MTEyMTcsNS4zNDEwNjkxNiA2LjcxOTc3NDk0LDUuMzQxMDY5MTYgQzUuNzYzNDM3NzEsNS4zNDEwNjkxNiA0Ljk4ODE3MzIxLDYuMTEyOTkyIDQuOTg4MTczMjEsNy4wNjUyMDcwOSBDNC45ODgxNzMyMSw4LjAxNzQyMjE4IDUuNzYzNDM3NzEsOC43ODkzNDUwMiA2LjcxOTc3NDk0LDguNzg5MzQ1MDIgWiBNNi43MTk3NzQ5NCwyMi41ODI0NDg1IEM3LjY3NjExMjE3LDIyLjU4MjQ0ODUgOC40NTEzNzY2NywyMS44MTA1MjU2IDguNDUxMzc2NjcsMjAuODU4MzEwNSBDOC40NTEzNzY2NywxOS45MDYwOTU1IDcuNjc2MTEyMTcsMTkuMTM0MTcyNiA2LjcxOTc3NDk0LDE5LjEzNDE3MjYgQzUuNzYzNDM3NzEsMTkuMTM0MTcyNiA0Ljk4ODE3MzIxLDE5LjkwNjA5NTUgNC45ODgxNzMyMSwyMC44NTgzMTA1IEM0Ljk4ODE3MzIxLDIxLjgxMDUyNTYgNS43NjM0Mzc3MSwyMi41ODI0NDg1IDYuNzE5Nzc0OTQsMjIuNTgyNDQ4NSBaIE02LjcxOTc3NDk0LDM2LjM3NTU1MTkgQzcuNjc2MTEyMTcsMzYuMzc1NTUxOSA4LjQ1MTM3NjY3LDM1LjYwMzYyOTEgOC40NTEzNzY2NywzNC42NTE0MTQgQzguNDUxMzc2NjcsMzMuNjk5MTk4OSA3LjY3NjExMjE3LDMyLjkyNzI3NjEgNi43MTk3NzQ5NCwzMi45MjcyNzYxIEM1Ljc2MzQzNzcxLDMyLjkyNzI3NjEgNC45ODgxNzMyMSwzMy42OTkxOTg5IDQuOTg4MTczMjEsMzQuNjUxNDE0IEM0Ljk4ODE3MzIxLDM1LjYwMzYyOTEgNS43NjM0Mzc3MSwzNi4zNzU1NTE5IDYuNzE5Nzc0OTQsMzYuMzc1NTUxOSBaIE0xLjc5NTY5ODQ0LDAuMTY4NjU1MzY3IEw1OC44MzUyMDU2LDAuMTY4NjU1MzY3IEw1OC44MzUyMDU2LDAuMTY4NjU1MzY3IEM1OS43ODc0MjA3LDAuMTY4NjU1MzY3IDYwLjU1OTM0MzUsMC45NDA1NzgyMTIgNjAuNTU5MzQzNSwxLjg5Mjc5MzMgTDYwLjU1OTM0MzUsMTIuMjM3NjIwOSBMNjAuNTU5MzQzNSwxMi4yMzc2MjA5IEM2MC41NTkzNDM1LDEzLjE4OTgzNiA1OS43ODc0MjA3LDEzLjk2MTc1ODggNTguODM1MjA1NiwxMy45NjE3NTg4IEwxLjc5NTY5ODQ0LDEzLjk2MTc1ODggTDEuNzk1Njk4NDQsMTMuOTYxNzU4OCBDMC44NDM0ODMzNTcsMTMuOTYxNzU4OCAwLjA3MTU2MDUxMTksMTMuMTg5ODM2IDAuMDcxNTYwNTExOSwxMi4yMzc2MjA5IEwwLjA3MTU2MDUxMTksMS44OTI3OTMzIEwwLjA3MTU2MDUxMTksMS44OTI3OTMzIEMwLjA3MTU2MDUxMTksMC45NDA1NzgyMTIgMC44NDM0ODMzNTcsMC4xNjg2NTUzNjcgMS43OTU2OTg0NCwwLjE2ODY1NTM2NyBaIE0xLjc5NTY5ODQ0LDEzLjk2MTc1ODggTDU4LjgzNTIwNTYsMTMuOTYxNzU4OCBMNTguODM1MjA1NiwxMy45NjE3NTg4IEM1OS43ODc0MjA3LDEzLjk2MTc1ODggNjAuNTU5MzQzNSwxNC43MzM2ODE3IDYwLjU1OTM0MzUsMTUuNjg1ODk2NyBMNjAuNTU5MzQzNSwyNi4wMzA3MjQzIEw2MC41NTkzNDM1LDI2LjAzMDcyNDMgQzYwLjU1OTM0MzUsMjYuOTgyOTM5NCA1OS43ODc0MjA3LDI3Ljc1NDg2MjMgNTguODM1MjA1NiwyNy43NTQ4NjIzIEwxLjc5NTY5ODQ0LDI3Ljc1NDg2MjMgTDEuNzk1Njk4NDQsMjcuNzU0ODYyMyBDMC44NDM0ODMzNTcsMjcuNzU0ODYyMyAwLjA3MTU2MDUxMTksMjYuOTgyOTM5NCAwLjA3MTU2MDUxMTksMjYuMDMwNzI0MyBMMC4wNzE1NjA1MTE5LDE1LjY4NTg5NjcgTDAuMDcxNTYwNTExOSwxNS42ODU4OTY3IEMwLjA3MTU2MDUxMTksMTQuNzMzNjgxNyAwLjg0MzQ4MzM1NywxMy45NjE3NTg4IDEuNzk1Njk4NDQsMTMuOTYxNzU4OCBaIE0xLjc5NTY5ODQ0LDI3Ljc1NDg2MjMgTDU4LjgzNTIwNTYsMjcuNzU0ODYyMyBMNTguODM1MjA1NiwyNy43NTQ4NjIzIEM1OS43ODc0MjA3LDI3Ljc1NDg2MjMgNjAuNTU5MzQzNSwyOC41MjY3ODUxIDYwLjU1OTM0MzUsMjkuNDc5MDAwMiBMNjAuNTU5MzQzNSwzOS44MjM4Mjc4IEw2MC41NTkzNDM1LDM5LjgyMzgyNzggQzYwLjU1OTM0MzUsNDAuNzc2MDQyOSA1OS43ODc0MjA3LDQxLjU0Nzk2NTcgNTguODM1MjA1Niw0MS41NDc5NjU3IEwxLjc5NTY5ODQ0LDQxLjU0Nzk2NTcgTDEuNzk1Njk4NDQsNDEuNTQ3OTY1NyBDMC44NDM0ODMzNTcsNDEuNTQ3OTY1NyAwLjA3MTU2MDUxMTksNDAuNzc2MDQyOSAwLjA3MTU2MDUxMTksMzkuODIzODI3OCBMMC4wNzE1NjA1MTE5LDI5LjQ3OTAwMDIgTDAuMDcxNTYwNTExOSwyOS40NzkwMDAyIEMwLjA3MTU2MDUxMTksMjguNTI2Nzg1MSAwLjg0MzQ4MzM1NywyNy43NTQ4NjIzIDEuNzk1Njk4NDQsMjcuNzU0ODYyMyBaIixzdHJva2U6IiNBOEEwQTAiLHN0cm9rZVdpZHRoOiIwLjg2MjA2ODk2NiIsc3Ryb2tlTGluZWNhcDoic3F1YXJlIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTU0LjU0NTQ1NDUsNC4zMDY1ODY0IEw1NC41NDU0NTQ1LDkuODIzODI3NzggTDU0LjU0NTQ1NDUsNC4zMDY1ODY0IFogTTUxLjA4MjI1MTEsNC4zMDY1ODY0IEw1MS4wODIyNTExLDkuODIzODI3NzggTDUxLjA4MjI1MTEsNC4zMDY1ODY0IFogTTQ3LjYxOTA0NzYsNC4zMDY1ODY0IEw0Ny42MTkwNDc2LDkuODIzODI3NzggTDQ3LjYxOTA0NzYsNC4zMDY1ODY0IFogTTQ0LjE1NTg0NDIsNC4zMDY1ODY0IEw0NC4xNTU4NDQyLDkuODIzODI3NzggTDQ0LjE1NTg0NDIsNC4zMDY1ODY0IFoiLHN0cm9rZToiI0E4QTBBMCIsc3Ryb2tlV2lkdGg6IjAuODYyMDY4OTY2IixzdHJva2VMaW5lY2FwOiJzcXVhcmUifSksRS5hLmNyZWF0ZUVsZW1lbnQoImVsbGlwc2UiLHtmaWxsOiIjRkZGRkZGIixjeDoiNTYuNDUwMjE2NSIsY3k6IjI2LjIwNjg5NjYiLHJ4OiIxMy44NTI4MTM5IixyeToiMTMuNzkzMTAzNCJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik01OC41MjgxMzg1LDM0LjA4NjU1MTcgQzUzLjk1OTQ4MDUsMzIuOTk5MzEwMyA1MC41NjI3NzA2LDI4LjkwNjg5NjYgNTAuNTYyNzcwNiwyNC4wMjQ4Mjc2IEM1MC41NjI3NzA2LDE5Ljc4IDUzLjEzMDczNTksMTYuMTMyNDEzOCA1Ni44MDM4MDk1LDE0LjUzNzU4NjIgTDU2Ljc5NjUzNjgsMjUuNTU1MTcyNCBMNjUuMTA4MjI1MSwyNS41NTUxNzI0IEw2NS4xMDE2NDUsMTQuNTM4Mjc1OSBDNjguNzc0NzE4NiwxNi4xMzMxMDM0IDcxLjM0MTk5MTMsMTkuNzgwMzQ0OCA3MS4zNDE5OTEzLDI0LjAyNDgyNzYgQzcxLjM0MTk5MTMsMjguOTA2ODk2NiA2Ny45NDUyODE0LDMyLjk5OTMxMDMgNjMuMzc2NjIzNCwzNC4wODY1NTE3IEw2My4zNzY2MjM0LDQ3LjI5NTUxNzIgTDU4LjUyODEzODUsNDcuMjk1NTE3MiBMNTguNTI4MTM4NSwzNC4wODY1NTE3IFoiLHN0cm9rZToiI0E4QTBBMCIsc3Ryb2tlV2lkdGg6IjAuODYyMDY4OTY2IixmaWxsOiIjRkZGRkZGIix0cmFuc2Zvcm06InRyYW5zbGF0ZSg2MC45NTIzODEsIDMwLjkxNjU1Mikgcm90YXRlKC00NS4wMDAwMDApIHRyYW5zbGF0ZSgtNjAuOTUyMzgxLCAtMzAuOTE2NTUyKSAifSkpKSkpKSl9O0FOLmRpc3BsYXlOYW1lPSJTVkdTZXJ2ZXJFcnJvciI7dmFyIEZOPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tc2VydmVyLWVycm9yIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1zZXJ2ZXItZXJyb3IiKToiSWNvbnMtc2VydmVyLWVycm9yIixvbkNsaWNrOmUub25DbGljayxzdmc6QU59KX07Rk4uZGlzcGxheU5hbWU9IlNlcnZlckVycm9yIixGTi5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBCTj1GTix6Tj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tc3BvdGlmeSIsdmlld0JveDoiMCAwIDI0IDI0In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtmaWxsOiIjMUVENzYwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTkuMDk4MzcwMSwxMC42MzgyNzkxIEMxNS4yMzAxNzgsOC4zNDExODExNSA4Ljg1MDAzNzU1LDguMTI5ODY0MzkgNS4xNTcyOTQ5Myw5LjI1MDU4NTI3IEM0LjU2NDMzNTg4LDkuNDMwNjI4NTYgMy45MzcyNzYzOCw5LjA5NTgwODEyIDMuNzU3NTg2NDcsOC41MDI4NDkwNyBDMy41Nzc4OTY1NSw3LjkwOTUzNjY0IDMuOTEyMzYzNjIsNy4yODI4MzA1MSA0LjUwNTg1MjczLDcuMTAyNjEwNTQgQzguNzQ0NTU1ODUsNS44MTU5ODEyNyAxNS43OTA5ODAyLDYuMDY0NDAyMTQgMjAuMjQ0MDAzNyw4LjcwNzgwNTEyIEMyMC43Nzc0MTk1LDkuMDI0NDI2ODcgMjAuOTUyNTE1Niw5LjcxMzMyNjU2IDIwLjYzNjI0NzIsMTAuMjQ1NjgyMiBDMjAuMzE5ODAyMSwxMC43NzkwOTggMTkuNjMwNTQ5MSwxMC45NTQ5MDA4IDE5LjA5ODM3MDEsMTAuNjM4Mjc5MSBNMTguOTcxNjg2LDE0LjA0MDcyNjIgQzE4LjcwMDQ3MjYsMTQuNDgxMDI4MyAxOC4xMjQ2NTIxLDE0LjYxOTAyMDMgMTcuNjg0ODgwMSwxNC4zNDg2OTAzIEMxNC40NjAwMDI3LDEyLjM2NjQ0NzMgOS41NDI2NDc2NCwxMS43OTIyMTcgNS43MjcyODQ3NywxMi45NTAzOTUzIEM1LjIzMjU2MzI4LDEzLjA5OTg3MTkgNC43MDk5MjUzNSwxMi44MjA4ODQzIDQuNTU5NzQyMDQsMTIuMzI3MDQ2MiBDNC40MTA2MTg4NCwxMS44MzIzMjQ3IDQuNjg5NzgzMTIsMTEuMzEwNzQ2OSA1LjE4MzYyMTE4LDExLjE2MDIxMDMgQzkuNTQxOTQwOSw5LjgzNzcxMzY4IDE0Ljk2MDAyNDcsMTAuNDc4MjAxMyAxOC42NjM4OTg2LDEyLjc1NDQ1MDMgQzE5LjEwMzY3MDcsMTMuMDI1MzEwMyAxOS4yNDIwMTYsMTMuNjAxMzA3NSAxOC45NzE2ODYsMTQuMDQwNzI2MiBNMTcuNTAzNDIzMywxNy4zMDgxODUgQzE3LjI4NzY4OTQsMTcuNjYxNzM0MiAxNi44MjcyNDUsMTcuNzcyNTE2NSAxNi40NzQ5MzI2LDE3LjU1NzEzNTkgQzEzLjY1NzE0MDMsMTUuODM0Nzk4NCAxMC4xMTAxNjM5LDE1LjQ0NTkxMTkgNS45MzMxMjQyNSwxNi40MDAwMTc3IEM1LjUzMDYzMjk4LDE2LjQ5MjI0NzkgNS4xMjkzNzg1MSwxNi4yMzk5Mzk5IDUuMDM3Njc4MzQsMTUuODM3NjI1MyBDNC45NDU0NDgxMiwxNS40MzUxMzQxIDUuMTk2Njk1OTcsMTUuMDMzODc5NiA1LjYwMDI0NzM2LDE0Ljk0MjAwMjcgQzEwLjE3MTI5NzMsMTMuODk3MDgwMyAxNC4wOTIzMTg2LDE0LjM0Njc0NjggMTcuMjU1MTc5MSwxNi4yNzk2OTQzIEMxNy42MDc4NDQ5LDE2LjQ5NDg5ODIgMTcuNzE4OTgwNSwxNi45NTU2OTU5IDE3LjUwMzQyMzMsMTcuMzA4MTg1IE0xMiwwIEM1LjM3MjY3NTQ3LDAgMS40MjEwODU0N2UtMTQsNS4zNzI0OTg3OSAxLjQyMTA4NTQ3ZS0xNCwxMS45OTk4MjMzIEMxLjQyMTA4NTQ3ZS0xNCwxOC42Mjc4NTQ2IDUuMzcyNjc1NDcsMjQgMTIsMjQgQzE4LjYyNzUwMTIsMjQgMjQsMTguNjI3ODU0NiAyNCwxMS45OTk4MjMzIEMyNCw1LjM3MjQ5ODc5IDE4LjYyNzUwMTIsMCAxMiwwIn0pKSl9O3pOLmRpc3BsYXlOYW1lPSJTVkdTcG90aWZ5Ijt2YXIgS049ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi1zcG90aWZ5IixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy1zcG90aWZ5Iik6Ikljb25zLXNwb3RpZnkiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzp6Tn0pfTtLTi5kaXNwbGF5TmFtZT0iU3BvdGlmeSIsS04ucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgcU49S04sVk49InJlZCIsVU49ImdyZWVuIixXTj0iYmx1ZSIsWU49Im9yYW5nZSIsSE49InllbGxvdyIsR049ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXN0YXR1cy1pY29uIix2aWV3Qm94OiIwIDAgMTIgMTIifSxFLmEuY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7Y3g6IjYiLGN5OiI2IixyOiI2IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O0dOLmRpc3BsYXlOYW1lPSJTVkdTdGF0dXNJY29uIjt2YXIgUU49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGF0dXMsbj1lLmNsYXNzTmFtZSxyPWUub25DbGljaztyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXN0YXR1cy1pY29uIixjbGFzc05hbWU6VHQoKSgiSWNvbnMtc3RhdHVzIiwiSWNvbnMtc3RhdHVzLSIuY29uY2F0KHQpLG4pLG9uQ2xpY2s6cixzdmc6R059KX07UU4uZGlzcGxheU5hbWU9IlN0YXR1c0ljb24iLFFOLnByb3BUeXBlcz17c3RhdHVzOlYuYS5vbmVPZihbVk4sVU4sV04sWU4sSE5dKS5pc1JlcXVpcmVkLGNsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBKTj1RTixaTj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tc3RvcCIsdmlld0JveDoiMCAwIDggOCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoLTExMDUuMDAwMDAwLCAtMjI0LjAwMDAwMCkifSxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6IjExMDUiLHk6IjIyNCIsd2lkdGg6IjgiLGhlaWdodDoiOCJ9KSkpfTtaTi5kaXNwbGF5TmFtZT0iU1ZHU3RvcCI7dmFyICROPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tc3RvcCIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtc3RvcCIpOiJJY29ucy1zdG9wIixvbkNsaWNrOmUub25DbGljayxzdmc6Wk59KX07JE4uZGlzcGxheU5hbWU9IlN0b3AiLCROLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIFhOPSROLGVqPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi1zdWNjZXNzLWNoZWNrbWFyayIsdmlld0JveDoiMCAwIDEwNiAxMDYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImNpcmNsZSIse2ZpbGw6IiM3NkE0MEIiLGN4OiI1MyIsY3k6IjUzIixyOiI1MyJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zMi41NjUgNTEuMTA1bDEzLjUzOCAxMC4yMSAyOC40Mi0zNy4yMDdjMS41NjYtMi4yMzYgNC42NDgtMi43OCA2Ljg4My0xLjIxNGwuMzc2LjI3N2MyLjIzNSAxLjU2NiAyLjc4IDQuNjQ3IDEuMjEzIDYuODgzTDUxLjk4MiA3Ny44MjdjLTEuMTcgMS42NzItMi4zMzMgMi4yNTMtNC4zNzIgMi4zODgtMi4wNC4xMzUtMy4yNzMtLjYyMi00LjQ5Ny0xLjg0NkwyNS40NjYgNTguMTljLTEuOTU1LTEuOTUyLTEuOTU1LTUuMTIgMC03LjA3NGwuMDI0LS4wMTJjMS45NTQtMS45NTQgNS4xMi0xLjk1NCA3LjA3NSAweiIsZmlsbDoiI0ZGRiJ9KSkpfTtlai5kaXNwbGF5TmFtZT0iU1ZHU3VjY2Vzc0NoZWNrbWFyayI7dmFyIHRqPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tc3VjY2Vzcy1jaGVja21hcmsiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXN1Y2Nlc3MtY2hlY2ttYXJrIik6Ikljb25zLXN1Y2Nlc3MtY2hlY2ttYXJrIixvbkNsaWNrOmUub25DbGljayxzdmc6ZWp9KX07dGouZGlzcGxheU5hbWU9IlN1Y2Nlc3NDaGVja21hcmsiLHRqLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIG5qPXRqLHJqPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi10aHJlZS1kb3RzIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIix2aWV3Qm94OiIwIDAgMTYgMTYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMiwxMCBDMC44OTU0MzA1LDEwIDAsOS4xMDQ1Njk1IDAsOCBDMCw2Ljg5NTQzMDUgMC44OTU0MzA1LDYgMiw2IEMzLjEwNDU2OTUsNiA0LDYuODk1NDMwNSA0LDggQzQsOS4xMDQ1Njk1IDMuMTA0NTY5NSwxMCAyLDEwIFogTTgsMTAgQzYuODk1NDMwNSwxMCA2LDkuMTA0NTY5NSA2LDggQzYsNi44OTU0MzA1IDYuODk1NDMwNSw2IDgsNiBDOS4xMDQ1Njk1LDYgMTAsNi44OTU0MzA1IDEwLDggQzEwLDkuMTA0NTY5NSA5LjEwNDU2OTUsMTAgOCwxMCBaIE0xNCwxMCBDMTIuODk1NDMwNSwxMCAxMiw5LjEwNDU2OTUgMTIsOCBDMTIsNi44OTU0MzA1IDEyLjg5NTQzMDUsNiAxNCw2IEMxNS4xMDQ1Njk1LDYgMTYsNi44OTU0MzA1IDE2LDggQzE2LDkuMTA0NTY5NSAxNS4xMDQ1Njk1LDEwIDE0LDEwIFoifSkpKSl9O3JqLmRpc3BsYXlOYW1lPSJTVkdUaHJlZURvdHMiO3ZhciBvaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXRocmVlLWRvdHMiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXRocmVlLWRvdHMiKToiSWNvbnMtdGhyZWUtZG90cyIsb25DbGljazplLm9uQ2xpY2ssc3ZnOnJqfSl9O29qLmRpc3BsYXlOYW1lPSJUaHJlZURvdHMiLG9qLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIGFqPW9qLGlqPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi10cmFja3MtY29tcGxldGUtY2hlY2ttYXJrIix2aWV3Qm94OiIwIDAgNTMgNTQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik01MC4xNDk2MTc3LDI3LjA1MDYzMDQgQzUwLjE0OTYxNzcsMTMuNzgyOTY3NSAzOS42MjEzMjEzLDMuMDQwNDI2MjcgMjYuNjQ5NjE3NywzLjA0MDQyNjI3IEMxMy42Nzc5MTQxLDMuMDQwNDI2MjcgMy4xNDk2MTc3NCwxMy43ODI5Njc1IDMuMTQ5NjE3NzQsMjcuMDUwNjMwNCBDMy4xNDk2MTc3NCw0MC4zMTY5MjA1IDEzLjY3ODY1MzQsNTEuMDYwODM0NCAyNi42NDk2MTc3LDUxLjA2MDgzNDQgQzM5LjYyMDU4Miw1MS4wNjA4MzQ0IDUwLjE0OTYxNzcsNDAuMzE2OTIwNSA1MC4xNDk2MTc3LDI3LjA1MDYzMDQgWiBNNTMuMTQ5NjE3NywyNy4wNTA2MzA0IEM1My4xNDk2MTc3LDQxLjk2MDM2MDcgNDEuMjkxMTUzNCw1NC4wNjA4MzQ0IDI2LjY0OTYxNzcsNTQuMDYwODM0NCBDMTIuMDA4MDgyLDU0LjA2MDgzNDQgMC4xNDk2MTc3NDQsNDEuOTYwMzYwNyAwLjE0OTYxNzc0NCwyNy4wNTA2MzA0IEMwLjE0OTYxNzc0NCwxMi4xMzk0ODk1IDEyLjAwNzM4MjIsMC4wNDA0MjYyNjk0IDI2LjY0OTYxNzcsMC4wNDA0MjYyNjk0IEM0MS4yOTE4NTMyLDAuMDQwNDI2MjY5NCA1My4xNDk2MTc3LDEyLjEzOTQ4OTUgNTMuMTQ5NjE3NywyNy4wNTA2MzA0IFoifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBvbHlnb24iLHtwb2ludHM6IjE3LjkyMDUwNzMgMjYuODQyOTY0NiAxNS43OTkxODY5IDI4Ljk2NDI4NDkgMjQuMDUzNTAyNyAzNy4yMTg2MDA3IDM5LjY1ODIzMDIgMjEuNjEzODczMSAzNy41MzY5MDk4IDE5LjQ5MjU1MjggMjQuMDUzNTAyNyAzMi45NzU5NiJ9KSkpfTtpai5kaXNwbGF5TmFtZT0iU1ZHVHJhY2tzQ29tcGxldGVDaGVja21hcmsiO3ZhciB1aj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXRyYWNrcy1jb21wbGV0ZS1jaGVja21hcmsiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXRyYWNrcy1jb21wbGV0ZS1jaGVja21hcmsiKToiSWNvbnMtdHJhY2tzLWNvbXBsZXRlLWNoZWNrbWFyayIsb25DbGljazplLm9uQ2xpY2ssc3ZnOmlqfSl9O3VqLmRpc3BsYXlOYW1lPSJUcmFja3NDb21wbGV0ZUNoZWNrbWFyayIsdWoucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgc2o9dWosbGo9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXRyYWNrcy1lbXB0eSIsd2lkdGg6IjYwcHgiLGhlaWdodDoiNjBweCIsdmlld0JveDoiMCAwIDYwIDYwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoLTgwOC4wMDAwMDAsIC04NjAuMDAwMDAwKSIsc3Ryb2tlOiIjQThBMEEwIixzdHJva2VXaWR0aDoiMS41In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSg4MDguMDAwMDAwLCA4NjAuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTExLDUgTDExLDU2IEw0OC41LDU2IEw0OC41LDE0IEwzOS41LDUgTDExLDUgWiBNMzkuNSw1IEwzOS41LDE0IEw0OC41LDE0IE0yMCw0My45OTk2MjUgTDM5LjUsNDMuOTk5NjI1IEwyMCw0My45OTk2MjUgWiBNMjAsMzcuOTk5NjI1IEwzOS41LDM3Ljk5OTYyNSBMMjAsMzcuOTk5NjI1IFogTTI5LDMxLjk5OTYyNSBMMzkuNSwzMS45OTk2MjUgTDI5LDMxLjk5OTYyNSBaIE0yMC43NSwxOS45OTk2MjUgTDIwLjc1LDMxLjI0OTYyNSBMMjguMjUsMjUuNjI0NjI1IEwyMC43NSwxOS45OTk2MjUgWiJ9KSkpKSl9O2xqLmRpc3BsYXlOYW1lPSJTVkdUcmFja3NFbXB0eSI7dmFyIGNqPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tdHJhY2tzLWVtcHR5IixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy10cmFja3MtZW1wdHkiKToiSWNvbnMtdHJhY2tzLWVtcHR5IixvbkNsaWNrOmUub25DbGljayxzdmc6bGp9KX07Y2ouZGlzcGxheU5hbWU9IlRyYWNrc0VtcHR5Iixjai5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBmaj1jaixkaj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tdHJhbnNwYXJlbnQtbG9nbyIsdmlld0JveDoiMCAwIDYwIDYwIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImRlZnMiLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInJhZGlhbEdyYWRpZW50Iix7Y3g6IjUwJSIsY3k6IjUwJSIsZng6IjUwJSIsZnk6IjUwJSIscjoiNzAuNzEwNjc4MSUiLGlkOiJyYWRpYWxHcmFkaWVudFRyYW5zcGFyZW50TG9nbyJ9LEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7c3RvcENvbG9yOiIjRkZGRkZGIixvZmZzZXQ6IjAlIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJzdG9wIix7c3RvcENvbG9yOiIjRkJGOEY4IixvZmZzZXQ6IjEwMCUifSkpKSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHtmaWxsOiJ1cmwoI3JhZGlhbEdyYWRpZW50VHJhbnNwYXJlbnRMb2dvKSIseDoiMCIseToiMCIscng6IjIifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMzIuMTA5NTc5MiwxOC4xMTUxIEMzMi4zODA1NzkyLDE4LjU5MTEgMzIuNjkwNTc5MiwxOS4wNzMxIDMzLjAzMDU3OTIsMTkuNTYxMSBDMzUuMTMwNTc5MiwyMi41MTAxIDM4LjQ2MDU3OTIsMjQuNjE1MSA0My40NjY1NzkyLDI1LjcwNzEgQzQ5LjU0NjU3OTIsMjcuMDMyMSA1NS4zMzc1NzkyLDI4LjAyMDEgNjAuMDAwNTc5MiwzMi44OTIxIEw2MC4wMDA1NzkyLDI2LjQxOTEgQzU3Ljk3OTU3OTIsMjAuNjM4MSA1My4yNzg1NzkyLDEzLjY4NTEgNDQuMjAxNTc5MiwxMi4zMTcxIEM0MS41ODk1NzkyLDExLjkyMDEgMzkuNDY5NTc5MiwxMS45MjgxIDM3LjY1MTU3OTIsMTEuNjc5MSBDMzUuNDAyNTc5MiwxMS41MTExIDMxLjE0OTU3OTIsMTAuOTM5MSAyOS45MjA1NzkyLDkuMDAwMSBDMjkuOTIwNTc5Miw5LjAwMDEgMjkuODkxNTc5Miw5LjE3MjEgMjkuODcxNTc5Miw5LjQ5MTEgQzI5LjgyMzU3OTIsMTAuMjA0MSAyOS44MTk1NzkyLDExLjYzMTEgMzAuMjUzNTc5MiwxMy40NjkxIEMzMC42NjY1NzkyLDE1LjAyMjEgMzEuMjYyNTc5MiwxNi42MDkxIDMyLjEwOTU3OTIsMTguMTE1MSIsZmlsbDoiI0NGREVCNiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik01Ny45OTk5NzU2LDU5Ljk5OTk5MzkgQzU5LjEwMzk3NTYsNTkuOTk5OTkzOSA1OS45OTk5NzU2LDU5LjEwMzk5MzkgNTkuOTk5OTc1Niw1Ny45OTk5OTM5IEw1OS45OTk5NzU2LDM3LjU0ODk5MzkgQzU1LjQwNjk3NTYsMzIuNTQxOTkzOSA0OC44MDk5NzU2LDI5LjM5OTk5MzkgNDEuNDc0OTc1NiwyOS4zOTk5OTM5IEMyNy42MDQ5NzU2LDI5LjM5OTk5MzkgMTYuMzQ5OTc1Niw0MC42NDk5OTM5IDE2LjM0OTk3NTYsNTQuNTI3OTkzOSBDMTYuMzQ5OTc1Niw1Ni40MDc5OTM5IDE2LjU2Mjk3NTYsNTguMjM3OTkzOSAxNi45NTQ5NzU2LDU5Ljk5OTk5MzkgTDU3Ljk5OTk3NTYsNTkuOTk5OTkzOSBaIixmaWxsOiIjRkZENUJCIn0pKSkpfTtkai5kaXNwbGF5TmFtZT0iU1ZHVHJhbnNwYXJlbnRMb2dvIjt2YXIgcGo9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi10cmFuc3BhcmVudC1sb2dvIixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy10cmFuc3BhcmVudC1sb2dvIik6Ikljb25zLXRyYW5zcGFyZW50LWxvZ28iLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzpkan0pfTtwai5kaXNwbGF5TmFtZT0iVHJhbnNwYXJlbnRMb2dvIixwai5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBoaj1waix5aj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tdHJhc2gtY2FuIix2aWV3Qm94OiIwIDAgMTYgMTYifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMiwyIEwxNCwyIEwxNCw0IEwyLDQgTDIsMiBaIE02LDEgTDEwLDEgTDEwLDIgTDYsMiBMNiwxIFogTTMsNSBMMTMsNSBMMTMsMTUgTDMsMTUgTDMsNSBaIn0pKSkpfTt5ai5kaXNwbGF5TmFtZT0iU1ZHVHJhc2hDYW4iO3ZhciBtaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXRyYXNoLWNhbiIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtdHJhc2gtY2FuIik6Ikljb25zLXRyYXNoLWNhbiIsb25DbGljazplLm9uQ2xpY2ssc3ZnOnlqfSl9O21qLmRpc3BsYXlOYW1lPSJUcmFzaENhbiIsbWoucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgdmo9bWosZ2o9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXRyaXBsZS1jaGVja21hcmsiLHdpZHRoOiIxNnB4IixoZWlnaHQ6IjE2cHgiLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgiZyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6IjAiLHk6IjAiLHdpZHRoOiIxNiIsaGVpZ2h0OiIxNiJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoInBvbHlnb24iLHtmaWxsOiIjNkQ2NTY1Iixwb2ludHM6IjMgNC41IDQuNSAzIDYuNSA1IDExLjUgMCAxMyAxLjUgNi41IDgifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBvbHlnb24iLHtmaWxsOiIjNkQ2NTY1IixvcGFjaXR5OiIwLjY2Iixwb2ludHM6IjMgOC41IDQuNSA3IDYuNSA5IDExLjUgNCAxMyA1LjUgNi41IDEyIn0pLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7ZmlsbDoiIzZENjU2NSIsb3BhY2l0eToiMC4zMyIscG9pbnRzOiIzIDEyLjUgNC41IDExIDYuNSAxMyAxMS41IDggMTMgOS41IDYuNSAxNiJ9KSkpKX07Z2ouZGlzcGxheU5hbWU9IlNWR1RyaXBsZUNoZWNrbWFyayI7dmFyIGJqPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tdHJpcGxlLWNoZWNrbWFyayIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtdHJpcGxlLWNoZWNrbWFyayIpOiJJY29ucy10cmlwbGUtY2hlY2ttYXJrIixvbkNsaWNrOmUub25DbGljayxzdmc6Z2p9KX07YmouZGlzcGxheU5hbWU9IlRyaXBsZUNoZWNrbWFyayIsYmoucHJvcFR5cGVzPXtjbGFzc05hbWU6Vi5hLnN0cmluZyxvbkNsaWNrOlYuYS5mdW5jfTt2YXIgd2o9YmosX2o9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN5bWJvbCIse2lkOiJpY29uLXR3aXR0ZXIiLHZpZXdCb3g6IjAgMCAxNiAxNCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJwb2x5Z29uIix7aWQ6InBhdGgtMS10d2l0dGVyIixwb2ludHM6IjYuNGUtMDYgMCAxNiAwIDE2IDEzLjAwMDgxOTIgNi40ZS0wNiAxMy4wMDA4MTkyIn0pKSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMzM0LjAwMDAwMCwgLTQ2NC4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgzMzQuMDAwMDAwLCA0NjMuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEuMzMzMzMzKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJtYXNrIix7aWQ6Im1hc2stMi10d2l0dGVyIixmaWxsOiJ3aGl0ZSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHt4bGlua0hyZWY6IiNwYXRoLTEtdHdpdHRlciJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwpLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTUuMDMxNjg2NCwxMy4wMDA4MTkyIEMxMS4wNjk0NDY0LDEzLjAwMDgxOTIgMTQuMzcxNzgyNCw3Ljk5ODU3OTIgMTQuMzcxNzgyNCwzLjY2MDY1OTIgQzE0LjM3MTc4MjQsMy41MTg1NzkyIDE0LjM3MTc4MjQsMy4zNzcxMzkyIDE0LjM2MjI0NjQsMy4yMzYzMzkyIEMxNS4wMDQ2Nzg0LDIuNzcxNjM1MiAxNS41NTkyMzg0LDIuMTk2Mjc1MiAxNi4wMDAwMDY0LDEuNTM3MTM5MiBDMTUuNDAwOTAyNCwxLjgwMjYxMTIgMTQuNzY1MzE4NCwxLjk3Njc1NTIgMTQuMTE0NTY2NCwyLjA1MzYxOTIgQzE0Ljc5OTgxNDQsMS42NDMzNzkyIDE1LjMxMjc3NDQsMC45OTgxMzEyIDE1LjU1Nzc2NjQsMC4yMzc5MzkyIEMxNC45MTMzNTA0LDAuNjIwMzM5MiAxNC4yMDg0NTQ0LDAuODg5Nzc5MiAxMy40NzMyMjI0LDEuMDM0NzM5MiBDMTIuMjMwMDg2NCwtMC4yODcxODA4IDEwLjE1MDU5ODQsLTAuMzUwOTg4OCA4LjgyODY3ODQsMC44OTIyMTEyIEM3Ljk3NjEzNDQsMS42OTM5MzkyIDcuNjE0NDA2NCwyLjg4ODY5MTIgNy44NzkwNDY0LDQuMDI4NjU5MiBDNS4yMzk2MjI0LDMuODk2MzcxMiAyLjc4MDQ4NjQsMi42NDk2NTEyIDEuMTEzNjA2NCwwLjU5ODg5OTIgQzAuMjQyMzEwNCwyLjA5ODg2NzIgMC42ODczNjY0LDQuMDE3NzE1MiAyLjEyOTkyNjQsNC45ODA5NzkyIEMxLjYwNzQ5NDQsNC45NjU0OTEyIDEuMDk2NTE4NCw0LjgyNDU2MzIgMC42NDAwMDY0LDQuNTcwMDk5MiBMMC42NDAwMDY0LDQuNjExNjk5MiBDMC42NDA0NTQ0LDYuMTc0MzIzMiAxLjc0MTg5NDQsNy41MjAxNzkyIDMuMjczNjA2NCw3LjgyOTYxOTIgQzIuNzkwMzQyNCw3Ljk2MTQ1OTIgMi4yODMyNzA0LDcuOTgwNzIzMiAxLjc5MTM2NjQsNy44ODU5MzkyIEMyLjIyMTM4MjQsOS4yMjMyMTkyIDMuNDUzODMwNCwxMC4xMzkyNTEyIDQuODU4MjQ2NCwxMC4xNjU2MTkyIEMzLjY5NTgxNDQsMTEuMDc5MjE5MiAyLjI1OTg0NjQsMTEuNTc1MTU1MiAwLjc4MTQ0NjQsMTEuNTczNjE5MiBDMC41MjAyNjI0LDExLjU3MzEwNzIgMC4yNTkzMzQ0LDExLjU1NzI5OTIgNi40ZS0wNiwxMS41MjYyNTkyIEMxLjUwMTE5MDQsMTIuNDg5NjUxMiAzLjI0Nzk0MjQsMTMuMDAwNjI3MiA1LjAzMTY4NjQsMTIuOTk4MjU5MiIsZmlsbDoiIzFEQTFGMiIsbWFzazoidXJsKCNtYXNrLTItdHdpdHRlcikifSkpKSkpKX07X2ouZGlzcGxheU5hbWU9IlNWR1R3aXR0ZXIiO3ZhciBFaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXR3aXR0ZXIiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXR3aXR0ZXIiKToiSWNvbnMtdHdpdHRlciIsb25DbGljazplLm9uQ2xpY2ssc3ZnOl9qfSl9O0VqLmRpc3BsYXlOYW1lPSJUd2l0dGVyIixFai5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBPaj1Faixraj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tdXAtYW5kLWRvd24tYXJyb3dzIix3aWR0aDoiOCIsaGVpZ2h0OiIyMCIsdmlld0JveDoiMCAwIDggMjAifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDAsLTEwMzIuMzYyMikifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToibWF0cml4KDEuMDA1MjM3OSwwLDAsMS4wNjY5NDY3LC0wLjIxMzE4OTM1LDEwNzIuMjAzOCkifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKC0wLjAwMzczNTQ2LC0xNS40OTAxNTcpIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJtIDIuOTMyODYxMSwtMTguMTYxNjk5IGMgMC44NDE0MDcsMCAxLjY4MjgxMzksMCAyLjUyNDIyMDksMCAwLDEuMzUxNzQxIDAsMi43MDM0ODIgMCw0LjA1NTIyMyAtMC44NDE0MDcsMCAtMS42ODI4MTM5LDAgLTIuNTI0MjIwOSwwIDAsLTEuMzUxNzQxIDAsLTIuNzAzNDgyIDAsLTQuMDU1MjIzIHoifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJtIDQuMTk0OTcxLC0yMS44NTE1NTUgYyAxLjMyNjM4NiwxLjI1NDMxNiAyLjY1Mjc3MiwyLjUwODYzMiAzLjk3OTE1OCwzLjc2Mjk0OCAtMi42NTI3NzE3LDAgLTUuMzA1NTQzNCwwIC03Ljk1ODMxNTA0LDAgMS4zMjYzODU2NCwtMS4yNTQzMTYgMi42NTI3NzEzNCwtMi41MDg2MzIgMy45NzkxNTcwNCwtMy43NjI5NDggeiJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06Im1hdHJpeCgtMSwwLDAsLTEsOC4zODYyMDc1LC00MC40NDgxODkpIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJtIDIuOTMyODYxMSwtMTguMTYxNjk5IGMgMC44NDE0MDcsMCAxLjY4MjgxMzksMCAyLjUyNDIyMDksMCAwLDEuMzUxNzQxIDAsMi43MDM0ODIgMCw0LjA1NTIyMyAtMC44NDE0MDcsMCAtMS42ODI4MTM5LDAgLTIuNTI0MjIwOSwwIDAsLTEuMzUxNzQxIDAsLTIuNzAzNDgyIDAsLTQuMDU1MjIzIHoifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJtIDQuMTk0OTcxLC0yMS44NTE1NTUgYyAxLjMyNjM4NiwxLjI1NDMxNiAyLjY1Mjc3MiwyLjUwODYzMiAzLjk3OTE1OCwzLjc2Mjk0OCAtMi42NTI3NzE3LDAgLTUuMzA1NTQzNCwwIC03Ljk1ODMxNTA0LDAgMS4zMjYzODU2NCwtMS4yNTQzMTYgMi42NTI3NzEzNCwtMi41MDg2MzIgMy45NzkxNTcwNCwtMy43NjI5NDggeiJ9KSkpKSl9O2tqLmRpc3BsYXlOYW1lPSJTVkdVcEFuZERvd25BcnJvd3MiO3ZhciBDaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXVwLWFuZC1kb3duLWFycm93cyIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtdXAtYW5kLWRvd24tYXJyb3dzIik6Ikljb25zLXVwLWFuZC1kb3duLWFycm93cyIsb25DbGljazplLm9uQ2xpY2ssc3ZnOmtqfSl9O0NqLmRpc3BsYXlOYW1lPSJVcEFuZERvd25BcnJvd3MiLENqLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIHhqPUNqLFNqPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi11cGxvYWQiLHZpZXdCb3g6IjAgMCAyNCAyMCJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE5LjM5NyA1Ljg4NkMxOC43MjcgMi40ODMgMTUuNzU1IDAgMTIuMjEgMCA5Ljc5IDAgNy41NzggMS4xNiA2LjIwNSAzLjEyMyAyLjY5IDMuMzMgMCA1Ljg3MyAwIDkuMDhjMCAzLjMyMyAyLjY3IDYuMDI2IDUuOTUzIDYuMDI2LjQ2NyAwIC44NDUtLjM3OC44NDUtLjg0NCAwLS40NjYtLjM3OC0uODQ0LS44NDUtLjg0NC0yLjM1IDAtNC4yNjUtMS45NDYtNC4yNjUtNC4zMzcgMC0yLjQ0IDIuMTQyLTQuMjgzIDQuOTgyLTQuMjgzLjI5NCAwIC41NjctLjE1My43Mi0uNDA0IDEuMDM1LTEuNjk0IDIuODM3LTIuNzA1IDQuODItMi43MDUgMi45MiAwIDUuMzMzIDIuMTkgNS42MTMgNS4wOS4wNDIuNDM0LjQwNi43NjQuODQuNzY0IDIuMjg0IDAgMy42NDggMS4wODUgMy42NDggMi45MDIgMCAxLjYxMi0xLjMzMyAyLjk3NC0yLjkxMiAyLjk3NGgtMi41MDNjLS40NjYgMC0uODQ0LjM3OC0uODQ0Ljg0NCAwIC40NjYuMzguODQ0Ljg0NS44NDRoMi41MDNjMi41MzggMCA0LjYwMi0yLjA5MiA0LjYwMi00LjY2MiAwLTIuNTcyLTEuNzgyLTQuMzA0LTQuNjAzLTQuNTU4ek0xMi4xOCA4LjExMmMtLjMxNi0uMzE3LS44NzYtLjMxNy0xLjE5MyAwbC0yLjk3NSAyLjk3NmMtLjMzLjMzLS4zMy44NjQgMCAxLjE5My4zMy4zMy44NjQuMzMgMS4xOTMgMGwxLjUtMS40OTh2Ny45ODJjMCAuNDY2LjM3OC44NDQuODQ0Ljg0NC40NjUgMCAuODQzLS4zNzguODQzLS44NDR2LTguMDUybDEuNTcgMS41N2MuMTY1LjE2NC4zOC4yNDcuNTk3LjI0Ny4yMTUgMCAuNDMtLjA4NC41OTYtLjI1LjMzLS4zMjguMzMtLjg2MiAwLTEuMTkyTDEyLjE4IDguMTEyeiIsZmlsbDoiIzRFNEU0RSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtTai5kaXNwbGF5TmFtZT0iU1ZHVXBsb2FkIjt2YXIgRGo9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi11cGxvYWQiLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXVwbG9hZCIpOiJJY29ucy11cGxvYWQiLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2ZzpTan0pfTtEai5kaXNwbGF5TmFtZT0iVXBsb2FkIixEai5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBUaj1EaixNaj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tdXBsb2FkLWFycm93Iix2aWV3Qm94OiIwIDAgMTIgMTIifSxFLmEuY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00LDQgTDQsNiBMMiw2IEwyLDIgTDMsMiBMMTMsMiBMMTQsMiBMMTQsNiBMMTIsNiBMMTIsNCBMNCw0IFogTTksMTAgTDEyLDEwIEw4LDE0IEw0LDEwIEw3LDEwIEw3LDYgTDksNiBMOSwxMCBaIixpZDoidXBsb2FkLWFycm93LXBhdGgifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7c3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDoiMSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKC0yLjAwMDAwMCwgLTIuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJtYXNrIix7ZmlsbDoid2hpdGUifSxFLmEuY3JlYXRlRWxlbWVudCgidXNlIix7eGxpbmtIcmVmOiIjdXBsb2FkLWFycm93LXBhdGgifSkpLEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHtmaWxsOiIjNkQ2NTY1Iix0cmFuc2Zvcm06InRyYW5zbGF0ZSg4LjAwMDAwMCwgOC4wMDAwMDApIHNjYWxlKDEsIC0xKSB0cmFuc2xhdGUoLTguMDAwMDAwLCAtOC4wMDAwMDApICIseGxpbmtIcmVmOiIjdXBsb2FkLWFycm93LXBhdGgifSkpKSl9O01qLmRpc3BsYXlOYW1lPSJTVkdVcGxvYWRBcnJvdyI7dmFyIFBqPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24tdXBsb2FkLWFycm93IixjbGFzc05hbWU6ZS5jbGFzc05hbWU/IiIuY29uY2F0KGUuY2xhc3NOYW1lLCIgIikuY29uY2F0KCJJY29ucy11cGxvYWQtYXJyb3ciKToiSWNvbnMtdXBsb2FkLWFycm93IixvbkNsaWNrOmUub25DbGljayxzdmc6TWp9KX07UGouZGlzcGxheU5hbWU9IlVwbG9hZEFycm93IixQai5wcm9wVHlwZXM9e2NsYXNzTmFtZTpWLmEuc3RyaW5nLG9uQ2xpY2s6Vi5hLmZ1bmN9O3ZhciBOaj1Qaixqaj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ltYm9sIix7aWQ6Imljb24tdmlldy1tb3JlLW5leHQtYXJyb3ciLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwLDcgTDIsNyBMMiw4IEwxMCw4IEwxMCwxMSBMMTQsNy41IEwxMCw0IEwxMCw3IFoifSkpKX07amouZGlzcGxheU5hbWU9IlNWR1ZpZXdNb3JlTmV4dEFycm93Ijt2YXIgTGo9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHJuLHtpZDoiaWNvbi12aWV3LW1vcmUtbmV4dC1hcnJvdyIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMtdmlldy1tb3JlLW5leHQtYXJyb3ciKToiSWNvbnMtdmlldy1tb3JlLW5leHQtYXJyb3ciLG9uQ2xpY2s6ZS5vbkNsaWNrLHN2Zzpqan0pfTtMai5kaXNwbGF5TmFtZT0iVmlld01vcmVOZXh0QXJyb3ciLExqLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIFJqPUxqLElqPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi13ZXN0ZXJuLXVuaW9uIix2aWV3Qm94OiIwIDAgNDE0IDk2In0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNDEzLjIgODcuM2MwIDQuNy0zLjggOC42LTguNiA4LjZIOC41QzMuOCA5NS44IDAgOTIgMCA4Ny4zVjguNkMwIDMuOCAzLjggMCA4LjUgMGgzOTYuMWM0LjcgMCA4LjYgMy44IDguNiA4LjZ2NzguN3oifSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLHtmaWxsOiIjRkZGIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjA4LjIgMjEuMWg3LjljMi41IDAgNSAwIDYuOCAxLjYuNi42IDEuNSAxLjYgMS41IDMuNCAwIDMuNS0zLjIgNC4yLTQuMiA0LjV2LjFjMS4yLjIgNC43LjggNC43IDQuOSAwIDEuNS0uNiAzLjMtMi43IDQuNS0xLjYuOC0zLjUuOC01LjMuOGgtOC43VjIxLjF6bTUuMyA3LjloMi42Yy45IDAgMS40IDAgMS45LS4yLjYtLjQgMS0xLjEgMS0xLjkgMC0uNi0uMi0xLjMtLjgtMS43LS42LS41LTEuMi0uNS0xLjgtLjVoLTNWMjl6bS4xIDguMWgzYy42IDAgMi44IDAgMi44LTIuMyAwLTIuNC0yLjItMi40LTMtMi40aC0yLjl2NC43ek0yMzguNCAyMS4xdjExLjdjMCAxLjEuMSAyLjIuNiAzIC43IDEuMSAyIDEuNiAzLjMgMS42IDMuNSAwIDMuOS0yLjggMy45LTQuOFYyMS4xaDUuM3YxMS40YzAgMi4yLS4zIDQuNS0xLjUgNi0xLjkgMi4zLTUuNCAyLjgtNy45IDIuOC05LjMgMC05LjMtNS44LTkuMy05VjIxLjFoNS42ek0yNjUgMzQuNGMwIC44LjEgMyAzLjMgMyAuNSAwIDIuOSAwIDIuOS0yLjIgMC0uOS0uNC0xLjYtMS43LTEuOWwtNC44LTEuM2MtMS40LS40LTQuOS0xLjMtNC45LTUuNCAwLTMuMiAyLjQtNi4yIDguMy02LjIgNy43IDAgOCA0LjIgOCA2LjNoLTUuNWMwLS42IDAtMi43LTIuNi0yLjctMS42IDAtMi42LjktMi42IDIuMSAwIDEuNCAxLjIgMS44IDIgMmwzLjcgMWMyLjYuNyA1LjcgMS41IDUuNyA1LjcgMCA0LjQtMy44IDYuMy04LjcgNi4zLTIgMC01LjMtLjMtNy4xLTIuMy0xLjQtMS42LTEuNS0zLjUtMS41LTQuNGg1LjV6TTI4NC4zIDIxLjFoNS42djE5LjdoLTUuNlYyMS4xek0yOTguMyAyMS4xaDcuNWw2LjYgMTQuNi0uMS0xNC42aDQuOHYxOS43aC03LjNMMzAzIDI1LjRsLjEgMTUuM2gtNC44VjIxLjF6TTMyNS43IDIxLjFoMTQuOHYzLjhoLTkuNFYyOWg4Ljh2My44aC04LjhWMzdoOS42djMuOGgtMTVWMjEuMXpNMzUzLjMgMzQuNGMwIC44LjEgMyAzLjMgMyAuNSAwIDIuOSAwIDIuOS0yLjIgMC0uOS0uNC0xLjYtMS43LTEuOUwzNTMgMzJjLTEuNC0uNC00LjktMS4zLTQuOS01LjQgMC0zLjIgMi40LTYuMiA4LjMtNi4yIDcuNyAwIDggNC4yIDggNi4zSDM1OWMwLS42IDAtMi43LTIuNi0yLjctMS42IDAtMi42LjktMi42IDIuMSAwIDEuNCAxLjIgMS44IDIgMmwzLjcgMWMyLjYuNyA1LjcgMS41IDUuNyA1LjcgMCA0LjQtMy44IDYuMy04LjcgNi4zLTIgMC01LjMtLjMtNy4xLTIuMy0xLjQtMS42LTEuNS0zLjUtMS41LTQuNGg1LjR6TTM3Ny43IDM0LjRjMCAuOC4xIDMgMy4zIDMgLjUgMCAyLjkgMCAyLjktMi4yIDAtLjktLjQtMS42LTEuNy0xLjlsLTQuOC0xLjNjLTEuNC0uNC00LjktMS4zLTQuOS01LjQgMC0zLjIgMi40LTYuMiA4LjMtNi4yIDcuNyAwIDggNC4yIDggNi4zaC01LjVjMC0uNiAwLTIuNy0yLjYtMi43LTEuNiAwLTIuNi45LTIuNiAyLjEgMCAxLjQgMS4yIDEuOCAyIDJsMy43IDFjMi42LjcgNS43IDEuNSA1LjcgNS43IDAgNC40LTMuOCA2LjMtOC43IDYuMy0yIDAtNS4zLS4zLTcuMS0yLjMtMS40LTEuNi0xLjUtMy41LTEuNS00LjRoNS41eiJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiIjRkZGIixkOiJNMjEzLjIgNjUuNGMwIC44LjEgMyAzLjMgMyAuNSAwIDIuOSAwIDIuOS0yLjIgMC0uOS0uNC0xLjYtMS43LTEuOWwtNC44LTEuM2MtMS40LS40LTQuOS0xLjMtNC45LTUuNCAwLTMuMiAyLjQtNi4yIDguMy02LjIgNy43IDAgOCA0LjIgOCA2LjNoLTUuNWMwLS42IDAtMi43LTIuNi0yLjctMS42IDAtMi42LjktMi42IDIuMSAwIDEuNCAxLjIgMS44IDIgMmwzLjcgMWMyLjYuNyA1LjcgMS41IDUuNyA1LjcgMCA0LjQtMy44IDYuMy04LjcgNi4zLTIgMC01LjMtLjMtNy4xLTIuMy0xLjQtMS42LTEuNS0zLjUtMS41LTQuNGg1LjV6TTIzMS40IDU0LjJjMi41LTIuNSA2LjItMi43IDcuNy0yLjcgNy44IDAgMTAgNS42IDEwIDEwLjQgMCA3LjgtNS42IDEwLjItMTAuMiAxMC4yLTUuMiAwLTEwLjEtMi45LTEwLjEtMTAuMi0uMS0xLjMuMS01LjIgMi42LTcuN3ptNy40IDEzLjljMy45IDAgNC41LTMuNiA0LjUtNi4zIDAtMi43LS43LTQuMS0xLjMtNS0uOC0xLjEtMi4xLTEuNC0zLjMtMS40LTMuNiAwLTQuNiAzLjEtNC42IDYuNS4yIDMuMSAxLjEgNi4yIDQuNyA2LjJ6In0pLEUuYS5jcmVhdGVFbGVtZW50KCJnIix7ZmlsbDoiI0ZGRiJ9LEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTI1My40IDUyaDUuNXYxNS44aDguOHYzLjloLTE0LjNWNTJ6TTI3NyA1MnYxMS43YzAgMS4xLjEgMi4yLjYgMyAuNyAxLjEgMiAxLjYgMy4zIDEuNiAzLjUgMCAzLjktMi44IDMuOS00LjhWNTJoNS4zdjExLjRjMCAyLjItLjMgNC41LTEuNSA2LTEuOSAyLjMtNS40IDIuOC03LjkgMi44LTkuMyAwLTkuMy01LjgtOS4zLTlWNTJoNS42ek0yOTkuOSA1NS45aC02VjUyaDE3LjZ2My45aC02LjF2MTUuOGgtNS41VjU1Ljl6In0pKSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6IiNGRkYiLGQ6Ik0zMTQuOCA1Mmg1LjZ2MTkuN2gtNS42VjUyeiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGw6IiNGRkYifSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zMjcuNCA1NC4yYzIuNS0yLjUgNi4yLTIuNyA3LjctMi43IDcuOCAwIDEwIDUuNiAxMCAxMC40IDAgNy44LTUuNiAxMC4yLTEwLjIgMTAuMi01LjIgMC0xMC4xLTIuOS0xMC4xLTEwLjItLjEtMS4zLjEtNS4yIDIuNi03Ljd6bTcuNCAxNGMzLjkgMCA0LjUtMy42IDQuNS02LjMgMC0yLjctLjctNC4xLTEuMy01LS44LTEuMS0yLjEtMS40LTMuMy0xLjQtMy42IDAtNC42IDMuMS00LjYgNi41LjIgMyAxLjEgNi4yIDQuNyA2LjJ6TTM0OS40IDUyaDcuNWw2LjYgMTQuNlY1Mmg0Ljh2MTkuN0gzNjFsLTYuOC0xNS4zLjEgMTUuM2gtNC44VjUyeiJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiIjRkZGIixkOiJNMzc4LjMgNjUuNGMwIC44LjEgMyAzLjMgMyAuNSAwIDIuOSAwIDIuOS0yLjIgMC0uOS0uNC0xLjYtMS43LTEuOUwzNzggNjNjLTEuNC0uNC00LjktMS4zLTQuOS01LjQgMC0zLjIgMi40LTYuMiA4LjMtNi4yIDcuNyAwIDggNC4yIDggNi4zaC01LjVjMC0uNiAwLTIuNy0yLjYtMi43LTEuNiAwLTIuNi45LTIuNiAyLjEgMCAxLjQgMS4yIDEuOCAyIDJsMy43IDFjMi42LjcgNS43IDEuNSA1LjcgNS43IDAgNC40LTMuOCA2LjMtOC43IDYuMy0yIDAtNS4zLS4zLTcuMS0yLjMtMS40LTEuNi0xLjUtMy41LTEuNS00LjRoNS41eiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6IiNGRkRGMUEiLGQ6Ik0xMTcuMiAxMi41SDExMmwtNS44IDQzLjRoLS4ybC02LjQtNDMuNEg3MS4zbC02LjQgNDMuNGgtLjJsLTUuOC00My40SDM0LjVsMTQuOSA2OC45SDc5bDYuNC00NC42aC4yTDkyIDgxLjRoMjkuNmwxLjUtNi45Yy0zLjgtNC01LjgtOS40LTUuOC0xNi4yVjEyLjV6In0pLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiI0ZGRiIsZDoiTTExNy4yIDEyLjV2NDUuOGMwIDYuOCAyIDEyLjIgNS44IDE2LjJsMTMuNC02MmgtMTkuMnoifSksRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiIjRkQwIixkOiJNMTU1LjQgMTIuNXY0NC43YzAgNS40LTIuNiA3LjYtNS40IDcuNi0yLjkgMC01LjUtMi4xLTUuNS03LjZWMTIuNWgtNS44bC0xMy44IDYzLjdjNS42IDQuNiAxNCA3IDI1IDcgMjAuOCAwIDMyLjctOC4zIDMyLjctMjQuOVYxMi41aC0yNy4yeiJ9KSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6IiNGRkRGMUEiLGQ6Ik0xNi42IDEyLjVoLTQuMWwxNC43IDY4LjloNE0zOC4zIDgxLjRoNEwyNy43IDEyLjVoLTRNMTkwLjkgMTUuOGMwLS41LS4zLS43LS44LS43LS40IDAtLjcuMi0uNy42IDAgLjUuNC42LjguNi43LjIgMS43LjQgMS43IDEuMyAwIDEuMS0xIDEuNS0yIDEuNXMtMS44LS40LTEuNy0xLjZoMWMwIC41LjMuOC44LjguNCAwIC45LS4xLjktLjZzLS43LS42LTEuMS0uN2MtLjYtLjItMS41LS40LTEuNS0xLjMgMC0xIDEtMS41IDEuOS0xLjUuOSAwIDEuNi41IDEuNiAxLjRoLS45ek0xOTUuNiAxOS4xaC0uOGwtMS4yLTMuOWgtLjF2My45aC0uOXYtNC42aDEuNmwxIDMuNCAxLTMuNGgxLjZ2NC42aC0uOXYtMy45In0pKSl9O0lqLmRpc3BsYXlOYW1lPSJTVkdXZXN0ZXJuVW5pb24iO3ZhciBBaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocm4se2lkOiJpY29uLXdlc3Rlcm4tdW5pb24iLGNsYXNzTmFtZTplLmNsYXNzTmFtZT8iIi5jb25jYXQoZS5jbGFzc05hbWUsIiAiKS5jb25jYXQoIkljb25zLXdlc3Rlcm4tdW5pb24iKToiSWNvbnMtd2VzdGVybi11bmlvbiIsb25DbGljazplLm9uQ2xpY2ssc3ZnOklqfSl9O0FqLmRpc3BsYXlOYW1lPSJXZXN0ZXJuVW5pb24iLEFqLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIEZqPUFqLEJqPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzeW1ib2wiLHtpZDoiaWNvbi15b3V0dWJlIix2aWV3Qm94OiIwIDAgMTYgMTIifSxFLmEuY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgicG9seWdvbiIse2lkOiJwYXRoLTEteW91dHViZSIscG9pbnRzOiI1LjI0NTkwMTY0ZS0wNSAwLjEyODcyOTMwMiAxNS45MzI0NTkgMC4xMjg3MjkzMDIgMTUuOTMyNDU5IDExLjUyIDUuMjQ1OTAxNjRlLTA1IDExLjUyIn0pKSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMzM0LjAwMDAwMCwgLTQ4OS4wMDAwMDApIn0sRS5hLmNyZWF0ZUVsZW1lbnQoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgzMzQuMDAwMDAwLCA0ODcuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoMC4wMDAwMDAsIDIuMDAwMDAwKSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJnIixudWxsLEUuYS5jcmVhdGVFbGVtZW50KCJtYXNrIix7aWQ6Im1hc2stMi15b3V0dWJlIixmaWxsOiJ3aGl0ZSJ9LEUuYS5jcmVhdGVFbGVtZW50KCJ1c2UiLHt4bGlua0hyZWY6IiNwYXRoLTEteW91dHViZSJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoImciLG51bGwpLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE1LjU5OTUyNzksMS45MDc0MzA3IEMxNS40MTYzMTQ4LDEuMjA3MjU1ODEgMTQuODc2MzgwMywwLjY1NTkwMzI1NiAxNC4xOTA4NzIxLDAuNDY4NzcwMjMzIEMxMi45NDgzODAzLDAuMTI4NjYyMzI2IDcuOTY2MjE2MzksMC4xMjg2NjIzMjYgNy45NjYyMTYzOSwwLjEyODY2MjMyNiBDNy45NjYyMTYzOSwwLjEyODY2MjMyNiAyLjk4NDA1MjQ2LDAuMTI4NjYyMzI2IDEuNzQxNTYwNjYsMC40Njg3NzAyMzMgQzEuMDU2MDUyNDYsMC42NTU5MDMyNTYgMC41MTYxMTgwMzMsMS4yMDcyNTU4MSAwLjMzMjkwNDkxOCwxLjkwNzQzMDcgQzUuMjQ1OTAxNjRlLTA1LDMuMTc2NTA2MDUgNS4yNDU5MDE2NGUtMDUsNS44MjQzNjQ2NSA1LjI0NTkwMTY0ZS0wNSw1LjgyNDM2NDY1IEM1LjI0NTkwMTY0ZS0wNSw1LjgyNDM2NDY1IDUuMjQ1OTAxNjRlLTA1LDguNDcyMjIzMjYgMC4zMzI5MDQ5MTgsOS43NDExNjQ2NSBDMC41MTYxMTgwMzMsMTAuNDQxMzM5NSAxLjA1NjA1MjQ2LDEwLjk5MjgyNiAxLjc0MTU2MDY2LDExLjE3OTk1OTEgQzIuOTg0MDUyNDYsMTEuNTIwMDY3IDcuOTY2MjE2MzksMTEuNTIwMDY3IDcuOTY2MjE2MzksMTEuNTIwMDY3IEM3Ljk2NjIxNjM5LDExLjUyMDA2NyAxMi45NDgzODAzLDExLjUyMDA2NyAxNC4xOTA4NzIxLDExLjE3OTk1OTEgQzE0Ljg3NjM4MDMsMTAuOTkyODI2IDE1LjQxNjMxNDgsMTAuNDQxMzM5NSAxNS41OTk1Mjc5LDkuNzQxMTY0NjUgQzE1LjkzMjUxMTUsOC40NzIyMjMyNiAxNS45MzI1MTE1LDUuODI0MzY0NjUgMTUuOTMyNTExNSw1LjgyNDM2NDY1IEMxNS45MzI1MTE1LDUuODI0MzY0NjUgMTUuOTMyNTExNSwzLjE3NjUwNjA1IDE1LjU5OTUyNzksMS45MDc0MzA3IixmaWxsOiIjRkYwMDAwIixtYXNrOiJ1cmwoI21hc2stMi15b3V0dWJlKSJ9KSksRS5hLmNyZWF0ZUVsZW1lbnQoInBvbHlnb24iLHtmaWxsOiIjRkZGRkZGIixwb2ludHM6IjYuNCA4LjMyIDEwLjI0IDUuNzYgNi40IDMuMiJ9KSkpKSkpfTtCai5kaXNwbGF5TmFtZT0iU1ZHWW91dHViZSI7dmFyIHpqPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChybix7aWQ6Imljb24teW91dHViZSIsY2xhc3NOYW1lOmUuY2xhc3NOYW1lPyIiLmNvbmNhdChlLmNsYXNzTmFtZSwiICIpLmNvbmNhdCgiSWNvbnMteW91dHViZSIpOiJJY29ucy15b3V0dWJlIixvbkNsaWNrOmUub25DbGljayxzdmc6Qmp9KX07emouZGlzcGxheU5hbWU9IllvdVR1YmUiLHpqLnByb3BUeXBlcz17Y2xhc3NOYW1lOlYuYS5zdHJpbmcsb25DbGljazpWLmEuZnVuY307dmFyIEtqPXpqLHFqPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoibm9uZSIsZDoiTTggNGwxMiA4LTEyIDh6In0pKX07cWouZGlzcGxheU5hbWU9IkF1ZGlvUGxheSIscWouZGVmYXVsdFByb3BzPXt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIyNCIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMCAwIDI0IDI0In07dmFyIFZqPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHFqLHtjbGFzc05hbWU6Ikljb24gQXVkaW9QbGF5In0pfSxVaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMCAzdjE4SDVWM2g1em05IDB2MThoLTVWM2g1eiJ9KSl9O1VqLmRpc3BsYXlOYW1lPSJBdWRpb1BhdXNlIixVai5kZWZhdWx0UHJvcHM9e3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjI0IixoZWlnaHQ6IjI0Iix2aWV3Qm94OiIwIDAgMjQgMjQifTt2YXIgV2o9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoVWose2NsYXNzTmFtZToiSWNvbiBBdWRpb1BhdXNlIn0pfSxZaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00IDd2OEgwVjdoNHptNi02djE0SDZWMWg0em02IDN2MTFoLTRWNGg0eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtZai5kaXNwbGF5TmFtZT0iQW5hbHl0aWNzIixZai5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgSGo9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoWWose2NsYXNzTmFtZToiR2x5cGggQW5hbHl0aWNzIn0pfSxHaj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yIDVoMTJ2OUgyVjV6TTEgMmgxNHYySDFWMnptNSA1YTEgMSAwIDEgMCAwIDJoNGExIDEgMCAwIDAgMC0ySDZ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O0dqLmRpc3BsYXlOYW1lPSJBcmNoaXZlIixHai5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgUWo9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoR2ose2NsYXNzTmFtZToiR2x5cGggQXJjaGl2ZSJ9KX0sSmo9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOSA5aDNsLTQgNC00LTRoM1YzaDJ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O0pqLmRpc3BsYXlOYW1lPSJBcnJvd0Rvd24iLEpqLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBaaj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChKaix7Y2xhc3NOYW1lOiJHbHlwaCBBcnJvd0Rvd24ifSl9LCRqPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTcgOXYzTDMgOGw0LTR2M2g2djJ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9OyRqLmRpc3BsYXlOYW1lPSJBcnJvd0xlZnQiLCRqLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBYaj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgkaix7Y2xhc3NOYW1lOiJHbHlwaCBBcnJvd0xlZnQifSl9LGVMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTkgOUgzVjdoNlY0bDQgNC00IDR6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O2VMLmRpc3BsYXlOYW1lPSJBcnJvd1JpZ2h0IixlTC5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgdEw9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoZUwse2NsYXNzTmFtZToiR2x5cGggQXJyb3dSaWdodCJ9KX0sbkw9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOSA3djZIN1Y3SDRsNC00IDQgNHoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07bkwuZGlzcGxheU5hbWU9IkFycm93VXAiLG5MLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciByTD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChuTCx7Y2xhc3NOYW1lOiJHbHlwaCBBcnJvd1VwIn0pfSxvTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik04IDEwTDQgNmg4eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtvTC5kaXNwbGF5TmFtZT0iQ2FyZXREb3duIixvTC5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgYUw9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQob0wse2NsYXNzTmFtZToiR2x5cGggQ2FyZXREb3duIn0pfSxpTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik01IDhsNC00djh6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O2lMLmRpc3BsYXlOYW1lPSJDYXJldExlZnQiLGlMLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciB1TD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChpTCx7Y2xhc3NOYW1lOiJHbHlwaCBDYXJldExlZnQifSl9LHNMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwIDhsLTQgNFY0eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtzTC5kaXNwbGF5TmFtZT0iQ2FyZXRSaWdodCIsc0wuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIGxMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHNMLHtjbGFzc05hbWU6IkdseXBoIENhcmV0UmlnaHQifSl9LGNMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTggNWw0IDRINHoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07Y0wuZGlzcGxheU5hbWU9IkNhcmV0VXAiLGNMLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBmTD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChjTCx7Y2xhc3NOYW1lOiJHbHlwaCBDYXJldFVwIn0pfSxkTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik03LjczIDQuMTNhLjM0Ni4zNDYgMCAwIDEgLjUzOCAwbDUuNjAyIDUuNTk5YS4zOC4zOCAwIDAgMSAuMTMuMjguNDE3LjQxNyAwIDAgMS0uMTMuMjhsLS42MDIuNTgxYS4zNDUuMzQ1IDAgMCAxLS41MzggMEw3Ljk4NyA2LjE1MyAzLjI3MSAxMC44N2EuMzguMzggMCAwIDEtLjI4LjEzLjM4LjM4IDAgMCAxLS4yOC0uMTNsLS41ODItLjU4MWEuNDE1LjQxNSAwIDAgMS0uMTI5LS4yOGMwLS4xMDguMDQyLS4xOTQuMTI5LS4yOGw1LjYwMS01LjZ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O2RMLmRpc3BsYXlOYW1lPSJDaGV2VXAiLGRMLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBwTD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChkTCx7Y2xhc3NOYW1lOiJHbHlwaCBDaGV2VXAifSl9LGhMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEyLjY0NiA4LjY0NmwuNzA4LjcwOEwxMS43MDcgMTFsMS42NDcgMS42NDYtLjcwOC43MDhMMTEgMTEuNzA3bC0xLjY0NiAxLjY0Ny0uNzA4LS43MDhMMTAuMjkzIDExIDguNjQ2IDkuMzU0bC43MDgtLjcwOEwxMSAxMC4yOTNsMS42NDYtMS42NDd6TTEwLjczOCAzLjY5bC0uMjg0IDEuNDM2aC0yLjExTDcuMDA4IDEySDUuMzcybDEuMzMtNi44NzVINC41N2wuMjczLTEuNDM2aDUuODk1eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtoTC5kaXNwbGF5TmFtZT0iQ2xlYXJGb3JtYXR0aW5nIixoTC5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgeUw9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoaEwse2NsYXNzTmFtZToiR2x5cGggQ2xlYXJGb3JtYXR0aW5nIn0pfSxtTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02LjU4NiA4bC0yLjgyOSAyLjgyOCAxLjQxNSAxLjQxNUw4IDkuNDE0bDIuODI4IDIuODI5IDEuNDE1LTEuNDE1TDkuNDE0IDhsMi44MjktMi44MjgtMS40MTUtMS40MTVMOCA2LjU4NiA1LjE3MiAzLjc1NyAzLjc1NyA1LjE3MiA2LjU4NiA4ek04IDE2QTggOCAwIDEgMSA4IDBhOCA4IDAgMCAxIDAgMTZ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O21MLmRpc3BsYXlOYW1lPSJDbGVhciIsbUwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIHZMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KG1MLHtjbGFzc05hbWU6IkdseXBoIENsZWFyIn0pfSxnTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMyAwdjExYTIgMiAwIDEgMS0uOTk5LTEuNzMyTDEyIDQuMzEzIDYgNi4xODhWMTNhMiAyIDAgMSAxLS45OTktMS43MzJMNSAzdi0uNUwxMyAweiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtnTC5kaXNwbGF5TmFtZT0iRGlnaXRhbCIsZ0wuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIGJMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGdMLHtjbGFzc05hbWU6IkdseXBoIERpZ2l0YWwifSl9LHdMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTQgMTJoOHYtMmgydjRIMnYtNGgydjJ6bTUtNmgzbC00IDQtNC00aDNWMmgydjR6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O3dMLmRpc3BsYXlOYW1lPSJEb3dubG9hZCIsd0wuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIF9MPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHdMLHtjbGFzc05hbWU6IkdseXBoIERvd25sb2FkIn0pfSxFTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik05IDNsNCA0LTYgNi00LTQgNi02em0tNi43NSA3TDYgMTMuNzUgMSAxNWwxLjI1LTV6TTEwIDIuMTVsMS4wNi0xLjA2YS4zMi4zMiAwIDAgMSAuNDUyLjAwNkwxNC45IDQuNDg4Yy4xMzQuMTM0LjEyOS4zMjkuMDA1LjQ1MkwxMy44NDcgNiAxMCAyLjE1eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtFTC5kaXNwbGF5TmFtZT0iRWRpdCIsRUwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIE9MPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEVMLHtjbGFzc05hbWU6IkdseXBoIEVkaXQifSl9LGtMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTggMTZhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0em0wLTZhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0em0wLTZhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtrTC5kaXNwbGF5TmFtZT0iS2Fib2IiLGtMLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBDTD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChrTCx7Y2xhc3NOYW1lOiJHbHlwaCBLYWJvYiJ9KX0seEw9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNSAxMS41YS41LjUgMCAxIDEtMSAwdi03YTMuNSAzLjUgMCAwIDEgNyAwdjhhMi41IDIuNSAwIDEgMS01IDB2LTdhMS41IDEuNSAwIDAgMSAzIDB2NmEuNS41IDAgMSAxLTEgMHYtNmEuNS41IDAgMCAwLS45OTItLjA5TDcgNS41djdhMS41IDEuNSAwIDAgMCAyLjk5My4xNDRMMTAgMTIuNXYtOGEyLjUgMi41IDAgMCAwLTQuOTk1LS4xNjRMNSA0LjV2N3oiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07eEwuZGlzcGxheU5hbWU9IlBhcGVyY2xpcCIseEwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFNMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHhMLHtjbGFzc05hbWU6IkdseXBoIFBhcGVyY2xpcCJ9KX0sREw9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOCAxYTcgNyAwIDEgMSAwIDE0QTcgNyAwIDAgMSA4IDF6bTAgMy41YTMuNSAzLjUgMCAxIDAgMCA3IDMuNSAzLjUgMCAwIDAgMC03em0wIDJhMS41IDEuNSAwIDEgMSAwIDMgMS41IDEuNSAwIDAgMSAwLTN6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O0RMLmRpc3BsYXlOYW1lPSJQaHlzaWNhbCIsREwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFRMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KERMLHtjbGFzc05hbWU6IkdseXBoIFBoeXNpY2FsIn0pfSxNTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02IDExYzUuMzMzIDAgOC0xLjMzMyA4LTQgMCA0LjY2Ny0yLjY2NyA3LTggN3YybC00LTMuNUw2IDl2MnptNC02QzQuNjY3IDUgMiA2LjMzMyAyIDljMC00LjY2NyAyLjY2Ny03IDgtN1YwbDQgMy41TDEwIDdWNXoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07TUwuZGlzcGxheU5hbWU9IlJlZnJlc2giLE1MLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBQTD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChNTCx7Y2xhc3NOYW1lOiJHbHlwaCBSZWZyZXNoIn0pfSxOTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00LjUgMTBhMS41IDEuNSAwIDEgMSAwIDMgMS41IDEuNSAwIDAgMSAwLTN6TTQgMmM1LjUyMyAwIDEwIDQuNDc3IDEwIDEwaC0yYTggOCAwIDAgMC04LThWMnptMCA0YTYgNiAwIDAgMSA2IDZIOGE0IDQgMCAwIDAtNC00VjZ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O05MLmRpc3BsYXlOYW1lPSJSc3MiLE5MLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBqTD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChOTCx7Y2xhc3NOYW1lOiJHbHlwaCBSc3MifSl9LExMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEyLjEyNCAxMC4xMjRMMTUgMTNsLTIgMi0yLjg3Ni0yLjg3NmE2IDYgMCAxIDEgMi0yek03IDExYTQgNCAwIDEgMCAwLTggNCA0IDAgMCAwIDAgOHoiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07TEwuZGlzcGxheU5hbWU9IlNlYXJjaCIsTEwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFJMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KExMLHtjbGFzc05hbWU6IkdseXBoIFNlYXJjaCJ9KX0sSUw9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOCAxMC43NWEyLjc1IDIuNzUgMCAxIDEgMC01LjUgMi43NSAyLjc1IDAgMSAxIDAgNS41bTYuMzA1LTMuNTg5bC0uNzU0LS4xNDRhMS4zIDEuMyAwIDAgMS0uOTcxLS44MDggMS4yOTkgMS4yOTkgMCAwIDEgLjE2My0xLjI1MmwuNDczLS42NDVhLjI0LjI0IDAgMCAwLS4wMjUtLjMxM2wtMS4wMi0xLjAyMWEuMjQyLjI0MiAwIDAgMC0uMzA2LS4wMjlsLS42MzUuNDNhMS4yOTggMS4yOTggMCAwIDEtMS4yNTcuMTE2IDEuMzA2IDEuMzA2IDAgMCAxLS43NzEtMS4wMDFsLS4xMjItLjc5MWEuMjQuMjQgMCAwIDAtLjIzOC0uMjAzSDcuMzk4YS4yNDMuMjQzIDAgMCAwLS4yMzcuMTk1bC0uMTg3Ljk3NGExLjMwOSAxLjMwOSAwIDAgMS0yLjAyLjgzN2wtLjgyLS41NTdhLjI0LjI0IDAgMCAwLS4zMDUuMDNsLTEuMDIxIDEuMDJhLjI0My4yNDMgMCAwIDAtLjAyNS4zMTNsLjQ3My42NDVhMS4zIDEuMyAwIDAgMSAuMTYzIDEuMjUzYy0uMTY0LjQyLS41MjcuNzIyLS45NzEuODA3bC0uNzU0LjE0NWEuMjQxLjI0MSAwIDAgMC0uMTk0LjIzNnYxLjQ0NGMwIC4xMTkuMDg3LjIyMS4yMDQuMjM5bC43OS4xMjFhMS4zIDEuMyAwIDAgMSAxIC43NzFjLjE4Mi40MTQuMTM4Ljg4NC0uMTE1IDEuMjU3bC0uNDMuNjM1YS4yNDMuMjQzIDAgMCAwIC4wMy4zMDdsMS4wMiAxLjAyYS4yNDIuMjQyIDAgMCAwIC4zMTMuMDI1bC42NDUtLjQ3M2ExLjMwNCAxLjMwNCAwIDAgMSAxLjI1Mi0uMTY0Yy40MjEuMTY1LjcyMy41MjguODA4Ljk3MmwuMTQ0Ljc1M2EuMjQyLjI0MiAwIDAgMCAuMjM3LjE5NWgxLjQ0NGEuMjQuMjQgMCAwIDAgLjIzOC0uMjAzbC4wODUtLjU1N2ExLjMgMS4zIDAgMCAxIC43OTQtMS4wMTEgMS4zIDEuMyAwIDAgMSAxLjI3NS4xNTVsLjQ1NC4zMzNhLjI0LjI0IDAgMCAwIC4zMTMtLjAyNmwxLjAyLTEuMDE5YS4yNDMuMjQzIDAgMCAwIC4wMy0uMzA3bC0uNDMxLS42MzVhMS4zIDEuMyAwIDAgMS0uMTE1LTEuMjU3IDEuMyAxLjMgMCAwIDEgMS0uNzcxbC43OS0uMTIxYS4yNDIuMjQyIDAgMCAwIC4yMDUtLjIzOVY3LjM5OGEuMjQyLjI0MiAwIDAgMC0uMTk1LS4yMzciLGZpbGxSdWxlOiJldmVub2RkIn0pKX07SUwuZGlzcGxheU5hbWU9IlNldHRpbmdzIixJTC5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgQUw9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoSUwse2NsYXNzTmFtZToiR2x5cGggU2V0dGluZ3MifSl9LEZMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTYgMlYxaDR2MWg0djJIMlYyaDR6TTMgNWgxMHYxMEgzVjV6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O0ZMLmRpc3BsYXlOYW1lPSJUcmFzaCIsRkwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIEJMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEZMLHtjbGFzc05hbWU6IkdseXBoIFRyYXNoIn0pfSx6TD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNCA2djlIMlY2aDEyem0tNCAySDZhMSAxIDAgMSAwIDAgMmg0YTEgMSAwIDAgMCAwLTJ6bTMuNDAyLTguMDAzbC41ODUgMS45MTNMLjU5OCA2LjAwMy4wMTMgNC4wOSAxMy40MDItLjAwM3oiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07ekwuZGlzcGxheU5hbWU9IlVuYXJjaGl2ZSIsekwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIEtMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHpMLHtjbGFzc05hbWU6IkdseXBoIFVuYXJjaGl2ZSJ9KX0scUw9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNCAxMmg4di0yaDJ2NEgydi00aDJ2MnptNS02djRIN1Y2SDRsNC00IDQgNEg5eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtxTC5kaXNwbGF5TmFtZT0iVXBsb2FkIixxTC5kZWZhdWx0UHJvcHM9e3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgVkw9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocUwse2NsYXNzTmFtZToiR2x5cGggVXBsb2FkIn0pfSxVTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xNCAzYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMTJ6TTcgNnY0bDMtMi0zLTJ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O1VMLmRpc3BsYXlOYW1lPSJWaWRlbyIsVUwuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFdMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KFVMLHtjbGFzc05hbWU6IkdseXBoIFZpZGVvIn0pfSxZTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik03IDBhNyA3IDAgMCAxIDUuNjA3IDExLjE5MWwzLjEgMy4xMDItMS40MTQgMS40MTQtMy4xMDItMy4xQTcgNyAwIDEgMSA3IDB6bTAgMmE1IDUgMCAxIDAgMCAxMEE1IDUgMCAwIDAgNyAyem0xIDF2M2gzdjJIOHYzSDZWOEgzVjZoM1YzaDJ6IixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O1lMLmRpc3BsYXlOYW1lPSJab29tSW4iLFlMLmRlZmF1bHRQcm9wcz17d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBITD1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChZTCx7Y2xhc3NOYW1lOiJHbHlwaCBab29tSW4ifSl9LEdMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTcgMGE3IDcgMCAwIDEgNS42MDcgMTEuMTkxbDMuMSAzLjEwMi0xLjQxNCAxLjQxNC0zLjEwMi0zLjFBNyA3IDAgMSAxIDcgMHptMCAyYTUgNSAwIDEgMCAwIDEwQTUgNSAwIDAgMCA3IDJ6bTQgNHYySDNWNmg4eiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtHTC5kaXNwbGF5TmFtZT0iWm9vbU91dCIsR0wuZGVmYXVsdFByb3BzPXt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFFMPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEdMLHtjbGFzc05hbWU6IkdseXBoIFpvb21PdXQifSl9LEpMPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE0IDM4LjU0M2MwIDIuMDY1IDcuMDE0IDMuNzQgMTQuMDI4IDMuNzRzMTQuMDMtMS42NzUgMTQuMDMtMy43NHYtMS44N2MwLTIuMDY3LTcuMDE2LTMuNzQyLTE0LjAzLTMuNzRDMjEuMDE0IDMyLjkzNCAxNCAzNC42MDYgMTQgMzYuNjczdjEuODd6bTAgNS40NzR2My4yNzNjMCAyLjA2NiA3LjAxNCAzLjc0IDE0LjAyOCAzLjc0czE0LjAzLTEuNjc0IDE0LjAzLTMuNzR2LTMuMjczTTE0IDUyLjc2NHYzLjI3M2MwIDIuMDY2IDcuMDE0IDMuNzQxIDE0LjAyOCAzLjc0MXMxNC4wMy0xLjY3NSAxNC4wMy0zLjc0MXYtMy4yNzNNMzIgMTEuOTgxSDIxdjIxbTMyLjUzOC0yMS4wNDlsNy40NjIuMDQ5VjYxLjAzbC0xOC45NDMtLjA0OXYzLjMyMmMwIDIuMDY2LTcuMDE0IDMuNzQxLTE0LjAyOSAzLjc0MS03LjAxNCAwLTE0LjAyOC0xLjY3NS0xNC4wMjgtMy43NDFWNjEuMDNtMzEuMzYtNDkuMDQ5Yy4wMS0uMTA2LjAxOC0uMjEyLjAxOC0uMzIgMC0yLjI5OC0yLjA2NS00LjE2MS00LjYxMy00LjE2MS0yLjU0OCAwLTQuNjEzIDEuODYzLTQuNjEzIDQuMTYxIDAgLjEwOC4wMS4yMTQuMDE4LjMySDI5djdoMjR2LTdoLTcuNjR6IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O0pMLmRpc3BsYXlOYW1lPSJBY2NvdW50aW5nIixKTC5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgWkw9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoSkwse2NsYXNzTmFtZToiT3V0bGluZSBBY2NvdW50aW5nIn0pfSwkTD1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0yNiAzNmgxMHYzMEgyNlYzNnptMTQgNmgxMHYyNEg0MFY0MnptMTQtMTNoMTB2MzdINTRWMjl6TTEyIDUwaDEwdjE2SDEyVjUwek04IDY2aDYwSDh6bTguNS00MGEyLjUgMi41IDAgMSAwIDAtNSAyLjUgMi41IDAgMCAwIDAgNXptMTUtOWEyLjUgMi41IDAgMSAwIDAtNSAyLjUgMi41IDAgMCAwIDAgNXptMTMgOGEyLjUgMi41IDAgMSAwIDAtNSAyLjUgMi41IDAgMCAwIDAgNXptMTUtMTJhMi41IDIuNSAwIDEgMCAwLTUgMi41IDIuNSAwIDAgMCAwIDV6TTE5IDIybDExLTctMTEgN3ptMTUtN2w4IDYtOC02em0xMyA3bDExLTEwLTExIDEweiIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTskTC5kaXNwbGF5TmFtZT0iQW5hbHl0aWNzIiwkTC5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgWEw9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoJEwse2NsYXNzTmFtZToiT3V0bGluZSBBbmFseXRpY3MifSl9LGVSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM4LjUgNC41QzQ1LjQwNCA0LjUgNTEgMTAuMDk2IDUxIDE3djI2YzAgNi45MDMtNS41OTYgMTIuNS0xMi41IDEyLjVDMzEuNTk3IDU1LjUgMjYgNDkuOTAzIDI2IDQzVjE3YzAtNi45MDQgNS41OTctMTIuNSAxMi41LTEyLjV6TTUxIDY4SDQxdi04aC01djhIMjZ2NGgyNXYtNHpNMjYgMzZoMjUtMjV6bS00LS4wMzd2Ny4zODVjMCA5LjEwNCA3LjM4NyAxNi40ODUgMTYuNSAxNi40ODVTNTUgNTIuNDUyIDU1IDQzLjM0OHYtNy4zODUiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07ZVIuZGlzcGxheU5hbWU9IkFydGlzdHMiLGVSLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciB0Uj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChlUix7Y2xhc3NOYW1lOiJPdXRsaW5lIEFydGlzdHMifSl9LG5SPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTUzLjUgMzkuNWE0IDQgMCAxIDEtOCAwIDQgNCAwIDAgMSA4IDB6TTEyIDU5bDE1LjYtMTRMNjQgNjZNMTYuMzY0IDIxLjk5NUMxOC4yNDcgMTEuNzU3IDI3LjIxOCA0IDM3Ljk5OSA0YzEwLjc4MyAwIDE5Ljc1NSA3Ljc1NyAyMS42MzcgMTcuOTk1bS0zNy4xMDIuMDA2YTE3Ljc4NyAxNy43ODcgMCAwIDEgMTAuODczLTExLjM5NE0xMiA3Mmg1MlYyMkgxMnY1MHoiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07blIuZGlzcGxheU5hbWU9IkFydHdvcmsiLG5SLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciByUj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChuUix7Y2xhc3NOYW1lOiJPdXRsaW5lIEFydHdvcmsifSl9LG9SPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTM4IDNjMTkuMzMgMCAzNSAxNS42NyAzNSAzNVM1Ny4zMyA3MyAzOCA3MyAzIDU3LjMzIDMgMzggMTguNjcgMyAzOCAzem0wIDI1LjI4NWM1LjM2NSAwIDkuNzE0IDQuMzUgOS43MTQgOS43MTUgMCA1LjM2NC00LjM0OSA5LjcxNC05LjcxNCA5LjcxNHMtOS43MTQtNC4zNS05LjcxNC05LjcxNGMwLTUuMzY1IDQuMzQ5LTkuNzE1IDkuNzE0LTkuNzE1em0wIDcuNzcyYTEuOTQzIDEuOTQzIDAgMSAxIDAgMy44ODYgMS45NDMgMS45NDMgMCAwIDEgMC0zLjg4NnptNC41Ni0yMy44OTFjOS4zMSAxLjYzMiAxNi45MzEgOC4xNzUgMjAuMDkzIDE2Ljg2IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O29SLmRpc3BsYXlOYW1lPSJDZCIsb1IuZGVmYXVsdFByb3BzPXt3aWR0aDoiNzYiLGhlaWdodDoiNzYiLHZpZXdCb3g6IjAgMCA3NiA3NiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIGFSPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KG9SLHtjbGFzc05hbWU6Ik91dGxpbmUgQ2QifSl9LGlSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzIDR2NjhoNTBWMTZMNTEgNEgxM3ptMzggMHYxMmgxMk0yMiAyOWgzMnYzMEgyMlYyOXptLjUgMTBoMzEtMzF6TTMyIDI5djMxLTMxem0tOS41IDIwaDMxLTMxeiIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtpUi5kaXNwbGF5TmFtZT0iQ3N2IixpUi5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgdVI9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoaVIse2NsYXNzTmFtZToiT3V0bGluZSBDc3YifSl9LHNSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTE0IDloNnY5aC02Vjl6bTQyIDBoNnY5aC02Vjl6bTEzIDE1SDdoNjJ6bS04IDIxSDE1aDQ2em0tNS0zMEgyMWgzNXptLTQyIDBIN3Y0OWg2MlYxNWgtN00xNCAzM2g0OHYyNEgxNFYzM3ptMzYgMjRWMzN2MjR6bS0xMiAwVjMzdjI0em0tMTIgMFYzM3YyNHoiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07c1IuZGlzcGxheU5hbWU9IkNhbGVuZGFyIixzUi5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgbFI9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoc1Ise2NsYXNzTmFtZToiT3V0bGluZSBDYWxlbmRhciJ9KX0sY1I9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjUgOC4wMThIMTN2NjRoNTB2LTY0SDUybS0yOCAxOWEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTR6bTAgMTNhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00em0wIDEzYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNHptOS0xMS4wMWgyMi0yMnptMC0xM2gyMi0yMnptMCAyNmgyMi0yMnptMTEuNDQ1LTQ2Ljk5Yy4wMTItLjE1My4wMjQtLjMwOC4wMjQtLjQ2NiAwLTMuMzQyLTIuODE2LTYuMDUyLTYuMjktNi4wNTJzLTYuMjkgMi43MS02LjI5IDYuMDUyYzAgLjE1OC4wMTIuMzEzLjAyNC40NjZIMjNWMTZoMzFWOC4wMThoLTkuNTU1eiIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtjUi5kaXNwbGF5TmFtZT0iQ2xpcGJvYXJkIixjUi5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgZlI9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoY1Ise2NsYXNzTmFtZToiT3V0bGluZSBDbGlwYm9hcmQifSl9LGRSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTYzLjUgMjhhNi41IDYuNSAwIDEgMS0xMyAwIDYuNSA2LjUgMCAwIDEgMTMgMHpNNCA1MGwxNi0xNyAzNiAyNCAxNi0xNk00IDYzaDY4VjEzSDR2NTB6IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O2RSLmRpc3BsYXlOYW1lPSJDb3ZlcmFydCIsZFIuZGVmYXVsdFByb3BzPXt3aWR0aDoiNzYiLGhlaWdodDoiNzYiLHZpZXdCb3g6IjAgMCA3NiA3NiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIHBSPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGRSLHtjbGFzc05hbWU6Ik91dGxpbmUgQ292ZXJhcnQifSl9LGhSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzIDR2NjhoNTBWMTZMNTEgNEgxM3ptMzggMHYxMmgxMk0yNiA1NmEyIDIgMCAxIDAgMC00IDIgMiAwIDAgMCAwIDR6bTAtMTJhMiAyIDAgMSAwIDAtNCAyIDIgMCAwIDAgMCA0em0wLTEyYTIgMiAwIDEgMCAwLTQgMiAyIDAgMCAwIDAgNHptOSAyMmgxOC0xOHptMC0xMmgxOC0xOHptMC0xMmgxOC0xOHoiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07aFIuZGlzcGxheU5hbWU9IkRhdGEiLGhSLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciB5Uj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChoUix7Y2xhc3NOYW1lOiJPdXRsaW5lIERhdGEifSl9LG1SPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzIDR2NjhoNTBWMTZMNTEgNEgxM3ptMzggMHYxMmgxMk0zMSAzNmwxNi0zLTE2IDN6bTAgMTcuNDE0YTMgMyAwIDEgMS02IDAgMyAzIDAgMCAxIDYgMHptMTYtM2EzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDB6bS0xNiAyLjcxVjMxbDE2LTN2MjIuMTI1IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O21SLmRpc3BsYXlOYW1lPSJEaWdpdGFsQXVkaW8iLG1SLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciB2Uj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChtUix7Y2xhc3NOYW1lOiJPdXRsaW5lIERpZ2l0YWxBdWRpbyJ9KX0sZ1I9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOCA2OGg2MFY4SDh2NjB6bTI2LTM3Ljg2OGw5IDYuMTM3LTkgNi4xMzVWMzAuMTMyek0xNCAxOGg1di00aC01djR6bTAgMTFoNXYtNGgtNXY0em0wIDExaDV2LTRoLTV2NHptMCAxMWg1di00aC01djR6bTAgMTFoNXYtNGgtNXY0em00My00NGg1di00aC01djR6bTAgMTFoNXYtNGgtNXY0em0wIDExaDV2LTRoLTV2NHptMCAxMWg1di00aC01djR6bTAgMTFoNXYtNGgtNXY0eiIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtnUi5kaXNwbGF5TmFtZT0iRmlsbSIsZ1IuZGVmYXVsdFByb3BzPXt3aWR0aDoiNzYiLGhlaWdodDoiNzYiLHZpZXdCb3g6IjAgMCA3NiA3NiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIGJSPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGdSLHtjbGFzc05hbWU6Ik91dGxpbmUgRmlsbSJ9KX0sd1I9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNjkgMzUuOTM0YzAgMTcuMDg0LTEzLjg3OSAzMC45MzQtMzEgMzAuOTM0YTMxIDMxIDAgMCAxLTEwLjc3OC0xLjkyMWMtLjYzLS4yMzQtMS41ODMgMi4zMzctNS45NTggNC40MTUtNC4zOTEgMi4wODctOS4wNDIgMS40OTctOS4wNDIgMS40OTdzMi45NDQtMi42OTggNC41LTUuOGMxLjI1OC0yLjUwNyAxLjMxMS01LjQzNy40OTktNi4xNjlDMTAuOTQ0IDUzLjIyOSA3IDQ1LjA0MSA3IDM1LjkzNCA3IDE4Ljg1IDIwLjg3OSA1IDM4IDVjMTcuMTIxIDAgMzEgMTMuODUgMzEgMzAuOTM0em0tMzEtMi45NjZhMyAzIDAgMSAwIDAgNiAzIDMgMCAwIDAgMC02em0tMTMgMGEzIDMgMCAxIDAgMCA2IDMgMyAwIDAgMCAwLTZ6bTI2IDBhMyAzIDAgMSAwIDAgNiAzIDMgMCAwIDAgMC02eiIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTt3Ui5kaXNwbGF5TmFtZT0iSWRlYXMiLHdSLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBfUj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCh3Uix7Y2xhc3NOYW1lOiJPdXRsaW5lIElkZWFzIn0pfSxFUj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zMS4zMiA0NS45OTFsNi43ODYgMjQuMDA3SDI0LjQxbC02LjUyOC0yNC4xMzNNNjMgMjUuMzkxYzQuOTcgMCA5IDQuMDU0IDkgOS4wNTRzLTQuMDMgOS4wNTItOSA5LjA1Mk0xNS4yMDggMjRINnYxNy45NTZoOS4yMDhNNjMgNTguNUwzMS4zMiA0NS45OTFIMTguODRBMy44NDQgMy44NDQgMCAwIDEgMTUgNDIuMTQyVjIzLjg1OWEzLjg0NCAzLjg0NCAwIDAgMSAzLjg0LTMuODQ5aDEyLjQ4TDYzIDcuNXY1MXoiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07RVIuZGlzcGxheU5hbWU9Ik1hcmtldGluZyIsRVIuZGVmYXVsdFByb3BzPXt3aWR0aDoiNzYiLGhlaWdodDoiNzYiLHZpZXdCb3g6IjAgMCA3NiA3NiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIE9SPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEVSLHtjbGFzc05hbWU6Ik91dGxpbmUgTWFya2V0aW5nIn0pfSxrUj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik00IDYxaDY4VjE1SDR2NDZ6bTMxLTMzbDkgNi4xMzgtOSA2LjEzNVYyOHptLTggMjVhMi41IDIuNSAwIDEgMS01IC4wMDEgMi41IDIuNSAwIDAgMSA1IDB6bTAgMGgzOS0zOXptLTE3IDBoMTItMTJ6IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O2tSLmRpc3BsYXlOYW1lPSJNdXNpY1ZpZGVvIixrUi5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgQ1I9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoa1Ise2NsYXNzTmFtZToiT3V0bGluZSBNdXNpY1ZpZGVvIn0pfSx4Uj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02My44NjEgNjlIMTEuOTA2QzkuMTk2IDY5IDcgNjYuNzYxIDcgNjRWN2g1MS45OTdsLjAwMiA1Ni45OTdBNC45OTggNC45OTggMCAwIDAgNjQgNjguOTk0YzIuNzYxIDAgNS0yLjE5IDUtNC45NTJWMzlINTltLTQxLThoMTZWMTlIMTh2MTJ6bS0xIDE2Ljk5aDE4LTE4em0wLThoMTgtMTh6bTAgMTZoMTgtMTh6IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O3hSLmRpc3BsYXlOYW1lPSJOZXdzIix4Ui5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgU1I9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoeFIse2NsYXNzTmFtZToiT3V0bGluZSBOZXdzIn0pfSxEUj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgiZyIse2ZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0sRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMjMgMzVoNDB2MjRIMjNWMzV6TTEzIDR2NjhoNTBWMTZMNTEgNEgxM3ptMzggMHYxMmgxMk0zMSA0MXYxMi0xMnptNSAxaC02IDZ6bTAgN2gtNiA2em0xLTZ2NS01em0xNS0ydjEyLTEyem02IDFoLTcgN3ptLTEgNWgtNiA2em0tMTYtNnYxMi0xMnptNiAxaC03IDd6bTAgMTBoLTcgN3ptMS05djgtOHoifSkpKX07RFIuZGlzcGxheU5hbWU9IlBkZiIsRFIuZGVmYXVsdFByb3BzPXt3aWR0aDoiNzYiLGhlaWdodDoiNzYiLHZpZXdCb3g6IjAgMCA3NiA3NiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFRSPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KERSLHtjbGFzc05hbWU6Ik91dGxpbmUgUGRmIn0pfSxNUj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zOCA1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2cy03LjE2My0xNi0xNi0xNi0xNiA3LjE2My0xNiAxNiA3LjE2MyAxNiAxNiAxNnptMC00YzYuNjI3IDAgMTItNS4zNzMgMTItMTJzLTUuMzczLTEyLTEyLTEyLTEyIDUuMzczLTEyIDEyIDUuMzczIDEyIDEyIDEyem0wLTRhOCA4IDAgMCAwIDgtOE00IDIwaDE3bDUtOGgyNGw1IDhoMTd2NDJINFYyMHptNSAwdi00aDh2NG01MCA1aC04IDh6IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O01SLmRpc3BsYXlOYW1lPSJQaG90byIsTVIuZGVmYXVsdFByb3BzPXt3aWR0aDoiNzYiLGhlaWdodDoiNzYiLHZpZXdCb3g6IjAgMCA3NiA3NiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07dmFyIFBSPWZ1bmN0aW9uKCl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KE1SLHtjbGFzc05hbWU6Ik91dGxpbmUgUGhvdG8ifSl9LE5SPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzIDR2NjhoNTBWMTZMNTEgNEgxM3ptMzggMHYxMmgxMk0yOCAyN3YzMG00LTI0djE4bTQtMTF2NG00LTh2MTJtOC0yM3YzNG00LTI0djE0bTQtMTF2OE0yNCAzM3YxOG0tNC0xNXYxMm0yNC0xNXYxOCIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtOUi5kaXNwbGF5TmFtZT0iUG9kY2FzdEZpbGUiLE5SLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBqUj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChOUix7Y2xhc3NOYW1lOiJPdXRsaW5lIFBvZGNhc3RGaWxlIn0pfSxMUj1mdW5jdGlvbihlKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZSxFLmEuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0zOC4wNDcgMjMuOTkyQTkuOTU4IDkuOTU4IDAgMCAxIDQ0LjAzOCAyMmM1LjUyMiAwIDEwIDQuNDc2IDEwIDEwIDAgNS41MjItNC40NzggMTAtMTAgMTAtLjMzNSAwLS42NjUtLjAxNy0uOTktLjA0OU0xOSA1Ni4wNDdhMi4zOTUgMi4zOTUgMCAxIDEtNC43OSAwIDIuMzk1IDIuMzk1IDAgMCAxIDQuNzkgMHptMTMuMDA4LTIuMzk0YTIuMzk0IDIuMzk0IDAgMSAxLTQuNzg4IDAgMi4zOTQgMi4zOTQgMCAwIDEgNC43ODggMHpNMTkgNTYuMDQ3VjM5bDEzLTN2MTcuNjU3TTE5IDQzbDEzLTMtMTMgM3ptLjYtMjIuNDk0QzIzLjkxNyAxMS4zNDIgMzMuMjM3IDUgNDQuMDM4IDVjMTQuOTEyIDAgMjcgMTIuMDg4IDI3IDI3IDAgMTQuOTExLTEyLjA4OCAyNy0yNyAyNy0uMzMyIDAtLjY2Mi0uMDA3LS45OTEtLjAxOE02IDIwdjUwaDM4VjI5bC05LTlINnptMjkgMHY5aDkiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07TFIuZGlzcGxheU5hbWU9IlByb2R1Y3RzIixMUi5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgUlI9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQoTFIse2NsYXNzTmFtZToiT3V0bGluZSBQcm9kdWN0cyJ9KX0sSVI9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTQuMDE3IDE5di03SDMyLjdsNS4wOTggOGgzMi4yMTlWNjAuMjc5YzAgMi4wNDctMS42MTEgMy43MjEtMy41ODIgMy43MjEtMi4wOTYgMC0zLjQxOC0xLjY3NC0zLjQxOC0zLjcyMXYtMi4xNzFWNTkgMjdIMzAuNzk4TDI1LjcgMTlINy4wMTdMNyA2MGE0IDQgMCAwIDAgNC4wMTcgNGg1NS4xMjJNMzQuMDE3IDM3aDIwLTIwem0wIDhoMjAtMjB6bTAgOGgyMC0yMHoiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07SVIuZGlzcGxheU5hbWU9IlByb2plY3QiLElSLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBBUj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChJUix7Y2xhc3NOYW1lOiJPdXRsaW5lIFByb2plY3QifSl9LEZSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTYgNjNoNjRWMTNINnY1MHptMC00NGg2NEg2em00MiAxMGgxNS0xNXptMCA3aDE1LTE1em0wIDdoMTUtMTV6bS05Ljk2LTJBMy4zNDggMy4zNDggMCAwIDEgNDEgMzcuNjhhMTQuMzE3IDE0LjMxNyAwIDAgMC0xLjc1NS00LjIzIDMuMzQ4IDMuMzQ4IDAgMCAxLTQuNDM4LS4yNTZjLTEuMjE1LTEuMjE1LTEuMjktMy4xMi0uMjU2LTQuNDRBMTQuMzE3IDE0LjMxNyAwIDAgMCAzMC4zMTkgMjcgMy4zNDggMy4zNDggMCAwIDEgMjcgMjkuOTYgMy4zNDggMy4zNDggMCAwIDEgMjMuNjgyIDI3Yy0xLjUyLjM2LTIuOTQxLjk1OC00LjIzMiAxLjc1NWEzLjM1IDMuMzUgMCAwIDEtLjI1NSA0LjQzOSAzLjM0OCAzLjM0OCAwIDAgMS00LjQzOC4yNTVBMTQuMjg4IDE0LjI4OCAwIDAgMCAxMyAzNy42ODFjMS42NjUuMiAyLjk2IDEuNiAyLjk2IDMuMzE5QTMuMzQ4IDMuMzQ4IDAgMCAxIDEzIDQ0LjMyYy4zNiAxLjUxOC45NTggMi45NCAxLjc1NiA0LjIzYTMuMzQ4IDMuMzQ4IDAgMCAxIDQuNDM4LjI1NiAzLjM1IDMuMzUgMCAwIDEgLjI1NSA0LjQ0QTE0LjMxNyAxNC4zMTcgMCAwIDAgMjMuNjgxIDU1Yy4yLTEuNjY1IDEuNi0yLjk2IDMuMzE5LTIuOTZBMy4zNDggMy4zNDggMCAwIDEgMzAuMzIgNTVhMTQuMzE3IDE0LjMxNyAwIDAgMCA0LjIzLTEuNzU1Yy0xLjAzMy0xLjMyLS45NTgtMy4yMjQuMjU3LTQuNDM5YTMuMzQ4IDMuMzQ4IDAgMCAxIDQuNDM4LS4yNTVBMTQuMzE3IDE0LjMxNyAwIDAgMCA0MSA0NC4zMTkgMy4zNDggMy4zNDggMCAwIDEgMzguMDQgNDF6TTMxIDQxYTQgNCAwIDEgMS04IDAgNCA0IDAgMCAxIDggMHoiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pKX07RlIuZGlzcGxheU5hbWU9IlRlY2hub2xvZ3kiLEZSLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBCUj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChGUix7Y2xhc3NOYW1lOiJPdXRsaW5lIFRlY2hub2xvZ3kifSl9LHpSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEzIDR2NjhoNTBWMTZMNTEgNEgxM3ptMzggMHYxMmgxMk0yNSA1NmgyNi0yNnptMC04aDI2LTI2em0xMi04aDE0LTE0ek0yNiAyNHYxNWwxMC03LjVMMjYgMjR6IixmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCJ9KSl9O3pSLmRpc3BsYXlOYW1lPSJUcmFja2xpc3QiLHpSLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBLUj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCh6Uix7Y2xhc3NOYW1lOiJPdXRsaW5lIFRyYWNrbGlzdCJ9KX0scVI9ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KCJzdmciLGUsRS5hLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNNjcuNDkgMzguMTljMCAxNi4wMTctMTIuOTgzIDI5LTI5IDI5LTE2LjAxNSAwLTI5LTEyLjk4My0yOS0yOSAwLTE2LjAxNiAxMi45ODUtMjkgMjktMjkgMTYuMDE3IDAgMjkgMTIuOTg0IDI5IDI5em0tNTYuNDcyIDkuMzEyYy00LjUgOC44MzQtNS40MzcgMTYuNDMyLTEuNzAzIDIwLjE2NiA2LjUzMiA2LjUzMSAyNC44OS0xLjIzNSA0MS4wMDQtMTcuMzUgMTYuMTE0LTE2LjExMyAyMy44OC0zNC40NyAxNy4zNDktNDEuMDA0LTMuNjY3LTMuNjY2LTExLjA2LTIuODI4LTE5LjY5IDEuNDYzTTM0Ljk5MiAzMC42OTFsMTEgNy41LTExIDcuNXYtMTV6TTE3LjI2OCA1Ny45NTRBMjguOSAyOC45IDAgMCAxIDkuNDkgMzguMTljMC0xNi4wMTYgMTIuOTg0LTI5IDI5LTI5YTI4Ljg2OCAyOC44NjggMCAwIDEgMTYuNSA1LjE0OSIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtxUi5kaXNwbGF5TmFtZT0iVmlkZW9Ub3VyIixxUi5kZWZhdWx0UHJvcHM9e3dpZHRoOiI3NiIsaGVpZ2h0OiI3NiIsdmlld0JveDoiMCAwIDc2IDc2Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTt2YXIgVlI9ZnVuY3Rpb24oKXtyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQocVIse2NsYXNzTmFtZToiT3V0bGluZSBWaWRlb1RvdXIifSl9LFVSPWZ1bmN0aW9uKGUpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgic3ZnIixlLEUuYS5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTcyIDM4YzAgMTguNzc4LTE1LjIyMiAzNC0zNCAzNFM0IDU2Ljc3OCA0IDM4QzQgMTkuMjIxIDE5LjIyMiA0IDM4IDRzMzQgMTUuMjIxIDM0IDM0em0tMjAuNSAwYzAgNy40NTUtNi4wNDQgMTMuNS0xMy41IDEzLjVTMjQuNSA0NS40NTUgMjQuNSAzOGMwLTcuNDU2IDYuMDQ0LTEzLjUgMTMuNS0xMy41UzUxLjUgMzAuNTQ0IDUxLjUgMzh6TTQwIDM4YTIgMiAwIDEgMS00LjAwMS0uMDAxQTIgMiAwIDAgMSA0MCAzOHptLTI4LjU5NC00LjYxOGMxLjY3Ny05LjQ1IDguNDE0LTE3LjE4NCAxNy4zNTgtMjAuMzkzbTM1LjgzIDI5LjYzNmMtMS42OCA5LjQ0Ny04LjQxNiAxNy4xNzgtMTcuMzU3IDIwLjM4Nk0xOC4zMDIgMzQuNTc0YzEuMjQ0LTYuOTk4IDYuMjM0LTEyLjcyNSAxMi44NTYtMTUuMTAxTTU3LjcgNDEuNDJjLTEuMjQzIDctNi4yMzMgMTIuNzMtMTIuODU4IDE1LjEwNiIsZmlsbDoibm9uZSIsZmlsbFJ1bGU6ImV2ZW5vZGQifSkpfTtVUi5kaXNwbGF5TmFtZT0iVmlueWwiLFVSLmRlZmF1bHRQcm9wcz17d2lkdGg6Ijc2IixoZWlnaHQ6Ijc2Iix2aWV3Qm94OiIwIDAgNzYgNzYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3ZhciBXUixZUixIUj1mdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChVUix7Y2xhc3NOYW1lOiJPdXRsaW5lIFZpbnlsIn0pfSxHUj0oV1I9e30sdygpKFdSLCJmcm9udGVuZC1yZWFjdC1jb21wb25lbnRzIix5KSx3KCkoV1IsIkBvcmNoYXJkL2Zyb250ZW5kLXJlYWN0LWNvbXBvbmVudHMiLHkpLFdSKSxRUj1ucCgoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LG49dC5kZWZhdWx0TG9jYWxlLG89dm9pZCAwPT09bj8iZW4iOm4sYT1uZXcgRy5hKG8pO3JldHVybntjb25maWd1cmVMb2NhbGl6YXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIGEuY29uZmlndXJlKGUpfSxnZXRDdXJyZW50TG9jYWxlOmZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Q3VycmVudExvY2FsZSgpfSxmb3JtYXRNZXNzYWdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEuZm9ybWF0TWVzc2FnZShlLHQpfSxzZXRDdXJyZW50TG9jYWxlOmZ1bmN0aW9uKGUpe3JldHVybiBhLnNldEN1cnJlbnRMb2NhbGUoZSl9LHJlZ2lzdGVyVHJhbnNsYXRpb25zOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEucmVnaXN0ZXJUcmFuc2xhdGlvbnMoZSx0KX0sYXBpOnIsSWRlbnRpdHlNYW5hZ2VyOmxlLEdsb2JhbFNlYXJjaDpucixTZWFyY2hDb21wb25lbnQ6JG4sRXJyb3JDb21wb25lbnQ6aXIsRXJyb3JCb3VuZGFyeTpvcn19KSk7ZnVuY3Rpb24gSlIoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufXZhciBaUj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9KUihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3coKShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6SlIoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LG9wLHt9LEdSLHt9LChZUj17fSx3KCkoWVIsIndvcmtzdGF0aW9uLXV0aWxzIixRUiksdygpKFlSLCJAb3JjaGFyZC9mcm9udGVuZC13b3Jrc3RhdGlvbiIse2FwaTpyLElkZW50aXR5TWFuYWdlcjpsZSxHbG9iYWxTZWFyY2g6bnIsU2VhcmNoQ29tcG9uZW50OiRuLEVycm9yQ29tcG9uZW50OmlyLEVycm9yQm91bmRhcnk6b3J9KSxZUikpLCRSPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIEooKSh0aGlzLHQpLFNlKCkodGhpcyxUZSgpKHQpLmNhbGwodGhpcywiVW5rbm93biBleHRlcm5hbCBsaWJyYXJ5IHJlcXVlc3RlZDogJyIuY29uY2F0KGUsIiciKSkpfXJldHVybiBqZSgpKHQsZSksdH0oUmUoKShFcnJvcikpLFhSPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIEooKSh0aGlzLHQpLFNlKCkodGhpcyxUZSgpKHQpLmNhbGwodGhpcywnTm8gZW50cnkgcG9pbnQgZm91bmQgZm9yIG1vZHVsZTogIicuY29uY2F0KGUsJyInKSkpfXJldHVybiBqZSgpKHQsZSksdH0oUmUoKShFcnJvcikpLGVJPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIEooKSh0aGlzLHQpLFNlKCkodGhpcyxUZSgpKHQpLmNhbGwodGhpcywnRHVwbGljYXRlIGRlZmluaXRpb24gZm9yIG1vZHVsZTogIicuY29uY2F0KGUsJyIuJykpKX1yZXR1cm4gamUoKSh0LGUpLHR9KFJlKCkoRXJyb3IpKSx0ST1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBKKCkodGhpcyx0KSxTZSgpKHRoaXMsVGUoKSh0KS5jYWxsKHRoaXMsJ01vZHVsZSAiJy5jb25jYXQoZSwnIiBkaWQgbm90IHJlZ2lzdGVyIGl0c2VsZiBkdXJpbmcgbG9hZC5cbiAgICAgICAgTWFrZSBzdXJlIHRoZSBtb2R1bGUgaXMgdXNpbmcgdGhlIEFNRCBwYXR0ZXJuLicpKSl9cmV0dXJuIGplKCkodCxlKSx0fShSZSgpKEVycm9yKSksbkk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyKXtKKCkodGhpcyxlKSx0aGlzLm5hbWU9dCx0aGlzLl9kZXBzPW4sdGhpcy5fZmFjdG9yeT1yLHRoaXMuZXhwb3J0cz17fX1yZXR1cm4gJCgpKGUsW3trZXk6ImxvYWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0aGlzLmNvbXBvbmVudClyZXR1cm4gdGhpcy5jb21wb25lbnQ7dmFyIHQ9dGhpcy5fZGVwcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPVpSW2VdO2lmKCFuKXRocm93IG5ldyAkUihlKTtyZXR1cm4gSW8uaW5kZXhPZihlKT49MD9uKHQpOm59KHQsZS5fbmFtZSl9KSk7cmV0dXJuIHRoaXMuY29tcG9uZW50PXRoaXMuX2ZhY3RvcnkuYXBwbHkodGhpcyx0KSx0aGlzLmNvbXBvbmVudH19XSksZX0oKSxyST17fSxvST1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7SigpKHRoaXMsZSksdygpKHRoaXMsIl9tb2R1bGVzIix7fSl9cmV0dXJuICQoKShlLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbihlLHQsbil7aWYodGhpcy5fbW9kdWxlc1tlXSl0aHJvdyBuZXcgZUkoZSk7dmFyIHI9bmV3IG5JKGUsdCxuKTt0aGlzLl9tb2R1bGVzW2VdPXJ9fSx7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tb2R1bGVzW2VdfX0se2tleToicmVzb2x2ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXQoZSk7aWYoIXQpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyB0SShlKSk7dHJ5e3ZhciBuPXQubG9hZCgpO3JldHVybiBuP1Byb21pc2UucmVzb2x2ZShuKTpQcm9taXNlLnJlamVjdChuZXcgWFIoZSkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiEhdGhpcy5nZXQoZSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMuX21vZHVsZXNbZV19fV0pLGV9KCkpO3dpbmRvdy5kZWZpbmU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvSS5pbml0KGUsdCxuKX07dmFyIGFJPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihySVt0XSlyZXR1cm4gcklbdF07aWYob0kuaGFzKHQpKXJldHVybiBvSS5yZXNvbHZlKHQpO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVybiBkZWxldGUgcklbdF0sZX07cmV0dXJuIHJJW3RdPWUuZ2V0KHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBuLHIsbz1lLnNjcmlwdHMsYT1lLnN0eWxlc2hlZXRzLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO3JldHVybiB0LmNoYXJzZXQ9InV0Zi04Iix0LnR5cGU9InRleHQvY3NzIix0LnJlbD0ic3R5bGVzaGVldCIsdC5ocmVmPWUsdC5jcm9zc09yaWdpbj1udWxsLHR9KSk7KG49ZG9jdW1lbnQuaGVhZCkuYXBwZW5kLmFwcGx5KG4sZygpKGEpKTt2YXIgaT1vLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7cmV0dXJuIHQuY2hhcnNldD0idXRmLTgiLHQudHlwZT0idGV4dC9qYXZhc2NyaXB0Iix0LnNyYz1lLHR9KSksdT1Qcm9taXNlLmFsbChpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG4pe2UuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsdCksZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBuKGUpfSkpfSkpfSkpKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvSS5yZXNvbHZlKHQpfSkpO3JldHVybihyPWRvY3VtZW50LmhlYWQpLmFwcGVuZC5hcHBseShyLGcoKShpKSksdX0pKS50aGVuKG4sKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuKGUpKX0pKSxySVt0XX19LGlJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe0ooKSh0aGlzLGUpLHRoaXMuY2RuVXJsPXQsdGhpcy5kZXBsb3lUaW1lc3RhbXA9bnx8IiIsdGhpcy5yZXF1ZXN0cz17fX1yZXR1cm4gJCgpKGUsW3trZXk6ImdldFVybCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuZW58fHQ7cmV0dXJuIHIuc3RhcnRzV2l0aCgiaHR0cCIpP3I6KHIuc3RhcnRzV2l0aCgiLyIpJiYocj1yLnN1YnN0cigxKSksIiIuY29uY2F0KHRoaXMuY2RuVXJsLCIvIikuY29uY2F0KGUsIi8iKS5jb25jYXQobj8iIi5jb25jYXQobiwiLyIpOiIiKS5jb25jYXQocikpfX0se2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPXtzY3JpcHRzOltdLHN0eWxlc2hlZXRzOltdfTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9bi5nZXRVcmwoZSx0W29dLHQudGltZXN0YW1wKTtvLmVuZHNXaXRoKCIuY3NzIik/ci5zdHlsZXNoZWV0cy5wdXNoKGEpOm8uZW5kc1dpdGgoIi5qcyIpJiZyLnNjcmlwdHMucHVzaChhKX0pKSxyfX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5yZXF1ZXN0c1tlXTtpZihuKXJldHVybiBuO3ZhciByPWZ1bmN0aW9uKG4pe3JldHVybiBkZWxldGUgdC5yZXF1ZXN0c1tlXSxufTtyZXR1cm4gdGhpcy5yZXF1ZXN0c1tlXT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXtyZXR1cm4gQWUuYS5nZXQoIiIuY29uY2F0KHQuY2RuVXJsLCIvIikuY29uY2F0KGUsIi9kbWwuanNvbj90PSIpLmNvbmNhdCh0LmRlcGxveVRpbWVzdGFtcCkpLnRoZW4oKGZ1bmN0aW9uKG4pe3ZhciByPW4uYm9keSxvPW4udGV4dDtyZXR1cm4gdC5wYXJzZShlLHJ8fEpTT04ucGFyc2UobykpfSkpLnRoZW4obixyKX0pKS50aGVuKHIsKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChyKGUpKX0pKSx0aGlzLnJlcXVlc3RzW2VdfX1dKSxlfSgpLHVJPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZXJyb3I7cmV0dXJuIHQ/RS5hLmNyZWF0ZUVsZW1lbnQob3Ise2Vycm9yOnR9KTpFLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsKX07dUkucHJvcFR5cGVzPXtlcnJvcjpWLmEuc2hhcGUoe21lc3NhZ2U6Vi5hLnN0cmluZ30pfTt2YXIgc0k9dUksbEk9KFJlKCkoRXJyb3IpLG5ldyBpSSgiaHR0cHM6Ly9jZG4udGhlb3JjaGFyZC5pbyIsIjRiYTI5MzY5NTdkY2Q1Mzg4NmVjOTEyM2FhNGFmNTdlYzhiNGIyMzkiKSksY0k9YUkobEkpLGZJPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXt2YXIgcjtyZXR1cm4gSigpKHRoaXMsdCksKHI9U2UoKSh0aGlzLFRlKCkodCkuY2FsbCh0aGlzLGUsbikpKS5zdGF0ZT17ZmFpbGVkOm51bGx9LHJ9cmV0dXJuIGplKCkodCxlKSwkKCkodCxudWxsLFt7a2V5OiJjb25maWd1cmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuY2RuVXJsLG49ZS5kZXBsb3lUaW1lc3RhbXA7dCYmKGxJLmNkblVybD10KSxuJiYobEkuZGVwbG95VGltZXN0YW1wPW4pfX0se2tleToiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZmFpbGVkO3JldHVybiBlLm1vZHVsZSE9PW4/e2ZhaWxlZDpudWxsfTpudWxsfX1dKSwkKCkodCxbe2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5zdGF0ZS5mYWlsZWQsbz10aGlzLmNvbnRleHQuaWRlbnRpdHksYT10aGlzLnByb3BzLm1vZHVsZTtyZXR1cm4gZS5tb2R1bGUhPT1hfHx0LmZhaWxlZCE9PXJ8fG4uaWRlbnRpdHkhPT1vfX0se2tleToiY29tcG9uZW50RGlkQ2F0Y2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5tb2R1bGU7dGhpcy5zZXRTdGF0ZSh7ZmFpbGVkOmV9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnRleHQuaWRlbnRpdHksdD10aGlzLnN0YXRlLmZhaWxlZCxuPXRoaXMucHJvcHMscj1uLm1vZHVsZSxvPW4ucGFnZVRpdGxlLGE9bi5jbGFzc05hbWU7aWYodClyZXR1cm4gRS5hLmNyZWF0ZUVsZW1lbnQob3IsbnVsbCk7aWYoZS5pc0Fub255bW91cygpfHwhcilyZXR1cm4gbnVsbDt2YXIgaT1PYmplY3QoXy5sYXp5KSgoZnVuY3Rpb24oKXtyZXR1cm4gY0kocil9KSk7byYmZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cy4gUGFnZSB0aXRsZSBjYW5ub3QgYmUgZW1wdHkiKTt3aW5kb3cuZG9jdW1lbnQudGl0bGU9IlRoZSBPcmNoYXJkIj09PWU/ZToiIi5jb25jYXQoZSwiIHwgIikuY29uY2F0KCJUaGUgT3JjaGFyZCIpfShvKTt2YXIgdT0ibW9kdWxlLSIuY29uY2F0KHIsIiAiKS5jb25jYXQoYXx8IiIpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChfLlN1c3BlbnNlLHtmYWxsYmFjazpFLmEuY3JlYXRlRWxlbWVudChzSSxudWxsKX0sRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp1fSxFLmEuY3JlYXRlRWxlbWVudChpLG51bGwpKSl9fV0pLHR9KEUuYS5Db21wb25lbnQpO3coKShmSSwicHJvcFR5cGVzIix7bW9kdWxlOlYuYS5zdHJpbmcscGFnZVRpdGxlOlYuYS5zdHJpbmcsY2xhc3NOYW1lOlYuYS5zdHJpbmd9KSx3KCkoZkksImNvbnRleHRUeXBlcyIse2lkZW50aXR5OlYuYS5vYmplY3R9KSx3KCkoZkksIm1hbmlmZXN0IixsSSk7dmFyIGRJPWZJLHBJPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaXRlbXM7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGpvLHtjbGFzc05hbWU6IlN1YkhlYWRlciJ9LEUuYS5jcmVhdGVFbGVtZW50KFlyLG51bGwsRS5hLmNyZWF0ZUVsZW1lbnQoJG8se2NsYXNzTmFtZToiU3ViSGVhZGVyIixpdGVtczp0fSkpKX07cEkucHJvcFR5cGVzPXtpdGVtczpWLmEuYXJyYXlPZihWLmEub2JqZWN0KX07dmFyIGhJPXBJO2Z1bmN0aW9uIHlJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBtSShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj95SShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3coKShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6eUkoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9dmFyIHZJPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuO0ooKSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybiBuPVNlKCkodGhpcywoZT1UZSgpKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChvKSkpLHcoKShQZSgpKG4pLCJfY3JlYXRlUm91dGVzIiwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0KEYuZmxhdE1hcCkoZSwoZnVuY3Rpb24oZSl7dmFyIG49ZS5tYXRjaCxyPWUudXJsLG89ZS5rZXk7cmV0dXJuIG5lKG58fHIpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KEtpLmEse3BhdGg6bixrZXk6b3x8bixleGFjdDohMCxyZW5kZXI6ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX19KX0pKX0pKX0pKSx3KCkoUGUoKShuKSwicmVuZGVyTm90Rm91bmQiLChmdW5jdGlvbigpe3JldHVybiBFLmEuY3JlYXRlRWxlbWVudChvcix7ZXJyb3I6ZmUoImVycm9ycy5wYWdlTm90Rm91bmQiKX0pfSkpLHcoKShQZSgpKG4pLCJyZW5kZXJNb2R1bGUiLChmdW5jdGlvbihlLHQpe3JldHVybiBlP0UuYS5jcmVhdGVFbGVtZW50KGRJLE90KCkoe30sdCx7bW9kdWxlOmV9KSk6RS5hLmNyZWF0ZUVsZW1lbnQob3Ise2Vycm9yOmZlKCJlcnJvcnMubm9uUmVhY3RpZmllZFBhZ2UiKX0pfSkpLHcoKShQZSgpKG4pLCJyZW5kZXJNb2R1bGVSb3V0ZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2gscj0odD12b2lkIDA9PT10P3t9OnQpLnBhcmFtcyxvPShyPXZvaWQgMD09PXI/e306cikubW9kdWxlO3JldHVybiBvP24ucmVuZGVyTW9kdWxlKG8sZSk6bi5yZW5kZXJOb3RGb3VuZCgpfSkpLHcoKShQZSgpKG4pLCJyZW5kZXJTZWN0aW9uIiwoZnVuY3Rpb24oZSl7dmFyIHQ9bi5jb250ZXh0LmlkZW50aXR5LHI9ZS5pdGVtcyxvPWUuY2xhc3NOYW1lLGE9cW8odCxyKSxpPW4uX2NyZWF0ZVJvdXRlcyhhLChmdW5jdGlvbihlLHQpe3ZhciByPWUubW9kdWxlLG89T2UoKShlLFsibW9kdWxlIl0pO3JldHVybiBuLnJlbmRlck1vZHVsZShyLG1JKHt9LHQse30sbykpfSkpLHU9YS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4hIWUudXJsfSkpO3JldHVybiBFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOm99LHUmJkUuYS5jcmVhdGVFbGVtZW50KGhJLHtpdGVtczphfSksRS5hLmNyZWF0ZUVsZW1lbnQocWkuYSxudWxsLGksRS5hLmNyZWF0ZUVsZW1lbnQoS2kuYSx7cmVuZGVyOm4ucmVuZGVyTm90Rm91bmR9KSkpfSkpLG59cmV0dXJuIGplKCkodCxlKSwkKCkodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLmNvbnRleHQuaWRlbnRpdHksbj10aGlzLnByb3BzLnNpdGVNYXA7aWYodC5pc0Fub255bW91cygpKXJldHVybiBudWxsO3ZhciByPXFvKHQsbiksbz10aGlzLl9jcmVhdGVSb3V0ZXMociwoZnVuY3Rpb24odCxuKXt2YXIgcj10Lml0ZW1zLG89dC5tb2R1bGU7cmV0dXJuIHImJnIubGVuZ3RoP2UucmVuZGVyU2VjdGlvbih0LG4pOmUucmVuZGVyTW9kdWxlKG8sbUkoe30sdCx7fSxuKSl9KSk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHFpLmEsbnVsbCxvLEUuYS5jcmVhdGVFbGVtZW50KEtpLmEse3JlbmRlcjp0aGlzLnJlbmRlck5vdEZvdW5kfSkpfX1dKSx0fShFLmEuQ29tcG9uZW50KTt3KCkodkksInByb3BUeXBlcyIse3NpdGVNYXA6Vi5hLmFycmF5T2YoVi5hLm9iamVjdCl9KSx3KCkodkksImNvbnRleHRUeXBlcyIse2lkZW50aXR5OlYuYS5vYmplY3R9KSx3KCkodkksImRlZmF1bHRQcm9wcyIse3NpdGVNYXA6Rm8uYX0pO3ZhciBnST12SSxiST1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIEooKSh0aGlzLHQpLFNlKCkodGhpcyxUZSgpKHQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGplKCkodCxlKSwkKCkodCxbe2tleToiZ2V0Q2hpbGRDb250ZXh0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnVzZXIsbj1lLmZlYXR1cmVGbGFncztyZXR1cm4gbGUuaW5zdGFuY2Uuc2V0RmVhdHVyZUZsYWdzKG4pLGxlLmluc3RhbmNlLnNldElkZW50aXR5KHQpLHtpZGVudGl0eTpsZS5pbnN0YW5jZS5pZGVudGl0eX19fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5jaGlsZHJlbix0PXRoaXMuZ2V0Q2hpbGRDb250ZXh0KCk7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KHBlLlByb3ZpZGVyLHt2YWx1ZTp0fSxlKX19XSksdH0oRS5hLlB1cmVDb21wb25lbnQpO3coKShiSSwicHJvcFR5cGVzIix7dXNlcjpWLmEub2JqZWN0LGZlYXR1cmVGbGFnczpWLmEub2JqZWN0LGNoaWxkcmVuOlYuYS5lbGVtZW50fSksdygpKGJJLCJjaGlsZENvbnRleHRUeXBlcyIse2lkZW50aXR5OlYuYS5vYmplY3R9KTt2YXIgd0k9ZnVuY3Rpb24oKXtyZXR1cm4gSGUuZ2V0KCJmZWF0dXJlcy9mZWF0dXJlcyIse2Zvcm1hdFJlc3BvbnNlOiExfSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYm9keX0pKX0sX0k9ZnVuY3Rpb24oKXtyZXR1cm4gSGUuZ2V0KFFlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ib2R5fSkpfSxFST1mdW5jdGlvbigpe3ZhciBlPUNlKCkoX2UuYS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQsbixyLG87cmV0dXJuIF9lLmEud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLFByb21pc2UuYWxsKFt3SSgpLF9JKCldKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LG49SygpKHQsMikscj1uWzBdLG89blsxXSxlLmFicnVwdCgicmV0dXJuIix7ZmVhdHVyZUZsYWdzOnIsdXNlcjpvfSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksT0k9aXIoKGZ1bmN0aW9uKGUpe3ZhciB0PXZlLnVzZVJlcXVlc3QoRUkpLG49dC5sb2FkaW5nLHI9dC5lcnJvcixvPXQuZGF0YSxhPXZvaWQgMD09PW8/e306bztpZihyKXJldHVybiBFLmEuY3JlYXRlRWxlbWVudChvcix7ZXJyb3I6cix0ZXJtOiJ1c2VyRmVhdHVyZXMifSk7dmFyIGk9YS5mZWF0dXJlRmxhZ3MsdT1hLnVzZXI7cmV0dXJuIEUuYS5jcmVhdGVFbGVtZW50KGJJLHtmZWF0dXJlRmxhZ3M6aSx1c2VyOnV9LEUuYS5jcmVhdGVFbGVtZW50KHVyLmEsbnVsbCxFLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJBcHAtY29udGFpbmVyIn0sRS5hLmNyZWF0ZUVsZW1lbnQoTWkse2lzTG9hZGluZzpufSksRS5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicGFnZS1jb250ZW50In0sRS5hLmNyZWF0ZUVsZW1lbnQoZ0ksZSkpLEUuYS5jcmVhdGVFbGVtZW50KHppLG51bGwpKSkpfSkpLGtJPXtlbjpuKCJ6VUdNIiksInpoLUNOIjpuKCJJNlcwIiksInpoLVRXIjpuKCJ2cHp0IiksZnI6bigiZnZSMyIpLGRlOm4oInkxbkEiKSxpdDpuKCI1K0R0IiksamE6bigibmRLNSIpLGtvOm4oImFuYkEiKSxwdDpuKCJaU2dQIikscnU6bigiVklScyIpLGVzOm4oIlVOSkQiKSx0cjpuKCJDT2NpIil9O09iamVjdChILnJlZ2lzdGVyVHJhbnNsYXRpb25zKShrSSk7dmFyIENJPWtJLHhJPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpmZXRjaCxuPVIoKSgpLHI9SXMoe3VyaToiIi5jb25jYXQoTG8uYSkuY29uY2F0KExvLmIpLGZldGNoOnR9KSxvPW5ldyB1cygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXRDb250ZXh0KHtoZWFkZXJzOntzZXNzaW9uOm4udG9rZW59fSksdD90KGUpOm51bGx9KSksYT1vLmNvbmNhdChyKTtyZXR1cm4gbmV3IE1zKHtsaW5rOmEsY2FjaGU6bmV3IEp1LG5hbWU6ZX0pfTtmdW5jdGlvbiBTSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gREkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/U0koT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXt3KCkoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlNJKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfW4uZCh0LCJFUlJPUl9SRVNUUklDVEVEX0ZFQVRVUkVTIiwoZnVuY3Rpb24oKXtyZXR1cm4gVEl9KSksbi5kKHQsImluaXRGcm9udGVuZFdvcmtzdGF0aW9uIiwoZnVuY3Rpb24oKXtyZXR1cm4gTUl9KSksbi5kKHQsInBhcnNlQ29uZmlndXJhdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIFBJfSkpLG4uZCh0LCJhcGkiLChmdW5jdGlvbigpe3JldHVybiByfSkpLG4uZCh0LCJJZGVudGl0eU1hbmFnZXIiLChmdW5jdGlvbigpe3JldHVybiBsZX0pKSxuLmQodCwiR2xvYmFsU2VhcmNoIiwoZnVuY3Rpb24oKXtyZXR1cm4gbnJ9KSksbi5kKHQsIlNlYXJjaENvbXBvbmVudCIsKGZ1bmN0aW9uKCl7cmV0dXJuICRufSkpLG4uZCh0LCJFcnJvckNvbXBvbmVudCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGlyfSkpLG4uZCh0LCJFcnJvckJvdW5kYXJ5IiwoZnVuY3Rpb24oKXtyZXR1cm4gb3J9KSk7dmFyIFRJPSciVVNFUl9SRVNUUklDVElPTlMiIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycsTUk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNlc3Npb24scj1lLmNkblVybCxvPWUuZGVwbG95VGltZXN0YW1wLGE9ZS51c2VyUmVzdHJpY3RlZEZlYXR1cmVzLGk9ZS51c2VyRmVhdHVyZUZsYWdzLHU9ZS5sb2NhbGUscz12b2lkIDA9PT11P3dpbmRvdy5PUkNIQVJEX0xPQ0FMRTp1LGw9ZS5sb2NhbGVzLGM9dm9pZCAwPT09bD9DSTpsO3dpbmRvdy5PUkNIQVJEX0VOVj0icHJvZCIsd2luZG93LnRva2VuTWFuYWdlcj1SKCkobnx8ZSksZEkuY29uZmlndXJlKHtjZG5Vcmw6cixkZXBsb3lUaW1lc3RhbXA6b30pLGNlLnJlZ2lzdGVyVHJhbnNsYXRpb25zKGMscyksbGUuaW5zdGFuY2Uuc2V0T3ZlcnJpZGVzKHt1c2VyRmVhdHVyZUZsYWdzOmksdXNlclJlc3RyaWN0ZWRGZWF0dXJlczphfSk7dmFyIGY9eEkoImZyb250ZW5kLXdvcmtzdGF0aW9uIik7cmV0dXJuIGsuYS5yZW5kZXIoRS5hLmNyZWF0ZUVsZW1lbnQoVCx7Y2xpZW50OmZ9LEUuYS5jcmVhdGVFbGVtZW50KE9JLGUpKSx0KX0sUEk9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOndpbmRvdy5sb2NhdGlvbixuPUEuYS5wYXJzZSh0LnNlYXJjaC5yZXBsYWNlKCI/IiwiIikpLHI9bi5zZXNzaW9uLG89bi5lbmFibGVkX2ZlYXR1cmVfZmxhZyxhPXZvaWQgMD09PW8/W106byxpPW4uZGlzYWJsZWRfZmVhdHVyZV9mbGFnLHU9dm9pZCAwPT09aT9bXTppLHM9bi52ZW5kb3JfcmVzdHJpY3RlZF9mZWF0dXJlLGw9dm9pZCAwPT09cz9bXTpzLGM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0KEYuY2FzdEFycmF5KShlKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIERJKHt9LGUsdygpKHt9LG4sdCkpfSkse30pfSxmPWMoYSwiZW5hYmxlZCIpLGQ9Yyh1LCJjb250cm9sIikscD1PYmplY3QoRi5jYXN0QXJyYXkpKGwpLGg9ZS51c2VyUmVzdHJpY3RlZEZlYXR1cmVzLHk9dm9pZCAwPT09aD9bXTpoO2lmKCF5fHwhQXJyYXkuaXNBcnJheSh5KSl0aHJvdyBuZXcgRXJyb3IoVEkpO3JldHVybiBPYmplY3QoRi5tZXJnZSkoe30sZSx7dXNlckZlYXR1cmVGbGFnczpESSh7fSxmLHt9LGQpLHVzZXJSZXN0cmljdGVkRmVhdHVyZXM6W10uY29uY2F0KGcoKSh5KSxnKCkocCkpLHNlc3Npb246e3Rva2VuOnt0b2tlbjpyfX19KX07d2luZG93LmluaXRGcm9udGVuZFdvcmtzdGF0aW9uPU1JLHdpbmRvdy5wYXJzZUNvbmZpZ3VyYXRpb249UEl9LCI3VzJpIjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiU2tzTyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiZyKGUsdCl9fSwiODFLSSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJKUGN2Iiksbz1uKCJaZi92IiksYT1uKCJtRnlWIiksaT1yLlJlcGVhdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4scil7dC5pc0NvbGxhcHNlZCgpfHxhKCExKTt2YXIgdT1udWxsO2lmKG51bGwhPW4mJih1PW4ubGVuZ3RoKSxudWxsPT11fHwwPT09dSlyZXR1cm4gZTt2YXIgcz1lLmdldEJsb2NrTWFwKCksbD10LmdldFN0YXJ0S2V5KCksYz10LmdldFN0YXJ0T2Zmc2V0KCksZj1zLmdldChsKSxkPWYuZ2V0VGV4dCgpLHA9Zi5tZXJnZSh7dGV4dDpkLnNsaWNlKDAsYykrbitkLnNsaWNlKGMsZi5nZXRMZW5ndGgoKSksY2hhcmFjdGVyTGlzdDpvKGYuZ2V0Q2hhcmFjdGVyTGlzdCgpLGkocix1KS50b0xpc3QoKSxjKX0pLGg9Yyt1O3JldHVybiBlLm1lcmdlKHtibG9ja01hcDpzLnNldChsLHApLHNlbGVjdGlvbkFmdGVyOnQubWVyZ2Uoe2FuY2hvck9mZnNldDpoLGZvY3VzT2Zmc2V0Omh9KX0pfX0sIjgyYzIiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMXNlUyIpLG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2woImZvbyIpLGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxpPUFycmF5LnByb3RvdHlwZS5jb25jYXQsdT1PYmplY3QuZGVmaW5lUHJvcGVydHkscz11JiZmdW5jdGlvbigpe3ZhciBlPXt9O3RyeXtmb3IodmFyIHQgaW4gdShlLCJ4Iix7ZW51bWVyYWJsZTohMSx2YWx1ZTplfSksZSlyZXR1cm4hMTtyZXR1cm4gZS54PT09ZX1jYXRjaChlKXtyZXR1cm4hMX19KCksbD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbzt0IGluIGUmJigiZnVuY3Rpb24iIT10eXBlb2Yobz1yKXx8IltvYmplY3QgRnVuY3Rpb25dIiE9PWEuY2FsbChvKXx8IXIoKSl8fChzP3UoZSx0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpuLHdyaXRhYmxlOiEwfSk6ZVt0XT1uKX0sYz1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06e30sYT1yKHQpO28mJihhPWkuY2FsbChhLE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpKTtmb3IodmFyIHU9MDt1PGEubGVuZ3RoO3UrPTEpbChlLGFbdV0sdFthW3VdXSxuW2FbdV1dKX07Yy5zdXBwb3J0c0Rlc2NyaXB0b3JzPSEhcyxlLmV4cG9ydHM9Y30sIjg0bGMiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSlBjdiIpLkxpc3Qsbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQsbixyO3I9dm9pZCAwLChuPSJfZGVjb3JhdG9ycyIpaW4odD10aGlzKT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtuXT1yLHRoaXMuX2RlY29yYXRvcnM9ZS5zbGljZSgpfXZhciB0PWUucHJvdG90eXBlO3JldHVybiB0LmdldERlY29yYXRpb25zPWZ1bmN0aW9uKGUsdCl7dmFyIG49QXJyYXkoZS5nZXRUZXh0KCkubGVuZ3RoKS5maWxsKG51bGwpO3JldHVybiB0aGlzLl9kZWNvcmF0b3JzLmZvckVhY2goKGZ1bmN0aW9uKHIsbyl7dmFyIGE9MDsoMCxyLnN0cmF0ZWd5KShlLChmdW5jdGlvbihlLHQpeyhmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPXQ7cjxuO3IrKylpZihudWxsIT1lW3JdKXJldHVybiExO3JldHVybiEwfSkobixlLHQpJiYoIWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbz10O288bjtvKyspZVtvXT1yfShuLGUsdCxvKyIuIithKSxhKyspfSksdCl9KSkscihuKX0sdC5nZXRDb21wb25lbnRGb3JLZXk9ZnVuY3Rpb24oZSl7dmFyIHQ9cGFyc2VJbnQoZS5zcGxpdCgiLiIpWzBdLDEwKTtyZXR1cm4gdGhpcy5fZGVjb3JhdG9yc1t0XS5jb21wb25lbnR9LHQuZ2V0UHJvcHNGb3JLZXk9ZnVuY3Rpb24oZSl7dmFyIHQ9cGFyc2VJbnQoZS5zcGxpdCgiLiIpWzBdLDEwKTtyZXR1cm4gdGhpcy5fZGVjb3JhdG9yc1t0XS5wcm9wc30sZX0oKTtlLmV4cG9ydHM9b30sIjhMM0YiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcixyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVsiRWRnZSIsIlRyaWRlbnQiLCJGaXJlZm94Il0sdD0wO3Q8ZS5sZW5ndGg7dCs9MSlpZihuJiZuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoZVt0XSk+PTApcmV0dXJuIDE7cmV0dXJuIDB9KCk7dmFyIG89biYmd2luZG93LlByb21pc2U/ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7dHx8KHQ9ITAsd2luZG93LlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7dD0hMSxlKCl9KSkpfX06ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7dHx8KHQ9ITAsc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0PSExLGUoKX0pLHIpKX19O2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT17fS50b1N0cmluZy5jYWxsKGUpfWZ1bmN0aW9uIGkoZSx0KXtpZigxIT09ZS5ub2RlVHlwZSlyZXR1cm5bXTt2YXIgbj1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpO3JldHVybiB0P25bdF06bn1mdW5jdGlvbiB1KGUpe3JldHVybiJIVE1MIj09PWUubm9kZU5hbWU/ZTplLnBhcmVudE5vZGV8fGUuaG9zdH1mdW5jdGlvbiBzKGUpe2lmKCFlKXJldHVybiBkb2N1bWVudC5ib2R5O3N3aXRjaChlLm5vZGVOYW1lKXtjYXNlIkhUTUwiOmNhc2UiQk9EWSI6cmV0dXJuIGUub3duZXJEb2N1bWVudC5ib2R5O2Nhc2UiI2RvY3VtZW50IjpyZXR1cm4gZS5ib2R5fXZhciB0PWkoZSksbj10Lm92ZXJmbG93LHI9dC5vdmVyZmxvd1gsbz10Lm92ZXJmbG93WTtyZXR1cm4vKGF1dG98c2Nyb2xsfG92ZXJsYXkpLy50ZXN0KG4rbytyKT9lOnModShlKSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZSYmZS5yZWZlcmVuY2VOb2RlP2UucmVmZXJlbmNlTm9kZTplfXZhciBjPW4mJiEoIXdpbmRvdy5NU0lucHV0TWV0aG9kQ29udGV4dHx8IWRvY3VtZW50LmRvY3VtZW50TW9kZSksZj1uJiYvTVNJRSAxMC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtmdW5jdGlvbiBkKGUpe3JldHVybiAxMT09PWU/YzoxMD09PWU/ZjpjfHxmfWZ1bmN0aW9uIHAoZSl7aWYoIWUpcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtmb3IodmFyIHQ9ZCgxMCk/ZG9jdW1lbnQuYm9keTpudWxsLG49ZS5vZmZzZXRQYXJlbnR8fG51bGw7bj09PXQmJmUubmV4dEVsZW1lbnRTaWJsaW5nOyluPShlPWUubmV4dEVsZW1lbnRTaWJsaW5nKS5vZmZzZXRQYXJlbnQ7dmFyIHI9biYmbi5ub2RlTmFtZTtyZXR1cm4gciYmIkJPRFkiIT09ciYmIkhUTUwiIT09cj8tMSE9PVsiVEgiLCJURCIsIlRBQkxFIl0uaW5kZXhPZihuLm5vZGVOYW1lKSYmInN0YXRpYyI9PT1pKG4sInBvc2l0aW9uIik/cChuKTpuOmU/ZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gaChlKXtyZXR1cm4gbnVsbCE9PWUucGFyZW50Tm9kZT9oKGUucGFyZW50Tm9kZSk6ZX1mdW5jdGlvbiB5KGUsdCl7aWYoIShlJiZlLm5vZGVUeXBlJiZ0JiZ0Lm5vZGVUeXBlKSlyZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3ZhciBuPWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcscj1uP2U6dCxvPW4/dDplLGE9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTthLnNldFN0YXJ0KHIsMCksYS5zZXRFbmQobywwKTt2YXIgaSx1LHM9YS5jb21tb25BbmNlc3RvckNvbnRhaW5lcjtpZihlIT09cyYmdCE9PXN8fHIuY29udGFpbnMobykpcmV0dXJuIkJPRFkiPT09KHU9KGk9cykubm9kZU5hbWUpfHwiSFRNTCIhPT11JiZwKGkuZmlyc3RFbGVtZW50Q2hpbGQpIT09aT9wKHMpOnM7dmFyIGw9aChlKTtyZXR1cm4gbC5ob3N0P3kobC5ob3N0LHQpOnkoZSxoKHQpLmhvc3QpfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ0b3AiLG49InRvcCI9PT10PyJzY3JvbGxUb3AiOiJzY3JvbGxMZWZ0IixyPWUubm9kZU5hbWU7aWYoIkJPRFkiPT09cnx8IkhUTUwiPT09cil7dmFyIG89ZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhPWUub3duZXJEb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50fHxvO3JldHVybiBhW25dfXJldHVybiBlW25dfWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHI9bSh0LCJ0b3AiKSxvPW0odCwibGVmdCIpLGE9bj8tMToxO3JldHVybiBlLnRvcCs9ciphLGUuYm90dG9tKz1yKmEsZS5sZWZ0Kz1vKmEsZS5yaWdodCs9byphLGV9ZnVuY3Rpb24gZyhlLHQpe3ZhciBuPSJ4Ij09PXQ/IkxlZnQiOiJUb3AiLHI9IkxlZnQiPT09bj8iUmlnaHQiOiJCb3R0b20iO3JldHVybiBwYXJzZUZsb2F0KGVbImJvcmRlciIrbisiV2lkdGgiXSkrcGFyc2VGbG9hdChlWyJib3JkZXIiK3IrIldpZHRoIl0pfWZ1bmN0aW9uIGIoZSx0LG4scil7cmV0dXJuIE1hdGgubWF4KHRbIm9mZnNldCIrZV0sdFsic2Nyb2xsIitlXSxuWyJjbGllbnQiK2VdLG5bIm9mZnNldCIrZV0sblsic2Nyb2xsIitlXSxkKDEwKT9wYXJzZUludChuWyJvZmZzZXQiK2VdKStwYXJzZUludChyWyJtYXJnaW4iKygiSGVpZ2h0Ij09PWU/IlRvcCI6IkxlZnQiKV0pK3BhcnNlSW50KHJbIm1hcmdpbiIrKCJIZWlnaHQiPT09ZT8iQm90dG9tIjoiUmlnaHQiKV0pOjApfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9ZS5ib2R5LG49ZS5kb2N1bWVudEVsZW1lbnQscj1kKDEwKSYmZ2V0Q29tcHV0ZWRTdHlsZShuKTtyZXR1cm57aGVpZ2h0OmIoIkhlaWdodCIsdCxuLHIpLHdpZHRoOmIoIldpZHRoIix0LG4scil9fXZhciBfPWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9LEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksTz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9LGs9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07ZnVuY3Rpb24gQyhlKXtyZXR1cm4gayh7fSxlLHtyaWdodDplLmxlZnQrZS53aWR0aCxib3R0b206ZS50b3ArZS5oZWlnaHR9KX1mdW5jdGlvbiB4KGUpe3ZhciB0PXt9O3RyeXtpZihkKDEwKSl7dD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBuPW0oZSwidG9wIikscj1tKGUsImxlZnQiKTt0LnRvcCs9bix0LmxlZnQrPXIsdC5ib3R0b20rPW4sdC5yaWdodCs9cn1lbHNlIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChlKXt9dmFyIG89e2xlZnQ6dC5sZWZ0LHRvcDp0LnRvcCx3aWR0aDp0LnJpZ2h0LXQubGVmdCxoZWlnaHQ6dC5ib3R0b20tdC50b3B9LGE9IkhUTUwiPT09ZS5ub2RlTmFtZT93KGUub3duZXJEb2N1bWVudCk6e30sdT1hLndpZHRofHxlLmNsaWVudFdpZHRofHxvLndpZHRoLHM9YS5oZWlnaHR8fGUuY2xpZW50SGVpZ2h0fHxvLmhlaWdodCxsPWUub2Zmc2V0V2lkdGgtdSxjPWUub2Zmc2V0SGVpZ2h0LXM7aWYobHx8Yyl7dmFyIGY9aShlKTtsLT1nKGYsIngiKSxjLT1nKGYsInkiKSxvLndpZHRoLT1sLG8uaGVpZ2h0LT1jfXJldHVybiBDKG8pfWZ1bmN0aW9uIFMoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHI9ZCgxMCksbz0iSFRNTCI9PT10Lm5vZGVOYW1lLGE9eChlKSx1PXgodCksbD1zKGUpLGM9aSh0KSxmPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCkscD1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKTtuJiZvJiYodS50b3A9TWF0aC5tYXgodS50b3AsMCksdS5sZWZ0PU1hdGgubWF4KHUubGVmdCwwKSk7dmFyIGg9Qyh7dG9wOmEudG9wLXUudG9wLWYsbGVmdDphLmxlZnQtdS5sZWZ0LXAsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9KTtpZihoLm1hcmdpblRvcD0wLGgubWFyZ2luTGVmdD0wLCFyJiZvKXt2YXIgeT1wYXJzZUZsb2F0KGMubWFyZ2luVG9wKSxtPXBhcnNlRmxvYXQoYy5tYXJnaW5MZWZ0KTtoLnRvcC09Zi15LGguYm90dG9tLT1mLXksaC5sZWZ0LT1wLW0saC5yaWdodC09cC1tLGgubWFyZ2luVG9wPXksaC5tYXJnaW5MZWZ0PW19cmV0dXJuKHImJiFuP3QuY29udGFpbnMobCk6dD09PWwmJiJCT0RZIiE9PWwubm9kZU5hbWUpJiYoaD12KGgsdCkpLGh9ZnVuY3Rpb24gRChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49ZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxyPVMoZSxuKSxvPU1hdGgubWF4KG4uY2xpZW50V2lkdGgsd2luZG93LmlubmVyV2lkdGh8fDApLGE9TWF0aC5tYXgobi5jbGllbnRIZWlnaHQsd2luZG93LmlubmVySGVpZ2h0fHwwKSxpPXQ/MDptKG4pLHU9dD8wOm0obiwibGVmdCIpLHM9e3RvcDppLXIudG9wK3IubWFyZ2luVG9wLGxlZnQ6dS1yLmxlZnQrci5tYXJnaW5MZWZ0LHdpZHRoOm8saGVpZ2h0OmF9O3JldHVybiBDKHMpfWZ1bmN0aW9uIFQoZSl7dmFyIHQ9ZS5ub2RlTmFtZTtpZigiQk9EWSI9PT10fHwiSFRNTCI9PT10KXJldHVybiExO2lmKCJmaXhlZCI9PT1pKGUsInBvc2l0aW9uIikpcmV0dXJuITA7dmFyIG49dShlKTtyZXR1cm4hIW4mJlQobil9ZnVuY3Rpb24gTShlKXtpZighZXx8IWUucGFyZW50RWxlbWVudHx8ZCgpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Zm9yKHZhciB0PWUucGFyZW50RWxlbWVudDt0JiYibm9uZSI9PT1pKHQsInRyYW5zZm9ybSIpOyl0PXQucGFyZW50RWxlbWVudDtyZXR1cm4gdHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fWZ1bmN0aW9uIFAoZSx0LG4scil7dmFyIG89YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XSxhPXt0b3A6MCxsZWZ0OjB9LGk9bz9NKGUpOnkoZSxsKHQpKTtpZigidmlld3BvcnQiPT09cilhPUQoaSxvKTtlbHNle3ZhciBjPXZvaWQgMDsic2Nyb2xsUGFyZW50Ij09PXI/IkJPRFkiPT09KGM9cyh1KHQpKSkubm9kZU5hbWUmJihjPWUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOmM9IndpbmRvdyI9PT1yP2Uub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6cjt2YXIgZj1TKGMsaSxvKTtpZigiSFRNTCIhPT1jLm5vZGVOYW1lfHxUKGkpKWE9ZjtlbHNle3ZhciBkPXcoZS5vd25lckRvY3VtZW50KSxwPWQuaGVpZ2h0LGg9ZC53aWR0aDthLnRvcCs9Zi50b3AtZi5tYXJnaW5Ub3AsYS5ib3R0b209cCtmLnRvcCxhLmxlZnQrPWYubGVmdC1mLm1hcmdpbkxlZnQsYS5yaWdodD1oK2YubGVmdH19dmFyIG09Im51bWJlciI9PXR5cGVvZihuPW58fDApO3JldHVybiBhLmxlZnQrPW0/bjpuLmxlZnR8fDAsYS50b3ArPW0/bjpuLnRvcHx8MCxhLnJpZ2h0LT1tP246bi5yaWdodHx8MCxhLmJvdHRvbS09bT9uOm4uYm90dG9tfHwwLGF9ZnVuY3Rpb24gTihlKXtyZXR1cm4gZS53aWR0aCplLmhlaWdodH1mdW5jdGlvbiBqKGUsdCxuLHIsbyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOjA7aWYoLTE9PT1lLmluZGV4T2YoImF1dG8iKSlyZXR1cm4gZTt2YXIgaT1QKG4scixhLG8pLHU9e3RvcDp7d2lkdGg6aS53aWR0aCxoZWlnaHQ6dC50b3AtaS50b3B9LHJpZ2h0Ont3aWR0aDppLnJpZ2h0LXQucmlnaHQsaGVpZ2h0OmkuaGVpZ2h0fSxib3R0b206e3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuYm90dG9tLXQuYm90dG9tfSxsZWZ0Ont3aWR0aDp0LmxlZnQtaS5sZWZ0LGhlaWdodDppLmhlaWdodH19LHM9T2JqZWN0LmtleXModSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gayh7a2V5OmV9LHVbZV0se2FyZWE6Tih1W2VdKX0pfSkpLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuYXJlYS1lLmFyZWF9KSksbD1zLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS53aWR0aCxyPWUuaGVpZ2h0O3JldHVybiB0Pj1uLmNsaWVudFdpZHRoJiZyPj1uLmNsaWVudEhlaWdodH0pKSxjPWwubGVuZ3RoPjA/bFswXS5rZXk6c1swXS5rZXksZj1lLnNwbGl0KCItIilbMV07cmV0dXJuIGMrKGY/Ii0iK2Y6IiIpfWZ1bmN0aW9uIEwoZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLG89cj9NKHQpOnkodCxsKG4pKTtyZXR1cm4gUyhuLG8scil9ZnVuY3Rpb24gUihlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlKSxuPXBhcnNlRmxvYXQodC5tYXJnaW5Ub3B8fDApK3BhcnNlRmxvYXQodC5tYXJnaW5Cb3R0b218fDApLHI9cGFyc2VGbG9hdCh0Lm1hcmdpbkxlZnR8fDApK3BhcnNlRmxvYXQodC5tYXJnaW5SaWdodHx8MCk7cmV0dXJue3dpZHRoOmUub2Zmc2V0V2lkdGgrcixoZWlnaHQ6ZS5vZmZzZXRIZWlnaHQrbn19ZnVuY3Rpb24gSShlKXt2YXIgdD17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gZS5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9ZnVuY3Rpb24gQShlLHQsbil7bj1uLnNwbGl0KCItIilbMF07dmFyIHI9UihlKSxvPXt3aWR0aDpyLndpZHRoLGhlaWdodDpyLmhlaWdodH0sYT0tMSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZihuKSxpPWE/InRvcCI6ImxlZnQiLHU9YT8ibGVmdCI6InRvcCIscz1hPyJoZWlnaHQiOiJ3aWR0aCIsbD1hPyJ3aWR0aCI6ImhlaWdodCI7cmV0dXJuIG9baV09dFtpXSt0W3NdLzItcltzXS8yLG9bdV09bj09PXU/dFt1XS1yW2xdOnRbSSh1KV0sb31mdW5jdGlvbiBGKGUsdCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5maW5kP2UuZmluZCh0KTplLmZpbHRlcih0KVswXX1mdW5jdGlvbiBCKGUsdCxuKXtyZXR1cm4odm9pZCAwPT09bj9lOmUuc2xpY2UoMCxmdW5jdGlvbihlLHQsbil7aWYoQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleClyZXR1cm4gZS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdPT09bn0pKTt2YXIgcj1GKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdPT09bn0pKTtyZXR1cm4gZS5pbmRleE9mKHIpfShlLCJuYW1lIixuKSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuZnVuY3Rpb24mJmNvbnNvbGUud2FybigiYG1vZGlmaWVyLmZ1bmN0aW9uYCBpcyBkZXByZWNhdGVkLCB1c2UgYG1vZGlmaWVyLmZuYCEiKTt2YXIgbj1lLmZ1bmN0aW9ufHxlLmZuO2UuZW5hYmxlZCYmYShuKSYmKHQub2Zmc2V0cy5wb3BwZXI9Qyh0Lm9mZnNldHMucG9wcGVyKSx0Lm9mZnNldHMucmVmZXJlbmNlPUModC5vZmZzZXRzLnJlZmVyZW5jZSksdD1uKHQsZSkpfSkpLHR9ZnVuY3Rpb24geigpe2lmKCF0aGlzLnN0YXRlLmlzRGVzdHJveWVkKXt2YXIgZT17aW5zdGFuY2U6dGhpcyxzdHlsZXM6e30sYXJyb3dTdHlsZXM6e30sYXR0cmlidXRlczp7fSxmbGlwcGVkOiExLG9mZnNldHM6e319O2Uub2Zmc2V0cy5yZWZlcmVuY2U9TCh0aGlzLnN0YXRlLHRoaXMucG9wcGVyLHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkKSxlLnBsYWNlbWVudD1qKHRoaXMub3B0aW9ucy5wbGFjZW1lbnQsZS5vZmZzZXRzLnJlZmVyZW5jZSx0aGlzLnBvcHBlcix0aGlzLnJlZmVyZW5jZSx0aGlzLm9wdGlvbnMubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpLGUub3JpZ2luYWxQbGFjZW1lbnQ9ZS5wbGFjZW1lbnQsZS5wb3NpdGlvbkZpeGVkPXRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkLGUub2Zmc2V0cy5wb3BwZXI9QSh0aGlzLnBvcHBlcixlLm9mZnNldHMucmVmZXJlbmNlLGUucGxhY2VtZW50KSxlLm9mZnNldHMucG9wcGVyLnBvc2l0aW9uPXRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkPyJmaXhlZCI6ImFic29sdXRlIixlPUIodGhpcy5tb2RpZmllcnMsZSksdGhpcy5zdGF0ZS5pc0NyZWF0ZWQ/dGhpcy5vcHRpb25zLm9uVXBkYXRlKGUpOih0aGlzLnN0YXRlLmlzQ3JlYXRlZD0hMCx0aGlzLm9wdGlvbnMub25DcmVhdGUoZSkpfX1mdW5jdGlvbiBLKGUsdCl7cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24oZSl7dmFyIG49ZS5uYW1lO3JldHVybiBlLmVuYWJsZWQmJm49PT10fSkpfWZ1bmN0aW9uIHEoZSl7Zm9yKHZhciB0PVshMSwibXMiLCJXZWJraXQiLCJNb3oiLCJPIl0sbj1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSkscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdLGE9bz8iIitvK246ZTtpZih2b2lkIDAhPT1kb2N1bWVudC5ib2R5LnN0eWxlW2FdKXJldHVybiBhfXJldHVybiBudWxsfWZ1bmN0aW9uIFYoKXtyZXR1cm4gdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZD0hMCxLKHRoaXMubW9kaWZpZXJzLCJhcHBseVN0eWxlIikmJih0aGlzLnBvcHBlci5yZW1vdmVBdHRyaWJ1dGUoIngtcGxhY2VtZW50IiksdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb249IiIsdGhpcy5wb3BwZXIuc3R5bGUudG9wPSIiLHRoaXMucG9wcGVyLnN0eWxlLmxlZnQ9IiIsdGhpcy5wb3BwZXIuc3R5bGUucmlnaHQ9IiIsdGhpcy5wb3BwZXIuc3R5bGUuYm90dG9tPSIiLHRoaXMucG9wcGVyLnN0eWxlLndpbGxDaGFuZ2U9IiIsdGhpcy5wb3BwZXIuc3R5bGVbcSgidHJhbnNmb3JtIildPSIiKSx0aGlzLmRpc2FibGVFdmVudExpc3RlbmVycygpLHRoaXMub3B0aW9ucy5yZW1vdmVPbkRlc3Ryb3kmJnRoaXMucG9wcGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wb3BwZXIpLHRoaXN9ZnVuY3Rpb24gVShlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQ7cmV0dXJuIHQ/dC5kZWZhdWx0Vmlldzp3aW5kb3d9ZnVuY3Rpb24gVyhlLHQsbixyKXtuLnVwZGF0ZUJvdW5kPXIsVShlKS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLG4udXBkYXRlQm91bmQse3Bhc3NpdmU6ITB9KTt2YXIgbz1zKGUpO3JldHVybiBmdW5jdGlvbiBlKHQsbixyLG8pe3ZhciBhPSJCT0RZIj09PXQubm9kZU5hbWUsaT1hP3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp0O2kuYWRkRXZlbnRMaXN0ZW5lcihuLHIse3Bhc3NpdmU6ITB9KSxhfHxlKHMoaS5wYXJlbnROb2RlKSxuLHIsbyksby5wdXNoKGkpfShvLCJzY3JvbGwiLG4udXBkYXRlQm91bmQsbi5zY3JvbGxQYXJlbnRzKSxuLnNjcm9sbEVsZW1lbnQ9byxuLmV2ZW50c0VuYWJsZWQ9ITAsbn1mdW5jdGlvbiBZKCl7dGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkfHwodGhpcy5zdGF0ZT1XKHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucyx0aGlzLnN0YXRlLHRoaXMuc2NoZWR1bGVVcGRhdGUpKX1mdW5jdGlvbiBIKCl7dmFyIGUsdDt0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWQmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnNjaGVkdWxlVXBkYXRlKSx0aGlzLnN0YXRlPShlPXRoaXMucmVmZXJlbmNlLHQ9dGhpcy5zdGF0ZSxVKGUpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdC51cGRhdGVCb3VuZCksdC5zY3JvbGxQYXJlbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0LnVwZGF0ZUJvdW5kKX0pKSx0LnVwZGF0ZUJvdW5kPW51bGwsdC5zY3JvbGxQYXJlbnRzPVtdLHQuc2Nyb2xsRWxlbWVudD1udWxsLHQuZXZlbnRzRW5hYmxlZD0hMSx0KSl9ZnVuY3Rpb24gRyhlKXtyZXR1cm4iIiE9PWUmJiFpc05hTihwYXJzZUZsb2F0KGUpKSYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gUShlLHQpe09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPSIiOy0xIT09WyJ3aWR0aCIsImhlaWdodCIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCJdLmluZGV4T2YobikmJkcodFtuXSkmJihyPSJweCIpLGUuc3R5bGVbbl09dFtuXStyfSkpfXZhciBKPW4mJi9GaXJlZm94L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtmdW5jdGlvbiBaKGUsdCxuKXt2YXIgcj1GKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10fSkpLG89ISFyJiZlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT1uJiZlLmVuYWJsZWQmJmUub3JkZXI8ci5vcmRlcn0pKTtpZighbyl7dmFyIGE9ImAiK3QrImAiLGk9ImAiK24rImAiO2NvbnNvbGUud2FybihpKyIgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgIithKyIgbW9kaWZpZXIgaW4gb3JkZXIgdG8gd29yaywgYmUgc3VyZSB0byBpbmNsdWRlIGl0IGJlZm9yZSAiK2ErIiEiKX1yZXR1cm4gb312YXIgJD1bImF1dG8tc3RhcnQiLCJhdXRvIiwiYXV0by1lbmQiLCJ0b3Atc3RhcnQiLCJ0b3AiLCJ0b3AtZW5kIiwicmlnaHQtc3RhcnQiLCJyaWdodCIsInJpZ2h0LWVuZCIsImJvdHRvbS1lbmQiLCJib3R0b20iLCJib3R0b20tc3RhcnQiLCJsZWZ0LWVuZCIsImxlZnQiLCJsZWZ0LXN0YXJ0Il0sWD0kLnNsaWNlKDMpO2Z1bmN0aW9uIGVlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj1YLmluZGV4T2YoZSkscj1YLnNsaWNlKG4rMSkuY29uY2F0KFguc2xpY2UoMCxuKSk7cmV0dXJuIHQ/ci5yZXZlcnNlKCk6cn12YXIgdGU9ImZsaXAiLG5lPSJjbG9ja3dpc2UiLHJlPSJjb3VudGVyY2xvY2t3aXNlIjtmdW5jdGlvbiBvZShlLHQsbixyKXt2YXIgbz1bMCwwXSxhPS0xIT09WyJyaWdodCIsImxlZnQiXS5pbmRleE9mKHIpLGk9ZS5zcGxpdCgvKFwrfFwtKS8pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpfSkpLHU9aS5pbmRleE9mKEYoaSwoZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1lLnNlYXJjaCgvLHxccy8pfSkpKTtpW3VdJiYtMT09PWlbdV0uaW5kZXhPZigiLCIpJiZjb25zb2xlLndhcm4oIk9mZnNldHMgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlKHMpIGFyZSBkZXByZWNhdGVkLCB1c2UgYSBjb21tYSAoLCkgaW5zdGVhZC4iKTt2YXIgcz0vXHMqLFxzKnxccysvLGw9LTEhPT11P1tpLnNsaWNlKDAsdSkuY29uY2F0KFtpW3VdLnNwbGl0KHMpWzBdXSksW2lbdV0uc3BsaXQocylbMV1dLmNvbmNhdChpLnNsaWNlKHUrMSkpXTpbaV07cmV0dXJuKGw9bC5tYXAoKGZ1bmN0aW9uKGUscil7dmFyIG89KDE9PT1yPyFhOmEpPyJoZWlnaHQiOiJ3aWR0aCIsaT0hMTtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIiI9PT1lW2UubGVuZ3RoLTFdJiYtMSE9PVsiKyIsIi0iXS5pbmRleE9mKHQpPyhlW2UubGVuZ3RoLTFdPXQsaT0hMCxlKTppPyhlW2UubGVuZ3RoLTFdKz10LGk9ITEsZSk6ZS5jb25jYXQodCl9KSxbXSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS5tYXRjaCgvKCg/OlwtfFwrKT9cZCpcLj9cZCopKC4qKS8pLGE9K29bMV0saT1vWzJdO2lmKCFhKXJldHVybiBlO2lmKDA9PT1pLmluZGV4T2YoIiUiKSl7dmFyIHU9dm9pZCAwO3N3aXRjaChpKXtjYXNlIiVwIjp1PW47YnJlYWs7Y2FzZSIlIjpjYXNlIiVyIjpkZWZhdWx0OnU9cn1yZXR1cm4gQyh1KVt0XS8xMDAqYX1pZigidmgiPT09aXx8InZ3Ij09PWkpe3JldHVybigidmgiPT09aT9NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LHdpbmRvdy5pbm5lckhlaWdodHx8MCk6TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHdpbmRvdy5pbm5lcldpZHRofHwwKSkvMTAwKmF9cmV0dXJuIGF9KGUsbyx0LG4pfSkpfSkpKS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2UuZm9yRWFjaCgoZnVuY3Rpb24obixyKXtHKG4pJiYob1t0XSs9biooIi0iPT09ZVtyLTFdPy0xOjEpKX0pKX0pKSxvfXZhciBhZT17cGxhY2VtZW50OiJib3R0b20iLHBvc2l0aW9uRml4ZWQ6ITEsZXZlbnRzRW5hYmxlZDohMCxyZW1vdmVPbkRlc3Ryb3k6ITEsb25DcmVhdGU6ZnVuY3Rpb24oKXt9LG9uVXBkYXRlOmZ1bmN0aW9uKCl7fSxtb2RpZmllcnM6e3NoaWZ0OntvcmRlcjoxMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlKXt2YXIgdD1lLnBsYWNlbWVudCxuPXQuc3BsaXQoIi0iKVswXSxyPXQuc3BsaXQoIi0iKVsxXTtpZihyKXt2YXIgbz1lLm9mZnNldHMsYT1vLnJlZmVyZW5jZSxpPW8ucG9wcGVyLHU9LTEhPT1bImJvdHRvbSIsInRvcCJdLmluZGV4T2Yobikscz11PyJsZWZ0IjoidG9wIixsPXU/IndpZHRoIjoiaGVpZ2h0IixjPXtzdGFydDpPKHt9LHMsYVtzXSksZW5kOk8oe30scyxhW3NdK2FbbF0taVtsXSl9O2Uub2Zmc2V0cy5wb3BwZXI9ayh7fSxpLGNbcl0pfXJldHVybiBlfX0sb2Zmc2V0OntvcmRlcjoyMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlLHQpe3ZhciBuPXQub2Zmc2V0LHI9ZS5wbGFjZW1lbnQsbz1lLm9mZnNldHMsYT1vLnBvcHBlcixpPW8ucmVmZXJlbmNlLHU9ci5zcGxpdCgiLSIpWzBdLHM9dm9pZCAwO3JldHVybiBzPUcoK24pP1srbiwwXTpvZShuLGEsaSx1KSwibGVmdCI9PT11PyhhLnRvcCs9c1swXSxhLmxlZnQtPXNbMV0pOiJyaWdodCI9PT11PyhhLnRvcCs9c1swXSxhLmxlZnQrPXNbMV0pOiJ0b3AiPT09dT8oYS5sZWZ0Kz1zWzBdLGEudG9wLT1zWzFdKToiYm90dG9tIj09PXUmJihhLmxlZnQrPXNbMF0sYS50b3ArPXNbMV0pLGUucG9wcGVyPWEsZX0sb2Zmc2V0OjB9LHByZXZlbnRPdmVyZmxvdzp7b3JkZXI6MzAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmJvdW5kYXJpZXNFbGVtZW50fHxwKGUuaW5zdGFuY2UucG9wcGVyKTtlLmluc3RhbmNlLnJlZmVyZW5jZT09PW4mJihuPXAobikpO3ZhciByPXEoInRyYW5zZm9ybSIpLG89ZS5pbnN0YW5jZS5wb3BwZXIuc3R5bGUsYT1vLnRvcCxpPW8ubGVmdCx1PW9bcl07by50b3A9IiIsby5sZWZ0PSIiLG9bcl09IiI7dmFyIHM9UChlLmluc3RhbmNlLnBvcHBlcixlLmluc3RhbmNlLnJlZmVyZW5jZSx0LnBhZGRpbmcsbixlLnBvc2l0aW9uRml4ZWQpO28udG9wPWEsby5sZWZ0PWksb1tyXT11LHQuYm91bmRhcmllcz1zO3ZhciBsPXQucHJpb3JpdHksYz1lLm9mZnNldHMucG9wcGVyLGY9e3ByaW1hcnk6ZnVuY3Rpb24oZSl7dmFyIG49Y1tlXTtyZXR1cm4gY1tlXTxzW2VdJiYhdC5lc2NhcGVXaXRoUmVmZXJlbmNlJiYobj1NYXRoLm1heChjW2VdLHNbZV0pKSxPKHt9LGUsbil9LHNlY29uZGFyeTpmdW5jdGlvbihlKXt2YXIgbj0icmlnaHQiPT09ZT8ibGVmdCI6InRvcCIscj1jW25dO3JldHVybiBjW2VdPnNbZV0mJiF0LmVzY2FwZVdpdGhSZWZlcmVuY2UmJihyPU1hdGgubWluKGNbbl0sc1tlXS0oInJpZ2h0Ij09PWU/Yy53aWR0aDpjLmhlaWdodCkpKSxPKHt9LG4scil9fTtyZXR1cm4gbC5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD0tMSE9PVsibGVmdCIsInRvcCJdLmluZGV4T2YoZSk/InByaW1hcnkiOiJzZWNvbmRhcnkiO2M9ayh7fSxjLGZbdF0oZSkpfSkpLGUub2Zmc2V0cy5wb3BwZXI9YyxlfSxwcmlvcml0eTpbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLHBhZGRpbmc6NSxib3VuZGFyaWVzRWxlbWVudDoic2Nyb2xsUGFyZW50In0sa2VlcFRvZ2V0aGVyOntvcmRlcjo0MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlKXt2YXIgdD1lLm9mZnNldHMsbj10LnBvcHBlcixyPXQucmVmZXJlbmNlLG89ZS5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxhPU1hdGguZmxvb3IsaT0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihvKSx1PWk/InJpZ2h0IjoiYm90dG9tIixzPWk/ImxlZnQiOiJ0b3AiLGw9aT8id2lkdGgiOiJoZWlnaHQiO3JldHVybiBuW3VdPGEocltzXSkmJihlLm9mZnNldHMucG9wcGVyW3NdPWEocltzXSktbltsXSksbltzXT5hKHJbdV0pJiYoZS5vZmZzZXRzLnBvcHBlcltzXT1hKHJbdV0pKSxlfX0sYXJyb3c6e29yZGVyOjUwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoIVooZS5pbnN0YW5jZS5tb2RpZmllcnMsImFycm93Iiwia2VlcFRvZ2V0aGVyIikpcmV0dXJuIGU7dmFyIHI9dC5lbGVtZW50O2lmKCJzdHJpbmciPT10eXBlb2Ygcil7aWYoIShyPWUuaW5zdGFuY2UucG9wcGVyLnF1ZXJ5U2VsZWN0b3IocikpKXJldHVybiBlfWVsc2UgaWYoIWUuaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKHIpKXJldHVybiBjb25zb2xlLndhcm4oIldBUk5JTkc6IGBhcnJvdy5lbGVtZW50YCBtdXN0IGJlIGNoaWxkIG9mIGl0cyBwb3BwZXIgZWxlbWVudCEiKSxlO3ZhciBvPWUucGxhY2VtZW50LnNwbGl0KCItIilbMF0sYT1lLm9mZnNldHMsdT1hLnBvcHBlcixzPWEucmVmZXJlbmNlLGw9LTEhPT1bImxlZnQiLCJyaWdodCJdLmluZGV4T2YobyksYz1sPyJoZWlnaHQiOiJ3aWR0aCIsZj1sPyJUb3AiOiJMZWZ0IixkPWYudG9Mb3dlckNhc2UoKSxwPWw/ImxlZnQiOiJ0b3AiLGg9bD8iYm90dG9tIjoicmlnaHQiLHk9UihyKVtjXTtzW2hdLXk8dVtkXSYmKGUub2Zmc2V0cy5wb3BwZXJbZF0tPXVbZF0tKHNbaF0teSkpLHNbZF0reT51W2hdJiYoZS5vZmZzZXRzLnBvcHBlcltkXSs9c1tkXSt5LXVbaF0pLGUub2Zmc2V0cy5wb3BwZXI9QyhlLm9mZnNldHMucG9wcGVyKTt2YXIgbT1zW2RdK3NbY10vMi15LzIsdj1pKGUuaW5zdGFuY2UucG9wcGVyKSxnPXBhcnNlRmxvYXQodlsibWFyZ2luIitmXSksYj1wYXJzZUZsb2F0KHZbImJvcmRlciIrZisiV2lkdGgiXSksdz1tLWUub2Zmc2V0cy5wb3BwZXJbZF0tZy1iO3JldHVybiB3PU1hdGgubWF4KE1hdGgubWluKHVbY10teSx3KSwwKSxlLmFycm93RWxlbWVudD1yLGUub2Zmc2V0cy5hcnJvdz0oTyhuPXt9LGQsTWF0aC5yb3VuZCh3KSksTyhuLHAsIiIpLG4pLGV9LGVsZW1lbnQ6Ilt4LWFycm93XSJ9LGZsaXA6e29yZGVyOjYwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKGUsdCl7aWYoSyhlLmluc3RhbmNlLm1vZGlmaWVycywiaW5uZXIiKSlyZXR1cm4gZTtpZihlLmZsaXBwZWQmJmUucGxhY2VtZW50PT09ZS5vcmlnaW5hbFBsYWNlbWVudClyZXR1cm4gZTt2YXIgbj1QKGUuaW5zdGFuY2UucG9wcGVyLGUuaW5zdGFuY2UucmVmZXJlbmNlLHQucGFkZGluZyx0LmJvdW5kYXJpZXNFbGVtZW50LGUucG9zaXRpb25GaXhlZCkscj1lLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLG89SShyKSxhPWUucGxhY2VtZW50LnNwbGl0KCItIilbMV18fCIiLGk9W107c3dpdGNoKHQuYmVoYXZpb3Ipe2Nhc2UgdGU6aT1bcixvXTticmVhaztjYXNlIG5lOmk9ZWUocik7YnJlYWs7Y2FzZSByZTppPWVlKHIsITApO2JyZWFrO2RlZmF1bHQ6aT10LmJlaGF2aW9yfXJldHVybiBpLmZvckVhY2goKGZ1bmN0aW9uKHUscyl7aWYociE9PXV8fGkubGVuZ3RoPT09cysxKXJldHVybiBlO3I9ZS5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxvPUkocik7dmFyIGw9ZS5vZmZzZXRzLnBvcHBlcixjPWUub2Zmc2V0cy5yZWZlcmVuY2UsZj1NYXRoLmZsb29yLGQ9ImxlZnQiPT09ciYmZihsLnJpZ2h0KT5mKGMubGVmdCl8fCJyaWdodCI9PT1yJiZmKGwubGVmdCk8ZihjLnJpZ2h0KXx8InRvcCI9PT1yJiZmKGwuYm90dG9tKT5mKGMudG9wKXx8ImJvdHRvbSI9PT1yJiZmKGwudG9wKTxmKGMuYm90dG9tKSxwPWYobC5sZWZ0KTxmKG4ubGVmdCksaD1mKGwucmlnaHQpPmYobi5yaWdodCkseT1mKGwudG9wKTxmKG4udG9wKSxtPWYobC5ib3R0b20pPmYobi5ib3R0b20pLHY9ImxlZnQiPT09ciYmcHx8InJpZ2h0Ij09PXImJmh8fCJ0b3AiPT09ciYmeXx8ImJvdHRvbSI9PT1yJiZtLGc9LTEhPT1bInRvcCIsImJvdHRvbSJdLmluZGV4T2YociksYj0hIXQuZmxpcFZhcmlhdGlvbnMmJihnJiYic3RhcnQiPT09YSYmcHx8ZyYmImVuZCI9PT1hJiZofHwhZyYmInN0YXJ0Ij09PWEmJnl8fCFnJiYiZW5kIj09PWEmJm0pLHc9ISF0LmZsaXBWYXJpYXRpb25zQnlDb250ZW50JiYoZyYmInN0YXJ0Ij09PWEmJmh8fGcmJiJlbmQiPT09YSYmcHx8IWcmJiJzdGFydCI9PT1hJiZtfHwhZyYmImVuZCI9PT1hJiZ5KSxfPWJ8fHc7KGR8fHZ8fF8pJiYoZS5mbGlwcGVkPSEwLChkfHx2KSYmKHI9aVtzKzFdKSxfJiYoYT1mdW5jdGlvbihlKXtyZXR1cm4iZW5kIj09PWU/InN0YXJ0Ijoic3RhcnQiPT09ZT8iZW5kIjplfShhKSksZS5wbGFjZW1lbnQ9cisoYT8iLSIrYToiIiksZS5vZmZzZXRzLnBvcHBlcj1rKHt9LGUub2Zmc2V0cy5wb3BwZXIsQShlLmluc3RhbmNlLnBvcHBlcixlLm9mZnNldHMucmVmZXJlbmNlLGUucGxhY2VtZW50KSksZT1CKGUuaW5zdGFuY2UubW9kaWZpZXJzLGUsImZsaXAiKSl9KSksZX0sYmVoYXZpb3I6ImZsaXAiLHBhZGRpbmc6NSxib3VuZGFyaWVzRWxlbWVudDoidmlld3BvcnQiLGZsaXBWYXJpYXRpb25zOiExLGZsaXBWYXJpYXRpb25zQnlDb250ZW50OiExfSxpbm5lcjp7b3JkZXI6NzAwLGVuYWJsZWQ6ITEsZm46ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wbGFjZW1lbnQsbj10LnNwbGl0KCItIilbMF0scj1lLm9mZnNldHMsbz1yLnBvcHBlcixhPXIucmVmZXJlbmNlLGk9LTEhPT1bImxlZnQiLCJyaWdodCJdLmluZGV4T2YobiksdT0tMT09PVsidG9wIiwibGVmdCJdLmluZGV4T2Yobik7cmV0dXJuIG9baT8ibGVmdCI6InRvcCJdPWFbbl0tKHU/b1tpPyJ3aWR0aCI6ImhlaWdodCJdOjApLGUucGxhY2VtZW50PUkodCksZS5vZmZzZXRzLnBvcHBlcj1DKG8pLGV9fSxoaWRlOntvcmRlcjo4MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlKXtpZighWihlLmluc3RhbmNlLm1vZGlmaWVycywiaGlkZSIsInByZXZlbnRPdmVyZmxvdyIpKXJldHVybiBlO3ZhciB0PWUub2Zmc2V0cy5yZWZlcmVuY2Usbj1GKGUuaW5zdGFuY2UubW9kaWZpZXJzLChmdW5jdGlvbihlKXtyZXR1cm4icHJldmVudE92ZXJmbG93Ij09PWUubmFtZX0pKS5ib3VuZGFyaWVzO2lmKHQuYm90dG9tPG4udG9wfHx0LmxlZnQ+bi5yaWdodHx8dC50b3A+bi5ib3R0b218fHQucmlnaHQ8bi5sZWZ0KXtpZighMD09PWUuaGlkZSlyZXR1cm4gZTtlLmhpZGU9ITAsZS5hdHRyaWJ1dGVzWyJ4LW91dC1vZi1ib3VuZGFyaWVzIl09IiJ9ZWxzZXtpZighMT09PWUuaGlkZSlyZXR1cm4gZTtlLmhpZGU9ITEsZS5hdHRyaWJ1dGVzWyJ4LW91dC1vZi1ib3VuZGFyaWVzIl09ITF9cmV0dXJuIGV9fSxjb21wdXRlU3R5bGU6e29yZGVyOjg1MCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC54LHI9dC55LG89ZS5vZmZzZXRzLnBvcHBlcixhPUYoZS5pbnN0YW5jZS5tb2RpZmllcnMsKGZ1bmN0aW9uKGUpe3JldHVybiJhcHBseVN0eWxlIj09PWUubmFtZX0pKS5ncHVBY2NlbGVyYXRpb247dm9pZCAwIT09YSYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpO3ZhciBpPXZvaWQgMCE9PWE/YTp0LmdwdUFjY2VsZXJhdGlvbix1PXAoZS5pbnN0YW5jZS5wb3BwZXIpLHM9eCh1KSxsPXtwb3NpdGlvbjpvLnBvc2l0aW9ufSxjPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5vZmZzZXRzLHI9bi5wb3BwZXIsbz1uLnJlZmVyZW5jZSxhPU1hdGgucm91bmQsaT1NYXRoLmZsb29yLHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHM9YShvLndpZHRoKSxsPWEoci53aWR0aCksYz0tMSE9PVsibGVmdCIsInJpZ2h0Il0uaW5kZXhPZihlLnBsYWNlbWVudCksZj0tMSE9PWUucGxhY2VtZW50LmluZGV4T2YoIi0iKSxkPXQ/Y3x8Znx8cyUyPT1sJTI/YTppOnUscD10P2E6dTtyZXR1cm57bGVmdDpkKHMlMj09MSYmbCUyPT0xJiYhZiYmdD9yLmxlZnQtMTpyLmxlZnQpLHRvcDpwKHIudG9wKSxib3R0b206cChyLmJvdHRvbSkscmlnaHQ6ZChyLnJpZ2h0KX19KGUsd2luZG93LmRldmljZVBpeGVsUmF0aW88Mnx8IUopLGY9ImJvdHRvbSI9PT1uPyJ0b3AiOiJib3R0b20iLGQ9InJpZ2h0Ij09PXI/ImxlZnQiOiJyaWdodCIsaD1xKCJ0cmFuc2Zvcm0iKSx5PXZvaWQgMCxtPXZvaWQgMDtpZihtPSJib3R0b20iPT09Zj8iSFRNTCI9PT11Lm5vZGVOYW1lPy11LmNsaWVudEhlaWdodCtjLmJvdHRvbTotcy5oZWlnaHQrYy5ib3R0b206Yy50b3AseT0icmlnaHQiPT09ZD8iSFRNTCI9PT11Lm5vZGVOYW1lPy11LmNsaWVudFdpZHRoK2MucmlnaHQ6LXMud2lkdGgrYy5yaWdodDpjLmxlZnQsaSYmaClsW2hdPSJ0cmFuc2xhdGUzZCgiK3krInB4LCAiK20rInB4LCAwKSIsbFtmXT0wLGxbZF09MCxsLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7ZWxzZXt2YXIgdj0iYm90dG9tIj09PWY/LTE6MSxnPSJyaWdodCI9PT1kPy0xOjE7bFtmXT1tKnYsbFtkXT15KmcsbC53aWxsQ2hhbmdlPWYrIiwgIitkfXZhciBiPXsieC1wbGFjZW1lbnQiOmUucGxhY2VtZW50fTtyZXR1cm4gZS5hdHRyaWJ1dGVzPWsoe30sYixlLmF0dHJpYnV0ZXMpLGUuc3R5bGVzPWsoe30sbCxlLnN0eWxlcyksZS5hcnJvd1N0eWxlcz1rKHt9LGUub2Zmc2V0cy5hcnJvdyxlLmFycm93U3R5bGVzKSxlfSxncHVBY2NlbGVyYXRpb246ITAseDoiYm90dG9tIix5OiJyaWdodCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuIFEoZS5pbnN0YW5jZS5wb3BwZXIsZS5zdHlsZXMpLHQ9ZS5pbnN0YW5jZS5wb3BwZXIsbj1lLmF0dHJpYnV0ZXMsT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ITEhPT1uW2VdP3Quc2V0QXR0cmlidXRlKGUsbltlXSk6dC5yZW1vdmVBdHRyaWJ1dGUoZSl9KSksZS5hcnJvd0VsZW1lbnQmJk9iamVjdC5rZXlzKGUuYXJyb3dTdHlsZXMpLmxlbmd0aCYmUShlLmFycm93RWxlbWVudCxlLmFycm93U3R5bGVzKSxlfSxvbkxvYWQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT1MKG8sdCxlLG4ucG9zaXRpb25GaXhlZCksaT1qKG4ucGxhY2VtZW50LGEsdCxlLG4ubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsbi5tb2RpZmllcnMuZmxpcC5wYWRkaW5nKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoIngtcGxhY2VtZW50IixpKSxRKHQse3Bvc2l0aW9uOm4ucG9zaXRpb25GaXhlZD8iZml4ZWQiOiJhYnNvbHV0ZSJ9KSxufSxncHVBY2NlbGVyYXRpb246dm9pZCAwfX19LGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307Xyh0aGlzLGUpLHRoaXMuc2NoZWR1bGVVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIudXBkYXRlKX0sdGhpcy51cGRhdGU9byh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnM9ayh7fSxlLkRlZmF1bHRzLGkpLHRoaXMuc3RhdGU9e2lzRGVzdHJveWVkOiExLGlzQ3JlYXRlZDohMSxzY3JvbGxQYXJlbnRzOltdfSx0aGlzLnJlZmVyZW5jZT10JiZ0LmpxdWVyeT90WzBdOnQsdGhpcy5wb3BwZXI9biYmbi5qcXVlcnk/blswXTpuLHRoaXMub3B0aW9ucy5tb2RpZmllcnM9e30sT2JqZWN0LmtleXMoayh7fSxlLkRlZmF1bHRzLm1vZGlmaWVycyxpLm1vZGlmaWVycykpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Iub3B0aW9ucy5tb2RpZmllcnNbdF09ayh7fSxlLkRlZmF1bHRzLm1vZGlmaWVyc1t0XXx8e30saS5tb2RpZmllcnM/aS5tb2RpZmllcnNbdF06e30pfSkpLHRoaXMubW9kaWZpZXJzPU9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5tb2RpZmllcnMpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGsoe25hbWU6ZX0sci5vcHRpb25zLm1vZGlmaWVyc1tlXSl9KSkuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5vcmRlci10Lm9yZGVyfSkpLHRoaXMubW9kaWZpZXJzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuZW5hYmxlZCYmYShlLm9uTG9hZCkmJmUub25Mb2FkKHIucmVmZXJlbmNlLHIucG9wcGVyLHIub3B0aW9ucyxlLHIuc3RhdGUpfSkpLHRoaXMudXBkYXRlKCk7dmFyIHU9dGhpcy5vcHRpb25zLmV2ZW50c0VuYWJsZWQ7dSYmdGhpcy5lbmFibGVFdmVudExpc3RlbmVycygpLHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZD11fXJldHVybiBFKGUsW3trZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gei5jYWxsKHRoaXMpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gVi5jYWxsKHRoaXMpfX0se2tleToiZW5hYmxlRXZlbnRMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFkuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSC5jYWxsKHRoaXMpfX1dKSxlfSgpO2llLlV0aWxzPSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6ZSkuUG9wcGVyVXRpbHMsaWUucGxhY2VtZW50cz0kLGllLkRlZmF1bHRzPWFlLHQuYT1pZX0pLmNhbGwodGhpcyxuKCJ5THBqIikpfSwiOE9RUyI6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99fSwiOFI5diI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI4MmMyIiksbz1uKCJ5THB0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9bygpO3JldHVybiByKE9iamVjdCx7YXNzaWduOmV9LHthc3NpZ246ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbiE9PWV9fSksZX19LCI4V2EzIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjJXNnoiKSxvPW4ubihyKSxhPW4oInExdEkiKSxpPW4ubihhKSx1PW4oIjE3eDkiKSxzPW4ubih1KSxsPW4oIkxoQ3YiKSxjPW4oIm5yNk8iKTtmdW5jdGlvbiBmKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixyO2YodGhpcyx0KTtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KG8pLGk9MDtpPG87aSsrKWFbaV09YXJndW1lbnRzW2ldO3JldHVybiBuPXI9ZCh0aGlzLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYSkpKSxyLmhpc3Rvcnk9T2JqZWN0KGwuZCkoci5wcm9wcyksZChyLG4pfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7bygpKCF0aGlzLnByb3BzLmhpc3RvcnksIjxNZW1vcnlSb3V0ZXI+IGlnbm9yZXMgdGhlIGhpc3RvcnkgcHJvcC4gVG8gdXNlIGEgY3VzdG9tIGhpc3RvcnksIHVzZSBgaW1wb3J0IHsgUm91dGVyIH1gIGluc3RlYWQgb2YgYGltcG9ydCB7IE1lbW9yeVJvdXRlciBhcyBSb3V0ZXIgfWAuIil9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBpLmEuY3JlYXRlRWxlbWVudChjLmEse2hpc3Rvcnk6dGhpcy5oaXN0b3J5LGNoaWxkcmVuOnRoaXMucHJvcHMuY2hpbGRyZW59KX0sdH0oaS5hLkNvbXBvbmVudCk7cC5wcm9wVHlwZXM9e2luaXRpYWxFbnRyaWVzOnMuYS5hcnJheSxpbml0aWFsSW5kZXg6cy5hLm51bWJlcixnZXRVc2VyQ29uZmlybWF0aW9uOnMuYS5mdW5jLGtleUxlbmd0aDpzLmEubnVtYmVyLGNoaWxkcmVuOnMuYS5ub2RlfSx0LmE9cH0sIjhkLy8iOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZnlPWSIpLG89bigiY3dGWSIpKCJkcmFmdF90cmVlX2RhdGFfc3VwcG9ydCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGE9ZS5nZXRTZWxlY3Rpb24oKSxpPWUuZ2V0Q3VycmVudENvbnRlbnQoKSx1PWEscz1hLmdldEFuY2hvcktleSgpLGw9YS5nZXRGb2N1c0tleSgpLGM9aS5nZXRCbG9ja0ZvcktleShzKTtpZihvJiYiZm9yd2FyZCI9PT1uJiZzIT09bClyZXR1cm4gaTtpZihhLmlzQ29sbGFwc2VkKCkpe2lmKCJmb3J3YXJkIj09PW4pe2lmKGUuaXNTZWxlY3Rpb25BdEVuZE9mQ29udGVudCgpKXJldHVybiBpO2lmKG8paWYoYS5nZXRBbmNob3JPZmZzZXQoKT09PWkuZ2V0QmxvY2tGb3JLZXkocykuZ2V0TGVuZ3RoKCkpe3ZhciBmPWkuZ2V0QmxvY2tGb3JLZXkoYy5uZXh0U2libGluZyk7aWYoIWZ8fDA9PT1mLmdldExlbmd0aCgpKXJldHVybiBpfX1lbHNlIGlmKGUuaXNTZWxlY3Rpb25BdFN0YXJ0T2ZDb250ZW50KCkpcmV0dXJuIGk7aWYoKHU9dChlKSk9PT1hKXJldHVybiBpfXJldHVybiByLnJlbW92ZVJhbmdlKGksdSxuKX19LCI4bUJEIjpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgicHQiLHttb250aHM6IkphbmVpcm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fnb3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0RleiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRG9taW5nb19TZWd1bmRhLWZlaXJhX1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1PDoWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9fMsKqXzPCql80wqpfNcKqXzbCql9Tw6EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgw6BzXSBMVCIsbmV4dERheToiW0FtYW5ow6Mgw6BzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8Ogc10gTFQiLGxhc3REYXk6IltPbnRlbSDDoHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IlvDmmx0aW1vXSBkZGRkIFvDoHNdIExUIjoiW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiaMOhICVzIixzOiJzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSwiOG94QiI6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIGEoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBpKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiB1KGUpe2lmKG49PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKG49PT1hfHwhbikmJnNldFRpbWVvdXQpcmV0dXJuIG49c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBuKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBuLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBuLmNhbGwodGhpcyxlLDApfX19IWZ1bmN0aW9uKCl7dHJ5e249ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDphfWNhdGNoKGUpe249YX10cnl7cj0iZnVuY3Rpb24iPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDppfWNhdGNoKGUpe3I9aX19KCk7dmFyIHMsbD1bXSxjPSExLGY9LTE7ZnVuY3Rpb24gZCgpe2MmJnMmJihjPSExLHMubGVuZ3RoP2w9cy5jb25jYXQobCk6Zj0tMSxsLmxlbmd0aCYmcCgpKX1mdW5jdGlvbiBwKCl7aWYoIWMpe3ZhciBlPXUoZCk7Yz0hMDtmb3IodmFyIHQ9bC5sZW5ndGg7dDspe2ZvcihzPWwsbD1bXTsrK2Y8dDspcyYmc1tmXS5ydW4oKTtmPS0xLHQ9bC5sZW5ndGh9cz1udWxsLGM9ITEsZnVuY3Rpb24oZSl7aWYocj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChyPT09aXx8IXIpJiZjbGVhclRpbWVvdXQpcmV0dXJuIHI9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHIuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiByLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gaChlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIHkoKXt9by5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO2wucHVzaChuZXcgaChlLHQpKSwxIT09bC5sZW5ndGh8fGN8fHUocCl9LGgucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LG8udGl0bGU9ImJyb3dzZXIiLG8uYnJvd3Nlcj0hMCxvLmVudj17fSxvLmFyZ3Y9W10sby52ZXJzaW9uPSIiLG8udmVyc2lvbnM9e30sby5vbj15LG8uYWRkTGlzdGVuZXI9eSxvLm9uY2U9eSxvLm9mZj15LG8ucmVtb3ZlTGlzdGVuZXI9eSxvLnJlbW92ZUFsbExpc3RlbmVycz15LG8uZW1pdD15LG8ucHJlcGVuZExpc3RlbmVyPXksby5wcmVwZW5kT25jZUxpc3RlbmVyPXksby5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuW119LG8uYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LG8uY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxvLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LG8udW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LCI4dVFtIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImxGSm4iKSxvPW4oIlRhamUiKSxhPW4oIkpQY3YiKSxpPWEuTGlzdCx1PWEuTWFwLHM9YS5PcmRlcmVkU2V0LGw9YS5SZWNvcmQsYz1hLlJlcGVhdCxmPXMoKSxkPWwoe2tleToiIix0eXBlOiJ1bnN0eWxlZCIsdGV4dDoiIixjaGFyYWN0ZXJMaXN0OmkoKSxkZXB0aDowLGRhdGE6dSgpfSkscD1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIGEodCl7cmV0dXJuIGUuY2FsbCh0aGlzLGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBlO3ZhciB0PWUuY2hhcmFjdGVyTGlzdCxuPWUudGV4dDtyZXR1cm4gbiYmIXQmJihlLmNoYXJhY3Rlckxpc3Q9aShjKHIuRU1QVFksbi5sZW5ndGgpKSksZX0odCkpfHx0aGlzfW49ZSwodD1hKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uO3ZhciB1PWEucHJvdG90eXBlO3JldHVybiB1LmdldEtleT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgia2V5Iil9LHUuZ2V0VHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgidHlwZSIpfSx1LmdldFRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoInRleHQiKX0sdS5nZXRDaGFyYWN0ZXJMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJjaGFyYWN0ZXJMaXN0Iil9LHUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpLmxlbmd0aH0sdS5nZXREZXB0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgiZGVwdGgiKX0sdS5nZXREYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJkYXRhIil9LHUuZ2V0SW5saW5lU3R5bGVBdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldENoYXJhY3Rlckxpc3QoKS5nZXQoZSk7cmV0dXJuIHQ/dC5nZXRTdHlsZSgpOmZ9LHUuZ2V0RW50aXR5QXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDaGFyYWN0ZXJMaXN0KCkuZ2V0KGUpO3JldHVybiB0P3QuZ2V0RW50aXR5KCk6bnVsbH0sdS5maW5kU3R5bGVSYW5nZXM9ZnVuY3Rpb24oZSx0KXtvKHRoaXMuZ2V0Q2hhcmFjdGVyTGlzdCgpLGgsZSx0KX0sdS5maW5kRW50aXR5UmFuZ2VzPWZ1bmN0aW9uKGUsdCl7byh0aGlzLmdldENoYXJhY3Rlckxpc3QoKSx5LGUsdCl9LGF9KGQpO2Z1bmN0aW9uIGgoZSx0KXtyZXR1cm4gZS5nZXRTdHlsZSgpPT09dC5nZXRTdHlsZSgpfWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4gZS5nZXRFbnRpdHkoKT09PXQuZ2V0RW50aXR5KCl9ZS5leHBvcnRzPXB9LCI4emdLIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX19LCI5Qy9iIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oInExdEkiKSxvPW4ubihyKSxhPW4oIjE3eDkiKSxpPW4ubihhKSx1PW4oIm0xbFIiKSxzPW4ubih1KSxsPW4oIjRwN0kiKSxjPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuYT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0KXt2YXIgbj10LndyYXBwZWRDb21wb25lbnRSZWYscj1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufSh0LFsid3JhcHBlZENvbXBvbmVudFJlZiJdKTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQobC5hLHtjaGlsZHJlbjpmdW5jdGlvbih0KXtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoZSxjKHt9LHIsdCx7cmVmOm59KSl9fSl9O3JldHVybiB0LmRpc3BsYXlOYW1lPSJ3aXRoUm91dGVyKCIrKGUuZGlzcGxheU5hbWV8fGUubmFtZSkrIikiLHQuV3JhcHBlZENvbXBvbmVudD1lLHQucHJvcFR5cGVzPXt3cmFwcGVkQ29tcG9uZW50UmVmOmkuYS5mdW5jfSxzKCkodCxlKX19LCI5VnVTIjpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9IiIsbihuLnM9NjUpfShbZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicTF0SSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIc3FnIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjVmN24iKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigidlYrRyIpfSwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlRTWVEiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigid2QvUiIpfSwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiTFRBQyIpfSwsZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT1uKDApLHU9KHI9aSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O2Z1bmN0aW9uIHMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBzKHRoaXMsdCksbCh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksYSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdmciLG8oe3ZpZXdCb3g6IjAgMCAxMiAxMiJ9LHRoaXMucHJvcHMpLHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xMS41My40N2EuNzUuNzUgMCAwIDAtMS4wNjEgMGwtNC40NyA0LjQ3TDEuNTI5LjQ3QS43NS43NSAwIDEgMCAuNDY4IDEuNTMxbDQuNDcgNC40Ny00LjQ3IDQuNDdhLjc1Ljc1IDAgMSAwIDEuMDYxIDEuMDYxbDQuNDctNC40NyA0LjQ3IDQuNDdhLjc1Ljc1IDAgMSAwIDEuMDYxLTEuMDYxbC00LjQ3LTQuNDcgNC40Ny00LjQ3YS43NS43NSAwIDAgMCAwLTEuMDYxeiJ9KSl9fV0pLHR9KHUuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1jfSwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIllaRFYiKX0sLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInJpdDkiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVE9QeiIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJFN1VQIil9LCwsLCwsLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ3MGlKIil9LCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oImk4aTQiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiQnM0NyIpfSwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInlMb1ciKX0sLCwsLCwsLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJubVRSIil9LCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiQ0RBcCIpfSwsLCwsLCxmdW5jdGlvbihlLHQsbil7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPU8obigwKSksaT1PKG4oMzkpKSx1PU8obigxNCkpLHM9TyhuKDcpKSxsPU8obig2KSksYz1PKG4oNDApKSxmPW4oMSksZD1uKDE4KSxwPU8obig5KSksaD1uKDMpLHk9TyhuKDE3KSksbT1PKG4oMjkpKSx2PU8obigxNikpLGc9TyhuKDU1KSksYj1PKG4oNTgpKSx3PU8obigxMSkpLF89TyhuKDQzKSksRT1uKDIpO2Z1bmN0aW9uIE8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBrPSgwLGYuZm9yYmlkRXh0cmFQcm9wcykoXy5kZWZhdWx0KSxDPXtzdGFydERhdGU6bnVsbCxlbmREYXRlOm51bGwsZm9jdXNlZElucHV0Om51bGwsc3RhcnREYXRlSWQ6RS5TVEFSVF9EQVRFLHN0YXJ0RGF0ZVBsYWNlaG9sZGVyVGV4dDoiU3RhcnQgRGF0ZSIsZW5kRGF0ZUlkOkUuRU5EX0RBVEUsZW5kRGF0ZVBsYWNlaG9sZGVyVGV4dDoiRW5kIERhdGUiLGRpc2FibGVkOiExLHJlcXVpcmVkOiExLHJlYWRPbmx5OiExLHNjcmVlblJlYWRlcklucHV0TWVzc2FnZToiIixzaG93Q2xlYXJEYXRlczohMSxzaG93RGVmYXVsdElucHV0SWNvbjohMSxpbnB1dEljb25Qb3NpdGlvbjpFLklDT05fQkVGT1JFX1BPU0lUSU9OLGN1c3RvbUlucHV0SWNvbjpudWxsLGN1c3RvbUFycm93SWNvbjpudWxsLGN1c3RvbUNsb3NlSWNvbjpudWxsLHJlbmRlck1vbnRoOm51bGwsb3JpZW50YXRpb246RS5IT1JJWk9OVEFMX09SSUVOVEFUSU9OLGFuY2hvckRpcmVjdGlvbjpFLkFOQ0hPUl9MRUZULG9wZW5EaXJlY3Rpb246RS5PUEVOX0RPV04saG9yaXpvbnRhbE1hcmdpbjowLHdpdGhQb3J0YWw6ITEsd2l0aEZ1bGxTY3JlZW5Qb3J0YWw6ITEsaW5pdGlhbFZpc2libGVNb250aDpudWxsLG51bWJlck9mTW9udGhzOjIsa2VlcE9wZW5PbkRhdGVTZWxlY3Q6ITEscmVvcGVuUGlja2VyT25DbGVhckRhdGVzOiExLHJlbmRlckNhbGVuZGFySW5mbzpudWxsLGhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsOiExLGRheVNpemU6RS5EQVlfU0laRSxpc1JUTDohMSxmaXJzdERheU9mV2VlazpudWxsLG5hdlByZXY6bnVsbCxuYXZOZXh0Om51bGwsb25QcmV2TW9udGhDbGljazpmdW5jdGlvbigpe30sb25OZXh0TW9udGhDbGljazpmdW5jdGlvbigpe30sb25DbG9zZTpmdW5jdGlvbigpe30scmVuZGVyRGF5Om51bGwsbWluaW11bU5pZ2h0czoxLGVuYWJsZU91dHNpZGVEYXlzOiExLGlzRGF5QmxvY2tlZDpmdW5jdGlvbigpe3JldHVybiExfSxpc091dHNpZGVSYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4hKDAsdi5kZWZhdWx0KShlLCgwLHMuZGVmYXVsdCkoKSl9LGlzRGF5SGlnaGxpZ2h0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZGlzcGxheUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1bHQubG9jYWxlRGF0YSgpLmxvbmdEYXRlRm9ybWF0KCJMIil9LG1vbnRoRm9ybWF0OiJNTU1NIFlZWVkiLHdlZWtEYXlGb3JtYXQ6ImRkIixwaHJhc2VzOmguRGF0ZVJhbmdlUGlja2VyUGhyYXNlc30seD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpO3JldHVybiBuLnN0YXRlPXtkYXlQaWNrZXJDb250YWluZXJTdHlsZXM6e30saXNEYXRlUmFuZ2VQaWNrZXJJbnB1dEZvY3VzZWQ6ITEsaXNEYXlQaWNrZXJGb2N1c2VkOiExLHNob3dLZXlib2FyZFNob3J0Y3V0czohMX0sbi5pc1RvdWNoRGV2aWNlPSExLG4ub25PdXRzaWRlQ2xpY2s9bi5vbk91dHNpZGVDbGljay5iaW5kKG4pLG4ub25EYXRlUmFuZ2VQaWNrZXJJbnB1dEZvY3VzPW4ub25EYXRlUmFuZ2VQaWNrZXJJbnB1dEZvY3VzLmJpbmQobiksbi5vbkRheVBpY2tlckZvY3VzPW4ub25EYXlQaWNrZXJGb2N1cy5iaW5kKG4pLG4ub25EYXlQaWNrZXJCbHVyPW4ub25EYXlQaWNrZXJCbHVyLmJpbmQobiksbi5zaG93S2V5Ym9hcmRTaG9ydGN1dHNQYW5lbD1uLnNob3dLZXlib2FyZFNob3J0Y3V0c1BhbmVsLmJpbmQobiksbi5yZXNwb25zaXZpemVQaWNrZXJQb3NpdGlvbj1uLnJlc3BvbnNpdml6ZVBpY2tlclBvc2l0aW9uLmJpbmQobiksbi5zZXREYXlQaWNrZXJDb250YWluZXJSZWY9bi5zZXREYXlQaWNrZXJDb250YWluZXJSZWYuYmluZChuKSxuLnNldERheVBpY2tlclJlZj1uLnNldERheVBpY2tlclJlZi5iaW5kKG4pLG59cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIisodm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVzaXplSGFuZGxlPSgwLGQuYWRkRXZlbnRMaXN0ZW5lcikod2luZG93LCJyZXNpemUiLHRoaXMucmVzcG9uc2l2aXplUGlja2VyUG9zaXRpb24se3Bhc3NpdmU6ITB9KSx0aGlzLnJlc3BvbnNpdml6ZVBpY2tlclBvc2l0aW9uKCksdGhpcy5wcm9wcy5mb2N1c2VkSW5wdXQmJnRoaXMuc2V0U3RhdGUoe2lzRGF0ZVJhbmdlUGlja2VySW5wdXRGb2N1c2VkOiEwfSksdGhpcy5pc1RvdWNoRGV2aWNlPSgwLHAuZGVmYXVsdCkoKX19LHtrZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCx1LmRlZmF1bHQpKHRoaXMsZSx0KX19LHtrZXk6ImNvbXBvbmVudERpZFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7IWUuZm9jdXNlZElucHV0JiZ0aGlzLnByb3BzLmZvY3VzZWRJbnB1dCYmdGhpcy5pc09wZW5lZCgpJiZ0aGlzLnJlc3BvbnNpdml6ZVBpY2tlclBvc2l0aW9uKCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlc2l6ZUhhbmRsZSYmKDAsZC5yZW1vdmVFdmVudExpc3RlbmVyKSh0aGlzLnJlc2l6ZUhhbmRsZSl9fSx7a2V5OiJvbk91dHNpZGVDbGljayIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5vbkZvY3VzQ2hhbmdlLG49ZS5vbkNsb3NlLHI9ZS5zdGFydERhdGUsbz1lLmVuZERhdGU7dGhpcy5pc09wZW5lZCgpJiYodGhpcy5zZXRTdGF0ZSh7aXNEYXRlUmFuZ2VQaWNrZXJJbnB1dEZvY3VzZWQ6ITEsaXNEYXlQaWNrZXJGb2N1c2VkOiExLHNob3dLZXlib2FyZFNob3J0Y3V0czohMX0pLHQobnVsbCksbih7c3RhcnREYXRlOnIsZW5kRGF0ZTpvfSkpfX0se2tleToib25EYXRlUmFuZ2VQaWNrZXJJbnB1dEZvY3VzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5vbkZvY3VzQ2hhbmdlLHI9dC53aXRoUG9ydGFsLG89dC53aXRoRnVsbFNjcmVlblBvcnRhbDtlJiYocnx8b3x8dGhpcy5pc1RvdWNoRGV2aWNlP3RoaXMub25EYXlQaWNrZXJGb2N1cygpOnRoaXMub25EYXlQaWNrZXJCbHVyKCkpLG4oZSl9fSx7a2V5OiJvbkRheVBpY2tlckZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmZvY3VzZWRJbnB1dCxuPWUub25Gb2N1c0NoYW5nZTt0fHxuKEUuU1RBUlRfREFURSksdGhpcy5zZXRTdGF0ZSh7aXNEYXRlUmFuZ2VQaWNrZXJJbnB1dEZvY3VzZWQ6ITEsaXNEYXlQaWNrZXJGb2N1c2VkOiEwLHNob3dLZXlib2FyZFNob3J0Y3V0czohMX0pfX0se2tleToib25EYXlQaWNrZXJCbHVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2lzRGF0ZVJhbmdlUGlja2VySW5wdXRGb2N1c2VkOiEwLGlzRGF5UGlja2VyRm9jdXNlZDohMSxzaG93S2V5Ym9hcmRTaG9ydGN1dHM6ITF9KX19LHtrZXk6ImdldERheVBpY2tlckNvbnRhaW5lckNsYXNzZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUub3JpZW50YXRpb24sbj1lLndpdGhQb3J0YWwscj1lLndpdGhGdWxsU2NyZWVuUG9ydGFsLG89ZS5hbmNob3JEaXJlY3Rpb24sYT1lLm9wZW5EaXJlY3Rpb24saT1lLmlzUlRMO3JldHVybigwLGwuZGVmYXVsdCkoIkRhdGVSYW5nZVBpY2tlcl9fcGlja2VyIix7IkRhdGVSYW5nZVBpY2tlcl9fcGlja2VyLS1kaXJlY3Rpb24tbGVmdCI6bz09PUUuQU5DSE9SX0xFRlQsIkRhdGVSYW5nZVBpY2tlcl9fcGlja2VyLS1kaXJlY3Rpb24tcmlnaHQiOm89PT1FLkFOQ0hPUl9SSUdIVCwiRGF0ZVJhbmdlUGlja2VyX19waWNrZXItLW9wZW4tZG93biI6YT09PUUuT1BFTl9ET1dOLCJEYXRlUmFuZ2VQaWNrZXJfX3BpY2tlci0tb3Blbi11cCI6YT09PUUuT1BFTl9VUCwiRGF0ZVJhbmdlUGlja2VyX19waWNrZXItLWhvcml6b250YWwiOnQ9PT1FLkhPUklaT05UQUxfT1JJRU5UQVRJT04sIkRhdGVSYW5nZVBpY2tlcl9fcGlja2VyLS12ZXJ0aWNhbCI6dD09PUUuVkVSVElDQUxfT1JJRU5UQVRJT04sIkRhdGVSYW5nZVBpY2tlcl9fcGlja2VyLS1wb3J0YWwiOm58fHIsIkRhdGVSYW5nZVBpY2tlcl9fcGlja2VyLS1mdWxsLXNjcmVlbi1wb3J0YWwiOnIsIkRhdGVSYW5nZVBpY2tlcl9fcGlja2VyLS1ydGwiOml9KX19LHtrZXk6ImdldERheVBpY2tlckRPTU5vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzLmRheVBpY2tlcil9fSx7a2V5OiJzZXREYXlQaWNrZXJDb250YWluZXJSZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZGF5UGlja2VyQ29udGFpbmVyPWV9fSx7a2V5OiJzZXREYXlQaWNrZXJSZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZGF5UGlja2VyPWV9fSx7a2V5OiJpc09wZW5lZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmZvY3VzZWRJbnB1dDtyZXR1cm4gZT09PUUuU1RBUlRfREFURXx8ZT09PUUuRU5EX0RBVEV9fSx7a2V5OiJyZXNwb25zaXZpemVQaWNrZXJQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLnNldFN0YXRlKHtkYXlQaWNrZXJDb250YWluZXJTdHlsZXM6e319KSx0aGlzLmlzT3BlbmVkKCkpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmFuY2hvckRpcmVjdGlvbixuPWUuaG9yaXpvbnRhbE1hcmdpbixyPWUud2l0aFBvcnRhbCxvPWUud2l0aEZ1bGxTY3JlZW5Qb3J0YWwsYT10aGlzLnN0YXRlLmRheVBpY2tlckNvbnRhaW5lclN0eWxlcyxpPXQ9PT1FLkFOQ0hPUl9MRUZUO2lmKCFyJiYhbyl7dmFyIHU9dGhpcy5kYXlQaWNrZXJDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1hW3RdfHwwLGw9aT91W0UuQU5DSE9SX1JJR0hUXTp1W0UuQU5DSE9SX0xFRlRdO3RoaXMuc2V0U3RhdGUoe2RheVBpY2tlckNvbnRhaW5lclN0eWxlczooMCxtLmRlZmF1bHQpKHQscyxsLG4pfSl9fX19LHtrZXk6InNob3dLZXlib2FyZFNob3J0Y3V0c1BhbmVsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2lzRGF0ZVJhbmdlUGlja2VySW5wdXRGb2N1c2VkOiExLGlzRGF5UGlja2VyRm9jdXNlZDohMCxzaG93S2V5Ym9hcmRTaG9ydGN1dHM6ITB9KX19LHtrZXk6Im1heWJlUmVuZGVyRGF5UGlja2VyV2l0aFBvcnRhbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS53aXRoUG9ydGFsLG49ZS53aXRoRnVsbFNjcmVlblBvcnRhbDtyZXR1cm4gdGhpcy5pc09wZW5lZCgpP3R8fG4/YS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LHtpc09wZW5lZDohMH0sdGhpcy5yZW5kZXJEYXlQaWNrZXIoKSk6dGhpcy5yZW5kZXJEYXlQaWNrZXIoKTpudWxsfX0se2tleToicmVuZGVyRGF5UGlja2VyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmlzRGF5QmxvY2tlZCxuPWUuaXNEYXlIaWdobGlnaHRlZCxyPWUuaXNPdXRzaWRlUmFuZ2Usbz1lLm51bWJlck9mTW9udGhzLGk9ZS5vcmllbnRhdGlvbix1PWUubW9udGhGb3JtYXQsbD1lLnJlbmRlck1vbnRoLGM9ZS5uYXZQcmV2LGY9ZS5uYXZOZXh0LGQ9ZS5vblByZXZNb250aENsaWNrLHA9ZS5vbk5leHRNb250aENsaWNrLGg9ZS5vbkRhdGVzQ2hhbmdlLHk9ZS5vbkZvY3VzQ2hhbmdlLG09ZS53aXRoUG9ydGFsLHY9ZS53aXRoRnVsbFNjcmVlblBvcnRhbCxnPWUuZGF5U2l6ZSxfPWUuZW5hYmxlT3V0c2lkZURheXMsRT1lLmZvY3VzZWRJbnB1dCxPPWUuc3RhcnREYXRlLGs9ZS5lbmREYXRlLEM9ZS5taW5pbXVtTmlnaHRzLHg9ZS5rZWVwT3Blbk9uRGF0ZVNlbGVjdCxTPWUucmVuZGVyRGF5LEQ9ZS5yZW5kZXJDYWxlbmRhckluZm8sVD1lLmZpcnN0RGF5T2ZXZWVrLE09ZS5pbml0aWFsVmlzaWJsZU1vbnRoLFA9ZS5oaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbCxOPWUuY3VzdG9tQ2xvc2VJY29uLGo9ZS5vbkNsb3NlLEw9ZS5waHJhc2VzLFI9ZS5pc1JUTCxJPWUud2Vla0RheUZvcm1hdCxBPXRoaXMuc3RhdGUsRj1BLmRheVBpY2tlckNvbnRhaW5lclN0eWxlcyxCPUEuaXNEYXlQaWNrZXJGb2N1c2VkLHo9QS5zaG93S2V5Ym9hcmRTaG9ydGN1dHMsSz0hdiYmbT90aGlzLm9uT3V0c2lkZUNsaWNrOnZvaWQgMCxxPU18fGZ1bmN0aW9uKCl7cmV0dXJuIE98fGt8fCgwLHMuZGVmYXVsdCkoKX0sVj1OfHxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh3LmRlZmF1bHQsbnVsbCk7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtyZWY6dGhpcy5zZXREYXlQaWNrZXJDb250YWluZXJSZWYsY2xhc3NOYW1lOnRoaXMuZ2V0RGF5UGlja2VyQ29udGFpbmVyQ2xhc3NlcygpLHN0eWxlOkYsb25DbGljazpLfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChiLmRlZmF1bHQse3JlZjp0aGlzLnNldERheVBpY2tlclJlZixvcmllbnRhdGlvbjppLGVuYWJsZU91dHNpZGVEYXlzOl8sbnVtYmVyT2ZNb250aHM6byxvblByZXZNb250aENsaWNrOmQsb25OZXh0TW9udGhDbGljazpwLG9uRGF0ZXNDaGFuZ2U6aCxvbkZvY3VzQ2hhbmdlOnksb25DbG9zZTpqLGZvY3VzZWRJbnB1dDpFLHN0YXJ0RGF0ZTpPLGVuZERhdGU6ayxtb250aEZvcm1hdDp1LHJlbmRlck1vbnRoOmwsd2l0aFBvcnRhbDptfHx2LGRheVNpemU6Zyxpbml0aWFsVmlzaWJsZU1vbnRoOnEsaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWw6UCxuYXZQcmV2OmMsbmF2TmV4dDpmLG1pbmltdW1OaWdodHM6Qyxpc091dHNpZGVSYW5nZTpyLGlzRGF5SGlnaGxpZ2h0ZWQ6bixpc0RheUJsb2NrZWQ6dCxrZWVwT3Blbk9uRGF0ZVNlbGVjdDp4LHJlbmRlckRheTpTLHJlbmRlckNhbGVuZGFySW5mbzpELGlzRm9jdXNlZDpCLHNob3dLZXlib2FyZFNob3J0Y3V0czp6LG9uQmx1cjp0aGlzLm9uRGF5UGlja2VyQmx1cixwaHJhc2VzOkwsaXNSVEw6UixmaXJzdERheU9mV2VlazpULHdlZWtEYXlGb3JtYXQ6SX0pLHYmJmEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6IkRhdGVSYW5nZVBpY2tlcl9fY2xvc2UiLHR5cGU6ImJ1dHRvbiIsb25DbGljazp0aGlzLm9uT3V0c2lkZUNsaWNrLCJhcmlhLWxhYmVsIjpMLmNsb3NlRGF0ZVBpY2tlcn0sYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRGF0ZVJhbmdlUGlja2VyX19jbG9zZSJ9LFYpKSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc3RhcnREYXRlLG49ZS5zdGFydERhdGVJZCxyPWUuc3RhcnREYXRlUGxhY2Vob2xkZXJUZXh0LG89ZS5lbmREYXRlLGk9ZS5lbmREYXRlSWQsdT1lLmVuZERhdGVQbGFjZWhvbGRlclRleHQscz1lLmZvY3VzZWRJbnB1dCxsPWUuc2NyZWVuUmVhZGVySW5wdXRNZXNzYWdlLGM9ZS5zaG93Q2xlYXJEYXRlcyxmPWUuc2hvd0RlZmF1bHRJbnB1dEljb24sZD1lLmlucHV0SWNvblBvc2l0aW9uLHA9ZS5jdXN0b21JbnB1dEljb24saD1lLmN1c3RvbUFycm93SWNvbixtPWUuY3VzdG9tQ2xvc2VJY29uLHY9ZS5kaXNhYmxlZCxiPWUucmVxdWlyZWQsdz1lLnJlYWRPbmx5LF89ZS5vcGVuRGlyZWN0aW9uLE89ZS5waHJhc2VzLGs9ZS5pc091dHNpZGVSYW5nZSxDPWUubWluaW11bU5pZ2h0cyx4PWUud2l0aFBvcnRhbCxTPWUud2l0aEZ1bGxTY3JlZW5Qb3J0YWwsRD1lLmRpc3BsYXlGb3JtYXQsVD1lLnJlb3BlblBpY2tlck9uQ2xlYXJEYXRlcyxNPWUua2VlcE9wZW5PbkRhdGVTZWxlY3QsUD1lLm9uRGF0ZXNDaGFuZ2UsTj1lLm9uQ2xvc2Usaj1lLmlzUlRMLEw9dGhpcy5zdGF0ZS5pc0RhdGVSYW5nZVBpY2tlcklucHV0Rm9jdXNlZCxSPXh8fFM/dm9pZCAwOnRoaXMub25PdXRzaWRlQ2xpY2s7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRhdGVSYW5nZVBpY2tlciJ9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHkuZGVmYXVsdCx7b25PdXRzaWRlQ2xpY2s6Un0sYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZy5kZWZhdWx0LHtzdGFydERhdGU6dCxzdGFydERhdGVJZDpuLHN0YXJ0RGF0ZVBsYWNlaG9sZGVyVGV4dDpyLGlzU3RhcnREYXRlRm9jdXNlZDpzPT09RS5TVEFSVF9EQVRFLGVuZERhdGU6byxlbmREYXRlSWQ6aSxlbmREYXRlUGxhY2Vob2xkZXJUZXh0OnUsaXNFbmREYXRlRm9jdXNlZDpzPT09RS5FTkRfREFURSxkaXNwbGF5Rm9ybWF0OkQsc2hvd0NsZWFyRGF0ZXM6YyxzaG93Q2FyZXQ6IXgmJiFTLHNob3dEZWZhdWx0SW5wdXRJY29uOmYsaW5wdXRJY29uUG9zaXRpb246ZCxjdXN0b21JbnB1dEljb246cCxjdXN0b21BcnJvd0ljb246aCxjdXN0b21DbG9zZUljb246bSxkaXNhYmxlZDp2LHJlcXVpcmVkOmIscmVhZE9ubHk6dyxvcGVuRGlyZWN0aW9uOl8scmVvcGVuUGlja2VyT25DbGVhckRhdGVzOlQsa2VlcE9wZW5PbkRhdGVTZWxlY3Q6TSxpc091dHNpZGVSYW5nZTprLG1pbmltdW1OaWdodHM6Qyx3aXRoRnVsbFNjcmVlblBvcnRhbDpTLG9uRGF0ZXNDaGFuZ2U6UCxvbkZvY3VzQ2hhbmdlOnRoaXMub25EYXRlUmFuZ2VQaWNrZXJJbnB1dEZvY3VzLG9uQXJyb3dEb3duOnRoaXMub25EYXlQaWNrZXJGb2N1cyxvblF1ZXN0aW9uTWFyazp0aGlzLnNob3dLZXlib2FyZFNob3J0Y3V0c1BhbmVsLG9uQ2xvc2U6TixwaHJhc2VzOk8sc2NyZWVuUmVhZGVyTWVzc2FnZTpsLGlzRm9jdXNlZDpMLGlzUlRMOmp9KSx0aGlzLm1heWJlUmVuZGVyRGF5UGlja2VyV2l0aFBvcnRhbCgpKSl9fV0pLHR9KGEuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD14LHgucHJvcFR5cGVzPWsseC5kZWZhdWx0UHJvcHM9Q31dKX0sIjlyWlgiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89bigicUZTMyIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O3QuZGVmYXVsdD1hLmRlZmF1bHQsZS5leHBvcnRzPXQuZGVmYXVsdH0sIjl4NngiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHx8KHQ9e30pLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiYodD17Y21wOnR9KTt2YXIgbixyPSJib29sZWFuIj09dHlwZW9mIHQuY3ljbGVzJiZ0LmN5Y2xlcyxvPXQuY21wJiYobj10LmNtcCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbz17a2V5OnQsdmFsdWU6ZVt0XX0sYT17a2V5OnIsdmFsdWU6ZVtyXX07cmV0dXJuIG4obyxhKX19KSxhPVtdO3JldHVybiBmdW5jdGlvbiBlKHQpe2lmKHQmJnQudG9KU09OJiYiZnVuY3Rpb24iPT10eXBlb2YgdC50b0pTT04mJih0PXQudG9KU09OKCkpLHZvaWQgMCE9PXQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gaXNGaW5pdGUodCk/IiIrdDoibnVsbCI7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXJldHVybiBKU09OLnN0cmluZ2lmeSh0KTt2YXIgbixpO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihpPSJbIixuPTA7bjx0Lmxlbmd0aDtuKyspbiYmKGkrPSIsIiksaSs9ZSh0W25dKXx8Im51bGwiO3JldHVybiBpKyJdIn1pZihudWxsPT09dClyZXR1cm4ibnVsbCI7aWYoLTEhPT1hLmluZGV4T2YodCkpe2lmKHIpcmV0dXJuIEpTT04uc3RyaW5naWZ5KCJfX2N5Y2xlX18iKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09OIil9dmFyIHU9YS5wdXNoKHQpLTEscz1PYmplY3Qua2V5cyh0KS5zb3J0KG8mJm8odCkpO2ZvcihpPSIiLG49MDtuPHMubGVuZ3RoO24rKyl7dmFyIGw9c1tuXSxjPWUodFtsXSk7YyYmKGkmJihpKz0iLCIpLGkrPUpTT04uc3RyaW5naWZ5KGwpKyI6IitjKX1yZXR1cm4gYS5zcGxpY2UodSwxKSwieyIraSsifSJ9fShlKX19LCJBQkovIjpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oInA3SloiKS5PYnNlcnZhYmxlfSxBS1BUOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQuZ2V0U3RhcnRLZXkoKSxhPXQuZ2V0RW5kS2V5KCksaT1lLmdldEJsb2NrTWFwKCksdT1pLnRvU2VxKCkuc2tpcFVudGlsKChmdW5jdGlvbihlLHQpe3JldHVybiB0PT09b30pKS50YWtlVW50aWwoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9PT1hfSkpLmNvbmNhdChbW2EsaS5nZXQoYSldXSkubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLmdldERlcHRoKCkrbjtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKHQscikpLGUuc2V0KCJkZXB0aCIsdCl9KSk7cmV0dXJuIGk9aS5tZXJnZSh1KSxlLm1lcmdlKHtibG9ja01hcDppLHNlbGVjdGlvbkJlZm9yZTp0LHNlbGVjdGlvbkFmdGVyOnR9KX19LEFQMno6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIm5tbmMiKSxvPU9iamVjdC5wcm90b3R5cGUsYT1vLmhhc093blByb3BlcnR5LGk9by50b1N0cmluZyx1PXI/ci50b1N0cmluZ1RhZzp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEuY2FsbChlLHUpLG49ZVt1XTt0cnl7ZVt1XT12b2lkIDA7dmFyIHI9ITB9Y2F0Y2goZSl7fXZhciBvPWkuY2FsbChlKTtyZXR1cm4gciYmKHQ/ZVt1XT1uOmRlbGV0ZSBlW3VdKSxvfX0sQVY3RDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxvPW4oInExdEkiKSxhPXMobyksaT0ocyhuKCIxN3g5IikpLHMobigiemUyeCIpKSksdT1uKCJWQlZZIik7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGw9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpO3JldHVybiBuLmhhbmRsZUtleVVwPW4uaGFuZGxlS2V5VXAuYmluZChuKSxufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSkscih0LFt7a2V5OiJzaG91bGRDb21wb25lbnRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmxvY2FsZSE9PXRoaXMucHJvcHMubG9jYWxlfHxlLmNsYXNzTmFtZXMhPT10aGlzLnByb3BzLmNsYXNzTmFtZXN8fGUuZGF0ZS5nZXRNb250aCgpIT09dGhpcy5wcm9wcy5kYXRlLmdldE1vbnRoKCl8fGUuZGF0ZS5nZXRGdWxsWWVhcigpIT09dGhpcy5wcm9wcy5kYXRlLmdldEZ1bGxZZWFyKCl9fSx7a2V5OiJoYW5kbGVLZXlVcCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT09dS5FTlRFUiYmdGhpcy5wcm9wcy5vbkNsaWNrKGUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNsYXNzTmFtZXMsbj1lLmRhdGUscj1lLm1vbnRocyxvPWUubG9jYWxlLGk9ZS5sb2NhbGVVdGlscyx1PWUub25DbGljaztyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0LmNhcHRpb24scm9sZToiaGVhZGluZyJ9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtvbkNsaWNrOnUsb25LZXlVcDp0aGlzLmhhbmRsZUtleVVwfSxyP3Jbbi5nZXRNb250aCgpXSsiICIrbi5nZXRGdWxsWWVhcigpOmkuZm9ybWF0TW9udGhUaXRsZShuLG8pKSl9fV0pLHR9KG8uQ29tcG9uZW50KTtsLmRlZmF1bHRQcm9wcz17bG9jYWxlVXRpbHM6aS5kZWZhdWx0fSx0LmRlZmF1bHQ9bCxsLnByb3BUeXBlcz17fX0sQXFDTDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9fSxBeUI1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiczhyYSIpLG89bigicE1scCIpLGE9bigiNHBJQiIpLGk9YS5pc1BsYXRmb3JtKCJNYWMgT1MgWCIpLHU9aSYmYS5pc0Jyb3dzZXIoIkZpcmVmb3ggPCAyOSIpLHM9ci5oYXNDb21tYW5kTW9kaWZpZXIsbD1yLmlzQ3RybEtleUNvbW1hbmQ7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gaSYmZS5hbHRLZXl8fGwoZSl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgNjY6cmV0dXJuIHMoZSk/ImJvbGQiOm51bGw7Y2FzZSA2ODpyZXR1cm4gbChlKT8iZGVsZXRlIjpudWxsO2Nhc2UgNzI6cmV0dXJuIGwoZSk/ImJhY2tzcGFjZSI6bnVsbDtjYXNlIDczOnJldHVybiBzKGUpPyJpdGFsaWMiOm51bGw7Y2FzZSA3NDpyZXR1cm4gcyhlKT8iY29kZSI6bnVsbDtjYXNlIDc1OnJldHVybiBpJiZsKGUpPyJzZWNvbmRhcnktY3V0IjpudWxsO2Nhc2UgNzc6Y2FzZSA3OTpyZXR1cm4gbChlKT8ic3BsaXQtYmxvY2siOm51bGw7Y2FzZSA4NDpyZXR1cm4gaSYmbChlKT8idHJhbnNwb3NlLWNoYXJhY3RlcnMiOm51bGw7Y2FzZSA4NTpyZXR1cm4gcyhlKT8idW5kZXJsaW5lIjpudWxsO2Nhc2UgODc6cmV0dXJuIGkmJmwoZSk/ImJhY2tzcGFjZS13b3JkIjpudWxsO2Nhc2UgODk6cmV0dXJuIGwoZSk/aT8ic2Vjb25kYXJ5LXBhc3RlIjoicmVkbyI6bnVsbDtjYXNlIDkwOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9lLnNoaWZ0S2V5PyJyZWRvIjoidW5kbyI6bnVsbH0oZSl8fG51bGw7Y2FzZSBvLlJFVFVSTjpyZXR1cm4ic3BsaXQtYmxvY2siO2Nhc2Ugby5ERUxFVEU6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiFpJiZlLnNoaWZ0S2V5P251bGw6YyhlKT8iZGVsZXRlLXdvcmQiOiJkZWxldGUifShlKTtjYXNlIG8uQkFDS1NQQUNFOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gcyhlKSYmaT8iYmFja3NwYWNlLXRvLXN0YXJ0LW9mLWxpbmUiOmMoZSk/ImJhY2tzcGFjZS13b3JkIjoiYmFja3NwYWNlIn0oZSk7Y2FzZSBvLkxFRlQ6cmV0dXJuIHUmJnMoZSk/Im1vdmUtc2VsZWN0aW9uLXRvLXN0YXJ0LW9mLWJsb2NrIjpudWxsO2Nhc2Ugby5SSUdIVDpyZXR1cm4gdSYmcyhlKT8ibW92ZS1zZWxlY3Rpb24tdG8tZW5kLW9mLWJsb2NrIjpudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fX0sIkIvNE8iOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZS5wcm90b3R5cGUudG9TdHJpbmc7ZS5wcm90b3R5cGUudG9KU09OPXQsZS5wcm90b3R5cGUuaW5zcGVjdD10LG8uZGVmYXVsdCYmKGUucHJvdG90eXBlW28uZGVmYXVsdF09dCl9O3ZhciByLG89KHI9bigiNmZkSCIpKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn19LEIwTFo6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYT1uKCJxMXRJIiksaT1sKGEpLHU9bChuKCIxN3g5IikpLHM9bigiZU84SCIpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBmKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGQ9ZnVuY3Rpb24oZSl7cmV0dXJuISEoZS5tZXRhS2V5fHxlLmFsdEtleXx8ZS5jdHJsS2V5fHxlLnNoaWZ0S2V5KX0scD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIG4scjtjKHRoaXMsdCk7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsYT1BcnJheShvKSxpPTA7aTxvO2krKylhW2ldPWFyZ3VtZW50c1tpXTtyZXR1cm4gbj1yPWYodGhpcyxlLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGEpKSksci5oYW5kbGVDbGljaz1mdW5jdGlvbihlKXt2YXIgdD1yLnByb3BzLG49dC5jaGlsZHJlbixvPXQub25DbGljaztpZihuLnByb3BzLm9uQ2xpY2smJm4ucHJvcHMub25DbGljayhlKSxvJiZvKGUpLCFlLmRlZmF1bHRQcmV2ZW50ZWQmJjA9PT1lLmJ1dHRvbiYmIWQoZSkpe2UucHJldmVudERlZmF1bHQoKTt2YXIgYT1yLmNvbnRleHQucm91dGVyLmhpc3RvcnksaT1yLnByb3BzLHU9aS5yZXBsYWNlLHM9aS50bzt1P2EucmVwbGFjZShzKTphLnB1c2gocyl9fSxmKHIsbil9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuY2hpbGRyZW4sYT0odC5yZXBsYWNlLHQudG8pLHU9dC5leGFjdCxsPXQuc3RyaWN0LGM9dC5hY3RpdmVDbGFzc05hbWUsZj10LmNsYXNzTmFtZSxkPXQuYWN0aXZlU3R5bGUscD10LnN0eWxlLGg9dC5pc0FjdGl2ZSx5PWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KHQsWyJjaGlsZHJlbiIsInJlcGxhY2UiLCJ0byIsImV4YWN0Iiwic3RyaWN0IiwiYWN0aXZlQ2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiYWN0aXZlU3R5bGUiLCJzdHlsZSIsImlzQWN0aXZlIl0pLG09dGhpcy5jb250ZXh0LnJvdXRlci5oaXN0b3J5LmNyZWF0ZUhyZWYoInN0cmluZyI9PXR5cGVvZiBhP3twYXRobmFtZTphfTphKSx2PWkuZGVmYXVsdC5DaGlsZHJlbi5vbmx5KG4pO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChzLlJvdXRlLHtwYXRoOiJvYmplY3QiPT09KHZvaWQgMD09PWE/InVuZGVmaW5lZCI6byhhKSk/YS5wYXRobmFtZTphLGV4YWN0OnUsc3RyaWN0OmwsY2hpbGRyZW46ZnVuY3Rpb24odCl7dmFyIG49dC5sb2NhdGlvbixvPXQubWF0Y2gsYT0hIShoP2gobyxuKTpvKTtyZXR1cm4gaS5kZWZhdWx0LmNsb25lRWxlbWVudCh2LHIoe30seSx7Y2xhc3NOYW1lOltmLHYucHJvcHMuY2xhc3NOYW1lLGE/YzpudWxsXS5qb2luKCIgIikudHJpbSgpLHN0eWxlOmE/cih7fSxwLGQpOnAsaHJlZjptLG9uQ2xpY2s6ZS5oYW5kbGVDbGlja30pKX19KX0sdH0oYS5Db21wb25lbnQpO3AuY29udGV4dFR5cGVzPXtyb3V0ZXI6dS5kZWZhdWx0LnNoYXBlKHtoaXN0b3J5OnUuZGVmYXVsdC5zaGFwZSh7cHVzaDp1LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLHJlcGxhY2U6dS5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxjcmVhdGVIcmVmOnUuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWR9KS5pc1JlcXVpcmVkfSkuaXNSZXF1aXJlZH0scC5wcm9wVHlwZXM9e2NoaWxkcmVuOnUuZGVmYXVsdC5lbGVtZW50LmlzUmVxdWlyZWQsb25DbGljazp1LmRlZmF1bHQuZnVuYyxyZXBsYWNlOnUuZGVmYXVsdC5ib29sLHRvOnUuZGVmYXVsdC5vbmVPZlR5cGUoW3UuZGVmYXVsdC5zdHJpbmcsdS5kZWZhdWx0Lm9iamVjdF0pLmlzUmVxdWlyZWQsZXhhY3Q6dS5kZWZhdWx0LmJvb2wsc3RyaWN0OnUuZGVmYXVsdC5ib29sLGNsYXNzTmFtZTp1LmRlZmF1bHQuc3RyaW5nLGFjdGl2ZUNsYXNzTmFtZTp1LmRlZmF1bHQuc3RyaW5nLHN0eWxlOnUuZGVmYXVsdC5vYmplY3QsYWN0aXZlU3R5bGU6dS5kZWZhdWx0Lm9iamVjdCxpc0FjdGl2ZTp1LmRlZmF1bHQuZnVuY30scC5kZWZhdWx0UHJvcHM9e3JlcGxhY2U6ITEsZXhhY3Q6ITEsc3RyaWN0OiExLGFjdGl2ZUNsYXNzTmFtZToiYWN0aXZlIn0sdC5kZWZhdWx0PXAsZS5leHBvcnRzPXQuZGVmYXVsdH0sQjBhYjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkpMN1QiKSxvPW4oInJKWTEiKSxhPW4oIkpQY3YiKSxpPW4oIm1GeVYiKSx1PW4oIk1oOHkiKSxzPWEuTGlzdCxsPWEuTWFwLGM9ZnVuY3Rpb24oZSx0LG4pe2lmKGUpe3ZhciByPXQuZ2V0KGUpO3ImJnQuc2V0KGUsbihyKSl9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0LmlzQ29sbGFwc2VkKCl8fGkoITEpO3ZhciBuPXQuZ2V0QW5jaG9yS2V5KCksYT1lLmdldEJsb2NrTWFwKCksZj1hLmdldChuKSxkPWYuZ2V0VGV4dCgpO2lmKCFkKXt2YXIgcD1mLmdldFR5cGUoKTtpZigidW5vcmRlcmVkLWxpc3QtaXRlbSI9PT1wfHwib3JkZXJlZC1saXN0LWl0ZW0iPT09cClyZXR1cm4gdShlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHt0eXBlOiJ1bnN0eWxlZCIsZGVwdGg6MH0pfSkpfXZhciBoPXQuZ2V0QW5jaG9yT2Zmc2V0KCkseT1mLmdldENoYXJhY3Rlckxpc3QoKSxtPW8oKSx2PWYgaW5zdGFuY2VvZiByLGc9Zi5tZXJnZSh7dGV4dDpkLnNsaWNlKDAsaCksY2hhcmFjdGVyTGlzdDp5LnNsaWNlKDAsaCl9KSxiPWcubWVyZ2Uoe2tleTptLHRleHQ6ZC5zbGljZShoKSxjaGFyYWN0ZXJMaXN0Onkuc2xpY2UoaCksZGF0YTpsKCl9KSx3PWEudG9TZXEoKS50YWtlVW50aWwoKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09Zn0pKSxfPWEudG9TZXEoKS5za2lwVW50aWwoKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09Zn0pKS5yZXN0KCksRT13LmNvbmNhdChbW24sZ10sW20sYl1dLF8pLnRvT3JkZXJlZE1hcCgpO3JldHVybiB2JiYoZi5nZXRDaGlsZEtleXMoKS5pc0VtcHR5KCl8fGkoITEpLEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0S2V5KCksbz1uLmdldEtleSgpO2ModC5nZXRQYXJlbnRLZXkoKSxlLChmdW5jdGlvbihlKXt2YXIgdD1lLmdldENoaWxkS2V5cygpLG49dC5pbmRleE9mKHIpKzEsYT10LnRvQXJyYXkoKTtyZXR1cm4gYS5zcGxpY2UobiwwLG8pLGUubWVyZ2Uoe2NoaWxkcmVuOnMoYSl9KX0pKSxjKHQuZ2V0TmV4dFNpYmxpbmdLZXkoKSxlLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7cHJldlNpYmxpbmc6b30pfSkpLGMocixlLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7bmV4dFNpYmxpbmc6b30pfSkpLGMobyxlLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7cHJldlNpYmxpbmc6cn0pfSkpfSkpfShFLGcsYikpLGUubWVyZ2Uoe2Jsb2NrTWFwOkUsc2VsZWN0aW9uQmVmb3JlOnQsc2VsZWN0aW9uQWZ0ZXI6dC5tZXJnZSh7YW5jaG9yS2V5Om0sYW5jaG9yT2Zmc2V0OjAsZm9jdXNLZXk6bSxmb2N1c09mZnNldDowLGlzQmFja3dhcmQ6ITF9KX0pfX0sIkJPL3QiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuLHIsbyxhKXt2YXIgaT1yfHwiPDxhbm9ueW1vdXM+PiIsdT1hfHxuO2lmKG51bGw9PXRbbl0pcmV0dXJuIG5ldyBFcnJvcigiVGhlICIrbysiIGAiK3UrImAgaXMgcmVxdWlyZWQgdG8gbWFrZSBgIitpKyJgIGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy4iKTtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxsPUFycmF5KHM+NT9zLTU6MCksYz01O2M8cztjKyspbFtjLTVdPWFyZ3VtZW50c1tjXTtyZXR1cm4gZS5hcHBseSh2b2lkIDAsW3QsbixyLG8sYV0uY29uY2F0KGwpKX19LGUuZXhwb3J0cz10LmRlZmF1bHR9LEJoNlI6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPW4oIjE3eDkiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfSxpPW4oIjVmN24iKTt0LmRlZmF1bHQ9YS5kZWZhdWx0Lm9uZU9mKFtpLklDT05fQkVGT1JFX1BPU0lUSU9OLGkuSUNPTl9BRlRFUl9QT1NJVElPTl0pfSxCbmFnOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX19LEJzNDc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbz1zKG4oInExdEkiKSksYT1uKCJpOGk0IiksaT1zKGEpLHU9cyhuKCIxN3g5IikpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPTI3LGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBlPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcykpO3JldHVybiBlLnN0YXRlPXthY3RpdmU6ITF9LGUuaGFuZGxlV3JhcHBlckNsaWNrPWUuaGFuZGxlV3JhcHBlckNsaWNrLmJpbmQoZSksZS5jbG9zZVBvcnRhbD1lLmNsb3NlUG9ydGFsLmJpbmQoZSksZS5oYW5kbGVPdXRzaWRlTW91c2VDbGljaz1lLmhhbmRsZU91dHNpZGVNb3VzZUNsaWNrLmJpbmQoZSksZS5oYW5kbGVLZXlkb3duPWUuaGFuZGxlS2V5ZG93bi5iaW5kKGUpLGUucG9ydGFsPW51bGwsZS5ub2RlPW51bGwsZX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLHIodCxbe2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5jbG9zZU9uRXNjJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleWRvd24pLHRoaXMucHJvcHMuY2xvc2VPbk91dHNpZGVDbGljayYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlT3V0c2lkZU1vdXNlQ2xpY2spLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuaGFuZGxlT3V0c2lkZU1vdXNlQ2xpY2spKSx0aGlzLnByb3BzLmlzT3BlbmVkJiZ0aGlzLm9wZW5Qb3J0YWwoKX19LHtrZXk6ImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUuaXNPcGVuZWQmJihlLmlzT3BlbmVkJiYodGhpcy5zdGF0ZS5hY3RpdmU/dGhpcy5yZW5kZXJQb3J0YWwoZSk6dGhpcy5vcGVuUG9ydGFsKGUpKSwhZS5pc09wZW5lZCYmdGhpcy5zdGF0ZS5hY3RpdmUmJnRoaXMuY2xvc2VQb3J0YWwoKSksdm9pZCAwPT09ZS5pc09wZW5lZCYmdGhpcy5zdGF0ZS5hY3RpdmUmJnRoaXMucmVuZGVyUG9ydGFsKGUpfX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5jbG9zZU9uRXNjJiZkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleWRvd24pLHRoaXMucHJvcHMuY2xvc2VPbk91dHNpZGVDbGljayYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlT3V0c2lkZU1vdXNlQ2xpY2spLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuaGFuZGxlT3V0c2lkZU1vdXNlQ2xpY2spKSx0aGlzLmNsb3NlUG9ydGFsKCEwKX19LHtrZXk6ImhhbmRsZVdyYXBwZXJDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5zdGF0ZS5hY3RpdmV8fHRoaXMub3BlblBvcnRhbCgpfX0se2tleToib3BlblBvcnRhbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5wcm9wczt0aGlzLnNldFN0YXRlKHthY3RpdmU6ITB9KSx0aGlzLnJlbmRlclBvcnRhbChlKSx0aGlzLnByb3BzLm9uT3Blbih0aGlzLm5vZGUpfX0se2tleToiY2xvc2VQb3J0YWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sbj1mdW5jdGlvbihuKXtlLm5vZGUmJihpLmRlZmF1bHQudW5tb3VudENvbXBvbmVudEF0Tm9kZShlLm5vZGUpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZS5ub2RlKSksZS5wb3J0YWw9bnVsbCxlLm5vZGU9bnVsbCwhMCE9PSh2b2lkIDA9PT1uP3Q6bikmJmUuc2V0U3RhdGUoe2FjdGl2ZTohMX0pfTt0aGlzLnN0YXRlLmFjdGl2ZSYmKHRoaXMucHJvcHMuYmVmb3JlQ2xvc2U/dGhpcy5wcm9wcy5iZWZvcmVDbG9zZSh0aGlzLm5vZGUsbik6bigpLHRoaXMucHJvcHMub25DbG9zZSgpKX19LHtrZXk6ImhhbmRsZU91dHNpZGVNb3VzZUNsaWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnN0YXRlLmFjdGl2ZSYmKCgwLGEuZmluZERPTU5vZGUpKHRoaXMucG9ydGFsKS5jb250YWlucyhlLnRhcmdldCl8fGUuYnV0dG9uJiYwIT09ZS5idXR0b258fChlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuY2xvc2VQb3J0YWwoKSkpfX0se2tleToiaGFuZGxlS2V5ZG93biIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT09bCYmdGhpcy5zdGF0ZS5hY3RpdmUmJnRoaXMuY2xvc2VQb3J0YWwoKX19LHtrZXk6InJlbmRlclBvcnRhbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5ub2RlfHwodGhpcy5ub2RlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKSk7dmFyIHQ9ZS5jaGlsZHJlbjsiZnVuY3Rpb24iPT10eXBlb2YgZS5jaGlsZHJlbi50eXBlJiYodD1vLmRlZmF1bHQuY2xvbmVFbGVtZW50KGUuY2hpbGRyZW4se2Nsb3NlUG9ydGFsOnRoaXMuY2xvc2VQb3J0YWx9KSksdGhpcy5wb3J0YWw9aS5kZWZhdWx0LnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHRoaXMsdCx0aGlzLm5vZGUsdGhpcy5wcm9wcy5vblVwZGF0ZSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMub3BlbkJ5Q2xpY2tPbj9vLmRlZmF1bHQuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMub3BlbkJ5Q2xpY2tPbix7b25DbGljazp0aGlzLmhhbmRsZVdyYXBwZXJDbGlja30pOm51bGx9fV0pLHR9KG8uZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1jLGMucHJvcFR5cGVzPXtjaGlsZHJlbjp1LmRlZmF1bHQuZWxlbWVudC5pc1JlcXVpcmVkLG9wZW5CeUNsaWNrT246dS5kZWZhdWx0LmVsZW1lbnQsY2xvc2VPbkVzYzp1LmRlZmF1bHQuYm9vbCxjbG9zZU9uT3V0c2lkZUNsaWNrOnUuZGVmYXVsdC5ib29sLGlzT3BlbmVkOnUuZGVmYXVsdC5ib29sLG9uT3Blbjp1LmRlZmF1bHQuZnVuYyxvbkNsb3NlOnUuZGVmYXVsdC5mdW5jLGJlZm9yZUNsb3NlOnUuZGVmYXVsdC5mdW5jLG9uVXBkYXRlOnUuZGVmYXVsdC5mdW5jfSxjLmRlZmF1bHRQcm9wcz17b25PcGVuOmZ1bmN0aW9uKCl7fSxvbkNsb3NlOmZ1bmN0aW9uKCl7fSxvblVwZGF0ZTpmdW5jdGlvbigpe319LGUuZXhwb3J0cz10LmRlZmF1bHR9LEM0MVA6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oKXt2b2lkIDA9PT1pJiYoaT1mdW5jdGlvbigpe2lmKCFhLmRlZmF1bHQpcmV0dXJuITE7aWYoIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyfHwhd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXJ8fCFPYmplY3QuZGVmaW5lUHJvcGVydHkpcmV0dXJuITE7dmFyIGU9ITE7dHJ5e3ZhciB0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe2U9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsdCl9Y2F0Y2goZSl7fXJldHVybiBlfSgpKTtyZXR1cm4gaX07dmFyIHIsbz1uKCJPb29qIiksYT0ocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07dmFyIGk9dm9pZCAwfSxDOHFrOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiTWd6VyIpO2Z1bmN0aW9uIG8oKXtyZXR1cm4obz1yfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pOyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSksci5mb3JFYWNoKChmdW5jdGlvbih0KXtpKGUsdCxuW3RdKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgdT1uKCJ5MGxyIikscz1uKCJJcThFIiksbD1uKCJxMXRJIiksYz1uKCJpOGk0IiksZj1uKCJzT3NsIiksZD1uKCJiVTN2IikscD1uKCJpY1dWIiksaD1uKCJHWGJrIikseT1uKCJ5VUdKIiksbT1uKCJKUGN2Iiksdj1uKCJtRnlWIiksZz1uKCJPTHpBIiksYj0obS5MaXN0LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0QW5jaG9yS2V5KCk9PT10fHxlLmdldEZvY3VzS2V5KCk9PT10fSksdz1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0KGUuZ2V0VHlwZSgpKXx8dC5nZXQoInVuc3R5bGVkIikscj1uLndyYXBwZXI7cmV0dXJue0VsZW1lbnQ6bi5lbGVtZW50fHx0LmdldCgidW5zdHlsZWQiKS5lbGVtZW50LHdyYXBwZXJUZW1wbGF0ZTpyfX0sXz1mdW5jdGlvbihlLHQpe3ZhciBuPXQoZSk7cmV0dXJuIG4/e0N1c3RvbUNvbXBvbmVudDpuLmNvbXBvbmVudCxjdXN0b21Qcm9wczpuLnByb3BzLGN1c3RvbUVkaXRhYmxlOm4uZWRpdGFibGV9Ont9fSxFPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9eyJkYXRhLWJsb2NrIjohMCwiZGF0YS1lZGl0b3IiOnQsImRhdGEtb2Zmc2V0LWtleSI6bixrZXk6ZS5nZXRLZXkoKX0sdT1yKGUpO3JldHVybiB1JiYoaS5jbGFzc05hbWU9dSksdm9pZCAwIT09by5jdXN0b21FZGl0YWJsZSYmKGk9YSh7fSxpLHtjb250ZW50RWRpdGFibGU6by5jdXN0b21FZGl0YWJsZSxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6ITB9KSksaX0sTz1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9bj1lLCh0PXIpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPW47dmFyIGk9ci5wcm90b3R5cGU7cmV0dXJuIGkuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmJsb2NrLHI9dC5kaXJlY3Rpb24sbz10LnRyZWUsYT0hbi5nZXRDaGlsZEtleXMoKS5pc0VtcHR5KCksaT1uIT09ZS5ibG9ja3x8byE9PWUudHJlZXx8ciE9PWUuZGlyZWN0aW9ufHxiKGUuc2VsZWN0aW9uLGUuYmxvY2suZ2V0S2V5KCkpJiZlLmZvcmNlU2VsZWN0aW9uO3JldHVybiBhfHxpfSxpLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5zZWxlY3Rpb24sdD1lLmdldEVuZEtleSgpO2lmKGUuZ2V0SGFzRm9jdXMoKSYmdD09PXRoaXMucHJvcHMuYmxvY2suZ2V0S2V5KCkpe3ZhciBuLHI9Yy5maW5kRE9NTm9kZSh0aGlzKSxvPWQuZ2V0U2Nyb2xsUGFyZW50KHIpLGE9aChvKTtpZihvPT09d2luZG93KXt2YXIgaT1wKHIpOyhuPWkueStpLmhlaWdodC15KCkuaGVpZ2h0KT4wJiZ3aW5kb3cuc2Nyb2xsVG8oYS54LGEueStuKzEwKX1lbHNle2cocil8fHYoITEpO3ZhciB1PXI7KG49dS5vZmZzZXRIZWlnaHQrdS5vZmZzZXRUb3AtKG8ub2Zmc2V0SGVpZ2h0K2EueSkpPjAmJmYuc2V0VG9wKG8sZi5nZXRUb3AobykrbisxMCl9fX0saS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuYmxvY2ssaT10LmJsb2NrUmVuZGVyTWFwLGM9dC5ibG9ja1JlbmRlcmVyRm4sZj10LmJsb2NrU3R5bGVGbixkPXQuY29udGVudFN0YXRlLHA9dC5kZWNvcmF0b3IsaD10LmVkaXRvcktleSx5PXQuZWRpdG9yU3RhdGUsbT10LmN1c3RvbVN0eWxlRm4sdj10LmN1c3RvbVN0eWxlTWFwLGc9dC5kaXJlY3Rpb24sTz10LmZvcmNlU2VsZWN0aW9uLGs9dC5zZWxlY3Rpb24sQz10LnRyZWUseD1udWxsO24uY2hpbGRyZW4uc2l6ZSYmKHg9bi5jaGlsZHJlbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsbil7dmFyIG89cy5lbmNvZGUobiwwLDApLHU9ZC5nZXRCbG9ja0ZvcktleShuKSxwPV8odSxjKSxtPXAuQ3VzdG9tQ29tcG9uZW50fHxyLHY9dyh1LGkpLGc9di5FbGVtZW50LGI9di53cmFwcGVyVGVtcGxhdGUsTz1FKHUsaCxvLGYscCksaz1hKHt9LGUucHJvcHMse3RyZWU6eS5nZXRCbG9ja1RyZWUobiksYmxvY2tQcm9wczpwLmN1c3RvbVByb3BzLG9mZnNldEtleTpvLGJsb2NrOnV9KTtyZXR1cm4gdC5wdXNoKGwuY3JlYXRlRWxlbWVudChnLE8sbC5jcmVhdGVFbGVtZW50KG0saykpKSwhYnx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldE5leHRTaWJsaW5nS2V5KCk7cmV0dXJuISFuJiZ0LmdldEJsb2NrRm9yS2V5KG4pLmdldFR5cGUoKT09PWUuZ2V0VHlwZSgpfSh1LGQpP3Q6KGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1bXSxvPSEwLGE9ITEsaT12b2lkIDA7dHJ5e2Zvcih2YXIgdSxjPW4ucmV2ZXJzZSgpW1N5bWJvbC5pdGVyYXRvcl0oKTshKG89KHU9Yy5uZXh0KCkpLmRvbmUpO289ITApe3ZhciBmPXUudmFsdWU7aWYoZi50eXBlIT09dClicmVhaztyLnB1c2goZil9fWNhdGNoKGUpe2E9ITAsaT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PWMucmV0dXJufHxjLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBpfX1uLnNwbGljZShuLmluZGV4T2YoclswXSksci5sZW5ndGgrMSk7dmFyIGQ9ci5yZXZlcnNlKCkscD1kWzBdLmtleTtuLnB1c2gobC5jbG9uZUVsZW1lbnQoZSx7a2V5OiIiLmNvbmNhdChwLCItd3JhcCIpLCJkYXRhLW9mZnNldC1rZXkiOnMuZW5jb2RlKHAsMCwwKX0sZCkpfShiLGcsdCksdCl9KSxbXSkpO3ZhciBTPW4uZ2V0S2V5KCksRD1zLmVuY29kZShTLDAsMCksVD1fKG4sYyksTT1ULkN1c3RvbUNvbXBvbmVudCxQPW51bGwhPU0/bC5jcmVhdGVFbGVtZW50KE0sbyh7fSx0aGlzLnByb3BzLHt0cmVlOnkuZ2V0QmxvY2tUcmVlKFMpLGJsb2NrUHJvcHM6VC5jdXN0b21Qcm9wcyxvZmZzZXRLZXk6RCxibG9jazpufSkpOmwuY3JlYXRlRWxlbWVudCh1LHtibG9jazpuLGNoaWxkcmVuOngsY29udGVudFN0YXRlOmQsY3VzdG9tU3R5bGVGbjptLGN1c3RvbVN0eWxlTWFwOnYsZGVjb3JhdG9yOnAsZGlyZWN0aW9uOmcsZm9yY2VTZWxlY3Rpb246TyxoYXNTZWxlY3Rpb246YihrLFMpLHNlbGVjdGlvbjprLHRyZWU6Q30pO2lmKG4uZ2V0UGFyZW50S2V5KCkpcmV0dXJuIFA7dmFyIE49dyhuLGkpLkVsZW1lbnQsaj1FKG4saCxELGYsVCk7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChOLGosUCl9LHJ9KGwuQ29tcG9uZW50KTtlLmV4cG9ydHM9T30sQzlFUjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImZ5T1kiKSxvPW4oIjNzT0oiKSxhPW4oInM4cmEiKSxpPW4oInBNbHAiKSx1PW4oIldremsiKSxzPW4oIjRwSUIiKSxsPW4oIlQ0MDEiKSxjPW4oIkhFQlkiKSxmPW4oInZjTlgiKSxkPW4oIllVZW0iKSxwPW4oIk1QS0MiKSxoPW4oIjBSUWIiKSx5PW4oInVqdVUiKSxtPW4oIjNCcisiKSx2PW4oInR1SmgiKSxnPW4oIm9jZ3giKSxiPW4oIlNZaHAiKSx3PWEuaXNPcHRpb25LZXlDb21tYW5kLF89cy5pc0Jyb3dzZXIoIkNocm9tZSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXQud2hpY2gsYT1lLl9sYXRlc3RFZGl0b3JTdGF0ZTtmdW5jdGlvbiBzKG4pe3ZhciByPWUucHJvcHNbbl07cmV0dXJuISFyJiYocih0KSwhMCl9c3dpdGNoKG4pe2Nhc2UgaS5SRVRVUk46aWYodC5wcmV2ZW50RGVmYXVsdCgpLGUucHJvcHMuaGFuZGxlUmV0dXJuJiZsKGUucHJvcHMuaGFuZGxlUmV0dXJuKHQsYSkpKXJldHVybjticmVhaztjYXNlIGkuRVNDOmlmKHQucHJldmVudERlZmF1bHQoKSxzKCJvbkVzY2FwZSIpKXJldHVybjticmVhaztjYXNlIGkuVEFCOmlmKHMoIm9uVGFiIikpcmV0dXJuO2JyZWFrO2Nhc2UgaS5VUDppZihzKCJvblVwQXJyb3ciKSlyZXR1cm47YnJlYWs7Y2FzZSBpLlJJR0hUOmlmKHMoIm9uUmlnaHRBcnJvdyIpKXJldHVybjticmVhaztjYXNlIGkuRE9XTjppZihzKCJvbkRvd25BcnJvdyIpKXJldHVybjticmVhaztjYXNlIGkuTEVGVDppZihzKCJvbkxlZnRBcnJvdyIpKXJldHVybjticmVhaztjYXNlIGkuU1BBQ0U6XyYmdyh0KSYmdC5wcmV2ZW50RGVmYXVsdCgpfXZhciBFPWUucHJvcHMua2V5QmluZGluZ0ZuKHQpO2lmKG51bGwhPUUmJiIiIT09RSlpZigidW5kbyIhPT1FKXtpZih0LnByZXZlbnREZWZhdWx0KCksIWUucHJvcHMuaGFuZGxlS2V5Q29tbWFuZHx8IWwoZS5wcm9wcy5oYW5kbGVLZXlDb21tYW5kKEUsYSx0LnRpbWVTdGFtcCkpKXt2YXIgTz1mdW5jdGlvbihlLHQsbil7c3dpdGNoKGUpe2Nhc2UicmVkbyI6cmV0dXJuIG8ucmVkbyh0KTtjYXNlImRlbGV0ZSI6cmV0dXJuIHYodCk7Y2FzZSJkZWxldGUtd29yZCI6cmV0dXJuIGQodCk7Y2FzZSJiYWNrc3BhY2UiOnJldHVybiBtKHQpO2Nhc2UiYmFja3NwYWNlLXdvcmQiOnJldHVybiBmKHQpO2Nhc2UiYmFja3NwYWNlLXRvLXN0YXJ0LW9mLWxpbmUiOnJldHVybiBjKHQsbik7Y2FzZSJzcGxpdC1ibG9jayI6cmV0dXJuIHAodCk7Y2FzZSJ0cmFuc3Bvc2UtY2hhcmFjdGVycyI6cmV0dXJuIGcodCk7Y2FzZSJtb3ZlLXNlbGVjdGlvbi10by1zdGFydC1vZi1ibG9jayI6cmV0dXJuIHkodCk7Y2FzZSJtb3ZlLXNlbGVjdGlvbi10by1lbmQtb2YtYmxvY2siOnJldHVybiBoKHQpO2Nhc2Uic2Vjb25kYXJ5LWN1dCI6cmV0dXJuIHUuY3V0KHQpO2Nhc2Uic2Vjb25kYXJ5LXBhc3RlIjpyZXR1cm4gdS5wYXN0ZSh0KTtkZWZhdWx0OnJldHVybiB0fX0oRSxhLHQpO08hPT1hJiZlLnVwZGF0ZShPKX19ZWxzZSBiKHQsYSxlLnVwZGF0ZSk7ZWxzZSBpZihuPT09aS5TUEFDRSYmXyYmdyh0KSl7dmFyIGs9ci5yZXBsYWNlVGV4dChhLmdldEN1cnJlbnRDb250ZW50KCksYS5nZXRTZWxlY3Rpb24oKSwiwqAiKTtlLnVwZGF0ZShvLnB1c2goYSxrLCJpbnNlcnQtY2hhcmFjdGVycyIpKX19fSxDREFwOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz03MSl9KFtmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJxMXRJIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkhzcWciKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiNWY3biIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ2VitHIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjE3eDkiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigieWMyZSIpfSwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigid2QvUiIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJhRTZVIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkxUQUMiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiWEdCYiIpfSwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiMlMyRSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJwWXhUIil9LCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicml0OSIpfSwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJOaG82Iil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIklnRTUiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicFJ2YyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJqZW5rIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIktvcS8iKX0sLCwsLCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigidTVGcSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJoNnhIIil9LCwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIk5sb2giKX0sLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjRjU2QiKX0sLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI1Yk45Iil9LCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJZQVc4Iil9LCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9VChuKDI0KSksaT1UKG4oMCkpLHU9VChuKDQpKSxzPVQobigxMCkpLGw9bigxKSxjPVQobig3KSksZj1UKG4oMzgpKSxkPVQobig5KSkscD1uKDMpLGg9VChuKDUpKSx5PVQobigxNikpLG09VChuKDQ5KSksdj1UKG4oMjIpKSxnPVQobigyMCkpLGI9VChuKDMyKSksdz1UKG4oMzEpKSxfPVQobigyMSkpLEU9VChuKDEzKSksTz1UKG4oMjMpKSxrPVQobig0NCkpLEM9VChuKDgpKSx4PVQobigxMikpLFM9bigyKSxEPVQobigzNikpO2Z1bmN0aW9uIFQoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIE0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBQPSgwLGwuZm9yYmlkRXh0cmFQcm9wcykoe3N0YXJ0RGF0ZTpzLmRlZmF1bHQubW9tZW50T2JqLGVuZERhdGU6cy5kZWZhdWx0Lm1vbWVudE9iaixvbkRhdGVzQ2hhbmdlOnUuZGVmYXVsdC5mdW5jLGZvY3VzZWRJbnB1dDprLmRlZmF1bHQsb25Gb2N1c0NoYW5nZTp1LmRlZmF1bHQuZnVuYyxvbkNsb3NlOnUuZGVmYXVsdC5mdW5jLGtlZXBPcGVuT25EYXRlU2VsZWN0OnUuZGVmYXVsdC5ib29sLG1pbmltdW1OaWdodHM6dS5kZWZhdWx0Lm51bWJlcixpc091dHNpZGVSYW5nZTp1LmRlZmF1bHQuZnVuYyxpc0RheUJsb2NrZWQ6dS5kZWZhdWx0LmZ1bmMsaXNEYXlIaWdobGlnaHRlZDp1LmRlZmF1bHQuZnVuYyxyZW5kZXJNb250aDp1LmRlZmF1bHQuZnVuYyxlbmFibGVPdXRzaWRlRGF5czp1LmRlZmF1bHQuYm9vbCxudW1iZXJPZk1vbnRoczp1LmRlZmF1bHQubnVtYmVyLG9yaWVudGF0aW9uOkMuZGVmYXVsdCx3aXRoUG9ydGFsOnUuZGVmYXVsdC5ib29sLGluaXRpYWxWaXNpYmxlTW9udGg6dS5kZWZhdWx0LmZ1bmMsaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWw6dS5kZWZhdWx0LmJvb2wsZGF5U2l6ZTpsLm5vbk5lZ2F0aXZlSW50ZWdlcixuYXZQcmV2OnUuZGVmYXVsdC5ub2RlLG5hdk5leHQ6dS5kZWZhdWx0Lm5vZGUsb25QcmV2TW9udGhDbGljazp1LmRlZmF1bHQuZnVuYyxvbk5leHRNb250aENsaWNrOnUuZGVmYXVsdC5mdW5jLG9uT3V0c2lkZUNsaWNrOnUuZGVmYXVsdC5mdW5jLHJlbmRlckRheTp1LmRlZmF1bHQuZnVuYyxyZW5kZXJDYWxlbmRhckluZm86dS5kZWZhdWx0LmZ1bmMsZmlyc3REYXlPZldlZWs6eC5kZWZhdWx0LG9uQmx1cjp1LmRlZmF1bHQuZnVuYyxpc0ZvY3VzZWQ6dS5kZWZhdWx0LmJvb2wsc2hvd0tleWJvYXJkU2hvcnRjdXRzOnUuZGVmYXVsdC5ib29sLG1vbnRoRm9ybWF0OnUuZGVmYXVsdC5zdHJpbmcsd2Vla0RheUZvcm1hdDp1LmRlZmF1bHQuc3RyaW5nLHBocmFzZXM6dS5kZWZhdWx0LnNoYXBlKCgwLGguZGVmYXVsdCkocC5EYXlQaWNrZXJQaHJhc2VzKSksaXNSVEw6dS5kZWZhdWx0LmJvb2x9KSxOPXtzdGFydERhdGU6dm9pZCAwLGVuZERhdGU6dm9pZCAwLG9uRGF0ZXNDaGFuZ2U6ZnVuY3Rpb24oKXt9LGZvY3VzZWRJbnB1dDpudWxsLG9uRm9jdXNDaGFuZ2U6ZnVuY3Rpb24oKXt9LG9uQ2xvc2U6ZnVuY3Rpb24oKXt9LGtlZXBPcGVuT25EYXRlU2VsZWN0OiExLG1pbmltdW1OaWdodHM6MSxpc091dHNpZGVSYW5nZTpmdW5jdGlvbigpe30saXNEYXlCbG9ja2VkOmZ1bmN0aW9uKCl7fSxpc0RheUhpZ2hsaWdodGVkOmZ1bmN0aW9uKCl7fSxyZW5kZXJNb250aDpudWxsLGVuYWJsZU91dHNpZGVEYXlzOiExLG51bWJlck9mTW9udGhzOjEsb3JpZW50YXRpb246Uy5IT1JJWk9OVEFMX09SSUVOVEFUSU9OLHdpdGhQb3J0YWw6ITEsaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWw6ITEsaW5pdGlhbFZpc2libGVNb250aDpudWxsLGRheVNpemU6Uy5EQVlfU0laRSxuYXZQcmV2Om51bGwsbmF2TmV4dDpudWxsLG9uUHJldk1vbnRoQ2xpY2s6ZnVuY3Rpb24oKXt9LG9uTmV4dE1vbnRoQ2xpY2s6ZnVuY3Rpb24oKXt9LG9uT3V0c2lkZUNsaWNrOmZ1bmN0aW9uKCl7fSxyZW5kZXJEYXk6bnVsbCxyZW5kZXJDYWxlbmRhckluZm86bnVsbCxmaXJzdERheU9mV2VlazpudWxsLG9uQmx1cjpmdW5jdGlvbigpe30saXNGb2N1c2VkOiExLHNob3dLZXlib2FyZFNob3J0Y3V0czohMSxtb250aEZvcm1hdDoiTU1NTSBZWVlZIix3ZWVrRGF5Rm9ybWF0OiJkZCIscGhyYXNlczpwLkRheVBpY2tlclBocmFzZXMsaXNSVEw6ITF9LGo9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PVMuU1RBUlRfREFURT9lLmNob29zZUF2YWlsYWJsZVN0YXJ0RGF0ZTp0PT09Uy5FTkRfREFURT9lLmNob29zZUF2YWlsYWJsZUVuZERhdGU6ZS5jaG9vc2VBdmFpbGFibGVEYXRlfSxMPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCk7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlKSk7bi5pc1RvdWNoRGV2aWNlPSgwLGQuZGVmYXVsdCkoKSxuLnRvZGF5PSgwLGMuZGVmYXVsdCkoKSxuLm1vZGlmaWVycz17dG9kYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaXNUb2RheShlKX0sYmxvY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gbi5pc0Jsb2NrZWQoZSl9LCJibG9ja2VkLWNhbGVuZGFyIjpmdW5jdGlvbih0KXtyZXR1cm4gZS5pc0RheUJsb2NrZWQodCl9LCJibG9ja2VkLW91dC1vZi1yYW5nZSI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaXNPdXRzaWRlUmFuZ2UodCl9LCJoaWdobGlnaHRlZC1jYWxlbmRhciI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaXNEYXlIaWdobGlnaHRlZCh0KX0sdmFsaWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIW4uaXNCbG9ja2VkKGUpfSwic2VsZWN0ZWQtc3RhcnQiOmZ1bmN0aW9uKGUpe3JldHVybiBuLmlzU3RhcnREYXRlKGUpfSwic2VsZWN0ZWQtZW5kIjpmdW5jdGlvbihlKXtyZXR1cm4gbi5pc0VuZERhdGUoZSl9LCJibG9ja2VkLW1pbmltdW0tbmlnaHRzIjpmdW5jdGlvbihlKXtyZXR1cm4gbi5kb2VzTm90TWVldE1pbmltdW1OaWdodHMoZSl9LCJzZWxlY3RlZC1zcGFuIjpmdW5jdGlvbihlKXtyZXR1cm4gbi5pc0luU2VsZWN0ZWRTcGFuKGUpfSwibGFzdC1pbi1yYW5nZSI6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaXNMYXN0SW5SYW5nZShlKX0saG92ZXJlZDpmdW5jdGlvbihlKXtyZXR1cm4gbi5pc0hvdmVyZWQoZSl9LCJob3ZlcmVkLXNwYW4iOmZ1bmN0aW9uKGUpe3JldHVybiBuLmlzSW5Ib3ZlcmVkU3BhbihlKX0sImFmdGVyLWhvdmVyZWQtc3RhcnQiOmZ1bmN0aW9uKGUpe3JldHVybiBuLmlzRGF5QWZ0ZXJIb3ZlcmVkU3RhcnREYXRlKGUpfX07dmFyIG89bi5nZXRTdGF0ZUZvck5ld01vbnRoKGUpLGk9by5jdXJyZW50TW9udGgsdT1vLnZpc2libGVEYXlzLHM9aihlLnBocmFzZXMsZS5mb2N1c2VkSW5wdXQpO3JldHVybiBuLnN0YXRlPXtob3ZlckRhdGU6bnVsbCxjdXJyZW50TW9udGg6aSxwaHJhc2VzOigwLGEuZGVmYXVsdCkoe30sZS5waHJhc2VzLHtjaG9vc2VBdmFpbGFibGVEYXRlOnN9KSx2aXNpYmxlRGF5czp1fSxuLm9uRGF5Q2xpY2s9bi5vbkRheUNsaWNrLmJpbmQobiksbi5vbkRheU1vdXNlRW50ZXI9bi5vbkRheU1vdXNlRW50ZXIuYmluZChuKSxuLm9uRGF5TW91c2VMZWF2ZT1uLm9uRGF5TW91c2VMZWF2ZS5iaW5kKG4pLG4ub25QcmV2TW9udGhDbGljaz1uLm9uUHJldk1vbnRoQ2xpY2suYmluZChuKSxuLm9uTmV4dE1vbnRoQ2xpY2s9bi5vbk5leHRNb250aENsaWNrLmJpbmQobiksbi5vbk11bHRpcGx5U2Nyb2xsYWJsZU1vbnRocz1uLm9uTXVsdGlwbHlTY3JvbGxhYmxlTW9udGhzLmJpbmQobiksbi5nZXRGaXJzdEZvY3VzYWJsZURheT1uLmdldEZpcnN0Rm9jdXNhYmxlRGF5LmJpbmQobiksbi5zZXREYXlQaWNrZXJSZWY9bi5zZXREYXlQaWNrZXJSZWYuYmluZChuKSxufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrKHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ZS5zdGFydERhdGUscj1lLmVuZERhdGUsbz1lLmZvY3VzZWRJbnB1dCxpPWUubWluaW11bU5pZ2h0cyx1PWUuaXNPdXRzaWRlUmFuZ2Uscz1lLmlzRGF5QmxvY2tlZCxsPWUuaXNEYXlIaWdobGlnaHRlZCxkPWUucGhyYXNlcyxwPWUuaW5pdGlhbFZpc2libGVNb250aCxoPWUubnVtYmVyT2ZNb250aHMseT1lLmVuYWJsZU91dHNpZGVEYXlzLG09dGhpcy5zdGF0ZS52aXNpYmxlRGF5cyxnPSExLGI9ITEsdz0hMTt1IT09dGhpcy5wcm9wcy5pc091dHNpZGVSYW5nZSYmKHRoaXMubW9kaWZpZXJzWyJibG9ja2VkLW91dC1vZi1yYW5nZSJdPWZ1bmN0aW9uKGUpe3JldHVybiB1KGUpfSxnPSEwKSxzIT09dGhpcy5wcm9wcy5pc0RheUJsb2NrZWQmJih0aGlzLm1vZGlmaWVyc1siYmxvY2tlZC1jYWxlbmRhciJdPWZ1bmN0aW9uKGUpe3JldHVybiBzKGUpfSxiPSEwKSxsIT09dGhpcy5wcm9wcy5pc0RheUhpZ2hsaWdodGVkJiYodGhpcy5tb2RpZmllcnNbImhpZ2hsaWdodGVkLWNhbGVuZGFyIl09ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSl9LHc9ITApO3ZhciBfPWd8fGJ8fHcsRT1uIT09dGhpcy5wcm9wcy5zdGFydERhdGUsTz1yIT09dGhpcy5wcm9wcy5lbmREYXRlLGs9byE9PXRoaXMucHJvcHMuZm9jdXNlZElucHV0O2lmKGghPT10aGlzLnByb3BzLm51bWJlck9mTW9udGhzfHx5IT09dGhpcy5wcm9wcy5lbmFibGVPdXRzaWRlRGF5c3x8cCE9PXRoaXMucHJvcHMuaW5pdGlhbFZpc2libGVNb250aCYmIXRoaXMucHJvcHMuZm9jdXNlZElucHV0JiZrKXt2YXIgQz10aGlzLmdldFN0YXRlRm9yTmV3TW9udGgoZSkseD1DLmN1cnJlbnRNb250aDttPUMudmlzaWJsZURheXMsdGhpcy5zZXRTdGF0ZSh7Y3VycmVudE1vbnRoOngsdmlzaWJsZURheXM6bX0pfXZhciBEPXt9O2lmKEUmJihEPXRoaXMuZGVsZXRlTW9kaWZpZXIoRCx0aGlzLnByb3BzLnN0YXJ0RGF0ZSwic2VsZWN0ZWQtc3RhcnQiKSxEPXRoaXMuYWRkTW9kaWZpZXIoRCxuLCJzZWxlY3RlZC1zdGFydCIpKSxPJiYoRD10aGlzLmRlbGV0ZU1vZGlmaWVyKEQsdGhpcy5wcm9wcy5lbmREYXRlLCJzZWxlY3RlZC1lbmQiKSxEPXRoaXMuYWRkTW9kaWZpZXIoRCxyLCJzZWxlY3RlZC1lbmQiKSksKEV8fE8pJiYodGhpcy5wcm9wcy5zdGFydERhdGUmJnRoaXMucHJvcHMuZW5kRGF0ZSYmKEQ9dGhpcy5kZWxldGVNb2RpZmllckZyb21SYW5nZShELHRoaXMucHJvcHMuc3RhcnREYXRlLHRoaXMucHJvcHMuZW5kRGF0ZS5jbG9uZSgpLmFkZCgxLCJkYXkiKSwic2VsZWN0ZWQtc3BhbiIpKSxuJiZyJiYoRD10aGlzLmRlbGV0ZU1vZGlmaWVyRnJvbVJhbmdlKEQsbixyLmNsb25lKCkuYWRkKDEsImRheSIpLCJob3ZlcmVkLXNwYW4iKSxEPXRoaXMuYWRkTW9kaWZpZXJUb1JhbmdlKEQsbi5jbG9uZSgpLmFkZCgxLCJkYXkiKSxyLCJzZWxlY3RlZC1zcGFuIikpKSwhdGhpcy5pc1RvdWNoRGV2aWNlJiZFJiZuJiYhcil7dmFyIFQ9bi5jbG9uZSgpLmFkZCgxLCJkYXkiKSxNPW4uY2xvbmUoKS5hZGQoaSsxLCJkYXlzIik7RD10aGlzLmFkZE1vZGlmaWVyVG9SYW5nZShELFQsTSwiYWZ0ZXItaG92ZXJlZC1zdGFydCIpfWlmKGk+MHx8aSE9PXRoaXMucHJvcHMubWluaW11bU5pZ2h0cyl7aWYoa3x8RSl7dmFyIFA9dGhpcy5wcm9wcy5zdGFydERhdGU/dGhpcy5wcm9wcy5zdGFydERhdGU6dGhpcy50b2RheTtEPXRoaXMuZGVsZXRlTW9kaWZpZXJGcm9tUmFuZ2UoRCxQLFAuY2xvbmUoKS5hZGQoaSwiZGF5cyIpLCJibG9ja2VkLW1pbmltdW0tbmlnaHRzIil9biYmbz09PVMuRU5EX0RBVEUmJihEPXRoaXMuYWRkTW9kaWZpZXJUb1JhbmdlKEQsbixuLmNsb25lKCkuYWRkKGksImRheXMiKSwiYmxvY2tlZC1taW5pbXVtLW5pZ2h0cyIpKX0oa3x8XykmJigwLGYuZGVmYXVsdCkobSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49KDAsYy5kZWZhdWx0KShlKTtEPXQuaXNCbG9ja2VkKG4pP3QuYWRkTW9kaWZpZXIoRCxuLCJibG9ja2VkIik6dC5kZWxldGVNb2RpZmllcihELG4sImJsb2NrZWQiKSwoa3x8ZykmJihEPXUobik/dC5hZGRNb2RpZmllcihELG4sImJsb2NrZWQtb3V0LW9mLXJhbmdlIik6dC5kZWxldGVNb2RpZmllcihELG4sImJsb2NrZWQtb3V0LW9mLXJhbmdlIikpLChrfHxiKSYmKEQ9cyhuKT90LmFkZE1vZGlmaWVyKEQsbiwiYmxvY2tlZC1jYWxlbmRhciIpOnQuZGVsZXRlTW9kaWZpZXIoRCxuLCJibG9ja2VkLWNhbGVuZGFyIikpLChrfHx3KSYmKEQ9bChuKT90LmFkZE1vZGlmaWVyKEQsbiwiaGlnaGxpZ2h0ZWQtY2FsZW5kYXIiKTp0LmRlbGV0ZU1vZGlmaWVyKEQsbiwiaGlnaGxpZ2h0ZWQtY2FsZW5kYXIiKSl9KSl9KSk7dmFyIE49KDAsYy5kZWZhdWx0KSgpO2lmKCgwLHYuZGVmYXVsdCkodGhpcy50b2RheSxOKXx8KEQ9dGhpcy5kZWxldGVNb2RpZmllcihELHRoaXMudG9kYXksInRvZGF5IiksRD10aGlzLmFkZE1vZGlmaWVyKEQsTiwidG9kYXkiKSx0aGlzLnRvZGF5PU4pLE9iamVjdC5rZXlzKEQpLmxlbmd0aD4wJiZ0aGlzLnNldFN0YXRlKHt2aXNpYmxlRGF5czooMCxhLmRlZmF1bHQpKHt9LG0sRCl9KSxrfHxkIT09dGhpcy5wcm9wcy5waHJhc2VzKXt2YXIgTD1qKGQsbyk7dGhpcy5zZXRTdGF0ZSh7cGhyYXNlczooMCxhLmRlZmF1bHQpKHt9LGQse2Nob29zZUF2YWlsYWJsZURhdGU6TH0pfSl9fX0se2tleToib25EYXlDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnByb3BzLHI9bi5rZWVwT3Blbk9uRGF0ZVNlbGVjdCxvPW4ubWluaW11bU5pZ2h0cyxhPW4ub25CbHVyO2lmKHQmJnQucHJldmVudERlZmF1bHQoKSwhdGhpcy5pc0Jsb2NrZWQoZSkpe3ZhciBpPXRoaXMucHJvcHMsdT1pLmZvY3VzZWRJbnB1dCxzPWkub25Gb2N1c0NoYW5nZSxsPWkub25DbG9zZSxjPXRoaXMucHJvcHMsZj1jLnN0YXJ0RGF0ZSxkPWMuZW5kRGF0ZTtpZih1PT09Uy5TVEFSVF9EQVRFKXMoUy5FTkRfREFURSksZj1lLCgwLHkuZGVmYXVsdCkoZSxkKSYmKGQ9bnVsbCk7ZWxzZSBpZih1PT09Uy5FTkRfREFURSl7dmFyIHA9ZiYmZi5jbG9uZSgpLmFkZChvLCJkYXlzIik7Zj8oMCx5LmRlZmF1bHQpKGUscCk/KGQ9ZSxyfHwocyhudWxsKSxsKHtzdGFydERhdGU6ZixlbmREYXRlOmR9KSkpOihmPWUsZD1udWxsKTooZD1lLHMoUy5TVEFSVF9EQVRFKSl9dGhpcy5wcm9wcy5vbkRhdGVzQ2hhbmdlKHtzdGFydERhdGU6ZixlbmREYXRlOmR9KSxhKCl9fX0se2tleToib25EYXlNb3VzZUVudGVyIix2YWx1ZTpmdW5jdGlvbihlKXtpZighdGhpcy5pc1RvdWNoRGV2aWNlKXt2YXIgdD10aGlzLnByb3BzLG49dC5zdGFydERhdGUscj10LmVuZERhdGUsbz10LmZvY3VzZWRJbnB1dCxpPXQubWluaW11bU5pZ2h0cyx1PXRoaXMuc3RhdGUscz11LmhvdmVyRGF0ZSxsPXUudmlzaWJsZURheXM7aWYobyl7dmFyIGM9e307aWYoYz10aGlzLmRlbGV0ZU1vZGlmaWVyKGMscywiaG92ZXJlZCIpLGM9dGhpcy5hZGRNb2RpZmllcihjLGUsImhvdmVyZWQiKSxuJiYhciYmbz09PVMuRU5EX0RBVEUpe2lmKCgwLGcuZGVmYXVsdCkocyxuKSl7dmFyIGY9cy5jbG9uZSgpLmFkZCgxLCJkYXkiKTtjPXRoaXMuZGVsZXRlTW9kaWZpZXJGcm9tUmFuZ2UoYyxuLGYsImhvdmVyZWQtc3BhbiIpfWlmKCF0aGlzLmlzQmxvY2tlZChlKSYmKDAsZy5kZWZhdWx0KShlLG4pKXt2YXIgZD1lLmNsb25lKCkuYWRkKDEsImRheSIpO2M9dGhpcy5hZGRNb2RpZmllclRvUmFuZ2UoYyxuLGQsImhvdmVyZWQtc3BhbiIpfX1pZighbiYmciYmbz09PVMuU1RBUlRfREFURSYmKCgwLGIuZGVmYXVsdCkocyxyKSYmKGM9dGhpcy5kZWxldGVNb2RpZmllckZyb21SYW5nZShjLHMsciwiaG92ZXJlZC1zcGFuIikpLCF0aGlzLmlzQmxvY2tlZChlKSYmKDAsYi5kZWZhdWx0KShlLHIpJiYoYz10aGlzLmFkZE1vZGlmaWVyVG9SYW5nZShjLGUsciwiaG92ZXJlZC1zcGFuIikpKSxuKXt2YXIgcD1uLmNsb25lKCkuYWRkKDEsImRheSIpLGg9bi5jbG9uZSgpLmFkZChpKzEsImRheXMiKTtpZihjPXRoaXMuZGVsZXRlTW9kaWZpZXJGcm9tUmFuZ2UoYyxwLGgsImFmdGVyLWhvdmVyZWQtc3RhcnQiKSwoMCx2LmRlZmF1bHQpKGUsbikpe3ZhciB5PW4uY2xvbmUoKS5hZGQoMSwiZGF5IiksbT1uLmNsb25lKCkuYWRkKGkrMSwiZGF5cyIpO2M9dGhpcy5hZGRNb2RpZmllclRvUmFuZ2UoYyx5LG0sImFmdGVyLWhvdmVyZWQtc3RhcnQiKX19dGhpcy5zZXRTdGF0ZSh7aG92ZXJEYXRlOmUsdmlzaWJsZURheXM6KDAsYS5kZWZhdWx0KSh7fSxsLGMpfSl9fX19LHtrZXk6Im9uRGF5TW91c2VMZWF2ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuc3RhcnREYXRlLHI9dC5lbmREYXRlLG89dC5taW5pbXVtTmlnaHRzLGk9dGhpcy5zdGF0ZSx1PWkuaG92ZXJEYXRlLHM9aS52aXNpYmxlRGF5cztpZighdGhpcy5pc1RvdWNoRGV2aWNlJiZ1KXt2YXIgbD17fTtpZihsPXRoaXMuZGVsZXRlTW9kaWZpZXIobCx1LCJob3ZlcmVkIiksbiYmIXImJigwLGcuZGVmYXVsdCkodSxuKSl7dmFyIGM9dS5jbG9uZSgpLmFkZCgxLCJkYXkiKTtsPXRoaXMuZGVsZXRlTW9kaWZpZXJGcm9tUmFuZ2UobCxuLGMsImhvdmVyZWQtc3BhbiIpfWlmKCFuJiZyJiYoMCxnLmRlZmF1bHQpKHIsdSkmJihsPXRoaXMuZGVsZXRlTW9kaWZpZXJGcm9tUmFuZ2UobCx1LHIsImhvdmVyZWQtc3BhbiIpKSxuJiYoMCx2LmRlZmF1bHQpKGUsbikpe3ZhciBmPW4uY2xvbmUoKS5hZGQoMSwiZGF5IiksZD1uLmNsb25lKCkuYWRkKG8rMSwiZGF5cyIpO2w9dGhpcy5kZWxldGVNb2RpZmllckZyb21SYW5nZShsLGYsZCwiYWZ0ZXItaG92ZXJlZC1zdGFydCIpfXRoaXMuc2V0U3RhdGUoe2hvdmVyRGF0ZTpudWxsLHZpc2libGVEYXlzOigwLGEuZGVmYXVsdCkoe30scyxsKX0pfX19LHtrZXk6Im9uUHJldk1vbnRoQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUub25QcmV2TW9udGhDbGljayxuPWUubnVtYmVyT2ZNb250aHMscj1lLmVuYWJsZU91dHNpZGVEYXlzLG89dGhpcy5zdGF0ZSxpPW8uY3VycmVudE1vbnRoLHU9by52aXNpYmxlRGF5cyxzPXt9O09iamVjdC5rZXlzKHUpLnNvcnQoKS5zbGljZSgwLG4rMSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7c1tlXT11W2VdfSkpO3ZhciBsPWkuY2xvbmUoKS5zdWJ0cmFjdCgyLCJtb250aHMiKSxjPSgwLHcuZGVmYXVsdCkobCwxLHIsITApLGY9aS5jbG9uZSgpLnN1YnRyYWN0KDEsIm1vbnRoIik7dGhpcy5zZXRTdGF0ZSh7Y3VycmVudE1vbnRoOmYsdmlzaWJsZURheXM6KDAsYS5kZWZhdWx0KSh7fSxzLHRoaXMuZ2V0TW9kaWZpZXJzKGMpKX0pLHQoZi5jbG9uZSgpKX19LHtrZXk6Im9uTmV4dE1vbnRoQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUub25OZXh0TW9udGhDbGljayxuPWUubnVtYmVyT2ZNb250aHMscj1lLmVuYWJsZU91dHNpZGVEYXlzLG89dGhpcy5zdGF0ZSxpPW8uY3VycmVudE1vbnRoLHU9by52aXNpYmxlRGF5cyxzPXt9O09iamVjdC5rZXlzKHUpLnNvcnQoKS5zbGljZSgxKS5mb3JFYWNoKChmdW5jdGlvbihlKXtzW2VdPXVbZV19KSk7dmFyIGw9aS5jbG9uZSgpLmFkZChuKzEsIm1vbnRoIiksYz0oMCx3LmRlZmF1bHQpKGwsMSxyLCEwKSxmPWkuY2xvbmUoKS5hZGQoMSwibW9udGgiKTt0aGlzLnNldFN0YXRlKHtjdXJyZW50TW9udGg6Zix2aXNpYmxlRGF5czooMCxhLmRlZmF1bHQpKHt9LHMsdGhpcy5nZXRNb2RpZmllcnMoYykpfSksdChmLmNsb25lKCkpfX0se2tleToib25NdWx0aXBseVNjcm9sbGFibGVNb250aHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUubnVtYmVyT2ZNb250aHMsbj1lLmVuYWJsZU91dHNpZGVEYXlzLHI9dGhpcy5zdGF0ZSxvPXIuY3VycmVudE1vbnRoLGk9ci52aXNpYmxlRGF5cyx1PU9iamVjdC5rZXlzKGkpLmxlbmd0aCxzPW8uY2xvbmUoKS5hZGQodSwibW9udGgiKSxsPSgwLHcuZGVmYXVsdCkocyx0LG4sITApO3RoaXMuc2V0U3RhdGUoe3Zpc2libGVEYXlzOigwLGEuZGVmYXVsdCkoe30saSx0aGlzLmdldE1vZGlmaWVycyhsKSl9KX19LHtrZXk6ImdldEZpcnN0Rm9jdXNhYmxlRGF5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcyxyPW4uc3RhcnREYXRlLG89bi5lbmREYXRlLGE9bi5mb2N1c2VkSW5wdXQsaT1uLm1pbmltdW1OaWdodHMsdT1uLm51bWJlck9mTW9udGhzLHM9ZS5jbG9uZSgpLnN0YXJ0T2YoIm1vbnRoIik7aWYoYT09PVMuU1RBUlRfREFURSYmcj9zPXIuY2xvbmUoKTphPT09Uy5FTkRfREFURSYmIW8mJnI/cz1yLmNsb25lKCkuYWRkKGksImRheXMiKTphPT09Uy5FTkRfREFURSYmbyYmKHM9by5jbG9uZSgpKSx0aGlzLmlzQmxvY2tlZChzKSl7Zm9yKHZhciBsPVtdLGM9ZS5jbG9uZSgpLmFkZCh1LTEsIm1vbnRocyIpLmVuZE9mKCJtb250aCIpLGY9cy5jbG9uZSgpOyEoMCxnLmRlZmF1bHQpKGYsYyk7KWY9Zi5jbG9uZSgpLmFkZCgxLCJkYXkiKSxsLnB1c2goZik7dmFyIGQ9bC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiF0LmlzQmxvY2tlZChlKX0pKTtkLmxlbmd0aD4wJiYocz1kWzBdKX1yZXR1cm4gc319LHtrZXk6ImdldE1vZGlmaWVycyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXtuW3JdPXt9LGVbcl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7bltyXVsoMCxFLmRlZmF1bHQpKGUpXT10LmdldE1vZGlmaWVyc0ZvckRheShlKX0pKX0pKSxufX0se2tleToiZ2V0TW9kaWZpZXJzRm9yRGF5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBuZXcgU2V0KE9iamVjdC5rZXlzKHRoaXMubW9kaWZpZXJzKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiB0Lm1vZGlmaWVyc1tuXShlKX0pKSl9fSx7a2V5OiJnZXRTdGF0ZUZvck5ld01vbnRoIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ZS5pbml0aWFsVmlzaWJsZU1vbnRoLHI9ZS5udW1iZXJPZk1vbnRocyxvPWUuZW5hYmxlT3V0c2lkZURheXMsYT1lLm9yaWVudGF0aW9uLGk9ZS5zdGFydERhdGUsdT0obnx8KGk/ZnVuY3Rpb24oKXtyZXR1cm4gaX06ZnVuY3Rpb24oKXtyZXR1cm4gdC50b2RheX0pKSgpLHM9YT09PVMuVkVSVElDQUxfU0NST0xMQUJMRTtyZXR1cm57Y3VycmVudE1vbnRoOnUsdmlzaWJsZURheXM6dGhpcy5nZXRNb2RpZmllcnMoKDAsdy5kZWZhdWx0KSh1LHIsbyxzKSl9fX0se2tleToic2V0RGF5UGlja2VyUmVmIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmRheVBpY2tlcj1lfX0se2tleToiYWRkTW9kaWZpZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnByb3BzLG89ci5udW1iZXJPZk1vbnRocyxpPXIuZW5hYmxlT3V0c2lkZURheXMsdT1yLm9yaWVudGF0aW9uLHM9dGhpcy5zdGF0ZSxsPXMuY3VycmVudE1vbnRoLGM9cy52aXNpYmxlRGF5cyxmPWwsZD1vO2lmKHUhPT1TLlZFUlRJQ0FMX1NDUk9MTEFCTEUmJihmPWYuY2xvbmUoKS5zdWJ0cmFjdCgxLCJtb250aCIpLGQrPTIpLCF0fHwhKDAsXy5kZWZhdWx0KSh0LGYsZCxpKSlyZXR1cm4gZTt2YXIgcD0oMCxFLmRlZmF1bHQpKHQpLGg9KDAsYS5kZWZhdWx0KSh7fSxlKTtpZihpKWg9T2JqZWN0LmtleXMoYykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoY1tlXSkuaW5kZXhPZihwKT4tMX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQscil7dmFyIG89ZVtyXXx8Y1tyXSxpPW5ldyBTZXQob1twXSk7cmV0dXJuIGkuYWRkKG4pLCgwLGEuZGVmYXVsdCkoe30sdCxNKHt9LHIsKDAsYS5kZWZhdWx0KSh7fSxvLE0oe30scCxpKSkpKX0pLGgpO2Vsc2V7dmFyIHk9KDAsTy5kZWZhdWx0KSh0KSxtPWVbeV18fGNbeV0sdj1uZXcgU2V0KG1bcF0pO3YuYWRkKG4pLGg9KDAsYS5kZWZhdWx0KSh7fSxoLE0oe30seSwoMCxhLmRlZmF1bHQpKHt9LG0sTSh7fSxwLHYpKSkpfXJldHVybiBofX0se2tleToiYWRkTW9kaWZpZXJUb1JhbmdlIix2YWx1ZTpmdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89ZSxhPXQuY2xvbmUoKTsoMCxiLmRlZmF1bHQpKGEsbik7KW89dGhpcy5hZGRNb2RpZmllcihvLGEsciksYT1hLmNsb25lKCkuYWRkKDEsImRheSIpO3JldHVybiBvfX0se2tleToiZGVsZXRlTW9kaWZpZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLnByb3BzLG89ci5udW1iZXJPZk1vbnRocyxpPXIuZW5hYmxlT3V0c2lkZURheXMsdT1yLm9yaWVudGF0aW9uLHM9dGhpcy5zdGF0ZSxsPXMuY3VycmVudE1vbnRoLGM9cy52aXNpYmxlRGF5cyxmPWwsZD1vO2lmKHUhPT1TLlZFUlRJQ0FMX1NDUk9MTEFCTEUmJihmPWYuY2xvbmUoKS5zdWJ0cmFjdCgxLCJtb250aCIpLGQrPTIpLCF0fHwhKDAsXy5kZWZhdWx0KSh0LGYsZCxpKSlyZXR1cm4gZTt2YXIgcD0oMCxFLmRlZmF1bHQpKHQpLGg9KDAsYS5kZWZhdWx0KSh7fSxlKTtpZihpKWg9T2JqZWN0LmtleXMoYykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoY1tlXSkuaW5kZXhPZihwKT4tMX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQscil7dmFyIG89ZVtyXXx8Y1tyXSxpPW5ldyBTZXQob1twXSk7cmV0dXJuIGkuZGVsZXRlKG4pLCgwLGEuZGVmYXVsdCkoe30sdCxNKHt9LHIsKDAsYS5kZWZhdWx0KSh7fSxvLE0oe30scCxpKSkpKX0pLGgpO2Vsc2V7dmFyIHk9KDAsTy5kZWZhdWx0KSh0KSxtPWVbeV18fGNbeV0sdj1uZXcgU2V0KG1bcF0pO3YuZGVsZXRlKG4pLGg9KDAsYS5kZWZhdWx0KSh7fSxoLE0oe30seSwoMCxhLmRlZmF1bHQpKHt9LG0sTSh7fSxwLHYpKSkpfXJldHVybiBofX0se2tleToiZGVsZXRlTW9kaWZpZXJGcm9tUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbz1lLGE9dC5jbG9uZSgpOygwLGIuZGVmYXVsdCkoYSxuKTspbz10aGlzLmRlbGV0ZU1vZGlmaWVyKG8sYSxyKSxhPWEuY2xvbmUoKS5hZGQoMSwiZGF5Iik7cmV0dXJuIG99fSx7a2V5OiJkb2VzTm90TWVldE1pbmltdW1OaWdodHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LnN0YXJ0RGF0ZSxyPXQuaXNPdXRzaWRlUmFuZ2Usbz10LmZvY3VzZWRJbnB1dCxhPXQubWluaW11bU5pZ2h0cztpZihvIT09Uy5FTkRfREFURSlyZXR1cm4hMTtpZihuKXt2YXIgaT1lLmRpZmYobi5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLmhvdXIoMTIpLCJkYXlzIik7cmV0dXJuIGk8YSYmaT49MH1yZXR1cm4gcigoMCxjLmRlZmF1bHQpKGUpLnN1YnRyYWN0KGEsImRheXMiKSl9fSx7a2V5OiJpc0RheUFmdGVySG92ZXJlZFN0YXJ0RGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuc3RhcnREYXRlLHI9dC5lbmREYXRlLG89dC5taW5pbXVtTmlnaHRzLGE9KHRoaXMuc3RhdGV8fHt9KS5ob3ZlckRhdGU7cmV0dXJuISFuJiYhciYmIXRoaXMuaXNCbG9ja2VkKGUpJiYoMCxtLmRlZmF1bHQpKGEsZSkmJm8+MCYmKDAsdi5kZWZhdWx0KShhLG4pfX0se2tleToiaXNFbmREYXRlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4oMCx2LmRlZmF1bHQpKGUsdGhpcy5wcm9wcy5lbmREYXRlKX19LHtrZXk6ImlzSG92ZXJlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9KHRoaXMuc3RhdGV8fHt9KS5ob3ZlckRhdGU7cmV0dXJuISF0aGlzLnByb3BzLmZvY3VzZWRJbnB1dCYmKDAsdi5kZWZhdWx0KShlLHQpfX0se2tleToiaXNJbkhvdmVyZWRTcGFuIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5zdGFydERhdGUscj10LmVuZERhdGUsbz0odGhpcy5zdGF0ZXx8e30pLmhvdmVyRGF0ZSxhPSEhbiYmIXImJihlLmlzQmV0d2VlbihuLG8pfHwoMCx2LmRlZmF1bHQpKG8sZSkpLGk9ISFyJiYhbiYmKGUuaXNCZXR3ZWVuKG8scil8fCgwLHYuZGVmYXVsdCkobyxlKSksdT1vJiYhdGhpcy5pc0Jsb2NrZWQobyk7cmV0dXJuKGF8fGkpJiZ1fX0se2tleToiaXNJblNlbGVjdGVkU3BhbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuc3RhcnREYXRlLHI9dC5lbmREYXRlO3JldHVybiBlLmlzQmV0d2VlbihuLHIpfX0se2tleToiaXNMYXN0SW5SYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaXNJblNlbGVjdGVkU3BhbihlKSYmKDAsbS5kZWZhdWx0KShlLHRoaXMucHJvcHMuZW5kRGF0ZSl9fSx7a2V5OiJpc1N0YXJ0RGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKDAsdi5kZWZhdWx0KShlLHRoaXMucHJvcHMuc3RhcnREYXRlKX19LHtrZXk6ImlzQmxvY2tlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuaXNEYXlCbG9ja2VkLHI9dC5pc091dHNpZGVSYW5nZTtyZXR1cm4gbihlKXx8cihlKXx8dGhpcy5kb2VzTm90TWVldE1pbmltdW1OaWdodHMoZSl9fSx7a2V5OiJpc1RvZGF5Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4oMCx2LmRlZmF1bHQpKGUsdGhpcy50b2RheSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUubnVtYmVyT2ZNb250aHMsbj1lLm9yaWVudGF0aW9uLHI9ZS5tb250aEZvcm1hdCxvPWUucmVuZGVyTW9udGgsYT1lLm5hdlByZXYsdT1lLm5hdk5leHQscz1lLm9uT3V0c2lkZUNsaWNrLGw9ZS53aXRoUG9ydGFsLGM9ZS5lbmFibGVPdXRzaWRlRGF5cyxmPWUuZmlyc3REYXlPZldlZWssZD1lLmhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsLHA9ZS5kYXlTaXplLGg9ZS5mb2N1c2VkSW5wdXQseT1lLnJlbmRlckRheSxtPWUucmVuZGVyQ2FsZW5kYXJJbmZvLHY9ZS5vbkJsdXIsZz1lLmlzRm9jdXNlZCxiPWUuc2hvd0tleWJvYXJkU2hvcnRjdXRzLHc9ZS5pc1JUTCxfPWUud2Vla0RheUZvcm1hdCxFPXRoaXMuc3RhdGUsTz1FLmN1cnJlbnRNb250aCxrPUUucGhyYXNlcyxDPUUudmlzaWJsZURheXM7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEQuZGVmYXVsdCx7cmVmOnRoaXMuc2V0RGF5UGlja2VyUmVmLG9yaWVudGF0aW9uOm4sZW5hYmxlT3V0c2lkZURheXM6Yyxtb2RpZmllcnM6QyxudW1iZXJPZk1vbnRoczp0LG9uRGF5Q2xpY2s6dGhpcy5vbkRheUNsaWNrLG9uRGF5TW91c2VFbnRlcjp0aGlzLm9uRGF5TW91c2VFbnRlcixvbkRheU1vdXNlTGVhdmU6dGhpcy5vbkRheU1vdXNlTGVhdmUsb25QcmV2TW9udGhDbGljazp0aGlzLm9uUHJldk1vbnRoQ2xpY2ssb25OZXh0TW9udGhDbGljazp0aGlzLm9uTmV4dE1vbnRoQ2xpY2ssb25NdWx0aXBseVNjcm9sbGFibGVNb250aHM6dGhpcy5vbk11bHRpcGx5U2Nyb2xsYWJsZU1vbnRocyxtb250aEZvcm1hdDpyLHJlbmRlck1vbnRoOm8sd2l0aFBvcnRhbDpsLGhpZGRlbjohaCxpbml0aWFsVmlzaWJsZU1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIE99LGRheVNpemU6cCxvbk91dHNpZGVDbGljazpzLG5hdlByZXY6YSxuYXZOZXh0OnUscmVuZGVyRGF5OnkscmVuZGVyQ2FsZW5kYXJJbmZvOm0sZmlyc3REYXlPZldlZWs6ZixoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDpkLGlzRm9jdXNlZDpnLGdldEZpcnN0Rm9jdXNhYmxlRGF5OnRoaXMuZ2V0Rmlyc3RGb2N1c2FibGVEYXksb25CbHVyOnYsc2hvd0tleWJvYXJkU2hvcnRjdXRzOmIscGhyYXNlczprLGlzUlRMOncsd2Vla0RheUZvcm1hdDpffSl9fV0pLHR9KGkuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1MLEwucHJvcFR5cGVzPVAsTC5kZWZhdWx0UHJvcHM9Tn1dKX0sQ0lyQjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkhJREVfVElNRU9VVD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTt0Lk92ZXJsYXlDb21wb25lbnQ9ZCx0LmRlZmF1bHRGb3JtYXQ9cCx0LmRlZmF1bHRQYXJzZT1oO3ZhciBhPWMobigicTF0SSIpKSxpPShjKG4oIjE3eDkiKSksYyhuKCI0MkJWIikpKSx1PW4oIm1IbnUiKSxzPW4oIktGbm4iKSxsPW4oIlZCVlkiKTtmdW5jdGlvbiBjKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgZj10LkhJREVfVElNRU9VVD0xMDA7ZnVuY3Rpb24gZChlKXtlLmlucHV0LGUuc2VsZWN0ZWREYXksZS5tb250aDt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jbGFzc05hbWVzLHI9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn0oZSxbImlucHV0Iiwic2VsZWN0ZWREYXkiLCJtb250aCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lcyJdKTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIsbyh7Y2xhc3NOYW1lOm4ub3ZlcmxheVdyYXBwZXJ9LHIpLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6bi5vdmVybGF5fSx0KSl9ZnVuY3Rpb24gcChlKXtyZXR1cm4oMCx1LmlzRGF0ZSkoZSk/ZS5nZXRGdWxsWWVhcigpKyItIisoIiIrKGUuZ2V0TW9udGgoKSsxKSkrIi0iKygiIitlLmdldERhdGUoKSk6IiJ9ZnVuY3Rpb24gaChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciB0PWUuc3BsaXQoIi0iKTtpZigzPT09dC5sZW5ndGgpe3ZhciBuPXBhcnNlSW50KHRbMF0sMTApLHI9cGFyc2VJbnQodFsxXSwxMCktMSxvPXBhcnNlSW50KHRbMl0sMTApO2lmKCEoaXNOYU4obil8fFN0cmluZyhuKS5sZW5ndGg+NHx8aXNOYU4ocil8fGlzTmFOKG8pfHxvPD0wfHxvPjMxfHxyPDB8fHI+PTEyKSlyZXR1cm4gbmV3IERhdGUobixyLG8pfX19ZC5wcm9wVHlwZXM9e307dmFyIHk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpO3JldHVybiBuLmlucHV0PW51bGwsbi5kYXlwaWNrZXI9bnVsbCxuLmNsaWNrVGltZW91dD1udWxsLG4uaGlkZVRpbWVvdXQ9bnVsbCxuLmlucHV0Qmx1clRpbWVvdXQ9bnVsbCxuLmlucHV0Rm9jdXNUaW1lb3V0PW51bGwsbi5zdGF0ZT1uLmdldEluaXRpYWxTdGF0ZUZyb21Qcm9wcyhlKSxuLnN0YXRlLnNob3dPdmVybGF5PWUuc2hvd092ZXJsYXksbi5oaWRlQWZ0ZXJEYXlDbGljaz1uLmhpZGVBZnRlckRheUNsaWNrLmJpbmQobiksbi5oYW5kbGVJbnB1dENsaWNrPW4uaGFuZGxlSW5wdXRDbGljay5iaW5kKG4pLG4uaGFuZGxlSW5wdXRGb2N1cz1uLmhhbmRsZUlucHV0Rm9jdXMuYmluZChuKSxuLmhhbmRsZUlucHV0Qmx1cj1uLmhhbmRsZUlucHV0Qmx1ci5iaW5kKG4pLG4uaGFuZGxlSW5wdXRDaGFuZ2U9bi5oYW5kbGVJbnB1dENoYW5nZS5iaW5kKG4pLG4uaGFuZGxlSW5wdXRLZXlEb3duPW4uaGFuZGxlSW5wdXRLZXlEb3duLmJpbmQobiksbi5oYW5kbGVJbnB1dEtleVVwPW4uaGFuZGxlSW5wdXRLZXlVcC5iaW5kKG4pLG4uaGFuZGxlRGF5Q2xpY2s9bi5oYW5kbGVEYXlDbGljay5iaW5kKG4pLG4uaGFuZGxlTW9udGhDaGFuZ2U9bi5oYW5kbGVNb250aENoYW5nZS5iaW5kKG4pLG4uaGFuZGxlT3ZlcmxheUZvY3VzPW4uaGFuZGxlT3ZlcmxheUZvY3VzLmJpbmQobiksbi5oYW5kbGVPdmVybGF5Qmx1cj1uLmhhbmRsZU92ZXJsYXlCbHVyLmJpbmQobiksbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLHIodCxbe2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD17fSxuPXRoaXMucHJvcHMscj1uLnZhbHVlLG89bi5mb3JtYXREYXRlLGE9bi5mb3JtYXQsaT1uLmRheVBpY2tlclByb3BzO3IhPT1lLnZhbHVlJiYoKDAsdS5pc0RhdGUpKHIpP3QudmFsdWU9byhyLGEsaS5sb2NhbGUpOnQudmFsdWU9cik7dmFyIHM9ZS5kYXlQaWNrZXJQcm9wcy5tb250aDtpLm1vbnRoJiZpLm1vbnRoIT09cyYmISgwLHUuaXNTYW1lTW9udGgpKGkubW9udGgscykmJih0Lm1vbnRoPWkubW9udGgpLGUuZGF5UGlja2VyUHJvcHMuc2VsZWN0ZWREYXlzIT09aS5zZWxlY3RlZERheXMmJih0LnNlbGVjdGVkRGF5cz1pLnNlbGVjdGVkRGF5cyksT2JqZWN0LmtleXModCkubGVuZ3RoPjAmJnRoaXMuc2V0U3RhdGUodCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5jbGlja1RpbWVvdXQpLGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lb3V0KSxjbGVhclRpbWVvdXQodGhpcy5pbnB1dEZvY3VzVGltZW91dCksY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRCbHVyVGltZW91dCksY2xlYXJUaW1lb3V0KHRoaXMub3ZlcmxheUJsdXJUaW1lb3V0KX19LHtrZXk6ImdldEluaXRpYWxNb250aEZyb21Qcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXlQaWNrZXJQcm9wcyxuPWUuZm9ybWF0LHI9dm9pZCAwO3JldHVybiBlLnZhbHVlJiYocj0oMCx1LmlzRGF0ZSkoZS52YWx1ZSk/ZS52YWx1ZTplLnBhcnNlRGF0ZShlLnZhbHVlLG4sdC5sb2NhbGUpKSx0LmluaXRpYWxNb250aHx8dC5tb250aHx8cnx8bmV3IERhdGV9fSx7a2V5OiJnZXRJbml0aWFsU3RhdGVGcm9tUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF5UGlja2VyUHJvcHMsbj1lLmZvcm1hdERhdGUscj1lLmZvcm1hdCxvPWUudmFsdWU7cmV0dXJuIGUudmFsdWUmJigwLHUuaXNEYXRlKShlLnZhbHVlKSYmKG89bihlLnZhbHVlLHIsdC5sb2NhbGUpKSx7dmFsdWU6byxtb250aDp0aGlzLmdldEluaXRpYWxNb250aEZyb21Qcm9wcyhlKSxzZWxlY3RlZERheXM6dC5zZWxlY3RlZERheXN9fX0se2tleToiZ2V0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXR9fSx7a2V5OiJnZXREYXlQaWNrZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF5cGlja2VyfX0se2tleToidXBkYXRlU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLGE9dGhpcy5wcm9wcyxpPWEuZGF5UGlja2VyUHJvcHMsdT1hLm9uRGF5Q2hhbmdlO3RoaXMuc2V0U3RhdGUoe21vbnRoOmUsdmFsdWU6dCx0eXBlZFZhbHVlOnZvaWQgMH0sKGZ1bmN0aW9uKCl7aWYobiYmbigpLHUpe3ZhciB0PW8oe2Rpc2FibGVkOmkuZGlzYWJsZWREYXlzLHNlbGVjdGVkOmkuc2VsZWN0ZWREYXlzfSxpLm1vZGlmaWVycyksYT0oMCxzLmdldE1vZGlmaWVyc0ZvckRheSkoZSx0KS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oe30sZSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9KHt9LHQsITApKX0pLHt9KTt1KGUsYSxyKX19KSl9fSx7a2V5OiJzaG93RGF5UGlja2VyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5wYXJzZURhdGUscj10LmZvcm1hdCxvPXQuZGF5UGlja2VyUHJvcHMsYT10aGlzLnN0YXRlLGk9YS52YWx1ZTtpZighYS5zaG93T3ZlcmxheSl7dmFyIHU9aT9uKGkscixvLmxvY2FsZSk6dGhpcy5nZXRJbml0aWFsTW9udGhGcm9tUHJvcHModGhpcy5wcm9wcyk7dGhpcy5zZXRTdGF0ZSgoZnVuY3Rpb24oZSl7cmV0dXJue3Nob3dPdmVybGF5OiEwLG1vbnRoOnV8fGUubW9udGh9fSksKGZ1bmN0aW9uKCl7ZS5wcm9wcy5vbkRheVBpY2tlclNob3cmJmUucHJvcHMub25EYXlQaWNrZXJTaG93KCl9KSl9fX0se2tleToiaGlkZURheVBpY2tlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzOyExIT09dGhpcy5zdGF0ZS5zaG93T3ZlcmxheSYmdGhpcy5zZXRTdGF0ZSh7c2hvd092ZXJsYXk6ITF9LChmdW5jdGlvbigpe2UucHJvcHMub25EYXlQaWNrZXJIaWRlJiZlLnByb3BzLm9uRGF5UGlja2VySGlkZSgpfSkpfX0se2tleToiaGlkZUFmdGVyRGF5Q2xpY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnByb3BzLmhpZGVPbkRheUNsaWNrJiYodGhpcy5oaWRlVGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLmhpZGVEYXlQaWNrZXIoKX0pLGYpKX19LHtrZXk6ImhhbmRsZUlucHV0Q2xpY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2hvd0RheVBpY2tlcigpLHRoaXMucHJvcHMuaW5wdXRQcm9wcy5vbkNsaWNrJiYoZS5wZXJzaXN0KCksdGhpcy5wcm9wcy5pbnB1dFByb3BzLm9uQ2xpY2soZSkpfX0se2tleToiaGFuZGxlSW5wdXRGb2N1cyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLnNob3dEYXlQaWNrZXIoKSx0aGlzLmlucHV0Rm9jdXNUaW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5vdmVybGF5SGFzRm9jdXM9ITF9KSwyKSx0aGlzLnByb3BzLmlucHV0UHJvcHMub25Gb2N1cyYmKGUucGVyc2lzdCgpLHRoaXMucHJvcHMuaW5wdXRQcm9wcy5vbkZvY3VzKGUpKX19LHtrZXk6ImhhbmRsZUlucHV0Qmx1ciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLmlucHV0Qmx1clRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0Lm92ZXJsYXlIYXNGb2N1c3x8dC5oaWRlRGF5UGlja2VyKCl9KSwxKSx0aGlzLnByb3BzLmlucHV0UHJvcHMub25CbHVyJiYoZS5wZXJzaXN0KCksdGhpcy5wcm9wcy5pbnB1dFByb3BzLm9uQmx1cihlKSl9fSx7a2V5OiJoYW5kbGVPdmVybGF5Rm9jdXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLm92ZXJsYXlIYXNGb2N1cz0hMCx0aGlzLnByb3BzLmtlZXBGb2N1cyYmdGhpcy5pbnB1dCYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuaW5wdXQuZm9jdXMmJnRoaXMuaW5wdXQuZm9jdXMoKX19LHtrZXk6ImhhbmRsZU92ZXJsYXlCbHVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5vdmVybGF5Qmx1clRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLm92ZXJsYXlIYXNGb2N1cz0hMX0pLDMpfX0se2tleToiaGFuZGxlSW5wdXRDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmRheVBpY2tlclByb3BzLHI9dC5mb3JtYXQsbz10LmlucHV0UHJvcHMsYT10Lm9uRGF5Q2hhbmdlLGk9dC5wYXJzZURhdGU7by5vbkNoYW5nZSYmKGUucGVyc2lzdCgpLG8ub25DaGFuZ2UoZSkpO3ZhciB1PWUudGFyZ2V0LnZhbHVlO2lmKCIiPT09dS50cmltKCkpcmV0dXJuIHRoaXMuc2V0U3RhdGUoe3ZhbHVlOnUsdHlwZWRWYWx1ZTp2b2lkIDB9KSx2b2lkKGEmJmEodm9pZCAwLHt9LHRoaXMpKTt2YXIgcz1pKHUscixuLmxvY2FsZSk7aWYoIXMpcmV0dXJuIHRoaXMuc2V0U3RhdGUoe3ZhbHVlOnUsdHlwZWRWYWx1ZTp1fSksdm9pZChhJiZhKHZvaWQgMCx7fSx0aGlzKSk7dGhpcy51cGRhdGVTdGF0ZShzLHUpfX0se2tleToiaGFuZGxlSW5wdXRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbihlKXtlLmtleUNvZGU9PT1sLlRBQj90aGlzLmhpZGVEYXlQaWNrZXIoKTp0aGlzLnNob3dEYXlQaWNrZXIoKSx0aGlzLnByb3BzLmlucHV0UHJvcHMub25LZXlEb3duJiYoZS5wZXJzaXN0KCksdGhpcy5wcm9wcy5pbnB1dFByb3BzLm9uS2V5RG93bihlKSl9fSx7a2V5OiJoYW5kbGVJbnB1dEtleVVwIix2YWx1ZTpmdW5jdGlvbihlKXtlLmtleUNvZGU9PT1sLkVTQz90aGlzLmhpZGVEYXlQaWNrZXIoKTp0aGlzLnNob3dEYXlQaWNrZXIoKSx0aGlzLnByb3BzLmlucHV0UHJvcHMub25LZXlVcCYmKGUucGVyc2lzdCgpLHRoaXMucHJvcHMuaW5wdXRQcm9wcy5vbktleVVwKGUpKX19LHtrZXk6ImhhbmRsZU1vbnRoQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuc2V0U3RhdGUoe21vbnRoOmV9LChmdW5jdGlvbigpe3QucHJvcHMuZGF5UGlja2VyUHJvcHMmJnQucHJvcHMuZGF5UGlja2VyUHJvcHMub25Nb250aENoYW5nZSYmdC5wcm9wcy5kYXlQaWNrZXJQcm9wcy5vbk1vbnRoQ2hhbmdlKGUpfSkpfX0se2tleToiaGFuZGxlRGF5Q2xpY2siLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLG89dGhpcy5wcm9wcyxhPW8uY2xpY2tVbnNlbGVjdHNEYXksaT1vLmRheVBpY2tlclByb3BzLHU9by5vbkRheUNoYW5nZSxzPW8uZm9ybWF0RGF0ZSxsPW8uZm9ybWF0O2lmKGkub25EYXlDbGljayYmaS5vbkRheUNsaWNrKGUsdCxuKSwhKHQuZGlzYWJsZWR8fGkmJmkuY2xhc3NOYW1lcyYmdFtpLmNsYXNzTmFtZXMuZGlzYWJsZWRdKSl7aWYodC5zZWxlY3RlZCYmYSl7dmFyIGM9dGhpcy5zdGF0ZS5zZWxlY3RlZERheXM7aWYoQXJyYXkuaXNBcnJheShjKSl7dmFyIGY9KGM9Yy5zbGljZSgwKSkuaW5kZXhPZihlKTtjLnNwbGljZShmLDEpfWVsc2UgYyYmKGM9bnVsbCk7cmV0dXJuIHRoaXMuc2V0U3RhdGUoe3ZhbHVlOiIiLHR5cGVkVmFsdWU6dm9pZCAwLHNlbGVjdGVkRGF5czpjfSx0aGlzLmhpZGVBZnRlckRheUNsaWNrKSx2b2lkKHUmJnUodm9pZCAwLHQsdGhpcykpfXZhciBkPXMoZSxsLGkubG9jYWxlKTt0aGlzLnNldFN0YXRlKHt2YWx1ZTpkLHR5cGVkVmFsdWU6dm9pZCAwLG1vbnRoOmV9LChmdW5jdGlvbigpe3UmJnUoZSx0LHIpLHIuaGlkZUFmdGVyRGF5Q2xpY2soKX0pKX19fSx7a2V5OiJyZW5kZXJPdmVybGF5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5jbGFzc05hbWVzLHI9dC5kYXlQaWNrZXJQcm9wcyx1PXQucGFyc2VEYXRlLHM9dC5mb3JtYXREYXRlLGw9dC5mb3JtYXQsYz10aGlzLnN0YXRlLGY9Yy5zZWxlY3RlZERheXMsZD1jLnZhbHVlLHA9dm9pZCAwO2lmKCFmJiZkKXt2YXIgaD11KGQsbCxyLmxvY2FsZSk7aCYmKHA9aCl9ZWxzZSBmJiYocD1mKTt2YXIgeT12b2lkIDA7ci50b2RheUJ1dHRvbiYmKHk9ZnVuY3Rpb24oKXtyZXR1cm4gZS51cGRhdGVTdGF0ZShuZXcgRGF0ZSxzKG5ldyBEYXRlLGwsci5sb2NhbGUpLGUuaGlkZUFmdGVyRGF5Q2xpY2spfSk7dmFyIG09dGhpcy5wcm9wcy5vdmVybGF5Q29tcG9uZW50O3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLHtjbGFzc05hbWVzOm4sbW9udGg6dGhpcy5zdGF0ZS5tb250aCxzZWxlY3RlZERheTpwLGlucHV0OnRoaXMuaW5wdXQsdGFiSW5kZXg6MCxvbkZvY3VzOnRoaXMuaGFuZGxlT3ZlcmxheUZvY3VzLG9uQmx1cjp0aGlzLmhhbmRsZU92ZXJsYXlCbHVyfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChpLmRlZmF1bHQsbyh7cmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLmRheXBpY2tlcj10fSxvblRvZGF5QnV0dG9uQ2xpY2s6eX0scix7bW9udGg6dGhpcy5zdGF0ZS5tb250aCxzZWxlY3RlZERheXM6cCxvbkRheUNsaWNrOnRoaXMuaGFuZGxlRGF5Q2xpY2ssb25Nb250aENoYW5nZTp0aGlzLmhhbmRsZU1vbnRoQ2hhbmdlfSkpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy5jb21wb25lbnQsbj10aGlzLnByb3BzLmlucHV0UHJvcHM7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6dGhpcy5wcm9wcy5jbGFzc05hbWVzLmNvbnRhaW5lcixzdHlsZTp0aGlzLnByb3BzLnN0eWxlfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh0LG8oe3JlZjpmdW5jdGlvbih0KXtyZXR1cm4gZS5pbnB1dD10fSxwbGFjZWhvbGRlcjp0aGlzLnByb3BzLnBsYWNlaG9sZGVyfSxuLHt2YWx1ZTp0aGlzLnN0YXRlLnR5cGVkVmFsdWV8fHRoaXMuc3RhdGUudmFsdWUsb25DaGFuZ2U6dGhpcy5oYW5kbGVJbnB1dENoYW5nZSxvbkZvY3VzOnRoaXMuaGFuZGxlSW5wdXRGb2N1cyxvbkJsdXI6dGhpcy5oYW5kbGVJbnB1dEJsdXIsb25LZXlEb3duOnRoaXMuaGFuZGxlSW5wdXRLZXlEb3duLG9uS2V5VXA6dGhpcy5oYW5kbGVJbnB1dEtleVVwLG9uQ2xpY2s6bi5kaXNhYmxlZD92b2lkIDA6dGhpcy5oYW5kbGVJbnB1dENsaWNrfSkpLHRoaXMuc3RhdGUuc2hvd092ZXJsYXkmJnRoaXMucmVuZGVyT3ZlcmxheSgpKX19XSksdH0oYS5kZWZhdWx0LkNvbXBvbmVudCk7eS5kZWZhdWx0UHJvcHM9e2RheVBpY2tlclByb3BzOnt9LHZhbHVlOiIiLHBsYWNlaG9sZGVyOiJZWVlZLU0tRCIsZm9ybWF0OiJMIixmb3JtYXREYXRlOnAscGFyc2VEYXRlOmgsc2hvd092ZXJsYXk6ITEsaGlkZU9uRGF5Q2xpY2s6ITAsY2xpY2tVbnNlbGVjdHNEYXk6ITEsa2VlcEZvY3VzOiEwLGNvbXBvbmVudDoiaW5wdXQiLGlucHV0UHJvcHM6e30sb3ZlcmxheUNvbXBvbmVudDpkLGNsYXNzTmFtZXM6e2NvbnRhaW5lcjoiRGF5UGlja2VySW5wdXQiLG92ZXJsYXlXcmFwcGVyOiJEYXlQaWNrZXJJbnB1dC1PdmVybGF5V3JhcHBlciIsb3ZlcmxheToiRGF5UGlja2VySW5wdXQtT3ZlcmxheSJ9fSx0LmRlZmF1bHQ9eSx5LnByb3BUeXBlcz17fX0sQ0pYeDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIk1nelciKTtmdW5jdGlvbiBvKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBhKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgaT1uKCJXTEcwIiksdT1uKCJxMXRJIikscz1uKCJtRnlWIiksbD1uKCJhQjAyIiksYz1uKCJPNHpuIikuc2V0RHJhZnRFZGl0b3JTZWxlY3Rpb24sZj1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIGYoKXtmb3IodmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4pLGk9MDtpPG47aSsrKXJbaV09YXJndW1lbnRzW2ldO3JldHVybiBhKG8odD1lLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHIpKXx8dGhpcyksImxlYWYiLHZvaWQgMCksdH1uPWUsKHQ9ZikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgZD1mLnByb3RvdHlwZTtyZXR1cm4gZC5fc2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5zZWxlY3Rpb247aWYobnVsbCE9ZSYmZS5nZXRIYXNGb2N1cygpKXt2YXIgdD10aGlzLnByb3BzLG49dC5ibG9jayxyPXQuc3RhcnQsbz10LnRleHQsYT1uLmdldEtleSgpLGk9citvLmxlbmd0aDtpZihlLmhhc0VkZ2VXaXRoaW4oYSxyLGkpKXt2YXIgdT10aGlzLmxlYWY7dXx8cyghMSk7dmFyIGYsZD11LmZpcnN0Q2hpbGQ7ZHx8cyghMSksZC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP2Y9ZDpsKGQpP2Y9dTooZj1kLmZpcnN0Q2hpbGQpfHxzKCExKSxjKGUsZixhLHIsaSl9fX0sZC5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZWFmO3JldHVybiB0fHxzKCExKSx0LnRleHRDb250ZW50IT09ZS50ZXh0fHxlLnN0eWxlU2V0IT09dGhpcy5wcm9wcy5zdHlsZVNldHx8ZS5mb3JjZVNlbGVjdGlvbn0sZC5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl9zZXRTZWxlY3Rpb24oKX0sZC5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuX3NldFNlbGVjdGlvbigpfSxkLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLmJsb2NrLG49dGhpcy5wcm9wcy50ZXh0O24uZW5kc1dpdGgoIlxuIikmJnRoaXMucHJvcHMuaXNMYXN0JiYobis9IlxuIik7dmFyIG89dGhpcy5wcm9wcyxhPW8uY3VzdG9tU3R5bGVNYXAscz1vLmN1c3RvbVN0eWxlRm4sbD1vLm9mZnNldEtleSxjPW8uc3R5bGVTZXQsZj1jLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj17fSxvPWFbdF07cmV0dXJuIHZvaWQgMCE9PW8mJmUudGV4dERlY29yYXRpb24hPT1vLnRleHREZWNvcmF0aW9uJiYobi50ZXh0RGVjb3JhdGlvbj1bZS50ZXh0RGVjb3JhdGlvbixvLnRleHREZWNvcmF0aW9uXS5qb2luKCIgIikudHJpbSgpKSxyKGUsbyxuKX0pLHt9KTtpZihzKXt2YXIgZD1zKGMsdCk7Zj1yKGYsZCl9cmV0dXJuIHUuY3JlYXRlRWxlbWVudCgic3BhbiIseyJkYXRhLW9mZnNldC1rZXkiOmwscmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLmxlYWY9dH0sc3R5bGU6Zn0sdS5jcmVhdGVFbGVtZW50KGksbnVsbCxuKSl9LGZ9KHUuQ29tcG9uZW50KTtlLmV4cG9ydHM9Zn0sQ09jaTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJiYW5uZXIiOnsiYWR2ZXJ0aXNpbmciOnsiYW5jaG9yVGV4dCI6IlJla2xhbSBrYW1wYW55YWxhcsSxbmEgZ8O2eiBhdMSxbi4iLCJkZXNjcmlwdGlvbiI6IlPEsW7EsXJsxLEgYmlyIHPDvHJlIGnDp2luIEZhY2Vib29rIHZlIEluc3RhZ3JhbSByZWtsYW0ga2FtcGFueWEgYsO8dMOnZWxlcmluaXppLCBiw7x0w6dlbml6aW4gJTUwc2kgb3JhbsSxbmRhIGthcsWfxLFsxLFrc8SxeiBhcnR0xLFyxLF5b3J1eiEgIn0sIm9yY2hhcmRHbyI6eyJhbmNob3JUZXh0IjoiT3JjaGFyZEdvXCd5dSDFn2ltZGkgaW5kaXJpbiIsImRlc2NyaXB0aW9uIjoiQW5hbGl6bGVyaW5pemkgc8O8cmVrbGkgdGFraXAgZWRpbiEifX0sImVycm9ycyI6eyJwYWdlTm90Rm91bmQiOiLDnHpnw7xuw7x6LCBpc3RlZGnEn2luaXogc2F5ZmEgbWV2Y3V0IGRlxJ9pbC4ifSwiZm9vdGVyIjp7ImhlbHAiOiJpxZ8gaXN0YXN5b251IHlhcmTEsW0iLCJwcml2YWN5UG9saWN5IjoiZ2l6bGlsaWsgcG9saXRpa2FzxLEiLCJ0ZXJtc0FuZENvbmRpdGlvbnMiOiJow7xrw7xtbGVyIHZlIGtvxZ91bGxhciIsInRyYWRlbWFyayI6IlRoZSBPcmNoYXJkIHRlc2NpbGxpIGJpciBtYXJrYWTEsXIgdmUgVGhlIE9yY2hhcmQgbG9nb3N1IE9yY2hhcmQgRW50ZXJwcmlzZXMgTlksIEluYy4gxZ9pcmtldGluaW4gaGl6bWV0IGnFn2FyZXRpZGlyLiBIZXIgaGFra8SxIHNha2zEsWTEsXIuIn0sImdsb2JhbFNlYXJjaCI6eyJwbGFjZWhvbGRlciI6IlByb2plLCDDnHLDvG4sIFNhbmF0w6fEsSwgdmIuIEFyYSJ9LCJoZWFkZXIiOnsiYWNjb3VudGluZyI6Ik11aGFzZWJlIiwiYW5hbHl0aWNzIjoiQW5hbGl0aWsiLCJjYXRhbG9nIjoiS2F0YWxvZyIsImRyb3Bkb3duIjp7ImFkbWluIjoiWcO2bmV0aWNpIiwiZGVmYXVsdHMiOiJWYXJzYXnEsWxhbmxhciIsImxvZ091dCI6IsOHxLFrxLHFnyBZYXAiLCJsb2dvcyI6IkxvZ29sYXIiLCJteUFjY291bnQiOiJIZXNhYsSxbSIsInByb2ZpbGUiOiJQcm9maWwifSwiaGVscCI6IllhcmTEsW0iLCJtYXJrZXRpbmciOiJQYXphcmxhbWEifSwic3ViaGVhZGVyIjp7ImFuYWx5dGljcyI6eyJhdWRpZW5jZSI6IkRpbmxleWljaSBLaXRsZXNpIiwiZW5nYWdlbWVudCI6IkV0a2lsZcWfaW0gIiwiaGVhdG1hcCI6IklzxLEgSGFyaXRhc8SxIiwib3ZlcnZpZXciOiJHZW5lbCBCYWvEscWfIiwicGh5c2ljYWxSZXBvcnRpbmciOiJGaXppa3NlbCBSYXBvcmxhbWEiLCJ0b3BDaGFydHMiOiJMaXN0ZWxlciJ9fX0nKX0sQ2p6VDpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiksbj0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIikscj1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLG89L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtlLmRlZmluZUxvY2FsZSgiZXMtZG8iLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZT8vLU1NTS0vLnRlc3Qocik/bltlLm1vbnRoKCldOnRbZS5tb250aCgpXTp0fSxtb250aHNSZWdleDpvLG1vbnRoc1Nob3J0UmVnZXg6byxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6cixsb25nTW9udGhzUGFyc2U6cixzaG9ydE1vbnRoc1BhcnNlOnIsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21pX2p1X3ZpX3PDoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYcOxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGHDsW8iLHl5OiIlZCBhw7FvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KG4oIndkL1IiKSl9LENuQk06ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGEoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX12YXIgdT1uKCJxMXRJIikscz1uKCIxN3g5IiksbD1bXSxjPVtdO2Z1bmN0aW9uIGYoZSl7dmFyIHQ9ZSgpLG49e2xvYWRpbmc6ITAsbG9hZGVkOm51bGwsZXJyb3I6bnVsbH07cmV0dXJuIG4ucHJvbWlzZT10LnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBuLmxvYWRpbmc9ITEsbi5sb2FkZWQ9ZSxlfSkpLmNhdGNoKChmdW5jdGlvbihlKXt0aHJvdyBuLmxvYWRpbmc9ITEsbi5lcnJvcj1lLGV9KSksbn1mdW5jdGlvbiBkKGUpe3ZhciB0PXtsb2FkaW5nOiExLGxvYWRlZDp7fSxlcnJvcjpudWxsfSxuPVtdO3RyeXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbz1mKGVbcl0pO28ubG9hZGluZz90LmxvYWRpbmc9ITA6KHQubG9hZGVkW3JdPW8ubG9hZGVkLHQuZXJyb3I9by5lcnJvciksbi5wdXNoKG8ucHJvbWlzZSksby5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe3QubG9hZGVkW3JdPWV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3QuZXJyb3I9ZX0pKX0pKX1jYXRjaChlKXt0LmVycm9yPWV9cmV0dXJuIHQucHJvbWlzZT1Qcm9taXNlLmFsbChuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdC5sb2FkaW5nPSExLGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3Rocm93IHQubG9hZGluZz0hMSxlfSkpLHR9ZnVuY3Rpb24gcChlLHQpe3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoKG49ZSkmJm4uX19lc01vZHVsZT9uLmRlZmF1bHQ6bix0KTt2YXIgbn1mdW5jdGlvbiBoKGUsdCl7dmFyIGYsZDtpZighdC5sb2FkaW5nKXRocm93IG5ldyBFcnJvcigicmVhY3QtbG9hZGFibGUgcmVxdWlyZXMgYSBgbG9hZGluZ2AgY29tcG9uZW50Iik7dmFyIGg9T2JqZWN0LmFzc2lnbih7bG9hZGVyOm51bGwsbG9hZGluZzpudWxsLGRlbGF5OjIwMCx0aW1lb3V0Om51bGwscmVuZGVyOnAsd2VicGFjazpudWxsLG1vZHVsZXM6bnVsbH0sdCkseT1udWxsO2Z1bmN0aW9uIG0oKXtyZXR1cm4geXx8KHk9ZShoLmxvYWRlcikpLHkucHJvbWlzZX1yZXR1cm4gbC5wdXNoKG0pLCJmdW5jdGlvbiI9PXR5cGVvZiBoLndlYnBhY2smJmMucHVzaCgoZnVuY3Rpb24oKXtpZihlPWgud2VicGFjaywib2JqZWN0Ij09PXIobi5tKSYmZSgpLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZSYmdm9pZCAwIT09bi5tW2VdfSkpKXJldHVybiBtKCk7dmFyIGV9KSksZD1mPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4ocil7byh0aGlzLG4pO3ZhciBpPWEodGhpcyx0LmNhbGwodGhpcyxyKSk7cmV0dXJuIGkucmV0cnk9ZnVuY3Rpb24oKXtpLnNldFN0YXRlKHtlcnJvcjpudWxsLGxvYWRpbmc6ITAsdGltZWRPdXQ6ITF9KSx5PWUoaC5sb2FkZXIpLGkuX2xvYWRNb2R1bGUoKX0sbSgpLGkuc3RhdGU9e2Vycm9yOnkuZXJyb3IscGFzdERlbGF5OiExLHRpbWVkT3V0OiExLGxvYWRpbmc6eS5sb2FkaW5nLGxvYWRlZDp5LmxvYWRlZH0saX1yZXR1cm4gaShuLHQpLG4ucHJlbG9hZD1mdW5jdGlvbigpe3JldHVybiBtKCl9LG4ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxNb3VudD1mdW5jdGlvbigpe3RoaXMuX21vdW50ZWQ9ITAsdGhpcy5fbG9hZE1vZHVsZSgpfSxuLnByb3RvdHlwZS5fbG9hZE1vZHVsZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5jb250ZXh0LmxvYWRhYmxlJiZBcnJheS5pc0FycmF5KGgubW9kdWxlcykmJmgubW9kdWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmNvbnRleHQubG9hZGFibGUucmVwb3J0KHQpfSkpLHkubG9hZGluZyl7Im51bWJlciI9PXR5cGVvZiBoLmRlbGF5JiYoMD09PWguZGVsYXk/dGhpcy5zZXRTdGF0ZSh7cGFzdERlbGF5OiEwfSk6dGhpcy5fZGVsYXk9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLnNldFN0YXRlKHtwYXN0RGVsYXk6ITB9KX0pLGguZGVsYXkpKSwibnVtYmVyIj09dHlwZW9mIGgudGltZW91dCYmKHRoaXMuX3RpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLnNldFN0YXRlKHt0aW1lZE91dDohMH0pfSksaC50aW1lb3V0KSk7dmFyIHQ9ZnVuY3Rpb24oKXtlLl9tb3VudGVkJiYoZS5zZXRTdGF0ZSh7ZXJyb3I6eS5lcnJvcixsb2FkZWQ6eS5sb2FkZWQsbG9hZGluZzp5LmxvYWRpbmd9KSxlLl9jbGVhclRpbWVvdXRzKCkpfTt5LnByb21pc2UudGhlbigoZnVuY3Rpb24oKXt0KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3QoKX0pKX19LG4ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5fbW91bnRlZD0hMSx0aGlzLl9jbGVhclRpbWVvdXRzKCl9LG4ucHJvdG90eXBlLl9jbGVhclRpbWVvdXRzPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2RlbGF5KSxjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCl9LG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlLmxvYWRpbmd8fHRoaXMuc3RhdGUuZXJyb3I/dS5jcmVhdGVFbGVtZW50KGgubG9hZGluZyx7aXNMb2FkaW5nOnRoaXMuc3RhdGUubG9hZGluZyxwYXN0RGVsYXk6dGhpcy5zdGF0ZS5wYXN0RGVsYXksdGltZWRPdXQ6dGhpcy5zdGF0ZS50aW1lZE91dCxlcnJvcjp0aGlzLnN0YXRlLmVycm9yLHJldHJ5OnRoaXMucmV0cnl9KTp0aGlzLnN0YXRlLmxvYWRlZD9oLnJlbmRlcih0aGlzLnN0YXRlLmxvYWRlZCx0aGlzLnByb3BzKTpudWxsfSxufSh1LkNvbXBvbmVudCksZi5jb250ZXh0VHlwZXM9e2xvYWRhYmxlOnMuc2hhcGUoe3JlcG9ydDpzLmZ1bmMuaXNSZXF1aXJlZH0pfSxkfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIGgoZixlKX15Lk1hcD1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZS5yZW5kZXIpdGhyb3cgbmV3IEVycm9yKCJMb2FkYWJsZU1hcCByZXF1aXJlcyBhIGByZW5kZXIobG9hZGVkLCBwcm9wcylgIGZ1bmN0aW9uIik7cmV0dXJuIGgoZCxlKX07dmFyIG09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBvKHRoaXMsdCksYSh0aGlzLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gaSh0LGUpLHQucHJvdG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybntsb2FkYWJsZTp7cmVwb3J0OnRoaXMucHJvcHMucmVwb3J0fX19LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB1LkNoaWxkcmVuLm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbil9LHR9KHUuQ29tcG9uZW50KTtmdW5jdGlvbiB2KGUpe2Zvcih2YXIgdD1bXTtlLmxlbmd0aDspe3ZhciBuPWUucG9wKCk7dC5wdXNoKG4oKSl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7aWYoZS5sZW5ndGgpcmV0dXJuIHYoZSl9KSl9bS5wcm9wVHlwZXM9e3JlcG9ydDpzLmZ1bmMuaXNSZXF1aXJlZH0sbS5jaGlsZENvbnRleHRUeXBlcz17bG9hZGFibGU6cy5zaGFwZSh7cmVwb3J0OnMuZnVuYy5pc1JlcXVpcmVkfSkuaXNSZXF1aXJlZH0seS5DYXB0dXJlPW0seS5wcmVsb2FkQWxsPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe3YobCkudGhlbihlLHQpfSkpfSx5LnByZWxvYWRSZWFkeT1mdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXt2KGMpLnRoZW4oZSxlKX0pKX0sZS5leHBvcnRzPXl9LENvcGk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixvPXI/U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpOjYwMTAzLGE9cj9TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKTo2MDEwNixpPXI/U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKTo2MDEwNyx1PXI/U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKTo2MDEwOCxzPXI/U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKTo2MDExNCxsPXI/U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKTo2MDEwOSxjPXI/U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpOjYwMTEwLGY9cj9TeW1ib2wuZm9yKCJyZWFjdC5hc3luY19tb2RlIik6NjAxMTEsZD1yP1N5bWJvbC5mb3IoInJlYWN0LmNvbmN1cnJlbnRfbW9kZSIpOjYwMTExLHA9cj9TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpOjYwMTEyLGg9cj9TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpOjYwMTEzLHk9cj9TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0Iik6NjAxMjAsbT1yP1N5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKTo2MDExNSx2PXI/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LGc9cj9TeW1ib2wuZm9yKCJyZWFjdC5mdW5kYW1lbnRhbCIpOjYwMTE3LGI9cj9TeW1ib2wuZm9yKCJyZWFjdC5yZXNwb25kZXIiKTo2MDExODtmdW5jdGlvbiB3KGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpe3ZhciB0PWUuJCR0eXBlb2Y7c3dpdGNoKHQpe2Nhc2Ugbzpzd2l0Y2goZT1lLnR5cGUpe2Nhc2UgZjpjYXNlIGQ6Y2FzZSBpOmNhc2UgczpjYXNlIHU6Y2FzZSBoOnJldHVybiBlO2RlZmF1bHQ6c3dpdGNoKGU9ZSYmZS4kJHR5cGVvZil7Y2FzZSBjOmNhc2UgcDpjYXNlIGw6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSB2OmNhc2UgbTpjYXNlIGE6cmV0dXJuIHR9fX1mdW5jdGlvbiBfKGUpe3JldHVybiB3KGUpPT09ZH10LnR5cGVPZj13LHQuQXN5bmNNb2RlPWYsdC5Db25jdXJyZW50TW9kZT1kLHQuQ29udGV4dENvbnN1bWVyPWMsdC5Db250ZXh0UHJvdmlkZXI9bCx0LkVsZW1lbnQ9byx0LkZvcndhcmRSZWY9cCx0LkZyYWdtZW50PWksdC5MYXp5PXYsdC5NZW1vPW0sdC5Qb3J0YWw9YSx0LlByb2ZpbGVyPXMsdC5TdHJpY3RNb2RlPXUsdC5TdXNwZW5zZT1oLHQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT1pfHxlPT09ZHx8ZT09PXN8fGU9PT11fHxlPT09aHx8ZT09PXl8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJihlLiQkdHlwZW9mPT09dnx8ZS4kJHR5cGVvZj09PW18fGUuJCR0eXBlb2Y9PT1sfHxlLiQkdHlwZW9mPT09Y3x8ZS4kJHR5cGVvZj09PXB8fGUuJCR0eXBlb2Y9PT1nfHxlLiQkdHlwZW9mPT09Yil9LHQuaXNBc3luY01vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIF8oZSl8fHcoZSk9PT1mfSx0LmlzQ29uY3VycmVudE1vZGU9Xyx0LmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09Y30sdC5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PWx9LHQuaXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1vfSx0LmlzRm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PXB9LHQuaXNGcmFnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PWl9LHQuaXNMYXp5PWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09dn0sdC5pc01lbW89ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1tfSx0LmlzUG9ydGFsPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09YX0sdC5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09c30sdC5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT11fSx0LmlzU3VzcGVuc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1ofX0sRDN6QTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImFJN1giKTtlLmV4cG9ydHM9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmR8fHJ9LERFTTI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5wYXJzZT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcChlLHQpLnBhcnNlRG9jdW1lbnQoKX0sdC5wYXJzZVZhbHVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHAoZSx0KTtuLmV4cGVjdFRva2VuKGYuVG9rZW5LaW5kLlNPRik7dmFyIHI9bi5wYXJzZVZhbHVlTGl0ZXJhbCghMSk7cmV0dXJuIG4uZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuRU9GKSxyfSx0LnBhcnNlVHlwZT1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBwKGUsdCk7bi5leHBlY3RUb2tlbihmLlRva2VuS2luZC5TT0YpO3ZhciByPW4ucGFyc2VUeXBlUmVmZXJlbmNlKCk7cmV0dXJuIG4uZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuRU9GKSxyfTt2YXIgcj1kKG4oInRrZk8iKSksbz1kKG4oInd0VjEiKSksYT1kKG4oIkIvNE8iKSksaT1uKCJnbGJmIiksdT1uKCJ4YUs1Iikscz1uKCJrODRIIiksbD1uKCJ3aW1HIiksYz1uKCJSMUlXIiksZj1uKCJYZlNhIik7ZnVuY3Rpb24gZChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49InN0cmluZyI9PXR5cGVvZiBlP25ldyBzLlNvdXJjZShlKTplO24gaW5zdGFuY2VvZiBzLlNvdXJjZXx8KDAsby5kZWZhdWx0KSgwLCJNdXN0IHByb3ZpZGUgU291cmNlLiBSZWNlaXZlZDogIi5jb25jYXQoKDAsci5kZWZhdWx0KShuKSkpLHRoaXMuX2xleGVyPSgwLGwuY3JlYXRlTGV4ZXIpKG4pLHRoaXMuX29wdGlvbnM9dHx8e319dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQucGFyc2VOYW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5leHBlY3RUb2tlbihmLlRva2VuS2luZC5OQU1FKTtyZXR1cm57a2luZDp1LktpbmQuTkFNRSx2YWx1ZTplLnZhbHVlLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VEb2N1bWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3JldHVybntraW5kOnUuS2luZC5ET0NVTUVOVCxkZWZpbml0aW9uczp0aGlzLm1hbnkoZi5Ub2tlbktpbmQuU09GLHRoaXMucGFyc2VEZWZpbml0aW9uLGYuVG9rZW5LaW5kLkVPRiksbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZURlZmluaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWsoZi5Ub2tlbktpbmQuTkFNRSkpc3dpdGNoKHRoaXMuX2xleGVyLnRva2VuLnZhbHVlKXtjYXNlInF1ZXJ5IjpjYXNlIm11dGF0aW9uIjpjYXNlInN1YnNjcmlwdGlvbiI6cmV0dXJuIHRoaXMucGFyc2VPcGVyYXRpb25EZWZpbml0aW9uKCk7Y2FzZSJmcmFnbWVudCI6cmV0dXJuIHRoaXMucGFyc2VGcmFnbWVudERlZmluaXRpb24oKTtjYXNlInNjaGVtYSI6Y2FzZSJzY2FsYXIiOmNhc2UidHlwZSI6Y2FzZSJpbnRlcmZhY2UiOmNhc2UidW5pb24iOmNhc2UiZW51bSI6Y2FzZSJpbnB1dCI6Y2FzZSJkaXJlY3RpdmUiOnJldHVybiB0aGlzLnBhcnNlVHlwZVN5c3RlbURlZmluaXRpb24oKTtjYXNlImV4dGVuZCI6cmV0dXJuIHRoaXMucGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uKCl9ZWxzZXtpZih0aGlzLnBlZWsoZi5Ub2tlbktpbmQuQlJBQ0VfTCkpcmV0dXJuIHRoaXMucGFyc2VPcGVyYXRpb25EZWZpbml0aW9uKCk7aWYodGhpcy5wZWVrRGVzY3JpcHRpb24oKSlyZXR1cm4gdGhpcy5wYXJzZVR5cGVTeXN0ZW1EZWZpbml0aW9uKCl9dGhyb3cgdGhpcy51bmV4cGVjdGVkKCl9LHQucGFyc2VPcGVyYXRpb25EZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47aWYodGhpcy5wZWVrKGYuVG9rZW5LaW5kLkJSQUNFX0wpKXJldHVybntraW5kOnUuS2luZC5PUEVSQVRJT05fREVGSU5JVElPTixvcGVyYXRpb246InF1ZXJ5IixuYW1lOnZvaWQgMCx2YXJpYWJsZURlZmluaXRpb25zOltdLGRpcmVjdGl2ZXM6W10sc2VsZWN0aW9uU2V0OnRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxsb2M6dGhpcy5sb2MoZSl9O3ZhciB0LG49dGhpcy5wYXJzZU9wZXJhdGlvblR5cGUoKTtyZXR1cm4gdGhpcy5wZWVrKGYuVG9rZW5LaW5kLk5BTUUpJiYodD10aGlzLnBhcnNlTmFtZSgpKSx7a2luZDp1LktpbmQuT1BFUkFUSU9OX0RFRklOSVRJT04sb3BlcmF0aW9uOm4sbmFtZTp0LHZhcmlhYmxlRGVmaW5pdGlvbnM6dGhpcy5wYXJzZVZhcmlhYmxlRGVmaW5pdGlvbnMoKSxkaXJlY3RpdmVzOnRoaXMucGFyc2VEaXJlY3RpdmVzKCExKSxzZWxlY3Rpb25TZXQ6dGhpcy5wYXJzZVNlbGVjdGlvblNldCgpLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VPcGVyYXRpb25UeXBlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5leHBlY3RUb2tlbihmLlRva2VuS2luZC5OQU1FKTtzd2l0Y2goZS52YWx1ZSl7Y2FzZSJxdWVyeSI6cmV0dXJuInF1ZXJ5IjtjYXNlIm11dGF0aW9uIjpyZXR1cm4ibXV0YXRpb24iO2Nhc2Uic3Vic2NyaXB0aW9uIjpyZXR1cm4ic3Vic2NyaXB0aW9uIn10aHJvdyB0aGlzLnVuZXhwZWN0ZWQoZSl9LHQucGFyc2VWYXJpYWJsZURlZmluaXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KGYuVG9rZW5LaW5kLlBBUkVOX0wsdGhpcy5wYXJzZVZhcmlhYmxlRGVmaW5pdGlvbixmLlRva2VuS2luZC5QQVJFTl9SKX0sdC5wYXJzZVZhcmlhYmxlRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3JldHVybntraW5kOnUuS2luZC5WQVJJQUJMRV9ERUZJTklUSU9OLHZhcmlhYmxlOnRoaXMucGFyc2VWYXJpYWJsZSgpLHR5cGU6KHRoaXMuZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuQ09MT04pLHRoaXMucGFyc2VUeXBlUmVmZXJlbmNlKCkpLGRlZmF1bHRWYWx1ZTp0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oZi5Ub2tlbktpbmQuRVFVQUxTKT90aGlzLnBhcnNlVmFsdWVMaXRlcmFsKCEwKTp2b2lkIDAsZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMCksbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZVZhcmlhYmxlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJuIHRoaXMuZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuRE9MTEFSKSx7a2luZDp1LktpbmQuVkFSSUFCTEUsbmFtZTp0aGlzLnBhcnNlTmFtZSgpLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VTZWxlY3Rpb25TZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjtyZXR1cm57a2luZDp1LktpbmQuU0VMRUNUSU9OX1NFVCxzZWxlY3Rpb25zOnRoaXMubWFueShmLlRva2VuS2luZC5CUkFDRV9MLHRoaXMucGFyc2VTZWxlY3Rpb24sZi5Ub2tlbktpbmQuQlJBQ0VfUiksbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZVNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBlZWsoZi5Ub2tlbktpbmQuU1BSRUFEKT90aGlzLnBhcnNlRnJhZ21lbnQoKTp0aGlzLnBhcnNlRmllbGQoKX0sdC5wYXJzZUZpZWxkPWZ1bmN0aW9uKCl7dmFyIGUsdCxuPXRoaXMuX2xleGVyLnRva2VuLHI9dGhpcy5wYXJzZU5hbWUoKTtyZXR1cm4gdGhpcy5leHBlY3RPcHRpb25hbFRva2VuKGYuVG9rZW5LaW5kLkNPTE9OKT8oZT1yLHQ9dGhpcy5wYXJzZU5hbWUoKSk6dD1yLHtraW5kOnUuS2luZC5GSUVMRCxhbGlhczplLG5hbWU6dCxhcmd1bWVudHM6dGhpcy5wYXJzZUFyZ3VtZW50cyghMSksZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMSksc2VsZWN0aW9uU2V0OnRoaXMucGVlayhmLlRva2VuS2luZC5CUkFDRV9MKT90aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCk6dm9pZCAwLGxvYzp0aGlzLmxvYyhuKX19LHQucGFyc2VBcmd1bWVudHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT90aGlzLnBhcnNlQ29uc3RBcmd1bWVudDp0aGlzLnBhcnNlQXJndW1lbnQ7cmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KGYuVG9rZW5LaW5kLlBBUkVOX0wsdCxmLlRva2VuS2luZC5QQVJFTl9SKX0sdC5wYXJzZUFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sdD10aGlzLnBhcnNlTmFtZSgpO3JldHVybiB0aGlzLmV4cGVjdFRva2VuKGYuVG9rZW5LaW5kLkNPTE9OKSx7a2luZDp1LktpbmQuQVJHVU1FTlQsbmFtZTp0LHZhbHVlOnRoaXMucGFyc2VWYWx1ZUxpdGVyYWwoITEpLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VDb25zdEFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJue2tpbmQ6dS5LaW5kLkFSR1VNRU5ULG5hbWU6dGhpcy5wYXJzZU5hbWUoKSx2YWx1ZToodGhpcy5leHBlY3RUb2tlbihmLlRva2VuS2luZC5DT0xPTiksdGhpcy5wYXJzZVZhbHVlTGl0ZXJhbCghMCkpLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VGcmFnbWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3RoaXMuZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuU1BSRUFEKTt2YXIgdD10aGlzLmV4cGVjdE9wdGlvbmFsS2V5d29yZCgib24iKTtyZXR1cm4hdCYmdGhpcy5wZWVrKGYuVG9rZW5LaW5kLk5BTUUpP3traW5kOnUuS2luZC5GUkFHTUVOVF9TUFJFQUQsbmFtZTp0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMSksbG9jOnRoaXMubG9jKGUpfTp7a2luZDp1LktpbmQuSU5MSU5FX0ZSQUdNRU5ULHR5cGVDb25kaXRpb246dD90aGlzLnBhcnNlTmFtZWRUeXBlKCk6dm9pZCAwLGRpcmVjdGl2ZXM6dGhpcy5wYXJzZURpcmVjdGl2ZXMoITEpLHNlbGVjdGlvblNldDp0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZUZyYWdtZW50RGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3JldHVybiB0aGlzLmV4cGVjdEtleXdvcmQoImZyYWdtZW50IiksdGhpcy5fb3B0aW9ucy5leHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlcz97a2luZDp1LktpbmQuRlJBR01FTlRfREVGSU5JVElPTixuYW1lOnRoaXMucGFyc2VGcmFnbWVudE5hbWUoKSx2YXJpYWJsZURlZmluaXRpb25zOnRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb25zKCksdHlwZUNvbmRpdGlvbjoodGhpcy5leHBlY3RLZXl3b3JkKCJvbiIpLHRoaXMucGFyc2VOYW1lZFR5cGUoKSksZGlyZWN0aXZlczp0aGlzLnBhcnNlRGlyZWN0aXZlcyghMSksc2VsZWN0aW9uU2V0OnRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxsb2M6dGhpcy5sb2MoZSl9OntraW5kOnUuS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OLG5hbWU6dGhpcy5wYXJzZUZyYWdtZW50TmFtZSgpLHR5cGVDb25kaXRpb246KHRoaXMuZXhwZWN0S2V5d29yZCgib24iKSx0aGlzLnBhcnNlTmFtZWRUeXBlKCkpLGRpcmVjdGl2ZXM6dGhpcy5wYXJzZURpcmVjdGl2ZXMoITEpLHNlbGVjdGlvblNldDp0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZUZyYWdtZW50TmFtZT1mdW5jdGlvbigpe2lmKCJvbiI9PT10aGlzLl9sZXhlci50b2tlbi52YWx1ZSl0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtyZXR1cm4gdGhpcy5wYXJzZU5hbWUoKX0sdC5wYXJzZVZhbHVlTGl0ZXJhbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9sZXhlci50b2tlbjtzd2l0Y2godC5raW5kKXtjYXNlIGYuVG9rZW5LaW5kLkJSQUNLRVRfTDpyZXR1cm4gdGhpcy5wYXJzZUxpc3QoZSk7Y2FzZSBmLlRva2VuS2luZC5CUkFDRV9MOnJldHVybiB0aGlzLnBhcnNlT2JqZWN0KGUpO2Nhc2UgZi5Ub2tlbktpbmQuSU5UOnJldHVybiB0aGlzLl9sZXhlci5hZHZhbmNlKCkse2tpbmQ6dS5LaW5kLklOVCx2YWx1ZTp0LnZhbHVlLGxvYzp0aGlzLmxvYyh0KX07Y2FzZSBmLlRva2VuS2luZC5GTE9BVDpyZXR1cm4gdGhpcy5fbGV4ZXIuYWR2YW5jZSgpLHtraW5kOnUuS2luZC5GTE9BVCx2YWx1ZTp0LnZhbHVlLGxvYzp0aGlzLmxvYyh0KX07Y2FzZSBmLlRva2VuS2luZC5TVFJJTkc6Y2FzZSBmLlRva2VuS2luZC5CTE9DS19TVFJJTkc6cmV0dXJuIHRoaXMucGFyc2VTdHJpbmdMaXRlcmFsKCk7Y2FzZSBmLlRva2VuS2luZC5OQU1FOnJldHVybiJ0cnVlIj09PXQudmFsdWV8fCJmYWxzZSI9PT10LnZhbHVlPyh0aGlzLl9sZXhlci5hZHZhbmNlKCkse2tpbmQ6dS5LaW5kLkJPT0xFQU4sdmFsdWU6InRydWUiPT09dC52YWx1ZSxsb2M6dGhpcy5sb2ModCl9KToibnVsbCI9PT10LnZhbHVlPyh0aGlzLl9sZXhlci5hZHZhbmNlKCkse2tpbmQ6dS5LaW5kLk5VTEwsbG9jOnRoaXMubG9jKHQpfSk6KHRoaXMuX2xleGVyLmFkdmFuY2UoKSx7a2luZDp1LktpbmQuRU5VTSx2YWx1ZTp0LnZhbHVlLGxvYzp0aGlzLmxvYyh0KX0pO2Nhc2UgZi5Ub2tlbktpbmQuRE9MTEFSOmlmKCFlKXJldHVybiB0aGlzLnBhcnNlVmFyaWFibGUoKX10aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKX0sdC5wYXJzZVN0cmluZ0xpdGVyYWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjtyZXR1cm4gdGhpcy5fbGV4ZXIuYWR2YW5jZSgpLHtraW5kOnUuS2luZC5TVFJJTkcsdmFsdWU6ZS52YWx1ZSxibG9jazplLmtpbmQ9PT1mLlRva2VuS2luZC5CTE9DS19TVFJJTkcsbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZUxpc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMuX2xleGVyLnRva2VuO3JldHVybntraW5kOnUuS2luZC5MSVNULHZhbHVlczp0aGlzLmFueShmLlRva2VuS2luZC5CUkFDS0VUX0wsKGZ1bmN0aW9uKCl7cmV0dXJuIHQucGFyc2VWYWx1ZUxpdGVyYWwoZSl9KSxmLlRva2VuS2luZC5CUkFDS0VUX1IpLGxvYzp0aGlzLmxvYyhuKX19LHQucGFyc2VPYmplY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMuX2xleGVyLnRva2VuO3JldHVybntraW5kOnUuS2luZC5PQkpFQ1QsZmllbGRzOnRoaXMuYW55KGYuVG9rZW5LaW5kLkJSQUNFX0wsKGZ1bmN0aW9uKCl7cmV0dXJuIHQucGFyc2VPYmplY3RGaWVsZChlKX0pLGYuVG9rZW5LaW5kLkJSQUNFX1IpLGxvYzp0aGlzLmxvYyhuKX19LHQucGFyc2VPYmplY3RGaWVsZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9sZXhlci50b2tlbixuPXRoaXMucGFyc2VOYW1lKCk7cmV0dXJuIHRoaXMuZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuQ09MT04pLHtraW5kOnUuS2luZC5PQkpFQ1RfRklFTEQsbmFtZTpuLHZhbHVlOnRoaXMucGFyc2VWYWx1ZUxpdGVyYWwoZSksbG9jOnRoaXMubG9jKHQpfX0sdC5wYXJzZURpcmVjdGl2ZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdO3RoaXMucGVlayhmLlRva2VuS2luZC5BVCk7KXQucHVzaCh0aGlzLnBhcnNlRGlyZWN0aXZlKGUpKTtyZXR1cm4gdH0sdC5wYXJzZURpcmVjdGl2ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9sZXhlci50b2tlbjtyZXR1cm4gdGhpcy5leHBlY3RUb2tlbihmLlRva2VuS2luZC5BVCkse2tpbmQ6dS5LaW5kLkRJUkVDVElWRSxuYW1lOnRoaXMucGFyc2VOYW1lKCksYXJndW1lbnRzOnRoaXMucGFyc2VBcmd1bWVudHMoZSksbG9jOnRoaXMubG9jKHQpfX0sdC5wYXJzZVR5cGVSZWZlcmVuY2U9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX2xleGVyLnRva2VuO3JldHVybiB0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oZi5Ub2tlbktpbmQuQlJBQ0tFVF9MKT8oZT10aGlzLnBhcnNlVHlwZVJlZmVyZW5jZSgpLHRoaXMuZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuQlJBQ0tFVF9SKSxlPXtraW5kOnUuS2luZC5MSVNUX1RZUEUsdHlwZTplLGxvYzp0aGlzLmxvYyh0KX0pOmU9dGhpcy5wYXJzZU5hbWVkVHlwZSgpLHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihmLlRva2VuS2luZC5CQU5HKT97a2luZDp1LktpbmQuTk9OX05VTExfVFlQRSx0eXBlOmUsbG9jOnRoaXMubG9jKHQpfTplfSx0LnBhcnNlTmFtZWRUeXBlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJue2tpbmQ6dS5LaW5kLk5BTUVEX1RZUEUsbmFtZTp0aGlzLnBhcnNlTmFtZSgpLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VUeXBlU3lzdGVtRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMucGVla0Rlc2NyaXB0aW9uKCk/dGhpcy5fbGV4ZXIubG9va2FoZWFkKCk6dGhpcy5fbGV4ZXIudG9rZW47aWYoZS5raW5kPT09Zi5Ub2tlbktpbmQuTkFNRSlzd2l0Y2goZS52YWx1ZSl7Y2FzZSJzY2hlbWEiOnJldHVybiB0aGlzLnBhcnNlU2NoZW1hRGVmaW5pdGlvbigpO2Nhc2Uic2NhbGFyIjpyZXR1cm4gdGhpcy5wYXJzZVNjYWxhclR5cGVEZWZpbml0aW9uKCk7Y2FzZSJ0eXBlIjpyZXR1cm4gdGhpcy5wYXJzZU9iamVjdFR5cGVEZWZpbml0aW9uKCk7Y2FzZSJpbnRlcmZhY2UiOnJldHVybiB0aGlzLnBhcnNlSW50ZXJmYWNlVHlwZURlZmluaXRpb24oKTtjYXNlInVuaW9uIjpyZXR1cm4gdGhpcy5wYXJzZVVuaW9uVHlwZURlZmluaXRpb24oKTtjYXNlImVudW0iOnJldHVybiB0aGlzLnBhcnNlRW51bVR5cGVEZWZpbml0aW9uKCk7Y2FzZSJpbnB1dCI6cmV0dXJuIHRoaXMucGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uKCk7Y2FzZSJkaXJlY3RpdmUiOnJldHVybiB0aGlzLnBhcnNlRGlyZWN0aXZlRGVmaW5pdGlvbigpfXRocm93IHRoaXMudW5leHBlY3RlZChlKX0sdC5wZWVrRGVzY3JpcHRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrKGYuVG9rZW5LaW5kLlNUUklORyl8fHRoaXMucGVlayhmLlRva2VuS2luZC5CTE9DS19TVFJJTkcpfSx0LnBhcnNlRGVzY3JpcHRpb249ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZXNjcmlwdGlvbigpKXJldHVybiB0aGlzLnBhcnNlU3RyaW5nTGl0ZXJhbCgpfSx0LnBhcnNlU2NoZW1hRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3RoaXMuZXhwZWN0S2V5d29yZCgic2NoZW1hIik7dmFyIHQ9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLG49dGhpcy5tYW55KGYuVG9rZW5LaW5kLkJSQUNFX0wsdGhpcy5wYXJzZU9wZXJhdGlvblR5cGVEZWZpbml0aW9uLGYuVG9rZW5LaW5kLkJSQUNFX1IpO3JldHVybntraW5kOnUuS2luZC5TQ0hFTUFfREVGSU5JVElPTixkaXJlY3RpdmVzOnQsb3BlcmF0aW9uVHlwZXM6bixsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlT3BlcmF0aW9uVHlwZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbix0PXRoaXMucGFyc2VPcGVyYXRpb25UeXBlKCk7dGhpcy5leHBlY3RUb2tlbihmLlRva2VuS2luZC5DT0xPTik7dmFyIG49dGhpcy5wYXJzZU5hbWVkVHlwZSgpO3JldHVybntraW5kOnUuS2luZC5PUEVSQVRJT05fVFlQRV9ERUZJTklUSU9OLG9wZXJhdGlvbjp0LHR5cGU6bixsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlU2NhbGFyVHlwZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbix0PXRoaXMucGFyc2VEZXNjcmlwdGlvbigpO3RoaXMuZXhwZWN0S2V5d29yZCgic2NhbGFyIik7dmFyIG49dGhpcy5wYXJzZU5hbWUoKSxyPXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKTtyZXR1cm57a2luZDp1LktpbmQuU0NBTEFSX1RZUEVfREVGSU5JVElPTixkZXNjcmlwdGlvbjp0LG5hbWU6bixkaXJlY3RpdmVzOnIsbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZU9iamVjdFR5cGVEZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sdD10aGlzLnBhcnNlRGVzY3JpcHRpb24oKTt0aGlzLmV4cGVjdEtleXdvcmQoInR5cGUiKTt2YXIgbj10aGlzLnBhcnNlTmFtZSgpLHI9dGhpcy5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzKCksbz10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCksYT10aGlzLnBhcnNlRmllbGRzRGVmaW5pdGlvbigpO3JldHVybntraW5kOnUuS2luZC5PQkpFQ1RfVFlQRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOnQsbmFtZTpuLGludGVyZmFjZXM6cixkaXJlY3RpdmVzOm8sZmllbGRzOmEsbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzPWZ1bmN0aW9uKCl7dmFyIGU9W107aWYodGhpcy5leHBlY3RPcHRpb25hbEtleXdvcmQoImltcGxlbWVudHMiKSl7dGhpcy5leHBlY3RPcHRpb25hbFRva2VuKGYuVG9rZW5LaW5kLkFNUCk7ZG97ZS5wdXNoKHRoaXMucGFyc2VOYW1lZFR5cGUoKSl9d2hpbGUodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKGYuVG9rZW5LaW5kLkFNUCl8fHRoaXMuX29wdGlvbnMuYWxsb3dMZWdhY3lTRExJbXBsZW1lbnRzSW50ZXJmYWNlcyYmdGhpcy5wZWVrKGYuVG9rZW5LaW5kLk5BTUUpKX1yZXR1cm4gZX0sdC5wYXJzZUZpZWxkc0RlZmluaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5hbGxvd0xlZ2FjeVNETEVtcHR5RmllbGRzJiZ0aGlzLnBlZWsoZi5Ub2tlbktpbmQuQlJBQ0VfTCkmJnRoaXMuX2xleGVyLmxvb2thaGVhZCgpLmtpbmQ9PT1mLlRva2VuS2luZC5CUkFDRV9SPyh0aGlzLl9sZXhlci5hZHZhbmNlKCksdGhpcy5fbGV4ZXIuYWR2YW5jZSgpLFtdKTp0aGlzLm9wdGlvbmFsTWFueShmLlRva2VuS2luZC5CUkFDRV9MLHRoaXMucGFyc2VGaWVsZERlZmluaXRpb24sZi5Ub2tlbktpbmQuQlJBQ0VfUil9LHQucGFyc2VGaWVsZERlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbix0PXRoaXMucGFyc2VEZXNjcmlwdGlvbigpLG49dGhpcy5wYXJzZU5hbWUoKSxyPXRoaXMucGFyc2VBcmd1bWVudERlZnMoKTt0aGlzLmV4cGVjdFRva2VuKGYuVG9rZW5LaW5kLkNPTE9OKTt2YXIgbz10aGlzLnBhcnNlVHlwZVJlZmVyZW5jZSgpLGE9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApO3JldHVybntraW5kOnUuS2luZC5GSUVMRF9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOnQsbmFtZTpuLGFyZ3VtZW50czpyLHR5cGU6byxkaXJlY3RpdmVzOmEsbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZUFyZ3VtZW50RGVmcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbmFsTWFueShmLlRva2VuS2luZC5QQVJFTl9MLHRoaXMucGFyc2VJbnB1dFZhbHVlRGVmLGYuVG9rZW5LaW5kLlBBUkVOX1IpfSx0LnBhcnNlSW5wdXRWYWx1ZURlZj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLHQ9dGhpcy5wYXJzZURlc2NyaXB0aW9uKCksbj10aGlzLnBhcnNlTmFtZSgpO3RoaXMuZXhwZWN0VG9rZW4oZi5Ub2tlbktpbmQuQ09MT04pO3ZhciByLG89dGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKTt0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oZi5Ub2tlbktpbmQuRVFVQUxTKSYmKHI9dGhpcy5wYXJzZVZhbHVlTGl0ZXJhbCghMCkpO3ZhciBhPXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKTtyZXR1cm57a2luZDp1LktpbmQuSU5QVVRfVkFMVUVfREVGSU5JVElPTixkZXNjcmlwdGlvbjp0LG5hbWU6bix0eXBlOm8sZGVmYXVsdFZhbHVlOnIsZGlyZWN0aXZlczphLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLHQ9dGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7dGhpcy5leHBlY3RLZXl3b3JkKCJpbnRlcmZhY2UiKTt2YXIgbj10aGlzLnBhcnNlTmFtZSgpLHI9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLG89dGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtyZXR1cm57a2luZDp1LktpbmQuSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTixkZXNjcmlwdGlvbjp0LG5hbWU6bixkaXJlY3RpdmVzOnIsZmllbGRzOm8sbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZVVuaW9uVHlwZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbix0PXRoaXMucGFyc2VEZXNjcmlwdGlvbigpO3RoaXMuZXhwZWN0S2V5d29yZCgidW5pb24iKTt2YXIgbj10aGlzLnBhcnNlTmFtZSgpLHI9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLG89dGhpcy5wYXJzZVVuaW9uTWVtYmVyVHlwZXMoKTtyZXR1cm57a2luZDp1LktpbmQuVU5JT05fVFlQRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOnQsbmFtZTpuLGRpcmVjdGl2ZXM6cix0eXBlczpvLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VVbmlvbk1lbWJlclR5cGVzPWZ1bmN0aW9uKCl7dmFyIGU9W107aWYodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKGYuVG9rZW5LaW5kLkVRVUFMUykpe3RoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihmLlRva2VuS2luZC5QSVBFKTtkb3tlLnB1c2godGhpcy5wYXJzZU5hbWVkVHlwZSgpKX13aGlsZSh0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oZi5Ub2tlbktpbmQuUElQRSkpfXJldHVybiBlfSx0LnBhcnNlRW51bVR5cGVEZWZpbml0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW4sdD10aGlzLnBhcnNlRGVzY3JpcHRpb24oKTt0aGlzLmV4cGVjdEtleXdvcmQoImVudW0iKTt2YXIgbj10aGlzLnBhcnNlTmFtZSgpLHI9dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLG89dGhpcy5wYXJzZUVudW1WYWx1ZXNEZWZpbml0aW9uKCk7cmV0dXJue2tpbmQ6dS5LaW5kLkVOVU1fVFlQRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOnQsbmFtZTpuLGRpcmVjdGl2ZXM6cix2YWx1ZXM6byxsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlRW51bVZhbHVlc0RlZmluaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoZi5Ub2tlbktpbmQuQlJBQ0VfTCx0aGlzLnBhcnNlRW51bVZhbHVlRGVmaW5pdGlvbixmLlRva2VuS2luZC5CUkFDRV9SKX0sdC5wYXJzZUVudW1WYWx1ZURlZmluaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbix0PXRoaXMucGFyc2VEZXNjcmlwdGlvbigpLG49dGhpcy5wYXJzZU5hbWUoKSxyPXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKTtyZXR1cm57a2luZDp1LktpbmQuRU5VTV9WQUxVRV9ERUZJTklUSU9OLGRlc2NyaXB0aW9uOnQsbmFtZTpuLGRpcmVjdGl2ZXM6cixsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLHQ9dGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7dGhpcy5leHBlY3RLZXl3b3JkKCJpbnB1dCIpO3ZhciBuPXRoaXMucGFyc2VOYW1lKCkscj10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCksbz10aGlzLnBhcnNlSW5wdXRGaWVsZHNEZWZpbml0aW9uKCk7cmV0dXJue2tpbmQ6dS5LaW5kLklOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT04sZGVzY3JpcHRpb246dCxuYW1lOm4sZGlyZWN0aXZlczpyLGZpZWxkczpvLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VJbnB1dEZpZWxkc0RlZmluaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoZi5Ub2tlbktpbmQuQlJBQ0VfTCx0aGlzLnBhcnNlSW5wdXRWYWx1ZURlZixmLlRva2VuS2luZC5CUkFDRV9SKX0sdC5wYXJzZVR5cGVTeXN0ZW1FeHRlbnNpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci5sb29rYWhlYWQoKTtpZihlLmtpbmQ9PT1mLlRva2VuS2luZC5OQU1FKXN3aXRjaChlLnZhbHVlKXtjYXNlInNjaGVtYSI6cmV0dXJuIHRoaXMucGFyc2VTY2hlbWFFeHRlbnNpb24oKTtjYXNlInNjYWxhciI6cmV0dXJuIHRoaXMucGFyc2VTY2FsYXJUeXBlRXh0ZW5zaW9uKCk7Y2FzZSJ0eXBlIjpyZXR1cm4gdGhpcy5wYXJzZU9iamVjdFR5cGVFeHRlbnNpb24oKTtjYXNlImludGVyZmFjZSI6cmV0dXJuIHRoaXMucGFyc2VJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uKCk7Y2FzZSJ1bmlvbiI6cmV0dXJuIHRoaXMucGFyc2VVbmlvblR5cGVFeHRlbnNpb24oKTtjYXNlImVudW0iOnJldHVybiB0aGlzLnBhcnNlRW51bVR5cGVFeHRlbnNpb24oKTtjYXNlImlucHV0IjpyZXR1cm4gdGhpcy5wYXJzZUlucHV0T2JqZWN0VHlwZUV4dGVuc2lvbigpfXRocm93IHRoaXMudW5leHBlY3RlZChlKX0sdC5wYXJzZVNjaGVtYUV4dGVuc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3RoaXMuZXhwZWN0S2V5d29yZCgiZXh0ZW5kIiksdGhpcy5leHBlY3RLZXl3b3JkKCJzY2hlbWEiKTt2YXIgdD10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCksbj10aGlzLm9wdGlvbmFsTWFueShmLlRva2VuS2luZC5CUkFDRV9MLHRoaXMucGFyc2VPcGVyYXRpb25UeXBlRGVmaW5pdGlvbixmLlRva2VuS2luZC5CUkFDRV9SKTtpZigwPT09dC5sZW5ndGgmJjA9PT1uLmxlbmd0aCl0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtyZXR1cm57a2luZDp1LktpbmQuU0NIRU1BX0VYVEVOU0lPTixkaXJlY3RpdmVzOnQsb3BlcmF0aW9uVHlwZXM6bixsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlU2NhbGFyVHlwZUV4dGVuc2lvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuO3RoaXMuZXhwZWN0S2V5d29yZCgiZXh0ZW5kIiksdGhpcy5leHBlY3RLZXl3b3JkKCJzY2FsYXIiKTt2YXIgdD10aGlzLnBhcnNlTmFtZSgpLG49dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtyZXR1cm57a2luZDp1LktpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OLG5hbWU6dCxkaXJlY3RpdmVzOm4sbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZU9iamVjdFR5cGVFeHRlbnNpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjt0aGlzLmV4cGVjdEtleXdvcmQoImV4dGVuZCIpLHRoaXMuZXhwZWN0S2V5d29yZCgidHlwZSIpO3ZhciB0PXRoaXMucGFyc2VOYW1lKCksbj10aGlzLnBhcnNlSW1wbGVtZW50c0ludGVyZmFjZXMoKSxyPXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKSxvPXRoaXMucGFyc2VGaWVsZHNEZWZpbml0aW9uKCk7aWYoMD09PW4ubGVuZ3RoJiYwPT09ci5sZW5ndGgmJjA9PT1vLmxlbmd0aCl0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtyZXR1cm57a2luZDp1LktpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OLG5hbWU6dCxpbnRlcmZhY2VzOm4sZGlyZWN0aXZlczpyLGZpZWxkczpvLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47dGhpcy5leHBlY3RLZXl3b3JkKCJleHRlbmQiKSx0aGlzLmV4cGVjdEtleXdvcmQoImludGVyZmFjZSIpO3ZhciB0PXRoaXMucGFyc2VOYW1lKCksbj10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCkscj10aGlzLnBhcnNlRmllbGRzRGVmaW5pdGlvbigpO2lmKDA9PT1uLmxlbmd0aCYmMD09PXIubGVuZ3RoKXRocm93IHRoaXMudW5leHBlY3RlZCgpO3JldHVybntraW5kOnUuS2luZC5JTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT04sbmFtZTp0LGRpcmVjdGl2ZXM6bixmaWVsZHM6cixsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlVW5pb25UeXBlRXh0ZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbGV4ZXIudG9rZW47dGhpcy5leHBlY3RLZXl3b3JkKCJleHRlbmQiKSx0aGlzLmV4cGVjdEtleXdvcmQoInVuaW9uIik7dmFyIHQ9dGhpcy5wYXJzZU5hbWUoKSxuPXRoaXMucGFyc2VEaXJlY3RpdmVzKCEwKSxyPXRoaXMucGFyc2VVbmlvbk1lbWJlclR5cGVzKCk7aWYoMD09PW4ubGVuZ3RoJiYwPT09ci5sZW5ndGgpdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7cmV0dXJue2tpbmQ6dS5LaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OLG5hbWU6dCxkaXJlY3RpdmVzOm4sdHlwZXM6cixsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlRW51bVR5cGVFeHRlbnNpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjt0aGlzLmV4cGVjdEtleXdvcmQoImV4dGVuZCIpLHRoaXMuZXhwZWN0S2V5d29yZCgiZW51bSIpO3ZhciB0PXRoaXMucGFyc2VOYW1lKCksbj10aGlzLnBhcnNlRGlyZWN0aXZlcyghMCkscj10aGlzLnBhcnNlRW51bVZhbHVlc0RlZmluaXRpb24oKTtpZigwPT09bi5sZW5ndGgmJjA9PT1yLmxlbmd0aCl0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtyZXR1cm57a2luZDp1LktpbmQuRU5VTV9UWVBFX0VYVEVOU0lPTixuYW1lOnQsZGlyZWN0aXZlczpuLHZhbHVlczpyLGxvYzp0aGlzLmxvYyhlKX19LHQucGFyc2VJbnB1dE9iamVjdFR5cGVFeHRlbnNpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9sZXhlci50b2tlbjt0aGlzLmV4cGVjdEtleXdvcmQoImV4dGVuZCIpLHRoaXMuZXhwZWN0S2V5d29yZCgiaW5wdXQiKTt2YXIgdD10aGlzLnBhcnNlTmFtZSgpLG49dGhpcy5wYXJzZURpcmVjdGl2ZXMoITApLHI9dGhpcy5wYXJzZUlucHV0RmllbGRzRGVmaW5pdGlvbigpO2lmKDA9PT1uLmxlbmd0aCYmMD09PXIubGVuZ3RoKXRocm93IHRoaXMudW5leHBlY3RlZCgpO3JldHVybntraW5kOnUuS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT04sbmFtZTp0LGRpcmVjdGl2ZXM6bixmaWVsZHM6cixsb2M6dGhpcy5sb2MoZSl9fSx0LnBhcnNlRGlyZWN0aXZlRGVmaW5pdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLHQ9dGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7dGhpcy5leHBlY3RLZXl3b3JkKCJkaXJlY3RpdmUiKSx0aGlzLmV4cGVjdFRva2VuKGYuVG9rZW5LaW5kLkFUKTt2YXIgbj10aGlzLnBhcnNlTmFtZSgpLHI9dGhpcy5wYXJzZUFyZ3VtZW50RGVmcygpLG89dGhpcy5leHBlY3RPcHRpb25hbEtleXdvcmQoInJlcGVhdGFibGUiKTt0aGlzLmV4cGVjdEtleXdvcmQoIm9uIik7dmFyIGE9dGhpcy5wYXJzZURpcmVjdGl2ZUxvY2F0aW9ucygpO3JldHVybntraW5kOnUuS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTixkZXNjcmlwdGlvbjp0LG5hbWU6bixhcmd1bWVudHM6cixyZXBlYXRhYmxlOm8sbG9jYXRpb25zOmEsbG9jOnRoaXMubG9jKGUpfX0sdC5wYXJzZURpcmVjdGl2ZUxvY2F0aW9ucz1mdW5jdGlvbigpe3RoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihmLlRva2VuS2luZC5QSVBFKTt2YXIgZT1bXTtkb3tlLnB1c2godGhpcy5wYXJzZURpcmVjdGl2ZUxvY2F0aW9uKCkpfXdoaWxlKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihmLlRva2VuS2luZC5QSVBFKSk7cmV0dXJuIGV9LHQucGFyc2VEaXJlY3RpdmVMb2NhdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xleGVyLnRva2VuLHQ9dGhpcy5wYXJzZU5hbWUoKTtpZih2b2lkIDAhPT1jLkRpcmVjdGl2ZUxvY2F0aW9uW3QudmFsdWVdKXJldHVybiB0O3Rocm93IHRoaXMudW5leHBlY3RlZChlKX0sdC5sb2M9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuX29wdGlvbnMubm9Mb2NhdGlvbilyZXR1cm4gbmV3IGgoZSx0aGlzLl9sZXhlci5sYXN0VG9rZW4sdGhpcy5fbGV4ZXIuc291cmNlKX0sdC5wZWVrPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9sZXhlci50b2tlbi5raW5kPT09ZX0sdC5leHBlY3RUb2tlbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9sZXhlci50b2tlbjtpZih0LmtpbmQ9PT1lKXJldHVybiB0aGlzLl9sZXhlci5hZHZhbmNlKCksdDt0aHJvdygwLGkuc3ludGF4RXJyb3IpKHRoaXMuX2xleGVyLnNvdXJjZSx0LnN0YXJ0LCJFeHBlY3RlZCAiLmNvbmNhdChlLCIsIGZvdW5kICIpLmNvbmNhdCh5KHQpKSl9LHQuZXhwZWN0T3B0aW9uYWxUb2tlbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9sZXhlci50b2tlbjtpZih0LmtpbmQ9PT1lKXJldHVybiB0aGlzLl9sZXhlci5hZHZhbmNlKCksdH0sdC5leHBlY3RLZXl3b3JkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xleGVyLnRva2VuO2lmKHQua2luZCE9PWYuVG9rZW5LaW5kLk5BTUV8fHQudmFsdWUhPT1lKXRocm93KDAsaS5zeW50YXhFcnJvcikodGhpcy5fbGV4ZXIuc291cmNlLHQuc3RhcnQsJ0V4cGVjdGVkICInLmNvbmNhdChlLCciLCBmb3VuZCAnKS5jb25jYXQoeSh0KSkpO3RoaXMuX2xleGVyLmFkdmFuY2UoKX0sdC5leHBlY3RPcHRpb25hbEtleXdvcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbGV4ZXIudG9rZW47cmV0dXJuIHQua2luZD09PWYuVG9rZW5LaW5kLk5BTUUmJnQudmFsdWU9PT1lJiYodGhpcy5fbGV4ZXIuYWR2YW5jZSgpLCEwKX0sdC51bmV4cGVjdGVkPWZ1bmN0aW9uKGUpe3ZhciB0PWV8fHRoaXMuX2xleGVyLnRva2VuO3JldHVybigwLGkuc3ludGF4RXJyb3IpKHRoaXMuX2xleGVyLnNvdXJjZSx0LnN0YXJ0LCJVbmV4cGVjdGVkICIuY29uY2F0KHkodCkpKX0sdC5hbnk9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuZXhwZWN0VG9rZW4oZSk7Zm9yKHZhciByPVtdOyF0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4obik7KXIucHVzaCh0LmNhbGwodGhpcykpO3JldHVybiByfSx0Lm9wdGlvbmFsTWFueT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKGUpKXt2YXIgcj1bXTtkb3tyLnB1c2godC5jYWxsKHRoaXMpKX13aGlsZSghdGhpcy5leHBlY3RPcHRpb25hbFRva2VuKG4pKTtyZXR1cm4gcn1yZXR1cm5bXX0sdC5tYW55PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLmV4cGVjdFRva2VuKGUpO3ZhciByPVtdO2Rve3IucHVzaCh0LmNhbGwodGhpcykpfXdoaWxlKCF0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4obikpO3JldHVybiByfSxlfSgpO2Z1bmN0aW9uIGgoZSx0LG4pe3RoaXMuc3RhcnQ9ZS5zdGFydCx0aGlzLmVuZD10LmVuZCx0aGlzLnN0YXJ0VG9rZW49ZSx0aGlzLmVuZFRva2VuPXQsdGhpcy5zb3VyY2U9bn1mdW5jdGlvbiB5KGUpe3ZhciB0PWUudmFsdWU7cmV0dXJuIHQ/IiIuY29uY2F0KGUua2luZCwnICInKS5jb25jYXQodCwnIicpOmUua2luZH0oMCxhLmRlZmF1bHQpKGgsKGZ1bmN0aW9uKCl7cmV0dXJue3N0YXJ0OnRoaXMuc3RhcnQsZW5kOnRoaXMuZW5kfX0pKX0sREVXRzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24oIlo2L28iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWUuZ2V0U2VsZWN0aW9uKCksbz1yLmdldFN0YXJ0S2V5KCksYT1yLmdldFN0YXJ0T2Zmc2V0KCksaT1lLmdldEN1cnJlbnRDb250ZW50KCksdT1vO3JldHVybiB0PmkuZ2V0QmxvY2tGb3JLZXkobykuZ2V0VGV4dCgpLmxlbmd0aC1hPyh1PWkuZ2V0S2V5QWZ0ZXIobyksbj0wKTpuPWErdCxyLm1lcmdlKHtmb2N1c0tleTp1LGZvY3VzT2Zmc2V0Om59KX19LERKQ2U6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJTZWxlY3QtY2xlYXIiLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6IiZ0aW1lczsifX0pfTt2YXIgcixvPW4oInExdEkiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfX0sRFV6WTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLG89cj9TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iik6NjAxMDMsYT1yP1N5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpOjYwMTA2LGk9cj9TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpOjYwMTA3LHU9cj9TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpOjYwMTA4LHM9cj9TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpOjYwMTE0LGw9cj9TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpOjYwMTA5LGM9cj9TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0Iik6NjAxMTAsZj1yP1N5bWJvbC5mb3IoInJlYWN0LmFzeW5jX21vZGUiKTo2MDExMSxkPXI/U3ltYm9sLmZvcigicmVhY3QuY29uY3VycmVudF9tb2RlIik6NjAxMTEscD1yP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIsaD1yP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIik6NjAxMTMseT1yP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlX2xpc3QiKTo2MDEyMCxtPXI/U3ltYm9sLmZvcigicmVhY3QubWVtbyIpOjYwMTE1LHY9cj9TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iik6NjAxMTYsZz1yP1N5bWJvbC5mb3IoInJlYWN0LmZ1bmRhbWVudGFsIik6NjAxMTcsYj1yP1N5bWJvbC5mb3IoInJlYWN0LnJlc3BvbmRlciIpOjYwMTE4O2Z1bmN0aW9uIHcoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIHQ9ZS4kJHR5cGVvZjtzd2l0Y2godCl7Y2FzZSBvOnN3aXRjaChlPWUudHlwZSl7Y2FzZSBmOmNhc2UgZDpjYXNlIGk6Y2FzZSBzOmNhc2UgdTpjYXNlIGg6cmV0dXJuIGU7ZGVmYXVsdDpzd2l0Y2goZT1lJiZlLiQkdHlwZW9mKXtjYXNlIGM6Y2FzZSBwOmNhc2UgbDpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiB0fX1jYXNlIHY6Y2FzZSBtOmNhc2UgYTpyZXR1cm4gdH19fWZ1bmN0aW9uIF8oZSl7cmV0dXJuIHcoZSk9PT1kfXQudHlwZU9mPXcsdC5Bc3luY01vZGU9Zix0LkNvbmN1cnJlbnRNb2RlPWQsdC5Db250ZXh0Q29uc3VtZXI9Yyx0LkNvbnRleHRQcm92aWRlcj1sLHQuRWxlbWVudD1vLHQuRm9yd2FyZFJlZj1wLHQuRnJhZ21lbnQ9aSx0Lkxhenk9dix0Lk1lbW89bSx0LlBvcnRhbD1hLHQuUHJvZmlsZXI9cyx0LlN0cmljdE1vZGU9dSx0LlN1c3BlbnNlPWgsdC5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZXx8ZT09PWl8fGU9PT1kfHxlPT09c3x8ZT09PXV8fGU9PT1ofHxlPT09eXx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmKGUuJCR0eXBlb2Y9PT12fHxlLiQkdHlwZW9mPT09bXx8ZS4kJHR5cGVvZj09PWx8fGUuJCR0eXBlb2Y9PT1jfHxlLiQkdHlwZW9mPT09cHx8ZS4kJHR5cGVvZj09PWd8fGUuJCR0eXBlb2Y9PT1iKX0sdC5pc0FzeW5jTW9kZT1mdW5jdGlvbihlKXtyZXR1cm4gXyhlKXx8dyhlKT09PWZ9LHQuaXNDb25jdXJyZW50TW9kZT1fLHQuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1jfSx0LmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09bH0sdC5pc0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99LHQuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09cH0sdC5pc0ZyYWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09aX0sdC5pc0xhenk9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT12fSx0LmlzTWVtbz1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PW19LHQuaXNQb3J0YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1hfSx0LmlzUHJvZmlsZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1zfSx0LmlzU3RyaWN0TW9kZT1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PXV9LHQuaXNTdXNwZW5zZT1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PWh9fSxEWUtoOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiVjhkcCIpLG89bigiYnU1QiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0U3RhcnRLZXkoKSxhPXQuZ2V0U3RhcnRPZmZzZXQoKSxpPXQuZ2V0RW5kS2V5KCksdT10LmdldEVuZE9mZnNldCgpLHM9byhlLHQpLmdldEJsb2NrTWFwKCksbD1zLmtleVNlcSgpLGM9bC5pbmRleE9mKG4pLGY9bC5pbmRleE9mKGkpKzE7cmV0dXJuIHIocy5zbGljZShjLGYpLm1hcCgoZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmdldFRleHQoKSxvPWUuZ2V0Q2hhcmFjdGVyTGlzdCgpO3JldHVybiBuPT09aT9lLm1lcmdlKHt0ZXh0OnIuc2xpY2UoYSx1KSxjaGFyYWN0ZXJMaXN0Om8uc2xpY2UoYSx1KX0pOnQ9PT1uP2UubWVyZ2Uoe3RleHQ6ci5zbGljZShhKSxjaGFyYWN0ZXJMaXN0Om8uc2xpY2UoYSl9KTp0PT09aT9lLm1lcmdlKHt0ZXh0OnIuc2xpY2UoMCx1KSxjaGFyYWN0ZXJMaXN0Om8uc2xpY2UoMCx1KX0pOmV9KSkpfX0sRGNpRDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBvKCl7cmV0dXJuIHJ9ci5pc1JlcXVpcmVkPXIsZS5leHBvcnRzPXthbmQ6byxiZXR3ZWVuOm8sYm9vbGVhblNvbWU6byxjaGlsZHJlbkhhdmVQcm9wWG9yQ2hpbGRyZW46byxjaGlsZHJlbk9mOm8sY2hpbGRyZW5PZlR5cGU6byxjaGlsZHJlblNlcXVlbmNlT2Y6byxjb21wb25lbnRXaXRoTmFtZTpvLGRpc2FsbG93ZWRJZjpvLGVsZW1lbnRUeXBlOm8sZW1wdHk6byxleHBsaWNpdE51bGw6byxmb3JiaWRFeHRyYVByb3BzOk9iamVjdCxpbnRlZ2VyOm8sa2V5c09mOm8sbXV0dWFsbHlFeGNsdXNpdmVQcm9wczpvLG11dHVhbGx5RXhjbHVzaXZlVHJ1ZVByb3BzOm8sbkNoaWxkcmVuOm8sbm9uTmVnYXRpdmVJbnRlZ2VyOnIsbm9uTmVnYXRpdmVOdW1iZXI6byxudW1lcmljU3RyaW5nOm8sb2JqZWN0Om8sb3I6byxyYW5nZTpvLHJlZjpvLHJlcXVpcmVkQnk6byxyZXN0cmljdGVkUHJvcDpvLHNlcXVlbmNlT2Y6byxzaGFwZTpvLHN0cmluZ0VuZHNXaXRoOm8sc3RyaW5nU3RhcnRzV2l0aDpvLHVuaXF1ZUFycmF5Om8sdW5pcXVlQXJyYXlPZjpvLHZhbHVlc09mOm8sd2l0aFNoYXBlOm99fSxEaDNIOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQXBwbGVXZWJLaXQiKT4tMTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9ZXx8ZG9jdW1lbnQpLnNjcm9sbGluZ0VsZW1lbnQ/ZS5zY3JvbGxpbmdFbGVtZW50OnJ8fCJDU1MxQ29tcGF0IiE9PWUuY29tcGF0TW9kZT9lLmJvZHk6ZS5kb2N1bWVudEVsZW1lbnR9fSxEa2t5OmZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZGVmaW5lTG9jYWxlKCJmci1jaCIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGlfbHVfbWFfbWVfamVfdmVfc2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZOKAmWh1aSDDoF0gTFQiLG5leHREYXk6IltEZW1haW4gw6BdIExUIixuZXh0V2VlazoiZGRkZCBbw6BdIExUIixsYXN0RGF5OiJbSGllciDDoF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIMOgXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsc3M6IiVkIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9yZGluYWw6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2FzZSJEIjpjYXNlIkRERCI6Y2FzZSJkIjpyZXR1cm4gZSsoMT09PWU/ImVyIjoiZSIpO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gZSsoMT09PWU/InJlIjoiZSIpfX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KG4oIndkL1IiKSl9LERsVnk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oImRaMk8iKTtlLmV4cG9ydHM9cn0sRG12aTpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiZW4tYXUiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDtyZXR1cm4gZSsoMT09fn4oZSUxMDAvMTApPyJ0aCI6MT09PXQ/InN0IjoyPT09dD8ibmQiOjM9PT10PyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSxEb0hyOmZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PXsxOiInaW5jaSIsNToiJ2luY2kiLDg6IidpbmNpIiw3MDoiJ2luY2kiLDgwOiInaW5jaSIsMjoiJ25jaSIsNzoiJ25jaSIsMjA6IiduY2kiLDUwOiInbmNpIiwzOiInw7xuY8O8Iiw0OiInw7xuY8O8IiwxMDA6IifDvG5jw7wiLDY6IiduY8SxIiw5OiIndW5jdSIsMTA6Iid1bmN1IiwzMDoiJ3VuY3UiLDYwOiInxLFuY8SxIiw5MDoiJ8SxbmPEsSJ9O2UuZGVmaW5lTG9jYWxlKCJ0ciIse21vbnRoczoiT2Nha1/FnnViYXRfTWFydF9OaXNhbl9NYXnEsXNfSGF6aXJhbl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1fS2FzxLFtX0FyYWzEsWsiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ik9jYV/FnnViX01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEiLnNwbGl0KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFydGVzaV9TYWzEsV/Dh2FyxZ9hbWJhX1BlcsWfZW1iZV9DdW1hX0N1bWFydGVzaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJQYXpfUHRzX1NhbF/Dh2FyX1Blcl9DdW1fQ3RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJQel9QdF9TYV/Dh2FfUGVfQ3VfQ3QiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnw7xuIHNhYXRdIExUIixuZXh0RGF5OiJbeWFyxLFuIHNhYXRdIExUIixuZXh0V2VlazoiW2dlbGVjZWtdIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZMO8bl0gTFQiLGxhc3RXZWVrOiJbZ2XDp2VuXSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29ucmEiLHBhc3Q6IiVzIMO2bmNlIixzOiJiaXJrYcOnIHNhbml5ZSIsc3M6IiVkIHNhbml5ZSIsbToiYmlyIGRha2lrYSIsbW06IiVkIGRha2lrYSIsaDoiYmlyIHNhYXQiLGhoOiIlZCBzYWF0IixkOiJiaXIgZ8O8biIsZGQ6IiVkIGfDvG4iLE06ImJpciBheSIsTU06IiVkIGF5Iix5OiJiaXIgecSxbCIseXk6IiVkIHnEsWwifSxvcmRpbmFsOmZ1bmN0aW9uKGUsbil7c3dpdGNoKG4pe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRvIjpjYXNlIkREIjpyZXR1cm4gZTtkZWZhdWx0OmlmKDA9PT1lKXJldHVybiBlKyInxLFuY8SxIjt2YXIgcj1lJTEwO3JldHVybiBlKyh0W3JdfHx0W2UlMTAwLXJdfHx0W2U+PTEwMD8xMDA6bnVsbF0pfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KG4oIndkL1IiKSl9LER0aFk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJNZ3pXIik7ZnVuY3Rpb24gbygpe3JldHVybihvPXJ8fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYShlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHU9bigiQ0pYeCIpLHM9bigiSXE4RSIpLGw9bigicTF0SSIpLGM9bigic09zbCIpLGY9bigiYlUzdiIpLGQ9bigiYlN3WiIpLHA9bigiRXkwRSIpLGg9bigicFhtcCIpLHk9bigiaWNXViIpLG09bigiR1hiayIpLHY9bigieVVHSiIpLGc9bigibUZ5ViIpLGI9bigiT0x6QSIpLHc9bigicXlzdiIpLF89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRBbmNob3JLZXkoKT09PXR8fGUuZ2V0Rm9jdXNLZXkoKT09PXR9LEU9ZnVuY3Rpb24oZSl7dmFyIHQsbjtmdW5jdGlvbiByKCl7Zm9yKHZhciB0LG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylyW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gaShhKHQ9ZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChyKSl8fHRoaXMpLCJfbm9kZSIsdm9pZCAwKSx0fW49ZSwodD1yKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uO3ZhciBFPXIucHJvdG90eXBlO3JldHVybiBFLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcm9wcy5ibG9jayE9PWUuYmxvY2t8fHRoaXMucHJvcHMudHJlZSE9PWUudHJlZXx8dGhpcy5wcm9wcy5kaXJlY3Rpb24hPT1lLmRpcmVjdGlvbnx8XyhlLnNlbGVjdGlvbixlLmJsb2NrLmdldEtleSgpKSYmZS5mb3JjZVNlbGVjdGlvbn0sRS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuc2VsZWN0aW9uLHQ9ZS5nZXRFbmRLZXkoKTtpZihlLmdldEhhc0ZvY3VzKCkmJnQ9PT10aGlzLnByb3BzLmJsb2NrLmdldEtleSgpKXt2YXIgbj10aGlzLl9ub2RlO2lmKG51bGwhPW4pe3ZhciByLG89Zi5nZXRTY3JvbGxQYXJlbnQobiksYT1tKG8pO2lmKG89PT13aW5kb3cpe3ZhciBpPXkobik7KHI9aS55K2kuaGVpZ2h0LXYoKS5oZWlnaHQpPjAmJndpbmRvdy5zY3JvbGxUbyhhLngsYS55K3IrMTApfWVsc2V7YihuKXx8ZyghMSksKHI9bi5vZmZzZXRIZWlnaHQrbi5vZmZzZXRUb3AtKG8ub2Zmc2V0VG9wK28ub2Zmc2V0SGVpZ2h0K2EueSkpPjAmJmMuc2V0VG9wKG8sYy5nZXRUb3AobykrcisxMCl9fX19LEUuX3JlbmRlckNoaWxkcmVuPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMuYmxvY2ssbj10LmdldEtleSgpLHI9dC5nZXRUZXh0KCksYT10aGlzLnByb3BzLnRyZWUuc2l6ZS0xLGk9Xyh0aGlzLnByb3BzLnNlbGVjdGlvbixuKTtyZXR1cm4gdGhpcy5wcm9wcy50cmVlLm1hcCgoZnVuY3Rpb24oYyxmKXt2YXIgaD1jLmdldCgibGVhdmVzIik7aWYoMD09PWguc2l6ZSlyZXR1cm4gbnVsbDt2YXIgeT1oLnNpemUtMSxtPWgubWFwKChmdW5jdGlvbihvLGMpe3ZhciBkPXMuZW5jb2RlKG4sZixjKSxwPW8uZ2V0KCJzdGFydCIpLGg9by5nZXQoImVuZCIpO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQodSx7a2V5OmQsb2Zmc2V0S2V5OmQsYmxvY2s6dCxzdGFydDpwLHNlbGVjdGlvbjppP2UucHJvcHMuc2VsZWN0aW9uOm51bGwsZm9yY2VTZWxlY3Rpb246ZS5wcm9wcy5mb3JjZVNlbGVjdGlvbix0ZXh0OnIuc2xpY2UocCxoKSxzdHlsZVNldDp0LmdldElubGluZVN0eWxlQXQocCksY3VzdG9tU3R5bGVNYXA6ZS5wcm9wcy5jdXN0b21TdHlsZU1hcCxjdXN0b21TdHlsZUZuOmUucHJvcHMuY3VzdG9tU3R5bGVGbixpc0xhc3Q6Zj09PWEmJmM9PT15fSl9KSkudG9BcnJheSgpLHY9Yy5nZXQoImRlY29yYXRvcktleSIpO2lmKG51bGw9PXYpcmV0dXJuIG07aWYoIWUucHJvcHMuZGVjb3JhdG9yKXJldHVybiBtO3ZhciBnPXcoZS5wcm9wcy5kZWNvcmF0b3IpLGI9Zy5nZXRDb21wb25lbnRGb3JLZXkodik7aWYoIWIpcmV0dXJuIG07dmFyIF89Zy5nZXRQcm9wc0ZvcktleSh2KSxFPXMuZW5jb2RlKG4sZiwwKSxPPWguZmlyc3QoKS5nZXQoInN0YXJ0Iiksaz1oLmxhc3QoKS5nZXQoImVuZCIpLEM9ci5zbGljZShPLGspLHg9dC5nZXRFbnRpdHlBdChjLmdldCgic3RhcnQiKSksUz1wLmdldEhUTUxEaXJJZkRpZmZlcmVudChkLmdldERpcmVjdGlvbihDKSxlLnByb3BzLmRpcmVjdGlvbiksRD17Y29udGVudFN0YXRlOmUucHJvcHMuY29udGVudFN0YXRlLGRlY29yYXRlZFRleHQ6QyxkaXI6UyxrZXk6RSxzdGFydDpPLGVuZDprLGJsb2NrS2V5Om4sZW50aXR5S2V5Ongsb2Zmc2V0S2V5OkV9O3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoYixvKHt9LF8sRCksbSl9KSkudG9BcnJheSgpfSxFLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5kaXJlY3Rpb24scj10Lm9mZnNldEtleSxvPWgoeyJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvYmxvY2siOiEwLCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvbHRyIjoiTFRSIj09PW4sInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9ydGwiOiJSVEwiPT09bn0pO3JldHVybiBsLmNyZWF0ZUVsZW1lbnQoImRpdiIseyJkYXRhLW9mZnNldC1rZXkiOnIsY2xhc3NOYW1lOm8scmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLl9ub2RlPXR9fSx0aGlzLl9yZW5kZXJDaGlsZHJlbigpKX0scn0obC5Db21wb25lbnQpO2UuZXhwb3J0cz1FfSxEdjBmOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz02NCl9KHswOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInExdEkiKX0sMTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIc3FnIil9LDE1OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIml1THIiKX0sMjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI1ZjduIil9LDM3OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkR6SkMiKX0sNDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIxN3g5Iil9LDY6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVFNZUSIpfSw2NDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPXAobigwKSksaT1wKG4oNCkpLHU9bigxKSxzPXAobig2KSksbD1wKG4oMzcpKSxjPXAobig5KSksZj1wKG4oMTUpKSxkPW4oMik7ZnVuY3Rpb24gcChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGg9KDAsdS5mb3JiaWRFeHRyYVByb3BzKSh7aWQ6aS5kZWZhdWx0LnN0cmluZy5pc1JlcXVpcmVkLHBsYWNlaG9sZGVyOmkuZGVmYXVsdC5zdHJpbmcsZGlzcGxheVZhbHVlOmkuZGVmYXVsdC5zdHJpbmcsaW5wdXRWYWx1ZTppLmRlZmF1bHQuc3RyaW5nLHNjcmVlblJlYWRlck1lc3NhZ2U6aS5kZWZhdWx0LnN0cmluZyxmb2N1c2VkOmkuZGVmYXVsdC5ib29sLGRpc2FibGVkOmkuZGVmYXVsdC5ib29sLHJlcXVpcmVkOmkuZGVmYXVsdC5ib29sLHJlYWRPbmx5OmkuZGVmYXVsdC5ib29sLG9wZW5EaXJlY3Rpb246Zi5kZWZhdWx0LHNob3dDYXJldDppLmRlZmF1bHQuYm9vbCxvbkNoYW5nZTppLmRlZmF1bHQuZnVuYyxvbkZvY3VzOmkuZGVmYXVsdC5mdW5jLG9uS2V5RG93blNoaWZ0VGFiOmkuZGVmYXVsdC5mdW5jLG9uS2V5RG93blRhYjppLmRlZmF1bHQuZnVuYyxvbktleURvd25BcnJvd0Rvd246aS5kZWZhdWx0LmZ1bmMsb25LZXlEb3duUXVlc3Rpb25NYXJrOmkuZGVmYXVsdC5mdW5jLGlzRm9jdXNlZDppLmRlZmF1bHQuYm9vbH0pLHk9e3BsYWNlaG9sZGVyOiJTZWxlY3QgRGF0ZSIsZGlzcGxheVZhbHVlOiIiLGlucHV0VmFsdWU6IiIsc2NyZWVuUmVhZGVyTWVzc2FnZToiIixmb2N1c2VkOiExLGRpc2FibGVkOiExLHJlcXVpcmVkOiExLHJlYWRPbmx5Om51bGwsb3BlbkRpcmVjdGlvbjpkLk9QRU5fRE9XTixzaG93Q2FyZXQ6ITEsb25DaGFuZ2U6ZnVuY3Rpb24oKXt9LG9uRm9jdXM6ZnVuY3Rpb24oKXt9LG9uS2V5RG93blNoaWZ0VGFiOmZ1bmN0aW9uKCl7fSxvbktleURvd25UYWI6ZnVuY3Rpb24oKXt9LG9uS2V5RG93bkFycm93RG93bjpmdW5jdGlvbigpe30sb25LZXlEb3duUXVlc3Rpb25NYXJrOmZ1bmN0aW9uKCl7fSxpc0ZvY3VzZWQ6ITF9LG09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gbi5zdGF0ZT17ZGF0ZVN0cmluZzoiIixpc1RvdWNoRGV2aWNlOiExfSxuLm9uQ2hhbmdlPW4ub25DaGFuZ2UuYmluZChuKSxuLm9uS2V5RG93bj1uLm9uS2V5RG93bi5iaW5kKG4pLG4uc2V0SW5wdXRSZWY9bi5zZXRJbnB1dFJlZi5iaW5kKG4pLG59cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIisodm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2lzVG91Y2hEZXZpY2U6KDAsYy5kZWZhdWx0KSgpfSl9fSx7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXshdGhpcy5wcm9wcy5kaXNwbGF5VmFsdWUmJmUuZGlzcGxheVZhbHVlJiZ0aGlzLnNldFN0YXRlKHtkYXRlU3RyaW5nOiIifSl9fSx7a2V5OiJjb21wb25lbnREaWRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmZvY3VzZWQscj10LmlzRm9jdXNlZDtlLmZvY3VzZWQ9PT1uJiZlLmlzRm9jdXNlZD09PXJ8fChuJiZyPyh0aGlzLmlucHV0UmVmLmZvY3VzKCksdGhpcy5pbnB1dFJlZi5zZWxlY3QoKSk6dGhpcy5pbnB1dFJlZi5ibHVyKCkpfX0se2tleToib25DaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10Lm9uQ2hhbmdlLHI9dC5vbktleURvd25RdWVzdGlvbk1hcmssbz1lLnRhcmdldC52YWx1ZTsiPyI9PT1vW28ubGVuZ3RoLTFdP3IoZSk6KHRoaXMuc2V0U3RhdGUoe2RhdGVTdHJpbmc6b30pLG4obykpfX0se2tleToib25LZXlEb3duIix2YWx1ZTpmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpO3ZhciB0PXRoaXMucHJvcHMsbj10Lm9uS2V5RG93blNoaWZ0VGFiLHI9dC5vbktleURvd25UYWIsbz10Lm9uS2V5RG93bkFycm93RG93bixhPXQub25LZXlEb3duUXVlc3Rpb25NYXJrLGk9ZS5rZXk7IlRhYiI9PT1pP2Uuc2hpZnRLZXk/bihlKTpyKGUpOiJBcnJvd0Rvd24iPT09aT9vKGUpOiI/Ij09PWkmJihlLnByZXZlbnREZWZhdWx0KCksYShlKSl9fSx7a2V5OiJzZXRJbnB1dFJlZiIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5pbnB1dFJlZj1lfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUsdD1lLmRhdGVTdHJpbmcsbj1lLmlzVG91Y2hEZXZpY2Uscj10aGlzLnByb3BzLG89ci5pZCxpPXIucGxhY2Vob2xkZXIsdT1yLmRpc3BsYXlWYWx1ZSxjPXIuaW5wdXRWYWx1ZSxmPXIuc2NyZWVuUmVhZGVyTWVzc2FnZSxwPXIuZm9jdXNlZCxoPXIuc2hvd0NhcmV0LHk9ci5vbkZvY3VzLG09ci5kaXNhYmxlZCx2PXIucmVxdWlyZWQsZz1yLnJlYWRPbmx5LGI9ci5vcGVuRGlyZWN0aW9uLHc9dXx8Y3x8dHx8aXx8IiIsXz1jfHx1fHx0fHwiIixFPSJEYXRlSW5wdXRfX3NjcmVlbi1yZWFkZXItbWVzc2FnZS0iK1N0cmluZyhvKTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKCJEYXRlSW5wdXQiLHsiRGF0ZUlucHV0LS13aXRoLWNhcmV0IjpoJiZwLCJEYXRlSW5wdXQtLWRpc2FibGVkIjptLCJEYXRlSW5wdXQtLW9wZW4tZG93biI6Yj09PWQuT1BFTl9ET1dOLCJEYXRlSW5wdXQtLW9wZW4tdXAiOmI9PT1kLk9QRU5fVVB9KX0sYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7ImFyaWEtbGFiZWwiOmksY2xhc3NOYW1lOiJEYXRlSW5wdXRfX2lucHV0IG5lZWRzY2xpY2siLHR5cGU6InRleHQiLGlkOm8sbmFtZTpvLHJlZjp0aGlzLnNldElucHV0UmVmLHZhbHVlOl8sb25DaGFuZ2U6dGhpcy5vbkNoYW5nZSxvbktleURvd246KDAsbC5kZWZhdWx0KSh0aGlzLm9uS2V5RG93biwzMDApLG9uRm9jdXM6eSxwbGFjZWhvbGRlcjppLGF1dG9Db21wbGV0ZToib2ZmIixkaXNhYmxlZDptLHJlYWRPbmx5OiJib29sZWFuIj09dHlwZW9mIGc/ZzpuLHJlcXVpcmVkOnYsImFyaWEtZGVzY3JpYmVkYnkiOmYmJkV9KSxmJiZhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicCIse2lkOkUsY2xhc3NOYW1lOiJzY3JlZW4tcmVhZGVyLW9ubHkifSxmKSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoIkRhdGVJbnB1dF9fZGlzcGxheS10ZXh0Iix7IkRhdGVJbnB1dF9fZGlzcGxheS10ZXh0LS1oYXMtaW5wdXQiOiEhXywiRGF0ZUlucHV0X19kaXNwbGF5LXRleHQtLWZvY3VzZWQiOnAsIkRhdGVJbnB1dF9fZGlzcGxheS10ZXh0LS1kaXNhYmxlZCI6bX0pfSx3KSl9fV0pLHR9KGEuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1tLG0ucHJvcFR5cGVzPWgsbS5kZWZhdWx0UHJvcHM9eX0sOTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJMVEFDIil9fSl9LER6SkM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oInNFZkMiKSxvPW4oIkdveVEiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPSEwLGk9ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3JldHVybiBvKG4pJiYoYT0ibGVhZGluZyJpbiBuPyEhbi5sZWFkaW5nOmEsaT0idHJhaWxpbmciaW4gbj8hIW4udHJhaWxpbmc6aSkscihlLHQse2xlYWRpbmc6YSxtYXhXYWl0OnQsdHJhaWxpbmc6aX0pfX0sRTdVUDpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuRVZFTlRfSEFORExFUlNfS0VZPXZvaWQgMCx0LmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0LG4sYSl7ZVtpXXx8KGVbaV09bmV3IG8uZGVmYXVsdChlKSk7dmFyIHU9KDAsci5kZWZhdWx0KShhKTtyZXR1cm4gZVtpXS5hZGQodCxuLHUpfSx0LnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSl7ZSgpfTt2YXIgcj1hKG4oIllVUWgiKSksbz1hKG4oIlJONkUiKSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGk9dC5FVkVOVF9IQU5ETEVSU19LRVk9Il9fY29uc29saWRhdGVkX2V2ZW50c19oYW5kbGVyc19fIn0sRUhFRTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPS8oW0EtWl0pL2c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UociwiLSQxIikudG9Mb3dlckNhc2UoKX19LEViREk6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9fSwiRXQraSI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbz1uKCJxMXRJIiksYT1pKG8pO2kobigiMTd4OSIpKTtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiB1KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBsPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gdSh0aGlzLHQpLHModGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLHIodCxbe2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcm9wcyE9PWV9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMucHJvcHMsdD1lLmNsYXNzTmFtZXMsbj1lLmZpcnN0RGF5T2ZXZWVrLHI9ZS5zaG93V2Vla051bWJlcnMsbz1lLndlZWtkYXlzTG9uZyxpPWUud2Vla2RheXNTaG9ydCx1PWUubG9jYWxlLHM9ZS5sb2NhbGVVdGlscyxsPWUud2Vla2RheUVsZW1lbnQsYz1bXSxmPTA7Zjw3O2YrPTEpe3ZhciBkPShmK24pJTcscD17a2V5OmYsY2xhc3NOYW1lOnQud2Vla2RheSx3ZWVrZGF5OmQsd2Vla2RheXNMb25nOm8sd2Vla2RheXNTaG9ydDppLGxvY2FsZVV0aWxzOnMsbG9jYWxlOnV9LGg9YS5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KGwpP2EuZGVmYXVsdC5jbG9uZUVsZW1lbnQobCxwKTphLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLHApO2MucHVzaChoKX1yZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0LndlZWtkYXlzLHJvbGU6InJvd2dyb3VwIn0sYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0LndlZWtkYXlzUm93LHJvbGU6InJvdyJ9LHImJmEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6dC53ZWVrZGF5fSksYykpfX1dKSx0fShvLkNvbXBvbmVudCk7dC5kZWZhdWx0PWwsbC5wcm9wVHlwZXM9e319LEV4QTc6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiJvYmplY3QiPT10eXBlb2YgZX19LEV5MEU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJtRnlWIiksbz1udWxsO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIkxUUiI9PT1lfHwiUlRMIj09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4gYShlKXx8cighMSksIkxUUiI9PT1lPyJsdHIiOiJydGwifWZ1bmN0aW9uIHUoZSl7bz1lfXZhciBzPXtORVVUUkFMOiJORVVUUkFMIixMVFI6IkxUUiIsUlRMOiJSVEwiLGlzU3Ryb25nOmEsZ2V0SFRNTERpcjppLGdldEhUTUxEaXJJZkRpZmZlcmVudDpmdW5jdGlvbihlLHQpe3JldHVybiBhKGUpfHxyKCExKSxhKHQpfHxyKCExKSxlPT09dD9udWxsOmkoZSl9LHNldEdsb2JhbERpcjp1LGluaXRHbG9iYWxEaXI6ZnVuY3Rpb24oKXt1KCJMVFIiKX0sZ2V0R2xvYmFsRGlyOmZ1bmN0aW9uKCl7cmV0dXJuIG98fHRoaXMuaW5pdEdsb2JhbERpcigpLG98fHIoITEpLG99fTtlLmV4cG9ydHM9c30sRjA5dzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudDpkb2N1bWVudH19LEY3WlM6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06YS5kZWZhdWx0LmxvY2FsZURhdGEoKS5maXJzdERheU9mV2VlaygpO2lmKCFhLmRlZmF1bHQuaXNNb21lbnQoZSl8fCFlLmlzVmFsaWQoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgbW9udGhgIG11c3QgYmUgYSB2YWxpZCBtb21lbnQgb2JqZWN0Iik7aWYoLTE9PT1pLldFRUtEQVlTLmluZGV4T2YobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYGZpcnN0RGF5T2ZXZWVrYCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA2Iik7Zm9yKHZhciByPWUuY2xvbmUoKS5zdGFydE9mKCJtb250aCIpLmhvdXIoMTIpLG89ZS5jbG9uZSgpLmVuZE9mKCJtb250aCIpLmhvdXIoMTIpLHU9KHIuZGF5KCkrNy1uKSU3LHM9KG4rNi1vLmRheSgpKSU3LGw9ci5jbG9uZSgpLnN1YnRyYWN0KHUsImRheSIpLGM9by5jbG9uZSgpLmFkZChzLCJkYXkiKSxmPWMuZGlmZihsLCJkYXlzIikrMSxkPWwuY2xvbmUoKSxwPVtdLGg9MDtoPGY7aCs9MSl7aCU3PT0wJiZwLnB1c2goW10pO3ZhciB5PW51bGw7KGg+PXUmJmg8Zi1zfHx0KSYmKHk9ZC5jbG9uZSgpKSxwW3AubGVuZ3RoLTFdLnB1c2goeSksZC5hZGQoMSwiZGF5Iil9cmV0dXJuIHB9O3ZhciByLG89bigid2QvUiIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9LGk9bigiNWY3biIpfSxGVUJBOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT1uKCJxMXRJIiksaT1zKGEpLHU9cyhuKCIxN3g5IikpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCx2aXNpYmlsaXR5OiJoaWRkZW4iLGhlaWdodDowLG92ZXJmbG93OiJzY3JvbGwiLHdoaXRlU3BhY2U6InByZSJ9LGM9WyJleHRyYVdpZHRoIiwiaW5qZWN0U3R5bGVzIiwiaW5wdXRDbGFzc05hbWUiLCJpbnB1dFJlZiIsImlucHV0U3R5bGUiLCJtaW5XaWR0aCIsIm9uQXV0b3NpemUiLCJwbGFjZWhvbGRlcklzTWluV2lkdGgiXSxmPWZ1bmN0aW9uKGUsdCl7dC5zdHlsZS5mb250U2l6ZT1lLmZvbnRTaXplLHQuc3R5bGUuZm9udEZhbWlseT1lLmZvbnRGYW1pbHksdC5zdHlsZS5mb250V2VpZ2h0PWUuZm9udFdlaWdodCx0LnN0eWxlLmZvbnRTdHlsZT1lLmZvbnRTdHlsZSx0LnN0eWxlLmxldHRlclNwYWNpbmc9ZS5sZXR0ZXJTcGFjaW5nLHQuc3R5bGUudGV4dFRyYW5zZm9ybT1lLnRleHRUcmFuc2Zvcm19LGQ9ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5uYXZpZ2F0b3IpJiYvTVNJRSB8VHJpZGVudFwvfEVkZ2VcLy8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkscD1mdW5jdGlvbigpe3JldHVybiBkPyJfIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwxMik6dm9pZCAwfSxoPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCk7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gbi5pbnB1dFJlZj1mdW5jdGlvbihlKXtuLmlucHV0PWUsImZ1bmN0aW9uIj09dHlwZW9mIG4ucHJvcHMuaW5wdXRSZWYmJm4ucHJvcHMuaW5wdXRSZWYoZSl9LG4ucGxhY2VIb2xkZXJTaXplclJlZj1mdW5jdGlvbihlKXtuLnBsYWNlSG9sZGVyU2l6ZXI9ZX0sbi5zaXplclJlZj1mdW5jdGlvbihlKXtuLnNpemVyPWV9LG4uc3RhdGU9e2lucHV0V2lkdGg6ZS5taW5XaWR0aCxpbnB1dElkOmUuaWR8fHAoKX0sbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG8odCxbe2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSEwLHRoaXMuY29weUlucHV0U3R5bGVzKCksdGhpcy51cGRhdGVJbnB1dFdpZHRoKCl9fSx7a2V5OiJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDt0IT09dGhpcy5wcm9wcy5pZCYmdGhpcy5zZXRTdGF0ZSh7aW5wdXRJZDp0fHxwKCl9KX19LHtrZXk6ImNvbXBvbmVudERpZFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0LmlucHV0V2lkdGghPT10aGlzLnN0YXRlLmlucHV0V2lkdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnByb3BzLm9uQXV0b3NpemUmJnRoaXMucHJvcHMub25BdXRvc2l6ZSh0aGlzLnN0YXRlLmlucHV0V2lkdGgpLHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpfX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExfX0se2tleToiY29weUlucHV0U3R5bGVzIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMubW91bnRlZCYmd2luZG93LmdldENvbXB1dGVkU3R5bGUpe3ZhciBlPXRoaXMuaW5wdXQmJndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuaW5wdXQpO2UmJihmKGUsdGhpcy5zaXplciksdGhpcy5wbGFjZUhvbGRlclNpemVyJiZmKGUsdGhpcy5wbGFjZUhvbGRlclNpemVyKSl9fX0se2tleToidXBkYXRlSW5wdXRXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLm1vdW50ZWQmJnRoaXMuc2l6ZXImJnZvaWQgMCE9PXRoaXMuc2l6ZXIuc2Nyb2xsV2lkdGgpe3ZhciBlPXZvaWQgMDtlPXRoaXMucHJvcHMucGxhY2Vob2xkZXImJighdGhpcy5wcm9wcy52YWx1ZXx8dGhpcy5wcm9wcy52YWx1ZSYmdGhpcy5wcm9wcy5wbGFjZWhvbGRlcklzTWluV2lkdGgpP01hdGgubWF4KHRoaXMuc2l6ZXIuc2Nyb2xsV2lkdGgsdGhpcy5wbGFjZUhvbGRlclNpemVyLnNjcm9sbFdpZHRoKSsyOnRoaXMuc2l6ZXIuc2Nyb2xsV2lkdGgrMiwoZSs9Im51bWJlciI9PT10aGlzLnByb3BzLnR5cGUmJnZvaWQgMD09PXRoaXMucHJvcHMuZXh0cmFXaWR0aD8xNjpwYXJzZUludCh0aGlzLnByb3BzLmV4dHJhV2lkdGgpfHwwKTx0aGlzLnByb3BzLm1pbldpZHRoJiYoZT10aGlzLnByb3BzLm1pbldpZHRoKSxlIT09dGhpcy5zdGF0ZS5pbnB1dFdpZHRoJiZ0aGlzLnNldFN0YXRlKHtpbnB1dFdpZHRoOmV9KX19fSx7a2V5OiJnZXRJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dH19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5wdXQuZm9jdXMoKX19LHtrZXk6ImJsdXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbnB1dC5ibHVyKCl9fSx7a2V5OiJzZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbnB1dC5zZWxlY3QoKX19LHtrZXk6InJlbmRlclN0eWxlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmluamVjdFN0eWxlcztyZXR1cm4gZCYmZT9pLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3R5bGUiLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOiJpbnB1dCMiK3RoaXMuc3RhdGUuaW5wdXRJZCsiOjotbXMtY2xlYXIge2Rpc3BsYXk6IG5vbmU7fSJ9fSk6bnVsbH19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1bdGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUsdGhpcy5wcm9wcy52YWx1ZSwiIl0ucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lP2U6dH0pKSx0PXIoe30sdGhpcy5wcm9wcy5zdHlsZSk7dC5kaXNwbGF5fHwodC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKTt2YXIgbj1yKHtib3hTaXppbmc6ImNvbnRlbnQtYm94Iix3aWR0aDp0aGlzLnN0YXRlLmlucHV0V2lkdGgrInB4In0sdGhpcy5wcm9wcy5pbnB1dFN0eWxlKSxvPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KHRoaXMucHJvcHMsW10pO3JldHVybiBmdW5jdGlvbihlKXtjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgZVt0XX0pKX0obyksby5jbGFzc05hbWU9dGhpcy5wcm9wcy5pbnB1dENsYXNzTmFtZSxvLmlkPXRoaXMuc3RhdGUuaW5wdXRJZCxvLnN0eWxlPW4saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0aGlzLnByb3BzLmNsYXNzTmFtZSxzdHlsZTp0fSx0aGlzLnJlbmRlclN0eWxlcygpLGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIscih7fSxvLHtyZWY6dGhpcy5pbnB1dFJlZn0pKSxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7cmVmOnRoaXMuc2l6ZXJSZWYsc3R5bGU6bH0sZSksdGhpcy5wcm9wcy5wbGFjZWhvbGRlcj9pLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7cmVmOnRoaXMucGxhY2VIb2xkZXJTaXplclJlZixzdHlsZTpsfSx0aGlzLnByb3BzLnBsYWNlaG9sZGVyKTpudWxsKX19XSksdH0oYS5Db21wb25lbnQpO2gucHJvcFR5cGVzPXtjbGFzc05hbWU6dS5kZWZhdWx0LnN0cmluZyxkZWZhdWx0VmFsdWU6dS5kZWZhdWx0LmFueSxleHRyYVdpZHRoOnUuZGVmYXVsdC5vbmVPZlR5cGUoW3UuZGVmYXVsdC5udW1iZXIsdS5kZWZhdWx0LnN0cmluZ10pLGlkOnUuZGVmYXVsdC5zdHJpbmcsaW5qZWN0U3R5bGVzOnUuZGVmYXVsdC5ib29sLGlucHV0Q2xhc3NOYW1lOnUuZGVmYXVsdC5zdHJpbmcsaW5wdXRSZWY6dS5kZWZhdWx0LmZ1bmMsaW5wdXRTdHlsZTp1LmRlZmF1bHQub2JqZWN0LG1pbldpZHRoOnUuZGVmYXVsdC5vbmVPZlR5cGUoW3UuZGVmYXVsdC5udW1iZXIsdS5kZWZhdWx0LnN0cmluZ10pLG9uQXV0b3NpemU6dS5kZWZhdWx0LmZ1bmMsb25DaGFuZ2U6dS5kZWZhdWx0LmZ1bmMscGxhY2Vob2xkZXI6dS5kZWZhdWx0LnN0cmluZyxwbGFjZWhvbGRlcklzTWluV2lkdGg6dS5kZWZhdWx0LmJvb2wsc3R5bGU6dS5kZWZhdWx0Lm9iamVjdCx2YWx1ZTp1LmRlZmF1bHQuYW55fSxoLmRlZmF1bHRQcm9wcz17bWluV2lkdGg6MSxpbmplY3RTdHlsZXM6ITB9LHQuZGVmYXVsdD1ofSxGY09SOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtsb2dCbG9ja2VkU2VsZWN0aW9uRXZlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbG9nU2VsZWN0aW9uU3RhdGVGYWlsdXJlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX0sRm9abTpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpe3QuSW50bFBvbHlmaWxsPW4oImZMMHIiKSxuKDIpLHQuSW50bHx8KHQuSW50bD10LkludGxQb2x5ZmlsbCx0LkludGxQb2x5ZmlsbC5fX2FwcGx5TG9jYWxlU2Vuc2l0aXZlUHJvdG90eXBlcygpKSxlLmV4cG9ydHM9dC5JbnRsUG9seWZpbGx9KS5jYWxsKHRoaXMsbigieUxwaiIpKX0sRnBaSjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBTeW1ib2x8fCJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVybiExO2lmKCJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yKXJldHVybiEwO3ZhciBlPXt9LHQ9U3ltYm9sKCJ0ZXN0Iiksbj1PYmplY3QodCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiExO2lmKCJbb2JqZWN0IFN5bWJvbF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXJldHVybiExO2lmKCJbb2JqZWN0IFN5bWJvbF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pKXJldHVybiExO2Zvcih0IGluIGVbdF09NDIsZSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmtleXMmJjAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzJiYwIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkubGVuZ3RoKXJldHVybiExO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7aWYoMSE9PXIubGVuZ3RofHxyWzBdIT09dClyZXR1cm4hMTtpZighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsdCkpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ipe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTtpZig0MiE9PW8udmFsdWV8fCEwIT09by5lbnVtZXJhYmxlKXJldHVybiExfXJldHVybiEwfX0sRnVmTzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjFzZVMiKSxvPW4oIkQzekEiKSxhPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lfSxpPW4oIkZwWkoiKSgpLHU9T2JqZWN0LHM9by5jYWxsKEZ1bmN0aW9uLmNhbGwsQXJyYXkucHJvdG90eXBlLnB1c2gpLGw9by5jYWxsKEZ1bmN0aW9uLmNhbGwsT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSksYz1pP09iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM6bnVsbDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighYShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTt2YXIgbixvLGYsZCxwLGgseSxtPXUoZSk7Zm9yKG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKXtvPXUoYXJndW1lbnRzW25dKSxkPXIobyk7dmFyIHY9aSYmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN8fGMpO2lmKHYpZm9yKHA9dihvKSxmPTA7ZjxwLmxlbmd0aDsrK2YpeT1wW2ZdLGwobyx5KSYmcyhkLHkpO2ZvcihmPTA7ZjxkLmxlbmd0aDsrK2YpaD1vW3k9ZFtmXV0sbChvLHkpJiYobVt5XT1oKX1yZXR1cm4gbX19LEdNSW06ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJHeU9mIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLm93bmVyRG9jdW1lbnQpJiYocihlKSYmIklNRyI9PT1lLm5vZGVOYW1lKX19LEdRNlA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJtRnlWIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYoQXJyYXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX0oZSk/QXJyYXkuaXNBcnJheShlKT9lLnNsaWNlKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoKEFycmF5LmlzQXJyYXkoZSl8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpJiZyKCExKSwibnVtYmVyIiE9dHlwZW9mIHQmJnIoITEpLDA9PT10fHx0LTEgaW4gZXx8cighMSksImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlJiZyKCExKSxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2goZSl7fWZvcih2YXIgbj1BcnJheSh0KSxvPTA7bzx0O28rKyluW29dPWVbb107cmV0dXJuIG59KGUpOltlXX19LEdYYms6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJEaDNIIiksbz1uKCJubk9BIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXIoZS5vd25lckRvY3VtZW50fHxlLmRvY3VtZW50KTtlLldpbmRvdyYmZSBpbnN0YW5jZW9mIGUuV2luZG93JiYoZT10KTt2YXIgbj1vKGUpLGE9ZT09PXQ/ZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDplLGk9ZS5zY3JvbGxXaWR0aC1hLmNsaWVudFdpZHRoLHU9ZS5zY3JvbGxIZWlnaHQtYS5jbGllbnRIZWlnaHQ7cmV0dXJuIG4ueD1NYXRoLm1heCgwLE1hdGgubWluKG4ueCxpKSksbi55PU1hdGgubWF4KDAsTWF0aC5taW4obi55LHUpKSxufX0sR241RDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bm90RW1wdHlLZXk6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiIiIT1lfX19LEdveVE6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIG51bGwhPWUmJigib2JqZWN0Ij09dHx8ImZ1bmN0aW9uIj09dCl9fSxHcjdTOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjt3aW5kb3csZS5leHBvcnRzPShyPW4oIkx2RGwiKSxmdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ucj1mdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxuLnQ9ZnVuY3Rpb24oZSx0KXtpZigxJnQmJihlPW4oZSkpLDgmdClyZXR1cm4gZTtpZig0JnQmJiJvYmplY3QiPT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSksMiZ0JiYic3RyaW5nIiE9dHlwZW9mIGUpZm9yKHZhciBvIGluIGUpbi5kKHIsbyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0uYmluZChudWxsLG8pKTtyZXR1cm4gcn0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9IiIsbihuLnM9MSl9KFtmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24ucih0KSxuLmQodCwiREVGQVVMVF9MT0NBTEUiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZCh0LCJkZWZhdWx0IiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQodCwiZm9ybWF0TWVzc2FnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSksbi5kKHQsImdldEN1cnJlbnRMb2NhbGUiLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZCh0LCJyZWdpc3RlclRyYW5zbGF0aW9ucyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSksbi5kKHQsImNvbmZpZ3VyZUxvY2FsaXphdGlvbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIHI9bigwKTtmdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1jb25zdCBhPSJlbiI7Y2xhc3MgaXtjb25zdHJ1Y3RvcihlKXtvKHRoaXMsImdldE5ldXRyYWxMb2NhbGUiLGU9Pntjb25zdFt0XT1lLnNwbGl0KCJfIik7cmV0dXJuIHR9KSx0aGlzLmNvbmZpZ3VyZShlKSx0aGlzLl9hbGxUcmFuc2xhdGlvbnM9e30sdGhpcy5fY3VycmVudExvY2FsZT10aGlzLl9kZWZhdWx0TG9jYWxlLHRoaXMuX2N1cnJlbnRUcmFuc2xhdGlvbnM9e319Z2V0Q3VycmVudExvY2FsZSgpe3JldHVybiB0aGlzLl9jdXJyZW50TG9jYWxlfW1hcFRvS25vd25Mb2NhbGUoZSl7aWYoZSl7aWYodGhpcy5fYWxsVHJhbnNsYXRpb25zW2VdKXJldHVybiBlO2NvbnN0IHQ9dGhpcy5nZXROZXV0cmFsTG9jYWxlKGUpO2lmKHRoaXMuX2FsbFRyYW5zbGF0aW9uc1t0XSlyZXR1cm4gdH1yZXR1cm4gdGhpcy5fZGVmYXVsdExvY2FsZX1zZXRDdXJyZW50TG9jYWxlKGUpe3RoaXMuX2N1cnJlbnRMb2NhbGU9dGhpcy5tYXBUb0tub3duTG9jYWxlKGUpO2NvbnN0IHQ9dGhpcy5fYWxsVHJhbnNsYXRpb25zW3RoaXMuX2RlZmF1bHRMb2NhbGVdO2lmKCF0KXRocm93IG5ldyBFcnJvcihgTm8gdHJhbnNsYXRpb25zIGFyZSByZWdpc3RlcmVkIGZvciB0aGUgZGVmYXVsdCBsYW5ndWFnZTogIiR7dGhpcy5fZGVmYXVsdExvY2FsZX0iLmApO2lmKHRoaXMuX2N1cnJlbnRMb2NhbGU9PT10aGlzLl9kZWZhdWx0TG9jYWxlKXRoaXMuX2N1cnJlbnRUcmFuc2xhdGlvbnM9dDtlbHNle2NvbnN0IGU9dGhpcy5fYWxsVHJhbnNsYXRpb25zW3RoaXMuX2N1cnJlbnRMb2NhbGVdO3RoaXMuX2N1cnJlbnRUcmFuc2xhdGlvbnM9T2JqZWN0KHIubWVyZ2UpKHt9LHQsZSl9fXJlZ2lzdGVyVHJhbnNsYXRpb25zKGUsdD13aW5kb3cuT1JDSEFSRF9MT0NBTEUpe3RoaXMuX2FsbFRyYW5zbGF0aW9ucz1lP2UuZGVmYXVsdHx8ZTp7fSx0aGlzLnNldEN1cnJlbnRMb2NhbGUodCl9Zm9ybWF0TWVzc2FnZShlLHQpe2lmKCFlKXJldHVybiIiO2NvbnN0IG49ZS5kZWZhdWx0TWVzc2FnZXx8ZTtsZXQgbz1PYmplY3Qoci5nZXQpKHRoaXMuX2N1cnJlbnRUcmFuc2xhdGlvbnMsdGhpcy5fZGVmYXVsdE5hbWVzcGFjZT9gJHt0aGlzLl9kZWZhdWx0TmFtZXNwYWNlfS4ke259YDpuKTtpZih2b2lkIDA9PT1vJiZ0aGlzLl9kZWZhdWx0TmFtZXNwYWNlJiYobz1PYmplY3Qoci5nZXQpKHRoaXMuX2N1cnJlbnRUcmFuc2xhdGlvbnMsbikpLHZvaWQgMD09PW8mJihvPW4pLG8ub25lJiZvLm90aGVyKXtjb25zdHtjb3VudDplPTB9PXR8fHt9O289MT09PWU/by5vbmU6by5vdGhlcn1yZXR1cm4gdD9PYmplY3Qua2V5cyh0KS5yZWR1Y2UoKGUsbik9PmUuc3BsaXQoYCR7dGhpcy5fYXJnU3RhcnRUb2tlbn0ke259JHt0aGlzLl9hcmdFbmRUb2tlbn1gKS5qb2luKHRbbl0pLG8pOm99Y29uZmlndXJlKGU9e30pe2NvbnN0e2RlZmF1bHRMb2NhbGU6dD1hLGFyZ1N0YXJ0VG9rZW46bj0ieyIsYXJnRW5kVG9rZW46cj0ifSIsZGVmYXVsdE5hbWVzcGFjZTpvfT1lO3RoaXMuX2RlZmF1bHRMb2NhbGU9dCx0aGlzLl9hcmdTdGFydFRva2VuPW4sdGhpcy5fYXJnRW5kVG9rZW49cix0aGlzLl9kZWZhdWx0TmFtZXNwYWNlPW99fW8oaSwiaW5zdGFuY2UiLG5ldyBpKTtjb25zdCB1PShlLHQpPT5pLmluc3RhbmNlLmZvcm1hdE1lc3NhZ2UoZSx0KSxzPSgpPT5pLmluc3RhbmNlLmdldEN1cnJlbnRMb2NhbGUoKSxsPShlLHQpPT5pLmluc3RhbmNlLnJlZ2lzdGVyVHJhbnNsYXRpb25zKGUsdCksYz1lPT5pLmluc3RhbmNlLmNvbmZpZ3VyZShlKX1dKSl9LEd5T2Y6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUub3duZXJEb2N1bWVudCkmJmUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX19LEgwQUQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPW4oInExdEkiKSxpPWMoYSksdT1jKG4oIjE3eDkiKSkscz1jKG4oImpNWWEiKSksbD1jKG4oIllBVjIiKSk7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGY9e2F1dG9sb2FkOnUuZGVmYXVsdC5ib29sLmlzUmVxdWlyZWQsY2FjaGU6dS5kZWZhdWx0LmFueSxjaGlsZHJlbjp1LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLGlnbm9yZUFjY2VudHM6dS5kZWZhdWx0LmJvb2wsaWdub3JlQ2FzZTp1LmRlZmF1bHQuYm9vbCxsb2FkT3B0aW9uczp1LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLGxvYWRpbmdQbGFjZWhvbGRlcjp1LmRlZmF1bHQub25lT2ZUeXBlKFt1LmRlZmF1bHQuc3RyaW5nLHUuZGVmYXVsdC5ub2RlXSksbXVsdGk6dS5kZWZhdWx0LmJvb2wsbm9SZXN1bHRzVGV4dDp1LmRlZmF1bHQub25lT2ZUeXBlKFt1LmRlZmF1bHQuc3RyaW5nLHUuZGVmYXVsdC5ub2RlXSksb25DaGFuZ2U6dS5kZWZhdWx0LmZ1bmMsb25JbnB1dENoYW5nZTp1LmRlZmF1bHQuZnVuYyxvcHRpb25zOnUuZGVmYXVsdC5hcnJheS5pc1JlcXVpcmVkLHBsYWNlaG9sZGVyOnUuZGVmYXVsdC5vbmVPZlR5cGUoW3UuZGVmYXVsdC5zdHJpbmcsdS5kZWZhdWx0Lm5vZGVdKSxzZWFyY2hQcm9tcHRUZXh0OnUuZGVmYXVsdC5vbmVPZlR5cGUoW3UuZGVmYXVsdC5zdHJpbmcsdS5kZWZhdWx0Lm5vZGVdKSx2YWx1ZTp1LmRlZmF1bHQuYW55fSxkPXt9LHA9e2F1dG9sb2FkOiEwLGNhY2hlOmQsY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHMuZGVmYXVsdCxlKX0saWdub3JlQWNjZW50czohMCxpZ25vcmVDYXNlOiEwLGxvYWRpbmdQbGFjZWhvbGRlcjoiTG9hZGluZy4uLiIsb3B0aW9uczpbXSxzZWFyY2hQcm9tcHRUZXh0OiJUeXBlIHRvIHNlYXJjaCJ9LGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4peyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciByPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlLG4pKTtyZXR1cm4gci5fY2FjaGU9ZS5jYWNoZT09PWQ/e306ZS5jYWNoZSxyLnN0YXRlPXtpbnB1dFZhbHVlOiIiLGlzTG9hZGluZzohMSxvcHRpb25zOmUub3B0aW9uc30sci5vbklucHV0Q2hhbmdlPXIub25JbnB1dENoYW5nZS5iaW5kKHIpLHJ9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMuYXV0b2xvYWQmJnRoaXMubG9hZE9wdGlvbnMoIiIpfX0se2tleToiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5vcHRpb25zIT09dGhpcy5wcm9wcy5vcHRpb25zJiZ0aGlzLnNldFN0YXRlKHtvcHRpb25zOmUub3B0aW9uc30pfX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbGJhY2s9bnVsbH19LHtrZXk6ImxvYWRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcy5sb2FkT3B0aW9ucyxyPXRoaXMuX2NhY2hlO2lmKHImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLGUpKXRoaXMuc2V0U3RhdGUoe29wdGlvbnM6cltlXX0pO2Vsc2V7dmFyIG89ZnVuY3Rpb24gbihvLGEpe2lmKG49PT10Ll9jYWxsYmFjayl7dC5fY2FsbGJhY2s9bnVsbDt2YXIgaT1hJiZhLm9wdGlvbnN8fFtdO3ImJihyW2VdPWkpLHQuc2V0U3RhdGUoe2lzTG9hZGluZzohMSxvcHRpb25zOml9KX19O3RoaXMuX2NhbGxiYWNrPW87dmFyIGE9bihlLG8pO2EmJmEudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIG8oMCxlKX0pLChmdW5jdGlvbihlKXtyZXR1cm4gbygpfSkpLHRoaXMuX2NhbGxiYWNrJiYhdGhpcy5zdGF0ZS5pc0xvYWRpbmcmJnRoaXMuc2V0U3RhdGUoe2lzTG9hZGluZzohMH0pfX19LHtrZXk6Im9uSW5wdXRDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10Lmlnbm9yZUFjY2VudHMscj10Lmlnbm9yZUNhc2Usbz10Lm9uSW5wdXRDaGFuZ2UsYT1lO3JldHVybiBuJiYoYT0oMCxsLmRlZmF1bHQpKGEpKSxyJiYoYT1hLnRvTG93ZXJDYXNlKCkpLG8mJm8oYSksdGhpcy5zZXRTdGF0ZSh7aW5wdXRWYWx1ZTplfSksdGhpcy5sb2FkT3B0aW9ucyhhKSxlfX0se2tleToibm9SZXN1bHRzVGV4dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5sb2FkaW5nUGxhY2Vob2xkZXIsbj1lLm5vUmVzdWx0c1RleHQscj1lLnNlYXJjaFByb21wdFRleHQsbz10aGlzLnN0YXRlLGE9by5pbnB1dFZhbHVlO3JldHVybiBvLmlzTG9hZGluZz90OmEmJm4/bjpyfX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3QuZm9jdXMoKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuY2hpbGRyZW4sbz10LmxvYWRpbmdQbGFjZWhvbGRlcixhPSh0Lm11bHRpLHQub25DaGFuZ2UsdC5wbGFjZWhvbGRlciksaT0odC52YWx1ZSx0aGlzLnN0YXRlKSx1PWkuaXNMb2FkaW5nLHM9aS5vcHRpb25zLGw9e25vUmVzdWx0c1RleHQ6dGhpcy5ub1Jlc3VsdHNUZXh0KCkscGxhY2Vob2xkZXI6dT9vOmEsb3B0aW9uczp1JiZvP1tdOnMscmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLnNlbGVjdD10fX07cmV0dXJuIG4ocih7fSx0aGlzLnByb3BzLGwse2lzTG9hZGluZzp1LG9uSW5wdXRDaGFuZ2U6dGhpcy5vbklucHV0Q2hhbmdlfSkpfX1dKSx0fShhLkNvbXBvbmVudCk7dC5kZWZhdWx0PWgsaC5wcm9wVHlwZXM9ZixoLmRlZmF1bHRQcm9wcz1wfSxIRUJZOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiM3NPSiIpLG89bigiSGV6SSIpLGE9bigiSVNlZSIpLGk9bigia1dqVCIpLHU9bigiOGQvLyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXUoZSwoZnVuY3Rpb24oZSl7dmFyIG49ZS5nZXRTZWxlY3Rpb24oKTtpZihuLmlzQ29sbGFwc2VkKCkmJjA9PT1uLmdldEFuY2hvck9mZnNldCgpKXJldHVybiBpKGUsMSk7dmFyIHI9dC5jdXJyZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKTtyZXR1cm4gcj1vKHIpLGEoZSxudWxsLHIuZW5kQ29udGFpbmVyLHIuZW5kT2Zmc2V0LHIuc3RhcnRDb250YWluZXIsci5zdGFydE9mZnNldCkuc2VsZWN0aW9uU3RhdGV9KSwiYmFja3dhcmQiKTtyZXR1cm4gbj09PWUuZ2V0Q3VycmVudENvbnRlbnQoKT9lOnIucHVzaChlLG4sInJlbW92ZS1yYW5nZSIpfX0sSEtTNTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj1uKCJtRnlWIiksbz0vXC50ZXh0Q2xpcHBpbmckLyxhPXsidGV4dC9wbGFpbiI6ITAsInRleHQvaHRtbCI6ITAsInRleHQvcnRmIjohMH07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7dmFyIGk9MCx1PVtdO2UuZm9yRWFjaCgoZnVuY3Rpb24ocyl7IWZ1bmN0aW9uKGUsbil7aWYoIXQuRmlsZVJlYWRlcnx8ZS50eXBlJiYhKGUudHlwZSBpbiBhKSlyZXR1cm4gdm9pZCBuKCIiKTtpZigiIj09PWUudHlwZSl7dmFyIGk9IiI7cmV0dXJuIG8udGVzdChlLm5hbWUpJiYoaT1lLm5hbWUucmVwbGFjZShvLCIiKSksdm9pZCBuKGkpfXZhciB1PW5ldyBGaWxlUmVhZGVyO3Uub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9dS5yZXN1bHQ7InN0cmluZyIhPXR5cGVvZiBlJiZyKCExKSxuKGUpfSx1Lm9uZXJyb3I9ZnVuY3Rpb24oKXtuKCIiKX0sdS5yZWFkQXNUZXh0KGUpfShzLChmdW5jdGlvbih0KXtpKyssdCYmdS5wdXNoKHQuc2xpY2UoMCw1ZTMpKSxpPT1lLmxlbmd0aCYmbih1LmpvaW4oIlxyIikpfSkpfSkpfX0pLmNhbGwodGhpcyxuKCJ5THBqIikpfSxIS2ptOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPW4oIjJVRDQiKSxvPW4oImpCWUIiKSxhPW4oIm9iRFUiKTt0LmRlZmF1bHQ9czt2YXIgaT1bInNlY29uZCIsInNlY29uZC1zaG9ydCIsIm1pbnV0ZSIsIm1pbnV0ZS1zaG9ydCIsImhvdXIiLCJob3VyLXNob3J0IiwiZGF5IiwiZGF5LXNob3J0IiwibW9udGgiLCJtb250aC1zaG9ydCIsInllYXIiLCJ5ZWFyLXNob3J0Il0sdT1bImJlc3QgZml0IiwibnVtZXJpYyJdO2Z1bmN0aW9uIHMoZSx0KXt0PXR8fHt9LGEuaXNBcnJheShlKSYmKGU9ZS5jb25jYXQoKSksYS5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfbG9jYWxlIix7dmFsdWU6dGhpcy5fcmVzb2x2ZUxvY2FsZShlKX0pLGEuZGVmaW5lUHJvcGVydHkodGhpcywiX29wdGlvbnMiLHt2YWx1ZTp7c3R5bGU6dGhpcy5fcmVzb2x2ZVN0eWxlKHQuc3R5bGUpLHVuaXRzOnRoaXMuX2lzVmFsaWRVbml0cyh0LnVuaXRzKSYmdC51bml0c319KSxhLmRlZmluZVByb3BlcnR5KHRoaXMsIl9sb2NhbGVzIix7dmFsdWU6ZX0pLGEuZGVmaW5lUHJvcGVydHkodGhpcywiX2ZpZWxkcyIse3ZhbHVlOnRoaXMuX2ZpbmRGaWVsZHModGhpcy5fbG9jYWxlKX0pLGEuZGVmaW5lUHJvcGVydHkodGhpcywiX21lc3NhZ2VzIix7dmFsdWU6YS5vYmpDcmVhdGUobnVsbCl9KTt2YXIgbj10aGlzO3RoaXMuZm9ybWF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uX2Zvcm1hdChlLHQpfX1hLmRlZmluZVByb3BlcnR5KHMsIl9fbG9jYWxlRGF0YV9fIix7dmFsdWU6YS5vYmpDcmVhdGUobnVsbCl9KSxhLmRlZmluZVByb3BlcnR5KHMsIl9fYWRkTG9jYWxlRGF0YSIse3ZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHQ9YXJndW1lbnRzW2VdO2lmKCF0fHwhdC5sb2NhbGUpdGhyb3cgbmV3IEVycm9yKCJMb2NhbGUgZGF0YSBwcm92aWRlZCB0byBJbnRsUmVsYXRpdmVGb3JtYXQgaXMgbWlzc2luZyBhIGBsb2NhbGVgIHByb3BlcnR5IHZhbHVlIik7cy5fX2xvY2FsZURhdGFfX1t0LmxvY2FsZS50b0xvd2VyQ2FzZSgpXT10LHIuZGVmYXVsdC5fX2FkZExvY2FsZURhdGEodCl9fX0pLGEuZGVmaW5lUHJvcGVydHkocywiZGVmYXVsdExvY2FsZSIse2VudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksYS5kZWZpbmVQcm9wZXJ0eShzLCJ0aHJlc2hvbGRzIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp7c2Vjb25kOjQ1LCJzZWNvbmQtc2hvcnQiOjQ1LG1pbnV0ZTo0NSwibWludXRlLXNob3J0Ijo0NSxob3VyOjIyLCJob3VyLXNob3J0IjoyMixkYXk6MjYsImRheS1zaG9ydCI6MjYsbW9udGg6MTEsIm1vbnRoLXNob3J0IjoxMX19KSxzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm57bG9jYWxlOnRoaXMuX2xvY2FsZSxzdHlsZTp0aGlzLl9vcHRpb25zLnN0eWxlLHVuaXRzOnRoaXMuX29wdGlvbnMudW5pdHN9fSxzLnByb3RvdHlwZS5fY29tcGlsZU1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLl9sb2NhbGVzLG89KHRoaXMuX2xvY2FsZSx0aGlzLl9maWVsZHNbZV0ucmVsYXRpdmVUaW1lKSxhPSIiLGk9IiI7Zm9yKHQgaW4gby5mdXR1cmUpby5mdXR1cmUuaGFzT3duUHJvcGVydHkodCkmJihhKz0iICIrdCsiIHsiK28uZnV0dXJlW3RdLnJlcGxhY2UoInswfSIsIiMiKSsifSIpO2Zvcih0IGluIG8ucGFzdClvLnBhc3QuaGFzT3duUHJvcGVydHkodCkmJihpKz0iICIrdCsiIHsiK28ucGFzdFt0XS5yZXBsYWNlKCJ7MH0iLCIjIikrIn0iKTt2YXIgdT0ie3doZW4sIHNlbGVjdCwgZnV0dXJlIHt7MCwgcGx1cmFsLCAiK2ErIn19cGFzdCB7ezAsIHBsdXJhbCwgIitpKyJ9fX0iO3JldHVybiBuZXcgci5kZWZhdWx0KHUsbil9LHMucHJvdG90eXBlLl9nZXRNZXNzYWdlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21lc3NhZ2VzO3JldHVybiB0W2VdfHwodFtlXT10aGlzLl9jb21waWxlTWVzc2FnZShlKSksdFtlXX0scy5wcm90b3R5cGUuX2dldFJlbGF0aXZlVW5pdHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9maWVsZHNbdF07aWYobi5yZWxhdGl2ZSlyZXR1cm4gbi5yZWxhdGl2ZVtlXX0scy5wcm90b3R5cGUuX2ZpbmRGaWVsZHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXMuX19sb2NhbGVEYXRhX18sbj10W2UudG9Mb3dlckNhc2UoKV07bjspe2lmKG4uZmllbGRzKXJldHVybiBuLmZpZWxkcztuPW4ucGFyZW50TG9jYWxlJiZ0W24ucGFyZW50TG9jYWxlLnRvTG93ZXJDYXNlKCldfXRocm93IG5ldyBFcnJvcigiTG9jYWxlIGRhdGEgYWRkZWQgdG8gSW50bFJlbGF0aXZlRm9ybWF0IGlzIG1pc3NpbmcgYGZpZWxkc2AgZm9yIDoiK2UpfSxzLnByb3RvdHlwZS5fZm9ybWF0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dCYmdm9pZCAwIT09dC5ub3c/dC5ub3c6YS5kYXRlTm93KCk7aWYodm9pZCAwPT09ZSYmKGU9biksIWlzRmluaXRlKG4pKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgYG5vd2Agb3B0aW9uIHByb3ZpZGVkIHRvIEludGxSZWxhdGl2ZUZvcm1hdCNmb3JtYXQoKSBpcyBub3QgaW4gdmFsaWQgcmFuZ2UuIik7aWYoIWlzRmluaXRlKGUpKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgZGF0ZSB2YWx1ZSBwcm92aWRlZCB0byBJbnRsUmVsYXRpdmVGb3JtYXQjZm9ybWF0KCkgaXMgbm90IGluIHZhbGlkIHJhbmdlLiIpO3ZhciByPW8uZGVmYXVsdChuLGUpLGk9dGhpcy5fb3B0aW9ucy51bml0c3x8dGhpcy5fc2VsZWN0VW5pdHMociksdT1yW2ldO2lmKCJudW1lcmljIiE9PXRoaXMuX29wdGlvbnMuc3R5bGUpe3ZhciBzPXRoaXMuX2dldFJlbGF0aXZlVW5pdHModSxpKTtpZihzKXJldHVybiBzfXJldHVybiB0aGlzLl9nZXRNZXNzYWdlKGkpLmZvcm1hdCh7MDpNYXRoLmFicyh1KSx3aGVuOnU8MD8icGFzdCI6ImZ1dHVyZSJ9KX0scy5wcm90b3R5cGUuX2lzVmFsaWRVbml0cz1mdW5jdGlvbihlKXtpZighZXx8YS5hcnJJbmRleE9mLmNhbGwoaSxlKT49MClyZXR1cm4hMDtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciB0PS9zJC8udGVzdChlKSYmZS5zdWJzdHIoMCxlLmxlbmd0aC0xKTtpZih0JiZhLmFyckluZGV4T2YuY2FsbChpLHQpPj0wKXRocm93IG5ldyBFcnJvcignIicrZSsnIiBpcyBub3QgYSB2YWxpZCBJbnRsUmVsYXRpdmVGb3JtYXQgYHVuaXRzYCB2YWx1ZSwgZGlkIHlvdSBtZWFuOiAnK3QpfXRocm93IG5ldyBFcnJvcignIicrZSsnIiBpcyBub3QgYSB2YWxpZCBJbnRsUmVsYXRpdmVGb3JtYXQgYHVuaXRzYCB2YWx1ZSwgaXQgbXVzdCBiZSBvbmUgb2Y6ICInK2kuam9pbignIiwgIicpKyciJyl9LHMucHJvdG90eXBlLl9yZXNvbHZlTG9jYWxlPWZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9W2VdKSxlPShlfHxbXSkuY29uY2F0KHMuZGVmYXVsdExvY2FsZSk7dmFyIHQsbixyLG8sYT1zLl9fbG9jYWxlRGF0YV9fO2Zvcih0PTAsbj1lLmxlbmd0aDt0PG47dCs9MSlmb3Iocj1lW3RdLnRvTG93ZXJDYXNlKCkuc3BsaXQoIi0iKTtyLmxlbmd0aDspe2lmKG89YVtyLmpvaW4oIi0iKV0pcmV0dXJuIG8ubG9jYWxlO3IucG9wKCl9dmFyIGk9ZS5wb3AoKTt0aHJvdyBuZXcgRXJyb3IoIk5vIGxvY2FsZSBkYXRhIGhhcyBiZWVuIGFkZGVkIHRvIEludGxSZWxhdGl2ZUZvcm1hdCBmb3I6ICIrZS5qb2luKCIsICIpKyIsIG9yIHRoZSBkZWZhdWx0IGxvY2FsZTogIitpKX0scy5wcm90b3R5cGUuX3Jlc29sdmVTdHlsZT1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdVswXTtpZihhLmFyckluZGV4T2YuY2FsbCh1LGUpPj0wKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcignIicrZSsnIiBpcyBub3QgYSB2YWxpZCBJbnRsUmVsYXRpdmVGb3JtYXQgYHN0eWxlYCB2YWx1ZSwgaXQgbXVzdCBiZSBvbmUgb2Y6ICInK3Uuam9pbignIiwgIicpKyciJyl9LHMucHJvdG90eXBlLl9zZWxlY3RVbml0cz1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5kZXhPZigiLXNob3J0Iik8MX0pKTtmb3IodD0wLG49by5sZW5ndGg7dDxuJiYocj1vW3RdLCEoTWF0aC5hYnMoZVtyXSk8cy50aHJlc2hvbGRzW3JdKSk7dCs9MSk7cmV0dXJuIHJ9fSxIVUVMOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz03NSl9KHswOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInExdEkiKX0sMTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIc3FnIil9LDExOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHIsbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigwKSx1PShyPWkpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcyh0aGlzLHQpLGwodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3ZnIixvKHt2aWV3Qm94OiIwIDAgMTIgMTIifSx0aGlzLnByb3BzKSx1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNMTEuNTMuNDdhLjc1Ljc1IDAgMCAwLTEuMDYxIDBsLTQuNDcgNC40N0wxLjUyOS40N0EuNzUuNzUgMCAxIDAgLjQ2OCAxLjUzMWw0LjQ3IDQuNDctNC40NyA0LjQ3YS43NS43NSAwIDEgMCAxLjA2MSAxLjA2MWw0LjQ3LTQuNDcgNC40NyA0LjQ3YS43NS43NSAwIDEgMCAxLjA2MS0xLjA2MWwtNC40Ny00LjQ3IDQuNDctNC40N2EuNzUuNzUgMCAwIDAgMC0xLjA2MXoifSkpfX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sMTU6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiaXVMciIpfSwxOTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJCaDZSIil9LDI6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiNWY3biIpfSwyNzpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxpPW4oMCksdT0ocj1pKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07ZnVuY3Rpb24gcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGwoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIHModGhpcyx0KSxsKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxhKHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInN2ZyIsbyh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix2aWV3Qm94OiIwIDAgMTM5My4xIDE1MDAifSx0aGlzLnByb3BzKSx1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik0xMDcuMiAxMzkyLjloMjQxLjF2LTI0MS4xSDEwNy4ydjI0MS4xem0yOTQuNyAwaDI2Ny45di0yNDEuMUg0MDEuOXYyNDEuMXptLTI5NC43LTI5NC43aDI0MS4xVjgzMC40SDEwNy4ydjI2Ny44em0yOTQuNyAwaDI2Ny45VjgzMC40SDQwMS45djI2Ny44ek0xMDcuMiA3NzYuOGgyNDEuMVY1MzUuN0gxMDcuMnYyNDEuMXptNjE2LjIgNjE2LjFoMjY3Ljl2LTI0MS4xSDcyMy40djI0MS4xek00MDEuOSA3NzYuOGgyNjcuOVY1MzUuN0g0MDEuOXYyNDEuMXptNjQyLjkgNjE2LjFIMTI4NnYtMjQxLjFoLTI0MS4xdjI0MS4xem0tMzIxLjQtMjk0LjdoMjY3LjlWODMwLjRINzIzLjR2MjY3Ljh6TTQyOC43IDM3NVYxMzMuOWMwLTcuMy0yLjctMTMuNS04LTE4LjgtNS4zLTUuMy0xMS42LTgtMTguOC04aC01My42Yy03LjMgMC0xMy41IDIuNy0xOC44IDgtNS4zIDUuMy04IDExLjYtOCAxOC44VjM3NWMwIDcuMyAyLjcgMTMuNSA4IDE4LjggNS4zIDUuMyAxMS42IDggMTguOCA4aDUzLjZjNy4zIDAgMTMuNS0yLjcgMTguOC04IDUuMy01LjMgOC0xMS41IDgtMTguOHptNjE2LjEgNzIzLjJIMTI4NlY4MzAuNGgtMjQxLjF2MjY3Ljh6TTcyMy40IDc3Ni44aDI2Ny45VjUzNS43SDcyMy40djI0MS4xem0zMjEuNCAwSDEyODZWNTM1LjdoLTI0MS4xdjI0MS4xem0yNi44LTQwMS44VjEzMy45YzAtNy4zLTIuNy0xMy41LTgtMTguOC01LjMtNS4zLTExLjYtOC0xOC44LThoLTUzLjZjLTcuMyAwLTEzLjUgMi43LTE4LjggOC01LjMgNS4zLTggMTEuNi04IDE4LjhWMzc1YzAgNy4zIDIuNyAxMy41IDggMTguOCA1LjMgNS4zIDExLjYgOCAxOC44IDhoNTMuNmM3LjMgMCAxMy41LTIuNyAxOC44LTggNS40LTUuMyA4LTExLjUgOC0xOC44em0zMjEuNS01My42djEwNzEuNGMwIDI5LTEwLjYgNTQuMS0zMS44IDc1LjMtMjEuMiAyMS4yLTQ2LjMgMzEuOC03NS4zIDMxLjhIMTA3LjJjLTI5IDAtNTQuMS0xMC42LTc1LjMtMzEuOEMxMC42IDE0NDcgMCAxNDIxLjkgMCAxMzkyLjlWMzIxLjRjMC0yOSAxMC42LTU0LjEgMzEuOC03NS4zczQ2LjMtMzEuOCA3NS4zLTMxLjhoMTA3LjJ2LTgwLjRjMC0zNi44IDEzLjEtNjguNCAzOS4zLTk0LjZTMzExLjQgMCAzNDguMyAwaDUzLjZjMzYuOCAwIDY4LjQgMTMuMSA5NC42IDM5LjMgMjYuMiAyNi4yIDM5LjMgNTcuOCAzOS4zIDk0LjZ2ODAuNGgzMjEuNXYtODAuNGMwLTM2LjggMTMuMS02OC40IDM5LjMtOTQuNkM5MjIuOSAxMy4xIDk1NC40IDAgOTkxLjMgMGg1My42YzM2LjggMCA2OC40IDEzLjEgOTQuNiAzOS4zczM5LjMgNTcuOCAzOS4zIDk0LjZ2ODAuNEgxMjg2YzI5IDAgNTQuMSAxMC42IDc1LjMgMzEuOCAyMS4yIDIxLjIgMzEuOCA0Ni4zIDMxLjggNzUuM3oifSkpfX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sMzpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ2VitHIil9LDM1OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkR2MGYiKX0sNDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIxN3g5Iil9LDU6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigieWMyZSIpfSw2OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlRTWVEiKX0sNzU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT12KG4oMCkpLGk9dihuKDQpKSx1PW4oMSkscz12KG4oNikpLGw9bigzKSxjPXYobig1KSksZj12KG4oMzUpKSxkPXYobigxOSkpLHA9dihuKDExKSksaD12KG4oMjcpKSx5PXYobigxNSkpLG09bigyKTtmdW5jdGlvbiB2KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgZz0oMCx1LmZvcmJpZEV4dHJhUHJvcHMpKHtpZDppLmRlZmF1bHQuc3RyaW5nLmlzUmVxdWlyZWQscGxhY2Vob2xkZXI6aS5kZWZhdWx0LnN0cmluZyxkaXNwbGF5VmFsdWU6aS5kZWZhdWx0LnN0cmluZyxpbnB1dFZhbHVlOmkuZGVmYXVsdC5zdHJpbmcsc2NyZWVuUmVhZGVyTWVzc2FnZTppLmRlZmF1bHQuc3RyaW5nLGZvY3VzZWQ6aS5kZWZhdWx0LmJvb2wsaXNGb2N1c2VkOmkuZGVmYXVsdC5ib29sLGRpc2FibGVkOmkuZGVmYXVsdC5ib29sLHJlcXVpcmVkOmkuZGVmYXVsdC5ib29sLHJlYWRPbmx5OmkuZGVmYXVsdC5ib29sLG9wZW5EaXJlY3Rpb246eS5kZWZhdWx0LHNob3dDYXJldDppLmRlZmF1bHQuYm9vbCxzaG93Q2xlYXJEYXRlOmkuZGVmYXVsdC5ib29sLGN1c3RvbUNsb3NlSWNvbjppLmRlZmF1bHQubm9kZSxzaG93RGVmYXVsdElucHV0SWNvbjppLmRlZmF1bHQuYm9vbCxpbnB1dEljb25Qb3NpdGlvbjpkLmRlZmF1bHQsY3VzdG9tSW5wdXRJY29uOmkuZGVmYXVsdC5ub2RlLGlzUlRMOmkuZGVmYXVsdC5ib29sLG9uQ2hhbmdlOmkuZGVmYXVsdC5mdW5jLG9uQ2xlYXJEYXRlOmkuZGVmYXVsdC5mdW5jLG9uRm9jdXM6aS5kZWZhdWx0LmZ1bmMsb25LZXlEb3duU2hpZnRUYWI6aS5kZWZhdWx0LmZ1bmMsb25LZXlEb3duVGFiOmkuZGVmYXVsdC5mdW5jLG9uS2V5RG93bkFycm93RG93bjppLmRlZmF1bHQuZnVuYyxwaHJhc2VzOmkuZGVmYXVsdC5zaGFwZSgoMCxjLmRlZmF1bHQpKGwuU2luZ2xlRGF0ZVBpY2tlcklucHV0UGhyYXNlcykpfSksYj17cGxhY2Vob2xkZXI6IlNlbGVjdCBEYXRlIixkaXNwbGF5VmFsdWU6IiIsaW5wdXRWYWx1ZToiIixzY3JlZW5SZWFkZXJNZXNzYWdlOiIiLGZvY3VzZWQ6ITEsaXNGb2N1c2VkOiExLGRpc2FibGVkOiExLHJlcXVpcmVkOiExLHJlYWRPbmx5OiExLG9wZW5EaXJlY3Rpb246bS5PUEVOX0RPV04sc2hvd0NhcmV0OiExLHNob3dDbGVhckRhdGU6ITEsc2hvd0RlZmF1bHRJbnB1dEljb246ITEsaW5wdXRJY29uUG9zaXRpb246bS5JQ09OX0JFRk9SRV9QT1NJVElPTixjdXN0b21DbG9zZUljb246bnVsbCxjdXN0b21JbnB1dEljb246bnVsbCxpc1JUTDohMSxvbkNoYW5nZTpmdW5jdGlvbigpe30sb25DbGVhckRhdGU6ZnVuY3Rpb24oKXt9LG9uRm9jdXM6ZnVuY3Rpb24oKXt9LG9uS2V5RG93blNoaWZ0VGFiOmZ1bmN0aW9uKCl7fSxvbktleURvd25UYWI6ZnVuY3Rpb24oKXt9LG9uS2V5RG93bkFycm93RG93bjpmdW5jdGlvbigpe30scGhyYXNlczpsLlNpbmdsZURhdGVQaWNrZXJJbnB1dFBocmFzZXN9LHc9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gbi5zdGF0ZT17aXNDbGVhckRhdGVIb3ZlcmVkOiExfSxuLm9uQ2xlYXJEYXRlTW91c2VFbnRlcj1uLm9uQ2xlYXJEYXRlTW91c2VFbnRlci5iaW5kKG4pLG4ub25DbGVhckRhdGVNb3VzZUxlYXZlPW4ub25DbGVhckRhdGVNb3VzZUxlYXZlLmJpbmQobiksbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiKyh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG8odCxbe2tleToib25DbGVhckRhdGVNb3VzZUVudGVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2lzQ2xlYXJEYXRlSG92ZXJlZDohMH0pfX0se2tleToib25DbGVhckRhdGVNb3VzZUxlYXZlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUoe2lzQ2xlYXJEYXRlSG92ZXJlZDohMX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuaXNDbGVhckRhdGVIb3ZlcmVkLHQ9dGhpcy5wcm9wcyxuPXQuaWQscj10LnBsYWNlaG9sZGVyLG89dC5kaXNwbGF5VmFsdWUsaT10LmlucHV0VmFsdWUsdT10LmZvY3VzZWQsbD10LmlzRm9jdXNlZCxjPXQuZGlzYWJsZWQsZD10LnJlcXVpcmVkLHk9dC5yZWFkT25seSx2PXQub3BlbkRpcmVjdGlvbixnPXQuc2hvd0NhcmV0LGI9dC5zaG93Q2xlYXJEYXRlLHc9dC5zaG93RGVmYXVsdElucHV0SWNvbixfPXQuaW5wdXRJY29uUG9zaXRpb24sRT10LnBocmFzZXMsTz10Lm9uQ2xlYXJEYXRlLGs9dC5vbkNoYW5nZSxDPXQub25Gb2N1cyx4PXQub25LZXlEb3duU2hpZnRUYWIsUz10Lm9uS2V5RG93blRhYixEPXQub25LZXlEb3duQXJyb3dEb3duLFQ9dC5zY3JlZW5SZWFkZXJNZXNzYWdlLE09dC5jdXN0b21DbG9zZUljb24sUD10LmN1c3RvbUlucHV0SWNvbixOPXQuaXNSVEwsaj1QfHxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChoLmRlZmF1bHQsbnVsbCksTD1NfHxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQsbnVsbCksUj1UfHxFLmtleWJvYXJkTmF2aWdhdGlvbkluc3RydWN0aW9ucyxJPSh3fHxudWxsIT09UCkmJmEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiU2luZ2xlRGF0ZVBpY2tlcklucHV0X19jYWxlbmRhci1pY29uIixkaXNhYmxlZDpjLCJhcmlhLWxhYmVsIjpFLmZvY3VzU3RhcnREYXRlLG9uQ2xpY2s6Q30saik7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSgiU2luZ2xlRGF0ZVBpY2tlcklucHV0Iix7IlNpbmdsZURhdGVQaWNrZXJJbnB1dC0tZGlzYWJsZWQiOmMsIlNpbmdsZURhdGVQaWNrZXJJbnB1dC0tcnRsIjpOfSl9LF89PT1tLklDT05fQkVGT1JFX1BPU0lUSU9OJiZJLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGYuZGVmYXVsdCx7aWQ6bixwbGFjZWhvbGRlcjpyLGRpc3BsYXlWYWx1ZTpvLGlucHV0VmFsdWU6aSxzY3JlZW5SZWFkZXJNZXNzYWdlOlIsZm9jdXNlZDp1LGlzRm9jdXNlZDpsLGRpc2FibGVkOmMscmVxdWlyZWQ6ZCxyZWFkT25seTp5LG9wZW5EaXJlY3Rpb246dixzaG93Q2FyZXQ6ZyxvbkNoYW5nZTprLG9uRm9jdXM6QyxvbktleURvd25TaGlmdFRhYjp4LG9uS2V5RG93blRhYjpTLG9uS2V5RG93bkFycm93RG93bjpEfSksYiYmYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoIlNpbmdsZURhdGVQaWNrZXJJbnB1dF9fY2xlYXItZGF0ZSIseyJTaW5nbGVEYXRlUGlja2VySW5wdXRfX2NsZWFyLWRhdGUtLWhpZGUiOiFvLCJTaW5nbGVEYXRlUGlja2VySW5wdXRfX2NsZWFyLWRhdGUtLWhvdmVyIjplfSksZGlzYWJsZWQ6YywiYXJpYS1sYWJlbCI6RS5jbGVhckRhdGUsb25Nb3VzZUVudGVyOnRoaXMub25DbGVhckRhdGVNb3VzZUVudGVyLG9uTW91c2VMZWF2ZTp0aGlzLm9uQ2xlYXJEYXRlTW91c2VMZWF2ZSxvbkNsaWNrOk99LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRhdGVSYW5nZVBpY2tlcklucHV0X19jbG9zZSJ9LEwpKSxfPT09bS5JQ09OX0FGVEVSX1BPU0lUSU9OJiZJKX19XSksdH0oYS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PXcsdy5wcm9wVHlwZXM9Zyx3LmRlZmF1bHRQcm9wcz1ifX0pfSxIZGx1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicTF0SSIpLG89bigicFhtcCIpLGE9ZnVuY3Rpb24oZSl7dmFyIHQsbjtmdW5jdGlvbiBhKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfW49ZSwodD1hKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uO3ZhciBpPWEucHJvdG90eXBlO3JldHVybiBpLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcm9wcy50ZXh0IT09ZS50ZXh0fHx0aGlzLnByb3BzLmVkaXRvclN0YXRlLmdldFNlbGVjdGlvbigpLmdldEhhc0ZvY3VzKCkhPT1lLmVkaXRvclN0YXRlLmdldFNlbGVjdGlvbigpLmdldEhhc0ZvY3VzKCl9LGkucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5lZGl0b3JTdGF0ZS5nZXRTZWxlY3Rpb24oKS5nZXRIYXNGb2N1cygpLHQ9byh7InB1YmxpYy9EcmFmdEVkaXRvclBsYWNlaG9sZGVyL3Jvb3QiOiEwLCJwdWJsaWMvRHJhZnRFZGl0b3JQbGFjZWhvbGRlci9oYXNGb2N1cyI6ZX0pO3JldHVybiByLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0fSxyLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpvKCJwdWJsaWMvRHJhZnRFZGl0b3JQbGFjZWhvbGRlci9pbm5lciIpLGlkOnRoaXMucHJvcHMuYWNjZXNzaWJpbGl0eUlELHN0eWxlOnt3aGl0ZVNwYWNlOiJwcmUtd3JhcCJ9fSx0aGlzLnByb3BzLnRleHQpKX0sYX0oci5Db21wb25lbnQpO2UuZXhwb3J0cz1hfSxIZXpJOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigieTVQKyIpLG89bigiRjA5dyIpLGE9bigiMTU4ZiIpLGk9bigibUZ5ViIpO2Z1bmN0aW9uIHUoZSx0KXtmb3IodmFyIG49MS8wLHI9MS8wLG89LTEvMCxhPS0xLzAsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgdT1lW2ldOzAhPT11LndpZHRoJiYxIT09dS53aWR0aCYmKG49TWF0aC5taW4obix1LnRvcCkscj1NYXRoLm1pbihyLHUuYm90dG9tKSxvPU1hdGgubWF4KG8sdS50b3ApLGE9TWF0aC5tYXgoYSx1LmJvdHRvbSkpfXJldHVybiBvPD1yJiZvLW48dCYmYS1yPHR9ZnVuY3Rpb24gcyhlKXtzd2l0Y2goZS5ub2RlVHlwZSl7Y2FzZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERTpyZXR1cm4gMDtjYXNlIE5vZGUuVEVYVF9OT0RFOmNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Y2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpyZXR1cm4gZS5sZW5ndGg7ZGVmYXVsdDpyZXR1cm4gZS5jaGlsZE5vZGVzLmxlbmd0aH19ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY29sbGFwc2VkfHxpKCExKTt2YXIgdD0oZT1lLmNsb25lUmFuZ2UoKSkuc3RhcnRDb250YWluZXI7MSE9PXQubm9kZVR5cGUmJih0PXQucGFyZW50Tm9kZSk7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9Z2V0Q29tcHV0ZWRTdHlsZShlKSxuPW8oZSkscj1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Iuc3R5bGUuZm9udEZhbWlseT10LmZvbnRGYW1pbHksci5zdHlsZS5mb250U2l6ZT10LmZvbnRTaXplLHIuc3R5bGUuZm9udFN0eWxlPXQuZm9udFN0eWxlLHIuc3R5bGUuZm9udFdlaWdodD10LmZvbnRXZWlnaHQsci5zdHlsZS5saW5lSGVpZ2h0PXQubGluZUhlaWdodCxyLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsci50ZXh0Q29udGVudD0iTSI7dmFyIGE9bi5ib2R5O2F8fGkoITEpLGEuYXBwZW5kQ2hpbGQocik7dmFyIHU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gYS5yZW1vdmVDaGlsZChyKSx1LmhlaWdodH0odCksbD1lLmVuZENvbnRhaW5lcixjPWUuZW5kT2Zmc2V0O2ZvcihlLnNldFN0YXJ0KGUuc3RhcnRDb250YWluZXIsMCk7dShhKGUpLG4pJiYobD1lLnN0YXJ0Q29udGFpbmVyLGM9ZS5zdGFydE9mZnNldCxsLnBhcmVudE5vZGV8fGkoITEpLGUuc2V0U3RhcnRCZWZvcmUobCksMSE9PWwubm9kZVR5cGV8fCJpbmxpbmUiPT09Z2V0Q29tcHV0ZWRTdHlsZShsKS5kaXNwbGF5KTspO2Zvcih2YXIgZj1sLGQ9Yy0xOzspe2Zvcih2YXIgcD1mLm5vZGVWYWx1ZSxoPWQ7aD49MDtoLS0paWYoIShudWxsIT1wJiZoPjAmJnIuaXNTdXJyb2dhdGVQYWlyKHAsaC0xKSkpe2lmKGUuc2V0U3RhcnQoZixoKSwhdShhKGUpLG4pKWJyZWFrO2w9ZixjPWh9aWYoLTE9PT1ofHwwPT09Zi5jaGlsZE5vZGVzLmxlbmd0aClicmVhaztkPXMoZj1mLmNoaWxkTm9kZXNbaF0pfXJldHVybiBlLnNldFN0YXJ0KGwsYyksZX19LEhyaVQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uZXcgUmVnRXhwKCJcciIsImciKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShyLCIiKX19LEhzcWc6ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKCJEY2lEIil9LEh6bEo6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PXtsb2NhbGU6ImVuIixwbHVyYWxSdWxlRnVuY3Rpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj1TdHJpbmcoZSkuc3BsaXQoIi4iKSxyPSFuWzFdLG89TnVtYmVyKG5bMF0pPT1lLGE9byYmblswXS5zbGljZSgtMSksaT1vJiZuWzBdLnNsaWNlKC0yKTtyZXR1cm4gdD8xPT1hJiYxMSE9aT8ib25lIjoyPT1hJiYxMiE9aT8idHdvIjozPT1hJiYxMyE9aT8iZmV3Ijoib3RoZXIiOjE9PWUmJnI/Im9uZSI6Im90aGVyIn0sZmllbGRzOnt5ZWFyOntkaXNwbGF5TmFtZToieWVhciIscmVsYXRpdmU6ezA6InRoaXMgeWVhciIsMToibmV4dCB5ZWFyIiwiLTEiOiJsYXN0IHllYXIifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0geWVhciIsb3RoZXI6ImluIHswfSB5ZWFycyJ9LHBhc3Q6e29uZToiezB9IHllYXIgYWdvIixvdGhlcjoiezB9IHllYXJzIGFnbyJ9fX0sInllYXItc2hvcnQiOntkaXNwbGF5TmFtZToieXIuIixyZWxhdGl2ZTp7MDoidGhpcyB5ci4iLDE6Im5leHQgeXIuIiwiLTEiOiJsYXN0IHlyLiJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSB5ci4iLG90aGVyOiJpbiB7MH0geXIuIn0scGFzdDp7b25lOiJ7MH0geXIuIGFnbyIsb3RoZXI6InswfSB5ci4gYWdvIn19fSxtb250aDp7ZGlzcGxheU5hbWU6Im1vbnRoIixyZWxhdGl2ZTp7MDoidGhpcyBtb250aCIsMToibmV4dCBtb250aCIsIi0xIjoibGFzdCBtb250aCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSBtb250aCIsb3RoZXI6ImluIHswfSBtb250aHMifSxwYXN0OntvbmU6InswfSBtb250aCBhZ28iLG90aGVyOiJ7MH0gbW9udGhzIGFnbyJ9fX0sIm1vbnRoLXNob3J0Ijp7ZGlzcGxheU5hbWU6Im1vLiIscmVsYXRpdmU6ezA6InRoaXMgbW8uIiwxOiJuZXh0IG1vLiIsIi0xIjoibGFzdCBtby4ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gbW8uIixvdGhlcjoiaW4gezB9IG1vLiJ9LHBhc3Q6e29uZToiezB9IG1vLiBhZ28iLG90aGVyOiJ7MH0gbW8uIGFnbyJ9fX0sd2Vlazp7ZGlzcGxheU5hbWU6IndlZWsiLHJlbGF0aXZlUGVyaW9kOiJ0aGUgd2VlayBvZiB7MH0iLHJlbGF0aXZlOnswOiJ0aGlzIHdlZWsiLDE6Im5leHQgd2VlayIsIi0xIjoibGFzdCB3ZWVrIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IHdlZWsiLG90aGVyOiJpbiB7MH0gd2Vla3MifSxwYXN0OntvbmU6InswfSB3ZWVrIGFnbyIsb3RoZXI6InswfSB3ZWVrcyBhZ28ifX19LCJ3ZWVrLXNob3J0Ijp7ZGlzcGxheU5hbWU6IndrLiIscmVsYXRpdmVQZXJpb2Q6InRoZSB3ZWVrIG9mIHswfSIscmVsYXRpdmU6ezA6InRoaXMgd2suIiwxOiJuZXh0IHdrLiIsIi0xIjoibGFzdCB3ay4ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gd2suIixvdGhlcjoiaW4gezB9IHdrLiJ9LHBhc3Q6e29uZToiezB9IHdrLiBhZ28iLG90aGVyOiJ7MH0gd2suIGFnbyJ9fX0sZGF5OntkaXNwbGF5TmFtZToiZGF5IixyZWxhdGl2ZTp7MDoidG9kYXkiLDE6InRvbW9ycm93IiwiLTEiOiJ5ZXN0ZXJkYXkifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gZGF5IixvdGhlcjoiaW4gezB9IGRheXMifSxwYXN0OntvbmU6InswfSBkYXkgYWdvIixvdGhlcjoiezB9IGRheXMgYWdvIn19fSwiZGF5LXNob3J0Ijp7ZGlzcGxheU5hbWU6ImRheSIscmVsYXRpdmU6ezA6InRvZGF5IiwxOiJ0b21vcnJvdyIsIi0xIjoieWVzdGVyZGF5In0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IGRheSIsb3RoZXI6ImluIHswfSBkYXlzIn0scGFzdDp7b25lOiJ7MH0gZGF5IGFnbyIsb3RoZXI6InswfSBkYXlzIGFnbyJ9fX0saG91cjp7ZGlzcGxheU5hbWU6ImhvdXIiLHJlbGF0aXZlOnswOiJ0aGlzIGhvdXIifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gaG91ciIsb3RoZXI6ImluIHswfSBob3VycyJ9LHBhc3Q6e29uZToiezB9IGhvdXIgYWdvIixvdGhlcjoiezB9IGhvdXJzIGFnbyJ9fX0sImhvdXItc2hvcnQiOntkaXNwbGF5TmFtZToiaHIuIixyZWxhdGl2ZTp7MDoidGhpcyBob3VyIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IGhyLiIsb3RoZXI6ImluIHswfSBoci4ifSxwYXN0OntvbmU6InswfSBoci4gYWdvIixvdGhlcjoiezB9IGhyLiBhZ28ifX19LG1pbnV0ZTp7ZGlzcGxheU5hbWU6Im1pbnV0ZSIscmVsYXRpdmU6ezA6InRoaXMgbWludXRlIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6e29uZToiaW4gezB9IG1pbnV0ZSIsb3RoZXI6ImluIHswfSBtaW51dGVzIn0scGFzdDp7b25lOiJ7MH0gbWludXRlIGFnbyIsb3RoZXI6InswfSBtaW51dGVzIGFnbyJ9fX0sIm1pbnV0ZS1zaG9ydCI6e2Rpc3BsYXlOYW1lOiJtaW4uIixyZWxhdGl2ZTp7MDoidGhpcyBtaW51dGUifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTp7b25lOiJpbiB7MH0gbWluLiIsb3RoZXI6ImluIHswfSBtaW4uIn0scGFzdDp7b25lOiJ7MH0gbWluLiBhZ28iLG90aGVyOiJ7MH0gbWluLiBhZ28ifX19LHNlY29uZDp7ZGlzcGxheU5hbWU6InNlY29uZCIscmVsYXRpdmU6ezA6Im5vdyJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSBzZWNvbmQiLG90aGVyOiJpbiB7MH0gc2Vjb25kcyJ9LHBhc3Q6e29uZToiezB9IHNlY29uZCBhZ28iLG90aGVyOiJ7MH0gc2Vjb25kcyBhZ28ifX19LCJzZWNvbmQtc2hvcnQiOntkaXNwbGF5TmFtZToic2VjLiIscmVsYXRpdmU6ezA6Im5vdyJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOntvbmU6ImluIHswfSBzZWMuIixvdGhlcjoiaW4gezB9IHNlYy4ifSxwYXN0OntvbmU6InswfSBzZWMuIGFnbyIsb3RoZXI6InswfSBzZWMuIGFnbyJ9fX19fX0sSTJVZzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkpMN1QiKSxvPW4oIlZUQmciKSxhPW4oIkpQY3YiKSxpPW4oIm1GeVYiKSx1PWEuT3JkZXJlZE1hcCxzPWEuTGlzdCxsPWZ1bmN0aW9uKGUsdCxuKXtpZihlKXt2YXIgcj10LmdldChlKTtyJiZ0LnNldChlLG4ocikpfX0sYz1mdW5jdGlvbihlLHQsbixyLG8pe2lmKCFvKXJldHVybiBlO3ZhciBhPSJhZnRlciI9PT1yLGk9dC5nZXRLZXkoKSx1PW4uZ2V0S2V5KCksYz10LmdldFBhcmVudEtleSgpLGY9dC5nZXROZXh0U2libGluZ0tleSgpLGQ9dC5nZXRQcmV2U2libGluZ0tleSgpLHA9bi5nZXRQYXJlbnRLZXkoKSxoPWE/bi5nZXROZXh0U2libGluZ0tleSgpOnUseT1hP3U6bi5nZXRQcmV2U2libGluZ0tleSgpO3JldHVybiBlLndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKGUpe2woYyxlLChmdW5jdGlvbihlKXt2YXIgdD1lLmdldENoaWxkS2V5cygpO3JldHVybiBlLm1lcmdlKHtjaGlsZHJlbjp0LmRlbGV0ZSh0LmluZGV4T2YoaSkpfSl9KSksbChkLGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHtuZXh0U2libGluZzpmfSl9KSksbChmLGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHtwcmV2U2libGluZzpkfSl9KSksbChoLGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHtwcmV2U2libGluZzppfSl9KSksbCh5LGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHtuZXh0U2libGluZzppfSl9KSksbChwLGUsKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Q2hpbGRLZXlzKCksbj10LmluZGV4T2YodSkscj1hP24rMTowIT09bj9uLTE6MCxvPXQudG9BcnJheSgpO3JldHVybiBvLnNwbGljZShyLDAsaSksZS5tZXJnZSh7Y2hpbGRyZW46cyhvKX0pfSkpLGwoaSxlLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7bmV4dFNpYmxpbmc6aCxwcmV2U2libGluZzp5LHBhcmVudDpwfSl9KSl9KSl9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixhKXsicmVwbGFjZSI9PT1hJiZpKCExKTt2YXIgcz1uLmdldEtleSgpLGw9dC5nZXRLZXkoKTtsPT09cyYmaSghMSk7dmFyIGY9ZS5nZXRCbG9ja01hcCgpLGQ9dCBpbnN0YW5jZW9mIHIscD1bdF0saD1mLmRlbGV0ZShsKTtkJiYocD1bXSxoPWYud2l0aE11dGF0aW9ucygoZnVuY3Rpb24oZSl7dmFyIG49dC5nZXROZXh0U2libGluZ0tleSgpLHI9byh0LGUpO2UudG9TZXEoKS5za2lwVW50aWwoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEtleSgpPT09bH0pKS50YWtlV2hpbGUoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0S2V5KCksbz10PT09bCxhPW4mJnQhPT1uLGk9IW4mJmUuZ2V0UGFyZW50S2V5KCkmJighcnx8dCE9PXIpO3JldHVybiEhKG98fGF8fGkpfSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3AucHVzaCh0KSxlLmRlbGV0ZSh0LmdldEtleSgpKX0pKX0pKSk7dmFyIHk9aC50b1NlcSgpLnRha2VVbnRpbCgoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1ufSkpLG09aC50b1NlcSgpLnNraXBVbnRpbCgoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1ufSkpLnNraXAoMSksdj1wLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2UuZ2V0S2V5KCksZV19KSksZz11KCk7aWYoImJlZm9yZSI9PT1hKXt2YXIgYj1lLmdldEJsb2NrQmVmb3JlKHMpO2ImJmIuZ2V0S2V5KCk9PT10LmdldEtleSgpJiZpKCExKSxnPXkuY29uY2F0KFtdLmNvbmNhdCh2LFtbcyxuXV0pLG0pLnRvT3JkZXJlZE1hcCgpfWVsc2UgaWYoImFmdGVyIj09PWEpe3ZhciB3PWUuZ2V0QmxvY2tBZnRlcihzKTt3JiZ3LmdldEtleSgpPT09bCYmaSghMSksZz15LmNvbmNhdChbW3Msbl1dLmNvbmNhdCh2KSxtKS50b09yZGVyZWRNYXAoKX1yZXR1cm4gZS5tZXJnZSh7YmxvY2tNYXA6YyhnLHQsbixhLGQpLHNlbGVjdGlvbkJlZm9yZTplLmdldFNlbGVjdGlvbkFmdGVyKCksc2VsZWN0aW9uQWZ0ZXI6ZS5nZXRTZWxlY3Rpb25BZnRlcigpLm1lcmdlKHthbmNob3JLZXk6bCxmb2N1c0tleTpsfSl9KX19LEk2VzA6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siYmFubmVyIjp7Im9yY2hhcmRHbyI6eyJhbmNob3JUZXh0Ijoi546w5Zyo5bCx5LiL6L29IE9yY2hhcmQgR28iLCJkZXNjcmlwdGlvbiI6Iumaj+aXtumaj+WcsOi/vei4quWIhuaekOe7k+aenO+8gSJ9fSwiZXJyb3JzIjp7InBhZ2VOb3RGb3VuZCI6IuaKseatie+8jOaCqOivt+axgueahOmhtemdouS4jeWtmOWcqOOAgiJ9LCJmb290ZXIiOnsiaGVscCI6IndvcmtzdGF0aW9u5biu5YqpIiwicHJpdmFjeVBvbGljeSI6IumakOengeadg+aUv+etliIsInRlcm1zQW5kQ29uZGl0aW9ucyI6IuadoeasvuWSjOadoeS7tiIsInRyYWRlbWFyayI6IlRoZSBPcmNoYXJk57O75rOo5YaM5ZWG5qCH77yMVGhlIE9yY2hhcmQgbG9nb+aYr09yY2hhcmQgRW50ZXJwcmlzZXMgTlksIEluYy7nmoTmnI3liqHllYbmoIfjgILniYjmnYPmiYDmnInjgIIifSwiZ2xvYmFsU2VhcmNoIjp7InBsYWNlaG9sZGVyIjoi5pCc57Si6aG555uu44CB5Lqn5ZOB44CB6Im65pyv5a624oCm4oCmIn0sImhlYWRlciI6eyJhY2NvdW50aW5nIjoi57uT566XIiwiYW5hbHl0aWNzIjoi5pWw5o2u5YiG5p6QIiwiY2F0YWxvZyI6IuebruW9lSIsImRyb3Bkb3duIjp7ImFkbWluIjoi566h55CG5ZGYIiwiZGVmYXVsdHMiOiLpu5jorqQiLCJsb2dPdXQiOiLnmbvlh7oiLCJsb2dvcyI6IuWVhuaghyIsIm15QWNjb3VudCI6IuaIkeeahOi0puaItyIsInByb2ZpbGUiOiLnroDku4sifSwiaGVscCI6IuW4ruWKqSIsIm1hcmtldGluZyI6IuiQpemUgCJ9LCJzdWJoZWFkZXIiOnsiYW5hbHl0aWNzIjp7ImF1ZGllbmNlIjoi5Y+X5LyXIiwiZW5nYWdlbWVudCI6IuWPl+S8l+WPguS4jiIsImZpbG1UcmFuc3BhcmVuY3kiOiLnlLXlvbHlubvnga/niYciLCJoZWF0bWFwIjoi54Ot54K55Zyw5Zu+Iiwib3ZlcnZpZXciOiLmpoLop4giLCJwaHlzaWNhbFJlcG9ydGluZyI6IuWunuS9k+aKpeWRiiIsInRvcENoYXJ0cyI6IuacgOeDreamnOWNlSJ9fX0nKX0sSURoWjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIk1nelciKSxvPW4oInExdEkiKTtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIit0KyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcix1PWk/U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIik6NjAxMDYscz1pP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsbD1pP1N5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIik6NjAxMDgsYz1pP1N5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIik6NjAxMTQsZj1pP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDksZD1pP1N5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKTo2MDExMCxwPWk/U3ltYm9sLmZvcigicmVhY3QuY29uY3VycmVudF9tb2RlIik6NjAxMTEsaD1pP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIseT1pP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIik6NjAxMTMsbT1pP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlX2xpc3QiKTo2MDEyMCx2PWk/U3ltYm9sLmZvcigicmVhY3QubWVtbyIpOjYwMTE1LGc9aT9TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iik6NjAxMTYsYj1pP1N5bWJvbC5mb3IoInJlYWN0LmZ1bmRhbWVudGFsIik6NjAxMTcsdz1pP1N5bWJvbC5mb3IoInJlYWN0LnNjb3BlIik6NjAxMTksXz1vLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO2Z1bmN0aW9uIEUoZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxudWxsO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtzd2l0Y2goZSl7Y2FzZSBzOnJldHVybiJGcmFnbWVudCI7Y2FzZSB1OnJldHVybiJQb3J0YWwiO2Nhc2UgYzpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgbDpyZXR1cm4iU3RyaWN0TW9kZSI7Y2FzZSB5OnJldHVybiJTdXNwZW5zZSI7Y2FzZSBtOnJldHVybiJTdXNwZW5zZUxpc3QifWlmKCJvYmplY3QiPT10eXBlb2YgZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBkOnJldHVybiJDb250ZXh0LkNvbnN1bWVyIjtjYXNlIGY6cmV0dXJuIkNvbnRleHQuUHJvdmlkZXIiO2Nhc2UgaDp2YXIgdD1lLnJlbmRlcjtyZXR1cm4gdD10LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fCIiLGUuZGlzcGxheU5hbWV8fCgiIiE9PXQ/IkZvcndhcmRSZWYoIit0KyIpIjoiRm9yd2FyZFJlZiIpO2Nhc2UgdjpyZXR1cm4gRShlLnR5cGUpO2Nhc2UgZzppZihlPTE9PT1lLl9zdGF0dXM/ZS5fcmVzdWx0Om51bGwpcmV0dXJuIEUoZSl9cmV0dXJuIG51bGx9Xy5oYXNPd25Qcm9wZXJ0eSgiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIpfHwoXy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyPXtjdXJyZW50Om51bGx9KSxfLmhhc093blByb3BlcnR5KCJSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyIpfHwoXy5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZz17c3VzcGVuc2U6bnVsbH0pO3ZhciBPPXt9O2Z1bmN0aW9uIGsoZSx0KXtmb3IodmFyIG49MHxlLl90aHJlYWRDb3VudDtuPD10O24rKyllW25dPWUuX2N1cnJlbnRWYWx1ZTIsZS5fdGhyZWFkQ291bnQ9bisxfWZvcih2YXIgQz1uZXcgVWludDE2QXJyYXkoMTYpLHg9MDsxNT54O3grKylDW3hdPXgrMTtDWzE1XT0wO3ZhciBTPS9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8sRD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFQ9e30sTT17fTtmdW5jdGlvbiBQKGUpe3JldHVybiEhRC5jYWxsKE0sZSl8fCFELmNhbGwoVCxlKSYmKFMudGVzdChlKT9NW2VdPSEwOihUW2VdPSEwLCExKSl9ZnVuY3Rpb24gTihlLHQsbixyLG8sYSl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PXR8fDM9PT10fHw0PT09dCx0aGlzLmF0dHJpYnV0ZU5hbWU9cix0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1vLHRoaXMubXVzdFVzZVByb3BlcnR5PW4sdGhpcy5wcm9wZXJ0eU5hbWU9ZSx0aGlzLnR5cGU9dCx0aGlzLnNhbml0aXplVVJMPWF9dmFyIGo9e307ImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZSIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtqW2VdPW5ldyBOKGUsMCwhMSxlLG51bGwsITEpfSkpLFtbImFjY2VwdENoYXJzZXQiLCJhY2NlcHQtY2hhcnNldCJdLFsiY2xhc3NOYW1lIiwiY2xhc3MiXSxbImh0bWxGb3IiLCJmb3IiXSxbImh0dHBFcXVpdiIsImh0dHAtZXF1aXYiXV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtqW3RdPW5ldyBOKHQsMSwhMSxlWzFdLG51bGwsITEpfSkpLFsiY29udGVudEVkaXRhYmxlIiwiZHJhZ2dhYmxlIiwic3BlbGxDaGVjayIsInZhbHVlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7altlXT1uZXcgTihlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSkpLFsiYXV0b1JldmVyc2UiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZm9jdXNhYmxlIiwicHJlc2VydmVBbHBoYSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2pbZV09bmV3IE4oZSwyLCExLGUsbnVsbCwhMSl9KSksImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZSIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtqW2VdPW5ldyBOKGUsMywhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSl9KSksWyJjaGVja2VkIiwibXVsdGlwbGUiLCJtdXRlZCIsInNlbGVjdGVkIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7altlXT1uZXcgTihlLDMsITAsZSxudWxsLCExKX0pKSxbImNhcHR1cmUiLCJkb3dubG9hZCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2pbZV09bmV3IE4oZSw0LCExLGUsbnVsbCwhMSl9KSksWyJjb2xzIiwicm93cyIsInNpemUiLCJzcGFuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7altlXT1uZXcgTihlLDYsITEsZSxudWxsLCExKX0pKSxbInJvd1NwYW4iLCJzdGFydCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2pbZV09bmV3IE4oZSw1LCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pKTt2YXIgTD0vW1wtOl0oW2Etel0pL2c7ZnVuY3Rpb24gUihlKXtyZXR1cm4gZVsxXS50b1VwcGVyQ2FzZSgpfSJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodCIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoTCxSKTtqW3RdPW5ldyBOKHQsMSwhMSxlLG51bGwsITEpfSkpLCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGUiLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKEwsUik7alt0XT1uZXcgTih0LDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsITEpfSkpLFsieG1sOmJhc2UiLCJ4bWw6bGFuZyIsInhtbDpzcGFjZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShMLFIpO2pbdF09bmV3IE4odCwxLCExLGUsImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsITEpfSkpLFsidGFiSW5kZXgiLCJjcm9zc09yaWdpbiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2pbZV09bmV3IE4oZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pKSxqLnhsaW5rSHJlZj1uZXcgTigieGxpbmtIcmVmIiwxLCExLCJ4bGluazpocmVmIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsITApLFsic3JjIiwiaHJlZiIsImFjdGlvbiIsImZvcm1BY3Rpb24iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtqW2VdPW5ldyBOKGUsMSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMCl9KSk7dmFyIEk9L1siJyY8Pl0vO2Z1bmN0aW9uIEEoZSl7aWYoImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlKXJldHVybiIiK2U7ZT0iIitlO3ZhciB0PUkuZXhlYyhlKTtpZih0KXt2YXIgbixyPSIiLG89MDtmb3Iobj10LmluZGV4O248ZS5sZW5ndGg7bisrKXtzd2l0Y2goZS5jaGFyQ29kZUF0KG4pKXtjYXNlIDM0OnQ9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODp0PSImYW1wOyI7YnJlYWs7Y2FzZSAzOTp0PSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6dD0iJmx0OyI7YnJlYWs7Y2FzZSA2Mjp0PSImZ3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfW8hPT1uJiYocis9ZS5zdWJzdHJpbmcobyxuKSksbz1uKzEscis9dH1lPW8hPT1uP3IrZS5zdWJzdHJpbmcobyxuKTpyfXJldHVybiBlfWZ1bmN0aW9uIEYoZSx0KXt2YXIgbixyPWouaGFzT3duUHJvcGVydHkoZSk/altlXTpudWxsO3JldHVybihuPSJzdHlsZSIhPT1lKSYmKG49bnVsbCE9PXI/MD09PXIudHlwZToyPGUubGVuZ3RoJiYoIm8iPT09ZVswXXx8Ik8iPT09ZVswXSkmJigibiI9PT1lWzFdfHwiTiI9PT1lWzFdKSksbnx8ZnVuY3Rpb24oZSx0LG4scil7aWYobnVsbD09dHx8ZnVuY3Rpb24oZSx0LG4scil7aWYobnVsbCE9PW4mJjA9PT1uLnR5cGUpcmV0dXJuITE7c3dpdGNoKHR5cGVvZiB0KXtjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4hciYmKG51bGwhPT1uPyFuLmFjY2VwdHNCb29sZWFuczoiZGF0YS0iIT09KGU9ZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSkpJiYiYXJpYS0iIT09ZSk7ZGVmYXVsdDpyZXR1cm4hMX19KGUsdCxuLHIpKXJldHVybiEwO2lmKHIpcmV0dXJuITE7aWYobnVsbCE9PW4pc3dpdGNoKG4udHlwZSl7Y2FzZSAzOnJldHVybiF0O2Nhc2UgNDpyZXR1cm4hMT09PXQ7Y2FzZSA1OnJldHVybiBpc05hTih0KTtjYXNlIDY6cmV0dXJuIGlzTmFOKHQpfHwxPnR9cmV0dXJuITF9KGUsdCxyLCExKT8iIjpudWxsIT09cj8oZT1yLmF0dHJpYnV0ZU5hbWUsMz09PShuPXIudHlwZSl8fDQ9PT1uJiYhMD09PXQ/ZSsnPSIiJzooci5zYW5pdGl6ZVVSTCYmKHQ9IiIrdCksZSsnPSInK0EodCkrJyInKSk6UChlKT9lKyc9IicrQSh0KSsnIic6IiJ9dmFyIEI9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJigwIT09ZXx8MS9lPT0xL3QpfHxlIT1lJiZ0IT10fSx6PW51bGwsSz1udWxsLHE9bnVsbCxWPSExLFU9ITEsVz1udWxsLFk9MDtmdW5jdGlvbiBIKCl7aWYobnVsbD09PXopdGhyb3cgRXJyb3IoYSgzMjEpKTtyZXR1cm4gen1mdW5jdGlvbiBHKCl7aWYoMDxZKXRocm93IEVycm9yKGEoMzEyKSk7cmV0dXJue21lbW9pemVkU3RhdGU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH19ZnVuY3Rpb24gUSgpe3JldHVybiBudWxsPT09cT9udWxsPT09Sz8oVj0hMSxLPXE9RygpKTooVj0hMCxxPUspOm51bGw9PT1xLm5leHQ/KFY9ITEscT1xLm5leHQ9RygpKTooVj0hMCxxPXEubmV4dCkscX1mdW5jdGlvbiBKKGUsdCxuLHIpe2Zvcig7VTspVT0hMSxZKz0xLHE9bnVsbCxuPWUodCxyKTtyZXR1cm4gSz16PW51bGwsWT0wLHE9Vz1udWxsLG59ZnVuY3Rpb24gWihlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoZSk6dH1mdW5jdGlvbiAkKGUsdCxuKXtpZih6PUgoKSxxPVEoKSxWKXt2YXIgcj1xLnF1ZXVlO2lmKHQ9ci5kaXNwYXRjaCxudWxsIT09VyYmdm9pZCAwIT09KG49Vy5nZXQocikpKXtXLmRlbGV0ZShyKSxyPXEubWVtb2l6ZWRTdGF0ZTtkb3tyPWUocixuLmFjdGlvbiksbj1uLm5leHR9d2hpbGUobnVsbCE9PW4pO3JldHVybiBxLm1lbW9pemVkU3RhdGU9cixbcix0XX1yZXR1cm5bcS5tZW1vaXplZFN0YXRlLHRdfXJldHVybiBlPWU9PT1aPyJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoKTp0OnZvaWQgMCE9PW4/bih0KTp0LHEubWVtb2l6ZWRTdGF0ZT1lLGU9KGU9cS5xdWV1ZT17bGFzdDpudWxsLGRpc3BhdGNoOm51bGx9KS5kaXNwYXRjaD1YLmJpbmQobnVsbCx6LGUpLFtxLm1lbW9pemVkU3RhdGUsZV19ZnVuY3Rpb24gWChlLHQsbil7aWYoISgyNT5ZKSl0aHJvdyBFcnJvcihhKDMwMSkpO2lmKGU9PT16KWlmKFU9ITAsZT17YWN0aW9uOm4sbmV4dDpudWxsfSxudWxsPT09VyYmKFc9bmV3IE1hcCksdm9pZCAwPT09KG49Vy5nZXQodCkpKVcuc2V0KHQsZSk7ZWxzZXtmb3IodD1uO251bGwhPT10Lm5leHQ7KXQ9dC5uZXh0O3QubmV4dD1lfX1mdW5jdGlvbiBlZSgpe312YXIgdGU9MCxuZT17cmVhZENvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGU7cmV0dXJuIGsoZSx0KSxlW3RdfSx1c2VDb250ZXh0OmZ1bmN0aW9uKGUpe0goKTt2YXIgdD10ZTtyZXR1cm4gayhlLHQpLGVbdF19LHVzZU1lbW86ZnVuY3Rpb24oZSx0KXtpZih6PUgoKSx0PXZvaWQgMD09PXQ/bnVsbDp0LG51bGwhPT0ocT1RKCkpKXt2YXIgbj1xLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW4mJm51bGwhPT10KXtlOnt2YXIgcj1uWzFdO2lmKG51bGw9PT1yKXI9ITE7ZWxzZXtmb3IodmFyIG89MDtvPHIubGVuZ3RoJiZvPHQubGVuZ3RoO28rKylpZighQih0W29dLHJbb10pKXtyPSExO2JyZWFrIGV9cj0hMH19aWYocilyZXR1cm4gblswXX19cmV0dXJuIGU9ZSgpLHEubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlfSx1c2VSZWR1Y2VyOiQsdXNlUmVmOmZ1bmN0aW9uKGUpe3o9SCgpO3ZhciB0PShxPVEoKSkubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbD09PXQ/KGU9e2N1cnJlbnQ6ZX0scS5tZW1vaXplZFN0YXRlPWUpOnR9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiAkKFosZSl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbigpe30sdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHVzZUltcGVyYXRpdmVIYW5kbGU6ZWUsdXNlRWZmZWN0OmVlLHVzZURlYnVnVmFsdWU6ZWUsdXNlUmVzcG9uZGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJue3Byb3BzOnQscmVzcG9uZGVyOmV9fSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBIKCksZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiBIKCksW2Z1bmN0aW9uKGUpe2UoKX0sITFdfX0scmU9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2Z1bmN0aW9uIG9lKGUpe3N3aXRjaChlKXtjYXNlInN2ZyI6cmV0dXJuImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtjYXNlIm1hdGgiOnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjtkZWZhdWx0OnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIn19dmFyIGFlPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9LGllPXIoe21lbnVpdGVtOiEwfSxhZSksdWU9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHNlPVsiV2Via2l0IiwibXMiLCJNb3oiLCJPIl07T2JqZWN0LmtleXModWUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3NlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Q9dCtlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc3Vic3RyaW5nKDEpLHVlW3RdPXVlW2VdfSkpfSkpO3ZhciBsZT0vKFtBLVpdKS9nLGNlPS9ebXMtLyxmZT1vLkNoaWxkcmVuLnRvQXJyYXksZGU9Xy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLHBlPXtsaXN0aW5nOiEwLHByZTohMCx0ZXh0YXJlYTohMH0saGU9L15bYS16QS1aXVthLXpBLVo6X1wuXC1cZF0qJC8seWU9e30sbWU9e307dmFyIHZlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZ2U9e2NoaWxkcmVuOm51bGwsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6bnVsbCxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6bnVsbCxzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6bnVsbH07ZnVuY3Rpb24gYmUoZSx0KXtpZih2b2lkIDA9PT1lKXRocm93IEVycm9yKGEoMTUyLEUodCl8fCJDb21wb25lbnQiKSl9ZnVuY3Rpb24gd2UoZSx0LG4pe2Z1bmN0aW9uIGkobyxpKXt2YXIgdT1pLnByb3RvdHlwZSYmaS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCxzPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHImJigib2JqZWN0Ij09dHlwZW9mKHI9ZS5jb250ZXh0VHlwZSkmJm51bGwhPT1yKSlyZXR1cm4gayhyLG4pLHJbbl07aWYoZT1lLmNvbnRleHRUeXBlcyl7Zm9yKHZhciBvIGluIG49e30sZSluW29dPXRbb107dD1ufWVsc2UgdD1PO3JldHVybiB0fShpLHQsbix1KSxsPVtdLGM9ITEsZj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe2lmKG51bGw9PT1sKXJldHVybiBudWxsfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7Yz0hMCxsPVt0XX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7bC5wdXNoKHQpfX07aWYodSl7aWYodT1uZXcgaShvLnByb3BzLHMsZiksImZ1bmN0aW9uIj09dHlwZW9mIGkuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKXt2YXIgZD1pLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcy5jYWxsKG51bGwsby5wcm9wcyx1LnN0YXRlKTtudWxsIT1kJiYodS5zdGF0ZT1yKHt9LHUuc3RhdGUsZCkpfX1lbHNlIGlmKHo9e30sdT1pKG8ucHJvcHMscyxmKSxudWxsPT0odT1KKGksby5wcm9wcyx1LHMpKXx8bnVsbD09dS5yZW5kZXIpcmV0dXJuIHZvaWQgYmUoZT11LGkpO2lmKHUucHJvcHM9by5wcm9wcyx1LmNvbnRleHQ9cyx1LnVwZGF0ZXI9Zix2b2lkIDA9PT0oZj11LnN0YXRlKSYmKHUuc3RhdGU9Zj1udWxsKSwiZnVuY3Rpb24iPT10eXBlb2YgdS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50fHwiZnVuY3Rpb24iPT10eXBlb2YgdS5jb21wb25lbnRXaWxsTW91bnQpaWYoImZ1bmN0aW9uIj09dHlwZW9mIHUuY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT10eXBlb2YgaS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMmJnUuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIHUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmImZ1bmN0aW9uIiE9dHlwZW9mIGkuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZ1LlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSxsLmxlbmd0aCl7Zj1sO3ZhciBwPWM7aWYobD1udWxsLGM9ITEscCYmMT09PWYubGVuZ3RoKXUuc3RhdGU9ZlswXTtlbHNle2Q9cD9mWzBdOnUuc3RhdGU7dmFyIGg9ITA7Zm9yKHA9cD8xOjA7cDxmLmxlbmd0aDtwKyspe3ZhciB5PWZbcF07bnVsbCE9KHk9ImZ1bmN0aW9uIj09dHlwZW9mIHk/eS5jYWxsKHUsZCxvLnByb3BzLHMpOnkpJiYoaD8oaD0hMSxkPXIoe30sZCx5KSk6cihkLHkpKX11LnN0YXRlPWR9fWVsc2UgbD1udWxsO2lmKGJlKGU9dS5yZW5kZXIoKSxpKSwiZnVuY3Rpb24iPT10eXBlb2YgdS5nZXRDaGlsZENvbnRleHQmJiJvYmplY3QiPT10eXBlb2Yobz1pLmNoaWxkQ29udGV4dFR5cGVzKSl7dmFyIG09dS5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIHYgaW4gbSlpZighKHYgaW4gbykpdGhyb3cgRXJyb3IoYSgxMDgsRShpKXx8IlVua25vd24iLHYpKX1tJiYodD1yKHt9LHQsbSkpfWZvcig7by5pc1ZhbGlkRWxlbWVudChlKTspe3ZhciB1PWUscz11LnR5cGU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHMpYnJlYWs7aSh1LHMpfXJldHVybntjaGlsZDplLGNvbnRleHQ6dH19dmFyIF9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe28uaXNWYWxpZEVsZW1lbnQoZSk/ZS50eXBlIT09cz9lPVtlXTooZT1lLnByb3BzLmNoaWxkcmVuLGU9by5pc1ZhbGlkRWxlbWVudChlKT9bZV06ZmUoZSkpOmU9ZmUoZSksZT17dHlwZTpudWxsLGRvbU5hbWVzcGFjZTpyZSxjaGlsZHJlbjplLGNoaWxkSW5kZXg6MCxjb250ZXh0Ok8sZm9vdGVyOiIifTt2YXIgbj1DWzBdO2lmKDA9PT1uKXt2YXIgcj1DLGk9Mioobj1yLmxlbmd0aCk7aWYoISg2NTUzNj49aSkpdGhyb3cgRXJyb3IoYSgzMDQpKTt2YXIgdT1uZXcgVWludDE2QXJyYXkoaSk7Zm9yKHUuc2V0KHIpLChDPXUpWzBdPW4rMSxyPW47cjxpLTE7cisrKUNbcl09cisxO0NbaS0xXT0wfWVsc2UgQ1swXT1DW25dO3RoaXMudGhyZWFkSUQ9bix0aGlzLnN0YWNrPVtlXSx0aGlzLmV4aGF1c3RlZD0hMSx0aGlzLmN1cnJlbnRTZWxlY3RWYWx1ZT1udWxsLHRoaXMucHJldmlvdXNXYXNUZXh0Tm9kZT0hMSx0aGlzLm1ha2VTdGF0aWNNYXJrdXA9dCx0aGlzLnN1c3BlbnNlRGVwdGg9MCx0aGlzLmNvbnRleHRJbmRleD0tMSx0aGlzLmNvbnRleHRTdGFjaz1bXSx0aGlzLmNvbnRleHRWYWx1ZVN0YWNrPVtdfXZhciB0PWUucHJvdG90eXBlO3JldHVybiB0LmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZighdGhpcy5leGhhdXN0ZWQpe3RoaXMuZXhoYXVzdGVkPSEwLHRoaXMuY2xlYXJQcm92aWRlcnMoKTt2YXIgZT10aGlzLnRocmVhZElEO0NbZV09Q1swXSxDWzBdPWV9fSx0LnB1c2hQcm92aWRlcj1mdW5jdGlvbihlKXt2YXIgdD0rK3RoaXMuY29udGV4dEluZGV4LG49ZS50eXBlLl9jb250ZXh0LHI9dGhpcy50aHJlYWRJRDtrKG4scik7dmFyIG89bltyXTt0aGlzLmNvbnRleHRTdGFja1t0XT1uLHRoaXMuY29udGV4dFZhbHVlU3RhY2tbdF09byxuW3JdPWUucHJvcHMudmFsdWV9LHQucG9wUHJvdmlkZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnRleHRJbmRleCx0PXRoaXMuY29udGV4dFN0YWNrW2VdLG49dGhpcy5jb250ZXh0VmFsdWVTdGFja1tlXTt0aGlzLmNvbnRleHRTdGFja1tlXT1udWxsLHRoaXMuY29udGV4dFZhbHVlU3RhY2tbZV09bnVsbCx0aGlzLmNvbnRleHRJbmRleC0tLHRbdGhpcy50aHJlYWRJRF09bn0sdC5jbGVhclByb3ZpZGVycz1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmNvbnRleHRJbmRleDswPD1lO2UtLSl0aGlzLmNvbnRleHRTdGFja1tlXVt0aGlzLnRocmVhZElEXT10aGlzLmNvbnRleHRWYWx1ZVN0YWNrW2VdfSx0LnJlYWQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5leGhhdXN0ZWQpcmV0dXJuIG51bGw7dmFyIHQ9dGU7dGU9dGhpcy50aHJlYWRJRDt2YXIgbj1kZS5jdXJyZW50O2RlLmN1cnJlbnQ9bmU7dHJ5e2Zvcih2YXIgcj1bIiJdLG89ITE7clswXS5sZW5ndGg8ZTspe2lmKDA9PT10aGlzLnN0YWNrLmxlbmd0aCl7dGhpcy5leGhhdXN0ZWQ9ITA7dmFyIGk9dGhpcy50aHJlYWRJRDtDW2ldPUNbMF0sQ1swXT1pO2JyZWFrfXZhciB1PXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYob3x8dS5jaGlsZEluZGV4Pj11LmNoaWxkcmVuLmxlbmd0aCl7dmFyIHM9dS5mb290ZXI7aWYoIiIhPT1zJiYodGhpcy5wcmV2aW91c1dhc1RleHROb2RlPSExKSx0aGlzLnN0YWNrLnBvcCgpLCJzZWxlY3QiPT09dS50eXBlKXRoaXMuY3VycmVudFNlbGVjdFZhbHVlPW51bGw7ZWxzZSBpZihudWxsIT11LnR5cGUmJm51bGwhPXUudHlwZS50eXBlJiZ1LnR5cGUudHlwZS4kJHR5cGVvZj09PWYpdGhpcy5wb3BQcm92aWRlcih1LnR5cGUpO2Vsc2UgaWYodS50eXBlPT09eSl7dGhpcy5zdXNwZW5zZURlcHRoLS07dmFyIGw9ci5wb3AoKTtpZihvKXtvPSExO3ZhciBjPXUuZmFsbGJhY2tGcmFtZTtpZighYyl0aHJvdyBFcnJvcihhKDMwMykpO3RoaXMuc3RhY2sucHVzaChjKSxyW3RoaXMuc3VzcGVuc2VEZXB0aF0rPSJceDNjIS0tJCEtLVx4M2UiO2NvbnRpbnVlfXJbdGhpcy5zdXNwZW5zZURlcHRoXSs9bH1yW3RoaXMuc3VzcGVuc2VEZXB0aF0rPXN9ZWxzZXt2YXIgZD11LmNoaWxkcmVuW3UuY2hpbGRJbmRleCsrXSxwPSIiO3RyeXtwKz10aGlzLnJlbmRlcihkLHUuY29udGV4dCx1LmRvbU5hbWVzcGFjZSl9Y2F0Y2goZSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudGhlbil0aHJvdyBFcnJvcihhKDI5NCkpO3Rocm93IGV9ci5sZW5ndGg8PXRoaXMuc3VzcGVuc2VEZXB0aCYmci5wdXNoKCIiKSxyW3RoaXMuc3VzcGVuc2VEZXB0aF0rPXB9fXJldHVybiByWzBdfWZpbmFsbHl7ZGUuY3VycmVudD1uLHRlPXR9fSx0LnJlbmRlcj1mdW5jdGlvbihlLHQsbil7aWYoInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIiI9PT0obj0iIitlKT8iIjp0aGlzLm1ha2VTdGF0aWNNYXJrdXA/QShuKTp0aGlzLnByZXZpb3VzV2FzVGV4dE5vZGU/Ilx4M2MhLS0gLS1ceDNlIitBKG4pOih0aGlzLnByZXZpb3VzV2FzVGV4dE5vZGU9ITAsQShuKSk7aWYoZT0odD13ZShlLHQsdGhpcy50aHJlYWRJRCkpLmNoaWxkLHQ9dC5jb250ZXh0LG51bGw9PT1lfHwhMT09PWUpcmV0dXJuIiI7aWYoIW8uaXNWYWxpZEVsZW1lbnQoZSkpe2lmKG51bGwhPWUmJm51bGwhPWUuJCR0eXBlb2Ype2lmKChuPWUuJCR0eXBlb2YpPT09dSl0aHJvdyBFcnJvcihhKDI1NykpO3Rocm93IEVycm9yKGEoMjU4LG4udG9TdHJpbmcoKSkpfXJldHVybiBlPWZlKGUpLHRoaXMuc3RhY2sucHVzaCh7dHlwZTpudWxsLGRvbU5hbWVzcGFjZTpuLGNoaWxkcmVuOmUsY2hpbGRJbmRleDowLGNvbnRleHQ6dCxmb290ZXI6IiJ9KSwiIn12YXIgaT1lLnR5cGU7aWYoInN0cmluZyI9PXR5cGVvZiBpKXJldHVybiB0aGlzLnJlbmRlckRPTShlLHQsbik7c3dpdGNoKGkpe2Nhc2UgbDpjYXNlIHA6Y2FzZSBjOmNhc2UgbTpjYXNlIHM6cmV0dXJuIGU9ZmUoZS5wcm9wcy5jaGlsZHJlbiksdGhpcy5zdGFjay5wdXNoKHt0eXBlOm51bGwsZG9tTmFtZXNwYWNlOm4sY2hpbGRyZW46ZSxjaGlsZEluZGV4OjAsY29udGV4dDp0LGZvb3RlcjoiIn0pLCIiO2Nhc2UgeTp0aHJvdyBFcnJvcihhKDI5NCkpfWlmKCJvYmplY3QiPT10eXBlb2YgaSYmbnVsbCE9PWkpc3dpdGNoKGkuJCR0eXBlb2Ype2Nhc2UgaDp6PXt9O3ZhciBfPWkucmVuZGVyKGUucHJvcHMsZS5yZWYpO3JldHVybiBfPUooaS5yZW5kZXIsZS5wcm9wcyxfLGUucmVmKSxfPWZlKF8pLHRoaXMuc3RhY2sucHVzaCh7dHlwZTpudWxsLGRvbU5hbWVzcGFjZTpuLGNoaWxkcmVuOl8sY2hpbGRJbmRleDowLGNvbnRleHQ6dCxmb290ZXI6IiJ9KSwiIjtjYXNlIHY6cmV0dXJuIGU9W28uY3JlYXRlRWxlbWVudChpLnR5cGUscih7cmVmOmUucmVmfSxlLnByb3BzKSldLHRoaXMuc3RhY2sucHVzaCh7dHlwZTpudWxsLGRvbU5hbWVzcGFjZTpuLGNoaWxkcmVuOmUsY2hpbGRJbmRleDowLGNvbnRleHQ6dCxmb290ZXI6IiJ9KSwiIjtjYXNlIGY6cmV0dXJuIG49e3R5cGU6ZSxkb21OYW1lc3BhY2U6bixjaGlsZHJlbjppPWZlKGUucHJvcHMuY2hpbGRyZW4pLGNoaWxkSW5kZXg6MCxjb250ZXh0OnQsZm9vdGVyOiIifSx0aGlzLnB1c2hQcm92aWRlcihlKSx0aGlzLnN0YWNrLnB1c2gobiksIiI7Y2FzZSBkOmk9ZS50eXBlLF89ZS5wcm9wczt2YXIgRT10aGlzLnRocmVhZElEO3JldHVybiBrKGksRSksaT1mZShfLmNoaWxkcmVuKGlbRV0pKSx0aGlzLnN0YWNrLnB1c2goe3R5cGU6ZSxkb21OYW1lc3BhY2U6bixjaGlsZHJlbjppLGNoaWxkSW5kZXg6MCxjb250ZXh0OnQsZm9vdGVyOiIifSksIiI7Y2FzZSBiOnRocm93IEVycm9yKGEoMzM4KSk7Y2FzZSBnOnN3aXRjaChmdW5jdGlvbihlKXtpZigtMT09PWUuX3N0YXR1cyl7ZS5fc3RhdHVzPTA7dmFyIHQ9ZS5fY3Rvcjt0PXQoKSxlLl9yZXN1bHQ9dCx0LnRoZW4oKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJih0PXQuZGVmYXVsdCxlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9dCl9KSwoZnVuY3Rpb24odCl7MD09PWUuX3N0YXR1cyYmKGUuX3N0YXR1cz0yLGUuX3Jlc3VsdD10KX0pKX19KGk9ZS50eXBlKSxpLl9zdGF0dXMpe2Nhc2UgMTpyZXR1cm4gZT1bby5jcmVhdGVFbGVtZW50KGkuX3Jlc3VsdCxyKHtyZWY6ZS5yZWZ9LGUucHJvcHMpKV0sdGhpcy5zdGFjay5wdXNoKHt0eXBlOm51bGwsZG9tTmFtZXNwYWNlOm4sY2hpbGRyZW46ZSxjaGlsZEluZGV4OjAsY29udGV4dDp0LGZvb3RlcjoiIn0pLCIiO2Nhc2UgMjp0aHJvdyBpLl9yZXN1bHQ7ZGVmYXVsdDp0aHJvdyBFcnJvcihhKDI5NSkpfWNhc2Ugdzp0aHJvdyBFcnJvcihhKDM0MykpfXRocm93IEVycm9yKGEoMTMwLG51bGw9PWk/aTp0eXBlb2YgaSwiIikpfSx0LnJlbmRlckRPTT1mdW5jdGlvbihlLHQsbil7dmFyIGk9ZS50eXBlLnRvTG93ZXJDYXNlKCk7aWYobj09PXJlJiZvZShpKSwheWUuaGFzT3duUHJvcGVydHkoaSkpe2lmKCFoZS50ZXN0KGkpKXRocm93IEVycm9yKGEoNjUsaSkpO3llW2ldPSEwfXZhciB1PWUucHJvcHM7aWYoImlucHV0Ij09PWkpdT1yKHt0eXBlOnZvaWQgMH0sdSx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9dS52YWx1ZT91LnZhbHVlOnUuZGVmYXVsdFZhbHVlLGNoZWNrZWQ6bnVsbCE9dS5jaGVja2VkP3UuY2hlY2tlZDp1LmRlZmF1bHRDaGVja2VkfSk7ZWxzZSBpZigidGV4dGFyZWEiPT09aSl7dmFyIHM9dS52YWx1ZTtpZihudWxsPT1zKXtzPXUuZGVmYXVsdFZhbHVlO3ZhciBsPXUuY2hpbGRyZW47aWYobnVsbCE9bCl7aWYobnVsbCE9cyl0aHJvdyBFcnJvcihhKDkyKSk7aWYoQXJyYXkuaXNBcnJheShsKSl7aWYoISgxPj1sLmxlbmd0aCkpdGhyb3cgRXJyb3IoYSg5MykpO2w9bFswXX1zPSIiK2x9bnVsbD09cyYmKHM9IiIpfXU9cih7fSx1LHt2YWx1ZTp2b2lkIDAsY2hpbGRyZW46IiIrc30pfWVsc2UgaWYoInNlbGVjdCI9PT1pKXRoaXMuY3VycmVudFNlbGVjdFZhbHVlPW51bGwhPXUudmFsdWU/dS52YWx1ZTp1LmRlZmF1bHRWYWx1ZSx1PXIoe30sdSx7dmFsdWU6dm9pZCAwfSk7ZWxzZSBpZigib3B0aW9uIj09PWkpe2w9dGhpcy5jdXJyZW50U2VsZWN0VmFsdWU7dmFyIGM9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgdD0iIjtyZXR1cm4gby5DaGlsZHJlbi5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe251bGwhPWUmJih0Kz1lKX0pKSx0fSh1LmNoaWxkcmVuKTtpZihudWxsIT1sKXt2YXIgZj1udWxsIT11LnZhbHVlP3UudmFsdWUrIiI6YztpZihzPSExLEFycmF5LmlzQXJyYXkobCkpe2Zvcih2YXIgZD0wO2Q8bC5sZW5ndGg7ZCsrKWlmKCIiK2xbZF09PT1mKXtzPSEwO2JyZWFrfX1lbHNlIHM9IiIrbD09PWY7dT1yKHtzZWxlY3RlZDp2b2lkIDAsY2hpbGRyZW46dm9pZCAwfSx1LHtzZWxlY3RlZDpzLGNoaWxkcmVuOmN9KX19aWYocz11KXtpZihpZVtpXSYmKG51bGwhPXMuY2hpbGRyZW58fG51bGwhPXMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKGEoMTM3LGksIiIpKTtpZihudWxsIT1zLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT1zLmNoaWxkcmVuKXRocm93IEVycm9yKGEoNjApKTtpZighKCJvYmplY3QiPT10eXBlb2Ygcy5kYW5nZXJvdXNseVNldElubmVySFRNTCYmIl9faHRtbCJpbiBzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihhKDYxKSl9aWYobnVsbCE9cy5zdHlsZSYmIm9iamVjdCIhPXR5cGVvZiBzLnN0eWxlKXRocm93IEVycm9yKGEoNjIsIiIpKX1mb3IodyBpbiBzPXUsbD10aGlzLm1ha2VTdGF0aWNNYXJrdXAsYz0xPT09dGhpcy5zdGFjay5sZW5ndGgsZj0iPCIrZS50eXBlLHMpaWYodmUuY2FsbChzLHcpKXt2YXIgcD1zW3ddO2lmKG51bGwhPXApe2lmKCJzdHlsZSI9PT13KXtkPXZvaWQgMDt2YXIgaD0iIix5PSIiO2ZvcihkIGluIHApaWYocC5oYXNPd25Qcm9wZXJ0eShkKSl7dmFyIG09MD09PWQuaW5kZXhPZigiLS0iKSx2PXBbZF07aWYobnVsbCE9dil7aWYobSl2YXIgZz1kO2Vsc2UgaWYoZz1kLG1lLmhhc093blByb3BlcnR5KGcpKWc9bWVbZ107ZWxzZXt2YXIgYj1nLnJlcGxhY2UobGUsIi0kMSIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZShjZSwiLW1zLSIpO2c9bWVbZ109Yn1oKz15K2crIjoiLHk9ZCxoKz1tPW51bGw9PXZ8fCJib29sZWFuIj09dHlwZW9mIHZ8fCIiPT09dj8iIjptfHwibnVtYmVyIiE9dHlwZW9mIHZ8fDA9PT12fHx1ZS5oYXNPd25Qcm9wZXJ0eSh5KSYmdWVbeV0/KCIiK3YpLnRyaW0oKTp2KyJweCIseT0iOyJ9fXA9aHx8bnVsbH1kPW51bGw7ZTppZihtPWksdj1zLC0xPT09bS5pbmRleE9mKCItIikpbT0ic3RyaW5nIj09dHlwZW9mIHYuaXM7ZWxzZSBzd2l0Y2gobSl7Y2FzZSJhbm5vdGF0aW9uLXhtbCI6Y2FzZSJjb2xvci1wcm9maWxlIjpjYXNlImZvbnQtZmFjZSI6Y2FzZSJmb250LWZhY2Utc3JjIjpjYXNlImZvbnQtZmFjZS11cmkiOmNhc2UiZm9udC1mYWNlLWZvcm1hdCI6Y2FzZSJmb250LWZhY2UtbmFtZSI6Y2FzZSJtaXNzaW5nLWdseXBoIjptPSExO2JyZWFrIGU7ZGVmYXVsdDptPSEwfW0/Z2UuaGFzT3duUHJvcGVydHkodyl8fChkPVAoZD13KSYmbnVsbCE9cD9kKyc9IicrQShwKSsnIic6IiIpOmQ9Rih3LHApLGQmJihmKz0iICIrZCl9fWx8fGMmJihmKz0nIGRhdGEtcmVhY3Ryb290PSIiJyk7dmFyIHc9ZjtzPSIiLGFlLmhhc093blByb3BlcnR5KGkpP3crPSIvPiI6KHcrPSI+IixzPSI8LyIrZS50eXBlKyI+Iik7ZTp7aWYobnVsbCE9KGw9dS5kYW5nZXJvdXNseVNldElubmVySFRNTCkpe2lmKG51bGwhPWwuX19odG1sKXtsPWwuX19odG1sO2JyZWFrIGV9fWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZihsPXUuY2hpbGRyZW4pfHwibnVtYmVyIj09dHlwZW9mIGwpe2w9QShsKTticmVhayBlfWw9bnVsbH1yZXR1cm4gbnVsbCE9bD8odT1bXSxwZVtpXSYmIlxuIj09PWwuY2hhckF0KDApJiYodys9IlxuIiksdys9bCk6dT1mZSh1LmNoaWxkcmVuKSxlPWUudHlwZSxuPW51bGw9PW58fCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PW4/b2UoZSk6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj09PW4mJiJmb3JlaWduT2JqZWN0Ij09PWU/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOm4sdGhpcy5zdGFjay5wdXNoKHtkb21OYW1lc3BhY2U6bix0eXBlOmksY2hpbGRyZW46dSxjaGlsZEluZGV4OjAsY29udGV4dDp0LGZvb3RlcjpzfSksdGhpcy5wcmV2aW91c1dhc1RleHROb2RlPSExLHd9LGV9KCksRWU9e3JlbmRlclRvU3RyaW5nOmZ1bmN0aW9uKGUpe2U9bmV3IF9lKGUsITEpO3RyeXtyZXR1cm4gZS5yZWFkKDEvMCl9ZmluYWxseXtlLmRlc3Ryb3koKX19LHJlbmRlclRvU3RhdGljTWFya3VwOmZ1bmN0aW9uKGUpe2U9bmV3IF9lKGUsITApO3RyeXtyZXR1cm4gZS5yZWFkKDEvMCl9ZmluYWxseXtlLmRlc3Ryb3koKX19LHJlbmRlclRvTm9kZVN0cmVhbTpmdW5jdGlvbigpe3Rocm93IEVycm9yKGEoMjA3KSl9LHJlbmRlclRvU3RhdGljTm9kZVN0cmVhbTpmdW5jdGlvbigpe3Rocm93IEVycm9yKGEoMjA4KSl9LHZlcnNpb246IjE2LjEyLjAifSxPZT17ZGVmYXVsdDpFZX0sa2U9T2UmJkVlfHxPZTtlLmV4cG9ydHM9a2UuZGVmYXVsdHx8a2V9LElTUjA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJncm5nIiksbz1uKCJmeU9ZIiksYT1uKCIzc09KIiksaT1uKCJpOGk0IiksdT1uKCJrYzlZIikscz1uKCJGMDl3IiksbD1uKCJIS1M1IiksYz1uKCI1UlNpIiksZj1uKCJXYUdDIiksZD1uKCJUNDAxIikscD1uKCJxeXN2Iik7dmFyIGg9e29uRHJhZ0VuZDpmdW5jdGlvbihlKXtlLmV4aXRDdXJyZW50TW9kZSgpLHkoZSl9LG9uRHJvcDpmdW5jdGlvbihlLHQpe3ZhciBuPW5ldyByKHQubmF0aXZlRXZlbnQuZGF0YVRyYW5zZmVyKSxpPWUuX2xhdGVzdEVkaXRvclN0YXRlLGY9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbCxvPXMoZS5jdXJyZW50VGFyZ2V0KTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygby5jYXJldFJhbmdlRnJvbVBvaW50KXt2YXIgYT1vLmNhcmV0UmFuZ2VGcm9tUG9pbnQoZS54LGUueSk7bj1hLnN0YXJ0Q29udGFpbmVyLHI9YS5zdGFydE9mZnNldH1lbHNle2lmKCFlLnJhbmdlUGFyZW50KXJldHVybiBudWxsO249ZS5yYW5nZVBhcmVudCxyPWUucmFuZ2VPZmZzZXR9bj1wKG4pLHI9cChyKTt2YXIgaT1wKHUobikpO3JldHVybiBjKHQsaSxyLGkscil9KHQubmF0aXZlRXZlbnQsaSk7aWYodC5wcmV2ZW50RGVmYXVsdCgpLGUuX2RyYWdDb3VudD0wLGUuZXhpdEN1cnJlbnRNb2RlKCksbnVsbCE9Zil7dmFyIGg9bi5nZXRGaWxlcygpO2lmKGgubGVuZ3RoPjApe2lmKGUucHJvcHMuaGFuZGxlRHJvcHBlZEZpbGVzJiZkKGUucHJvcHMuaGFuZGxlRHJvcHBlZEZpbGVzKGYsaCkpKXJldHVybjtsKGgsKGZ1bmN0aW9uKHQpe3QmJmUudXBkYXRlKG0oaSxmLHQpKX0pKX1lbHNle3ZhciB2PWUuX2ludGVybmFsRHJhZz8iaW50ZXJuYWwiOiJleHRlcm5hbCI7ZS5wcm9wcy5oYW5kbGVEcm9wJiZkKGUucHJvcHMuaGFuZGxlRHJvcChmLG4sdikpfHwoZS5faW50ZXJuYWxEcmFnP2UudXBkYXRlKGZ1bmN0aW9uKGUsdCl7dmFyIG49by5tb3ZlVGV4dChlLmdldEN1cnJlbnRDb250ZW50KCksZS5nZXRTZWxlY3Rpb24oKSx0KTtyZXR1cm4gYS5wdXNoKGUsbiwiaW5zZXJ0LWZyYWdtZW50Iil9KGksZikpOmUudXBkYXRlKG0oaSxmLG4uZ2V0VGV4dCgpKSkpLHkoZSl9fX19O2Z1bmN0aW9uIHkoZSl7ZS5faW50ZXJuYWxEcmFnPSExO3ZhciB0PWkuZmluZERPTU5vZGUoZSk7aWYodCl7dmFyIG49bmV3IE1vdXNlRXZlbnQoIm1vdXNldXAiLHt2aWV3OmYodCksYnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7dC5kaXNwYXRjaEV2ZW50KG4pfX1mdW5jdGlvbiBtKGUsdCxuKXt2YXIgcj1vLmluc2VydFRleHQoZS5nZXRDdXJyZW50Q29udGVudCgpLHQsbixlLmdldEN1cnJlbnRJbmxpbmVTdHlsZSgpKTtyZXR1cm4gYS5wdXNoKGUsciwiaW5zZXJ0LWZyYWdtZW50Iil9ZS5leHBvcnRzPWh9LElTZWU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJrYzlZIiksbz1uKCJ6T1JnIiksYT1uKCI1UlNpIiksaT1uKCJtRnlWIiksdT1uKCJHeU9mIikscz1uKCJxeXN2Iik7ZnVuY3Rpb24gbChlLHQsbil7dmFyIGE9dCxsPXIoYSk7KG51bGwhPWx8fGUmJihlPT09YXx8ZS5maXJzdENoaWxkPT09YSl8fGkoITEpLGU9PT1hKSYmKGE9YS5maXJzdENoaWxkLHUoYSl8fGkoITEpLCJ0cnVlIiE9PShhPWEpLmdldEF0dHJpYnV0ZSgiZGF0YS1jb250ZW50cyIpJiZpKCExKSxuPjAmJihuPWEuY2hpbGROb2Rlcy5sZW5ndGgpKTtpZigwPT09bil7dmFyIGY9bnVsbDtpZihudWxsIT1sKWY9bDtlbHNle3ZhciBkPWZ1bmN0aW9uKGUpe2Zvcig7ZS5maXJzdENoaWxkJiYodShlLmZpcnN0Q2hpbGQpJiYidHJ1ZSI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJkYXRhLWJsb2NrcyIpfHxvKGUuZmlyc3RDaGlsZCkpOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX0oYSk7Zj1zKG8oZCkpfXJldHVybntrZXk6ZixvZmZzZXQ6MH19dmFyIHA9YS5jaGlsZE5vZGVzW24tMV0saD1udWxsLHk9bnVsbDtpZihvKHApKXt2YXIgbT1mdW5jdGlvbihlKXtmb3IoO2UubGFzdENoaWxkJiYodShlLmxhc3RDaGlsZCkmJiJ0cnVlIj09PWUubGFzdENoaWxkLmdldEF0dHJpYnV0ZSgiZGF0YS1ibG9ja3MiKXx8byhlLmxhc3RDaGlsZCkpOyllPWUubGFzdENoaWxkO3JldHVybiBlfShwKTtoPXMobyhtKSkseT1jKG0pfWVsc2UgaD1zKGwpLHk9YyhwKTtyZXR1cm57a2V5Omgsb2Zmc2V0Onl9fWZ1bmN0aW9uIGMoZSl7dmFyIHQ9ZS50ZXh0Q29udGVudDtyZXR1cm4iXG4iPT09dD8wOnQubGVuZ3RofWUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixvLGksdSl7dmFyIGM9bi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFLGY9aS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFO2lmKGMmJmYpcmV0dXJue3NlbGVjdGlvblN0YXRlOmEoZSxzKHIobikpLG8scyhyKGkpKSx1KSxuZWVkc1JlY292ZXJ5OiExfTt2YXIgZD1udWxsLHA9bnVsbCxoPSEwO3JldHVybiBjPyhkPXtrZXk6cyhyKG4pKSxvZmZzZXQ6b30scD1sKHQsaSx1KSk6Zj8ocD17a2V5OnMocihpKSksb2Zmc2V0OnV9LGQ9bCh0LG4sbykpOihkPWwodCxuLG8pLHA9bCh0LGksdSksbj09PWkmJm89PT11JiYoaD0hIW4uZmlyc3RDaGlsZCYmIkJSIiE9PW4uZmlyc3RDaGlsZC5ub2RlTmFtZSkpLHtzZWxlY3Rpb25TdGF0ZTphKGUsZC5rZXksZC5vZmZzZXQscC5rZXkscC5vZmZzZXQpLG5lZWRzUmVjb3Zlcnk6aH19fSxJZHRxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiY3dGWSIpKCJkcmFmdF90cmVlX2RhdGFfc3VwcG9ydCIpO2UuZXhwb3J0cz1uKHI/IllyRmoiOiJZM1BRIil9LElnRTU6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0LG4sYSl7dmFyIGk9dC5jbG9uZSgpLnN0YXJ0T2YoIm1vbnRoIik7YSYmKGk9aS5zdGFydE9mKCJ3ZWVrIikpO2lmKCgwLHIuZGVmYXVsdCkoZSxpKSlyZXR1cm4hMTt2YXIgdT10LmNsb25lKCkuYWRkKG4tMSwibW9udGhzIikuZW5kT2YoIm1vbnRoIik7YSYmKHU9dS5lbmRPZigid2VlayIpKTtyZXR1cm4hKDAsby5kZWZhdWx0KShlLHUpfTt2YXIgcj1hKG4oImg2eEgiKSksbz1hKG4oIk5obzYiKSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSxJaTlWOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oIlRWTEUiKX0sSWpiaTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPW5ldyBBcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufX19LElxOEU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17ZW5jb2RlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsiLSIrdCsiLSIrbn0sZGVjb2RlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc3BsaXQoIi0iKS5yZXZlcnNlKCksbj10WzBdLHI9dFsxXTtyZXR1cm57YmxvY2tLZXk6dC5zbGljZSgyKS5yZXZlcnNlKCkuam9pbigiLSIpLGRlY29yYXRvcktleTpwYXJzZUludChyLDEwKSxsZWFmS2V5OnBhcnNlSW50KG4sMTApfX19O2UuZXhwb3J0cz1yfSxJcWJHOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PShlP2Uub3duZXJEb2N1bWVudHx8ZTpkb2N1bWVudCkuZGVmYXVsdFZpZXd8fHdpbmRvdztyZXR1cm4hKCFlfHwhKCJmdW5jdGlvbiI9PXR5cGVvZiB0Lk5vZGU/ZSBpbnN0YW5jZW9mIHQuTm9kZToib2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5ub2RlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBlLm5vZGVOYW1lKSl9fSwiSXZpKyI6ZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5kZWZpbmVMb2NhbGUoImtvIix7bW9udGhzOiIx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNwbGl0KCJfIiksd2Vla2RheXM6IuydvOyalOydvF/sm5TsmpTsnbxf7ZmU7JqU7J28X+yImOyalOydvF/rqqnsmpTsnbxf6riI7JqU7J28X+2GoOyalOydvCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSIsTFRTOiJBIGg6bW06c3MiLEw6IllZWVkuTU0uREQuIixMTDoiWVlZWeuFhCBNTU1NIETsnbwiLExMTDoiWVlZWeuFhCBNTU1NIETsnbwgQSBoOm1tIixMTExMOiJZWVlZ64WEIE1NTU0gROydvCBkZGRkIEEgaDptbSIsbDoiWVlZWS5NTS5ERC4iLGxsOiJZWVlZ64WEIE1NTU0gROydvCIsbGxsOiJZWVlZ64WEIE1NTU0gROydvCBBIGg6bW0iLGxsbGw6IllZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBoOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IuyYpOuKmCBMVCIsbmV4dERheToi64K07J28IExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToi7Ja07KCcIExUIixsYXN0V2Vlazoi7KeA64Kc7KO8IGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIO2bhCIscGFzdDoiJXMg7KCEIixzOiLrqocg7LSIIixzczoiJWTstIgiLG06IjHrtoQiLG1tOiIlZOu2hCIsaDoi7ZWcIOyLnOqwhCIsaGg6IiVk7Iuc6rCEIixkOiLtlZjro6giLGRkOiIlZOydvCIsTToi7ZWcIOuLrCIsTU06IiVk64usIix5OiLsnbwg64WEIix5eToiJWTrhYQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KOydvHzsm5R87KO8KS8sb3JkaW5hbDpmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBlKyLsnbwiO2Nhc2UiTSI6cmV0dXJuIGUrIuyblCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBlKyLso7wiO2RlZmF1bHQ6cmV0dXJuIGV9fSxtZXJpZGllbVBhcnNlOi/smKTsoIR87Jik7ZuELyxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiLsmKTtm4QiPT09ZX0sbWVyaWRpZW06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPDEyPyLsmKTsoIQiOiLsmKTtm4QifX0pfShuKCJ3ZC9SIikpfSxKNHpwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJ3VFZBIiksbz1uKCJtMExJIiksYT1uKCJ3a0JUIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSl8fG8oZSx0KXx8YSgpfX0sIkpJK0UiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiM3NPSiIpLG89bigiVzVBUyIpLGE9bigiN05seCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXQuY3VycmVudFRhcmdldC5vd25lckRvY3VtZW50O2lmKCFCb29sZWFuKGUucHJvcHMucHJlc2VydmVTZWxlY3Rpb25PbkJsdXIpJiZhKG4pPT09bi5ib2R5KXt2YXIgaT1uLmRlZmF1bHRWaWV3LmdldFNlbGVjdGlvbigpLHU9ZS5lZGl0b3I7MT09PWkucmFuZ2VDb3VudCYmbyh1LGkuYW5jaG9yTm9kZSkmJm8odSxpLmZvY3VzTm9kZSkmJmkucmVtb3ZlQWxsUmFuZ2VzKCl9dmFyIHM9ZS5fbGF0ZXN0RWRpdG9yU3RhdGUsbD1zLmdldFNlbGVjdGlvbigpO2lmKGwuZ2V0SGFzRm9jdXMoKSl7dmFyIGM9bC5zZXQoImhhc0ZvY3VzIiwhMSk7ZS5wcm9wcy5vbkJsdXImJmUucHJvcHMub25CbHVyKHQpLGUudXBkYXRlKHIuYWNjZXB0U2VsZWN0aW9uKHMsYykpfX19LEpMN1Q6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJsRkpuIiksbz1uKCJUYWplIiksYT1uKCJKUGN2IiksaT1hLkxpc3QsdT1hLk1hcCxzPWEuT3JkZXJlZFNldCxsPWEuUmVjb3JkLGM9YS5SZXBlYXQsZj1zKCksZD17cGFyZW50Om51bGwsY2hhcmFjdGVyTGlzdDppKCksZGF0YTp1KCksZGVwdGg6MCxrZXk6IiIsdGV4dDoiIix0eXBlOiJ1bnN0eWxlZCIsY2hpbGRyZW46aSgpLHByZXZTaWJsaW5nOm51bGwsbmV4dFNpYmxpbmc6bnVsbH0scD1mdW5jdGlvbihlLHQpe3JldHVybiBlLmdldFN0eWxlKCk9PT10LmdldFN0eWxlKCl9LGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRFbnRpdHkoKT09PXQuZ2V0RW50aXR5KCl9LHk9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGU7dmFyIHQ9ZS5jaGFyYWN0ZXJMaXN0LG49ZS50ZXh0O3JldHVybiBuJiYhdCYmKGUuY2hhcmFjdGVyTGlzdD1pKGMoci5FTVBUWSxuLmxlbmd0aCkpKSxlfSxtPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gcigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpkO3JldHVybiBlLmNhbGwodGhpcyx5KHQpKXx8dGhpc31uPWUsKHQ9cikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgYT1yLnByb3RvdHlwZTtyZXR1cm4gYS5nZXRLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImtleSIpfSxhLmdldFR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoInR5cGUiKX0sYS5nZXRUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJ0ZXh0Iil9LGEuZ2V0Q2hhcmFjdGVyTGlzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgiY2hhcmFjdGVyTGlzdCIpfSxhLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRleHQoKS5sZW5ndGh9LGEuZ2V0RGVwdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImRlcHRoIil9LGEuZ2V0RGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgiZGF0YSIpfSxhLmdldElubGluZVN0eWxlQXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDaGFyYWN0ZXJMaXN0KCkuZ2V0KGUpO3JldHVybiB0P3QuZ2V0U3R5bGUoKTpmfSxhLmdldEVudGl0eUF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0Q2hhcmFjdGVyTGlzdCgpLmdldChlKTtyZXR1cm4gdD90LmdldEVudGl0eSgpOm51bGx9LGEuZ2V0Q2hpbGRLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJjaGlsZHJlbiIpfSxhLmdldFBhcmVudEtleT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgicGFyZW50Iil9LGEuZ2V0UHJldlNpYmxpbmdLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoInByZXZTaWJsaW5nIil9LGEuZ2V0TmV4dFNpYmxpbmdLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoIm5leHRTaWJsaW5nIil9LGEuZmluZFN0eWxlUmFuZ2VzPWZ1bmN0aW9uKGUsdCl7byh0aGlzLmdldENoYXJhY3Rlckxpc3QoKSxwLGUsdCl9LGEuZmluZEVudGl0eVJhbmdlcz1mdW5jdGlvbihlLHQpe28odGhpcy5nZXRDaGFyYWN0ZXJMaXN0KCksaCxlLHQpfSxyfShsKGQpKTtlLmV4cG9ydHM9bX0sSlBjdjpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiB0KGUsdCl7dCYmKGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGkoZSk/ZTpxKGUpfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIHUoZSk/ZTpWKGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHMoZSk/ZTpVKGUpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGkoZSkmJiFsKGUpP2U6VyhlKX1mdW5jdGlvbiBpKGUpe3JldHVybiEoIWV8fCFlW2ZdKX1mdW5jdGlvbiB1KGUpe3JldHVybiEoIWV8fCFlW2RdKX1mdW5jdGlvbiBzKGUpe3JldHVybiEoIWV8fCFlW3BdKX1mdW5jdGlvbiBsKGUpe3JldHVybiB1KGUpfHxzKGUpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuISghZXx8IWVbaF0pfXQocixuKSx0KG8sbiksdChhLG4pLG4uaXNJdGVyYWJsZT1pLG4uaXNLZXllZD11LG4uaXNJbmRleGVkPXMsbi5pc0Fzc29jaWF0aXZlPWwsbi5pc09yZGVyZWQ9YyxuLktleWVkPXIsbi5JbmRleGVkPW8sbi5TZXQ9YTt2YXIgZj0iQEBfX0lNTVVUQUJMRV9JVEVSQUJMRV9fQEAiLGQ9IkBAX19JTU1VVEFCTEVfS0VZRURfX0BAIixwPSJAQF9fSU1NVVRBQkxFX0lOREVYRURfX0BAIixoPSJAQF9fSU1NVVRBQkxFX09SREVSRURfX0BAIix5PXt9LG09e3ZhbHVlOiExfSx2PXt2YWx1ZTohMX07ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZS52YWx1ZT0hMSxlfWZ1bmN0aW9uIGIoZSl7ZSYmKGUudmFsdWU9ITApfWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gXyhlLHQpe3Q9dHx8MDtmb3IodmFyIG49TWF0aC5tYXgoMCxlLmxlbmd0aC10KSxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylyW29dPWVbbyt0XTtyZXR1cm4gcn1mdW5jdGlvbiBFKGUpe3JldHVybiB2b2lkIDA9PT1lLnNpemUmJihlLnNpemU9ZS5fX2l0ZXJhdGUoaykpLGUuc2l6ZX1mdW5jdGlvbiBPKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0KXt2YXIgbj10Pj4+MDtpZigiIituIT09dHx8NDI5NDk2NzI5NT09PW4pcmV0dXJuIE5hTjt0PW59cmV0dXJuIHQ8MD9FKGUpK3Q6dH1mdW5jdGlvbiBrKCl7cmV0dXJuITB9ZnVuY3Rpb24gQyhlLHQsbil7cmV0dXJuKDA9PT1lfHx2b2lkIDAhPT1uJiZlPD0tbikmJih2b2lkIDA9PT10fHx2b2lkIDAhPT1uJiZ0Pj1uKX1mdW5jdGlvbiB4KGUsdCl7cmV0dXJuIEQoZSx0LDApfWZ1bmN0aW9uIFMoZSx0KXtyZXR1cm4gRChlLHQsdCl9ZnVuY3Rpb24gRChlLHQsbil7cmV0dXJuIHZvaWQgMD09PWU/bjplPDA/TWF0aC5tYXgoMCx0K2UpOnZvaWQgMD09PXQ/ZTpNYXRoLm1pbih0LGUpfXZhciBULE0sUCxOPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixqPU58fCJAQGl0ZXJhdG9yIjtmdW5jdGlvbiBMKGUpe3RoaXMubmV4dD1lfWZ1bmN0aW9uIFIoZSx0LG4scil7dmFyIG89MD09PWU/dDoxPT09ZT9uOlt0LG5dO3JldHVybiByP3IudmFsdWU9bzpyPXt2YWx1ZTpvLGRvbmU6ITF9LHJ9ZnVuY3Rpb24gSSgpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19ZnVuY3Rpb24gQShlKXtyZXR1cm4hIXooZSl9ZnVuY3Rpb24gRihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dH1mdW5jdGlvbiBCKGUpe3ZhciB0PXooZSk7cmV0dXJuIHQmJnQuY2FsbChlKX1mdW5jdGlvbiB6KGUpe3ZhciB0PWUmJihOJiZlW05dfHxlWyJAQGl0ZXJhdG9yIl0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fWZ1bmN0aW9uIEsoZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGh9ZnVuY3Rpb24gcShlKXtyZXR1cm4gbnVsbD09ZT9aKCk6aShlKT9lLnRvU2VxKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZWUoZSl8fCJvYmplY3QiPT10eXBlb2YgZSYmbmV3IEgoZSk7aWYoIXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgQXJyYXkgb3IgaXRlcmFibGUgb2JqZWN0IG9mIHZhbHVlcywgb3Iga2V5ZWQgb2JqZWN0OiAiK2UpO3JldHVybiB0fShlKX1mdW5jdGlvbiBWKGUpe3JldHVybiBudWxsPT1lP1ooKS50b0tleWVkU2VxKCk6aShlKT91KGUpP2UudG9TZXEoKTplLmZyb21FbnRyeVNlcSgpOiQoZSl9ZnVuY3Rpb24gVShlKXtyZXR1cm4gbnVsbD09ZT9aKCk6aShlKT91KGUpP2UuZW50cnlTZXEoKTplLnRvSW5kZXhlZFNlcSgpOlgoZSl9ZnVuY3Rpb24gVyhlKXtyZXR1cm4obnVsbD09ZT9aKCk6aShlKT91KGUpP2UuZW50cnlTZXEoKTplOlgoZSkpLnRvU2V0U2VxKCl9ZnVuY3Rpb24gWShlKXt0aGlzLl9hcnJheT1lLHRoaXMuc2l6ZT1lLmxlbmd0aH1mdW5jdGlvbiBIKGUpe3ZhciB0PU9iamVjdC5rZXlzKGUpO3RoaXMuX29iamVjdD1lLHRoaXMuX2tleXM9dCx0aGlzLnNpemU9dC5sZW5ndGh9ZnVuY3Rpb24gRyhlKXt0aGlzLl9pdGVyYWJsZT1lLHRoaXMuc2l6ZT1lLmxlbmd0aHx8ZS5zaXplfWZ1bmN0aW9uIFEoZSl7dGhpcy5faXRlcmF0b3I9ZSx0aGlzLl9pdGVyYXRvckNhY2hlPVtdfWZ1bmN0aW9uIEooZSl7cmV0dXJuISghZXx8IWVbIkBAX19JTU1VVEFCTEVfU0VRX19AQCJdKX1mdW5jdGlvbiBaKCl7cmV0dXJuIFR8fChUPW5ldyBZKFtdKSl9ZnVuY3Rpb24gJChlKXt2YXIgdD1BcnJheS5pc0FycmF5KGUpP25ldyBZKGUpLmZyb21FbnRyeVNlcSgpOkYoZSk/bmV3IFEoZSkuZnJvbUVudHJ5U2VxKCk6QShlKT9uZXcgRyhlKS5mcm9tRW50cnlTZXEoKToib2JqZWN0Ij09dHlwZW9mIGU/bmV3IEgoZSk6dm9pZCAwO2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIEFycmF5IG9yIGl0ZXJhYmxlIG9iamVjdCBvZiBbaywgdl0gZW50cmllcywgb3Iga2V5ZWQgb2JqZWN0OiAiK2UpO3JldHVybiB0fWZ1bmN0aW9uIFgoZSl7dmFyIHQ9ZWUoZSk7aWYoIXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgQXJyYXkgb3IgaXRlcmFibGUgb2JqZWN0IG9mIHZhbHVlczogIitlKTtyZXR1cm4gdH1mdW5jdGlvbiBlZShlKXtyZXR1cm4gSyhlKT9uZXcgWShlKTpGKGUpP25ldyBRKGUpOkEoZSk/bmV3IEcoZSk6dm9pZCAwfWZ1bmN0aW9uIHRlKGUsdCxuLHIpe3ZhciBvPWUuX2NhY2hlO2lmKG8pe2Zvcih2YXIgYT1vLmxlbmd0aC0xLGk9MDtpPD1hO2krKyl7dmFyIHU9b1tuP2EtaTppXTtpZighMT09PXQodVsxXSxyP3VbMF06aSxlKSlyZXR1cm4gaSsxfXJldHVybiBpfXJldHVybiBlLl9faXRlcmF0ZVVuY2FjaGVkKHQsbil9ZnVuY3Rpb24gbmUoZSx0LG4scil7dmFyIG89ZS5fY2FjaGU7aWYobyl7dmFyIGE9by5sZW5ndGgtMSxpPTA7cmV0dXJuIG5ldyBMKChmdW5jdGlvbigpe3ZhciBlPW9bbj9hLWk6aV07cmV0dXJuIGkrKz5hP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06Uih0LHI/ZVswXTppLTEsZVsxXSl9KSl9cmV0dXJuIGUuX19pdGVyYXRvclVuY2FjaGVkKHQsbil9ZnVuY3Rpb24gcmUoZSx0KXtyZXR1cm4gdD9mdW5jdGlvbiBlKHQsbixyLG8pe3JldHVybiBBcnJheS5pc0FycmF5KG4pP3QuY2FsbChvLHIsVShuKS5tYXAoKGZ1bmN0aW9uKHIsbyl7cmV0dXJuIGUodCxyLG8sbil9KSkpOmFlKG4pP3QuY2FsbChvLHIsVihuKS5tYXAoKGZ1bmN0aW9uKHIsbyl7cmV0dXJuIGUodCxyLG8sbil9KSkpOm59KHQsZSwiIix7IiI6ZX0pOm9lKGUpfWZ1bmN0aW9uIG9lKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP1UoZSkubWFwKG9lKS50b0xpc3QoKTphZShlKT9WKGUpLm1hcChvZSkudG9NYXAoKTplfWZ1bmN0aW9uIGFlKGUpe3JldHVybiBlJiYoZS5jb25zdHJ1Y3Rvcj09PU9iamVjdHx8dm9pZCAwPT09ZS5jb25zdHJ1Y3Rvcil9ZnVuY3Rpb24gaWUoZSx0KXtpZihlPT09dHx8ZSE9ZSYmdCE9dClyZXR1cm4hMDtpZighZXx8IXQpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUudmFsdWVPZiYmImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZil7aWYoKGU9ZS52YWx1ZU9mKCkpPT09KHQ9dC52YWx1ZU9mKCkpfHxlIT1lJiZ0IT10KXJldHVybiEwO2lmKCFlfHwhdClyZXR1cm4hMX1yZXR1cm4hKCJmdW5jdGlvbiIhPXR5cGVvZiBlLmVxdWFsc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIHQuZXF1YWxzfHwhZS5lcXVhbHModCkpfWZ1bmN0aW9uIHVlKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7aWYoIWkodCl8fHZvaWQgMCE9PWUuc2l6ZSYmdm9pZCAwIT09dC5zaXplJiZlLnNpemUhPT10LnNpemV8fHZvaWQgMCE9PWUuX19oYXNoJiZ2b2lkIDAhPT10Ll9faGFzaCYmZS5fX2hhc2ghPT10Ll9faGFzaHx8dShlKSE9PXUodCl8fHMoZSkhPT1zKHQpfHxjKGUpIT09Yyh0KSlyZXR1cm4hMTtpZigwPT09ZS5zaXplJiYwPT09dC5zaXplKXJldHVybiEwO3ZhciBuPSFsKGUpO2lmKGMoZSkpe3ZhciByPWUuZW50cmllcygpO3JldHVybiB0LmV2ZXJ5KChmdW5jdGlvbihlLHQpe3ZhciBvPXIubmV4dCgpLnZhbHVlO3JldHVybiBvJiZpZShvWzFdLGUpJiYobnx8aWUob1swXSx0KSl9KSkmJnIubmV4dCgpLmRvbmV9dmFyIG89ITE7aWYodm9pZCAwPT09ZS5zaXplKWlmKHZvaWQgMD09PXQuc2l6ZSkiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWNoZVJlc3VsdCYmZS5jYWNoZVJlc3VsdCgpO2Vsc2V7bz0hMDt2YXIgYT1lO2U9dCx0PWF9dmFyIGY9ITAsZD10Ll9faXRlcmF0ZSgoZnVuY3Rpb24odCxyKXtpZihuPyFlLmhhcyh0KTpvPyFpZSh0LGUuZ2V0KHIseSkpOiFpZShlLmdldChyLHkpLHQpKXJldHVybiBmPSExLCExfSkpO3JldHVybiBmJiZlLnNpemU9PT1kfWZ1bmN0aW9uIHNlKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2Ygc2UpKXJldHVybiBuZXcgc2UoZSx0KTtpZih0aGlzLl92YWx1ZT1lLHRoaXMuc2l6ZT12b2lkIDA9PT10PzEvMDpNYXRoLm1heCgwLHQpLDA9PT10aGlzLnNpemUpe2lmKE0pcmV0dXJuIE07TT10aGlzfX1mdW5jdGlvbiBsZShlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0KX1mdW5jdGlvbiBjZShlLHQsbil7aWYoISh0aGlzIGluc3RhbmNlb2YgY2UpKXJldHVybiBuZXcgY2UoZSx0LG4pO2lmKGxlKDAhPT1uLCJDYW5ub3Qgc3RlcCBhIFJhbmdlIGJ5IDAiKSxlPWV8fDAsdm9pZCAwPT09dCYmKHQ9MS8wKSxuPXZvaWQgMD09PW4/MTpNYXRoLmFicyhuKSx0PGUmJihuPS1uKSx0aGlzLl9zdGFydD1lLHRoaXMuX2VuZD10LHRoaXMuX3N0ZXA9bix0aGlzLnNpemU9TWF0aC5tYXgoMCxNYXRoLmNlaWwoKHQtZSkvbi0xKSsxKSwwPT09dGhpcy5zaXplKXtpZihQKXJldHVybiBQO1A9dGhpc319ZnVuY3Rpb24gZmUoKXt0aHJvdyBUeXBlRXJyb3IoIkFic3RyYWN0Iil9ZnVuY3Rpb24gZGUoKXt9ZnVuY3Rpb24gcGUoKXt9ZnVuY3Rpb24gaGUoKXt9TC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW0l0ZXJhdG9yXSJ9LEwuS0VZUz0wLEwuVkFMVUVTPTEsTC5FTlRSSUVTPTIsTC5wcm90b3R5cGUuaW5zcGVjdD1MLnByb3RvdHlwZS50b1NvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9LEwucHJvdG90eXBlW2pdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQocSxuKSxxLm9mPWZ1bmN0aW9uKCl7cmV0dXJuIHEoYXJndW1lbnRzKX0scS5wcm90b3R5cGUudG9TZXE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3RvU3RyaW5nKCJTZXEgeyIsIn0iKX0scS5wcm90b3R5cGUuY2FjaGVSZXN1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fY2FjaGUmJnRoaXMuX19pdGVyYXRlVW5jYWNoZWQmJih0aGlzLl9jYWNoZT10aGlzLmVudHJ5U2VxKCkudG9BcnJheSgpLHRoaXMuc2l6ZT10aGlzLl9jYWNoZS5sZW5ndGgpLHRoaXN9LHEucHJvdG90eXBlLl9faXRlcmF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0ZSh0aGlzLGUsdCwhMCl9LHEucHJvdG90eXBlLl9faXRlcmF0b3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmUodGhpcyxlLHQsITApfSx0KFYscSksVi5wcm90b3R5cGUudG9LZXllZFNlcT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0KFUscSksVS5vZj1mdW5jdGlvbigpe3JldHVybiBVKGFyZ3VtZW50cyl9LFUucHJvdG90eXBlLnRvSW5kZXhlZFNlcT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fdG9TdHJpbmcoIlNlcSBbIiwiXSIpfSxVLnByb3RvdHlwZS5fX2l0ZXJhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGUodGhpcyxlLHQsITEpfSxVLnByb3RvdHlwZS5fX2l0ZXJhdG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5lKHRoaXMsZSx0LCExKX0sdChXLHEpLFcub2Y9ZnVuY3Rpb24oKXtyZXR1cm4gVyhhcmd1bWVudHMpfSxXLnByb3RvdHlwZS50b1NldFNlcT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxxLmlzU2VxPUoscS5LZXllZD1WLHEuU2V0PVcscS5JbmRleGVkPVUscS5wcm90b3R5cGVbIkBAX19JTU1VVEFCTEVfU0VRX19AQCJdPSEwLHQoWSxVKSxZLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5oYXMoZSk/dGhpcy5fYXJyYXlbTyh0aGlzLGUpXTp0fSxZLnByb3RvdHlwZS5fX2l0ZXJhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fYXJyYXkscj1uLmxlbmd0aC0xLG89MDtvPD1yO28rKylpZighMT09PWUoblt0P3ItbzpvXSxvLHRoaXMpKXJldHVybiBvKzE7cmV0dXJuIG99LFkucHJvdG90eXBlLl9faXRlcmF0b3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9hcnJheSxyPW4ubGVuZ3RoLTEsbz0wO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXtyZXR1cm4gbz5yP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06UihlLG8sblt0P3ItbysrOm8rK10pfSkpfSx0KEgsViksSC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXR8fHRoaXMuaGFzKGUpP3RoaXMuX29iamVjdFtlXTp0fSxILnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX29iamVjdC5oYXNPd25Qcm9wZXJ0eShlKX0sSC5wcm90b3R5cGUuX19pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMuX29iamVjdCxyPXRoaXMuX2tleXMsbz1yLmxlbmd0aC0xLGE9MDthPD1vO2ErKyl7dmFyIGk9clt0P28tYTphXTtpZighMT09PWUobltpXSxpLHRoaXMpKXJldHVybiBhKzF9cmV0dXJuIGF9LEgucHJvdG90eXBlLl9faXRlcmF0b3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9vYmplY3Qscj10aGlzLl9rZXlzLG89ci5sZW5ndGgtMSxhPTA7cmV0dXJuIG5ldyBMKChmdW5jdGlvbigpe3ZhciBpPXJbdD9vLWE6YV07cmV0dXJuIGErKz5vP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06UihlLGksbltpXSl9KSl9LEgucHJvdG90eXBlW2hdPSEwLHQoRyxVKSxHLnByb3RvdHlwZS5fX2l0ZXJhdGVVbmNhY2hlZD1mdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHRoaXMuY2FjaGVSZXN1bHQoKS5fX2l0ZXJhdGUoZSx0KTt2YXIgbj1CKHRoaXMuX2l0ZXJhYmxlKSxyPTA7aWYoRihuKSlmb3IodmFyIG87IShvPW4ubmV4dCgpKS5kb25lJiYhMSE9PWUoby52YWx1ZSxyKyssdGhpcyk7KTtyZXR1cm4gcn0sRy5wcm90b3R5cGUuX19pdGVyYXRvclVuY2FjaGVkPWZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdGhpcy5jYWNoZVJlc3VsdCgpLl9faXRlcmF0b3IoZSx0KTt2YXIgbj1CKHRoaXMuX2l0ZXJhYmxlKTtpZighRihuKSlyZXR1cm4gbmV3IEwoSSk7dmFyIHI9MDtyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5uZXh0KCk7cmV0dXJuIHQuZG9uZT90OlIoZSxyKyssdC52YWx1ZSl9KSl9LHQoUSxVKSxRLnByb3RvdHlwZS5fX2l0ZXJhdGVVbmNhY2hlZD1mdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHRoaXMuY2FjaGVSZXN1bHQoKS5fX2l0ZXJhdGUoZSx0KTtmb3IodmFyIG4scj10aGlzLl9pdGVyYXRvcixvPXRoaXMuX2l0ZXJhdG9yQ2FjaGUsYT0wO2E8by5sZW5ndGg7KWlmKCExPT09ZShvW2FdLGErKyx0aGlzKSlyZXR1cm4gYTtmb3IoOyEobj1yLm5leHQoKSkuZG9uZTspe3ZhciBpPW4udmFsdWU7aWYob1thXT1pLCExPT09ZShpLGErKyx0aGlzKSlicmVha31yZXR1cm4gYX0sUS5wcm90b3R5cGUuX19pdGVyYXRvclVuY2FjaGVkPWZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdGhpcy5jYWNoZVJlc3VsdCgpLl9faXRlcmF0b3IoZSx0KTt2YXIgbj10aGlzLl9pdGVyYXRvcixyPXRoaXMuX2l0ZXJhdG9yQ2FjaGUsbz0wO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXtpZihvPj1yLmxlbmd0aCl7dmFyIHQ9bi5uZXh0KCk7aWYodC5kb25lKXJldHVybiB0O3Jbb109dC52YWx1ZX1yZXR1cm4gUihlLG8scltvKytdKX0pKX0sdChzZSxVKSxzZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuc2l6ZT8iUmVwZWF0IFtdIjoiUmVwZWF0IFsgIit0aGlzLl92YWx1ZSsiICIrdGhpcy5zaXplKyIgdGltZXMgXSJ9LHNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5oYXMoZSk/dGhpcy5fdmFsdWU6dH0sc2UucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUpe3JldHVybiBpZSh0aGlzLl92YWx1ZSxlKX0sc2UucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zaXplO3JldHVybiBDKGUsdCxuKT90aGlzOm5ldyBzZSh0aGlzLl92YWx1ZSxTKHQsbikteChlLG4pKX0sc2UucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sc2UucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSl7cmV0dXJuIGllKHRoaXMuX3ZhbHVlLGUpPzA6LTF9LHNlLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlKXtyZXR1cm4gaWUodGhpcy5fdmFsdWUsZSk/dGhpcy5zaXplOi0xfSxzZS5wcm90b3R5cGUuX19pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0aGlzLnNpemU7bisrKWlmKCExPT09ZSh0aGlzLl92YWx1ZSxuLHRoaXMpKXJldHVybiBuKzE7cmV0dXJuIG59LHNlLnByb3RvdHlwZS5fX2l0ZXJhdG9yPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPTA7cmV0dXJuIG5ldyBMKChmdW5jdGlvbigpe3JldHVybiByPG4uc2l6ZT9SKGUscisrLG4uX3ZhbHVlKTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fSkpfSxzZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2Ygc2U/aWUodGhpcy5fdmFsdWUsZS5fdmFsdWUpOnVlKGUpfSx0KGNlLFUpLGNlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zaXplPyJSYW5nZSBbXSI6IlJhbmdlIFsgIit0aGlzLl9zdGFydCsiLi4uIit0aGlzLl9lbmQrKHRoaXMuX3N0ZXA+MT8iIGJ5ICIrdGhpcy5fc3RlcDoiIikrIiBdIn0sY2UucHJvdG90eXBlLmdldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmhhcyhlKT90aGlzLl9zdGFydCtPKHRoaXMsZSkqdGhpcy5fc3RlcDp0fSxjZS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9KGUtdGhpcy5fc3RhcnQpL3RoaXMuX3N0ZXA7cmV0dXJuIHQ+PTAmJnQ8dGhpcy5zaXplJiZ0PT09TWF0aC5mbG9vcih0KX0sY2UucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMoZSx0LHRoaXMuc2l6ZSk/dGhpczooZT14KGUsdGhpcy5zaXplKSwodD1TKHQsdGhpcy5zaXplKSk8PWU/bmV3IGNlKDAsMCk6bmV3IGNlKHRoaXMuZ2V0KGUsdGhpcy5fZW5kKSx0aGlzLmdldCh0LHRoaXMuX2VuZCksdGhpcy5fc3RlcCkpfSxjZS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlKXt2YXIgdD1lLXRoaXMuX3N0YXJ0O2lmKHQldGhpcy5fc3RlcD09MCl7dmFyIG49dC90aGlzLl9zdGVwO2lmKG4+PTAmJm48dGhpcy5zaXplKXJldHVybiBufXJldHVybi0xfSxjZS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5kZXhPZihlKX0sY2UucHJvdG90eXBlLl9faXRlcmF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLnNpemUtMSxyPXRoaXMuX3N0ZXAsbz10P3RoaXMuX3N0YXJ0K24qcjp0aGlzLl9zdGFydCxhPTA7YTw9bjthKyspe2lmKCExPT09ZShvLGEsdGhpcykpcmV0dXJuIGErMTtvKz10Py1yOnJ9cmV0dXJuIGF9LGNlLnByb3RvdHlwZS5fX2l0ZXJhdG9yPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zaXplLTEscj10aGlzLl9zdGVwLG89dD90aGlzLl9zdGFydCtuKnI6dGhpcy5fc3RhcnQsYT0wO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXt2YXIgaT1vO3JldHVybiBvKz10Py1yOnIsYT5uP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06UihlLGErKyxpKX0pKX0sY2UucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGNlP3RoaXMuX3N0YXJ0PT09ZS5fc3RhcnQmJnRoaXMuX2VuZD09PWUuX2VuZCYmdGhpcy5fc3RlcD09PWUuX3N0ZXA6dWUodGhpcyxlKX0sdChmZSxuKSx0KGRlLGZlKSx0KHBlLGZlKSx0KGhlLGZlKSxmZS5LZXllZD1kZSxmZS5JbmRleGVkPXBlLGZlLlNldD1oZTt2YXIgeWU9ImZ1bmN0aW9uIj09dHlwZW9mIE1hdGguaW11bCYmLTI9PT1NYXRoLmltdWwoNDI5NDk2NzI5NSwyKT9NYXRoLmltdWw6ZnVuY3Rpb24oZSx0KXt2YXIgbj02NTUzNSYoZXw9MCkscj02NTUzNSYodHw9MCk7cmV0dXJuIG4qcisoKGU+Pj4xNikqcituKih0Pj4+MTYpPDwxNj4+PjApfDB9O2Z1bmN0aW9uIG1lKGUpe3JldHVybiBlPj4+MSYxMDczNzQxODI0fDMyMjEyMjU0NzEmZX1mdW5jdGlvbiB2ZShlKXtpZighMT09PWV8fG51bGw9PWUpcmV0dXJuIDA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUudmFsdWVPZiYmKCExPT09KGU9ZS52YWx1ZU9mKCkpfHxudWxsPT1lKSlyZXR1cm4gMDtpZighMD09PWUpcmV0dXJuIDE7dmFyIHQ9dHlwZW9mIGU7aWYoIm51bWJlciI9PT10KXt2YXIgbj0wfGU7Zm9yKG4hPT1lJiYobl49NDI5NDk2NzI5NSplKTtlPjQyOTQ5NjcyOTU7KW5ePWUvPTQyOTQ5NjcyOTU7cmV0dXJuIG1lKG4pfWlmKCJzdHJpbmciPT09dClyZXR1cm4gZS5sZW5ndGg+Q2U/ZnVuY3Rpb24oZSl7dmFyIHQ9RGVbZV07cmV0dXJuIHZvaWQgMD09PXQmJih0PWdlKGUpLFNlPT09eGUmJihTZT0wLERlPXt9KSxTZSsrLERlW2VdPXQpLHR9KGUpOmdlKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmhhc2hDb2RlKXJldHVybiBlLmhhc2hDb2RlKCk7aWYoIm9iamVjdCI9PT10KXJldHVybiBmdW5jdGlvbihlKXt2YXIgdDtpZihFZSYmdm9pZCAwIT09KHQ9YmUuZ2V0KGUpKSlyZXR1cm4gdDtpZih2b2lkIDAhPT0odD1lW2tlXSkpcmV0dXJuIHQ7aWYoIV9lKXtpZih2b2lkIDAhPT0odD1lLnByb3BlcnR5SXNFbnVtZXJhYmxlJiZlLnByb3BlcnR5SXNFbnVtZXJhYmxlW2tlXSkpcmV0dXJuIHQ7aWYodm9pZCAwIT09KHQ9ZnVuY3Rpb24oZSl7aWYoZSYmZS5ub2RlVHlwZT4wKXN3aXRjaChlLm5vZGVUeXBlKXtjYXNlIDE6cmV0dXJuIGUudW5pcXVlSUQ7Y2FzZSA5OnJldHVybiBlLmRvY3VtZW50RWxlbWVudCYmZS5kb2N1bWVudEVsZW1lbnQudW5pcXVlSUR9fShlKSkpcmV0dXJuIHR9aWYodD0rK09lLDEwNzM3NDE4MjQmT2UmJihPZT0wKSxFZSliZS5zZXQoZSx0KTtlbHNle2lmKHZvaWQgMCE9PXdlJiYhMT09PXdlKGUpKXRocm93IG5ldyBFcnJvcigiTm9uLWV4dGVuc2libGUgb2JqZWN0cyBhcmUgbm90IGFsbG93ZWQgYXMga2V5cy4iKTtpZihfZSlPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxrZSx7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsd3JpdGFibGU6ITEsdmFsdWU6dH0pO2Vsc2UgaWYodm9pZCAwIT09ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSYmZS5wcm9wZXJ0eUlzRW51bWVyYWJsZT09PWUuY29uc3RydWN0b3IucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlKWUucHJvcGVydHlJc0VudW1lcmFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLnByb3BlcnR5SXNFbnVtZXJhYmxlW2tlXT10O2Vsc2V7aWYodm9pZCAwPT09ZS5ub2RlVHlwZSl0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBzZXQgYSBub24tZW51bWVyYWJsZSBwcm9wZXJ0eSBvbiBvYmplY3QuIik7ZVtrZV09dH19cmV0dXJuIHR9KGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RyaW5nKXJldHVybiBnZShlLnRvU3RyaW5nKCkpO3Rocm93IG5ldyBFcnJvcigiVmFsdWUgdHlwZSAiK3QrIiBjYW5ub3QgYmUgaGFzaGVkLiIpfWZ1bmN0aW9uIGdlKGUpe2Zvcih2YXIgdD0wLG49MDtuPGUubGVuZ3RoO24rKyl0PTMxKnQrZS5jaGFyQ29kZUF0KG4pfDA7cmV0dXJuIG1lKHQpfXZhciBiZSx3ZT1PYmplY3QuaXNFeHRlbnNpYmxlLF9lPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIkAiLHt9KSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksRWU9ImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtNYXA7RWUmJihiZT1uZXcgV2Vha01hcCk7dmFyIE9lPTAsa2U9Il9faW1tdXRhYmxlaGFzaF9fIjsiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoa2U9U3ltYm9sKGtlKSk7dmFyIENlPTE2LHhlPTI1NSxTZT0wLERlPXt9O2Z1bmN0aW9uIFRlKGUpe2xlKGUhPT0xLzAsIkNhbm5vdCBwZXJmb3JtIHRoaXMgYWN0aW9uIHdpdGggYW4gaW5maW5pdGUgc2l6ZS4iKX1mdW5jdGlvbiBNZShlKXtyZXR1cm4gbnVsbD09ZT9VZSgpOlBlKGUpJiYhYyhlKT9lOlVlKCkud2l0aE11dGF0aW9ucygoZnVuY3Rpb24odCl7dmFyIG49cihlKTtUZShuLnNpemUpLG4uZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5zZXQobixlKX0pKX0pKX1mdW5jdGlvbiBQZShlKXtyZXR1cm4hKCFlfHwhZVtqZV0pfXQoTWUsZGUpLE1lLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fdG9TdHJpbmcoIk1hcCB7IiwifSIpfSxNZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC5nZXQoMCx2b2lkIDAsZSx0KTp0fSxNZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFdlKHRoaXMsZSx0KX0sTWUucHJvdG90eXBlLnNldEluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMudXBkYXRlSW4oZSx5LChmdW5jdGlvbigpe3JldHVybiB0fSkpfSxNZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe3JldHVybiBXZSh0aGlzLGUseSl9LE1lLnByb3RvdHlwZS5kZWxldGVJbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy51cGRhdGVJbihlLChmdW5jdGlvbigpe3JldHVybiB5fSkpfSxNZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/ZSh0aGlzKTp0aGlzLnVwZGF0ZUluKFtlXSx0LG4pfSxNZS5wcm90b3R5cGUudXBkYXRlSW49ZnVuY3Rpb24oZSx0LG4pe258fChuPXQsdD12b2lkIDApO3ZhciByPWZ1bmN0aW9uIGUodCxuLHIsbyl7dmFyIGE9dD09PXksaT1uLm5leHQoKTtpZihpLmRvbmUpe3ZhciB1PWE/cjp0LHM9byh1KTtyZXR1cm4gcz09PXU/dDpzfWxlKGF8fHQmJnQuc2V0LCJpbnZhbGlkIGtleVBhdGgiKTt2YXIgbD1pLnZhbHVlLGM9YT95OnQuZ2V0KGwseSksZj1lKGMsbixyLG8pO3JldHVybiBmPT09Yz90OmY9PT15P3QucmVtb3ZlKGwpOihhP1VlKCk6dCkuc2V0KGwsZil9KHRoaXMsUXQoZSksdCxuKTtyZXR1cm4gcj09PXk/dm9pZCAwOnJ9LE1lLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zaXplP3RoaXM6dGhpcy5fX293bmVySUQ/KHRoaXMuc2l6ZT0wLHRoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9faGFzaD12b2lkIDAsdGhpcy5fX2FsdGVyZWQ9ITAsdGhpcyk6VWUoKX0sTWUucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKCl7cmV0dXJuIFFlKHRoaXMsdm9pZCAwLGFyZ3VtZW50cyl9LE1lLnByb3RvdHlwZS5tZXJnZVdpdGg9ZnVuY3Rpb24odCl7dmFyIG49ZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gUWUodGhpcyx0LG4pfSxNZS5wcm90b3R5cGUubWVyZ2VJbj1mdW5jdGlvbih0KXt2YXIgbj1lLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiB0aGlzLnVwZGF0ZUluKHQsVWUoKSwoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUubWVyZ2U/ZS5tZXJnZS5hcHBseShlLG4pOm5bbi5sZW5ndGgtMV19KSl9LE1lLnByb3RvdHlwZS5tZXJnZURlZXA9ZnVuY3Rpb24oKXtyZXR1cm4gUWUodGhpcyxKZSxhcmd1bWVudHMpfSxNZS5wcm90b3R5cGUubWVyZ2VEZWVwV2l0aD1mdW5jdGlvbih0KXt2YXIgbj1lLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBRZSh0aGlzLFplKHQpLG4pfSxNZS5wcm90b3R5cGUubWVyZ2VEZWVwSW49ZnVuY3Rpb24odCl7dmFyIG49ZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gdGhpcy51cGRhdGVJbih0LFVlKCksKGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLm1lcmdlRGVlcD9lLm1lcmdlRGVlcC5hcHBseShlLG4pOm5bbi5sZW5ndGgtMV19KSl9LE1lLnByb3RvdHlwZS5zb3J0PWZ1bmN0aW9uKGUpe3JldHVybiBfdChGdCh0aGlzLGUpKX0sTWUucHJvdG90eXBlLnNvcnRCeT1mdW5jdGlvbihlLHQpe3JldHVybiBfdChGdCh0aGlzLHQsZSkpfSxNZS5wcm90b3R5cGUud2l0aE11dGF0aW9ucz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmFzTXV0YWJsZSgpO3JldHVybiBlKHQpLHQud2FzQWx0ZXJlZCgpP3QuX19lbnN1cmVPd25lcih0aGlzLl9fb3duZXJJRCk6dGhpc30sTWUucHJvdG90eXBlLmFzTXV0YWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fb3duZXJJRD90aGlzOnRoaXMuX19lbnN1cmVPd25lcihuZXcgdyl9LE1lLnByb3RvdHlwZS5hc0ltbXV0YWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZW5zdXJlT3duZXIoKX0sTWUucHJvdG90eXBlLndhc0FsdGVyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2FsdGVyZWR9LE1lLnByb3RvdHlwZS5fX2l0ZXJhdG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyB6ZSh0aGlzLGUsdCl9LE1lLnByb3RvdHlwZS5fX2l0ZXJhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9MDtyZXR1cm4gdGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5pdGVyYXRlKChmdW5jdGlvbih0KXtyZXR1cm4gcisrLGUodFsxXSx0WzBdLG4pfSksdCkscn0sTWUucHJvdG90eXBlLl9fZW5zdXJlT3duZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzLl9fb3duZXJJRD90aGlzOmU/VmUodGhpcy5zaXplLHRoaXMuX3Jvb3QsZSx0aGlzLl9faGFzaCk6KHRoaXMuX19vd25lcklEPWUsdGhpcy5fX2FsdGVyZWQ9ITEsdGhpcyl9LE1lLmlzTWFwPVBlO3ZhciBOZSxqZT0iQEBfX0lNTVVUQUJMRV9NQVBfX0BAIixMZT1NZS5wcm90b3R5cGU7ZnVuY3Rpb24gUmUoZSx0KXt0aGlzLm93bmVySUQ9ZSx0aGlzLmVudHJpZXM9dH1mdW5jdGlvbiBJZShlLHQsbil7dGhpcy5vd25lcklEPWUsdGhpcy5iaXRtYXA9dCx0aGlzLm5vZGVzPW59ZnVuY3Rpb24gQWUoZSx0LG4pe3RoaXMub3duZXJJRD1lLHRoaXMuY291bnQ9dCx0aGlzLm5vZGVzPW59ZnVuY3Rpb24gRmUoZSx0LG4pe3RoaXMub3duZXJJRD1lLHRoaXMua2V5SGFzaD10LHRoaXMuZW50cmllcz1ufWZ1bmN0aW9uIEJlKGUsdCxuKXt0aGlzLm93bmVySUQ9ZSx0aGlzLmtleUhhc2g9dCx0aGlzLmVudHJ5PW59ZnVuY3Rpb24gemUoZSx0LG4pe3RoaXMuX3R5cGU9dCx0aGlzLl9yZXZlcnNlPW4sdGhpcy5fc3RhY2s9ZS5fcm9vdCYmcWUoZS5fcm9vdCl9ZnVuY3Rpb24gS2UoZSx0KXtyZXR1cm4gUihlLHRbMF0sdFsxXSl9ZnVuY3Rpb24gcWUoZSx0KXtyZXR1cm57bm9kZTplLGluZGV4OjAsX19wcmV2OnR9fWZ1bmN0aW9uIFZlKGUsdCxuLHIpe3ZhciBvPU9iamVjdC5jcmVhdGUoTGUpO3JldHVybiBvLnNpemU9ZSxvLl9yb290PXQsby5fX293bmVySUQ9bixvLl9faGFzaD1yLG8uX19hbHRlcmVkPSExLG99ZnVuY3Rpb24gVWUoKXtyZXR1cm4gTmV8fChOZT1WZSgwKSl9ZnVuY3Rpb24gV2UoZSx0LG4pe3ZhciByLG87aWYoZS5fcm9vdCl7dmFyIGE9ZyhtKSxpPWcodik7aWYocj1ZZShlLl9yb290LGUuX19vd25lcklELDAsdm9pZCAwLHQsbixhLGkpLCFpLnZhbHVlKXJldHVybiBlO289ZS5zaXplKyhhLnZhbHVlP249PT15Py0xOjE6MCl9ZWxzZXtpZihuPT09eSlyZXR1cm4gZTtvPTEscj1uZXcgUmUoZS5fX293bmVySUQsW1t0LG5dXSl9cmV0dXJuIGUuX19vd25lcklEPyhlLnNpemU9byxlLl9yb290PXIsZS5fX2hhc2g9dm9pZCAwLGUuX19hbHRlcmVkPSEwLGUpOnI/VmUobyxyKTpVZSgpfWZ1bmN0aW9uIFllKGUsdCxuLHIsbyxhLGksdSl7cmV0dXJuIGU/ZS51cGRhdGUodCxuLHIsbyxhLGksdSk6YT09PXk/ZTooYih1KSxiKGkpLG5ldyBCZSh0LHIsW28sYV0pKX1mdW5jdGlvbiBIZShlKXtyZXR1cm4gZS5jb25zdHJ1Y3Rvcj09PUJlfHxlLmNvbnN0cnVjdG9yPT09RmV9ZnVuY3Rpb24gR2UoZSx0LG4scixvKXtpZihlLmtleUhhc2g9PT1yKXJldHVybiBuZXcgRmUodCxyLFtlLmVudHJ5LG9dKTt2YXIgYSxpPTMxJigwPT09bj9lLmtleUhhc2g6ZS5rZXlIYXNoPj4+biksdT0zMSYoMD09PW4/cjpyPj4+bik7cmV0dXJuIG5ldyBJZSh0LDE8PGl8MTw8dSxpPT09dT9bR2UoZSx0LG4rNSxyLG8pXTooYT1uZXcgQmUodCxyLG8pLGk8dT9bZSxhXTpbYSxlXSkpfWZ1bmN0aW9uIFFlKGUsdCxuKXtmb3IodmFyIG89W10sYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgdT1uW2FdLHM9cih1KTtpKHUpfHwocz1zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHJlKGUpfSkpKSxvLnB1c2gocyl9cmV0dXJuICRlKGUsdCxvKX1mdW5jdGlvbiBKZShlLHQsbil7cmV0dXJuIGUmJmUubWVyZ2VEZWVwJiZpKHQpP2UubWVyZ2VEZWVwKHQpOmllKGUsdCk/ZTp0fWZ1bmN0aW9uIFplKGUpe3JldHVybiBmdW5jdGlvbih0LG4scil7aWYodCYmdC5tZXJnZURlZXBXaXRoJiZpKG4pKXJldHVybiB0Lm1lcmdlRGVlcFdpdGgoZSxuKTt2YXIgbz1lKHQsbixyKTtyZXR1cm4gaWUodCxvKT90Om99fWZ1bmN0aW9uICRlKGUsdCxuKXtyZXR1cm4gMD09PShuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gMCE9PWUuc2l6ZX0pKSkubGVuZ3RoP2U6MCE9PWUuc2l6ZXx8ZS5fX293bmVySUR8fDEhPT1uLmxlbmd0aD9lLndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj10P2Z1bmN0aW9uKG4scil7ZS51cGRhdGUocix5LChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXk/bjp0KGUsbixyKX0pKX06ZnVuY3Rpb24odCxuKXtlLnNldChuLHQpfSxvPTA7bzxuLmxlbmd0aDtvKyspbltvXS5mb3JFYWNoKHIpfSkpOmUuY29uc3RydWN0b3IoblswXSl9ZnVuY3Rpb24gWGUoZSl7cmV0dXJuIGU9KGU9KDg1ODk5MzQ1OSYoZS09ZT4+MSYxNDMxNjU1NzY1KSkrKGU+PjImODU4OTkzNDU5KSkrKGU+PjQpJjI1MjY0NTEzNSxlKz1lPj44LDEyNyYoZSs9ZT4+MTYpfWZ1bmN0aW9uIGV0KGUsdCxuLHIpe3ZhciBvPXI/ZTpfKGUpO3JldHVybiBvW3RdPW4sb31MZVtqZV09ITAsTGUuZGVsZXRlPUxlLnJlbW92ZSxMZS5yZW1vdmVJbj1MZS5kZWxldGVJbixSZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbz10aGlzLmVudHJpZXMsYT0wLGk9by5sZW5ndGg7YTxpO2ErKylpZihpZShuLG9bYV1bMF0pKXJldHVybiBvW2FdWzFdO3JldHVybiByfSxSZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCxuLHIsbyxhLGkpe2Zvcih2YXIgdT1vPT09eSxzPXRoaXMuZW50cmllcyxsPTAsYz1zLmxlbmd0aDtsPGMmJiFpZShyLHNbbF1bMF0pO2wrKyk7dmFyIGY9bDxjO2lmKGY/c1tsXVsxXT09PW86dSlyZXR1cm4gdGhpcztpZihiKGkpLCh1fHwhZikmJmIoYSksIXV8fDEhPT1zLmxlbmd0aCl7aWYoIWYmJiF1JiZzLmxlbmd0aD49dHQpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe2V8fChlPW5ldyB3KTtmb3IodmFyIG89bmV3IEJlKGUsdmUobiksW24scl0pLGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIGk9dFthXTtvPW8udXBkYXRlKGUsMCx2b2lkIDAsaVswXSxpWzFdKX1yZXR1cm4gb30oZSxzLHIsbyk7dmFyIGQ9ZSYmZT09PXRoaXMub3duZXJJRCxwPWQ/czpfKHMpO3JldHVybiBmP3U/bD09PWMtMT9wLnBvcCgpOnBbbF09cC5wb3AoKTpwW2xdPVtyLG9dOnAucHVzaChbcixvXSksZD8odGhpcy5lbnRyaWVzPXAsdGhpcyk6bmV3IFJlKGUscCl9fSxJZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PXZlKG4pKTt2YXIgbz0xPDwoMzEmKDA9PT1lP3Q6dD4+PmUpKSxhPXRoaXMuYml0bWFwO3JldHVybiAwPT0oYSZvKT9yOnRoaXMubm9kZXNbWGUoYSZvLTEpXS5nZXQoZSs1LHQsbixyKX0sSWUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQsbixyLG8sYSxpKXt2b2lkIDA9PT1uJiYobj12ZShyKSk7dmFyIHU9MzEmKDA9PT10P246bj4+PnQpLHM9MTw8dSxsPXRoaXMuYml0bWFwLGM9MCE9KGwmcyk7aWYoIWMmJm89PT15KXJldHVybiB0aGlzO3ZhciBmPVhlKGwmcy0xKSxkPXRoaXMubm9kZXMscD1jP2RbZl06dm9pZCAwLGg9WWUocCxlLHQrNSxuLHIsbyxhLGkpO2lmKGg9PT1wKXJldHVybiB0aGlzO2lmKCFjJiZoJiZkLmxlbmd0aD49bnQpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7Zm9yKHZhciBhPTAsaT1uZXcgQXJyYXkoMzIpLHU9MDswIT09bjt1Kyssbj4+Pj0xKWlbdV09MSZuP3RbYSsrXTp2b2lkIDA7cmV0dXJuIGlbcl09byxuZXcgQWUoZSxhKzEsaSl9KGUsZCxsLHUsaCk7aWYoYyYmIWgmJjI9PT1kLmxlbmd0aCYmSGUoZFsxXmZdKSlyZXR1cm4gZFsxXmZdO2lmKGMmJmgmJjE9PT1kLmxlbmd0aCYmSGUoaCkpcmV0dXJuIGg7dmFyIG09ZSYmZT09PXRoaXMub3duZXJJRCx2PWM/aD9sOmxeczpsfHMsZz1jP2g/ZXQoZCxmLGgsbSk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubGVuZ3RoLTE7aWYobiYmdD09PXIpcmV0dXJuIGUucG9wKCksZTtmb3IodmFyIG89bmV3IEFycmF5KHIpLGE9MCxpPTA7aTxyO2krKylpPT09dCYmKGE9MSksb1tpXT1lW2krYV07cmV0dXJuIG99KGQsZixtKTpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLmxlbmd0aCsxO2lmKHImJnQrMT09PW8pcmV0dXJuIGVbdF09bixlO2Zvcih2YXIgYT1uZXcgQXJyYXkobyksaT0wLHU9MDt1PG87dSsrKXU9PT10PyhhW3VdPW4saT0tMSk6YVt1XT1lW3UraV07cmV0dXJuIGF9KGQsZixoLG0pO3JldHVybiBtPyh0aGlzLmJpdG1hcD12LHRoaXMubm9kZXM9Zyx0aGlzKTpuZXcgSWUoZSx2LGcpfSxBZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PXZlKG4pKTt2YXIgbz0zMSYoMD09PWU/dDp0Pj4+ZSksYT10aGlzLm5vZGVzW29dO3JldHVybiBhP2EuZ2V0KGUrNSx0LG4scik6cn0sQWUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQsbixyLG8sYSxpKXt2b2lkIDA9PT1uJiYobj12ZShyKSk7dmFyIHU9MzEmKDA9PT10P246bj4+PnQpLHM9bz09PXksbD10aGlzLm5vZGVzLGM9bFt1XTtpZihzJiYhYylyZXR1cm4gdGhpczt2YXIgZj1ZZShjLGUsdCs1LG4scixvLGEsaSk7aWYoZj09PWMpcmV0dXJuIHRoaXM7dmFyIGQ9dGhpcy5jb3VudDtpZihjKXtpZighZiYmLS1kPHJ0KXJldHVybiBmdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89MCxhPTAsaT1uZXcgQXJyYXkobiksdT0wLHM9MSxsPXQubGVuZ3RoO3U8bDt1Kyssczw8PTEpe3ZhciBjPXRbdV07dm9pZCAwIT09YyYmdSE9PXImJihvfD1zLGlbYSsrXT1jKX1yZXR1cm4gbmV3IEllKGUsbyxpKX0oZSxsLGQsdSl9ZWxzZSBkKys7dmFyIHA9ZSYmZT09PXRoaXMub3duZXJJRCxoPWV0KGwsdSxmLHApO3JldHVybiBwPyh0aGlzLmNvdW50PWQsdGhpcy5ub2Rlcz1oLHRoaXMpOm5ldyBBZShlLGQsaCl9LEZlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvPXRoaXMuZW50cmllcyxhPTAsaT1vLmxlbmd0aDthPGk7YSsrKWlmKGllKG4sb1thXVswXSkpcmV0dXJuIG9bYV1bMV07cmV0dXJuIHJ9LEZlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0LG4scixvLGEsaSl7dm9pZCAwPT09biYmKG49dmUocikpO3ZhciB1PW89PT15O2lmKG4hPT10aGlzLmtleUhhc2gpcmV0dXJuIHU/dGhpczooYihpKSxiKGEpLEdlKHRoaXMsZSx0LG4sW3Isb10pKTtmb3IodmFyIHM9dGhpcy5lbnRyaWVzLGw9MCxjPXMubGVuZ3RoO2w8YyYmIWllKHIsc1tsXVswXSk7bCsrKTt2YXIgZj1sPGM7aWYoZj9zW2xdWzFdPT09bzp1KXJldHVybiB0aGlzO2lmKGIoaSksKHV8fCFmKSYmYihhKSx1JiYyPT09YylyZXR1cm4gbmV3IEJlKGUsdGhpcy5rZXlIYXNoLHNbMV5sXSk7dmFyIGQ9ZSYmZT09PXRoaXMub3duZXJJRCxwPWQ/czpfKHMpO3JldHVybiBmP3U/bD09PWMtMT9wLnBvcCgpOnBbbF09cC5wb3AoKTpwW2xdPVtyLG9dOnAucHVzaChbcixvXSksZD8odGhpcy5lbnRyaWVzPXAsdGhpcyk6bmV3IEZlKGUsdGhpcy5rZXlIYXNoLHApfSxCZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBpZShuLHRoaXMuZW50cnlbMF0pP3RoaXMuZW50cnlbMV06cn0sQmUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQsbixyLG8sYSxpKXt2YXIgdT1vPT09eSxzPWllKHIsdGhpcy5lbnRyeVswXSk7cmV0dXJuKHM/bz09PXRoaXMuZW50cnlbMV06dSk/dGhpczooYihpKSx1P3ZvaWQgYihhKTpzP2UmJmU9PT10aGlzLm93bmVySUQ/KHRoaXMuZW50cnlbMV09byx0aGlzKTpuZXcgQmUoZSx0aGlzLmtleUhhc2gsW3Isb10pOihiKGEpLEdlKHRoaXMsZSx0LHZlKHIpLFtyLG9dKSkpfSxSZS5wcm90b3R5cGUuaXRlcmF0ZT1GZS5wcm90b3R5cGUuaXRlcmF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLmVudHJpZXMscj0wLG89bi5sZW5ndGgtMTtyPD1vO3IrKylpZighMT09PWUoblt0P28tcjpyXSkpcmV0dXJuITF9LEllLnByb3RvdHlwZS5pdGVyYXRlPUFlLnByb3RvdHlwZS5pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMubm9kZXMscj0wLG89bi5sZW5ndGgtMTtyPD1vO3IrKyl7dmFyIGE9blt0P28tcjpyXTtpZihhJiYhMT09PWEuaXRlcmF0ZShlLHQpKXJldHVybiExfX0sQmUucHJvdG90eXBlLml0ZXJhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0aGlzLmVudHJ5KX0sdCh6ZSxMKSx6ZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLl90eXBlLHQ9dGhpcy5fc3RhY2s7dDspe3ZhciBuLHI9dC5ub2RlLG89dC5pbmRleCsrO2lmKHIuZW50cnkpe2lmKDA9PT1vKXJldHVybiBLZShlLHIuZW50cnkpfWVsc2UgaWYoci5lbnRyaWVzKXtpZihvPD0obj1yLmVudHJpZXMubGVuZ3RoLTEpKXJldHVybiBLZShlLHIuZW50cmllc1t0aGlzLl9yZXZlcnNlP24tbzpvXSl9ZWxzZSBpZihvPD0obj1yLm5vZGVzLmxlbmd0aC0xKSl7dmFyIGE9ci5ub2Rlc1t0aGlzLl9yZXZlcnNlP24tbzpvXTtpZihhKXtpZihhLmVudHJ5KXJldHVybiBLZShlLGEuZW50cnkpO3Q9dGhpcy5fc3RhY2s9cWUoYSx0KX1jb250aW51ZX10PXRoaXMuX3N0YWNrPXRoaXMuX3N0YWNrLl9fcHJldn1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTt2YXIgdHQ9OCxudD0xNixydD04O2Z1bmN0aW9uIG90KGUpe3ZhciB0PWh0KCk7aWYobnVsbD09ZSlyZXR1cm4gdDtpZihhdChlKSlyZXR1cm4gZTt2YXIgbj1vKGUpLHI9bi5zaXplO3JldHVybiAwPT09cj90OihUZShyKSxyPjAmJnI8MzI/cHQoMCxyLDUsbnVsbCxuZXcgc3Qobi50b0FycmF5KCkpKTp0LndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKGUpe2Uuc2V0U2l6ZShyKSxuLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuc2V0KG4sdCl9KSl9KSkpfWZ1bmN0aW9uIGF0KGUpe3JldHVybiEoIWV8fCFlW2l0XSl9dChvdCxwZSksb3Qub2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyhhcmd1bWVudHMpfSxvdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3RvU3RyaW5nKCJMaXN0IFsiLCJdIil9LG90LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSx0KXtpZigoZT1PKHRoaXMsZSkpPj0wJiZlPHRoaXMuc2l6ZSl7dmFyIG49dnQodGhpcyxlKz10aGlzLl9vcmlnaW4pO3JldHVybiBuJiZuLmFycmF5WzMxJmVdfXJldHVybiB0fSxvdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtpZigodD1PKGUsdCkpIT10KXJldHVybiBlO2lmKHQ+PWUuc2l6ZXx8dDwwKXJldHVybiBlLndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKGUpe3Q8MD9ndChlLHQpLnNldCgwLG4pOmd0KGUsMCx0KzEpLnNldCh0LG4pfSkpO3QrPWUuX29yaWdpbjt2YXIgcj1lLl90YWlsLG89ZS5fcm9vdCxhPWcodik7cmV0dXJuIHQ+PXd0KGUuX2NhcGFjaXR5KT9yPXl0KHIsZS5fX293bmVySUQsMCx0LG4sYSk6bz15dChvLGUuX19vd25lcklELGUuX2xldmVsLHQsbixhKSxhLnZhbHVlP2UuX19vd25lcklEPyhlLl9yb290PW8sZS5fdGFpbD1yLGUuX19oYXNoPXZvaWQgMCxlLl9fYWx0ZXJlZD0hMCxlKTpwdChlLl9vcmlnaW4sZS5fY2FwYWNpdHksZS5fbGV2ZWwsbyxyKTplfSh0aGlzLGUsdCl9LG90LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGFzKGUpPzA9PT1lP3RoaXMuc2hpZnQoKTplPT09dGhpcy5zaXplLTE/dGhpcy5wb3AoKTp0aGlzLnNwbGljZShlLDEpOnRoaXN9LG90LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zcGxpY2UoZSwwLHQpfSxvdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuc2l6ZT90aGlzOnRoaXMuX19vd25lcklEPyh0aGlzLnNpemU9dGhpcy5fb3JpZ2luPXRoaXMuX2NhcGFjaXR5PTAsdGhpcy5fbGV2ZWw9NSx0aGlzLl9yb290PXRoaXMuX3RhaWw9bnVsbCx0aGlzLl9faGFzaD12b2lkIDAsdGhpcy5fX2FsdGVyZWQ9ITAsdGhpcyk6aHQoKX0sb3QucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMsdD10aGlzLnNpemU7cmV0dXJuIHRoaXMud2l0aE11dGF0aW9ucygoZnVuY3Rpb24obil7Z3QobiwwLHQrZS5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKW4uc2V0KHQrcixlW3JdKX0pKX0sb3QucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3JldHVybiBndCh0aGlzLDAsLTEpfSxvdC5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gdGhpcy53aXRoTXV0YXRpb25zKChmdW5jdGlvbih0KXtndCh0LC1lLmxlbmd0aCk7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdC5zZXQobixlW25dKX0pKX0sb3QucHJvdG90eXBlLnNoaWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIGd0KHRoaXMsMSl9LG90LnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbigpe3JldHVybiBidCh0aGlzLHZvaWQgMCxhcmd1bWVudHMpfSxvdC5wcm90b3R5cGUubWVyZ2VXaXRoPWZ1bmN0aW9uKHQpe3ZhciBuPWUuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGJ0KHRoaXMsdCxuKX0sb3QucHJvdG90eXBlLm1lcmdlRGVlcD1mdW5jdGlvbigpe3JldHVybiBidCh0aGlzLEplLGFyZ3VtZW50cyl9LG90LnByb3RvdHlwZS5tZXJnZURlZXBXaXRoPWZ1bmN0aW9uKHQpe3ZhciBuPWUuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGJ0KHRoaXMsWmUodCksbil9LG90LnByb3RvdHlwZS5zZXRTaXplPWZ1bmN0aW9uKGUpe3JldHVybiBndCh0aGlzLDAsZSl9LG90LnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuc2l6ZTtyZXR1cm4gQyhlLHQsbik/dGhpczpndCh0aGlzLHgoZSxuKSxTKHQsbikpfSxvdC5wcm90b3R5cGUuX19pdGVyYXRvcj1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj1kdCh0aGlzLHQpO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXt2YXIgdD1yKCk7cmV0dXJuIHQ9PT1mdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9OlIoZSxuKyssdCl9KSl9LG90LnByb3RvdHlwZS5fX2l0ZXJhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj0wLG89ZHQodGhpcyx0KTsobj1vKCkpIT09ZnQmJiExIT09ZShuLHIrKyx0aGlzKTspO3JldHVybiByfSxvdC5wcm90b3R5cGUuX19lbnN1cmVPd25lcj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXRoaXMuX19vd25lcklEP3RoaXM6ZT9wdCh0aGlzLl9vcmlnaW4sdGhpcy5fY2FwYWNpdHksdGhpcy5fbGV2ZWwsdGhpcy5fcm9vdCx0aGlzLl90YWlsLGUsdGhpcy5fX2hhc2gpOih0aGlzLl9fb3duZXJJRD1lLHRoaXMpfSxvdC5pc0xpc3Q9YXQ7dmFyIGl0PSJAQF9fSU1NVVRBQkxFX0xJU1RfX0BAIix1dD1vdC5wcm90b3R5cGU7ZnVuY3Rpb24gc3QoZSx0KXt0aGlzLmFycmF5PWUsdGhpcy5vd25lcklEPXR9dXRbaXRdPSEwLHV0LmRlbGV0ZT11dC5yZW1vdmUsdXQuc2V0SW49TGUuc2V0SW4sdXQuZGVsZXRlSW49dXQucmVtb3ZlSW49TGUucmVtb3ZlSW4sdXQudXBkYXRlPUxlLnVwZGF0ZSx1dC51cGRhdGVJbj1MZS51cGRhdGVJbix1dC5tZXJnZUluPUxlLm1lcmdlSW4sdXQubWVyZ2VEZWVwSW49TGUubWVyZ2VEZWVwSW4sdXQud2l0aE11dGF0aW9ucz1MZS53aXRoTXV0YXRpb25zLHV0LmFzTXV0YWJsZT1MZS5hc011dGFibGUsdXQuYXNJbW11dGFibGU9TGUuYXNJbW11dGFibGUsdXQud2FzQWx0ZXJlZD1MZS53YXNBbHRlcmVkLHN0LnByb3RvdHlwZS5yZW1vdmVCZWZvcmU9ZnVuY3Rpb24oZSx0LG4pe2lmKG49PT10PzE8PHQ6MD09PXRoaXMuYXJyYXkubGVuZ3RoKXJldHVybiB0aGlzO3ZhciByPW4+Pj50JjMxO2lmKHI+PXRoaXMuYXJyYXkubGVuZ3RoKXJldHVybiBuZXcgc3QoW10sZSk7dmFyIG8sYT0wPT09cjtpZih0PjApe3ZhciBpPXRoaXMuYXJyYXlbcl07aWYoKG89aSYmaS5yZW1vdmVCZWZvcmUoZSx0LTUsbikpPT09aSYmYSlyZXR1cm4gdGhpc31pZihhJiYhbylyZXR1cm4gdGhpczt2YXIgdT1tdCh0aGlzLGUpO2lmKCFhKWZvcih2YXIgcz0wO3M8cjtzKyspdS5hcnJheVtzXT12b2lkIDA7cmV0dXJuIG8mJih1LmFycmF5W3JdPW8pLHV9LHN0LnByb3RvdHlwZS5yZW1vdmVBZnRlcj1mdW5jdGlvbihlLHQsbil7aWYobj09PSh0PzE8PHQ6MCl8fDA9PT10aGlzLmFycmF5Lmxlbmd0aClyZXR1cm4gdGhpczt2YXIgcixvPW4tMT4+PnQmMzE7aWYobz49dGhpcy5hcnJheS5sZW5ndGgpcmV0dXJuIHRoaXM7aWYodD4wKXt2YXIgYT10aGlzLmFycmF5W29dO2lmKChyPWEmJmEucmVtb3ZlQWZ0ZXIoZSx0LTUsbikpPT09YSYmbz09PXRoaXMuYXJyYXkubGVuZ3RoLTEpcmV0dXJuIHRoaXN9dmFyIGk9bXQodGhpcyxlKTtyZXR1cm4gaS5hcnJheS5zcGxpY2UobysxKSxyJiYoaS5hcnJheVtvXT1yKSxpfTt2YXIgbHQsY3QsZnQ9e307ZnVuY3Rpb24gZHQoZSx0KXt2YXIgbj1lLl9vcmlnaW4scj1lLl9jYXBhY2l0eSxvPXd0KHIpLGE9ZS5fdGFpbDtyZXR1cm4gaShlLl9yb290LGUuX2xldmVsLDApO2Z1bmN0aW9uIGkoZSx1LHMpe3JldHVybiAwPT09dT9mdW5jdGlvbihlLGkpe3ZhciB1PWk9PT1vP2EmJmEuYXJyYXk6ZSYmZS5hcnJheSxzPWk+bj8wOm4taSxsPXItaTtyZXR1cm4gbD4zMiYmKGw9MzIpLGZ1bmN0aW9uKCl7aWYocz09PWwpcmV0dXJuIGZ0O3ZhciBlPXQ/LS1sOnMrKztyZXR1cm4gdSYmdVtlXX19KGUscyk6ZnVuY3Rpb24oZSxvLGEpe3ZhciB1LHM9ZSYmZS5hcnJheSxsPWE+bj8wOm4tYT4+byxjPTErKHItYT4+byk7cmV0dXJuIGM+MzImJihjPTMyKSxmdW5jdGlvbigpe2Zvcig7Oyl7aWYodSl7dmFyIGU9dSgpO2lmKGUhPT1mdClyZXR1cm4gZTt1PW51bGx9aWYobD09PWMpcmV0dXJuIGZ0O3ZhciBuPXQ/LS1jOmwrKzt1PWkocyYmc1tuXSxvLTUsYSsobjw8bykpfX19KGUsdSxzKX19ZnVuY3Rpb24gcHQoZSx0LG4scixvLGEsaSl7dmFyIHU9T2JqZWN0LmNyZWF0ZSh1dCk7cmV0dXJuIHUuc2l6ZT10LWUsdS5fb3JpZ2luPWUsdS5fY2FwYWNpdHk9dCx1Ll9sZXZlbD1uLHUuX3Jvb3Q9cix1Ll90YWlsPW8sdS5fX293bmVySUQ9YSx1Ll9faGFzaD1pLHUuX19hbHRlcmVkPSExLHV9ZnVuY3Rpb24gaHQoKXtyZXR1cm4gbHR8fChsdD1wdCgwLDAsNSkpfWZ1bmN0aW9uIHl0KGUsdCxuLHIsbyxhKXt2YXIgaSx1PXI+Pj5uJjMxLHM9ZSYmdTxlLmFycmF5Lmxlbmd0aDtpZighcyYmdm9pZCAwPT09bylyZXR1cm4gZTtpZihuPjApe3ZhciBsPWUmJmUuYXJyYXlbdV0sYz15dChsLHQsbi01LHIsbyxhKTtyZXR1cm4gYz09PWw/ZTooKGk9bXQoZSx0KSkuYXJyYXlbdV09YyxpKX1yZXR1cm4gcyYmZS5hcnJheVt1XT09PW8/ZTooYihhKSxpPW10KGUsdCksdm9pZCAwPT09byYmdT09PWkuYXJyYXkubGVuZ3RoLTE/aS5hcnJheS5wb3AoKTppLmFycmF5W3VdPW8saSl9ZnVuY3Rpb24gbXQoZSx0KXtyZXR1cm4gdCYmZSYmdD09PWUub3duZXJJRD9lOm5ldyBzdChlP2UuYXJyYXkuc2xpY2UoKTpbXSx0KX1mdW5jdGlvbiB2dChlLHQpe2lmKHQ+PXd0KGUuX2NhcGFjaXR5KSlyZXR1cm4gZS5fdGFpbDtpZih0PDE8PGUuX2xldmVsKzUpe2Zvcih2YXIgbj1lLl9yb290LHI9ZS5fbGV2ZWw7biYmcj4wOyluPW4uYXJyYXlbdD4+PnImMzFdLHItPTU7cmV0dXJuIG59fWZ1bmN0aW9uIGd0KGUsdCxuKXt2b2lkIDAhPT10JiYodHw9MCksdm9pZCAwIT09biYmKG58PTApO3ZhciByPWUuX19vd25lcklEfHxuZXcgdyxvPWUuX29yaWdpbixhPWUuX2NhcGFjaXR5LGk9byt0LHU9dm9pZCAwPT09bj9hOm48MD9hK246bytuO2lmKGk9PT1vJiZ1PT09YSlyZXR1cm4gZTtpZihpPj11KXJldHVybiBlLmNsZWFyKCk7Zm9yKHZhciBzPWUuX2xldmVsLGw9ZS5fcm9vdCxjPTA7aStjPDA7KWw9bmV3IHN0KGwmJmwuYXJyYXkubGVuZ3RoP1t2b2lkIDAsbF06W10sciksYys9MTw8KHMrPTUpO2MmJihpKz1jLG8rPWMsdSs9YyxhKz1jKTtmb3IodmFyIGY9d3QoYSksZD13dCh1KTtkPj0xPDxzKzU7KWw9bmV3IHN0KGwmJmwuYXJyYXkubGVuZ3RoP1tsXTpbXSxyKSxzKz01O3ZhciBwPWUuX3RhaWwsaD1kPGY/dnQoZSx1LTEpOmQ+Zj9uZXcgc3QoW10scik6cDtpZihwJiZkPmYmJmk8YSYmcC5hcnJheS5sZW5ndGgpe2Zvcih2YXIgeT1sPW10KGwsciksbT1zO20+NTttLT01KXt2YXIgdj1mPj4+bSYzMTt5PXkuYXJyYXlbdl09bXQoeS5hcnJheVt2XSxyKX15LmFycmF5W2Y+Pj41JjMxXT1wfWlmKHU8YSYmKGg9aCYmaC5yZW1vdmVBZnRlcihyLDAsdSkpLGk+PWQpaS09ZCx1LT1kLHM9NSxsPW51bGwsaD1oJiZoLnJlbW92ZUJlZm9yZShyLDAsaSk7ZWxzZSBpZihpPm98fGQ8Zil7Zm9yKGM9MDtsOyl7dmFyIGc9aT4+PnMmMzE7aWYoZyE9PWQ+Pj5zJjMxKWJyZWFrO2cmJihjKz0oMTw8cykqZykscy09NSxsPWwuYXJyYXlbZ119bCYmaT5vJiYobD1sLnJlbW92ZUJlZm9yZShyLHMsaS1jKSksbCYmZDxmJiYobD1sLnJlbW92ZUFmdGVyKHIscyxkLWMpKSxjJiYoaS09Yyx1LT1jKX1yZXR1cm4gZS5fX293bmVySUQ/KGUuc2l6ZT11LWksZS5fb3JpZ2luPWksZS5fY2FwYWNpdHk9dSxlLl9sZXZlbD1zLGUuX3Jvb3Q9bCxlLl90YWlsPWgsZS5fX2hhc2g9dm9pZCAwLGUuX19hbHRlcmVkPSEwLGUpOnB0KGksdSxzLGwsaCl9ZnVuY3Rpb24gYnQoZSx0LG4pe2Zvcih2YXIgcj1bXSxhPTAsdT0wO3U8bi5sZW5ndGg7dSsrKXt2YXIgcz1uW3VdLGw9byhzKTtsLnNpemU+YSYmKGE9bC5zaXplKSxpKHMpfHwobD1sLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHJlKGUpfSkpKSxyLnB1c2gobCl9cmV0dXJuIGE+ZS5zaXplJiYoZT1lLnNldFNpemUoYSkpLCRlKGUsdCxyKX1mdW5jdGlvbiB3dChlKXtyZXR1cm4gZTwzMj8wOmUtMT4+PjU8PDV9ZnVuY3Rpb24gX3QoZSl7cmV0dXJuIG51bGw9PWU/a3QoKTpFdChlKT9lOmt0KCkud2l0aE11dGF0aW9ucygoZnVuY3Rpb24odCl7dmFyIG49cihlKTtUZShuLnNpemUpLG4uZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5zZXQobixlKX0pKX0pKX1mdW5jdGlvbiBFdChlKXtyZXR1cm4gUGUoZSkmJmMoZSl9ZnVuY3Rpb24gT3QoZSx0LG4scil7dmFyIG89T2JqZWN0LmNyZWF0ZShfdC5wcm90b3R5cGUpO3JldHVybiBvLnNpemU9ZT9lLnNpemU6MCxvLl9tYXA9ZSxvLl9saXN0PXQsby5fX293bmVySUQ9bixvLl9faGFzaD1yLG99ZnVuY3Rpb24ga3QoKXtyZXR1cm4gY3R8fChjdD1PdChVZSgpLGh0KCkpKX1mdW5jdGlvbiBDdChlLHQsbil7dmFyIHIsbyxhPWUuX21hcCxpPWUuX2xpc3QsdT1hLmdldCh0KSxzPXZvaWQgMCE9PXU7aWYobj09PXkpe2lmKCFzKXJldHVybiBlO2kuc2l6ZT49MzImJmkuc2l6ZT49MiphLnNpemU/KHI9KG89aS5maWx0ZXIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMCE9PWUmJnUhPT10fSkpKS50b0tleWVkU2VxKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZVswXX0pKS5mbGlwKCkudG9NYXAoKSxlLl9fb3duZXJJRCYmKHIuX19vd25lcklEPW8uX19vd25lcklEPWUuX19vd25lcklEKSk6KHI9YS5yZW1vdmUodCksbz11PT09aS5zaXplLTE/aS5wb3AoKTppLnNldCh1LHZvaWQgMCkpfWVsc2UgaWYocyl7aWYobj09PWkuZ2V0KHUpWzFdKXJldHVybiBlO3I9YSxvPWkuc2V0KHUsW3Qsbl0pfWVsc2Ugcj1hLnNldCh0LGkuc2l6ZSksbz1pLnNldChpLnNpemUsW3Qsbl0pO3JldHVybiBlLl9fb3duZXJJRD8oZS5zaXplPXIuc2l6ZSxlLl9tYXA9cixlLl9saXN0PW8sZS5fX2hhc2g9dm9pZCAwLGUpOk90KHIsbyl9ZnVuY3Rpb24geHQoZSx0KXt0aGlzLl9pdGVyPWUsdGhpcy5fdXNlS2V5cz10LHRoaXMuc2l6ZT1lLnNpemV9ZnVuY3Rpb24gU3QoZSl7dGhpcy5faXRlcj1lLHRoaXMuc2l6ZT1lLnNpemV9ZnVuY3Rpb24gRHQoZSl7dGhpcy5faXRlcj1lLHRoaXMuc2l6ZT1lLnNpemV9ZnVuY3Rpb24gVHQoZSl7dGhpcy5faXRlcj1lLHRoaXMuc2l6ZT1lLnNpemV9ZnVuY3Rpb24gTXQoZSl7dmFyIHQ9WXQoZSk7cmV0dXJuIHQuX2l0ZXI9ZSx0LnNpemU9ZS5zaXplLHQuZmxpcD1mdW5jdGlvbigpe3JldHVybiBlfSx0LnJldmVyc2U9ZnVuY3Rpb24oKXt2YXIgdD1lLnJldmVyc2UuYXBwbHkodGhpcyk7cmV0dXJuIHQuZmxpcD1mdW5jdGlvbigpe3JldHVybiBlLnJldmVyc2UoKX0sdH0sdC5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5jbHVkZXModCl9LHQuaW5jbHVkZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGFzKHQpfSx0LmNhY2hlUmVzdWx0PUh0LHQuX19pdGVyYXRlVW5jYWNoZWQ9ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzO3JldHVybiBlLl9faXRlcmF0ZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4hMSE9PXQobixlLHIpfSksbil9LHQuX19pdGVyYXRvclVuY2FjaGVkPWZ1bmN0aW9uKHQsbil7aWYoMj09PXQpe3ZhciByPWUuX19pdGVyYXRvcih0LG4pO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtpZighZS5kb25lKXt2YXIgdD1lLnZhbHVlWzBdO2UudmFsdWVbMF09ZS52YWx1ZVsxXSxlLnZhbHVlWzFdPXR9cmV0dXJuIGV9KSl9cmV0dXJuIGUuX19pdGVyYXRvcigxPT09dD8wOjEsbil9LHR9ZnVuY3Rpb24gUHQoZSx0LG4pe3ZhciByPVl0KGUpO3JldHVybiByLnNpemU9ZS5zaXplLHIuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBlLmhhcyh0KX0sci5nZXQ9ZnVuY3Rpb24ocixvKXt2YXIgYT1lLmdldChyLHkpO3JldHVybiBhPT09eT9vOnQuY2FsbChuLGEscixlKX0sci5fX2l0ZXJhdGVVbmNhY2hlZD1mdW5jdGlvbihyLG8pe3ZhciBhPXRoaXM7cmV0dXJuIGUuX19pdGVyYXRlKChmdW5jdGlvbihlLG8saSl7cmV0dXJuITEhPT1yKHQuY2FsbChuLGUsbyxpKSxvLGEpfSksbyl9LHIuX19pdGVyYXRvclVuY2FjaGVkPWZ1bmN0aW9uKHIsbyl7dmFyIGE9ZS5fX2l0ZXJhdG9yKDIsbyk7cmV0dXJuIG5ldyBMKChmdW5jdGlvbigpe3ZhciBvPWEubmV4dCgpO2lmKG8uZG9uZSlyZXR1cm4gbzt2YXIgaT1vLnZhbHVlLHU9aVswXTtyZXR1cm4gUihyLHUsdC5jYWxsKG4saVsxXSx1LGUpLG8pfSkpfSxyfWZ1bmN0aW9uIE50KGUsdCl7dmFyIG49WXQoZSk7cmV0dXJuIG4uX2l0ZXI9ZSxuLnNpemU9ZS5zaXplLG4ucmV2ZXJzZT1mdW5jdGlvbigpe3JldHVybiBlfSxlLmZsaXAmJihuLmZsaXA9ZnVuY3Rpb24oKXt2YXIgdD1NdChlKTtyZXR1cm4gdC5yZXZlcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZmxpcCgpfSx0fSksbi5nZXQ9ZnVuY3Rpb24obixyKXtyZXR1cm4gZS5nZXQodD9uOi0xLW4scil9LG4uaGFzPWZ1bmN0aW9uKG4pe3JldHVybiBlLmhhcyh0P246LTEtbil9LG4uaW5jbHVkZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5jbHVkZXModCl9LG4uY2FjaGVSZXN1bHQ9SHQsbi5fX2l0ZXJhdGU9ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzO3JldHVybiBlLl9faXRlcmF0ZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4scil9KSwhbil9LG4uX19pdGVyYXRvcj1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9faXRlcmF0b3IodCwhbil9LG59ZnVuY3Rpb24ganQoZSx0LG4scil7dmFyIG89WXQoZSk7cmV0dXJuIHImJihvLmhhcz1mdW5jdGlvbihyKXt2YXIgbz1lLmdldChyLHkpO3JldHVybiBvIT09eSYmISF0LmNhbGwobixvLHIsZSl9LG8uZ2V0PWZ1bmN0aW9uKHIsbyl7dmFyIGE9ZS5nZXQocix5KTtyZXR1cm4gYSE9PXkmJnQuY2FsbChuLGEscixlKT9hOm99KSxvLl9faXRlcmF0ZVVuY2FjaGVkPWZ1bmN0aW9uKG8sYSl7dmFyIGk9dGhpcyx1PTA7cmV0dXJuIGUuX19pdGVyYXRlKChmdW5jdGlvbihlLGEscyl7aWYodC5jYWxsKG4sZSxhLHMpKXJldHVybiB1KyssbyhlLHI/YTp1LTEsaSl9KSxhKSx1fSxvLl9faXRlcmF0b3JVbmNhY2hlZD1mdW5jdGlvbihvLGEpe3ZhciBpPWUuX19pdGVyYXRvcigyLGEpLHU9MDtyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKCl7Zm9yKDs7KXt2YXIgYT1pLm5leHQoKTtpZihhLmRvbmUpcmV0dXJuIGE7dmFyIHM9YS52YWx1ZSxsPXNbMF0sYz1zWzFdO2lmKHQuY2FsbChuLGMsbCxlKSlyZXR1cm4gUihvLHI/bDp1KyssYyxhKX19KSl9LG99ZnVuY3Rpb24gTHQoZSx0LG4scil7dmFyIG89ZS5zaXplO2lmKHZvaWQgMCE9PXQmJih0fD0wKSx2b2lkIDAhPT1uJiYobnw9MCksQyh0LG4sbykpcmV0dXJuIGU7dmFyIGE9eCh0LG8pLGk9UyhuLG8pO2lmKGEhPWF8fGkhPWkpcmV0dXJuIEx0KGUudG9TZXEoKS5jYWNoZVJlc3VsdCgpLHQsbixyKTt2YXIgdSxzPWktYTtzPT1zJiYodT1zPDA/MDpzKTt2YXIgbD1ZdChlKTtyZXR1cm4gbC5zaXplPTA9PT11P3U6ZS5zaXplJiZ1fHx2b2lkIDAsIXImJkooZSkmJnU+PTAmJihsLmdldD1mdW5jdGlvbih0LG4pe3JldHVybih0PU8odGhpcyx0KSk+PTAmJnQ8dT9lLmdldCh0K2Esbik6bn0pLGwuX19pdGVyYXRlVW5jYWNoZWQ9ZnVuY3Rpb24odCxuKXt2YXIgbz10aGlzO2lmKDA9PT11KXJldHVybiAwO2lmKG4pcmV0dXJuIHRoaXMuY2FjaGVSZXN1bHQoKS5fX2l0ZXJhdGUodCxuKTt2YXIgaT0wLHM9ITAsbD0wO3JldHVybiBlLl9faXRlcmF0ZSgoZnVuY3Rpb24oZSxuKXtpZighc3x8IShzPWkrKzxhKSlyZXR1cm4gbCsrLCExIT09dChlLHI/bjpsLTEsbykmJmwhPT11fSkpLGx9LGwuX19pdGVyYXRvclVuY2FjaGVkPWZ1bmN0aW9uKHQsbil7aWYoMCE9PXUmJm4pcmV0dXJuIHRoaXMuY2FjaGVSZXN1bHQoKS5fX2l0ZXJhdG9yKHQsbik7dmFyIG89MCE9PXUmJmUuX19pdGVyYXRvcih0LG4pLGk9MCxzPTA7cmV0dXJuIG5ldyBMKChmdW5jdGlvbigpe2Zvcig7aSsrPGE7KW8ubmV4dCgpO2lmKCsrcz51KXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07dmFyIGU9by5uZXh0KCk7cmV0dXJuIHJ8fDE9PT10P2U6Uih0LHMtMSwwPT09dD92b2lkIDA6ZS52YWx1ZVsxXSxlKX0pKX0sbH1mdW5jdGlvbiBSdChlLHQsbixyKXt2YXIgbz1ZdChlKTtyZXR1cm4gby5fX2l0ZXJhdGVVbmNhY2hlZD1mdW5jdGlvbihvLGEpe3ZhciBpPXRoaXM7aWYoYSlyZXR1cm4gdGhpcy5jYWNoZVJlc3VsdCgpLl9faXRlcmF0ZShvLGEpO3ZhciB1PSEwLHM9MDtyZXR1cm4gZS5fX2l0ZXJhdGUoKGZ1bmN0aW9uKGUsYSxsKXtpZighdXx8ISh1PXQuY2FsbChuLGUsYSxsKSkpcmV0dXJuIHMrKyxvKGUscj9hOnMtMSxpKX0pKSxzfSxvLl9faXRlcmF0b3JVbmNhY2hlZD1mdW5jdGlvbihvLGEpe3ZhciBpPXRoaXM7aWYoYSlyZXR1cm4gdGhpcy5jYWNoZVJlc3VsdCgpLl9faXRlcmF0b3IobyxhKTt2YXIgdT1lLl9faXRlcmF0b3IoMixhKSxzPSEwLGw9MDtyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKCl7dmFyIGUsYSxjO2Rve2lmKChlPXUubmV4dCgpKS5kb25lKXJldHVybiByfHwxPT09bz9lOlIobyxsKyssMD09PW8/dm9pZCAwOmUudmFsdWVbMV0sZSk7dmFyIGY9ZS52YWx1ZTthPWZbMF0sYz1mWzFdLHMmJihzPXQuY2FsbChuLGMsYSxpKSl9d2hpbGUocyk7cmV0dXJuIDI9PT1vP2U6UihvLGEsYyxlKX0pKX0sb31mdW5jdGlvbiBJdChlLHQpe3ZhciBuPXUoZSksbz1bZV0uY29uY2F0KHQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSk/biYmKGU9cihlKSk6ZT1uPyQoZSk6WChBcnJheS5pc0FycmF5KGUpP2U6W2VdKSxlfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT1lLnNpemV9KSk7aWYoMD09PW8ubGVuZ3RoKXJldHVybiBlO2lmKDE9PT1vLmxlbmd0aCl7dmFyIGE9b1swXTtpZihhPT09ZXx8biYmdShhKXx8cyhlKSYmcyhhKSlyZXR1cm4gYX12YXIgbD1uZXcgWShvKTtyZXR1cm4gbj9sPWwudG9LZXllZFNlcSgpOnMoZSl8fChsPWwudG9TZXRTZXEoKSksKGw9bC5mbGF0dGVuKCEwKSkuc2l6ZT1vLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT1lKXt2YXIgbj10LnNpemU7aWYodm9pZCAwIT09bilyZXR1cm4gZStufX0pLDApLGx9ZnVuY3Rpb24gQXQoZSx0LG4pe3ZhciByPVl0KGUpO3JldHVybiByLl9faXRlcmF0ZVVuY2FjaGVkPWZ1bmN0aW9uKHIsbyl7dmFyIGE9MCx1PSExO3JldHVybiBmdW5jdGlvbiBlKHMsbCl7dmFyIGM9dGhpcztzLl9faXRlcmF0ZSgoZnVuY3Rpb24obyxzKXtyZXR1cm4oIXR8fGw8dCkmJmkobyk/ZShvLGwrMSk6ITE9PT1yKG8sbj9zOmErKyxjKSYmKHU9ITApLCF1fSksbyl9KGUsMCksYX0sci5fX2l0ZXJhdG9yVW5jYWNoZWQ9ZnVuY3Rpb24ocixvKXt2YXIgYT1lLl9faXRlcmF0b3IocixvKSx1PVtdLHM9MDtyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKCl7Zm9yKDthOyl7dmFyIGU9YS5uZXh0KCk7aWYoITE9PT1lLmRvbmUpe3ZhciBsPWUudmFsdWU7aWYoMj09PXImJihsPWxbMV0pLHQmJiEodS5sZW5ndGg8dCl8fCFpKGwpKXJldHVybiBuP2U6UihyLHMrKyxsLGUpO3UucHVzaChhKSxhPWwuX19pdGVyYXRvcihyLG8pfWVsc2UgYT11LnBvcCgpfXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19KSl9LHJ9ZnVuY3Rpb24gRnQoZSx0LG4pe3R8fCh0PUd0KTt2YXIgcj11KGUpLG89MCxhPWUudG9TZXEoKS5tYXAoKGZ1bmN0aW9uKHQscil7cmV0dXJuW3IsdCxvKyssbj9uKHQscixlKTp0XX0pKS50b0FycmF5KCk7cmV0dXJuIGEuc29ydCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlWzNdLG5bM10pfHxlWzJdLW5bMl19KSkuZm9yRWFjaChyP2Z1bmN0aW9uKGUsdCl7YVt0XS5sZW5ndGg9Mn06ZnVuY3Rpb24oZSx0KXthW3RdPWVbMV19KSxyP1YoYSk6cyhlKT9VKGEpOlcoYSl9ZnVuY3Rpb24gQnQoZSx0LG4pe2lmKHR8fCh0PUd0KSxuKXt2YXIgcj1lLnRvU2VxKCkubWFwKChmdW5jdGlvbih0LHIpe3JldHVyblt0LG4odCxyLGUpXX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHp0KHQsZVsxXSxuWzFdKT9uOmV9KSk7cmV0dXJuIHImJnJbMF19cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiB6dCh0LGUsbik/bjplfSkpfWZ1bmN0aW9uIHp0KGUsdCxuKXt2YXIgcj1lKG4sdCk7cmV0dXJuIDA9PT1yJiZuIT09dCYmKG51bGw9PW58fG4hPW4pfHxyPjB9ZnVuY3Rpb24gS3QoZSx0LHIpe3ZhciBvPVl0KGUpO3JldHVybiBvLnNpemU9bmV3IFkocikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfSkpLm1pbigpLG8uX19pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLHI9dGhpcy5fX2l0ZXJhdG9yKDEsdCksbz0wOyEobj1yLm5leHQoKSkuZG9uZSYmITEhPT1lKG4udmFsdWUsbysrLHRoaXMpOyk7cmV0dXJuIG99LG8uX19pdGVyYXRvclVuY2FjaGVkPWZ1bmN0aW9uKGUsbyl7dmFyIGE9ci5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlPW4oZSksQihvP2UucmV2ZXJzZSgpOmUpfSkpLGk9MCx1PSExO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXt2YXIgbjtyZXR1cm4gdXx8KG49YS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5leHQoKX0pKSx1PW4uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZX0pKSksdT97dmFsdWU6dm9pZCAwLGRvbmU6ITB9OlIoZSxpKyssdC5hcHBseShudWxsLG4ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pKSkpfSkpfSxvfWZ1bmN0aW9uIHF0KGUsdCl7cmV0dXJuIEooZSk/dDplLmNvbnN0cnVjdG9yKHQpfWZ1bmN0aW9uIFZ0KGUpe2lmKGUhPT1PYmplY3QoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgW0ssIFZdIHR1cGxlOiAiK2UpfWZ1bmN0aW9uIFV0KGUpe3JldHVybiBUZShlLnNpemUpLEUoZSl9ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIHUoZSk/cjpzKGUpP286YX1mdW5jdGlvbiBZdChlKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSgodShlKT9WOnMoZSk/VTpXKS5wcm90b3R5cGUpfWZ1bmN0aW9uIEh0KCl7cmV0dXJuIHRoaXMuX2l0ZXIuY2FjaGVSZXN1bHQ/KHRoaXMuX2l0ZXIuY2FjaGVSZXN1bHQoKSx0aGlzLnNpemU9dGhpcy5faXRlci5zaXplLHRoaXMpOnEucHJvdG90eXBlLmNhY2hlUmVzdWx0LmNhbGwodGhpcyl9ZnVuY3Rpb24gR3QoZSx0KXtyZXR1cm4gZT50PzE6ZTx0Py0xOjB9ZnVuY3Rpb24gUXQoZSl7dmFyIHQ9QihlKTtpZighdCl7aWYoIUsoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgaXRlcmFibGUgb3IgYXJyYXktbGlrZTogIitlKTt0PUIobihlKSl9cmV0dXJuIHR9ZnVuY3Rpb24gSnQoZSx0KXt2YXIgbixyPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiByKXJldHVybiBhO2lmKCEodGhpcyBpbnN0YW5jZW9mIHIpKXJldHVybiBuZXcgcihhKTtpZighbil7bj0hMDt2YXIgaT1PYmplY3Qua2V5cyhlKTshZnVuY3Rpb24oZSx0KXt0cnl7dC5mb3JFYWNoKGVuLmJpbmQodm9pZCAwLGUpKX1jYXRjaChlKXt9fShvLGkpLG8uc2l6ZT1pLmxlbmd0aCxvLl9uYW1lPXQsby5fa2V5cz1pLG8uX2RlZmF1bHRWYWx1ZXM9ZX10aGlzLl9tYXA9TWUoYSl9LG89ci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShadCk7cmV0dXJuIG8uY29uc3RydWN0b3I9cixyfXQoX3QsTWUpLF90Lm9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMoYXJndW1lbnRzKX0sX3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX190b1N0cmluZygiT3JkZXJlZE1hcCB7IiwifSIpfSxfdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fbWFwLmdldChlKTtyZXR1cm4gdm9pZCAwIT09bj90aGlzLl9saXN0LmdldChuKVsxXTp0fSxfdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuc2l6ZT90aGlzOnRoaXMuX19vd25lcklEPyh0aGlzLnNpemU9MCx0aGlzLl9tYXAuY2xlYXIoKSx0aGlzLl9saXN0LmNsZWFyKCksdGhpcyk6a3QoKX0sX3QucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiBDdCh0aGlzLGUsdCl9LF90LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIEN0KHRoaXMsZSx5KX0sX3QucHJvdG90eXBlLndhc0FsdGVyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwLndhc0FsdGVyZWQoKXx8dGhpcy5fbGlzdC53YXNBbHRlcmVkKCl9LF90LnByb3RvdHlwZS5fX2l0ZXJhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiB0aGlzLl9saXN0Ll9faXRlcmF0ZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQmJmUodFsxXSx0WzBdLG4pfSksdCl9LF90LnByb3RvdHlwZS5fX2l0ZXJhdG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2xpc3QuZnJvbUVudHJ5U2VxKCkuX19pdGVyYXRvcihlLHQpfSxfdC5wcm90b3R5cGUuX19lbnN1cmVPd25lcj1mdW5jdGlvbihlKXtpZihlPT09dGhpcy5fX293bmVySUQpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5fbWFwLl9fZW5zdXJlT3duZXIoZSksbj10aGlzLl9saXN0Ll9fZW5zdXJlT3duZXIoZSk7cmV0dXJuIGU/T3QodCxuLGUsdGhpcy5fX2hhc2gpOih0aGlzLl9fb3duZXJJRD1lLHRoaXMuX21hcD10LHRoaXMuX2xpc3Q9bix0aGlzKX0sX3QuaXNPcmRlcmVkTWFwPUV0LF90LnByb3RvdHlwZVtoXT0hMCxfdC5wcm90b3R5cGUuZGVsZXRlPV90LnByb3RvdHlwZS5yZW1vdmUsdCh4dCxWKSx4dC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2l0ZXIuZ2V0KGUsdCl9LHh0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2l0ZXIuaGFzKGUpfSx4dC5wcm90b3R5cGUudmFsdWVTZXE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXRlci52YWx1ZVNlcSgpfSx4dC5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1OdCh0aGlzLCEwKTtyZXR1cm4gdGhpcy5fdXNlS2V5c3x8KHQudmFsdWVTZXE9ZnVuY3Rpb24oKXtyZXR1cm4gZS5faXRlci50b1NlcSgpLnJldmVyc2UoKX0pLHR9LHh0LnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9UHQodGhpcyxlLHQpO3JldHVybiB0aGlzLl91c2VLZXlzfHwoci52YWx1ZVNlcT1mdW5jdGlvbigpe3JldHVybiBuLl9pdGVyLnRvU2VxKCkubWFwKGUsdCl9KSxyfSx4dC5wcm90b3R5cGUuX19pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzO3JldHVybiB0aGlzLl9pdGVyLl9faXRlcmF0ZSh0aGlzLl91c2VLZXlzP2Z1bmN0aW9uKHQsbil7cmV0dXJuIGUodCxuLHIpfToobj10P1V0KHRoaXMpOjAsZnVuY3Rpb24obyl7cmV0dXJuIGUobyx0Py0tbjpuKysscil9KSx0KX0seHQucHJvdG90eXBlLl9faXRlcmF0b3I9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl91c2VLZXlzKXJldHVybiB0aGlzLl9pdGVyLl9faXRlcmF0b3IoZSx0KTt2YXIgbj10aGlzLl9pdGVyLl9faXRlcmF0b3IoMSx0KSxyPXQ/VXQodGhpcyk6MDtyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKCl7dmFyIG89bi5uZXh0KCk7cmV0dXJuIG8uZG9uZT9vOlIoZSx0Py0tcjpyKyssby52YWx1ZSxvKX0pKX0seHQucHJvdG90eXBlW2hdPSEwLHQoU3QsVSksU3QucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pdGVyLmluY2x1ZGVzKGUpfSxTdC5wcm90b3R5cGUuX19pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPTA7cmV0dXJuIHRoaXMuX2l0ZXIuX19pdGVyYXRlKChmdW5jdGlvbih0KXtyZXR1cm4gZSh0LHIrKyxuKX0pLHQpfSxTdC5wcm90b3R5cGUuX19pdGVyYXRvcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2l0ZXIuX19pdGVyYXRvcigxLHQpLHI9MDtyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5uZXh0KCk7cmV0dXJuIHQuZG9uZT90OlIoZSxyKyssdC52YWx1ZSx0KX0pKX0sdChEdCxXKSxEdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pdGVyLmluY2x1ZGVzKGUpfSxEdC5wcm90b3R5cGUuX19pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5faXRlci5fX2l0ZXJhdGUoKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsdCxuKX0pLHQpfSxEdC5wcm90b3R5cGUuX19pdGVyYXRvcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2l0ZXIuX19pdGVyYXRvcigxLHQpO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXt2YXIgdD1uLm5leHQoKTtyZXR1cm4gdC5kb25lP3Q6UihlLHQudmFsdWUsdC52YWx1ZSx0KX0pKX0sdChUdCxWKSxUdC5wcm90b3R5cGUuZW50cnlTZXE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXRlci50b1NlcSgpfSxUdC5wcm90b3R5cGUuX19pdGVyYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5faXRlci5fX2l0ZXJhdGUoKGZ1bmN0aW9uKHQpe2lmKHQpe1Z0KHQpO3ZhciByPWkodCk7cmV0dXJuIGUocj90LmdldCgxKTp0WzFdLHI/dC5nZXQoMCk6dFswXSxuKX19KSx0KX0sVHQucHJvdG90eXBlLl9faXRlcmF0b3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9pdGVyLl9faXRlcmF0b3IoMSx0KTtyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKCl7Zm9yKDs7KXt2YXIgdD1uLm5leHQoKTtpZih0LmRvbmUpcmV0dXJuIHQ7dmFyIHI9dC52YWx1ZTtpZihyKXtWdChyKTt2YXIgbz1pKHIpO3JldHVybiBSKGUsbz9yLmdldCgwKTpyWzBdLG8/ci5nZXQoMSk6clsxXSx0KX19fSkpfSxTdC5wcm90b3R5cGUuY2FjaGVSZXN1bHQ9eHQucHJvdG90eXBlLmNhY2hlUmVzdWx0PUR0LnByb3RvdHlwZS5jYWNoZVJlc3VsdD1UdC5wcm90b3R5cGUuY2FjaGVSZXN1bHQ9SHQsdChKdCxkZSksSnQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX190b1N0cmluZyhYdCh0aGlzKSsiIHsiLCJ9Iil9LEp0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZXMuaGFzT3duUHJvcGVydHkoZSl9LEp0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5oYXMoZSkpcmV0dXJuIHQ7dmFyIG49dGhpcy5fZGVmYXVsdFZhbHVlc1tlXTtyZXR1cm4gdGhpcy5fbWFwP3RoaXMuX21hcC5nZXQoZSxuKTpufSxKdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtpZih0aGlzLl9fb3duZXJJRClyZXR1cm4gdGhpcy5fbWFwJiZ0aGlzLl9tYXAuY2xlYXIoKSx0aGlzO3ZhciBlPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIGUuX2VtcHR5fHwoZS5fZW1wdHk9JHQodGhpcyxVZSgpKSl9LEp0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc2V0IHVua25vd24ga2V5ICInK2UrJyIgb24gJytYdCh0aGlzKSk7dmFyIG49dGhpcy5fbWFwJiZ0aGlzLl9tYXAuc2V0KGUsdCk7cmV0dXJuIHRoaXMuX19vd25lcklEfHxuPT09dGhpcy5fbWFwP3RoaXM6JHQodGhpcyxuKX0sSnQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXtpZighdGhpcy5oYXMoZSkpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5fbWFwJiZ0aGlzLl9tYXAucmVtb3ZlKGUpO3JldHVybiB0aGlzLl9fb3duZXJJRHx8dD09PXRoaXMuX21hcD90aGlzOiR0KHRoaXMsdCl9LEp0LnByb3RvdHlwZS53YXNBbHRlcmVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcC53YXNBbHRlcmVkKCl9LEp0LnByb3RvdHlwZS5fX2l0ZXJhdG9yPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4gcih0aGlzLl9kZWZhdWx0VmFsdWVzKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uZ2V0KHQpfSkpLl9faXRlcmF0b3IoZSx0KX0sSnQucHJvdG90eXBlLl9faXRlcmF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7cmV0dXJuIHIodGhpcy5fZGVmYXVsdFZhbHVlcykubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBuLmdldCh0KX0pKS5fX2l0ZXJhdGUoZSx0KX0sSnQucHJvdG90eXBlLl9fZW5zdXJlT3duZXI9ZnVuY3Rpb24oZSl7aWYoZT09PXRoaXMuX19vd25lcklEKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuX21hcCYmdGhpcy5fbWFwLl9fZW5zdXJlT3duZXIoZSk7cmV0dXJuIGU/JHQodGhpcyx0LGUpOih0aGlzLl9fb3duZXJJRD1lLHRoaXMuX21hcD10LHRoaXMpfTt2YXIgWnQ9SnQucHJvdG90eXBlO2Z1bmN0aW9uICR0KGUsdCxuKXt2YXIgcj1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSk7cmV0dXJuIHIuX21hcD10LHIuX19vd25lcklEPW4scn1mdW5jdGlvbiBYdChlKXtyZXR1cm4gZS5fbmFtZXx8ZS5jb25zdHJ1Y3Rvci5uYW1lfHwiUmVjb3JkIn1mdW5jdGlvbiBlbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0KX0sc2V0OmZ1bmN0aW9uKGUpe2xlKHRoaXMuX19vd25lcklELCJDYW5ub3Qgc2V0IG9uIGFuIGltbXV0YWJsZSByZWNvcmQuIiksdGhpcy5zZXQodCxlKX19KX1mdW5jdGlvbiB0bihlKXtyZXR1cm4gbnVsbD09ZT9sbigpOm5uKGUpJiYhYyhlKT9lOmxuKCkud2l0aE11dGF0aW9ucygoZnVuY3Rpb24odCl7dmFyIG49YShlKTtUZShuLnNpemUpLG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuYWRkKGUpfSkpfSkpfWZ1bmN0aW9uIG5uKGUpe3JldHVybiEoIWV8fCFlW29uXSl9WnQuZGVsZXRlPVp0LnJlbW92ZSxadC5kZWxldGVJbj1adC5yZW1vdmVJbj1MZS5yZW1vdmVJbixadC5tZXJnZT1MZS5tZXJnZSxadC5tZXJnZVdpdGg9TGUubWVyZ2VXaXRoLFp0Lm1lcmdlSW49TGUubWVyZ2VJbixadC5tZXJnZURlZXA9TGUubWVyZ2VEZWVwLFp0Lm1lcmdlRGVlcFdpdGg9TGUubWVyZ2VEZWVwV2l0aCxadC5tZXJnZURlZXBJbj1MZS5tZXJnZURlZXBJbixadC5zZXRJbj1MZS5zZXRJbixadC51cGRhdGU9TGUudXBkYXRlLFp0LnVwZGF0ZUluPUxlLnVwZGF0ZUluLFp0LndpdGhNdXRhdGlvbnM9TGUud2l0aE11dGF0aW9ucyxadC5hc011dGFibGU9TGUuYXNNdXRhYmxlLFp0LmFzSW1tdXRhYmxlPUxlLmFzSW1tdXRhYmxlLHQodG4saGUpLHRuLm9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMoYXJndW1lbnRzKX0sdG4uZnJvbUtleXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMocihlKS5rZXlTZXEoKSl9LHRuLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fdG9TdHJpbmcoIlNldCB7IiwifSIpfSx0bi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUpfSx0bi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiB1bih0aGlzLHRoaXMuX21hcC5zZXQoZSwhMCkpfSx0bi5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe3JldHVybiB1bih0aGlzLHRoaXMuX21hcC5yZW1vdmUoZSkpfSx0bi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdW4odGhpcyx0aGlzLl9tYXAuY2xlYXIoKSl9LHRuLnByb3RvdHlwZS51bmlvbj1mdW5jdGlvbigpe3ZhciB0PWUuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIDA9PT0odD10LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT1lLnNpemV9KSkpLmxlbmd0aD90aGlzOjAhPT10aGlzLnNpemV8fHRoaXMuX19vd25lcklEfHwxIT09dC5sZW5ndGg/dGhpcy53aXRoTXV0YXRpb25zKChmdW5jdGlvbihlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylhKHRbbl0pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLmFkZCh0KX0pKX0pKTp0aGlzLmNvbnN0cnVjdG9yKHRbMF0pfSx0bi5wcm90b3R5cGUuaW50ZXJzZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5jYWxsKGFyZ3VtZW50cywwKTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHRoaXM7dD10Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSk7dmFyIG49dGhpcztyZXR1cm4gdGhpcy53aXRoTXV0YXRpb25zKChmdW5jdGlvbihlKXtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3QuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmluY2x1ZGVzKG4pfSkpfHxlLnJlbW92ZShuKX0pKX0pKX0sdG4ucHJvdG90eXBlLnN1YnRyYWN0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5jYWxsKGFyZ3VtZW50cywwKTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHRoaXM7dD10Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSk7dmFyIG49dGhpcztyZXR1cm4gdGhpcy53aXRoTXV0YXRpb25zKChmdW5jdGlvbihlKXtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3Quc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5jbHVkZXMobil9KSkmJmUucmVtb3ZlKG4pfSkpfSkpfSx0bi5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHRuLnByb3RvdHlwZS5tZXJnZVdpdGg9ZnVuY3Rpb24odCl7dmFyIG49ZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gdGhpcy51bmlvbi5hcHBseSh0aGlzLG4pfSx0bi5wcm90b3R5cGUuc29ydD1mdW5jdGlvbihlKXtyZXR1cm4gY24oRnQodGhpcyxlKSl9LHRuLnByb3RvdHlwZS5zb3J0Qnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gY24oRnQodGhpcyx0LGUpKX0sdG4ucHJvdG90eXBlLndhc0FsdGVyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwLndhc0FsdGVyZWQoKX0sdG4ucHJvdG90eXBlLl9faXRlcmF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7cmV0dXJuIHRoaXMuX21hcC5fX2l0ZXJhdGUoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUocixyLG4pfSksdCl9LHRuLnByb3RvdHlwZS5fX2l0ZXJhdG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KSkuX19pdGVyYXRvcihlLHQpfSx0bi5wcm90b3R5cGUuX19lbnN1cmVPd25lcj1mdW5jdGlvbihlKXtpZihlPT09dGhpcy5fX293bmVySUQpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5fbWFwLl9fZW5zdXJlT3duZXIoZSk7cmV0dXJuIGU/dGhpcy5fX21ha2UodCxlKToodGhpcy5fX293bmVySUQ9ZSx0aGlzLl9tYXA9dCx0aGlzKX0sdG4uaXNTZXQ9bm47dmFyIHJuLG9uPSJAQF9fSU1NVVRBQkxFX1NFVF9fQEAiLGFuPXRuLnByb3RvdHlwZTtmdW5jdGlvbiB1bihlLHQpe3JldHVybiBlLl9fb3duZXJJRD8oZS5zaXplPXQuc2l6ZSxlLl9tYXA9dCxlKTp0PT09ZS5fbWFwP2U6MD09PXQuc2l6ZT9lLl9fZW1wdHkoKTplLl9fbWFrZSh0KX1mdW5jdGlvbiBzbihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUoYW4pO3JldHVybiBuLnNpemU9ZT9lLnNpemU6MCxuLl9tYXA9ZSxuLl9fb3duZXJJRD10LG59ZnVuY3Rpb24gbG4oKXtyZXR1cm4gcm58fChybj1zbihVZSgpKSl9ZnVuY3Rpb24gY24oZSl7cmV0dXJuIG51bGw9PWU/eW4oKTpmbihlKT9lOnluKCkud2l0aE11dGF0aW9ucygoZnVuY3Rpb24odCl7dmFyIG49YShlKTtUZShuLnNpemUpLG4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuYWRkKGUpfSkpfSkpfWZ1bmN0aW9uIGZuKGUpe3JldHVybiBubihlKSYmYyhlKX1hbltvbl09ITAsYW4uZGVsZXRlPWFuLnJlbW92ZSxhbi5tZXJnZURlZXA9YW4ubWVyZ2UsYW4ubWVyZ2VEZWVwV2l0aD1hbi5tZXJnZVdpdGgsYW4ud2l0aE11dGF0aW9ucz1MZS53aXRoTXV0YXRpb25zLGFuLmFzTXV0YWJsZT1MZS5hc011dGFibGUsYW4uYXNJbW11dGFibGU9TGUuYXNJbW11dGFibGUsYW4uX19lbXB0eT1sbixhbi5fX21ha2U9c24sdChjbix0biksY24ub2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyhhcmd1bWVudHMpfSxjbi5mcm9tS2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcyhyKGUpLmtleVNlcSgpKX0sY24ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX190b1N0cmluZygiT3JkZXJlZFNldCB7IiwifSIpfSxjbi5pc09yZGVyZWRTZXQ9Zm47dmFyIGRuLHBuPWNuLnByb3RvdHlwZTtmdW5jdGlvbiBobihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUocG4pO3JldHVybiBuLnNpemU9ZT9lLnNpemU6MCxuLl9tYXA9ZSxuLl9fb3duZXJJRD10LG59ZnVuY3Rpb24geW4oKXtyZXR1cm4gZG58fChkbj1obihrdCgpKSl9ZnVuY3Rpb24gbW4oZSl7cmV0dXJuIG51bGw9PWU/RW4oKTp2bihlKT9lOkVuKCkudW5zaGlmdEFsbChlKX1mdW5jdGlvbiB2bihlKXtyZXR1cm4hKCFlfHwhZVtibl0pfXBuW2hdPSEwLHBuLl9fZW1wdHk9eW4scG4uX19tYWtlPWhuLHQobW4scGUpLG1uLm9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMoYXJndW1lbnRzKX0sbW4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX190b1N0cmluZygiU3RhY2sgWyIsIl0iKX0sbW4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2hlYWQ7Zm9yKGU9Tyh0aGlzLGUpO24mJmUtLTspbj1uLm5leHQ7cmV0dXJuIG4/bi52YWx1ZTp0fSxtbi5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWFkJiZ0aGlzLl9oZWFkLnZhbHVlfSxtbi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzO2Zvcih2YXIgZT10aGlzLnNpemUrYXJndW1lbnRzLmxlbmd0aCx0PXRoaXMuX2hlYWQsbj1hcmd1bWVudHMubGVuZ3RoLTE7bj49MDtuLS0pdD17dmFsdWU6YXJndW1lbnRzW25dLG5leHQ6dH07cmV0dXJuIHRoaXMuX19vd25lcklEPyh0aGlzLnNpemU9ZSx0aGlzLl9oZWFkPXQsdGhpcy5fX2hhc2g9dm9pZCAwLHRoaXMuX19hbHRlcmVkPSEwLHRoaXMpOl9uKGUsdCl9LG1uLnByb3RvdHlwZS5wdXNoQWxsPWZ1bmN0aW9uKGUpe2lmKDA9PT0oZT1vKGUpKS5zaXplKXJldHVybiB0aGlzO1RlKGUuc2l6ZSk7dmFyIHQ9dGhpcy5zaXplLG49dGhpcy5faGVhZDtyZXR1cm4gZS5yZXZlcnNlKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dCsrLG49e3ZhbHVlOmUsbmV4dDpufX0pKSx0aGlzLl9fb3duZXJJRD8odGhpcy5zaXplPXQsdGhpcy5faGVhZD1uLHRoaXMuX19oYXNoPXZvaWQgMCx0aGlzLl9fYWx0ZXJlZD0hMCx0aGlzKTpfbih0LG4pfSxtbi5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpY2UoMSl9LG1uLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG1uLnByb3RvdHlwZS51bnNoaWZ0QWxsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hBbGwoZSl9LG1uLnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG1uLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zaXplP3RoaXM6dGhpcy5fX293bmVySUQ/KHRoaXMuc2l6ZT0wLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX19oYXNoPXZvaWQgMCx0aGlzLl9fYWx0ZXJlZD0hMCx0aGlzKTpFbigpfSxtbi5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXtpZihDKGUsdCx0aGlzLnNpemUpKXJldHVybiB0aGlzO3ZhciBuPXgoZSx0aGlzLnNpemUpO2lmKFModCx0aGlzLnNpemUpIT09dGhpcy5zaXplKXJldHVybiBwZS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLGUsdCk7Zm9yKHZhciByPXRoaXMuc2l6ZS1uLG89dGhpcy5faGVhZDtuLS07KW89by5uZXh0O3JldHVybiB0aGlzLl9fb3duZXJJRD8odGhpcy5zaXplPXIsdGhpcy5faGVhZD1vLHRoaXMuX19oYXNoPXZvaWQgMCx0aGlzLl9fYWx0ZXJlZD0hMCx0aGlzKTpfbihyLG8pfSxtbi5wcm90b3R5cGUuX19lbnN1cmVPd25lcj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXRoaXMuX19vd25lcklEP3RoaXM6ZT9fbih0aGlzLnNpemUsdGhpcy5faGVhZCxlLHRoaXMuX19oYXNoKToodGhpcy5fX293bmVySUQ9ZSx0aGlzLl9fYWx0ZXJlZD0hMSx0aGlzKX0sbW4ucHJvdG90eXBlLl9faXRlcmF0ZT1mdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHRoaXMucmV2ZXJzZSgpLl9faXRlcmF0ZShlKTtmb3IodmFyIG49MCxyPXRoaXMuX2hlYWQ7ciYmITEhPT1lKHIudmFsdWUsbisrLHRoaXMpOylyPXIubmV4dDtyZXR1cm4gbn0sbW4ucHJvdG90eXBlLl9faXRlcmF0b3I9ZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybiB0aGlzLnJldmVyc2UoKS5fX2l0ZXJhdG9yKGUpO3ZhciBuPTAscj10aGlzLl9oZWFkO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXtpZihyKXt2YXIgdD1yLnZhbHVlO3JldHVybiByPXIubmV4dCxSKGUsbisrLHQpfXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19KSl9LG1uLmlzU3RhY2s9dm47dmFyIGduLGJuPSJAQF9fSU1NVVRBQkxFX1NUQUNLX19AQCIsd249bW4ucHJvdG90eXBlO2Z1bmN0aW9uIF9uKGUsdCxuLHIpe3ZhciBvPU9iamVjdC5jcmVhdGUod24pO3JldHVybiBvLnNpemU9ZSxvLl9oZWFkPXQsby5fX293bmVySUQ9bixvLl9faGFzaD1yLG8uX19hbHRlcmVkPSExLG99ZnVuY3Rpb24gRW4oKXtyZXR1cm4gZ258fChnbj1fbigwKSl9ZnVuY3Rpb24gT24oZSx0KXt2YXIgbj1mdW5jdGlvbihuKXtlLnByb3RvdHlwZVtuXT10W25dfTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChuKSxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiZPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLmZvckVhY2gobiksZX13bltibl09ITAsd24ud2l0aE11dGF0aW9ucz1MZS53aXRoTXV0YXRpb25zLHduLmFzTXV0YWJsZT1MZS5hc011dGFibGUsd24uYXNJbW11dGFibGU9TGUuYXNJbW11dGFibGUsd24ud2FzQWx0ZXJlZD1MZS53YXNBbHRlcmVkLG4uSXRlcmF0b3I9TCxPbihuLHt0b0FycmF5OmZ1bmN0aW9uKCl7VGUodGhpcy5zaXplKTt2YXIgZT1uZXcgQXJyYXkodGhpcy5zaXplfHwwKTtyZXR1cm4gdGhpcy52YWx1ZVNlcSgpLl9faXRlcmF0ZSgoZnVuY3Rpb24odCxuKXtlW25dPXR9KSksZX0sdG9JbmRleGVkU2VxOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTdCh0aGlzKX0sdG9KUzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU2VxKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudG9KUz9lLnRvSlMoKTplfSkpLl9fdG9KUygpfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1NlcSgpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvSlNPTj9lLnRvSlNPTigpOmV9KSkuX190b0pTKCl9LHRvS2V5ZWRTZXE6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHh0KHRoaXMsITApfSx0b01hcDpmdW5jdGlvbigpe3JldHVybiBNZSh0aGlzLnRvS2V5ZWRTZXEoKSl9LHRvT2JqZWN0OmZ1bmN0aW9uKCl7VGUodGhpcy5zaXplKTt2YXIgZT17fTtyZXR1cm4gdGhpcy5fX2l0ZXJhdGUoKGZ1bmN0aW9uKHQsbil7ZVtuXT10fSkpLGV9LHRvT3JkZXJlZE1hcDpmdW5jdGlvbigpe3JldHVybiBfdCh0aGlzLnRvS2V5ZWRTZXEoKSl9LHRvT3JkZXJlZFNldDpmdW5jdGlvbigpe3JldHVybiBjbih1KHRoaXMpP3RoaXMudmFsdWVTZXEoKTp0aGlzKX0sdG9TZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdG4odSh0aGlzKT90aGlzLnZhbHVlU2VxKCk6dGhpcyl9LHRvU2V0U2VxOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEdCh0aGlzKX0sdG9TZXE6ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzKT90aGlzLnRvSW5kZXhlZFNlcSgpOnUodGhpcyk/dGhpcy50b0tleWVkU2VxKCk6dGhpcy50b1NldFNlcSgpfSx0b1N0YWNrOmZ1bmN0aW9uKCl7cmV0dXJuIG1uKHUodGhpcyk/dGhpcy52YWx1ZVNlcSgpOnRoaXMpfSx0b0xpc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gb3QodSh0aGlzKT90aGlzLnZhbHVlU2VxKCk6dGhpcyl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIltJdGVyYWJsZV0ifSxfX3RvU3RyaW5nOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLnNpemU/ZSt0OmUrIiAiK3RoaXMudG9TZXEoKS5tYXAodGhpcy5fX3RvU3RyaW5nTWFwcGVyKS5qb2luKCIsICIpKyIgIit0fSxjb25jYXQ6ZnVuY3Rpb24oKXt2YXIgdD1lLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBxdCh0aGlzLEl0KHRoaXMsdCkpfSxpbmNsdWRlczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gaWUodCxlKX0pKX0sZW50cmllczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9faXRlcmF0b3IoMil9LGV2ZXJ5OmZ1bmN0aW9uKGUsdCl7VGUodGhpcy5zaXplKTt2YXIgbj0hMDtyZXR1cm4gdGhpcy5fX2l0ZXJhdGUoKGZ1bmN0aW9uKHIsbyxhKXtpZighZS5jYWxsKHQscixvLGEpKXJldHVybiBuPSExLCExfSkpLG59LGZpbHRlcjpmdW5jdGlvbihlLHQpe3JldHVybiBxdCh0aGlzLGp0KHRoaXMsZSx0LCEwKSl9LGZpbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZmluZEVudHJ5KGUsdCk7cmV0dXJuIHI/clsxXTpufSxmaW5kRW50cnk6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gdGhpcy5fX2l0ZXJhdGUoKGZ1bmN0aW9uKHIsbyxhKXtpZihlLmNhbGwodCxyLG8sYSkpcmV0dXJuIG49W28scl0sITF9KSksbn0sZmluZExhc3RFbnRyeTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRvU2VxKCkucmV2ZXJzZSgpLmZpbmRFbnRyeShlLHQpfSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFRlKHRoaXMuc2l6ZSksdGhpcy5fX2l0ZXJhdGUodD9lLmJpbmQodCk6ZSl9LGpvaW46ZnVuY3Rpb24oZSl7VGUodGhpcy5zaXplKSxlPXZvaWQgMCE9PWU/IiIrZToiLCI7dmFyIHQ9IiIsbj0hMDtyZXR1cm4gdGhpcy5fX2l0ZXJhdGUoKGZ1bmN0aW9uKHIpe24/bj0hMTp0Kz1lLHQrPW51bGwhPXI/ci50b1N0cmluZygpOiIifSkpLHR9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2l0ZXJhdG9yKDApfSxtYXA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcXQodGhpcyxQdCh0aGlzLGUsdCkpfSxyZWR1Y2U6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87cmV0dXJuIFRlKHRoaXMuc2l6ZSksYXJndW1lbnRzLmxlbmd0aDwyP289ITA6cj10LHRoaXMuX19pdGVyYXRlKChmdW5jdGlvbih0LGEsaSl7bz8obz0hMSxyPXQpOnI9ZS5jYWxsKG4scix0LGEsaSl9KSkscn0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMudG9LZXllZFNlcSgpLnJldmVyc2UoKTtyZXR1cm4gci5yZWR1Y2UuYXBwbHkocixhcmd1bWVudHMpfSxyZXZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIHF0KHRoaXMsTnQodGhpcywhMCkpfSxzbGljZTpmdW5jdGlvbihlLHQpe3JldHVybiBxdCh0aGlzLEx0KHRoaXMsZSx0LCEwKSl9LHNvbWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdGhpcy5ldmVyeShEbihlKSx0KX0sc29ydDpmdW5jdGlvbihlKXtyZXR1cm4gcXQodGhpcyxGdCh0aGlzLGUpKX0sdmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19pdGVyYXRvcigxKX0sYnV0TGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNsaWNlKDAsLTEpfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuc2l6ZT8wPT09dGhpcy5zaXplOiF0aGlzLnNvbWUoKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSl9LGNvdW50OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUoZT90aGlzLnRvU2VxKCkuZmlsdGVyKGUsdCk6dGhpcyl9LGNvdW50Qnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByPU1lKCkuYXNNdXRhYmxlKCk7cmV0dXJuIGUuX19pdGVyYXRlKChmdW5jdGlvbihvLGEpe3IudXBkYXRlKHQuY2FsbChuLG8sYSxlKSwwLChmdW5jdGlvbihlKXtyZXR1cm4gZSsxfSkpfSkpLHIuYXNJbW11dGFibGUoKX0odGhpcyxlLHQpfSxlcXVhbHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHVlKHRoaXMsZSl9LGVudHJ5U2VxOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihlLl9jYWNoZSlyZXR1cm4gbmV3IFkoZS5fY2FjaGUpO3ZhciB0PWUudG9TZXEoKS5tYXAoU24pLnRvSW5kZXhlZFNlcSgpO3JldHVybiB0LmZyb21FbnRyeVNlcT1mdW5jdGlvbigpe3JldHVybiBlLnRvU2VxKCl9LHR9LGZpbHRlck5vdDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmZpbHRlcihEbihlKSx0KX0sZmluZExhc3Q6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLnRvS2V5ZWRTZXEoKS5yZXZlcnNlKCkuZmluZChlLHQsbil9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmluZChrKX0sZmxhdE1hcDpmdW5jdGlvbihlLHQpe3JldHVybiBxdCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1XdChlKTtyZXR1cm4gZS50b1NlcSgpLm1hcCgoZnVuY3Rpb24obyxhKXtyZXR1cm4gcih0LmNhbGwobixvLGEsZSkpfSkpLmZsYXR0ZW4oITApfSh0aGlzLGUsdCkpfSxmbGF0dGVuOmZ1bmN0aW9uKGUpe3JldHVybiBxdCh0aGlzLEF0KHRoaXMsZSwhMCkpfSxmcm9tRW50cnlTZXE6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFR0KHRoaXMpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5maW5kKChmdW5jdGlvbih0LG4pe3JldHVybiBpZShuLGUpfSksdm9pZCAwLHQpfSxnZXRJbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixyPXRoaXMsbz1RdChlKTshKG49by5uZXh0KCkpLmRvbmU7KXt2YXIgYT1uLnZhbHVlO2lmKChyPXImJnIuZ2V0P3IuZ2V0KGEseSk6eSk9PT15KXJldHVybiB0fXJldHVybiByfSxncm91cEJ5OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj11KGUpLG89KGMoZSk/X3QoKTpNZSgpKS5hc011dGFibGUoKTtlLl9faXRlcmF0ZSgoZnVuY3Rpb24oYSxpKXtvLnVwZGF0ZSh0LmNhbGwobixhLGksZSksKGZ1bmN0aW9uKGUpe3JldHVybihlPWV8fFtdKS5wdXNoKHI/W2ksYV06YSksZX0pKX0pKTt2YXIgYT1XdChlKTtyZXR1cm4gby5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBxdChlLGEodCkpfSkpfSh0aGlzLGUsdCl9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5nZXQoZSx5KSE9PXl9LGhhc0luOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldEluKGUseSkhPT15fSxpc1N1YnNldDpmdW5jdGlvbihlKXtyZXR1cm4gZT0iZnVuY3Rpb24iPT10eXBlb2YgZS5pbmNsdWRlcz9lOm4oZSksdGhpcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5jbHVkZXModCl9KSl9LGlzU3VwZXJzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGU9ImZ1bmN0aW9uIj09dHlwZW9mIGUuaXNTdWJzZXQ/ZTpuKGUpKS5pc1N1YnNldCh0aGlzKX0sa2V5U2VxOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TZXEoKS5tYXAoeG4pLnRvSW5kZXhlZFNlcSgpfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TZXEoKS5yZXZlcnNlKCkuZmlyc3QoKX0sbWF4OmZ1bmN0aW9uKGUpe3JldHVybiBCdCh0aGlzLGUpfSxtYXhCeTpmdW5jdGlvbihlLHQpe3JldHVybiBCdCh0aGlzLHQsZSl9LG1pbjpmdW5jdGlvbihlKXtyZXR1cm4gQnQodGhpcyxlP1RuKGUpOk5uKX0sbWluQnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQnQodGhpcyx0P1RuKHQpOk5uLGUpfSxyZXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpY2UoMSl9LHNraXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2xpY2UoTWF0aC5tYXgoMCxlKSl9LHNraXBMYXN0OmZ1bmN0aW9uKGUpe3JldHVybiBxdCh0aGlzLHRoaXMudG9TZXEoKS5yZXZlcnNlKCkuc2tpcChlKS5yZXZlcnNlKCkpfSxza2lwV2hpbGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcXQodGhpcyxSdCh0aGlzLGUsdCwhMCkpfSxza2lwVW50aWw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5za2lwV2hpbGUoRG4oZSksdCl9LHNvcnRCeTpmdW5jdGlvbihlLHQpe3JldHVybiBxdCh0aGlzLEZ0KHRoaXMsdCxlKSl9LHRha2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2xpY2UoMCxNYXRoLm1heCgwLGUpKX0sdGFrZUxhc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHF0KHRoaXMsdGhpcy50b1NlcSgpLnJldmVyc2UoKS50YWtlKGUpLnJldmVyc2UoKSl9LHRha2VXaGlsZTpmdW5jdGlvbihlLHQpe3JldHVybiBxdCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1ZdChlKTtyZXR1cm4gci5fX2l0ZXJhdGVVbmNhY2hlZD1mdW5jdGlvbihyLG8pe3ZhciBhPXRoaXM7aWYobylyZXR1cm4gdGhpcy5jYWNoZVJlc3VsdCgpLl9faXRlcmF0ZShyLG8pO3ZhciBpPTA7cmV0dXJuIGUuX19pdGVyYXRlKChmdW5jdGlvbihlLG8sdSl7cmV0dXJuIHQuY2FsbChuLGUsbyx1KSYmKytpJiZyKGUsbyxhKX0pKSxpfSxyLl9faXRlcmF0b3JVbmNhY2hlZD1mdW5jdGlvbihyLG8pe3ZhciBhPXRoaXM7aWYobylyZXR1cm4gdGhpcy5jYWNoZVJlc3VsdCgpLl9faXRlcmF0b3IocixvKTt2YXIgaT1lLl9faXRlcmF0b3IoMixvKSx1PSEwO3JldHVybiBuZXcgTCgoZnVuY3Rpb24oKXtpZighdSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O3ZhciBlPWkubmV4dCgpO2lmKGUuZG9uZSlyZXR1cm4gZTt2YXIgbz1lLnZhbHVlLHM9b1swXSxsPW9bMV07cmV0dXJuIHQuY2FsbChuLGwscyxhKT8yPT09cj9lOlIocixzLGwsZSk6KHU9ITEse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSl9KSl9LHJ9KHRoaXMsZSx0KSl9LHRha2VVbnRpbDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRha2VXaGlsZShEbihlKSx0KX0sdmFsdWVTZXE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b0luZGV4ZWRTZXEoKX0saGFzaENvZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2hhc2h8fCh0aGlzLl9faGFzaD1mdW5jdGlvbihlKXtpZihlLnNpemU9PT0xLzApcmV0dXJuIDA7dmFyIHQ9YyhlKSxuPXUoZSkscj10PzE6MDtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD15ZSh0LDM0MzI5MTgzNTMpLHQ9eWUodDw8MTV8dD4+Pi0xNSw0NjE4NDU5MDcpLHQ9eWUodDw8MTN8dD4+Pi0xMyw1KSx0PXllKCh0PSh0KzM4NjQyOTIxOTZ8MCleZSledD4+PjE2LDIyNDY4MjI1MDcpLHQ9bWUoKHQ9eWUodF50Pj4+MTMsMzI2NjQ4OTkwOSkpXnQ+Pj4xNil9KGUuX19pdGVyYXRlKG4/dD9mdW5jdGlvbihlLHQpe3I9MzEqcitqbih2ZShlKSx2ZSh0KSl8MH06ZnVuY3Rpb24oZSx0KXtyPXIram4odmUoZSksdmUodCkpfDB9OnQ/ZnVuY3Rpb24oZSl7cj0zMSpyK3ZlKGUpfDB9OmZ1bmN0aW9uKGUpe3I9cit2ZShlKXwwfSkscil9KHRoaXMpKX19KTt2YXIga249bi5wcm90b3R5cGU7a25bZl09ITAsa25bal09a24udmFsdWVzLGtuLl9fdG9KUz1rbi50b0FycmF5LGtuLl9fdG9TdHJpbmdNYXBwZXI9TW4sa24uaW5zcGVjdD1rbi50b1NvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9LGtuLmNoYWluPWtuLmZsYXRNYXAsa24uY29udGFpbnM9a24uaW5jbHVkZXMsZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGtuLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtpZighbi5ub0xlbmd0aFdhcm5pbmcpe3ZhciBlO3RyeXt0aHJvdyBuZXcgRXJyb3J9Y2F0Y2godCl7ZT10LnN0YWNrfWlmKC0xPT09ZS5pbmRleE9mKCJfd3JhcE9iamVjdCIpKXJldHVybiBjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiaXRlcmFibGUubGVuZ3RoIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSBpdGVyYWJsZS5zaXplIG9yIGl0ZXJhYmxlLmNvdW50KCkuIFRoaXMgd2FybmluZyB3aWxsIGJlY29tZSBhIHNpbGVudCBlcnJvciBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiAiK2UpLHRoaXMuc2l6ZX19fSl9Y2F0Y2goZSl7fX0oKSxPbihyLHtmbGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHF0KHRoaXMsTXQodGhpcykpfSxmaW5kS2V5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5maW5kRW50cnkoZSx0KTtyZXR1cm4gbiYmblswXX0sZmluZExhc3RLZXk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy50b1NlcSgpLnJldmVyc2UoKS5maW5kS2V5KGUsdCl9LGtleU9mOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbmRLZXkoKGZ1bmN0aW9uKHQpe3JldHVybiBpZSh0LGUpfSkpfSxsYXN0S2V5T2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmluZExhc3RLZXkoKGZ1bmN0aW9uKHQpe3JldHVybiBpZSh0LGUpfSkpfSxtYXBFbnRyaWVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPTA7cmV0dXJuIHF0KHRoaXMsdGhpcy50b1NlcSgpLm1hcCgoZnVuY3Rpb24obyxhKXtyZXR1cm4gZS5jYWxsKHQsW2Esb10scisrLG4pfSkpLmZyb21FbnRyeVNlcSgpKX0sbWFwS2V5czpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7cmV0dXJuIHF0KHRoaXMsdGhpcy50b1NlcSgpLmZsaXAoKS5tYXAoKGZ1bmN0aW9uKHIsbyl7cmV0dXJuIGUuY2FsbCh0LHIsbyxuKX0pKS5mbGlwKCkpfX0pO3ZhciBDbj1yLnByb3RvdHlwZTtmdW5jdGlvbiB4bihlLHQpe3JldHVybiB0fWZ1bmN0aW9uIFNuKGUsdCl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gRG4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBUbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4tZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIE1uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9KU09OLnN0cmluZ2lmeShlKTplfWZ1bmN0aW9uIFBuKCl7cmV0dXJuIF8oYXJndW1lbnRzKX1mdW5jdGlvbiBObihlLHQpe3JldHVybiBlPHQ/MTplPnQ/LTE6MH1mdW5jdGlvbiBqbihlLHQpe3JldHVybiBlXnQrMjY1NDQzNTc2OSsoZTw8NikrKGU+PjIpfDB9cmV0dXJuIENuW2RdPSEwLENuW2pdPWtuLmVudHJpZXMsQ24uX190b0pTPWtuLnRvT2JqZWN0LENuLl9fdG9TdHJpbmdNYXBwZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogIitNbihlKX0sT24obyx7dG9LZXllZFNlcTpmdW5jdGlvbigpe3JldHVybiBuZXcgeHQodGhpcywhMSl9LGZpbHRlcjpmdW5jdGlvbihlLHQpe3JldHVybiBxdCh0aGlzLGp0KHRoaXMsZSx0LCExKSl9LGZpbmRJbmRleDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZmluZEVudHJ5KGUsdCk7cmV0dXJuIG4/blswXTotMX0saW5kZXhPZjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRvS2V5ZWRTZXEoKS5rZXlPZihlKTtyZXR1cm4gdm9pZCAwPT09dD8tMTp0fSxsYXN0SW5kZXhPZjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRvS2V5ZWRTZXEoKS5yZXZlcnNlKCkua2V5T2YoZSk7cmV0dXJuIHZvaWQgMD09PXQ/LTE6dH0scmV2ZXJzZTpmdW5jdGlvbigpe3JldHVybiBxdCh0aGlzLE50KHRoaXMsITEpKX0sc2xpY2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcXQodGhpcyxMdCh0aGlzLGUsdCwhMSkpfSxzcGxpY2U6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoO2lmKHQ9TWF0aC5tYXgoMHx0LDApLDA9PT1ufHwyPT09biYmIXQpcmV0dXJuIHRoaXM7ZT14KGUsZTwwP3RoaXMuY291bnQoKTp0aGlzLnNpemUpO3ZhciByPXRoaXMuc2xpY2UoMCxlKTtyZXR1cm4gcXQodGhpcywxPT09bj9yOnIuY29uY2F0KF8oYXJndW1lbnRzLDIpLHRoaXMuc2xpY2UoZSt0KSkpfSxmaW5kTGFzdEluZGV4OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy50b0tleWVkU2VxKCkuZmluZExhc3RLZXkoZSx0KTtyZXR1cm4gdm9pZCAwPT09bj8tMTpufSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sZmxhdHRlbjpmdW5jdGlvbihlKXtyZXR1cm4gcXQodGhpcyxBdCh0aGlzLGUsITEpKX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuKGU9Tyh0aGlzLGUpKTwwfHx0aGlzLnNpemU9PT0xLzB8fHZvaWQgMCE9PXRoaXMuc2l6ZSYmZT50aGlzLnNpemU/dDp0aGlzLmZpbmQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG49PT1lfSksdm9pZCAwLHQpfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuKGU9Tyh0aGlzLGUpKT49MCYmKHZvaWQgMCE9PXRoaXMuc2l6ZT90aGlzLnNpemU9PT0xLzB8fGU8dGhpcy5zaXplOi0xIT09dGhpcy5pbmRleE9mKGUpKX0saW50ZXJwb3NlOmZ1bmN0aW9uKGUpe3JldHVybiBxdCh0aGlzLGZ1bmN0aW9uKGUsdCl7dmFyIG49WXQoZSk7cmV0dXJuIG4uc2l6ZT1lLnNpemUmJjIqZS5zaXplLTEsbi5fX2l0ZXJhdGVVbmNhY2hlZD1mdW5jdGlvbihuLHIpe3ZhciBvPXRoaXMsYT0wO3JldHVybiBlLl9faXRlcmF0ZSgoZnVuY3Rpb24oZSxyKXtyZXR1cm4oIWF8fCExIT09bih0LGErKyxvKSkmJiExIT09bihlLGErKyxvKX0pLHIpLGF9LG4uX19pdGVyYXRvclVuY2FjaGVkPWZ1bmN0aW9uKG4scil7dmFyIG8sYT1lLl9faXRlcmF0b3IoMSxyKSxpPTA7cmV0dXJuIG5ldyBMKChmdW5jdGlvbigpe3JldHVybighb3x8aSUyKSYmKG89YS5uZXh0KCkpLmRvbmU/bzppJTI/UihuLGkrKyx0KTpSKG4saSsrLG8udmFsdWUsbyl9KSl9LG59KHRoaXMsZSkpfSxpbnRlcmxlYXZlOmZ1bmN0aW9uKCl7dmFyIGU9W3RoaXNdLmNvbmNhdChfKGFyZ3VtZW50cykpLHQ9S3QodGhpcy50b1NlcSgpLFUub2YsZSksbj10LmZsYXR0ZW4oITApO3JldHVybiB0LnNpemUmJihuLnNpemU9dC5zaXplKmUubGVuZ3RoKSxxdCh0aGlzLG4pfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KC0xKX0sc2tpcFdoaWxlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHF0KHRoaXMsUnQodGhpcyxlLHQsITEpKX0semlwOmZ1bmN0aW9uKCl7dmFyIGU9W3RoaXNdLmNvbmNhdChfKGFyZ3VtZW50cykpO3JldHVybiBxdCh0aGlzLEt0KHRoaXMsUG4sZSkpfSx6aXBXaXRoOmZ1bmN0aW9uKGUpe3ZhciB0PV8oYXJndW1lbnRzKTtyZXR1cm4gdFswXT10aGlzLHF0KHRoaXMsS3QodGhpcyxlLHQpKX19KSxvLnByb3RvdHlwZVtwXT0hMCxvLnByb3RvdHlwZVtoXT0hMCxPbihhLHtnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5oYXMoZSk/ZTp0fSxpbmNsdWRlczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5oYXMoZSl9LGtleVNlcTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlU2VxKCl9fSksYS5wcm90b3R5cGUuaGFzPWtuLmluY2x1ZGVzLE9uKFYsci5wcm90b3R5cGUpLE9uKFUsby5wcm90b3R5cGUpLE9uKFcsYS5wcm90b3R5cGUpLE9uKGRlLHIucHJvdG90eXBlKSxPbihwZSxvLnByb3RvdHlwZSksT24oaGUsYS5wcm90b3R5cGUpLHtJdGVyYWJsZTpuLFNlcTpxLENvbGxlY3Rpb246ZmUsTWFwOk1lLE9yZGVyZWRNYXA6X3QsTGlzdDpvdCxTdGFjazptbixTZXQ6dG4sT3JkZXJlZFNldDpjbixSZWNvcmQ6SnQsUmFuZ2U6Y2UsUmVwZWF0OnNlLGlzOmllLGZyb21KUzpyZX19KCl9LEpiV1g6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4dGVuZD1mdW5jdGlvbihlKXt2YXIgdCxuLG8sYSxpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IodD0wLG49aS5sZW5ndGg7dDxuO3QrPTEpaWYobz1pW3RdKWZvcihhIGluIG8pci5jYWxsKG8sYSkmJihlW2FdPW9bYV0pO3JldHVybiBlfTt2YXIgcj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuaG9wPXJ9LEs0Q0g6ZnVuY3Rpb24oZSx0LG4pe3ZhciByOyFmdW5jdGlvbihvLGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaT0ibW9kZWwiLHU9Im5hbWUiLHM9InR5cGUiLGw9InZlbmRvciIsYz0idmVyc2lvbiIsZj0ibW9iaWxlIixkPSJ0YWJsZXQiLHA9e2V4dGVuZDpmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXRbcl0mJnRbcl0ubGVuZ3RoJTI9PTA/bltyXT10W3JdLmNvbmNhdChlW3JdKTpuW3JdPWVbcl07cmV0dXJuIG59LGhhczpmdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmLTEhPT10LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihlLnRvTG93ZXJDYXNlKCkpfSxsb3dlcml6ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSxtYWpvcjpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZS5yZXBsYWNlKC9bXlxkXC5dL2csIiIpLnNwbGl0KCIuIilbMF06dm9pZCAwfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKX19LGg9e3JneDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixyLG8sYSxpLHUscz0wO3M8dC5sZW5ndGgmJiFpOyl7dmFyIGw9dFtzXSxjPXRbcysxXTtmb3Iobj1yPTA7bjxsLmxlbmd0aCYmIWk7KWlmKGk9bFtuKytdLmV4ZWMoZSkpZm9yKG89MDtvPGMubGVuZ3RoO28rKyl1PWlbKytyXSwib2JqZWN0Ij09dHlwZW9mKGE9Y1tvXSkmJmEubGVuZ3RoPjA/Mj09YS5sZW5ndGg/ImZ1bmN0aW9uIj09dHlwZW9mIGFbMV0/dGhpc1thWzBdXT1hWzFdLmNhbGwodGhpcyx1KTp0aGlzW2FbMF1dPWFbMV06Mz09YS5sZW5ndGg/ImZ1bmN0aW9uIiE9dHlwZW9mIGFbMV18fGFbMV0uZXhlYyYmYVsxXS50ZXN0P3RoaXNbYVswXV09dT91LnJlcGxhY2UoYVsxXSxhWzJdKTp2b2lkIDA6dGhpc1thWzBdXT11P2FbMV0uY2FsbCh0aGlzLHUsYVsyXSk6dm9pZCAwOjQ9PWEubGVuZ3RoJiYodGhpc1thWzBdXT11P2FbM10uY2FsbCh0aGlzLHUucmVwbGFjZShhWzFdLGFbMl0pKTp2b2lkIDApOnRoaXNbYV09dXx8dm9pZCAwO3MrPTJ9fSxzdHI6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClpZigib2JqZWN0Ij09dHlwZW9mIHRbbl0mJnRbbl0ubGVuZ3RoPjApe2Zvcih2YXIgcj0wO3I8dFtuXS5sZW5ndGg7cisrKWlmKHAuaGFzKHRbbl1bcl0sZSkpcmV0dXJuIj8iPT09bj92b2lkIDA6bn1lbHNlIGlmKHAuaGFzKHRbbl0sZSkpcmV0dXJuIj8iPT09bj92b2lkIDA6bjtyZXR1cm4gZX19LHk9e2Jyb3dzZXI6e29sZHNhZmFyaTp7dmVyc2lvbjp7IjEuMCI6Ii84IiwxLjI6Ii8xIiwxLjM6Ii8zIiwiMi4wIjoiLzQxMiIsIjIuMC4yIjoiLzQxNiIsIjIuMC4zIjoiLzQxNyIsIjIuMC40IjoiLzQxOSIsIj8iOiIvIn19fSxkZXZpY2U6e2FtYXpvbjp7bW9kZWw6eyJGaXJlIFBob25lIjpbIlNEIiwiS0YiXX19LHNwcmludDp7bW9kZWw6eyJFdm8gU2hpZnQgNEciOiI3MzczS1QifSx2ZW5kb3I6e0hUQzoiQVBBIixTcHJpbnQ6IlNwcmludCJ9fX0sb3M6e3dpbmRvd3M6e3ZlcnNpb246e01FOiI0LjkwIiwiTlQgMy4xMSI6Ik5UMy41MSIsIk5UIDQuMCI6Ik5UNC4wIiwyZTM6Ik5UIDUuMCIsWFA6WyJOVCA1LjEiLCJOVCA1LjIiXSxWaXN0YToiTlQgNi4wIiw3OiJOVCA2LjEiLDg6Ik5UIDYuMiIsOC4xOiJOVCA2LjMiLDEwOlsiTlQgNi40IiwiTlQgMTAuMCJdLFJUOiJBUk0ifX19fSxtPXticm93c2VyOltbLyhvcGVyYVxzbWluaSlcLyhbXHdcLi1dKykvaSwvKG9wZXJhXHNbbW9iaWxldGFiXSspLit2ZXJzaW9uXC8oW1x3XC4tXSspL2ksLyhvcGVyYSkuK3ZlcnNpb25cLyhbXHdcLl0rKS9pLC8ob3BlcmEpW1wvXHNdKyhbXHdcLl0rKS9pXSxbdSxjXSxbLyhvcGlvcylbXC9cc10rKFtcd1wuXSspL2ldLFtbdSwiT3BlcmEgTWluaSJdLGNdLFsvXHMob3ByKVwvKFtcd1wuXSspL2ldLFtbdSwiT3BlcmEiXSxjXSxbLyhraW5kbGUpXC8oW1x3XC5dKykvaSwvKGx1bmFzY2FwZXxtYXh0aG9ufG5ldGZyb250fGphc21pbmV8YmxhemVyKVtcL1xzXT8oW1x3XC5dKikvaSwvKGF2YW50XHN8aWVtb2JpbGV8c2xpbXxiYWlkdSkoPzpicm93c2VyKT9bXC9cc10/KFtcd1wuXSopL2ksLyg/Om1zfFwoKShpZSlccyhbXHdcLl0rKS9pLC8ocmVrb25xKVwvKFtcd1wuXSopL2ksLyhjaHJvbWl1bXxmbG9ja3xyb2NrbWVsdHxtaWRvcml8ZXBpcGhhbnl8c2lsa3xza3lmaXJlfG92aWJyb3dzZXJ8Ym9sdHxpcm9ufHZpdmFsZGl8aXJpZGl1bXxwaGFudG9tanN8Ym93c2VyfHF1YXJrfHF1cHppbGxhfGZhbGtvbilcLyhbXHdcLi1dKykvaV0sW3UsY10sWy8oa29ucXVlcm9yKVwvKFtcd1wuXSspL2ldLFtbdSwiS29ucXVlcm9yIl0sY10sWy8odHJpZGVudCkuK3J2Wzpcc10oW1x3XC5dKykuK2xpa2Vcc2dlY2tvL2ldLFtbdSwiSUUiXSxjXSxbLyhlZGdlfGVkZ2lvc3xlZGdhfGVkZylcLygoXGQrKT9bXHdcLl0rKS9pXSxbW3UsIkVkZ2UiXSxjXSxbLyh5YWJyb3dzZXIpXC8oW1x3XC5dKykvaV0sW1t1LCJZYW5kZXgiXSxjXSxbLyhwdWZmaW4pXC8oW1x3XC5dKykvaV0sW1t1LCJQdWZmaW4iXSxjXSxbLyhmb2N1cylcLyhbXHdcLl0rKS9pXSxbW3UsIkZpcmVmb3ggRm9jdXMiXSxjXSxbLyhvcHQpXC8oW1x3XC5dKykvaV0sW1t1LCJPcGVyYSBUb3VjaCJdLGNdLFsvKCg/Oltcc1wvXSl1Yz9ccz9icm93c2VyfCg/Omp1Yy4rKXVjd2ViKVtcL1xzXT8oW1x3XC5dKykvaV0sW1t1LCJVQ0Jyb3dzZXIiXSxjXSxbLyhjb21vZG9fZHJhZ29uKVwvKFtcd1wuXSspL2ldLFtbdSwvXy9nLCIgIl0sY10sWy8od2luZG93c3dlY2hhdCBxYmNvcmUpXC8oW1x3XC5dKykvaV0sW1t1LCJXZUNoYXQoV2luKSBEZXNrdG9wIl0sY10sWy8obWljcm9tZXNzZW5nZXIpXC8oW1x3XC5dKykvaV0sW1t1LCJXZUNoYXQiXSxjXSxbLyhicmF2ZSlcLyhbXHdcLl0rKS9pXSxbW3UsIkJyYXZlIl0sY10sWy8ocXFicm93c2VybGl0ZSlcLyhbXHdcLl0rKS9pXSxbdSxjXSxbLyhRUSlcLyhbXGRcLl0rKS9pXSxbdSxjXSxbL20/KHFxYnJvd3NlcilbXC9cc10/KFtcd1wuXSspL2ldLFt1LGNdLFsvKEJJRFVCcm93c2VyKVtcL1xzXT8oW1x3XC5dKykvaV0sW3UsY10sWy8oMjM0NUV4cGxvcmVyKVtcL1xzXT8oW1x3XC5dKykvaV0sW3UsY10sWy8oTWV0YVNyKVtcL1xzXT8oW1x3XC5dKykvaV0sW3VdLFsvKExCQlJPV1NFUikvaV0sW3VdLFsveGlhb21pXC9taXVpYnJvd3NlclwvKFtcd1wuXSspL2ldLFtjLFt1LCJNSVVJIEJyb3dzZXIiXV0sWy87ZmJhdlwvKFtcd1wuXSspOy9pXSxbYyxbdSwiRmFjZWJvb2siXV0sWy9zYWZhcmlccyhsaW5lKVwvKFtcd1wuXSspL2ksL2FuZHJvaWQuKyhsaW5lKVwvKFtcd1wuXSspXC9pYWIvaV0sW3UsY10sWy9oZWFkbGVzc2Nocm9tZSg/OlwvKFtcd1wuXSspfFxzKS9pXSxbYyxbdSwiQ2hyb21lIEhlYWRsZXNzIl1dLFsvXHN3dlwpLisoY2hyb21lKVwvKFtcd1wuXSspL2ldLFtbdSwvKC4rKS8sIiQxIFdlYlZpZXciXSxjXSxbLygoPzpvY3VsdXN8c2Ftc3VuZylicm93c2VyKVwvKFtcd1wuXSspL2ldLFtbdSwvKC4rKD86Z3x1cykpKC4rKS8sIiQxICQyIl0sY10sWy9hbmRyb2lkLit2ZXJzaW9uXC8oW1x3XC5dKylccysoPzptb2JpbGVccz9zYWZhcml8c2FmYXJpKSovaV0sW2MsW3UsIkFuZHJvaWQgQnJvd3NlciJdXSxbLyhzYWlsZmlzaGJyb3dzZXIpXC8oW1x3XC5dKykvaV0sW1t1LCJTYWlsZmlzaCBCcm93c2VyIl0sY10sWy8oY2hyb21lfG9tbml3ZWJ8YXJvcmF8W3RpemVub2thXXs1fVxzP2Jyb3dzZXIpXC92PyhbXHdcLl0rKS9pXSxbdSxjXSxbLyhkb2xmaW4pXC8oW1x3XC5dKykvaV0sW1t1LCJEb2xwaGluIl0sY10sWy8oKD86YW5kcm9pZC4rKWNybW98Y3Jpb3MpXC8oW1x3XC5dKykvaV0sW1t1LCJDaHJvbWUiXSxjXSxbLyhjb2FzdClcLyhbXHdcLl0rKS9pXSxbW3UsIk9wZXJhIENvYXN0Il0sY10sWy9meGlvc1wvKFtcd1wuLV0rKS9pXSxbYyxbdSwiRmlyZWZveCJdXSxbL3ZlcnNpb25cLyhbXHdcLl0rKS4rP21vYmlsZVwvXHcrXHMoc2FmYXJpKS9pXSxbYyxbdSwiTW9iaWxlIFNhZmFyaSJdXSxbL3ZlcnNpb25cLyhbXHdcLl0rKS4rPyhtb2JpbGVccz9zYWZhcml8c2FmYXJpKS9pXSxbYyx1XSxbL3dlYmtpdC4rPyhnc2EpXC8oW1x3XC5dKykuKz8obW9iaWxlXHM/c2FmYXJpfHNhZmFyaSkoXC9bXHdcLl0rKS9pXSxbW3UsIkdTQSJdLGNdLFsvd2Via2l0Lis/KG1vYmlsZVxzP3NhZmFyaXxzYWZhcmkpKFwvW1x3XC5dKykvaV0sW3UsW2MsaC5zdHIseS5icm93c2VyLm9sZHNhZmFyaS52ZXJzaW9uXV0sWy8od2Via2l0fGtodG1sKVwvKFtcd1wuXSspL2ldLFt1LGNdLFsvKG5hdmlnYXRvcnxuZXRzY2FwZSlcLyhbXHdcLi1dKykvaV0sW1t1LCJOZXRzY2FwZSJdLGNdLFsvKHN3aWZ0Zm94KS9pLC8oaWNlZHJhZ29ufGljZXdlYXNlbHxjYW1pbm98Y2hpbWVyYXxmZW5uZWN8bWFlbW9cc2Jyb3dzZXJ8bWluaW1vfGNvbmtlcm9yKVtcL1xzXT8oW1x3XC5cK10rKS9pLC8oZmlyZWZveHxzZWFtb25rZXl8ay1tZWxlb258aWNlY2F0fGljZWFwZXxmaXJlYmlyZHxwaG9lbml4fHBhbGVtb29ufGJhc2lsaXNrfHdhdGVyZm94KVwvKFtcd1wuLV0rKSQvaSwvKG1vemlsbGEpXC8oW1x3XC5dKykuK3J2XDouK2dlY2tvXC9cZCsvaSwvKHBvbGFyaXN8bHlueHxkaWxsb3xpY2FifGRvcmlzfGFtYXlhfHczbXxuZXRzdXJmfHNsZWlwbmlyKVtcL1xzXT8oW1x3XC5dKykvaSwvKGxpbmtzKVxzXCgoW1x3XC5dKykvaSwvKGdvYnJvd3NlcilcLz8oW1x3XC5dKikvaSwvKGljZVxzP2Jyb3dzZXIpXC92PyhbXHdcLl9dKykvaSwvKG1vc2FpYylbXC9cc10oW1x3XC5dKykvaV0sW3UsY11dLGNwdTpbWy8oPzooYW1kfHgoPzooPzo4Nnw2NClbXy1dKT98d293fHdpbik2NClbO1wpXS9pXSxbWyJhcmNoaXRlY3R1cmUiLCJhbWQ2NCJdXSxbLyhpYTMyKD89OykpL2ldLFtbImFyY2hpdGVjdHVyZSIscC5sb3dlcml6ZV1dLFsvKCg/OmlbMzQ2XXx4KTg2KVs7XCldL2ldLFtbImFyY2hpdGVjdHVyZSIsImlhMzIiXV0sWy93aW5kb3dzXHMoY2V8bW9iaWxlKTtcc3BwYzsvaV0sW1siYXJjaGl0ZWN0dXJlIiwiYXJtIl1dLFsvKCg/OnBwY3xwb3dlcnBjKSg/OjY0KT8pKD86XHNtYWN8O3xcKSkvaV0sW1siYXJjaGl0ZWN0dXJlIiwvb3dlci8sIiIscC5sb3dlcml6ZV1dLFsvKHN1bjRcdylbO1wpXS9pXSxbWyJhcmNoaXRlY3R1cmUiLCJzcGFyYyJdXSxbLygoPzphdnIzMnxpYTY0KD89OykpfDY4ayg/PVwpKXxhcm0oPzo2NHwoPz12XGQrWztsXSkpfCg/PWF0bWVsXHMpYXZyfCg/OmlyaXh8bWlwc3xzcGFyYykoPzo2NCk/KD89Oyl8cGEtcmlzYykvaV0sW1siYXJjaGl0ZWN0dXJlIixwLmxvd2VyaXplXV1dLGRldmljZTpbWy9cKChpcGFkfHBsYXlib29rKTtbXHdcc1wpLDstXSsocmltfGFwcGxlKS9pXSxbaSxsLFtzLGRdXSxbL2FwcGxlY29yZW1lZGlhXC9bXHdcLl0rIFwoKGlwYWQpL10sW2ksW2wsIkFwcGxlIl0sW3MsZF1dLFsvKGFwcGxlXHN7MCwxfXR2KS9pXSxbW2ksIkFwcGxlIFRWIl0sW2wsIkFwcGxlIl1dLFsvKGFyY2hvcylccyhnYW1lcGFkMj8pL2ksLyhocCkuKyh0b3VjaHBhZCkvaSwvKGhwKS4rKHRhYmxldCkvaSwvKGtpbmRsZSlcLyhbXHdcLl0rKS9pLC9ccyhub29rKVtcd1xzXStidWlsZFwvKFx3KykvaSwvKGRlbGwpXHMoc3RyZWFba3ByXHNcZF0qW1xka29dKS9pXSxbbCxpLFtzLGRdXSxbLyhrZltBLXpdKylcc2J1aWxkXC8uK3NpbGtcLy9pXSxbaSxbbCwiQW1hem9uIl0sW3MsZF1dLFsvKHNkfGtmKVswMzQ5aGlqb3JzdHV3XStcc2J1aWxkXC8uK3NpbGtcLy9pXSxbW2ksaC5zdHIseS5kZXZpY2UuYW1hem9uLm1vZGVsXSxbbCwiQW1hem9uIl0sW3MsZl1dLFsvYW5kcm9pZC4rYWZ0KFtibXNdKVxzYnVpbGQvaV0sW2ksW2wsIkFtYXpvbiJdLFtzLCJzbWFydHR2Il1dLFsvXCgoaXBbaG9uZWR8XHNcdypdKyk7LisoYXBwbGUpL2ldLFtpLGwsW3MsZl1dLFsvXCgoaXBbaG9uZWR8XHNcdypdKyk7L2ldLFtpLFtsLCJBcHBsZSJdLFtzLGZdXSxbLyhibGFja2JlcnJ5KVtccy1dPyhcdyspL2ksLyhibGFja2JlcnJ5fGJlbnF8cGFsbSg/PVwtKXxzb255ZXJpY3Nzb258YWNlcnxhc3VzfGRlbGx8bWVpenV8bW90b3JvbGF8cG9seXRyb24pW1xzXy1dPyhbXHctXSopL2ksLyhocClccyhbXHdcc10rXHcpL2ksLyhhc3VzKS0/KFx3KykvaV0sW2wsaSxbcyxmXV0sWy9cKGJiMTA7XHMoXHcrKS9pXSxbaSxbbCwiQmxhY2tCZXJyeSJdLFtzLGZdXSxbL2FuZHJvaWQuKyh0cmFuc2ZvW3ByaW1lXHNdezQsMTB9XHNcdyt8ZWVlcGN8c2xpZGVyXHNcdyt8bmV4dXMgN3xwYWRmb25lfHAwMGMpL2ldLFtpLFtsLCJBc3VzIl0sW3MsZF1dLFsvKHNvbnkpXHModGFibGV0XHNbcHNdKVxzYnVpbGRcLy9pLC8oc29ueSk/KD86c2dwLispXHNidWlsZFwvL2ldLFtbbCwiU29ueSJdLFtpLCJYcGVyaWEgVGFibGV0Il0sW3MsZF1dLFsvYW5kcm9pZC4rXHMoW2MtZ11cZHs0fXxzb1stbF1cdyspKD89XHNidWlsZFwvfFwpLitjaHJvbWVcLyg/IVsxLTZdezAsMX1cZFwuKSkvaV0sW2ksW2wsIlNvbnkiXSxbcyxmXV0sWy9ccyhvdXlhKVxzL2ksLyhuaW50ZW5kbylccyhbd2lkczN1XSspL2ldLFtsLGksW3MsImNvbnNvbGUiXV0sWy9hbmRyb2lkLis7XHMoc2hpZWxkKVxzYnVpbGQvaV0sW2ksW2wsIk52aWRpYSJdLFtzLCJjb25zb2xlIl1dLFsvKHBsYXlzdGF0aW9uXHNbMzRwb3J0YWJsZXZpXSspL2ldLFtpLFtsLCJTb255Il0sW3MsImNvbnNvbGUiXV0sWy8oc3ByaW50XHMoXHcrKSkvaV0sW1tsLGguc3RyLHkuZGV2aWNlLnNwcmludC52ZW5kb3JdLFtpLGguc3RyLHkuZGV2aWNlLnNwcmludC5tb2RlbF0sW3MsZl1dLFsvKGh0YylbO19ccy1dKyhbXHdcc10rKD89XCl8XHNidWlsZCl8XHcrKS9pLC8oenRlKS0oXHcqKS9pLC8oYWxjYXRlbHxnZWVrc3Bob25lfG5leGlhbnxwYW5hc29uaWN8KD89O1xzKXNvbnkpW19ccy1dPyhbXHctXSopL2ldLFtsLFtpLC9fL2csIiAiXSxbcyxmXV0sWy8obmV4dXNcczkpL2ldLFtpLFtsLCJIVEMiXSxbcyxkXV0sWy9kXC9odWF3ZWkoW1x3XHMtXSspWztcKV0vaSwvKG5leHVzXHM2cCkvaV0sW2ksW2wsIkh1YXdlaSJdLFtzLGZdXSxbLyhtaWNyb3NvZnQpO1xzKGx1bWlhW1xzXHddKykvaV0sW2wsaSxbcyxmXV0sWy9bXHNcKDtdKHhib3goPzpcc29uZSk/KVtcc1wpO10vaV0sW2ksW2wsIk1pY3Jvc29mdCJdLFtzLCJjb25zb2xlIl1dLFsvKGtpblwuW29uZXR3XXszfSkvaV0sW1tpLC9cLi9nLCIgIl0sW2wsIk1pY3Jvc29mdCJdLFtzLGZdXSxbL1xzKG1pbGVzdG9uZXxkcm9pZCg/OlsyLTR4XXxccyg/OmJpb25pY3x4Mnxwcm98cmF6cikpPzo/KFxzNGcpPylbXHdcc10rYnVpbGRcLy9pLC9tb3RbXHMtXT8oXHcqKS9pLC8oWFRcZHszLDR9KSBidWlsZFwvL2ksLyhuZXh1c1xzNikvaV0sW2ksW2wsIk1vdG9yb2xhIl0sW3MsZl1dLFsvYW5kcm9pZC4rXHMobXo2MFxkfHhvb21bXHMyXXswLDJ9KVxzYnVpbGRcLy9pXSxbaSxbbCwiTW90b3JvbGEiXSxbcyxkXV0sWy9oYmJ0dlwvXGQrXC5cZCtcLlxkK1xzK1woW1x3XHNdKjtccyooXHdbXjtdKik7KFteO10qKS9pXSxbW2wscC50cmltXSxbaSxwLnRyaW1dLFtzLCJzbWFydHR2Il1dLFsvaGJidHYuK21hcGxlOyhcZCspL2ldLFtbaSwvXi8sIlNtYXJ0VFYiXSxbbCwiU2Ftc3VuZyJdLFtzLCJzbWFydHR2Il1dLFsvXChkdHZbXCk7XS4rKGFxdW9zKS9pXSxbaSxbbCwiU2hhcnAiXSxbcywic21hcnR0diJdXSxbL2FuZHJvaWQuKygoc2NoLWlbODldMFxkfHNody1tMzgwc3xndC1wXGR7NH18Z3QtblxkK3xzZ2gtdDhbNTZdOXxuZXh1cyAxMCkpL2ksLygoU00tVFx3KykpL2ldLFtbbCwiU2Ftc3VuZyJdLGksW3MsZF1dLFsvc21hcnQtdHYuKyhzYW1zdW5nKS9pXSxbbCxbcywic21hcnR0diJdLGldLFsvKChzW2NncF1oLVx3K3xndC1cdyt8Z2FsYXh5XHNuZXh1c3xzbS1cd1tcd1xkXSspKS9pLC8oc2FtW3N1bmddKilbXHMtXSooXHcrLT9bXHctXSopL2ksL3NlYy0oKHNnaFx3KykpL2ldLFtbbCwiU2Ftc3VuZyJdLGksW3MsZl1dLFsvc2llLShcdyopL2ldLFtpLFtsLCJTaWVtZW5zIl0sW3MsZl1dLFsvKG1hZW1vfG5va2lhKS4qKG45MDB8bHVtaWFcc1xkKykvaSwvKG5va2lhKVtcc18tXT8oW1x3LV0qKS9pXSxbW2wsIk5va2lhIl0saSxbcyxmXV0sWy9hbmRyb2lkW3hcZFwuXHM7XStccyhbYWJdWzEtN11cLT9bMDE3OGFdXGRcZD8pL2ldLFtpLFtsLCJBY2VyIl0sW3MsZF1dLFsvYW5kcm9pZC4rKFt2bF1rXC0/XGR7M30pXHMrYnVpbGQvaV0sW2ksW2wsIkxHIl0sW3MsZF1dLFsvYW5kcm9pZFxzM1wuW1xzXHc7LV17MTB9KGxnPyktKFswNmN2OV17Myw0fSkvaV0sW1tsLCJMRyJdLGksW3MsZF1dLFsvKGxnKSBuZXRjYXN0XC50di9pXSxbbCxpLFtzLCJzbWFydHR2Il1dLFsvKG5leHVzXHNbNDVdKS9pLC9sZ1tlO1xzXC8tXSsoXHcqKS9pLC9hbmRyb2lkLitsZyhcLT9bXGRcd10rKVxzK2J1aWxkL2ldLFtpLFtsLCJMRyJdLFtzLGZdXSxbLyhsZW5vdm8pXHM/KHMoPzo1MDAwfDYwMDApKD86W1x3LV0rKXx0YWIoPzpbXHNcd10rKSkvaV0sW2wsaSxbcyxkXV0sWy9hbmRyb2lkLisoaWRlYXRhYlthLXowLTlcLVxzXSspL2ldLFtpLFtsLCJMZW5vdm8iXSxbcyxkXV0sWy8obGVub3ZvKVtfXHMtXT8oW1x3LV0rKS9pXSxbbCxpLFtzLGZdXSxbL2xpbnV4Oy4rKChqb2xsYSkpOy9pXSxbbCxpLFtzLGZdXSxbLygocGViYmxlKSlhcHBcL1tcZFwuXStccy9pXSxbbCxpLFtzLCJ3ZWFyYWJsZSJdXSxbL2FuZHJvaWQuKztccyhvcHBvKVxzPyhbXHdcc10rKVxzYnVpbGQvaV0sW2wsaSxbcyxmXV0sWy9jcmtleS9pXSxbW2ksIkNocm9tZWNhc3QiXSxbbCwiR29vZ2xlIl1dLFsvYW5kcm9pZC4rO1xzKGdsYXNzKVxzXGQvaV0sW2ksW2wsIkdvb2dsZSJdLFtzLCJ3ZWFyYWJsZSJdXSxbL2FuZHJvaWQuKztccyhwaXhlbCBjKVtccyldL2ldLFtpLFtsLCJHb29nbGUiXSxbcyxkXV0sWy9hbmRyb2lkLis7XHMocGl4ZWwoIFsyM10pPyggeGwpPylbXHMpXS9pXSxbaSxbbCwiR29vZ2xlIl0sW3MsZl1dLFsvYW5kcm9pZC4rO1xzKFx3KylccytidWlsZFwvaG1cMS9pLC9hbmRyb2lkLisoaG1bXHNcLV9dKm5vdGU/W1xzX10qKD86XGRcdyk/KVxzK2J1aWxkL2ksL2FuZHJvaWQuKyhtaVtcc1wtX10qKD86YVxkfG9uZXxvbmVbXHNfXXBsdXN8bm90ZSBsdGUpP1tcc19dKig/OlxkP1x3PylbXHNfXSooPzpwbHVzKT8pXHMrYnVpbGQvaSwvYW5kcm9pZC4rKHJlZG1pW1xzXC1fXSooPzpub3RlKT8oPzpbXHNfXSpbXHdcc10rKSlccytidWlsZC9pXSxbW2ksL18vZywiICJdLFtsLCJYaWFvbWkiXSxbcyxmXV0sWy9hbmRyb2lkLisobWlbXHNcLV9dKig/OnBhZCkoPzpbXHNfXSpbXHdcc10rKSlccytidWlsZC9pXSxbW2ksL18vZywiICJdLFtsLCJYaWFvbWkiXSxbcyxkXV0sWy9hbmRyb2lkLis7XHMobVsxLTVdXHNub3RlKVxzYnVpbGQvaV0sW2ksW2wsIk1laXp1Il0sW3MsZl1dLFsvKG16KS0oW1x3LV17Mix9KS9pXSxbW2wsIk1laXp1Il0saSxbcyxmXV0sWy9hbmRyb2lkLithMDAwKDEpXHMrYnVpbGQvaSwvYW5kcm9pZC4rb25lcGx1c1xzKGFcZHs0fSlccytidWlsZC9pXSxbaSxbbCwiT25lUGx1cyJdLFtzLGZdXSxbL2FuZHJvaWQuK1s7XC9dXHMqKFJDVFtcZFx3XSspXHMrYnVpbGQvaV0sW2ksW2wsIlJDQSJdLFtzLGRdXSxbL2FuZHJvaWQuK1s7XC9cc10rKFZlbnVlW1xkXHNdezIsN30pXHMrYnVpbGQvaV0sW2ksW2wsIkRlbGwiXSxbcyxkXV0sWy9hbmRyb2lkLitbO1wvXVxzKihRW1R8TV1bXGRcd10rKVxzK2J1aWxkL2ldLFtpLFtsLCJWZXJpem9uIl0sW3MsZF1dLFsvYW5kcm9pZC4rWztcL11ccysoQmFybmVzWyZcc10rTm9ibGVccyt8Qk5bUlRdKShWPy4qKVxzK2J1aWxkL2ldLFtbbCwiQmFybmVzICYgTm9ibGUiXSxpLFtzLGRdXSxbL2FuZHJvaWQuK1s7XC9dXHMrKFRNXGR7M30uKlxiKVxzK2J1aWxkL2ldLFtpLFtsLCJOdVZpc2lvbiJdLFtzLGRdXSxbL2FuZHJvaWQuKztccyhrODgpXHNidWlsZC9pXSxbaSxbbCwiWlRFIl0sW3MsZF1dLFsvYW5kcm9pZC4rWztcL11ccyooZ2VuXGR7M30pXHMrYnVpbGQuKjQ5aC9pXSxbaSxbbCwiU3dpc3MiXSxbcyxmXV0sWy9hbmRyb2lkLitbO1wvXVxzKih6dXJcZHszfSlccytidWlsZC9pXSxbaSxbbCwiU3dpc3MiXSxbcyxkXV0sWy9hbmRyb2lkLitbO1wvXVxzKigoWmVraSk/VEIuKlxiKVxzK2J1aWxkL2ldLFtpLFtsLCJaZWtpIl0sW3MsZF1dLFsvKGFuZHJvaWQpLitbO1wvXVxzKyhbWVJdXGR7Mn0pXHMrYnVpbGQvaSwvYW5kcm9pZC4rWztcL11ccysoRHJhZ29uW1wtXHNdK1RvdWNoXHMrfERUKShcd3s1fSlcc2J1aWxkL2ldLFtbbCwiRHJhZ29uIFRvdWNoIl0saSxbcyxkXV0sWy9hbmRyb2lkLitbO1wvXVxzKihOUy0/XHd7MCw5fSlcc2J1aWxkL2ldLFtpLFtsLCJJbnNpZ25pYSJdLFtzLGRdXSxbL2FuZHJvaWQuK1s7XC9dXHMqKChOWHxOZXh0KS0/XHd7MCw5fSlccytidWlsZC9pXSxbaSxbbCwiTmV4dEJvb2siXSxbcyxkXV0sWy9hbmRyb2lkLitbO1wvXVxzKihYdHJlbWVcXyk/KFYoMVswNDVdfDJbMDE1XXwzMHw0MHw2MHw3WzA1XXw5MCkpXHMrYnVpbGQvaV0sW1tsLCJWb2ljZSJdLGksW3MsZl1dLFsvYW5kcm9pZC4rWztcL11ccyooTFZURUxcLSk/KFYxWzEyXSlccytidWlsZC9pXSxbW2wsIkx2VGVsIl0saSxbcyxmXV0sWy9hbmRyb2lkLis7XHMoUEgtMSlccy9pXSxbaSxbbCwiRXNzZW50aWFsIl0sW3MsZl1dLFsvYW5kcm9pZC4rWztcL11ccyooVigxMDBNRHw3MDBOQXw3MDExfDkxN0cpLipcYilccytidWlsZC9pXSxbaSxbbCwiRW52aXplbiJdLFtzLGRdXSxbL2FuZHJvaWQuK1s7XC9dXHMqKExlW1xzXC1dK1BhbilbXHNcLV0rKFx3ezEsOX0pXHMrYnVpbGQvaV0sW2wsaSxbcyxkXV0sWy9hbmRyb2lkLitbO1wvXVxzKihUcmlvW1xzXC1dKi4qKVxzK2J1aWxkL2ldLFtpLFtsLCJNYWNoU3BlZWQiXSxbcyxkXV0sWy9hbmRyb2lkLitbO1wvXVxzKihUcmluaXR5KVtcLVxzXSooVFxkezN9KVxzK2J1aWxkL2ldLFtsLGksW3MsZF1dLFsvYW5kcm9pZC4rWztcL11ccypUVV8oMTQ5MSlccytidWlsZC9pXSxbaSxbbCwiUm90b3IiXSxbcyxkXV0sWy9hbmRyb2lkLisoS1MoLispKVxzK2J1aWxkL2ldLFtpLFtsLCJBbWF6b24iXSxbcyxkXV0sWy9hbmRyb2lkLisoR2lnYXNldClbXHNcLV0rKFFcd3sxLDl9KVxzK2J1aWxkL2ldLFtsLGksW3MsZF1dLFsvXHModGFibGV0fHRhYilbO1wvXS9pLC9ccyhtb2JpbGUpKD86WztcL118XHNzYWZhcmkpL2ldLFtbcyxwLmxvd2VyaXplXSxsLGldLFsvW1xzXC9cKF0oc21hcnQtP3R2KVs7XCldL2ldLFtbcywic21hcnR0diJdXSxbLyhhbmRyb2lkW1x3XC5cc1wtXXswLDl9KTsuK2J1aWxkL2ldLFtpLFtsLCJHZW5lcmljIl1dXSxlbmdpbmU6W1svd2luZG93cy4rXHNlZGdlXC8oW1x3XC5dKykvaV0sW2MsW3UsIkVkZ2VIVE1MIl1dLFsvd2Via2l0XC81MzdcLjM2LitjaHJvbWVcLyg/ITI3KS9pXSxbW3UsIkJsaW5rIl1dLFsvKHByZXN0bylcLyhbXHdcLl0rKS9pLC8od2Via2l0fHRyaWRlbnR8bmV0ZnJvbnR8bmV0c3VyZnxhbWF5YXxseW54fHczbXxnb2FubmEpXC8oW1x3XC5dKykvaSwvKGtodG1sfHRhc21hbnxsaW5rcylbXC9cc11cKD8oW1x3XC5dKykvaSwvKGljYWIpW1wvXHNdKFsyM11cLltcZFwuXSspL2ldLFt1LGNdLFsvcnZcOihbXHdcLl17MSw5fSkuKyhnZWNrbykvaV0sW2MsdV1dLG9zOltbL21pY3Jvc29mdFxzKHdpbmRvd3MpXHModmlzdGF8eHApL2ldLFt1LGNdLFsvKHdpbmRvd3MpXHNudFxzNlwuMjtccyhhcm0pL2ksLyh3aW5kb3dzXHNwaG9uZSg/Olxzb3MpKilbXHNcL10/KFtcZFwuXHNcd10qKS9pLC8od2luZG93c1xzbW9iaWxlfHdpbmRvd3MpW1xzXC9dPyhbbnRjZVxkXC5cc10rXHcpL2ldLFt1LFtjLGguc3RyLHkub3Mud2luZG93cy52ZXJzaW9uXV0sWy8od2luKD89M3w5fG4pfHdpblxzOXhccykoW250XGRcLl0rKS9pXSxbW3UsIldpbmRvd3MiXSxbYyxoLnN0cix5Lm9zLndpbmRvd3MudmVyc2lvbl1dLFsvXCgoYmIpKDEwKTsvaV0sW1t1LCJCbGFja0JlcnJ5Il0sY10sWy8oYmxhY2tiZXJyeSlcdypcLz8oW1x3XC5dKikvaSwvKHRpemVuKVtcL1xzXShbXHdcLl0rKS9pLC8oYW5kcm9pZHx3ZWJvc3xwYWxtXHNvc3xxbnh8YmFkYXxyaW1cc3RhYmxldFxzb3N8bWVlZ298c2FpbGZpc2h8Y29udGlraSlbXC9ccy1dPyhbXHdcLl0qKS9pXSxbdSxjXSxbLyhzeW1iaWFuXHM/b3N8c3ltYm9zfHM2MCg/PTspKVtcL1xzLV0/KFtcd1wuXSopL2ldLFtbdSwiU3ltYmlhbiJdLGNdLFsvXCgoc2VyaWVzNDApOy9pXSxbdV0sWy9tb3ppbGxhLitcKG1vYmlsZTsuK2dlY2tvLitmaXJlZm94L2ldLFtbdSwiRmlyZWZveCBPUyJdLGNdLFsvKG5pbnRlbmRvfHBsYXlzdGF0aW9uKVxzKFt3aWRzMzRwb3J0YWJsZXZ1XSspL2ksLyhtaW50KVtcL1xzXChdPyhcdyopL2ksLyhtYWdlaWF8dmVjdG9ybGludXgpWztcc10vaSwvKGpvbGl8W2t4bG5dP3VidW50dXxkZWJpYW58c3VzZXxvcGVuc3VzZXxnZW50b298KD89XHMpYXJjaHxzbGFja3dhcmV8ZmVkb3JhfG1hbmRyaXZhfGNlbnRvc3xwY2xpbnV4b3N8cmVkaGF0fHplbndhbGt8bGlucHVzKVtcL1xzLV0/KD8hY2hyb20pKFtcd1wuLV0qKS9pLC8oaHVyZHxsaW51eClccz8oW1x3XC5dKikvaSwvKGdudSlccz8oW1x3XC5dKikvaV0sW3UsY10sWy8oY3Jvcylcc1tcd10rXHMoW1x3XC5dK1x3KS9pXSxbW3UsIkNocm9taXVtIE9TIl0sY10sWy8oc3Vub3MpXHM/KFtcd1wuXGRdKikvaV0sW1t1LCJTb2xhcmlzIl0sY10sWy9ccyhbZnJlbnRvcGMtXXswLDR9YnNkfGRyYWdvbmZseSlccz8oW1x3XC5dKikvaV0sW3UsY10sWy8oaGFpa3UpXHMoXHcrKS9pXSxbdSxjXSxbL2NmbmV0d29ya1wvLitkYXJ3aW4vaSwvaXBbaG9uZWFkXXsyLDR9KD86Lipvc1xzKFtcd10rKVxzbGlrZVxzbWFjfDtcc29wZXJhKS9pXSxbW2MsL18vZywiLiJdLFt1LCJpT1MiXV0sWy8obWFjXHNvc1xzeClccz8oW1x3XHNcLl0qKS9pLC8obWFjaW50b3NofG1hYyg/PV9wb3dlcnBjKVxzKS9pXSxbW3UsIk1hYyBPUyJdLFtjLC9fL2csIi4iXV0sWy8oKD86b3Blbik/c29sYXJpcylbXC9ccy1dPyhbXHdcLl0qKS9pLC8oYWl4KVxzKChcZCkoPz1cLnxcKXxccylbXHdcLl0pKi9pLC8ocGxhblxzOXxtaW5peHxiZW9zfG9zXC8yfGFtaWdhb3N8bW9ycGhvc3xyaXNjXHNvc3xvcGVudm1zfGZ1Y2hzaWEpL2ksLyh1bml4KVxzPyhbXHdcLl0qKS9pXSxbdSxjXV19LHY9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLCEodGhpcyBpbnN0YW5jZW9mIHYpKXJldHVybiBuZXcgdihlLHQpLmdldFJlc3VsdCgpO3ZhciBuPWV8fChvJiZvLm5hdmlnYXRvciYmby5uYXZpZ2F0b3IudXNlckFnZW50P28ubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikscj10P3AuZXh0ZW5kKG0sdCk6bTtyZXR1cm4gdGhpcy5nZXRCcm93c2VyPWZ1bmN0aW9uKCl7dmFyIGU9e25hbWU6dm9pZCAwLHZlcnNpb246dm9pZCAwfTtyZXR1cm4gaC5yZ3guY2FsbChlLG4sci5icm93c2VyKSxlLm1ham9yPXAubWFqb3IoZS52ZXJzaW9uKSxlfSx0aGlzLmdldENQVT1mdW5jdGlvbigpe3ZhciBlPXthcmNoaXRlY3R1cmU6dm9pZCAwfTtyZXR1cm4gaC5yZ3guY2FsbChlLG4sci5jcHUpLGV9LHRoaXMuZ2V0RGV2aWNlPWZ1bmN0aW9uKCl7dmFyIGU9e3ZlbmRvcjp2b2lkIDAsbW9kZWw6dm9pZCAwLHR5cGU6dm9pZCAwfTtyZXR1cm4gaC5yZ3guY2FsbChlLG4sci5kZXZpY2UpLGV9LHRoaXMuZ2V0RW5naW5lPWZ1bmN0aW9uKCl7dmFyIGU9e25hbWU6dm9pZCAwLHZlcnNpb246dm9pZCAwfTtyZXR1cm4gaC5yZ3guY2FsbChlLG4sci5lbmdpbmUpLGV9LHRoaXMuZ2V0T1M9ZnVuY3Rpb24oKXt2YXIgZT17bmFtZTp2b2lkIDAsdmVyc2lvbjp2b2lkIDB9O3JldHVybiBoLnJneC5jYWxsKGUsbixyLm9zKSxlfSx0aGlzLmdldFJlc3VsdD1mdW5jdGlvbigpe3JldHVybnt1YTp0aGlzLmdldFVBKCksYnJvd3Nlcjp0aGlzLmdldEJyb3dzZXIoKSxlbmdpbmU6dGhpcy5nZXRFbmdpbmUoKSxvczp0aGlzLmdldE9TKCksZGV2aWNlOnRoaXMuZ2V0RGV2aWNlKCksY3B1OnRoaXMuZ2V0Q1BVKCl9fSx0aGlzLmdldFVBPWZ1bmN0aW9uKCl7cmV0dXJuIG59LHRoaXMuc2V0VUE9ZnVuY3Rpb24oZSl7cmV0dXJuIG49ZSx0aGlzfSx0aGlzfTt2LlZFUlNJT049IjAuNy4yMCIsdi5CUk9XU0VSPXtOQU1FOnUsTUFKT1I6Im1ham9yIixWRVJTSU9OOmN9LHYuQ1BVPXtBUkNISVRFQ1RVUkU6ImFyY2hpdGVjdHVyZSJ9LHYuREVWSUNFPXtNT0RFTDppLFZFTkRPUjpsLFRZUEU6cyxDT05TT0xFOiJjb25zb2xlIixNT0JJTEU6ZixTTUFSVFRWOiJzbWFydHR2IixUQUJMRVQ6ZCxXRUFSQUJMRToid2VhcmFibGUiLEVNQkVEREVEOiJlbWJlZGRlZCJ9LHYuRU5HSU5FPXtOQU1FOnUsVkVSU0lPTjpjfSx2Lk9TPXtOQU1FOnUsVkVSU0lPTjpjfSx2b2lkIDAhPT10Pyh2b2lkIDAhPT1lJiZlLmV4cG9ydHMmJih0PWUuZXhwb3J0cz12KSx0LlVBUGFyc2VyPXYpOnZvaWQgMD09PShyPWZ1bmN0aW9uKCl7cmV0dXJuIHZ9LmNhbGwodCxuLHQsZSkpfHwoZS5leHBvcnRzPXIpO3ZhciBnPW8mJihvLmpRdWVyeXx8by5aZXB0byk7aWYodm9pZCAwIT09ZyYmIWcudWEpe3ZhciBiPW5ldyB2O2cudWE9Yi5nZXRSZXN1bHQoKSxnLnVhLmdldD1mdW5jdGlvbigpe3JldHVybiBiLmdldFVBKCl9LGcudWEuc2V0PWZ1bmN0aW9uKGUpe2Iuc2V0VUEoZSk7dmFyIHQ9Yi5nZXRSZXN1bHQoKTtmb3IodmFyIG4gaW4gdClnLnVhW25dPXRbbl19fX0oIm9iamVjdCI9PXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMpfSxLOVM2OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07ZnVuY3Rpb24gcigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT1hcmd1bWVudHNbcl07dmFyIG89bnVsbDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihudWxsPT1vKXt2YXIgdD1lLmFwcGx5KHZvaWQgMCxuKTtudWxsIT10JiYobz10KX19KSksb31yZXR1cm4oMCxhLmRlZmF1bHQpKHIpfTt2YXIgcixvPW4oInB2SWgiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxLQXk2OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oIklEaFoiKX0sS0ZubjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRheU1hdGNoZXNNb2RpZmllcj1hLHQuZ2V0TW9kaWZpZXJzRm9yRGF5PWk7dmFyIHI9bigibUhudSIpLG89bigiVkpDUiIpO2Z1bmN0aW9uIGEoZSx0KXtyZXR1cm4hIXQmJihBcnJheS5pc0FycmF5KHQpP3Q6W3RdKS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4hIXQmJih0IGluc3RhbmNlb2YgRGF0ZT8oMCxyLmlzU2FtZURheSkoZSx0KTooMCxvLmlzUmFuZ2VPZkRhdGVzKSh0KT8oMCxyLmlzRGF5SW5SYW5nZSkoZSx0KTp0LmFmdGVyJiZ0LmJlZm9yZSYmKDAsci5pc0RheUFmdGVyKSh0LmJlZm9yZSx0LmFmdGVyKT8oMCxyLmlzRGF5QWZ0ZXIpKGUsdC5hZnRlcikmJigwLHIuaXNEYXlCZWZvcmUpKGUsdC5iZWZvcmUpOnQuYWZ0ZXImJnQuYmVmb3JlJiYoKDAsci5pc0RheUFmdGVyKSh0LmFmdGVyLHQuYmVmb3JlKXx8KDAsci5pc1NhbWVEYXkpKHQuYWZ0ZXIsdC5iZWZvcmUpKT8oMCxyLmlzRGF5QWZ0ZXIpKGUsdC5hZnRlcil8fCgwLHIuaXNEYXlCZWZvcmUpKGUsdC5iZWZvcmUpOnQuYWZ0ZXI/KDAsci5pc0RheUFmdGVyKShlLHQuYWZ0ZXIpOnQuYmVmb3JlPygwLHIuaXNEYXlCZWZvcmUpKGUsdC5iZWZvcmUpOnQuZGF5c09mV2Vlaz90LmRheXNPZldlZWsuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuZ2V0RGF5KCk9PT10fSkpOiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0KGUpKX0pKX1mdW5jdGlvbiBpKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gT2JqZWN0LmtleXModCkucmVkdWNlKChmdW5jdGlvbihuLHIpe3ZhciBvPXRbcl07cmV0dXJuIGEoZSxvKSYmbi5wdXNoKHIpLG59KSxbXSl9dC5kZWZhdWx0PXtkYXlNYXRjaGVzTW9kaWZpZXI6YSxnZXRNb2RpZmllcnNGb3JEYXk6aX19LEtWbWc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9YShuKCJUU1lRIikpLG89YShuKCJxMXRJIikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQuZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1lLmZvY3VzZWRPcHRpb24sbj1lLmluc3RhbmNlUHJlZml4LGE9KGUubGFiZWxLZXksZS5vbkZvY3VzKSxpPWUub25TZWxlY3QsdT1lLm9wdGlvbkNsYXNzTmFtZSxzPWUub3B0aW9uQ29tcG9uZW50LGw9ZS5vcHRpb25SZW5kZXJlcixjPWUub3B0aW9ucyxmPWUudmFsdWVBcnJheSxkPWUudmFsdWVLZXkscD1lLm9uT3B0aW9uUmVmLGg9cztyZXR1cm4gYy5tYXAoKGZ1bmN0aW9uKGUscyl7dmFyIGM9ZiYmZi5pbmRleE9mKGUpPi0xLHk9ZT09PXQsbT0oMCxyLmRlZmF1bHQpKHUseyJTZWxlY3Qtb3B0aW9uIjohMCwiaXMtc2VsZWN0ZWQiOmMsImlzLWZvY3VzZWQiOnksImlzLWRpc2FibGVkIjplLmRpc2FibGVkfSk7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGgse2NsYXNzTmFtZTptLGluc3RhbmNlUHJlZml4Om4saXNEaXNhYmxlZDplLmRpc2FibGVkLGlzRm9jdXNlZDp5LGlzU2VsZWN0ZWQ6YyxrZXk6Im9wdGlvbi0iK3MrIi0iK2VbZF0sb25Gb2N1czphLG9uU2VsZWN0Omksb3B0aW9uOmUsb3B0aW9uSW5kZXg6cyxyZWY6ZnVuY3Rpb24oZSl7cChlLHkpfX0sbChlLHMpKX0pKX19LEtmTk06ZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbi5jYWxsKGUpfX0sS2hxbDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjZheWgiKSxvPW4oIlJMZUYiKSxhPW8ocigiU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mIikpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXIoZSwhIXQpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZhKGUsIi5wcm90b3R5cGUuIik/byhuKTpufX0sIktvcS8iOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiODJjMiIpLG89bigiRnVmTyIpLGE9bigieUxwdCIpLGk9bigiOFI5diIpLHU9YSgpO3IodSx7Z2V0UG9seWZpbGw6YSxpbXBsZW1lbnRhdGlvbjpvLHNoaW06aX0pLGUuZXhwb3J0cz11fSxLejV5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJXRnFVIiksbz0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9cnx8b3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTtlLmV4cG9ydHM9YX0sTDBxMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlRhamUiKSxvPW4oIkpQY3YiKSxhPW8uTGlzdCxpPW8uUmVwZWF0LHU9by5SZWNvcmQscz1mdW5jdGlvbigpe3JldHVybiEwfSxsPXUoe3N0YXJ0Om51bGwsZW5kOm51bGx9KSxjPXUoe3N0YXJ0Om51bGwsZW5kOm51bGwsZGVjb3JhdG9yS2V5Om51bGwsbGVhdmVzOm51bGx9KSxmPXtnZW5lcmF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89dC5nZXRMZW5ndGgoKTtpZighbylyZXR1cm4gYS5vZihuZXcgYyh7c3RhcnQ6MCxlbmQ6MCxkZWNvcmF0b3JLZXk6bnVsbCxsZWF2ZXM6YS5vZihuZXcgbCh7c3RhcnQ6MCxlbmQ6MH0pKX0pKTt2YXIgdT1bXSxmPW4/bi5nZXREZWNvcmF0aW9ucyh0LGUpOmEoaShudWxsLG8pKSxoPXQuZ2V0Q2hhcmFjdGVyTGlzdCgpO3JldHVybiByKGYscCxzLChmdW5jdGlvbihlLHQpe3UucHVzaChuZXcgYyh7c3RhcnQ6ZSxlbmQ6dCxkZWNvcmF0b3JLZXk6Zi5nZXQoZSksbGVhdmVzOmQoaC5zbGljZShlLHQpLnRvTGlzdCgpLGUpfSkpfSkpLGEodSl9fTtmdW5jdGlvbiBkKGUsdCl7dmFyIG49W10sbz1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0U3R5bGUoKX0pKS50b0xpc3QoKTtyZXR1cm4gcihvLHAscywoZnVuY3Rpb24oZSxyKXtuLnB1c2gobmV3IGwoe3N0YXJ0OmUrdCxlbmQ6cit0fSkpfSkpLGEobil9ZnVuY3Rpb24gcChlLHQpe3JldHVybiBlPT09dH1lLmV4cG9ydHM9Zn0sTDJFQTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlllVmUiKSxvPW4oIkpMN1QiKSxhPW4oIkpQY3YiKSxpPW4oIlpmL3YiKSx1PW4oIm1GeVYiKSxzPW4oIlY4ZHAiKSxsPWEuTGlzdCxjPWZ1bmN0aW9uKGUsdCxuLHIsbyxhKXt2YXIgdT1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06IlJFUExBQ0VfV0lUSF9ORVdfREFUQSIscz1uLmdldChvKSxsPXMuZ2V0VGV4dCgpLGM9cy5nZXRDaGFyYWN0ZXJMaXN0KCksZj1vLGQ9YStyLmdldFRleHQoKS5sZW5ndGgscD1udWxsO3N3aXRjaCh1KXtjYXNlIk1FUkdFX09MRF9EQVRBX1RPX05FV19EQVRBIjpwPXIuZ2V0RGF0YSgpLm1lcmdlKHMuZ2V0RGF0YSgpKTticmVhaztjYXNlIlJFUExBQ0VfV0lUSF9ORVdfREFUQSI6cD1yLmdldERhdGEoKX12YXIgaD1zLm1lcmdlKHt0ZXh0Omwuc2xpY2UoMCxhKStyLmdldFRleHQoKStsLnNsaWNlKGEpLGNoYXJhY3Rlckxpc3Q6aShjLHIuZ2V0Q2hhcmFjdGVyTGlzdCgpLGEpLGRhdGE6cH0pO3JldHVybiBlLm1lcmdlKHtibG9ja01hcDpuLnNldChvLGgpLHNlbGVjdGlvbkJlZm9yZTp0LHNlbGVjdGlvbkFmdGVyOnQubWVyZ2Uoe2FuY2hvcktleTpmLGFuY2hvck9mZnNldDpkLGZvY3VzS2V5OmYsZm9jdXNPZmZzZXQ6ZCxpc0JhY2t3YXJkOiExfSl9KX0sZj1mdW5jdGlvbihlLHQsbixhLGksdSl7dmFyIHM9bi5maXJzdCgpaW5zdGFuY2VvZiBvLGM9W10sZj1hLnNpemUsZD1uLmdldChpKSxwPWEuZmlyc3QoKSxoPWEubGFzdCgpLHk9aC5nZXRMZW5ndGgoKSxtPWguZ2V0S2V5KCksdj1zJiYoIWQuZ2V0Q2hpbGRLZXlzKCkuaXNFbXB0eSgpfHwhcC5nZXRDaGlsZEtleXMoKS5pc0VtcHR5KCkpO24uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXt0PT09aT8odj9jLnB1c2goZSk6Yy5wdXNoKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldFRleHQoKSxvPWUuZ2V0Q2hhcmFjdGVyTGlzdCgpLGE9ci5zbGljZSgwLHQpLGk9by5zbGljZSgwLHQpLHU9bi5maXJzdCgpO3JldHVybiBlLm1lcmdlKHt0ZXh0OmErdS5nZXRUZXh0KCksY2hhcmFjdGVyTGlzdDppLmNvbmNhdCh1LmdldENoYXJhY3Rlckxpc3QoKSksdHlwZTphP2UuZ2V0VHlwZSgpOnUuZ2V0VHlwZSgpLGRhdGE6dS5nZXREYXRhKCl9KX0oZSx1LGEpKSxhLnNsaWNlKHY/MDoxLGYtMSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGMucHVzaChlKX0pKSxjLnB1c2goZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0VGV4dCgpLG89ZS5nZXRDaGFyYWN0ZXJMaXN0KCksYT1yLmxlbmd0aCxpPXIuc2xpY2UodCxhKSx1PW8uc2xpY2UodCxhKSxzPW4ubGFzdCgpO3JldHVybiBzLm1lcmdlKHt0ZXh0OnMuZ2V0VGV4dCgpK2ksY2hhcmFjdGVyTGlzdDpzLmdldENoYXJhY3Rlckxpc3QoKS5jb25jYXQodSksZGF0YTpzLmdldERhdGEoKX0pfShlLHUsYSkpKTpjLnB1c2goZSl9KSk7dmFyIGc9ci5jcmVhdGVGcm9tQXJyYXkoYyk7cmV0dXJuIHMmJihnPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBlLndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKHQpe3ZhciBvPW4uZ2V0S2V5KCksYT1yLmdldEtleSgpLGk9bi5nZXROZXh0U2libGluZ0tleSgpLHU9bi5nZXRQYXJlbnRLZXkoKSxzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRLZXkoKSxyPWUsbz1bXTtmb3IodC5nZXQobikmJm8ucHVzaChuKTtyJiZyLmdldE5leHRTaWJsaW5nS2V5KCk7KXt2YXIgYT1yLmdldE5leHRTaWJsaW5nS2V5KCk7aWYoIWEpYnJlYWs7by5wdXNoKGEpLHI9dC5nZXQoYSl9cmV0dXJuIG99KHIsZSksYz1zW3MubGVuZ3RoLTFdO2lmKHQuZ2V0KGEpPyh0LnNldEluKFtvLCJuZXh0U2libGluZyJdLGEpLHQuc2V0SW4oW2EsInByZXZTaWJsaW5nIl0sbykpOih0LnNldEluKFtvLCJuZXh0U2libGluZyJdLHIuZ2V0TmV4dFNpYmxpbmdLZXkoKSksdC5zZXRJbihbci5nZXROZXh0U2libGluZ0tleSgpLCJwcmV2U2libGluZyJdLG8pKSx0LnNldEluKFtjLCJuZXh0U2libGluZyJdLGkpLGkmJnQuc2V0SW4oW2ksInByZXZTaWJsaW5nIl0sYykscy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXRJbihbZSwicGFyZW50Il0sdSl9KSksdSl7dmFyIGY9ZS5nZXQodSkuZ2V0Q2hpbGRLZXlzKCksZD1mLmluZGV4T2YobykrMSxwPWYudG9BcnJheSgpO3Auc3BsaWNlLmFwcGx5KHAsW2QsMF0uY29uY2F0KHMpKSx0LnNldEluKFt1LCJjaGlsZHJlbiJdLGwocCkpfX0pKX0oZywwLGQscCkpLGUubWVyZ2Uoe2Jsb2NrTWFwOmcsc2VsZWN0aW9uQmVmb3JlOnQsc2VsZWN0aW9uQWZ0ZXI6dC5tZXJnZSh7YW5jaG9yS2V5Om0sYW5jaG9yT2Zmc2V0OnksZm9jdXNLZXk6bSxmb2N1c09mZnNldDp5LGlzQmFja3dhcmQ6ITF9KX0pfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToiUkVQTEFDRV9XSVRIX05FV19EQVRBIjt0LmlzQ29sbGFwc2VkKCl8fHUoITEpO3ZhciBhPWUuZ2V0QmxvY2tNYXAoKSxpPXMobiksbD10LmdldFN0YXJ0S2V5KCksZD10LmdldFN0YXJ0T2Zmc2V0KCkscD1hLmdldChsKTtyZXR1cm4gcCBpbnN0YW5jZW9mIG8mJihwLmdldENoaWxkS2V5cygpLmlzRW1wdHkoKXx8dSghMSkpLDE9PT1pLnNpemU/YyhlLHQsYSxpLmZpcnN0KCksbCxkLHIpOmYoZSx0LGEsaSxsLGQpfX0sTFB6SjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxvPW4oInExdEkiKSxhPXAobyksaT0ocChuKCIxN3g5IikpLHAobigiRXQraSIpKSksdT1wKG4oInhTSmkiKSkscz1uKCJWQlZZIiksbD1kKG4oIktGbm4iKSksYz1kKG4oIlZKQ1IiKSksZj1kKG4oIm1IbnUiKSk7ZnVuY3Rpb24gZChlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9ZnVuY3Rpb24gcChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgbT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbixyO2godGhpcyx0KTtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPUFycmF5KG8pLHM9MDtzPG87cysrKWlbc109YXJndW1lbnRzW3NdO3JldHVybiBuPXI9eSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGkpKSksci5yZW5kZXJEYXk9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5wcm9wcy5tb250aC5nZXRNb250aCgpLG49Yy5nZXRNb2RpZmllcnNGcm9tUHJvcHMoci5wcm9wcyksbz1sLmdldE1vZGlmaWVyc0ZvckRheShlLG4pO2YuaXNTYW1lRGF5KGUsbmV3IERhdGUpJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sci5wcm9wcy5jbGFzc05hbWVzLnRvZGF5KSYmby5wdXNoKHIucHJvcHMuY2xhc3NOYW1lcy50b2RheSksZS5nZXRNb250aCgpIT09dCYmby5wdXNoKHIucHJvcHMuY2xhc3NOYW1lcy5vdXRzaWRlKTt2YXIgaT1lLmdldE1vbnRoKCkhPT10LHM9LTE7ci5wcm9wcy5vbkRheUNsaWNrJiYhaSYmMT09PWUuZ2V0RGF0ZSgpJiYocz1yLnByb3BzLnRhYkluZGV4KTt2YXIgZD0iIitlLmdldEZ1bGxZZWFyKCkrZS5nZXRNb250aCgpK2UuZ2V0RGF0ZSgpLHA9e307cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cFtlXT0hMH0pKSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1LmRlZmF1bHQse2tleTooaT8ib3V0c2lkZS0iOiIiKStkLGNsYXNzTmFtZXM6ci5wcm9wcy5jbGFzc05hbWVzLGRheTplLG1vZGlmaWVyczpwLG1vZGlmaWVyc1N0eWxlczpyLnByb3BzLm1vZGlmaWVyc1N0eWxlcyxlbXB0eTppJiYhci5wcm9wcy5zaG93T3V0c2lkZURheXMmJiFyLnByb3BzLmZpeGVkV2Vla3MsdGFiSW5kZXg6cyxhcmlhTGFiZWw6ci5wcm9wcy5sb2NhbGVVdGlscy5mb3JtYXREYXkoZSxyLnByb3BzLmxvY2FsZSksYXJpYURpc2FibGVkOml8fG8uaW5kZXhPZigiZGlzYWJsZWQiKT4tMSxhcmlhU2VsZWN0ZWQ6by5pbmRleE9mKCJzZWxlY3RlZCIpPi0xLG9uQ2xpY2s6ci5wcm9wcy5vbkRheUNsaWNrLG9uRm9jdXM6ci5wcm9wcy5vbkRheUZvY3VzLG9uS2V5RG93bjpyLnByb3BzLm9uRGF5S2V5RG93bixvbk1vdXNlRW50ZXI6ci5wcm9wcy5vbkRheU1vdXNlRW50ZXIsb25Nb3VzZUxlYXZlOnIucHJvcHMub25EYXlNb3VzZUxlYXZlLG9uTW91c2VEb3duOnIucHJvcHMub25EYXlNb3VzZURvd24sb25Nb3VzZVVwOnIucHJvcHMub25EYXlNb3VzZVVwLG9uVG91Y2hFbmQ6ci5wcm9wcy5vbkRheVRvdWNoRW5kLG9uVG91Y2hTdGFydDpyLnByb3BzLm9uRGF5VG91Y2hTdGFydH0sci5wcm9wcy5yZW5kZXJEYXkoZSxwKSl9LHkocixuKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLHIodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC5jbGFzc05hbWVzLHI9dC5tb250aCxvPXQubW9udGhzLHU9dC5maXhlZFdlZWtzLGw9dC5jYXB0aW9uRWxlbWVudCxkPXQud2Vla2RheUVsZW1lbnQscD10LmxvY2FsZSxoPXQubG9jYWxlVXRpbHMseT10LndlZWtkYXlzTG9uZyxtPXQud2Vla2RheXNTaG9ydCx2PXQuZmlyc3REYXlPZldlZWssZz10Lm9uQ2FwdGlvbkNsaWNrLGI9dC5zaG93V2Vla051bWJlcnMsdz10LnNob3dXZWVrRGF5cyxfPXQub25XZWVrQ2xpY2ssRT17ZGF0ZTpyLGNsYXNzTmFtZXM6bixtb250aHM6byxsb2NhbGVVdGlsczpoLGxvY2FsZTpwLG9uQ2xpY2s6Zz9mdW5jdGlvbihlKXtyZXR1cm4gZyhyLGUpfTp2b2lkIDB9LE89YS5kZWZhdWx0LmlzVmFsaWRFbGVtZW50KGwpP2EuZGVmYXVsdC5jbG9uZUVsZW1lbnQobCxFKTphLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLEUpLGs9Yy5nZXRXZWVrQXJyYXkocix2LHUpO3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOm4ubW9udGgscm9sZToiZ3JpZCJ9LE8sdyYmYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaS5kZWZhdWx0LHtjbGFzc05hbWVzOm4sd2Vla2RheXNTaG9ydDptLHdlZWtkYXlzTG9uZzp5LGZpcnN0RGF5T2ZXZWVrOnYsc2hvd1dlZWtOdW1iZXJzOmIsbG9jYWxlOnAsbG9jYWxlVXRpbHM6aCx3ZWVrZGF5RWxlbWVudDpkfSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpuLmJvZHkscm9sZToicm93Z3JvdXAifSxrLm1hcCgoZnVuY3Rpb24odCl7dmFyIG89dm9pZCAwO3JldHVybiBiJiYobz1mLmdldFdlZWtOdW1iZXIodFs2XSkpLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtrZXk6dFswXS5nZXRUaW1lKCksY2xhc3NOYW1lOm4ud2Vlayxyb2xlOiJyb3cifSxiJiZhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOm4ud2Vla051bWJlcix0YWJJbmRleDpfPzA6LTEscm9sZToiZ3JpZGNlbGwiLG9uQ2xpY2s6Xz9mdW5jdGlvbihlKXtyZXR1cm4gXyhvLHQsZSl9OnZvaWQgMCxvbktleVVwOl8/ZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5Q29kZT09PXMuRU5URVImJl8obyx0LGUpfTp2b2lkIDB9LGUucHJvcHMucmVuZGVyV2VlayhvLHQscikpLHQubWFwKGUucmVuZGVyRGF5KSl9KSkpKX19XSksdH0oby5Db21wb25lbnQpO3QuZGVmYXVsdD1tLG0ucHJvcFR5cGVzPXt9fSxMVEFDOmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCEoIm9udG91Y2hzdGFydCJpbiB3aW5kb3d8fHdpbmRvdy5Eb2N1bWVudFRvdWNoJiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudCBpbnN0YW5jZW9mIHdpbmRvdy5Eb2N1bWVudFRvdWNoKSl8fCEoInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCFuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJiFuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyl9LGUuZXhwb3J0cz10LmRlZmF1bHR9LExXWWE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJxMXRJIiksbz1uLm4ociksYT1uKCIxN3g5IiksaT1uLm4oYSksdT1uKCJRTGFQIikscz1uLm4odSk7ZnVuY3Rpb24gbChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGMoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgZj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGwodGhpcyx0KSxjKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksdC5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKGUpe3RoaXMudW5ibG9jayYmdGhpcy51bmJsb2NrKCksdGhpcy51bmJsb2NrPXRoaXMuY29udGV4dC5yb3V0ZXIuaGlzdG9yeS5ibG9jayhlKX0sdC5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMudW5ibG9jayYmKHRoaXMudW5ibG9jaygpLHRoaXMudW5ibG9jaz1udWxsKX0sdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7cygpKHRoaXMuY29udGV4dC5yb3V0ZXIsIllvdSBzaG91bGQgbm90IHVzZSA8UHJvbXB0PiBvdXRzaWRlIGEgPFJvdXRlcj4iKSx0aGlzLnByb3BzLndoZW4mJnRoaXMuZW5hYmxlKHRoaXMucHJvcHMubWVzc2FnZSl9LHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSl7ZS53aGVuP3RoaXMucHJvcHMud2hlbiYmdGhpcy5wcm9wcy5tZXNzYWdlPT09ZS5tZXNzYWdlfHx0aGlzLmVuYWJsZShlLm1lc3NhZ2UpOnRoaXMuZGlzYWJsZSgpfSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuZGlzYWJsZSgpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdH0oby5hLkNvbXBvbmVudCk7Zi5wcm9wVHlwZXM9e3doZW46aS5hLmJvb2wsbWVzc2FnZTppLmEub25lT2ZUeXBlKFtpLmEuZnVuYyxpLmEuc3RyaW5nXSkuaXNSZXF1aXJlZH0sZi5kZWZhdWx0UHJvcHM9e3doZW46ITB9LGYuY29udGV4dFR5cGVzPXtyb3V0ZXI6aS5hLnNoYXBlKHtoaXN0b3J5OmkuYS5zaGFwZSh7YmxvY2s6aS5hLmZ1bmMuaXNSZXF1aXJlZH0pLmlzUmVxdWlyZWR9KS5pc1JlcXVpcmVkfSx0LmE9Zn0sTGFrcjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlc1QVMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZighKCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiaW4gZSYmcih0LGUpKSlyZXR1cm57bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjB9O3ZhciBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2xlZnQ6TWF0aC5yb3VuZChuLmxlZnQpLXQuY2xpZW50TGVmdCxyaWdodDpNYXRoLnJvdW5kKG4ucmlnaHQpLXQuY2xpZW50TGVmdCx0b3A6TWF0aC5yb3VuZChuLnRvcCktdC5jbGllbnRUb3AsYm90dG9tOk1hdGgucm91bmQobi5ib3R0b20pLXQuY2xpZW50VG9wfX19LExoQ3Y6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuKHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBvKGUpe3JldHVybiIvIj09PWUuY2hhckF0KDApfWZ1bmN0aW9uIGEoZSx0KXtmb3IodmFyIG49dCxyPW4rMSxvPWUubGVuZ3RoO3I8bztuKz0xLHIrPTEpZVtuXT1lW3JdO2UucG9wKCl9dmFyIGk9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0iIik7dmFyIG4scj1lJiZlLnNwbGl0KCIvIil8fFtdLGk9dCYmdC5zcGxpdCgiLyIpfHxbXSx1PWUmJm8oZSkscz10JiZvKHQpLGw9dXx8cztpZihlJiZvKGUpP2k9cjpyLmxlbmd0aCYmKGkucG9wKCksaT1pLmNvbmNhdChyKSksIWkubGVuZ3RoKXJldHVybiIvIjtpZihpLmxlbmd0aCl7dmFyIGM9aVtpLmxlbmd0aC0xXTtuPSIuIj09PWN8fCIuLiI9PT1jfHwiIj09PWN9ZWxzZSBuPSExO2Zvcih2YXIgZj0wLGQ9aS5sZW5ndGg7ZD49MDtkLS0pe3ZhciBwPWlbZF07Ii4iPT09cD9hKGksZCk6Ii4uIj09PXA/KGEoaSxkKSxmKyspOmYmJihhKGksZCksZi0tKX1pZighbClmb3IoO2YtLTtmKWkudW5zaGlmdCgiLi4iKTshbHx8IiI9PT1pWzBdfHxpWzBdJiZvKGlbMF0pfHxpLnVuc2hpZnQoIiIpO3ZhciBoPWkuam9pbigiLyIpO3JldHVybiBuJiYiLyIhPT1oLnN1YnN0cigtMSkmJihoKz0iLyIpLGh9O2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGUudmFsdWVPZj9lLnZhbHVlT2YoKTpPYmplY3QucHJvdG90eXBlLnZhbHVlT2YuY2FsbChlKX12YXIgcz1mdW5jdGlvbiBlKHQsbil7aWYodD09PW4pcmV0dXJuITA7aWYobnVsbD09dHx8bnVsbD09bilyZXR1cm4hMTtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBBcnJheS5pc0FycmF5KG4pJiZ0Lmxlbmd0aD09PW4ubGVuZ3RoJiZ0LmV2ZXJ5KChmdW5jdGlvbih0LHIpe3JldHVybiBlKHQsbltyXSl9KSk7aWYoIm9iamVjdCI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIG4pe3ZhciByPXUodCksbz11KG4pO3JldHVybiByIT09dHx8byE9PW4/ZShyLG8pOk9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sdCxuKSkuZXZlcnkoKGZ1bmN0aW9uKHIpe3JldHVybiBlKHRbcl0sbltyXSl9KSl9cmV0dXJuITF9O3ZhciBsPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJJbnZhcmlhbnQgZmFpbGVkIil9O2Z1bmN0aW9uIGMoZSl7cmV0dXJuIi8iPT09ZS5jaGFyQXQoMCk/ZToiLyIrZX1mdW5jdGlvbiBmKGUpe3JldHVybiIvIj09PWUuY2hhckF0KDApP2Uuc3Vic3RyKDEpOmV9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiAwPT09ZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodC50b0xvd2VyQ2FzZSgpKSYmLTEhPT0iLz8jIi5pbmRleE9mKGUuY2hhckF0KHQubGVuZ3RoKSl9KGUsdCk/ZS5zdWJzdHIodC5sZW5ndGgpOmV9ZnVuY3Rpb24gcChlKXtyZXR1cm4iLyI9PT1lLmNoYXJBdChlLmxlbmd0aC0xKT9lLnNsaWNlKDAsLTEpOmV9ZnVuY3Rpb24gaChlKXt2YXIgdD1lLnBhdGhuYW1lLG49ZS5zZWFyY2gscj1lLmhhc2gsbz10fHwiLyI7cmV0dXJuIG4mJiI/IiE9PW4mJihvKz0iPyI9PT1uLmNoYXJBdCgwKT9uOiI/IituKSxyJiYiIyIhPT1yJiYobys9IiMiPT09ci5jaGFyQXQoMCk/cjoiIyIrciksb31mdW5jdGlvbiB5KGUsdCxuLG8pe3ZhciBhOyJzdHJpbmciPT10eXBlb2YgZT8oYT1mdW5jdGlvbihlKXt2YXIgdD1lfHwiLyIsbj0iIixyPSIiLG89dC5pbmRleE9mKCIjIik7LTEhPT1vJiYocj10LnN1YnN0cihvKSx0PXQuc3Vic3RyKDAsbykpO3ZhciBhPXQuaW5kZXhPZigiPyIpO3JldHVybi0xIT09YSYmKG49dC5zdWJzdHIoYSksdD10LnN1YnN0cigwLGEpKSx7cGF0aG5hbWU6dCxzZWFyY2g6Ij8iPT09bj8iIjpuLGhhc2g6IiMiPT09cj8iIjpyfX0oZSkpLnN0YXRlPXQ6KHZvaWQgMD09PShhPXIoe30sZSkpLnBhdGhuYW1lJiYoYS5wYXRobmFtZT0iIiksYS5zZWFyY2g/Ij8iIT09YS5zZWFyY2guY2hhckF0KDApJiYoYS5zZWFyY2g9Ij8iK2Euc2VhcmNoKTphLnNlYXJjaD0iIixhLmhhc2g/IiMiIT09YS5oYXNoLmNoYXJBdCgwKSYmKGEuaGFzaD0iIyIrYS5oYXNoKTphLmhhc2g9IiIsdm9pZCAwIT09dCYmdm9pZCAwPT09YS5zdGF0ZSYmKGEuc3RhdGU9dCkpO3RyeXthLnBhdGhuYW1lPWRlY29kZVVSSShhLnBhdGhuYW1lKX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgVVJJRXJyb3I/bmV3IFVSSUVycm9yKCdQYXRobmFtZSAiJythLnBhdGhuYW1lKyciIGNvdWxkIG5vdCBiZSBkZWNvZGVkLiBUaGlzIGlzIGxpa2VseSBjYXVzZWQgYnkgYW4gaW52YWxpZCBwZXJjZW50LWVuY29kaW5nLicpOmV9cmV0dXJuIG4mJihhLmtleT1uKSxvP2EucGF0aG5hbWU/Ii8iIT09YS5wYXRobmFtZS5jaGFyQXQoMCkmJihhLnBhdGhuYW1lPWkoYS5wYXRobmFtZSxvLnBhdGhuYW1lKSk6YS5wYXRobmFtZT1vLnBhdGhuYW1lOmEucGF0aG5hbWV8fChhLnBhdGhuYW1lPSIvIiksYX1mdW5jdGlvbiBtKGUsdCl7cmV0dXJuIGUucGF0aG5hbWU9PT10LnBhdGhuYW1lJiZlLnNlYXJjaD09PXQuc2VhcmNoJiZlLmhhc2g9PT10Lmhhc2gmJmUua2V5PT09dC5rZXkmJnMoZS5zdGF0ZSx0LnN0YXRlKX1mdW5jdGlvbiB2KCl7dmFyIGU9bnVsbDt2YXIgdD1bXTtyZXR1cm57c2V0UHJvbXB0OmZ1bmN0aW9uKHQpe3JldHVybiBlPXQsZnVuY3Rpb24oKXtlPT09dCYmKGU9bnVsbCl9fSxjb25maXJtVHJhbnNpdGlvblRvOmZ1bmN0aW9uKHQsbixyLG8pe2lmKG51bGwhPWUpe3ZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UodCxuKTplOyJzdHJpbmciPT10eXBlb2YgYT8iZnVuY3Rpb24iPT10eXBlb2Ygcj9yKGEsbyk6byghMCk6byghMSE9PWEpfWVsc2UgbyghMCl9LGFwcGVuZExpc3RlbmVyOmZ1bmN0aW9uKGUpe3ZhciBuPSEwO2Z1bmN0aW9uIHIoKXtuJiZlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfXJldHVybiB0LnB1c2gociksZnVuY3Rpb24oKXtuPSExLHQ9dC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09cn0pKX19LG5vdGlmeUxpc3RlbmVyczpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09YXJndW1lbnRzW3JdO3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYXBwbHkodm9pZCAwLG4pfSkpfX19bi5kKHQsImEiLChmdW5jdGlvbigpe3JldHVybiBffSkpLG4uZCh0LCJiIiwoZnVuY3Rpb24oKXtyZXR1cm4gQ30pKSxuLmQodCwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFN9KSksbi5kKHQsImMiLChmdW5jdGlvbigpe3JldHVybiB5fSkpLG4uZCh0LCJmIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQodCwiZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSk7dmFyIGc9ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtmdW5jdGlvbiBiKGUsdCl7dCh3aW5kb3cuY29uZmlybShlKSl9ZnVuY3Rpb24gdygpe3RyeXtyZXR1cm4gd2luZG93Lmhpc3Rvcnkuc3RhdGV8fHt9fWNhdGNoKGUpe3JldHVybnt9fX1mdW5jdGlvbiBfKGUpe3ZvaWQgMD09PWUmJihlPXt9KSxnfHxsKCExKTt2YXIgdCxuPXdpbmRvdy5oaXN0b3J5LG89KC0xPT09KHQ9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpLmluZGV4T2YoIkFuZHJvaWQgMi4iKSYmLTE9PT10LmluZGV4T2YoIkFuZHJvaWQgNC4wIil8fC0xPT09dC5pbmRleE9mKCJNb2JpbGUgU2FmYXJpIil8fC0xIT09dC5pbmRleE9mKCJDaHJvbWUiKXx8LTEhPT10LmluZGV4T2YoIldpbmRvd3MgUGhvbmUiKSkmJndpbmRvdy5oaXN0b3J5JiYicHVzaFN0YXRlImluIHdpbmRvdy5oaXN0b3J5LGE9ISgtMT09PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIlRyaWRlbnQiKSksaT1lLHU9aS5mb3JjZVJlZnJlc2gscz12b2lkIDAhPT11JiZ1LGY9aS5nZXRVc2VyQ29uZmlybWF0aW9uLG09dm9pZCAwPT09Zj9iOmYsXz1pLmtleUxlbmd0aCxFPXZvaWQgMD09PV8/NjpfLE89ZS5iYXNlbmFtZT9wKGMoZS5iYXNlbmFtZSkpOiIiO2Z1bmN0aW9uIGsoZSl7dmFyIHQ9ZXx8e30sbj10LmtleSxyPXQuc3RhdGUsbz13aW5kb3cubG9jYXRpb24sYT1vLnBhdGhuYW1lK28uc2VhcmNoK28uaGFzaDtyZXR1cm4gTyYmKGE9ZChhLE8pKSx5KGEscixuKX1mdW5jdGlvbiBDKCl7cmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLEUpfXZhciB4PXYoKTtmdW5jdGlvbiBTKGUpe3IoQixlKSxCLmxlbmd0aD1uLmxlbmd0aCx4Lm5vdGlmeUxpc3RlbmVycyhCLmxvY2F0aW9uLEIuYWN0aW9uKX1mdW5jdGlvbiBEKGUpeyhmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZS5zdGF0ZSYmLTE9PT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkNyaU9TIil9KShlKXx8UChrKGUuc3RhdGUpKX1mdW5jdGlvbiBUKCl7UChrKHcoKSkpfXZhciBNPSExO2Z1bmN0aW9uIFAoZSl7aWYoTSlNPSExLFMoKTtlbHNle3guY29uZmlybVRyYW5zaXRpb25UbyhlLCJQT1AiLG0sKGZ1bmN0aW9uKHQpe3Q/Uyh7YWN0aW9uOiJQT1AiLGxvY2F0aW9uOmV9KTpmdW5jdGlvbihlKXt2YXIgdD1CLmxvY2F0aW9uLG49ai5pbmRleE9mKHQua2V5KTstMT09PW4mJihuPTApO3ZhciByPWouaW5kZXhPZihlLmtleSk7LTE9PT1yJiYocj0wKTt2YXIgbz1uLXI7byYmKE09ITAsUihvKSl9KGUpfSkpfX12YXIgTj1rKHcoKSksaj1bTi5rZXldO2Z1bmN0aW9uIEwoZSl7cmV0dXJuIE8raChlKX1mdW5jdGlvbiBSKGUpe24uZ28oZSl9dmFyIEk9MDtmdW5jdGlvbiBBKGUpezE9PT0oSSs9ZSkmJjE9PT1lPyh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLEQpLGEmJndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixUKSk6MD09PUkmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLEQpLGEmJndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixUKSl9dmFyIEY9ITE7dmFyIEI9e2xlbmd0aDpuLmxlbmd0aCxhY3Rpb246IlBPUCIsbG9jYXRpb246TixjcmVhdGVIcmVmOkwscHVzaDpmdW5jdGlvbihlLHQpe3ZhciByPXkoZSx0LEMoKSxCLmxvY2F0aW9uKTt4LmNvbmZpcm1UcmFuc2l0aW9uVG8ociwiUFVTSCIsbSwoZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9TChyKSxhPXIua2V5LGk9ci5zdGF0ZTtpZihvKWlmKG4ucHVzaFN0YXRlKHtrZXk6YSxzdGF0ZTppfSxudWxsLHQpLHMpd2luZG93LmxvY2F0aW9uLmhyZWY9dDtlbHNle3ZhciB1PWouaW5kZXhPZihCLmxvY2F0aW9uLmtleSksbD1qLnNsaWNlKDAsdSsxKTtsLnB1c2goci5rZXkpLGo9bCxTKHthY3Rpb246IlBVU0giLGxvY2F0aW9uOnJ9KX1lbHNlIHdpbmRvdy5sb2NhdGlvbi5ocmVmPXR9fSkpfSxyZXBsYWNlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9eShlLHQsQygpLEIubG9jYXRpb24pO3guY29uZmlybVRyYW5zaXRpb25UbyhyLCJSRVBMQUNFIixtLChmdW5jdGlvbihlKXtpZihlKXt2YXIgdD1MKHIpLGE9ci5rZXksaT1yLnN0YXRlO2lmKG8paWYobi5yZXBsYWNlU3RhdGUoe2tleTphLHN0YXRlOml9LG51bGwsdCkscyl3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh0KTtlbHNle3ZhciB1PWouaW5kZXhPZihCLmxvY2F0aW9uLmtleSk7LTEhPT11JiYoalt1XT1yLmtleSksUyh7YWN0aW9uOiJSRVBMQUNFIixsb2NhdGlvbjpyfSl9ZWxzZSB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh0KX19KSl9LGdvOlIsZ29CYWNrOmZ1bmN0aW9uKCl7UigtMSl9LGdvRm9yd2FyZDpmdW5jdGlvbigpe1IoMSl9LGJsb2NrOmZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgdD14LnNldFByb21wdChlKTtyZXR1cm4gRnx8KEEoMSksRj0hMCksZnVuY3Rpb24oKXtyZXR1cm4gRiYmKEY9ITEsQSgtMSkpLHQoKX19LGxpc3RlbjpmdW5jdGlvbihlKXt2YXIgdD14LmFwcGVuZExpc3RlbmVyKGUpO3JldHVybiBBKDEpLGZ1bmN0aW9uKCl7QSgtMSksdCgpfX19O3JldHVybiBCfXZhciBFPXtoYXNoYmFuZzp7ZW5jb2RlUGF0aDpmdW5jdGlvbihlKXtyZXR1cm4iISI9PT1lLmNoYXJBdCgwKT9lOiIhLyIrZihlKX0sZGVjb2RlUGF0aDpmdW5jdGlvbihlKXtyZXR1cm4iISI9PT1lLmNoYXJBdCgwKT9lLnN1YnN0cigxKTplfX0sbm9zbGFzaDp7ZW5jb2RlUGF0aDpmLGRlY29kZVBhdGg6Y30sc2xhc2g6e2VuY29kZVBhdGg6YyxkZWNvZGVQYXRoOmN9fTtmdW5jdGlvbiBPKCl7dmFyIGU9d2luZG93LmxvY2F0aW9uLmhyZWYsdD1lLmluZGV4T2YoIiMiKTtyZXR1cm4tMT09PXQ/IiI6ZS5zdWJzdHJpbmcodCsxKX1mdW5jdGlvbiBrKGUpe3ZhciB0PXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIiMiKTt3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh3aW5kb3cubG9jYXRpb24uaHJlZi5zbGljZSgwLHQ+PTA/dDowKSsiIyIrZSl9ZnVuY3Rpb24gQyhlKXt2b2lkIDA9PT1lJiYoZT17fSksZ3x8bCghMSk7dmFyIHQ9d2luZG93Lmhpc3Rvcnksbj0od2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiRmlyZWZveCIpLGUpLG89bi5nZXRVc2VyQ29uZmlybWF0aW9uLGE9dm9pZCAwPT09bz9iOm8saT1uLmhhc2hUeXBlLHU9dm9pZCAwPT09aT8ic2xhc2giOmkscz1lLmJhc2VuYW1lP3AoYyhlLmJhc2VuYW1lKSk6IiIsZj1FW3VdLG09Zi5lbmNvZGVQYXRoLHc9Zi5kZWNvZGVQYXRoO2Z1bmN0aW9uIF8oKXt2YXIgZT13KE8oKSk7cmV0dXJuIHMmJihlPWQoZSxzKSkseShlKX12YXIgQz12KCk7ZnVuY3Rpb24geChlKXtyKEYsZSksRi5sZW5ndGg9dC5sZW5ndGgsQy5ub3RpZnlMaXN0ZW5lcnMoRi5sb2NhdGlvbixGLmFjdGlvbil9dmFyIFM9ITEsRD1udWxsO2Z1bmN0aW9uIFQoKXt2YXIgZSx0LG49TygpLHI9bShuKTtpZihuIT09cilrKHIpO2Vsc2V7dmFyIG89XygpLGk9Ri5sb2NhdGlvbjtpZighUyYmKHQ9bywoZT1pKS5wYXRobmFtZT09PXQucGF0aG5hbWUmJmUuc2VhcmNoPT09dC5zZWFyY2gmJmUuaGFzaD09PXQuaGFzaCkpcmV0dXJuO2lmKEQ9PT1oKG8pKXJldHVybjtEPW51bGwsZnVuY3Rpb24oZSl7aWYoUylTPSExLHgoKTtlbHNle0MuY29uZmlybVRyYW5zaXRpb25UbyhlLCJQT1AiLGEsKGZ1bmN0aW9uKHQpe3Q/eCh7YWN0aW9uOiJQT1AiLGxvY2F0aW9uOmV9KTpmdW5jdGlvbihlKXt2YXIgdD1GLmxvY2F0aW9uLG49ai5sYXN0SW5kZXhPZihoKHQpKTstMT09PW4mJihuPTApO3ZhciByPWoubGFzdEluZGV4T2YoaChlKSk7LTE9PT1yJiYocj0wKTt2YXIgbz1uLXI7byYmKFM9ITAsTChvKSl9KGUpfSkpfX0obyl9fXZhciBNPU8oKSxQPW0oTSk7TSE9PVAmJmsoUCk7dmFyIE49XygpLGo9W2goTildO2Z1bmN0aW9uIEwoZSl7dC5nbyhlKX12YXIgUj0wO2Z1bmN0aW9uIEkoZSl7MT09PShSKz1lKSYmMT09PWU/d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLFQpOjA9PT1SJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsVCl9dmFyIEE9ITE7dmFyIEY9e2xlbmd0aDp0Lmxlbmd0aCxhY3Rpb246IlBPUCIsbG9jYXRpb246TixjcmVhdGVIcmVmOmZ1bmN0aW9uKGUpe3JldHVybiIjIittKHMraChlKSl9LHB1c2g6ZnVuY3Rpb24oZSx0KXt2YXIgbj15KGUsdm9pZCAwLHZvaWQgMCxGLmxvY2F0aW9uKTtDLmNvbmZpcm1UcmFuc2l0aW9uVG8obiwiUFVTSCIsYSwoZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9aChuKSxyPW0ocyt0KTtpZihPKCkhPT1yKXtEPXQsZnVuY3Rpb24oZSl7d2luZG93LmxvY2F0aW9uLmhhc2g9ZX0ocik7dmFyIG89ai5sYXN0SW5kZXhPZihoKEYubG9jYXRpb24pKSxhPWouc2xpY2UoMCxvKzEpO2EucHVzaCh0KSxqPWEseCh7YWN0aW9uOiJQVVNIIixsb2NhdGlvbjpufSl9ZWxzZSB4KCl9fSkpfSxyZXBsYWNlOmZ1bmN0aW9uKGUsdCl7dmFyIG49eShlLHZvaWQgMCx2b2lkIDAsRi5sb2NhdGlvbik7Qy5jb25maXJtVHJhbnNpdGlvblRvKG4sIlJFUExBQ0UiLGEsKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PWgobikscj1tKHMrdCk7TygpIT09ciYmKEQ9dCxrKHIpKTt2YXIgbz1qLmluZGV4T2YoaChGLmxvY2F0aW9uKSk7LTEhPT1vJiYoaltvXT10KSx4KHthY3Rpb246IlJFUExBQ0UiLGxvY2F0aW9uOm59KX19KSl9LGdvOkwsZ29CYWNrOmZ1bmN0aW9uKCl7TCgtMSl9LGdvRm9yd2FyZDpmdW5jdGlvbigpe0woMSl9LGJsb2NrOmZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgdD1DLnNldFByb21wdChlKTtyZXR1cm4gQXx8KEkoMSksQT0hMCksZnVuY3Rpb24oKXtyZXR1cm4gQSYmKEE9ITEsSSgtMSkpLHQoKX19LGxpc3RlbjpmdW5jdGlvbihlKXt2YXIgdD1DLmFwcGVuZExpc3RlbmVyKGUpO3JldHVybiBJKDEpLGZ1bmN0aW9uKCl7SSgtMSksdCgpfX19O3JldHVybiBGfWZ1bmN0aW9uIHgoZSx0LG4pe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChlLHQpLG4pfWZ1bmN0aW9uIFMoZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0PWUsbj10LmdldFVzZXJDb25maXJtYXRpb24sbz10LmluaXRpYWxFbnRyaWVzLGE9dm9pZCAwPT09bz9bIi8iXTpvLGk9dC5pbml0aWFsSW5kZXgsdT12b2lkIDA9PT1pPzA6aSxzPXQua2V5TGVuZ3RoLGw9dm9pZCAwPT09cz82OnMsYz12KCk7ZnVuY3Rpb24gZihlKXtyKHcsZSksdy5sZW5ndGg9dy5lbnRyaWVzLmxlbmd0aCxjLm5vdGlmeUxpc3RlbmVycyh3LmxvY2F0aW9uLHcuYWN0aW9uKX1mdW5jdGlvbiBkKCl7cmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLGwpfXZhciBwPXgodSwwLGEubGVuZ3RoLTEpLG09YS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB5KGUsdm9pZCAwLCJzdHJpbmciPT10eXBlb2YgZT9kKCk6ZS5rZXl8fGQoKSl9KSksZz1oO2Z1bmN0aW9uIGIoZSl7dmFyIHQ9eCh3LmluZGV4K2UsMCx3LmVudHJpZXMubGVuZ3RoLTEpLHI9dy5lbnRyaWVzW3RdO2MuY29uZmlybVRyYW5zaXRpb25UbyhyLCJQT1AiLG4sKGZ1bmN0aW9uKGUpe2U/Zih7YWN0aW9uOiJQT1AiLGxvY2F0aW9uOnIsaW5kZXg6dH0pOmYoKX0pKX12YXIgdz17bGVuZ3RoOm0ubGVuZ3RoLGFjdGlvbjoiUE9QIixsb2NhdGlvbjptW3BdLGluZGV4OnAsZW50cmllczptLGNyZWF0ZUhyZWY6ZyxwdXNoOmZ1bmN0aW9uKGUsdCl7dmFyIHI9eShlLHQsZCgpLHcubG9jYXRpb24pO2MuY29uZmlybVRyYW5zaXRpb25UbyhyLCJQVVNIIixuLChmdW5jdGlvbihlKXtpZihlKXt2YXIgdD13LmluZGV4KzEsbj13LmVudHJpZXMuc2xpY2UoMCk7bi5sZW5ndGg+dD9uLnNwbGljZSh0LG4ubGVuZ3RoLXQscik6bi5wdXNoKHIpLGYoe2FjdGlvbjoiUFVTSCIsbG9jYXRpb246cixpbmRleDp0LGVudHJpZXM6bn0pfX0pKX0scmVwbGFjZTpmdW5jdGlvbihlLHQpe3ZhciByPXkoZSx0LGQoKSx3LmxvY2F0aW9uKTtjLmNvbmZpcm1UcmFuc2l0aW9uVG8ociwiUkVQTEFDRSIsbiwoZnVuY3Rpb24oZSl7ZSYmKHcuZW50cmllc1t3LmluZGV4XT1yLGYoe2FjdGlvbjoiUkVQTEFDRSIsbG9jYXRpb246cn0pKX0pKX0sZ286Yixnb0JhY2s6ZnVuY3Rpb24oKXtiKC0xKX0sZ29Gb3J3YXJkOmZ1bmN0aW9uKCl7YigxKX0sY2FuR286ZnVuY3Rpb24oZSl7dmFyIHQ9dy5pbmRleCtlO3JldHVybiB0Pj0wJiZ0PHcuZW50cmllcy5sZW5ndGh9LGJsb2NrOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksYy5zZXRQcm9tcHQoZSl9LGxpc3RlbjpmdW5jdGlvbihlKXtyZXR1cm4gYy5hcHBlbmRMaXN0ZW5lcihlKX19O3JldHVybiB3fX0sTHBRQTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlllVmUiKSxvPW4oImxGSm4iKSxhPW4oIjh1UW0iKSxpPW4oIkpMN1QiKSx1PW4oIlR6VS8iKSxzPW4oImhNcGQiKSxsPW4oInJKWTEiKSxjPW4oImN3RlkiKSxmPW4oIkpQY3YiKSxkPW4oIkhyaVQiKSxwPWYuTGlzdCxoPWYuUmVjb3JkLHk9Zi5SZXBlYXQsbT1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIGYoKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9bj1lLCh0PWYpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPW47dmFyIGg9Zi5wcm90b3R5cGU7cmV0dXJuIGguZ2V0RW50aXR5TWFwPWZ1bmN0aW9uKCl7cmV0dXJuIHV9LGguZ2V0QmxvY2tNYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImJsb2NrTWFwIil9LGguZ2V0U2VsZWN0aW9uQmVmb3JlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJzZWxlY3Rpb25CZWZvcmUiKX0saC5nZXRTZWxlY3Rpb25BZnRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgic2VsZWN0aW9uQWZ0ZXIiKX0saC5nZXRCbG9ja0ZvcktleT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5nZXRCbG9ja01hcCgpLmdldChlKX0saC5nZXRLZXlCZWZvcmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ2V0QmxvY2tNYXAoKS5yZXZlcnNlKCkua2V5U2VxKCkuc2tpcFVudGlsKChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWV9KSkuc2tpcCgxKS5maXJzdCgpfSxoLmdldEtleUFmdGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldEJsb2NrTWFwKCkua2V5U2VxKCkuc2tpcFVudGlsKChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWV9KSkuc2tpcCgxKS5maXJzdCgpfSxoLmdldEJsb2NrQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ2V0QmxvY2tNYXAoKS5za2lwVW50aWwoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG49PT1lfSkpLnNraXAoMSkuZmlyc3QoKX0saC5nZXRCbG9ja0JlZm9yZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5nZXRCbG9ja01hcCgpLnJldmVyc2UoKS5za2lwVW50aWwoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG49PT1lfSkpLnNraXAoMSkuZmlyc3QoKX0saC5nZXRCbG9ja3NBc0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QmxvY2tNYXAoKS50b0FycmF5KCl9LGguZ2V0Rmlyc3RCbG9jaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJsb2NrTWFwKCkuZmlyc3QoKX0saC5nZXRMYXN0QmxvY2s9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCbG9ja01hcCgpLmxhc3QoKX0saC5nZXRQbGFpblRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ2V0QmxvY2tNYXAoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZ2V0VGV4dCgpOiIifSkpLmpvaW4oZXx8IlxuIil9LGguZ2V0TGFzdENyZWF0ZWRFbnRpdHlLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdS5fX2dldExhc3RDcmVhdGVkRW50aXR5S2V5KCl9LGguaGFzVGV4dD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0QmxvY2tNYXAoKTtyZXR1cm4gZS5zaXplPjF8fGVzY2FwZShlLmZpcnN0KCkuZ2V0VGV4dCgpKS5yZXBsYWNlKC8ldTIwMEIvZywiIikubGVuZ3RoPjB9LGguY3JlYXRlRW50aXR5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdS5fX2NyZWF0ZShlLHQsbiksdGhpc30saC5tZXJnZUVudGl0eURhdGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdS5fX21lcmdlRGF0YShlLHQpLHRoaXN9LGgucmVwbGFjZUVudGl0eURhdGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdS5fX3JlcGxhY2VEYXRhKGUsdCksdGhpc30saC5hZGRFbnRpdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHUuX19hZGQoZSksdGhpc30saC5nZXRFbnRpdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHUuX19nZXQoZSl9LGYuY3JlYXRlRnJvbUJsb2NrQXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1BcnJheS5pc0FycmF5KGUpP2U6ZS5jb250ZW50QmxvY2tzLG89ci5jcmVhdGVGcm9tQXJyYXkobiksYT1vLmlzRW1wdHkoKT9uZXcgczpzLmNyZWF0ZUVtcHR5KG8uZmlyc3QoKS5nZXRLZXkoKSk7cmV0dXJuIG5ldyBmKHtibG9ja01hcDpvLGVudGl0eU1hcDp0fHx1LHNlbGVjdGlvbkJlZm9yZTphLHNlbGVjdGlvbkFmdGVyOmF9KX0sZi5jcmVhdGVGcm9tVGV4dD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06L1xyXG4/fFxuL2csbj1lLnNwbGl0KHQpLHI9bi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlPWQoZSksbmV3KGMoImRyYWZ0X3RyZWVfZGF0YV9zdXBwb3J0Iik/aTphKSh7a2V5OmwoKSx0ZXh0OmUsdHlwZToidW5zdHlsZWQiLGNoYXJhY3Rlckxpc3Q6cCh5KG8uRU1QVFksZS5sZW5ndGgpKX0pfSkpO3JldHVybiBmLmNyZWF0ZUZyb21CbG9ja0FycmF5KHIpfSxmfShoKHtlbnRpdHlNYXA6bnVsbCxibG9ja01hcDpudWxsLHNlbGVjdGlvbkJlZm9yZTpudWxsLHNlbGVjdGlvbkFmdGVyOm51bGx9KSk7ZS5leHBvcnRzPW19LEx2RGw6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlLHIpe3ZhciBvOyhmdW5jdGlvbigpe3ZhciBhPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIixpPSJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fIix1PVtbImFyeSIsMTI4XSxbImJpbmQiLDFdLFsiYmluZEtleSIsMl0sWyJjdXJyeSIsOF0sWyJjdXJyeVJpZ2h0IiwxNl0sWyJmbGlwIiw1MTJdLFsicGFydGlhbCIsMzJdLFsicGFydGlhbFJpZ2h0Iiw2NF0sWyJyZWFyZyIsMjU2XV0scz0iW29iamVjdCBBcmd1bWVudHNdIixsPSJbb2JqZWN0IEFycmF5XSIsYz0iW29iamVjdCBCb29sZWFuXSIsZj0iW29iamVjdCBEYXRlXSIsZD0iW29iamVjdCBFcnJvcl0iLHA9IltvYmplY3QgRnVuY3Rpb25dIixoPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseT0iW29iamVjdCBNYXBdIixtPSJbb2JqZWN0IE51bWJlcl0iLHY9IltvYmplY3QgT2JqZWN0XSIsZz0iW29iamVjdCBSZWdFeHBdIixiPSJbb2JqZWN0IFNldF0iLHc9IltvYmplY3QgU3RyaW5nXSIsXz0iW29iamVjdCBTeW1ib2xdIixFPSJbb2JqZWN0IFdlYWtNYXBdIixPPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsaz0iW29iamVjdCBEYXRhVmlld10iLEM9IltvYmplY3QgRmxvYXQzMkFycmF5XSIseD0iW29iamVjdCBGbG9hdDY0QXJyYXldIixTPSJbb2JqZWN0IEludDhBcnJheV0iLEQ9IltvYmplY3QgSW50MTZBcnJheV0iLFQ9IltvYmplY3QgSW50MzJBcnJheV0iLE09IltvYmplY3QgVWludDhBcnJheV0iLFA9IltvYmplY3QgVWludDE2QXJyYXldIixOPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsaj0vXGJfX3AgXCs9ICcnOy9nLEw9L1xiKF9fcCBcKz0pICcnIFwrL2csUj0vKF9fZVwoLio/XCl8XGJfX3RcKSkgXCtcbicnOy9nLEk9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLEE9L1smPD4iJ10vZyxGPVJlZ0V4cChJLnNvdXJjZSksQj1SZWdFeHAoQS5zb3VyY2UpLHo9LzwlLShbXHNcU10rPyklPi9nLEs9LzwlKFtcc1xTXSs/KSU+L2cscT0vPCU9KFtcc1xTXSs/KSU+L2csVj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxVPS9eXHcqJC8sVz0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxZPS9bXFxeJC4qKz8oKVtcXXt9fF0vZyxIPVJlZ0V4cChZLnNvdXJjZSksRz0vXlxzK3xccyskL2csUT0vXlxzKy8sSj0vXHMrJC8sWj0vXHsoPzpcblwvXCogXFt3cmFwcGVkIHdpdGggLitcXSBcKlwvKT9cbj8vLCQ9L1x7XG5cL1wqIFxbd3JhcHBlZCB3aXRoICguKylcXSBcKi8sWD0vLD8gJiAvLGVlPS9bXlx4MDAtXHgyZlx4M2EtXHg0MFx4NWItXHg2MFx4N2ItXHg3Zl0rL2csdGU9L1xcKFxcKT8vZyxuZT0vXCRceyhbXlxcfV0qKD86XFwuW15cXH1dKikqKVx9L2cscmU9L1x3KiQvLG9lPS9eWy0rXTB4WzAtOWEtZl0rJC9pLGFlPS9eMGJbMDFdKyQvaSxpZT0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyx1ZT0vXjBvWzAtN10rJC9pLHNlPS9eKD86MHxbMS05XVxkKikkLyxsZT0vW1x4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHhmZlx1MDEwMC1cdTAxN2ZdL2csY2U9LygkXikvLGZlPS9bJ1xuXHJcdTIwMjhcdTIwMjlcXF0vZyxkZT0iXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmIixwZT0iXFx4YWNcXHhiMVxceGQ3XFx4ZjdcXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHhiZlxcdTIwMDAtXFx1MjA2ZiBcXHRcXHgwYlxcZlxceGEwXFx1ZmVmZlxcblxcclxcdTIwMjhcXHUyMDI5XFx1MTY4MFxcdTE4MGVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMCIsaGU9IltcXHVkODAwLVxcdWRmZmZdIix5ZT0iWyIrcGUrIl0iLG1lPSJbIitkZSsiXSIsdmU9IlxcZCsiLGdlPSJbXFx1MjcwMC1cXHUyN2JmXSIsYmU9IlthLXpcXHhkZi1cXHhmNlxceGY4LVxceGZmXSIsd2U9IlteXFx1ZDgwMC1cXHVkZmZmIitwZSt2ZSsiXFx1MjcwMC1cXHUyN2JmYS16XFx4ZGYtXFx4ZjZcXHhmOC1cXHhmZkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdIixfZT0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixFZT0iW15cXHVkODAwLVxcdWRmZmZdIixPZT0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsa2U9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLENlPSJbQS1aXFx4YzAtXFx4ZDZcXHhkOC1cXHhkZV0iLHhlPSIoPzoiK2JlKyJ8Iit3ZSsiKSIsU2U9Iig/OiIrQ2UrInwiK3dlKyIpIixEZT0iKD86IittZSsifCIrX2UrIikiKyI/IixUZT0iW1xcdWZlMGVcXHVmZTBmXT8iK0RlKygiKD86XFx1MjAwZCg/OiIrW0VlLE9lLGtlXS5qb2luKCJ8IikrIilbXFx1ZmUwZVxcdWZlMGZdPyIrRGUrIikqIiksTWU9Iig/OiIrW2dlLE9lLGtlXS5qb2luKCJ8IikrIikiK1RlLFBlPSIoPzoiK1tFZSttZSsiPyIsbWUsT2Usa2UsaGVdLmpvaW4oInwiKSsiKSIsTmU9UmVnRXhwKCJbJ+KAmV0iLCJnIiksamU9UmVnRXhwKG1lLCJnIiksTGU9UmVnRXhwKF9lKyIoPz0iK19lKyIpfCIrUGUrVGUsImciKSxSZT1SZWdFeHAoW0NlKyI/IitiZSsiKyg/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT8oPz0iK1t5ZSxDZSwiJCJdLmpvaW4oInwiKSsiKSIsU2UrIisoPzpbJ+KAmV0oPzpEfExMfE18UkV8U3xUfFZFKSk/KD89IitbeWUsQ2UreGUsIiQiXS5qb2luKCJ8IikrIikiLENlKyI/Iit4ZSsiKyg/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT8iLENlKyIrKD86WyfigJldKD86RHxMTHxNfFJFfFN8VHxWRSkpPyIsIlxcZCooPzoxU1R8Mk5EfDNSRHwoPyFbMTIzXSlcXGRUSCkoPz1cXGJ8W2Etel9dKSIsIlxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXGR0aCkoPz1cXGJ8W0EtWl9dKSIsdmUsTWVdLmpvaW4oInwiKSwiZyIpLEllPVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmYiK2RlKyJcXHVmZTBlXFx1ZmUwZl0iKSxBZT0vW2Etel1bQS1aXXxbQS1aXXsyfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLyxGZT1bIkFycmF5IiwiQnVmZmVyIiwiRGF0YVZpZXciLCJEYXRlIiwiRXJyb3IiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJGdW5jdGlvbiIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiTWFwIiwiTWF0aCIsIk9iamVjdCIsIlByb21pc2UiLCJSZWdFeHAiLCJTZXQiLCJTdHJpbmciLCJTeW1ib2wiLCJUeXBlRXJyb3IiLCJVaW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiLCJVaW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiV2Vha01hcCIsIl8iLCJjbGVhclRpbWVvdXQiLCJpc0Zpbml0ZSIsInBhcnNlSW50Iiwic2V0VGltZW91dCJdLEJlPS0xLHplPXt9O3plW0NdPXplW3hdPXplW1NdPXplW0RdPXplW1RdPXplW01dPXplWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPXplW1BdPXplW05dPSEwLHplW3NdPXplW2xdPXplW09dPXplW2NdPXplW2tdPXplW2ZdPXplW2RdPXplW3BdPXplW3ldPXplW21dPXplW3ZdPXplW2ddPXplW2JdPXplW3ddPXplW0VdPSExO3ZhciBLZT17fTtLZVtzXT1LZVtsXT1LZVtPXT1LZVtrXT1LZVtjXT1LZVtmXT1LZVtDXT1LZVt4XT1LZVtTXT1LZVtEXT1LZVtUXT1LZVt5XT1LZVttXT1LZVt2XT1LZVtnXT1LZVtiXT1LZVt3XT1LZVtfXT1LZVtNXT1LZVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1LZVtQXT1LZVtOXT0hMCxLZVtkXT1LZVtwXT1LZVtFXT0hMTt2YXIgcWU9eyJcXCI6IlxcIiwiJyI6IiciLCJcbiI6Im4iLCJcciI6InIiLCJcdTIwMjgiOiJ1MjAyOCIsIlx1MjAyOSI6InUyMDI5In0sVmU9cGFyc2VGbG9hdCxVZT1wYXJzZUludCxXZT0ib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuT2JqZWN0PT09T2JqZWN0JiZlLFllPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsSGU9V2V8fFllfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLEdlPXQmJiF0Lm5vZGVUeXBlJiZ0LFFlPUdlJiYib2JqZWN0Ij09dHlwZW9mIHImJnImJiFyLm5vZGVUeXBlJiZyLEplPVFlJiZRZS5leHBvcnRzPT09R2UsWmU9SmUmJldlLnByb2Nlc3MsJGU9ZnVuY3Rpb24oKXt0cnl7dmFyIGU9UWUmJlFlLnJlcXVpcmUmJlFlLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gZXx8WmUmJlplLmJpbmRpbmcmJlplLmJpbmRpbmcoInV0aWwiKX1jYXRjaChlKXt9fSgpLFhlPSRlJiYkZS5pc0FycmF5QnVmZmVyLGV0PSRlJiYkZS5pc0RhdGUsdHQ9JGUmJiRlLmlzTWFwLG50PSRlJiYkZS5pc1JlZ0V4cCxydD0kZSYmJGUuaXNTZXQsb3Q9JGUmJiRlLmlzVHlwZWRBcnJheTtmdW5jdGlvbiBhdChlLHQsbil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGUuY2FsbCh0KTtjYXNlIDE6cmV0dXJuIGUuY2FsbCh0LG5bMF0pO2Nhc2UgMjpyZXR1cm4gZS5jYWxsKHQsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIGUuY2FsbCh0LG5bMF0sblsxXSxuWzJdKX1yZXR1cm4gZS5hcHBseSh0LG4pfWZ1bmN0aW9uIGl0KGUsdCxuLHIpe2Zvcih2YXIgbz0tMSxhPW51bGw9PWU/MDplLmxlbmd0aDsrK288YTspe3ZhciBpPWVbb107dChyLGksbihpKSxlKX1yZXR1cm4gcn1mdW5jdGlvbiB1dChlLHQpe2Zvcih2YXIgbj0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDsrK248ciYmITEhPT10KGVbbl0sbixlKTspO3JldHVybiBlfWZ1bmN0aW9uIHN0KGUsdCl7Zm9yKHZhciBuPW51bGw9PWU/MDplLmxlbmd0aDtuLS0mJiExIT09dChlW25dLG4sZSk7KTtyZXR1cm4gZX1mdW5jdGlvbiBsdChlLHQpe2Zvcih2YXIgbj0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDsrK248cjspaWYoIXQoZVtuXSxuLGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGN0KGUsdCl7Zm9yKHZhciBuPS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoLG89MCxhPVtdOysrbjxyOyl7dmFyIGk9ZVtuXTt0KGksbixlKSYmKGFbbysrXT1pKX1yZXR1cm4gYX1mdW5jdGlvbiBmdChlLHQpe3JldHVybiEhKG51bGw9PWU/MDplLmxlbmd0aCkmJl90KGUsdCwwKT4tMX1mdW5jdGlvbiBkdChlLHQsbil7Zm9yKHZhciByPS0xLG89bnVsbD09ZT8wOmUubGVuZ3RoOysrcjxvOylpZihuKHQsZVtyXSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcHQoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGgsbz1BcnJheShyKTsrK248cjspb1tuXT10KGVbbl0sbixlKTtyZXR1cm4gb31mdW5jdGlvbiBodChlLHQpe2Zvcih2YXIgbj0tMSxyPXQubGVuZ3RoLG89ZS5sZW5ndGg7KytuPHI7KWVbbytuXT10W25dO3JldHVybiBlfWZ1bmN0aW9uIHl0KGUsdCxuLHIpe3ZhciBvPS0xLGE9bnVsbD09ZT8wOmUubGVuZ3RoO2ZvcihyJiZhJiYobj1lWysrb10pOysrbzxhOyluPXQobixlW29dLG8sZSk7cmV0dXJuIG59ZnVuY3Rpb24gbXQoZSx0LG4scil7dmFyIG89bnVsbD09ZT8wOmUubGVuZ3RoO2ZvcihyJiZvJiYobj1lWy0tb10pO28tLTspbj10KG4sZVtvXSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIHZ0KGUsdCl7Zm9yKHZhciBuPS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxyOylpZih0KGVbbl0sbixlKSlyZXR1cm4hMDtyZXR1cm4hMX12YXIgZ3Q9Q3QoImxlbmd0aCIpO2Z1bmN0aW9uIGJ0KGUsdCxuKXt2YXIgcjtyZXR1cm4gbihlLChmdW5jdGlvbihlLG4sbyl7aWYodChlLG4sbykpcmV0dXJuIHI9biwhMX0pKSxyfWZ1bmN0aW9uIHd0KGUsdCxuLHIpe2Zvcih2YXIgbz1lLmxlbmd0aCxhPW4rKHI/MTotMSk7cj9hLS06KythPG87KWlmKHQoZVthXSxhLGUpKXJldHVybiBhO3JldHVybi0xfWZ1bmN0aW9uIF90KGUsdCxuKXtyZXR1cm4gdD09dD9mdW5jdGlvbihlLHQsbil7dmFyIHI9bi0xLG89ZS5sZW5ndGg7Zm9yKDsrK3I8bzspaWYoZVtyXT09PXQpcmV0dXJuIHI7cmV0dXJuLTF9KGUsdCxuKTp3dChlLE90LG4pfWZ1bmN0aW9uIEV0KGUsdCxuLHIpe2Zvcih2YXIgbz1uLTEsYT1lLmxlbmd0aDsrK288YTspaWYocihlW29dLHQpKXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIE90KGUpe3JldHVybiBlIT1lfWZ1bmN0aW9uIGt0KGUsdCl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiBuP0R0KGUsdCkvbjpOYU59ZnVuY3Rpb24gQ3QoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfX1mdW5jdGlvbiB4dChlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fWZ1bmN0aW9uIFN0KGUsdCxuLHIsbyl7cmV0dXJuIG8oZSwoZnVuY3Rpb24oZSxvLGEpe249cj8ocj0hMSxlKTp0KG4sZSxvLGEpfSkpLG59ZnVuY3Rpb24gRHQoZSx0KXtmb3IodmFyIG4scj0tMSxvPWUubGVuZ3RoOysrcjxvOyl7dmFyIGE9dChlW3JdKTt2b2lkIDAhPT1hJiYobj12b2lkIDA9PT1uP2E6bithKX1yZXR1cm4gbn1mdW5jdGlvbiBUdChlLHQpe2Zvcih2YXIgbj0tMSxyPUFycmF5KGUpOysrbjxlOylyW25dPXQobik7cmV0dXJuIHJ9ZnVuY3Rpb24gTXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX1mdW5jdGlvbiBQdChlLHQpe3JldHVybiBwdCh0LChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKX1mdW5jdGlvbiBOdChlLHQpe3JldHVybiBlLmhhcyh0KX1mdW5jdGlvbiBqdChlLHQpe2Zvcih2YXIgbj0tMSxyPWUubGVuZ3RoOysrbjxyJiZfdCh0LGVbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBMdChlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aDtuLS0mJl90KHQsZVtuXSwwKT4tMTspO3JldHVybiBufWZ1bmN0aW9uIFJ0KGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLHI9MDtuLS07KWVbbl09PT10JiYrK3I7cmV0dXJuIHJ9dmFyIEl0PXh0KHsiw4AiOiJBIiwiw4EiOiJBIiwiw4IiOiJBIiwiw4MiOiJBIiwiw4QiOiJBIiwiw4UiOiJBIiwiw6AiOiJhIiwiw6EiOiJhIiwiw6IiOiJhIiwiw6MiOiJhIiwiw6QiOiJhIiwiw6UiOiJhIiwiw4ciOiJDIiwiw6ciOiJjIiwiw5AiOiJEIiwiw7AiOiJkIiwiw4giOiJFIiwiw4kiOiJFIiwiw4oiOiJFIiwiw4siOiJFIiwiw6giOiJlIiwiw6kiOiJlIiwiw6oiOiJlIiwiw6siOiJlIiwiw4wiOiJJIiwiw40iOiJJIiwiw44iOiJJIiwiw48iOiJJIiwiw6wiOiJpIiwiw60iOiJpIiwiw64iOiJpIiwiw68iOiJpIiwiw5EiOiJOIiwiw7EiOiJuIiwiw5IiOiJPIiwiw5MiOiJPIiwiw5QiOiJPIiwiw5UiOiJPIiwiw5YiOiJPIiwiw5giOiJPIiwiw7IiOiJvIiwiw7MiOiJvIiwiw7QiOiJvIiwiw7UiOiJvIiwiw7YiOiJvIiwiw7giOiJvIiwiw5kiOiJVIiwiw5oiOiJVIiwiw5siOiJVIiwiw5wiOiJVIiwiw7kiOiJ1Iiwiw7oiOiJ1Iiwiw7siOiJ1Iiwiw7wiOiJ1Iiwiw50iOiJZIiwiw70iOiJ5Iiwiw78iOiJ5Iiwiw4YiOiJBZSIsIsOmIjoiYWUiLCLDniI6IlRoIiwiw74iOiJ0aCIsIsOfIjoic3MiLCLEgCI6IkEiLCLEgiI6IkEiLCLEhCI6IkEiLCLEgSI6ImEiLCLEgyI6ImEiLCLEhSI6ImEiLCLEhiI6IkMiLCLEiCI6IkMiLCLEiiI6IkMiLCLEjCI6IkMiLCLEhyI6ImMiLCLEiSI6ImMiLCLEiyI6ImMiLCLEjSI6ImMiLCLEjiI6IkQiLCLEkCI6IkQiLCLEjyI6ImQiLCLEkSI6ImQiLCLEkiI6IkUiLCLElCI6IkUiLCLEliI6IkUiLCLEmCI6IkUiLCLEmiI6IkUiLCLEkyI6ImUiLCLElSI6ImUiLCLElyI6ImUiLCLEmSI6ImUiLCLEmyI6ImUiLCLEnCI6IkciLCLEniI6IkciLCLEoCI6IkciLCLEoiI6IkciLCLEnSI6ImciLCLEnyI6ImciLCLEoSI6ImciLCLEoyI6ImciLCLEpCI6IkgiLCLEpiI6IkgiLCLEpSI6ImgiLCLEpyI6ImgiLCLEqCI6IkkiLCLEqiI6IkkiLCLErCI6IkkiLCLEriI6IkkiLCLEsCI6IkkiLCLEqSI6ImkiLCLEqyI6ImkiLCLErSI6ImkiLCLEryI6ImkiLCLEsSI6ImkiLCLEtCI6IkoiLCLEtSI6ImoiLCLEtiI6IksiLCLEtyI6ImsiLCLEuCI6ImsiLCLEuSI6IkwiLCLEuyI6IkwiLCLEvSI6IkwiLCLEvyI6IkwiLCLFgSI6IkwiLCLEuiI6ImwiLCLEvCI6ImwiLCLEviI6ImwiLCLFgCI6ImwiLCLFgiI6ImwiLCLFgyI6Ik4iLCLFhSI6Ik4iLCLFhyI6Ik4iLCLFiiI6Ik4iLCLFhCI6Im4iLCLFhiI6Im4iLCLFiCI6Im4iLCLFiyI6Im4iLCLFjCI6Ik8iLCLFjiI6Ik8iLCLFkCI6Ik8iLCLFjSI6Im8iLCLFjyI6Im8iLCLFkSI6Im8iLCLFlCI6IlIiLCLFliI6IlIiLCLFmCI6IlIiLCLFlSI6InIiLCLFlyI6InIiLCLFmSI6InIiLCLFmiI6IlMiLCLFnCI6IlMiLCLFniI6IlMiLCLFoCI6IlMiLCLFmyI6InMiLCLFnSI6InMiLCLFnyI6InMiLCLFoSI6InMiLCLFoiI6IlQiLCLFpCI6IlQiLCLFpiI6IlQiLCLFoyI6InQiLCLFpSI6InQiLCLFpyI6InQiLCLFqCI6IlUiLCLFqiI6IlUiLCLFrCI6IlUiLCLFriI6IlUiLCLFsCI6IlUiLCLFsiI6IlUiLCLFqSI6InUiLCLFqyI6InUiLCLFrSI6InUiLCLFryI6InUiLCLFsSI6InUiLCLFsyI6InUiLCLFtCI6IlciLCLFtSI6InciLCLFtiI6IlkiLCLFtyI6InkiLCLFuCI6IlkiLCLFuSI6IloiLCLFuyI6IloiLCLFvSI6IloiLCLFuiI6InoiLCLFvCI6InoiLCLFviI6InoiLCLEsiI6IklKIiwixLMiOiJpaiIsIsWSIjoiT2UiLCLFkyI6Im9lIiwixYkiOiInbiIsIsW/IjoicyJ9KSxBdD14dCh7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pO2Z1bmN0aW9uIEZ0KGUpe3JldHVybiJcXCIrcWVbZV19ZnVuY3Rpb24gQnQoZSl7cmV0dXJuIEllLnRlc3QoZSl9ZnVuY3Rpb24genQoZSl7dmFyIHQ9LTEsbj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUscil7blsrK3RdPVtyLGVdfSkpLG59ZnVuY3Rpb24gS3QoZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodChuKSl9fWZ1bmN0aW9uIHF0KGUsdCl7Zm9yKHZhciBuPS0xLHI9ZS5sZW5ndGgsbz0wLGE9W107KytuPHI7KXt2YXIgdT1lW25dO3UhPT10JiZ1IT09aXx8KGVbbl09aSxhW28rK109bil9cmV0dXJuIGF9ZnVuY3Rpb24gVnQoZSl7dmFyIHQ9LTEsbj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe25bKyt0XT1lfSkpLG59ZnVuY3Rpb24gVXQoZSl7dmFyIHQ9LTEsbj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe25bKyt0XT1bZSxlXX0pKSxufWZ1bmN0aW9uIFd0KGUpe3JldHVybiBCdChlKT9mdW5jdGlvbihlKXt2YXIgdD1MZS5sYXN0SW5kZXg9MDtmb3IoO0xlLnRlc3QoZSk7KSsrdDtyZXR1cm4gdH0oZSk6Z3QoZSl9ZnVuY3Rpb24gWXQoZSl7cmV0dXJuIEJ0KGUpP2Z1bmN0aW9uKGUpe3JldHVybiBlLm1hdGNoKExlKXx8W119KGUpOmZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCIiKX0oZSl9dmFyIEh0PXh0KHsiJmFtcDsiOiImIiwiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImIzM5OyI6IicifSk7dmFyIEd0PWZ1bmN0aW9uIGUodCl7dmFyIG4scj0odD1udWxsPT10P0hlOkd0LmRlZmF1bHRzKEhlLk9iamVjdCgpLHQsR3QucGljayhIZSxGZSkpKS5BcnJheSxvPXQuRGF0ZSxkZT10LkVycm9yLHBlPXQuRnVuY3Rpb24saGU9dC5NYXRoLHllPXQuT2JqZWN0LG1lPXQuUmVnRXhwLHZlPXQuU3RyaW5nLGdlPXQuVHlwZUVycm9yLGJlPXIucHJvdG90eXBlLHdlPXBlLnByb3RvdHlwZSxfZT15ZS5wcm90b3R5cGUsRWU9dFsiX19jb3JlLWpzX3NoYXJlZF9fIl0sT2U9d2UudG9TdHJpbmcsa2U9X2UuaGFzT3duUHJvcGVydHksQ2U9MCx4ZT0obj0vW14uXSskLy5leGVjKEVlJiZFZS5rZXlzJiZFZS5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrbjoiIixTZT1fZS50b1N0cmluZyxEZT1PZS5jYWxsKHllKSxUZT1IZS5fLE1lPW1lKCJeIitPZS5jYWxsKGtlKS5yZXBsYWNlKFksIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksUGU9SmU/dC5CdWZmZXI6dm9pZCAwLExlPXQuU3ltYm9sLEllPXQuVWludDhBcnJheSxxZT1QZT9QZS5hbGxvY1Vuc2FmZTp2b2lkIDAsV2U9S3QoeWUuZ2V0UHJvdG90eXBlT2YseWUpLFllPXllLmNyZWF0ZSxHZT1fZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxRZT1iZS5zcGxpY2UsWmU9TGU/TGUuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMCwkZT1MZT9MZS5pdGVyYXRvcjp2b2lkIDAsZ3Q9TGU/TGUudG9TdHJpbmdUYWc6dm9pZCAwLHh0PWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPWVhKHllLCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiBlKHt9LCIiLHt9KSxlfWNhdGNoKGUpe319KCksUXQ9dC5jbGVhclRpbWVvdXQhPT1IZS5jbGVhclRpbWVvdXQmJnQuY2xlYXJUaW1lb3V0LEp0PW8mJm8ubm93IT09SGUuRGF0ZS5ub3cmJm8ubm93LFp0PXQuc2V0VGltZW91dCE9PUhlLnNldFRpbWVvdXQmJnQuc2V0VGltZW91dCwkdD1oZS5jZWlsLFh0PWhlLmZsb29yLGVuPXllLmdldE93blByb3BlcnR5U3ltYm9scyx0bj1QZT9QZS5pc0J1ZmZlcjp2b2lkIDAsbm49dC5pc0Zpbml0ZSxybj1iZS5qb2luLG9uPUt0KHllLmtleXMseWUpLGFuPWhlLm1heCx1bj1oZS5taW4sc249by5ub3csbG49dC5wYXJzZUludCxjbj1oZS5yYW5kb20sZm49YmUucmV2ZXJzZSxkbj1lYSh0LCJEYXRhVmlldyIpLHBuPWVhKHQsIk1hcCIpLGhuPWVhKHQsIlByb21pc2UiKSx5bj1lYSh0LCJTZXQiKSxtbj1lYSh0LCJXZWFrTWFwIiksdm49ZWEoeWUsImNyZWF0ZSIpLGduPW1uJiZuZXcgbW4sYm49e30sd249U2EoZG4pLF9uPVNhKHBuKSxFbj1TYShobiksT249U2EoeW4pLGtuPVNhKG1uKSxDbj1MZT9MZS5wcm90b3R5cGU6dm9pZCAwLHhuPUNuP0NuLnZhbHVlT2Y6dm9pZCAwLFNuPUNuP0NuLnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBEbihlKXtpZihVaShlKSYmIWppKGUpJiYhKGUgaW5zdGFuY2VvZiBObikpe2lmKGUgaW5zdGFuY2VvZiBQbilyZXR1cm4gZTtpZihrZS5jYWxsKGUsIl9fd3JhcHBlZF9fIikpcmV0dXJuIERhKGUpfXJldHVybiBuZXcgUG4oZSl9dmFyIFRuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZnVuY3Rpb24odCl7aWYoIVZpKHQpKXJldHVybnt9O2lmKFllKXJldHVybiBZZSh0KTtlLnByb3RvdHlwZT10O3ZhciBuPW5ldyBlO3JldHVybiBlLnByb3RvdHlwZT12b2lkIDAsbn19KCk7ZnVuY3Rpb24gTW4oKXt9ZnVuY3Rpb24gUG4oZSx0KXt0aGlzLl9fd3JhcHBlZF9fPWUsdGhpcy5fX2FjdGlvbnNfXz1bXSx0aGlzLl9fY2hhaW5fXz0hIXQsdGhpcy5fX2luZGV4X189MCx0aGlzLl9fdmFsdWVzX189dm9pZCAwfWZ1bmN0aW9uIE5uKGUpe3RoaXMuX193cmFwcGVkX189ZSx0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19kaXJfXz0xLHRoaXMuX19maWx0ZXJlZF9fPSExLHRoaXMuX19pdGVyYXRlZXNfXz1bXSx0aGlzLl9fdGFrZUNvdW50X189NDI5NDk2NzI5NSx0aGlzLl9fdmlld3NfXz1bXX1mdW5jdGlvbiBqbihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBMbihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBSbihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxuOyl7dmFyIHI9ZVt0XTt0aGlzLnNldChyWzBdLHJbMV0pfX1mdW5jdGlvbiBJbihlKXt2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgUm47Kyt0PG47KXRoaXMuYWRkKGVbdF0pfWZ1bmN0aW9uIEFuKGUpe3ZhciB0PXRoaXMuX19kYXRhX189bmV3IExuKGUpO3RoaXMuc2l6ZT10LnNpemV9ZnVuY3Rpb24gRm4oZSx0KXt2YXIgbj1qaShlKSxyPSFuJiZOaShlKSxvPSFuJiYhciYmQWkoZSksYT0hbiYmIXImJiFvJiYkaShlKSxpPW58fHJ8fG98fGEsdT1pP1R0KGUubGVuZ3RoLHZlKTpbXSxzPXUubGVuZ3RoO2Zvcih2YXIgbCBpbiBlKSF0JiYha2UuY2FsbChlLGwpfHxpJiYoImxlbmd0aCI9PWx8fG8mJigib2Zmc2V0Ij09bHx8InBhcmVudCI9PWwpfHxhJiYoImJ1ZmZlciI9PWx8fCJieXRlTGVuZ3RoIj09bHx8ImJ5dGVPZmZzZXQiPT1sKXx8dWEobCxzKSl8fHUucHVzaChsKTtyZXR1cm4gdX1mdW5jdGlvbiBCbihlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gdD9lW0lyKDAsdC0xKV06dm9pZCAwfWZ1bmN0aW9uIHpuKGUsdCl7cmV0dXJuIGthKGdvKGUpLFFuKHQsMCxlLmxlbmd0aCkpfWZ1bmN0aW9uIEtuKGUpe3JldHVybiBrYShnbyhlKSl9ZnVuY3Rpb24gcW4oZSx0LG4peyh2b2lkIDA9PT1ufHxUaShlW3RdLG4pKSYmKHZvaWQgMCE9PW58fHQgaW4gZSl8fEhuKGUsdCxuKX1mdW5jdGlvbiBWbihlLHQsbil7dmFyIHI9ZVt0XTtrZS5jYWxsKGUsdCkmJlRpKHIsbikmJih2b2lkIDAhPT1ufHx0IGluIGUpfHxIbihlLHQsbil9ZnVuY3Rpb24gVW4oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGg7bi0tOylpZihUaShlW25dWzBdLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIFduKGUsdCxuLHIpe3JldHVybiBlcihlLChmdW5jdGlvbihlLG8sYSl7dChyLGUsbihlKSxhKX0pKSxyfWZ1bmN0aW9uIFluKGUsdCl7cmV0dXJuIGUmJmJvKHQsd3UodCksZSl9ZnVuY3Rpb24gSG4oZSx0LG4peyJfX3Byb3RvX18iPT10JiZ4dD94dChlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTplW3RdPW59ZnVuY3Rpb24gR24oZSx0KXtmb3IodmFyIG49LTEsbz10Lmxlbmd0aCxhPXIobyksaT1udWxsPT1lOysrbjxvOylhW25dPWk/dm9pZCAwOnl1KGUsdFtuXSk7cmV0dXJuIGF9ZnVuY3Rpb24gUW4oZSx0LG4pe3JldHVybiBlPT1lJiYodm9pZCAwIT09biYmKGU9ZTw9bj9lOm4pLHZvaWQgMCE9PXQmJihlPWU+PXQ/ZTp0KSksZX1mdW5jdGlvbiBKbihlLHQsbixyLG8sYSl7dmFyIGksdT0xJnQsbD0yJnQsZD00JnQ7aWYobiYmKGk9bz9uKGUscixvLGEpOm4oZSkpLHZvaWQgMCE9PWkpcmV0dXJuIGk7aWYoIVZpKGUpKXJldHVybiBlO3ZhciBFPWppKGUpO2lmKEUpe2lmKGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgsbj1uZXcgZS5jb25zdHJ1Y3Rvcih0KTt0JiYic3RyaW5nIj09dHlwZW9mIGVbMF0mJmtlLmNhbGwoZSwiaW5kZXgiKSYmKG4uaW5kZXg9ZS5pbmRleCxuLmlucHV0PWUuaW5wdXQpO3JldHVybiBufShlKSwhdSlyZXR1cm4gZ28oZSxpKX1lbHNle3ZhciBqPXJhKGUpLEw9aj09cHx8aj09aDtpZihBaShlKSlyZXR1cm4gZm8oZSx1KTtpZihqPT12fHxqPT1zfHxMJiYhbyl7aWYoaT1sfHxMP3t9OmFhKGUpLCF1KXJldHVybiBsP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGJvKGUsbmEoZSksdCl9KGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmYm8odCxfdSh0KSxlKX0oaSxlKSk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYm8oZSx0YShlKSx0KX0oZSxZbihpLGUpKX1lbHNle2lmKCFLZVtqXSlyZXR1cm4gbz9lOnt9O2k9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuY29uc3RydWN0b3I7c3dpdGNoKHQpe2Nhc2UgTzpyZXR1cm4gcG8oZSk7Y2FzZSBjOmNhc2UgZjpyZXR1cm4gbmV3IHIoK2UpO2Nhc2UgazpyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj10P3BvKGUuYnVmZmVyKTplLmJ1ZmZlcjtyZXR1cm4gbmV3IGUuY29uc3RydWN0b3IobixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKX0oZSxuKTtjYXNlIEM6Y2FzZSB4OmNhc2UgUzpjYXNlIEQ6Y2FzZSBUOmNhc2UgTTpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIFA6Y2FzZSBOOnJldHVybiBobyhlLG4pO2Nhc2UgeTpyZXR1cm4gbmV3IHI7Y2FzZSBtOmNhc2UgdzpyZXR1cm4gbmV3IHIoZSk7Y2FzZSBnOnJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1uZXcgZS5jb25zdHJ1Y3RvcihlLnNvdXJjZSxyZS5leGVjKGUpKTtyZXR1cm4gdC5sYXN0SW5kZXg9ZS5sYXN0SW5kZXgsdH0oZSk7Y2FzZSBiOnJldHVybiBuZXcgcjtjYXNlIF86cmV0dXJuIG89ZSx4bj95ZSh4bi5jYWxsKG8pKTp7fX12YXIgb30oZSxqLHUpfX1hfHwoYT1uZXcgQW4pO3ZhciBSPWEuZ2V0KGUpO2lmKFIpcmV0dXJuIFI7YS5zZXQoZSxpKSxRaShlKT9lLmZvckVhY2goKGZ1bmN0aW9uKHIpe2kuYWRkKEpuKHIsdCxuLHIsZSxhKSl9KSk6V2koZSkmJmUuZm9yRWFjaCgoZnVuY3Rpb24ocixvKXtpLnNldChvLEpuKHIsdCxuLG8sZSxhKSl9KSk7dmFyIEk9RT92b2lkIDA6KGQ/bD9IbzpZbzpsP191Ond1KShlKTtyZXR1cm4gdXQoSXx8ZSwoZnVuY3Rpb24ocixvKXtJJiYocj1lW289cl0pLFZuKGksbyxKbihyLHQsbixvLGUsYSkpfSkpLGl9ZnVuY3Rpb24gWm4oZSx0LG4pe3ZhciByPW4ubGVuZ3RoO2lmKG51bGw9PWUpcmV0dXJuIXI7Zm9yKGU9eWUoZSk7ci0tOyl7dmFyIG89bltyXSxhPXRbb10saT1lW29dO2lmKHZvaWQgMD09PWkmJiEobyBpbiBlKXx8IWEoaSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gJG4oZSx0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBnZShhKTtyZXR1cm4gd2EoKGZ1bmN0aW9uKCl7ZS5hcHBseSh2b2lkIDAsbil9KSx0KX1mdW5jdGlvbiBYbihlLHQsbixyKXt2YXIgbz0tMSxhPWZ0LGk9ITAsdT1lLmxlbmd0aCxzPVtdLGw9dC5sZW5ndGg7aWYoIXUpcmV0dXJuIHM7biYmKHQ9cHQodCxNdChuKSkpLHI/KGE9ZHQsaT0hMSk6dC5sZW5ndGg+PTIwMCYmKGE9TnQsaT0hMSx0PW5ldyBJbih0KSk7ZTpmb3IoOysrbzx1Oyl7dmFyIGM9ZVtvXSxmPW51bGw9PW4/YzpuKGMpO2lmKGM9cnx8MCE9PWM/YzowLGkmJmY9PWYpe2Zvcih2YXIgZD1sO2QtLTspaWYodFtkXT09PWYpY29udGludWUgZTtzLnB1c2goYyl9ZWxzZSBhKHQsZixyKXx8cy5wdXNoKGMpfXJldHVybiBzfURuLnRlbXBsYXRlU2V0dGluZ3M9e2VzY2FwZTp6LGV2YWx1YXRlOkssaW50ZXJwb2xhdGU6cSx2YXJpYWJsZToiIixpbXBvcnRzOntfOkRufX0sRG4ucHJvdG90eXBlPU1uLnByb3RvdHlwZSxEbi5wcm90b3R5cGUuY29uc3RydWN0b3I9RG4sUG4ucHJvdG90eXBlPVRuKE1uLnByb3RvdHlwZSksUG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPVBuLE5uLnByb3RvdHlwZT1UbihNbi5wcm90b3R5cGUpLE5uLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1Obixqbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXZuP3ZuKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxqbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaGFzKGUpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tlXTtyZXR1cm4gdGhpcy5zaXplLT10PzE6MCx0fSxqbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187aWYodm4pe3ZhciBuPXRbZV07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09bj92b2lkIDA6bn1yZXR1cm4ga2UuY2FsbCh0LGUpP3RbZV06dm9pZCAwfSxqbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIHZuP3ZvaWQgMCE9PXRbZV06a2UuY2FsbCh0LGUpfSxqbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhlKT8wOjEsbltlXT12biYmdm9pZCAwPT09dD8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6dCx0aGlzfSxMbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxMbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj1Vbih0LGUpO3JldHVybiEobjwwKSYmKG49PXQubGVuZ3RoLTE/dC5wb3AoKTpRZS5jYWxsKHQsbiwxKSwtLXRoaXMuc2l6ZSwhMCl9LExuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPVVuKHQsZSk7cmV0dXJuIG48MD92b2lkIDA6dFtuXVsxXX0sTG4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gVW4odGhpcy5fX2RhdGFfXyxlKT4tMX0sTG4ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19kYXRhX18scj1VbihuLGUpO3JldHVybiByPDA/KCsrdGhpcy5zaXplLG4ucHVzaChbZSx0XSkpOm5bcl1bMV09dCx0aGlzfSxSbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBqbixtYXA6bmV3KHBufHxMbiksc3RyaW5nOm5ldyBqbn19LFJuLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7dmFyIHQ9JG8odGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH0sUm4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gJG8odGhpcyxlKS5nZXQoZSl9LFJuLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuICRvKHRoaXMsZSkuaGFzKGUpfSxSbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49JG8odGhpcyxlKSxyPW4uc2l6ZTtyZXR1cm4gbi5zZXQoZSx0KSx0aGlzLnNpemUrPW4uc2l6ZT09cj8wOjEsdGhpc30sSW4ucHJvdG90eXBlLmFkZD1Jbi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQoZSwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LEluLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfSxBbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBMbix0aGlzLnNpemU9MH0sQW4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fLG49dC5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZT10LnNpemUsbn0sQW4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoZSl9LEFuLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfSxBbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXztpZihuIGluc3RhbmNlb2YgTG4pe3ZhciByPW4uX19kYXRhX187aWYoIXBufHxyLmxlbmd0aDwxOTkpcmV0dXJuIHIucHVzaChbZSx0XSksdGhpcy5zaXplPSsrbi5zaXplLHRoaXM7bj10aGlzLl9fZGF0YV9fPW5ldyBSbihyKX1yZXR1cm4gbi5zZXQoZSx0KSx0aGlzLnNpemU9bi5zaXplLHRoaXN9O3ZhciBlcj1FbyhzciksdHI9RW8obHIsITApO2Z1bmN0aW9uIG5yKGUsdCl7dmFyIG49ITA7cmV0dXJuIGVyKGUsKGZ1bmN0aW9uKGUscixvKXtyZXR1cm4gbj0hIXQoZSxyLG8pfSkpLG59ZnVuY3Rpb24gcnIoZSx0LG4pe2Zvcih2YXIgcj0tMSxvPWUubGVuZ3RoOysrcjxvOyl7dmFyIGE9ZVtyXSxpPXQoYSk7aWYobnVsbCE9aSYmKHZvaWQgMD09PXU/aT09aSYmIVppKGkpOm4oaSx1KSkpdmFyIHU9aSxzPWF9cmV0dXJuIHN9ZnVuY3Rpb24gb3IoZSx0KXt2YXIgbj1bXTtyZXR1cm4gZXIoZSwoZnVuY3Rpb24oZSxyLG8pe3QoZSxyLG8pJiZuLnB1c2goZSl9KSksbn1mdW5jdGlvbiBhcihlLHQsbixyLG8pe3ZhciBhPS0xLGk9ZS5sZW5ndGg7Zm9yKG58fChuPWlhKSxvfHwobz1bXSk7KythPGk7KXt2YXIgdT1lW2FdO3Q+MCYmbih1KT90PjE/YXIodSx0LTEsbixyLG8pOmh0KG8sdSk6cnx8KG9bby5sZW5ndGhdPXUpfXJldHVybiBvfXZhciBpcj1PbygpLHVyPU9vKCEwKTtmdW5jdGlvbiBzcihlLHQpe3JldHVybiBlJiZpcihlLHQsd3UpfWZ1bmN0aW9uIGxyKGUsdCl7cmV0dXJuIGUmJnVyKGUsdCx3dSl9ZnVuY3Rpb24gY3IoZSx0KXtyZXR1cm4gY3QodCwoZnVuY3Rpb24odCl7cmV0dXJuIHppKGVbdF0pfSkpfWZ1bmN0aW9uIGZyKGUsdCl7Zm9yKHZhciBuPTAscj0odD11byh0LGUpKS5sZW5ndGg7bnVsbCE9ZSYmbjxyOyllPWVbeGEodFtuKytdKV07cmV0dXJuIG4mJm49PXI/ZTp2b2lkIDB9ZnVuY3Rpb24gZHIoZSx0LG4pe3ZhciByPXQoZSk7cmV0dXJuIGppKGUpP3I6aHQocixuKGUpKX1mdW5jdGlvbiBwcihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA9PT1lPyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpndCYmZ3QgaW4geWUoZSk/ZnVuY3Rpb24oZSl7dmFyIHQ9a2UuY2FsbChlLGd0KSxuPWVbZ3RdO3RyeXtlW2d0XT12b2lkIDA7dmFyIHI9ITB9Y2F0Y2goZSl7fXZhciBvPVNlLmNhbGwoZSk7ciYmKHQ/ZVtndF09bjpkZWxldGUgZVtndF0pO3JldHVybiBvfShlKTpmdW5jdGlvbihlKXtyZXR1cm4gU2UuY2FsbChlKX0oZSl9ZnVuY3Rpb24gaHIoZSx0KXtyZXR1cm4gZT50fWZ1bmN0aW9uIHlyKGUsdCl7cmV0dXJuIG51bGwhPWUmJmtlLmNhbGwoZSx0KX1mdW5jdGlvbiBtcihlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIHllKGUpfWZ1bmN0aW9uIHZyKGUsdCxuKXtmb3IodmFyIG89bj9kdDpmdCxhPWVbMF0ubGVuZ3RoLGk9ZS5sZW5ndGgsdT1pLHM9cihpKSxsPTEvMCxjPVtdO3UtLTspe3ZhciBmPWVbdV07dSYmdCYmKGY9cHQoZixNdCh0KSkpLGw9dW4oZi5sZW5ndGgsbCksc1t1XT0hbiYmKHR8fGE+PTEyMCYmZi5sZW5ndGg+PTEyMCk/bmV3IEluKHUmJmYpOnZvaWQgMH1mPWVbMF07dmFyIGQ9LTEscD1zWzBdO2U6Zm9yKDsrK2Q8YSYmYy5sZW5ndGg8bDspe3ZhciBoPWZbZF0seT10P3QoaCk6aDtpZihoPW58fDAhPT1oP2g6MCwhKHA/TnQocCx5KTpvKGMseSxuKSkpe2Zvcih1PWk7LS11Oyl7dmFyIG09c1t1XTtpZighKG0/TnQobSx5KTpvKGVbdV0seSxuKSkpY29udGludWUgZX1wJiZwLnB1c2goeSksYy5wdXNoKGgpfX1yZXR1cm4gY31mdW5jdGlvbiBncihlLHQsbil7dmFyIHI9bnVsbD09KGU9bWEoZSx0PXVvKHQsZSkpKT9lOmVbeGEoQmEodCkpXTtyZXR1cm4gbnVsbD09cj92b2lkIDA6YXQocixlLG4pfWZ1bmN0aW9uIGJyKGUpe3JldHVybiBVaShlKSYmcHIoZSk9PXN9ZnVuY3Rpb24gd3IoZSx0LG4scixvKXtyZXR1cm4gZT09PXR8fChudWxsPT1lfHxudWxsPT10fHwhVWkoZSkmJiFVaSh0KT9lIT1lJiZ0IT10OmZ1bmN0aW9uKGUsdCxuLHIsbyxhKXt2YXIgaT1qaShlKSx1PWppKHQpLHA9aT9sOnJhKGUpLGg9dT9sOnJhKHQpLEU9KHA9cD09cz92OnApPT12LEM9KGg9aD09cz92OmgpPT12LHg9cD09aDtpZih4JiZBaShlKSl7aWYoIUFpKHQpKXJldHVybiExO2k9ITAsRT0hMX1pZih4JiYhRSlyZXR1cm4gYXx8KGE9bmV3IEFuKSxpfHwkaShlKT9VbyhlLHQsbixyLG8sYSk6ZnVuY3Rpb24oZSx0LG4scixvLGEsaSl7c3dpdGNoKG4pe2Nhc2UgazppZihlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8ZS5ieXRlT2Zmc2V0IT10LmJ5dGVPZmZzZXQpcmV0dXJuITE7ZT1lLmJ1ZmZlcix0PXQuYnVmZmVyO2Nhc2UgTzpyZXR1cm4hKGUuYnl0ZUxlbmd0aCE9dC5ieXRlTGVuZ3RofHwhYShuZXcgSWUoZSksbmV3IEllKHQpKSk7Y2FzZSBjOmNhc2UgZjpjYXNlIG06cmV0dXJuIFRpKCtlLCt0KTtjYXNlIGQ6cmV0dXJuIGUubmFtZT09dC5uYW1lJiZlLm1lc3NhZ2U9PXQubWVzc2FnZTtjYXNlIGc6Y2FzZSB3OnJldHVybiBlPT10KyIiO2Nhc2UgeTp2YXIgdT16dDtjYXNlIGI6dmFyIHM9MSZyO2lmKHV8fCh1PVZ0KSxlLnNpemUhPXQuc2l6ZSYmIXMpcmV0dXJuITE7dmFyIGw9aS5nZXQoZSk7aWYobClyZXR1cm4gbD09dDtyfD0yLGkuc2V0KGUsdCk7dmFyIHA9VW8odShlKSx1KHQpLHIsbyxhLGkpO3JldHVybiBpLmRlbGV0ZShlKSxwO2Nhc2UgXzppZih4bilyZXR1cm4geG4uY2FsbChlKT09eG4uY2FsbCh0KX1yZXR1cm4hMX0oZSx0LHAsbixyLG8sYSk7aWYoISgxJm4pKXt2YXIgUz1FJiZrZS5jYWxsKGUsIl9fd3JhcHBlZF9fIiksRD1DJiZrZS5jYWxsKHQsIl9fd3JhcHBlZF9fIik7aWYoU3x8RCl7dmFyIFQ9Uz9lLnZhbHVlKCk6ZSxNPUQ/dC52YWx1ZSgpOnQ7cmV0dXJuIGF8fChhPW5ldyBBbiksbyhULE0sbixyLGEpfX1pZigheClyZXR1cm4hMTtyZXR1cm4gYXx8KGE9bmV3IEFuKSxmdW5jdGlvbihlLHQsbixyLG8sYSl7dmFyIGk9MSZuLHU9WW8oZSkscz11Lmxlbmd0aCxsPVlvKHQpLmxlbmd0aDtpZihzIT1sJiYhaSlyZXR1cm4hMTt2YXIgYz1zO2Zvcig7Yy0tOyl7dmFyIGY9dVtjXTtpZighKGk/ZiBpbiB0OmtlLmNhbGwodCxmKSkpcmV0dXJuITF9dmFyIGQ9YS5nZXQoZSk7aWYoZCYmYS5nZXQodCkpcmV0dXJuIGQ9PXQ7dmFyIHA9ITA7YS5zZXQoZSx0KSxhLnNldCh0LGUpO3ZhciBoPWk7Zm9yKDsrK2M8czspe2Y9dVtjXTt2YXIgeT1lW2ZdLG09dFtmXTtpZihyKXZhciB2PWk/cihtLHksZix0LGUsYSk6cih5LG0sZixlLHQsYSk7aWYoISh2b2lkIDA9PT12P3k9PT1tfHxvKHksbSxuLHIsYSk6dikpe3A9ITE7YnJlYWt9aHx8KGg9ImNvbnN0cnVjdG9yIj09Zil9aWYocCYmIWgpe3ZhciBnPWUuY29uc3RydWN0b3IsYj10LmNvbnN0cnVjdG9yO2chPWImJiJjb25zdHJ1Y3RvciJpbiBlJiYiY29uc3RydWN0b3IiaW4gdCYmISgiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBiJiZiIGluc3RhbmNlb2YgYikmJihwPSExKX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUodCkscH0oZSx0LG4scixvLGEpfShlLHQsbixyLHdyLG8pKX1mdW5jdGlvbiBfcihlLHQsbixyKXt2YXIgbz1uLmxlbmd0aCxhPW8saT0hcjtpZihudWxsPT1lKXJldHVybiFhO2ZvcihlPXllKGUpO28tLTspe3ZhciB1PW5bb107aWYoaSYmdVsyXT91WzFdIT09ZVt1WzBdXTohKHVbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrbzxhOyl7dmFyIHM9KHU9bltvXSlbMF0sbD1lW3NdLGM9dVsxXTtpZihpJiZ1WzJdKXtpZih2b2lkIDA9PT1sJiYhKHMgaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgZj1uZXcgQW47aWYocil2YXIgZD1yKGwsYyxzLGUsdCxmKTtpZighKHZvaWQgMD09PWQ/d3IoYyxsLDMscixmKTpkKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gRXIoZSl7cmV0dXJuISghVmkoZSl8fCh0PWUseGUmJnhlIGluIHQpKSYmKHppKGUpP01lOmllKS50ZXN0KFNhKGUpKTt2YXIgdH1mdW5jdGlvbiBPcihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm51bGw9PWU/WXU6Im9iamVjdCI9PXR5cGVvZiBlP2ppKGUpP1RyKGVbMF0sZVsxXSk6RHIoZSk6dHMoZSl9ZnVuY3Rpb24ga3IoZSl7aWYoIWRhKGUpKXJldHVybiBvbihlKTt2YXIgdD1bXTtmb3IodmFyIG4gaW4geWUoZSkpa2UuY2FsbChlLG4pJiYiY29uc3RydWN0b3IiIT1uJiZ0LnB1c2gobik7cmV0dXJuIHR9ZnVuY3Rpb24gQ3IoZSl7aWYoIVZpKGUpKXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1bXTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiB5ZShlKSl0LnB1c2gobik7cmV0dXJuIHR9KGUpO3ZhciB0PWRhKGUpLG49W107Zm9yKHZhciByIGluIGUpKCJjb25zdHJ1Y3RvciIhPXJ8fCF0JiZrZS5jYWxsKGUscikpJiZuLnB1c2gocik7cmV0dXJuIG59ZnVuY3Rpb24geHIoZSx0KXtyZXR1cm4gZTx0fWZ1bmN0aW9uIFNyKGUsdCl7dmFyIG49LTEsbz1SaShlKT9yKGUubGVuZ3RoKTpbXTtyZXR1cm4gZXIoZSwoZnVuY3Rpb24oZSxyLGEpe29bKytuXT10KGUscixhKX0pKSxvfWZ1bmN0aW9uIERyKGUpe3ZhciB0PVhvKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT9oYSh0WzBdWzBdLHRbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09ZXx8X3IobixlLHQpfX1mdW5jdGlvbiBUcihlLHQpe3JldHVybiBsYShlKSYmcGEodCk/aGEoeGEoZSksdCk6ZnVuY3Rpb24obil7dmFyIHI9eXUobixlKTtyZXR1cm4gdm9pZCAwPT09ciYmcj09PXQ/bXUobixlKTp3cih0LHIsMyl9fWZ1bmN0aW9uIE1yKGUsdCxuLHIsbyl7ZSE9PXQmJmlyKHQsKGZ1bmN0aW9uKGEsaSl7aWYob3x8KG89bmV3IEFuKSxWaShhKSkhZnVuY3Rpb24oZSx0LG4scixvLGEsaSl7dmFyIHU9Z2EoZSxuKSxzPWdhKHQsbiksbD1pLmdldChzKTtpZihsKXJldHVybiB2b2lkIHFuKGUsbixsKTt2YXIgYz1hP2EodSxzLG4rIiIsZSx0LGkpOnZvaWQgMCxmPXZvaWQgMD09PWM7aWYoZil7dmFyIGQ9amkocykscD0hZCYmQWkocyksaD0hZCYmIXAmJiRpKHMpO2M9cyxkfHxwfHxoP2ppKHUpP2M9dTpJaSh1KT9jPWdvKHUpOnA/KGY9ITEsYz1mbyhzLCEwKSk6aD8oZj0hMSxjPWhvKHMsITApKTpjPVtdOkhpKHMpfHxOaShzKT8oYz11LE5pKHUpP2M9aXUodSk6VmkodSkmJiF6aSh1KXx8KGM9YWEocykpKTpmPSExfWYmJihpLnNldChzLGMpLG8oYyxzLHIsYSxpKSxpLmRlbGV0ZShzKSk7cW4oZSxuLGMpfShlLHQsaSxuLE1yLHIsbyk7ZWxzZXt2YXIgdT1yP3IoZ2EoZSxpKSxhLGkrIiIsZSx0LG8pOnZvaWQgMDt2b2lkIDA9PT11JiYodT1hKSxxbihlLGksdSl9fSksX3UpfWZ1bmN0aW9uIFByKGUsdCl7dmFyIG49ZS5sZW5ndGg7aWYobilyZXR1cm4gdWEodCs9dDwwP246MCxuKT9lW3RdOnZvaWQgMH1mdW5jdGlvbiBOcihlLHQsbil7dmFyIHI9LTE7cmV0dXJuIHQ9cHQodC5sZW5ndGg/dDpbWXVdLE10KFpvKCkpKSxmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoO2ZvcihlLnNvcnQodCk7bi0tOyllW25dPWVbbl0udmFsdWU7cmV0dXJuIGV9KFNyKGUsKGZ1bmN0aW9uKGUsbixvKXtyZXR1cm57Y3JpdGVyaWE6cHQodCwoZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9KSksaW5kZXg6KytyLHZhbHVlOmV9fSkpLChmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI9LTEsbz1lLmNyaXRlcmlhLGE9dC5jcml0ZXJpYSxpPW8ubGVuZ3RoLHU9bi5sZW5ndGg7Zm9yKDsrK3I8aTspe3ZhciBzPXlvKG9bcl0sYVtyXSk7aWYocyl7aWYocj49dSlyZXR1cm4gczt2YXIgbD1uW3JdO3JldHVybiBzKigiZGVzYyI9PWw/LTE6MSl9fXJldHVybiBlLmluZGV4LXQuaW5kZXh9KGUsdCxuKX0pKX1mdW5jdGlvbiBqcihlLHQsbil7Zm9yKHZhciByPS0xLG89dC5sZW5ndGgsYT17fTsrK3I8bzspe3ZhciBpPXRbcl0sdT1mcihlLGkpO24odSxpKSYmS3IoYSx1byhpLGUpLHUpfXJldHVybiBhfWZ1bmN0aW9uIExyKGUsdCxuLHIpe3ZhciBvPXI/RXQ6X3QsYT0tMSxpPXQubGVuZ3RoLHU9ZTtmb3IoZT09PXQmJih0PWdvKHQpKSxuJiYodT1wdChlLE10KG4pKSk7KythPGk7KWZvcih2YXIgcz0wLGw9dFthXSxjPW4/bihsKTpsOyhzPW8odSxjLHMscikpPi0xOyl1IT09ZSYmUWUuY2FsbCh1LHMsMSksUWUuY2FsbChlLHMsMSk7cmV0dXJuIGV9ZnVuY3Rpb24gUnIoZSx0KXtmb3IodmFyIG49ZT90Lmxlbmd0aDowLHI9bi0xO24tLTspe3ZhciBvPXRbbl07aWYobj09cnx8byE9PWEpe3ZhciBhPW87dWEobyk/UWUuY2FsbChlLG8sMSk6WHIoZSxvKX19cmV0dXJuIGV9ZnVuY3Rpb24gSXIoZSx0KXtyZXR1cm4gZStYdChjbigpKih0LWUrMSkpfWZ1bmN0aW9uIEFyKGUsdCl7dmFyIG49IiI7aWYoIWV8fHQ8MXx8dD45MDA3MTk5MjU0NzQwOTkxKXJldHVybiBuO2Rve3QlMiYmKG4rPWUpLCh0PVh0KHQvMikpJiYoZSs9ZSl9d2hpbGUodCk7cmV0dXJuIG59ZnVuY3Rpb24gRnIoZSx0KXtyZXR1cm4gX2EoeWEoZSx0LFl1KSxlKyIiKX1mdW5jdGlvbiBCcihlKXtyZXR1cm4gQm4oVHUoZSkpfWZ1bmN0aW9uIHpyKGUsdCl7dmFyIG49VHUoZSk7cmV0dXJuIGthKG4sUW4odCwwLG4ubGVuZ3RoKSl9ZnVuY3Rpb24gS3IoZSx0LG4scil7aWYoIVZpKGUpKXJldHVybiBlO2Zvcih2YXIgbz0tMSxhPSh0PXVvKHQsZSkpLmxlbmd0aCxpPWEtMSx1PWU7bnVsbCE9dSYmKytvPGE7KXt2YXIgcz14YSh0W29dKSxsPW47aWYobyE9aSl7dmFyIGM9dVtzXTt2b2lkIDA9PT0obD1yP3IoYyxzLHUpOnZvaWQgMCkmJihsPVZpKGMpP2M6dWEodFtvKzFdKT9bXTp7fSl9Vm4odSxzLGwpLHU9dVtzXX1yZXR1cm4gZX12YXIgcXI9Z24/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ24uc2V0KGUsdCksZX06WXUsVnI9eHQ/ZnVuY3Rpb24oZSx0KXtyZXR1cm4geHQoZSwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpWdSh0KSx3cml0YWJsZTohMH0pfTpZdTtmdW5jdGlvbiBVcihlKXtyZXR1cm4ga2EoVHUoZSkpfWZ1bmN0aW9uIFdyKGUsdCxuKXt2YXIgbz0tMSxhPWUubGVuZ3RoO3Q8MCYmKHQ9LXQ+YT8wOmErdCksKG49bj5hP2E6bik8MCYmKG4rPWEpLGE9dD5uPzA6bi10Pj4+MCx0Pj4+PTA7Zm9yKHZhciBpPXIoYSk7KytvPGE7KWlbb109ZVtvK3RdO3JldHVybiBpfWZ1bmN0aW9uIFlyKGUsdCl7dmFyIG47cmV0dXJuIGVyKGUsKGZ1bmN0aW9uKGUscixvKXtyZXR1cm4hKG49dChlLHIsbykpfSkpLCEhbn1mdW5jdGlvbiBIcihlLHQsbil7dmFyIHI9MCxvPW51bGw9PWU/cjplLmxlbmd0aDtpZigibnVtYmVyIj09dHlwZW9mIHQmJnQ9PXQmJm88PTIxNDc0ODM2NDcpe2Zvcig7cjxvOyl7dmFyIGE9citvPj4+MSxpPWVbYV07bnVsbCE9PWkmJiFaaShpKSYmKG4/aTw9dDppPHQpP3I9YSsxOm89YX1yZXR1cm4gb31yZXR1cm4gR3IoZSx0LFl1LG4pfWZ1bmN0aW9uIEdyKGUsdCxuLHIpe3Q9bih0KTtmb3IodmFyIG89MCxhPW51bGw9PWU/MDplLmxlbmd0aCxpPXQhPXQsdT1udWxsPT09dCxzPVppKHQpLGw9dm9pZCAwPT09dDtvPGE7KXt2YXIgYz1YdCgobythKS8yKSxmPW4oZVtjXSksZD12b2lkIDAhPT1mLHA9bnVsbD09PWYsaD1mPT1mLHk9WmkoZik7aWYoaSl2YXIgbT1yfHxoO2Vsc2UgbT1sP2gmJihyfHxkKTp1P2gmJmQmJihyfHwhcCk6cz9oJiZkJiYhcCYmKHJ8fCF5KTohcCYmIXkmJihyP2Y8PXQ6Zjx0KTttP289YysxOmE9Y31yZXR1cm4gdW4oYSw0Mjk0OTY3Mjk0KX1mdW5jdGlvbiBRcihlLHQpe2Zvcih2YXIgbj0tMSxyPWUubGVuZ3RoLG89MCxhPVtdOysrbjxyOyl7dmFyIGk9ZVtuXSx1PXQ/dChpKTppO2lmKCFufHwhVGkodSxzKSl7dmFyIHM9dTthW28rK109MD09PWk/MDppfX1yZXR1cm4gYX1mdW5jdGlvbiBKcihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/ZTpaaShlKT9OYU46K2V9ZnVuY3Rpb24gWnIoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2lmKGppKGUpKXJldHVybiBwdChlLFpyKSsiIjtpZihaaShlKSlyZXR1cm4gU24/U24uY2FsbChlKToiIjt2YXIgdD1lKyIiO3JldHVybiIwIj09dCYmMS9lPT0tMS8wPyItMCI6dH1mdW5jdGlvbiAkcihlLHQsbil7dmFyIHI9LTEsbz1mdCxhPWUubGVuZ3RoLGk9ITAsdT1bXSxzPXU7aWYobilpPSExLG89ZHQ7ZWxzZSBpZihhPj0yMDApe3ZhciBsPXQ/bnVsbDpGbyhlKTtpZihsKXJldHVybiBWdChsKTtpPSExLG89TnQscz1uZXcgSW59ZWxzZSBzPXQ/W106dTtlOmZvcig7KytyPGE7KXt2YXIgYz1lW3JdLGY9dD90KGMpOmM7aWYoYz1ufHwwIT09Yz9jOjAsaSYmZj09Zil7Zm9yKHZhciBkPXMubGVuZ3RoO2QtLTspaWYoc1tkXT09PWYpY29udGludWUgZTt0JiZzLnB1c2goZiksdS5wdXNoKGMpfWVsc2UgbyhzLGYsbil8fChzIT09dSYmcy5wdXNoKGYpLHUucHVzaChjKSl9cmV0dXJuIHV9ZnVuY3Rpb24gWHIoZSx0KXtyZXR1cm4gbnVsbD09KGU9bWEoZSx0PXVvKHQsZSkpKXx8ZGVsZXRlIGVbeGEoQmEodCkpXX1mdW5jdGlvbiBlbyhlLHQsbixyKXtyZXR1cm4gS3IoZSx0LG4oZnIoZSx0KSkscil9ZnVuY3Rpb24gdG8oZSx0LG4scil7Zm9yKHZhciBvPWUubGVuZ3RoLGE9cj9vOi0xOyhyP2EtLTorK2E8bykmJnQoZVthXSxhLGUpOyk7cmV0dXJuIG4/V3IoZSxyPzA6YSxyP2ErMTpvKTpXcihlLHI/YSsxOjAscj9vOmEpfWZ1bmN0aW9uIG5vKGUsdCl7dmFyIG49ZTtyZXR1cm4gbiBpbnN0YW5jZW9mIE5uJiYobj1uLnZhbHVlKCkpLHl0KHQsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZnVuYy5hcHBseSh0LnRoaXNBcmcsaHQoW2VdLHQuYXJncykpfSksbil9ZnVuY3Rpb24gcm8oZSx0LG4pe3ZhciBvPWUubGVuZ3RoO2lmKG88MilyZXR1cm4gbz8kcihlWzBdKTpbXTtmb3IodmFyIGE9LTEsaT1yKG8pOysrYTxvOylmb3IodmFyIHU9ZVthXSxzPS0xOysrczxvOylzIT1hJiYoaVthXT1YbihpW2FdfHx1LGVbc10sdCxuKSk7cmV0dXJuICRyKGFyKGksMSksdCxuKX1mdW5jdGlvbiBvbyhlLHQsbil7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGgsYT10Lmxlbmd0aCxpPXt9OysrcjxvOyl7dmFyIHU9cjxhP3Rbcl06dm9pZCAwO24oaSxlW3JdLHUpfXJldHVybiBpfWZ1bmN0aW9uIGFvKGUpe3JldHVybiBJaShlKT9lOltdfWZ1bmN0aW9uIGlvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WXV9ZnVuY3Rpb24gdW8oZSx0KXtyZXR1cm4gamkoZSk/ZTpsYShlLHQpP1tlXTpDYSh1dShlKSl9dmFyIHNvPUZyO2Z1bmN0aW9uIGxvKGUsdCxuKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gbj12b2lkIDA9PT1uP3I6biwhdCYmbj49cj9lOldyKGUsdCxuKX12YXIgY289UXR8fGZ1bmN0aW9uKGUpe3JldHVybiBIZS5jbGVhclRpbWVvdXQoZSl9O2Z1bmN0aW9uIGZvKGUsdCl7aWYodClyZXR1cm4gZS5zbGljZSgpO3ZhciBuPWUubGVuZ3RoLHI9cWU/cWUobik6bmV3IGUuY29uc3RydWN0b3Iobik7cmV0dXJuIGUuY29weShyKSxyfWZ1bmN0aW9uIHBvKGUpe3ZhciB0PW5ldyBlLmNvbnN0cnVjdG9yKGUuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBJZSh0KS5zZXQobmV3IEllKGUpKSx0fWZ1bmN0aW9uIGhvKGUsdCl7dmFyIG49dD9wbyhlLmJ1ZmZlcik6ZS5idWZmZXI7cmV0dXJuIG5ldyBlLmNvbnN0cnVjdG9yKG4sZS5ieXRlT2Zmc2V0LGUubGVuZ3RoKX1mdW5jdGlvbiB5byhlLHQpe2lmKGUhPT10KXt2YXIgbj12b2lkIDAhPT1lLHI9bnVsbD09PWUsbz1lPT1lLGE9WmkoZSksaT12b2lkIDAhPT10LHU9bnVsbD09PXQscz10PT10LGw9WmkodCk7aWYoIXUmJiFsJiYhYSYmZT50fHxhJiZpJiZzJiYhdSYmIWx8fHImJmkmJnN8fCFuJiZzfHwhbylyZXR1cm4gMTtpZighciYmIWEmJiFsJiZlPHR8fGwmJm4mJm8mJiFyJiYhYXx8dSYmbiYmb3x8IWkmJm98fCFzKXJldHVybi0xfXJldHVybiAwfWZ1bmN0aW9uIG1vKGUsdCxuLG8pe2Zvcih2YXIgYT0tMSxpPWUubGVuZ3RoLHU9bi5sZW5ndGgscz0tMSxsPXQubGVuZ3RoLGM9YW4oaS11LDApLGY9cihsK2MpLGQ9IW87KytzPGw7KWZbc109dFtzXTtmb3IoOysrYTx1OykoZHx8YTxpKSYmKGZbblthXV09ZVthXSk7Zm9yKDtjLS07KWZbcysrXT1lW2ErK107cmV0dXJuIGZ9ZnVuY3Rpb24gdm8oZSx0LG4sbyl7Zm9yKHZhciBhPS0xLGk9ZS5sZW5ndGgsdT0tMSxzPW4ubGVuZ3RoLGw9LTEsYz10Lmxlbmd0aCxmPWFuKGktcywwKSxkPXIoZitjKSxwPSFvOysrYTxmOylkW2FdPWVbYV07Zm9yKHZhciBoPWE7KytsPGM7KWRbaCtsXT10W2xdO2Zvcig7Kyt1PHM7KShwfHxhPGkpJiYoZFtoK25bdV1dPWVbYSsrXSk7cmV0dXJuIGR9ZnVuY3Rpb24gZ28oZSx0KXt2YXIgbj0tMSxvPWUubGVuZ3RoO2Zvcih0fHwodD1yKG8pKTsrK248bzspdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIGJvKGUsdCxuLHIpe3ZhciBvPSFuO258fChuPXt9KTtmb3IodmFyIGE9LTEsaT10Lmxlbmd0aDsrK2E8aTspe3ZhciB1PXRbYV0scz1yP3Ioblt1XSxlW3VdLHUsbixlKTp2b2lkIDA7dm9pZCAwPT09cyYmKHM9ZVt1XSksbz9IbihuLHUscyk6Vm4obix1LHMpfXJldHVybiBufWZ1bmN0aW9uIHdvKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89amkobik/aXQ6V24sYT10P3QoKTp7fTtyZXR1cm4gbyhuLGUsWm8ociwyKSxhKX19ZnVuY3Rpb24gX28oZSl7cmV0dXJuIEZyKChmdW5jdGlvbih0LG4pe3ZhciByPS0xLG89bi5sZW5ndGgsYT1vPjE/bltvLTFdOnZvaWQgMCxpPW8+Mj9uWzJdOnZvaWQgMDtmb3IoYT1lLmxlbmd0aD4zJiYiZnVuY3Rpb24iPT10eXBlb2YgYT8oby0tLGEpOnZvaWQgMCxpJiZzYShuWzBdLG5bMV0saSkmJihhPW88Mz92b2lkIDA6YSxvPTEpLHQ9eWUodCk7KytyPG87KXt2YXIgdT1uW3JdO3UmJmUodCx1LHIsYSl9cmV0dXJuIHR9KSl9ZnVuY3Rpb24gRW8oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXtpZihudWxsPT1uKXJldHVybiBuO2lmKCFSaShuKSlyZXR1cm4gZShuLHIpO2Zvcih2YXIgbz1uLmxlbmd0aCxhPXQ/bzotMSxpPXllKG4pOyh0P2EtLTorK2E8bykmJiExIT09cihpW2FdLGEsaSk7KTtyZXR1cm4gbn19ZnVuY3Rpb24gT28oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIG89LTEsYT15ZSh0KSxpPXIodCksdT1pLmxlbmd0aDt1LS07KXt2YXIgcz1pW2U/dTorK29dO2lmKCExPT09bihhW3NdLHMsYSkpYnJlYWt9cmV0dXJuIHR9fWZ1bmN0aW9uIGtvKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1CdCh0PXV1KHQpKT9ZdCh0KTp2b2lkIDAscj1uP25bMF06dC5jaGFyQXQoMCksbz1uP2xvKG4sMSkuam9pbigiIik6dC5zbGljZSgxKTtyZXR1cm4gcltlXSgpK299fWZ1bmN0aW9uIENvKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4geXQoenUoTnUodCkucmVwbGFjZShOZSwiIikpLGUsIiIpfX1mdW5jdGlvbiB4byhlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBlO2Nhc2UgMTpyZXR1cm4gbmV3IGUodFswXSk7Y2FzZSAyOnJldHVybiBuZXcgZSh0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSk7Y2FzZSA1OnJldHVybiBuZXcgZSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0pO2Nhc2UgNjpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0pO2Nhc2UgNzpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSl9dmFyIG49VG4oZS5wcm90b3R5cGUpLHI9ZS5hcHBseShuLHQpO3JldHVybiBWaShyKT9yOm59fWZ1bmN0aW9uIFNvKGUpe3JldHVybiBmdW5jdGlvbih0LG4scil7dmFyIG89eWUodCk7aWYoIVJpKHQpKXt2YXIgYT1abyhuLDMpO3Q9d3UodCksbj1mdW5jdGlvbihlKXtyZXR1cm4gYShvW2VdLGUsbyl9fXZhciBpPWUodCxuLHIpO3JldHVybiBpPi0xP29bYT90W2ldOmldOnZvaWQgMH19ZnVuY3Rpb24gRG8oZSl7cmV0dXJuIFdvKChmdW5jdGlvbih0KXt2YXIgbj10Lmxlbmd0aCxyPW4sbz1Qbi5wcm90b3R5cGUudGhydTtmb3IoZSYmdC5yZXZlcnNlKCk7ci0tOyl7dmFyIGk9dFtyXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgaSl0aHJvdyBuZXcgZ2UoYSk7aWYobyYmIXUmJiJ3cmFwcGVyIj09UW8oaSkpdmFyIHU9bmV3IFBuKFtdLCEwKX1mb3Iocj11P3I6bjsrK3I8bjspe3ZhciBzPVFvKGk9dFtyXSksbD0id3JhcHBlciI9PXM/R28oaSk6dm9pZCAwO3U9bCYmY2EobFswXSkmJjQyND09bFsxXSYmIWxbNF0ubGVuZ3RoJiYxPT1sWzldP3VbUW8obFswXSldLmFwcGx5KHUsbFszXSk6MT09aS5sZW5ndGgmJmNhKGkpP3Vbc10oKTp1LnRocnUoaSl9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHI9ZVswXTtpZih1JiYxPT1lLmxlbmd0aCYmamkocikpcmV0dXJuIHUucGxhbnQocikudmFsdWUoKTtmb3IodmFyIG89MCxhPW4/dFtvXS5hcHBseSh0aGlzLGUpOnI7KytvPG47KWE9dFtvXS5jYWxsKHRoaXMsYSk7cmV0dXJuIGF9fSkpfWZ1bmN0aW9uIFRvKGUsdCxuLG8sYSxpLHUscyxsLGMpe3ZhciBmPTEyOCZ0LGQ9MSZ0LHA9MiZ0LGg9MjQmdCx5PTUxMiZ0LG09cD92b2lkIDA6eG8oZSk7cmV0dXJuIGZ1bmN0aW9uIHYoKXtmb3IodmFyIGc9YXJndW1lbnRzLmxlbmd0aCxiPXIoZyksdz1nO3ctLTspYlt3XT1hcmd1bWVudHNbd107aWYoaCl2YXIgXz1Kbyh2KSxFPVJ0KGIsXyk7aWYobyYmKGI9bW8oYixvLGEsaCkpLGkmJihiPXZvKGIsaSx1LGgpKSxnLT1FLGgmJmc8Yyl7dmFyIE89cXQoYixfKTtyZXR1cm4gSW8oZSx0LFRvLHYucGxhY2Vob2xkZXIsbixiLE8scyxsLGMtZyl9dmFyIGs9ZD9uOnRoaXMsQz1wP2tbZV06ZTtyZXR1cm4gZz1iLmxlbmd0aCxzP2I9dmEoYixzKTp5JiZnPjEmJmIucmV2ZXJzZSgpLGYmJmw8ZyYmKGIubGVuZ3RoPWwpLHRoaXMmJnRoaXMhPT1IZSYmdGhpcyBpbnN0YW5jZW9mIHYmJihDPW18fHhvKEMpKSxDLmFwcGx5KGssYil9fWZ1bmN0aW9uIE1vKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBzcihlLChmdW5jdGlvbihlLG8sYSl7dChyLG4oZSksbyxhKX0pKSxyfShuLGUsdChyKSx7fSl9fWZ1bmN0aW9uIFBvKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG87aWYodm9pZCAwPT09biYmdm9pZCAwPT09cilyZXR1cm4gdDtpZih2b2lkIDAhPT1uJiYobz1uKSx2b2lkIDAhPT1yKXtpZih2b2lkIDA9PT1vKXJldHVybiByOyJzdHJpbmciPT10eXBlb2Ygbnx8InN0cmluZyI9PXR5cGVvZiByPyhuPVpyKG4pLHI9WnIocikpOihuPUpyKG4pLHI9SnIocikpLG89ZShuLHIpfXJldHVybiBvfX1mdW5jdGlvbiBObyhlKXtyZXR1cm4gV28oKGZ1bmN0aW9uKHQpe3JldHVybiB0PXB0KHQsTXQoWm8oKSkpLEZyKChmdW5jdGlvbihuKXt2YXIgcj10aGlzO3JldHVybiBlKHQsKGZ1bmN0aW9uKGUpe3JldHVybiBhdChlLHIsbil9KSl9KSl9KSl9ZnVuY3Rpb24gam8oZSx0KXt2YXIgbj0odD12b2lkIDA9PT10PyIgIjpacih0KSkubGVuZ3RoO2lmKG48MilyZXR1cm4gbj9Bcih0LGUpOnQ7dmFyIHI9QXIodCwkdChlL1d0KHQpKSk7cmV0dXJuIEJ0KHQpP2xvKFl0KHIpLDAsZSkuam9pbigiIik6ci5zbGljZSgwLGUpfWZ1bmN0aW9uIExvKGUpe3JldHVybiBmdW5jdGlvbih0LG4sbyl7cmV0dXJuIG8mJiJudW1iZXIiIT10eXBlb2YgbyYmc2EodCxuLG8pJiYobj1vPXZvaWQgMCksdD1udSh0KSx2b2lkIDA9PT1uPyhuPXQsdD0wKTpuPW51KG4pLGZ1bmN0aW9uKGUsdCxuLG8pe2Zvcih2YXIgYT0tMSxpPWFuKCR0KCh0LWUpLyhufHwxKSksMCksdT1yKGkpO2ktLTspdVtvP2k6KythXT1lLGUrPW47cmV0dXJuIHV9KHQsbixvPXZvaWQgMD09PW8/dDxuPzE6LTE6bnUobyksZSl9fWZ1bmN0aW9uIFJvKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmInN0cmluZyI9PXR5cGVvZiBufHwodD1hdSh0KSxuPWF1KG4pKSxlKHQsbil9fWZ1bmN0aW9uIElvKGUsdCxuLHIsbyxhLGksdSxzLGwpe3ZhciBjPTgmdDt0fD1jPzMyOjY0LDQmKHQmPX4oYz82NDozMikpfHwodCY9LTQpO3ZhciBmPVtlLHQsbyxjP2E6dm9pZCAwLGM/aTp2b2lkIDAsYz92b2lkIDA6YSxjP3ZvaWQgMDppLHUscyxsXSxkPW4uYXBwbHkodm9pZCAwLGYpO3JldHVybiBjYShlKSYmYmEoZCxmKSxkLnBsYWNlaG9sZGVyPXIsRWEoZCxlLHQpfWZ1bmN0aW9uIEFvKGUpe3ZhciB0PWhlW2VdO3JldHVybiBmdW5jdGlvbihlLG4pe2lmKGU9YXUoZSksKG49bnVsbD09bj8wOnVuKHJ1KG4pLDI5MikpJiZubihlKSl7dmFyIHI9KHV1KGUpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChyPSh1dSh0KHJbMF0rImUiKygrclsxXStuKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrclsxXS1uKSl9cmV0dXJuIHQoZSl9fXZhciBGbz15biYmMS9WdChuZXcgeW4oWywtMF0pKVsxXT09MS8wP2Z1bmN0aW9uKGUpe3JldHVybiBuZXcgeW4oZSl9Olp1O2Z1bmN0aW9uIEJvKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1yYSh0KTtyZXR1cm4gbj09eT96dCh0KTpuPT1iP1V0KHQpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHB0KHQsKGZ1bmN0aW9uKHQpe3JldHVyblt0LGVbdF1dfSkpfSh0LGUodCkpfX1mdW5jdGlvbiB6byhlLHQsbixvLHUscyxsLGMpe3ZhciBmPTImdDtpZighZiYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGdlKGEpO3ZhciBkPW8/by5sZW5ndGg6MDtpZihkfHwodCY9LTk3LG89dT12b2lkIDApLGw9dm9pZCAwPT09bD9sOmFuKHJ1KGwpLDApLGM9dm9pZCAwPT09Yz9jOnJ1KGMpLGQtPXU/dS5sZW5ndGg6MCw2NCZ0KXt2YXIgcD1vLGg9dTtvPXU9dm9pZCAwfXZhciB5PWY/dm9pZCAwOkdvKGUpLG09W2UsdCxuLG8sdSxwLGgscyxsLGNdO2lmKHkmJmZ1bmN0aW9uKGUsdCl7dmFyIG49ZVsxXSxyPXRbMV0sbz1ufHIsYT1vPDEzMSx1PTEyOD09ciYmOD09bnx8MTI4PT1yJiYyNTY9PW4mJmVbN10ubGVuZ3RoPD10WzhdfHwzODQ9PXImJnRbN10ubGVuZ3RoPD10WzhdJiY4PT1uO2lmKCFhJiYhdSlyZXR1cm4gZTsxJnImJihlWzJdPXRbMl0sb3w9MSZuPzA6NCk7dmFyIHM9dFszXTtpZihzKXt2YXIgbD1lWzNdO2VbM109bD9tbyhsLHMsdFs0XSk6cyxlWzRdPWw/cXQoZVszXSxpKTp0WzRdfShzPXRbNV0pJiYobD1lWzVdLGVbNV09bD92byhsLHMsdFs2XSk6cyxlWzZdPWw/cXQoZVs1XSxpKTp0WzZdKTsocz10WzddKSYmKGVbN109cyk7MTI4JnImJihlWzhdPW51bGw9PWVbOF0/dFs4XTp1bihlWzhdLHRbOF0pKTtudWxsPT1lWzldJiYoZVs5XT10WzldKTtlWzBdPXRbMF0sZVsxXT1vfShtLHkpLGU9bVswXSx0PW1bMV0sbj1tWzJdLG89bVszXSx1PW1bNF0sIShjPW1bOV09dm9pZCAwPT09bVs5XT9mPzA6ZS5sZW5ndGg6YW4obVs5XS1kLDApKSYmMjQmdCYmKHQmPS0yNSksdCYmMSE9dCl2PTg9PXR8fDE2PT10P2Z1bmN0aW9uKGUsdCxuKXt2YXIgbz14byhlKTtyZXR1cm4gZnVuY3Rpb24gYSgpe2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLHU9cihpKSxzPWksbD1KbyhhKTtzLS07KXVbc109YXJndW1lbnRzW3NdO3ZhciBjPWk8MyYmdVswXSE9PWwmJnVbaS0xXSE9PWw/W106cXQodSxsKTtpZigoaS09Yy5sZW5ndGgpPG4pcmV0dXJuIElvKGUsdCxUbyxhLnBsYWNlaG9sZGVyLHZvaWQgMCx1LGMsdm9pZCAwLHZvaWQgMCxuLWkpO3ZhciBmPXRoaXMmJnRoaXMhPT1IZSYmdGhpcyBpbnN0YW5jZW9mIGE/bzplO3JldHVybiBhdChmLHRoaXMsdSl9fShlLHQsYyk6MzIhPXQmJjMzIT10fHx1Lmxlbmd0aD9Uby5hcHBseSh2b2lkIDAsbSk6ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGE9MSZ0LGk9eG8oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtmb3IodmFyIHU9LTEscz1hcmd1bWVudHMubGVuZ3RoLGw9LTEsYz1vLmxlbmd0aCxmPXIoYytzKSxkPXRoaXMmJnRoaXMhPT1IZSYmdGhpcyBpbnN0YW5jZW9mIHQ/aTplOysrbDxjOylmW2xdPW9bbF07Zm9yKDtzLS07KWZbbCsrXT1hcmd1bWVudHNbKyt1XTtyZXR1cm4gYXQoZCxhP246dGhpcyxmKX19KGUsdCxuLG8pO2Vsc2UgdmFyIHY9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPTEmdCxvPXhvKGUpO3JldHVybiBmdW5jdGlvbiB0KCl7dmFyIGE9dGhpcyYmdGhpcyE9PUhlJiZ0aGlzIGluc3RhbmNlb2YgdD9vOmU7cmV0dXJuIGEuYXBwbHkocj9uOnRoaXMsYXJndW1lbnRzKX19KGUsdCxuKTtyZXR1cm4gRWEoKHk/cXI6YmEpKHYsbSksZSx0KX1mdW5jdGlvbiBLbyhlLHQsbixyKXtyZXR1cm4gdm9pZCAwPT09ZXx8VGkoZSxfZVtuXSkmJiFrZS5jYWxsKHIsbik/dDplfWZ1bmN0aW9uIHFvKGUsdCxuLHIsbyxhKXtyZXR1cm4gVmkoZSkmJlZpKHQpJiYoYS5zZXQodCxlKSxNcihlLHQsdm9pZCAwLHFvLGEpLGEuZGVsZXRlKHQpKSxlfWZ1bmN0aW9uIFZvKGUpe3JldHVybiBIaShlKT92b2lkIDA6ZX1mdW5jdGlvbiBVbyhlLHQsbixyLG8sYSl7dmFyIGk9MSZuLHU9ZS5sZW5ndGgscz10Lmxlbmd0aDtpZih1IT1zJiYhKGkmJnM+dSkpcmV0dXJuITE7dmFyIGw9YS5nZXQoZSk7aWYobCYmYS5nZXQodCkpcmV0dXJuIGw9PXQ7dmFyIGM9LTEsZj0hMCxkPTImbj9uZXcgSW46dm9pZCAwO2ZvcihhLnNldChlLHQpLGEuc2V0KHQsZSk7KytjPHU7KXt2YXIgcD1lW2NdLGg9dFtjXTtpZihyKXZhciB5PWk/cihoLHAsYyx0LGUsYSk6cihwLGgsYyxlLHQsYSk7aWYodm9pZCAwIT09eSl7aWYoeSljb250aW51ZTtmPSExO2JyZWFrfWlmKGQpe2lmKCF2dCh0LChmdW5jdGlvbihlLHQpe2lmKCFOdChkLHQpJiYocD09PWV8fG8ocCxlLG4scixhKSkpcmV0dXJuIGQucHVzaCh0KX0pKSl7Zj0hMTticmVha319ZWxzZSBpZihwIT09aCYmIW8ocCxoLG4scixhKSl7Zj0hMTticmVha319cmV0dXJuIGEuZGVsZXRlKGUpLGEuZGVsZXRlKHQpLGZ9ZnVuY3Rpb24gV28oZSl7cmV0dXJuIF9hKHlhKGUsdm9pZCAwLExhKSxlKyIiKX1mdW5jdGlvbiBZbyhlKXtyZXR1cm4gZHIoZSx3dSx0YSl9ZnVuY3Rpb24gSG8oZSl7cmV0dXJuIGRyKGUsX3UsbmEpfXZhciBHbz1nbj9mdW5jdGlvbihlKXtyZXR1cm4gZ24uZ2V0KGUpfTpadTtmdW5jdGlvbiBRbyhlKXtmb3IodmFyIHQ9ZS5uYW1lKyIiLG49Ym5bdF0scj1rZS5jYWxsKGJuLHQpP24ubGVuZ3RoOjA7ci0tOyl7dmFyIG89bltyXSxhPW8uZnVuYztpZihudWxsPT1hfHxhPT1lKXJldHVybiBvLm5hbWV9cmV0dXJuIHR9ZnVuY3Rpb24gSm8oZSl7cmV0dXJuKGtlLmNhbGwoRG4sInBsYWNlaG9sZGVyIik/RG46ZSkucGxhY2Vob2xkZXJ9ZnVuY3Rpb24gWm8oKXt2YXIgZT1Ebi5pdGVyYXRlZXx8SHU7cmV0dXJuIGU9ZT09PUh1P09yOmUsYXJndW1lbnRzLmxlbmd0aD9lKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOmV9ZnVuY3Rpb24gJG8oZSx0KXt2YXIgbixyLG89ZS5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShyPXR5cGVvZihuPXQpKXx8Im51bWJlciI9PXJ8fCJzeW1ib2wiPT1yfHwiYm9vbGVhbiI9PXI/Il9fcHJvdG9fXyIhPT1uOm51bGw9PT1uKT9vWyJzdHJpbmciPT10eXBlb2YgdD8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIFhvKGUpe2Zvcih2YXIgdD13dShlKSxuPXQubGVuZ3RoO24tLTspe3ZhciByPXRbbl0sbz1lW3JdO3Rbbl09W3IsbyxwYShvKV19cmV0dXJuIHR9ZnVuY3Rpb24gZWEoZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfShlLHQpO3JldHVybiBFcihuKT9uOnZvaWQgMH12YXIgdGE9ZW4/ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/W106KGU9eWUoZSksY3QoZW4oZSksKGZ1bmN0aW9uKHQpe3JldHVybiBHZS5jYWxsKGUsdCl9KSkpfTpvcyxuYT1lbj9mdW5jdGlvbihlKXtmb3IodmFyIHQ9W107ZTspaHQodCx0YShlKSksZT1XZShlKTtyZXR1cm4gdH06b3MscmE9cHI7ZnVuY3Rpb24gb2EoZSx0LG4pe2Zvcih2YXIgcj0tMSxvPSh0PXVvKHQsZSkpLmxlbmd0aCxhPSExOysrcjxvOyl7dmFyIGk9eGEodFtyXSk7aWYoIShhPW51bGwhPWUmJm4oZSxpKSkpYnJlYWs7ZT1lW2ldfXJldHVybiBhfHwrK3IhPW8/YTohIShvPW51bGw9PWU/MDplLmxlbmd0aCkmJnFpKG8pJiZ1YShpLG8pJiYoamkoZSl8fE5pKGUpKX1mdW5jdGlvbiBhYShlKXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZS5jb25zdHJ1Y3Rvcnx8ZGEoZSk/e306VG4oV2UoZSkpfWZ1bmN0aW9uIGlhKGUpe3JldHVybiBqaShlKXx8TmkoZSl8fCEhKFplJiZlJiZlW1plXSl9ZnVuY3Rpb24gdWEoZSx0KXt2YXIgbj10eXBlb2YgZTtyZXR1cm4hISh0PW51bGw9PXQ/OTAwNzE5OTI1NDc0MDk5MTp0KSYmKCJudW1iZXIiPT1ufHwic3ltYm9sIiE9biYmc2UudGVzdChlKSkmJmU+LTEmJmUlMT09MCYmZTx0fWZ1bmN0aW9uIHNhKGUsdCxuKXtpZighVmkobikpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISEoIm51bWJlciI9PXI/UmkobikmJnVhKHQsbi5sZW5ndGgpOiJzdHJpbmciPT1yJiZ0IGluIG4pJiZUaShuW3RdLGUpfWZ1bmN0aW9uIGxhKGUsdCl7aWYoamkoZSkpcmV0dXJuITE7dmFyIG49dHlwZW9mIGU7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9ZSYmIVppKGUpKXx8KFUudGVzdChlKXx8IVYudGVzdChlKXx8bnVsbCE9dCYmZSBpbiB5ZSh0KSl9ZnVuY3Rpb24gY2EoZSl7dmFyIHQ9UW8oZSksbj1Eblt0XTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbnx8ISh0IGluIE5uLnByb3RvdHlwZSkpcmV0dXJuITE7aWYoZT09PW4pcmV0dXJuITA7dmFyIHI9R28obik7cmV0dXJuISFyJiZlPT09clswXX0oZG4mJnJhKG5ldyBkbihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9a3x8cG4mJnJhKG5ldyBwbikhPXl8fGhuJiYiW29iamVjdCBQcm9taXNlXSIhPXJhKGhuLnJlc29sdmUoKSl8fHluJiZyYShuZXcgeW4pIT1ifHxtbiYmcmEobmV3IG1uKSE9RSkmJihyYT1mdW5jdGlvbihlKXt2YXIgdD1wcihlKSxuPXQ9PXY/ZS5jb25zdHJ1Y3Rvcjp2b2lkIDAscj1uP1NhKG4pOiIiO2lmKHIpc3dpdGNoKHIpe2Nhc2Ugd246cmV0dXJuIGs7Y2FzZSBfbjpyZXR1cm4geTtjYXNlIEVuOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIE9uOnJldHVybiBiO2Nhc2Uga246cmV0dXJuIEV9cmV0dXJuIHR9KTt2YXIgZmE9RWU/emk6YXM7ZnVuY3Rpb24gZGEoZSl7dmFyIHQ9ZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4gZT09PSgiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5wcm90b3R5cGV8fF9lKX1mdW5jdGlvbiBwYShlKXtyZXR1cm4gZT09ZSYmIVZpKGUpfWZ1bmN0aW9uIGhhKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiYobltlXT09PXQmJih2b2lkIDAhPT10fHxlIGluIHllKG4pKSl9fWZ1bmN0aW9uIHlhKGUsdCxuKXtyZXR1cm4gdD1hbih2b2lkIDA9PT10P2UubGVuZ3RoLTE6dCwwKSxmdW5jdGlvbigpe2Zvcih2YXIgbz1hcmd1bWVudHMsYT0tMSxpPWFuKG8ubGVuZ3RoLXQsMCksdT1yKGkpOysrYTxpOyl1W2FdPW9bdCthXTthPS0xO2Zvcih2YXIgcz1yKHQrMSk7KythPHQ7KXNbYV09b1thXTtyZXR1cm4gc1t0XT1uKHUpLGF0KGUsdGhpcyxzKX19ZnVuY3Rpb24gbWEoZSx0KXtyZXR1cm4gdC5sZW5ndGg8Mj9lOmZyKGUsV3IodCwwLC0xKSl9ZnVuY3Rpb24gdmEoZSx0KXtmb3IodmFyIG49ZS5sZW5ndGgscj11bih0Lmxlbmd0aCxuKSxvPWdvKGUpO3ItLTspe3ZhciBhPXRbcl07ZVtyXT11YShhLG4pP29bYV06dm9pZCAwfXJldHVybiBlfWZ1bmN0aW9uIGdhKGUsdCl7aWYoKCJjb25zdHJ1Y3RvciIhPT10fHwiZnVuY3Rpb24iIT10eXBlb2YgZVt0XSkmJiJfX3Byb3RvX18iIT10KXJldHVybiBlW3RdfXZhciBiYT1PYShxciksd2E9WnR8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEhlLnNldFRpbWVvdXQoZSx0KX0sX2E9T2EoVnIpO2Z1bmN0aW9uIEVhKGUsdCxuKXt2YXIgcj10KyIiO3JldHVybiBfYShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5sZW5ndGg7aWYoIW4pcmV0dXJuIGU7dmFyIHI9bi0xO3JldHVybiB0W3JdPShuPjE/IiYgIjoiIikrdFtyXSx0PXQuam9pbihuPjI/IiwgIjoiICIpLGUucmVwbGFjZShaLCJ7XG4vKiBbd3JhcHBlZCB3aXRoICIrdCsiXSAqL1xuIil9KHIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdXQodSwoZnVuY3Rpb24obil7dmFyIHI9Il8uIituWzBdO3QmblsxXSYmIWZ0KGUscikmJmUucHVzaChyKX0pKSxlLnNvcnQoKX0oZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgkKTtyZXR1cm4gdD90WzFdLnNwbGl0KFgpOltdfShyKSxuKSkpfWZ1bmN0aW9uIE9hKGUpe3ZhciB0PTAsbj0wO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXNuKCksbz0xNi0oci1uKTtpZihuPXIsbz4wKXtpZigrK3Q+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgdD0wO3JldHVybiBlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX1mdW5jdGlvbiBrYShlLHQpe3ZhciBuPS0xLHI9ZS5sZW5ndGgsbz1yLTE7Zm9yKHQ9dm9pZCAwPT09dD9yOnQ7KytuPHQ7KXt2YXIgYT1JcihuLG8pLGk9ZVthXTtlW2FdPWVbbl0sZVtuXT1pfXJldHVybiBlLmxlbmd0aD10LGV9dmFyIENhPWZ1bmN0aW9uKGUpe3ZhciB0PU9pKGUsKGZ1bmN0aW9uKGUpe3JldHVybiA1MDA9PT1uLnNpemUmJm4uY2xlYXIoKSxlfSkpLG49dC5jYWNoZTtyZXR1cm4gdH0oKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoVywoZnVuY3Rpb24oZSxuLHIsbyl7dC5wdXNoKHI/by5yZXBsYWNlKHRlLCIkMSIpOm58fGUpfSkpLHR9KSk7ZnVuY3Rpb24geGEoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlfHxaaShlKSlyZXR1cm4gZTt2YXIgdD1lKyIiO3JldHVybiIwIj09dCYmMS9lPT0tMS8wPyItMCI6dH1mdW5jdGlvbiBTYShlKXtpZihudWxsIT1lKXt0cnl7cmV0dXJuIE9lLmNhbGwoZSl9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gZSsiIn1jYXRjaChlKXt9fXJldHVybiIifWZ1bmN0aW9uIERhKGUpe2lmKGUgaW5zdGFuY2VvZiBObilyZXR1cm4gZS5jbG9uZSgpO3ZhciB0PW5ldyBQbihlLl9fd3JhcHBlZF9fLGUuX19jaGFpbl9fKTtyZXR1cm4gdC5fX2FjdGlvbnNfXz1nbyhlLl9fYWN0aW9uc19fKSx0Ll9faW5kZXhfXz1lLl9faW5kZXhfXyx0Ll9fdmFsdWVzX189ZS5fX3ZhbHVlc19fLHR9dmFyIFRhPUZyKChmdW5jdGlvbihlLHQpe3JldHVybiBJaShlKT9YbihlLGFyKHQsMSxJaSwhMCkpOltdfSkpLE1hPUZyKChmdW5jdGlvbihlLHQpe3ZhciBuPUJhKHQpO3JldHVybiBJaShuKSYmKG49dm9pZCAwKSxJaShlKT9YbihlLGFyKHQsMSxJaSwhMCksWm8obiwyKSk6W119KSksUGE9RnIoKGZ1bmN0aW9uKGUsdCl7dmFyIG49QmEodCk7cmV0dXJuIElpKG4pJiYobj12b2lkIDApLElpKGUpP1huKGUsYXIodCwxLElpLCEwKSx2b2lkIDAsbik6W119KSk7ZnVuY3Rpb24gTmEoZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1udWxsPT1uPzA6cnUobik7cmV0dXJuIG88MCYmKG89YW4ocitvLDApKSx3dChlLFpvKHQsMyksbyl9ZnVuY3Rpb24gamEoZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1yLTE7cmV0dXJuIHZvaWQgMCE9PW4mJihvPXJ1KG4pLG89bjwwP2FuKHIrbywwKTp1bihvLHItMSkpLHd0KGUsWm8odCwzKSxvLCEwKX1mdW5jdGlvbiBMYShlKXtyZXR1cm4obnVsbD09ZT8wOmUubGVuZ3RoKT9hcihlLDEpOltdfWZ1bmN0aW9uIFJhKGUpe3JldHVybiBlJiZlLmxlbmd0aD9lWzBdOnZvaWQgMH12YXIgSWE9RnIoKGZ1bmN0aW9uKGUpe3ZhciB0PXB0KGUsYW8pO3JldHVybiB0Lmxlbmd0aCYmdFswXT09PWVbMF0/dnIodCk6W119KSksQWE9RnIoKGZ1bmN0aW9uKGUpe3ZhciB0PUJhKGUpLG49cHQoZSxhbyk7cmV0dXJuIHQ9PT1CYShuKT90PXZvaWQgMDpuLnBvcCgpLG4ubGVuZ3RoJiZuWzBdPT09ZVswXT92cihuLFpvKHQsMikpOltdfSkpLEZhPUZyKChmdW5jdGlvbihlKXt2YXIgdD1CYShlKSxuPXB0KGUsYW8pO3JldHVybih0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwKSYmbi5wb3AoKSxuLmxlbmd0aCYmblswXT09PWVbMF0/dnIobix2b2lkIDAsdCk6W119KSk7ZnVuY3Rpb24gQmEoZSl7dmFyIHQ9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiB0P2VbdC0xXTp2b2lkIDB9dmFyIHphPUZyKEthKTtmdW5jdGlvbiBLYShlLHQpe3JldHVybiBlJiZlLmxlbmd0aCYmdCYmdC5sZW5ndGg/THIoZSx0KTplfXZhciBxYT1XbygoZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGgscj1HbihlLHQpO3JldHVybiBScihlLHB0KHQsKGZ1bmN0aW9uKGUpe3JldHVybiB1YShlLG4pPytlOmV9KSkuc29ydCh5bykpLHJ9KSk7ZnVuY3Rpb24gVmEoZSl7cmV0dXJuIG51bGw9PWU/ZTpmbi5jYWxsKGUpfXZhciBVYT1GcigoZnVuY3Rpb24oZSl7cmV0dXJuICRyKGFyKGUsMSxJaSwhMCkpfSkpLFdhPUZyKChmdW5jdGlvbihlKXt2YXIgdD1CYShlKTtyZXR1cm4gSWkodCkmJih0PXZvaWQgMCksJHIoYXIoZSwxLElpLCEwKSxabyh0LDIpKX0pKSxZYT1GcigoZnVuY3Rpb24oZSl7dmFyIHQ9QmEoZSk7cmV0dXJuIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2b2lkIDAsJHIoYXIoZSwxLElpLCEwKSx2b2lkIDAsdCl9KSk7ZnVuY3Rpb24gSGEoZSl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm5bXTt2YXIgdD0wO3JldHVybiBlPWN0KGUsKGZ1bmN0aW9uKGUpe2lmKElpKGUpKXJldHVybiB0PWFuKGUubGVuZ3RoLHQpLCEwfSkpLFR0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiBwdChlLEN0KHQpKX0pKX1mdW5jdGlvbiBHYShlLHQpe2lmKCFlfHwhZS5sZW5ndGgpcmV0dXJuW107dmFyIG49SGEoZSk7cmV0dXJuIG51bGw9PXQ/bjpwdChuLChmdW5jdGlvbihlKXtyZXR1cm4gYXQodCx2b2lkIDAsZSl9KSl9dmFyIFFhPUZyKChmdW5jdGlvbihlLHQpe3JldHVybiBJaShlKT9YbihlLHQpOltdfSkpLEphPUZyKChmdW5jdGlvbihlKXtyZXR1cm4gcm8oY3QoZSxJaSkpfSkpLFphPUZyKChmdW5jdGlvbihlKXt2YXIgdD1CYShlKTtyZXR1cm4gSWkodCkmJih0PXZvaWQgMCkscm8oY3QoZSxJaSksWm8odCwyKSl9KSksJGE9RnIoKGZ1bmN0aW9uKGUpe3ZhciB0PUJhKGUpO3JldHVybiB0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwLHJvKGN0KGUsSWkpLHZvaWQgMCx0KX0pKSxYYT1GcihIYSk7dmFyIGVpPUZyKChmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxuPXQ+MT9lW3QtMV06dm9pZCAwO3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuPyhlLnBvcCgpLG4pOnZvaWQgMCxHYShlLG4pfSkpO2Z1bmN0aW9uIHRpKGUpe3ZhciB0PURuKGUpO3JldHVybiB0Ll9fY2hhaW5fXz0hMCx0fWZ1bmN0aW9uIG5pKGUsdCl7cmV0dXJuIHQoZSl9dmFyIHJpPVdvKChmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxuPXQ/ZVswXTowLHI9dGhpcy5fX3dyYXBwZWRfXyxvPWZ1bmN0aW9uKHQpe3JldHVybiBHbih0LGUpfTtyZXR1cm4hKHQ+MXx8dGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpJiZyIGluc3RhbmNlb2YgTm4mJnVhKG4pPygocj1yLnNsaWNlKG4sK24rKHQ/MTowKSkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6bmksYXJnczpbb10sdGhpc0FyZzp2b2lkIDB9KSxuZXcgUG4ocix0aGlzLl9fY2hhaW5fXykudGhydSgoZnVuY3Rpb24oZSl7cmV0dXJuIHQmJiFlLmxlbmd0aCYmZS5wdXNoKHZvaWQgMCksZX0pKSk6dGhpcy50aHJ1KG8pfSkpO3ZhciBvaT13bygoZnVuY3Rpb24oZSx0LG4pe2tlLmNhbGwoZSxuKT8rK2Vbbl06SG4oZSxuLDEpfSkpO3ZhciBhaT1TbyhOYSksaWk9U28oamEpO2Z1bmN0aW9uIHVpKGUsdCl7cmV0dXJuKGppKGUpP3V0OmVyKShlLFpvKHQsMykpfWZ1bmN0aW9uIHNpKGUsdCl7cmV0dXJuKGppKGUpP3N0OnRyKShlLFpvKHQsMykpfXZhciBsaT13bygoZnVuY3Rpb24oZSx0LG4pe2tlLmNhbGwoZSxuKT9lW25dLnB1c2godCk6SG4oZSxuLFt0XSl9KSk7dmFyIGNpPUZyKChmdW5jdGlvbihlLHQsbil7dmFyIG89LTEsYT0iZnVuY3Rpb24iPT10eXBlb2YgdCxpPVJpKGUpP3IoZS5sZW5ndGgpOltdO3JldHVybiBlcihlLChmdW5jdGlvbihlKXtpWysrb109YT9hdCh0LGUsbik6Z3IoZSx0LG4pfSkpLGl9KSksZmk9d28oKGZ1bmN0aW9uKGUsdCxuKXtIbihlLG4sdCl9KSk7ZnVuY3Rpb24gZGkoZSx0KXtyZXR1cm4oamkoZSk/cHQ6U3IpKGUsWm8odCwzKSl9dmFyIHBpPXdvKChmdW5jdGlvbihlLHQsbil7ZVtuPzA6MV0ucHVzaCh0KX0pLChmdW5jdGlvbigpe3JldHVybltbXSxbXV19KSk7dmFyIGhpPUZyKChmdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJuW107dmFyIG49dC5sZW5ndGg7cmV0dXJuIG4+MSYmc2EoZSx0WzBdLHRbMV0pP3Q9W106bj4yJiZzYSh0WzBdLHRbMV0sdFsyXSkmJih0PVt0WzBdXSksTnIoZSxhcih0LDEpLFtdKX0pKSx5aT1KdHx8ZnVuY3Rpb24oKXtyZXR1cm4gSGUuRGF0ZS5ub3coKX07ZnVuY3Rpb24gbWkoZSx0LG4pe3JldHVybiB0PW4/dm9pZCAwOnQsem8oZSwxMjgsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHQ9ZSYmbnVsbD09dD9lLmxlbmd0aDp0KX1mdW5jdGlvbiB2aShlLHQpe3ZhciBuO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBnZShhKTtyZXR1cm4gZT1ydShlKSxmdW5jdGlvbigpe3JldHVybi0tZT4wJiYobj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZTw9MSYmKHQ9dm9pZCAwKSxufX12YXIgZ2k9RnIoKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0xO2lmKG4ubGVuZ3RoKXt2YXIgbz1xdChuLEpvKGdpKSk7cnw9MzJ9cmV0dXJuIHpvKGUscix0LG4sbyl9KSksYmk9RnIoKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zO2lmKG4ubGVuZ3RoKXt2YXIgbz1xdChuLEpvKGJpKSk7cnw9MzJ9cmV0dXJuIHpvKHQscixlLG4sbyl9KSk7ZnVuY3Rpb24gd2koZSx0LG4pe3ZhciByLG8saSx1LHMsbCxjPTAsZj0hMSxkPSExLHA9ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGdlKGEpO2Z1bmN0aW9uIGgodCl7dmFyIG49cixhPW87cmV0dXJuIHI9bz12b2lkIDAsYz10LHU9ZS5hcHBseShhLG4pfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIGM9ZSxzPXdhKHYsdCksZj9oKGUpOnV9ZnVuY3Rpb24gbShlKXt2YXIgbj1lLWw7cmV0dXJuIHZvaWQgMD09PWx8fG4+PXR8fG48MHx8ZCYmZS1jPj1pfWZ1bmN0aW9uIHYoKXt2YXIgZT15aSgpO2lmKG0oZSkpcmV0dXJuIGcoZSk7cz13YSh2LGZ1bmN0aW9uKGUpe3ZhciBuPXQtKGUtbCk7cmV0dXJuIGQ/dW4obixpLShlLWMpKTpufShlKSl9ZnVuY3Rpb24gZyhlKXtyZXR1cm4gcz12b2lkIDAscCYmcj9oKGUpOihyPW89dm9pZCAwLHUpfWZ1bmN0aW9uIGIoKXt2YXIgZT15aSgpLG49bShlKTtpZihyPWFyZ3VtZW50cyxvPXRoaXMsbD1lLG4pe2lmKHZvaWQgMD09PXMpcmV0dXJuIHkobCk7aWYoZClyZXR1cm4gY28ocykscz13YSh2LHQpLGgobCl9cmV0dXJuIHZvaWQgMD09PXMmJihzPXdhKHYsdCkpLHV9cmV0dXJuIHQ9YXUodCl8fDAsVmkobikmJihmPSEhbi5sZWFkaW5nLGk9KGQ9Im1heFdhaXQiaW4gbik/YW4oYXUobi5tYXhXYWl0KXx8MCx0KTppLHA9InRyYWlsaW5nImluIG4/ISFuLnRyYWlsaW5nOnApLGIuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09cyYmY28ocyksYz0wLHI9bD1vPXM9dm9pZCAwfSxiLmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXM/dTpnKHlpKCkpfSxifXZhciBfaT1GcigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gJG4oZSwxLHQpfSkpLEVpPUZyKChmdW5jdGlvbihlLHQsbil7cmV0dXJuICRuKGUsYXUodCl8fDAsbil9KSk7ZnVuY3Rpb24gT2koZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IGdlKGEpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLG89dD90LmFwcGx5KHRoaXMscik6clswXSxhPW4uY2FjaGU7aWYoYS5oYXMobykpcmV0dXJuIGEuZ2V0KG8pO3ZhciBpPWUuYXBwbHkodGhpcyxyKTtyZXR1cm4gbi5jYWNoZT1hLnNldChvLGkpfHxhLGl9O3JldHVybiBuLmNhY2hlPW5ldyhPaS5DYWNoZXx8Um4pLG59ZnVuY3Rpb24ga2koZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGdlKGEpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cztzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hZS5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4hZS5jYWxsKHRoaXMsdFswXSk7Y2FzZSAyOnJldHVybiFlLmNhbGwodGhpcyx0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4hZS5jYWxsKHRoaXMsdFswXSx0WzFdLHRbMl0pfXJldHVybiFlLmFwcGx5KHRoaXMsdCl9fU9pLkNhY2hlPVJuO3ZhciBDaT1zbygoZnVuY3Rpb24oZSx0KXt2YXIgbj0odD0xPT10Lmxlbmd0aCYmamkodFswXSk/cHQodFswXSxNdChabygpKSk6cHQoYXIodCwxKSxNdChabygpKSkpLmxlbmd0aDtyZXR1cm4gRnIoKGZ1bmN0aW9uKHIpe2Zvcih2YXIgbz0tMSxhPXVuKHIubGVuZ3RoLG4pOysrbzxhOylyW29dPXRbb10uY2FsbCh0aGlzLHJbb10pO3JldHVybiBhdChlLHRoaXMscil9KSl9KSkseGk9RnIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHpvKGUsMzIsdm9pZCAwLHQscXQodCxKbyh4aSkpKX0pKSxTaT1GcigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gem8oZSw2NCx2b2lkIDAsdCxxdCh0LEpvKFNpKSkpfSkpLERpPVdvKChmdW5jdGlvbihlLHQpe3JldHVybiB6byhlLDI1Nix2b2lkIDAsdm9pZCAwLHZvaWQgMCx0KX0pKTtmdW5jdGlvbiBUaShlLHQpe3JldHVybiBlPT09dHx8ZSE9ZSYmdCE9dH12YXIgTWk9Um8oaHIpLFBpPVJvKChmdW5jdGlvbihlLHQpe3JldHVybiBlPj10fSkpLE5pPWJyKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/YnI6ZnVuY3Rpb24oZSl7cmV0dXJuIFVpKGUpJiZrZS5jYWxsKGUsImNhbGxlZSIpJiYhR2UuY2FsbChlLCJjYWxsZWUiKX0samk9ci5pc0FycmF5LExpPVhlP010KFhlKTpmdW5jdGlvbihlKXtyZXR1cm4gVWkoZSkmJnByKGUpPT1PfTtmdW5jdGlvbiBSaShlKXtyZXR1cm4gbnVsbCE9ZSYmcWkoZS5sZW5ndGgpJiYhemkoZSl9ZnVuY3Rpb24gSWkoZSl7cmV0dXJuIFVpKGUpJiZSaShlKX12YXIgQWk9dG58fGFzLEZpPWV0P010KGV0KTpmdW5jdGlvbihlKXtyZXR1cm4gVWkoZSkmJnByKGUpPT1mfTtmdW5jdGlvbiBCaShlKXtpZighVWkoZSkpcmV0dXJuITE7dmFyIHQ9cHIoZSk7cmV0dXJuIHQ9PWR8fCJbb2JqZWN0IERPTUV4Y2VwdGlvbl0iPT10fHwic3RyaW5nIj09dHlwZW9mIGUubWVzc2FnZSYmInN0cmluZyI9PXR5cGVvZiBlLm5hbWUmJiFIaShlKX1mdW5jdGlvbiB6aShlKXtpZighVmkoZSkpcmV0dXJuITE7dmFyIHQ9cHIoZSk7cmV0dXJuIHQ9PXB8fHQ9PWh8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09dHx8IltvYmplY3QgUHJveHldIj09dH1mdW5jdGlvbiBLaShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJmU9PXJ1KGUpfWZ1bmN0aW9uIHFpKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmZT4tMSYmZSUxPT0wJiZlPD05MDA3MTk5MjU0NzQwOTkxfWZ1bmN0aW9uIFZpKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiBudWxsIT1lJiYoIm9iamVjdCI9PXR8fCJmdW5jdGlvbiI9PXQpfWZ1bmN0aW9uIFVpKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9dmFyIFdpPXR0P010KHR0KTpmdW5jdGlvbihlKXtyZXR1cm4gVWkoZSkmJnJhKGUpPT15fTtmdW5jdGlvbiBZaShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV8fFVpKGUpJiZwcihlKT09bX1mdW5jdGlvbiBIaShlKXtpZighVWkoZSl8fHByKGUpIT12KXJldHVybiExO3ZhciB0PVdlKGUpO2lmKG51bGw9PT10KXJldHVybiEwO3ZhciBuPWtlLmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmbiBpbnN0YW5jZW9mIG4mJk9lLmNhbGwobik9PURlfXZhciBHaT1udD9NdChudCk6ZnVuY3Rpb24oZSl7cmV0dXJuIFVpKGUpJiZwcihlKT09Z307dmFyIFFpPXJ0P010KHJ0KTpmdW5jdGlvbihlKXtyZXR1cm4gVWkoZSkmJnJhKGUpPT1ifTtmdW5jdGlvbiBKaShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCFqaShlKSYmVWkoZSkmJnByKGUpPT13fWZ1bmN0aW9uIFppKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZXx8VWkoZSkmJnByKGUpPT1ffXZhciAkaT1vdD9NdChvdCk6ZnVuY3Rpb24oZSl7cmV0dXJuIFVpKGUpJiZxaShlLmxlbmd0aCkmJiEhemVbcHIoZSldfTt2YXIgWGk9Um8oeHIpLGV1PVJvKChmdW5jdGlvbihlLHQpe3JldHVybiBlPD10fSkpO2Z1bmN0aW9uIHR1KGUpe2lmKCFlKXJldHVybltdO2lmKFJpKGUpKXJldHVybiBKaShlKT9ZdChlKTpnbyhlKTtpZigkZSYmZVskZV0pcmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPVtdOyEodD1lLm5leHQoKSkuZG9uZTspbi5wdXNoKHQudmFsdWUpO3JldHVybiBufShlWyRlXSgpKTt2YXIgdD1yYShlKTtyZXR1cm4odD09eT96dDp0PT1iP1Z0OlR1KShlKX1mdW5jdGlvbiBudShlKXtyZXR1cm4gZT8oZT1hdShlKSk9PT0xLzB8fGU9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiooZTwwPy0xOjEpOmU9PWU/ZTowOjA9PT1lP2U6MH1mdW5jdGlvbiBydShlKXt2YXIgdD1udShlKSxuPXQlMTtyZXR1cm4gdD09dD9uP3Qtbjp0OjB9ZnVuY3Rpb24gb3UoZSl7cmV0dXJuIGU/UW4ocnUoZSksMCw0Mjk0OTY3Mjk1KTowfWZ1bmN0aW9uIGF1KGUpe2lmKCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm4gZTtpZihaaShlKSlyZXR1cm4gTmFOO2lmKFZpKGUpKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1WaSh0KT90KyIiOnR9aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiAwPT09ZT9lOitlO2U9ZS5yZXBsYWNlKEcsIiIpO3ZhciBuPWFlLnRlc3QoZSk7cmV0dXJuIG58fHVlLnRlc3QoZSk/VWUoZS5zbGljZSgyKSxuPzI6OCk6b2UudGVzdChlKT9OYU46K2V9ZnVuY3Rpb24gaXUoZSl7cmV0dXJuIGJvKGUsX3UoZSkpfWZ1bmN0aW9uIHV1KGUpe3JldHVybiBudWxsPT1lPyIiOlpyKGUpfXZhciBzdT1fbygoZnVuY3Rpb24oZSx0KXtpZihkYSh0KXx8UmkodCkpYm8odCx3dSh0KSxlKTtlbHNlIGZvcih2YXIgbiBpbiB0KWtlLmNhbGwodCxuKSYmVm4oZSxuLHRbbl0pfSkpLGx1PV9vKChmdW5jdGlvbihlLHQpe2JvKHQsX3UodCksZSl9KSksY3U9X28oKGZ1bmN0aW9uKGUsdCxuLHIpe2JvKHQsX3UodCksZSxyKX0pKSxmdT1fbygoZnVuY3Rpb24oZSx0LG4scil7Ym8odCx3dSh0KSxlLHIpfSkpLGR1PVdvKEduKTt2YXIgcHU9RnIoKGZ1bmN0aW9uKGUsdCl7ZT15ZShlKTt2YXIgbj0tMSxyPXQubGVuZ3RoLG89cj4yP3RbMl06dm9pZCAwO2ZvcihvJiZzYSh0WzBdLHRbMV0sbykmJihyPTEpOysrbjxyOylmb3IodmFyIGE9dFtuXSxpPV91KGEpLHU9LTEscz1pLmxlbmd0aDsrK3U8czspe3ZhciBsPWlbdV0sYz1lW2xdOyh2b2lkIDA9PT1jfHxUaShjLF9lW2xdKSYmIWtlLmNhbGwoZSxsKSkmJihlW2xdPWFbbF0pfXJldHVybiBlfSkpLGh1PUZyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXNoKHZvaWQgMCxxbyksYXQoT3Usdm9pZCAwLGUpfSkpO2Z1bmN0aW9uIHl1KGUsdCxuKXt2YXIgcj1udWxsPT1lP3ZvaWQgMDpmcihlLHQpO3JldHVybiB2b2lkIDA9PT1yP246cn1mdW5jdGlvbiBtdShlLHQpe3JldHVybiBudWxsIT1lJiZvYShlLHQsbXIpfXZhciB2dT1NbygoZnVuY3Rpb24oZSx0LG4pe251bGwhPXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0LnRvU3RyaW5nJiYodD1TZS5jYWxsKHQpKSxlW3RdPW59KSxWdShZdSkpLGd1PU1vKChmdW5jdGlvbihlLHQsbil7bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQudG9TdHJpbmcmJih0PVNlLmNhbGwodCkpLGtlLmNhbGwoZSx0KT9lW3RdLnB1c2gobik6ZVt0XT1bbl19KSxabyksYnU9RnIoZ3IpO2Z1bmN0aW9uIHd1KGUpe3JldHVybiBSaShlKT9GbihlKTprcihlKX1mdW5jdGlvbiBfdShlKXtyZXR1cm4gUmkoZSk/Rm4oZSwhMCk6Q3IoZSl9dmFyIEV1PV9vKChmdW5jdGlvbihlLHQsbil7TXIoZSx0LG4pfSkpLE91PV9vKChmdW5jdGlvbihlLHQsbixyKXtNcihlLHQsbixyKX0pKSxrdT1XbygoZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtpZihudWxsPT1lKXJldHVybiBuO3ZhciByPSExO3Q9cHQodCwoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dW8odCxlKSxyfHwocj10Lmxlbmd0aD4xKSx0fSkpLGJvKGUsSG8oZSksbiksciYmKG49Sm4obiw3LFZvKSk7Zm9yKHZhciBvPXQubGVuZ3RoO28tLTspWHIobix0W29dKTtyZXR1cm4gbn0pKTt2YXIgQ3U9V28oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/e306ZnVuY3Rpb24oZSx0KXtyZXR1cm4ganIoZSx0LChmdW5jdGlvbih0LG4pe3JldHVybiBtdShlLG4pfSkpfShlLHQpfSkpO2Z1bmN0aW9uIHh1KGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbj1wdChIbyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJuW2VdfSkpO3JldHVybiB0PVpvKHQpLGpyKGUsbiwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG5bMF0pfSkpfXZhciBTdT1Cbyh3dSksRHU9Qm8oX3UpO2Z1bmN0aW9uIFR1KGUpe3JldHVybiBudWxsPT1lP1tdOlB0KGUsd3UoZSkpfXZhciBNdT1DbygoZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PXQudG9Mb3dlckNhc2UoKSxlKyhuP1B1KHQpOnQpfSkpO2Z1bmN0aW9uIFB1KGUpe3JldHVybiBCdSh1dShlKS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBOdShlKXtyZXR1cm4oZT11dShlKSkmJmUucmVwbGFjZShsZSxJdCkucmVwbGFjZShqZSwiIil9dmFyIGp1PUNvKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUrKG4/Ii0iOiIiKSt0LnRvTG93ZXJDYXNlKCl9KSksTHU9Q28oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj8iICI6IiIpK3QudG9Mb3dlckNhc2UoKX0pKSxSdT1rbygidG9Mb3dlckNhc2UiKTt2YXIgSXU9Q28oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj8iXyI6IiIpK3QudG9Mb3dlckNhc2UoKX0pKTt2YXIgQXU9Q28oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj8iICI6IiIpK0J1KHQpfSkpO3ZhciBGdT1DbygoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlKyhuPyIgIjoiIikrdC50b1VwcGVyQ2FzZSgpfSkpLEJ1PWtvKCJ0b1VwcGVyQ2FzZSIpO2Z1bmN0aW9uIHp1KGUsdCxuKXtyZXR1cm4gZT11dShlKSx2b2lkIDA9PT0odD1uP3ZvaWQgMDp0KT9mdW5jdGlvbihlKXtyZXR1cm4gQWUudGVzdChlKX0oZSk/ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2goUmUpfHxbXX0oZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2goZWUpfHxbXX0oZSk6ZS5tYXRjaCh0KXx8W119dmFyIEt1PUZyKChmdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gYXQoZSx2b2lkIDAsdCl9Y2F0Y2goZSl7cmV0dXJuIEJpKGUpP2U6bmV3IGRlKGUpfX0pKSxxdT1XbygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdXQodCwoZnVuY3Rpb24odCl7dD14YSh0KSxIbihlLHQsZ2koZVt0XSxlKSl9KSksZX0pKTtmdW5jdGlvbiBWdShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIFV1PURvKCksV3U9RG8oITApO2Z1bmN0aW9uIFl1KGUpe3JldHVybiBlfWZ1bmN0aW9uIEh1KGUpe3JldHVybiBPcigiZnVuY3Rpb24iPT10eXBlb2YgZT9lOkpuKGUsMSkpfXZhciBHdT1GcigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGdyKG4sZSx0KX19KSksUXU9RnIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBncihlLG4sdCl9fSkpO2Z1bmN0aW9uIEp1KGUsdCxuKXt2YXIgcj13dSh0KSxvPWNyKHQscik7bnVsbCE9bnx8VmkodCkmJihvLmxlbmd0aHx8IXIubGVuZ3RoKXx8KG49dCx0PWUsZT10aGlzLG89Y3IodCx3dSh0KSkpO3ZhciBhPSEoVmkobikmJiJjaGFpbiJpbiBuJiYhbi5jaGFpbiksaT16aShlKTtyZXR1cm4gdXQobywoZnVuY3Rpb24obil7dmFyIHI9dFtuXTtlW25dPXIsaSYmKGUucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX2NoYWluX187aWYoYXx8dCl7dmFyIG49ZSh0aGlzLl9fd3JhcHBlZF9fKSxvPW4uX19hY3Rpb25zX189Z28odGhpcy5fX2FjdGlvbnNfXyk7cmV0dXJuIG8ucHVzaCh7ZnVuYzpyLGFyZ3M6YXJndW1lbnRzLHRoaXNBcmc6ZX0pLG4uX19jaGFpbl9fPXQsbn1yZXR1cm4gci5hcHBseShlLGh0KFt0aGlzLnZhbHVlKCldLGFyZ3VtZW50cykpfSl9KSksZX1mdW5jdGlvbiBadSgpe312YXIgJHU9Tm8ocHQpLFh1PU5vKGx0KSxlcz1Obyh2dCk7ZnVuY3Rpb24gdHMoZSl7cmV0dXJuIGxhKGUpP0N0KHhhKGUpKTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZyKHQsZSl9fShlKX12YXIgbnM9TG8oKSxycz1MbyghMCk7ZnVuY3Rpb24gb3MoKXtyZXR1cm5bXX1mdW5jdGlvbiBhcygpe3JldHVybiExfXZhciBpcz1QbygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSksMCksdXM9QW8oImNlaWwiKSxzcz1QbygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS90fSksMSksbHM9QW8oImZsb29yIik7dmFyIGNzLGZzPVBvKChmdW5jdGlvbihlLHQpe3JldHVybiBlKnR9KSwxKSxkcz1Bbygicm91bmQiKSxwcz1QbygoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSksMCk7cmV0dXJuIERuLmFmdGVyPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IGdlKGEpO3JldHVybiBlPXJ1KGUpLGZ1bmN0aW9uKCl7aWYoLS1lPDEpcmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sRG4uYXJ5PW1pLERuLmFzc2lnbj1zdSxEbi5hc3NpZ25Jbj1sdSxEbi5hc3NpZ25JbldpdGg9Y3UsRG4uYXNzaWduV2l0aD1mdSxEbi5hdD1kdSxEbi5iZWZvcmU9dmksRG4uYmluZD1naSxEbi5iaW5kQWxsPXF1LERuLmJpbmRLZXk9YmksRG4uY2FzdEFycmF5PWZ1bmN0aW9uKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIGU9YXJndW1lbnRzWzBdO3JldHVybiBqaShlKT9lOltlXX0sRG4uY2hhaW49dGksRG4uY2h1bms9ZnVuY3Rpb24oZSx0LG4pe3Q9KG4/c2EoZSx0LG4pOnZvaWQgMD09PXQpPzE6YW4ocnUodCksMCk7dmFyIG89bnVsbD09ZT8wOmUubGVuZ3RoO2lmKCFvfHx0PDEpcmV0dXJuW107Zm9yKHZhciBhPTAsaT0wLHU9cigkdChvL3QpKTthPG87KXVbaSsrXT1XcihlLGEsYSs9dCk7cmV0dXJuIHV9LERuLmNvbXBhY3Q9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoLHI9MCxvPVtdOysrdDxuOyl7dmFyIGE9ZVt0XTthJiYob1tyKytdPWEpfXJldHVybiBvfSxEbi5jb25jYXQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoO2lmKCFlKXJldHVybltdO2Zvcih2YXIgdD1yKGUtMSksbj1hcmd1bWVudHNbMF0sbz1lO28tLTspdFtvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gaHQoamkobik/Z28obik6W25dLGFyKHQsMSkpfSxEbi5jb25kPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw9PWU/MDplLmxlbmd0aCxuPVpvKCk7cmV0dXJuIGU9dD9wdChlLChmdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZVsxXSl0aHJvdyBuZXcgZ2UoYSk7cmV0dXJuW24oZVswXSksZVsxXV19KSk6W10sRnIoKGZ1bmN0aW9uKG4pe2Zvcih2YXIgcj0tMTsrK3I8dDspe3ZhciBvPWVbcl07aWYoYXQob1swXSx0aGlzLG4pKXJldHVybiBhdChvWzFdLHRoaXMsbil9fSkpfSxEbi5jb25mb3Jtcz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9d3UoZSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBabihuLGUsdCl9fShKbihlLDEpKX0sRG4uY29uc3RhbnQ9VnUsRG4uY291bnRCeT1vaSxEbi5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1UbihlKTtyZXR1cm4gbnVsbD09dD9uOlluKG4sdCl9LERuLmN1cnJ5PWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBvPXpvKHQsOCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG49cj92b2lkIDA6bik7cmV0dXJuIG8ucGxhY2Vob2xkZXI9ZS5wbGFjZWhvbGRlcixvfSxEbi5jdXJyeVJpZ2h0PWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBvPXpvKHQsMTYsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCxuPXI/dm9pZCAwOm4pO3JldHVybiBvLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsb30sRG4uZGVib3VuY2U9d2ksRG4uZGVmYXVsdHM9cHUsRG4uZGVmYXVsdHNEZWVwPWh1LERuLmRlZmVyPV9pLERuLmRlbGF5PUVpLERuLmRpZmZlcmVuY2U9VGEsRG4uZGlmZmVyZW5jZUJ5PU1hLERuLmRpZmZlcmVuY2VXaXRoPVBhLERuLmRyb3A9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9XcihlLCh0PW58fHZvaWQgMD09PXQ/MTpydSh0KSk8MD8wOnQscik6W119LERuLmRyb3BSaWdodD1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiByP1dyKGUsMCwodD1yLSh0PW58fHZvaWQgMD09PXQ/MTpydSh0KSkpPDA/MDp0KTpbXX0sRG4uZHJvcFJpZ2h0V2hpbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/dG8oZSxabyh0LDMpLCEwLCEwKTpbXX0sRG4uZHJvcFdoaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP3RvKGUsWm8odCwzKSwhMCk6W119LERuLmZpbGw9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiBvPyhuJiYibnVtYmVyIiE9dHlwZW9mIG4mJnNhKGUsdCxuKSYmKG49MCxyPW8pLGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUubGVuZ3RoO2Zvcigobj1ydShuKSk8MCYmKG49LW4+bz8wOm8rbiksKHI9dm9pZCAwPT09cnx8cj5vP286cnUocikpPDAmJihyKz1vKSxyPW4+cj8wOm91KHIpO248cjspZVtuKytdPXQ7cmV0dXJuIGV9KGUsdCxuLHIpKTpbXX0sRG4uZmlsdGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGppKGUpP2N0Om9yKShlLFpvKHQsMykpfSxEbi5mbGF0TWFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyKGRpKGUsdCksMSl9LERuLmZsYXRNYXBEZWVwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyKGRpKGUsdCksMS8wKX0sRG4uZmxhdE1hcERlcHRoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj12b2lkIDA9PT1uPzE6cnUobiksYXIoZGkoZSx0KSxuKX0sRG4uZmxhdHRlbj1MYSxEbi5mbGF0dGVuRGVlcD1mdW5jdGlvbihlKXtyZXR1cm4obnVsbD09ZT8wOmUubGVuZ3RoKT9hcihlLDEvMCk6W119LERuLmZsYXR0ZW5EZXB0aD1mdW5jdGlvbihlLHQpe3JldHVybihudWxsPT1lPzA6ZS5sZW5ndGgpP2FyKGUsdD12b2lkIDA9PT10PzE6cnUodCkpOltdfSxEbi5mbGlwPWZ1bmN0aW9uKGUpe3JldHVybiB6byhlLDUxMil9LERuLmZsb3c9VXUsRG4uZmxvd1JpZ2h0PVd1LERuLmZyb21QYWlycz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGgscj17fTsrK3Q8bjspe3ZhciBvPWVbdF07cltvWzBdXT1vWzFdfXJldHVybiByfSxEbi5mdW5jdGlvbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/W106Y3IoZSx3dShlKSl9LERuLmZ1bmN0aW9uc0luPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP1tdOmNyKGUsX3UoZSkpfSxEbi5ncm91cEJ5PWxpLERuLmluaXRpYWw9ZnVuY3Rpb24oZSl7cmV0dXJuKG51bGw9PWU/MDplLmxlbmd0aCk/V3IoZSwwLC0xKTpbXX0sRG4uaW50ZXJzZWN0aW9uPUlhLERuLmludGVyc2VjdGlvbkJ5PUFhLERuLmludGVyc2VjdGlvbldpdGg9RmEsRG4uaW52ZXJ0PXZ1LERuLmludmVydEJ5PWd1LERuLmludm9rZU1hcD1jaSxEbi5pdGVyYXRlZT1IdSxEbi5rZXlCeT1maSxEbi5rZXlzPXd1LERuLmtleXNJbj1fdSxEbi5tYXA9ZGksRG4ubWFwS2V5cz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiB0PVpvKHQsMyksc3IoZSwoZnVuY3Rpb24oZSxyLG8pe0huKG4sdChlLHIsbyksZSl9KSksbn0sRG4ubWFwVmFsdWVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIHQ9Wm8odCwzKSxzcihlLChmdW5jdGlvbihlLHIsbyl7SG4obixyLHQoZSxyLG8pKX0pKSxufSxEbi5tYXRjaGVzPWZ1bmN0aW9uKGUpe3JldHVybiBEcihKbihlLDEpKX0sRG4ubWF0Y2hlc1Byb3BlcnR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFRyKGUsSm4odCwxKSl9LERuLm1lbW9pemU9T2ksRG4ubWVyZ2U9RXUsRG4ubWVyZ2VXaXRoPU91LERuLm1ldGhvZD1HdSxEbi5tZXRob2RPZj1RdSxEbi5taXhpbj1KdSxEbi5uZWdhdGU9a2ksRG4ubnRoQXJnPWZ1bmN0aW9uKGUpe3JldHVybiBlPXJ1KGUpLEZyKChmdW5jdGlvbih0KXtyZXR1cm4gUHIodCxlKX0pKX0sRG4ub21pdD1rdSxEbi5vbWl0Qnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4geHUoZSxraShabyh0KSkpfSxEbi5vbmNlPWZ1bmN0aW9uKGUpe3JldHVybiB2aSgyLGUpfSxEbi5vcmRlckJ5PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBudWxsPT1lP1tdOihqaSh0KXx8KHQ9bnVsbD09dD9bXTpbdF0pLGppKG49cj92b2lkIDA6bil8fChuPW51bGw9PW4/W106W25dKSxOcihlLHQsbikpfSxEbi5vdmVyPSR1LERuLm92ZXJBcmdzPUNpLERuLm92ZXJFdmVyeT1YdSxEbi5vdmVyU29tZT1lcyxEbi5wYXJ0aWFsPXhpLERuLnBhcnRpYWxSaWdodD1TaSxEbi5wYXJ0aXRpb249cGksRG4ucGljaz1DdSxEbi5waWNrQnk9eHUsRG4ucHJvcGVydHk9dHMsRG4ucHJvcGVydHlPZj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmZyKGUsdCl9fSxEbi5wdWxsPXphLERuLnB1bGxBbGw9S2EsRG4ucHVsbEFsbEJ5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGgmJnQmJnQubGVuZ3RoP0xyKGUsdCxabyhuLDIpKTplfSxEbi5wdWxsQWxsV2l0aD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUmJmUubGVuZ3RoJiZ0JiZ0Lmxlbmd0aD9McihlLHQsdm9pZCAwLG4pOmV9LERuLnB1bGxBdD1xYSxEbi5yYW5nZT1ucyxEbi5yYW5nZVJpZ2h0PXJzLERuLnJlYXJnPURpLERuLnJlamVjdD1mdW5jdGlvbihlLHQpe3JldHVybihqaShlKT9jdDpvcikoZSxraShabyh0LDMpKSl9LERuLnJlbW92ZT1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO2lmKCFlfHwhZS5sZW5ndGgpcmV0dXJuIG47dmFyIHI9LTEsbz1bXSxhPWUubGVuZ3RoO2Zvcih0PVpvKHQsMyk7KytyPGE7KXt2YXIgaT1lW3JdO3QoaSxyLGUpJiYobi5wdXNoKGkpLG8ucHVzaChyKSl9cmV0dXJuIFJyKGUsbyksbn0sRG4ucmVzdD1mdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBnZShhKTtyZXR1cm4gRnIoZSx0PXZvaWQgMD09PXQ/dDpydSh0KSl9LERuLnJldmVyc2U9VmEsRG4uc2FtcGxlU2l6ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ9KG4/c2EoZSx0LG4pOnZvaWQgMD09PXQpPzE6cnUodCksKGppKGUpP3puOnpyKShlLHQpfSxEbi5zZXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsPT1lP2U6S3IoZSx0LG4pfSxEbi5zZXRXaXRoPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6dm9pZCAwLG51bGw9PWU/ZTpLcihlLHQsbixyKX0sRG4uc2h1ZmZsZT1mdW5jdGlvbihlKXtyZXR1cm4oamkoZSk/S246VXIpKGUpfSxEbi5zbGljZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiByPyhuJiYibnVtYmVyIiE9dHlwZW9mIG4mJnNhKGUsdCxuKT8odD0wLG49cik6KHQ9bnVsbD09dD8wOnJ1KHQpLG49dm9pZCAwPT09bj9yOnJ1KG4pKSxXcihlLHQsbikpOltdfSxEbi5zb3J0Qnk9aGksRG4uc29ydGVkVW5pcT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGg/UXIoZSk6W119LERuLnNvcnRlZFVuaXFCeT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9RcihlLFpvKHQsMikpOltdfSxEbi5zcGxpdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4mJiJudW1iZXIiIT10eXBlb2YgbiYmc2EoZSx0LG4pJiYodD1uPXZvaWQgMCksKG49dm9pZCAwPT09bj80Mjk0OTY3Mjk1Om4+Pj4wKT8oZT11dShlKSkmJigic3RyaW5nIj09dHlwZW9mIHR8fG51bGwhPXQmJiFHaSh0KSkmJiEodD1acih0KSkmJkJ0KGUpP2xvKFl0KGUpLDAsbik6ZS5zcGxpdCh0LG4pOltdfSxEbi5zcHJlYWQ9ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgZ2UoYSk7cmV0dXJuIHQ9bnVsbD09dD8wOmFuKHJ1KHQpLDApLEZyKChmdW5jdGlvbihuKXt2YXIgcj1uW3RdLG89bG8obiwwLHQpO3JldHVybiByJiZodChvLHIpLGF0KGUsdGhpcyxvKX0pKX0sRG4udGFpbD1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/V3IoZSwxLHQpOltdfSxEbi50YWtlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/V3IoZSwwLCh0PW58fHZvaWQgMD09PXQ/MTpydSh0KSk8MD8wOnQpOltdfSxEbi50YWtlUmlnaHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9XcihlLCh0PXItKHQ9bnx8dm9pZCAwPT09dD8xOnJ1KHQpKSk8MD8wOnQscik6W119LERuLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP3RvKGUsWm8odCwzKSwhMSwhMCk6W119LERuLnRha2VXaGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD90byhlLFpvKHQsMykpOltdfSxEbi50YXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKSxlfSxEbi50aHJvdHRsZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ITAsbz0hMDtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgZ2UoYSk7cmV0dXJuIFZpKG4pJiYocj0ibGVhZGluZyJpbiBuPyEhbi5sZWFkaW5nOnIsbz0idHJhaWxpbmciaW4gbj8hIW4udHJhaWxpbmc6byksd2koZSx0LHtsZWFkaW5nOnIsbWF4V2FpdDp0LHRyYWlsaW5nOm99KX0sRG4udGhydT1uaSxEbi50b0FycmF5PXR1LERuLnRvUGFpcnM9U3UsRG4udG9QYWlyc0luPUR1LERuLnRvUGF0aD1mdW5jdGlvbihlKXtyZXR1cm4gamkoZSk/cHQoZSx4YSk6WmkoZSk/W2VdOmdvKENhKHV1KGUpKSl9LERuLnRvUGxhaW5PYmplY3Q9aXUsRG4udHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1qaShlKSxvPXJ8fEFpKGUpfHwkaShlKTtpZih0PVpvKHQsNCksbnVsbD09bil7dmFyIGE9ZSYmZS5jb25zdHJ1Y3RvcjtuPW8/cj9uZXcgYTpbXTpWaShlKSYmemkoYSk/VG4oV2UoZSkpOnt9fXJldHVybihvP3V0OnNyKShlLChmdW5jdGlvbihlLHIsbyl7cmV0dXJuIHQobixlLHIsbyl9KSksbn0sRG4udW5hcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIG1pKGUsMSl9LERuLnVuaW9uPVVhLERuLnVuaW9uQnk9V2EsRG4udW5pb25XaXRoPVlhLERuLnVuaXE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoPyRyKGUpOltdfSxEbi51bmlxQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/JHIoZSxabyh0LDIpKTpbXX0sRG4udW5pcVdpdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnZvaWQgMCxlJiZlLmxlbmd0aD8kcihlLHZvaWQgMCx0KTpbXX0sRG4udW5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZXx8WHIoZSx0KX0sRG4udW56aXA9SGEsRG4udW56aXBXaXRoPUdhLERuLnVwZGF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWU/ZTplbyhlLHQsaW8obikpfSxEbi51cGRhdGVXaXRoPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6dm9pZCAwLG51bGw9PWU/ZTplbyhlLHQsaW8obikscil9LERuLnZhbHVlcz1UdSxEbi52YWx1ZXNJbj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTpQdChlLF91KGUpKX0sRG4ud2l0aG91dD1RYSxEbi53b3Jkcz16dSxEbi53cmFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHhpKGlvKHQpLGUpfSxEbi54b3I9SmEsRG4ueG9yQnk9WmEsRG4ueG9yV2l0aD0kYSxEbi56aXA9WGEsRG4uemlwT2JqZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9vKGV8fFtdLHR8fFtdLFZuKX0sRG4uemlwT2JqZWN0RGVlcD1mdW5jdGlvbihlLHQpe3JldHVybiBvbyhlfHxbXSx0fHxbXSxLcil9LERuLnppcFdpdGg9ZWksRG4uZW50cmllcz1TdSxEbi5lbnRyaWVzSW49RHUsRG4uZXh0ZW5kPWx1LERuLmV4dGVuZFdpdGg9Y3UsSnUoRG4sRG4pLERuLmFkZD1pcyxEbi5hdHRlbXB0PUt1LERuLmNhbWVsQ2FzZT1NdSxEbi5jYXBpdGFsaXplPVB1LERuLmNlaWw9dXMsRG4uY2xhbXA9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj10LHQ9dm9pZCAwKSx2b2lkIDAhPT1uJiYobj0obj1hdShuKSk9PW4/bjowKSx2b2lkIDAhPT10JiYodD0odD1hdSh0KSk9PXQ/dDowKSxRbihhdShlKSx0LG4pfSxEbi5jbG9uZT1mdW5jdGlvbihlKXtyZXR1cm4gSm4oZSw0KX0sRG4uY2xvbmVEZWVwPWZ1bmN0aW9uKGUpe3JldHVybiBKbihlLDUpfSxEbi5jbG9uZURlZXBXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEpuKGUsNSx0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwKX0sRG4uY2xvbmVXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEpuKGUsNCx0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwKX0sRG4uY29uZm9ybXNUbz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT10fHxabihlLHQsd3UodCkpfSxEbi5kZWJ1cnI9TnUsRG4uZGVmYXVsdFRvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWV8fGUhPWU/dDplfSxEbi5kaXZpZGU9c3MsRG4uZW5kc1dpdGg9ZnVuY3Rpb24oZSx0LG4pe2U9dXUoZSksdD1acih0KTt2YXIgcj1lLmxlbmd0aCxvPW49dm9pZCAwPT09bj9yOlFuKHJ1KG4pLDAscik7cmV0dXJuKG4tPXQubGVuZ3RoKT49MCYmZS5zbGljZShuLG8pPT10fSxEbi5lcT1UaSxEbi5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dXUoZSkpJiZCLnRlc3QoZSk/ZS5yZXBsYWNlKEEsQXQpOmV9LERuLmVzY2FwZVJlZ0V4cD1mdW5jdGlvbihlKXtyZXR1cm4oZT11dShlKSkmJkgudGVzdChlKT9lLnJlcGxhY2UoWSwiXFwkJiIpOmV9LERuLmV2ZXJ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1qaShlKT9sdDpucjtyZXR1cm4gbiYmc2EoZSx0LG4pJiYodD12b2lkIDApLHIoZSxabyh0LDMpKX0sRG4uZmluZD1haSxEbi5maW5kSW5kZXg9TmEsRG4uZmluZEtleT1mdW5jdGlvbihlLHQpe3JldHVybiBidChlLFpvKHQsMyksc3IpfSxEbi5maW5kTGFzdD1paSxEbi5maW5kTGFzdEluZGV4PWphLERuLmZpbmRMYXN0S2V5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGJ0KGUsWm8odCwzKSxscil9LERuLmZsb29yPWxzLERuLmZvckVhY2g9dWksRG4uZm9yRWFjaFJpZ2h0PXNpLERuLmZvckluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/ZTppcihlLFpvKHQsMyksX3UpfSxEbi5mb3JJblJpZ2h0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/ZTp1cihlLFpvKHQsMyksX3UpfSxEbi5mb3JPd249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmc3IoZSxabyh0LDMpKX0sRG4uZm9yT3duUmlnaHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmbHIoZSxabyh0LDMpKX0sRG4uZ2V0PXl1LERuLmd0PU1pLERuLmd0ZT1QaSxEbi5oYXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmb2EoZSx0LHlyKX0sRG4uaGFzSW49bXUsRG4uaGVhZD1SYSxEbi5pZGVudGl0eT1ZdSxEbi5pbmNsdWRlcz1mdW5jdGlvbihlLHQsbixyKXtlPVJpKGUpP2U6VHUoZSksbj1uJiYhcj9ydShuKTowO3ZhciBvPWUubGVuZ3RoO3JldHVybiBuPDAmJihuPWFuKG8rbiwwKSksSmkoZSk/bjw9byYmZS5pbmRleE9mKHQsbik+LTE6ISFvJiZfdChlLHQsbik+LTF9LERuLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1udWxsPT1uPzA6cnUobik7cmV0dXJuIG88MCYmKG89YW4ocitvLDApKSxfdChlLHQsbyl9LERuLmluUmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PW51KHQpLHZvaWQgMD09PW4/KG49dCx0PTApOm49bnUobiksZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPj11bih0LG4pJiZlPGFuKHQsbil9KGU9YXUoZSksdCxuKX0sRG4uaW52b2tlPWJ1LERuLmlzQXJndW1lbnRzPU5pLERuLmlzQXJyYXk9amksRG4uaXNBcnJheUJ1ZmZlcj1MaSxEbi5pc0FycmF5TGlrZT1SaSxEbi5pc0FycmF5TGlrZU9iamVjdD1JaSxEbi5pc0Jvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV8fFVpKGUpJiZwcihlKT09Y30sRG4uaXNCdWZmZXI9QWksRG4uaXNEYXRlPUZpLERuLmlzRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gVWkoZSkmJjE9PT1lLm5vZGVUeXBlJiYhSGkoZSl9LERuLmlzRW1wdHk9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4hMDtpZihSaShlKSYmKGppKGUpfHwic3RyaW5nIj09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlLnNwbGljZXx8QWkoZSl8fCRpKGUpfHxOaShlKSkpcmV0dXJuIWUubGVuZ3RoO3ZhciB0PXJhKGUpO2lmKHQ9PXl8fHQ9PWIpcmV0dXJuIWUuc2l6ZTtpZihkYShlKSlyZXR1cm4ha3IoZSkubGVuZ3RoO2Zvcih2YXIgbiBpbiBlKWlmKGtlLmNhbGwoZSxuKSlyZXR1cm4hMTtyZXR1cm4hMH0sRG4uaXNFcXVhbD1mdW5jdGlvbihlLHQpe3JldHVybiB3cihlLHQpfSxEbi5pc0VxdWFsV2l0aD1mdW5jdGlvbihlLHQsbil7dmFyIHI9KG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp2b2lkIDApP24oZSx0KTp2b2lkIDA7cmV0dXJuIHZvaWQgMD09PXI/d3IoZSx0LHZvaWQgMCxuKTohIXJ9LERuLmlzRXJyb3I9QmksRG4uaXNGaW5pdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZubihlKX0sRG4uaXNGdW5jdGlvbj16aSxEbi5pc0ludGVnZXI9S2ksRG4uaXNMZW5ndGg9cWksRG4uaXNNYXA9V2ksRG4uaXNNYXRjaD1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dHx8X3IoZSx0LFhvKHQpKX0sRG4uaXNNYXRjaFdpdGg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dm9pZCAwLF9yKGUsdCxYbyh0KSxuKX0sRG4uaXNOYU49ZnVuY3Rpb24oZSl7cmV0dXJuIFlpKGUpJiZlIT0rZX0sRG4uaXNOYXRpdmU9ZnVuY3Rpb24oZSl7aWYoZmEoZSkpdGhyb3cgbmV3IGRlKCJVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4iKTtyZXR1cm4gRXIoZSl9LERuLmlzTmlsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfSxEbi5pc051bGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfSxEbi5pc051bWJlcj1ZaSxEbi5pc09iamVjdD1WaSxEbi5pc09iamVjdExpa2U9VWksRG4uaXNQbGFpbk9iamVjdD1IaSxEbi5pc1JlZ0V4cD1HaSxEbi5pc1NhZmVJbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiBLaShlKSYmZT49LTkwMDcxOTkyNTQ3NDA5OTEmJmU8PTkwMDcxOTkyNTQ3NDA5OTF9LERuLmlzU2V0PVFpLERuLmlzU3RyaW5nPUppLERuLmlzU3ltYm9sPVppLERuLmlzVHlwZWRBcnJheT0kaSxEbi5pc1VuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZX0sRG4uaXNXZWFrTWFwPWZ1bmN0aW9uKGUpe3JldHVybiBVaShlKSYmcmEoZSk9PUV9LERuLmlzV2Vha1NldD1mdW5jdGlvbihlKXtyZXR1cm4gVWkoZSkmJiJbb2JqZWN0IFdlYWtTZXRdIj09cHIoZSl9LERuLmpvaW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZT8iIjpybi5jYWxsKGUsdCl9LERuLmtlYmFiQ2FzZT1qdSxEbi5sYXN0PUJhLERuLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIG89cjtyZXR1cm4gdm9pZCAwIT09biYmKG89KG89cnUobikpPDA/YW4ocitvLDApOnVuKG8sci0xKSksdD09dD9mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW4rMTtyLS07KWlmKGVbcl09PT10KXJldHVybiByO3JldHVybiByfShlLHQsbyk6d3QoZSxPdCxvLCEwKX0sRG4ubG93ZXJDYXNlPUx1LERuLmxvd2VyRmlyc3Q9UnUsRG4ubHQ9WGksRG4ubHRlPWV1LERuLm1heD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGg/cnIoZSxZdSxocik6dm9pZCAwfSxEbi5tYXhCeT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9ycihlLFpvKHQsMiksaHIpOnZvaWQgMH0sRG4ubWVhbj1mdW5jdGlvbihlKXtyZXR1cm4ga3QoZSxZdSl9LERuLm1lYW5CeT1mdW5jdGlvbihlLHQpe3JldHVybiBrdChlLFpvKHQsMikpfSxEbi5taW49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP3JyKGUsWXUseHIpOnZvaWQgMH0sRG4ubWluQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/cnIoZSxabyh0LDIpLHhyKTp2b2lkIDB9LERuLnN0dWJBcnJheT1vcyxEbi5zdHViRmFsc2U9YXMsRG4uc3R1Yk9iamVjdD1mdW5jdGlvbigpe3JldHVybnt9fSxEbi5zdHViU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LERuLnN0dWJUcnVlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LERuLm11bHRpcGx5PWZzLERuLm50aD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9QcihlLHJ1KHQpKTp2b2lkIDB9LERuLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gSGUuXz09PXRoaXMmJihIZS5fPVRlKSx0aGlzfSxEbi5ub29wPVp1LERuLm5vdz15aSxEbi5wYWQ9ZnVuY3Rpb24oZSx0LG4pe2U9dXUoZSk7dmFyIHI9KHQ9cnUodCkpP1d0KGUpOjA7aWYoIXR8fHI+PXQpcmV0dXJuIGU7dmFyIG89KHQtcikvMjtyZXR1cm4gam8oWHQobyksbikrZStqbygkdChvKSxuKX0sRG4ucGFkRW5kPWZ1bmN0aW9uKGUsdCxuKXtlPXV1KGUpO3ZhciByPSh0PXJ1KHQpKT9XdChlKTowO3JldHVybiB0JiZyPHQ/ZStqbyh0LXIsbik6ZX0sRG4ucGFkU3RhcnQ9ZnVuY3Rpb24oZSx0LG4pe2U9dXUoZSk7dmFyIHI9KHQ9cnUodCkpP1d0KGUpOjA7cmV0dXJuIHQmJnI8dD9qbyh0LXIsbikrZTplfSxEbi5wYXJzZUludD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG58fG51bGw9PXQ/dD0wOnQmJih0PSt0KSxsbih1dShlKS5yZXBsYWNlKFEsIiIpLHR8fDApfSxEbi5yYW5kb209ZnVuY3Rpb24oZSx0LG4pe2lmKG4mJiJib29sZWFuIiE9dHlwZW9mIG4mJnNhKGUsdCxuKSYmKHQ9bj12b2lkIDApLHZvaWQgMD09PW4mJigiYm9vbGVhbiI9PXR5cGVvZiB0PyhuPXQsdD12b2lkIDApOiJib29sZWFuIj09dHlwZW9mIGUmJihuPWUsZT12b2lkIDApKSx2b2lkIDA9PT1lJiZ2b2lkIDA9PT10PyhlPTAsdD0xKTooZT1udShlKSx2b2lkIDA9PT10Pyh0PWUsZT0wKTp0PW51KHQpKSxlPnQpe3ZhciByPWU7ZT10LHQ9cn1pZihufHxlJTF8fHQlMSl7dmFyIG89Y24oKTtyZXR1cm4gdW4oZStvKih0LWUrVmUoIjFlLSIrKChvKyIiKS5sZW5ndGgtMSkpKSx0KX1yZXR1cm4gSXIoZSx0KX0sRG4ucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1qaShlKT95dDpTdCxvPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gcihlLFpvKHQsNCksbixvLGVyKX0sRG4ucmVkdWNlUmlnaHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWppKGUpP210OlN0LG89YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiByKGUsWm8odCw0KSxuLG8sdHIpfSxEbi5yZXBlYXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PShuP3NhKGUsdCxuKTp2b2lkIDA9PT10KT8xOnJ1KHQpLEFyKHV1KGUpLHQpfSxEbi5yZXBsYWNlPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHQ9dXUoZVswXSk7cmV0dXJuIGUubGVuZ3RoPDM/dDp0LnJlcGxhY2UoZVsxXSxlWzJdKX0sRG4ucmVzdWx0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0tMSxvPSh0PXVvKHQsZSkpLmxlbmd0aDtmb3Iob3x8KG89MSxlPXZvaWQgMCk7KytyPG87KXt2YXIgYT1udWxsPT1lP3ZvaWQgMDplW3hhKHRbcl0pXTt2b2lkIDA9PT1hJiYocj1vLGE9biksZT16aShhKT9hLmNhbGwoZSk6YX1yZXR1cm4gZX0sRG4ucm91bmQ9ZHMsRG4ucnVuSW5Db250ZXh0PWUsRG4uc2FtcGxlPWZ1bmN0aW9uKGUpe3JldHVybihqaShlKT9CbjpCcikoZSl9LERuLnNpemU9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gMDtpZihSaShlKSlyZXR1cm4gSmkoZSk/V3QoZSk6ZS5sZW5ndGg7dmFyIHQ9cmEoZSk7cmV0dXJuIHQ9PXl8fHQ9PWI/ZS5zaXplOmtyKGUpLmxlbmd0aH0sRG4uc25ha2VDYXNlPUl1LERuLnNvbWU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWppKGUpP3Z0OllyO3JldHVybiBuJiZzYShlLHQsbikmJih0PXZvaWQgMCkscihlLFpvKHQsMykpfSxEbi5zb3J0ZWRJbmRleD1mdW5jdGlvbihlLHQpe3JldHVybiBIcihlLHQpfSxEbi5zb3J0ZWRJbmRleEJ5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gR3IoZSx0LFpvKG4sMikpfSxEbi5zb3J0ZWRJbmRleE9mPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO2lmKG4pe3ZhciByPUhyKGUsdCk7aWYocjxuJiZUaShlW3JdLHQpKXJldHVybiByfXJldHVybi0xfSxEbi5zb3J0ZWRMYXN0SW5kZXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSHIoZSx0LCEwKX0sRG4uc29ydGVkTGFzdEluZGV4Qnk9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBHcihlLHQsWm8obiwyKSwhMCl9LERuLnNvcnRlZExhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZT8wOmUubGVuZ3RoKXt2YXIgbj1IcihlLHQsITApLTE7aWYoVGkoZVtuXSx0KSlyZXR1cm4gbn1yZXR1cm4tMX0sRG4uc3RhcnRDYXNlPUF1LERuLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPXV1KGUpLG49bnVsbD09bj8wOlFuKHJ1KG4pLDAsZS5sZW5ndGgpLHQ9WnIodCksZS5zbGljZShuLG4rdC5sZW5ndGgpPT10fSxEbi5zdWJ0cmFjdD1wcyxEbi5zdW09ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP0R0KGUsWXUpOjB9LERuLnN1bUJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP0R0KGUsWm8odCwyKSk6MH0sRG4udGVtcGxhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPURuLnRlbXBsYXRlU2V0dGluZ3M7biYmc2EoZSx0LG4pJiYodD12b2lkIDApLGU9dXUoZSksdD1jdSh7fSx0LHIsS28pO3ZhciBvLGEsaT1jdSh7fSx0LmltcG9ydHMsci5pbXBvcnRzLEtvKSx1PXd1KGkpLHM9UHQoaSx1KSxsPTAsYz10LmludGVycG9sYXRlfHxjZSxmPSJfX3AgKz0gJyIsZD1tZSgodC5lc2NhcGV8fGNlKS5zb3VyY2UrInwiK2Muc291cmNlKyJ8IisoYz09PXE/bmU6Y2UpLnNvdXJjZSsifCIrKHQuZXZhbHVhdGV8fGNlKS5zb3VyY2UrInwkIiwiZyIpLHA9Ii8vIyBzb3VyY2VVUkw9Iisoa2UuY2FsbCh0LCJzb3VyY2VVUkwiKT8odC5zb3VyY2VVUkwrIiIpLnJlcGxhY2UoL1tcclxuXS9nLCIgIik6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKytCZSsiXSIpKyJcbiI7ZS5yZXBsYWNlKGQsKGZ1bmN0aW9uKHQsbixyLGksdSxzKXtyZXR1cm4gcnx8KHI9aSksZis9ZS5zbGljZShsLHMpLnJlcGxhY2UoZmUsRnQpLG4mJihvPSEwLGYrPSInICtcbl9fZSgiK24rIikgK1xuJyIpLHUmJihhPSEwLGYrPSInO1xuIit1KyI7XG5fX3AgKz0gJyIpLHImJihmKz0iJyArXG4oKF9fdCA9ICgiK3IrIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xuJyIpLGw9cyt0Lmxlbmd0aCx0fSkpLGYrPSInO1xuIjt2YXIgaD1rZS5jYWxsKHQsInZhcmlhYmxlIikmJnQudmFyaWFibGU7aHx8KGY9IndpdGggKG9iaikge1xuIitmKyJcbn1cbiIpLGY9KGE/Zi5yZXBsYWNlKGosIiIpOmYpLnJlcGxhY2UoTCwiJDEiKS5yZXBsYWNlKFIsIiQxOyIpLGY9ImZ1bmN0aW9uKCIrKGh8fCJvYmoiKSsiKSB7XG4iKyhoPyIiOiJvYmogfHwgKG9iaiA9IHt9KTtcbiIpKyJ2YXIgX190LCBfX3AgPSAnJyIrKG8/IiwgX19lID0gXy5lc2NhcGUiOiIiKSsoYT8iLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxuIjoiO1xuIikrZisicmV0dXJuIF9fcFxufSI7dmFyIHk9S3UoKGZ1bmN0aW9uKCl7cmV0dXJuIHBlKHUscCsicmV0dXJuICIrZikuYXBwbHkodm9pZCAwLHMpfSkpO2lmKHkuc291cmNlPWYsQmkoeSkpdGhyb3cgeTtyZXR1cm4geX0sRG4udGltZXM9ZnVuY3Rpb24oZSx0KXtpZigoZT1ydShlKSk8MXx8ZT45MDA3MTk5MjU0NzQwOTkxKXJldHVybltdO3ZhciBuPTQyOTQ5NjcyOTUscj11bihlLDQyOTQ5NjcyOTUpO2UtPTQyOTQ5NjcyOTU7Zm9yKHZhciBvPVR0KHIsdD1abyh0KSk7KytuPGU7KXQobik7cmV0dXJuIG99LERuLnRvRmluaXRlPW51LERuLnRvSW50ZWdlcj1ydSxEbi50b0xlbmd0aD1vdSxEbi50b0xvd2VyPWZ1bmN0aW9uKGUpe3JldHVybiB1dShlKS50b0xvd2VyQ2FzZSgpfSxEbi50b051bWJlcj1hdSxEbi50b1NhZmVJbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiBlP1FuKHJ1KGUpLC05MDA3MTk5MjU0NzQwOTkxLDkwMDcxOTkyNTQ3NDA5OTEpOjA9PT1lP2U6MH0sRG4udG9TdHJpbmc9dXUsRG4udG9VcHBlcj1mdW5jdGlvbihlKXtyZXR1cm4gdXUoZSkudG9VcHBlckNhc2UoKX0sRG4udHJpbT1mdW5jdGlvbihlLHQsbil7aWYoKGU9dXUoZSkpJiYobnx8dm9pZCAwPT09dCkpcmV0dXJuIGUucmVwbGFjZShHLCIiKTtpZighZXx8ISh0PVpyKHQpKSlyZXR1cm4gZTt2YXIgcj1ZdChlKSxvPVl0KHQpO3JldHVybiBsbyhyLGp0KHIsbyksTHQocixvKSsxKS5qb2luKCIiKX0sRG4udHJpbUVuZD1mdW5jdGlvbihlLHQsbil7aWYoKGU9dXUoZSkpJiYobnx8dm9pZCAwPT09dCkpcmV0dXJuIGUucmVwbGFjZShKLCIiKTtpZighZXx8ISh0PVpyKHQpKSlyZXR1cm4gZTt2YXIgcj1ZdChlKTtyZXR1cm4gbG8ociwwLEx0KHIsWXQodCkpKzEpLmpvaW4oIiIpfSxEbi50cmltU3RhcnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKChlPXV1KGUpKSYmKG58fHZvaWQgMD09PXQpKXJldHVybiBlLnJlcGxhY2UoUSwiIik7aWYoIWV8fCEodD1acih0KSkpcmV0dXJuIGU7dmFyIHI9WXQoZSk7cmV0dXJuIGxvKHIsanQocixZdCh0KSkpLmpvaW4oIiIpfSxEbi50cnVuY2F0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPTMwLHI9Ii4uLiI7aWYoVmkodCkpe3ZhciBvPSJzZXBhcmF0b3IiaW4gdD90LnNlcGFyYXRvcjpvO249Imxlbmd0aCJpbiB0P3J1KHQubGVuZ3RoKTpuLHI9Im9taXNzaW9uImluIHQ/WnIodC5vbWlzc2lvbik6cn12YXIgYT0oZT11dShlKSkubGVuZ3RoO2lmKEJ0KGUpKXt2YXIgaT1ZdChlKTthPWkubGVuZ3RofWlmKG4+PWEpcmV0dXJuIGU7dmFyIHU9bi1XdChyKTtpZih1PDEpcmV0dXJuIHI7dmFyIHM9aT9sbyhpLDAsdSkuam9pbigiIik6ZS5zbGljZSgwLHUpO2lmKHZvaWQgMD09PW8pcmV0dXJuIHMrcjtpZihpJiYodSs9cy5sZW5ndGgtdSksR2kobykpe2lmKGUuc2xpY2UodSkuc2VhcmNoKG8pKXt2YXIgbCxjPXM7Zm9yKG8uZ2xvYmFsfHwobz1tZShvLnNvdXJjZSx1dShyZS5leGVjKG8pKSsiZyIpKSxvLmxhc3RJbmRleD0wO2w9by5leGVjKGMpOyl2YXIgZj1sLmluZGV4O3M9cy5zbGljZSgwLHZvaWQgMD09PWY/dTpmKX19ZWxzZSBpZihlLmluZGV4T2YoWnIobyksdSkhPXUpe3ZhciBkPXMubGFzdEluZGV4T2Yobyk7ZD4tMSYmKHM9cy5zbGljZSgwLGQpKX1yZXR1cm4gcytyfSxEbi51bmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZT11dShlKSkmJkYudGVzdChlKT9lLnJlcGxhY2UoSSxIdCk6ZX0sRG4udW5pcXVlSWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9KytDZTtyZXR1cm4gdXUoZSkrdH0sRG4udXBwZXJDYXNlPUZ1LERuLnVwcGVyRmlyc3Q9QnUsRG4uZWFjaD11aSxEbi5lYWNoUmlnaHQ9c2ksRG4uZmlyc3Q9UmEsSnUoRG4sKGNzPXt9LHNyKERuLChmdW5jdGlvbihlLHQpe2tlLmNhbGwoRG4ucHJvdG90eXBlLHQpfHwoY3NbdF09ZSl9KSksY3MpLHtjaGFpbjohMX0pLERuLlZFUlNJT049IjQuMTcuMTUiLHV0KFsiYmluZCIsImJpbmRLZXkiLCJjdXJyeSIsImN1cnJ5UmlnaHQiLCJwYXJ0aWFsIiwicGFydGlhbFJpZ2h0Il0sKGZ1bmN0aW9uKGUpe0RuW2VdLnBsYWNlaG9sZGVyPURufSkpLHV0KFsiZHJvcCIsInRha2UiXSwoZnVuY3Rpb24oZSx0KXtObi5wcm90b3R5cGVbZV09ZnVuY3Rpb24obil7bj12b2lkIDA9PT1uPzE6YW4ocnUobiksMCk7dmFyIHI9dGhpcy5fX2ZpbHRlcmVkX18mJiF0P25ldyBObih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHIuX19maWx0ZXJlZF9fP3IuX190YWtlQ291bnRfXz11bihuLHIuX190YWtlQ291bnRfXyk6ci5fX3ZpZXdzX18ucHVzaCh7c2l6ZTp1bihuLDQyOTQ5NjcyOTUpLHR5cGU6ZSsoci5fX2Rpcl9fPDA/IlJpZ2h0IjoiIil9KSxyfSxObi5wcm90b3R5cGVbZSsiUmlnaHQiXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbZV0odCkucmV2ZXJzZSgpfX0pKSx1dChbImZpbHRlciIsIm1hcCIsInRha2VXaGlsZSJdLChmdW5jdGlvbihlLHQpe3ZhciBuPXQrMSxyPTE9PW58fDM9PW47Tm4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2xvbmUoKTtyZXR1cm4gdC5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOlpvKGUsMyksdHlwZTpufSksdC5fX2ZpbHRlcmVkX189dC5fX2ZpbHRlcmVkX198fHIsdH19KSksdXQoWyJoZWFkIiwibGFzdCJdLChmdW5jdGlvbihlLHQpe3ZhciBuPSJ0YWtlIisodD8iUmlnaHQiOiIiKTtObi5wcm90b3R5cGVbZV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tuXSgxKS52YWx1ZSgpWzBdfX0pKSx1dChbImluaXRpYWwiLCJ0YWlsIl0sKGZ1bmN0aW9uKGUsdCl7dmFyIG49ImRyb3AiKyh0PyIiOiJSaWdodCIpO05uLnByb3RvdHlwZVtlXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmlsdGVyZWRfXz9uZXcgTm4odGhpcyk6dGhpc1tuXSgxKX19KSksTm4ucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoWXUpfSxObi5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maWx0ZXIoZSkuaGVhZCgpfSxObi5wcm90b3R5cGUuZmluZExhc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQoZSl9LE5uLnByb3RvdHlwZS5pbnZva2VNYXA9RnIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/bmV3IE5uKHRoaXMpOnRoaXMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gZ3IobixlLHQpfSkpfSkpLE5uLnByb3RvdHlwZS5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmlsdGVyKGtpKFpvKGUpKSl9LE5uLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe2U9cnUoZSk7dmFyIG49dGhpcztyZXR1cm4gbi5fX2ZpbHRlcmVkX18mJihlPjB8fHQ8MCk/bmV3IE5uKG4pOihlPDA/bj1uLnRha2VSaWdodCgtZSk6ZSYmKG49bi5kcm9wKGUpKSx2b2lkIDAhPT10JiYobj0odD1ydSh0KSk8MD9uLmRyb3BSaWdodCgtdCk6bi50YWtlKHQtZSkpLG4pfSxObi5wcm90b3R5cGUudGFrZVJpZ2h0V2hpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShlKS5yZXZlcnNlKCl9LE5uLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFrZSg0Mjk0OTY3Mjk1KX0sc3IoTm4ucHJvdG90eXBlLChmdW5jdGlvbihlLHQpe3ZhciBuPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KHQpLHI9L14oPzpoZWFkfGxhc3QpJC8udGVzdCh0KSxvPURuW3I/InRha2UiKygibGFzdCI9PXQ/IlJpZ2h0IjoiIik6dF0sYT1yfHwvXmZpbmQvLnRlc3QodCk7byYmKERuLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX193cmFwcGVkX18saT1yP1sxXTphcmd1bWVudHMsdT10IGluc3RhbmNlb2YgTm4scz1pWzBdLGw9dXx8amkodCksYz1mdW5jdGlvbihlKXt2YXIgdD1vLmFwcGx5KERuLGh0KFtlXSxpKSk7cmV0dXJuIHImJmY/dFswXTp0fTtsJiZuJiYiZnVuY3Rpb24iPT10eXBlb2YgcyYmMSE9cy5sZW5ndGgmJih1PWw9ITEpO3ZhciBmPXRoaXMuX19jaGFpbl9fLGQ9ISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxwPWEmJiFmLGg9dSYmIWQ7aWYoIWEmJmwpe3Q9aD90Om5ldyBObih0aGlzKTt2YXIgeT1lLmFwcGx5KHQsaSk7cmV0dXJuIHkuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpuaSxhcmdzOltjXSx0aGlzQXJnOnZvaWQgMH0pLG5ldyBQbih5LGYpfXJldHVybiBwJiZoP2UuYXBwbHkodGhpcyxpKTooeT10aGlzLnRocnUoYykscD9yP3kudmFsdWUoKVswXTp5LnZhbHVlKCk6eSl9KX0pKSx1dChbInBvcCIsInB1c2giLCJzaGlmdCIsInNvcnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sKGZ1bmN0aW9uKGUpe3ZhciB0PWJlW2VdLG49L14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KGUpPyJ0YXAiOiJ0aHJ1IixyPS9eKD86cG9wfHNoaWZ0KSQvLnRlc3QoZSk7RG4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO2lmKHImJiF0aGlzLl9fY2hhaW5fXyl7dmFyIG89dGhpcy52YWx1ZSgpO3JldHVybiB0LmFwcGx5KGppKG8pP286W10sZSl9cmV0dXJuIHRoaXNbbl0oKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KGppKG4pP246W10sZSl9KSl9fSkpLHNyKE5uLnByb3RvdHlwZSwoZnVuY3Rpb24oZSx0KXt2YXIgbj1Eblt0XTtpZihuKXt2YXIgcj1uLm5hbWUrIiI7a2UuY2FsbChibixyKXx8KGJuW3JdPVtdKSxibltyXS5wdXNoKHtuYW1lOnQsZnVuYzpufSl9fSkpLGJuW1RvKHZvaWQgMCwyKS5uYW1lXT1be25hbWU6IndyYXBwZXIiLGZ1bmM6dm9pZCAwfV0sTm4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IE5uKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBlLl9fYWN0aW9uc19fPWdvKHRoaXMuX19hY3Rpb25zX18pLGUuX19kaXJfXz10aGlzLl9fZGlyX18sZS5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sZS5fX2l0ZXJhdGVlc19fPWdvKHRoaXMuX19pdGVyYXRlZXNfXyksZS5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxlLl9fdmlld3NfXz1nbyh0aGlzLl9fdmlld3NfXyksZX0sTm4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXtpZih0aGlzLl9fZmlsdGVyZWRfXyl7dmFyIGU9bmV3IE5uKHRoaXMpO2UuX19kaXJfXz0tMSxlLl9fZmlsdGVyZWRfXz0hMH1lbHNlKGU9dGhpcy5jbG9uZSgpKS5fX2Rpcl9fKj0tMTtyZXR1cm4gZX0sTm4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLHQ9dGhpcy5fX2Rpcl9fLG49amkoZSkscj10PDAsbz1uP2UubGVuZ3RoOjAsYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9LTEsbz1uLmxlbmd0aDtmb3IoOysrcjxvOyl7dmFyIGE9bltyXSxpPWEuc2l6ZTtzd2l0Y2goYS50eXBlKXtjYXNlImRyb3AiOmUrPWk7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOnQtPWk7YnJlYWs7Y2FzZSJ0YWtlIjp0PXVuKHQsZStpKTticmVhaztjYXNlInRha2VSaWdodCI6ZT1hbihlLHQtaSl9fXJldHVybntzdGFydDplLGVuZDp0fX0oMCxvLHRoaXMuX192aWV3c19fKSxpPWEuc3RhcnQsdT1hLmVuZCxzPXUtaSxsPXI/dTppLTEsYz10aGlzLl9faXRlcmF0ZWVzX18sZj1jLmxlbmd0aCxkPTAscD11bihzLHRoaXMuX190YWtlQ291bnRfXyk7aWYoIW58fCFyJiZvPT1zJiZwPT1zKXJldHVybiBubyhlLHRoaXMuX19hY3Rpb25zX18pO3ZhciBoPVtdO2U6Zm9yKDtzLS0mJmQ8cDspe2Zvcih2YXIgeT0tMSxtPWVbbCs9dF07Kyt5PGY7KXt2YXIgdj1jW3ldLGc9di5pdGVyYXRlZSxiPXYudHlwZSx3PWcobSk7aWYoMj09YiltPXc7ZWxzZSBpZighdyl7aWYoMT09Yiljb250aW51ZSBlO2JyZWFrIGV9fWhbZCsrXT1tfXJldHVybiBofSxEbi5wcm90b3R5cGUuYXQ9cmksRG4ucHJvdG90eXBlLmNoYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRpKHRoaXMpfSxEbi5wcm90b3R5cGUuY29tbWl0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQbih0aGlzLnZhbHVlKCksdGhpcy5fX2NoYWluX18pfSxEbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX192YWx1ZXNfXyYmKHRoaXMuX192YWx1ZXNfXz10dSh0aGlzLnZhbHVlKCkpKTt2YXIgZT10aGlzLl9faW5kZXhfXz49dGhpcy5fX3ZhbHVlc19fLmxlbmd0aDtyZXR1cm57ZG9uZTplLHZhbHVlOmU/dm9pZCAwOnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXX19LERuLnByb3RvdHlwZS5wbGFudD1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj10aGlzO24gaW5zdGFuY2VvZiBNbjspe3ZhciByPURhKG4pO3IuX19pbmRleF9fPTAsci5fX3ZhbHVlc19fPXZvaWQgMCx0P28uX193cmFwcGVkX189cjp0PXI7dmFyIG89cjtuPW4uX193cmFwcGVkX199cmV0dXJuIG8uX193cmFwcGVkX189ZSx0fSxEbi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX193cmFwcGVkX187aWYoZSBpbnN0YW5jZW9mIE5uKXt2YXIgdD1lO3JldHVybiB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCYmKHQ9bmV3IE5uKHRoaXMpKSwodD10LnJldmVyc2UoKSkuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpuaSxhcmdzOltWYV0sdGhpc0FyZzp2b2lkIDB9KSxuZXcgUG4odCx0aGlzLl9fY2hhaW5fXyl9cmV0dXJuIHRoaXMudGhydShWYSl9LERuLnByb3RvdHlwZS50b0pTT049RG4ucHJvdG90eXBlLnZhbHVlT2Y9RG4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIG5vKHRoaXMuX193cmFwcGVkX18sdGhpcy5fX2FjdGlvbnNfXyl9LERuLnByb3RvdHlwZS5maXJzdD1Ebi5wcm90b3R5cGUuaGVhZCwkZSYmKERuLnByb3RvdHlwZVskZV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLERufSgpO0hlLl89R3Qsdm9pZCAwPT09KG89ZnVuY3Rpb24oKXtyZXR1cm4gR3R9LmNhbGwodCxuLHQscikpfHwoci5leHBvcnRzPW8pfSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxuKCJ5THBqIiksbigiWXVUaSIpKGUpKX0sTTZyYzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImxGSm4iKSxvPW4oIkpQY3YiKS5NYXAsYT17YWRkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaShlLHQsbiwhMCl9LHJlbW92ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGkoZSx0LG4sITEpfX07ZnVuY3Rpb24gaShlLHQsbixhKXt2YXIgaT1lLmdldEJsb2NrTWFwKCksdT10LmdldFN0YXJ0S2V5KCkscz10LmdldFN0YXJ0T2Zmc2V0KCksbD10LmdldEVuZEtleSgpLGM9dC5nZXRFbmRPZmZzZXQoKSxmPWkuc2tpcFVudGlsKChmdW5jdGlvbihlLHQpe3JldHVybiB0PT09dX0pKS50YWtlVW50aWwoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9PT1sfSkpLmNvbmNhdChvKFtbbCxpLmdldChsKV1dKSkubWFwKChmdW5jdGlvbihlLHQpe3ZhciBvLGk7dT09PWw/KG89cyxpPWMpOihvPXQ9PT11P3M6MCxpPXQ9PT1sP2M6ZS5nZXRMZW5ndGgoKSk7Zm9yKHZhciBmLGQ9ZS5nZXRDaGFyYWN0ZXJMaXN0KCk7bzxpOylmPWQuZ2V0KG8pLGQ9ZC5zZXQobyxhP3IuYXBwbHlTdHlsZShmLG4pOnIucmVtb3ZlU3R5bGUoZixuKSksbysrO3JldHVybiBlLnNldCgiY2hhcmFjdGVyTGlzdCIsZCl9KSk7cmV0dXJuIGUubWVyZ2Uoe2Jsb2NrTWFwOmkubWVyZ2UoZiksc2VsZWN0aW9uQmVmb3JlOnQsc2VsZWN0aW9uQWZ0ZXI6dH0pfWUuZXhwb3J0cz1hfSxNUEtDOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZnlPWSIpLG89bigiM3NPSiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1yLnNwbGl0QmxvY2soZS5nZXRDdXJyZW50Q29udGVudCgpLGUuZ2V0U2VsZWN0aW9uKCkpO3JldHVybiBvLnB1c2goZSx0LCJzcGxpdC1ibG9jayIpfX0sTWFmWDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkdyYXBoUUxFcnJvcj11LHQucHJpbnRFcnJvcj1zO3ZhciByLG89KHI9bigiNXdwTCIpKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn0sYT1uKCJQTzlvIiksaT1uKCJ5NHlKIik7ZnVuY3Rpb24gdShlLHQsbixyLGkscyxsKXt2YXIgYz1BcnJheS5pc0FycmF5KHQpPzAhPT10Lmxlbmd0aD90OnZvaWQgMDp0P1t0XTp2b2lkIDAsZj1uO2lmKCFmJiZjKXt2YXIgZD1jWzBdO2Y9ZCYmZC5sb2MmJmQubG9jLnNvdXJjZX12YXIgcCxoPXI7IWgmJmMmJihoPWMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0LmxvYyYmZS5wdXNoKHQubG9jLnN0YXJ0KSxlfSksW10pKSxoJiYwPT09aC5sZW5ndGgmJihoPXZvaWQgMCksciYmbj9wPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4oMCxhLmdldExvY2F0aW9uKShuLGUpfSkpOmMmJihwPWMucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiB0LmxvYyYmZS5wdXNoKCgwLGEuZ2V0TG9jYXRpb24pKHQubG9jLnNvdXJjZSx0LmxvYy5zdGFydCkpLGV9KSxbXSkpO3ZhciB5PWw7aWYobnVsbD09eSYmbnVsbCE9cyl7dmFyIG09cy5leHRlbnNpb25zOygwLG8uZGVmYXVsdCkobSkmJih5PW0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse21lc3NhZ2U6e3ZhbHVlOmUsZW51bWVyYWJsZTohMCx3cml0YWJsZTohMH0sbG9jYXRpb25zOnt2YWx1ZTpwfHx2b2lkIDAsZW51bWVyYWJsZTpCb29sZWFuKHApfSxwYXRoOnt2YWx1ZTppfHx2b2lkIDAsZW51bWVyYWJsZTpCb29sZWFuKGkpfSxub2Rlczp7dmFsdWU6Y3x8dm9pZCAwfSxzb3VyY2U6e3ZhbHVlOmZ8fHZvaWQgMH0scG9zaXRpb25zOnt2YWx1ZTpofHx2b2lkIDB9LG9yaWdpbmFsRXJyb3I6e3ZhbHVlOnN9LGV4dGVuc2lvbnM6e3ZhbHVlOnl8fHZvaWQgMCxlbnVtZXJhYmxlOkJvb2xlYW4oeSl9fSkscyYmcy5zdGFjaz9PYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic3RhY2siLHt2YWx1ZTpzLnN0YWNrLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOkVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdSk6T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInN0YWNrIix7dmFsdWU6RXJyb3IoKS5zdGFjayx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBzKGUpe3ZhciB0PWUubWVzc2FnZTtpZihlLm5vZGVzKWZvcih2YXIgbj0wLHI9ZS5ub2RlcztuPHIubGVuZ3RoO24rKyl7dmFyIG89cltuXTtvLmxvYyYmKHQrPSJcblxuIisoMCxpLnByaW50TG9jYXRpb24pKG8ubG9jKSl9ZWxzZSBpZihlLnNvdXJjZSYmZS5sb2NhdGlvbnMpZm9yKHZhciBhPTAsdT1lLmxvY2F0aW9uczthPHUubGVuZ3RoO2ErKyl7dmFyIHM9dVthXTt0Kz0iXG5cbiIrKDAsaS5wcmludFNvdXJjZUxvY2F0aW9uKShlLnNvdXJjZSxzKX1yZXR1cm4gdH11LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnV9LG5hbWU6e3ZhbHVlOiJHcmFwaFFMRXJyb3IifSx0b1N0cmluZzp7dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzKX19fSl9LE1iUkg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIShlJiYib3duZXJEb2N1bWVudCJpbiBlKSlyZXR1cm4hMTtpZigib3duZXJEb2N1bWVudCJpbiBlKXt2YXIgdD1lO2lmKCF0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpcmV0dXJuIHQgaW5zdGFuY2VvZiBOb2RlO2lmKHQgaW5zdGFuY2VvZiB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuTm9kZSlyZXR1cm4hMH1yZXR1cm4hMX19LE1nelc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZnVuY3Rpb24gaShlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdChlKX1lLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtpZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oIiIpKXJldHVybiExO3ZhciByPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09ZX0pKSwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxyKSkuam9pbigiIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4sdSxzPWkoZSksbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspe2Zvcih2YXIgYyBpbiBuPU9iamVjdChhcmd1bWVudHNbbF0pKW8uY2FsbChuLGMpJiYoc1tjXT1uW2NdKTtpZihyKXt1PXIobik7Zm9yKHZhciBmPTA7Zjx1Lmxlbmd0aDtmKyspYS5jYWxsKG4sdVtmXSkmJihzW3VbZl1dPW5bdVtmXV0pfX1yZXR1cm4gc319LE1oOHk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJKUGN2IikuTWFwO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIG89dC5nZXRTdGFydEtleSgpLGE9dC5nZXRFbmRLZXkoKSxpPWUuZ2V0QmxvY2tNYXAoKSx1PWkudG9TZXEoKS5za2lwVW50aWwoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9PT1vfSkpLnRha2VVbnRpbCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PWF9KSkuY29uY2F0KHIoW1thLGkuZ2V0KGEpXV0pKS5tYXAobik7cmV0dXJuIGUubWVyZ2Uoe2Jsb2NrTWFwOmkubWVyZ2UodSksc2VsZWN0aW9uQmVmb3JlOnQsc2VsZWN0aW9uQWZ0ZXI6dH0pfX0sTjNrNDpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9IiIsbihuLnM9NjEpfSh7MDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJxMXRJIil9LDE6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiSHNxZyIpfSwxMDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJYR0JiIil9LDE0OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIllaRFYiKX0sMjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI1ZjduIil9LDM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigidlYrRyIpfSw0OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjE3eDkiKX0sNDg6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigib09jciIpfSw1OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInljMmUiKX0sNjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJUU1lRIil9LDYxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9bShuKDApKSxpPW0obig0KSksdT1tKG4oMTQpKSxzPW0obigxMCkpLGw9bigxKSxjPW0obig3KSksZj1tKG4oNikpLGQ9bigzKSxwPW0obig1KSksaD1tKG4oNDgpKSx5PW4oMik7ZnVuY3Rpb24gbShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gdihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGcoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGI9KDAsbC5mb3JiaWRFeHRyYVByb3BzKSh7ZGF5OnMuZGVmYXVsdC5tb21lbnRPYmosZGF5U2l6ZTpsLm5vbk5lZ2F0aXZlSW50ZWdlcixpc091dHNpZGVEYXk6aS5kZWZhdWx0LmJvb2wsbW9kaWZpZXJzOmkuZGVmYXVsdC5pbnN0YW5jZU9mKFNldCksaXNGb2N1c2VkOmkuZGVmYXVsdC5ib29sLHRhYkluZGV4OmkuZGVmYXVsdC5vbmVPZihbMCwtMV0pLG9uRGF5Q2xpY2s6aS5kZWZhdWx0LmZ1bmMsb25EYXlNb3VzZUVudGVyOmkuZGVmYXVsdC5mdW5jLG9uRGF5TW91c2VMZWF2ZTppLmRlZmF1bHQuZnVuYyxyZW5kZXJEYXk6aS5kZWZhdWx0LmZ1bmMscGhyYXNlczppLmRlZmF1bHQuc2hhcGUoKDAscC5kZWZhdWx0KShkLkNhbGVuZGFyRGF5UGhyYXNlcykpfSksdz17ZGF5OigwLGMuZGVmYXVsdCkoKSxkYXlTaXplOnkuREFZX1NJWkUsaXNPdXRzaWRlRGF5OiExLG1vZGlmaWVyczpuZXcgU2V0LGlzRm9jdXNlZDohMSx0YWJJbmRleDotMSxvbkRheUNsaWNrOmZ1bmN0aW9uKCl7fSxvbkRheU1vdXNlRW50ZXI6ZnVuY3Rpb24oKXt9LG9uRGF5TW91c2VMZWF2ZTpmdW5jdGlvbigpe30scmVuZGVyRGF5Om51bGwscGhyYXNlczpkLkNhbGVuZGFyRGF5UGhyYXNlc30sXz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGU7dih0aGlzLHQpO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkobiksbz0wO288bjtvKyspcltvXT1hcmd1bWVudHNbb107dmFyIGE9Zyh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHIpKSk7cmV0dXJuIGEuc2V0QnV0dG9uUmVmPWEuc2V0QnV0dG9uUmVmLmJpbmQoYSksYX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiKyh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG8odCxbe2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybigwLHUuZGVmYXVsdCkodGhpcyxlLHQpfX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5pc0ZvY3VzZWQscj10LnRhYkluZGV4OzA9PT1yJiYobnx8ciE9PWUudGFiSW5kZXgpJiZ0aGlzLmJ1dHRvblJlZi5mb2N1cygpfX0se2tleToib25EYXlDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXsoMCx0aGlzLnByb3BzLm9uRGF5Q2xpY2spKGUsdCl9fSx7a2V5OiJvbkRheU1vdXNlRW50ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KDAsdGhpcy5wcm9wcy5vbkRheU1vdXNlRW50ZXIpKGUsdCl9fSx7a2V5OiJvbkRheU1vdXNlTGVhdmUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KDAsdGhpcy5wcm9wcy5vbkRheU1vdXNlTGVhdmUpKGUsdCl9fSx7a2V5OiJzZXRCdXR0b25SZWYiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuYnV0dG9uUmVmPWV9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LmRheSxyPXQuZGF5U2l6ZSxvPXQuaXNPdXRzaWRlRGF5LGk9dC5tb2RpZmllcnMsdT10LnJlbmRlckRheSxzPXQudGFiSW5kZXgsbD10LnBocmFzZXMsYz1sLmNob29zZUF2YWlsYWJsZURhdGUsZD1sLmRhdGVJc1VuYXZhaWxhYmxlO2lmKCFuKXJldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgidGQiLG51bGwpO3ZhciBwPSgwLGYuZGVmYXVsdCkoIkNhbGVuZGFyRGF5Iix7IkNhbGVuZGFyRGF5LS1vdXRzaWRlIjpvfSxBcnJheS5mcm9tKGksKGZ1bmN0aW9uKGUpe3JldHVybiJDYWxlbmRhckRheS0tIitTdHJpbmcoZSl9KSkpLG09U3RyaW5nKG4uZm9ybWF0KCJkZGRkIikpKyIsICIrU3RyaW5nKG4uZm9ybWF0KCJMTCIpKSx2PSgwLGguZGVmYXVsdCkoYyx7ZGF0ZTptfSk7eS5CTE9DS0VEX01PRElGSUVSIGluIGkmJmlbeS5CTE9DS0VEX01PRElGSUVSXShuKSYmKHY9KDAsaC5kZWZhdWx0KShkLHtkYXRlOm19KSk7dmFyIGc9e3dpZHRoOnIsaGVpZ2h0OnItMX07cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJ0ZCIse2NsYXNzTmFtZTpwLHN0eWxlOmd9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLHJlZjp0aGlzLnNldEJ1dHRvblJlZixjbGFzc05hbWU6IkNhbGVuZGFyRGF5X19idXR0b24iLCJhcmlhLWxhYmVsIjp2LG9uTW91c2VFbnRlcjpmdW5jdGlvbih0KXtlLm9uRGF5TW91c2VFbnRlcihuLHQpfSxvbk1vdXNlTGVhdmU6ZnVuY3Rpb24odCl7ZS5vbkRheU1vdXNlTGVhdmUobix0KX0sb25Nb3VzZVVwOmZ1bmN0aW9uKGUpe2UuY3VycmVudFRhcmdldC5ibHVyKCl9LG9uQ2xpY2s6ZnVuY3Rpb24odCl7ZS5vbkRheUNsaWNrKG4sdCl9LHRhYkluZGV4OnN9LHU/dShuKTpuLmZvcm1hdCgiRCIpKSl9fV0pLHR9KGEuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1fLF8ucHJvcFR5cGVzPWIsXy5kZWZhdWx0UHJvcHM9d30sNzpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ3ZC9SIil9fSl9LE44dTk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgbz1mdW5jdGlvbigpe307by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVybnNGYWxzZT1yKCExKSxvLnRoYXRSZXR1cm5zVHJ1ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1yKG51bGwpLG8udGhhdFJldHVybnNUaGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJldHVybnNBcmd1bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZS5leHBvcnRzPW99LE5obzY6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKCFyLmRlZmF1bHQuaXNNb21lbnQoZSl8fCFyLmRlZmF1bHQuaXNNb21lbnQodCkpJiYoISgwLG8uZGVmYXVsdCkoZSx0KSYmISgwLGEuZGVmYXVsdCkoZSx0KSl9O3ZhciByPWkobigid2QvUiIpKSxvPWkobigiaDZ4SCIpKSxhPWkobigicFJ2YyIpKTtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX19LE5sb2g6ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG4uZD1mdW5jdGlvbihlLHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsImEiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPSIiLG4obi5zPTY4KX0oW2Z1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInExdEkiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiSHNxZyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI1ZjduIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInZWK0ciKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiMTd4OSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ5YzJlIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlRTWVEiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigid2QvUiIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJhRTZVIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkxUQUMiKX0sLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIyUzJFIil9LCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJZWkRWIil9LCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVE9QeiIpfSwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJJZ0U1Iil9LCwsLCwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIm0yYXgiKX0sLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInE4NkEiKX0sLCwsLCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiRHpKQyIpfSwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiaThpNCIpfSwsLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIrNTFrIil9LCwsLCwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlRoenYiKX0sLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIxK0tuIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInpmSjUiKX0sLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdFByb3BzPXZvaWQgMDt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKTt0LmNhbGN1bGF0ZURpbWVuc2lvbj1OO3ZhciBhPUQobigwKSksaT1EKG4oNCkpLHU9RChuKDE0KSkscz1EKG4oMzkpKSxsPW4oMSksYz1EKG4oNykpLGY9RChuKDYpKSxkPUQobigzNykpLHA9RChuKDkpKSxoPW4oMykseT1EKG4oNSkpLG09RChuKDE3KSksdj1EKG4oNTMpKSxnPUQobig1NykpLGI9big1Niksdz1EKGIpLF89RChuKDMwKSksRT1EKG4oMjgpKSxPPUQobig0NikpLGs9RChuKDIxKSksQz1EKG4oOCkpLHg9RChuKDEyKSksUz1uKDIpO2Z1bmN0aW9uIEQoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBUPSgwLGwuZm9yYmlkRXh0cmFQcm9wcykoe2VuYWJsZU91dHNpZGVEYXlzOmkuZGVmYXVsdC5ib29sLG51bWJlck9mTW9udGhzOmkuZGVmYXVsdC5udW1iZXIsb3JpZW50YXRpb246Qy5kZWZhdWx0LHdpdGhQb3J0YWw6aS5kZWZhdWx0LmJvb2wsb25PdXRzaWRlQ2xpY2s6aS5kZWZhdWx0LmZ1bmMsaGlkZGVuOmkuZGVmYXVsdC5ib29sLGluaXRpYWxWaXNpYmxlTW9udGg6aS5kZWZhdWx0LmZ1bmMsZmlyc3REYXlPZldlZWs6eC5kZWZhdWx0LHJlbmRlckNhbGVuZGFySW5mbzppLmRlZmF1bHQuZnVuYyxoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDppLmRlZmF1bHQuYm9vbCxkYXlTaXplOmwubm9uTmVnYXRpdmVJbnRlZ2VyLGlzUlRMOmkuZGVmYXVsdC5ib29sLG5hdlByZXY6aS5kZWZhdWx0Lm5vZGUsbmF2TmV4dDppLmRlZmF1bHQubm9kZSxvblByZXZNb250aENsaWNrOmkuZGVmYXVsdC5mdW5jLG9uTmV4dE1vbnRoQ2xpY2s6aS5kZWZhdWx0LmZ1bmMsb25NdWx0aXBseVNjcm9sbGFibGVNb250aHM6aS5kZWZhdWx0LmZ1bmMscmVuZGVyTW9udGg6aS5kZWZhdWx0LmZ1bmMsbW9kaWZpZXJzOmkuZGVmYXVsdC5vYmplY3QscmVuZGVyRGF5OmkuZGVmYXVsdC5mdW5jLG9uRGF5Q2xpY2s6aS5kZWZhdWx0LmZ1bmMsb25EYXlNb3VzZUVudGVyOmkuZGVmYXVsdC5mdW5jLG9uRGF5TW91c2VMZWF2ZTppLmRlZmF1bHQuZnVuYyxpc0ZvY3VzZWQ6aS5kZWZhdWx0LmJvb2wsZ2V0Rmlyc3RGb2N1c2FibGVEYXk6aS5kZWZhdWx0LmZ1bmMsb25CbHVyOmkuZGVmYXVsdC5mdW5jLHNob3dLZXlib2FyZFNob3J0Y3V0czppLmRlZmF1bHQuYm9vbCxtb250aEZvcm1hdDppLmRlZmF1bHQuc3RyaW5nLHdlZWtEYXlGb3JtYXQ6aS5kZWZhdWx0LnN0cmluZyxwaHJhc2VzOmkuZGVmYXVsdC5zaGFwZSgoMCx5LmRlZmF1bHQpKGguRGF5UGlja2VyUGhyYXNlcykpfSksTT10LmRlZmF1bHRQcm9wcz17ZW5hYmxlT3V0c2lkZURheXM6ITEsbnVtYmVyT2ZNb250aHM6MixvcmllbnRhdGlvbjpTLkhPUklaT05UQUxfT1JJRU5UQVRJT04sd2l0aFBvcnRhbDohMSxvbk91dHNpZGVDbGljazpmdW5jdGlvbigpe30saGlkZGVuOiExLGluaXRpYWxWaXNpYmxlTW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4oMCxjLmRlZmF1bHQpKCl9LGZpcnN0RGF5T2ZXZWVrOm51bGwscmVuZGVyQ2FsZW5kYXJJbmZvOm51bGwsaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWw6ITEsZGF5U2l6ZTpTLkRBWV9TSVpFLGlzUlRMOiExLG5hdlByZXY6bnVsbCxuYXZOZXh0Om51bGwsb25QcmV2TW9udGhDbGljazpmdW5jdGlvbigpe30sb25OZXh0TW9udGhDbGljazpmdW5jdGlvbigpe30sb25NdWx0aXBseVNjcm9sbGFibGVNb250aHM6ZnVuY3Rpb24oKXt9LHJlbmRlck1vbnRoOm51bGwsbW9kaWZpZXJzOnt9LHJlbmRlckRheTpudWxsLG9uRGF5Q2xpY2s6ZnVuY3Rpb24oKXt9LG9uRGF5TW91c2VFbnRlcjpmdW5jdGlvbigpe30sb25EYXlNb3VzZUxlYXZlOmZ1bmN0aW9uKCl7fSxpc0ZvY3VzZWQ6ITEsZ2V0Rmlyc3RGb2N1c2FibGVEYXk6bnVsbCxvbkJsdXI6ZnVuY3Rpb24oKXt9LHNob3dLZXlib2FyZFNob3J0Y3V0czohMSxtb250aEZvcm1hdDoiTU1NTSBZWVlZIix3ZWVrRGF5Rm9ybWF0OiJkZCIscGhyYXNlczpoLkRheVBpY2tlclBocmFzZXN9O2Z1bmN0aW9uIFAoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiIscj0oMCxfLmRlZmF1bHQpKHQpO3Iub3BhY2l0eT1uLE9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Uuc3R5bGVbdF09clt0XX0pKX1mdW5jdGlvbiBOKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107aWYoIWUpcmV0dXJuIDA7dmFyIG89IndpZHRoIj09PXQ/IkxlZnQiOiJUb3AiLGE9IndpZHRoIj09PXQ/IlJpZ2h0IjoiQm90dG9tIixpPSFufHxyP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpOm51bGwsdT1lLm9mZnNldFdpZHRoLHM9ZS5vZmZzZXRIZWlnaHQsbD0id2lkdGgiPT09dD91OnM7cmV0dXJuIG58fChsLT1wYXJzZUZsb2F0KGlbInBhZGRpbmciK29dKStwYXJzZUZsb2F0KGlbInBhZGRpbmciK2FdKStwYXJzZUZsb2F0KGlbImJvcmRlciIrbysiV2lkdGgiXSkrcGFyc2VGbG9hdChpWyJib3JkZXIiK2ErIldpZHRoIl0pKSxyJiYobCs9cGFyc2VGbG9hdChpWyJtYXJnaW4iK29dKStwYXJzZUZsb2F0KGlbIm1hcmdpbiIrYV0pKSxsfWZ1bmN0aW9uIGooZSl7dmFyIHQ9ZS5xdWVyeVNlbGVjdG9yKCIuanMtQ2FsZW5kYXJNb250aF9fY2FwdGlvbiIpLG49ZS5xdWVyeVNlbGVjdG9yKCIuanMtQ2FsZW5kYXJNb250aF9fZ3JpZCIpO3JldHVybiBOKHQsImhlaWdodCIsITAsITApK04obiwiaGVpZ2h0IikrMX12YXIgTD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpLG89ZS5oaWRkZW4/KDAsYy5kZWZhdWx0KSgpOmUuaW5pdGlhbFZpc2libGVNb250aCgpLGE9by5jbG9uZSgpLnN0YXJ0T2YoIm1vbnRoIik7ZS5nZXRGaXJzdEZvY3VzYWJsZURheSYmKGE9ZS5nZXRGaXJzdEZvY3VzYWJsZURheShvKSk7dmFyIGk9ZS5pc1JUTCYmbi5pc0hvcml6b250YWwoKT8tKDAsRS5kZWZhdWx0KShlLmRheVNpemUpOjA7cmV0dXJuIG4uaGFzU2V0SW5pdGlhbFZpc2libGVNb250aD0hZS5oaWRkZW4sbi5zdGF0ZT17Y3VycmVudE1vbnRoOm8sbW9udGhUcmFuc2l0aW9uOm51bGwsdHJhbnNsYXRpb25WYWx1ZTppLHNjcm9sbGFibGVNb250aE11bHRpcGxlOjEsY2FsZW5kYXJNb250aFdpZHRoOigwLEUuZGVmYXVsdCkoZS5kYXlTaXplKSxmb2N1c2VkRGF0ZTohZS5oaWRkZW58fGUuaXNGb2N1c2VkP2E6bnVsbCxuZXh0Rm9jdXNlZERhdGU6bnVsbCxzaG93S2V5Ym9hcmRTaG9ydGN1dHM6ZS5zaG93S2V5Ym9hcmRTaG9ydGN1dHMsb25LZXlib2FyZFNob3J0Y3V0c1BhbmVsQ2xvc2U6ZnVuY3Rpb24oKXt9LGlzVG91Y2hEZXZpY2U6KDAscC5kZWZhdWx0KSgpLHdpdGhNb3VzZUludGVyYWN0aW9uczohMH0sbi5vbktleURvd249bi5vbktleURvd24uYmluZChuKSxuLm9uUHJldk1vbnRoQ2xpY2s9bi5vblByZXZNb250aENsaWNrLmJpbmQobiksbi5vbk5leHRNb250aENsaWNrPW4ub25OZXh0TW9udGhDbGljay5iaW5kKG4pLG4uc2V0Q2FsZW5kYXJNb250aEdyaWRSZWY9bi5zZXRDYWxlbmRhck1vbnRoR3JpZFJlZi5iaW5kKG4pLG4ubXVsdGlwbHlTY3JvbGxhYmxlTW9udGhzPW4ubXVsdGlwbHlTY3JvbGxhYmxlTW9udGhzLmJpbmQobiksbi51cGRhdGVTdGF0ZUFmdGVyTW9udGhUcmFuc2l0aW9uPW4udXBkYXRlU3RhdGVBZnRlck1vbnRoVHJhbnNpdGlvbi5iaW5kKG4pLG4ub3BlbktleWJvYXJkU2hvcnRjdXRzUGFuZWw9bi5vcGVuS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbC5iaW5kKG4pLG4uY2xvc2VLZXlib2FyZFNob3J0Y3V0c1BhbmVsPW4uY2xvc2VLZXlib2FyZFNob3J0Y3V0c1BhbmVsLmJpbmQobiksbi5zZXRDb250YWluZXJSZWY9bi5zZXRDb250YWluZXJSZWYuYmluZChuKSxuLnNldFRyYW5zaXRpb25Db250YWluZXJSZWY9bi5zZXRUcmFuc2l0aW9uQ29udGFpbmVyUmVmLmJpbmQobiksbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiKyh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG8odCxbe2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRTdGF0ZSh7aXNUb3VjaERldmljZTooMCxwLmRlZmF1bHQpKCl9KSx0aGlzLmlzSG9yaXpvbnRhbCgpJiYodGhpcy5hZGp1c3REYXlQaWNrZXJIZWlnaHQoKSx0aGlzLmluaXRpYWxpemVEYXlQaWNrZXJXaWR0aCgpKX19LHtrZXk6ImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuaGlkZGVuLG49ZS5pc0ZvY3VzZWQscj1lLnNob3dLZXlib2FyZFNob3J0Y3V0cyxvPWUub25CbHVyLGE9dGhpcy5zdGF0ZS5jdXJyZW50TW9udGg7aWYodHx8KHRoaXMuaGFzU2V0SW5pdGlhbFZpc2libGVNb250aHx8KHRoaXMuaGFzU2V0SW5pdGlhbFZpc2libGVNb250aD0hMCx0aGlzLnNldFN0YXRlKHtjdXJyZW50TW9udGg6ZS5pbml0aWFsVmlzaWJsZU1vbnRoKCl9KSksIXRoaXMuZGF5UGlja2VyV2lkdGgmJnRoaXMuaXNIb3Jpem9udGFsKCkmJih0aGlzLmluaXRpYWxpemVEYXlQaWNrZXJXaWR0aCgpLHRoaXMuYWRqdXN0RGF5UGlja2VySGVpZ2h0KCkpKSxlLmRheVNpemUhPT10aGlzLnByb3BzLmRheVNpemUmJnRoaXMuc2V0U3RhdGUoe2NhbGVuZGFyTW9udGhXaWR0aDooMCxFLmRlZmF1bHQpKGUuZGF5U2l6ZSl9KSxuIT09dGhpcy5wcm9wcy5pc0ZvY3VzZWQpaWYobil7dmFyIGk9dGhpcy5nZXRGb2N1c2VkRGF5KGEpLHU9dGhpcy5zdGF0ZS5vbktleWJvYXJkU2hvcnRjdXRzUGFuZWxDbG9zZTtlLnNob3dLZXlib2FyZFNob3J0Y3V0cyYmKHU9byksdGhpcy5zZXRTdGF0ZSh7c2hvd0tleWJvYXJkU2hvcnRjdXRzOnIsb25LZXlib2FyZFNob3J0Y3V0c1BhbmVsQ2xvc2U6dSxmb2N1c2VkRGF0ZTppLHdpdGhNb3VzZUludGVyYWN0aW9uczohMX0pfWVsc2UgdGhpcy5zZXRTdGF0ZSh7Zm9jdXNlZERhdGU6bnVsbH0pfX0se2tleToic2hvdWxkQ29tcG9uZW50VXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybigwLHUuZGVmYXVsdCkodGhpcyxlLHQpfX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucHJvcHMubnVtYmVyT2ZNb250aHMscj10aGlzLnN0YXRlLG89ci5tb250aFRyYW5zaXRpb24sYT1yLmN1cnJlbnRNb250aCxpPXIuZm9jdXNlZERhdGU7IW8mJmEuaXNTYW1lKHQuY3VycmVudE1vbnRoKSYmbj09PWUubnVtYmVyT2ZNb250aHN8fHRoaXMuaXNIb3Jpem9udGFsKCkmJnRoaXMuYWRqdXN0RGF5UGlja2VySGVpZ2h0KCksKCFlLmlzRm9jdXNlZCYmdGhpcy5wcm9wcy5pc0ZvY3VzZWQmJiFpfHwhZS5zaG93S2V5Ym9hcmRTaG9ydGN1dHMmJnRoaXMucHJvcHMuc2hvd0tleWJvYXJkU2hvcnRjdXRzKSYmdGhpcy5jb250YWluZXIuZm9jdXMoKX19LHtrZXk6Im9uS2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnNldFN0YXRlKHt3aXRoTW91c2VJbnRlcmFjdGlvbnM6ITF9KTt2YXIgdD10aGlzLnByb3BzLm9uQmx1cixuPXRoaXMuc3RhdGUscj1uLmZvY3VzZWREYXRlLG89bi5zaG93S2V5Ym9hcmRTaG9ydGN1dHM7aWYocil7dmFyIGE9ci5jbG9uZSgpLGk9ITEsdT0oMCxPLmRlZmF1bHQpKCkscz1mdW5jdGlvbigpe3UmJnUuZm9jdXMoKX07c3dpdGNoKGUua2V5KXtjYXNlIkFycm93VXAiOmUucHJldmVudERlZmF1bHQoKSxhLnN1YnRyYWN0KDEsIndlZWsiKSxpPXRoaXMubWF5YmVUcmFuc2l0aW9uUHJldk1vbnRoKGEpO2JyZWFrO2Nhc2UiQXJyb3dMZWZ0IjplLnByZXZlbnREZWZhdWx0KCksYS5zdWJ0cmFjdCgxLCJkYXkiKSxpPXRoaXMubWF5YmVUcmFuc2l0aW9uUHJldk1vbnRoKGEpO2JyZWFrO2Nhc2UiSG9tZSI6ZS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RhcnRPZigid2VlayIpLGk9dGhpcy5tYXliZVRyYW5zaXRpb25QcmV2TW9udGgoYSk7YnJlYWs7Y2FzZSJQYWdlVXAiOmUucHJldmVudERlZmF1bHQoKSxhLnN1YnRyYWN0KDEsIm1vbnRoIiksaT10aGlzLm1heWJlVHJhbnNpdGlvblByZXZNb250aChhKTticmVhaztjYXNlIkFycm93RG93biI6ZS5wcmV2ZW50RGVmYXVsdCgpLGEuYWRkKDEsIndlZWsiKSxpPXRoaXMubWF5YmVUcmFuc2l0aW9uTmV4dE1vbnRoKGEpO2JyZWFrO2Nhc2UiQXJyb3dSaWdodCI6ZS5wcmV2ZW50RGVmYXVsdCgpLGEuYWRkKDEsImRheSIpLGk9dGhpcy5tYXliZVRyYW5zaXRpb25OZXh0TW9udGgoYSk7YnJlYWs7Y2FzZSJFbmQiOmUucHJldmVudERlZmF1bHQoKSxhLmVuZE9mKCJ3ZWVrIiksaT10aGlzLm1heWJlVHJhbnNpdGlvbk5leHRNb250aChhKTticmVhaztjYXNlIlBhZ2VEb3duIjplLnByZXZlbnREZWZhdWx0KCksYS5hZGQoMSwibW9udGgiKSxpPXRoaXMubWF5YmVUcmFuc2l0aW9uTmV4dE1vbnRoKGEpO2JyZWFrO2Nhc2UiPyI6dGhpcy5vcGVuS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbChzKTticmVhaztjYXNlIkVzY2FwZSI6bz90aGlzLmNsb3NlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbCgpOnQoKX1pfHx0aGlzLnNldFN0YXRlKHtmb2N1c2VkRGF0ZTphfSl9fX0se2tleToib25QcmV2TW9udGhDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnByb3BzLmlzUlRMO3QmJnQucHJldmVudERlZmF1bHQoKTt2YXIgcj10aGlzLmlzVmVydGljYWwoKT90aGlzLmdldE1vbnRoSGVpZ2h0QnlJbmRleCgwKTp0aGlzLmRheVBpY2tlcldpZHRoO24mJnRoaXMuaXNIb3Jpem9udGFsKCkmJihyPS0yKnRoaXMuZGF5UGlja2VyV2lkdGgpLHRoaXMudHJhbnNsYXRlRmlyc3REYXlQaWNrZXJGb3JBbmltYXRpb24ociksdGhpcy5zZXRTdGF0ZSh7bW9udGhUcmFuc2l0aW9uOiJwcmV2Iix0cmFuc2xhdGlvblZhbHVlOnIsZm9jdXNlZERhdGU6bnVsbCxuZXh0Rm9jdXNlZERhdGU6ZX0pfX0se2tleToib25OZXh0TW9udGhDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnByb3BzLmlzUlRMO3QmJnQucHJldmVudERlZmF1bHQoKTt2YXIgcj10aGlzLmlzVmVydGljYWwoKT8tdGhpcy5nZXRNb250aEhlaWdodEJ5SW5kZXgoMSk6LXRoaXMuZGF5UGlja2VyV2lkdGg7biYmdGhpcy5pc0hvcml6b250YWwoKSYmKHI9MCksdGhpcy5zZXRTdGF0ZSh7bW9udGhUcmFuc2l0aW9uOiJuZXh0Iix0cmFuc2xhdGlvblZhbHVlOnIsZm9jdXNlZERhdGU6bnVsbCxuZXh0Rm9jdXNlZERhdGU6ZX0pfX0se2tleToiZ2V0Rm9jdXNlZERheSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQuZ2V0Rmlyc3RGb2N1c2FibGVEYXkscj10Lm51bWJlck9mTW9udGhzLG89dm9pZCAwO3JldHVybiBuJiYobz1uKGUpKSwhZXx8byYmKDAsay5kZWZhdWx0KShvLGUscil8fChvPWUuY2xvbmUoKS5zdGFydE9mKCJtb250aCIpKSxvfX0se2tleToiZ2V0TW9udGhIZWlnaHRCeUluZGV4Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gaih0aGlzLnRyYW5zaXRpb25Db250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiLkNhbGVuZGFyTW9udGgiKVtlXSl9fSx7a2V5OiJzZXRDYWxlbmRhck1vbnRoR3JpZFJlZiIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5jYWxlbmRhck1vbnRoR3JpZD1lfX0se2tleToic2V0Q29udGFpbmVyUmVmIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmNvbnRhaW5lcj1lfX0se2tleToic2V0VHJhbnNpdGlvbkNvbnRhaW5lclJlZiIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy50cmFuc2l0aW9uQ29udGFpbmVyPWV9fSx7a2V5OiJtYXliZVRyYW5zaXRpb25OZXh0TW9udGgiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMubnVtYmVyT2ZNb250aHMsbj10aGlzLnN0YXRlLHI9bi5jdXJyZW50TW9udGgsbz1uLmZvY3VzZWREYXRlLGE9ZS5tb250aCgpLGk9by5tb250aCgpLHU9KDAsay5kZWZhdWx0KShlLHIsdCk7cmV0dXJuIGEhPT1pJiYhdSYmKHRoaXMub25OZXh0TW9udGhDbGljayhlKSwhMCl9fSx7a2V5OiJtYXliZVRyYW5zaXRpb25QcmV2TW9udGgiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMubnVtYmVyT2ZNb250aHMsbj10aGlzLnN0YXRlLHI9bi5jdXJyZW50TW9udGgsbz1uLmZvY3VzZWREYXRlLGE9ZS5tb250aCgpLGk9by5tb250aCgpLHU9KDAsay5kZWZhdWx0KShlLHIsdCk7cmV0dXJuIGEhPT1pJiYhdSYmKHRoaXMub25QcmV2TW9udGhDbGljayhlKSwhMCl9fSx7a2V5OiJtdWx0aXBseVNjcm9sbGFibGVNb250aHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMub25NdWx0aXBseVNjcm9sbGFibGVNb250aHM7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLHQmJnQoZSksdGhpcy5zZXRTdGF0ZSh7c2Nyb2xsYWJsZU1vbnRoTXVsdGlwbGU6dGhpcy5zdGF0ZS5zY3JvbGxhYmxlTW9udGhNdWx0aXBsZSsxfSl9fSx7a2V5OiJpc0hvcml6b250YWwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMub3JpZW50YXRpb249PT1TLkhPUklaT05UQUxfT1JJRU5UQVRJT059fSx7a2V5OiJpc1ZlcnRpY2FsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLm9yaWVudGF0aW9uPT09Uy5WRVJUSUNBTF9PUklFTlRBVElPTnx8dGhpcy5wcm9wcy5vcmllbnRhdGlvbj09PVMuVkVSVElDQUxfU0NST0xMQUJMRX19LHtrZXk6ImluaXRpYWxpemVEYXlQaWNrZXJXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmNhbGVuZGFyTW9udGhHcmlkKXt2YXIgZT1zLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcy5jYWxlbmRhck1vbnRoR3JpZCk7ZSYmKHRoaXMuZGF5UGlja2VyV2lkdGg9TihlLnF1ZXJ5U2VsZWN0b3IoIi5DYWxlbmRhck1vbnRoIiksIndpZHRoIiwhMCkpfX19LHtrZXk6InVwZGF0ZVN0YXRlQWZ0ZXJNb250aFRyYW5zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUub25QcmV2TW9udGhDbGljayxuPWUub25OZXh0TW9udGhDbGljayxyPXRoaXMuc3RhdGUsbz1yLmN1cnJlbnRNb250aCxhPXIubW9udGhUcmFuc2l0aW9uLGk9ci5mb2N1c2VkRGF0ZSx1PXIubmV4dEZvY3VzZWREYXRlLGw9ci53aXRoTW91c2VJbnRlcmFjdGlvbnM7aWYoYSl7dmFyIGM9by5jbG9uZSgpOyJwcmV2Ij09PWE/KHQmJnQoKSxjLnN1YnRyYWN0KDEsIm1vbnRoIikpOiJuZXh0Ij09PWEmJihuJiZuKCksYy5hZGQoMSwibW9udGgiKSk7dmFyIGY9bnVsbDtpZih1P2Y9dTppfHxsfHwoZj10aGlzLmdldEZvY3VzZWREYXkoYykpLHRoaXMuY2FsZW5kYXJNb250aEdyaWQpe3ZhciBkPXMuZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzLmNhbGVuZGFyTW9udGhHcmlkKTtkJiZQKGQucXVlcnlTZWxlY3RvcigiLkNhbGVuZGFyTW9udGgiKSwibm9uZSIpfXRoaXMuc2V0U3RhdGUoe2N1cnJlbnRNb250aDpjLG1vbnRoVHJhbnNpdGlvbjpudWxsLHRyYW5zbGF0aW9uVmFsdWU6dGhpcy5wcm9wcy5pc1JUTCYmdGhpcy5pc0hvcml6b250YWwoKT8tdGhpcy5kYXlQaWNrZXJXaWR0aDowLG5leHRGb2N1c2VkRGF0ZTpudWxsLGZvY3VzZWREYXRlOmZ9LChmdW5jdGlvbigpe2lmKGwpe3ZhciBlPSgwLE8uZGVmYXVsdCkoKTtlJiZlIT09ZG9jdW1lbnQuYm9keSYmZS5ibHVyKCl9fSkpfX19LHtrZXk6ImFkanVzdERheVBpY2tlckhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1bXTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHRoaXMudHJhbnNpdGlvbkNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuQ2FsZW5kYXJNb250aCIpLChmdW5jdGlvbih0KXsidHJ1ZSI9PT10LmdldEF0dHJpYnV0ZSgiZGF0YS12aXNpYmxlIikmJmUucHVzaChqKHQpKX0pKTt2YXIgdD1NYXRoLm1heC5hcHBseShNYXRoLGUpKzIzO3QhPT1OKHRoaXMudHJhbnNpdGlvbkNvbnRhaW5lciwiaGVpZ2h0IikmJih0aGlzLm1vbnRoSGVpZ2h0PXQsdGhpcy50cmFuc2l0aW9uQ29udGFpbmVyLnN0eWxlLmhlaWdodD1TdHJpbmcodCkrInB4Iil9fSx7a2V5OiJ0cmFuc2xhdGVGaXJzdERheVBpY2tlckZvckFuaW1hdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9LWU7dGhpcy5wcm9wcy5pc1JUTCYmdGhpcy5pc0hvcml6b250YWwoKSYmKHQ9TWF0aC5hYnMoZSt0aGlzLmRheVBpY2tlcldpZHRoKSk7dmFyIG49KHRoaXMuaXNWZXJ0aWNhbCgpPyJ0cmFuc2xhdGVZIjoidHJhbnNsYXRlWCIpKyIoIitTdHJpbmcodCkrInB4KSI7UCh0aGlzLnRyYW5zaXRpb25Db250YWluZXIucXVlcnlTZWxlY3RvcigiLkNhbGVuZGFyTW9udGgiKSxuLDEpfX0se2tleToib3BlbktleWJvYXJkU2hvcnRjdXRzUGFuZWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Nob3dLZXlib2FyZFNob3J0Y3V0czohMCxvbktleWJvYXJkU2hvcnRjdXRzUGFuZWxDbG9zZTplfSl9fSx7a2V5OiJjbG9zZUtleWJvYXJkU2hvcnRjdXRzUGFuZWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5vbktleWJvYXJkU2hvcnRjdXRzUGFuZWxDbG9zZTtlJiZlKCksdGhpcy5zZXRTdGF0ZSh7b25LZXlib2FyZFNob3J0Y3V0c1BhbmVsQ2xvc2U6bnVsbCxzaG93S2V5Ym9hcmRTaG9ydGN1dHM6ITF9KX19LHtrZXk6InJlbmRlck5hdmlnYXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10Lm5hdlByZXYscj10Lm5hdk5leHQsbz10Lm9yaWVudGF0aW9uLGk9dC5waHJhc2VzLHU9dC5pc1JUTCxzPXZvaWQgMDtyZXR1cm4gcz1vPT09Uy5WRVJUSUNBTF9TQ1JPTExBQkxFP3RoaXMubXVsdGlwbHlTY3JvbGxhYmxlTW9udGhzOmZ1bmN0aW9uKHQpe2Uub25OZXh0TW9udGhDbGljayhudWxsLHQpfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChnLmRlZmF1bHQse29uUHJldk1vbnRoQ2xpY2s6ZnVuY3Rpb24odCl7ZS5vblByZXZNb250aENsaWNrKG51bGwsdCl9LG9uTmV4dE1vbnRoQ2xpY2s6cyxuYXZQcmV2Om4sbmF2TmV4dDpyLG9yaWVudGF0aW9uOm8scGhyYXNlczppLGlzUlRMOnV9KX19LHtrZXk6InJlbmRlcldlZWtIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmRheVNpemUscj10Lm9yaWVudGF0aW9uLG89dC53ZWVrRGF5Rm9ybWF0LGk9dGhpcy5zdGF0ZS5jYWxlbmRhck1vbnRoV2lkdGgsdT1yPT09Uy5WRVJUSUNBTF9TQ1JPTExBQkxFLHM9e2xlZnQ6ZSppfSxsPXttYXJnaW5MZWZ0Oi1pLzJ9LGY9e307dGhpcy5pc0hvcml6b250YWwoKT9mPXM6dGhpcy5pc1ZlcnRpY2FsKCkmJiF1JiYoZj1sKTt2YXIgZD10aGlzLnByb3BzLmZpcnN0RGF5T2ZXZWVrO251bGw9PWQmJihkPWMuZGVmYXVsdC5sb2NhbGVEYXRhKCkuZmlyc3REYXlPZldlZWsoKSk7Zm9yKHZhciBwPVtdLGg9MDtoPDc7aCs9MSlwLnB1c2goYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImxpIix7a2V5Omgsc3R5bGU6e3dpZHRoOm59fSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic21hbGwiLG51bGwsKDAsYy5kZWZhdWx0KSgpLmRheSgoaCtkKSU3KS5mb3JtYXQobykpKSk7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRheVBpY2tlcl9fd2Vlay1oZWFkZXIiLGtleToid2Vlay0iK1N0cmluZyhlKSxzdHlsZTpmfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgidWwiLG51bGwscCkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9dGhpcy5zdGF0ZSxuPXQuY2FsZW5kYXJNb250aFdpZHRoLHI9dC5jdXJyZW50TW9udGgsbz10Lm1vbnRoVHJhbnNpdGlvbixpPXQudHJhbnNsYXRpb25WYWx1ZSx1PXQuc2Nyb2xsYWJsZU1vbnRoTXVsdGlwbGUscz10LmZvY3VzZWREYXRlLGw9dC5zaG93S2V5Ym9hcmRTaG9ydGN1dHMsYz10LmlzVG91Y2hEZXZpY2UscD10aGlzLnByb3BzLGg9cC5lbmFibGVPdXRzaWRlRGF5cyx5PXAubnVtYmVyT2ZNb250aHMsZz1wLm9yaWVudGF0aW9uLF89cC5tb2RpZmllcnMsRT1wLndpdGhQb3J0YWwsTz1wLm9uRGF5Q2xpY2ssaz1wLm9uRGF5TW91c2VFbnRlcixDPXAub25EYXlNb3VzZUxlYXZlLHg9cC5maXJzdERheU9mV2VlayxEPXAucmVuZGVyTW9udGgsVD1wLnJlbmRlckRheSxNPXAucmVuZGVyQ2FsZW5kYXJJbmZvLFA9cC5oaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbCxOPXAub25PdXRzaWRlQ2xpY2ssaj1wLm1vbnRoRm9ybWF0LEw9cC5kYXlTaXplLFI9cC5pc0ZvY3VzZWQsST1wLnBocmFzZXMsQT10aGlzLmlzVmVydGljYWwoKT8xOnksRj1bXSxCPTA7QjxBO0IrPTEpRi5wdXNoKHRoaXMucmVuZGVyV2Vla0hlYWRlcihCKSk7dmFyIHo9MTsicHJldiI9PT1vP3otPTE6Im5leHQiPT09byYmKHorPTEpO3ZhciBLPXRoaXMucHJvcHMub3JpZW50YXRpb249PT1TLlZFUlRJQ0FMX1NDUk9MTEFCTEU7SyYmKHo9MCk7dmFyIHE9KDAsZi5kZWZhdWx0KSgiRGF5UGlja2VyIix7IkRheVBpY2tlci0taG9yaXpvbnRhbCI6dGhpcy5pc0hvcml6b250YWwoKSwiRGF5UGlja2VyLS12ZXJ0aWNhbCI6dGhpcy5pc1ZlcnRpY2FsKCksIkRheVBpY2tlci0tdmVydGljYWwtc2Nyb2xsYWJsZSI6SywiRGF5UGlja2VyLS1wb3J0YWwiOkV9KSxWPSgwLGYuZGVmYXVsdCkoInRyYW5zaXRpb24tY29udGFpbmVyIix7InRyYW5zaXRpb24tY29udGFpbmVyLS1ob3Jpem9udGFsIjp0aGlzLmlzSG9yaXpvbnRhbCgpLCJ0cmFuc2l0aW9uLWNvbnRhaW5lci0tdmVydGljYWwiOnRoaXMuaXNWZXJ0aWNhbCgpfSksVT1uKnkrMTgsVz0xLjc1Km4sWT17d2lkdGg6dGhpcy5pc0hvcml6b250YWwoKSYmVSxtYXJnaW5MZWZ0OnRoaXMuaXNIb3Jpem9udGFsKCkmJkUmJi1VLzIsbWFyZ2luVG9wOnRoaXMuaXNIb3Jpem9udGFsKCkmJkUmJi1uLzJ9LEg9e3dpZHRoOnRoaXMuaXNIb3Jpem9udGFsKCkmJlUsaGVpZ2h0OnRoaXMuaXNWZXJ0aWNhbCgpJiYhSyYmIUUmJld9LEc9bnVsbCE9PW8sUT0odGhpcy5pc1ZlcnRpY2FsKCk/InRyYW5zbGF0ZVkiOiJ0cmFuc2xhdGVYIikrIigiK1N0cmluZyhpKSsicHgpIixKPSFHJiZSLFo9Yi5CT1RUT01fUklHSFQ7cmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpJiYoWj1FP2IuVE9QX0xFRlQ6Yi5UT1BfUklHSFQpLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6cSxzdHlsZTpZLHJvbGU6ImFwcGxpY2F0aW9uIiwiYXJpYS1sYWJlbCI6SS5jYWxlbmRhckxhYmVsfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQse29uT3V0c2lkZUNsaWNrOk59LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkRheVBpY2tlcl9fd2Vlay1oZWFkZXJzIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixyb2xlOiJwcmVzZW50YXRpb24ifSxGKSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJEYXlQaWNrZXJfX2ZvY3VzLXJlZ2lvbiIscmVmOnRoaXMuc2V0Q29udGFpbmVyUmVmLG9uQ2xpY2s6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0sb25LZXlEb3duOigwLGQuZGVmYXVsdCkodGhpcy5vbktleURvd24sMzAwKSxvbk1vdXNlVXA6ZnVuY3Rpb24oKXtlLnNldFN0YXRlKHt3aXRoTW91c2VJbnRlcmFjdGlvbnM6ITB9KX0scm9sZToicmVnaW9uIix0YWJJbmRleDotMX0sIUsmJnRoaXMucmVuZGVyTmF2aWdhdGlvbigpLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6VixyZWY6dGhpcy5zZXRUcmFuc2l0aW9uQ29udGFpbmVyUmVmLHN0eWxlOkh9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHYuZGVmYXVsdCx7cmVmOnRoaXMuc2V0Q2FsZW5kYXJNb250aEdyaWRSZWYsdHJhbnNmb3JtVmFsdWU6USxlbmFibGVPdXRzaWRlRGF5czpoLGZpcnN0VmlzaWJsZU1vbnRoSW5kZXg6eixpbml0aWFsTW9udGg6cixpc0FuaW1hdGluZzpHLG1vZGlmaWVyczpfLG9yaWVudGF0aW9uOmcsbnVtYmVyT2ZNb250aHM6eSp1LG9uRGF5Q2xpY2s6TyxvbkRheU1vdXNlRW50ZXI6ayxvbkRheU1vdXNlTGVhdmU6QyxyZW5kZXJNb250aDpELHJlbmRlckRheTpULG9uTW9udGhUcmFuc2l0aW9uRW5kOnRoaXMudXBkYXRlU3RhdGVBZnRlck1vbnRoVHJhbnNpdGlvbixtb250aEZvcm1hdDpqLGRheVNpemU6TCxmaXJzdERheU9mV2Vlazp4LGlzRm9jdXNlZDpKLGZvY3VzZWREYXRlOnMscGhyYXNlczpJfSksSyYmdGhpcy5yZW5kZXJOYXZpZ2F0aW9uKCkpLCFjJiYhUCYmYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQody5kZWZhdWx0LHtibG9jazp0aGlzLmlzVmVydGljYWwoKSYmIUUsYnV0dG9uTG9jYXRpb246WixzaG93S2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDpsLG9wZW5LZXlib2FyZFNob3J0Y3V0c1BhbmVsOnRoaXMub3BlbktleWJvYXJkU2hvcnRjdXRzUGFuZWwsY2xvc2VLZXlib2FyZFNob3J0Y3V0c1BhbmVsOnRoaXMuY2xvc2VLZXlib2FyZFNob3J0Y3V0c1BhbmVsLHBocmFzZXM6SX0pKSxNJiZNKCkpKX19XSksdH0oYS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PUwsTC5wcm9wVHlwZXM9VCxMLmRlZmF1bHRQcm9wcz1NfV0pfSxOc2JrOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZS5leHBvcnRzPW49T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbih0KX1lLmV4cG9ydHM9bn0sIk54NCsiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZnlPWSIpLG89bigiM3NPSiIpLGE9bigiQUtQVCIpLGk9bigicXlzdiIpLHU9e2N1cnJlbnRCbG9ja0NvbnRhaW5zTGluazpmdW5jdGlvbihlKXt2YXIgdD1lLmdldFNlbGVjdGlvbigpLG49ZS5nZXRDdXJyZW50Q29udGVudCgpLHI9bi5nZXRFbnRpdHlNYXAoKTtyZXR1cm4gbi5nZXRCbG9ja0ZvcktleSh0LmdldEFuY2hvcktleSgpKS5nZXRDaGFyYWN0ZXJMaXN0KCkuc2xpY2UodC5nZXRTdGFydE9mZnNldCgpLHQuZ2V0RW5kT2Zmc2V0KCkpLnNvbWUoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0RW50aXR5KCk7cmV0dXJuISF0JiYiTElOSyI9PT1yLl9fZ2V0KHQpLmdldFR5cGUoKX0pKX0sZ2V0Q3VycmVudEJsb2NrVHlwZTpmdW5jdGlvbihlKXt2YXIgdD1lLmdldFNlbGVjdGlvbigpO3JldHVybiBlLmdldEN1cnJlbnRDb250ZW50KCkuZ2V0QmxvY2tGb3JLZXkodC5nZXRTdGFydEtleSgpKS5nZXRUeXBlKCl9LGdldERhdGFPYmplY3RGb3JMaW5rVVJMOmZ1bmN0aW9uKGUpe3JldHVybnt1cmw6ZS50b1N0cmluZygpfX0saGFuZGxlS2V5Q29tbWFuZDpmdW5jdGlvbihlLHQsbil7c3dpdGNoKHQpe2Nhc2UiYm9sZCI6cmV0dXJuIHUudG9nZ2xlSW5saW5lU3R5bGUoZSwiQk9MRCIpO2Nhc2UiaXRhbGljIjpyZXR1cm4gdS50b2dnbGVJbmxpbmVTdHlsZShlLCJJVEFMSUMiKTtjYXNlInVuZGVybGluZSI6cmV0dXJuIHUudG9nZ2xlSW5saW5lU3R5bGUoZSwiVU5ERVJMSU5FIik7Y2FzZSJjb2RlIjpyZXR1cm4gdS50b2dnbGVDb2RlKGUpO2Nhc2UiYmFja3NwYWNlIjpjYXNlImJhY2tzcGFjZS13b3JkIjpjYXNlImJhY2tzcGFjZS10by1zdGFydC1vZi1saW5lIjpyZXR1cm4gdS5vbkJhY2tzcGFjZShlKTtjYXNlImRlbGV0ZSI6Y2FzZSJkZWxldGUtd29yZCI6Y2FzZSJkZWxldGUtdG8tZW5kLW9mLWJsb2NrIjpyZXR1cm4gdS5vbkRlbGV0ZShlKTtkZWZhdWx0OnJldHVybiBudWxsfX0saW5zZXJ0U29mdE5ld2xpbmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ci5pbnNlcnRUZXh0KGUuZ2V0Q3VycmVudENvbnRlbnQoKSxlLmdldFNlbGVjdGlvbigpLCJcbiIsZS5nZXRDdXJyZW50SW5saW5lU3R5bGUoKSxudWxsKSxuPW8ucHVzaChlLHQsImluc2VydC1jaGFyYWN0ZXJzIik7cmV0dXJuIG8uZm9yY2VTZWxlY3Rpb24obix0LmdldFNlbGVjdGlvbkFmdGVyKCkpfSxvbkJhY2tzcGFjZTpmdW5jdGlvbihlKXt2YXIgdD1lLmdldFNlbGVjdGlvbigpO2lmKCF0LmlzQ29sbGFwc2VkKCl8fHQuZ2V0QW5jaG9yT2Zmc2V0KCl8fHQuZ2V0Rm9jdXNPZmZzZXQoKSlyZXR1cm4gbnVsbDt2YXIgbj1lLmdldEN1cnJlbnRDb250ZW50KCkscj10LmdldFN0YXJ0S2V5KCksYT1uLmdldEJsb2NrQmVmb3JlKHIpO2lmKGEmJiJhdG9taWMiPT09YS5nZXRUeXBlKCkpe3ZhciBpPW4uZ2V0QmxvY2tNYXAoKS5kZWxldGUoYS5nZXRLZXkoKSkscz1uLm1lcmdlKHtibG9ja01hcDppLHNlbGVjdGlvbkFmdGVyOnR9KTtpZihzIT09bilyZXR1cm4gby5wdXNoKGUscywicmVtb3ZlLXJhbmdlIil9dmFyIGw9dS50cnlUb1JlbW92ZUJsb2NrU3R5bGUoZSk7cmV0dXJuIGw/by5wdXNoKGUsbCwiY2hhbmdlLWJsb2NrLXR5cGUiKTpudWxsfSxvbkRlbGV0ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmdldFNlbGVjdGlvbigpO2lmKCF0LmlzQ29sbGFwc2VkKCkpcmV0dXJuIG51bGw7dmFyIG49ZS5nZXRDdXJyZW50Q29udGVudCgpLGE9dC5nZXRTdGFydEtleSgpLGk9bi5nZXRCbG9ja0ZvcktleShhKS5nZXRMZW5ndGgoKTtpZih0LmdldFN0YXJ0T2Zmc2V0KCk8aSlyZXR1cm4gbnVsbDt2YXIgdT1uLmdldEJsb2NrQWZ0ZXIoYSk7aWYoIXV8fCJhdG9taWMiIT09dS5nZXRUeXBlKCkpcmV0dXJuIG51bGw7dmFyIHM9dC5tZXJnZSh7Zm9jdXNLZXk6dS5nZXRLZXkoKSxmb2N1c09mZnNldDp1LmdldExlbmd0aCgpfSksbD1yLnJlbW92ZVJhbmdlKG4scywiZm9yd2FyZCIpO3JldHVybiBsIT09bj9vLnB1c2goZSxsLCJyZW1vdmUtcmFuZ2UiKTpudWxsfSxvblRhYjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC5nZXRTZWxlY3Rpb24oKSxpPXIuZ2V0QW5jaG9yS2V5KCk7aWYoaSE9PXIuZ2V0Rm9jdXNLZXkoKSlyZXR1cm4gdDt2YXIgdT10LmdldEN1cnJlbnRDb250ZW50KCkscz11LmdldEJsb2NrRm9yS2V5KGkpLGw9cy5nZXRUeXBlKCk7aWYoInVub3JkZXJlZC1saXN0LWl0ZW0iIT09bCYmIm9yZGVyZWQtbGlzdC1pdGVtIiE9PWwpcmV0dXJuIHQ7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPXMuZ2V0RGVwdGgoKTtpZighZS5zaGlmdEtleSYmYz09PW4pcmV0dXJuIHQ7dmFyIGY9YSh1LHIsZS5zaGlmdEtleT8tMToxLG4pO3JldHVybiBvLnB1c2godCxmLCJhZGp1c3QtZGVwdGgiKX0sdG9nZ2xlQmxvY2tUeXBlOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRTZWxlY3Rpb24oKSxhPW4uZ2V0U3RhcnRLZXkoKSx1PW4uZ2V0RW5kS2V5KCkscz1lLmdldEN1cnJlbnRDb250ZW50KCksbD1uO2lmKGEhPT11JiYwPT09bi5nZXRFbmRPZmZzZXQoKSl7dmFyIGM9aShzLmdldEJsb2NrQmVmb3JlKHUpKTt1PWMuZ2V0S2V5KCksbD1sLm1lcmdlKHthbmNob3JLZXk6YSxhbmNob3JPZmZzZXQ6bi5nZXRTdGFydE9mZnNldCgpLGZvY3VzS2V5OnUsZm9jdXNPZmZzZXQ6Yy5nZXRMZW5ndGgoKSxpc0JhY2t3YXJkOiExfSl9aWYocy5nZXRCbG9ja01hcCgpLnNraXBXaGlsZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCE9PWF9KSkucmV2ZXJzZSgpLnNraXBXaGlsZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCE9PXV9KSkuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuImF0b21pYyI9PT1lLmdldFR5cGUoKX0pKSlyZXR1cm4gZTt2YXIgZj1zLmdldEJsb2NrRm9yS2V5KGEpLmdldFR5cGUoKT09PXQ/InVuc3R5bGVkIjp0O3JldHVybiBvLnB1c2goZSxyLnNldEJsb2NrVHlwZShzLGwsZiksImNoYW5nZS1ibG9jay10eXBlIil9LHRvZ2dsZUNvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRTZWxlY3Rpb24oKSxuPXQuZ2V0QW5jaG9yS2V5KCkscj10LmdldEZvY3VzS2V5KCk7cmV0dXJuIHQuaXNDb2xsYXBzZWQoKXx8biE9PXI/dS50b2dnbGVCbG9ja1R5cGUoZSwiY29kZS1ibG9jayIpOnUudG9nZ2xlSW5saW5lU3R5bGUoZSwiQ09ERSIpfSx0b2dnbGVJbmxpbmVTdHlsZTpmdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0U2VsZWN0aW9uKCksYT1lLmdldEN1cnJlbnRJbmxpbmVTdHlsZSgpO2lmKG4uaXNDb2xsYXBzZWQoKSlyZXR1cm4gby5zZXRJbmxpbmVTdHlsZU92ZXJyaWRlKGUsYS5oYXModCk/YS5yZW1vdmUodCk6YS5hZGQodCkpO3ZhciBpLHU9ZS5nZXRDdXJyZW50Q29udGVudCgpO3JldHVybiBpPWEuaGFzKHQpP3IucmVtb3ZlSW5saW5lU3R5bGUodSxuLHQpOnIuYXBwbHlJbmxpbmVTdHlsZSh1LG4sdCksby5wdXNoKGUsaSwiY2hhbmdlLWlubGluZS1zdHlsZSIpfSx0b2dnbGVMaW5rOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1yLmFwcGx5RW50aXR5KGUuZ2V0Q3VycmVudENvbnRlbnQoKSx0LG4pO3JldHVybiBvLnB1c2goZSxhLCJhcHBseS1lbnRpdHkiKX0sdHJ5VG9SZW1vdmVCbG9ja1N0eWxlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0U2VsZWN0aW9uKCksbj10LmdldEFuY2hvck9mZnNldCgpO2lmKHQuaXNDb2xsYXBzZWQoKSYmMD09PW4pe3ZhciBvPXQuZ2V0QW5jaG9yS2V5KCksYT1lLmdldEN1cnJlbnRDb250ZW50KCksaT1hLmdldEJsb2NrRm9yS2V5KG8pLmdldFR5cGUoKSx1PWEuZ2V0QmxvY2tCZWZvcmUobyk7aWYoImNvZGUtYmxvY2siPT09aSYmdSYmImNvZGUtYmxvY2siPT09dS5nZXRUeXBlKCkmJjAhPT11LmdldExlbmd0aCgpKXJldHVybiBudWxsO2lmKCJ1bnN0eWxlZCIhPT1pKXJldHVybiByLnNldEJsb2NrVHlwZShhLHQsInVuc3R5bGVkIil9cmV0dXJuIG51bGx9fTtlLmV4cG9ydHM9dX0sTnlrSzpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigibm1uYyIpLG89bigiQVAyeiIpLGE9bigiS2ZOTSIpLGk9cj9yLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6aSYmaSBpbiBPYmplY3QoZSk/byhlKTphKGUpfX0sTzR6bjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIm03NVMiKSxvPW4oIkZjT1IiKSxhPW4oIjRwSUIiKSxpPW4oIlc1QVMiKSx1PW4oIjdObHgiKSxzPW4oIkYwOXciKSxsPW4oIm1GeVYiKSxjPW4oIkd5T2YiKSxmPWEuaXNCcm93c2VyKCJJRSIpO2Z1bmN0aW9uIGQoZSx0KXtpZighZSlyZXR1cm4iW2VtcHR5XSI7dmFyIG49ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXZvaWQgMCE9PW4/bih0KTpbXTtpZih0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpe3ZhciBvPXQudGV4dENvbnRlbnQubGVuZ3RoO3JldHVybiBzKHQpLmNyZWF0ZVRleHROb2RlKCJbdGV4dCAiK28rKHIubGVuZ3RoPyIgfCAiK3Iuam9pbigiLCAiKToiIikrIl0iKX12YXIgYT10LmNsb25lTm9kZSgpOzE9PT1hLm5vZGVUeXBlJiZyLmxlbmd0aCYmYS5zZXRBdHRyaWJ1dGUoImRhdGEtbGFiZWxzIixyLmpvaW4oIiwgIikpO2Zvcih2YXIgaT10LmNoaWxkTm9kZXMsdT0wO3U8aS5sZW5ndGg7dSsrKWEuYXBwZW5kQ2hpbGQoZShpW3VdLG4pKTtyZXR1cm4gYX0oZSx0KTtyZXR1cm4gbi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP24udGV4dENvbnRlbnQ6KGMobil8fGwoITEpLG4ub3V0ZXJIVE1MKX1mdW5jdGlvbiBwKGUsdCl7Zm9yKHZhciBuPWUscj1uO247KXtpZihjKG4pJiZyLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIikpcmV0dXJuIGQobix0KTtyPW49bi5wYXJlbnROb2RlfXJldHVybiJDb3VsZCBub3QgZmluZCBjb250ZW50RWRpdGFibGUgcGFyZW50IG9mIG5vZGUifWZ1bmN0aW9uIGgoZSl7cmV0dXJuIG51bGw9PT1lLm5vZGVWYWx1ZT9lLmNoaWxkTm9kZXMubGVuZ3RoOmUubm9kZVZhbHVlLmxlbmd0aH1mdW5jdGlvbiB5KGUsdCxuLHIpe3ZhciBhPXUoKTtpZihlLmV4dGVuZCYmaShhLHQpKXtuPmgodCkmJm8ubG9nU2VsZWN0aW9uU3RhdGVGYWlsdXJlKHthbm9ueW1pemVkRG9tOnAodCksZXh0cmFQYXJhbXM6SlNPTi5zdHJpbmdpZnkoe29mZnNldDpufSksc2VsZWN0aW9uU3RhdGU6SlNPTi5zdHJpbmdpZnkoci50b0pTKCkpfSk7dmFyIHM9dD09PWUuZm9jdXNOb2RlO3RyeXtlLmV4dGVuZCh0LG4pfWNhdGNoKGkpe3Rocm93IG8ubG9nU2VsZWN0aW9uU3RhdGVGYWlsdXJlKHthbm9ueW1pemVkRG9tOnAodCwoZnVuY3Rpb24odCl7dmFyIG49W107cmV0dXJuIHQ9PT1hJiZuLnB1c2goImFjdGl2ZSBlbGVtZW50IiksdD09PWUuYW5jaG9yTm9kZSYmbi5wdXNoKCJzZWxlY3Rpb24gYW5jaG9yIG5vZGUiKSx0PT09ZS5mb2N1c05vZGUmJm4ucHVzaCgic2VsZWN0aW9uIGZvY3VzIG5vZGUiKSxufSkpLGV4dHJhUGFyYW1zOkpTT04uc3RyaW5naWZ5KHthY3RpdmVFbGVtZW50TmFtZTphP2Eubm9kZU5hbWU6bnVsbCxub2RlSXNGb2N1czp0PT09ZS5mb2N1c05vZGUsbm9kZVdhc0ZvY3VzOnMsc2VsZWN0aW9uUmFuZ2VDb3VudDplLnJhbmdlQ291bnQsc2VsZWN0aW9uQW5jaG9yTm9kZU5hbWU6ZS5hbmNob3JOb2RlP2UuYW5jaG9yTm9kZS5ub2RlTmFtZTpudWxsLHNlbGVjdGlvbkFuY2hvck9mZnNldDplLmFuY2hvck9mZnNldCxzZWxlY3Rpb25Gb2N1c05vZGVOYW1lOmUuZm9jdXNOb2RlP2UuZm9jdXNOb2RlLm5vZGVOYW1lOm51bGwsc2VsZWN0aW9uRm9jdXNPZmZzZXQ6ZS5mb2N1c09mZnNldCxtZXNzYWdlOmk/IiIraTpudWxsLG9mZnNldDpufSxudWxsLDIpLHNlbGVjdGlvblN0YXRlOkpTT04uc3RyaW5naWZ5KHIudG9KUygpLG51bGwsMil9KSxpfX1lbHNlIGlmKGUucmFuZ2VDb3VudD4wKXt2YXIgbD1lLmdldFJhbmdlQXQoMCk7bC5zZXRFbmQodCxuKSxlLmFkZFJhbmdlKGwuY2xvbmVSYW5nZSgpKX19ZnVuY3Rpb24gbShlLHQsbixhKXt2YXIgaT1zKHQpLmNyZWF0ZVJhbmdlKCk7aWYobj5oKHQpJiYoby5sb2dTZWxlY3Rpb25TdGF0ZUZhaWx1cmUoe2Fub255bWl6ZWREb206cCh0KSxleHRyYVBhcmFtczpKU09OLnN0cmluZ2lmeSh7b2Zmc2V0Om59KSxzZWxlY3Rpb25TdGF0ZTpKU09OLnN0cmluZ2lmeShhLnRvSlMoKSl9KSxyLmhhbmRsZUV4dGVuc2lvbkNhdXNlZEVycm9yKCkpLGkuc2V0U3RhcnQodCxuKSxmKXRyeXtlLmFkZFJhbmdlKGkpfWNhdGNoKGUpezB9ZWxzZSBlLmFkZFJhbmdlKGkpfWUuZXhwb3J0cz17c2V0RHJhZnRFZGl0b3JTZWxlY3Rpb246ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT1zKHQpO2lmKGkoYS5kb2N1bWVudEVsZW1lbnQsdCkpe3ZhciB1PWEuZGVmYXVsdFZpZXcuZ2V0U2VsZWN0aW9uKCksbD1lLmdldEFuY2hvcktleSgpLGM9ZS5nZXRBbmNob3JPZmZzZXQoKSxmPWUuZ2V0Rm9jdXNLZXkoKSxkPWUuZ2V0Rm9jdXNPZmZzZXQoKSxwPWUuZ2V0SXNCYWNrd2FyZCgpO2lmKCF1LmV4dGVuZCYmcCl7dmFyIGg9bCx2PWM7bD1mLGM9ZCxmPWgsZD12LHA9ITF9dmFyIGc9bD09PW4mJnI8PWMmJm8+PWMsYj1mPT09biYmcjw9ZCYmbz49ZDtpZihnJiZiKXJldHVybiB1LnJlbW92ZUFsbFJhbmdlcygpLG0odSx0LGMtcixlKSx2b2lkIHkodSx0LGQtcixlKTtpZihwKXtpZihiJiYodS5yZW1vdmVBbGxSYW5nZXMoKSxtKHUsdCxkLXIsZSkpLGcpe3ZhciB3PXUuZm9jdXNOb2RlLF89dS5mb2N1c09mZnNldDt1LnJlbW92ZUFsbFJhbmdlcygpLG0odSx0LGMtcixlKSx5KHUsdyxfLGUpfX1lbHNlIGcmJih1LnJlbW92ZUFsbFJhbmdlcygpLG0odSx0LGMtcixlKSksYiYmeSh1LHQsZC1yLGUpfX0sYWRkRm9jdXNUb1NlbGVjdGlvbjp5fX0sT0lZaTpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDtyZXR1cm4gZSsoMT09fn4oZSUxMDAvMTApPyJ0aCI6MT09PXQ/InN0IjoyPT09dD8ibmQiOjM9PT10PyJyZCI6InRoIil9fSl9KG4oIndkL1IiKSl9LE9MekE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUub3duZXJEb2N1bWVudCkmJihlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc/ZSBpbnN0YW5jZW9mIGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5IVE1MRWxlbWVudDplIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpfX0sT2FhNzpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiZW4tZ2IiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgdD1lJTEwO3JldHVybiBlKygxPT1+fihlJTEwMC8xMCk/InRoIjoxPT09dD8ic3QiOjI9PT10PyJuZCI6Mz09PXQ/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KG4oIndkL1IiKSl9LE9vb2o6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTt0LmRlZmF1bHQ9bn0sUEZVODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pOyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSksci5mb3JFYWNoKChmdW5jdGlvbih0KXtvKGUsdCxuW3RdKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgYT1uKCJySlkxIiksaT1uKCJtRnlWIiksdT1mdW5jdGlvbihlKXtpZighZXx8IWUudHlwZSlyZXR1cm4hMTt2YXIgdD1lLnR5cGU7cmV0dXJuInVub3JkZXJlZC1saXN0LWl0ZW0iPT09dHx8Im9yZGVyZWQtbGlzdC1pdGVtIj09PXR9LHM9e2Zyb21SYXdUcmVlU3RhdGVUb1Jhd1N0YXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYmxvY2tzLG49W107cmV0dXJuIEFycmF5LmlzQXJyYXkodCl8fGkoITEpLEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXS5jb25jYXQoZSkucmV2ZXJzZSgpO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTt0KHIpO3ZhciBvPXIuY2hpbGRyZW47QXJyYXkuaXNBcnJheShvKXx8aSghMSksbj1uLmNvbmNhdChbXS5jb25jYXQoby5yZXZlcnNlKCkpKX19KHQsKGZ1bmN0aW9uKGUpe3ZhciB0PXIoe30sZSk7dShlKSYmKHQuZGVwdGg9dC5kZXB0aHx8MCxmdW5jdGlvbihlKXtBcnJheS5pc0FycmF5KGUuY2hpbGRyZW4pJiYoZS5jaGlsZHJlbj1lLmNoaWxkcmVuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PWUudHlwZT9yKHt9LHQse2RlcHRoOihlLmRlcHRofHwwKSsxfSk6dH0pKSl9KGUpLG51bGwhPWUuY2hpbGRyZW4mJmUuY2hpbGRyZW4ubGVuZ3RoPjApfHwoZGVsZXRlIHQuY2hpbGRyZW4sbi5wdXNoKHQpKX0pKSxlLmJsb2Nrcz1uLHIoe30sZSx7YmxvY2tzOm59KSk6ZX0sZnJvbVJhd1N0YXRlVG9SYXdUcmVlU3RhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1bXTtyZXR1cm4gZS5ibG9ja3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG89dShlKSxpPWUuZGVwdGh8fDAscz1yKHt9LGUse2NoaWxkcmVuOltdfSk7aWYobyl7dmFyIGw9blswXTtpZihudWxsPT1sJiYwPT09aSl0LnB1c2gocyk7ZWxzZSBpZihudWxsPT1sfHxsLmRlcHRoPGktMSl7dmFyIGM9e2tleTphKCksdGV4dDoiIixkZXB0aDppLTEsdHlwZTplLnR5cGUsY2hpbGRyZW46W10sZW50aXR5UmFuZ2VzOltdLGlubGluZVN0eWxlUmFuZ2VzOltdfTtuLnVuc2hpZnQoYyksMT09PWk/dC5wdXNoKGMpOm51bGwhPWwmJmwuY2hpbGRyZW4ucHVzaChjKSxjLmNoaWxkcmVuLnB1c2gocyl9ZWxzZSBpZihsLmRlcHRoPT09aS0xKWwuY2hpbGRyZW4ucHVzaChzKTtlbHNle2Zvcig7bnVsbCE9bCYmbC5kZXB0aD49aTspbi5zaGlmdCgpLGw9blswXTtpPjA/bC5jaGlsZHJlbi5wdXNoKHMpOnQucHVzaChzKX19ZWxzZSB0LnB1c2gocyl9KSkscih7fSxlLHtibG9ja3M6dH0pfX07ZS5leHBvcnRzPXN9LFBKWVo6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfX0sUE85bzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmdldExvY2F0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj0vXHJcbnxbXG5ccl0vZyxvPTEsYT10KzE7Zm9yKDsobj1yLmV4ZWMoZS5ib2R5KSkmJm4uaW5kZXg8dDspbys9MSxhPXQrMS0obi5pbmRleCtuWzBdLmxlbmd0aCk7cmV0dXJue2xpbmU6byxjb2x1bW46YX19fSxQUWhFOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIG89bigiOHVRbSIpLGE9bigiSkw3VCIpLGk9bigiMXFxMiIpLHU9bigickpZMSIpLHM9bigieG9jSSIpLGw9bigiY3dGWSIpLGM9bigiSlBjdiIpLGY9bigiSHJpVCIpLGQ9Yy5MaXN0LHA9Yy5SZXBlYXQsaD1sKCJkcmFmdF90cmVlX2RhdGFfc3VwcG9ydCIpLHk9aD9hOm8sbT17cHJvY2Vzc0hUTUw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHMsdCl9LHByb2Nlc3NUZXh0OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbyxhKXtvPWYobyk7dmFyIGk9dSgpLHM9e2tleTppLHR5cGU6bix0ZXh0Om8sY2hhcmFjdGVyTGlzdDpkKHAodCxvLmxlbmd0aCkpfTtpZihoJiYwIT09YSl7dmFyIGw9YS0xO3M9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxvPU9iamVjdC5rZXlzKG4pOyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobz1vLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSksby5mb3JFYWNoKChmdW5jdGlvbih0KXtyKGUsdCxuW3RdKX0pKX1yZXR1cm4gZX0oe30scyx7cHJldlNpYmxpbmc6KGVbbF09ZVtsXS5tZXJnZSh7bmV4dFNpYmxpbmc6aX0pKS5nZXRLZXkoKX0pfXJldHVybiBlLnB1c2gobmV3IHkocykpLGV9KSxbXSl9fTtlLmV4cG9ydHM9bX0sUHhqSjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lfHwiIixuPWFyZ3VtZW50cy5sZW5ndGg7aWYobj4xKWZvcih2YXIgcj0xO3I8bjtyKyspe3ZhciBvPWFyZ3VtZW50c1tyXTtvJiYodD0odD90KyIgIjoiIikrbyl9cmV0dXJuIHR9fSxRQTBwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuPXZvaWQgMD09PXQ/e306dCxyPW4ucHJvcFR5cGVzLGE9bi5kZWZhdWx0UHJvcHMsaT1uLmFsbG93RmFsbGJhY2ssdT12b2lkIDAhPT1pJiZpLHM9bi5kaXNwbGF5TmFtZSxsPXZvaWQgMD09PXM/ZS5uYW1lfHxlLmRpc3BsYXlOYW1lOnMsYz1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQsbil9O3JldHVybiBPYmplY3QuYXNzaWduKG8uZGVmYXVsdC5mb3J3YXJkUmVmfHwhdT9vLmRlZmF1bHQuZm9yd2FyZFJlZihjKTpmdW5jdGlvbihlKXtyZXR1cm4gYyhlLG51bGwpfSx7ZGlzcGxheU5hbWU6bCxwcm9wVHlwZXM6cixkZWZhdWx0UHJvcHM6YX0pfTt2YXIgcixvPShyPW4oInExdEkiKSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9fSxRQ25iOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oIit3ZGMiKX0sUURFbTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIk1nelciKTtmdW5jdGlvbiBvKCl7cmV0dXJuKG89cnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgYT1uKCJJcThFIiksaT1uKCJxMXRJIiksdT1uKCJiU3daIikscz1uKCJFeTBFIiksbD1mdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG49ZSwodD1yKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uLHIucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmJsb2NrLG49ZS5jaGlsZHJlbixyPWUuY29udGVudFN0YXRlLGw9ZS5kZWNvcmF0b3IsYz1lLmRlY29yYXRvcktleSxmPWUuZGlyZWN0aW9uLGQ9ZS5sZWFmU2V0LHA9ZS50ZXh0LGg9dC5nZXRLZXkoKSx5PWQuZ2V0KCJsZWF2ZXMiKSxtPWwuZ2V0Q29tcG9uZW50Rm9yS2V5KGMpLHY9bC5nZXRQcm9wc0ZvcktleShjKSxnPWEuZW5jb2RlKGgscGFyc2VJbnQoYywxMCksMCksYj1wLnNsaWNlKHkuZmlyc3QoKS5nZXQoInN0YXJ0IikseS5sYXN0KCkuZ2V0KCJlbmQiKSksdz1zLmdldEhUTUxEaXJJZkRpZmZlcmVudCh1LmdldERpcmVjdGlvbihiKSxmKTtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KG0sbyh7fSx2LHtjb250ZW50U3RhdGU6cixkZWNvcmF0ZWRUZXh0OmIsZGlyOncsa2V5OmcsZW50aXR5S2V5OnQuZ2V0RW50aXR5QXQoZC5nZXQoInN0YXJ0IikpLG9mZnNldEtleTpnfSksbil9LHJ9KGkuQ29tcG9uZW50KTtlLmV4cG9ydHM9bH0sUUVzbzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigicTF0SSIpLHU9eShpKSxzPXkobigiMTd4OSIpKSxsPWgobigiVktFTyIpKSxjPXkobigiUzF0byIpKSxmPWgobigiWWU3bSIpKSxkPWgobigiZmJoZiIpKSxwPXkobigiMnpzNyIpKTtmdW5jdGlvbiBoKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1mdW5jdGlvbiB5KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgbT17b3ZlcmxheToiUmVhY3RNb2RhbF9fT3ZlcmxheSIsY29udGVudDoiUmVhY3RNb2RhbF9fQ29udGVudCJ9LHY9MCxnPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCk7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gbi5zZXRPdmVybGF5UmVmPWZ1bmN0aW9uKGUpe24ub3ZlcmxheT1lLG4ucHJvcHMub3ZlcmxheVJlZiYmbi5wcm9wcy5vdmVybGF5UmVmKGUpfSxuLnNldENvbnRlbnRSZWY9ZnVuY3Rpb24oZSl7bi5jb250ZW50PWUsbi5wcm9wcy5jb250ZW50UmVmJiZuLnByb3BzLmNvbnRlbnRSZWYoZSl9LG4uYWZ0ZXJDbG9zZT1mdW5jdGlvbigpe3ZhciBlPW4ucHJvcHMsdD1lLmFwcEVsZW1lbnQscj1lLmFyaWFIaWRlQXBwLG89ZS5odG1sT3BlbkNsYXNzTmFtZSxhPWUuYm9keU9wZW5DbGFzc05hbWU7YSYmZC5yZW1vdmUoZG9jdW1lbnQuYm9keSxhKSxvJiZkLnJlbW92ZShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdLG8pLHImJnY+MCYmMD09PSh2LT0xKSYmZi5zaG93KHQpLG4ucHJvcHMuc2hvdWxkRm9jdXNBZnRlclJlbmRlciYmKG4ucHJvcHMuc2hvdWxkUmV0dXJuRm9jdXNBZnRlckNsb3NlPyhsLnJldHVybkZvY3VzKCksbC50ZWFyZG93blNjb3BlZEZvY3VzKCkpOmwucG9wV2l0aG91dEZvY3VzKCkpLG4ucHJvcHMub25BZnRlckNsb3NlJiZuLnByb3BzLm9uQWZ0ZXJDbG9zZSgpfSxuLm9wZW49ZnVuY3Rpb24oKXtuLmJlZm9yZU9wZW4oKSxuLnN0YXRlLmFmdGVyT3BlbiYmbi5zdGF0ZS5iZWZvcmVDbG9zZT8oY2xlYXJUaW1lb3V0KG4uY2xvc2VUaW1lciksbi5zZXRTdGF0ZSh7YmVmb3JlQ2xvc2U6ITF9KSk6KG4ucHJvcHMuc2hvdWxkRm9jdXNBZnRlclJlbmRlciYmKGwuc2V0dXBTY29wZWRGb2N1cyhuLm5vZGUpLGwubWFya0ZvckZvY3VzTGF0ZXIoKSksbi5zZXRTdGF0ZSh7aXNPcGVuOiEwfSwoZnVuY3Rpb24oKXtuLnNldFN0YXRlKHthZnRlck9wZW46ITB9KSxuLnByb3BzLmlzT3BlbiYmbi5wcm9wcy5vbkFmdGVyT3BlbiYmbi5wcm9wcy5vbkFmdGVyT3Blbih7b3ZlcmxheUVsOm4ub3ZlcmxheSxjb250ZW50RWw6bi5jb250ZW50fSl9KSkpfSxuLmNsb3NlPWZ1bmN0aW9uKCl7bi5wcm9wcy5jbG9zZVRpbWVvdXRNUz4wP24uY2xvc2VXaXRoVGltZW91dCgpOm4uY2xvc2VXaXRob3V0VGltZW91dCgpfSxuLmZvY3VzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiBuLmNvbnRlbnQmJiFuLmNvbnRlbnRIYXNGb2N1cygpJiZuLmNvbnRlbnQuZm9jdXMoKX0sbi5jbG9zZVdpdGhUaW1lb3V0PWZ1bmN0aW9uKCl7dmFyIGU9RGF0ZS5ub3coKStuLnByb3BzLmNsb3NlVGltZW91dE1TO24uc2V0U3RhdGUoe2JlZm9yZUNsb3NlOiEwLGNsb3Nlc0F0OmV9LChmdW5jdGlvbigpe24uY2xvc2VUaW1lcj1zZXRUaW1lb3V0KG4uY2xvc2VXaXRob3V0VGltZW91dCxuLnN0YXRlLmNsb3Nlc0F0LURhdGUubm93KCkpfSkpfSxuLmNsb3NlV2l0aG91dFRpbWVvdXQ9ZnVuY3Rpb24oKXtuLnNldFN0YXRlKHtiZWZvcmVDbG9zZTohMSxpc09wZW46ITEsYWZ0ZXJPcGVuOiExLGNsb3Nlc0F0Om51bGx9LG4uYWZ0ZXJDbG9zZSl9LG4uaGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXs5PT09ZS5rZXlDb2RlJiYoMCxjLmRlZmF1bHQpKG4uY29udGVudCxlKSxuLnByb3BzLnNob3VsZENsb3NlT25Fc2MmJjI3PT09ZS5rZXlDb2RlJiYoZS5zdG9wUHJvcGFnYXRpb24oKSxuLnJlcXVlc3RDbG9zZShlKSl9LG4uaGFuZGxlT3ZlcmxheU9uQ2xpY2s9ZnVuY3Rpb24oZSl7bnVsbD09PW4uc2hvdWxkQ2xvc2UmJihuLnNob3VsZENsb3NlPSEwKSxuLnNob3VsZENsb3NlJiZuLnByb3BzLnNob3VsZENsb3NlT25PdmVybGF5Q2xpY2smJihuLm93bmVySGFuZGxlc0Nsb3NlKCk/bi5yZXF1ZXN0Q2xvc2UoZSk6bi5mb2N1c0NvbnRlbnQoKSksbi5zaG91bGRDbG9zZT1udWxsfSxuLmhhbmRsZUNvbnRlbnRPbk1vdXNlVXA9ZnVuY3Rpb24oKXtuLnNob3VsZENsb3NlPSExfSxuLmhhbmRsZU92ZXJsYXlPbk1vdXNlRG93bj1mdW5jdGlvbihlKXtuLnByb3BzLnNob3VsZENsb3NlT25PdmVybGF5Q2xpY2t8fGUudGFyZ2V0IT1uLm92ZXJsYXl8fGUucHJldmVudERlZmF1bHQoKX0sbi5oYW5kbGVDb250ZW50T25DbGljaz1mdW5jdGlvbigpe24uc2hvdWxkQ2xvc2U9ITF9LG4uaGFuZGxlQ29udGVudE9uTW91c2VEb3duPWZ1bmN0aW9uKCl7bi5zaG91bGRDbG9zZT0hMX0sbi5yZXF1ZXN0Q2xvc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ub3duZXJIYW5kbGVzQ2xvc2UoKSYmbi5wcm9wcy5vblJlcXVlc3RDbG9zZShlKX0sbi5vd25lckhhbmRsZXNDbG9zZT1mdW5jdGlvbigpe3JldHVybiBuLnByb3BzLm9uUmVxdWVzdENsb3NlfSxuLnNob3VsZEJlQ2xvc2VkPWZ1bmN0aW9uKCl7cmV0dXJuIW4uc3RhdGUuaXNPcGVuJiYhbi5zdGF0ZS5iZWZvcmVDbG9zZX0sbi5jb250ZW50SGFzRm9jdXM9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PW4uY29udGVudHx8bi5jb250ZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfSxuLmJ1aWxkQ2xhc3NOYW1lPWZ1bmN0aW9uKGUsdCl7dmFyIHI9Im9iamVjdCI9PT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpvKHQpKT90OntiYXNlOm1bZV0sYWZ0ZXJPcGVuOm1bZV0rIi0tYWZ0ZXItb3BlbiIsYmVmb3JlQ2xvc2U6bVtlXSsiLS1iZWZvcmUtY2xvc2UifSxhPXIuYmFzZTtyZXR1cm4gbi5zdGF0ZS5hZnRlck9wZW4mJihhPWErIiAiK3IuYWZ0ZXJPcGVuKSxuLnN0YXRlLmJlZm9yZUNsb3NlJiYoYT1hKyIgIityLmJlZm9yZUNsb3NlKSwic3RyaW5nIj09dHlwZW9mIHQmJnQ/YSsiICIrdDphfSxuLmF0dHJpYnV0ZXNGcm9tT2JqZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLnJlZHVjZSgoZnVuY3Rpb24obixyKXtyZXR1cm4gbltlKyItIityXT10W3JdLG59KSx7fSl9LG4uc3RhdGU9e2FmdGVyT3BlbjohMSxiZWZvcmVDbG9zZTohMX0sbi5zaG91bGRDbG9zZT1udWxsLG4ubW92ZUZyb21Db250ZW50VG9PdmVybGF5PW51bGwsbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5pc09wZW4mJnRoaXMub3BlbigpfX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3RoaXMucHJvcHMuaXNPcGVuJiYhZS5pc09wZW4/dGhpcy5vcGVuKCk6IXRoaXMucHJvcHMuaXNPcGVuJiZlLmlzT3BlbiYmdGhpcy5jbG9zZSgpLHRoaXMucHJvcHMuc2hvdWxkRm9jdXNBZnRlclJlbmRlciYmdGhpcy5zdGF0ZS5pc09wZW4mJiF0LmlzT3BlbiYmdGhpcy5mb2N1c0NvbnRlbnQoKX19LHtrZXk6ImNvbXBvbmVudFdpbGxVbm1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RhdGUuaXNPcGVuJiZ0aGlzLmFmdGVyQ2xvc2UoKSxjbGVhclRpbWVvdXQodGhpcy5jbG9zZVRpbWVyKX19LHtrZXk6ImJlZm9yZU9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuYXBwRWxlbWVudCxuPWUuYXJpYUhpZGVBcHAscj1lLmh0bWxPcGVuQ2xhc3NOYW1lLG89ZS5ib2R5T3BlbkNsYXNzTmFtZTtvJiZkLmFkZChkb2N1bWVudC5ib2R5LG8pLHImJmQuYWRkKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF0sciksbiYmKHYrPTEsZi5oaWRlKHQpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5pZCxuPWUuY2xhc3NOYW1lLG89ZS5vdmVybGF5Q2xhc3NOYW1lLGE9ZS5kZWZhdWx0U3R5bGVzLGk9bj97fTphLmNvbnRlbnQscz1vP3t9OmEub3ZlcmxheTtyZXR1cm4gdGhpcy5zaG91bGRCZUNsb3NlZCgpP251bGw6dS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse3JlZjp0aGlzLnNldE92ZXJsYXlSZWYsY2xhc3NOYW1lOnRoaXMuYnVpbGRDbGFzc05hbWUoIm92ZXJsYXkiLG8pLHN0eWxlOnIoe30scyx0aGlzLnByb3BzLnN0eWxlLm92ZXJsYXkpLG9uQ2xpY2s6dGhpcy5oYW5kbGVPdmVybGF5T25DbGljayxvbk1vdXNlRG93bjp0aGlzLmhhbmRsZU92ZXJsYXlPbk1vdXNlRG93bn0sdS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIscih7aWQ6dCxyZWY6dGhpcy5zZXRDb250ZW50UmVmLHN0eWxlOnIoe30saSx0aGlzLnByb3BzLnN0eWxlLmNvbnRlbnQpLGNsYXNzTmFtZTp0aGlzLmJ1aWxkQ2xhc3NOYW1lKCJjb250ZW50IixuKSx0YWJJbmRleDoiLTEiLG9uS2V5RG93bjp0aGlzLmhhbmRsZUtleURvd24sb25Nb3VzZURvd246dGhpcy5oYW5kbGVDb250ZW50T25Nb3VzZURvd24sb25Nb3VzZVVwOnRoaXMuaGFuZGxlQ29udGVudE9uTW91c2VVcCxvbkNsaWNrOnRoaXMuaGFuZGxlQ29udGVudE9uQ2xpY2sscm9sZTp0aGlzLnByb3BzLnJvbGUsImFyaWEtbGFiZWwiOnRoaXMucHJvcHMuY29udGVudExhYmVsfSx0aGlzLmF0dHJpYnV0ZXNGcm9tT2JqZWN0KCJhcmlhIix0aGlzLnByb3BzLmFyaWF8fHt9KSx0aGlzLmF0dHJpYnV0ZXNGcm9tT2JqZWN0KCJkYXRhIix0aGlzLnByb3BzLmRhdGF8fHt9KSx7ImRhdGEtdGVzdGlkIjp0aGlzLnByb3BzLnRlc3RJZH0pLHRoaXMucHJvcHMuY2hpbGRyZW4pKX19XSksdH0oaS5Db21wb25lbnQpO2cuZGVmYXVsdFByb3BzPXtzdHlsZTp7b3ZlcmxheTp7fSxjb250ZW50Ont9fSxkZWZhdWx0U3R5bGVzOnt9fSxnLnByb3BUeXBlcz17aXNPcGVuOnMuZGVmYXVsdC5ib29sLmlzUmVxdWlyZWQsZGVmYXVsdFN0eWxlczpzLmRlZmF1bHQuc2hhcGUoe2NvbnRlbnQ6cy5kZWZhdWx0Lm9iamVjdCxvdmVybGF5OnMuZGVmYXVsdC5vYmplY3R9KSxzdHlsZTpzLmRlZmF1bHQuc2hhcGUoe2NvbnRlbnQ6cy5kZWZhdWx0Lm9iamVjdCxvdmVybGF5OnMuZGVmYXVsdC5vYmplY3R9KSxjbGFzc05hbWU6cy5kZWZhdWx0Lm9uZU9mVHlwZShbcy5kZWZhdWx0LnN0cmluZyxzLmRlZmF1bHQub2JqZWN0XSksb3ZlcmxheUNsYXNzTmFtZTpzLmRlZmF1bHQub25lT2ZUeXBlKFtzLmRlZmF1bHQuc3RyaW5nLHMuZGVmYXVsdC5vYmplY3RdKSxib2R5T3BlbkNsYXNzTmFtZTpzLmRlZmF1bHQuc3RyaW5nLGh0bWxPcGVuQ2xhc3NOYW1lOnMuZGVmYXVsdC5zdHJpbmcsYXJpYUhpZGVBcHA6cy5kZWZhdWx0LmJvb2wsYXBwRWxlbWVudDpzLmRlZmF1bHQuaW5zdGFuY2VPZihwLmRlZmF1bHQpLG9uQWZ0ZXJPcGVuOnMuZGVmYXVsdC5mdW5jLG9uQWZ0ZXJDbG9zZTpzLmRlZmF1bHQuZnVuYyxvblJlcXVlc3RDbG9zZTpzLmRlZmF1bHQuZnVuYyxjbG9zZVRpbWVvdXRNUzpzLmRlZmF1bHQubnVtYmVyLHNob3VsZEZvY3VzQWZ0ZXJSZW5kZXI6cy5kZWZhdWx0LmJvb2wsc2hvdWxkQ2xvc2VPbk92ZXJsYXlDbGljazpzLmRlZmF1bHQuYm9vbCxzaG91bGRSZXR1cm5Gb2N1c0FmdGVyQ2xvc2U6cy5kZWZhdWx0LmJvb2wscm9sZTpzLmRlZmF1bHQuc3RyaW5nLGNvbnRlbnRMYWJlbDpzLmRlZmF1bHQuc3RyaW5nLGFyaWE6cy5kZWZhdWx0Lm9iamVjdCxkYXRhOnMuZGVmYXVsdC5vYmplY3QsY2hpbGRyZW46cy5kZWZhdWx0Lm5vZGUsc2hvdWxkQ2xvc2VPbkVzYzpzLmRlZmF1bHQuYm9vbCxvdmVybGF5UmVmOnMuZGVmYXVsdC5mdW5jLGNvbnRlbnRSZWY6cy5kZWZhdWx0LmZ1bmMsaWQ6cy5kZWZhdWx0LnN0cmluZyx0ZXN0SWQ6cy5kZWZhdWx0LnN0cmluZ30sdC5kZWZhdWx0PWcsZS5leHBvcnRzPXQuZGVmYXVsdH0sUUlMbTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiOE9RUyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4sbyxhPXIoZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihvPTA7bzxpLmxlbmd0aDtvKyspbj1pW29dLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihhW25dPWVbbl0pfXJldHVybiBhfX0sUUl5RjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiS3o1eSIpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiByLkRhdGUubm93KCl9fSxRTGFQOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIsbyxhLGksdSl7aWYoIWUpe3ZhciBzO2lmKHZvaWQgMD09PXQpcz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgbD1bbixyLG8sYSxpLHVdLGM9MDsocz1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLChmdW5jdGlvbigpe3JldHVybiBsW2MrK119KSkpKS5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10aHJvdyBzLmZyYW1lc1RvUG9wPTEsc319fSxRZERuOmZ1bmN0aW9uKGUsdCxuKXt9LFIxSVc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5EaXJlY3RpdmVMb2NhdGlvbj12b2lkIDA7dmFyIHI9T2JqZWN0LmZyZWV6ZSh7UVVFUlk6IlFVRVJZIixNVVRBVElPTjoiTVVUQVRJT04iLFNVQlNDUklQVElPTjoiU1VCU0NSSVBUSU9OIixGSUVMRDoiRklFTEQiLEZSQUdNRU5UX0RFRklOSVRJT046IkZSQUdNRU5UX0RFRklOSVRJT04iLEZSQUdNRU5UX1NQUkVBRDoiRlJBR01FTlRfU1BSRUFEIixJTkxJTkVfRlJBR01FTlQ6IklOTElORV9GUkFHTUVOVCIsVkFSSUFCTEVfREVGSU5JVElPTjoiVkFSSUFCTEVfREVGSU5JVElPTiIsU0NIRU1BOiJTQ0hFTUEiLFNDQUxBUjoiU0NBTEFSIixPQkpFQ1Q6Ik9CSkVDVCIsRklFTERfREVGSU5JVElPTjoiRklFTERfREVGSU5JVElPTiIsQVJHVU1FTlRfREVGSU5JVElPTjoiQVJHVU1FTlRfREVGSU5JVElPTiIsSU5URVJGQUNFOiJJTlRFUkZBQ0UiLFVOSU9OOiJVTklPTiIsRU5VTToiRU5VTSIsRU5VTV9WQUxVRToiRU5VTV9WQUxVRSIsSU5QVVRfT0JKRUNUOiJJTlBVVF9PQkpFQ1QiLElOUFVUX0ZJRUxEX0RFRklOSVRJT046IklOUFVUX0ZJRUxEX0RFRklOSVRJT04ifSk7dC5EaXJlY3RpdmVMb2NhdGlvbj1yfSxSNWpyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5kZWZhdWx0PXtsb2NhbGU6ImVuIixwbHVyYWxSdWxlRnVuY3Rpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj1TdHJpbmcoZSkuc3BsaXQoIi4iKSxyPSFuWzFdLG89TnVtYmVyKG5bMF0pPT1lLGE9byYmblswXS5zbGljZSgtMSksaT1vJiZuWzBdLnNsaWNlKC0yKTtyZXR1cm4gdD8xPT1hJiYxMSE9aT8ib25lIjoyPT1hJiYxMiE9aT8idHdvIjozPT1hJiYxMyE9aT8iZmV3Ijoib3RoZXIiOjE9PWUmJnI/Im9uZSI6Im90aGVyIn19fSxSQ1I2OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigieTVQKyIpLG89bigiSlBjdiIpLk9yZGVyZWRTZXQsYT1yLnN1YnN0cixpPW8oKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1BcnJheShlLmxlbmd0aCkuZmlsbChpKTtyZXR1cm4gdCYmdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIHI9YShlLDAsdC5vZmZzZXQpLmxlbmd0aCxvPXIrYShlLHQub2Zmc2V0LHQubGVuZ3RoKS5sZW5ndGg7cjxvOyluW3JdPW5bcl0uYWRkKHQuc3R5bGUpLHIrK30pKSxufX0sUklxUDpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiSWpiaSIpLG89bigiRWJESSIpLGE9bigiQm5hZyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlKXx8byhlKXx8YSgpfX0sIlJLK1ciOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9L1xyXG4/fFxuL2c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KHIpfX0sUkt4RzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgcj10LlN5bWJvbCxvPW4oIjFZdTYiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgciYmKCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJigic3ltYm9sIj09dHlwZW9mIHIoImZvbyIpJiYoInN5bWJvbCI9PXR5cGVvZiBTeW1ib2woImJhciIpJiZvKCkpKSl9fSkuY2FsbCh0aGlzLG4oInlMcGoiKSl9LFJMZUY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJEM3pBIiksbz1uKCI2YXloIikoIiVGdW5jdGlvbiUiKSxhPW8uYXBwbHksaT1vLmNhbGw7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuYXBwbHkoaSxhcmd1bWVudHMpfSxlLmV4cG9ydHMuYXBwbHk9ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShhLGFyZ3VtZW50cyl9fSxSTjZFOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHIsbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPW4oIi9mTDQiKSxpPShyPWEpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiB1KGUpe2UuaGFuZGxlcnM9PT1lLm5leHRIYW5kbGVycyYmKGUubmV4dEhhbmRsZXJzPWUuaGFuZGxlcnMuc2xpY2UoKSl9dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMudGFyZ2V0PXQsdGhpcy5ldmVudHM9e319cmV0dXJuIG8oZSxbe2tleToiZ2V0RXZlbnRIYW5kbGVycyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1TdHJpbmcoZSkrIiAiK1N0cmluZygoMCxpLmRlZmF1bHQpKHQpKTtyZXR1cm4gdGhpcy5ldmVudHNbbl18fCh0aGlzLmV2ZW50c1tuXT17aGFuZGxlcnM6W10saGFuZGxlRXZlbnQ6dm9pZCAwfSx0aGlzLmV2ZW50c1tuXS5uZXh0SGFuZGxlcnM9dGhpcy5ldmVudHNbbl0uaGFuZGxlcnMpLHRoaXMuZXZlbnRzW25dfX0se2tleToiaGFuZGxlRXZlbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmdldEV2ZW50SGFuZGxlcnMoZSx0KTtyLmhhbmRsZXJzPXIubmV4dEhhbmRsZXJzLHIuaGFuZGxlcnMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSYmZShuKX0pKX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz10aGlzLmdldEV2ZW50SGFuZGxlcnMoZSxuKTt1KG8pLDA9PT1vLm5leHRIYW5kbGVycy5sZW5ndGgmJihvLmhhbmRsZUV2ZW50PXRoaXMuaGFuZGxlRXZlbnQuYmluZCh0aGlzLGUsbiksdGhpcy50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihlLG8uaGFuZGxlRXZlbnQsbikpLG8ubmV4dEhhbmRsZXJzLnB1c2godCk7dmFyIGE9ITA7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYSl7YT0hMSx1KG8pO3ZhciBpPW8ubmV4dEhhbmRsZXJzLmluZGV4T2YodCk7by5uZXh0SGFuZGxlcnMuc3BsaWNlKGksMSksMD09PW8ubmV4dEhhbmRsZXJzLmxlbmd0aCYmKHIudGFyZ2V0JiZyLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGUsby5oYW5kbGVFdmVudCxuKSxvLmhhbmRsZUV2ZW50PXZvaWQgMCl9fX19XSksZX0oKTt0LmRlZmF1bHQ9c30sUlJnUTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXtuLmQodCwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEJ9KSksbi5kKHQsImIiLChmdW5jdGlvbigpe3JldHVybiBkfSkpLG4uZCh0LCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4gQ30pKSxuLmQodCwiZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHF9KSksbi5kKHQsImUiLChmdW5jdGlvbigpe3JldHVybiBVfSkpLG4uZCh0LCJmIiwoZnVuY3Rpb24oKXtyZXR1cm4gWX0pKSxuLmQodCwiZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIE59KSksbi5kKHQsImgiLChmdW5jdGlvbigpe3JldHVybiBqfSkpLG4uZCh0LCJpIiwoZnVuY3Rpb24oKXtyZXR1cm4gYn0pKSxuLmQodCwiaiIsKGZ1bmN0aW9uKCl7cmV0dXJuIFR9KSksbi5kKHQsImsiLChmdW5jdGlvbigpe3JldHVybiBrfSkpLG4uZCh0LCJsIiwoZnVuY3Rpb24oKXtyZXR1cm4gUH0pKSxuLmQodCwibSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFN9KSksbi5kKHQsIm4iLChmdW5jdGlvbigpe3JldHVybiBEfSkpLG4uZCh0LCJvIiwoZnVuY3Rpb24oKXtyZXR1cm4gTX0pKSxuLmQodCwicCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKHQsInEiLChmdW5jdGlvbigpe3JldHVybiBafSkpLG4uZCh0LCJyIiwoZnVuY3Rpb24oKXtyZXR1cm4gRX0pKSxuLmQodCwicyIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSksbi5kKHQsInQiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZCh0LCJ1IiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQodCwidiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKHQsInciLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZCh0LCJ4IiwoZnVuY3Rpb24oKXtyZXR1cm4gR30pKSxuLmQodCwieSIsKGZ1bmN0aW9uKCl7cmV0dXJuIFF9KSksbi5kKHQsInoiLChmdW5jdGlvbigpe3JldHVybiAkfSkpLG4uZCh0LCJBIiwoZnVuY3Rpb24oKXtyZXR1cm4gZWV9KSksbi5kKHQsIkIiLChmdW5jdGlvbigpe3JldHVybiB0ZX0pKSxuLmQodCwiQyIsKGZ1bmN0aW9uKCl7cmV0dXJuIFZ9KSksbi5kKHQsIkQiLChmdW5jdGlvbigpe3JldHVybiBLfSkpLG4uZCh0LCJFIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQodCwiRiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KSksbi5kKHQsIkciLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZCh0LCJIIiwoZnVuY3Rpb24oKXtyZXR1cm4gdn0pKSxuLmQodCwiSSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEp9KSk7dmFyIHI9bigidHFDeCIpLG89bigicVZkVCIpLGE9bigibXJTRyIpLGk9bigiOXg2eCIpLHU9bi5uKGkpO24oInF4Mm4iKTtmdW5jdGlvbiBzKGUsdCxuLHIpe2lmKGZ1bmN0aW9uKGUpe3JldHVybiJJbnRWYWx1ZSI9PT1lLmtpbmR9KG4pfHxmdW5jdGlvbihlKXtyZXR1cm4iRmxvYXRWYWx1ZSI9PT1lLmtpbmR9KG4pKWVbdC52YWx1ZV09TnVtYmVyKG4udmFsdWUpO2Vsc2UgaWYoZnVuY3Rpb24oZSl7cmV0dXJuIkJvb2xlYW5WYWx1ZSI9PT1lLmtpbmR9KG4pfHxmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nVmFsdWUiPT09ZS5raW5kfShuKSllW3QudmFsdWVdPW4udmFsdWU7ZWxzZSBpZihmdW5jdGlvbihlKXtyZXR1cm4iT2JqZWN0VmFsdWUiPT09ZS5raW5kfShuKSl7dmFyIGE9e307bi5maWVsZHMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gcyhhLGUubmFtZSxlLnZhbHVlLHIpfSkpLGVbdC52YWx1ZV09YX1lbHNlIGlmKGZ1bmN0aW9uKGUpe3JldHVybiJWYXJpYWJsZSI9PT1lLmtpbmR9KG4pKXt2YXIgaT0ocnx8e30pW24ubmFtZS52YWx1ZV07ZVt0LnZhbHVlXT1pfWVsc2UgaWYoZnVuY3Rpb24oZSl7cmV0dXJuIkxpc3RWYWx1ZSI9PT1lLmtpbmR9KG4pKWVbdC52YWx1ZV09bi52YWx1ZXMubWFwKChmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4gcyhuLHQsZSxyKSxuW3QudmFsdWVdfSkpO2Vsc2UgaWYoZnVuY3Rpb24oZSl7cmV0dXJuIkVudW1WYWx1ZSI9PT1lLmtpbmR9KG4pKWVbdC52YWx1ZV09bi52YWx1ZTtlbHNle2lmKCFmdW5jdGlvbihlKXtyZXR1cm4iTnVsbFZhbHVlIj09PWUua2luZH0obikpdGhyb3cgbmV3IG8uYSgxNyk7ZVt0LnZhbHVlXT1udWxsfX1mdW5jdGlvbiBsKGUsdCl7dmFyIG49bnVsbDtlLmRpcmVjdGl2ZXMmJihuPXt9LGUuZGlyZWN0aXZlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtuW2UubmFtZS52YWx1ZV09e30sZS5hcmd1bWVudHMmJmUuYXJndW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBvPXIubmFtZSxhPXIudmFsdWU7cmV0dXJuIHMobltlLm5hbWUudmFsdWVdLG8sYSx0KX0pKX0pKSk7dmFyIHI9bnVsbDtyZXR1cm4gZS5hcmd1bWVudHMmJmUuYXJndW1lbnRzLmxlbmd0aCYmKHI9e30sZS5hcmd1bWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5uYW1lLG89ZS52YWx1ZTtyZXR1cm4gcyhyLG4sbyx0KX0pKSksZihlLm5hbWUudmFsdWUscixuKX12YXIgYz1bImNvbm5lY3Rpb24iLCJpbmNsdWRlIiwic2tpcCIsImNsaWVudCIsInJlc3QiLCJleHBvcnQiXTtmdW5jdGlvbiBmKGUsdCxuKXtpZihuJiZuLmNvbm5lY3Rpb24mJm4uY29ubmVjdGlvbi5rZXkpe2lmKG4uY29ubmVjdGlvbi5maWx0ZXImJm4uY29ubmVjdGlvbi5maWx0ZXIubGVuZ3RoPjApe3ZhciByPW4uY29ubmVjdGlvbi5maWx0ZXI/bi5jb25uZWN0aW9uLmZpbHRlcjpbXTtyLnNvcnQoKTt2YXIgbz10LGE9e307cmV0dXJuIHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YVtlXT1vW2VdfSkpLG4uY29ubmVjdGlvbi5rZXkrIigiK0pTT04uc3RyaW5naWZ5KGEpKyIpIn1yZXR1cm4gbi5jb25uZWN0aW9uLmtleX12YXIgaT1lO2lmKHQpe3ZhciBzPXUoKSh0KTtpKz0iKCIrcysiKSJ9cmV0dXJuIG4mJk9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpey0xPT09Yy5pbmRleE9mKGUpJiYobltlXSYmT2JqZWN0LmtleXMobltlXSkubGVuZ3RoP2krPSJAIitlKyIoIitKU09OLnN0cmluZ2lmeShuW2VdKSsiKSI6aSs9IkAiK2UpfSkpLGl9ZnVuY3Rpb24gZChlLHQpe2lmKGUuYXJndW1lbnRzJiZlLmFyZ3VtZW50cy5sZW5ndGgpe3ZhciBuPXt9O3JldHVybiBlLmFyZ3VtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lLm5hbWUsbz1lLnZhbHVlO3JldHVybiBzKG4scixvLHQpfSkpLG59cmV0dXJuIG51bGx9ZnVuY3Rpb24gcChlKXtyZXR1cm4gZS5hbGlhcz9lLmFsaWFzLnZhbHVlOmUubmFtZS52YWx1ZX1mdW5jdGlvbiBoKGUpe3JldHVybiJGaWVsZCI9PT1lLmtpbmR9ZnVuY3Rpb24geShlKXtyZXR1cm4iSW5saW5lRnJhZ21lbnQiPT09ZS5raW5kfWZ1bmN0aW9uIG0oZSl7cmV0dXJuIGUmJiJpZCI9PT1lLnR5cGUmJiJib29sZWFuIj09dHlwZW9mIGUuZ2VuZXJhdGVkfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLE9iamVjdChhLmEpKHt0eXBlOiJpZCIsZ2VuZXJhdGVkOnR9LCJzdHJpbmciPT10eXBlb2YgZT97aWQ6ZSx0eXBlbmFtZTp2b2lkIDB9OmUpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIG51bGwhPWUmJiJvYmplY3QiPT10eXBlb2YgZSYmImpzb24iPT09ZS50eXBlfWZ1bmN0aW9uIGIoZSx0KXtpZihlLmRpcmVjdGl2ZXMmJmUuZGlyZWN0aXZlcy5sZW5ndGgpe3ZhciBuPXt9O3JldHVybiBlLmRpcmVjdGl2ZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bltlLm5hbWUudmFsdWVdPWQoZSx0KX0pKSxufXJldHVybiBudWxsfWZ1bmN0aW9uIHcoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9e30pLChuPWUuZGlyZWN0aXZlcyxuP24uZmlsdGVyKE8pLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hcmd1bWVudHM7ZS5uYW1lLnZhbHVlLE9iamVjdChvLmIpKHQmJjE9PT10Lmxlbmd0aCw0KTt2YXIgbj10WzBdO09iamVjdChvLmIpKG4ubmFtZSYmImlmIj09PW4ubmFtZS52YWx1ZSw1KTt2YXIgcj1uLnZhbHVlO3JldHVybiBPYmplY3Qoby5iKShyJiYoIlZhcmlhYmxlIj09PXIua2luZHx8IkJvb2xlYW5WYWx1ZSI9PT1yLmtpbmQpLDYpLHtkaXJlY3RpdmU6ZSxpZkFyZ3VtZW50Om59fSkpOltdKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIG49ZS5kaXJlY3RpdmUscj1lLmlmQXJndW1lbnQsYT0hMTtyZXR1cm4iVmFyaWFibGUiPT09ci52YWx1ZS5raW5kPyhhPXRbci52YWx1ZS5uYW1lLnZhbHVlXSxPYmplY3Qoby5iKSh2b2lkIDAhPT1hLDMpKTphPXIudmFsdWUudmFsdWUsInNraXAiPT09bi5uYW1lLnZhbHVlPyFhOmF9KSk7dmFyIG59ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gT2JqZWN0KHIudmlzaXQpKGUse0RpcmVjdGl2ZTpmdW5jdGlvbihlKXt0LnB1c2goZS5uYW1lLnZhbHVlKX19KSx0fSh0KS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmRleE9mKHQpPi0xfSkpfWZ1bmN0aW9uIEUoZSl7cmV0dXJuIGUmJl8oWyJjbGllbnQiXSxlKSYmXyhbImV4cG9ydCJdLGUpfWZ1bmN0aW9uIE8oZSl7dmFyIHQ9ZS5uYW1lLnZhbHVlO3JldHVybiJza2lwIj09PXR8fCJpbmNsdWRlIj09PXR9ZnVuY3Rpb24gayhlLHQpe3ZhciBuPXQscj1bXTtyZXR1cm4gZS5kZWZpbml0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihlKXtpZigiT3BlcmF0aW9uRGVmaW5pdGlvbiI9PT1lLmtpbmQpdGhyb3cgbmV3IG8uYSgxKTsiRnJhZ21lbnREZWZpbml0aW9uIj09PWUua2luZCYmci5wdXNoKGUpfSkpLHZvaWQgMD09PW4mJihPYmplY3Qoby5iKSgxPT09ci5sZW5ndGgsMiksbj1yWzBdLm5hbWUudmFsdWUpLE9iamVjdChhLmEpKHt9LGUse2RlZmluaXRpb25zOlt7a2luZDoiT3BlcmF0aW9uRGVmaW5pdGlvbiIsb3BlcmF0aW9uOiJxdWVyeSIsc2VsZWN0aW9uU2V0OntraW5kOiJTZWxlY3Rpb25TZXQiLHNlbGVjdGlvbnM6W3traW5kOiJGcmFnbWVudFNwcmVhZCIsbmFtZTp7a2luZDoiTmFtZSIsdmFsdWU6bn19XX19XS5jb25jYXQoZS5kZWZpbml0aW9ucyl9KX1mdW5jdGlvbiBDKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe251bGwhPXQmJk9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09dFtuXX0pKX0pKSxlfWZ1bmN0aW9uIHgoZSl7T2JqZWN0KG8uYikoZSYmIkRvY3VtZW50Ij09PWUua2luZCw4KTt2YXIgdD1lLmRlZmluaXRpb25zLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIkZyYWdtZW50RGVmaW5pdGlvbiIhPT1lLmtpbmR9KSkubWFwKChmdW5jdGlvbihlKXtpZigiT3BlcmF0aW9uRGVmaW5pdGlvbiIhPT1lLmtpbmQpdGhyb3cgbmV3IG8uYSg5KTtyZXR1cm4gZX0pKTtyZXR1cm4gT2JqZWN0KG8uYikodC5sZW5ndGg8PTEsMTApLGV9ZnVuY3Rpb24gUyhlKXtyZXR1cm4geChlKSxlLmRlZmluaXRpb25zLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIk9wZXJhdGlvbkRlZmluaXRpb24iPT09ZS5raW5kfSkpWzBdfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIGUuZGVmaW5pdGlvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4iT3BlcmF0aW9uRGVmaW5pdGlvbiI9PT1lLmtpbmQmJmUubmFtZX0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWUudmFsdWV9KSlbMF18fG51bGx9ZnVuY3Rpb24gVChlKXtyZXR1cm4gZS5kZWZpbml0aW9ucy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiJGcmFnbWVudERlZmluaXRpb24iPT09ZS5raW5kfSkpfWZ1bmN0aW9uIE0oZSl7dmFyIHQ9UyhlKTtyZXR1cm4gT2JqZWN0KG8uYikodCYmInF1ZXJ5Ij09PXQub3BlcmF0aW9uLDEyKSx0fWZ1bmN0aW9uIFAoZSl7dmFyIHQ7eChlKTtmb3IodmFyIG49MCxyPWUuZGVmaW5pdGlvbnM7bjxyLmxlbmd0aDtuKyspe3ZhciBhPXJbbl07aWYoIk9wZXJhdGlvbkRlZmluaXRpb24iPT09YS5raW5kKXt2YXIgaT1hLm9wZXJhdGlvbjtpZigicXVlcnkiPT09aXx8Im11dGF0aW9uIj09PWl8fCJzdWJzY3JpcHRpb24iPT09aSlyZXR1cm4gYX0iRnJhZ21lbnREZWZpbml0aW9uIiE9PWEua2luZHx8dHx8KHQ9YSl9aWYodClyZXR1cm4gdDt0aHJvdyBuZXcgby5hKDE2KX1mdW5jdGlvbiBOKGUpe3ZvaWQgMD09PWUmJihlPVtdKTt2YXIgdD17fTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2UubmFtZS52YWx1ZV09ZX0pKSx0fWZ1bmN0aW9uIGooZSl7aWYoZSYmZS52YXJpYWJsZURlZmluaXRpb25zJiZlLnZhcmlhYmxlRGVmaW5pdGlvbnMubGVuZ3RoKXt2YXIgdD1lLnZhcmlhYmxlRGVmaW5pdGlvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSkubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLnZhcmlhYmxlLG49ZS5kZWZhdWx0VmFsdWUscj17fTtyZXR1cm4gcyhyLHQubmFtZSxuKSxyfSkpO3JldHVybiBDLmFwcGx5KHZvaWQgMCxbe31dLmNvbmNhdCh0KSl9cmV0dXJue319ZnVuY3Rpb24gTChlLHQsbil7dmFyIHI9MDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihuLG8pe3QuY2FsbCh0aGlzLG4sbyxlKSYmKGVbcisrXT1uKX0pLG4pLGUubGVuZ3RoPXIsZX12YXIgUj17a2luZDoiRmllbGQiLG5hbWU6e2tpbmQ6Ik5hbWUiLHZhbHVlOiJfX3R5cGVuYW1lIn19O2Z1bmN0aW9uIEkoZSl7cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdC5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIkZyYWdtZW50U3ByZWFkIj09PXQua2luZCYmZShuW3QubmFtZS52YWx1ZV0sbil9KSl9KFMoZSl8fGZ1bmN0aW9uKGUpe09iamVjdChvLmIpKCJEb2N1bWVudCI9PT1lLmtpbmQsMTMpLE9iamVjdChvLmIpKGUuZGVmaW5pdGlvbnMubGVuZ3RoPD0xLDE0KTt2YXIgdD1lLmRlZmluaXRpb25zWzBdO3JldHVybiBPYmplY3Qoby5iKSgiRnJhZ21lbnREZWZpbml0aW9uIj09PXQua2luZCwxNSksdH0oZSksTihUKGUpKSk/bnVsbDplfWZ1bmN0aW9uIEEoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWUmJmUubmFtZT09PXQubmFtZS52YWx1ZXx8ZS50ZXN0JiZlLnRlc3QodCl9KSl9fWZ1bmN0aW9uIEYoZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLG89W10saT1PYmplY3QuY3JlYXRlKG51bGwpLHU9W10scz1JKE9iamVjdChyLnZpc2l0KSh0LHtWYXJpYWJsZTp7ZW50ZXI6ZnVuY3Rpb24oZSx0LHIpeyJWYXJpYWJsZURlZmluaXRpb24iIT09ci5raW5kJiYobltlLm5hbWUudmFsdWVdPSEwKX19LEZpZWxkOntlbnRlcjpmdW5jdGlvbih0KXtpZihlJiZ0LmRpcmVjdGl2ZXMmJihlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbW92ZX0pKSYmdC5kaXJlY3RpdmVzJiZ0LmRpcmVjdGl2ZXMuc29tZShBKGUpKSkpcmV0dXJuIHQuYXJndW1lbnRzJiZ0LmFyZ3VtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXsiVmFyaWFibGUiPT09ZS52YWx1ZS5raW5kJiZvLnB1c2goe25hbWU6ZS52YWx1ZS5uYW1lLnZhbHVlfSl9KSksdC5zZWxlY3Rpb25TZXQmJmZ1bmN0aW9uIGUodCl7dmFyIG49W107cmV0dXJuIHQuc2VsZWN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbih0KXsoaCh0KXx8eSh0KSkmJnQuc2VsZWN0aW9uU2V0P2UodC5zZWxlY3Rpb25TZXQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBuLnB1c2goZSl9KSk6IkZyYWdtZW50U3ByZWFkIj09PXQua2luZCYmbi5wdXNoKHQpfSkpLG59KHQuc2VsZWN0aW9uU2V0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt1LnB1c2goe25hbWU6ZS5uYW1lLnZhbHVlfSl9KSksbnVsbH19LEZyYWdtZW50U3ByZWFkOntlbnRlcjpmdW5jdGlvbihlKXtpW2UubmFtZS52YWx1ZV09ITB9fSxEaXJlY3RpdmU6e2VudGVyOmZ1bmN0aW9uKHQpe2lmKEEoZSkodCkpcmV0dXJuIG51bGx9fX0pKTtyZXR1cm4gcyYmTChvLChmdW5jdGlvbihlKXtyZXR1cm4hbltlLm5hbWVdfSkpLmxlbmd0aCYmKHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudmFsdWUmJiJWYXJpYWJsZSI9PT10LnZhbHVlLmtpbmQmJnQudmFsdWUubmFtZSYmKGUubmFtZT09PXQudmFsdWUubmFtZS52YWx1ZXx8ZS50ZXN0JiZlLnRlc3QodCkpfSkpfX0oZSk7cmV0dXJuIEkoT2JqZWN0KHIudmlzaXQpKHQse09wZXJhdGlvbkRlZmluaXRpb246e2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoYS5hKSh7fSx0LHt2YXJpYWJsZURlZmluaXRpb25zOnQudmFyaWFibGVEZWZpbml0aW9ucy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10LnZhcmlhYmxlLm5hbWUudmFsdWV9KSl9KSl9KX19LEZpZWxkOntlbnRlcjpmdW5jdGlvbih0KXtpZihlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbW92ZX0pKSl7dmFyIHI9MDtpZih0LmFyZ3VtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXtuKGUpJiYocis9MSl9KSksMT09PXIpcmV0dXJuIG51bGx9fX0sQXJndW1lbnQ6e2VudGVyOmZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIG51bGx9fX0pKX0obyxzKSkscyYmTCh1LChmdW5jdGlvbihlKXtyZXR1cm4haVtlLm5hbWVdfSkpLmxlbmd0aCYmKHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKHQpe2lmKGUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZT09PXQubmFtZS52YWx1ZX0pKSlyZXR1cm4gbnVsbH1yZXR1cm4gSShPYmplY3Qoci52aXNpdCkodCx7RnJhZ21lbnRTcHJlYWQ6e2VudGVyOm59LEZyYWdtZW50RGVmaW5pdGlvbjp7ZW50ZXI6bn19KSl9KHUscykpLHN9ZnVuY3Rpb24gQihlKXtyZXR1cm4gT2JqZWN0KHIudmlzaXQpKHgoZSkse1NlbGVjdGlvblNldDp7ZW50ZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKCFufHwiT3BlcmF0aW9uRGVmaW5pdGlvbiIhPT1uLmtpbmQpe3ZhciByPWUuc2VsZWN0aW9ucztpZihyKWlmKCFyLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBoKGUpJiYoIl9fdHlwZW5hbWUiPT09ZS5uYW1lLnZhbHVlfHwwPT09ZS5uYW1lLnZhbHVlLmxhc3RJbmRleE9mKCJfXyIsMCkpfSkpKXt2YXIgbz1uO2lmKCEoaChvKSYmby5kaXJlY3RpdmVzJiZvLmRpcmVjdGl2ZXMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuImV4cG9ydCI9PT1lLm5hbWUudmFsdWV9KSkpKXJldHVybiBPYmplY3QoYS5hKSh7fSxlLHtzZWxlY3Rpb25zOnIuY29uY2F0KFtSXSl9KX19fX19KX12YXIgej17dGVzdDpmdW5jdGlvbihlKXt2YXIgdD0iY29ubmVjdGlvbiI9PT1lLm5hbWUudmFsdWU7cmV0dXJuIHQmJighZS5hcmd1bWVudHN8fGUuYXJndW1lbnRzLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJrZXkiPT09ZS5uYW1lLnZhbHVlfSkpKSx0fX07ZnVuY3Rpb24gSyhlKXtyZXR1cm4gRihbel0seChlKSl9ZnVuY3Rpb24gcShlKXtyZXR1cm4icXVlcnkiPT09UChlKS5vcGVyYXRpb24/ZTpPYmplY3Qoci52aXNpdCkoZSx7T3BlcmF0aW9uRGVmaW5pdGlvbjp7ZW50ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChhLmEpKHt9LGUse29wZXJhdGlvbjoicXVlcnkifSl9fX0pfWZ1bmN0aW9uIFYoZSl7eChlKTt2YXIgdD1GKFt7dGVzdDpmdW5jdGlvbihlKXtyZXR1cm4iY2xpZW50Ij09PWUubmFtZS52YWx1ZX0scmVtb3ZlOiEwfV0sZSk7cmV0dXJuIHQmJih0PU9iamVjdChyLnZpc2l0KSh0LHtGcmFnbWVudERlZmluaXRpb246e2VudGVyOmZ1bmN0aW9uKGUpe2lmKGUuc2VsZWN0aW9uU2V0JiZlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gaChlKSYmIl9fdHlwZW5hbWUiPT09ZS5uYW1lLnZhbHVlfSkpKXJldHVybiBudWxsfX19KSksdH12YXIgVT0iZnVuY3Rpb24iPT10eXBlb2YgV2Vha01hcCYmISgib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmIlJlYWN0TmF0aXZlIj09PW5hdmlnYXRvci5wcm9kdWN0KSxXPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gWShlKXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4pe3N3aXRjaChXLmNhbGwodCkpe2Nhc2UiW29iamVjdCBBcnJheV0iOmlmKG4uaGFzKHQpKXJldHVybiBuLmdldCh0KTt2YXIgcj10LnNsaWNlKDApO3JldHVybiBuLnNldCh0LHIpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXtyW29dPWUodCxuKX0pKSxyO2Nhc2UiW29iamVjdCBPYmplY3RdIjppZihuLmhhcyh0KSlyZXR1cm4gbi5nZXQodCk7dmFyIG89T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpO3JldHVybiBuLnNldCh0LG8pLE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKHIpe29bcl09ZSh0W3JdLG4pfSkpLG87ZGVmYXVsdDpyZXR1cm4gdH19KGUsbmV3IE1hcCl9ZnVuY3Rpb24gSCh0KXtyZXR1cm4odm9pZCAwIT09ZT8icHJvZHVjdGlvbiI6ImRldmVsb3BtZW50Iik9PT10fWZ1bmN0aW9uIEcoKXtyZXR1cm4hMD09PUgoInByb2R1Y3Rpb24iKX1mdW5jdGlvbiBRKCl7cmV0dXJuITA9PT1IKCJ0ZXN0Iil9ZnVuY3Rpb24gSihlKXt0cnl7cmV0dXJuIGUoKX1jYXRjaChlKXtjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpfX1mdW5jdGlvbiBaKGUpe3JldHVybiBlLmVycm9ycyYmZS5lcnJvcnMubGVuZ3RofWZ1bmN0aW9uICQoZSl7aWYoKCEwPT09SCgiZGV2ZWxvcG1lbnQiKXx8USgpKSYmISgiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIFN5bWJvbCgiIikpKXJldHVybiBmdW5jdGlvbiBlKHQpe3JldHVybiBPYmplY3QuZnJlZXplKHQpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe251bGw9PT10W25dfHwib2JqZWN0IiE9dHlwZW9mIHRbbl0mJiJmdW5jdGlvbiIhPXR5cGVvZiB0W25dfHxPYmplY3QuaXNGcm96ZW4odFtuXSl8fGUodFtuXSl9KSksdH0oZSk7cmV0dXJuIGV9dmFyIFg9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBlZSgpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gdGUoZSl9ZnVuY3Rpb24gdGUoZSl7dmFyIHQ9ZVswXXx8e30sbj1lLmxlbmd0aDtpZihuPjEpe3ZhciByPVtdO3Q9b2UodCxyKTtmb3IodmFyIG89MTtvPG47KytvKXQ9cmUodCxlW29dLHIpfXJldHVybiB0fWZ1bmN0aW9uIG5lKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfWZ1bmN0aW9uIHJlKGUsdCxuKXtyZXR1cm4gbmUodCkmJm5lKGUpPyhPYmplY3QuaXNFeHRlbnNpYmxlJiYhT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmKGU9b2UoZSxuKSksT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG89dFtyXTtpZihYLmNhbGwoZSxyKSl7dmFyIGE9ZVtyXTtvIT09YSYmKGVbcl09cmUob2UoYSxuKSxvLG4pKX1lbHNlIGVbcl09b30pKSxlKTp0fWZ1bmN0aW9uIG9lKGUsdCl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJnQuaW5kZXhPZihlKTwwJiYoZT1BcnJheS5pc0FycmF5KGUpP2Uuc2xpY2UoMCk6T2JqZWN0KGEuYSkoe19fcHJvdG9fXzpPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGUpLHQucHVzaChlKSksZX1PYmplY3QuY3JlYXRlKHt9KX0pLmNhbGwodGhpcyxuKCI4b3hCIikpfSxTMXRvOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuPSgwLGEuZGVmYXVsdCkoZSk7aWYoIW4ubGVuZ3RoKXJldHVybiB2b2lkIHQucHJldmVudERlZmF1bHQoKTt2YXIgcixvPXQuc2hpZnRLZXksaT1uWzBdLHU9bltuLmxlbmd0aC0xXTtpZihlPT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl7aWYoIW8pcmV0dXJuO3I9dX11IT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudHx8b3x8KHI9aSk7aT09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJm8mJihyPXUpO2lmKHIpcmV0dXJuIHQucHJldmVudERlZmF1bHQoKSx2b2lkIHIuZm9jdXMoKTt2YXIgcz0vKFxiQ2hyb21lXGJ8XGJTYWZhcmlcYilcLy8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KTtpZihudWxsPT1zfHwiQ2hyb21lIj09c1sxXXx8bnVsbCE9L1xiaVBvZFxifFxiaVBhZFxiL2cuZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KSlyZXR1cm47dmFyIGw9bi5pbmRleE9mKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO2w+LTEmJihsKz1vPy0xOjEpO2lmKHZvaWQgMD09PW5bbF0pcmV0dXJuIHQucHJldmVudERlZmF1bHQoKSx2b2lkKHI9bz91OmkpLmZvY3VzKCk7dC5wcmV2ZW50RGVmYXVsdCgpLG5bbF0uZm9jdXMoKX07dmFyIHIsbz1uKCJaRExhIiksYT0ocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07ZS5leHBvcnRzPXQuZGVmYXVsdH0sU0Y1cTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJcXHN8KD8hW19dKSIrbigiL0VRdiIpLmdldFB1bmN0dWF0aW9uKCksbz1uZXcgUmVnRXhwKCJeKD86IityKyIpKig/Olsn4oCY4oCZXXwoPyEiK3IrIikuKSooPzooPyEiK3IrIikuKSIpLGE9bmV3IFJlZ0V4cCgiKD86KD8hIityKyIpLikoPzpbJ+KAmOKAmV18KD8hIityKyIpLikqKD86IityKyIpKiQiKTtmdW5jdGlvbiBpKGUsdCl7dmFyIG49dD9hLmV4ZWMoZSk6by5leGVjKGUpO3JldHVybiBuP25bMF06ZX12YXIgdT17Z2V0QmFja3dhcmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSwhMCl9LGdldEZvcndhcmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSwhMSl9fTtlLmV4cG9ydHM9dX0sU0xWWDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQsbj1lLlN5bWJvbDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLm9ic2VydmFibGU/dD1uLm9ic2VydmFibGU6KHQ9bigib2JzZXJ2YWJsZSIpLG4ub2JzZXJ2YWJsZT10KTp0PSJAQG9ic2VydmFibGUiLHR9bi5kKHQsImEiLChmdW5jdGlvbigpe3JldHVybiByfSkpfSxTWWJwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZm9ybWF0RGF5PWksdC5mb3JtYXRNb250aFRpdGxlPXUsdC5mb3JtYXRXZWVrZGF5U2hvcnQ9cyx0LmZvcm1hdFdlZWtkYXlMb25nPWwsdC5nZXRGaXJzdERheU9mV2Vlaz1jLHQuZ2V0TW9udGhzPWYsdC5mb3JtYXREYXRlPWQsdC5wYXJzZURhdGU9cDt2YXIgcixvPW4oIndkL1IiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBpKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiZW4iO3JldHVybigwLGEuZGVmYXVsdCkoZSkubG9jYWxlKHQpLmZvcm1hdCgiZGRkIGxsIil9ZnVuY3Rpb24gdShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImVuIjtyZXR1cm4oMCxhLmRlZmF1bHQpKGUpLmxvY2FsZSh0KS5mb3JtYXQoIk1NTU0gWVlZWSIpfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJlbiI7cmV0dXJuKDAsYS5kZWZhdWx0KSgpLmxvY2FsZSh0KS5fbG9jYWxlLndlZWtkYXlzTWluKClbZV19ZnVuY3Rpb24gbChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImVuIjtyZXR1cm4oMCxhLmRlZmF1bHQpKCkubG9jYWxlKHQpLl9sb2NhbGUud2Vla2RheXMoKVtlXX1mdW5jdGlvbiBjKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJlbiIsdD1hLmRlZmF1bHQubG9jYWxlRGF0YShlKTtyZXR1cm4gdC5maXJzdERheU9mV2VlaygpfWZ1bmN0aW9uIGYoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJlbiIsdD1bXSxuPTA7bjwxMjspdC5wdXNoKCgwLGEuZGVmYXVsdCkoKS5sb2NhbGUoZSkubW9udGgobikuZm9ybWF0KCJNTU1NIikpLG4rPTE7cmV0dXJuIHR9ZnVuY3Rpb24gZChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkwiLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJlbiI7cmV0dXJuKDAsYS5kZWZhdWx0KShlKS5sb2NhbGUobikuZm9ybWF0KEFycmF5LmlzQXJyYXkodCk/dFswXTp0KX1mdW5jdGlvbiBwKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiTCIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ImVuIixyPSgwLGEuZGVmYXVsdCkoZSx0LG4sITApO2lmKHIuaXNWYWxpZCgpKXJldHVybiByLnRvRGF0ZSgpfXQuZGVmYXVsdD17Zm9ybWF0RGF5OmksZm9ybWF0TW9udGhUaXRsZTp1LGZvcm1hdFdlZWtkYXlTaG9ydDpzLGZvcm1hdFdlZWtkYXlMb25nOmwsZ2V0Rmlyc3REYXlPZldlZWs6YyxnZXRNb250aHM6Zixmb3JtYXREYXRlOmQscGFyc2VEYXRlOnB9fSxTWWhwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiM3NPSiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIG89ci51bmRvKHQpO2lmKCJzcGVsbGNoZWNrLWNoYW5nZSIhPT10LmdldExhc3RDaGFuZ2VUeXBlKCkpZS5wcmV2ZW50RGVmYXVsdCgpLHQuZ2V0TmF0aXZlbHlSZW5kZXJlZENvbnRlbnQoKT8obihyLnNldCh0LHtuYXRpdmVseVJlbmRlcmVkQ29udGVudDpudWxsfSkpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bihvKX0pLDApKTpuKG8pO2Vsc2V7dmFyIGE9by5nZXRDdXJyZW50Q29udGVudCgpO24oci5zZXQobyx7bmF0aXZlbHlSZW5kZXJlZENvbnRlbnQ6YX0pKX19fSxTa3NPOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbih0LHIpe3JldHVybiBlLmV4cG9ydHM9bj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sbih0LHIpfWUuZXhwb3J0cz1ufSxTc0tYOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigidlJHSiIpLG89bi5uKHIpLGE9e30saT0wLHU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIit0LmVuZCt0LnN0cmljdCt0LnNlbnNpdGl2ZSxyPWFbbl18fChhW25dPXt9KTtpZihyW2VdKXJldHVybiByW2VdO3ZhciB1PVtdLHM9e3JlOm8oKShlLHUsdCksa2V5czp1fTtyZXR1cm4gaTwxZTQmJihyW2VdPXMsaSsrKSxzfTt0LmE9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LG49YXJndW1lbnRzWzJdOyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e3BhdGg6dH0pO3ZhciByPXQsbz1yLnBhdGgsYT1yLmV4YWN0LGk9dm9pZCAwIT09YSYmYSxzPXIuc3RyaWN0LGw9dm9pZCAwIT09cyYmcyxjPXIuc2Vuc2l0aXZlLGY9dm9pZCAwIT09YyYmYztpZihudWxsPT1vKXJldHVybiBuO3ZhciBkPXUobyx7ZW5kOmksc3RyaWN0Omwsc2Vuc2l0aXZlOmZ9KSxwPWQucmUsaD1kLmtleXMseT1wLmV4ZWMoZSk7aWYoIXkpcmV0dXJuIG51bGw7dmFyIG09eVswXSx2PXkuc2xpY2UoMSksZz1lPT09bTtyZXR1cm4gaSYmIWc/bnVsbDp7cGF0aDpvLHVybDoiLyI9PT1vJiYiIj09PW0/Ii8iOm0saXNFeGFjdDpnLHBhcmFtczpoLnJlZHVjZSgoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlW3QubmFtZV09dltuXSxlfSkse30pfX19LFQ0MDE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuImhhbmRsZWQiPT09ZXx8ITA9PT1lfX0sVE9QejpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9IiIsbihuLnM9NzMpfSh7MDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJxMXRJIil9LDE4OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkU3VVAiKX0sNDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIxN3g5Iil9LDczOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9cyhuKDApKSxpPXMobig0KSksdT1uKDE4KTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBsKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgZj17Y2hpbGRyZW46aS5kZWZhdWx0Lm5vZGUsb25PdXRzaWRlQ2xpY2s6aS5kZWZhdWx0LmZ1bmN9LGQ9e2NoaWxkcmVuOmEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsKSxvbk91dHNpZGVDbGljazpmdW5jdGlvbigpe319LHA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlO2wodGhpcyx0KTtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KG4pLG89MDtvPG47bysrKXJbb109YXJndW1lbnRzW29dO3ZhciBhPWModGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChyKSkpO3JldHVybiBhLm9uT3V0c2lkZUNsaWNrPWEub25PdXRzaWRlQ2xpY2suYmluZChhKSxhLnNldENoaWxkTm9kZVJlZj1hLnNldENoaWxkTm9kZVJlZi5iaW5kKGEpLGF9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIisodm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xpY2tIYW5kbGU9KDAsdS5hZGRFdmVudExpc3RlbmVyKShkb2N1bWVudCwiY2xpY2siLHRoaXMub25PdXRzaWRlQ2xpY2sse2NhcHR1cmU6ITB9KX19LHtrZXk6ImNvbXBvbmVudFdpbGxVbm1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xpY2tIYW5kbGUmJigwLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcikodGhpcy5jbGlja0hhbmRsZSl9fSx7a2V5OiJvbk91dHNpZGVDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5vbk91dHNpZGVDbGljayxuPXRoaXMuY2hpbGROb2RlO24mJm4uY29udGFpbnMoZS50YXJnZXQpfHx0KGUpfX0se2tleToic2V0Q2hpbGROb2RlUmVmIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmNoaWxkTm9kZT1lfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7cmVmOnRoaXMuc2V0Q2hpbGROb2RlUmVmfSx0aGlzLnByb3BzLmNoaWxkcmVuKX19XSksdH0oYS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PXAscC5wcm9wVHlwZXM9ZixwLmRlZmF1bHRQcm9wcz1kfX0pfSxUU1lROmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbygpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2lmKHIpe3ZhciBhPXR5cGVvZiByO2lmKCJzdHJpbmciPT09YXx8Im51bWJlciI9PT1hKWUucHVzaChyKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoKXt2YXIgaT1vLmFwcGx5KG51bGwscik7aSYmZS5wdXNoKGkpfWVsc2UgaWYoIm9iamVjdCI9PT1hKWZvcih2YXIgdSBpbiByKW4uY2FsbChyLHUpJiZyW3VdJiZlLnB1c2godSl9fXJldHVybiBlLmpvaW4oIiAiKX1lLmV4cG9ydHM/KG8uZGVmYXVsdD1vLGUuZXhwb3J0cz1vKTp2b2lkIDA9PT0ocj1mdW5jdGlvbigpe3JldHVybiBvfS5hcHBseSh0LFtdKSl8fChlLmV4cG9ydHM9cil9KCl9LFRVZ3k6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1wKG4oIjE3eDkiKSksbz1wKG4oIlhHQmIiKSksYT1uKCJIc3FnIiksaT1uKCJ2VitHIiksdT1wKG4oInljMmUiKSkscz1wKG4oIkJoNlIiKSksbD1wKG4oInFPU0siKSksYz1wKG4oIjArYmciKSksZj1wKG4oIml1THIiKSksZD1wKG4oIjJTMkUiKSk7ZnVuY3Rpb24gcChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5kZWZhdWx0PXtkYXRlOm8uZGVmYXVsdC5tb21lbnRPYmosb25EYXRlQ2hhbmdlOnIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsZm9jdXNlZDpyLmRlZmF1bHQuYm9vbCxvbkZvY3VzQ2hhbmdlOnIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsaWQ6ci5kZWZhdWx0LnN0cmluZy5pc1JlcXVpcmVkLHBsYWNlaG9sZGVyOnIuZGVmYXVsdC5zdHJpbmcsZGlzYWJsZWQ6ci5kZWZhdWx0LmJvb2wscmVxdWlyZWQ6ci5kZWZhdWx0LmJvb2wscmVhZE9ubHk6ci5kZWZhdWx0LmJvb2wsc2NyZWVuUmVhZGVySW5wdXRNZXNzYWdlOnIuZGVmYXVsdC5zdHJpbmcsc2hvd0NsZWFyRGF0ZTpyLmRlZmF1bHQuYm9vbCxjdXN0b21DbG9zZUljb246ci5kZWZhdWx0Lm5vZGUsc2hvd0RlZmF1bHRJbnB1dEljb246ci5kZWZhdWx0LmJvb2wsaW5wdXRJY29uUG9zaXRpb246cy5kZWZhdWx0LGN1c3RvbUlucHV0SWNvbjpyLmRlZmF1bHQubm9kZSxyZW5kZXJNb250aDpyLmRlZmF1bHQuZnVuYyxvcmllbnRhdGlvbjpsLmRlZmF1bHQsYW5jaG9yRGlyZWN0aW9uOmMuZGVmYXVsdCxvcGVuRGlyZWN0aW9uOmYuZGVmYXVsdCxob3Jpem9udGFsTWFyZ2luOnIuZGVmYXVsdC5udW1iZXIsd2l0aFBvcnRhbDpyLmRlZmF1bHQuYm9vbCx3aXRoRnVsbFNjcmVlblBvcnRhbDpyLmRlZmF1bHQuYm9vbCxpbml0aWFsVmlzaWJsZU1vbnRoOnIuZGVmYXVsdC5mdW5jLGZpcnN0RGF5T2ZXZWVrOmQuZGVmYXVsdCxudW1iZXJPZk1vbnRoczpyLmRlZmF1bHQubnVtYmVyLGtlZXBPcGVuT25EYXRlU2VsZWN0OnIuZGVmYXVsdC5ib29sLHJlb3BlblBpY2tlck9uQ2xlYXJEYXRlOnIuZGVmYXVsdC5ib29sLHJlbmRlckNhbGVuZGFySW5mbzpyLmRlZmF1bHQuZnVuYyxoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDpyLmRlZmF1bHQuYm9vbCxkYXlTaXplOmEubm9uTmVnYXRpdmVJbnRlZ2VyLGlzUlRMOnIuZGVmYXVsdC5ib29sLG5hdlByZXY6ci5kZWZhdWx0Lm5vZGUsbmF2TmV4dDpyLmRlZmF1bHQubm9kZSxvblByZXZNb250aENsaWNrOnIuZGVmYXVsdC5mdW5jLG9uTmV4dE1vbnRoQ2xpY2s6ci5kZWZhdWx0LmZ1bmMsb25DbG9zZTpyLmRlZmF1bHQuZnVuYyxyZW5kZXJEYXk6ci5kZWZhdWx0LmZ1bmMsZW5hYmxlT3V0c2lkZURheXM6ci5kZWZhdWx0LmJvb2wsaXNEYXlCbG9ja2VkOnIuZGVmYXVsdC5mdW5jLGlzT3V0c2lkZVJhbmdlOnIuZGVmYXVsdC5mdW5jLGlzRGF5SGlnaGxpZ2h0ZWQ6ci5kZWZhdWx0LmZ1bmMsZGlzcGxheUZvcm1hdDpyLmRlZmF1bHQub25lT2ZUeXBlKFtyLmRlZmF1bHQuc3RyaW5nLHIuZGVmYXVsdC5mdW5jXSksbW9udGhGb3JtYXQ6ci5kZWZhdWx0LnN0cmluZyx3ZWVrRGF5Rm9ybWF0OnIuZGVmYXVsdC5zdHJpbmcscGhyYXNlczpyLmRlZmF1bHQuc2hhcGUoKDAsdS5kZWZhdWx0KShpLlNpbmdsZURhdGVQaWNrZXJQaHJhc2VzKSl9fSxUVkxFOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiNmF5aCIpKCIlVHlwZUVycm9yJSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpdGhyb3cgbmV3IHIodHx8IkNhbm5vdCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sVGFqZTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyKXtpZihlLnNpemUpe3ZhciBvPTA7ZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsYSxpKXtyZXR1cm4gdChlLGEpfHwobihlKSYmcihvLGkpLG89aSksYX0pKSxuKGUubGFzdCgpKSYmcihvLGUuY291bnQoKSl9fX0sVGF2eTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIks0Q0giKSxvPSJVbmtub3duIixhPXsiTWFjIE9TIjoiTWFjIE9TIFgifTt2YXIgaSx1PShuZXcgcikuZ2V0UmVzdWx0KCkscz1mdW5jdGlvbihlKXtpZighZSlyZXR1cm57bWFqb3I6IiIsbWlub3I6IiJ9O3ZhciB0PWUuc3BsaXQoIi4iKTtyZXR1cm57bWFqb3I6dFswXSxtaW5vcjp0WzFdfX0odS5icm93c2VyLnZlcnNpb24pLGw9e2Jyb3dzZXJBcmNoaXRlY3R1cmU6dS5jcHUuYXJjaGl0ZWN0dXJlfHxvLGJyb3dzZXJGdWxsVmVyc2lvbjp1LmJyb3dzZXIudmVyc2lvbnx8byxicm93c2VyTWlub3JWZXJzaW9uOnMubWlub3J8fG8sYnJvd3Nlck5hbWU6dS5icm93c2VyLm5hbWV8fG8sYnJvd3NlclZlcnNpb246dS5icm93c2VyLm1ham9yfHxvLGRldmljZU5hbWU6dS5kZXZpY2UubW9kZWx8fG8sZW5naW5lTmFtZTp1LmVuZ2luZS5uYW1lfHxvLGVuZ2luZVZlcnNpb246dS5lbmdpbmUudmVyc2lvbnx8byxwbGF0Zm9ybUFyY2hpdGVjdHVyZTp1LmNwdS5hcmNoaXRlY3R1cmV8fG8scGxhdGZvcm1OYW1lOihpPXUub3MubmFtZSxhW2ldfHxpfHxvKSxwbGF0Zm9ybVZlcnNpb246dS5vcy52ZXJzaW9ufHxvLHBsYXRmb3JtRnVsbFZlcnNpb246dS5vcy52ZXJzaW9ufHxvfTtlLmV4cG9ydHM9bH0sVGh6djpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9IiIsbihuLnM9NjMpfShbZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicTF0SSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIc3FnIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjVmN24iKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigidlYrRyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIxN3g5Iil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInljMmUiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVFNZUSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ3ZC9SIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oImFFNlUiKX0sLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlhHQmIiKX0sLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjJTMkUiKX0sLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIllaRFYiKX0sLCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiRTdVUCIpfSwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiTmhvNiIpfSwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oImplbmsiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiS29xLyIpfSwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJtMmF4Iil9LCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJxODZBIil9LCwsLCwsLCwsLCwsLCwsLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJkUlFEIil9LCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJtTWlIIil9LCwsLCwsLCwsLCxmdW5jdGlvbihlLHQsbil7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPUMobigyNCkpLGk9QyhuKDApKSx1PUMobig0KSkscz1DKG4oMTQpKSxsPUMobigxMCkpLGM9bigxKSxmPUMobig3KSksZD1DKG4oNikpLHA9bigxOCksaD1uKDMpLHk9QyhuKDUpKSxtPUMobig1MikpLHY9QyhuKDUwKSksZz1DKG4oMzApKSxiPUMobigyOCkpLHc9QyhuKDIzKSksXz1DKG4oMjApKSxFPUMobig4KSksTz1DKG4oMTIpKSxrPW4oMik7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHg9KDAsYy5mb3JiaWRFeHRyYVByb3BzKSh7ZW5hYmxlT3V0c2lkZURheXM6dS5kZWZhdWx0LmJvb2wsZmlyc3RWaXNpYmxlTW9udGhJbmRleDp1LmRlZmF1bHQubnVtYmVyLGluaXRpYWxNb250aDpsLmRlZmF1bHQubW9tZW50T2JqLGlzQW5pbWF0aW5nOnUuZGVmYXVsdC5ib29sLG51bWJlck9mTW9udGhzOnUuZGVmYXVsdC5udW1iZXIsbW9kaWZpZXJzOnUuZGVmYXVsdC5vYmplY3Qsb3JpZW50YXRpb246RS5kZWZhdWx0LG9uRGF5Q2xpY2s6dS5kZWZhdWx0LmZ1bmMsb25EYXlNb3VzZUVudGVyOnUuZGVmYXVsdC5mdW5jLG9uRGF5TW91c2VMZWF2ZTp1LmRlZmF1bHQuZnVuYyxvbk1vbnRoVHJhbnNpdGlvbkVuZDp1LmRlZmF1bHQuZnVuYyxyZW5kZXJNb250aDp1LmRlZmF1bHQuZnVuYyxyZW5kZXJEYXk6dS5kZWZhdWx0LmZ1bmMsdHJhbnNmb3JtVmFsdWU6dS5kZWZhdWx0LnN0cmluZyxkYXlTaXplOmMubm9uTmVnYXRpdmVJbnRlZ2VyLGZvY3VzZWREYXRlOmwuZGVmYXVsdC5tb21lbnRPYmosaXNGb2N1c2VkOnUuZGVmYXVsdC5ib29sLGZpcnN0RGF5T2ZXZWVrOk8uZGVmYXVsdCxtb250aEZvcm1hdDp1LmRlZmF1bHQuc3RyaW5nLHBocmFzZXM6dS5kZWZhdWx0LnNoYXBlKCgwLHkuZGVmYXVsdCkoaC5DYWxlbmRhckRheVBocmFzZXMpKX0pLFM9e2VuYWJsZU91dHNpZGVEYXlzOiExLGZpcnN0VmlzaWJsZU1vbnRoSW5kZXg6MCxpbml0aWFsTW9udGg6KDAsZi5kZWZhdWx0KSgpLGlzQW5pbWF0aW5nOiExLG51bWJlck9mTW9udGhzOjEsbW9kaWZpZXJzOnt9LG9yaWVudGF0aW9uOmsuSE9SSVpPTlRBTF9PUklFTlRBVElPTixvbkRheUNsaWNrOmZ1bmN0aW9uKCl7fSxvbkRheU1vdXNlRW50ZXI6ZnVuY3Rpb24oKXt9LG9uRGF5TW91c2VMZWF2ZTpmdW5jdGlvbigpe30sb25Nb250aFRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oKXt9LHJlbmRlck1vbnRoOm51bGwscmVuZGVyRGF5Om51bGwsdHJhbnNmb3JtVmFsdWU6Im5vbmUiLGRheVNpemU6ay5EQVlfU0laRSxmb2N1c2VkRGF0ZTpudWxsLGlzRm9jdXNlZDohMSxmaXJzdERheU9mV2VlazpudWxsLG1vbnRoRm9ybWF0OiJNTU1NIFlZWVkiLHBocmFzZXM6aC5DYWxlbmRhckRheVBocmFzZXN9O2Z1bmN0aW9uIEQoZSx0LG4pe3ZhciByPWUuY2xvbmUoKTtufHwocj1yLnN1YnRyYWN0KDEsIm1vbnRoIikpO2Zvcih2YXIgbz1bXSxhPTA7YTwobj90OnQrMik7YSs9MSlvLnB1c2gocikscj1yLmNsb25lKCkuYWRkKDEsIm1vbnRoIik7cmV0dXJuIG99dmFyIFQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKSxvPWUub3JpZW50YXRpb249PT1rLlZFUlRJQ0FMX1NDUk9MTEFCTEU7cmV0dXJuIG4uc3RhdGU9e21vbnRoczpEKGUuaW5pdGlhbE1vbnRoLGUubnVtYmVyT2ZNb250aHMsbyl9LG4uaXNUcmFuc2l0aW9uRW5kU3VwcG9ydGVkPSgwLHYuZGVmYXVsdCkoKSxuLm9uVHJhbnNpdGlvbkVuZD1uLm9uVHJhbnNpdGlvbkVuZC5iaW5kKG4pLG4uc2V0Q29udGFpbmVyUmVmPW4uc2V0Q29udGFpbmVyUmVmLmJpbmQobiksbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiKyh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG8odCxbe2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ldmVudEhhbmRsZT0oMCxwLmFkZEV2ZW50TGlzdGVuZXIpKHRoaXMuY29udGFpbmVyLCJ0cmFuc2l0aW9uZW5kIix0aGlzLm9uVHJhbnNpdGlvbkVuZCl9fSx7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmluaXRpYWxNb250aCxuPWUubnVtYmVyT2ZNb250aHMscj1lLm9yaWVudGF0aW9uLG89dGhpcy5zdGF0ZS5tb250aHMsYT0hdGhpcy5wcm9wcy5pbml0aWFsTW9udGguaXNTYW1lKHQsIm1vbnRoIiksaT10aGlzLnByb3BzLm51bWJlck9mTW9udGhzIT09bix1PW87YSYmIWkmJigoMCxfLmRlZmF1bHQpKHQsdGhpcy5wcm9wcy5pbml0aWFsTW9udGgpPyh1PW8uc2xpY2UoMSkpLnB1c2gob1tvLmxlbmd0aC0xXS5jbG9uZSgpLmFkZCgxLCJtb250aCIpKToodT1vLnNsaWNlKDAsby5sZW5ndGgtMSkpLnVuc2hpZnQob1swXS5jbG9uZSgpLnN1YnRyYWN0KDEsIm1vbnRoIikpKSxpJiYodT1EKHQsbixyPT09ay5WRVJUSUNBTF9TQ1JPTExBQkxFKSksdGhpcy5zZXRTdGF0ZSh7bW9udGhzOnV9KX19LHtrZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCxzLmRlZmF1bHQpKHRoaXMsZSx0KX19LHtrZXk6ImNvbXBvbmVudERpZFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5pc0FuaW1hdGluZyxuPWUub25Nb250aFRyYW5zaXRpb25FbmQ7IXRoaXMuaXNUcmFuc2l0aW9uRW5kU3VwcG9ydGVkJiZ0JiZuKCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXsoMCxwLnJlbW92ZUV2ZW50TGlzdGVuZXIpKHRoaXMuZXZlbnRIYW5kbGUpfX0se2tleToib25UcmFuc2l0aW9uRW5kIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMub25Nb250aFRyYW5zaXRpb25FbmQoKX19LHtrZXk6InNldENvbnRhaW5lclJlZiIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5jb250YWluZXI9ZX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5lbmFibGVPdXRzaWRlRGF5cyxuPWUuZmlyc3RWaXNpYmxlTW9udGhJbmRleCxyPWUuaXNBbmltYXRpbmcsbz1lLm1vZGlmaWVycyx1PWUubnVtYmVyT2ZNb250aHMscz1lLm1vbnRoRm9ybWF0LGw9ZS5vcmllbnRhdGlvbixjPWUudHJhbnNmb3JtVmFsdWUsZj1lLmRheVNpemUscD1lLm9uRGF5TW91c2VFbnRlcixoPWUub25EYXlNb3VzZUxlYXZlLHk9ZS5vbkRheUNsaWNrLHY9ZS5yZW5kZXJNb250aCxfPWUucmVuZGVyRGF5LEU9ZS5vbk1vbnRoVHJhbnNpdGlvbkVuZCxPPWUuZmlyc3REYXlPZldlZWssQz1lLmZvY3VzZWREYXRlLHg9ZS5pc0ZvY3VzZWQsUz1lLnBocmFzZXMsRD10aGlzLnN0YXRlLm1vbnRocyxUPWw9PT1rLlZFUlRJQ0FMX09SSUVOVEFUSU9OLE09bD09PWsuVkVSVElDQUxfU0NST0xMQUJMRSxQPWw9PT1rLkhPUklaT05UQUxfT1JJRU5UQVRJT04sTj0oMCxkLmRlZmF1bHQpKCJDYWxlbmRhck1vbnRoR3JpZCIseyJDYWxlbmRhck1vbnRoR3JpZC0taG9yaXpvbnRhbCI6UCwiQ2FsZW5kYXJNb250aEdyaWQtLXZlcnRpY2FsIjpULCJDYWxlbmRhck1vbnRoR3JpZC0tdmVydGljYWwtc2Nyb2xsYWJsZSI6TSwiQ2FsZW5kYXJNb250aEdyaWQtLWFuaW1hdGluZyI6cn0pLGo9KDAsYi5kZWZhdWx0KShmKSxMPVR8fE0/ajoodSsyKSpqLFI9KDAsYS5kZWZhdWx0KSh7fSwoMCxnLmRlZmF1bHQpKGMpLHt3aWR0aDpMfSk7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtyZWY6dGhpcy5zZXRDb250YWluZXJSZWYsY2xhc3NOYW1lOk4sc3R5bGU6UixvblRyYW5zaXRpb25FbmQ6RX0sRC5tYXAoKGZ1bmN0aW9uKGUscil7dmFyIGE9cj49biYmcjxuK3UsYz0oMCx3LmRlZmF1bHQpKGUpO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQse2tleTpjLG1vbnRoOmUsaXNWaXNpYmxlOmEsZW5hYmxlT3V0c2lkZURheXM6dCxtb2RpZmllcnM6b1tjXSxtb250aEZvcm1hdDpzLG9yaWVudGF0aW9uOmwsb25EYXlNb3VzZUVudGVyOnAsb25EYXlNb3VzZUxlYXZlOmgsb25EYXlDbGljazp5LHJlbmRlck1vbnRoOnYscmVuZGVyRGF5Ol8sZmlyc3REYXlPZldlZWs6TyxkYXlTaXplOmYsZm9jdXNlZERhdGU6YT9DOm51bGwsaXNGb2N1c2VkOngscGhyYXNlczpTfSl9KSkpfX1dKSx0fShpLmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9VCxULnByb3BUeXBlcz14LFQuZGVmYXVsdFByb3BzPVN9XSl9LFRsWFE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJsRkpuIiksbz1uKCJKUGN2IikuTGlzdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSxuKXt2YXIgbz10W25dO3JldHVybiByLmNyZWF0ZSh7c3R5bGU6ZSxlbnRpdHk6b30pfSkpO3JldHVybiBvKG4pfX0sIlR6VS8iOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIG89bigicW5reSIpLGE9bigiSlBjdiIpLGk9bigibUZ5ViIpLHU9KDAsYS5NYXApKCkscz0wO2Z1bmN0aW9uIGwoZSx0KXtjb25zb2xlLndhcm4oIldBUk5JTkc6ICIrZSsnIHdpbGwgYmUgZGVwcmVjYXRlZCBzb29uIVxuUGxlYXNlIHVzZSAiJyt0KyciIGluc3RlYWQuJyl9dmFyIGM9e2dldExhc3RDcmVhdGVkRW50aXR5S2V5OmZ1bmN0aW9uKCl7cmV0dXJuIGwoIkRyYWZ0RW50aXR5LmdldExhc3RDcmVhdGVkRW50aXR5S2V5IiwiY29udGVudFN0YXRlLmdldExhc3RDcmVhdGVkRW50aXR5S2V5IiksYy5fX2dldExhc3RDcmVhdGVkRW50aXR5S2V5KCl9LGNyZWF0ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGwoIkRyYWZ0RW50aXR5LmNyZWF0ZSIsImNvbnRlbnRTdGF0ZS5jcmVhdGVFbnRpdHkiKSxjLl9fY3JlYXRlKGUsdCxuKX0sYWRkOmZ1bmN0aW9uKGUpe3JldHVybiBsKCJEcmFmdEVudGl0eS5hZGQiLCJjb250ZW50U3RhdGUuYWRkRW50aXR5IiksYy5fX2FkZChlKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBsKCJEcmFmdEVudGl0eS5nZXQiLCJjb250ZW50U3RhdGUuZ2V0RW50aXR5IiksYy5fX2dldChlKX0sbWVyZ2VEYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwoIkRyYWZ0RW50aXR5Lm1lcmdlRGF0YSIsImNvbnRlbnRTdGF0ZS5tZXJnZUVudGl0eURhdGEiKSxjLl9fbWVyZ2VEYXRhKGUsdCl9LHJlcGxhY2VEYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwoIkRyYWZ0RW50aXR5LnJlcGxhY2VEYXRhIiwiY29udGVudFN0YXRlLnJlcGxhY2VFbnRpdHlEYXRhIiksYy5fX3JlcGxhY2VEYXRhKGUsdCl9LF9fZ2V0TGFzdENyZWF0ZWRFbnRpdHlLZXk6ZnVuY3Rpb24oKXtyZXR1cm4iIitzfSxfX2NyZWF0ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGMuX19hZGQobmV3IG8oe3R5cGU6ZSxtdXRhYmlsaXR5OnQsZGF0YTpufHx7fX0pKX0sX19hZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrICsrcztyZXR1cm4gdT11LnNldCh0LGUpLHR9LF9fZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PXUuZ2V0KGUpO3JldHVybiB0fHxpKCExKSx0fSxfX21lcmdlRGF0YTpmdW5jdGlvbihlLHQpe3ZhciBuPWMuX19nZXQoZSksbz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LG89T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihvPW8uY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3IoZSx0LG5bdF0pfSkpfXJldHVybiBlfSh7fSxuLmdldERhdGEoKSx0KSxhPW4uc2V0KCJkYXRhIixvKTtyZXR1cm4gdT11LnNldChlLGEpLGF9LF9fcmVwbGFjZURhdGE6ZnVuY3Rpb24oZSx0KXt2YXIgbj1jLl9fZ2V0KGUpLnNldCgiZGF0YSIsdCk7cmV0dXJuIHU9dS5zZXQoZSxuKSxufX07ZS5leHBvcnRzPWN9LFU4NGE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJkeXhXIiksbz1uKCJ5NVArIikuc3RybGVuO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO3JldHVybiBlLmZpbmRFbnRpdHlSYW5nZXMoKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5nZXRFbnRpdHkoKX0pLChmdW5jdGlvbihhLGkpe3ZhciB1PWUuZ2V0VGV4dCgpLHM9ZS5nZXRFbnRpdHlBdChhKTtuLnB1c2goe29mZnNldDpvKHUuc2xpY2UoMCxhKSksbGVuZ3RoOm8odS5zbGljZShhLGkpKSxrZXk6TnVtYmVyKHRbci5zdHJpbmdpZnkocyldKX0pfSkpLG59fSxVTkpEOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImJhbm5lciI6eyJvcmNoYXJkR28iOnsiYW5jaG9yVGV4dCI6IkRlc2Nhcmd1ZSBPcmNoYXJkR28gYWhvcmEiLCJkZXNjcmlwdGlvbiI6IsKhU2lnYSBzdXMgYW5hbMOtdGljYXMgYWxsw6EgZG9uZGUgc2UgZW5jdWVudHJlISJ9fSwiZXJyb3JzIjp7InBhZ2VOb3RGb3VuZCI6IkxvIHNlbnRpbW9zLCBwZXJvIGxhIHDDoWdpbmEgcXVlIHNvbGljaXTDsyBubyBleGlzdGUuIn0sImZvb3RlciI6eyJjb250YWN0RGlzdHJpYnV0b3IiOiJTaSBuZWNlc2l0YSBheXVkYSwgcMOzbmdhc2UgZW4gY29udGFjdG8gY29uIHN1IGRpc3RyaWJ1aWRvci4iLCJoZWxwIjoiYXl1ZGEgd29ya3N0YXRpb24iLCJwcml2YWN5UG9saWN5IjoicG9sw610aWNhIGRlIHByaXZhY2lkYWQiLCJ0ZXJtc0FuZENvbmRpdGlvbnMiOiJ0w6lybWlub3MgeSBjb25kaWNpb25lcyIsInRyYWRlbWFyayI6IlRoZSBPcmNoYXJkIGVzIHVuYSBtYXJjYSByZWdpc3RyYWRhIHkgZWwgbG9nbyBUaGUgT3JjaGFyZCBlcyBsYSBtYXJjYSBkZSBzZXJ2aWNpbyByZWdpc3RyYWRhIHBhcmEgT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLiBUb2RvcyBsb3MgZGVyZWNob3MgcmVzZXJ2YWRvcy4ifSwiZ2xvYmFsU2VhcmNoIjp7InBsYWNlaG9sZGVyIjoiQnVzY2FyIHBvciBwcm95ZWN0bywgcHJvZHVjdG8sIGFydGlzdGEuLi4ifSwiaGVhZGVyIjp7ImFjY291bnRpbmciOiJDb250YWJpbGlkYWQiLCJhbmFseXRpY3MiOiJBbmFsw610aWNhcyIsImNhdGFsb2ciOiJDYXTDoWxvZ28iLCJkcm9wZG93biI6eyJhZG1pbiI6IkFkbWluIiwiZGVmYXVsdHMiOiJQb3IgZGVmZWN0byIsImxvZ091dCI6IkNlcnJhciBzZXNpw7NuIiwibG9nb3MiOiJMb2dvcyIsIm15QWNjb3VudCI6Ik1pIEN1ZW50YSIsInByb2ZpbGUiOiJQZXJmaWwifSwiaGVscCI6IkF5dWRhIiwibWFya2V0aW5nIjoiTWFya2V0aW5nIn0sInN1YmhlYWRlciI6eyJhY2NvdW50aW5nIjp7ImNvbGxhYm9yYXRvclNwbGl0cyI6IkNvbGFib3JhZG9yZXMiLCJzdGF0ZW1lbnRzIjoiRXh0cmFjdG9zIiwidmlldyI6IlZlciJ9LCJhbmFseXRpY3MiOnsiYXVkaWVuY2UiOiJBdWRpZW5jaWEiLCJlbmdhZ2VtZW50IjoiRW5nYWdlbWVudCIsImZpbG1UcmFuc3BhcmVuY3kiOiJUcmFuc3BhcmVuY2lhIGRlIEZpbG1lIiwiaGVhdG1hcCI6IkhlYXRtYXAiLCJvdmVydmlldyI6IlZpc3RhIEdlbmVyYWwiLCJwaHlzaWNhbFJlcG9ydGluZyI6IlJlcG9ydGVzIEbDrXNpY29zIiwidG9wQ2hhcnRzIjoiVG9wIExpc3RhcyJ9fX0nKX0sVU9xMDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdH19KTt2YXIgcixvPShyPW4oImd2NVciKSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9fSwiVXN6LyI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgbz1uKCJiU3daIiksYT1uKCJFeTBFIiksaT1uKCJtRnlWIiksdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cih0aGlzLCJfZGVmYXVsdERpciIsdm9pZCAwKSxyKHRoaXMsIl9sYXN0RGlyIix2b2lkIDApLGU/YS5pc1N0cm9uZyhlKXx8aSghMSk6ZT1hLmdldEdsb2JhbERpcigpLHRoaXMuX2RlZmF1bHREaXI9ZSx0aGlzLnJlc2V0KCl9dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9sYXN0RGlyPXRoaXMuX2RlZmF1bHREaXJ9LHQuZ2V0RGlyZWN0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9sYXN0RGlyPW8uZ2V0RGlyZWN0aW9uKGUsdGhpcy5fbGFzdERpciksdGhpcy5fbGFzdERpcn0sZX0oKTtlLmV4cG9ydHM9dX0sVXl4UDpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuPXIuZGVmYXVsdC5pc01vbWVudChlKT9lOigwLG8uZGVmYXVsdCkoZSx0KTtyZXR1cm4gbj9uLmZvcm1hdChhLkRJU1BMQVlfRk9STUFUKTpudWxsfTt2YXIgcj1pKG4oIndkL1IiKSksbz1pKG4oIldtUzEiKSksYT1uKCI1ZjduIik7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSxWOGRwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSkw3VCIpLG89bigickpZMSIpLGE9bigiSlBjdiIpLk9yZGVyZWRNYXA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLmZpcnN0KClpbnN0YW5jZW9mIHI/ZnVuY3Rpb24oZSl7dmFyIHQsbj17fTtyZXR1cm4gYShlLndpdGhNdXRhdGlvbnMoKGZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24ocixhKXt2YXIgaT1yLmdldEtleSgpLHU9ci5nZXROZXh0U2libGluZ0tleSgpLHM9ci5nZXRQcmV2U2libGluZ0tleSgpLGw9ci5nZXRDaGlsZEtleXMoKSxjPXIuZ2V0UGFyZW50S2V5KCksZj1vKCk7KG5baV09Zix1KSYmKGUuZ2V0KHUpP2Uuc2V0SW4oW3UsInByZXZTaWJsaW5nIl0sZik6ZS5zZXRJbihbaSwibmV4dFNpYmxpbmciXSxudWxsKSk7cyYmKGUuZ2V0KHMpP2Uuc2V0SW4oW3MsIm5leHRTaWJsaW5nIl0sZik6ZS5zZXRJbihbaSwicHJldlNpYmxpbmciXSxudWxsKSk7aWYoYyYmZS5nZXQoYykpe3ZhciBkPWUuZ2V0KGMpLmdldENoaWxkS2V5cygpO2Uuc2V0SW4oW2MsImNoaWxkcmVuIl0sZC5zZXQoZC5pbmRleE9mKHIuZ2V0S2V5KCkpLGYpKX1lbHNlIGUuc2V0SW4oW2ksInBhcmVudCJdLG51bGwpLHQmJihlLnNldEluKFt0LmdldEtleSgpLCJuZXh0U2libGluZyJdLGYpLGUuc2V0SW4oW2ksInByZXZTaWJsaW5nIl0sblt0LmdldEtleSgpXSkpLHQ9ZS5nZXQoaSk7bC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmdldCh0KT9lLnNldEluKFt0LCJwYXJlbnQiXSxmKTplLnNldEluKFtpLCJjaGlsZHJlbiJdLHIuZ2V0Q2hpbGRLZXlzKCkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXR9KSkpfSkpfSkpfSkpLnRvQXJyYXkoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltuW2UuZ2V0S2V5KCldLGUuc2V0KCJrZXkiLG5bZS5nZXRLZXkoKV0pXX0pKSl9KGUpOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUudG9BcnJheSgpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9bygpO3JldHVyblt0LGUuc2V0KCJrZXkiLHQpXX0pKSl9KGUpfX0sVkJWWTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxFRlQ9MzcsdC5VUD0zOCx0LlJJR0hUPTM5LHQuRE9XTj00MCx0LkVOVEVSPTEzLHQuU1BBQ0U9MzIsdC5FU0M9MjcsdC5UQUI9OX0sVkNMODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLHRoaXMuc3RhdGUpO251bGwhPWUmJnRoaXMuc2V0U3RhdGUoZSl9ZnVuY3Rpb24gbyhlKXt0aGlzLnNldFN0YXRlKGZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKGUsdCk7cmV0dXJuIG51bGwhPW4/bjpudWxsfS5iaW5kKHRoaXMpKX1mdW5jdGlvbiBhKGUsdCl7dHJ5e3ZhciBuPXRoaXMucHJvcHMscj10aGlzLnN0YXRlO3RoaXMucHJvcHM9ZSx0aGlzLnN0YXRlPXQsdGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEZsYWc9ITAsdGhpcy5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdD10aGlzLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKG4scil9ZmluYWxseXt0aGlzLnByb3BzPW4sdGhpcy5zdGF0ZT1yfX1mdW5jdGlvbiBpKGUpe3ZhciB0PWUucHJvdG90eXBlO2lmKCF0fHwhdC5pc1JlYWN0Q29tcG9uZW50KXRocm93IG5ldyBFcnJvcigiQ2FuIG9ubHkgcG9seWZpbGwgY2xhc3MgY29tcG9uZW50cyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIHQuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpcmV0dXJuIGU7dmFyIG49bnVsbCxpPW51bGwsdT1udWxsO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbXBvbmVudFdpbGxNb3VudD9uPSJjb21wb25lbnRXaWxsTW91bnQiOiJmdW5jdGlvbiI9PXR5cGVvZiB0LlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJihuPSJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IiksImZ1bmN0aW9uIj09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz9pPSJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIjoiZnVuY3Rpb24iPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmKGk9IlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiksImZ1bmN0aW9uIj09dHlwZW9mIHQuY29tcG9uZW50V2lsbFVwZGF0ZT91PSJjb21wb25lbnRXaWxsVXBkYXRlIjoiZnVuY3Rpb24iPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmKHU9IlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlIiksbnVsbCE9PW58fG51bGwhPT1pfHxudWxsIT09dSl7dmFyIHM9ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lLGw9ImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPyJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoKSI6ImdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkiO3Rocm93IEVycm9yKCJVbnNhZmUgbGVnYWN5IGxpZmVjeWNsZXMgd2lsbCBub3QgYmUgY2FsbGVkIGZvciBjb21wb25lbnRzIHVzaW5nIG5ldyBjb21wb25lbnQgQVBJcy5cblxuIitzKyIgdXNlcyAiK2wrIiBidXQgYWxzbyBjb250YWlucyB0aGUgZm9sbG93aW5nIGxlZ2FjeSBsaWZlY3ljbGVzOiIrKG51bGwhPT1uPyJcbiAgIituOiIiKSsobnVsbCE9PWk/IlxuICAiK2k6IiIpKyhudWxsIT09dT8iXG4gICIrdToiIikrIlxuXG5UaGUgYWJvdmUgbGlmZWN5Y2xlcyBzaG91bGQgYmUgcmVtb3ZlZC4gTGVhcm4gbW9yZSBhYm91dCB0aGlzIHdhcm5pbmcgaGVyZTpcbmh0dHBzOi8vZmIubWUvcmVhY3QtYXN5bmMtY29tcG9uZW50LWxpZmVjeWNsZS1ob29rcyIpfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmKHQuY29tcG9uZW50V2lsbE1vdW50PXIsdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPW8pLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdC5jb21wb25lbnREaWRVcGRhdGUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcG9seWZpbGwgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBmb3IgY29tcG9uZW50cyB0aGF0IGRvIG5vdCBkZWZpbmUgY29tcG9uZW50RGlkVXBkYXRlKCkgb24gdGhlIHByb3RvdHlwZSIpO3QuY29tcG9uZW50V2lsbFVwZGF0ZT1hO3ZhciBjPXQuY29tcG9uZW50RGlkVXBkYXRlO3QuY29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90RmxhZz90aGlzLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90Om47Yy5jYWxsKHRoaXMsZSx0LHIpfX1yZXR1cm4gZX1uLnIodCksbi5kKHQsInBvbHlmaWxsIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxyLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmc9ITAsby5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nPSEwLGEuX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZz0hMH0sVklSczpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJiYW5uZXIiOnsib3JjaGFyZEdvIjp7ImFuY2hvclRleHQiOiLQodC60LDRh9Cw0LnRgtC1IE9yY2hhcmRHbyDQv9GA0Y/QvNC+INGB0LXQudGH0LDRgSIsImRlc2NyaXB0aW9uIjoi0J7RgtGB0LvQtdC20LjQstCw0LnRgtC1INCy0LDRiNGDINCw0L3QsNC70LjRgtC40LrRgyDQsiDQu9GO0LHQvtC5INC80L7QvNC10L3RgiEifX0sImVycm9ycyI6eyJwYWdlTm90Rm91bmQiOiLQmNC30LLQuNC90LjRgtC1LCDQvdC+INC30LDQv9GA0L7RiNC10L3QvdCw0Y8g0LLQsNC80Lgg0YHRgtGA0LDQvdC40YbQsCDQvdC1INGB0YPRidC10YHRgtCy0YPQtdGCLiJ9LCJmb290ZXIiOnsiaGVscCI6ItC/0L7QvNC+0YnRjCDRgSDRgNCw0LHQvtGH0LXQuSDRgdGC0LDQvdGG0LjQtdC5IiwicHJpdmFjeVBvbGljeSI6ItC/0L7Qu9C40YLQuNC60LAg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4IiwidGVybXNBbmRDb25kaXRpb25zIjoi0YPRgdC70L7QstC40Y8iLCJ0cmFkZW1hcmsiOiJUaGUgT3JjaGFyZCDRj9Cy0LvRj9C10YLRgdGPINC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdC90L7QuSDRgtC+0YDQs9C+0LLQvtC5INC80LDRgNC60L7QuS4g0JvQvtCz0L7RgtC40L8gVGhlIE9yY2hhcmQg0Y/QstC70Y/QtdGC0YHRjyDQt9C90LDQutC+0Lwg0L7QsdGB0LvRg9C20LjQstCw0L3QuNGPIE9yY2hhcmQgRW50ZXJwcmlzZXMgTlksIEluYy4g0JLRgdC1INC/0YDQsNCy0LAg0LfQsNGJ0LjRidC10L3Riy4ifSwiZ2xvYmFsU2VhcmNoIjp7InBsYWNlaG9sZGVyIjoi0JjRgdC60LDRgtGMINC/0YDQvtC10LrRgiwg0L/RgNC+0LTRg9C60YIsINC40YHQv9C+0LvQvdC40YLQtdC70Y8uLiJ9LCJoZWFkZXIiOnsiYWNjb3VudGluZyI6ItCR0YPRhdCz0LDQu9C10YLRgNC40Y8iLCJhbmFseXRpY3MiOiLQkNC90LDQu9C40YLQuNC60LAiLCJjYXRhbG9nIjoi0JrQsNGC0LDQu9C+0LMiLCJkcm9wZG93biI6eyJhZG1pbiI6ItCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGAIiwiZGVmYXVsdHMiOiLQn9C+INGD0LzQvtC70YfQsNC90LjRjiIsImxvZ091dCI6ItCS0YvQudGC0LgiLCJsb2dvcyI6ItCb0L7Qs9C+0YLQuNC/0YsiLCJteUFjY291bnQiOiLQnNC+0Lkg0LDQutC60LDRg9C90YIiLCJwcm9maWxlIjoi0J/RgNC+0YTQuNC70YwifSwiaGVscCI6ItCf0L7QvNC+0YnRjCIsIm1hcmtldGluZyI6ItCc0LDRgNC60LXRgtC40L3QsyJ9LCJzdWJoZWFkZXIiOnsiYW5hbHl0aWNzIjp7ImF1ZGllbmNlIjoi0JDRg9C00LjRgtC+0YDQuNGPIiwiZW5nYWdlbWVudCI6ItCS0L7QstC70LXRh9C10L3QuNC1IiwiZmlsbVRyYW5zcGFyZW5jeSI6ItCf0YDQuNC90YbQuNC/INC/0YDQvtC30YDQsNGH0L3QvtGB0YLQuCIsImhlYXRtYXAiOiLQotC10L/Qu9C+0LLQsNGPINC60LDRgNGC0LAiLCJvdmVydmlldyI6ItCe0LHQt9C+0YAiLCJwaHlzaWNhbFJlcG9ydGluZyI6ItCe0YLRh9C10YIg0L/QviDRhNC40LfQuNGH0LXRgdC60LjQvCDQv9GA0L7QtNCw0LbQsNC8IiwidG9wQ2hhcnRzIjoi0KLQvtC/LdGH0LDRgNGC0YsifX19Jyl9LFZKQ1I6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5jYW5jZWxFdmVudD1mdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKX0sdC5nZXRGaXJzdERheU9mTW9udGg9bCx0LmdldERheXNJbk1vbnRoPWMsdC5nZXRNb2RpZmllcnNGcm9tUHJvcHM9ZnVuY3Rpb24oZSl7dmFyIHQ9cih7fSxlLm1vZGlmaWVycyk7ZS5zZWxlY3RlZERheXMmJih0W2UuY2xhc3NOYW1lcy5zZWxlY3RlZF09ZS5zZWxlY3RlZERheXMpO2UuZGlzYWJsZWREYXlzJiYodFtlLmNsYXNzTmFtZXMuZGlzYWJsZWRdPWUuZGlzYWJsZWREYXlzKTtyZXR1cm4gdH0sdC5nZXRGaXJzdERheU9mV2Vla0Zyb21Qcm9wcz1mdW5jdGlvbihlKXt2YXIgdD1lLmZpcnN0RGF5T2ZXZWVrLG49ZS5sb2NhbGUscj12b2lkIDA9PT1uPyJlbiI6bixvPWUubG9jYWxlVXRpbHMsYT12b2lkIDA9PT1vP3t9Om87aWYoIWlzTmFOKHQpKXJldHVybiB0O2lmKGEuZ2V0Rmlyc3REYXlPZldlZWspcmV0dXJuIGEuZ2V0Rmlyc3REYXlPZldlZWsocik7cmV0dXJuIDB9LHQuaXNSYW5nZU9mRGF0ZXM9ZnVuY3Rpb24oZSl7cmV0dXJuISEoZSYmZS5mcm9tJiZlLnRvKX0sdC5nZXRNb250aHNEaWZmPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZ2V0TW9udGgoKS1lLmdldE1vbnRoKCkrMTIqKHQuZ2V0RnVsbFllYXIoKS1lLmdldEZ1bGxZZWFyKCkpfSx0LmdldFdlZWtBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOigwLGkuZ2V0Rmlyc3REYXlPZldlZWspKCksbj1hcmd1bWVudHNbMl0scj1jKGUpLG89W10sdT1bXSxzPVtdLGw9MTtsPD1yO2wrPTEpby5wdXNoKG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksbCwxMikpO28uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dS5sZW5ndGg+MCYmZS5nZXREYXkoKT09PXQmJihzLnB1c2godSksdT1bXSksdS5wdXNoKGUpLG8uaW5kZXhPZihlKT09PW8ubGVuZ3RoLTEmJnMucHVzaCh1KX0pKTtmb3IodmFyIGY9c1swXSxkPTctZi5sZW5ndGg7ZD4wO2QtPTEpe3ZhciBwPSgwLGEuY2xvbmUpKGZbMF0pO3Auc2V0RGF0ZShmWzBdLmdldERhdGUoKS0xKSxmLnVuc2hpZnQocCl9Zm9yKHZhciBoPXNbcy5sZW5ndGgtMV0seT1oLmxlbmd0aDt5PDc7eSs9MSl7dmFyIG09KDAsYS5jbG9uZSkoaFtoLmxlbmd0aC0xXSk7bS5zZXREYXRlKGhbaC5sZW5ndGgtMV0uZ2V0RGF0ZSgpKzEpLGgucHVzaChtKX1pZihuJiZzLmxlbmd0aDw2KWZvcih2YXIgdj12b2lkIDAsZz1zLmxlbmd0aDtnPDY7Zys9MSl7Zm9yKHZhciBiPSh2PXNbcy5sZW5ndGgtMV0pW3YubGVuZ3RoLTFdLHc9W10sXz0wO188NztfKz0xKXt2YXIgRT0oMCxhLmNsb25lKShiKTtFLnNldERhdGUoYi5nZXREYXRlKCkrXysxKSx3LnB1c2goRSl9cy5wdXNoKHcpfXJldHVybiBzfSx0LnN0YXJ0T2ZNb250aD1mdW5jdGlvbihlKXt2YXIgdD0oMCxhLmNsb25lKShlKTtyZXR1cm4gdC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMTIsMCwwLDApLHR9LHQuZ2V0RGF5Tm9kZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj12b2lkIDA7bj10PT09cy5kZWZhdWx0P3QuZGF5KyItLSIrdC5vdXRzaWRlOiIiK3Qub3V0c2lkZTt2YXIgcj10LmRheS5yZXBsYWNlKC8gL2csIi4iKSxvPW4ucmVwbGFjZSgvIC9nLCIuIiksYT0iLiIrcisiOm5vdCguIitvKyIpIjtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yQWxsKGEpfSx0Lm5vZGVMaXN0VG9BcnJheT1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwKX0sdC5oYXNPd25Qcm9wPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfTt2YXIgbyxhPW4oIm1IbnUiKSxpPW4oInplMngiKSx1PW4oIlpFNDQiKSxzPShvPXUpJiZvLl9fZXNNb2R1bGU/bzp7ZGVmYXVsdDpvfTtmdW5jdGlvbiBsKGUpe3JldHVybiBuZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLDEsMTIpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9bChlKTtyZXR1cm4gdC5zZXRNb250aCh0LmdldE1vbnRoKCkrMSksdC5zZXREYXRlKHQuZ2V0RGF0ZSgpLTEpLHQuZ2V0RGF0ZSgpfX0sVktFTzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmhhbmRsZUJsdXI9bCx0LmhhbmRsZUZvY3VzPWMsdC5tYXJrRm9yRm9jdXNMYXRlcj1mdW5jdGlvbigpe2kucHVzaChkb2N1bWVudC5hY3RpdmVFbGVtZW50KX0sdC5yZXR1cm5Gb2N1cz1mdW5jdGlvbigpe3ZhciBlPW51bGw7dHJ5e3JldHVybiB2b2lkKDAhPT1pLmxlbmd0aCYmKGU9aS5wb3AoKSkuZm9jdXMoKSl9Y2F0Y2godCl7Y29uc29sZS53YXJuKFsiWW91IHRyaWVkIHRvIHJldHVybiBmb2N1cyB0byIsZSwiYnV0IGl0IGlzIG5vdCBpbiB0aGUgRE9NIGFueW1vcmUiXS5qb2luKCIgIikpfX0sdC5wb3BXaXRob3V0Rm9jdXM9ZnVuY3Rpb24oKXtpLmxlbmd0aD4wJiZpLnBvcCgpfSx0LnNldHVwU2NvcGVkRm9jdXM9ZnVuY3Rpb24oZSl7dT1lLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyPyh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsbCwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLGMsITApKTood2luZG93LmF0dGFjaEV2ZW50KCJvbkJsdXIiLGwpLGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbkZvY3VzIixjKSl9LHQudGVhcmRvd25TY29wZWRGb2N1cz1mdW5jdGlvbigpe3U9bnVsbCx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcj8od2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLGwpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIixjKSk6KHdpbmRvdy5kZXRhY2hFdmVudCgib25CbHVyIixsKSxkb2N1bWVudC5kZXRhY2hFdmVudCgib25Gb2N1cyIsYykpfTt2YXIgcixvPW4oIlpETGEiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTt2YXIgaT1bXSx1PW51bGwscz0hMTtmdW5jdGlvbiBsKCl7cz0hMH1mdW5jdGlvbiBjKCl7aWYocyl7aWYocz0hMSwhdSlyZXR1cm47c2V0VGltZW91dCgoZnVuY3Rpb24oKXt1LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHwoKDAsYS5kZWZhdWx0KSh1KVswXXx8dSkuZm9jdXMoKX0pLDApfX19LFZMa2w6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lLmNhbGwodGhpcyxuKSksdFtuXX19fSxWU21UOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKCJVc3ovIiksYT1uKCJKUGN2IiksaT1uKCJxeXN2IiksdT1hLk9yZGVyZWRNYXAscz17Z2V0RGlyZWN0aW9uTWFwOmZ1bmN0aW9uKGUsdCl7cj9yLnJlc2V0KCk6cj1uZXcgbzt2YXIgbj1lLmdldEJsb2NrTWFwKCkscz1uLnZhbHVlU2VxKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaShyKS5nZXREaXJlY3Rpb24oZS5nZXRUZXh0KCkpfSkpLGw9dShuLmtleVNlcSgpLnppcChzKSk7cmV0dXJuIG51bGwhPXQmJmEuaXModCxsKT90Omx9fTtlLmV4cG9ydHM9c30sVlRCZzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkpMN1QiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiByKSlyZXR1cm4gbnVsbDt2YXIgbj1lLmdldE5leHRTaWJsaW5nS2V5KCk7aWYobilyZXR1cm4gbjt2YXIgbz1lLmdldFBhcmVudEtleSgpO2lmKCFvKXJldHVybiBudWxsO2Zvcih2YXIgYT10LmdldChvKTthJiYhYS5nZXROZXh0U2libGluZ0tleSgpOyl7dmFyIGk9YS5nZXRQYXJlbnRLZXkoKTthPWk/dC5nZXQoaSk6bnVsbH1yZXR1cm4gYT9hLmdldE5leHRTaWJsaW5nS2V5KCk6bnVsbH19LCJWYytsIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXtuLmQodCwiYSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKHQsImIiLChmdW5jdGlvbigpe3JldHVybiBvfSkpO3ZhciByPWUuZW52LkFQSV9QUk9YWXx8Ii9ncmFzcy8iLG89ZS5lbnYuR1JBUEhRTF9FTkRQT0lOVHx8ImdyYXBocWwtcHJvZHVjdC9ncmFwaHFsIn0pLmNhbGwodGhpcyxuKCI4b3hCIikpfSxWY2xxOmZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxuPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKSxyPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYWdvL2ksL15zZXAvaSwvXm9jdC9pLC9ebm92L2ksL15kaWMvaV0sbz0vXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGljXC4/KS9pO2UuZGVmaW5lTG9jYWxlKCJlcy11cyIse21vbnRoczoiZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihlLHIpe3JldHVybiBlPy8tTU1NLS8udGVzdChyKT9uW2UubW9udGgoKV06dFtlLm1vbnRoKCldOnR9LG1vbnRoc1JlZ2V4Om8sbW9udGhzU2hvcnRSZWdleDpvLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaSxtb250aHNQYXJzZTpyLGxvbmdNb250aHNQYXJzZTpyLHNob3J0TW9udGhzUGFyc2U6cix3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc8OhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hw7FhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZMOtYSIsZGQ6IiVkIGTDrWFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYcOxbyIseXk6IiVkIGHDsW9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntkb3c6MCxkb3k6Nn19KX0obigid2QvUiIpKX0sVnpoUjpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oIlNZYnAiKSxlLmV4cG9ydHMubG9jYWxlVXRpbHM9bigiU1licCIpfSxXNUFTOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigic1dXNiIpO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbil7cmV0dXJuISghdHx8IW4pJiYodD09PW58fCFyKHQpJiYocihuKT9lKHQsbi5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gdD90LmNvbnRhaW5zKG4pOiEhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuKSkpKX19LFc2Ums6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9bigiSEtqbSIpLG89bigiSHpsSiIpO3IuZGVmYXVsdC5fX2FkZExvY2FsZURhdGEoby5kZWZhdWx0KSxyLmRlZmF1bHQuZGVmYXVsdExvY2FsZT0iZW4iLHQuZGVmYXVsdD1yLmRlZmF1bHR9LFc4TUo6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdCYmbihlLnByb3RvdHlwZSx0KSxyJiZuKGUsciksZX19LFdGcVU6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHQmJnQmJnQuT2JqZWN0PT09T2JqZWN0JiZ0O2UuZXhwb3J0cz1ufSkuY2FsbCh0aGlzLG4oInlMcGoiKSl9LFdKT1U6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJGY09SIiksbz1uKCIzc09KIiksYT1uKCIwSUtVIiksaT1uKCJaZ2I3Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUuX2Jsb2NrU2VsZWN0RXZlbnRzfHxlLl9sYXRlc3RFZGl0b3JTdGF0ZSE9PWUucHJvcHMuZWRpdG9yU3RhdGUpe2lmKGUuX2Jsb2NrU2VsZWN0RXZlbnRzKXt2YXIgdD1lLnByb3BzLmVkaXRvclN0YXRlLmdldFNlbGVjdGlvbigpO3IubG9nQmxvY2tlZFNlbGVjdGlvbkV2ZW50KHthbm9ueW1pemVkRG9tOiJOL0EiLGV4dHJhUGFyYW1zOkpTT04uc3RyaW5naWZ5KHtzdGFja3RyYWNlOihuZXcgRXJyb3IpLnN0YWNrfSksc2VsZWN0aW9uU3RhdGU6SlNPTi5zdHJpbmdpZnkodC50b0pTKCkpfSl9fWVsc2V7dmFyIG49ZS5wcm9wcy5lZGl0b3JTdGF0ZSx1PWkobixhKGUpKSxzPXUuc2VsZWN0aW9uU3RhdGU7cyE9PW4uZ2V0U2VsZWN0aW9uKCkmJihuPXUubmVlZHNSZWNvdmVyeT9vLmZvcmNlU2VsZWN0aW9uKG4scyk6by5hY2NlcHRTZWxlY3Rpb24obixzKSxlLnVwZGF0ZShuKSl9fX0sV0xHMDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBhPW4oInExdEkiKSxpPW4oIjRwSUIiKSx1PW4oIm1GeVYiKSxzPW4oIkd5T2YiKSxsPWkuaXNCcm93c2VyKCJJRSA8PSAxMSIpO3ZhciBjPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gaSh0KXt2YXIgbjtyZXR1cm4gbyhyKG49ZS5jYWxsKHRoaXMsdCl8fHRoaXMpLCJfZm9yY2VGbGFnIix2b2lkIDApLG8ocihuKSwiX25vZGUiLHZvaWQgMCksbi5fZm9yY2VGbGFnPSExLG59bj1lLCh0PWkpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPW47dmFyIGM9aS5wcm90b3R5cGU7cmV0dXJuIGMuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX25vZGUsbj0iIj09PWUuY2hpbGRyZW47cyh0KXx8dSghMSk7dmFyIHI9dDtyZXR1cm4gbj8hZnVuY3Rpb24oZSl7cmV0dXJuIGw/IlxuIj09PWUudGV4dENvbnRlbnQ6IkJSIj09PWUudGFnTmFtZX0ocik6ci50ZXh0Q29udGVudCE9PWUuY2hpbGRyZW59LGMuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt0aGlzLl9mb3JjZUZsYWc9IXRoaXMuX2ZvcmNlRmxhZ30sYy5jb21wb25lbnREaWRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl9mb3JjZUZsYWc9IXRoaXMuX2ZvcmNlRmxhZ30sYy5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiIiPT09dGhpcy5wcm9wcy5jaGlsZHJlbj90aGlzLl9mb3JjZUZsYWc/ZnVuY3Rpb24oZSl7cmV0dXJuIGw/YS5jcmVhdGVFbGVtZW50KCJzcGFuIix7a2V5OiJBIiwiZGF0YS10ZXh0IjoidHJ1ZSIscmVmOmV9LCJcbiIpOmEuY3JlYXRlRWxlbWVudCgiYnIiLHtrZXk6IkEiLCJkYXRhLXRleHQiOiJ0cnVlIixyZWY6ZX0pfSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX25vZGU9dH0pKTpmdW5jdGlvbihlKXtyZXR1cm4gbD9hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtrZXk6IkIiLCJkYXRhLXRleHQiOiJ0cnVlIixyZWY6ZX0sIlxuIik6YS5jcmVhdGVFbGVtZW50KCJiciIse2tleToiQiIsImRhdGEtdGV4dCI6InRydWUiLHJlZjplfSl9KChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbm9kZT10fSkpOmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2tleTp0aGlzLl9mb3JjZUZsYWc/IkEiOiJCIiwiZGF0YS10ZXh0IjoidHJ1ZSIscmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLl9ub2RlPXR9fSx0aGlzLnByb3BzLmNoaWxkcmVuKX0saX0oYS5Db21wb25lbnQpO2UuZXhwb3J0cz1jfSwiV1lNLyI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0vLSguKS9nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHIsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pKX19LFdhR0M6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUub3duZXJEb2N1bWVudCYmZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P2Uub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp3aW5kb3d9fSxXYkJHOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPSJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCJ9LFdrems6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmeU9ZIiksbz1uKCIzc09KIiksYT1uKCJEWUtoIiksaT1uKCJxeXN2IiksdT1udWxsLHM9e2N1dDpmdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnJlbnRDb250ZW50KCksbj1lLmdldFNlbGVjdGlvbigpLHM9bnVsbDtpZihuLmlzQ29sbGFwc2VkKCkpe3ZhciBsPW4uZ2V0QW5jaG9yS2V5KCksYz10LmdldEJsb2NrRm9yS2V5KGwpLmdldExlbmd0aCgpO2lmKGM9PT1uLmdldEFuY2hvck9mZnNldCgpKXt2YXIgZj10LmdldEtleUFmdGVyKGwpO2lmKG51bGw9PWYpcmV0dXJuIGU7cz1uLnNldCgiZm9jdXNLZXkiLGYpLnNldCgiZm9jdXNPZmZzZXQiLDApfWVsc2Ugcz1uLnNldCgiZm9jdXNPZmZzZXQiLGMpfWVsc2Ugcz1uO3M9aShzKSx1PWEodCxzKTt2YXIgZD1yLnJlbW92ZVJhbmdlKHQscywiZm9yd2FyZCIpO3JldHVybiBkPT09dD9lOm8ucHVzaChlLGQsInJlbW92ZS1yYW5nZSIpfSxwYXN0ZTpmdW5jdGlvbihlKXtpZighdSlyZXR1cm4gZTt2YXIgdD1yLnJlcGxhY2VXaXRoRnJhZ21lbnQoZS5nZXRDdXJyZW50Q29udGVudCgpLGUuZ2V0U2VsZWN0aW9uKCksdSk7cmV0dXJuIG8ucHVzaChlLHQsImluc2VydC1mcmFnbWVudCIpfX07ZS5leHBvcnRzPXN9LFdtUzE6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10P1t0LGkuRElTUExBWV9GT1JNQVQsaS5JU09fRk9STUFUXTpbaS5ESVNQTEFZX0ZPUk1BVCxpLklTT19GT1JNQVRdLHI9KDAsYS5kZWZhdWx0KShlLG4sITApO3JldHVybiByLmlzVmFsaWQoKT9yLmhvdXIoMTIpOm51bGx9O3ZhciByLG89bigid2QvUiIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9LGk9bigiNWY3biIpfSxYRHBnOmZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZGVmaW5lTG9jYWxlKCJ6aC1jbiIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVnlubRN5pyIROaXpSIsTExMOiJZWVlZ5bm0TeaciETml6VBaOeCuW1t5YiGIixMTExMOiJZWVlZ5bm0TeaciETml6VkZGRkQWjngrltbeWIhiIsbDoiWVlZWS9NL0QiLGxsOiJZWVlZ5bm0TeaciETml6UiLGxsbDoiWVlZWeW5tE3mnIhE5pelIEhIOm1tIixsbGxsOiJZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTov5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihlLHQpe3JldHVybiAxMj09PWUmJihlPTApLCLlh4zmmagiPT09dHx8IuaXqeS4iiI9PT10fHwi5LiK5Y2IIj09PXQ/ZToi5LiL5Y2IIj09PXR8fCLmmZrkuIoiPT09dD9lKzEyOmU+PTExP2U6ZSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24oZSx0LG4pe3ZhciByPTEwMCplK3Q7cmV0dXJuIHI8NjAwPyLlh4zmmagiOnI8OTAwPyLml6nkuIoiOnI8MTEzMD8i5LiK5Y2IIjpyPDEyMzA/IuS4reWNiCI6cjwxODAwPyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheToiW+S7iuWkqV1MVCIsbmV4dERheToiW+aYjuWkqV1MVCIsbmV4dFdlZWs6IlvkuItdZGRkZExUIixsYXN0RGF5OiJb5pio5aSpXUxUIixsYXN0V2VlazoiW+S4il1kZGRkTFQiLHNhbWVFbHNlOiJMIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSjml6V85pyIfOWRqCkvLG9yZGluYWw6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gZSsi5pelIjtjYXNlIk0iOnJldHVybiBlKyLmnIgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gZSsi5ZGoIjtkZWZhdWx0OnJldHVybiBlfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5YaFIixwYXN0OiIlc+WJjSIsczoi5Yeg56eSIixzczoiJWQg56eSIixtOiIxIOWIhumSnyIsbW06IiVkIOWIhumSnyIsaDoiMSDlsI/ml7YiLGhoOiIlZCDlsI/ml7YiLGQ6IjEg5aSpIixkZDoiJWQg5aSpIixNOiIxIOS4quaciCIsTU06IiVkIOS4quaciCIseToiMSDlubQiLHl5OiIlZCDlubQifSx3ZWVrOntkb3c6MSxkb3k6NH19KX0obigid2QvUiIpKX0sWEdCYjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigid2QvUiIpLG89bigiYzZhTiIpLGE9bigiaU5kViIpO2UuZXhwb3J0cz17bW9tZW50T2JqOmEuY3JlYXRlTW9tZW50Q2hlY2tlcigib2JqZWN0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlfSksKGZ1bmN0aW9uKGUpe3JldHVybiBvLmlzVmFsaWRNb21lbnQoZSl9KSwiTW9tZW50IiksbW9tZW50U3RyaW5nOmEuY3JlYXRlTW9tZW50Q2hlY2tlcigic3RyaW5nIiwoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSksKGZ1bmN0aW9uKGUpe3JldHVybiBvLmlzVmFsaWRNb21lbnQocihlKSl9KSwiTW9tZW50IiksbW9tZW50RHVyYXRpb25PYmo6YS5jcmVhdGVNb21lbnRDaGVja2VyKCJvYmplY3QiLChmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGV9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuaXNEdXJhdGlvbihlKX0pLCJEdXJhdGlvbiIpfX0sWFVlaTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMubG9jYWxlcz1lLHRoaXMuZm9ybWF0cz10LHRoaXMucGx1cmFsRm49bn1mdW5jdGlvbiBvKGUpe3RoaXMuaWQ9ZX1mdW5jdGlvbiBhKGUsdCxuLHIsbyl7dGhpcy5pZD1lLHRoaXMudXNlT3JkaW5hbD10LHRoaXMub2Zmc2V0PW4sdGhpcy5vcHRpb25zPXIsdGhpcy5wbHVyYWxGbj1vfWZ1bmN0aW9uIGkoZSx0LG4scil7dGhpcy5pZD1lLHRoaXMub2Zmc2V0PXQsdGhpcy5udW1iZXJGb3JtYXQ9bix0aGlzLnN0cmluZz1yfWZ1bmN0aW9uIHUoZSx0KXt0aGlzLmlkPWUsdGhpcy5vcHRpb25zPXR9dC5kZWZhdWx0PXIsci5wcm90b3R5cGUuY29tcGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wbHVyYWxTdGFjaz1bXSx0aGlzLmN1cnJlbnRQbHVyYWw9bnVsbCx0aGlzLnBsdXJhbE51bWJlckZvcm1hdD1udWxsLHRoaXMuY29tcGlsZU1lc3NhZ2UoZSl9LHIucHJvdG90eXBlLmNvbXBpbGVNZXNzYWdlPWZ1bmN0aW9uKGUpe2lmKCFlfHwibWVzc2FnZUZvcm1hdFBhdHRlcm4iIT09ZS50eXBlKXRocm93IG5ldyBFcnJvcignTWVzc2FnZSBBU1QgaXMgbm90IG9mIHR5cGU6ICJtZXNzYWdlRm9ybWF0UGF0dGVybiInKTt2YXIgdCxuLHIsbz1lLmVsZW1lbnRzLGE9W107Zm9yKHQ9MCxuPW8ubGVuZ3RoO3Q8bjt0Kz0xKXN3aXRjaCgocj1vW3RdKS50eXBlKXtjYXNlIm1lc3NhZ2VUZXh0RWxlbWVudCI6YS5wdXNoKHRoaXMuY29tcGlsZU1lc3NhZ2VUZXh0KHIpKTticmVhaztjYXNlImFyZ3VtZW50RWxlbWVudCI6YS5wdXNoKHRoaXMuY29tcGlsZUFyZ3VtZW50KHIpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiTWVzc2FnZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWxpZCB0eXBlIil9cmV0dXJuIGF9LHIucHJvdG90eXBlLmNvbXBpbGVNZXNzYWdlVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jdXJyZW50UGx1cmFsJiYvKF58W15cXF0pIy9nLnRlc3QoZS52YWx1ZSk/KHRoaXMucGx1cmFsTnVtYmVyRm9ybWF0fHwodGhpcy5wbHVyYWxOdW1iZXJGb3JtYXQ9bmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlcykpLG5ldyBpKHRoaXMuY3VycmVudFBsdXJhbC5pZCx0aGlzLmN1cnJlbnRQbHVyYWwuZm9ybWF0Lm9mZnNldCx0aGlzLnBsdXJhbE51bWJlckZvcm1hdCxlLnZhbHVlKSk6ZS52YWx1ZS5yZXBsYWNlKC9cXCMvZywiIyIpfSxyLnByb3RvdHlwZS5jb21waWxlQXJndW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mb3JtYXQ7aWYoIXQpcmV0dXJuIG5ldyBvKGUuaWQpO3ZhciBuLHI9dGhpcy5mb3JtYXRzLGk9dGhpcy5sb2NhbGVzLHM9dGhpcy5wbHVyYWxGbjtzd2l0Y2godC50eXBlKXtjYXNlIm51bWJlckZvcm1hdCI6cmV0dXJuIG49ci5udW1iZXJbdC5zdHlsZV0se2lkOmUuaWQsZm9ybWF0Om5ldyBJbnRsLk51bWJlckZvcm1hdChpLG4pLmZvcm1hdH07Y2FzZSJkYXRlRm9ybWF0IjpyZXR1cm4gbj1yLmRhdGVbdC5zdHlsZV0se2lkOmUuaWQsZm9ybWF0Om5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGksbikuZm9ybWF0fTtjYXNlInRpbWVGb3JtYXQiOnJldHVybiBuPXIudGltZVt0LnN0eWxlXSx7aWQ6ZS5pZCxmb3JtYXQ6bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoaSxuKS5mb3JtYXR9O2Nhc2UicGx1cmFsRm9ybWF0IjpyZXR1cm4gbj10aGlzLmNvbXBpbGVPcHRpb25zKGUpLG5ldyBhKGUuaWQsdC5vcmRpbmFsLHQub2Zmc2V0LG4scyk7Y2FzZSJzZWxlY3RGb3JtYXQiOnJldHVybiBuPXRoaXMuY29tcGlsZU9wdGlvbnMoZSksbmV3IHUoZS5pZCxuKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiTWVzc2FnZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWxpZCBmb3JtYXQgdHlwZSIpfX0sci5wcm90b3R5cGUuY29tcGlsZU9wdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89ZS5mb3JtYXQsYT1vLm9wdGlvbnMsaT17fTtmb3IodGhpcy5wbHVyYWxTdGFjay5wdXNoKHRoaXMuY3VycmVudFBsdXJhbCksdGhpcy5jdXJyZW50UGx1cmFsPSJwbHVyYWxGb3JtYXQiPT09by50eXBlP2U6bnVsbCx0PTAsbj1hLmxlbmd0aDt0PG47dCs9MSlpWyhyPWFbdF0pLnNlbGVjdG9yXT10aGlzLmNvbXBpbGVNZXNzYWdlKHIudmFsdWUpO3JldHVybiB0aGlzLmN1cnJlbnRQbHVyYWw9dGhpcy5wbHVyYWxTdGFjay5wb3AoKSxpfSxvLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV8fCJudW1iZXIiPT10eXBlb2YgZT8ic3RyaW5nIj09dHlwZW9mIGU/ZTpTdHJpbmcoZSk6IiJ9LGEucHJvdG90eXBlLmdldE9wdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnM7cmV0dXJuIHRbIj0iK2VdfHx0W3RoaXMucGx1cmFsRm4oZS10aGlzLm9mZnNldCx0aGlzLnVzZU9yZGluYWwpXXx8dC5vdGhlcn0saS5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubnVtYmVyRm9ybWF0LmZvcm1hdChlLXRoaXMub2Zmc2V0KTtyZXR1cm4gdGhpcy5zdHJpbmcucmVwbGFjZSgvKF58W15cXF0pIy9nLCIkMSIrdCkucmVwbGFjZSgvXFwjL2csIiMiKX0sdS5wcm90b3R5cGUuZ2V0T3B0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucztyZXR1cm4gdFtlXXx8dC5vdGhlcn19LFhkZFM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7bigiWUJkQiIpLGUuZXhwb3J0cz10LnNldEltbWVkaWF0ZX0pLmNhbGwodGhpcyxuKCJ5THBqIikpfSxYZlNhOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuVG9rZW5LaW5kPXZvaWQgMDt2YXIgcj1PYmplY3QuZnJlZXplKHtTT0Y6IjxTT0Y+IixFT0Y6IjxFT0Y+IixCQU5HOiIhIixET0xMQVI6IiQiLEFNUDoiJiIsUEFSRU5fTDoiKCIsUEFSRU5fUjoiKSIsU1BSRUFEOiIuLi4iLENPTE9OOiI6IixFUVVBTFM6Ij0iLEFUOiJAIixCUkFDS0VUX0w6IlsiLEJSQUNLRVRfUjoiXSIsQlJBQ0VfTDoieyIsUElQRToifCIsQlJBQ0VfUjoifSIsTkFNRToiTmFtZSIsSU5UOiJJbnQiLEZMT0FUOiJGbG9hdCIsU1RSSU5HOiJTdHJpbmciLEJMT0NLX1NUUklORzoiQmxvY2tTdHJpbmciLENPTU1FTlQ6IkNvbW1lbnQifSk7dC5Ub2tlbktpbmQ9cn0sWHFNazpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuT2JqZWN0PT09T2JqZWN0JiZlO3QuYT1ufSkuY2FsbCh0aGlzLG4oInlMcGoiKSl9LFh0a286ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG4uZD1mdW5jdGlvbihlLHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsImEiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPSIiLG4obi5zPTcyKX0oW2Z1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInExdEkiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiSHNxZyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI1ZjduIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInZWK0ciKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiMTd4OSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ5YzJlIil9LCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ3ZC9SIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oImFFNlUiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiTFRBQyIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJYR0JiIil9LCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCIyUzJFIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInBZeFQiKX0sLCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVE9QeiIpfSwsLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIk5obzYiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiSWdFNSIpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJwUnZjIil9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oImplbmsiKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiS29xLyIpfSwsLCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ1NUZxIil9LCwsLCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJObG9oIil9LCxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI0Y1NkIil9LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9eChuKDI0KSksaT14KG4oMCkpLHU9eChuKDQpKSxzPXgobigxMCkpLGw9bigxKSxjPXgobig3KSksZj14KG4oMzgpKSxkPXgobig5KSkscD1uKDMpLGg9eChuKDUpKSx5PXgobigyMikpLG09eChuKDIwKSksdj14KG4oMzEpKSxnPXgobigyMSkpLGI9eChuKDEzKSksdz14KG4oMjMpKSxfPXgobig4KSksRT14KG4oMTIpKSxPPW4oMiksaz14KG4oMzYpKSxDPXgobigxNykpO2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIFMoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBEPSgwLGwuZm9yYmlkRXh0cmFQcm9wcykoe2RhdGU6cy5kZWZhdWx0Lm1vbWVudE9iaixvbkRhdGVDaGFuZ2U6dS5kZWZhdWx0LmZ1bmMsZm9jdXNlZDp1LmRlZmF1bHQuYm9vbCxvbkZvY3VzQ2hhbmdlOnUuZGVmYXVsdC5mdW5jLG9uQ2xvc2U6dS5kZWZhdWx0LmZ1bmMsa2VlcE9wZW5PbkRhdGVTZWxlY3Q6dS5kZWZhdWx0LmJvb2wsaXNPdXRzaWRlUmFuZ2U6dS5kZWZhdWx0LmZ1bmMsaXNEYXlCbG9ja2VkOnUuZGVmYXVsdC5mdW5jLGlzRGF5SGlnaGxpZ2h0ZWQ6dS5kZWZhdWx0LmZ1bmMscmVuZGVyTW9udGg6dS5kZWZhdWx0LmZ1bmMsZW5hYmxlT3V0c2lkZURheXM6dS5kZWZhdWx0LmJvb2wsbnVtYmVyT2ZNb250aHM6dS5kZWZhdWx0Lm51bWJlcixvcmllbnRhdGlvbjpfLmRlZmF1bHQsd2l0aFBvcnRhbDp1LmRlZmF1bHQuYm9vbCxpbml0aWFsVmlzaWJsZU1vbnRoOnUuZGVmYXVsdC5mdW5jLGZpcnN0RGF5T2ZXZWVrOkUuZGVmYXVsdCxoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDp1LmRlZmF1bHQuYm9vbCxkYXlTaXplOmwubm9uTmVnYXRpdmVJbnRlZ2VyLG5hdlByZXY6dS5kZWZhdWx0Lm5vZGUsbmF2TmV4dDp1LmRlZmF1bHQubm9kZSxvblByZXZNb250aENsaWNrOnUuZGVmYXVsdC5mdW5jLG9uTmV4dE1vbnRoQ2xpY2s6dS5kZWZhdWx0LmZ1bmMsb25PdXRzaWRlQ2xpY2s6dS5kZWZhdWx0LmZ1bmMscmVuZGVyRGF5OnUuZGVmYXVsdC5mdW5jLHJlbmRlckNhbGVuZGFySW5mbzp1LmRlZmF1bHQuZnVuYyxvbkJsdXI6dS5kZWZhdWx0LmZ1bmMsaXNGb2N1c2VkOnUuZGVmYXVsdC5ib29sLHNob3dLZXlib2FyZFNob3J0Y3V0czp1LmRlZmF1bHQuYm9vbCxtb250aEZvcm1hdDp1LmRlZmF1bHQuc3RyaW5nLHdlZWtEYXlGb3JtYXQ6dS5kZWZhdWx0LnN0cmluZyxwaHJhc2VzOnUuZGVmYXVsdC5zaGFwZSgoMCxoLmRlZmF1bHQpKHAuRGF5UGlja2VyUGhyYXNlcykpLGlzUlRMOnUuZGVmYXVsdC5ib29sfSksVD17ZGF0ZTp2b2lkIDAsb25EYXRlQ2hhbmdlOmZ1bmN0aW9uKCl7fSxmb2N1c2VkOiExLG9uRm9jdXNDaGFuZ2U6ZnVuY3Rpb24oKXt9LG9uQ2xvc2U6ZnVuY3Rpb24oKXt9LGtlZXBPcGVuT25EYXRlU2VsZWN0OiExLGlzT3V0c2lkZVJhbmdlOmZ1bmN0aW9uKCl7fSxpc0RheUJsb2NrZWQ6ZnVuY3Rpb24oKXt9LGlzRGF5SGlnaGxpZ2h0ZWQ6ZnVuY3Rpb24oKXt9LHJlbmRlck1vbnRoOm51bGwsZW5hYmxlT3V0c2lkZURheXM6ITEsbnVtYmVyT2ZNb250aHM6MSxvcmllbnRhdGlvbjpPLkhPUklaT05UQUxfT1JJRU5UQVRJT04sd2l0aFBvcnRhbDohMSxoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDohMSxpbml0aWFsVmlzaWJsZU1vbnRoOm51bGwsZmlyc3REYXlPZldlZWs6bnVsbCxkYXlTaXplOk8uREFZX1NJWkUsbmF2UHJldjpudWxsLG5hdk5leHQ6bnVsbCxvblByZXZNb250aENsaWNrOmZ1bmN0aW9uKCl7fSxvbk5leHRNb250aENsaWNrOmZ1bmN0aW9uKCl7fSxvbk91dHNpZGVDbGljazpudWxsLHJlbmRlckRheTpudWxsLHJlbmRlckNhbGVuZGFySW5mbzpudWxsLG9uQmx1cjpmdW5jdGlvbigpe30saXNGb2N1c2VkOiExLHNob3dLZXlib2FyZFNob3J0Y3V0czohMSxtb250aEZvcm1hdDoiTU1NTSBZWVlZIix3ZWVrRGF5Rm9ybWF0OiJkZCIscGhyYXNlczpwLkRheVBpY2tlclBocmFzZXMsaXNSVEw6ITF9LE09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtuLmlzVG91Y2hEZXZpY2U9ITEsbi50b2RheT0oMCxjLmRlZmF1bHQpKCksbi5tb2RpZmllcnM9e3RvZGF5OmZ1bmN0aW9uKGUpe3JldHVybiBuLmlzVG9kYXkoZSl9LGJsb2NrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaXNCbG9ja2VkKGUpfSwiYmxvY2tlZC1jYWxlbmRhciI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaXNEYXlCbG9ja2VkKHQpfSwiYmxvY2tlZC1vdXQtb2YtcmFuZ2UiOmZ1bmN0aW9uKHQpe3JldHVybiBlLmlzT3V0c2lkZVJhbmdlKHQpfSwiaGlnaGxpZ2h0ZWQtY2FsZW5kYXIiOmZ1bmN0aW9uKHQpe3JldHVybiBlLmlzRGF5SGlnaGxpZ2h0ZWQodCl9LHZhbGlkOmZ1bmN0aW9uKGUpe3JldHVybiFuLmlzQmxvY2tlZChlKX0saG92ZXJlZDpmdW5jdGlvbihlKXtyZXR1cm4gbi5pc0hvdmVyZWQoZSl9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVybiBuLmlzU2VsZWN0ZWQoZSl9fTt2YXIgbz1uLmdldFN0YXRlRm9yTmV3TW9udGgoZSksYT1vLmN1cnJlbnRNb250aCxpPW8udmlzaWJsZURheXM7cmV0dXJuIG4uc3RhdGU9e2hvdmVyRGF0ZTpudWxsLGN1cnJlbnRNb250aDphLHZpc2libGVEYXlzOml9LG4ub25EYXlNb3VzZUVudGVyPW4ub25EYXlNb3VzZUVudGVyLmJpbmQobiksbi5vbkRheU1vdXNlTGVhdmU9bi5vbkRheU1vdXNlTGVhdmUuYmluZChuKSxuLm9uRGF5Q2xpY2s9bi5vbkRheUNsaWNrLmJpbmQobiksbi5vblByZXZNb250aENsaWNrPW4ub25QcmV2TW9udGhDbGljay5iaW5kKG4pLG4ub25OZXh0TW9udGhDbGljaz1uLm9uTmV4dE1vbnRoQ2xpY2suYmluZChuKSxuLmdldEZpcnN0Rm9jdXNhYmxlRGF5PW4uZ2V0Rmlyc3RGb2N1c2FibGVEYXkuYmluZChuKSxufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrKHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzVG91Y2hEZXZpY2U9KDAsZC5kZWZhdWx0KSgpfX0se2tleToiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWUuZGF0ZSxyPWUuZm9jdXNlZCxvPWUuaXNPdXRzaWRlUmFuZ2UsaT1lLmlzRGF5QmxvY2tlZCx1PWUuaXNEYXlIaWdobGlnaHRlZCxzPWUuaW5pdGlhbFZpc2libGVNb250aCxsPWUubnVtYmVyT2ZNb250aHMsZD1lLmVuYWJsZU91dHNpZGVEYXlzLHA9dGhpcy5zdGF0ZS52aXNpYmxlRGF5cyxoPSExLG09ITEsdj0hMTtvIT09dGhpcy5wcm9wcy5pc091dHNpZGVSYW5nZSYmKHRoaXMubW9kaWZpZXJzWyJibG9ja2VkLW91dC1vZi1yYW5nZSJdPWZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSxoPSEwKSxpIT09dGhpcy5wcm9wcy5pc0RheUJsb2NrZWQmJih0aGlzLm1vZGlmaWVyc1siYmxvY2tlZC1jYWxlbmRhciJdPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfSxtPSEwKSx1IT09dGhpcy5wcm9wcy5pc0RheUhpZ2hsaWdodGVkJiYodGhpcy5tb2RpZmllcnNbImhpZ2hsaWdodGVkLWNhbGVuZGFyIl09ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSl9LHY9ITApO3ZhciBnPWh8fG18fHY7aWYobCE9PXRoaXMucHJvcHMubnVtYmVyT2ZNb250aHN8fGQhPT10aGlzLnByb3BzLmVuYWJsZU91dHNpZGVEYXlzfHxzIT09dGhpcy5wcm9wcy5pbml0aWFsVmlzaWJsZU1vbnRoJiYhdGhpcy5wcm9wcy5mb2N1c2VkJiZyKXt2YXIgYj10aGlzLmdldFN0YXRlRm9yTmV3TW9udGgoZSksdz1iLmN1cnJlbnRNb250aDtwPWIudmlzaWJsZURheXMsdGhpcy5zZXRTdGF0ZSh7Y3VycmVudE1vbnRoOncsdmlzaWJsZURheXM6cH0pfXZhciBfPW4hPT10aGlzLnByb3BzLmRhdGUsRT1yIT09dGhpcy5wcm9wcy5mb2N1c2VkLE89e307XyYmKE89dGhpcy5kZWxldGVNb2RpZmllcihPLHRoaXMucHJvcHMuZGF0ZSwic2VsZWN0ZWQiKSxPPXRoaXMuYWRkTW9kaWZpZXIoTyxuLCJzZWxlY3RlZCIpKSwoRXx8ZykmJigwLGYuZGVmYXVsdCkocCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49KDAsYy5kZWZhdWx0KShlKTtPPXQuaXNCbG9ja2VkKG4pP3QuYWRkTW9kaWZpZXIoTyxuLCJibG9ja2VkIik6dC5kZWxldGVNb2RpZmllcihPLG4sImJsb2NrZWQiKSwoRXx8aCkmJihPPW8obik/dC5hZGRNb2RpZmllcihPLG4sImJsb2NrZWQtb3V0LW9mLXJhbmdlIik6dC5kZWxldGVNb2RpZmllcihPLG4sImJsb2NrZWQtb3V0LW9mLXJhbmdlIikpLChFfHxtKSYmKE89aShuKT90LmFkZE1vZGlmaWVyKE8sbiwiYmxvY2tlZC1jYWxlbmRhciIpOnQuZGVsZXRlTW9kaWZpZXIoTyxuLCJibG9ja2VkLWNhbGVuZGFyIikpLChFfHx2KSYmKE89dShuKT90LmFkZE1vZGlmaWVyKE8sbiwiaGlnaGxpZ2h0ZWQtY2FsZW5kYXIiKTp0LmRlbGV0ZU1vZGlmaWVyKE8sbiwiaGlnaGxpZ2h0ZWQtY2FsZW5kYXIiKSl9KSl9KSk7dmFyIGs9KDAsYy5kZWZhdWx0KSgpOygwLHkuZGVmYXVsdCkodGhpcy50b2RheSxrKXx8KE89dGhpcy5kZWxldGVNb2RpZmllcihPLHRoaXMudG9kYXksInRvZGF5IiksTz10aGlzLmFkZE1vZGlmaWVyKE8saywidG9kYXkiKSx0aGlzLnRvZGF5PWspLE9iamVjdC5rZXlzKE8pLmxlbmd0aD4wJiZ0aGlzLnNldFN0YXRlKHt2aXNpYmxlRGF5czooMCxhLmRlZmF1bHQpKHt9LHAsTyl9KX19LHtrZXk6ImNvbXBvbmVudFdpbGxVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50b2RheT0oMCxjLmRlZmF1bHQpKCl9fSx7a2V5OiJvbkRheUNsaWNrIix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKHQmJnQucHJldmVudERlZmF1bHQoKSwhdGhpcy5pc0Jsb2NrZWQoZSkpe3ZhciBuPXRoaXMucHJvcHMscj1uLm9uRGF0ZUNoYW5nZSxvPW4ua2VlcE9wZW5PbkRhdGVTZWxlY3QsYT1uLm9uRm9jdXNDaGFuZ2UsaT1uLm9uQ2xvc2U7cihlKSxvfHwoYSh7Zm9jdXNlZDpudWxsfSksaSh7ZGF0ZTplfSkpfX19LHtrZXk6Im9uRGF5TW91c2VFbnRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuaXNUb3VjaERldmljZSl7dmFyIHQ9dGhpcy5zdGF0ZSxuPXQuaG92ZXJEYXRlLHI9dC52aXNpYmxlRGF5cyxvPXRoaXMuZGVsZXRlTW9kaWZpZXIoe30sbiwiaG92ZXJlZCIpO289dGhpcy5hZGRNb2RpZmllcihvLGUsImhvdmVyZWQiKSx0aGlzLnNldFN0YXRlKHtob3ZlckRhdGU6ZSx2aXNpYmxlRGF5czooMCxhLmRlZmF1bHQpKHt9LHIsbyl9KX19fSx7a2V5OiJvbkRheU1vdXNlTGVhdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZSx0PWUuaG92ZXJEYXRlLG49ZS52aXNpYmxlRGF5cztpZighdGhpcy5pc1RvdWNoRGV2aWNlJiZ0KXt2YXIgcj10aGlzLmRlbGV0ZU1vZGlmaWVyKHt9LHQsImhvdmVyZWQiKTt0aGlzLnNldFN0YXRlKHtob3ZlckRhdGU6bnVsbCx2aXNpYmxlRGF5czooMCxhLmRlZmF1bHQpKHt9LG4scil9KX19fSx7a2V5OiJvblByZXZNb250aENsaWNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm9uUHJldk1vbnRoQ2xpY2ssbj1lLm51bWJlck9mTW9udGhzLHI9ZS5lbmFibGVPdXRzaWRlRGF5cyxvPXRoaXMuc3RhdGUsaT1vLmN1cnJlbnRNb250aCx1PW8udmlzaWJsZURheXMscz17fTtPYmplY3Qua2V5cyh1KS5zb3J0KCkuc2xpY2UoMCxuKzEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3NbZV09dVtlXX0pKTt2YXIgbD1pLmNsb25lKCkuc3VidHJhY3QoMSwibW9udGgiKSxjPSgwLHYuZGVmYXVsdCkobCwxLHIpO3RoaXMuc2V0U3RhdGUoe2N1cnJlbnRNb250aDpsLHZpc2libGVEYXlzOigwLGEuZGVmYXVsdCkoe30scyx0aGlzLmdldE1vZGlmaWVycyhjKSl9KSx0KGwuY2xvbmUoKSl9fSx7a2V5OiJvbk5leHRNb250aENsaWNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm9uTmV4dE1vbnRoQ2xpY2ssbj1lLm51bWJlck9mTW9udGhzLHI9ZS5lbmFibGVPdXRzaWRlRGF5cyxvPXRoaXMuc3RhdGUsaT1vLmN1cnJlbnRNb250aCx1PW8udmlzaWJsZURheXMscz17fTtPYmplY3Qua2V5cyh1KS5zb3J0KCkuc2xpY2UoMSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7c1tlXT11W2VdfSkpO3ZhciBsPWkuY2xvbmUoKS5hZGQobiwibW9udGgiKSxjPSgwLHYuZGVmYXVsdCkobCwxLHIpLGY9aS5jbG9uZSgpLmFkZCgxLCJtb250aCIpO3RoaXMuc2V0U3RhdGUoe2N1cnJlbnRNb250aDpmLHZpc2libGVEYXlzOigwLGEuZGVmYXVsdCkoe30scyx0aGlzLmdldE1vZGlmaWVycyhjKSl9KSx0KGYuY2xvbmUoKSl9fSx7a2V5OiJnZXRGaXJzdEZvY3VzYWJsZURheSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMucHJvcHMscj1uLmRhdGUsbz1uLm51bWJlck9mTW9udGhzLGE9ZS5jbG9uZSgpLnN0YXJ0T2YoIm1vbnRoIik7aWYociYmKGE9ci5jbG9uZSgpKSx0aGlzLmlzQmxvY2tlZChhKSl7Zm9yKHZhciBpPVtdLHU9ZS5jbG9uZSgpLmFkZChvLTEsIm1vbnRocyIpLmVuZE9mKCJtb250aCIpLHM9YS5jbG9uZSgpOyEoMCxtLmRlZmF1bHQpKHMsdSk7KXM9cy5jbG9uZSgpLmFkZCgxLCJkYXkiKSxpLnB1c2gocyk7dmFyIGw9aS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiF0LmlzQmxvY2tlZChlKSYmKDAsbS5kZWZhdWx0KShlLGEpfSkpO2wubGVuZ3RoPjAmJihhPWxbMF0pfXJldHVybiBhfX0se2tleToiZ2V0TW9kaWZpZXJzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49e307cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe25bcl09e30sZVtyXS5mb3JFYWNoKChmdW5jdGlvbihlKXtuW3JdWygwLGIuZGVmYXVsdCkoZSldPXQuZ2V0TW9kaWZpZXJzRm9yRGF5KGUpfSkpfSkpLG59fSx7a2V5OiJnZXRNb2RpZmllcnNGb3JEYXkiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBTZXQoT2JqZWN0LmtleXModGhpcy5tb2RpZmllcnMpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIHQubW9kaWZpZXJzW25dKGUpfSkpKX19LHtrZXk6ImdldFN0YXRlRm9yTmV3TW9udGgiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1lLmluaXRpYWxWaXNpYmxlTW9udGgscj1lLmRhdGUsbz1lLm51bWJlck9mTW9udGhzLGE9ZS5lbmFibGVPdXRzaWRlRGF5cyxpPShufHwocj9mdW5jdGlvbigpe3JldHVybiByfTpmdW5jdGlvbigpe3JldHVybiB0LnRvZGF5fSkpKCk7cmV0dXJue2N1cnJlbnRNb250aDppLHZpc2libGVEYXlzOnRoaXMuZ2V0TW9kaWZpZXJzKCgwLHYuZGVmYXVsdCkoaSxvLGEpKX19fSx7a2V5OiJhZGRNb2RpZmllciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMucHJvcHMsbz1yLm51bWJlck9mTW9udGhzLGk9ci5lbmFibGVPdXRzaWRlRGF5cyx1PXIub3JpZW50YXRpb24scz10aGlzLnN0YXRlLGw9cy5jdXJyZW50TW9udGgsYz1zLnZpc2libGVEYXlzLGY9bCxkPW87aWYodSE9PU8uVkVSVElDQUxfU0NST0xMQUJMRSYmKGY9Zi5jbG9uZSgpLnN1YnRyYWN0KDEsIm1vbnRoIiksZCs9MiksIXR8fCEoMCxnLmRlZmF1bHQpKHQsZixkLGkpKXJldHVybiBlO3ZhciBwPSgwLGIuZGVmYXVsdCkodCksaD0oMCxhLmRlZmF1bHQpKHt9LGUpO2lmKGkpaD1PYmplY3Qua2V5cyhjKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhjW2VdKS5pbmRleE9mKHApPi0xfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxyKXt2YXIgbz1lW3JdfHxjW3JdLGk9bmV3IFNldChvW3BdKTtyZXR1cm4gaS5hZGQobiksKDAsYS5kZWZhdWx0KSh7fSx0LFMoe30sciwoMCxhLmRlZmF1bHQpKHt9LG8sUyh7fSxwLGkpKSkpfSksaCk7ZWxzZXt2YXIgeT0oMCx3LmRlZmF1bHQpKHQpLG09ZVt5XXx8Y1t5XSx2PW5ldyBTZXQobVtwXSk7di5hZGQobiksaD0oMCxhLmRlZmF1bHQpKHt9LGgsUyh7fSx5LCgwLGEuZGVmYXVsdCkoe30sbSxTKHt9LHAsdikpKSl9cmV0dXJuIGh9fSx7a2V5OiJkZWxldGVNb2RpZmllciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMucHJvcHMsbz1yLm51bWJlck9mTW9udGhzLGk9ci5lbmFibGVPdXRzaWRlRGF5cyx1PXIub3JpZW50YXRpb24scz10aGlzLnN0YXRlLGw9cy5jdXJyZW50TW9udGgsYz1zLnZpc2libGVEYXlzLGY9bCxkPW87aWYodSE9PU8uVkVSVElDQUxfU0NST0xMQUJMRSYmKGY9Zi5jbG9uZSgpLnN1YnRyYWN0KDEsIm1vbnRoIiksZCs9MiksIXR8fCEoMCxnLmRlZmF1bHQpKHQsZixkLGkpKXJldHVybiBlO3ZhciBwPSgwLGIuZGVmYXVsdCkodCksaD0oMCxhLmRlZmF1bHQpKHt9LGUpO2lmKGkpaD1PYmplY3Qua2V5cyhjKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhjW2VdKS5pbmRleE9mKHApPi0xfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxyKXt2YXIgbz1lW3JdfHxjW3JdLGk9bmV3IFNldChvW3BdKTtyZXR1cm4gaS5kZWxldGUobiksKDAsYS5kZWZhdWx0KSh7fSx0LFMoe30sciwoMCxhLmRlZmF1bHQpKHt9LG8sUyh7fSxwLGkpKSkpfSksaCk7ZWxzZXt2YXIgeT0oMCx3LmRlZmF1bHQpKHQpLG09ZVt5XXx8Y1t5XSx2PW5ldyBTZXQobVtwXSk7di5kZWxldGUobiksaD0oMCxhLmRlZmF1bHQpKHt9LGgsUyh7fSx5LCgwLGEuZGVmYXVsdCkoe30sbSxTKHt9LHAsdikpKSl9cmV0dXJuIGh9fSx7a2V5OiJpc0Jsb2NrZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LmlzRGF5QmxvY2tlZCxyPXQuaXNPdXRzaWRlUmFuZ2U7cmV0dXJuIG4oZSl8fHIoZSl9fSx7a2V5OiJpc0hvdmVyZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSh0aGlzLnN0YXRlfHx7fSkuaG92ZXJEYXRlO3JldHVybigwLHkuZGVmYXVsdCkoZSx0KX19LHtrZXk6ImlzU2VsZWN0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybigwLHkuZGVmYXVsdCkoZSx0aGlzLnByb3BzLmRhdGUpfX0se2tleToiaXNUb2RheSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKDAseS5kZWZhdWx0KShlLHRoaXMudG9kYXkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm51bWJlck9mTW9udGhzLG49ZS5vcmllbnRhdGlvbixyPWUubW9udGhGb3JtYXQsbz1lLnJlbmRlck1vbnRoLGE9ZS5uYXZQcmV2LHU9ZS5uYXZOZXh0LHM9ZS53aXRoUG9ydGFsLGw9ZS5mb2N1c2VkLGM9ZS5lbmFibGVPdXRzaWRlRGF5cyxmPWUuaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWwsZD1lLmRheVNpemUscD1lLmZpcnN0RGF5T2ZXZWVrLGg9ZS5yZW5kZXJEYXkseT1lLnJlbmRlckNhbGVuZGFySW5mbyxtPWUuaXNGb2N1c2VkLHY9ZS5pc1JUTCxnPWUucGhyYXNlcyxiPWUub25PdXRzaWRlQ2xpY2ssdz1lLm9uQmx1cixfPWUuc2hvd0tleWJvYXJkU2hvcnRjdXRzLEU9ZS53ZWVrRGF5Rm9ybWF0LE89dGhpcy5zdGF0ZSx4PU8uY3VycmVudE1vbnRoLFM9Ty52aXNpYmxlRGF5cyxEPWkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGsuZGVmYXVsdCx7b3JpZW50YXRpb246bixlbmFibGVPdXRzaWRlRGF5czpjLG1vZGlmaWVyczpTLG51bWJlck9mTW9udGhzOnQsb25EYXlDbGljazp0aGlzLm9uRGF5Q2xpY2ssb25EYXlNb3VzZUVudGVyOnRoaXMub25EYXlNb3VzZUVudGVyLG9uRGF5TW91c2VMZWF2ZTp0aGlzLm9uRGF5TW91c2VMZWF2ZSxvblByZXZNb250aENsaWNrOnRoaXMub25QcmV2TW9udGhDbGljayxvbk5leHRNb250aENsaWNrOnRoaXMub25OZXh0TW9udGhDbGljayxtb250aEZvcm1hdDpyLHdpdGhQb3J0YWw6cyxoaWRkZW46IWwsaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWw6Zixpbml0aWFsVmlzaWJsZU1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LGZpcnN0RGF5T2ZXZWVrOnAsbmF2UHJldjphLG5hdk5leHQ6dSxyZW5kZXJNb250aDpvLHJlbmRlckRheTpoLHJlbmRlckNhbGVuZGFySW5mbzp5LGlzRm9jdXNlZDptLGdldEZpcnN0Rm9jdXNhYmxlRGF5OnRoaXMuZ2V0Rmlyc3RGb2N1c2FibGVEYXksb25CbHVyOncscGhyYXNlczpnLGRheVNpemU6ZCxpc1JUTDp2LHNob3dLZXlib2FyZFNob3J0Y3V0czpfLHdlZWtEYXlGb3JtYXQ6RX0pO3JldHVybiBiP2kuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEMuZGVmYXVsdCx7b25PdXRzaWRlQ2xpY2s6Yn0sRCk6RH19XSksdH0oaS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PU0sTS5wcm9wVHlwZXM9RCxNLmRlZmF1bHRQcm9wcz1UfV0pfSwiWSsrMyI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXsiLi9kZSI6InRHbFgiLCIuL2RlLWF0Ijoicyt1ayIsIi4vZGUtYXQuanMiOiJzK3VrIiwiLi9kZS1jaCI6InUzR0kiLCIuL2RlLWNoLmpzIjoidTNHSSIsIi4vZGUuanMiOiJ0R2xYIiwiLi9lbi1TRyI6InphdkUiLCIuL2VuLVNHLmpzIjoiemF2RSIsIi4vZW4tYXUiOiJEbXZpIiwiLi9lbi1hdS5qcyI6IkRtdmkiLCIuL2VuLWNhIjoiT0lZaSIsIi4vZW4tY2EuanMiOiJPSVlpIiwiLi9lbi1nYiI6Ik9hYTciLCIuL2VuLWdiLmpzIjoiT2FhNyIsIi4vZW4taWUiOiI0ZE93IiwiLi9lbi1pZS5qcyI6IjRkT3ciLCIuL2VuLWlsIjoiY3pNbyIsIi4vZW4taWwuanMiOiJjek1vIiwiLi9lbi1ueiI6ImIxRHkiLCIuL2VuLW56LmpzIjoiYjFEeSIsIi4vZXMiOiJpWXVMIiwiLi9lcy1kbyI6IkNqelQiLCIuL2VzLWRvLmpzIjoiQ2p6VCIsIi4vZXMtdXMiOiJWY2xxIiwiLi9lcy11cy5qcyI6IlZjbHEiLCIuL2VzLmpzIjoiaVl1TCIsIi4vZnIiOiJueVljIiwiLi9mci1jYSI6IjJmam4iLCIuL2ZyLWNhLmpzIjoiMmZqbiIsIi4vZnItY2giOiJEa2t5IiwiLi9mci1jaC5qcyI6IkRra3kiLCIuL2ZyLmpzIjoibnlZYyIsIi4vaXQiOiJicGloIiwiLi9pdC1jaCI6ImJ4S1giLCIuL2l0LWNoLmpzIjoiYnhLWCIsIi4vaXQuanMiOiJicGloIiwiLi9rbyI6Ikl2aSsiLCIuL2tvLmpzIjoiSXZpKyIsIi4vcHQiOiI4bUJEIiwiLi9wdC1iciI6IjB0UmsiLCIuL3B0LWJyLmpzIjoiMHRSayIsIi4vcHQuanMiOiI4bUJEIiwiLi9ydSI6ImxYem8iLCIuL3J1LmpzIjoibFh6byIsIi4vdHIiOiJEb0hyIiwiLi90ci5qcyI6IkRvSHIiLCIuL3poLWNuIjoiWERwZyIsIi4vemgtY24uanMiOiJYRHBnIiwiLi96aC10dyI6ImtPcE4iLCIuL3poLXR3LmpzIjoia09wTiJ9O2Z1bmN0aW9uIG8oZSl7dmFyIHQ9YShlKTtyZXR1cm4gbih0KX1mdW5jdGlvbiBhKGUpe2lmKCFuLm8ocixlKSl7dmFyIHQ9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZSsiJyIpO3Rocm93IHQuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsdH1yZXR1cm4gcltlXX1vLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMocil9LG8ucmVzb2x2ZT1hLGUuZXhwb3J0cz1vLG8uaWQ9IlkrKzMifSwiWS9rSCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5faW50ZXJuYWxEcmFnPSEwLGUuc2V0TW9kZSgiZHJhZyIpfX0sWTNQUTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIk1nelciKTtmdW5jdGlvbiBvKCl7cmV0dXJuKG89cnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7aShlLHQsblt0XSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHU9bigiRHRoWSIpLHM9bigiSXE4RSIpLGw9bigicTF0SSIpLGM9bigicFhtcCIpLGY9bigiUHhqSiIpLGQ9bigicXlzdiIpLHA9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGMoeyJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvdW5vcmRlcmVkTGlzdEl0ZW0iOiJ1bm9yZGVyZWQtbGlzdC1pdGVtIj09PWUsInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9vcmRlcmVkTGlzdEl0ZW0iOiJvcmRlcmVkLWxpc3QtaXRlbSI9PT1lLCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvcmVzZXQiOm4sInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9kZXB0aDAiOjA9PT10LCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvZGVwdGgxIjoxPT09dCwicHVibGljL0RyYWZ0U3R5bGVEZWZhdWx0L2RlcHRoMiI6Mj09PXQsInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9kZXB0aDMiOjM9PT10LCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvZGVwdGg0Ijp0Pj00LCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvbGlzdExUUiI6IkxUUiI9PT1yLCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvbGlzdFJUTCI6IlJUTCI9PT1yfSl9LGg9ZnVuY3Rpb24oZSl7dmFyIHQsbjtmdW5jdGlvbiByKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfW49ZSwodD1yKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uO3ZhciBpPXIucHJvdG90eXBlO3JldHVybiBpLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLmVkaXRvclN0YXRlLG49ZS5lZGl0b3JTdGF0ZTtpZih0LmdldERpcmVjdGlvbk1hcCgpIT09bi5nZXREaXJlY3Rpb25NYXAoKSlyZXR1cm4hMDtpZih0LmdldFNlbGVjdGlvbigpLmdldEhhc0ZvY3VzKCkhPT1uLmdldFNlbGVjdGlvbigpLmdldEhhc0ZvY3VzKCkpcmV0dXJuITA7dmFyIHI9bi5nZXROYXRpdmVseVJlbmRlcmVkQ29udGVudCgpLG89dC5pc0luQ29tcG9zaXRpb25Nb2RlKCksYT1uLmlzSW5Db21wb3NpdGlvbk1vZGUoKTtpZih0PT09bnx8bnVsbCE9PXImJm4uZ2V0Q3VycmVudENvbnRlbnQoKT09PXJ8fG8mJmEpcmV0dXJuITE7dmFyIGk9dC5nZXRDdXJyZW50Q29udGVudCgpLHU9bi5nZXRDdXJyZW50Q29udGVudCgpLHM9dC5nZXREZWNvcmF0b3IoKSxsPW4uZ2V0RGVjb3JhdG9yKCk7cmV0dXJuIG8hPT1hfHxpIT09dXx8cyE9PWx8fG4ubXVzdEZvcmNlU2VsZWN0aW9uKCl9LGkucmVuZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMucHJvcHMsdD1lLmJsb2NrUmVuZGVyTWFwLG49ZS5ibG9ja1JlbmRlcmVyRm4scj1lLmJsb2NrU3R5bGVGbixpPWUuY3VzdG9tU3R5bGVNYXAsYz1lLmN1c3RvbVN0eWxlRm4saD1lLmVkaXRvclN0YXRlLHk9ZS5lZGl0b3JLZXksbT1lLnRleHREaXJlY3Rpb25hbGl0eSx2PWguZ2V0Q3VycmVudENvbnRlbnQoKSxnPWguZ2V0U2VsZWN0aW9uKCksYj1oLm11c3RGb3JjZVNlbGVjdGlvbigpLHc9aC5nZXREZWNvcmF0b3IoKSxfPWQoaC5nZXREaXJlY3Rpb25NYXAoKSksRT12LmdldEJsb2Nrc0FzQXJyYXkoKSxPPVtdLGs9bnVsbCxDPW51bGwseD0wO3g8RS5sZW5ndGg7eCsrKXt2YXIgUz1FW3hdLEQ9Uy5nZXRLZXkoKSxUPVMuZ2V0VHlwZSgpLE09bihTKSxQPXZvaWQgMCxOPXZvaWQgMCxqPXZvaWQgMDtNJiYoUD1NLmNvbXBvbmVudCxOPU0ucHJvcHMsaj1NLmVkaXRhYmxlKTt2YXIgTD1tfHxfLmdldChEKSxSPXMuZW5jb2RlKEQsMCwwKSxJPXtjb250ZW50U3RhdGU6dixibG9jazpTLGJsb2NrUHJvcHM6TixibG9ja1N0eWxlRm46cixjdXN0b21TdHlsZU1hcDppLGN1c3RvbVN0eWxlRm46YyxkZWNvcmF0b3I6dyxkaXJlY3Rpb246TCxmb3JjZVNlbGVjdGlvbjpiLG9mZnNldEtleTpSLHNlbGVjdGlvbjpnLHRyZWU6aC5nZXRCbG9ja1RyZWUoRCl9LEE9dC5nZXQoVCl8fHQuZ2V0KCJ1bnN0eWxlZCIpLEY9QS53cmFwcGVyLEI9QS5lbGVtZW50fHx0LmdldCgidW5zdHlsZWQiKS5lbGVtZW50LHo9Uy5nZXREZXB0aCgpLEs9IiI7aWYociYmKEs9cihTKSksImxpIj09PUIpSz1mKEsscChULHosQyE9PUZ8fG51bGw9PT1rfHx6PmssTCkpO3ZhciBxPVB8fHUsVj17Y2xhc3NOYW1lOkssImRhdGEtYmxvY2siOiEwLCJkYXRhLWVkaXRvciI6eSwiZGF0YS1vZmZzZXQta2V5IjpSLGtleTpEfTt2b2lkIDAhPT1qJiYoVj1hKHt9LFYse2NvbnRlbnRFZGl0YWJsZTpqLHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzohMH0pKTt2YXIgVT1sLmNyZWF0ZUVsZW1lbnQoQixWLGwuY3JlYXRlRWxlbWVudChxLG8oe30sSSx7a2V5OkR9KSkpO08ucHVzaCh7YmxvY2s6VSx3cmFwcGVyVGVtcGxhdGU6RixrZXk6RCxvZmZzZXRLZXk6Un0pLGs9Rj9TLmdldERlcHRoKCk6bnVsbCxDPUZ9Zm9yKHZhciBXPVtdLFk9MDtZPE8ubGVuZ3RoOyl7dmFyIEg9T1tZXTtpZihILndyYXBwZXJUZW1wbGF0ZSl7dmFyIEc9W107ZG97Ry5wdXNoKE9bWV0uYmxvY2spLFkrK313aGlsZShZPE8ubGVuZ3RoJiZPW1ldLndyYXBwZXJUZW1wbGF0ZT09PUgud3JhcHBlclRlbXBsYXRlKTt2YXIgUT1sLmNsb25lRWxlbWVudChILndyYXBwZXJUZW1wbGF0ZSx7a2V5Okgua2V5KyItd3JhcCIsImRhdGEtb2Zmc2V0LWtleSI6SC5vZmZzZXRLZXl9LEcpO1cucHVzaChRKX1lbHNlIFcucHVzaChILmJsb2NrKSxZKyt9cmV0dXJuIGwuY3JlYXRlRWxlbWVudCgiZGl2Iix7ImRhdGEtY29udGVudHMiOiJ0cnVlIn0sVyl9LHJ9KGwuQ29tcG9uZW50KTtlLmV4cG9ydHM9aH0sWUFWMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxyLmxlbmd0aDt0KyspZT1lLnJlcGxhY2Uoclt0XS5sZXR0ZXJzLHJbdF0uYmFzZSk7cmV0dXJuIGV9O3ZhciByPVt7YmFzZToiQSIsbGV0dGVyczovW1x1MDA0MVx1MjRCNlx1RkYyMVx1MDBDMFx1MDBDMVx1MDBDMlx1MUVBNlx1MUVBNFx1MUVBQVx1MUVBOFx1MDBDM1x1MDEwMFx1MDEwMlx1MUVCMFx1MUVBRVx1MUVCNFx1MUVCMlx1MDIyNlx1MDFFMFx1MDBDNFx1MDFERVx1MUVBMlx1MDBDNVx1MDFGQVx1MDFDRFx1MDIwMFx1MDIwMlx1MUVBMFx1MUVBQ1x1MUVCNlx1MUUwMFx1MDEwNFx1MDIzQVx1MkM2Rl0vZ30se2Jhc2U6IkFBIixsZXR0ZXJzOi9bXHVBNzMyXS9nfSx7YmFzZToiQUUiLGxldHRlcnM6L1tcdTAwQzZcdTAxRkNcdTAxRTJdL2d9LHtiYXNlOiJBTyIsbGV0dGVyczovW1x1QTczNF0vZ30se2Jhc2U6IkFVIixsZXR0ZXJzOi9bXHVBNzM2XS9nfSx7YmFzZToiQVYiLGxldHRlcnM6L1tcdUE3MzhcdUE3M0FdL2d9LHtiYXNlOiJBWSIsbGV0dGVyczovW1x1QTczQ10vZ30se2Jhc2U6IkIiLGxldHRlcnM6L1tcdTAwNDJcdTI0QjdcdUZGMjJcdTFFMDJcdTFFMDRcdTFFMDZcdTAyNDNcdTAxODJcdTAxODFdL2d9LHtiYXNlOiJDIixsZXR0ZXJzOi9bXHUwMDQzXHUyNEI4XHVGRjIzXHUwMTA2XHUwMTA4XHUwMTBBXHUwMTBDXHUwMEM3XHUxRTA4XHUwMTg3XHUwMjNCXHVBNzNFXS9nfSx7YmFzZToiRCIsbGV0dGVyczovW1x1MDA0NFx1MjRCOVx1RkYyNFx1MUUwQVx1MDEwRVx1MUUwQ1x1MUUxMFx1MUUxMlx1MUUwRVx1MDExMFx1MDE4Qlx1MDE4QVx1MDE4OVx1QTc3OV0vZ30se2Jhc2U6IkRaIixsZXR0ZXJzOi9bXHUwMUYxXHUwMUM0XS9nfSx7YmFzZToiRHoiLGxldHRlcnM6L1tcdTAxRjJcdTAxQzVdL2d9LHtiYXNlOiJFIixsZXR0ZXJzOi9bXHUwMDQ1XHUyNEJBXHVGRjI1XHUwMEM4XHUwMEM5XHUwMENBXHUxRUMwXHUxRUJFXHUxRUM0XHUxRUMyXHUxRUJDXHUwMTEyXHUxRTE0XHUxRTE2XHUwMTE0XHUwMTE2XHUwMENCXHUxRUJBXHUwMTFBXHUwMjA0XHUwMjA2XHUxRUI4XHUxRUM2XHUwMjI4XHUxRTFDXHUwMTE4XHUxRTE4XHUxRTFBXHUwMTkwXHUwMThFXS9nfSx7YmFzZToiRiIsbGV0dGVyczovW1x1MDA0Nlx1MjRCQlx1RkYyNlx1MUUxRVx1MDE5MVx1QTc3Ql0vZ30se2Jhc2U6IkciLGxldHRlcnM6L1tcdTAwNDdcdTI0QkNcdUZGMjdcdTAxRjRcdTAxMUNcdTFFMjBcdTAxMUVcdTAxMjBcdTAxRTZcdTAxMjJcdTAxRTRcdTAxOTNcdUE3QTBcdUE3N0RcdUE3N0VdL2d9LHtiYXNlOiJIIixsZXR0ZXJzOi9bXHUwMDQ4XHUyNEJEXHVGRjI4XHUwMTI0XHUxRTIyXHUxRTI2XHUwMjFFXHUxRTI0XHUxRTI4XHUxRTJBXHUwMTI2XHUyQzY3XHUyQzc1XHVBNzhEXS9nfSx7YmFzZToiSSIsbGV0dGVyczovW1x1MDA0OVx1MjRCRVx1RkYyOVx1MDBDQ1x1MDBDRFx1MDBDRVx1MDEyOFx1MDEyQVx1MDEyQ1x1MDEzMFx1MDBDRlx1MUUyRVx1MUVDOFx1MDFDRlx1MDIwOFx1MDIwQVx1MUVDQVx1MDEyRVx1MUUyQ1x1MDE5N10vZ30se2Jhc2U6IkoiLGxldHRlcnM6L1tcdTAwNEFcdTI0QkZcdUZGMkFcdTAxMzRcdTAyNDhdL2d9LHtiYXNlOiJLIixsZXR0ZXJzOi9bXHUwMDRCXHUyNEMwXHVGRjJCXHUxRTMwXHUwMUU4XHUxRTMyXHUwMTM2XHUxRTM0XHUwMTk4XHUyQzY5XHVBNzQwXHVBNzQyXHVBNzQ0XHVBN0EyXS9nfSx7YmFzZToiTCIsbGV0dGVyczovW1x1MDA0Q1x1MjRDMVx1RkYyQ1x1MDEzRlx1MDEzOVx1MDEzRFx1MUUzNlx1MUUzOFx1MDEzQlx1MUUzQ1x1MUUzQVx1MDE0MVx1MDIzRFx1MkM2Mlx1MkM2MFx1QTc0OFx1QTc0Nlx1QTc4MF0vZ30se2Jhc2U6IkxKIixsZXR0ZXJzOi9bXHUwMUM3XS9nfSx7YmFzZToiTGoiLGxldHRlcnM6L1tcdTAxQzhdL2d9LHtiYXNlOiJNIixsZXR0ZXJzOi9bXHUwMDREXHUyNEMyXHVGRjJEXHUxRTNFXHUxRTQwXHUxRTQyXHUyQzZFXHUwMTlDXS9nfSx7YmFzZToiTiIsbGV0dGVyczovW1x1MDA0RVx1MjRDM1x1RkYyRVx1MDFGOFx1MDE0M1x1MDBEMVx1MUU0NFx1MDE0N1x1MUU0Nlx1MDE0NVx1MUU0QVx1MUU0OFx1MDIyMFx1MDE5RFx1QTc5MFx1QTdBNF0vZ30se2Jhc2U6Ik5KIixsZXR0ZXJzOi9bXHUwMUNBXS9nfSx7YmFzZToiTmoiLGxldHRlcnM6L1tcdTAxQ0JdL2d9LHtiYXNlOiJPIixsZXR0ZXJzOi9bXHUwMDRGXHUyNEM0XHVGRjJGXHUwMEQyXHUwMEQzXHUwMEQ0XHUxRUQyXHUxRUQwXHUxRUQ2XHUxRUQ0XHUwMEQ1XHUxRTRDXHUwMjJDXHUxRTRFXHUwMTRDXHUxRTUwXHUxRTUyXHUwMTRFXHUwMjJFXHUwMjMwXHUwMEQ2XHUwMjJBXHUxRUNFXHUwMTUwXHUwMUQxXHUwMjBDXHUwMjBFXHUwMUEwXHUxRURDXHUxRURBXHUxRUUwXHUxRURFXHUxRUUyXHUxRUNDXHUxRUQ4XHUwMUVBXHUwMUVDXHUwMEQ4XHUwMUZFXHUwMTg2XHUwMTlGXHVBNzRBXHVBNzRDXS9nfSx7YmFzZToiT0kiLGxldHRlcnM6L1tcdTAxQTJdL2d9LHtiYXNlOiJPTyIsbGV0dGVyczovW1x1QTc0RV0vZ30se2Jhc2U6Ik9VIixsZXR0ZXJzOi9bXHUwMjIyXS9nfSx7YmFzZToiUCIsbGV0dGVyczovW1x1MDA1MFx1MjRDNVx1RkYzMFx1MUU1NFx1MUU1Nlx1MDFBNFx1MkM2M1x1QTc1MFx1QTc1Mlx1QTc1NF0vZ30se2Jhc2U6IlEiLGxldHRlcnM6L1tcdTAwNTFcdTI0QzZcdUZGMzFcdUE3NTZcdUE3NThcdTAyNEFdL2d9LHtiYXNlOiJSIixsZXR0ZXJzOi9bXHUwMDUyXHUyNEM3XHVGRjMyXHUwMTU0XHUxRTU4XHUwMTU4XHUwMjEwXHUwMjEyXHUxRTVBXHUxRTVDXHUwMTU2XHUxRTVFXHUwMjRDXHUyQzY0XHVBNzVBXHVBN0E2XHVBNzgyXS9nfSx7YmFzZToiUyIsbGV0dGVyczovW1x1MDA1M1x1MjRDOFx1RkYzM1x1MUU5RVx1MDE1QVx1MUU2NFx1MDE1Q1x1MUU2MFx1MDE2MFx1MUU2Nlx1MUU2Mlx1MUU2OFx1MDIxOFx1MDE1RVx1MkM3RVx1QTdBOFx1QTc4NF0vZ30se2Jhc2U6IlQiLGxldHRlcnM6L1tcdTAwNTRcdTI0QzlcdUZGMzRcdTFFNkFcdTAxNjRcdTFFNkNcdTAyMUFcdTAxNjJcdTFFNzBcdTFFNkVcdTAxNjZcdTAxQUNcdTAxQUVcdTAyM0VcdUE3ODZdL2d9LHtiYXNlOiJUWiIsbGV0dGVyczovW1x1QTcyOF0vZ30se2Jhc2U6IlUiLGxldHRlcnM6L1tcdTAwNTVcdTI0Q0FcdUZGMzVcdTAwRDlcdTAwREFcdTAwREJcdTAxNjhcdTFFNzhcdTAxNkFcdTFFN0FcdTAxNkNcdTAwRENcdTAxREJcdTAxRDdcdTAxRDVcdTAxRDlcdTFFRTZcdTAxNkVcdTAxNzBcdTAxRDNcdTAyMTRcdTAyMTZcdTAxQUZcdTFFRUFcdTFFRThcdTFFRUVcdTFFRUNcdTFFRjBcdTFFRTRcdTFFNzJcdTAxNzJcdTFFNzZcdTFFNzRcdTAyNDRdL2d9LHtiYXNlOiJWIixsZXR0ZXJzOi9bXHUwMDU2XHUyNENCXHVGRjM2XHUxRTdDXHUxRTdFXHUwMUIyXHVBNzVFXHUwMjQ1XS9nfSx7YmFzZToiVlkiLGxldHRlcnM6L1tcdUE3NjBdL2d9LHtiYXNlOiJXIixsZXR0ZXJzOi9bXHUwMDU3XHUyNENDXHVGRjM3XHUxRTgwXHUxRTgyXHUwMTc0XHUxRTg2XHUxRTg0XHUxRTg4XHUyQzcyXS9nfSx7YmFzZToiWCIsbGV0dGVyczovW1x1MDA1OFx1MjRDRFx1RkYzOFx1MUU4QVx1MUU4Q10vZ30se2Jhc2U6IlkiLGxldHRlcnM6L1tcdTAwNTlcdTI0Q0VcdUZGMzlcdTFFRjJcdTAwRERcdTAxNzZcdTFFRjhcdTAyMzJcdTFFOEVcdTAxNzhcdTFFRjZcdTFFRjRcdTAxQjNcdTAyNEVcdTFFRkVdL2d9LHtiYXNlOiJaIixsZXR0ZXJzOi9bXHUwMDVBXHUyNENGXHVGRjNBXHUwMTc5XHUxRTkwXHUwMTdCXHUwMTdEXHUxRTkyXHUxRTk0XHUwMUI1XHUwMjI0XHUyQzdGXHUyQzZCXHVBNzYyXS9nfSx7YmFzZToiYSIsbGV0dGVyczovW1x1MDA2MVx1MjREMFx1RkY0MVx1MUU5QVx1MDBFMFx1MDBFMVx1MDBFMlx1MUVBN1x1MUVBNVx1MUVBQlx1MUVBOVx1MDBFM1x1MDEwMVx1MDEwM1x1MUVCMVx1MUVBRlx1MUVCNVx1MUVCM1x1MDIyN1x1MDFFMVx1MDBFNFx1MDFERlx1MUVBM1x1MDBFNVx1MDFGQlx1MDFDRVx1MDIwMVx1MDIwM1x1MUVBMVx1MUVBRFx1MUVCN1x1MUUwMVx1MDEwNVx1MkM2NVx1MDI1MF0vZ30se2Jhc2U6ImFhIixsZXR0ZXJzOi9bXHVBNzMzXS9nfSx7YmFzZToiYWUiLGxldHRlcnM6L1tcdTAwRTZcdTAxRkRcdTAxRTNdL2d9LHtiYXNlOiJhbyIsbGV0dGVyczovW1x1QTczNV0vZ30se2Jhc2U6ImF1IixsZXR0ZXJzOi9bXHVBNzM3XS9nfSx7YmFzZToiYXYiLGxldHRlcnM6L1tcdUE3MzlcdUE3M0JdL2d9LHtiYXNlOiJheSIsbGV0dGVyczovW1x1QTczRF0vZ30se2Jhc2U6ImIiLGxldHRlcnM6L1tcdTAwNjJcdTI0RDFcdUZGNDJcdTFFMDNcdTFFMDVcdTFFMDdcdTAxODBcdTAxODNcdTAyNTNdL2d9LHtiYXNlOiJjIixsZXR0ZXJzOi9bXHUwMDYzXHUyNEQyXHVGRjQzXHUwMTA3XHUwMTA5XHUwMTBCXHUwMTBEXHUwMEU3XHUxRTA5XHUwMTg4XHUwMjNDXHVBNzNGXHUyMTg0XS9nfSx7YmFzZToiZCIsbGV0dGVyczovW1x1MDA2NFx1MjREM1x1RkY0NFx1MUUwQlx1MDEwRlx1MUUwRFx1MUUxMVx1MUUxM1x1MUUwRlx1MDExMVx1MDE4Q1x1MDI1Nlx1MDI1N1x1QTc3QV0vZ30se2Jhc2U6ImR6IixsZXR0ZXJzOi9bXHUwMUYzXHUwMUM2XS9nfSx7YmFzZToiZSIsbGV0dGVyczovW1x1MDA2NVx1MjRENFx1RkY0NVx1MDBFOFx1MDBFOVx1MDBFQVx1MUVDMVx1MUVCRlx1MUVDNVx1MUVDM1x1MUVCRFx1MDExM1x1MUUxNVx1MUUxN1x1MDExNVx1MDExN1x1MDBFQlx1MUVCQlx1MDExQlx1MDIwNVx1MDIwN1x1MUVCOVx1MUVDN1x1MDIyOVx1MUUxRFx1MDExOVx1MUUxOVx1MUUxQlx1MDI0N1x1MDI1Qlx1MDFERF0vZ30se2Jhc2U6ImYiLGxldHRlcnM6L1tcdTAwNjZcdTI0RDVcdUZGNDZcdTFFMUZcdTAxOTJcdUE3N0NdL2d9LHtiYXNlOiJnIixsZXR0ZXJzOi9bXHUwMDY3XHUyNEQ2XHVGRjQ3XHUwMUY1XHUwMTFEXHUxRTIxXHUwMTFGXHUwMTIxXHUwMUU3XHUwMTIzXHUwMUU1XHUwMjYwXHVBN0ExXHUxRDc5XHVBNzdGXS9nfSx7YmFzZToiaCIsbGV0dGVyczovW1x1MDA2OFx1MjREN1x1RkY0OFx1MDEyNVx1MUUyM1x1MUUyN1x1MDIxRlx1MUUyNVx1MUUyOVx1MUUyQlx1MUU5Nlx1MDEyN1x1MkM2OFx1MkM3Nlx1MDI2NV0vZ30se2Jhc2U6Imh2IixsZXR0ZXJzOi9bXHUwMTk1XS9nfSx7YmFzZToiaSIsbGV0dGVyczovW1x1MDA2OVx1MjREOFx1RkY0OVx1MDBFQ1x1MDBFRFx1MDBFRVx1MDEyOVx1MDEyQlx1MDEyRFx1MDBFRlx1MUUyRlx1MUVDOVx1MDFEMFx1MDIwOVx1MDIwQlx1MUVDQlx1MDEyRlx1MUUyRFx1MDI2OFx1MDEzMV0vZ30se2Jhc2U6ImoiLGxldHRlcnM6L1tcdTAwNkFcdTI0RDlcdUZGNEFcdTAxMzVcdTAxRjBcdTAyNDldL2d9LHtiYXNlOiJrIixsZXR0ZXJzOi9bXHUwMDZCXHUyNERBXHVGRjRCXHUxRTMxXHUwMUU5XHUxRTMzXHUwMTM3XHUxRTM1XHUwMTk5XHUyQzZBXHVBNzQxXHVBNzQzXHVBNzQ1XHVBN0EzXS9nfSx7YmFzZToibCIsbGV0dGVyczovW1x1MDA2Q1x1MjREQlx1RkY0Q1x1MDE0MFx1MDEzQVx1MDEzRVx1MUUzN1x1MUUzOVx1MDEzQ1x1MUUzRFx1MUUzQlx1MDE3Rlx1MDE0Mlx1MDE5QVx1MDI2Qlx1MkM2MVx1QTc0OVx1QTc4MVx1QTc0N10vZ30se2Jhc2U6ImxqIixsZXR0ZXJzOi9bXHUwMUM5XS9nfSx7YmFzZToibSIsbGV0dGVyczovW1x1MDA2RFx1MjREQ1x1RkY0RFx1MUUzRlx1MUU0MVx1MUU0M1x1MDI3MVx1MDI2Rl0vZ30se2Jhc2U6Im4iLGxldHRlcnM6L1tcdTAwNkVcdTI0RERcdUZGNEVcdTAxRjlcdTAxNDRcdTAwRjFcdTFFNDVcdTAxNDhcdTFFNDdcdTAxNDZcdTFFNEJcdTFFNDlcdTAxOUVcdTAyNzJcdTAxNDlcdUE3OTFcdUE3QTVdL2d9LHtiYXNlOiJuaiIsbGV0dGVyczovW1x1MDFDQ10vZ30se2Jhc2U6Im8iLGxldHRlcnM6L1tcdTAwNkZcdTI0REVcdUZGNEZcdTAwRjJcdTAwRjNcdTAwRjRcdTFFRDNcdTFFRDFcdTFFRDdcdTFFRDVcdTAwRjVcdTFFNERcdTAyMkRcdTFFNEZcdTAxNERcdTFFNTFcdTFFNTNcdTAxNEZcdTAyMkZcdTAyMzFcdTAwRjZcdTAyMkJcdTFFQ0ZcdTAxNTFcdTAxRDJcdTAyMERcdTAyMEZcdTAxQTFcdTFFRERcdTFFREJcdTFFRTFcdTFFREZcdTFFRTNcdTFFQ0RcdTFFRDlcdTAxRUJcdTAxRURcdTAwRjhcdTAxRkZcdTAyNTRcdUE3NEJcdUE3NERcdTAyNzVdL2d9LHtiYXNlOiJvaSIsbGV0dGVyczovW1x1MDFBM10vZ30se2Jhc2U6Im91IixsZXR0ZXJzOi9bXHUwMjIzXS9nfSx7YmFzZToib28iLGxldHRlcnM6L1tcdUE3NEZdL2d9LHtiYXNlOiJwIixsZXR0ZXJzOi9bXHUwMDcwXHUyNERGXHVGRjUwXHUxRTU1XHUxRTU3XHUwMUE1XHUxRDdEXHVBNzUxXHVBNzUzXHVBNzU1XS9nfSx7YmFzZToicSIsbGV0dGVyczovW1x1MDA3MVx1MjRFMFx1RkY1MVx1MDI0Qlx1QTc1N1x1QTc1OV0vZ30se2Jhc2U6InIiLGxldHRlcnM6L1tcdTAwNzJcdTI0RTFcdUZGNTJcdTAxNTVcdTFFNTlcdTAxNTlcdTAyMTFcdTAyMTNcdTFFNUJcdTFFNURcdTAxNTdcdTFFNUZcdTAyNERcdTAyN0RcdUE3NUJcdUE3QTdcdUE3ODNdL2d9LHtiYXNlOiJzIixsZXR0ZXJzOi9bXHUwMDczXHUyNEUyXHVGRjUzXHUwMERGXHUwMTVCXHUxRTY1XHUwMTVEXHUxRTYxXHUwMTYxXHUxRTY3XHUxRTYzXHUxRTY5XHUwMjE5XHUwMTVGXHUwMjNGXHVBN0E5XHVBNzg1XHUxRTlCXS9nfSx7YmFzZToidCIsbGV0dGVyczovW1x1MDA3NFx1MjRFM1x1RkY1NFx1MUU2Qlx1MUU5N1x1MDE2NVx1MUU2RFx1MDIxQlx1MDE2M1x1MUU3MVx1MUU2Rlx1MDE2N1x1MDFBRFx1MDI4OFx1MkM2Nlx1QTc4N10vZ30se2Jhc2U6InR6IixsZXR0ZXJzOi9bXHVBNzI5XS9nfSx7YmFzZToidSIsbGV0dGVyczovW1x1MDA3NVx1MjRFNFx1RkY1NVx1MDBGOVx1MDBGQVx1MDBGQlx1MDE2OVx1MUU3OVx1MDE2Qlx1MUU3Qlx1MDE2RFx1MDBGQ1x1MDFEQ1x1MDFEOFx1MDFENlx1MDFEQVx1MUVFN1x1MDE2Rlx1MDE3MVx1MDFENFx1MDIxNVx1MDIxN1x1MDFCMFx1MUVFQlx1MUVFOVx1MUVFRlx1MUVFRFx1MUVGMVx1MUVFNVx1MUU3M1x1MDE3M1x1MUU3N1x1MUU3NVx1MDI4OV0vZ30se2Jhc2U6InYiLGxldHRlcnM6L1tcdTAwNzZcdTI0RTVcdUZGNTZcdTFFN0RcdTFFN0ZcdTAyOEJcdUE3NUZcdTAyOENdL2d9LHtiYXNlOiJ2eSIsbGV0dGVyczovW1x1QTc2MV0vZ30se2Jhc2U6InciLGxldHRlcnM6L1tcdTAwNzdcdTI0RTZcdUZGNTdcdTFFODFcdTFFODNcdTAxNzVcdTFFODdcdTFFODVcdTFFOThcdTFFODlcdTJDNzNdL2d9LHtiYXNlOiJ4IixsZXR0ZXJzOi9bXHUwMDc4XHUyNEU3XHVGRjU4XHUxRThCXHUxRThEXS9nfSx7YmFzZToieSIsbGV0dGVyczovW1x1MDA3OVx1MjRFOFx1RkY1OVx1MUVGM1x1MDBGRFx1MDE3N1x1MUVGOVx1MDIzM1x1MUU4Rlx1MDBGRlx1MUVGN1x1MUU5OVx1MUVGNVx1MDFCNFx1MDI0Rlx1MUVGRl0vZ30se2Jhc2U6InoiLGxldHRlcnM6L1tcdTAwN0FcdTI0RTlcdUZGNUFcdTAxN0FcdTFFOTFcdTAxN0NcdTAxN0VcdTFFOTNcdTFFOTVcdTAxQjZcdTAyMjVcdTAyNDBcdTJDNkNcdUE3NjNdL2d9XX0sWUFXODpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe2lmKCFyLmRlZmF1bHQuaXNNb21lbnQoZSl8fCFyLmRlZmF1bHQuaXNNb21lbnQodCkpcmV0dXJuITE7dmFyIG49KDAsci5kZWZhdWx0KShlKS5hZGQoMSwiZGF5Iik7cmV0dXJuKDAsby5kZWZhdWx0KShuLHQpfTt2YXIgcj1hKG4oIndkL1IiKSksbz1hKG4oInBSdmMiKSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSxZQmRCOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oZSxuKXsidXNlIHN0cmljdCI7aWYoIWUuc2V0SW1tZWRpYXRlKXt2YXIgcixvLGEsaSx1LHM9MSxsPXt9LGM9ITEsZj1lLmRvY3VtZW50LGQ9T2JqZWN0LmdldFByb3RvdHlwZU9mJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZD1kJiZkLnNldFRpbWVvdXQ/ZDplLCJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoZS5wcm9jZXNzKT9yPWZ1bmN0aW9uKGUpe3QubmV4dFRpY2soKGZ1bmN0aW9uKCl7aChlKX0pKX06IWZ1bmN0aW9uKCl7aWYoZS5wb3N0TWVzc2FnZSYmIWUuaW1wb3J0U2NyaXB0cyl7dmFyIHQ9ITAsbj1lLm9ubWVzc2FnZTtyZXR1cm4gZS5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXt0PSExfSxlLnBvc3RNZXNzYWdlKCIiLCIqIiksZS5vbm1lc3NhZ2U9bix0fX0oKT9lLk1lc3NhZ2VDaGFubmVsPygoYT1uZXcgTWVzc2FnZUNoYW5uZWwpLnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlvbihlKXtoKGUuZGF0YSl9LHI9ZnVuY3Rpb24oZSl7YS5wb3J0Mi5wb3N0TWVzc2FnZShlKX0pOmYmJiJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gZi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKT8obz1mLmRvY3VtZW50RWxlbWVudCxyPWZ1bmN0aW9uKGUpe3ZhciB0PWYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7dC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtoKGUpLHQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsby5yZW1vdmVDaGlsZCh0KSx0PW51bGx9LG8uYXBwZW5kQ2hpbGQodCl9KTpyPWZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoaCwwLGUpfTooaT0ic2V0SW1tZWRpYXRlJCIrTWF0aC5yYW5kb20oKSsiJCIsdT1mdW5jdGlvbih0KXt0LnNvdXJjZT09PWUmJiJzdHJpbmciPT10eXBlb2YgdC5kYXRhJiYwPT09dC5kYXRhLmluZGV4T2YoaSkmJmgoK3QuZGF0YS5zbGljZShpLmxlbmd0aCkpfSxlLmFkZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix1LCExKTplLmF0dGFjaEV2ZW50KCJvbm1lc3NhZ2UiLHUpLHI9ZnVuY3Rpb24odCl7ZS5wb3N0TWVzc2FnZShpK3QsIioiKX0pLGQuc2V0SW1tZWRpYXRlPWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiIhPXR5cGVvZiBlJiYoZT1uZXcgRnVuY3Rpb24oIiIrZSkpO2Zvcih2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbisxXTt2YXIgbz17Y2FsbGJhY2s6ZSxhcmdzOnR9O3JldHVybiBsW3NdPW8scihzKSxzKyt9LGQuY2xlYXJJbW1lZGlhdGU9cH1mdW5jdGlvbiBwKGUpe2RlbGV0ZSBsW2VdfWZ1bmN0aW9uIGgoZSl7aWYoYylzZXRUaW1lb3V0KGgsMCxlKTtlbHNle3ZhciB0PWxbZV07aWYodCl7Yz0hMDt0cnl7IWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2FsbGJhY2ssbj1lLmFyZ3M7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6dCgpO2JyZWFrO2Nhc2UgMTp0KG5bMF0pO2JyZWFrO2Nhc2UgMjp0KG5bMF0sblsxXSk7YnJlYWs7Y2FzZSAzOnQoblswXSxuWzFdLG5bMl0pO2JyZWFrO2RlZmF1bHQ6dC5hcHBseSh2b2lkIDAsbil9fSh0KX1maW5hbGx5e3AoZSksYz0hMX19fX19KCJ1bmRlZmluZWQiPT10eXBlb2Ygc2VsZj92b2lkIDA9PT1lP3RoaXM6ZTpzZWxmKX0pLmNhbGwodGhpcyxuKCJ5THBqIiksbigiOG94QiIpKX0sWUNFVTpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3JldHVybiEoIXIuZGVmYXVsdC5pc01vbWVudChlKXx8IXIuZGVmYXVsdC5pc01vbWVudCh0KSkmJiEoMCxvLmRlZmF1bHQpKGUsdCl9O3ZhciByPWEobigid2QvUiIpKSxvPWEobigiTmhvNiIpKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX19LFlETXc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJoeUFqIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5fbGF0ZXN0RWRpdG9yU3RhdGUuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQoKT90LnByZXZlbnREZWZhdWx0KCk6ZS5zZXRDbGlwYm9hcmQocihlLl9sYXRlc3RFZGl0b3JTdGF0ZSkpfX0sWVMzSzpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiaWRqViIpLnJ1bkluQ29udGV4dCgpO2UuZXhwb3J0cz1uKCJ0dHJDIikocixyKX0sWVVRaDpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtpZighZSlyZXR1cm47aWYoISgwLGEuZGVmYXVsdCkoKSlyZXR1cm4hIWUuY2FwdHVyZTtyZXR1cm4gZX07dmFyIHIsbz1uKCJDNDFQIiksYT0ocj1vKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn19LFlVZW06ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJTRjVxIiksbz1uKCIzc09KIiksYT1uKCJERVdHIiksaT1uKCI4ZC8vIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRTZWxlY3Rpb24oKSxuPXQuZ2V0U3RhcnRPZmZzZXQoKSxvPXQuZ2V0U3RhcnRLZXkoKSxpPWUuZ2V0Q3VycmVudENvbnRlbnQoKS5nZXRCbG9ja0ZvcktleShvKS5nZXRUZXh0KCkuc2xpY2UobiksdT1yLmdldEZvcndhcmQoaSk7cmV0dXJuIGEoZSx1Lmxlbmd0aHx8MSl9KSwiZm9yd2FyZCIpO3JldHVybiB0PT09ZS5nZXRDdXJyZW50Q29udGVudCgpP2U6by5wdXNoKGUsdCwicmVtb3ZlLXJhbmdlIil9fSxZWkRWOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicnpWNyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIXIoZS5wcm9wcyx0KXx8IXIoZS5zdGF0ZSxuKX19LFllN206ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5hc3NlcnROb2RlTGlzdD1zLHQuc2V0RWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdD1lO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmaS5jYW5Vc2VET00pe3ZhciBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCk7cyhuLHQpLHQ9Imxlbmd0aCJpbiBuP25bMF06bn1yZXR1cm4gdT10fHx1fSx0LnZhbGlkYXRlRWxlbWVudD1sLHQuaGlkZT1mdW5jdGlvbihlKXtsKGUpJiYoZXx8dSkuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKX0sdC5zaG93PWZ1bmN0aW9uKGUpe2woZSkmJihlfHx1KS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIil9LHQuZG9jdW1lbnROb3RSZWFkeU9yU1NSVGVzdGluZz1mdW5jdGlvbigpe3U9bnVsbH0sdC5yZXNldEZvclRlc3Rpbmc9ZnVuY3Rpb24oKXt1PW51bGx9O3ZhciByLG89bigiMlc2eiIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9LGk9bigiMnpzNyIpO3ZhciB1PW51bGw7ZnVuY3Rpb24gcyhlLHQpe2lmKCFlfHwhZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJyZWFjdC1tb2RhbDogTm8gZWxlbWVudHMgd2VyZSBmb3VuZCBmb3Igc2VsZWN0b3IgIit0KyIuIil9ZnVuY3Rpb24gbChlKXtyZXR1cm4hKCFlJiYhdSl8fCgoMCxhLmRlZmF1bHQpKCExLFsicmVhY3QtbW9kYWw6IEFwcCBlbGVtZW50IGlzIG5vdCBkZWZpbmVkLiIsIlBsZWFzZSB1c2UgYE1vZGFsLnNldEFwcEVsZW1lbnQoZWwpYCBvciBzZXQgYGFwcEVsZW1lbnQ9e2VsfWAuIiwiVGhpcyBpcyBuZWVkZWQgc28gc2NyZWVuIHJlYWRlcnMgZG9uJ3Qgc2VlIG1haW4gY29udGVudCIsIndoZW4gbW9kYWwgaXMgb3BlbmVkLiBJdCBpcyBub3QgcmVjb21tZW5kZWQsIGJ1dCB5b3UgY2FuIG9wdC1vdXQiLCJieSBzZXR0aW5nIGBhcmlhSGlkZUFwcD17ZmFsc2V9YC4iXS5qb2luKCIgIikpLCExKX19LFllVmU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJKUGN2IikuT3JkZXJlZE1hcCxvPXtjcmVhdGVGcm9tQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltlLmdldEtleSgpLGVdfSkpKX19O2UuZXhwb3J0cz1vfSxZckZqOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiTWd6VyIpO2Z1bmN0aW9uIG8oKXtyZXR1cm4obz1yfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBhPW4oIkM4cWsiKSxpPW4oIklxOEUiKSx1PW4oInExdEkiKSxzPW4oInF5c3YiKSxsPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gcigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31uPWUsKHQ9cikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgbD1yLnByb3RvdHlwZTtyZXR1cm4gbC5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy5lZGl0b3JTdGF0ZSxuPWUuZWRpdG9yU3RhdGU7aWYodC5nZXREaXJlY3Rpb25NYXAoKSE9PW4uZ2V0RGlyZWN0aW9uTWFwKCkpcmV0dXJuITA7aWYodC5nZXRTZWxlY3Rpb24oKS5nZXRIYXNGb2N1cygpIT09bi5nZXRTZWxlY3Rpb24oKS5nZXRIYXNGb2N1cygpKXJldHVybiEwO3ZhciByPW4uZ2V0TmF0aXZlbHlSZW5kZXJlZENvbnRlbnQoKSxvPXQuaXNJbkNvbXBvc2l0aW9uTW9kZSgpLGE9bi5pc0luQ29tcG9zaXRpb25Nb2RlKCk7aWYodD09PW58fG51bGwhPT1yJiZuLmdldEN1cnJlbnRDb250ZW50KCk9PT1yfHxvJiZhKXJldHVybiExO3ZhciBpPXQuZ2V0Q3VycmVudENvbnRlbnQoKSx1PW4uZ2V0Q3VycmVudENvbnRlbnQoKSxzPXQuZ2V0RGVjb3JhdG9yKCksbD1uLmdldERlY29yYXRvcigpO3JldHVybiBvIT09YXx8aSE9PXV8fHMhPT1sfHxuLm11c3RGb3JjZVNlbGVjdGlvbigpfSxsLnJlbmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnByb3BzLHQ9ZS5ibG9ja1JlbmRlck1hcCxuPWUuYmxvY2tSZW5kZXJlckZuLHI9ZS5ibG9ja1N0eWxlRm4sbD1lLmN1c3RvbVN0eWxlTWFwLGM9ZS5jdXN0b21TdHlsZUZuLGY9ZS5lZGl0b3JTdGF0ZSxkPWUuZWRpdG9yS2V5LHA9ZS50ZXh0RGlyZWN0aW9uYWxpdHksaD1mLmdldEN1cnJlbnRDb250ZW50KCkseT1mLmdldFNlbGVjdGlvbigpLG09Zi5tdXN0Rm9yY2VTZWxlY3Rpb24oKSx2PWYuZ2V0RGVjb3JhdG9yKCksZz1zKGYuZ2V0RGlyZWN0aW9uTWFwKCkpLGI9W10sdz1oLmdldEJsb2Nrc0FzQXJyYXkoKVswXTt3Oyl7dmFyIF89dy5nZXRLZXkoKSxFPXtibG9ja1JlbmRlck1hcDp0LGJsb2NrUmVuZGVyZXJGbjpuLGJsb2NrU3R5bGVGbjpyLGNvbnRlbnRTdGF0ZTpoLGN1c3RvbVN0eWxlRm46YyxjdXN0b21TdHlsZU1hcDpsLGRlY29yYXRvcjp2LGVkaXRvcktleTpkLGVkaXRvclN0YXRlOmYsZm9yY2VTZWxlY3Rpb246bSxzZWxlY3Rpb246eSxibG9jazp3LGRpcmVjdGlvbjpwfHxnLmdldChfKSx0cmVlOmYuZ2V0QmxvY2tUcmVlKF8pfSxPPSh0LmdldCh3LmdldFR5cGUoKSl8fHQuZ2V0KCJ1bnN0eWxlZCIpKS53cmFwcGVyO2IucHVzaCh7YmxvY2s6dS5jcmVhdGVFbGVtZW50KGEsbyh7a2V5Ol99LEUpKSx3cmFwcGVyVGVtcGxhdGU6TyxrZXk6XyxvZmZzZXRLZXk6aS5lbmNvZGUoXywwLDApfSk7dmFyIGs9dy5nZXROZXh0U2libGluZ0tleSgpO3c9az9oLmdldEJsb2NrRm9yS2V5KGspOm51bGx9Zm9yKHZhciBDPVtdLHg9MDt4PGIubGVuZ3RoOyl7dmFyIFM9Ylt4XTtpZihTLndyYXBwZXJUZW1wbGF0ZSl7dmFyIEQ9W107ZG97RC5wdXNoKGJbeF0uYmxvY2spLHgrK313aGlsZSh4PGIubGVuZ3RoJiZiW3hdLndyYXBwZXJUZW1wbGF0ZT09PVMud3JhcHBlclRlbXBsYXRlKTt2YXIgVD11LmNsb25lRWxlbWVudChTLndyYXBwZXJUZW1wbGF0ZSx7a2V5OlMua2V5KyItd3JhcCIsImRhdGEtb2Zmc2V0LWtleSI6Uy5vZmZzZXRLZXl9LEQpO0MucHVzaChUKX1lbHNlIEMucHVzaChTLmJsb2NrKSx4Kyt9cmV0dXJuIHUuY3JlYXRlRWxlbWVudCgiZGl2Iix7ImRhdGEtY29udGVudHMiOiJ0cnVlIn0sQyl9LHJ9KHUuQ29tcG9uZW50KTtlLmV4cG9ydHM9bH0sWXJuYjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldFNlbGVjdGlvbigpLG49dC5nZXRBbmNob3JLZXkoKSxyPWUuZ2V0QmxvY2tUcmVlKG4pLG89dC5nZXRTdGFydE9mZnNldCgpLGE9ITE7cmV0dXJuIHIuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIG89PT1lLmdldCgic3RhcnQiKT8oYT0hMCwhMCk6bzxlLmdldCgiZW5kIikmJmUuZ2V0KCJsZWF2ZXMiKS5zb21lKChmdW5jdGlvbihlKXt2YXIgdD1lLmdldCgic3RhcnQiKTtyZXR1cm4gbz09PXQmJihhPSEwLCEwKX0pKX0pKSxhfX0sWXVUaTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZS53ZWJwYWNrUG9seWZpbGx8fChlLmRlcHJlY2F0ZT1mdW5jdGlvbigpe30sZS5wYXRocz1bXSxlLmNoaWxkcmVufHwoZS5jaGlsZHJlbj1bXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImxvYWRlZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUubH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaWQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLml9fSksZS53ZWJwYWNrUG9seWZpbGw9MSksZX19LCJaNi9vIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIk44dTkiKTtlLmV4cG9ydHM9cn0sWkRMYTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuW10uc2xpY2UuY2FsbChlLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSwwKS5maWx0ZXIoaSl9O3ZhciByPS9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdC87ZnVuY3Rpb24gbyhlKXt2YXIgdD1lLm9mZnNldFdpZHRoPD0wJiZlLm9mZnNldEhlaWdodDw9MDtpZih0JiYhZS5pbm5lckhUTUwpcmV0dXJuITA7dmFyIG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSk7cmV0dXJuIHQ/InZpc2libGUiIT09bi5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpfHxlLnNjcm9sbFdpZHRoPD0wJiZlLnNjcm9sbEhlaWdodDw9MDoibm9uZSI9PW4uZ2V0UHJvcGVydHlWYWx1ZSgiZGlzcGxheSIpfWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKHIudGVzdChuKSYmIWUuZGlzYWJsZWR8fCJhIj09PW4mJmUuaHJlZnx8dCkmJmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lO3QmJnQhPT1kb2N1bWVudC5ib2R5Oyl7aWYobyh0KSlyZXR1cm4hMTt0PXQucGFyZW50Tm9kZX1yZXR1cm4hMH0oZSl9ZnVuY3Rpb24gaShlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTtudWxsPT09dCYmKHQ9dm9pZCAwKTt2YXIgbj1pc05hTih0KTtyZXR1cm4obnx8dD49MCkmJmEoZSwhbil9ZS5leHBvcnRzPXQuZGVmYXVsdH0sWkU0NDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9e2NvbnRhaW5lcjoiRGF5UGlja2VyIix3cmFwcGVyOiJEYXlQaWNrZXItd3JhcHBlciIsaW50ZXJhY3Rpb25EaXNhYmxlZDoiRGF5UGlja2VyLS1pbnRlcmFjdGlvbkRpc2FibGVkIixtb250aHM6IkRheVBpY2tlci1Nb250aHMiLG1vbnRoOiJEYXlQaWNrZXItTW9udGgiLG5hdkJhcjoiRGF5UGlja2VyLU5hdkJhciIsbmF2QnV0dG9uUHJldjoiRGF5UGlja2VyLU5hdkJ1dHRvbiBEYXlQaWNrZXItTmF2QnV0dG9uLS1wcmV2IixuYXZCdXR0b25OZXh0OiJEYXlQaWNrZXItTmF2QnV0dG9uIERheVBpY2tlci1OYXZCdXR0b24tLW5leHQiLG5hdkJ1dHRvbkludGVyYWN0aW9uRGlzYWJsZWQ6IkRheVBpY2tlci1OYXZCdXR0b24tLWludGVyYWN0aW9uRGlzYWJsZWQiLGNhcHRpb246IkRheVBpY2tlci1DYXB0aW9uIix3ZWVrZGF5czoiRGF5UGlja2VyLVdlZWtkYXlzIix3ZWVrZGF5c1JvdzoiRGF5UGlja2VyLVdlZWtkYXlzUm93Iix3ZWVrZGF5OiJEYXlQaWNrZXItV2Vla2RheSIsYm9keToiRGF5UGlja2VyLUJvZHkiLHdlZWs6IkRheVBpY2tlci1XZWVrIix3ZWVrTnVtYmVyOiJEYXlQaWNrZXItV2Vla051bWJlciIsZGF5OiJEYXlQaWNrZXItRGF5Iixmb290ZXI6IkRheVBpY2tlci1Gb290ZXIiLHRvZGF5QnV0dG9uOiJEYXlQaWNrZXItVG9kYXlCdXR0b24iLHRvZGF5OiJ0b2RheSIsc2VsZWN0ZWQ6InNlbGVjdGVkIixkaXNhYmxlZDoiZGlzYWJsZWQiLG91dHNpZGU6Im91dHNpZGUifX0sWlNnUDpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJiYW5uZXIiOnsib3JjaGFyZEdvIjp7ImFuY2hvclRleHQiOiJCYWl4ZSBhZ29yYSBvIE9yY2hhcmRHbyIsImRlc2NyaXB0aW9uIjoiQWNvbXBhbmhlIHN1YXMgYW7DoWxpc2VzIGRlIHF1YWxxdWVyIGx1Z2FyISJ9fSwiZXJyb3JzIjp7InBhZ2VOb3RGb3VuZCI6IkRlc2N1bHBlLCBtYXMgYSBww6FnaW5hIHF1ZSB2b2PDqiBzb2xpY2l0b3UgbsOjbyBleGlzdGUuIn0sImZvb3RlciI6eyJoZWxwIjoiYWp1ZGEgbmEgd29ya3N0YXRpb24iLCJwcml2YWN5UG9saWN5IjoicG9sw610aWNhIGRlIHByaXZhY2lkYWRlIiwidGVybXNBbmRDb25kaXRpb25zIjoidGVybW9zIGUgY29uZGnDp8O1ZXMiLCJ0cmFkZW1hcmsiOiJUaGUgT3JjaGFyZCDDqSB1bWEgbWFyY2EgcmVnaXN0cmFkYSBlIG8gbG9nb3RpcG8gZGEgT3JjaGFyZCDDqSB1bWEgbWFyY2EgZGEgT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLiBUb2RvcyBvcyBEaXJlaXRvcyBSZXNlcnZhZG9zLiJ9LCJnbG9iYWxTZWFyY2giOnsicGxhY2Vob2xkZXIiOiJCdXNjYXIgcG9yIHByb2pldG8sIHByb2R1dG8sIGFydGlzdGEuLi4ifSwiaGVhZGVyIjp7ImFjY291bnRpbmciOiJDb250YWJpbGlkYWRlIiwiYW5hbHl0aWNzIjoiQW5hbMOtdGljb3MiLCJjYXRhbG9nIjoiQ2F0w6Fsb2dvIiwiZHJvcGRvd24iOnsiYWRtaW4iOiJBZG1pbiIsImRlZmF1bHRzIjoiUGFkcsO1ZXMiLCJsb2dPdXQiOiJTYWlyIiwibG9nb3MiOiJMb2dvcyIsIm15QWNjb3VudCI6Ik1pbmhhIGNvbnRhIiwicHJvZmlsZSI6InBlcmZpbCJ9LCJoZWxwIjoiQWp1ZGEiLCJtYXJrZXRpbmciOiJNYXJrZXRpbmcifSwic3ViaGVhZGVyIjp7ImFuYWx5dGljcyI6eyJhdWRpZW5jZSI6IlDDumJsaWNvIiwiZW5nYWdlbWVudCI6IkVuZ2FqYW1lbnRvIiwiZmlsbVRyYW5zcGFyZW5jeSI6IlRyYW5zcGFyw6puY2lhIHNvYnJlIG9zIEZpbG1lcyIsImhlYXRtYXAiOiJNYXBhIGRlIGNhbG9yIiwib3ZlcnZpZXciOiJWaXPDo28gZ2VyYWwiLCJwaHlzaWNhbFJlcG9ydGluZyI6IlJlbGF0w7NyaW8gZsOtc2ljbyIsInRvcENoYXJ0cyI6Ik1haXMgdG9jYWRvcyJ9fX0nKX0sWlRJZDpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJhIjpbeyJtYXRjaCI6WyIvIiwiL2luZGV4MiJdLCJrZXkiOiJoZWFkZXIuaG9tZSIsIm1vZHVsZSI6ImZyb250ZW5kLWhvbWVwYWdlIn0seyJ1cmwiOiIvY2F0YWxvZyIsIm1hdGNoIjpbIi9jYXRhbG9nKiIsIi9wcm9qZWN0KiIsIi9pbmRleC92aWV3ZXhhcmVsZWFzZXMqIl0sImtleSI6ImhlYWRlci5jYXRhbG9nIiwicGVybWlzc2lvbiI6ImNhdGFsb2ciLCJwcml2aWxlZ2UiOiJpbmRleCIsIm1vZHVsZSI6ImZyb250ZW5kLWNhdGFsb2ciLCJpdGVtcyI6W3sibWF0Y2giOlsiL2NhdGFsb2ciLCIvaW5kZXgvdmlld2V4YXJlbGVhc2VzKiJdLCJtb2R1bGUiOiJmcm9udGVuZC1jYXRhbG9nIn0seyJtYXRjaCI6WyIvcHJvamVjdC8qIiwiL3Byb2plY3RzKiJdLCJtb2R1bGUiOiJmcm9udGVuZC1kaXN0cmlidXRpb24iLCJjbGFzc05hbWUiOiJjb250YWluZXItbWF4LTExNzAifV19LHsidXJsIjoiL2FuYWx5dGljcy9vdmVydmlldyIsImtleSI6ImhlYWRlci5hbmFseXRpY3MiLCJtYXRjaCI6Ii9hbmFseXRpY3MvKiIsInBlcm1pc3Npb24iOiJhbmFseXRpY3MiLCJjbGFzc05hbWUiOiJjb250YWluZXItbWF4LTExNzAiLCJ2YXJpYW50cyI6W3sidXJsIjoiL2FuYWx5dGljcy9lbmdhZ2VtZW50IiwibW9kdWxlIjoiZnJvbnRlbmQtc291cmNlLW9mLXN0cmVhbXMiLCJmZWF0dXJlQ29udHJvbCI6WyJTb3VyY2Ugb2YgU3RyZWFtIl0sInBhZ2VUaXRsZSI6IkVuZ2FnZW1lbnQifV0sIml0ZW1zIjpbeyJ1cmwiOiIvYW5hbHl0aWNzL2luZGV4Iiwia2V5Ijoic3ViaGVhZGVyLmFuYWx5dGljcy50b3BDaGFydHMifSx7InVybCI6Ii9hbmFseXRpY3Mvb3ZlcnZpZXciLCJrZXkiOiJzdWJoZWFkZXIuYW5hbHl0aWNzLm92ZXJ2aWV3In0seyJ1cmwiOiIvYW5hbHl0aWNzL2F1ZGllbmNlIiwia2V5Ijoic3ViaGVhZGVyLmFuYWx5dGljcy5hdWRpZW5jZSIsIm1vZHVsZSI6ImZyb250ZW5kLWF1ZGllbmNlLXBhZ2UiLCJwYWdlVGl0bGUiOiJBdWRpZW5jZSJ9LHsidXJsIjoiL2FuYWx5dGljcy9lbmdhZ2VtZW50Iiwia2V5Ijoic3ViaGVhZGVyLmFuYWx5dGljcy5lbmdhZ2VtZW50IiwiZmVhdHVyZUNvbnRyb2wiOlsiU291cmNlIG9mIFN0cmVhbSJdLCJtb2R1bGUiOiJmcm9udGVuZC1zb3VyY2Utb2Ytc3RyZWFtcyIsInBhZ2VUaXRsZSI6IkVuZ2FnZW1lbnQifSx7InVybCI6Ii9hbmFseXRpY3MvaGVhdG1hcCIsImtleSI6InN1YmhlYWRlci5hbmFseXRpY3MuaGVhdG1hcCIsInZhcmlhbnRzIjpbeyJ1cmwiOiIiLCJmZWF0dXJlRmxhZyI6ImRlcHJlY2F0ZV9oZWF0bWFwIn1dfSx7InVybCI6Ii9hbmFseXRpY3MvY29tcGFyaXNvbiIsImtleSI6InN1YmhlYWRlci5hbmFseXRpY3MuY29tcGFyaXNvbiIsIm1vZHVsZSI6ImZyb250ZW5kLWFuYWx5dGljcyIsImZlYXR1cmVGbGFnIjoiYW5hbHl0aWNzX2NvbXBhcmlzb24iLCJwYWdlVGl0bGUiOiJDb21wYXJpc29uIn0seyJ1cmwiOiIvYW5hbHl0aWNzL3JlcG9ydGluZy9waHlzaWNhbC9yZXBvcnQvcHJvZHVjdC12aWV3IiwibWF0Y2giOiIvYW5hbHl0aWNzL3JlcG9ydGluZy9waHlzaWNhbCoiLCJrZXkiOiJzdWJoZWFkZXIuYW5hbHl0aWNzLnBoeXNpY2FsUmVwb3J0aW5nIiwiZmVhdHVyZUNvbnRyb2wiOlsiV29ya3N0YXRpb24gUGh5c2ljYWwgUmVwb3J0aW5nIl0sIm1vZHVsZSI6ImZyb250ZW5kLXJlcG9ydGluZyIsInBhZ2VUaXRsZSI6IlBoeXNpY2FsIFJlcG9ydGluZyJ9LHsidXJsIjoiL2FuYWx5dGljcy9maWxtdHJhbnNwYXJlbmN5Iiwia2V5Ijoic3ViaGVhZGVyLmFuYWx5dGljcy5maWxtVHJhbnNwYXJlbmN5IiwiZmVhdHVyZUNvbnRyb2wiOlsiRmlsbSBUcmFuc3BhcmVuY3kiXX1dfSx7Im1hdGNoIjoiL2FjY291bnRpbmcvY29sbGFib3JhdG9ycyoiLCJtb2R1bGUiOiJmcm9udGVuZC1jb2xsYWJvcmF0b3IiLCJwZXJtaXNzaW9uIjoiYWNjb3VudGluZyIsImZlYXR1cmVDb250cm9sIjpbIkFjY291bnRpbmciXSwiZmVhdHVyZUZsYWciOiJjb2xsYWJvcmF0b3Jfc3BsaXRzIiwic3ViYWNjb3VudFJlc3RyaWN0aW9uIjp0cnVlLCJpdGVtcyI6W3sidXJsIjoiL2FjY291bnRpbmciLCJrZXkiOiJzdWJoZWFkZXIuYWNjb3VudGluZy52aWV3In0seyJ1cmwiOiIvYWNjb3VudGluZy9zdGF0ZW1lbnRzaGlzdG9yeSIsImtleSI6InN1YmhlYWRlci5hY2NvdW50aW5nLnN0YXRlbWVudHMifSx7InVybCI6Ii9hY2NvdW50aW5nL2NvbGxhYm9yYXRvcnMiLCJrZXkiOiJzdWJoZWFkZXIuYWNjb3VudGluZy5jb2xsYWJvcmF0b3JTcGxpdHMiLCJtYXRjaCI6Ii9hY2NvdW50aW5nL2NvbGxhYm9yYXRvcnMqIiwidmFyaWFudHMiOlt7Im1vZHVsZSI6ImZyb250ZW5kLWNvbGxhYm9yYXRvciIsImZlYXR1cmVGbGFnIjoiY29sbGFib3JhdG9yX3NwbGl0cyIsInN1YmFjY291bnRSZXN0cmljdGlvbiI6dHJ1ZX1dfV19LHsidXJsIjoiL2FjY291bnRpbmciLCJtYXRjaCI6Ii9hY2NvdW50aW5nLyoiLCJrZXkiOiJoZWFkZXIuYWNjb3VudGluZyIsInBlcm1pc3Npb24iOiJhY2NvdW50aW5nIiwiZmVhdHVyZUNvbnRyb2wiOlsiQWNjb3VudGluZyJdLCJpdGVtcyI6W3sidXJsIjoiL2FjY291bnRpbmciLCJrZXkiOiJzdWJoZWFkZXIuYWNjb3VudGluZy52aWV3In0seyJ1cmwiOiIvYWNjb3VudGluZy9zdGF0ZW1lbnRzaGlzdG9yeSIsImtleSI6InN1YmhlYWRlci5hY2NvdW50aW5nLnN0YXRlbWVudHMifSx7InVybCI6Ii9hY2NvdW50aW5nL3BoeXNpY2FscmVzZXJ2ZXMiLCJrZXkiOiJzdWJoZWFkZXIuYWNjb3VudGluZy5waHlzaWNhbFJlc2VydmVzIiwibW9kdWxlIjoiZnJvbnRlbmQtcmVwb3J0aW5nIn0seyJ1cmwiOiIvYWNjb3VudGluZy9jb2xsYWJvcmF0b3JzIiwia2V5Ijoic3ViaGVhZGVyLmFjY291bnRpbmcuY29sbGFib3JhdG9yU3BsaXRzIiwibWF0Y2giOiIvYWNjb3VudGluZy9jb2xsYWJvcmF0b3JzKiIsIm1vZHVsZSI6ImZyb250ZW5kLWNvbGxhYm9yYXRvciIsImZlYXR1cmVGbGFnIjoiY29sbGFib3JhdG9yX3NwbGl0cyIsInN1YmFjY291bnRSZXN0cmljdGlvbiI6dHJ1ZX1dfSx7InVybCI6Ii9tYXJrZXRpbmcyIiwia2V5IjoiaGVhZGVyLm1hcmtldGluZyIsIm1vZHVsZSI6ImZyb250ZW5kLWZlYXR1cmUtZm0iLCJwZXJtaXNzaW9uIjoibWFya2V0aW5nIiwiZmVhdHVyZUNvbnRyb2wiOlsiTWFya2V0cGxhY2UiXSwic3ViYWNjb3VudFJlc3RyaWN0aW9uIjp0cnVlfV19Jyl9LCJaZi92IjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZTtpZihuPT09ci5jb3VudCgpKXQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cj1yLnB1c2goZSl9KSk7ZWxzZSBpZigwPT09bil0LnJldmVyc2UoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyPXIudW5zaGlmdChlKX0pKTtlbHNle3ZhciBvPXIuc2xpY2UoMCxuKSxhPXIuc2xpY2Uobik7cj1vLmNvbmNhdCh0LGEpLnRvTGlzdCgpfXJldHVybiByfX0sWmdiNzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIklTZWUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0U2VsZWN0aW9uKCk7cmV0dXJuIDA9PT1uLnJhbmdlQ291bnQ/e3NlbGVjdGlvblN0YXRlOmUuZ2V0U2VsZWN0aW9uKCkuc2V0KCJoYXNGb2N1cyIsITEpLG5lZWRzUmVjb3Zlcnk6ITF9OnIoZSx0LG4uYW5jaG9yTm9kZSxuLmFuY2hvck9mZnNldCxuLmZvY3VzTm9kZSxuLmZvY3VzT2Zmc2V0KX19LFp5NTM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsodD1lLmV4cG9ydHM9bigib09zdiIpLmRlZmF1bHQpLmRlZmF1bHQ9dH0sYTFndTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiY0RmNSIpLG89bigiUEpZWiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PXIodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P28oZSk6dH19LGFCMDI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJHeU9mIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLm93bmVyRG9jdW1lbnQpJiYocihlKSYmIkJSIj09PWUubm9kZU5hbWUpfX0sYUU2VTpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89bigiMTd4OSIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9LGk9bigiNWY3biIpO3QuZGVmYXVsdD1hLmRlZmF1bHQub25lT2YoW2kuSE9SSVpPTlRBTF9PUklFTlRBVElPTixpLlZFUlRJQ0FMX09SSUVOVEFUSU9OLGkuVkVSVElDQUxfU0NST0xMQUJMRV0pfSxhR0pEOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSmJXWCIpLG89ZnVuY3Rpb24oKXt0cnl7cmV0dXJuISFPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHt9KX1jYXRjaChlKXtyZXR1cm4hMX19KCksYT0oIW8mJk9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVHZXR0ZXJfXyxvP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7ImdldCJpbiBuJiZlLl9fZGVmaW5lR2V0dGVyX18/ZS5fX2RlZmluZUdldHRlcl9fKHQsbi5nZXQpOighci5ob3AuY2FsbChlLHQpfHwidmFsdWUiaW4gbikmJihlW3RdPW4udmFsdWUpfSksaT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbihlLHQpe3ZhciBuLG87ZnVuY3Rpb24gaSgpe31mb3IobyBpbiBpLnByb3RvdHlwZT1lLG49bmV3IGksdClyLmhvcC5jYWxsKHQsbykmJmEobixvLHRbb10pO3JldHVybiBufTt0LmRlZmluZVByb3BlcnR5PWEsdC5vYmpDcmVhdGU9aX0sYUk3WDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIsbz1BcnJheS5wcm90b3R5cGUuc2xpY2UsYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHwiW29iamVjdCBGdW5jdGlvbl0iIT09YS5jYWxsKHQpKXRocm93IG5ldyBUeXBlRXJyb3Iocit0KTtmb3IodmFyIG4saT1vLmNhbGwoYXJndW1lbnRzLDEpLHU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2Ygbil7dmFyIHI9dC5hcHBseSh0aGlzLGkuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChyKT09PXI/cjp0aGlzfXJldHVybiB0LmFwcGx5KGUsaS5jb25jYXQoby5jYWxsKGFyZ3VtZW50cykpKX0scz1NYXRoLm1heCgwLHQubGVuZ3RoLWkubGVuZ3RoKSxsPVtdLGM9MDtjPHM7YysrKWwucHVzaCgiJCIrYyk7aWYobj1GdW5jdGlvbigiYmluZGVyIiwicmV0dXJuIGZ1bmN0aW9uICgiK2wuam9pbigiLCIpKyIpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfSIpKHUpLHQucHJvdG90eXBlKXt2YXIgZj1mdW5jdGlvbigpe307Zi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbi5wcm90b3R5cGU9bmV3IGYsZi5wcm90b3R5cGU9bnVsbH1yZXR1cm4gbn19LGFKNEE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJucjZPIik7dC5hPXIuYX0sYW5iQTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJiYW5uZXIiOnsib3JjaGFyZEdvIjp7ImFuY2hvclRleHQiOiLsp4DquIgg67CU66GcIE9yY2hhcmRHb+ulvCDri6TsmrTroZzrk5wg7ZWY7IS47JqUIiwiZGVzY3JpcHRpb24iOiLsnbTrj5kg7KSR7JeQ64+EIOu2hOyEnSDrgrTsmqnsnYQg7ZmV7J247ZWgIOyImCDsnojsirXri4jri6QhIn19LCJlcnJvcnMiOnsicGFnZU5vdEZvdW5kIjoi7KOE7Iah7ZWp64uI64ukLiDsmpTssq3tlZjsi6Ag7Y6Y7J207KeA6rCAIOyhtOyerO2VmOyngCDslYrsirXri4jri6QuIn0sImZvb3RlciI6eyJoZWxwIjoi7JuM7YGs7Iqk7YWM7J207IWYIOuPhOybgCIsInByaXZhY3lQb2xpY3kiOiLqsJzsnbjsoJXrs7Trs7TtmLjsoJXssYUiLCJ0ZXJtc0FuZENvbmRpdGlvbnMiOiLslb3qtIAiLCJ0cmFkZW1hcmsiOiLsmKTssKjrk5zripQg65Ox66Gd7IOB7ZGc7J2066mwIOyYpOywqOuTnOydmCDroZzqs6DripQgT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLiDrtojtl4jrs7XsoJwg7ISc67mE7IqkIOuniO2BrOyeheuLiOuLpC4ifSwiZ2xvYmFsU2VhcmNoIjp7InBsYWNlaG9sZGVyIjoi7ZSE66Gc7KCd7Yq4LCDtlITroZzrjZXtirgsIOyVhO2LsOyKpO2KuCDqsoDsg4ntlZjquLAuLi4ifSwiaGVhZGVyIjp7ImFjY291bnRpbmciOiLtmozqs4QiLCJhbmFseXRpY3MiOiLrtoTshJ0iLCJjYXRhbG9nIjoi7Lm07YOI66Gc6re4IiwiZHJvcGRvd24iOnsiYWRtaW4iOiJBZG1pbiIsImRlZmF1bHRzIjoi7LSI6riwIOyEpOyglSIsImxvZ091dCI6IuuhnOq3uOyVhOybgyIsImxvZ29zIjoi66Gc6rOgIiwibXlBY2NvdW50Ijoi64KY7J2YIOqzhOyglSIsInByb2ZpbGUiOiLtlITroZztlYQifSwiaGVscCI6IuuPhOybgCIsIm1hcmtldGluZyI6IuuniOy8gO2MhSJ9LCJzdWJoZWFkZXIiOnsiYW5hbHl0aWNzIjp7ImF1ZGllbmNlIjoi7LKt7KSRIiwiZW5nYWdlbWVudCI6IuywuOyXrCIsImZpbG1UcmFuc3BhcmVuY3kiOiLtlYTrpoQg7Yq4656c7Iqk7Yyo65+w7IucIiwiaGVhdG1hcCI6Iu2eiO2KuOuntSIsIm92ZXJ2aWV3Ijoi6rCc7JqUIiwicGh5c2ljYWxSZXBvcnRpbmciOiLtlLzsp4Dsu6wg66as7Y+s7YyFIiwidG9wQ2hhcnRzIjoiVG9wIOywqO2KuCJ9fX0nKX0sYjFEeTpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiZW4tbnoiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDtyZXR1cm4gZSsoMT09fn4oZSUxMDAvMTApPyJ0aCI6MT09PXQ/InN0IjoyPT09dD8ibmQiOjM9PT10PyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSxiQ0NYOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUscil7dmFyIG8sYT1uKCJTTFZYIik7bz0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwIT09ZT9lOnI7dmFyIGk9T2JqZWN0KGEuYSkobyk7dC5hPWl9KS5jYWxsKHRoaXMsbigieUxwaiIpLG4oIjNVRCsiKShlKSl9LGJOZGo6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ5NVArIikuc3Vic3RyO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPUFycmF5KGUubGVuZ3RoKS5maWxsKG51bGwpO3JldHVybiB0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgbz1yKGUsMCx0Lm9mZnNldCkubGVuZ3RoLGE9bytyKGUsdC5vZmZzZXQsdC5sZW5ndGgpLmxlbmd0aCxpPW87aTxhO2krKyluW2ldPXQua2V5fSkpLG59fSxiU3daOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRXkwRSIpLG89bigibUZ5ViIpLGE9ItaQ1r7XgNeD14bXiC3Xj9eQLdeq16st16/XsC3XstezLde017Ut17/fgC3fid+KLd+q37Qt37Xfut+7Ld+/4KCALeCgleCgmuCgpOCgqOCgri3goK/goLAt4KC+4KC/4KGALeChmOChnC3goZ3goZ7goZ8t4KKf4oCP76yd76yfLe+sqO+sqi3vrLbvrLfvrLgt76y876y976y+76y/762ALe+tge+tgu+tgy3vrYTvrYXvrYYt762PIixpPSLYiNiL2I3Ym9ic2J3Yni3Yn9igLdi/2YDZgS3Zitmt2a4t2a/ZsS3bk9uU25XbpS3bptuuLduv27ot27zbvS3bvtu/3IAt3I3cjtyP3JDcki3cr92LLd2M3Y0t3qXesd6yLd6/4KKgLeCisuCisy3go6PvrZAt766x766yLe+vge+vgi3vr5Lvr5Mt77S977WALe+1j++1kC3vto/vtpAt77aR77aSLe+3h++3iC3vt4/vt7At77e777e877e+Le+3v++5sC3vubTvubXvubYt77u877u9Le+7viIsdT1uZXcgUmVnRXhwKCJbIisiQS1aYS16wqrCtcK6w4Atw5bDmC3DtsO4Lca6xrvGvC3Gv8eALceDx4QtypPKlMqVLcqvyrAtyrjKuy3LgcuQLcuRy6Aty6TLrs2wLc2zzbYtzbfNus27Lc29zb/Ohs6ILc6KzozOji3Ooc6jLc+1z7ct0oHSgtKKLdSv1LEt1ZbVmdWaLdWf1aEt1ofWieCkg+CkhC3gpLngpLvgpL3gpL4t4KWA4KWJLeCljOClji3gpY/gpZDgpZgt4KWh4KWkLeClpeClpi3gpa/gpbDgpbHgpbIt4KaA4KaCLeCmg+CmhS3gpozgpo8t4KaQ4KaTLeCmqOCmqi3gprDgprLgprYt4Ka54Ka94Ka+LeCngOCnhy3gp4jgp4st4KeM4KeO4KeX4KecLeCnneCnny3gp6Hgp6Yt4Kev4KewLeCnseCntC3gp7ngp7rgqIPgqIUt4KiK4KiPLeCokOCoky3gqKjgqKot4Kiw4KiyLeCos+CotS3gqLbgqLgt4Ki54Ki+LeCpgOCpmS3gqZzgqZ7gqaYt4Kmv4KmyLeCptOCqg+CqhS3gqo3gqo8t4KqR4KqTLeCqqOCqqi3gqrDgqrIt4Kqz4Kq1LeCqueCqveCqvi3gq4Dgq4ngq4st4KuM4KuQ4KugLeCroeCrpi3gq6/gq7DgrIIt4KyD4KyFLeCsjOCsjy3grJDgrJMt4Kyo4KyqLeCssOCssi3grLPgrLUt4Ky54Ky94Ky+4K2A4K2HLeCtiOCtiy3grYzgrZfgrZwt4K2d4K2fLeCtoeCtpi3gra/grbDgrbHgrbIt4K234K6D4K6FLeCuiuCuji3grpDgrpIt4K6V4K6ZLeCumuCunOCuni3grp/grqMt4K6k4K6oLeCuquCuri3grrngrr4t4K6/4K+BLeCvguCvhi3gr4jgr4ot4K+M4K+Q4K+X4K+mLeCvr+CvsC3gr7LgsIEt4LCD4LCFLeCwjOCwji3gsJDgsJIt4LCo4LCqLeCwueCwveCxgS3gsYTgsZgt4LGZ4LGgLeCxoeCxpi3gsa/gsb/gsoIt4LKD4LKFLeCyjOCyji3gspDgspIt4LKo4LKqLeCys+CytS3gsrngsr3gsr7gsr/gs4At4LOE4LOG4LOHLeCziOCzii3gs4vgs5Ut4LOW4LOe4LOgLeCzoeCzpi3gs6/gs7Et4LOy4LSCLeC0g+C0hS3gtIzgtI4t4LSQ4LSSLeC0uuC0veC0vi3gtYDgtYYt4LWI4LWKLeC1jOC1juC1l+C1oC3gtaHgtaYt4LWv4LWwLeC1teC1ueC1ui3gtb/gtoIt4LaD4LaFLeC2luC2mi3gtrHgtrMt4La74La94LeALeC3huC3jy3gt5Hgt5gt4Lef4LemLeC3r+C3si3gt7Pgt7TguIEt4Liw4LiyLeC4s+C5gC3guYXguYbguY/guZAt4LmZ4LmaLeC5m+C6gS3guoLguoTguoct4LqI4LqK4LqN4LqULeC6l+C6mS3gup/guqEt4Lqj4Lql4Lqn4LqqLeC6q+C6rS3gurDgurIt4Lqz4Lq94LuALeC7hOC7huC7kC3gu5ngu5wt4Luf4LyA4LyBLeC8g+C8hC3gvJLgvJPgvJTgvJUt4LyX4LyaLeC8n+C8oC3gvKngvKot4Lyz4Ly04Ly24Ly44Ly+LeC8v+C9gC3gvYfgvYkt4L2s4L2/4L6F4L6ILeC+jOC+vi3gv4Xgv4ct4L+M4L+OLeC/j+C/kC3gv5Tgv5Ut4L+Y4L+ZLeC/muGAgC3hgKrhgKst4YCs4YCx4YC44YC7LeGAvOGAv+GBgC3hgYnhgYot4YGP4YGQLeGBleGBli3hgZfhgZot4YGd4YGh4YGiLeGBpOGBpS3hgabhgact4YGt4YGuLeGBsOGBtS3hgoHhgoMt4YKE4YKHLeGCjOGCjuGCj+GCkC3hgpnhgpot4YKc4YKeLeGCn+GCoC3hg4Xhg4fhg43hg5At4YO64YO74YO84YO9LeGJiOGJii3hiY3hiZAt4YmW4YmY4YmaLeGJneGJoC3hiojhioot4YqN4YqQLeGKsOGKsi3hirXhirgt4Yq+4YuA4YuCLeGLheGLiC3hi5bhi5gt4YyQ4YySLeGMleGMmC3hjZrhjaAt4Y2o4Y2pLeGNvOGOgC3hjo/hjqAt4Y+04ZCBLeGZrOGZrS3hma7hma8t4Zm/4ZqBLeGamuGaoC3hm6rhm6st4Zut4ZuuLeGbsOGbsS3hm7jhnIAt4ZyM4ZyOLeGckeGcoC3hnLHhnLUt4Zy24Z2ALeGdkeGdoC3hnazhna4t4Z2w4Z6ALeGes+GetuGevi3hn4Xhn4ct4Z+I4Z+ULeGfluGfl+GfmC3hn5rhn5zhn6At4Z+p4aCQLeGgmeGgoC3hoYLhoYPhoYQt4aG34aKALeGiqOGiquGisC3ho7XhpIAt4aSe4aSjLeGkpuGkqS3hpKvhpLAt4aSx4aSzLeGkuOGlhi3hpY/hpZAt4aWt4aWwLeGltOGmgC3hpqvhprAt4aeA4aeBLeGnh+GniC3hp4nhp5At4aeZ4aea4aiALeGoluGomS3hqJrhqJ4t4aif4aigLeGplOGpleGpl+GpoeGpoy3hqaThqa0t4amy4aqALeGqieGqkC3hqpnhqqAt4aqm4aqn4aqoLeGqreGshOGshS3hrLPhrLXhrLvhrL0t4a2B4a2DLeGthOGthS3hrYvhrZAt4a2Z4a2aLeGtoOGtoS3hrarhrbQt4a284a6C4a6DLeGuoOGuoeGupi3hrqfhrqrhrq4t4a6v4a6wLeGuueGuui3hr6Xhr6fhr6ot4a+s4a+u4a+yLeGvs+GvvC3hr7/hsIAt4bCj4bCkLeGwq+GwtC3hsLXhsLst4bC/4bGALeGxieGxjS3hsY/hsZAt4bGZ4bGaLeGxt+GxuC3hsb3hsb4t4bG/4bOALeGzh+Gzk+GzoeGzqS3hs6zhs64t4bOx4bOyLeGzs+GztS3hs7bhtIAt4bSr4bSsLeG1quG1qy3htbfhtbjhtbkt4baa4babLeG2v+G4gC3hvJXhvJgt4byd4bygLeG9heG9iC3hvY3hvZAt4b2X4b2Z4b2b4b2d4b2fLeG9veG+gC3hvrThvrYt4b684b6+4b+CLeG/hOG/hi3hv4zhv5At4b+T4b+WLeG/m+G/oC3hv6zhv7It4b+04b+2LeG/vOKAjuKBseKBv+KCkC3igpzihILihIfihIot4oST4oSV4oSZLeKEneKEpOKEpuKEqOKEqi3ihK3ihK8t4oS04oS1LeKEuOKEueKEvC3ihL/ihYUt4oWJ4oWO4oWP4oWgLeKGguKGgy3ihoTihoUt4oaI4oy2LeKNuuKOleKSnC3ik6nimqzioIAt4qO/4rCALeKwruKwsC3isZ7isaAt4rG74rG8LeKxveKxvi3is6Tis6st4rOu4rOyLeKzs+K0gC3itKXitKfitK3itLAt4rWn4rWv4rWw4raALeK2luK2oC3itqbitqgt4rau4rawLeK2tuK2uC3itr7it4At4reG4reILeK3juK3kC3it5bit5gt4ree44CF44CG44CH44ChLeOAqeOAri3jgK/jgLEt44C144C4LeOAuuOAu+OAvOOBgS3jgpbjgp0t44Ke44Kf44KhLeODuuODvC3jg77jg7/jhIUt44St44SxLeOGjuOGkC3jhpHjhpIt44aV44aWLeOGn+OGoC3jhrrjh7At44e/44iALeOInOOIoC3jiKnjiKot44mH44mILeOJj+OJoC3jibvjib/jioAt44qJ44qKLeOKsOOLgC3ji4vji5At44u+44yALeONtuONuy3jj53jj6At44++45CALeS2teS4gC3pv4zqgIAt6oCU6oCV6oCWLeqSjOqTkC3qk7fqk7gt6pO96pO+LeqTv+qUgC3qmIvqmIzqmJAt6pif6pigLeqYqeqYqi3qmKvqmYAt6pmt6pmu6pqALeqam+qanC3qmp3qmqAt6pul6pumLeqbr+qbsi3qm7fqnKIt6p2v6p2w6p2xLeqeh+qeiS3qnorqnost6p6O6p6QLeqereqesC3qnrHqn7fqn7gt6p+56p+66p+7Leqggeqggy3qoIXqoIct6qCK6qCMLeqgouqgoy3qoKTqoKfqoLAt6qC16qC2Leqgt+qhgC3qobPqooAt6qKB6qKCLeqis+qitC3qo4Pqo44t6qOP6qOQLeqjmeqjsi3qo7fqo7gt6qO66qO76qSALeqkieqkii3qpKXqpK4t6qSv6qSwLeqlhuqlki3qpZPqpZ/qpaAt6qW86qaD6qaELeqmsuqmtC3qprXqprot6qa76qa9LeqngOqngS3qp43qp4/qp5At6qeZ6qeeLeqnn+qnoC3qp6Tqp6bqp6ct6qev6qewLeqnueqnui3qp77qqIAt6qio6qivLeqosOqosy3qqLTqqYAt6qmC6qmELeqpi+qpjeqpkC3qqZnqqZwt6qmf6qmgLeqpr+qpsOqpsS3qqbbqqbct6qm56qm66qm76qm96qm+Leqqr+qqseqqtS3qqrbqqrkt6qq96quA6quC6qubLeqrnOqrneqrni3qq5/qq6At6quq6qur6quuLeqrr+qrsC3qq7Hqq7Lqq7Mt6qu06qu16qyBLeqshuqsiS3qrI7qrJEt6qyW6qygLeqspuqsqC3qrK7qrLAt6q2a6q2b6q2cLeqtn+qtpC3qraXqr4At6q+i6q+jLeqvpOqvpi3qr6fqr6kt6q+q6q+r6q+s6q+wLeqvueqwgC3tnqPtnrAt7Z+G7Z+LLe2fu+6AgC3vo7/vpIAt76mt76mwLe+rme+sgC3vrIbvrJMt76yX77yhLe+8uu+9gS3vvZrvvaYt772v772w772xLe++ne++ni3vvp/vvqAt776+77+CLe+/h++/ii3vv4/vv5It77+X77+aLe+/nCIrYStpKyJdIikscz1uZXcgUmVnRXhwKCJbIithK2krIl0iKTtmdW5jdGlvbiBsKGUpe3ZhciB0PXUuZXhlYyhlKTtyZXR1cm4gbnVsbD09dD9udWxsOnRbMF19ZnVuY3Rpb24gYyhlKXt2YXIgdD1sKGUpO3JldHVybiBudWxsPT10P3IuTkVVVFJBTDpzLmV4ZWModCk/ci5SVEw6ci5MVFJ9ZnVuY3Rpb24gZihlLHQpe2lmKHQ9dHx8ci5ORVVUUkFMLCFlLmxlbmd0aClyZXR1cm4gdDt2YXIgbj1jKGUpO3JldHVybiBuPT09ci5ORVVUUkFMP3Q6bn1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIHR8fCh0PXIuZ2V0R2xvYmFsRGlyKCkpLHIuaXNTdHJvbmcodCl8fG8oITEpLGYoZSx0KX12YXIgcD17Zmlyc3RTdHJvbmdDaGFyOmwsZmlyc3RTdHJvbmdDaGFyRGlyOmMscmVzb2x2ZUJsb2NrRGlyOmYsZ2V0RGlyZWN0aW9uOmQsaXNEaXJlY3Rpb25MVFI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChlLHQpPT09ci5MVFJ9LGlzRGlyZWN0aW9uUlRMOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQoZSx0KT09PXIuUlRMfX07ZS5leHBvcnRzPXB9LGJVM3Y6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49by5nZXQoZSx0KTtyZXR1cm4iYXV0byI9PT1ufHwic2Nyb2xsIj09PW59dmFyIG89e2dldDpuKCIzVDRkIiksZ2V0U2Nyb2xsUGFyZW50OmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2Zvcih2YXIgdD1lLm93bmVyRG9jdW1lbnQ7ZSYmZSE9PXQuYm9keTspe2lmKHIoZSwib3ZlcmZsb3ciKXx8cihlLCJvdmVyZmxvd1kiKXx8cihlLCJvdmVyZmxvd1giKSlyZXR1cm4gZTtlPWUucGFyZW50Tm9kZX1yZXR1cm4gdC5kZWZhdWx0Vmlld3x8dC5wYXJlbnRXaW5kb3d9fTtlLmV4cG9ydHM9b30sYnBpaDpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiaXQiLHttb250aHM6Imdlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9tZV9naV92ZV9zYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW09nZ2kgYWxsZV0gTFQiLG5leHREYXk6IltEb21hbmkgYWxsZV0gTFQiLG5leHRXZWVrOiJkZGRkIFthbGxlXSBMVCIsbGFzdERheToiW0llcmkgYWxsZV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQiO2RlZmF1bHQ6cmV0dXJuIltsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oZSl7cmV0dXJuKC9eWzAtOV0uKyQvLnRlc3QoZSk/InRyYSI6ImluIikrIiAiK2V9LHBhc3Q6IiVzIGZhIixzOiJhbGN1bmkgc2Vjb25kaSIsc3M6IiVkIHNlY29uZGkiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0aSIsaDoidW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5uaSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KG4oIndkL1IiKSl9LGJ1NUI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJsRkpuIiksbz1uKCJUYWplIiksYT1uKCJtRnlWIik7ZnVuY3Rpb24gaShlLHQsbil7dmFyIGk9dC5nZXRDaGFyYWN0ZXJMaXN0KCksdT1uPjA/aS5nZXQobi0xKTp2b2lkIDAscz1uPGkuY291bnQoKT9pLmdldChuKTp2b2lkIDAsbD11P3UuZ2V0RW50aXR5KCk6dm9pZCAwLGM9cz9zLmdldEVudGl0eSgpOnZvaWQgMDtpZihjJiZjPT09bCYmIk1VVEFCTEUiIT09ZS5fX2dldChjKS5nZXRNdXRhYmlsaXR5KCkpe2Zvcih2YXIgZixkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm4gbyhlLChmdW5jdGlvbihlLHQpe3JldHVybiBlLmdldEVudGl0eSgpPT09dC5nZXRFbnRpdHkoKX0pLChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRFbnRpdHkoKT09PXR9KSwoZnVuY3Rpb24oZSx0KXtlPD1uJiZ0Pj1uJiYocj17c3RhcnQ6ZSxlbmQ6dH0pfSkpLCJvYmplY3QiIT10eXBlb2YgciYmYSghMSkscn0oaSxjLG4pLHA9ZC5zdGFydCxoPWQuZW5kO3A8aDspZj1pLmdldChwKSxpPWkuc2V0KHAsci5hcHBseUVudGl0eShmLG51bGwpKSxwKys7cmV0dXJuIHQuc2V0KCJjaGFyYWN0ZXJMaXN0IixpKX1yZXR1cm4gdH1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldEJsb2NrTWFwKCkscj1lLmdldEVudGl0eU1hcCgpLG89e30sYT10LmdldFN0YXJ0S2V5KCksdT10LmdldFN0YXJ0T2Zmc2V0KCkscz1uLmdldChhKSxsPWkocixzLHUpO2whPT1zJiYob1thXT1sKTt2YXIgYz10LmdldEVuZEtleSgpLGY9dC5nZXRFbmRPZmZzZXQoKSxkPW4uZ2V0KGMpO2E9PT1jJiYoZD1sKTt2YXIgcD1pKHIsZCxmKTtyZXR1cm4gcCE9PWQmJihvW2NdPXApLE9iamVjdC5rZXlzKG8pLmxlbmd0aD9lLm1lcmdlKHtibG9ja01hcDpuLm1lcmdlKG8pLHNlbGVjdGlvbkFmdGVyOnR9KTplLnNldCgic2VsZWN0aW9uQWZ0ZXIiLHQpfX0sYnhLWDpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiaXQtY2giLHttb250aHM6Imdlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9tZV9naV92ZV9zYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW09nZ2kgYWxsZV0gTFQiLG5leHREYXk6IltEb21hbmkgYWxsZV0gTFQiLG5leHRXZWVrOiJkZGRkIFthbGxlXSBMVCIsbGFzdERheToiW0llcmkgYWxsZV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQiO2RlZmF1bHQ6cmV0dXJuIltsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oZSl7cmV0dXJuKC9eWzAtOV0uKyQvLnRlc3QoZSk/InRyYSI6ImluIikrIiAiK2V9LHBhc3Q6IiVzIGZhIixzOiJhbGN1bmkgc2Vjb25kaSIsc3M6IiVkIHNlY29uZGkiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0aSIsaDoidW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5uaSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KG4oIndkL1IiKSl9LGMyMDM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIveTBIIiksbz1uKCJmTVpnIiksYT1uKCJtRnlWIik7ZnVuY3Rpb24gaShlLHQsbixpLHUscyxsKXt2YXIgYz1uLmdldFN0YXJ0T2Zmc2V0KCksZj1uLmdldEVuZE9mZnNldCgpLGQ9ZS5fX2dldCh1KS5nZXRNdXRhYmlsaXR5KCkscD1sP2M6ZjtpZigiTVVUQUJMRSI9PT1kKXJldHVybiBuO3ZhciBoPW8odCx1KS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBwPD1lLmVuZCYmcD49ZS5zdGFydH0pKTsxIT1oLmxlbmd0aCYmYSghMSk7dmFyIHk9aFswXTtpZigiSU1NVVRBQkxFIj09PWQpcmV0dXJuIG4ubWVyZ2Uoe2FuY2hvck9mZnNldDp5LnN0YXJ0LGZvY3VzT2Zmc2V0OnkuZW5kLGlzQmFja3dhcmQ6ITF9KTtzfHwobD9mPXkuZW5kOmM9eS5zdGFydCk7dmFyIG09ci5nZXRSZW1vdmFsUmFuZ2UoYyxmLHQuZ2V0VGV4dCgpLnNsaWNlKHkuc3RhcnQseS5lbmQpLHkuc3RhcnQsaSk7cmV0dXJuIG4ubWVyZ2Uoe2FuY2hvck9mZnNldDptLnN0YXJ0LGZvY3VzT2Zmc2V0Om0uZW5kLGlzQmFja3dhcmQ6ITF9KX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT1yLmdldFN0YXJ0T2Zmc2V0KCksdT1yLmdldEVuZE9mZnNldCgpLHM9dC5nZXRFbnRpdHlBdChhKSxsPW4uZ2V0RW50aXR5QXQodS0xKTtpZighcyYmIWwpcmV0dXJuIHI7dmFyIGM9cjtpZihzJiZzPT09bCljPWkoZSx0LGMsbyxzLCEwLCEwKTtlbHNlIGlmKHMmJmwpe3ZhciBmPWkoZSx0LGMsbyxzLCExLCEwKSxkPWkoZSxuLGMsbyxsLCExLCExKTtjPWMubWVyZ2Uoe2FuY2hvck9mZnNldDpmLmdldEFuY2hvck9mZnNldCgpLGZvY3VzT2Zmc2V0OmQuZ2V0Rm9jdXNPZmZzZXQoKSxpc0JhY2t3YXJkOiExfSl9ZWxzZSBpZihzKXt2YXIgcD1pKGUsdCxjLG8scywhMSwhMCk7Yz1jLm1lcmdlKHthbmNob3JPZmZzZXQ6cC5nZXRTdGFydE9mZnNldCgpLGlzQmFja3dhcmQ6ITF9KX1lbHNlIGlmKGwpe3ZhciBoPWkoZSxuLGMsbyxsLCExLCExKTtjPWMubWVyZ2Uoe2ZvY3VzT2Zmc2V0OmguZ2V0RW5kT2Zmc2V0KCksaXNCYWNrd2FyZDohMX0pfXJldHVybiBjfX0sYzZhTjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigid2QvUiIpO2UuZXhwb3J0cz17aXNWYWxpZE1vbWVudDpmdW5jdGlvbihlKXtyZXR1cm4hKCJmdW5jdGlvbiI9PXR5cGVvZiByLmlzTW9tZW50JiYhci5pc01vbWVudChlKSkmJigiZnVuY3Rpb24iPT10eXBlb2YgZS5pc1ZhbGlkP2UuaXNWYWxpZCgpOiFpc05hTihlKSl9fX0sYzd6UDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxvPXUobigicTF0SSIpKSxhPXUobigiMTd4OSIpKSxpPXUobigiVFNZUSIpKTtmdW5jdGlvbiB1KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgcz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlKSk7cmV0dXJuIG4uaGFuZGxlTW91c2VEb3duPW4uaGFuZGxlTW91c2VEb3duLmJpbmQobiksbi5vblJlbW92ZT1uLm9uUmVtb3ZlLmJpbmQobiksbi5oYW5kbGVUb3VjaEVuZFJlbW92ZT1uLmhhbmRsZVRvdWNoRW5kUmVtb3ZlLmJpbmQobiksbi5oYW5kbGVUb3VjaE1vdmU9bi5oYW5kbGVUb3VjaE1vdmUuYmluZChuKSxuLmhhbmRsZVRvdWNoU3RhcnQ9bi5oYW5kbGVUb3VjaFN0YXJ0LmJpbmQobiksbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLHIodCxbe2tleToiaGFuZGxlTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihlKXtpZigibW91c2Vkb3duIiE9PWUudHlwZXx8MD09PWUuYnV0dG9uKXJldHVybiB0aGlzLnByb3BzLm9uQ2xpY2s/KGUuc3RvcFByb3BhZ2F0aW9uKCksdm9pZCB0aGlzLnByb3BzLm9uQ2xpY2sodGhpcy5wcm9wcy52YWx1ZSxlKSk6dm9pZCh0aGlzLnByb3BzLnZhbHVlLmhyZWYmJmUuc3RvcFByb3BhZ2F0aW9uKCkpfX0se2tleToib25SZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMucHJvcHMub25SZW1vdmUodGhpcy5wcm9wcy52YWx1ZSl9fSx7a2V5OiJoYW5kbGVUb3VjaEVuZFJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5kcmFnZ2luZ3x8dGhpcy5vblJlbW92ZShlKX19LHtrZXk6ImhhbmRsZVRvdWNoTW92ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5kcmFnZ2luZz0hMH19LHtrZXk6ImhhbmRsZVRvdWNoU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZHJhZ2dpbmc9ITF9fSx7a2V5OiJyZW5kZXJSZW1vdmVJY29uIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLnByb3BzLmRpc2FibGVkJiZ0aGlzLnByb3BzLm9uUmVtb3ZlKXJldHVybiBvLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiU2VsZWN0LXZhbHVlLWljb24iLCJhcmlhLWhpZGRlbiI6InRydWUiLG9uTW91c2VEb3duOnRoaXMub25SZW1vdmUsb25Ub3VjaEVuZDp0aGlzLmhhbmRsZVRvdWNoRW5kUmVtb3ZlLG9uVG91Y2hTdGFydDp0aGlzLmhhbmRsZVRvdWNoU3RhcnQsb25Ub3VjaE1vdmU6dGhpcy5oYW5kbGVUb3VjaE1vdmV9LCLDlyIpfX0se2tleToicmVuZGVyTGFiZWwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMub25DbGlja3x8dGhpcy5wcm9wcy52YWx1ZS5ocmVmP28uZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOiJTZWxlY3QtdmFsdWUtbGFiZWwiLGhyZWY6dGhpcy5wcm9wcy52YWx1ZS5ocmVmLHRhcmdldDp0aGlzLnByb3BzLnZhbHVlLnRhcmdldCxvbk1vdXNlRG93bjp0aGlzLmhhbmRsZU1vdXNlRG93bixvblRvdWNoRW5kOnRoaXMuaGFuZGxlTW91c2VEb3dufSx0aGlzLnByb3BzLmNoaWxkcmVuKTpvLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiU2VsZWN0LXZhbHVlLWxhYmVsIixyb2xlOiJvcHRpb24iLCJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsaWQ6dGhpcy5wcm9wcy5pZH0sdGhpcy5wcm9wcy5jaGlsZHJlbil9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6KDAsaS5kZWZhdWx0KSgiU2VsZWN0LXZhbHVlIix0aGlzLnByb3BzLnZhbHVlLmNsYXNzTmFtZSksc3R5bGU6dGhpcy5wcm9wcy52YWx1ZS5zdHlsZSx0aXRsZTp0aGlzLnByb3BzLnZhbHVlLnRpdGxlfSx0aGlzLnJlbmRlclJlbW92ZUljb24oKSx0aGlzLnJlbmRlckxhYmVsKCkpfX1dKSx0fShvLmRlZmF1bHQuQ29tcG9uZW50KTtzLnByb3BUeXBlcz17Y2hpbGRyZW46YS5kZWZhdWx0Lm5vZGUsZGlzYWJsZWQ6YS5kZWZhdWx0LmJvb2wsaWQ6YS5kZWZhdWx0LnN0cmluZyxvbkNsaWNrOmEuZGVmYXVsdC5mdW5jLG9uUmVtb3ZlOmEuZGVmYXVsdC5mdW5jLHZhbHVlOmEuZGVmYXVsdC5vYmplY3QuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PXN9LGNEZjU6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2UuZXhwb3J0cz1uPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZS5leHBvcnRzPW49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKHQpfWUuZXhwb3J0cz1ufSxjbVFqOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5zZXRNb2RlKCJkcmFnIiksdC5wcmV2ZW50RGVmYXVsdCgpfX0sY3BjMjpmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtpZihlKXJldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gci5wcm90b3R5cGUpZVt0XT1yLnByb3RvdHlwZVt0XTtyZXR1cm4gZX0oZSl9ZS5leHBvcnRzPXIsci5wcm90b3R5cGUub249ci5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSwodGhpcy5fY2FsbGJhY2tzWyIkIitlXT10aGlzLl9jYWxsYmFja3NbIiQiK2VdfHxbXSkucHVzaCh0KSx0aGlzfSxyLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3RoaXMub2ZmKGUsbiksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIG4uZm49dCx0aGlzLm9uKGUsbiksdGhpc30sci5wcm90b3R5cGUub2ZmPXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1yLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sMD09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXt9LHRoaXM7dmFyIG4scj10aGlzLl9jYWxsYmFja3NbIiQiK2VdO2lmKCFyKXJldHVybiB0aGlzO2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbIiQiK2VdLHRoaXM7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspaWYoKG49cltvXSk9PT10fHxuLmZuPT09dCl7ci5zcGxpY2UobywxKTticmVha31yZXR1cm4gMD09PXIubGVuZ3RoJiZkZWxldGUgdGhpcy5fY2FsbGJhY2tzWyIkIitlXSx0aGlzfSxyLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9O2Zvcih2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxuPXRoaXMuX2NhbGxiYWNrc1siJCIrZV0scj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTtpZihuKXtyPTA7Zm9yKHZhciBvPShuPW4uc2xpY2UoMCkpLmxlbmd0aDtyPG87KytyKW5bcl0uYXBwbHkodGhpcyx0KX1yZXR1cm4gdGhpc30sci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSx0aGlzLl9jYWxsYmFja3NbIiQiK2VdfHxbXX0sci5wcm90b3R5cGUuaGFzTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiEhdGhpcy5saXN0ZW5lcnMoZSkubGVuZ3RofX0sY3dGWTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93Ll9fRFJBRlRfR0tYKSYmISF3aW5kb3cuX19EUkFGVF9HS1hbZV19fSxjek1vOmZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZGVmaW5lTG9jYWxlKCJlbi1pbCIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDtyZXR1cm4gZSsoMT09fn4oZSUxMDAvMTApPyJ0aCI6MT09PXQ/InN0IjoyPT09dD8ibmQiOjM9PT10PyJyZCI6InRoIil9fSl9KG4oIndkL1IiKSl9LGQzTFg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIkNJckIiKTtlLmV4cG9ydHM9cn0sZFJRRDpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4hISgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3cpfX0sZFoyTzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2NvbnN0IHI9bigiK0ZNRiIpLG89ZnVuY3Rpb24oKXtsZXQgZT1udWxsO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdHx8ZT8oZXx8KGU9bmV3IHIoe3Rva2VuUmVxdWVzdFVybDp0LnJlZnJlc2hfdXJsLGFwaUJhc2VVcmw6dC5ncmFzc19iYXNlX3VybH0pKSx0JiZ0LnRva2VuJiZlLnNldFRva2VuKHQudG9rZW4pLGUpOmV9fSgpO2UuZXhwb3J0cz1vfSxkdmc3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT1uKCJxMXRJIiksaT1zKGEpLHU9cyhuKCIxN3g5IikpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBsPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCk7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gbi5oYW5kbGU9ZnVuY3Rpb24oZSl7aWYoInRvdWNoZW5kIj09PWUudHlwZSYmKG4uaXNUb3VjaD0hMCksImNsaWNrIiE9PWUudHlwZXx8IW4uaXNUb3VjaCl7dmFyIHQ9bi5wcm9wcy5vbkNsaWNrT3V0c2lkZSxyPW4uY29udGFpbmVyO3ImJiFyLmNvbnRhaW5zKGUudGFyZ2V0KSYmdChlKX19LG4uZ2V0Q29udGFpbmVyPW4uZ2V0Q29udGFpbmVyLmJpbmQobiksbi5pc1RvdWNoPSExLG59cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6ImdldENvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5jb250YWluZXI9ZX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jaGlsZHJlbixuPShlLm9uQ2xpY2tPdXRzaWRlLGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KGUsWyJjaGlsZHJlbiIsIm9uQ2xpY2tPdXRzaWRlIl0pKTtyZXR1cm4gaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIscih7fSxuLHtyZWY6dGhpcy5nZXRDb250YWluZXJ9KSx0KX19LHtrZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLmhhbmRsZSwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuaGFuZGxlLCEwKX19LHtrZXk6ImNvbXBvbmVudFdpbGxVbm1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLmhhbmRsZSwhMCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuaGFuZGxlLCEwKX19XSksdH0oYS5Db21wb25lbnQpO2wucHJvcFR5cGVzPXtvbkNsaWNrT3V0c2lkZTp1LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkfSx0LmRlZmF1bHQ9bH0sZHl4VzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtzdHJpbmdpZnk6ZnVuY3Rpb24oZSl7cmV0dXJuIl8iK1N0cmluZyhlKX0sdW5zdHJpbmdpZnk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSl9fTtlLmV4cG9ydHM9cn0sImUvT2siOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZnlPWSIpLG89bigiM3NPSiIpLGE9bigiYlUzdiIpLGk9bigiaHlBaiIpLHU9bigiR1hiayIpLHM9bigiTWJSSCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLGw9ZS5fbGF0ZXN0RWRpdG9yU3RhdGUsYz1sLmdldFNlbGVjdGlvbigpLGY9dC50YXJnZXQ7aWYoYy5pc0NvbGxhcHNlZCgpKXQucHJldmVudERlZmF1bHQoKTtlbHNle2lmKHMoZikpe3ZhciBkPWY7bj11KGEuZ2V0U2Nyb2xsUGFyZW50KGQpKX12YXIgcD1pKGwpO2Uuc2V0Q2xpcGJvYXJkKHApLGUuc2V0TW9kZSgiY3V0Iiksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLnJlc3RvcmVFZGl0b3JET00obiksZS5leGl0Q3VycmVudE1vZGUoKSxlLnVwZGF0ZShmdW5jdGlvbihlKXt2YXIgdD1yLnJlbW92ZVJhbmdlKGUuZ2V0Q3VycmVudENvbnRlbnQoKSxlLmdldFNlbGVjdGlvbigpLCJmb3J3YXJkIik7cmV0dXJuIG8ucHVzaChlLHQsInJlbW92ZS1yYW5nZSIpfShsKSl9KSwwKX19fSxlTWJoOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocil7aWYobltyXSlyZXR1cm4gbltyXS5leHBvcnRzO3ZhciBvPW5bcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHQpLG8ubD0hMCxvLmV4cG9ydHN9dmFyIG49e307cmV0dXJuIHQubT1lLHQuYz1uLHQuZD1mdW5jdGlvbihlLG4scil7dC5vKGUsbil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpyfSl9LHQubj1mdW5jdGlvbihlKXt2YXIgbj1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gdC5kKG4sImEiLG4pLG59LHQubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sdC5wPSIiLHQodC5zPTApfShbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7aWYoZSYmdCl7dmFyIG49QXJyYXkuaXNBcnJheSh0KT90OnQuc3BsaXQoIiwiKSxyPWUubmFtZXx8IiIsbz1lLnR5cGV8fCIiLGE9by5yZXBsYWNlKC9cLy4qJC8sIiIpO3JldHVybiBuLnNvbWUoKGZ1bmN0aW9uKGUpe3ZhciB0PWUudHJpbSgpO3JldHVybiIuIj09PXQuY2hhckF0KDApP3IudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCh0LnRvTG93ZXJDYXNlKCkpOnQuZW5kc1dpdGgoIi8qIik/YT09PXQucmVwbGFjZSgvXC8uKiQvLCIiKTpvPT09dH0pKX1yZXR1cm4hMH19XSl9LGVPOEg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLnIodCk7dmFyIHI9bigib0ZGSiIpLG89bigiMlc2eiIpLGE9bi5uKG8pLGk9bigicTF0SSIpLHU9bi5uKGkpLHM9bigiMTd4OSIpLGw9bi5uKHMpLGM9bigiTGhDdiIpLGY9bigiYUo0QSIpO2Z1bmN0aW9uIGQoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBwKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuLHI7ZCh0aGlzLHQpO2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGE9QXJyYXkobyksaT0wO2k8bztpKyspYVtpXT1hcmd1bWVudHNbaV07cmV0dXJuIG49cj1wKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChhKSkpLHIuaGlzdG9yeT1PYmplY3QoYy5iKShyLnByb3BzKSxwKHIsbil9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24oKXthKCkoIXRoaXMucHJvcHMuaGlzdG9yeSwiPEhhc2hSb3V0ZXI+IGlnbm9yZXMgdGhlIGhpc3RvcnkgcHJvcC4gVG8gdXNlIGEgY3VzdG9tIGhpc3RvcnksIHVzZSBgaW1wb3J0IHsgUm91dGVyIH1gIGluc3RlYWQgb2YgYGltcG9ydCB7IEhhc2hSb3V0ZXIgYXMgUm91dGVyIH1gLiIpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdS5hLmNyZWF0ZUVsZW1lbnQoZi5hLHtoaXN0b3J5OnRoaXMuaGlzdG9yeSxjaGlsZHJlbjp0aGlzLnByb3BzLmNoaWxkcmVufSl9LHR9KHUuYS5Db21wb25lbnQpO2gucHJvcFR5cGVzPXtiYXNlbmFtZTpsLmEuc3RyaW5nLGdldFVzZXJDb25maXJtYXRpb246bC5hLmZ1bmMsaGFzaFR5cGU6bC5hLm9uZU9mKFsiaGFzaGJhbmciLCJub3NsYXNoIiwic2xhc2giXSksY2hpbGRyZW46bC5hLm5vZGV9O3ZhciB5PWgsbT1uKCIyaUVtIiksdj1uKCI4V2EzIikuYSxnPW4oInVOT3QiKSxiPW4oIkxXWWEiKS5hLHc9bigibUx3MSIpLmEsXz1uKCIySU5OIiksRT1uKCJ5Y3pwIikuYSxPPW4oImpLZTciKSxrPW4oImwxUEYiKS5hLEM9bigiU3NLWCIpLmEseD1uKCJ3SXMxIik7bi5kKHQsIkJyb3dzZXJSb3V0ZXIiLChmdW5jdGlvbigpe3JldHVybiByLmF9KSksbi5kKHQsIkhhc2hSb3V0ZXIiLChmdW5jdGlvbigpe3JldHVybiB5fSkpLG4uZCh0LCJMaW5rIiwoZnVuY3Rpb24oKXtyZXR1cm4gbS5hfSkpLG4uZCh0LCJNZW1vcnlSb3V0ZXIiLChmdW5jdGlvbigpe3JldHVybiB2fSkpLG4uZCh0LCJOYXZMaW5rIiwoZnVuY3Rpb24oKXtyZXR1cm4gZy5hfSkpLG4uZCh0LCJQcm9tcHQiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZCh0LCJSZWRpcmVjdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KSksbi5kKHQsIlJvdXRlIiwoZnVuY3Rpb24oKXtyZXR1cm4gXy5hfSkpLG4uZCh0LCJSb3V0ZXIiLChmdW5jdGlvbigpe3JldHVybiBmLmF9KSksbi5kKHQsIlN0YXRpY1JvdXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIEV9KSksbi5kKHQsIlN3aXRjaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIE8uYX0pKSxuLmQodCwiZ2VuZXJhdGVQYXRoIiwoZnVuY3Rpb24oKXtyZXR1cm4ga30pKSxuLmQodCwibWF0Y2hQYXRoIiwoZnVuY3Rpb24oKXtyZXR1cm4gQ30pKSxuLmQodCwid2l0aFJvdXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHguYX0pKX0sImYrZXciOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigibUZ5ViIpLG89L1wuLyxhPS9cfFx8LyxpPS9ccytcLVxzKy8sdT0vXig8PXw8fD18Pj18fj58fnw+fCk/XHMqKC4rKS8scz0vXihcZCopKC4qKS87ZnVuY3Rpb24gbChlLHQpe3ZhciBuPWUuc3BsaXQoYSk7cmV0dXJuIG4ubGVuZ3RoPjE/bi5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gdy5jb250YWlucyhlLHQpfSkpOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zcGxpdChpKTtpZihuLmxlbmd0aD4wJiZuLmxlbmd0aDw9Mnx8cighMSksMT09PW4ubGVuZ3RoKXJldHVybiBjKG5bMF0sdCk7dmFyIG89blswXSxhPW5bMV07cmV0dXJuIHkobykmJnkoYSl8fHIoITEpLGMoIj49IitvLHQpJiZjKCI8PSIrYSx0KX0oZT1uWzBdLnRyaW0oKSx0KX1mdW5jdGlvbiBjKGUsdCl7aWYoIiI9PT0oZT1lLnRyaW0oKSkpcmV0dXJuITA7dmFyIG4scj10LnNwbGl0KG8pLGE9cChlKSxpPWEubW9kaWZpZXIsdT1hLnJhbmdlQ29tcG9uZW50cztzd2l0Y2goaSl7Y2FzZSI8IjpyZXR1cm4gZihyLHUpO2Nhc2UiPD0iOnJldHVybi0xPT09KG49YihyLHUpKXx8MD09PW47Y2FzZSI+PSI6cmV0dXJuIGQocix1KTtjYXNlIj4iOnJldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiAxPT09YihlLHQpfShyLHUpO2Nhc2UifiI6Y2FzZSJ+PiI6cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zbGljZSgpLHI9dC5zbGljZSgpO3IubGVuZ3RoPjEmJnIucG9wKCk7dmFyIG89ci5sZW5ndGgtMSxhPXBhcnNlSW50KHJbb10sMTApO2goYSkmJihyW29dPWErMSsiIik7cmV0dXJuIGQoZSxuKSYmZihlLHIpfShyLHUpO2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT1iKGUsdCl9KHIsdSl9fWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4tMT09PWIoZSx0KX1mdW5jdGlvbiBkKGUsdCl7dmFyIG49YihlLHQpO3JldHVybiAxPT09bnx8MD09PW59ZnVuY3Rpb24gcChlKXt2YXIgdD1lLnNwbGl0KG8pLG49dFswXS5tYXRjaCh1KTtyZXR1cm4gbnx8cighMSkse21vZGlmaWVyOm5bMV0scmFuZ2VDb21wb25lbnRzOltuWzJdXS5jb25jYXQodC5zbGljZSgxKSl9fWZ1bmN0aW9uIGgoZSl7cmV0dXJuIWlzTmFOKGUpJiZpc0Zpbml0ZShlKX1mdW5jdGlvbiB5KGUpe3JldHVybiFwKGUpLm1vZGlmaWVyfWZ1bmN0aW9uIG0oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGg7bjx0O24rKyllW25dPSIwIn1mdW5jdGlvbiB2KGUsdCl7dmFyIG49ZS5tYXRjaChzKVsxXSxyPXQubWF0Y2gocylbMV0sbz1wYXJzZUludChuLDEwKSxhPXBhcnNlSW50KHIsMTApO3JldHVybiBoKG8pJiZoKGEpJiZvIT09YT9nKG8sYSk6ZyhlLHQpfWZ1bmN0aW9uIGcoZSx0KXtyZXR1cm4gdHlwZW9mIGUhPXR5cGVvZiB0JiZyKCExKSxlPnQ/MTplPHQ/LTE6MH1mdW5jdGlvbiBiKGUsdCl7Zm9yKHZhciBuPWZ1bmN0aW9uKGUsdCl7bShlPWUuc2xpY2UoKSwodD10LnNsaWNlKCkpLmxlbmd0aCk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl0ubWF0Y2goL15beCpdJC9pKTtpZihyJiYodFtuXT1lW25dPSIwIiwiKiI9PT1yWzBdJiZuPT09dC5sZW5ndGgtMSkpZm9yKHZhciBvPW47bzxlLmxlbmd0aDtvKyspZVtvXT0iMCJ9cmV0dXJuIG0odCxlLmxlbmd0aCksW2UsdF19KGUsdCkscj1uWzBdLG89blsxXSxhPTA7YTxvLmxlbmd0aDthKyspe3ZhciBpPXYoclthXSxvW2FdKTtpZihpKXJldHVybiBpfXJldHVybiAwfXZhciB3PXtjb250YWluczpmdW5jdGlvbihlLHQpe3JldHVybiBsKGUudHJpbSgpLHQudHJpbSgpKX19O2UuZXhwb3J0cz13fSxmRXlXOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSkw3VCIpLG89bigiVlRCZyIpLGE9bigiSlBjdiIpLGk9KGEuTGlzdCxhLk1hcCksdT1mdW5jdGlvbihlLHQsbil7aWYoZSl7dmFyIHI9dC5nZXQoZSk7ciYmdC5zZXQoZSxuKHIpKX19LHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtpZighZSlyZXR1cm4gbjtmb3IodmFyIHI9dC5nZXQoZSk7ciYmci5nZXRQYXJlbnRLZXkoKTspe3ZhciBvPXIuZ2V0UGFyZW50S2V5KCk7byYmbi5wdXNoKG8pLHI9bz90LmdldChvKTpudWxsfXJldHVybiBufSxsPWZ1bmN0aW9uKGUsdCxuKXtpZighZSlyZXR1cm4gbnVsbDtmb3IodmFyIHI9bi5nZXQoZS5nZXRLZXkoKSkuZ2V0TmV4dFNpYmxpbmdLZXkoKTtyJiYhdC5nZXQocik7KXI9bi5nZXQocikuZ2V0TmV4dFNpYmxpbmdLZXkoKXx8bnVsbDtyZXR1cm4gcn0sYz1mdW5jdGlvbihlLHQsbil7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKHZhciByPW4uZ2V0KGUuZ2V0S2V5KCkpLmdldFByZXZTaWJsaW5nS2V5KCk7ciYmIXQuZ2V0KHIpOylyPW4uZ2V0KHIpLmdldFByZXZTaWJsaW5nS2V5KCl8fG51bGw7cmV0dXJuIHJ9LGY9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGUud2l0aE11dGF0aW9ucygoZnVuY3Rpb24oYSl7aWYodSh0LmdldEtleSgpLGEsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHtuZXh0U2libGluZzpsKGUsYSxyKSxwcmV2U2libGluZzpjKGUsYSxyKX0pfSkpLHUobi5nZXRLZXkoKSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7bmV4dFNpYmxpbmc6bChlLGEscikscHJldlNpYmxpbmc6YyhlLGEscil9KX0pKSxzKHQuZ2V0S2V5KCkscikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7Y2hpbGRyZW46ZS5nZXRDaGlsZEtleXMoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBhLmdldChlKX0pKSxuZXh0U2libGluZzpsKGUsYSxyKSxwcmV2U2libGluZzpjKGUsYSxyKX0pfSkpfSkpLHUodC5nZXROZXh0U2libGluZ0tleSgpLGEsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHtwcmV2U2libGluZzp0LmdldFByZXZTaWJsaW5nS2V5KCl9KX0pKSx1KHQuZ2V0UHJldlNpYmxpbmdLZXkoKSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7bmV4dFNpYmxpbmc6bChlLGEscil9KX0pKSx1KG4uZ2V0TmV4dFNpYmxpbmdLZXkoKSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7cHJldlNpYmxpbmc6YyhlLGEscil9KX0pKSx1KG4uZ2V0UHJldlNpYmxpbmdLZXkoKSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7bmV4dFNpYmxpbmc6bi5nZXROZXh0U2libGluZ0tleSgpfSl9KSkscyhuLmdldEtleSgpLHIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3UoZSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7Y2hpbGRyZW46ZS5nZXRDaGlsZEtleXMoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBhLmdldChlKX0pKSxuZXh0U2libGluZzpsKGUsYSxyKSxwcmV2U2libGluZzpjKGUsYSxyKX0pfSkpfSkpLGZ1bmN0aW9uKGUsdCl7dmFyIG49W107aWYoIWUpcmV0dXJuIG47Zm9yKHZhciByPW8oZSx0KTtyJiZ0LmdldChyKTspe3ZhciBhPXQuZ2V0KHIpO24ucHVzaChyKSxyPWEuZ2V0UGFyZW50S2V5KCk/byhhLHQpOm51bGx9cmV0dXJuIG59KG4scikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7bmV4dFNpYmxpbmc6bChlLGEscikscHJldlNpYmxpbmc6YyhlLGEscil9KX0pKX0pKSxudWxsPT1lLmdldCh0LmdldEtleSgpKSYmbnVsbCE9ZS5nZXQobi5nZXRLZXkoKSkmJm4uZ2V0UGFyZW50S2V5KCk9PT10LmdldEtleSgpJiZudWxsPT1uLmdldFByZXZTaWJsaW5nS2V5KCkpe3ZhciBpPXQuZ2V0UHJldlNpYmxpbmdLZXkoKTt1KG4uZ2V0S2V5KCksYSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVyZ2Uoe3ByZXZTaWJsaW5nOml9KX0pKSx1KGksYSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVyZ2Uoe25leHRTaWJsaW5nOm4uZ2V0S2V5KCl9KX0pKTt2YXIgZj1pP2UuZ2V0KGkpOm51bGwsZD1mP2YuZ2V0UGFyZW50S2V5KCk6bnVsbDtpZih0LmdldENoaWxkS2V5cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3UoZSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7cGFyZW50OmR9KX0pKX0pKSxudWxsIT1kKXt2YXIgcD1lLmdldChkKTt1KGQsYSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVyZ2Uoe2NoaWxkcmVuOnAuZ2V0Q2hpbGRLZXlzKCkuY29uY2F0KHQuZ2V0Q2hpbGRLZXlzKCkpfSl9KSl9dSh0LmdldENoaWxkS2V5cygpLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09ZS5nZXQodCkuZ2V0TmV4dFNpYmxpbmdLZXkoKX0pKSxhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7bmV4dFNpYmxpbmc6dC5nZXROZXh0U2libGluZ0tleSgpfSl9KSl9fSkpfSxkPWZ1bmN0aW9uKGUsdCxuKXtpZigwPT09dClmb3IoO3Q8bjspZT1lLnNoaWZ0KCksdCsrO2Vsc2UgaWYobj09PWUuY291bnQoKSlmb3IoO24+dDspZT1lLnBvcCgpLG4tLTtlbHNle3ZhciByPWUuc2xpY2UoMCx0KSxvPWUuc2xpY2Uobik7ZT1yLmNvbmNhdChvKS50b0xpc3QoKX1yZXR1cm4gZX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYodC5pc0NvbGxhcHNlZCgpKXJldHVybiBlO3ZhciBuLGE9ZS5nZXRCbG9ja01hcCgpLHU9dC5nZXRTdGFydEtleSgpLGw9dC5nZXRTdGFydE9mZnNldCgpLGM9dC5nZXRFbmRLZXkoKSxwPXQuZ2V0RW5kT2Zmc2V0KCksaD1hLmdldCh1KSx5PWEuZ2V0KGMpLG09aCBpbnN0YW5jZW9mIHIsdj1bXTtpZihtKXt2YXIgZz15LmdldENoaWxkS2V5cygpLGI9cyhjLGEpO3kuZ2V0TmV4dFNpYmxpbmdLZXkoKSYmKHY9di5jb25jYXQoYikpLGcuaXNFbXB0eSgpfHwodj12LmNvbmNhdChiLmNvbmNhdChbY10pKSksdj12LmNvbmNhdChzKG8oeSxhKSxhKSl9bj1oPT09eT9kKGguZ2V0Q2hhcmFjdGVyTGlzdCgpLGwscCk6aC5nZXRDaGFyYWN0ZXJMaXN0KCkuc2xpY2UoMCxsKS5jb25jYXQoeS5nZXRDaGFyYWN0ZXJMaXN0KCkuc2xpY2UocCkpO3ZhciB3PWgubWVyZ2Uoe3RleHQ6aC5nZXRUZXh0KCkuc2xpY2UoMCxsKSt5LmdldFRleHQoKS5zbGljZShwKSxjaGFyYWN0ZXJMaXN0Om59KSxfPW0mJjA9PT1sJiYwPT09cCYmeS5nZXRQYXJlbnRLZXkoKT09PXUmJm51bGw9PXkuZ2V0UHJldlNpYmxpbmdLZXkoKT9pKFtbdSxudWxsXV0pOmEudG9TZXEoKS5za2lwVW50aWwoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9PT11fSkpLnRha2VVbnRpbCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PWN9KSkuZmlsdGVyKChmdW5jdGlvbihlLHQpe3JldHVybi0xPT09di5pbmRleE9mKHQpfSkpLmNvbmNhdChpKFtbYyxudWxsXV0pKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9PT11P3c6bnVsbH0pKSxFPWEubWVyZ2UoXykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSk7cmV0dXJuIG0mJmghPT15JiYoRT1mKEUsaCx5LGEpKSxlLm1lcmdlKHtibG9ja01hcDpFLHNlbGVjdGlvbkJlZm9yZTp0LHNlbGVjdGlvbkFmdGVyOnQubWVyZ2Uoe2FuY2hvcktleTp1LGFuY2hvck9mZnNldDpsLGZvY3VzS2V5OnUsZm9jdXNPZmZzZXQ6bCxpc0JhY2t3YXJkOiExfSl9KX19LGZMMHI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIG4scj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sPyJzeW1ib2wiOnR5cGVvZiBlfSxvPShuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDMsZnVuY3Rpb24oZSx0LHIsbyl7dmFyIGE9ZSYmZS5kZWZhdWx0UHJvcHMsaT1hcmd1bWVudHMubGVuZ3RoLTM7aWYodHx8MD09PWl8fCh0PXt9KSx0JiZhKWZvcih2YXIgdSBpbiBhKXZvaWQgMD09PXRbdV0mJih0W3VdPWFbdV0pO2Vsc2UgdHx8KHQ9YXx8e30pO2lmKDE9PT1pKXQuY2hpbGRyZW49bztlbHNlIGlmKGk+MSl7Zm9yKHZhciBzPUFycmF5KGkpLGw9MDtsPGk7bCsrKXNbbF09YXJndW1lbnRzW2wrM107dC5jaGlsZHJlbj1zfXJldHVybnskJHR5cGVvZjpuLHR5cGU6ZSxrZXk6dm9pZCAwPT09cj9udWxsOiIiK3IscmVmOm51bGwscHJvcHM6dCxfb3duZXI6bnVsbH19KSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfSx1PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LHM9dm9pZCAwPT09dD9zZWxmOnQsbD1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSx1PWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT11Lm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5eyFyJiZ1LnJldHVybiYmdS5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSxjPU9iamVjdC5mcmVlemUoe2pzeDpvLGFzeW5jVG9HZW5lcmF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLG4pe3JldHVybiBmdW5jdGlvbiByKG8sYSl7dHJ5e3ZhciBpPXRbb10oYSksdT1pLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIG4oZSl9aWYoIWkuZG9uZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiByKCJuZXh0IixlKX0pLChmdW5jdGlvbihlKXtyZXR1cm4gcigidGhyb3ciLGUpfSkpO2UodSl9KCJuZXh0Iil9KSl9fSxjbGFzc0NhbGxDaGVjazpmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSxjcmVhdGVDbGFzczphLGRlZmluZUVudW1lcmFibGVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07ci5jb25maWd1cmFibGU9ci5lbnVtZXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixyKX1yZXR1cm4gZX0sZGVmYXVsdHM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkscj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pO2EmJmEuY29uZmlndXJhYmxlJiZ2b2lkIDA9PT1lW29dJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxvLGEpfXJldHVybiBlfSxkZWZpbmVQcm9wZXJ0eTppLGdldDpmdW5jdGlvbiBlKHQsbixyKXtudWxsPT09dCYmKHQ9RnVuY3Rpb24ucHJvdG90eXBlKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7aWYodm9pZCAwPT09byl7dmFyIGE9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBudWxsPT09YT92b2lkIDA6ZShhLG4scil9aWYoInZhbHVlImluIG8pcmV0dXJuIG8udmFsdWU7dmFyIGk9by5nZXQ7cmV0dXJuIHZvaWQgMCE9PWk/aS5jYWxsKHIpOnZvaWQgMH0saW5oZXJpdHM6ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSxpbnRlcm9wUmVxdWlyZURlZmF1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fSxpbnRlcm9wUmVxdWlyZVdpbGRjYXJkOmZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH0sbmV3QXJyb3dDaGVjazpmdW5jdGlvbihlLHQpe2lmKGUhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbnN0YW50aWF0ZSBhbiBhcnJvdyBmdW5jdGlvbiIpfSxvYmplY3REZXN0cnVjdHVyaW5nRW1wdHk6ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgZGVzdHJ1Y3R1cmUgdW5kZWZpbmVkIil9LG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59LHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm46ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0sc2VsZkdsb2JhbDpzLHNldDpmdW5jdGlvbiBlKHQsbixyLG8pe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtpZih2b2lkIDA9PT1hKXt2YXIgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7bnVsbCE9PWkmJmUoaSxuLHIsbyl9ZWxzZSBpZigidmFsdWUiaW4gYSYmYS53cml0YWJsZSlhLnZhbHVlPXI7ZWxzZXt2YXIgdT1hLnNldDt2b2lkIDAhPT11JiZ1LmNhbGwobyxyKX1yZXR1cm4gcn0sc2xpY2VkVG9BcnJheTpsLHNsaWNlZFRvQXJyYXlMb29zZTpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSl7Zm9yKHZhciBuLHI9W10sbz1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKG49by5uZXh0KCkpLmRvbmUmJihyLnB1c2gobi52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7KTtyZXR1cm4gcn10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9LHRhZ2dlZFRlbXBsYXRlTGl0ZXJhbDpmdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSl9LHRhZ2dlZFRlbXBsYXRlTGl0ZXJhbExvb3NlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmF3PXQsZX0sdGVtcG9yYWxSZWY6ZnVuY3Rpb24oZSx0LG4pe2lmKGU9PT1uKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcih0KyIgaXMgbm90IGRlZmluZWQgLSB0ZW1wb3JhbCBkZWFkIHpvbmUiKTtyZXR1cm4gZX0sdGVtcG9yYWxVbmRlZmluZWQ6e30sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOkFycmF5LmZyb20oZSl9LHRvQ29uc3VtYWJsZUFycmF5OmZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49QXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn1yZXR1cm4gQXJyYXkuZnJvbShlKX0sdHlwZW9mOnIsZXh0ZW5kczp1LGluc3RhbmNlb2Y6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9dCYmInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLmhhc0luc3RhbmNlXT90W1N5bWJvbC5oYXNJbnN0YW5jZV0oZSk6ZSBpbnN0YW5jZW9mIHR9fSksZj1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7fTt0cnl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksMT09PWUuYSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBPYmplY3R9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGQ9IWYmJiFPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18scD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGg9Zj9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZSx0LG4peyJnZXQiaW4gbiYmZS5fX2RlZmluZUdldHRlcl9fP2UuX19kZWZpbmVHZXR0ZXJfXyh0LG4uZ2V0KTooIXAuY2FsbChlLHQpfHwidmFsdWUiaW4gbikmJihlW3RdPW4udmFsdWUpfSx5PUFycmF5LnByb3RvdHlwZS5pbmRleE9mfHxmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKCF0Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIG49YXJndW1lbnRzWzFdfHwwLHI9dC5sZW5ndGg7bjxyO24rKylpZih0W25dPT09ZSlyZXR1cm4gbjtyZXR1cm4tMX0sbT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbihlLHQpe3ZhciBuO2Z1bmN0aW9uIHIoKXt9Zm9yKHZhciBvIGluIHIucHJvdG90eXBlPWUsbj1uZXcgcix0KXAuY2FsbCh0LG8pJiZoKG4sbyx0W29dKTtyZXR1cm4gbn0sdj1BcnJheS5wcm90b3R5cGUuc2xpY2UsZz1BcnJheS5wcm90b3R5cGUuY29uY2F0LGI9QXJyYXkucHJvdG90eXBlLnB1c2gsdz1BcnJheS5wcm90b3R5cGUuam9pbixfPUFycmF5LnByb3RvdHlwZS5zaGlmdCxFPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHxmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49di5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gdC5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGcuY2FsbChuLHYuY2FsbChhcmd1bWVudHMpKSl9fSxPPW0obnVsbCksaz1NYXRoLnJhbmRvbSgpO2Z1bmN0aW9uIEMoZSl7Zm9yKHZhciB0IGluIGUpKGUgaW5zdGFuY2VvZiBDfHxwLmNhbGwoZSx0KSkmJmgodGhpcyx0LHt2YWx1ZTplW3RdLGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24geCgpe2godGhpcywibGVuZ3RoIix7d3JpdGFibGU6ITAsdmFsdWU6MH0pLGFyZ3VtZW50cy5sZW5ndGgmJmIuYXBwbHkodGhpcyx2LmNhbGwoYXJndW1lbnRzKSl9ZnVuY3Rpb24gUygpe2lmKE8uZGlzYWJsZVJlZ0V4cFJlc3RvcmUpcmV0dXJuIGZ1bmN0aW9uKCl7fTtmb3IodmFyIGU9e2xhc3RNYXRjaDpSZWdFeHAubGFzdE1hdGNofHwiIixsZWZ0Q29udGV4dDpSZWdFeHAubGVmdENvbnRleHQsbXVsdGlsaW5lOlJlZ0V4cC5tdWx0aWxpbmUsaW5wdXQ6UmVnRXhwLmlucHV0fSx0PSExLG49MTtuPD05O24rKyl0PShlWyIkIituXT1SZWdFeHBbIiQiK25dKXx8dDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj0vWy4/KiteJFtcXVxcKCl7fXwtXS9nLHI9ZS5sYXN0TWF0Y2gucmVwbGFjZShuLCJcXCQmIiksbz1uZXcgeDtpZih0KWZvcih2YXIgYT0xO2E8PTk7YSsrKXt2YXIgaT1lWyIkIithXTtpPyhpPWkucmVwbGFjZShuLCJcXCQmIikscj1yLnJlcGxhY2UoaSwiKCIraSsiKSIpKTpyPSIoKSIrcixiLmNhbGwobyxyLnNsaWNlKDAsci5pbmRleE9mKCIoIikrMSkpLHI9ci5zbGljZShyLmluZGV4T2YoIigiKSsxKX12YXIgdT13LmNhbGwobywiIikrcjt1PXUucmVwbGFjZSgvKFxcXCh8XFxcKXxbXigpXSkrL2csKGZ1bmN0aW9uKGUpe3JldHVybiJbXFxzXFxTXXsiK2UucmVwbGFjZSgiXFwiLCIiKS5sZW5ndGgrIn0ifSkpO3ZhciBzPW5ldyBSZWdFeHAodSxlLm11bHRpbGluZT8iZ20iOiJnIik7cy5sYXN0SW5kZXg9ZS5sZWZ0Q29udGV4dC5sZW5ndGgscy5leGVjKGUuaW5wdXQpfX1mdW5jdGlvbiBEKGUpe2lmKG51bGw9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IG51bGwgb3IgdW5kZWZpbmVkIHRvIG9iamVjdCIpO3JldHVybiJvYmplY3QiPT09KHZvaWQgMD09PWU/InVuZGVmaW5lZCI6Yy50eXBlb2YoZSkpP2U6T2JqZWN0KGUpfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP2U6TnVtYmVyKGUpfWZ1bmN0aW9uIE0oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9VChlKTtyZXR1cm4gaXNOYU4odCk/MDowPT09dHx8LTA9PT10fHx0PT09MS8wfHx0PT09LTEvMD90OnQ8MD8tMSpNYXRoLmZsb29yKE1hdGguYWJzKHQpKTpNYXRoLmZsb29yKE1hdGguYWJzKHQpKX0oZSk7cmV0dXJuIHQ8PTA/MDp0PT09MS8wP01hdGgucG93KDIsNTMpLTE6TWF0aC5taW4odCxNYXRoLnBvdygyLDUzKS0xKX1mdW5jdGlvbiBQKGUpe3JldHVybiBwLmNhbGwoZSwiX19nZXRJbnRlcm5hbFByb3BlcnRpZXMiKT9lLl9fZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGspOm0obnVsbCl9Qy5wcm90b3R5cGU9bShudWxsKSx4LnByb3RvdHlwZT1tKG51bGwpO3ZhciBOPSIoPzpbYS16MC05XXs1LDh9fFxcZFthLXowLTldezN9KSIsaj0iWzAtOWEtd3ktel0oPzotW2EtejAtOV17Miw4fSkrIixMPVJlZ0V4cCgiXig/Oig/OlthLXpdezIsM30oPzotW2Etel17M30oPzotW2Etel17M30pezAsMn0pP3xbYS16XXs0fXxbYS16XXs1LDh9KSg/Oi1bYS16XXs0fSk/KD86LSg/OlthLXpdezJ9fFxcZHszfSkpPyg/Oi0oPzpbYS16MC05XXs1LDh9fFxcZFthLXowLTldezN9KSkqKD86LVswLTlhLXd5LXpdKD86LVthLXowLTldezIsOH0pKykqKD86LXgoPzotW2EtejAtOV17MSw4fSkrKT98eCg/Oi1bYS16MC05XXsxLDh9KSt8KD86KD86ZW4tR0Itb2VkfGktKD86YW1pfGJubnxkZWZhdWx0fGVub2NoaWFufGhha3xrbGluZ29ufGx1eHxtaW5nb3xuYXZham98cHdufHRhb3x0YXl8dHN1KXxzZ24tKD86QkUtRlJ8QkUtTkx8Q0gtREUpKXwoPzphcnQtbG9qYmFufGNlbC1nYXVsaXNofG5vLWJva3xuby1ueW58emgtKD86Z3VveXV8aGFra2F8bWlufG1pbi1uYW58eGlhbmcpKSkpJCIsImkiKSxSPVJlZ0V4cCgiXig/IXgpLio/LSgiK04rIiktKD86XFx3ezQsOH0tKD8heC0pKSpcXDFcXGIiLCJpIiksST1SZWdFeHAoIl4oPyF4KS4qPy0oWzAtOWEtd3ktel0pLSg/OlxcdystKD8heC0pKSpcXDFcXGIiLCJpIiksQT1SZWdFeHAoIi0iK2osImlnIiksRj12b2lkIDA7dmFyIEI9e3RhZ3M6eyJhcnQtbG9qYmFuIjoiamJvIiwiaS1hbWkiOiJhbWkiLCJpLWJubiI6ImJubiIsImktaGFrIjoiaGFrIiwiaS1rbGluZ29uIjoidGxoIiwiaS1sdXgiOiJsYiIsImktbmF2YWpvIjoibnYiLCJpLXB3biI6InB3biIsImktdGFvIjoidGFvIiwiaS10YXkiOiJ0YXkiLCJpLXRzdSI6InRzdSIsIm5vLWJvayI6Im5iIiwibm8tbnluIjoibm4iLCJzZ24tQkUtRlIiOiJzZmIiLCJzZ24tQkUtTkwiOiJ2Z3QiLCJzZ24tQ0gtREUiOiJzZ2ciLCJ6aC1ndW95dSI6ImNtbiIsInpoLWhha2thIjoiaGFrIiwiemgtbWluLW5hbiI6Im5hbiIsInpoLXhpYW5nIjoiaHNuIiwic2duLUJSIjoiYnpzIiwic2duLUNPIjoiY3NuIiwic2duLURFIjoiZ3NnIiwic2duLURLIjoiZHNsIiwic2duLUVTIjoic3NwIiwic2duLUZSIjoiZnNsIiwic2duLUdCIjoiYmZpIiwic2duLUdSIjoiZ3NzIiwic2duLUlFIjoiaXNnIiwic2duLUlUIjoiaXNlIiwic2duLUpQIjoianNsIiwic2duLU1YIjoibWZzIiwic2duLU5JIjoibmNzIiwic2duLU5MIjoiZHNlIiwic2duLU5PIjoibnNsIiwic2duLVBUIjoicHNyIiwic2duLVNFIjoic3dsIiwic2duLVVTIjoiYXNlIiwic2duLVpBIjoic2ZzIiwiemgtY21uIjoiY21uIiwiemgtY21uLUhhbnMiOiJjbW4tSGFucyIsInpoLWNtbi1IYW50IjoiY21uLUhhbnQiLCJ6aC1nYW4iOiJnYW4iLCJ6aC13dXUiOiJ3dXUiLCJ6aC15dWUiOiJ5dWUifSxzdWJ0YWdzOntCVToiTU0iLEREOiJERSIsRlg6IkZSIixUUDoiVEwiLFlEOiJZRSIsWlI6IkNEIixoZXBsb2M6ImFsYWxjOTciLGluOiJpZCIsaXc6ImhlIixqaToieWkiLGp3OiJqdiIsbW86InJvIixheXg6Im51biIsYmpkOiJkcmwiLGNjcToicmtpIixjanI6Im1vbSIsY2thOiJjbXIiLGNtazoieGNoIixkcmg6ImtoayIsZHJ3OiJwcnMiLGdhdjoiZGV2IixocnI6ImphbCIsaWJpOiJvcGEiLGtnaDoia21sIixsY3E6InBwciIsbXN0OiJtcnkiLG15dDoibXJ5IixzY2E6ImhsZSIsdGllOiJyYXMiLHRrazoidHdtIix0bHc6IndlbyIsdG5mOiJwcnMiLHliZDoicmtpIix5bWE6ImxyciJ9LGV4dExhbmc6e2FhbzpbImFhbyIsImFyIl0sYWJoOlsiYWJoIiwiYXIiXSxhYnY6WyJhYnYiLCJhciJdLGFjbTpbImFjbSIsImFyIl0sYWNxOlsiYWNxIiwiYXIiXSxhY3c6WyJhY3ciLCJhciJdLGFjeDpbImFjeCIsImFyIl0sYWN5OlsiYWN5IiwiYXIiXSxhZGY6WyJhZGYiLCJhciJdLGFkczpbImFkcyIsInNnbiJdLGFlYjpbImFlYiIsImFyIl0sYWVjOlsiYWVjIiwiYXIiXSxhZWQ6WyJhZWQiLCJzZ24iXSxhZW46WyJhZW4iLCJzZ24iXSxhZmI6WyJhZmIiLCJhciJdLGFmZzpbImFmZyIsInNnbiJdLGFqcDpbImFqcCIsImFyIl0sYXBjOlsiYXBjIiwiYXIiXSxhcGQ6WyJhcGQiLCJhciJdLGFyYjpbImFyYiIsImFyIl0sYXJxOlsiYXJxIiwiYXIiXSxhcnM6WyJhcnMiLCJhciJdLGFyeTpbImFyeSIsImFyIl0sYXJ6OlsiYXJ6IiwiYXIiXSxhc2U6WyJhc2UiLCJzZ24iXSxhc2Y6WyJhc2YiLCJzZ24iXSxhc3A6WyJhc3AiLCJzZ24iXSxhc3E6WyJhc3EiLCJzZ24iXSxhc3c6WyJhc3ciLCJzZ24iXSxhdXo6WyJhdXoiLCJhciJdLGF2bDpbImF2bCIsImFyIl0sYXloOlsiYXloIiwiYXIiXSxheWw6WyJheWwiLCJhciJdLGF5bjpbImF5biIsImFyIl0sYXlwOlsiYXlwIiwiYXIiXSxiYno6WyJiYnoiLCJhciJdLGJmaTpbImJmaSIsInNnbiJdLGJmazpbImJmayIsInNnbiJdLGJqbjpbImJqbiIsIm1zIl0sYm9nOlsiYm9nIiwic2duIl0sYnFuOlsiYnFuIiwic2duIl0sYnF5OlsiYnF5Iiwic2duIl0sYnRqOlsiYnRqIiwibXMiXSxidmU6WyJidmUiLCJtcyJdLGJ2bDpbImJ2bCIsInNnbiJdLGJ2dTpbImJ2dSIsIm1zIl0sYnpzOlsiYnpzIiwic2duIl0sY2RvOlsiY2RvIiwiemgiXSxjZHM6WyJjZHMiLCJzZ24iXSxjank6WyJjankiLCJ6aCJdLGNtbjpbImNtbiIsInpoIl0sY29hOlsiY29hIiwibXMiXSxjcHg6WyJjcHgiLCJ6aCJdLGNzYzpbImNzYyIsInNnbiJdLGNzZDpbImNzZCIsInNnbiJdLGNzZTpbImNzZSIsInNnbiJdLGNzZjpbImNzZiIsInNnbiJdLGNzZzpbImNzZyIsInNnbiJdLGNzbDpbImNzbCIsInNnbiJdLGNzbjpbImNzbiIsInNnbiJdLGNzcTpbImNzcSIsInNnbiJdLGNzcjpbImNzciIsInNnbiJdLGN6aDpbImN6aCIsInpoIl0sY3pvOlsiY3pvIiwiemgiXSxkb3E6WyJkb3EiLCJzZ24iXSxkc2U6WyJkc2UiLCJzZ24iXSxkc2w6WyJkc2wiLCJzZ24iXSxkdXA6WyJkdXAiLCJtcyJdLGVjczpbImVjcyIsInNnbiJdLGVzbDpbImVzbCIsInNnbiJdLGVzbjpbImVzbiIsInNnbiJdLGVzbzpbImVzbyIsInNnbiJdLGV0aDpbImV0aCIsInNnbiJdLGZjczpbImZjcyIsInNnbiJdLGZzZTpbImZzZSIsInNnbiJdLGZzbDpbImZzbCIsInNnbiJdLGZzczpbImZzcyIsInNnbiJdLGdhbjpbImdhbiIsInpoIl0sZ2RzOlsiZ2RzIiwic2duIl0sZ29tOlsiZ29tIiwia29rIl0sZ3NlOlsiZ3NlIiwic2duIl0sZ3NnOlsiZ3NnIiwic2duIl0sZ3NtOlsiZ3NtIiwic2duIl0sZ3NzOlsiZ3NzIiwic2duIl0sZ3VzOlsiZ3VzIiwic2duIl0saGFiOlsiaGFiIiwic2duIl0saGFmOlsiaGFmIiwic2duIl0saGFrOlsiaGFrIiwiemgiXSxoZHM6WyJoZHMiLCJzZ24iXSxoamk6WyJoamkiLCJtcyJdLGhrczpbImhrcyIsInNnbiJdLGhvczpbImhvcyIsInNnbiJdLGhwczpbImhwcyIsInNnbiJdLGhzaDpbImhzaCIsInNnbiJdLGhzbDpbImhzbCIsInNnbiJdLGhzbjpbImhzbiIsInpoIl0saWNsOlsiaWNsIiwic2duIl0saWxzOlsiaWxzIiwic2duIl0saW5sOlsiaW5sIiwic2duIl0saW5zOlsiaW5zIiwic2duIl0saXNlOlsiaXNlIiwic2duIl0saXNnOlsiaXNnIiwic2duIl0saXNyOlsiaXNyIiwic2duIl0samFrOlsiamFrIiwibXMiXSxqYXg6WyJqYXgiLCJtcyJdLGpjczpbImpjcyIsInNnbiJdLGpoczpbImpocyIsInNnbiJdLGpsczpbImpscyIsInNnbiJdLGpvczpbImpvcyIsInNnbiJdLGpzbDpbImpzbCIsInNnbiJdLGp1czpbImp1cyIsInNnbiJdLGtnaTpbImtnaSIsInNnbiJdLGtubjpbImtubiIsImtvayJdLGt2YjpbImt2YiIsIm1zIl0sa3ZrOlsia3ZrIiwic2duIl0sa3ZyOlsia3ZyIiwibXMiXSxreGQ6WyJreGQiLCJtcyJdLGxiczpbImxicyIsInNnbiJdLGxjZTpbImxjZSIsIm1zIl0sbGNmOlsibGNmIiwibXMiXSxsaXc6WyJsaXciLCJtcyJdLGxsczpbImxscyIsInNnbiJdLGxzZzpbImxzZyIsInNnbiJdLGxzbDpbImxzbCIsInNnbiJdLGxzbzpbImxzbyIsInNnbiJdLGxzcDpbImxzcCIsInNnbiJdLGxzdDpbImxzdCIsInNnbiJdLGxzeTpbImxzeSIsInNnbiJdLGx0ZzpbImx0ZyIsImx2Il0sbHZzOlsibHZzIiwibHYiXSxsemg6WyJsemgiLCJ6aCJdLG1heDpbIm1heCIsIm1zIl0sbWRsOlsibWRsIiwic2duIl0sbWVvOlsibWVvIiwibXMiXSxtZmE6WyJtZmEiLCJtcyJdLG1mYjpbIm1mYiIsIm1zIl0sbWZzOlsibWZzIiwic2duIl0sbWluOlsibWluIiwibXMiXSxtbnA6WyJtbnAiLCJ6aCJdLG1xZzpbIm1xZyIsIm1zIl0sbXJlOlsibXJlIiwic2duIl0sbXNkOlsibXNkIiwic2duIl0sbXNpOlsibXNpIiwibXMiXSxtc3I6WyJtc3IiLCJzZ24iXSxtdWk6WyJtdWkiLCJtcyJdLG16YzpbIm16YyIsInNnbiJdLG16ZzpbIm16ZyIsInNnbiJdLG16eTpbIm16eSIsInNnbiJdLG5hbjpbIm5hbiIsInpoIl0sbmJzOlsibmJzIiwic2duIl0sbmNzOlsibmNzIiwic2duIl0sbnNpOlsibnNpIiwic2duIl0sbnNsOlsibnNsIiwic2duIl0sbnNwOlsibnNwIiwic2duIl0sbnNyOlsibnNyIiwic2duIl0sbnpzOlsibnpzIiwic2duIl0sb2tsOlsib2tsIiwic2duIl0sb3JuOlsib3JuIiwibXMiXSxvcnM6WyJvcnMiLCJtcyJdLHBlbDpbInBlbCIsIm1zIl0scGdhOlsicGdhIiwiYXIiXSxwa3M6WyJwa3MiLCJzZ24iXSxwcmw6WyJwcmwiLCJzZ24iXSxwcno6WyJwcnoiLCJzZ24iXSxwc2M6WyJwc2MiLCJzZ24iXSxwc2Q6WyJwc2QiLCJzZ24iXSxwc2U6WyJwc2UiLCJtcyJdLHBzZzpbInBzZyIsInNnbiJdLHBzbDpbInBzbCIsInNnbiJdLHBzbzpbInBzbyIsInNnbiJdLHBzcDpbInBzcCIsInNnbiJdLHBzcjpbInBzciIsInNnbiJdLHB5czpbInB5cyIsInNnbiJdLHJtczpbInJtcyIsInNnbiJdLHJzaTpbInJzaSIsInNnbiJdLHJzbDpbInJzbCIsInNnbiJdLHNkbDpbInNkbCIsInNnbiJdLHNmYjpbInNmYiIsInNnbiJdLHNmczpbInNmcyIsInNnbiJdLHNnZzpbInNnZyIsInNnbiJdLHNneDpbInNneCIsInNnbiJdLHNodTpbInNodSIsImFyIl0sc2xmOlsic2xmIiwic2duIl0sc2xzOlsic2xzIiwic2duIl0sc3FrOlsic3FrIiwic2duIl0sc3FzOlsic3FzIiwic2duIl0sc3NoOlsic3NoIiwiYXIiXSxzc3A6WyJzc3AiLCJzZ24iXSxzc3I6WyJzc3IiLCJzZ24iXSxzdms6WyJzdmsiLCJzZ24iXSxzd2M6WyJzd2MiLCJzdyJdLHN3aDpbInN3aCIsInN3Il0sc3dsOlsic3dsIiwic2duIl0sc3l5Olsic3l5Iiwic2duIl0sdG13OlsidG13IiwibXMiXSx0c2U6WyJ0c2UiLCJzZ24iXSx0c206WyJ0c20iLCJzZ24iXSx0c3E6WyJ0c3EiLCJzZ24iXSx0c3M6WyJ0c3MiLCJzZ24iXSx0c3k6WyJ0c3kiLCJzZ24iXSx0emE6WyJ0emEiLCJzZ24iXSx1Z246WyJ1Z24iLCJzZ24iXSx1Z3k6WyJ1Z3kiLCJzZ24iXSx1a2w6WyJ1a2wiLCJzZ24iXSx1a3M6WyJ1a3MiLCJzZ24iXSx1cms6WyJ1cmsiLCJtcyJdLHV6bjpbInV6biIsInV6Il0sdXpzOlsidXpzIiwidXoiXSx2Z3Q6WyJ2Z3QiLCJzZ24iXSx2a2s6WyJ2a2siLCJtcyJdLHZrdDpbInZrdCIsIm1zIl0sdnNpOlsidnNpIiwic2duIl0sdnNsOlsidnNsIiwic2duIl0sdnN2OlsidnN2Iiwic2duIl0sd3V1Olsid3V1IiwiemgiXSx4a2k6WyJ4a2kiLCJzZ24iXSx4bWw6WyJ4bWwiLCJzZ24iXSx4bW06WyJ4bW0iLCJtcyJdLHhtczpbInhtcyIsInNnbiJdLHlkczpbInlkcyIsInNnbiJdLHlzbDpbInlzbCIsInNnbiJdLHl1ZTpbInl1ZSIsInpoIl0semliOlsiemliIiwic2duIl0semxtOlsiemxtIiwibXMiXSx6bWk6WyJ6bWkiLCJtcyJdLHpzbDpbInpzbCIsInNnbiJdLHpzbTpbInpzbSIsIm1zIl19fTtmdW5jdGlvbiB6KGUpe2Zvcih2YXIgdD1lLmxlbmd0aDt0LS07KXt2YXIgbj1lLmNoYXJBdCh0KTtuPj0iYSImJm48PSJ6IiYmKGU9ZS5zbGljZSgwLHQpK24udG9VcHBlckNhc2UoKStlLnNsaWNlKHQrMSkpfXJldHVybiBlfWZ1bmN0aW9uIEsoZSl7cmV0dXJuISFMLnRlc3QoZSkmJighUi50ZXN0KGUpJiYhSS50ZXN0KGUpKX1mdW5jdGlvbiBxKGUpe2Zvcih2YXIgdD12b2lkIDAsbj12b2lkIDAscj0xLG89KG49KGU9ZS50b0xvd2VyQ2FzZSgpKS5zcGxpdCgiLSIpKS5sZW5ndGg7cjxvO3IrKylpZigyPT09bltyXS5sZW5ndGgpbltyXT1uW3JdLnRvVXBwZXJDYXNlKCk7ZWxzZSBpZig0PT09bltyXS5sZW5ndGgpbltyXT1uW3JdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK25bcl0uc2xpY2UoMSk7ZWxzZSBpZigxPT09bltyXS5sZW5ndGgmJiJ4IiE9PW5bcl0pYnJlYWs7KHQ9KGU9dy5jYWxsKG4sIi0iKSkubWF0Y2goQSkpJiZ0Lmxlbmd0aD4xJiYodC5zb3J0KCksZT1lLnJlcGxhY2UoUmVnRXhwKCIoPzoiK0Euc291cmNlKyIpKyIsImkiKSx3LmNhbGwodCwiIikpKSxwLmNhbGwoQi50YWdzLGUpJiYoZT1CLnRhZ3NbZV0pO2Zvcih2YXIgYT0xLGk9KG49ZS5zcGxpdCgiLSIpKS5sZW5ndGg7YTxpO2ErKylwLmNhbGwoQi5zdWJ0YWdzLG5bYV0pP25bYV09Qi5zdWJ0YWdzW25bYV1dOnAuY2FsbChCLmV4dExhbmcsblthXSkmJihuW2FdPUIuZXh0TGFuZ1tuW2FdXVswXSwxPT09YSYmQi5leHRMYW5nW25bMV1dWzFdPT09blswXSYmKG49di5jYWxsKG4sYSsrKSxpLT0xKSk7cmV0dXJuIHcuY2FsbChuLCItIil9dmFyIFY9L15bQS1aXXszfSQvO3ZhciBVPS8tdSg/Oi1bMC05YS16XXsyLDh9KSsvZ2k7ZnVuY3Rpb24gVyhlKXtpZih2b2lkIDA9PT1lKXJldHVybiBuZXcgeDtmb3IodmFyIHQ9bmV3IHgsbj1EKGU9InN0cmluZyI9PXR5cGVvZiBlP1tlXTplKSxyPU0obi5sZW5ndGgpLG89MDtvPHI7KXt2YXIgYT1TdHJpbmcobyk7aWYoYSBpbiBuKXt2YXIgaT1uW2FdO2lmKG51bGw9PT1pfHwic3RyaW5nIiE9dHlwZW9mIGkmJiJvYmplY3QiIT09KHZvaWQgMD09PWk/InVuZGVmaW5lZCI6Yy50eXBlb2YoaSkpKXRocm93IG5ldyBUeXBlRXJyb3IoIlN0cmluZyBvciBPYmplY3QgdHlwZSBleHBlY3RlZCIpO3ZhciB1PVN0cmluZyhpKTtpZighSyh1KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJyIrdSsiJyBpcyBub3QgYSBzdHJ1Y3R1cmFsbHkgdmFsaWQgbGFuZ3VhZ2UgdGFnIik7dT1xKHUpLC0xPT09eS5jYWxsKHQsdSkmJmIuY2FsbCh0LHUpfW8rK31yZXR1cm4gdH1mdW5jdGlvbiBZKGUsdCl7Zm9yKHZhciBuPXQ7bjspe2lmKHkuY2FsbChlLG4pPi0xKXJldHVybiBuO3ZhciByPW4ubGFzdEluZGV4T2YoIi0iKTtpZihyPDApcmV0dXJuO3I+PTImJiItIj09PW4uY2hhckF0KHItMikmJihyLT0yKSxuPW4uc3Vic3RyaW5nKDAscil9fWZ1bmN0aW9uIEgoZSx0KXtmb3IodmFyIG49MCxyPXQubGVuZ3RoLG89dm9pZCAwLGE9dm9pZCAwLGk9dm9pZCAwO248ciYmIW87KWE9dFtuXSxvPVkoZSxpPVN0cmluZyhhKS5yZXBsYWNlKFUsIiIpKSxuKys7dmFyIHU9bmV3IEM7aWYodm9pZCAwIT09byl7aWYodVsiW1tsb2NhbGVdXSJdPW8sU3RyaW5nKGEpIT09U3RyaW5nKGkpKXt2YXIgcz1hLm1hdGNoKFUpWzBdLGw9YS5pbmRleE9mKCItdS0iKTt1WyJbW2V4dGVuc2lvbl1dIl09cyx1WyJbW2V4dGVuc2lvbkluZGV4XV0iXT1sfX1lbHNlIHVbIltbbG9jYWxlXV0iXT1GO3JldHVybiB1fWZ1bmN0aW9uIEcoZSx0LG4scixvKXtpZigwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJObyBsb2NhbGUgZGF0YSBoYXMgYmVlbiBwcm92aWRlZCBmb3IgdGhpcyBvYmplY3QgeWV0LiIpO3ZhciBhPXZvaWQgMCxpPShhPSJsb29rdXAiPT09blsiW1tsb2NhbGVNYXRjaGVyXV0iXT9IKGUsdCk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLHQpfShlLHQpKVsiW1tsb2NhbGVdXSJdLHU9dm9pZCAwLHM9dm9pZCAwO2lmKHAuY2FsbChhLCJbW2V4dGVuc2lvbl1dIikpe3ZhciBsPWFbIltbZXh0ZW5zaW9uXV0iXTtzPSh1PVN0cmluZy5wcm90b3R5cGUuc3BsaXQuY2FsbChsLCItIikpLmxlbmd0aH12YXIgYz1uZXcgQztjWyJbW2RhdGFMb2NhbGVdXSJdPWk7Zm9yKHZhciBmPSItdSIsZD0wLGg9ci5sZW5ndGg7ZDxoOyl7dmFyIG09cltkXSx2PW9baV1bbV0sZz12WzBdLGI9IiIsdz15O2lmKHZvaWQgMCE9PXUpe3ZhciBfPXcuY2FsbCh1LG0pO2lmKC0xIT09XylpZihfKzE8cyYmdVtfKzFdLmxlbmd0aD4yKXt2YXIgRT11W18rMV07LTEhPT13LmNhbGwodixFKSYmKGI9Ii0iK20rIi0iKyhnPUUpKX1lbHNley0xIT09dyh2LCJ0cnVlIikmJihnPSJ0cnVlIil9fWlmKHAuY2FsbChuLCJbWyIrbSsiXV0iKSl7dmFyIE89blsiW1siK20rIl1dIl07LTEhPT13LmNhbGwodixPKSYmTyE9PWcmJihnPU8sYj0iIil9Y1siW1siK20rIl1dIl09ZyxmKz1iLGQrK31pZihmLmxlbmd0aD4yKXt2YXIgaz1pLmluZGV4T2YoIi14LSIpO2lmKC0xPT09aylpKz1mO2Vsc2V7dmFyIHg9aS5zdWJzdHJpbmcoMCxrKSxTPWkuc3Vic3RyaW5nKGspO2k9eCtmK1N9aT1xKGkpfXJldHVybiBjWyJbW2xvY2FsZV1dIl09aSxjfWZ1bmN0aW9uIFEoZSx0KXtmb3IodmFyIG49dC5sZW5ndGgscj1uZXcgeCxvPTA7bzxuOyl7dmFyIGE9dFtvXTt2b2lkIDAhPT1ZKGUsU3RyaW5nKGEpLnJlcGxhY2UoVSwiIikpJiZiLmNhbGwocixhKSxvKyt9cmV0dXJuIHYuY2FsbChyKX1mdW5jdGlvbiBKKGUsdCxuKXt2YXIgcj12b2lkIDAsbz12b2lkIDA7aWYodm9pZCAwIT09biYmdm9pZCAwIT09KHI9KG49bmV3IEMoRChuKSkpLmxvY2FsZU1hdGNoZXIpJiYibG9va3VwIiE9PShyPVN0cmluZyhyKSkmJiJiZXN0IGZpdCIhPT1yKXRocm93IG5ldyBSYW5nZUVycm9yKCdtYXRjaGVyIHNob3VsZCBiZSAibG9va3VwIiBvciAiYmVzdCBmaXQiJyk7Zm9yKHZhciBhIGluIG89dm9pZCAwPT09cnx8ImJlc3QgZml0Ij09PXI/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUShlLHQpfShlLHQpOlEoZSx0KSlwLmNhbGwobyxhKSYmaChvLGEse3dyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSx2YWx1ZTpvW2FdfSk7cmV0dXJuIGgobywibGVuZ3RoIix7d3JpdGFibGU6ITF9KSxvfWZ1bmN0aW9uIFooZSx0LG4scixvKXt2YXIgYT1lW3RdO2lmKHZvaWQgMCE9PWEpe2lmKGE9ImJvb2xlYW4iPT09bj9Cb29sZWFuKGEpOiJzdHJpbmciPT09bj9TdHJpbmcoYSk6YSx2b2lkIDAhPT1yJiYtMT09PXkuY2FsbChyLGEpKXRocm93IG5ldyBSYW5nZUVycm9yKCInIithKyInIGlzIG5vdCBhbiBhbGxvd2VkIHZhbHVlIGZvciBgIit0KyJgIik7cmV0dXJuIGF9cmV0dXJuIG99ZnVuY3Rpb24gJChlLHQsbixyLG8pe3ZhciBhPWVbdF07aWYodm9pZCAwIT09YSl7aWYoYT1OdW1iZXIoYSksaXNOYU4oYSl8fGE8bnx8YT5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJWYWx1ZSBpcyBub3QgYSBudW1iZXIgb3Igb3V0c2lkZSBhY2NlcHRlZCByYW5nZSIpO3JldHVybiBNYXRoLmZsb29yKGEpfXJldHVybiBvfXZhciBYPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShYLCJnZXRDYW5vbmljYWxMb2NhbGVzIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVcoZSksbj1bXSxyPXQubGVuZ3RoLG89MDtvPHI7KW5bb109dFtvXSxvKys7cmV0dXJuIG59fSk7dmFyIGVlPXtCSEQ6MyxCWVI6MCxYT0Y6MCxCSUY6MCxYQUY6MCxDTEY6NCxDTFA6MCxLTUY6MCxESkY6MCxYUEY6MCxHTkY6MCxJU0s6MCxJUUQ6MyxKUFk6MCxKT0Q6MyxLUlc6MCxLV0Q6MyxMWUQ6MyxPTVI6MyxQWUc6MCxSV0Y6MCxUTkQ6MyxVR1g6MCxVWUk6MCxWVVY6MCxWTkQ6MH07ZnVuY3Rpb24gdGUoKXt2YXIgZT1hcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV07cmV0dXJuIHRoaXMmJnRoaXMhPT1YP25lKEQodGhpcyksZSx0KTpuZXcgWC5OdW1iZXJGb3JtYXQoZSx0KX1mdW5jdGlvbiBuZShlLHQsbil7dmFyIHI9UChlKSxvPVMoKTtpZighMD09PXJbIltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0iXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGhpc2Agb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYXMgYW4gSW50bCBvYmplY3QiKTtoKGUsIl9fZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIix7dmFsdWU6ZnVuY3Rpb24oKXtpZihhcmd1bWVudHNbMF09PT1rKXJldHVybiByfX0pLHJbIltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0iXT0hMDt2YXIgYT1XKHQpO249dm9pZCAwPT09bj97fTpEKG4pO3ZhciBpPW5ldyBDLHU9WihuLCJsb2NhbGVNYXRjaGVyIiwic3RyaW5nIixuZXcgeCgibG9va3VwIiwiYmVzdCBmaXQiKSwiYmVzdCBmaXQiKTtpWyJbW2xvY2FsZU1hdGNoZXJdXSJdPXU7dmFyIHM9Ty5OdW1iZXJGb3JtYXRbIltbbG9jYWxlRGF0YV1dIl0sbD1HKE8uTnVtYmVyRm9ybWF0WyJbW2F2YWlsYWJsZUxvY2FsZXNdXSJdLGEsaSxPLk51bWJlckZvcm1hdFsiW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSJdLHMpO3JbIltbbG9jYWxlXV0iXT1sWyJbW2xvY2FsZV1dIl0sclsiW1tudW1iZXJpbmdTeXN0ZW1dXSJdPWxbIltbbnVdXSJdLHJbIltbZGF0YUxvY2FsZV1dIl09bFsiW1tkYXRhTG9jYWxlXV0iXTt2YXIgYz1sWyJbW2RhdGFMb2NhbGVdXSJdLGY9WihuLCJzdHlsZSIsInN0cmluZyIsbmV3IHgoImRlY2ltYWwiLCJwZXJjZW50IiwiY3VycmVuY3kiKSwiZGVjaW1hbCIpO3JbIltbc3R5bGVdXSJdPWY7dmFyIHAseT1aKG4sImN1cnJlbmN5Iiwic3RyaW5nIik7aWYodm9pZCAwIT09eSYmKHA9eihTdHJpbmcoeSkpLCExPT09Vi50ZXN0KHApKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJyIreSsiJyBpcyBub3QgYSB2YWxpZCBjdXJyZW5jeSBjb2RlIik7aWYoImN1cnJlbmN5Ij09PWYmJnZvaWQgMD09PXkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3VycmVuY3kgY29kZSBpcyByZXF1aXJlZCB3aGVuIHN0eWxlIGlzIGN1cnJlbmN5Iik7dmFyIG09dm9pZCAwOyJjdXJyZW5jeSI9PT1mJiYoeT15LnRvVXBwZXJDYXNlKCksclsiW1tjdXJyZW5jeV1dIl09eSxtPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lZVtlXT9lZVtlXToyfSh5KSk7dmFyIHY9WihuLCJjdXJyZW5jeURpc3BsYXkiLCJzdHJpbmciLG5ldyB4KCJjb2RlIiwic3ltYm9sIiwibmFtZSIpLCJzeW1ib2wiKTsiY3VycmVuY3kiPT09ZiYmKHJbIltbY3VycmVuY3lEaXNwbGF5XV0iXT12KTt2YXIgZz0kKG4sIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiwxLDIxLDEpO3JbIltbbWluaW11bUludGVnZXJEaWdpdHNdXSJdPWc7dmFyIGI9JChuLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLDAsMjAsImN1cnJlbmN5Ij09PWY/bTowKTtyWyJbW21pbmltdW1GcmFjdGlvbkRpZ2l0c11dIl09Yjt2YXIgdz0kKG4sIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsYiwyMCwiY3VycmVuY3kiPT09Zj9NYXRoLm1heChiLG0pOiJwZXJjZW50Ij09PWY/TWF0aC5tYXgoYiwwKTpNYXRoLm1heChiLDMpKTtyWyJbW21heGltdW1GcmFjdGlvbkRpZ2l0c11dIl09dzt2YXIgXz1uLm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyxFPW4ubWF4aW11bVNpZ25pZmljYW50RGlnaXRzO3ZvaWQgMD09PV8mJnZvaWQgMD09PUV8fChfPSQobiwibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiwxLDIxLDEpLEU9JChuLCJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMiLF8sMjEsMjEpLHJbIltbbWluaW11bVNpZ25pZmljYW50RGlnaXRzXV0iXT1fLHJbIltbbWF4aW11bVNpZ25pZmljYW50RGlnaXRzXV0iXT1FKTt2YXIgVD1aKG4sInVzZUdyb3VwaW5nIiwiYm9vbGVhbiIsdm9pZCAwLCEwKTtyWyJbW3VzZUdyb3VwaW5nXV0iXT1UO3ZhciBNPXNbY10ucGF0dGVybnNbZl07cmV0dXJuIHJbIltbcG9zaXRpdmVQYXR0ZXJuXV0iXT1NLnBvc2l0aXZlUGF0dGVybixyWyJbW25lZ2F0aXZlUGF0dGVybl1dIl09TS5uZWdhdGl2ZVBhdHRlcm4sclsiW1tib3VuZEZvcm1hdF1dIl09dm9pZCAwLHJbIltbaW5pdGlhbGl6ZWROdW1iZXJGb3JtYXRdXSJdPSEwLGQmJihlLmZvcm1hdD1yZS5jYWxsKGUpKSxvKCksZX1mdW5jdGlvbiByZSgpe3ZhciBlPW51bGwhPT10aGlzJiYib2JqZWN0Ij09PWMudHlwZW9mKHRoaXMpJiZQKHRoaXMpO2lmKCFlfHwhZVsiW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIl0pdGhyb3cgbmV3IFR5cGVFcnJvcigiYHRoaXNgIHZhbHVlIGZvciBmb3JtYXQoKSBpcyBub3QgYW4gaW5pdGlhbGl6ZWQgSW50bC5OdW1iZXJGb3JtYXQgb2JqZWN0LiIpO2lmKHZvaWQgMD09PWVbIltbYm91bmRGb3JtYXRdXSJdKXt2YXIgdD1FLmNhbGwoKGZ1bmN0aW9uKGUpe3JldHVybiBpZSh0aGlzLE51bWJlcihlKSl9KSx0aGlzKTtlWyJbW2JvdW5kRm9ybWF0XV0iXT10fXJldHVybiBlWyJbW2JvdW5kRm9ybWF0XV0iXX1mdW5jdGlvbiBvZShlLHQpe2Zvcih2YXIgbj1hZShlLHQpLHI9W10sbz0wLGE9MDtuLmxlbmd0aD5hO2ErKyl7dmFyIGk9blthXSx1PXt9O3UudHlwZT1pWyJbW3R5cGVdXSJdLHUudmFsdWU9aVsiW1t2YWx1ZV1dIl0scltvXT11LG8rPTF9cmV0dXJuIHJ9ZnVuY3Rpb24gYWUoZSx0KXt2YXIgbj1QKGUpLHI9blsiW1tkYXRhTG9jYWxlXV0iXSxvPW5bIltbbnVtYmVyaW5nU3lzdGVtXV0iXSxhPU8uTnVtYmVyRm9ybWF0WyJbW2xvY2FsZURhdGFdXSJdW3JdLGk9YS5zeW1ib2xzW29dfHxhLnN5bWJvbHMubGF0bix1PXZvaWQgMDshaXNOYU4odCkmJnQ8MD8odD0tdCx1PW5bIltbbmVnYXRpdmVQYXR0ZXJuXV0iXSk6dT1uWyJbW3Bvc2l0aXZlUGF0dGVybl1dIl07Zm9yKHZhciBzPW5ldyB4LGw9dS5pbmRleE9mKCJ7IiwwKSxjPTAsZj0wLGQ9dS5sZW5ndGg7bD4tMSYmbDxkOyl7aWYoLTE9PT0oYz11LmluZGV4T2YoIn0iLGwpKSl0aHJvdyBuZXcgRXJyb3I7aWYobD5mKXt2YXIgaD11LnN1YnN0cmluZyhmLGwpO2IuY2FsbChzLHsiW1t0eXBlXV0iOiJsaXRlcmFsIiwiW1t2YWx1ZV1dIjpofSl9dmFyIHk9dS5zdWJzdHJpbmcobCsxLGMpO2lmKCJudW1iZXIiPT09eSlpZihpc05hTih0KSl7dmFyIG09aS5uYW47Yi5jYWxsKHMseyJbW3R5cGVdXSI6Im5hbiIsIltbdmFsdWVdXSI6bX0pfWVsc2UgaWYoaXNGaW5pdGUodCkpeyJwZXJjZW50Ij09PW5bIltbc3R5bGVdXSJdJiZpc0Zpbml0ZSh0KSYmKHQqPTEwMCk7dmFyIHY9dm9pZCAwO3Y9cC5jYWxsKG4sIltbbWluaW11bVNpZ25pZmljYW50RGlnaXRzXV0iKSYmcC5jYWxsKG4sIltbbWF4aW11bVNpZ25pZmljYW50RGlnaXRzXV0iKT91ZSh0LG5bIltbbWluaW11bVNpZ25pZmljYW50RGlnaXRzXV0iXSxuWyJbW21heGltdW1TaWduaWZpY2FudERpZ2l0c11dIl0pOnNlKHQsblsiW1ttaW5pbXVtSW50ZWdlckRpZ2l0c11dIl0sblsiW1ttaW5pbXVtRnJhY3Rpb25EaWdpdHNdXSJdLG5bIltbbWF4aW11bUZyYWN0aW9uRGlnaXRzXV0iXSksbGVbb10/ZnVuY3Rpb24oKXt2YXIgZT1sZVtvXTt2PVN0cmluZyh2KS5yZXBsYWNlKC9cZC9nLChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKX0oKTp2PVN0cmluZyh2KTt2YXIgZz12b2lkIDAsdz12b2lkIDAsRT12LmluZGV4T2YoIi4iLDApO2lmKEU+MD8oZz12LnN1YnN0cmluZygwLEUpLHc9di5zdWJzdHJpbmcoRSsxLEUubGVuZ3RoKSk6KGc9dix3PXZvaWQgMCksITA9PT1uWyJbW3VzZUdyb3VwaW5nXV0iXSl7dmFyIGs9aS5ncm91cCxDPVtdLFM9YS5wYXR0ZXJucy5wcmltYXJ5R3JvdXBTaXplfHwzLEQ9YS5wYXR0ZXJucy5zZWNvbmRhcnlHcm91cFNpemV8fFM7aWYoZy5sZW5ndGg+Uyl7dmFyIFQ9Zy5sZW5ndGgtUyxNPVQlRCxOPWcuc2xpY2UoMCxNKTtmb3IoTi5sZW5ndGgmJmIuY2FsbChDLE4pO008VDspYi5jYWxsKEMsZy5zbGljZShNLE0rRCkpLE0rPUQ7Yi5jYWxsKEMsZy5zbGljZShUKSl9ZWxzZSBiLmNhbGwoQyxnKTtpZigwPT09Qy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yO2Zvcig7Qy5sZW5ndGg7KXt2YXIgaj1fLmNhbGwoQyk7Yi5jYWxsKHMseyJbW3R5cGVdXSI6ImludGVnZXIiLCJbW3ZhbHVlXV0iOmp9KSxDLmxlbmd0aCYmYi5jYWxsKHMseyJbW3R5cGVdXSI6Imdyb3VwIiwiW1t2YWx1ZV1dIjprfSl9fWVsc2UgYi5jYWxsKHMseyJbW3R5cGVdXSI6ImludGVnZXIiLCJbW3ZhbHVlXV0iOmd9KTtpZih2b2lkIDAhPT13KXt2YXIgTD1pLmRlY2ltYWw7Yi5jYWxsKHMseyJbW3R5cGVdXSI6ImRlY2ltYWwiLCJbW3ZhbHVlXV0iOkx9KSxiLmNhbGwocyx7IltbdHlwZV1dIjoiZnJhY3Rpb24iLCJbW3ZhbHVlXV0iOnd9KX19ZWxzZXt2YXIgUj1pLmluZmluaXR5O2IuY2FsbChzLHsiW1t0eXBlXV0iOiJpbmZpbml0eSIsIltbdmFsdWVdXSI6Un0pfWVsc2UgaWYoInBsdXNTaWduIj09PXkpe3ZhciBJPWkucGx1c1NpZ247Yi5jYWxsKHMseyJbW3R5cGVdXSI6InBsdXNTaWduIiwiW1t2YWx1ZV1dIjpJfSl9ZWxzZSBpZigibWludXNTaWduIj09PXkpe3ZhciBBPWkubWludXNTaWduO2IuY2FsbChzLHsiW1t0eXBlXV0iOiJtaW51c1NpZ24iLCJbW3ZhbHVlXV0iOkF9KX1lbHNlIGlmKCJwZXJjZW50U2lnbiI9PT15JiYicGVyY2VudCI9PT1uWyJbW3N0eWxlXV0iXSl7dmFyIEY9aS5wZXJjZW50U2lnbjtiLmNhbGwocyx7IltbdHlwZV1dIjoibGl0ZXJhbCIsIltbdmFsdWVdXSI6Rn0pfWVsc2UgaWYoImN1cnJlbmN5Ij09PXkmJiJjdXJyZW5jeSI9PT1uWyJbW3N0eWxlXV0iXSl7dmFyIEI9blsiW1tjdXJyZW5jeV1dIl0sej12b2lkIDA7ImNvZGUiPT09blsiW1tjdXJyZW5jeURpc3BsYXldXSJdP3o9Qjoic3ltYm9sIj09PW5bIltbY3VycmVuY3lEaXNwbGF5XV0iXT96PWEuY3VycmVuY2llc1tCXXx8QjoibmFtZSI9PT1uWyJbW2N1cnJlbmN5RGlzcGxheV1dIl0mJih6PUIpLGIuY2FsbChzLHsiW1t0eXBlXV0iOiJjdXJyZW5jeSIsIltbdmFsdWVdXSI6en0pfWVsc2V7dmFyIEs9dS5zdWJzdHJpbmcobCxjKTtiLmNhbGwocyx7IltbdHlwZV1dIjoibGl0ZXJhbCIsIltbdmFsdWVdXSI6S30pfWY9YysxLGw9dS5pbmRleE9mKCJ7IixmKX1pZihmPGQpe3ZhciBxPXUuc3Vic3RyaW5nKGYsZCk7Yi5jYWxsKHMseyJbW3R5cGVdXSI6ImxpdGVyYWwiLCJbW3ZhbHVlXV0iOnF9KX1yZXR1cm4gc31mdW5jdGlvbiBpZShlLHQpe2Zvcih2YXIgbj1hZShlLHQpLHI9IiIsbz0wO24ubGVuZ3RoPm87bysrKXtyKz1uW29dWyJbW3ZhbHVlXV0iXX1yZXR1cm4gcn1mdW5jdGlvbiB1ZShlLHQsbil7dmFyIHI9bixvPXZvaWQgMCxhPXZvaWQgMDtpZigwPT09ZSlvPXcuY2FsbChBcnJheShyKzEpLCIwIiksYT0wO2Vsc2V7YT1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgTWF0aC5sb2cxMClyZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzEwKGUpKTt2YXIgdD1NYXRoLnJvdW5kKE1hdGgubG9nKGUpKk1hdGguTE9HMTBFKTtyZXR1cm4gdC0oTnVtYmVyKCIxZSIrdCk+ZSl9KE1hdGguYWJzKGUpKTt2YXIgaT1NYXRoLnJvdW5kKE1hdGguZXhwKE1hdGguYWJzKGEtcisxKSpNYXRoLkxOMTApKTtvPVN0cmluZyhNYXRoLnJvdW5kKGEtcisxPDA/ZSppOmUvaSkpfWlmKGE+PXIpcmV0dXJuIG8rdy5jYWxsKEFycmF5KGEtcisxKzEpLCIwIik7aWYoYT09PXItMSlyZXR1cm4gbztpZihhPj0wP289by5zbGljZSgwLGErMSkrIi4iK28uc2xpY2UoYSsxKTphPDAmJihvPSIwLiIrdy5jYWxsKEFycmF5KDEtKGErMSkpLCIwIikrbyksby5pbmRleE9mKCIuIik+PTAmJm4+dCl7Zm9yKHZhciB1PW4tdDt1PjAmJiIwIj09PW8uY2hhckF0KG8ubGVuZ3RoLTEpOylvPW8uc2xpY2UoMCwtMSksdS0tOyIuIj09PW8uY2hhckF0KG8ubGVuZ3RoLTEpJiYobz1vLnNsaWNlKDAsLTEpKX1yZXR1cm4gb31mdW5jdGlvbiBzZShlLHQsbixyKXt2YXIgbyxhPXIsaT1NYXRoLnBvdygxMCxhKSplLHU9MD09PWk/IjAiOmkudG9GaXhlZCgwKSxzPShvPXUuaW5kZXhPZigiZSIpKT4tMT91LnNsaWNlKG8rMSk6MDtzJiYodT11LnNsaWNlKDAsbykucmVwbGFjZSgiLiIsIiIpLHUrPXcuY2FsbChBcnJheShzLSh1Lmxlbmd0aC0xKSsxKSwiMCIpKTt2YXIgbD12b2lkIDA7aWYoMCE9PWEpe3ZhciBjPXUubGVuZ3RoO2lmKGM8PWEpdT13LmNhbGwoQXJyYXkoYSsxLWMrMSksIjAiKSt1LGM9YSsxO3ZhciBmPXUuc3Vic3RyaW5nKDAsYy1hKSxkPXUuc3Vic3RyaW5nKGMtYSx1Lmxlbmd0aCk7dT1mKyIuIitkLGw9Zi5sZW5ndGh9ZWxzZSBsPXUubGVuZ3RoO2Zvcih2YXIgcD1yLW47cD4wJiYiMCI9PT11LnNsaWNlKC0xKTspdT11LnNsaWNlKDAsLTEpLHAtLTsoIi4iPT09dS5zbGljZSgtMSkmJih1PXUuc2xpY2UoMCwtMSkpLGw8dCkmJih1PXcuY2FsbChBcnJheSh0LWwrMSksIjAiKSt1KTtyZXR1cm4gdX1oKFgsIk51bWJlckZvcm1hdCIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0ZX0pLGgoWC5OdW1iZXJGb3JtYXQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksTy5OdW1iZXJGb3JtYXQ9eyJbW2F2YWlsYWJsZUxvY2FsZXNdXSI6W10sIltbcmVsZXZhbnRFeHRlbnNpb25LZXlzXV0iOlsibnUiXSwiW1tsb2NhbGVEYXRhXV0iOnt9fSxoKFguTnVtYmVyRm9ybWF0LCJzdXBwb3J0ZWRMb2NhbGVzT2YiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6RS5jYWxsKChmdW5jdGlvbihlKXtpZighcC5jYWxsKHRoaXMsIltbYXZhaWxhYmxlTG9jYWxlc11dIikpdGhyb3cgbmV3IFR5cGVFcnJvcigic3VwcG9ydGVkTG9jYWxlc09mKCkgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgdD1TKCksbj1hcmd1bWVudHNbMV0scj10aGlzWyJbW2F2YWlsYWJsZUxvY2FsZXNdXSJdLG89VyhlKTtyZXR1cm4gdCgpLEoocixvLG4pfSksTy5OdW1iZXJGb3JtYXQpfSksaChYLk51bWJlckZvcm1hdC5wcm90b3R5cGUsImZvcm1hdCIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6cmV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCJmb3JtYXRUb1BhcnRzIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/dm9pZCAwOmFyZ3VtZW50c1swXSx0PW51bGwhPT10aGlzJiYib2JqZWN0Ij09PWMudHlwZW9mKHRoaXMpJiZQKHRoaXMpO2lmKCF0fHwhdFsiW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIl0pdGhyb3cgbmV3IFR5cGVFcnJvcigiYHRoaXNgIHZhbHVlIGZvciBmb3JtYXRUb1BhcnRzKCkgaXMgbm90IGFuIGluaXRpYWxpemVkIEludGwuTnVtYmVyRm9ybWF0IG9iamVjdC4iKTt2YXIgbj1OdW1iZXIoZSk7cmV0dXJuIG9lKHRoaXMsbil9fSk7dmFyIGxlPXthcmFiOlsi2aAiLCLZoSIsItmiIiwi2aMiLCLZpCIsItmlIiwi2aYiLCLZpyIsItmoIiwi2akiXSxhcmFiZXh0Olsi27AiLCLbsSIsItuyIiwi27MiLCLbtCIsItu1Iiwi27YiLCLbtyIsItu4Iiwi27kiXSxiYWxpOlsi4a2QIiwi4a2RIiwi4a2SIiwi4a2TIiwi4a2UIiwi4a2VIiwi4a2WIiwi4a2XIiwi4a2YIiwi4a2ZIl0sYmVuZzpbIuCnpiIsIuCnpyIsIuCnqCIsIuCnqSIsIuCnqiIsIuCnqyIsIuCnrCIsIuCnrSIsIuCnriIsIuCnryJdLGRldmE6WyLgpaYiLCLgpaciLCLgpagiLCLgpakiLCLgpaoiLCLgpasiLCLgpawiLCLgpa0iLCLgpa4iLCLgpa8iXSxmdWxsd2lkZTpbIu+8kCIsIu+8kSIsIu+8kiIsIu+8kyIsIu+8lCIsIu+8lSIsIu+8liIsIu+8lyIsIu+8mCIsIu+8mSJdLGd1anI6WyLgq6YiLCLgq6ciLCLgq6giLCLgq6kiLCLgq6oiLCLgq6siLCLgq6wiLCLgq60iLCLgq64iLCLgq68iXSxndXJ1Olsi4KmmIiwi4KmnIiwi4KmoIiwi4KmpIiwi4KmqIiwi4KmrIiwi4KmsIiwi4KmtIiwi4KmuIiwi4KmvIl0saGFuaWRlYzpbIuOAhyIsIuS4gCIsIuS6jCIsIuS4iSIsIuWbmyIsIuS6lCIsIuWFrSIsIuS4gyIsIuWFqyIsIuS5nSJdLGtobXI6WyLhn6AiLCLhn6EiLCLhn6IiLCLhn6MiLCLhn6QiLCLhn6UiLCLhn6YiLCLhn6ciLCLhn6giLCLhn6kiXSxrbmRhOlsi4LOmIiwi4LOnIiwi4LOoIiwi4LOpIiwi4LOqIiwi4LOrIiwi4LOsIiwi4LOtIiwi4LOuIiwi4LOvIl0sbGFvbzpbIuC7kCIsIuC7kSIsIuC7kiIsIuC7kyIsIuC7lCIsIuC7lSIsIuC7liIsIuC7lyIsIuC7mCIsIuC7mSJdLGxhdG46WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5Il0sbGltYjpbIuGlhiIsIuGlhyIsIuGliCIsIuGliSIsIuGliiIsIuGliyIsIuGljCIsIuGljSIsIuGljiIsIuGljyJdLG1seW06WyLgtaYiLCLgtaciLCLgtagiLCLgtakiLCLgtaoiLCLgtasiLCLgtawiLCLgta0iLCLgta4iLCLgta8iXSxtb25nOlsi4aCQIiwi4aCRIiwi4aCSIiwi4aCTIiwi4aCUIiwi4aCVIiwi4aCWIiwi4aCXIiwi4aCYIiwi4aCZIl0sbXltcjpbIuGBgCIsIuGBgSIsIuGBgiIsIuGBgyIsIuGBhCIsIuGBhSIsIuGBhiIsIuGBhyIsIuGBiCIsIuGBiSJdLG9yeWE6WyLgraYiLCLgraciLCLgragiLCLgrakiLCLgraoiLCLgrasiLCLgrawiLCLgra0iLCLgra4iLCLgra8iXSx0YW1sZGVjOlsi4K+mIiwi4K+nIiwi4K+oIiwi4K+pIiwi4K+qIiwi4K+rIiwi4K+sIiwi4K+tIiwi4K+uIiwi4K+vIl0sdGVsdTpbIuCxpiIsIuCxpyIsIuCxqCIsIuCxqSIsIuCxqiIsIuCxqyIsIuCxrCIsIuCxrSIsIuCxriIsIuCxryJdLHRoYWk6WyLguZAiLCLguZEiLCLguZIiLCLguZMiLCLguZQiLCLguZUiLCLguZYiLCLguZciLCLguZgiLCLguZkiXSx0aWJ0Olsi4LygIiwi4LyhIiwi4LyiIiwi4LyjIiwi4LykIiwi4LylIiwi4LymIiwi4LynIiwi4LyoIiwi4LypIl19O2goWC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCJyZXNvbHZlZE9wdGlvbnMiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT12b2lkIDAsdD1uZXcgQyxuPVsibG9jYWxlIiwibnVtYmVyaW5nU3lzdGVtIiwic3R5bGUiLCJjdXJyZW5jeSIsImN1cnJlbmN5RGlzcGxheSIsIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwibWluaW11bVNpZ25pZmljYW50RGlnaXRzIiwibWF4aW11bVNpZ25pZmljYW50RGlnaXRzIiwidXNlR3JvdXBpbmciXSxyPW51bGwhPT10aGlzJiYib2JqZWN0Ij09PWMudHlwZW9mKHRoaXMpJiZQKHRoaXMpO2lmKCFyfHwhclsiW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIl0pdGhyb3cgbmV3IFR5cGVFcnJvcigiYHRoaXNgIHZhbHVlIGZvciByZXNvbHZlZE9wdGlvbnMoKSBpcyBub3QgYW4gaW5pdGlhbGl6ZWQgSW50bC5OdW1iZXJGb3JtYXQgb2JqZWN0LiIpO2Zvcih2YXIgbz0wLGE9bi5sZW5ndGg7bzxhO28rKylwLmNhbGwocixlPSJbWyIrbltvXSsiXV0iKSYmKHRbbltvXV09e3ZhbHVlOnJbZV0sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KTtyZXR1cm4gbSh7fSx0KX19KTt2YXIgY2U9Lyg/OltFZWNdezEsNn18R3sxLDV9fFtRcV17MSw1fXwoPzpbeVl1cl0rfFV7MSw1fSl8W01MXXsxLDV9fGR7MSwyfXxEezEsM318RnsxfXxbYWJCXXsxLDV9fFtoa0hLXXsxLDJ9fHd7MSwyfXxXezF9fG17MSwyfXxzezEsMn18W3paT3ZWeFhdezEsNH0pKD89KFteJ10qJ1teJ10qJykqW14nXSokKS9nLGZlPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyxkZT0vW3JxUUFTakpnd1dJUXFdLyxwZT1bImVyYSIsInllYXIiLCJtb250aCIsImRheSIsIndlZWtkYXkiLCJxdWFydGVyIl0saGU9WyJob3VyIiwibWludXRlIiwic2Vjb25kIiwiaG91cjEyIiwidGltZVpvbmVOYW1lIl07ZnVuY3Rpb24geWUoZSl7Zm9yKHZhciB0PTA7dDxoZS5sZW5ndGg7dCs9MSlpZihlLmhhc093blByb3BlcnR5KGhlW3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBtZShlKXtmb3IodmFyIHQ9MDt0PHBlLmxlbmd0aDt0Kz0xKWlmKGUuaGFzT3duUHJvcGVydHkocGVbdF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHZlKGUsdCl7Zm9yKHZhciBuPXtfOnt9fSxyPTA7cjxwZS5sZW5ndGg7cis9MSllW3BlW3JdXSYmKG5bcGVbcl1dPWVbcGVbcl1dKSxlLl9bcGVbcl1dJiYobi5fW3BlW3JdXT1lLl9bcGVbcl1dKTtmb3IodmFyIG89MDtvPGhlLmxlbmd0aDtvKz0xKXRbaGVbb11dJiYobltoZVtvXV09dFtoZVtvXV0pLHQuX1toZVtvXV0mJihuLl9baGVbb11dPXQuX1toZVtvXV0pO3JldHVybiBufWZ1bmN0aW9uIGdlKGUpe3JldHVybiBlLnBhdHRlcm4xMj1lLmV4dGVuZGVkUGF0dGVybi5yZXBsYWNlKC8nKFteJ10qKScvZywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8IicifSkpLGUucGF0dGVybj1lLnBhdHRlcm4xMi5yZXBsYWNlKCJ7YW1wbX0iLCIiKS5yZXBsYWNlKGZlLCIiKSxlfWZ1bmN0aW9uIGJlKGUsdCl7c3dpdGNoKGUuY2hhckF0KDApKXtjYXNlIkciOnJldHVybiB0LmVyYT1bInNob3J0Iiwic2hvcnQiLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciXVtlLmxlbmd0aC0xXSwie2VyYX0iO2Nhc2UieSI6Y2FzZSJZIjpjYXNlInUiOmNhc2UiVSI6Y2FzZSJyIjpyZXR1cm4gdC55ZWFyPTI9PT1lLmxlbmd0aD8iMi1kaWdpdCI6Im51bWVyaWMiLCJ7eWVhcn0iO2Nhc2UiUSI6Y2FzZSJxIjpyZXR1cm4gdC5xdWFydGVyPVsibnVtZXJpYyIsIjItZGlnaXQiLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciXVtlLmxlbmd0aC0xXSwie3F1YXJ0ZXJ9IjtjYXNlIk0iOmNhc2UiTCI6cmV0dXJuIHQubW9udGg9WyJudW1lcmljIiwiMi1kaWdpdCIsInNob3J0IiwibG9uZyIsIm5hcnJvdyJdW2UubGVuZ3RoLTFdLCJ7bW9udGh9IjtjYXNlInciOnJldHVybiB0LndlZWs9Mj09PWUubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsInt3ZWVrZGF5fSI7Y2FzZSJXIjpyZXR1cm4gdC53ZWVrPSJudW1lcmljIiwie3dlZWtkYXl9IjtjYXNlImQiOnJldHVybiB0LmRheT0yPT09ZS5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie2RheX0iO2Nhc2UiRCI6Y2FzZSJGIjpjYXNlImciOnJldHVybiB0LmRheT0ibnVtZXJpYyIsIntkYXl9IjtjYXNlIkUiOnJldHVybiB0LndlZWtkYXk9WyJzaG9ydCIsInNob3J0Iiwic2hvcnQiLCJsb25nIiwibmFycm93Iiwic2hvcnQiXVtlLmxlbmd0aC0xXSwie3dlZWtkYXl9IjtjYXNlImUiOnJldHVybiB0LndlZWtkYXk9WyJudW1lcmljIiwiMi1kaWdpdCIsInNob3J0IiwibG9uZyIsIm5hcnJvdyIsInNob3J0Il1bZS5sZW5ndGgtMV0sInt3ZWVrZGF5fSI7Y2FzZSJjIjpyZXR1cm4gdC53ZWVrZGF5PVsibnVtZXJpYyIsdm9pZCAwLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciLCJzaG9ydCJdW2UubGVuZ3RoLTFdLCJ7d2Vla2RheX0iO2Nhc2UiYSI6Y2FzZSJiIjpjYXNlIkIiOnJldHVybiB0LmhvdXIxMj0hMCwie2FtcG19IjtjYXNlImgiOmNhc2UiSCI6cmV0dXJuIHQuaG91cj0yPT09ZS5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie2hvdXJ9IjtjYXNlImsiOmNhc2UiSyI6cmV0dXJuIHQuaG91cjEyPSEwLHQuaG91cj0yPT09ZS5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie2hvdXJ9IjtjYXNlIm0iOnJldHVybiB0Lm1pbnV0ZT0yPT09ZS5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie21pbnV0ZX0iO2Nhc2UicyI6cmV0dXJuIHQuc2Vjb25kPTI9PT1lLmxlbmd0aD8iMi1kaWdpdCI6Im51bWVyaWMiLCJ7c2Vjb25kfSI7Y2FzZSJTIjpjYXNlIkEiOnJldHVybiB0LnNlY29uZD0ibnVtZXJpYyIsIntzZWNvbmR9IjtjYXNlInoiOmNhc2UiWiI6Y2FzZSJPIjpjYXNlInYiOmNhc2UiViI6Y2FzZSJYIjpjYXNlIngiOnJldHVybiB0LnRpbWVab25lTmFtZT1lLmxlbmd0aDw0PyJzaG9ydCI6ImxvbmciLCJ7dGltZVpvbmVOYW1lfSJ9fWZ1bmN0aW9uIHdlKGUsdCl7aWYoIWRlLnRlc3QodCkpe3ZhciBuPXtvcmlnaW5hbFBhdHRlcm46dCxfOnt9fTtyZXR1cm4gbi5leHRlbmRlZFBhdHRlcm49dC5yZXBsYWNlKGNlLChmdW5jdGlvbihlKXtyZXR1cm4gYmUoZSxuLl8pfSkpLGUucmVwbGFjZShjZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGJlKGUsbil9KSksZ2Uobil9fXZhciBfZT17c2Vjb25kOntudW1lcmljOiJzIiwiMi1kaWdpdCI6InNzIn0sbWludXRlOntudW1lcmljOiJtIiwiMi1kaWdpdCI6Im1tIn0seWVhcjp7bnVtZXJpYzoieSIsIjItZGlnaXQiOiJ5eSJ9LGRheTp7bnVtZXJpYzoiZCIsIjItZGlnaXQiOiJkZCJ9LG1vbnRoOntudW1lcmljOiJMIiwiMi1kaWdpdCI6IkxMIixuYXJyb3c6IkxMTExMIixzaG9ydDoiTExMIixsb25nOiJMTExMIn0sd2Vla2RheTp7bmFycm93OiJjY2NjYyIsc2hvcnQ6ImNjYyIsbG9uZzoiY2NjYyJ9fTt2YXIgRWU9bShudWxsLHtuYXJyb3c6e30sc2hvcnQ6e30sbG9uZzp7fX0pO2Z1bmN0aW9uIE9lKGUsdCxuLHIsbyl7dmFyIGE9ZVt0XSYmZVt0XVtuXT9lW3RdW25dOmUuZ3JlZ29yeVtuXSxpPXtuYXJyb3c6WyJzaG9ydCIsImxvbmciXSxzaG9ydDpbImxvbmciLCJuYXJyb3ciXSxsb25nOlsic2hvcnQiLCJuYXJyb3ciXX0sdT1wLmNhbGwoYSxyKT9hW3JdOnAuY2FsbChhLGlbcl1bMF0pP2FbaVtyXVswXV06YVtpW3JdWzFdXTtyZXR1cm4gbnVsbCE9PW8/dVtvXTp1fWZ1bmN0aW9uIGtlKCl7dmFyIGU9YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzWzFdO3JldHVybiB0aGlzJiZ0aGlzIT09WD9DZShEKHRoaXMpLGUsdCk6bmV3IFguRGF0ZVRpbWVGb3JtYXQoZSx0KX1mdW5jdGlvbiBDZShlLHQsbil7dmFyIHI9UChlKSxvPVMoKTtpZighMD09PXJbIltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0iXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGhpc2Agb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYXMgYW4gSW50bCBvYmplY3QiKTtoKGUsIl9fZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIix7dmFsdWU6ZnVuY3Rpb24oKXtpZihhcmd1bWVudHNbMF09PT1rKXJldHVybiByfX0pLHJbIltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0iXT0hMDt2YXIgYT1XKHQpO249U2UobiwiYW55IiwiZGF0ZSIpO3ZhciB1PW5ldyBDLHM9WihuLCJsb2NhbGVNYXRjaGVyIiwic3RyaW5nIixuZXcgeCgibG9va3VwIiwiYmVzdCBmaXQiKSwiYmVzdCBmaXQiKTt1WyJbW2xvY2FsZU1hdGNoZXJdXSJdPXM7dmFyIGw9Ty5EYXRlVGltZUZvcm1hdCxjPWxbIltbbG9jYWxlRGF0YV1dIl0sZj1HKGxbIltbYXZhaWxhYmxlTG9jYWxlc11dIl0sYSx1LGxbIltbcmVsZXZhbnRFeHRlbnNpb25LZXlzXV0iXSxjKTtyWyJbW2xvY2FsZV1dIl09ZlsiW1tsb2NhbGVdXSJdLHJbIltbY2FsZW5kYXJdXSJdPWZbIltbY2FdXSJdLHJbIltbbnVtYmVyaW5nU3lzdGVtXV0iXT1mWyJbW251XV0iXSxyWyJbW2RhdGFMb2NhbGVdXSJdPWZbIltbZGF0YUxvY2FsZV1dIl07dmFyIG09ZlsiW1tkYXRhTG9jYWxlXV0iXSx2PW4udGltZVpvbmU7aWYodm9pZCAwIT09diYmIlVUQyIhPT0odj16KHYpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGltZVpvbmUgaXMgbm90IHN1cHBvcnRlZC4iKTtmb3IodmFyIGcgaW4gclsiW1t0aW1lWm9uZV1dIl09dix1PW5ldyBDLHhlKWlmKHAuY2FsbCh4ZSxnKSl7dmFyIGI9WihuLGcsInN0cmluZyIseGVbZ10pO3VbIltbIitnKyJdXSJdPWJ9dmFyIHc9dm9pZCAwLF89Y1ttXSxFPWZ1bmN0aW9uKGUpe2lmKCJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIGU7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUuYXZhaWxhYmxlRm9ybWF0cyxuPWUudGltZUZvcm1hdHMscj1lLmRhdGVGb3JtYXRzLG89W10sYT12b2lkIDAsaT12b2lkIDAsdT12b2lkIDAscz12b2lkIDAsbD12b2lkIDAsYz1bXSxmPVtdO2ZvcihhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHU9d2UoYSxpPXRbYV0pKSYmKG8ucHVzaCh1KSx5ZSh1KT9mLnB1c2godSk6bWUodSkmJmMucHVzaCh1KSk7Zm9yKGEgaW4gbiluLmhhc093blByb3BlcnR5KGEpJiYodT13ZShhLGk9blthXSkpJiYoby5wdXNoKHUpLGMucHVzaCh1KSk7Zm9yKGEgaW4gcilyLmhhc093blByb3BlcnR5KGEpJiYodT13ZShhLGk9clthXSkpJiYoby5wdXNoKHUpLGYucHVzaCh1KSk7Zm9yKHM9MDtzPGMubGVuZ3RoO3MrPTEpZm9yKGw9MDtsPGYubGVuZ3RoO2wrPTEpaT0ibG9uZyI9PT1mW2xdLm1vbnRoP2ZbbF0ud2Vla2RheT9lLmZ1bGw6ZS5sb25nOiJzaG9ydCI9PT1mW2xdLm1vbnRoP2UubWVkaXVtOmUuc2hvcnQsKHU9dmUoZltsXSxjW3NdKSkub3JpZ2luYWxQYXR0ZXJuPWksdS5leHRlbmRlZFBhdHRlcm49aS5yZXBsYWNlKCJ7MH0iLGNbc10uZXh0ZW5kZWRQYXR0ZXJuKS5yZXBsYWNlKCJ7MX0iLGZbbF0uZXh0ZW5kZWRQYXR0ZXJuKS5yZXBsYWNlKC9eWyxcc10rfFssXHNdKyQvZ2ksIiIpLG8ucHVzaChnZSh1KSk7cmV0dXJuIG99KGUpfShfLmZvcm1hdHMpO2lmKHM9WihuLCJmb3JtYXRNYXRjaGVyIiwic3RyaW5nIixuZXcgeCgiYmFzaWMiLCJiZXN0IGZpdCIpLCJiZXN0IGZpdCIpLF8uZm9ybWF0cz1FLCJiYXNpYyI9PT1zKXc9ZnVuY3Rpb24oZSx0KXt2YXIgbj0tMS8wLHI9dm9pZCAwLG89MCxhPXQubGVuZ3RoO2Zvcig7bzxhOyl7dmFyIGk9dFtvXSx1PTA7Zm9yKHZhciBzIGluIHhlKWlmKHAuY2FsbCh4ZSxzKSl7dmFyIGw9ZVsiW1siK3MrIl1dIl0sYz1wLmNhbGwoaSxzKT9pW3NdOnZvaWQgMDtpZih2b2lkIDA9PT1sJiZ2b2lkIDAhPT1jKXUtPTIwO2Vsc2UgaWYodm9pZCAwIT09bCYmdm9pZCAwPT09Yyl1LT0xMjA7ZWxzZXt2YXIgZj1bIjItZGlnaXQiLCJudW1lcmljIiwibmFycm93Iiwic2hvcnQiLCJsb25nIl0sZD15LmNhbGwoZixsKSxoPXkuY2FsbChmLGMpLG09TWF0aC5tYXgoTWF0aC5taW4oaC1kLDIpLC0yKTsyPT09bT91LT02OjE9PT1tP3UtPTM6LTE9PT1tP3UtPTY6LTI9PT1tJiYodS09OCl9fXU+biYmKG49dSxyPWkpLG8rK31yZXR1cm4gcn0odSxFKTtlbHNle3ZhciBEPVoobiwiaG91cjEyIiwiYm9vbGVhbiIpO3UuaG91cjEyPXZvaWQgMD09PUQ/Xy5ob3VyMTI6RCx3PWZ1bmN0aW9uKGUsdCl7dmFyIG49W107Zm9yKHZhciByIGluIHhlKXAuY2FsbCh4ZSxyKSYmdm9pZCAwIT09ZVsiW1siK3IrIl1dIl0mJm4ucHVzaChyKTtpZigxPT09bi5sZW5ndGgpe3ZhciBvPWZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoX2VbZV0mJl9lW2VdW3RdKXJldHVybiBuPXtvcmlnaW5hbFBhdHRlcm46X2VbZV1bdF0sXzppKHt9LGUsdCksZXh0ZW5kZWRQYXR0ZXJuOiJ7IitlKyJ9In0saShuLGUsdCksaShuLCJwYXR0ZXJuMTIiLCJ7IitlKyJ9IiksaShuLCJwYXR0ZXJuIiwieyIrZSsifSIpLG59KG5bMF0sZVsiW1siK25bMF0rIl1dIl0pO2lmKG8pcmV0dXJuIG99dmFyIGE9LTEvMCx1PXZvaWQgMCxzPTAsbD10Lmxlbmd0aDtmb3IoO3M8bDspe3ZhciBjPXRbc10sZj0wO2Zvcih2YXIgZCBpbiB4ZSlpZihwLmNhbGwoeGUsZCkpe3ZhciBoPWVbIltbIitkKyJdXSJdLG09cC5jYWxsKGMsZCk/Y1tkXTp2b2lkIDAsdj1wLmNhbGwoYy5fLGQpP2MuX1tkXTp2b2lkIDA7aWYoaCE9PXYmJihmLT0yKSx2b2lkIDA9PT1oJiZ2b2lkIDAhPT1tKWYtPTIwO2Vsc2UgaWYodm9pZCAwIT09aCYmdm9pZCAwPT09bSlmLT0xMjA7ZWxzZXt2YXIgZz1bIjItZGlnaXQiLCJudW1lcmljIiwibmFycm93Iiwic2hvcnQiLCJsb25nIl0sYj15LmNhbGwoZyxoKSx3PXkuY2FsbChnLG0pLF89TWF0aC5tYXgoTWF0aC5taW4ody1iLDIpLC0yKTt3PD0xJiZiPj0yfHx3Pj0yJiZiPD0xP18+MD9mLT02Ol88MCYmKGYtPTgpOl8+MT9mLT0zOl88LTEmJihmLT02KX19Yy5fLmhvdXIxMiE9PWUuaG91cjEyJiYoZi09MSksZj5hJiYoYT1mLHU9YykscysrfXJldHVybiB1fSh1LEUpfWZvcih2YXIgVCBpbiB4ZSlpZihwLmNhbGwoeGUsVCkmJnAuY2FsbCh3LFQpKXt2YXIgTT13W1RdO009dy5fJiZwLmNhbGwody5fLFQpP3cuX1tUXTpNLHJbIltbIitUKyJdXSJdPU19dmFyIE49dm9pZCAwLGo9WihuLCJob3VyMTIiLCJib29sZWFuIik7aWYoclsiW1tob3VyXV0iXSlpZihqPXZvaWQgMD09PWo/Xy5ob3VyMTI6aixyWyJbW2hvdXIxMl1dIl09aiwhMD09PWope3ZhciBMPV8uaG91ck5vMDtyWyJbW2hvdXJObzBdXSJdPUwsTj13LnBhdHRlcm4xMn1lbHNlIE49dy5wYXR0ZXJuO2Vsc2UgTj13LnBhdHRlcm47cmV0dXJuIHJbIltbcGF0dGVybl1dIl09TixyWyJbW2JvdW5kRm9ybWF0XV0iXT12b2lkIDAsclsiW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0iXT0hMCxkJiYoZS5mb3JtYXQ9RGUuY2FsbChlKSksbygpLGV9aChYLCJEYXRlVGltZUZvcm1hdCIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTprZX0pLGgoa2UsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk7dmFyIHhlPXt3ZWVrZGF5OlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0sZXJhOlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0seWVhcjpbIjItZGlnaXQiLCJudW1lcmljIl0sbW9udGg6WyIyLWRpZ2l0IiwibnVtZXJpYyIsIm5hcnJvdyIsInNob3J0IiwibG9uZyJdLGRheTpbIjItZGlnaXQiLCJudW1lcmljIl0saG91cjpbIjItZGlnaXQiLCJudW1lcmljIl0sbWludXRlOlsiMi1kaWdpdCIsIm51bWVyaWMiXSxzZWNvbmQ6WyIyLWRpZ2l0IiwibnVtZXJpYyJdLHRpbWVab25lTmFtZTpbInNob3J0IiwibG9uZyJdfTtmdW5jdGlvbiBTZShlLHQsbil7aWYodm9pZCAwPT09ZSllPW51bGw7ZWxzZXt2YXIgcj1EKGUpO2Zvcih2YXIgbyBpbiBlPW5ldyBDLHIpZVtvXT1yW29dfWU9bShlKTt2YXIgYT0hMDtyZXR1cm4iZGF0ZSIhPT10JiYiYW55IiE9PXR8fHZvaWQgMD09PWUud2Vla2RheSYmdm9pZCAwPT09ZS55ZWFyJiZ2b2lkIDA9PT1lLm1vbnRoJiZ2b2lkIDA9PT1lLmRheXx8KGE9ITEpLCJ0aW1lIiE9PXQmJiJhbnkiIT09dHx8dm9pZCAwPT09ZS5ob3VyJiZ2b2lkIDA9PT1lLm1pbnV0ZSYmdm9pZCAwPT09ZS5zZWNvbmR8fChhPSExKSwhYXx8ImRhdGUiIT09biYmImFsbCIhPT1ufHwoZS55ZWFyPWUubW9udGg9ZS5kYXk9Im51bWVyaWMiKSwhYXx8InRpbWUiIT09biYmImFsbCIhPT1ufHwoZS5ob3VyPWUubWludXRlPWUuc2Vjb25kPSJudW1lcmljIiksZX1mdW5jdGlvbiBEZSgpe3ZhciBlPW51bGwhPT10aGlzJiYib2JqZWN0Ij09PWMudHlwZW9mKHRoaXMpJiZQKHRoaXMpO2lmKCFlfHwhZVsiW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0iXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGhpc2AgdmFsdWUgZm9yIGZvcm1hdCgpIGlzIG5vdCBhbiBpbml0aWFsaXplZCBJbnRsLkRhdGVUaW1lRm9ybWF0IG9iamVjdC4iKTtpZih2b2lkIDA9PT1lWyJbW2JvdW5kRm9ybWF0XV0iXSl7dmFyIHQ9RS5jYWxsKChmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT92b2lkIDA6YXJndW1lbnRzWzBdLHQ9dm9pZCAwPT09ZT9EYXRlLm5vdygpOlQoZSk7cmV0dXJuIE1lKHRoaXMsdCl9KSx0aGlzKTtlWyJbW2JvdW5kRm9ybWF0XV0iXT10fXJldHVybiBlWyJbW2JvdW5kRm9ybWF0XV0iXX1mdW5jdGlvbiBUZShlLHQpe2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB2YWxpZCBkYXRlIHBhc3NlZCB0byBmb3JtYXQiKTt2YXIgbj1lLl9fZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGspO1MoKTtmb3IodmFyIHIsbyxhLGksdT1uWyJbW2xvY2FsZV1dIl0scz1uZXcgWC5OdW1iZXJGb3JtYXQoW3VdLHt1c2VHcm91cGluZzohMX0pLGw9bmV3IFguTnVtYmVyRm9ybWF0KFt1XSx7bWluaW11bUludGVnZXJEaWdpdHM6Mix1c2VHcm91cGluZzohMX0pLGM9KHI9dCxuWyJbW2NhbGVuZGFyXV0iXSxvPW5bIltbdGltZVpvbmVdXSJdLG5ldyBDKHsiW1t3ZWVrZGF5XV0iOihhPW5ldyBEYXRlKHIpKVsoaT0iZ2V0Iisob3x8IiIpKSsiRGF5Il0oKSwiW1tlcmFdXSI6KyhhW2krIkZ1bGxZZWFyIl0oKT49MCksIltbeWVhcl1dIjphW2krIkZ1bGxZZWFyIl0oKSwiW1ttb250aF1dIjphW2krIk1vbnRoIl0oKSwiW1tkYXldXSI6YVtpKyJEYXRlIl0oKSwiW1tob3VyXV0iOmFbaSsiSG91cnMiXSgpLCJbW21pbnV0ZV1dIjphW2krIk1pbnV0ZXMiXSgpLCJbW3NlY29uZF1dIjphW2krIlNlY29uZHMiXSgpLCJbW2luRFNUXV0iOiExfSkpLGY9blsiW1twYXR0ZXJuXV0iXSxkPW5ldyB4LHA9MCxoPWYuaW5kZXhPZigieyIpLHk9MCxtPW5bIltbZGF0YUxvY2FsZV1dIl0sdj1PLkRhdGVUaW1lRm9ybWF0WyJbW2xvY2FsZURhdGFdXSJdW21dLmNhbGVuZGFycyxnPW5bIltbY2FsZW5kYXJdXSJdOy0xIT09aDspe3ZhciB3PXZvaWQgMDtpZigtMT09PSh5PWYuaW5kZXhPZigifSIsaCkpKXRocm93IG5ldyBFcnJvcigiVW5jbG9zZWQgcGF0dGVybiIpO2g+cCYmYi5jYWxsKGQse3R5cGU6ImxpdGVyYWwiLHZhbHVlOmYuc3Vic3RyaW5nKHAsaCl9KTt2YXIgXz1mLnN1YnN0cmluZyhoKzEseSk7aWYoeGUuaGFzT3duUHJvcGVydHkoXykpe3ZhciBFPW5bIltbIitfKyJdXSJdLEQ9Y1siW1siK18rIl1dIl07aWYoInllYXIiPT09XyYmRDw9MD9EPTEtRDoibW9udGgiPT09Xz9EKys6ImhvdXIiPT09XyYmITA9PT1uWyJbW2hvdXIxMl1dIl0mJjA9PT0oRCU9MTIpJiYhMD09PW5bIltbaG91ck5vMF1dIl0mJihEPTEyKSwibnVtZXJpYyI9PT1FKXc9aWUocyxEKTtlbHNlIGlmKCIyLWRpZ2l0Ij09PUUpKHc9aWUobCxEKSkubGVuZ3RoPjImJih3PXcuc2xpY2UoLTIpKTtlbHNlIGlmKEUgaW4gRWUpc3dpdGNoKF8pe2Nhc2UibW9udGgiOnc9T2UodixnLCJtb250aHMiLEUsY1siW1siK18rIl1dIl0pO2JyZWFrO2Nhc2Uid2Vla2RheSI6dHJ5e3c9T2UodixnLCJkYXlzIixFLGNbIltbIitfKyJdXSJdKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHdlZWtkYXkgZGF0YSBmb3IgbG9jYWxlICIrdSl9YnJlYWs7Y2FzZSJ0aW1lWm9uZU5hbWUiOnc9IiI7YnJlYWs7Y2FzZSJlcmEiOnRyeXt3PU9lKHYsZywiZXJhcyIsRSxjWyJbWyIrXysiXV0iXSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBlcmEgZGF0YSBmb3IgbG9jYWxlICIrdSl9YnJlYWs7ZGVmYXVsdDp3PWNbIltbIitfKyJdXSJdfWIuY2FsbChkLHt0eXBlOl8sdmFsdWU6d30pfWVsc2UgaWYoImFtcG0iPT09Xyl7dz1PZSh2LGcsImRheVBlcmlvZHMiLGNbIltbaG91cl1dIl0+MTE/InBtIjoiYW0iLG51bGwpLGIuY2FsbChkLHt0eXBlOiJkYXlQZXJpb2QiLHZhbHVlOnd9KX1lbHNlIGIuY2FsbChkLHt0eXBlOiJsaXRlcmFsIix2YWx1ZTpmLnN1YnN0cmluZyhoLHkrMSl9KTtwPXkrMSxoPWYuaW5kZXhPZigieyIscCl9cmV0dXJuIHk8Zi5sZW5ndGgtMSYmYi5jYWxsKGQse3R5cGU6ImxpdGVyYWwiLHZhbHVlOmYuc3Vic3RyKHkrMSl9KSxkfWZ1bmN0aW9uIE1lKGUsdCl7Zm9yKHZhciBuPVRlKGUsdCkscj0iIixvPTA7bi5sZW5ndGg+bztvKyspe3IrPW5bb10udmFsdWV9cmV0dXJuIHJ9ZnVuY3Rpb24gUGUoZSx0KXtmb3IodmFyIG49VGUoZSx0KSxyPVtdLG89MDtuLmxlbmd0aD5vO28rKyl7dmFyIGE9bltvXTtyLnB1c2goe3R5cGU6YS50eXBlLHZhbHVlOmEudmFsdWV9KX1yZXR1cm4gcn1PLkRhdGVUaW1lRm9ybWF0PXsiW1thdmFpbGFibGVMb2NhbGVzXV0iOltdLCJbW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dIjpbImNhIiwibnUiXSwiW1tsb2NhbGVEYXRhXV0iOnt9fSxoKFguRGF0ZVRpbWVGb3JtYXQsInN1cHBvcnRlZExvY2FsZXNPZiIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpFLmNhbGwoKGZ1bmN0aW9uKGUpe2lmKCFwLmNhbGwodGhpcywiW1thdmFpbGFibGVMb2NhbGVzXV0iKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzdXBwb3J0ZWRMb2NhbGVzT2YoKSBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3ZhciB0PVMoKSxuPWFyZ3VtZW50c1sxXSxyPXRoaXNbIltbYXZhaWxhYmxlTG9jYWxlc11dIl0sbz1XKGUpO3JldHVybiB0KCksSihyLG8sbil9KSxPLk51bWJlckZvcm1hdCl9KSxoKFguRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCJmb3JtYXQiLHtjb25maWd1cmFibGU6ITAsZ2V0OkRlfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFguRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCJmb3JtYXRUb1BhcnRzIix7ZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/dm9pZCAwOmFyZ3VtZW50c1swXSx0PW51bGwhPT10aGlzJiYib2JqZWN0Ij09PWMudHlwZW9mKHRoaXMpJiZQKHRoaXMpO2lmKCF0fHwhdFsiW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0iXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGhpc2AgdmFsdWUgZm9yIGZvcm1hdFRvUGFydHMoKSBpcyBub3QgYW4gaW5pdGlhbGl6ZWQgSW50bC5EYXRlVGltZUZvcm1hdCBvYmplY3QuIik7dmFyIG49dm9pZCAwPT09ZT9EYXRlLm5vdygpOlQoZSk7cmV0dXJuIFBlKHRoaXMsbil9fSksaChYLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwicmVzb2x2ZWRPcHRpb25zIix7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAwLHQ9bmV3IEMsbj1bImxvY2FsZSIsImNhbGVuZGFyIiwibnVtYmVyaW5nU3lzdGVtIiwidGltZVpvbmUiLCJob3VyMTIiLCJ3ZWVrZGF5IiwiZXJhIiwieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsInRpbWVab25lTmFtZSJdLHI9bnVsbCE9PXRoaXMmJiJvYmplY3QiPT09Yy50eXBlb2YodGhpcykmJlAodGhpcyk7aWYoIXJ8fCFyWyJbW2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXRdXSJdKXRocm93IG5ldyBUeXBlRXJyb3IoImB0aGlzYCB2YWx1ZSBmb3IgcmVzb2x2ZWRPcHRpb25zKCkgaXMgbm90IGFuIGluaXRpYWxpemVkIEludGwuRGF0ZVRpbWVGb3JtYXQgb2JqZWN0LiIpO2Zvcih2YXIgbz0wLGE9bi5sZW5ndGg7bzxhO28rKylwLmNhbGwocixlPSJbWyIrbltvXSsiXV0iKSYmKHRbbltvXV09e3ZhbHVlOnJbZV0sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KTtyZXR1cm4gbSh7fSx0KX19KTt2YXIgTmU9WC5fX2xvY2FsZVNlbnNpdGl2ZVByb3Rvcz17TnVtYmVyOnt9LERhdGU6e319O05lLk51bWJlci50b0xvY2FsZVN0cmluZz1mdW5jdGlvbigpe2lmKCJbb2JqZWN0IE51bWJlcl0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoImB0aGlzYCB2YWx1ZSBtdXN0IGJlIGEgbnVtYmVyIGZvciBOdW1iZXIucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nKCkiKTtyZXR1cm4gaWUobmV3IHRlKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pLHRoaXMpfSxOZS5EYXRlLnRvTG9jYWxlU3RyaW5nPWZ1bmN0aW9uKCl7aWYoIltvYmplY3QgRGF0ZV0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoImB0aGlzYCB2YWx1ZSBtdXN0IGJlIGEgRGF0ZSBpbnN0YW5jZSBmb3IgRGF0ZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcoKSIpO3ZhciBlPSt0aGlzO2lmKGlzTmFOKGUpKXJldHVybiJJbnZhbGlkIERhdGUiO3ZhciB0PWFyZ3VtZW50c1swXSxuPWFyZ3VtZW50c1sxXSxyPW5ldyBrZSh0LG49U2UobiwiYW55IiwiYWxsIikpO3JldHVybiBNZShyLGUpfSxOZS5EYXRlLnRvTG9jYWxlRGF0ZVN0cmluZz1mdW5jdGlvbigpe2lmKCJbb2JqZWN0IERhdGVdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJgdGhpc2AgdmFsdWUgbXVzdCBiZSBhIERhdGUgaW5zdGFuY2UgZm9yIERhdGUucHJvdG90eXBlLnRvTG9jYWxlRGF0ZVN0cmluZygpIik7dmFyIGU9K3RoaXM7aWYoaXNOYU4oZSkpcmV0dXJuIkludmFsaWQgRGF0ZSI7dmFyIHQ9YXJndW1lbnRzWzBdLG49YXJndW1lbnRzWzFdLHI9bmV3IGtlKHQsbj1TZShuLCJkYXRlIiwiZGF0ZSIpKTtyZXR1cm4gTWUocixlKX0sTmUuRGF0ZS50b0xvY2FsZVRpbWVTdHJpbmc9ZnVuY3Rpb24oKXtpZigiW29iamVjdCBEYXRlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcykpdGhyb3cgbmV3IFR5cGVFcnJvcigiYHRoaXNgIHZhbHVlIG11c3QgYmUgYSBEYXRlIGluc3RhbmNlIGZvciBEYXRlLnByb3RvdHlwZS50b0xvY2FsZVRpbWVTdHJpbmcoKSIpO3ZhciBlPSt0aGlzO2lmKGlzTmFOKGUpKXJldHVybiJJbnZhbGlkIERhdGUiO3ZhciB0PWFyZ3VtZW50c1swXSxuPWFyZ3VtZW50c1sxXSxyPW5ldyBrZSh0LG49U2UobiwidGltZSIsInRpbWUiKSk7cmV0dXJuIE1lKHIsZSl9LGgoWCwiX19hcHBseUxvY2FsZVNlbnNpdGl2ZVByb3RvdHlwZXMiLHt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gaChOdW1iZXIucHJvdG90eXBlLCJ0b0xvY2FsZVN0cmluZyIse3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpOZS5OdW1iZXIudG9Mb2NhbGVTdHJpbmd9KSxoKERhdGUucHJvdG90eXBlLCJ0b0xvY2FsZVN0cmluZyIse3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpOZS5EYXRlLnRvTG9jYWxlU3RyaW5nfSksTmUuRGF0ZSlwLmNhbGwoTmUuRGF0ZSxlKSYmaChEYXRlLnByb3RvdHlwZSxlLHt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6TmUuRGF0ZVtlXX0pfX0pLGgoWCwiX19hZGRMb2NhbGVEYXRhIix7dmFsdWU6ZnVuY3Rpb24oZSl7aWYoIUsoZS5sb2NhbGUpKXRocm93IG5ldyBFcnJvcigiT2JqZWN0IHBhc3NlZCBkb2Vzbid0IGlkZW50aWZ5IGl0c2VsZiB3aXRoIGEgdmFsaWQgbGFuZ3VhZ2UgdGFnIik7IWZ1bmN0aW9uKGUsdCl7aWYoIWUubnVtYmVyKXRocm93IG5ldyBFcnJvcigiT2JqZWN0IHBhc3NlZCBkb2Vzbid0IGNvbnRhaW4gbG9jYWxlIGRhdGEgZm9yIEludGwuTnVtYmVyRm9ybWF0Iik7dmFyIG49dm9pZCAwLHI9W3RdLG89dC5zcGxpdCgiLSIpO28ubGVuZ3RoPjImJjQ9PT1vWzFdLmxlbmd0aCYmYi5jYWxsKHIsb1swXSsiLSIrb1syXSk7Zm9yKDtuPV8uY2FsbChyKTspYi5jYWxsKE8uTnVtYmVyRm9ybWF0WyJbW2F2YWlsYWJsZUxvY2FsZXNdXSJdLG4pLE8uTnVtYmVyRm9ybWF0WyJbW2xvY2FsZURhdGFdXSJdW25dPWUubnVtYmVyLGUuZGF0ZSYmKGUuZGF0ZS5udT1lLm51bWJlci5udSxiLmNhbGwoTy5EYXRlVGltZUZvcm1hdFsiW1thdmFpbGFibGVMb2NhbGVzXV0iXSxuKSxPLkRhdGVUaW1lRm9ybWF0WyJbW2xvY2FsZURhdGFdXSJdW25dPWUuZGF0ZSk7dm9pZCAwPT09RiYmZnVuY3Rpb24oZSl7Rj1lfSh0KX0oZSxlLmxvY2FsZSl9fSksaChYLCJfX2Rpc2FibGVSZWdFeHBSZXN0b3JlIix7dmFsdWU6ZnVuY3Rpb24oKXtPLmRpc2FibGVSZWdFeHBSZXN0b3JlPSEwfX0pLGUuZXhwb3J0cz1YfSkuY2FsbCh0aGlzLG4oInlMcGoiKSl9LGZNWmc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJtRnlWIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107cmV0dXJuIGUuZmluZEVudGl0eVJhbmdlcygoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0RW50aXR5KCk9PT10fSksKGZ1bmN0aW9uKGUsdCl7bi5wdXNoKHtzdGFydDplLGVuZDp0fSl9KSksbi5sZW5ndGh8fHIoITEpLG59fSxmTkpoOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSmJXWCIpLG89bigiYUdKRCIpLGE9bigiWFVlaSIpLGk9bigiWnk1MyIpO2Z1bmN0aW9uIHUoZSx0LG4pe3ZhciByPSJzdHJpbmciPT10eXBlb2YgZT91Ll9fcGFyc2UoZSk6ZTtpZighcnx8Im1lc3NhZ2VGb3JtYXRQYXR0ZXJuIiE9PXIudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBIG1lc3NhZ2UgbXVzdCBiZSBwcm92aWRlZCBhcyBhIFN0cmluZyBvciBBU1QuIik7bj10aGlzLl9tZXJnZUZvcm1hdHModS5mb3JtYXRzLG4pLG8uZGVmaW5lUHJvcGVydHkodGhpcywiX2xvY2FsZSIse3ZhbHVlOnRoaXMuX3Jlc29sdmVMb2NhbGUodCl9KTt2YXIgYT10aGlzLl9maW5kUGx1cmFsUnVsZUZ1bmN0aW9uKHRoaXMuX2xvY2FsZSksaT10aGlzLl9jb21waWxlUGF0dGVybihyLHQsbixhKSxzPXRoaXM7dGhpcy5mb3JtYXQ9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBzLl9mb3JtYXQoaSx0KX1jYXRjaCh0KXt0aHJvdyB0LnZhcmlhYmxlSWQ/bmV3IEVycm9yKCJUaGUgaW50bCBzdHJpbmcgY29udGV4dCB2YXJpYWJsZSAnIit0LnZhcmlhYmxlSWQrIicgd2FzIG5vdCBwcm92aWRlZCB0byB0aGUgc3RyaW5nICciK2UrIiciKTp0fX19dC5kZWZhdWx0PXUsby5kZWZpbmVQcm9wZXJ0eSh1LCJmb3JtYXRzIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp7bnVtYmVyOntjdXJyZW5jeTp7c3R5bGU6ImN1cnJlbmN5In0scGVyY2VudDp7c3R5bGU6InBlcmNlbnQifX0sZGF0ZTp7c2hvcnQ6e21vbnRoOiJudW1lcmljIixkYXk6Im51bWVyaWMiLHllYXI6IjItZGlnaXQifSxtZWRpdW06e21vbnRoOiJzaG9ydCIsZGF5OiJudW1lcmljIix5ZWFyOiJudW1lcmljIn0sbG9uZzp7bW9udGg6ImxvbmciLGRheToibnVtZXJpYyIseWVhcjoibnVtZXJpYyJ9LGZ1bGw6e3dlZWtkYXk6ImxvbmciLG1vbnRoOiJsb25nIixkYXk6Im51bWVyaWMiLHllYXI6Im51bWVyaWMifX0sdGltZTp7c2hvcnQ6e2hvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyJ9LG1lZGl1bTp7aG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMifSxsb25nOntob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCJ9LGZ1bGw6e2hvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In19fX0pLG8uZGVmaW5lUHJvcGVydHkodSwiX19sb2NhbGVEYXRhX18iLHt2YWx1ZTpvLm9iakNyZWF0ZShudWxsKX0pLG8uZGVmaW5lUHJvcGVydHkodSwiX19hZGRMb2NhbGVEYXRhIix7dmFsdWU6ZnVuY3Rpb24oZSl7aWYoIWV8fCFlLmxvY2FsZSl0aHJvdyBuZXcgRXJyb3IoIkxvY2FsZSBkYXRhIHByb3ZpZGVkIHRvIEludGxNZXNzYWdlRm9ybWF0IGlzIG1pc3NpbmcgYSBgbG9jYWxlYCBwcm9wZXJ0eSIpO3UuX19sb2NhbGVEYXRhX19bZS5sb2NhbGUudG9Mb3dlckNhc2UoKV09ZX19KSxvLmRlZmluZVByb3BlcnR5KHUsIl9fcGFyc2UiLHt2YWx1ZTppLmRlZmF1bHQucGFyc2V9KSxvLmRlZmluZVByb3BlcnR5KHUsImRlZmF1bHRMb2NhbGUiLHtlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHUucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucz1mdW5jdGlvbigpe3JldHVybntsb2NhbGU6dGhpcy5fbG9jYWxlfX0sdS5wcm90b3R5cGUuX2NvbXBpbGVQYXR0ZXJuPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgYS5kZWZhdWx0KHQsbixyKS5jb21waWxlKGUpfSx1LnByb3RvdHlwZS5fZmluZFBsdXJhbFJ1bGVGdW5jdGlvbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dS5fX2xvY2FsZURhdGFfXyxuPXRbZS50b0xvd2VyQ2FzZSgpXTtuOyl7aWYobi5wbHVyYWxSdWxlRnVuY3Rpb24pcmV0dXJuIG4ucGx1cmFsUnVsZUZ1bmN0aW9uO249bi5wYXJlbnRMb2NhbGUmJnRbbi5wYXJlbnRMb2NhbGUudG9Mb3dlckNhc2UoKV19dGhyb3cgbmV3IEVycm9yKCJMb2NhbGUgZGF0YSBhZGRlZCB0byBJbnRsTWVzc2FnZUZvcm1hdCBpcyBtaXNzaW5nIGEgYHBsdXJhbFJ1bGVGdW5jdGlvbmAgZm9yIDoiK2UpfSx1LnByb3RvdHlwZS5fZm9ybWF0PWZ1bmN0aW9uKGUsdCl7dmFyIG4sbyxhLGksdSxzLGw9IiI7Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKz0xKWlmKCJzdHJpbmciIT10eXBlb2YoYT1lW25dKSl7aWYoaT1hLmlkLCF0fHwhci5ob3AuY2FsbCh0LGkpKXRocm93KHM9bmV3IEVycm9yKCJBIHZhbHVlIG11c3QgYmUgcHJvdmlkZWQgZm9yOiAiK2kpKS52YXJpYWJsZUlkPWksczt1PXRbaV0sYS5vcHRpb25zP2wrPXRoaXMuX2Zvcm1hdChhLmdldE9wdGlvbih1KSx0KTpsKz1hLmZvcm1hdCh1KX1lbHNlIGwrPWE7cmV0dXJuIGx9LHUucHJvdG90eXBlLl9tZXJnZUZvcm1hdHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixhLGk9e307Zm9yKG4gaW4gZSlyLmhvcC5jYWxsKGUsbikmJihpW25dPWE9by5vYmpDcmVhdGUoZVtuXSksdCYmci5ob3AuY2FsbCh0LG4pJiZyLmV4dGVuZChhLHRbbl0pKTtyZXR1cm4gaX0sdS5wcm90b3R5cGUuX3Jlc29sdmVMb2NhbGU9ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1bZV0pLGU9KGV8fFtdKS5jb25jYXQodS5kZWZhdWx0TG9jYWxlKTt2YXIgdCxuLHIsbyxhPXUuX19sb2NhbGVEYXRhX187Zm9yKHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kz0xKWZvcihyPWVbdF0udG9Mb3dlckNhc2UoKS5zcGxpdCgiLSIpO3IubGVuZ3RoOyl7aWYobz1hW3Iuam9pbigiLSIpXSlyZXR1cm4gby5sb2NhbGU7ci5wb3AoKX12YXIgaT1lLnBvcCgpO3Rocm93IG5ldyBFcnJvcigiTm8gbG9jYWxlIGRhdGEgaGFzIGJlZW4gYWRkZWQgdG8gSW50bE1lc3NhZ2VGb3JtYXQgZm9yOiAiK2Uuam9pbigiLCAiKSsiLCBvciB0aGUgZGVmYXVsdCBsb2NhbGU6ICIraSl9fSxmYmhmOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZHVtcENsYXNzTGlzdHM9ZnVuY3Rpb24oKXswfTt2YXIgcj17fSxvPXt9O3QuYWRkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG49ZS5jbGFzc0xpc3QsYT0iaHRtbCI9PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9yOm8sdm9pZCB0LnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7ZVt0XXx8KGVbdF09MCksZVt0XSs9MX0oYSxlKSxuLmFkZChlKX0pKTt2YXIgbixhfSx0LnJlbW92ZT1mdW5jdGlvbihlLHQpe3JldHVybiBuPWUuY2xhc3NMaXN0LGE9Imh0bWwiPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/cjpvLHZvaWQgdC5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2VbdF0mJihlW3RdLT0xKX0oYSxlKSwwPT09YVtlXSYmbi5yZW1vdmUoZSl9KSk7dmFyIG4sYX19LGZ2UjM6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siYmFubmVyIjp7Im9yY2hhcmRHbyI6eyJhbmNob3JUZXh0IjoiVMOpbMOpY2hhcmdleiBPcmNoYXJkR28gbWFpbnRlbmFudCIsImRlc2NyaXB0aW9uIjoiR2FyZGV6IHVuIMWTaWwgc3VyIHZvcyByw6lzdWx0YXRzLCBtw6ptZSBlbiBkw6lwbGFjZW1lbnQgISJ9fSwiZXJyb3JzIjp7InBhZ2VOb3RGb3VuZCI6IkTDqXNvbMOpLCBsYSBwYWdlIGRlbWFuZMOpZSBuXCdleGlzdGUgcGFzLiJ9LCJmb290ZXIiOnsiaGVscCI6ImFpZGUgZGUgbGEgV29ya3N0YXRpb24iLCJwcml2YWN5UG9saWN5IjoicG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kiLCJ0ZXJtc0FuZENvbmRpdGlvbnMiOiJjb25kaXRpb25zIGfDqW7DqXJhbGVzIGRcJ3V0aWxpc2F0aW9uIiwidHJhZGVtYXJrIjoiVGhlIE9yY2hhcmQgZXN0IHVuZSBtYXJxdWUgZMOpcG9zw6llIGV0IGxlIGxvZ28gVGhlIE9yY2hhcmQgZXN0IGxlIGxvZ28gY29tbWVyY2lhbCBkZSBPcmNoYXJkIEVudGVycHJpc2VzIE5ZLCBJbmMuVG91cyBkcm9pdHMgcsOpc2VydsOpcy4ifSwiZ2xvYmFsU2VhcmNoIjp7InBsYWNlaG9sZGVyIjoiUmVjaGVyY2hlciB1biBQcm9qZXQsIFByb2R1aXQsIEFydGlzdGUuLi4ifSwiaGVhZGVyIjp7ImFjY291bnRpbmciOiJDb21wdGFiaWxpdMOpIiwiYW5hbHl0aWNzIjoiQW5hbHl0aWNzIiwiY2F0YWxvZyI6IkNhdGFsb2d1ZSIsImRyb3Bkb3duIjp7ImFkbWluIjoiQWRtaW4iLCJkZWZhdWx0cyI6IlBhciBkw6lmYXV0IiwibG9nT3V0IjoiRMOpY29ubmV4aW9uIiwibG9nb3MiOiJMb2dvcyIsIm15QWNjb3VudCI6Ik1vbiBjb21wdGUiLCJwcm9maWxlIjoiUHJvZmlsIn0sImhlbHAiOiJBaWRlIiwibWFya2V0aW5nIjoiTWFya2V0aW5nIn0sInN1YmhlYWRlciI6eyJhbmFseXRpY3MiOnsiYXVkaWVuY2UiOiJBdWRpZW5jZSIsImVuZ2FnZW1lbnQiOiJFbmdhZ2VtZW50IiwiZmlsbVRyYW5zcGFyZW5jeSI6IlRyYW5zcGFyZW5jZSBGaWxtIiwiaGVhdG1hcCI6IkhlYXRtYXAiLCJvdmVydmlldyI6IkFwZXLDp3UiLCJwaHlzaWNhbFJlcG9ydGluZyI6IlJhcHBvcnQgUGh5c2lxdWUiLCJ0b3BDaGFydHMiOiJUb3AgQ2hhcnRzIn19fScpfSxmeU9ZOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigibEZKbiIpLG89bigiTTZyYyIpLGE9bigiaWxXYSIpLGk9bigiYzIwMyIpLHU9bigiRFlLaCIpLHM9bigiSlBjdiIpLGw9bigiTDJFQSIpLGM9bigiODFLSSIpLGY9bigibUZ5ViIpLGQ9bigiTWg4eSIpLHA9bigiYnU1QiIpLGg9bigiZkV5VyIpLHk9bigiQjBhYiIpLG09cy5PcmRlcmVkU2V0LHY9e3JlcGxhY2VUZXh0OmZ1bmN0aW9uKGUsdCxuLG8sYSl7dmFyIGk9cChlLHQpLHU9aChpLHQpLHM9ci5jcmVhdGUoe3N0eWxlOm98fG0oKSxlbnRpdHk6YXx8bnVsbH0pO3JldHVybiBjKHUsdS5nZXRTZWxlY3Rpb25BZnRlcigpLG4scyl9LGluc2VydFRleHQ6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gdC5pc0NvbGxhcHNlZCgpfHxmKCExKSx2LnJlcGxhY2VUZXh0KGUsdCxuLHIsbyl9LG1vdmVUZXh0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj11KGUsdCksbz12LnJlbW92ZVJhbmdlKGUsdCwiYmFja3dhcmQiKTtyZXR1cm4gdi5yZXBsYWNlV2l0aEZyYWdtZW50KG8sbixyKX0scmVwbGFjZVdpdGhGcmFnbWVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOiJSRVBMQUNFX1dJVEhfTkVXX0RBVEEiLG89cChlLHQpLGE9aChvLHQpO3JldHVybiBsKGEsYS5nZXRTZWxlY3Rpb25BZnRlcigpLG4scil9LHJlbW92ZVJhbmdlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGEsdTt0LmdldElzQmFja3dhcmQoKSYmKHQ9dC5tZXJnZSh7YW5jaG9yS2V5OnQuZ2V0Rm9jdXNLZXkoKSxhbmNob3JPZmZzZXQ6dC5nZXRGb2N1c09mZnNldCgpLGZvY3VzS2V5OnQuZ2V0QW5jaG9yS2V5KCksZm9jdXNPZmZzZXQ6dC5nZXRBbmNob3JPZmZzZXQoKSxpc0JhY2t3YXJkOiExfSkpLHI9dC5nZXRBbmNob3JLZXkoKSxvPXQuZ2V0Rm9jdXNLZXkoKSxhPWUuZ2V0QmxvY2tGb3JLZXkociksdT1lLmdldEJsb2NrRm9yS2V5KG8pO3ZhciBzPXQuZ2V0U3RhcnRPZmZzZXQoKSxsPXQuZ2V0RW5kT2Zmc2V0KCksYz1hLmdldEVudGl0eUF0KHMpLGY9dS5nZXRFbnRpdHlBdChsLTEpO2lmKHI9PT1vJiZjJiZjPT09Zil7dmFyIGQ9aShlLmdldEVudGl0eU1hcCgpLGEsdSx0LG4pO3JldHVybiBoKGUsZCl9dmFyIHk9cChlLHQpO3JldHVybiBoKHksdCl9LHNwbGl0QmxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj1wKGUsdCkscj1oKG4sdCk7cmV0dXJuIHkocixyLmdldFNlbGVjdGlvbkFmdGVyKCkpfSxhcHBseUlubGluZVN0eWxlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gby5hZGQoZSx0LG4pfSxyZW1vdmVJbmxpbmVTdHlsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG8ucmVtb3ZlKGUsdCxuKX0sc2V0QmxvY2tUeXBlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZChlLHQsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdlKHt0eXBlOm4sZGVwdGg6MH0pfSkpfSxzZXRCbG9ja0RhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkKGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVyZ2Uoe2RhdGE6bn0pfSkpfSxtZXJnZUJsb2NrRGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGQoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXJnZSh7ZGF0YTplLmdldERhdGEoKS5tZXJnZShuKX0pfSkpfSxhcHBseUVudGl0eTpmdW5jdGlvbihlLHQsbil7dmFyIHI9cChlLHQpO3JldHVybiBhKHIsdCxuKX19O2UuZXhwb3J0cz12fSxmeVJ5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe28oZSx0LG5bdF0pfSkpfXJldHVybiBlfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBhPW4oIlllVmUiKSxpPW4oImxGSm4iKSx1PW4oIjh1UW0iKSxzPW4oIkpMN1QiKSxsPW4oImZ5T1kiKSxjPW4oIjNzT0oiKSxmPW4oInJKWTEiKSxkPW4oImN3RlkiKSxwPW4oIkpQY3YiKSxoPW4oIkkyVWciKSx5PWQoImRyYWZ0X3RyZWVfZGF0YV9zdXBwb3J0IiksbT15P3M6dSx2PXAuTGlzdCxnPXAuUmVwZWF0LGI9e2luc2VydEF0b21pY0Jsb2NrOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLmdldEN1cnJlbnRDb250ZW50KCksdT1lLmdldFNlbGVjdGlvbigpLHM9bC5yZW1vdmVSYW5nZShvLHUsImJhY2t3YXJkIiksZD1zLmdldFNlbGVjdGlvbkFmdGVyKCkscD1sLnNwbGl0QmxvY2socyxkKSxoPXAuZ2V0U2VsZWN0aW9uQWZ0ZXIoKSxiPWwuc2V0QmxvY2tUeXBlKHAsaCwiYXRvbWljIiksdz1pLmNyZWF0ZSh7ZW50aXR5OnR9KSxfPXtrZXk6ZigpLHR5cGU6ImF0b21pYyIsdGV4dDpuLGNoYXJhY3Rlckxpc3Q6dihnKHcsbi5sZW5ndGgpKX0sRT17a2V5OmYoKSx0eXBlOiJ1bnN0eWxlZCJ9O3kmJihfPXIoe30sXyx7bmV4dFNpYmxpbmc6RS5rZXl9KSxFPXIoe30sRSx7cHJldlNpYmxpbmc6Xy5rZXl9KSk7dmFyIE89W25ldyBtKF8pLG5ldyBtKEUpXSxrPWEuY3JlYXRlRnJvbUFycmF5KE8pLEM9bC5yZXBsYWNlV2l0aEZyYWdtZW50KGIsaCxrKSx4PUMubWVyZ2Uoe3NlbGVjdGlvbkJlZm9yZTp1LHNlbGVjdGlvbkFmdGVyOkMuZ2V0U2VsZWN0aW9uQWZ0ZXIoKS5zZXQoImhhc0ZvY3VzIiwhMCl9KTtyZXR1cm4gYy5wdXNoKGUseCwiaW5zZXJ0LWZyYWdtZW50Iil9LG1vdmVBdG9taWNCbG9jazpmdW5jdGlvbihlLHQsbixyKXt2YXIgbyxhPWUuZ2V0Q3VycmVudENvbnRlbnQoKSxpPWUuZ2V0U2VsZWN0aW9uKCk7aWYoImJlZm9yZSI9PT1yfHwiYWZ0ZXIiPT09cil7dmFyIHU9YS5nZXRCbG9ja0ZvcktleSgiYmVmb3JlIj09PXI/bi5nZXRTdGFydEtleSgpOm4uZ2V0RW5kS2V5KCkpO289aChhLHQsdSxyKX1lbHNle3ZhciBzPWwucmVtb3ZlUmFuZ2UoYSxuLCJiYWNrd2FyZCIpLGY9cy5nZXRTZWxlY3Rpb25BZnRlcigpLGQ9cy5nZXRCbG9ja0ZvcktleShmLmdldEZvY3VzS2V5KCkpO2lmKDA9PT1mLmdldFN0YXJ0T2Zmc2V0KCkpbz1oKHMsdCxkLCJiZWZvcmUiKTtlbHNlIGlmKGYuZ2V0RW5kT2Zmc2V0KCk9PT1kLmdldExlbmd0aCgpKW89aChzLHQsZCwiYWZ0ZXIiKTtlbHNle3ZhciBwPWwuc3BsaXRCbG9jayhzLGYpLHk9cC5nZXRTZWxlY3Rpb25BZnRlcigpLG09cC5nZXRCbG9ja0ZvcktleSh5LmdldEZvY3VzS2V5KCkpO289aChwLHQsbSwiYmVmb3JlIil9fXZhciB2PW8ubWVyZ2Uoe3NlbGVjdGlvbkJlZm9yZTppLHNlbGVjdGlvbkFmdGVyOm8uZ2V0U2VsZWN0aW9uQWZ0ZXIoKS5zZXQoImhhc0ZvY3VzIiwhMCl9KTtyZXR1cm4gYy5wdXNoKGUsdiwibW92ZS1ibG9jayIpfX07ZS5leHBvcnRzPWJ9LGcwdmE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz1pKG4oInExdEkiKSksYT1pKG4oIkIwTFoiKSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gdShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHMoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgbD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIHUodGhpcyx0KSxzKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGEuZGVmYXVsdCxyKHt9LHRoaXMucHJvcHMse2V4YWN0OiEwfSkpfSx0fShvLmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9bCxlLmV4cG9ydHM9dC5kZWZhdWx0fSxnQ0pxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQucHJpbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsci52aXNpdCkoZSx7bGVhdmU6YX0pfTt2YXIgcj1uKCJ0cUN4Iiksbz1uKCJ5UWJoIik7dmFyIGE9e05hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWV9LFZhcmlhYmxlOmZ1bmN0aW9uKGUpe3JldHVybiIkIitlLm5hbWV9LERvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiB1KGUuZGVmaW5pdGlvbnMsIlxuXG4iKSsiXG4ifSxPcGVyYXRpb25EZWZpbml0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUub3BlcmF0aW9uLG49ZS5uYW1lLHI9bCgiKCIsdShlLnZhcmlhYmxlRGVmaW5pdGlvbnMsIiwgIiksIikiKSxvPXUoZS5kaXJlY3RpdmVzLCIgIiksYT1lLnNlbGVjdGlvblNldDtyZXR1cm4gbnx8b3x8cnx8InF1ZXJ5IiE9PXQ/dShbdCx1KFtuLHJdKSxvLGFdLCIgIik6YX0sVmFyaWFibGVEZWZpbml0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUudmFyaWFibGUsbj1lLnR5cGUscj1lLmRlZmF1bHRWYWx1ZSxvPWUuZGlyZWN0aXZlcztyZXR1cm4gdCsiOiAiK24rbCgiID0gIixyKStsKCIgIix1KG8sIiAiKSl9LFNlbGVjdGlvblNldDpmdW5jdGlvbihlKXtyZXR1cm4gcyhlLnNlbGVjdGlvbnMpfSxGaWVsZDpmdW5jdGlvbihlKXt2YXIgdD1lLmFsaWFzLG49ZS5uYW1lLHI9ZS5hcmd1bWVudHMsbz1lLmRpcmVjdGl2ZXMsYT1lLnNlbGVjdGlvblNldDtyZXR1cm4gdShbbCgiIix0LCI6ICIpK24rbCgiKCIsdShyLCIsICIpLCIpIiksdShvLCIgIiksYV0sIiAiKX0sQXJndW1lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZSsiOiAiK2UudmFsdWV9LEZyYWdtZW50U3ByZWFkOmZ1bmN0aW9uKGUpe3JldHVybiIuLi4iK2UubmFtZStsKCIgIix1KGUuZGlyZWN0aXZlcywiICIpKX0sSW5saW5lRnJhZ21lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50eXBlQ29uZGl0aW9uLG49ZS5kaXJlY3RpdmVzLHI9ZS5zZWxlY3Rpb25TZXQ7cmV0dXJuIHUoWyIuLi4iLGwoIm9uICIsdCksdShuLCIgIikscl0sIiAiKX0sRnJhZ21lbnREZWZpbml0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZSxuPWUudHlwZUNvbmRpdGlvbixyPWUudmFyaWFibGVEZWZpbml0aW9ucyxvPWUuZGlyZWN0aXZlcyxhPWUuc2VsZWN0aW9uU2V0O3JldHVybigiZnJhZ21lbnQgIi5jb25jYXQodCkuY29uY2F0KGwoIigiLHUociwiLCAiKSwiKSIpLCIgIikrIm9uICIuY29uY2F0KG4sIiAiKS5jb25jYXQobCgiIix1KG8sIiAiKSwiICIpKSthKX0sSW50VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWV9LEZsb2F0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWV9LFN0cmluZ1ZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5ibG9jaz8oMCxvLnByaW50QmxvY2tTdHJpbmcpKG4sImRlc2NyaXB0aW9uIj09PXQ/IiI6IiAgIik6SlNPTi5zdHJpbmdpZnkobil9LEJvb2xlYW5WYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZT8idHJ1ZSI6ImZhbHNlIn0sTnVsbFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIm51bGwifSxFbnVtVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWV9LExpc3RWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4iWyIrdShlLnZhbHVlcywiLCAiKSsiXSJ9LE9iamVjdFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiJ7Iit1KGUuZmllbGRzLCIsICIpKyJ9In0sT2JqZWN0RmllbGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZSsiOiAiK2UudmFsdWV9LERpcmVjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4iQCIrZS5uYW1lK2woIigiLHUoZS5hcmd1bWVudHMsIiwgIiksIikiKX0sTmFtZWRUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9LExpc3RUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiJbIitlLnR5cGUrIl0ifSxOb25OdWxsVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlKyIhIn0sU2NoZW1hRGVmaW5pdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGl2ZXMsbj1lLm9wZXJhdGlvblR5cGVzO3JldHVybiB1KFsic2NoZW1hIix1KHQsIiAiKSxzKG4pXSwiICIpfSxPcGVyYXRpb25UeXBlRGVmaW5pdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gZS5vcGVyYXRpb24rIjogIitlLnR5cGV9LFNjYWxhclR5cGVEZWZpbml0aW9uOmkoKGZ1bmN0aW9uKGUpe3JldHVybiB1KFsic2NhbGFyIixlLm5hbWUsdShlLmRpcmVjdGl2ZXMsIiAiKV0sIiAiKX0pKSxPYmplY3RUeXBlRGVmaW5pdGlvbjppKChmdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLmludGVyZmFjZXMscj1lLmRpcmVjdGl2ZXMsbz1lLmZpZWxkcztyZXR1cm4gdShbInR5cGUiLHQsbCgiaW1wbGVtZW50cyAiLHUobiwiICYgIikpLHUociwiICIpLHMobyldLCIgIil9KSksRmllbGREZWZpbml0aW9uOmkoKGZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZSxuPWUuYXJndW1lbnRzLHI9ZS50eXBlLG89ZS5kaXJlY3RpdmVzO3JldHVybiB0KyhkKG4pP2woIihcbiIsYyh1KG4sIlxuIikpLCJcbikiKTpsKCIoIix1KG4sIiwgIiksIikiKSkrIjogIityK2woIiAiLHUobywiICIpKX0pKSxJbnB1dFZhbHVlRGVmaW5pdGlvbjppKChmdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLnR5cGUscj1lLmRlZmF1bHRWYWx1ZSxvPWUuZGlyZWN0aXZlcztyZXR1cm4gdShbdCsiOiAiK24sbCgiPSAiLHIpLHUobywiICIpXSwiICIpfSkpLEludGVyZmFjZVR5cGVEZWZpbml0aW9uOmkoKGZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZSxuPWUuZGlyZWN0aXZlcyxyPWUuZmllbGRzO3JldHVybiB1KFsiaW50ZXJmYWNlIix0LHUobiwiICIpLHMocildLCIgIil9KSksVW5pb25UeXBlRGVmaW5pdGlvbjppKChmdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLmRpcmVjdGl2ZXMscj1lLnR5cGVzO3JldHVybiB1KFsidW5pb24iLHQsdShuLCIgIiksciYmMCE9PXIubGVuZ3RoPyI9ICIrdShyLCIgfCAiKToiIl0sIiAiKX0pKSxFbnVtVHlwZURlZmluaXRpb246aSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lLG49ZS5kaXJlY3RpdmVzLHI9ZS52YWx1ZXM7cmV0dXJuIHUoWyJlbnVtIix0LHUobiwiICIpLHMocildLCIgIil9KSksRW51bVZhbHVlRGVmaW5pdGlvbjppKChmdW5jdGlvbihlKXtyZXR1cm4gdShbZS5uYW1lLHUoZS5kaXJlY3RpdmVzLCIgIildLCIgIil9KSksSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjppKChmdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLmRpcmVjdGl2ZXMscj1lLmZpZWxkcztyZXR1cm4gdShbImlucHV0Iix0LHUobiwiICIpLHMocildLCIgIil9KSksRGlyZWN0aXZlRGVmaW5pdGlvbjppKChmdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLmFyZ3VtZW50cyxyPWUucmVwZWF0YWJsZSxvPWUubG9jYXRpb25zO3JldHVybiJkaXJlY3RpdmUgQCIrdCsoZChuKT9sKCIoXG4iLGModShuLCJcbiIpKSwiXG4pIik6bCgiKCIsdShuLCIsICIpLCIpIikpKyhyPyIgcmVwZWF0YWJsZSI6IiIpKyIgb24gIit1KG8sIiB8ICIpfSkpLFNjaGVtYUV4dGVuc2lvbjpmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGl2ZXMsbj1lLm9wZXJhdGlvblR5cGVzO3JldHVybiB1KFsiZXh0ZW5kIHNjaGVtYSIsdSh0LCIgIikscyhuKV0sIiAiKX0sU2NhbGFyVHlwZUV4dGVuc2lvbjpmdW5jdGlvbihlKXtyZXR1cm4gdShbImV4dGVuZCBzY2FsYXIiLGUubmFtZSx1KGUuZGlyZWN0aXZlcywiICIpXSwiICIpfSxPYmplY3RUeXBlRXh0ZW5zaW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZSxuPWUuaW50ZXJmYWNlcyxyPWUuZGlyZWN0aXZlcyxvPWUuZmllbGRzO3JldHVybiB1KFsiZXh0ZW5kIHR5cGUiLHQsbCgiaW1wbGVtZW50cyAiLHUobiwiICYgIikpLHUociwiICIpLHMobyldLCIgIil9LEludGVyZmFjZVR5cGVFeHRlbnNpb246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lLG49ZS5kaXJlY3RpdmVzLHI9ZS5maWVsZHM7cmV0dXJuIHUoWyJleHRlbmQgaW50ZXJmYWNlIix0LHUobiwiICIpLHMocildLCIgIil9LFVuaW9uVHlwZUV4dGVuc2lvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLmRpcmVjdGl2ZXMscj1lLnR5cGVzO3JldHVybiB1KFsiZXh0ZW5kIHVuaW9uIix0LHUobiwiICIpLHImJjAhPT1yLmxlbmd0aD8iPSAiK3UociwiIHwgIik6IiJdLCIgIil9LEVudW1UeXBlRXh0ZW5zaW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZSxuPWUuZGlyZWN0aXZlcyxyPWUudmFsdWVzO3JldHVybiB1KFsiZXh0ZW5kIGVudW0iLHQsdShuLCIgIikscyhyKV0sIiAiKX0sSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZSxuPWUuZGlyZWN0aXZlcyxyPWUuZmllbGRzO3JldHVybiB1KFsiZXh0ZW5kIGlucHV0Iix0LHUobiwiICIpLHMocildLCIgIil9fTtmdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdShbdC5kZXNjcmlwdGlvbixlKHQpXSwiXG4iKX19ZnVuY3Rpb24gdShlLHQpe3JldHVybiBlP2UuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKS5qb2luKHR8fCIiKToiIn1mdW5jdGlvbiBzKGUpe3JldHVybiBlJiYwIT09ZS5sZW5ndGg/IntcbiIrYyh1KGUsIlxuIikpKyJcbn0iOiIifWZ1bmN0aW9uIGwoZSx0LG4pe3JldHVybiB0P2UrdCsobnx8IiIpOiIifWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGUmJiIgICIrZS5yZXBsYWNlKC9cbi9nLCJcbiAgIil9ZnVuY3Rpb24gZihlKXtyZXR1cm4tMSE9PWUuaW5kZXhPZigiXG4iKX1mdW5jdGlvbiBkKGUpe3JldHVybiBlJiZlLnNvbWUoZil9fSxnbGJmOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuc3ludGF4RXJyb3I9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuZXcgci5HcmFwaFFMRXJyb3IoIlN5bnRheCBFcnJvcjogIi5jb25jYXQobiksdm9pZCAwLGUsW3RdKX07dmFyIHI9bigiTWFmWCIpfSxncm5nOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiakNzZCIpLG89bigiR1E2UCIpLGE9bigiTjh1OSIpLGk9bmV3IFJlZ0V4cCgiXHJcbiIsImciKSx1PXsidGV4dC9ydGYiOjEsInRleHQvaHRtbCI6MX07ZnVuY3Rpb24gcyhlKXtpZigiZmlsZSI9PWUua2luZClyZXR1cm4gZS5nZXRBc0ZpbGUoKX12YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5kYXRhPWUsdGhpcy50eXBlcz1lLnR5cGVzP28oZS50eXBlcyk6W119dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQuaXNSaWNoVGV4dD1mdW5jdGlvbigpe3JldHVybiEoIXRoaXMuZ2V0SFRNTCgpfHwhdGhpcy5nZXRUZXh0KCkpfHwhdGhpcy5pc0ltYWdlKCkmJnRoaXMudHlwZXMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHVbZV19KSl9LHQuZ2V0VGV4dD1mdW5jdGlvbigpe3ZhciBlO3JldHVybiB0aGlzLmRhdGEuZ2V0RGF0YSYmKHRoaXMudHlwZXMubGVuZ3RoPy0xIT10aGlzLnR5cGVzLmluZGV4T2YoInRleHQvcGxhaW4iKSYmKGU9dGhpcy5kYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSk6ZT10aGlzLmRhdGEuZ2V0RGF0YSgiVGV4dCIpKSxlP2UucmVwbGFjZShpLCJcbiIpOm51bGx9LHQuZ2V0SFRNTD1mdW5jdGlvbigpe2lmKHRoaXMuZGF0YS5nZXREYXRhKXtpZighdGhpcy50eXBlcy5sZW5ndGgpcmV0dXJuIHRoaXMuZGF0YS5nZXREYXRhKCJUZXh0Iik7aWYoLTEhPXRoaXMudHlwZXMuaW5kZXhPZigidGV4dC9odG1sIikpcmV0dXJuIHRoaXMuZGF0YS5nZXREYXRhKCJ0ZXh0L2h0bWwiKX19LHQuaXNMaW5rPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZXMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuLTEhPWUuaW5kZXhPZigiVXJsIil8fC0xIT1lLmluZGV4T2YoInRleHQvdXJpLWxpc3QiKXx8ZS5pbmRleE9mKCJ0ZXh0L3gtbW96LXVybCIpfSkpfSx0LmdldExpbms9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmdldERhdGE/LTEhPXRoaXMudHlwZXMuaW5kZXhPZigidGV4dC94LW1vei11cmwiKT90aGlzLmRhdGEuZ2V0RGF0YSgidGV4dC94LW1vei11cmwiKS5zcGxpdCgiXG4iKVswXTotMSE9dGhpcy50eXBlcy5pbmRleE9mKCJ0ZXh0L3VyaS1saXN0Iik/dGhpcy5kYXRhLmdldERhdGEoInRleHQvdXJpLWxpc3QiKTp0aGlzLmRhdGEuZ2V0RGF0YSgidXJsIik6bnVsbH0sdC5pc0ltYWdlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlcy5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4tMSE9ZS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LW1vei1maWxlIil9KSk7aWYoZSlyZXR1cm4hMDtmb3IodmFyIHQ9dGhpcy5nZXRGaWxlcygpLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIG89dFtuXS50eXBlO2lmKCFyLmlzSW1hZ2UobykpcmV0dXJuITF9cmV0dXJuITB9LHQuZ2V0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmhhc093blByb3BlcnR5KCJpdGVtcyIpP3RoaXMuZGF0YS5pdGVtcy5sZW5ndGg6dGhpcy5kYXRhLmhhc093blByb3BlcnR5KCJtb3pJdGVtQ291bnQiKT90aGlzLmRhdGEubW96SXRlbUNvdW50OnRoaXMuZGF0YS5maWxlcz90aGlzLmRhdGEuZmlsZXMubGVuZ3RoOm51bGx9LHQuZ2V0RmlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLml0ZW1zP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuZGF0YS5pdGVtcykubWFwKHMpLmZpbHRlcihhLnRoYXRSZXR1cm5zQXJndW1lbnQpOnRoaXMuZGF0YS5maWxlcz9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmRhdGEuZmlsZXMpOltdfSx0Lmhhc0ZpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RmlsZXMoKS5sZW5ndGg+MH0sZX0oKTtlLmV4cG9ydHM9bH0sZ3Y1VzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pKXt2YXIgcj1PYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOnt9O3IuZ2V0fHxyLnNldD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHIpOnRbbl09ZVtuXX1yZXR1cm4gdC5kZWZhdWx0PWUsdH0obigicTF0SSIpKSxvPXUobigiMTd4OSIpKSxhPXUobigiaThpNCIpKSxpPXUobigib0I1OSIpKTtmdW5jdGlvbiB1KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBzKGUpe3JldHVybihzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gbChlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAsbj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBmKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1zKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9tKGUpOnR9ZnVuY3Rpb24gaChlKXtyZXR1cm4oaD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24geShlLHQpe3JldHVybih5PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBtKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB2KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1pLmRlZmF1bHR8fGNvbnNvbGUuZXJyb3IoIkl0IGxvb2tzIGxpa2UgVGV0aGVyIGhhcyBub3QgYmVlbiBpbmNsdWRlZC4gUGxlYXNlIGxvYWQgdGhpcyBkZXBlbmRlbmN5IGZpcnN0IGh0dHBzOi8vZ2l0aHViLmNvbS9IdWJTcG90L3RldGhlciIpO3ZhciBnPVtvLmRlZmF1bHQuc3RyaW5nLG8uZGVmYXVsdC5zaGFwZSh7YXBwZW5kQ2hpbGQ6by5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZH0pXSxiPVsiYXV0byBhdXRvIiwidG9wIGxlZnQiLCJ0b3AgY2VudGVyIiwidG9wIHJpZ2h0IiwibWlkZGxlIGxlZnQiLCJtaWRkbGUgY2VudGVyIiwibWlkZGxlIHJpZ2h0IiwiYm90dG9tIGxlZnQiLCJib3R0b20gY2VudGVyIiwiYm90dG9tIHJpZ2h0Il0sdz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbjtmKHRoaXMsdCk7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkobyksaT0wO2k8bztpKyspYVtpXT1hcmd1bWVudHNbaV07cmV0dXJuIHYobShtKG49cCh0aGlzLChlPWgodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGEpKSkpKSwiX3RhcmdldE5vZGUiLHIuZGVmYXVsdC5jcmVhdGVSZWYoKSksdihtKG0obikpLCJfZWxlbWVudE5vZGUiLHIuZGVmYXVsdC5jcmVhdGVSZWYoKSksdihtKG0obikpLCJfZWxlbWVudFBhcmVudE5vZGUiLG51bGwpLHYobShtKG4pKSwiX3RldGhlckluc3RhbmNlIixudWxsKSxufXZhciBuLG8sdTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmeShlLHQpfSh0LGUpLG49dCwobz1be2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY3JlYXRlQ29udGFpbmVyKCksdGhpcy5mb3JjZVVwZGF0ZSgpfX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXtpZihlLnJlbmRlckVsZW1lbnRUYWc9PT10aGlzLnByb3BzLnJlbmRlckVsZW1lbnRUYWcmJmUucmVuZGVyRWxlbWVudFRvPT09dGhpcy5wcm9wcy5yZW5kZXJFbGVtZW50VG98fHRoaXMuX2NyZWF0ZUNvbnRhaW5lcigpLHRoaXMuX2VsZW1lbnRQYXJlbnROb2RlJiZlLmNsYXNzTmFtZSE9PXRoaXMucHJvcHMuY2xhc3NOYW1lKXt2YXIgdCxuLHI9KGUuY2xhc3NOYW1lfHwiIikuc3BsaXQoIiAiKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4wfSkpLG89KHRoaXMucHJvcHMuY2xhc3NOYW1lfHwiIikuc3BsaXQoIiAiKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4wfSkpOyh0PXRoaXMuX2VsZW1lbnRQYXJlbnROb2RlLmNsYXNzTGlzdCkucmVtb3ZlLmFwcGx5KHQsYyhyKSksKG49dGhpcy5fZWxlbWVudFBhcmVudE5vZGUuY2xhc3NMaXN0KS5hZGQuYXBwbHkobixjKG8pKX10aGlzLl91cGRhdGUoKX19LHtrZXk6ImNvbXBvbmVudFdpbGxVbm1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3koKX19LHtrZXk6ImdldFRldGhlckluc3RhbmNlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZXRoZXJJbnN0YW5jZX19LHtrZXk6ImRpc2FibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdGV0aGVySW5zdGFuY2UuZGlzYWJsZSgpfX0se2tleToiZW5hYmxlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3RldGhlckluc3RhbmNlLmVuYWJsZSgpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl90ZXRoZXJJbnN0YW5jZS5vbihlLHQsbil9fSx7a2V5OiJvbmNlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dGhpcy5fdGV0aGVySW5zdGFuY2Uub25jZShlLHQsbil9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fdGV0aGVySW5zdGFuY2Uub2ZmKGUsdCl9fSx7a2V5OiJwb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl90ZXRoZXJJbnN0YW5jZS5wb3NpdGlvbigpfX0se2tleToiX3J1blJlbmRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJvcHMucmVuZGVyVGFyZ2V0P3RoaXMucHJvcHMucmVuZGVyVGFyZ2V0KHRoaXMuX3RhcmdldE5vZGUpOm51bGwsdD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5wcm9wcy5yZW5kZXJFbGVtZW50P3RoaXMucHJvcHMucmVuZGVyRWxlbWVudCh0aGlzLl9lbGVtZW50Tm9kZSk6bnVsbDtyZXR1cm4oMCxyLmlzVmFsaWRFbGVtZW50KShlKXx8KGU9bnVsbCksKDAsci5pc1ZhbGlkRWxlbWVudCkodCl8fCh0PW51bGwpLHt0YXJnZXRDb21wb25lbnQ6ZSxlbGVtZW50Q29tcG9uZW50OnR9fX0se2tleToiX2NyZWF0ZVRldGhlckluc3RhbmNlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl90ZXRoZXJJbnN0YW5jZSYmdGhpcy5fZGVzdHJveSgpLHRoaXMuX3RldGhlckluc3RhbmNlPW5ldyBpLmRlZmF1bHQoZSksdGhpcy5fcmVnaXN0ZXJFdmVudExpc3RlbmVycygpfX0se2tleToiX2Rlc3Ryb3lUZXRoZXJJbnN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl90ZXRoZXJJbnN0YW5jZSYmKHRoaXMuX3RldGhlckluc3RhbmNlLmRlc3Ryb3koKSx0aGlzLl90ZXRoZXJJbnN0YW5jZT1udWxsKX19LHtrZXk6Il9yZWdpc3RlckV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5vbigidXBkYXRlIiwoZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gZS5wcm9wcy5vblVwZGF0ZSYmZS5wcm9wcy5vblVwZGF0ZS5hcHBseShlLG4pfSkpLHRoaXMub24oInJlcG9zaXRpb25lZCIsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIGUucHJvcHMub25SZXBvc2l0aW9uZWQmJmUucHJvcHMub25SZXBvc2l0aW9uZWQuYXBwbHkoZSxuKX0pKX19LHtrZXk6Il9kZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3lUZXRoZXJJbnN0YW5jZSgpLHRoaXMuX3JlbW92ZUNvbnRhaW5lcigpfX0se2tleToiX2NyZWF0ZUNvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9yZW1vdmVDb250YWluZXIoKTt2YXIgZT10aGlzLnByb3BzLHQ9ZS5yZW5kZXJFbGVtZW50VGFnLG49ZS5jbGFzc05hbWU7dGhpcy5fZWxlbWVudFBhcmVudE5vZGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KSx0aGlzLl9lbGVtZW50UGFyZW50Tm9kZS5jbGFzc05hbWU9bnx8IiJ9fSx7a2V5OiJfYWRkQ29udGFpbmVyVG9ET00iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZWxlbWVudFBhcmVudE5vZGUucGFyZW50Tm9kZSE9PXRoaXMuX3JlbmRlck5vZGUmJnRoaXMuX3JlbmRlck5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudFBhcmVudE5vZGUpfX0se2tleToiX3JlbW92ZUNvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9lbGVtZW50UGFyZW50Tm9kZSYmdGhpcy5fZWxlbWVudFBhcmVudE5vZGUucGFyZW50Tm9kZSYmdGhpcy5fZWxlbWVudFBhcmVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50UGFyZW50Tm9kZSl9fSx7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VsZW1lbnROb2RlLmN1cnJlbnQmJnRoaXMuX3RhcmdldE5vZGUuY3VycmVudD90aGlzLl91cGRhdGVUZXRoZXIoKTp0aGlzLl9kZXN0cm95KCl9fSx7a2V5OiJfdXBkYXRlVGV0aGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD0oZS5jaGlsZHJlbixlLnJlbmRlckVsZW1lbnRUYWcsZS5yZW5kZXJFbGVtZW50VG8sZS5pZCksbj0oZS5jbGFzc05hbWUsZS5zdHlsZSkscj0oZS5yZW5kZXJUYXJnZXQsZS5yZW5kZXJFbGVtZW50LGwoZSxbImNoaWxkcmVuIiwicmVuZGVyRWxlbWVudFRhZyIsInJlbmRlckVsZW1lbnRUbyIsImlkIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJyZW5kZXJUYXJnZXQiLCJyZW5kZXJFbGVtZW50Il0pKSxvPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dihlLHQsblt0XSl9KSl9cmV0dXJuIGV9KHt0YXJnZXQ6dGhpcy5fdGFyZ2V0Tm9kZS5jdXJyZW50LGVsZW1lbnQ6dGhpcy5fZWxlbWVudFBhcmVudE5vZGV9LHIpLGE9dHx8IiI7aWYodGhpcy5fZWxlbWVudFBhcmVudE5vZGUuaWQhPT1hJiYodGhpcy5fZWxlbWVudFBhcmVudE5vZGUuaWQ9YSksbil7dmFyIGk9dGhpcy5fZWxlbWVudFBhcmVudE5vZGUuc3R5bGU7T2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aVtlXSE9PW5bZV0mJihpW2VdPW5bZV0pfSkpfXRoaXMuX2FkZENvbnRhaW5lclRvRE9NKCksdGhpcy5fdGV0aGVySW5zdGFuY2U/dGhpcy5fdGV0aGVySW5zdGFuY2Uuc2V0T3B0aW9ucyhvKTp0aGlzLl9jcmVhdGVUZXRoZXJJbnN0YW5jZShvKSx0aGlzLl90ZXRoZXJJbnN0YW5jZS5wb3NpdGlvbigpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3J1blJlbmRlcnMoKSx0PWUudGFyZ2V0Q29tcG9uZW50LG49ZS5lbGVtZW50Q29tcG9uZW50O3JldHVybiB0P3IuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHIuZGVmYXVsdC5GcmFnbWVudCxudWxsLHQsbiYmdGhpcy5fZWxlbWVudFBhcmVudE5vZGUmJmEuZGVmYXVsdC5jcmVhdGVQb3J0YWwobix0aGlzLl9lbGVtZW50UGFyZW50Tm9kZSkpOm51bGx9fSx7a2V5OiJfcmVuZGVyTm9kZSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5yZW5kZXJFbGVtZW50VG87cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk6ZXx8ZG9jdW1lbnQuYm9keX19XSkmJmQobi5wcm90b3R5cGUsbyksdSYmZChuLHUpLHR9KHIuQ29tcG9uZW50KTt2KHcsInByb3BUeXBlcyIse3JlbmRlckVsZW1lbnRUYWc6by5kZWZhdWx0LnN0cmluZyxyZW5kZXJFbGVtZW50VG86by5kZWZhdWx0Lm9uZU9mVHlwZShnKSxhdHRhY2htZW50Om8uZGVmYXVsdC5vbmVPZihiKS5pc1JlcXVpcmVkLHRhcmdldEF0dGFjaG1lbnQ6by5kZWZhdWx0Lm9uZU9mKGIpLG9mZnNldDpvLmRlZmF1bHQuc3RyaW5nLHRhcmdldE9mZnNldDpvLmRlZmF1bHQuc3RyaW5nLHRhcmdldE1vZGlmaWVyOm8uZGVmYXVsdC5zdHJpbmcsZW5hYmxlZDpvLmRlZmF1bHQuYm9vbCxjbGFzc2VzOm8uZGVmYXVsdC5vYmplY3QsY2xhc3NQcmVmaXg6by5kZWZhdWx0LnN0cmluZyxvcHRpbWl6YXRpb25zOm8uZGVmYXVsdC5vYmplY3QsY29uc3RyYWludHM6by5kZWZhdWx0LmFycmF5LGlkOm8uZGVmYXVsdC5zdHJpbmcsY2xhc3NOYW1lOm8uZGVmYXVsdC5zdHJpbmcsc3R5bGU6by5kZWZhdWx0Lm9iamVjdCxvblVwZGF0ZTpvLmRlZmF1bHQuZnVuYyxvblJlcG9zaXRpb25lZDpvLmRlZmF1bHQuZnVuYyxyZW5kZXJUYXJnZXQ6by5kZWZhdWx0LmZ1bmMscmVuZGVyRWxlbWVudDpvLmRlZmF1bHQuZnVuYyxjaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIG89ZS5jaGlsZHJlbjtpZihyLkNoaWxkcmVuLmNvdW50KG8pPjApcmV0dXJuIG5ldyBFcnJvcigiIi5jb25jYXQobiwiIG5vIGxvbmdlciB1c2VzIGNoaWxkcmVuIHRvIHJlbmRlciBjb21wb25lbnRzLiBQbGVhc2UgdXNlIHJlbmRlclRhcmdldCBhbmQgcmVuZGVyRWxlbWVudCBpbnN0ZWFkLiIpKX19KSx2KHcsImRlZmF1bHRQcm9wcyIse3JlbmRlckVsZW1lbnRUYWc6ImRpdiIscmVuZGVyRWxlbWVudFRvOm51bGx9KTt2YXIgXz13O3QuZGVmYXVsdD1ffSwiaC8yUCI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmeU9ZIiksbz1uKCIzc09KIiksYT1uKCI0cElCIiksaT1uKCJocE1KIiksdT1uKCJUNDAxIikscz1uKCJZcm5iIiksbD1uKCJxeXN2IiksYz1uKCJYZGRTIiksZj1hLmlzQnJvd3NlcigiRmlyZWZveCIpO2Z1bmN0aW9uIGQoZSx0LG4sYSxpKXt2YXIgdT1yLnJlcGxhY2VUZXh0KGUuZ2V0Q3VycmVudENvbnRlbnQoKSxlLmdldFNlbGVjdGlvbigpLHQsbixhKTtyZXR1cm4gby5wdXNoKGUsdSwiaW5zZXJ0LWNoYXJhY3RlcnMiLGkpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZvaWQgMCE9PWUuX3BlbmRpbmdTdGF0ZUZyb21CZWZvcmVJbnB1dCYmKGUudXBkYXRlKGUuX3BlbmRpbmdTdGF0ZUZyb21CZWZvcmVJbnB1dCksZS5fcGVuZGluZ1N0YXRlRnJvbUJlZm9yZUlucHV0PXZvaWQgMCk7dmFyIG49ZS5fbGF0ZXN0RWRpdG9yU3RhdGUscj10LmRhdGE7aWYocilpZihlLnByb3BzLmhhbmRsZUJlZm9yZUlucHV0JiZ1KGUucHJvcHMuaGFuZGxlQmVmb3JlSW5wdXQocixuLHQudGltZVN0YW1wKSkpdC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2V7dmFyIGE9bi5nZXRTZWxlY3Rpb24oKSxwPWEuZ2V0U3RhcnRPZmZzZXQoKSxoPWEuZ2V0QW5jaG9yS2V5KCk7aWYoIWEuaXNDb2xsYXBzZWQoKSlyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgZS51cGRhdGUoZChuLHIsbi5nZXRDdXJyZW50SW5saW5lU3R5bGUoKSxpKG4uZ2V0Q3VycmVudENvbnRlbnQoKSxuLmdldFNlbGVjdGlvbigpKSwhMCkpO3ZhciB5LG09ZChuLHIsbi5nZXRDdXJyZW50SW5saW5lU3R5bGUoKSxpKG4uZ2V0Q3VycmVudENvbnRlbnQoKSxuLmdldFNlbGVjdGlvbigpKSwhMSksdj0hMTtpZih2fHwodj1zKGUuX2xhdGVzdENvbW1pdHRlZEVkaXRvclN0YXRlKSksIXYpe3ZhciBnPW4uZ2V0QmxvY2tUcmVlKGgpLGI9bS5nZXRCbG9ja1RyZWUoaCk7dj1nLnNpemUhPT1iLnNpemV8fGcuemlwKGIpLnNvbWUoKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0sbj1lWzFdLG89dC5nZXQoInN0YXJ0IiksYT1vKyhvPj1wP3IubGVuZ3RoOjApLGk9dC5nZXQoImVuZCIpLHU9aSsoaT49cD9yLmxlbmd0aDowKSxzPW4uZ2V0KCJzdGFydCIpLGw9bi5nZXQoImVuZCIpLGM9bi5nZXQoImRlY29yYXRvcktleSIpO3JldHVybiB0LmdldCgiZGVjb3JhdG9yS2V5IikhPT1jfHx0LmdldCgibGVhdmVzIikuc2l6ZSE9PW4uZ2V0KCJsZWF2ZXMiKS5zaXplfHxhIT09c3x8dSE9PWx8fG51bGwhPWMmJmwtcyE9aS1vfSkpfWlmKHZ8fCh5PXIsdj1mJiYoIiciPT15fHwiLyI9PXkpKSx2fHwodj1sKG0uZ2V0RGlyZWN0aW9uTWFwKCkpLmdldChoKSE9PWwobi5nZXREaXJlY3Rpb25NYXAoKSkuZ2V0KGgpKSx2KXJldHVybiB0LnByZXZlbnREZWZhdWx0KCksbT1vLnNldChtLHtmb3JjZVNlbGVjdGlvbjohMH0pLHZvaWQgZS51cGRhdGUobSk7bT1vLnNldChtLHtuYXRpdmVseVJlbmRlcmVkQ29udGVudDptLmdldEN1cnJlbnRDb250ZW50KCl9KSxlLl9wZW5kaW5nU3RhdGVGcm9tQmVmb3JlSW5wdXQ9bSxjKChmdW5jdGlvbigpe3ZvaWQgMCE9PWUuX3BlbmRpbmdTdGF0ZUZyb21CZWZvcmVJbnB1dCYmKGUudXBkYXRlKGUuX3BlbmRpbmdTdGF0ZUZyb21CZWZvcmVJbnB1dCksZS5fcGVuZGluZ1N0YXRlRnJvbUJlZm9yZUlucHV0PXZvaWQgMCl9KSl9fX0saDZ4SDpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe2lmKCFhLmRlZmF1bHQuaXNNb21lbnQoZSl8fCFhLmRlZmF1bHQuaXNNb21lbnQodCkpcmV0dXJuITE7dmFyIG49ZS55ZWFyKCkscj1lLm1vbnRoKCksbz10LnllYXIoKSxpPXQubW9udGgoKSx1PW49PT1vLHM9cj09PWk7cmV0dXJuIHUmJnM/ZS5kYXRlKCk8dC5kYXRlKCk6dT9yPGk6bjxvfTt2YXIgcixvPW4oIndkL1IiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfX0saE1wZDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gcigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31uPWUsKHQ9cikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgbz1yLnByb3RvdHlwZTtyZXR1cm4gby5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4iQW5jaG9yOiAiK3RoaXMuZ2V0QW5jaG9yS2V5KCkrIjoiK3RoaXMuZ2V0QW5jaG9yT2Zmc2V0KCkrIiwgRm9jdXM6ICIrdGhpcy5nZXRGb2N1c0tleSgpKyI6Iit0aGlzLmdldEZvY3VzT2Zmc2V0KCkrIiwgSXMgQmFja3dhcmQ6ICIrU3RyaW5nKHRoaXMuZ2V0SXNCYWNrd2FyZCgpKSsiLCBIYXMgRm9jdXM6ICIrU3RyaW5nKHRoaXMuZ2V0SGFzRm9jdXMoKSl9LG8uZ2V0QW5jaG9yS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJhbmNob3JLZXkiKX0sby5nZXRBbmNob3JPZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImFuY2hvck9mZnNldCIpfSxvLmdldEZvY3VzS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJmb2N1c0tleSIpfSxvLmdldEZvY3VzT2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJmb2N1c09mZnNldCIpfSxvLmdldElzQmFja3dhcmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImlzQmFja3dhcmQiKX0sby5nZXRIYXNGb2N1cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgiaGFzRm9jdXMiKX0sby5oYXNFZGdlV2l0aGluPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmdldEFuY2hvcktleSgpLG89dGhpcy5nZXRGb2N1c0tleSgpO2lmKHI9PT1vJiZyPT09ZSl7dmFyIGE9dGhpcy5nZXRTdGFydE9mZnNldCgpLGk9dGhpcy5nZXRFbmRPZmZzZXQoKTtyZXR1cm4gdDw9YSYmYTw9bnx8dDw9aSYmaTw9bn1pZihlIT09ciYmZSE9PW8pcmV0dXJuITE7dmFyIHU9ZT09PXI/dGhpcy5nZXRBbmNob3JPZmZzZXQoKTp0aGlzLmdldEZvY3VzT2Zmc2V0KCk7cmV0dXJuIHQ8PXUmJm4+PXV9LG8uaXNDb2xsYXBzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRBbmNob3JLZXkoKT09PXRoaXMuZ2V0Rm9jdXNLZXkoKSYmdGhpcy5nZXRBbmNob3JPZmZzZXQoKT09PXRoaXMuZ2V0Rm9jdXNPZmZzZXQoKX0sby5nZXRTdGFydEtleT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldElzQmFja3dhcmQoKT90aGlzLmdldEZvY3VzS2V5KCk6dGhpcy5nZXRBbmNob3JLZXkoKX0sby5nZXRTdGFydE9mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldElzQmFja3dhcmQoKT90aGlzLmdldEZvY3VzT2Zmc2V0KCk6dGhpcy5nZXRBbmNob3JPZmZzZXQoKX0sby5nZXRFbmRLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJc0JhY2t3YXJkKCk/dGhpcy5nZXRBbmNob3JLZXkoKTp0aGlzLmdldEZvY3VzS2V5KCl9LG8uZ2V0RW5kT2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SXNCYWNrd2FyZCgpP3RoaXMuZ2V0QW5jaG9yT2Zmc2V0KCk6dGhpcy5nZXRGb2N1c09mZnNldCgpfSxyLmNyZWF0ZUVtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcih7YW5jaG9yS2V5OmUsYW5jaG9yT2Zmc2V0OjAsZm9jdXNLZXk6ZSxmb2N1c09mZnNldDowLGlzQmFja3dhcmQ6ITEsaGFzRm9jdXM6ITF9KX0scn0oKDAsbigiSlBjdiIpLlJlY29yZCkoe2FuY2hvcktleToiIixhbmNob3JPZmZzZXQ6MCxmb2N1c0tleToiIixmb2N1c09mZnNldDowLGlzQmFja3dhcmQ6ITEsaGFzRm9jdXM6ITF9KSk7ZS5leHBvcnRzPXJ9LGhRVXc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmNyZWF0ZVJhbmdlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9ZTtyPD10O3IrKyluLnB1c2gocik7cmV0dXJuIG59fSxocE1KOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiR241RCIpLm5vdEVtcHR5S2V5O2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gcih0KSYmIk1VVEFCTEUiPT09ZS5fX2dldCh0KS5nZXRNdXRhYmlsaXR5KCk/dDpudWxsfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKHQuaXNDb2xsYXBzZWQoKSl7dmFyIHI9dC5nZXRBbmNob3JLZXkoKSxhPXQuZ2V0QW5jaG9yT2Zmc2V0KCk7cmV0dXJuIGE+MD8obj1lLmdldEJsb2NrRm9yS2V5KHIpLmdldEVudGl0eUF0KGEtMSkpIT09ZS5nZXRCbG9ja0ZvcktleShyKS5nZXRFbnRpdHlBdChhKT9udWxsOm8oZS5nZXRFbnRpdHlNYXAoKSxuKTpudWxsfXZhciBpPXQuZ2V0U3RhcnRLZXkoKSx1PXQuZ2V0U3RhcnRPZmZzZXQoKSxzPWUuZ2V0QmxvY2tGb3JLZXkoaSk7cmV0dXJuIG49dT09PXMuZ2V0TGVuZ3RoKCk/bnVsbDpzLmdldEVudGl0eUF0KHUpLG8oZS5nZXRFbnRpdHlNYXAoKSxuKX19LGh3Qm06ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG4uZD1mdW5jdGlvbihlLHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsImEiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPSIiLG4obi5zPTY2KX0oezA6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicTF0SSIpfSwxOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkhzcWciKX0sMTE6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT1uKDApLHU9KHI9aSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O2Z1bmN0aW9uIHMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBzKHRoaXMsdCksbCh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksYSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdmciLG8oe3ZpZXdCb3g6IjAgMCAxMiAxMiJ9LHRoaXMucHJvcHMpLHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xMS41My40N2EuNzUuNzUgMCAwIDAtMS4wNjEgMGwtNC40NyA0LjQ3TDEuNTI5LjQ3QS43NS43NSAwIDEgMCAuNDY4IDEuNTMxbDQuNDcgNC40Ny00LjQ3IDQuNDdhLjc1Ljc1IDAgMSAwIDEuMDYxIDEuMDYxbDQuNDctNC40NyA0LjQ3IDQuNDdhLjc1Ljc1IDAgMSAwIDEuMDYxLTEuMDYxbC00LjQ3LTQuNDcgNC40Ny00LjQ3YS43NS43NSAwIDAgMCAwLTEuMDYxeiJ9KSl9fV0pLHR9KHUuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1jfSwxNTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJpdUxyIil9LDE5OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkJoNlIiKX0sMjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI1ZjduIil9LDI1OmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHIsbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigwKSx1PShyPWkpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcyh0aGlzLHQpLGwodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3ZnIixvKHt2aWV3Qm94OiIwIDAgMTAwMCAxMDAwIn0sdGhpcy5wcm9wcyksdS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMzM2LjIgMjc0LjVsLTIxMC4xIDIxMGg4MDUuNGMxMyAwIDIzIDEwIDIzIDIzcy0xMCAyMy0yMyAyM0gxMjYuMWwyMTAuMSAyMTAuMWMxMSAxMSAxMSAyMSAwIDMyLTUgNS0xMCA3LTE2IDdzLTExLTItMTYtN2wtMjQ5LjEtMjQ5Yy0xMS0xMS0xMS0yMSAwLTMybDI0OS4xLTI0OS4xYzIxLTIxLjEgNTMgMTAuOSAzMiAzMnoifSkpfX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sMjY6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT1uKDApLHU9KHI9aSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O2Z1bmN0aW9uIHMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBzKHRoaXMsdCksbCh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksYSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdmciLG8oe3ZpZXdCb3g6IjAgMCAxMDAwIDEwMDAifSx0aGlzLnByb3BzKSx1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02OTQuNCAyNDIuNGwyNDkuMSAyNDkuMWMxMSAxMSAxMSAyMSAwIDMyTDY5NC40IDc3Mi43Yy01IDUtMTAgNy0xNiA3cy0xMS0yLTE2LTdjLTExLTExLTExLTIxIDAtMzJsMjEwLjEtMjEwLjFINjcuMWMtMTMgMC0yMy0xMC0yMy0yM3MxMC0yMyAyMy0yM2g4MDUuNEw2NjIuNCAyNzQuNWMtMjEtMjEuMSAxMS01My4xIDMyLTMyLjF6In0pKX19XSksdH0odS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PWN9LDI3OmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHIsbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigwKSx1PShyPWkpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcyh0aGlzLHQpLGwodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3ZnIixvKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAxMzkzLjEgMTUwMCJ9LHRoaXMucHJvcHMpLHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwNy4yIDEzOTIuOWgyNDEuMXYtMjQxLjFIMTA3LjJ2MjQxLjF6bTI5NC43IDBoMjY3Ljl2LTI0MS4xSDQwMS45djI0MS4xem0tMjk0LjctMjk0LjdoMjQxLjFWODMwLjRIMTA3LjJ2MjY3Ljh6bTI5NC43IDBoMjY3LjlWODMwLjRINDAxLjl2MjY3Ljh6TTEwNy4yIDc3Ni44aDI0MS4xVjUzNS43SDEwNy4ydjI0MS4xem02MTYuMiA2MTYuMWgyNjcuOXYtMjQxLjFINzIzLjR2MjQxLjF6TTQwMS45IDc3Ni44aDI2Ny45VjUzNS43SDQwMS45djI0MS4xem02NDIuOSA2MTYuMUgxMjg2di0yNDEuMWgtMjQxLjF2MjQxLjF6bS0zMjEuNC0yOTQuN2gyNjcuOVY4MzAuNEg3MjMuNHYyNjcuOHpNNDI4LjcgMzc1VjEzMy45YzAtNy4zLTIuNy0xMy41LTgtMTguOC01LjMtNS4zLTExLjYtOC0xOC44LThoLTUzLjZjLTcuMyAwLTEzLjUgMi43LTE4LjggOC01LjMgNS4zLTggMTEuNi04IDE4LjhWMzc1YzAgNy4zIDIuNyAxMy41IDggMTguOCA1LjMgNS4zIDExLjYgOCAxOC44IDhoNTMuNmM3LjMgMCAxMy41LTIuNyAxOC44LTggNS4zLTUuMyA4LTExLjUgOC0xOC44em02MTYuMSA3MjMuMkgxMjg2VjgzMC40aC0yNDEuMXYyNjcuOHpNNzIzLjQgNzc2LjhoMjY3LjlWNTM1LjdINzIzLjR2MjQxLjF6bTMyMS40IDBIMTI4NlY1MzUuN2gtMjQxLjF2MjQxLjF6bTI2LjgtNDAxLjhWMTMzLjljMC03LjMtMi43LTEzLjUtOC0xOC44LTUuMy01LjMtMTEuNi04LTE4LjgtOGgtNTMuNmMtNy4zIDAtMTMuNSAyLjctMTguOCA4LTUuMyA1LjMtOCAxMS42LTggMTguOFYzNzVjMCA3LjMgMi43IDEzLjUgOCAxOC44IDUuMyA1LjMgMTEuNiA4IDE4LjggOGg1My42YzcuMyAwIDEzLjUtMi43IDE4LjgtOCA1LjQtNS4zIDgtMTEuNSA4LTE4Ljh6bTMyMS41LTUzLjZ2MTA3MS40YzAgMjktMTAuNiA1NC4xLTMxLjggNzUuMy0yMS4yIDIxLjItNDYuMyAzMS44LTc1LjMgMzEuOEgxMDcuMmMtMjkgMC01NC4xLTEwLjYtNzUuMy0zMS44QzEwLjYgMTQ0NyAwIDE0MjEuOSAwIDEzOTIuOVYzMjEuNGMwLTI5IDEwLjYtNTQuMSAzMS44LTc1LjNzNDYuMy0zMS44IDc1LjMtMzEuOGgxMDcuMnYtODAuNGMwLTM2LjggMTMuMS02OC40IDM5LjMtOTQuNlMzMTEuNCAwIDM0OC4zIDBoNTMuNmMzNi44IDAgNjguNCAxMy4xIDk0LjYgMzkuMyAyNi4yIDI2LjIgMzkuMyA1Ny44IDM5LjMgOTQuNnY4MC40aDMyMS41di04MC40YzAtMzYuOCAxMy4xLTY4LjQgMzkuMy05NC42QzkyMi45IDEzLjEgOTU0LjQgMCA5OTEuMyAwaDUzLjZjMzYuOCAwIDY4LjQgMTMuMSA5NC42IDM5LjNzMzkuMyA1Ny44IDM5LjMgOTQuNnY4MC40SDEyODZjMjkgMCA1NC4xIDEwLjYgNzUuMyAzMS44IDIxLjIgMjEuMiAzMS44IDQ2LjMgMzEuOCA3NS4zeiJ9KSl9fV0pLHR9KHUuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1jfSwzOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInZWK0ciKX0sMzU6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiRHYwZiIpfSw0OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjE3eDkiKX0sNTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ5YzJlIil9LDY6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVFNZUSIpfSw2NjpmdW5jdGlvbihlLHQsbil7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPWIobigwKSksaT1iKG4oNCkpLHU9bigxKSxzPWIobig2KSksbD1uKDMpLGM9YihuKDUpKSxmPWIobigxNSkpLGQ9YihuKDM1KSkscD1iKG4oMTkpKSxoPWIobigyNikpLHk9YihuKDI1KSksbT1iKG4oMTEpKSx2PWIobigyNykpLGc9bigyKTtmdW5jdGlvbiBiKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgdz0oMCx1LmZvcmJpZEV4dHJhUHJvcHMpKHtzdGFydERhdGVJZDppLmRlZmF1bHQuc3RyaW5nLHN0YXJ0RGF0ZVBsYWNlaG9sZGVyVGV4dDppLmRlZmF1bHQuc3RyaW5nLHNjcmVlblJlYWRlck1lc3NhZ2U6aS5kZWZhdWx0LnN0cmluZyxlbmREYXRlSWQ6aS5kZWZhdWx0LnN0cmluZyxlbmREYXRlUGxhY2Vob2xkZXJUZXh0OmkuZGVmYXVsdC5zdHJpbmcsb25TdGFydERhdGVGb2N1czppLmRlZmF1bHQuZnVuYyxvbkVuZERhdGVGb2N1czppLmRlZmF1bHQuZnVuYyxvblN0YXJ0RGF0ZUNoYW5nZTppLmRlZmF1bHQuZnVuYyxvbkVuZERhdGVDaGFuZ2U6aS5kZWZhdWx0LmZ1bmMsb25TdGFydERhdGVTaGlmdFRhYjppLmRlZmF1bHQuZnVuYyxvbkVuZERhdGVUYWI6aS5kZWZhdWx0LmZ1bmMsb25DbGVhckRhdGVzOmkuZGVmYXVsdC5mdW5jLG9uQXJyb3dEb3duOmkuZGVmYXVsdC5mdW5jLG9uUXVlc3Rpb25NYXJrOmkuZGVmYXVsdC5mdW5jLHN0YXJ0RGF0ZTppLmRlZmF1bHQuc3RyaW5nLHN0YXJ0RGF0ZVZhbHVlOmkuZGVmYXVsdC5zdHJpbmcsZW5kRGF0ZTppLmRlZmF1bHQuc3RyaW5nLGVuZERhdGVWYWx1ZTppLmRlZmF1bHQuc3RyaW5nLGlzU3RhcnREYXRlRm9jdXNlZDppLmRlZmF1bHQuYm9vbCxpc0VuZERhdGVGb2N1c2VkOmkuZGVmYXVsdC5ib29sLHNob3dDbGVhckRhdGVzOmkuZGVmYXVsdC5ib29sLGRpc2FibGVkOmkuZGVmYXVsdC5ib29sLHJlcXVpcmVkOmkuZGVmYXVsdC5ib29sLHJlYWRPbmx5OmkuZGVmYXVsdC5ib29sLG9wZW5EaXJlY3Rpb246Zi5kZWZhdWx0LHNob3dDYXJldDppLmRlZmF1bHQuYm9vbCxzaG93RGVmYXVsdElucHV0SWNvbjppLmRlZmF1bHQuYm9vbCxpbnB1dEljb25Qb3NpdGlvbjpwLmRlZmF1bHQsY3VzdG9tSW5wdXRJY29uOmkuZGVmYXVsdC5ub2RlLGN1c3RvbUFycm93SWNvbjppLmRlZmF1bHQubm9kZSxjdXN0b21DbG9zZUljb246aS5kZWZhdWx0Lm5vZGUsaXNGb2N1c2VkOmkuZGVmYXVsdC5ib29sLHBocmFzZXM6aS5kZWZhdWx0LnNoYXBlKCgwLGMuZGVmYXVsdCkobC5EYXRlUmFuZ2VQaWNrZXJJbnB1dFBocmFzZXMpKSxpc1JUTDppLmRlZmF1bHQuYm9vbH0pLF89e3N0YXJ0RGF0ZUlkOmcuU1RBUlRfREFURSxlbmREYXRlSWQ6Zy5FTkRfREFURSxzdGFydERhdGVQbGFjZWhvbGRlclRleHQ6IlN0YXJ0IERhdGUiLGVuZERhdGVQbGFjZWhvbGRlclRleHQ6IkVuZCBEYXRlIixzY3JlZW5SZWFkZXJNZXNzYWdlOiIiLG9uU3RhcnREYXRlRm9jdXM6ZnVuY3Rpb24oKXt9LG9uRW5kRGF0ZUZvY3VzOmZ1bmN0aW9uKCl7fSxvblN0YXJ0RGF0ZUNoYW5nZTpmdW5jdGlvbigpe30sb25FbmREYXRlQ2hhbmdlOmZ1bmN0aW9uKCl7fSxvblN0YXJ0RGF0ZVNoaWZ0VGFiOmZ1bmN0aW9uKCl7fSxvbkVuZERhdGVUYWI6ZnVuY3Rpb24oKXt9LG9uQ2xlYXJEYXRlczpmdW5jdGlvbigpe30sb25BcnJvd0Rvd246ZnVuY3Rpb24oKXt9LG9uUXVlc3Rpb25NYXJrOmZ1bmN0aW9uKCl7fSxzdGFydERhdGU6IiIsc3RhcnREYXRlVmFsdWU6IiIsZW5kRGF0ZToiIixlbmREYXRlVmFsdWU6IiIsaXNTdGFydERhdGVGb2N1c2VkOiExLGlzRW5kRGF0ZUZvY3VzZWQ6ITEsc2hvd0NsZWFyRGF0ZXM6ITEsZGlzYWJsZWQ6ITEscmVxdWlyZWQ6ITEscmVhZE9ubHk6ITEsb3BlbkRpcmVjdGlvbjpnLk9QRU5fRE9XTixzaG93Q2FyZXQ6ITEsc2hvd0RlZmF1bHRJbnB1dEljb246ITEsaW5wdXRJY29uUG9zaXRpb246Zy5JQ09OX0JFRk9SRV9QT1NJVElPTixjdXN0b21JbnB1dEljb246bnVsbCxjdXN0b21BcnJvd0ljb246bnVsbCxjdXN0b21DbG9zZUljb246bnVsbCxpc0ZvY3VzZWQ6ITEscGhyYXNlczpsLkRhdGVSYW5nZVBpY2tlcklucHV0UGhyYXNlcyxpc1JUTDohMX0sRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpO3JldHVybiBuLnN0YXRlPXtpc0NsZWFyRGF0ZXNIb3ZlcmVkOiExfSxuLm9uQ2xlYXJEYXRlc01vdXNlRW50ZXI9bi5vbkNsZWFyRGF0ZXNNb3VzZUVudGVyLmJpbmQobiksbi5vbkNsZWFyRGF0ZXNNb3VzZUxlYXZlPW4ub25DbGVhckRhdGVzTW91c2VMZWF2ZS5iaW5kKG4pLG59cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIisodm9pZCAwPT09dD8idW5kZWZpbmVkIjpyKHQpKSk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6Im9uQ2xlYXJEYXRlc01vdXNlRW50ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRTdGF0ZSh7aXNDbGVhckRhdGVzSG92ZXJlZDohMH0pfX0se2tleToib25DbGVhckRhdGVzTW91c2VMZWF2ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFN0YXRlKHtpc0NsZWFyRGF0ZXNIb3ZlcmVkOiExfSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5pc0NsZWFyRGF0ZXNIb3ZlcmVkLHQ9dGhpcy5wcm9wcyxuPXQuc3RhcnREYXRlLHI9dC5zdGFydERhdGVWYWx1ZSxvPXQuc3RhcnREYXRlSWQsaT10LnN0YXJ0RGF0ZVBsYWNlaG9sZGVyVGV4dCx1PXQuc2NyZWVuUmVhZGVyTWVzc2FnZSxsPXQuaXNTdGFydERhdGVGb2N1c2VkLGM9dC5vblN0YXJ0RGF0ZUNoYW5nZSxmPXQub25TdGFydERhdGVGb2N1cyxwPXQub25TdGFydERhdGVTaGlmdFRhYixiPXQuZW5kRGF0ZSx3PXQuZW5kRGF0ZVZhbHVlLF89dC5lbmREYXRlSWQsRT10LmVuZERhdGVQbGFjZWhvbGRlclRleHQsTz10LmlzRW5kRGF0ZUZvY3VzZWQsaz10Lm9uRW5kRGF0ZUNoYW5nZSxDPXQub25FbmREYXRlRm9jdXMseD10Lm9uRW5kRGF0ZVRhYixTPXQub25BcnJvd0Rvd24sRD10Lm9uUXVlc3Rpb25NYXJrLFQ9dC5vbkNsZWFyRGF0ZXMsTT10LnNob3dDbGVhckRhdGVzLFA9dC5kaXNhYmxlZCxOPXQucmVxdWlyZWQsaj10LnJlYWRPbmx5LEw9dC5vcGVuRGlyZWN0aW9uLFI9dC5zaG93Q2FyZXQsST10LnNob3dEZWZhdWx0SW5wdXRJY29uLEE9dC5pbnB1dEljb25Qb3NpdGlvbixGPXQuY3VzdG9tSW5wdXRJY29uLEI9dC5jdXN0b21BcnJvd0ljb24sej10LmN1c3RvbUNsb3NlSWNvbixLPXQuaXNGb2N1c2VkLHE9dC5waHJhc2VzLFY9dC5pc1JUTCxVPUZ8fGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHYuZGVmYXVsdCxudWxsKSxXPUJ8fChWP2EuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHkuZGVmYXVsdCxudWxsKTphLmRlZmF1bHQuY3JlYXRlRWxlbWVudChoLmRlZmF1bHQsbnVsbCkpLFk9enx8YS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LG51bGwpLEg9dXx8cS5rZXlib2FyZE5hdmlnYXRpb25JbnN0cnVjdGlvbnMsRz0oSXx8bnVsbCE9PUYpJiZhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6IkRhdGVSYW5nZVBpY2tlcklucHV0X19jYWxlbmRhci1pY29uIixkaXNhYmxlZDpQLCJhcmlhLWxhYmVsIjpxLmZvY3VzU3RhcnREYXRlLG9uQ2xpY2s6U30sVSk7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSgiRGF0ZVJhbmdlUGlja2VySW5wdXQiLHsiRGF0ZVJhbmdlUGlja2VySW5wdXQtLWRpc2FibGVkIjpQLCJEYXRlUmFuZ2VQaWNrZXJJbnB1dC0tcnRsIjpWfSl9LEE9PT1nLklDT05fQkVGT1JFX1BPU0lUSU9OJiZHLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQuZGVmYXVsdCx7aWQ6byxwbGFjZWhvbGRlcjppLGRpc3BsYXlWYWx1ZTpuLGlucHV0VmFsdWU6cixzY3JlZW5SZWFkZXJNZXNzYWdlOkgsZm9jdXNlZDpsLGlzRm9jdXNlZDpLLGRpc2FibGVkOlAscmVxdWlyZWQ6TixyZWFkT25seTpqLG9wZW5EaXJlY3Rpb246TCxzaG93Q2FyZXQ6UixvbkNoYW5nZTpjLG9uRm9jdXM6ZixvbktleURvd25TaGlmdFRhYjpwLG9uS2V5RG93bkFycm93RG93bjpTLG9uS2V5RG93blF1ZXN0aW9uTWFyazpEfSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiRGF0ZVJhbmdlUGlja2VySW5wdXRfX2Fycm93IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixyb2xlOiJwcmVzZW50YXRpb24ifSxXKSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLmRlZmF1bHQse2lkOl8scGxhY2Vob2xkZXI6RSxkaXNwbGF5VmFsdWU6YixpbnB1dFZhbHVlOncsc2NyZWVuUmVhZGVyTWVzc2FnZTpILGZvY3VzZWQ6Tyxpc0ZvY3VzZWQ6SyxkaXNhYmxlZDpQLHJlcXVpcmVkOk4scmVhZE9ubHk6aixvcGVuRGlyZWN0aW9uOkwsc2hvd0NhcmV0OlIsb25DaGFuZ2U6ayxvbkZvY3VzOkMsb25LZXlEb3duVGFiOngsb25LZXlEb3duQXJyb3dEb3duOlMsb25LZXlEb3duUXVlc3Rpb25NYXJrOkR9KSxNJiZhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6cS5jbGVhckRhdGVzLGNsYXNzTmFtZTooMCxzLmRlZmF1bHQpKCJEYXRlUmFuZ2VQaWNrZXJJbnB1dF9fY2xlYXItZGF0ZXMiLHsiRGF0ZVJhbmdlUGlja2VySW5wdXRfX2NsZWFyLWRhdGVzLS1oaWRlIjohKG58fGIpLCJEYXRlUmFuZ2VQaWNrZXJJbnB1dF9fY2xlYXItZGF0ZXMtLWhvdmVyIjplfSksZGlzYWJsZWQ6UCxvbk1vdXNlRW50ZXI6dGhpcy5vbkNsZWFyRGF0ZXNNb3VzZUVudGVyLG9uTW91c2VMZWF2ZTp0aGlzLm9uQ2xlYXJEYXRlc01vdXNlTGVhdmUsb25DbGljazpUfSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJEYXRlUmFuZ2VQaWNrZXJJbnB1dF9fY2xvc2UtaWNvbiJ9LFkpKSxBPT09Zy5JQ09OX0FGVEVSX1BPU0lUSU9OJiZHKX19XSksdH0oYS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PUUsRS5wcm9wVHlwZXM9dyxFLmRlZmF1bHRQcm9wcz1ffX0pfSxoeUFqOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRFlLaCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldFNlbGVjdGlvbigpO3JldHVybiB0LmlzQ29sbGFwc2VkKCk/bnVsbDpyKGUuZ2V0Q3VycmVudENvbnRlbnQoKSx0KX19LGk4aTQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjshZnVuY3Rpb24gZSgpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fJiYiZnVuY3Rpb24iPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKXswO3RyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoZSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19fSgpLGUuZXhwb3J0cz1uKCJ5bDMwIil9LGlHQWs6ZnVuY3Rpb24oZSx0KXt0LmFsaWFzVG9SZWFsPXtlYWNoOiJmb3JFYWNoIixlYWNoUmlnaHQ6ImZvckVhY2hSaWdodCIsZW50cmllczoidG9QYWlycyIsZW50cmllc0luOiJ0b1BhaXJzSW4iLGV4dGVuZDoiYXNzaWduSW4iLGV4dGVuZEFsbDoiYXNzaWduSW5BbGwiLGV4dGVuZEFsbFdpdGg6ImFzc2lnbkluQWxsV2l0aCIsZXh0ZW5kV2l0aDoiYXNzaWduSW5XaXRoIixmaXJzdDoiaGVhZCIsY29uZm9ybXM6ImNvbmZvcm1zVG8iLG1hdGNoZXM6ImlzTWF0Y2giLHByb3BlcnR5OiJnZXQiLF9fOiJwbGFjZWhvbGRlciIsRjoic3R1YkZhbHNlIixUOiJzdHViVHJ1ZSIsYWxsOiJldmVyeSIsYWxsUGFzczoib3ZlckV2ZXJ5IixhbHdheXM6ImNvbnN0YW50Iixhbnk6InNvbWUiLGFueVBhc3M6Im92ZXJTb21lIixhcHBseToic3ByZWFkIixhc3NvYzoic2V0Iixhc3NvY1BhdGg6InNldCIsY29tcGxlbWVudDoibmVnYXRlIixjb21wb3NlOiJmbG93UmlnaHQiLGNvbnRhaW5zOiJpbmNsdWRlcyIsZGlzc29jOiJ1bnNldCIsZGlzc29jUGF0aDoidW5zZXQiLGRyb3BMYXN0OiJkcm9wUmlnaHQiLGRyb3BMYXN0V2hpbGU6ImRyb3BSaWdodFdoaWxlIixlcXVhbHM6ImlzRXF1YWwiLGlkZW50aWNhbDoiZXEiLGluZGV4Qnk6ImtleUJ5Iixpbml0OiJpbml0aWFsIixpbnZlcnRPYmo6ImludmVydCIsanV4dDoib3ZlciIsb21pdEFsbDoib21pdCIsbkFyeToiYXJ5IixwYXRoOiJnZXQiLHBhdGhFcToibWF0Y2hlc1Byb3BlcnR5IixwYXRoT3I6ImdldE9yIixwYXRoczoiYXQiLHBpY2tBbGw6InBpY2siLHBpcGU6ImZsb3ciLHBsdWNrOiJtYXAiLHByb3A6ImdldCIscHJvcEVxOiJtYXRjaGVzUHJvcGVydHkiLHByb3BPcjoiZ2V0T3IiLHByb3BzOiJhdCIsc3ltbWV0cmljRGlmZmVyZW5jZToieG9yIixzeW1tZXRyaWNEaWZmZXJlbmNlQnk6InhvckJ5IixzeW1tZXRyaWNEaWZmZXJlbmNlV2l0aDoieG9yV2l0aCIsdGFrZUxhc3Q6InRha2VSaWdodCIsdGFrZUxhc3RXaGlsZToidGFrZVJpZ2h0V2hpbGUiLHVuYXBwbHk6InJlc3QiLHVubmVzdDoiZmxhdHRlbiIsdXNlV2l0aDoib3ZlckFyZ3MiLHdoZXJlOiJjb25mb3Jtc1RvIix3aGVyZUVxOiJpc01hdGNoIix6aXBPYmo6InppcE9iamVjdCJ9LHQuYXJ5TWV0aG9kPXsxOlsiYXNzaWduQWxsIiwiYXNzaWduSW5BbGwiLCJhdHRlbXB0IiwiY2FzdEFycmF5IiwiY2VpbCIsImNyZWF0ZSIsImN1cnJ5IiwiY3VycnlSaWdodCIsImRlZmF1bHRzQWxsIiwiZGVmYXVsdHNEZWVwQWxsIiwiZmxvb3IiLCJmbG93IiwiZmxvd1JpZ2h0IiwiZnJvbVBhaXJzIiwiaW52ZXJ0IiwiaXRlcmF0ZWUiLCJtZW1vaXplIiwibWV0aG9kIiwibWVyZ2VBbGwiLCJtZXRob2RPZiIsIm1peGluIiwibnRoQXJnIiwib3ZlciIsIm92ZXJFdmVyeSIsIm92ZXJTb21lIiwicmVzdCIsInJldmVyc2UiLCJyb3VuZCIsInJ1bkluQ29udGV4dCIsInNwcmVhZCIsInRlbXBsYXRlIiwidHJpbSIsInRyaW1FbmQiLCJ0cmltU3RhcnQiLCJ1bmlxdWVJZCIsIndvcmRzIiwiemlwQWxsIl0sMjpbImFkZCIsImFmdGVyIiwiYXJ5IiwiYXNzaWduIiwiYXNzaWduQWxsV2l0aCIsImFzc2lnbkluIiwiYXNzaWduSW5BbGxXaXRoIiwiYXQiLCJiZWZvcmUiLCJiaW5kIiwiYmluZEFsbCIsImJpbmRLZXkiLCJjaHVuayIsImNsb25lRGVlcFdpdGgiLCJjbG9uZVdpdGgiLCJjb25jYXQiLCJjb25mb3Jtc1RvIiwiY291bnRCeSIsImN1cnJ5TiIsImN1cnJ5UmlnaHROIiwiZGVib3VuY2UiLCJkZWZhdWx0cyIsImRlZmF1bHRzRGVlcCIsImRlZmF1bHRUbyIsImRlbGF5IiwiZGlmZmVyZW5jZSIsImRpdmlkZSIsImRyb3AiLCJkcm9wUmlnaHQiLCJkcm9wUmlnaHRXaGlsZSIsImRyb3BXaGlsZSIsImVuZHNXaXRoIiwiZXEiLCJldmVyeSIsImZpbHRlciIsImZpbmQiLCJmaW5kSW5kZXgiLCJmaW5kS2V5IiwiZmluZExhc3QiLCJmaW5kTGFzdEluZGV4IiwiZmluZExhc3RLZXkiLCJmbGF0TWFwIiwiZmxhdE1hcERlZXAiLCJmbGF0dGVuRGVwdGgiLCJmb3JFYWNoIiwiZm9yRWFjaFJpZ2h0IiwiZm9ySW4iLCJmb3JJblJpZ2h0IiwiZm9yT3duIiwiZm9yT3duUmlnaHQiLCJnZXQiLCJncm91cEJ5IiwiZ3QiLCJndGUiLCJoYXMiLCJoYXNJbiIsImluY2x1ZGVzIiwiaW5kZXhPZiIsImludGVyc2VjdGlvbiIsImludmVydEJ5IiwiaW52b2tlIiwiaW52b2tlTWFwIiwiaXNFcXVhbCIsImlzTWF0Y2giLCJqb2luIiwia2V5QnkiLCJsYXN0SW5kZXhPZiIsImx0IiwibHRlIiwibWFwIiwibWFwS2V5cyIsIm1hcFZhbHVlcyIsIm1hdGNoZXNQcm9wZXJ0eSIsIm1heEJ5IiwibWVhbkJ5IiwibWVyZ2UiLCJtZXJnZUFsbFdpdGgiLCJtaW5CeSIsIm11bHRpcGx5IiwibnRoIiwib21pdCIsIm9taXRCeSIsIm92ZXJBcmdzIiwicGFkIiwicGFkRW5kIiwicGFkU3RhcnQiLCJwYXJzZUludCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiLCJwYXJ0aXRpb24iLCJwaWNrIiwicGlja0J5IiwicHJvcGVydHlPZiIsInB1bGwiLCJwdWxsQWxsIiwicHVsbEF0IiwicmFuZG9tIiwicmFuZ2UiLCJyYW5nZVJpZ2h0IiwicmVhcmciLCJyZWplY3QiLCJyZW1vdmUiLCJyZXBlYXQiLCJyZXN0RnJvbSIsInJlc3VsdCIsInNhbXBsZVNpemUiLCJzb21lIiwic29ydEJ5Iiwic29ydGVkSW5kZXgiLCJzb3J0ZWRJbmRleE9mIiwic29ydGVkTGFzdEluZGV4Iiwic29ydGVkTGFzdEluZGV4T2YiLCJzb3J0ZWRVbmlxQnkiLCJzcGxpdCIsInNwcmVhZEZyb20iLCJzdGFydHNXaXRoIiwic3VidHJhY3QiLCJzdW1CeSIsInRha2UiLCJ0YWtlUmlnaHQiLCJ0YWtlUmlnaHRXaGlsZSIsInRha2VXaGlsZSIsInRhcCIsInRocm90dGxlIiwidGhydSIsInRpbWVzIiwidHJpbUNoYXJzIiwidHJpbUNoYXJzRW5kIiwidHJpbUNoYXJzU3RhcnQiLCJ0cnVuY2F0ZSIsInVuaW9uIiwidW5pcUJ5IiwidW5pcVdpdGgiLCJ1bnNldCIsInVuemlwV2l0aCIsIndpdGhvdXQiLCJ3cmFwIiwieG9yIiwiemlwIiwiemlwT2JqZWN0IiwiemlwT2JqZWN0RGVlcCJdLDM6WyJhc3NpZ25JbldpdGgiLCJhc3NpZ25XaXRoIiwiY2xhbXAiLCJkaWZmZXJlbmNlQnkiLCJkaWZmZXJlbmNlV2l0aCIsImZpbmRGcm9tIiwiZmluZEluZGV4RnJvbSIsImZpbmRMYXN0RnJvbSIsImZpbmRMYXN0SW5kZXhGcm9tIiwiZ2V0T3IiLCJpbmNsdWRlc0Zyb20iLCJpbmRleE9mRnJvbSIsImluUmFuZ2UiLCJpbnRlcnNlY3Rpb25CeSIsImludGVyc2VjdGlvbldpdGgiLCJpbnZva2VBcmdzIiwiaW52b2tlQXJnc01hcCIsImlzRXF1YWxXaXRoIiwiaXNNYXRjaFdpdGgiLCJmbGF0TWFwRGVwdGgiLCJsYXN0SW5kZXhPZkZyb20iLCJtZXJnZVdpdGgiLCJvcmRlckJ5IiwicGFkQ2hhcnMiLCJwYWRDaGFyc0VuZCIsInBhZENoYXJzU3RhcnQiLCJwdWxsQWxsQnkiLCJwdWxsQWxsV2l0aCIsInJhbmdlU3RlcCIsInJhbmdlU3RlcFJpZ2h0IiwicmVkdWNlIiwicmVkdWNlUmlnaHQiLCJyZXBsYWNlIiwic2V0Iiwic2xpY2UiLCJzb3J0ZWRJbmRleEJ5Iiwic29ydGVkTGFzdEluZGV4QnkiLCJ0cmFuc2Zvcm0iLCJ1bmlvbkJ5IiwidW5pb25XaXRoIiwidXBkYXRlIiwieG9yQnkiLCJ4b3JXaXRoIiwiemlwV2l0aCJdLDQ6WyJmaWxsIiwic2V0V2l0aCIsInVwZGF0ZVdpdGgiXX0sdC5hcnlSZWFyZz17MjpbMSwwXSwzOlsyLDAsMV0sNDpbMywyLDAsMV19LHQuaXRlcmF0ZWVBcnk9e2Ryb3BSaWdodFdoaWxlOjEsZHJvcFdoaWxlOjEsZXZlcnk6MSxmaWx0ZXI6MSxmaW5kOjEsZmluZEZyb206MSxmaW5kSW5kZXg6MSxmaW5kSW5kZXhGcm9tOjEsZmluZEtleToxLGZpbmRMYXN0OjEsZmluZExhc3RGcm9tOjEsZmluZExhc3RJbmRleDoxLGZpbmRMYXN0SW5kZXhGcm9tOjEsZmluZExhc3RLZXk6MSxmbGF0TWFwOjEsZmxhdE1hcERlZXA6MSxmbGF0TWFwRGVwdGg6MSxmb3JFYWNoOjEsZm9yRWFjaFJpZ2h0OjEsZm9ySW46MSxmb3JJblJpZ2h0OjEsZm9yT3duOjEsZm9yT3duUmlnaHQ6MSxtYXA6MSxtYXBLZXlzOjEsbWFwVmFsdWVzOjEscGFydGl0aW9uOjEscmVkdWNlOjIscmVkdWNlUmlnaHQ6MixyZWplY3Q6MSxyZW1vdmU6MSxzb21lOjEsdGFrZVJpZ2h0V2hpbGU6MSx0YWtlV2hpbGU6MSx0aW1lczoxLHRyYW5zZm9ybToyfSx0Lml0ZXJhdGVlUmVhcmc9e21hcEtleXM6WzFdLHJlZHVjZVJpZ2h0OlsxLDBdfSx0Lm1ldGhvZFJlYXJnPXthc3NpZ25JbkFsbFdpdGg6WzEsMF0sYXNzaWduSW5XaXRoOlsxLDIsMF0sYXNzaWduQWxsV2l0aDpbMSwwXSxhc3NpZ25XaXRoOlsxLDIsMF0sZGlmZmVyZW5jZUJ5OlsxLDIsMF0sZGlmZmVyZW5jZVdpdGg6WzEsMiwwXSxnZXRPcjpbMiwxLDBdLGludGVyc2VjdGlvbkJ5OlsxLDIsMF0saW50ZXJzZWN0aW9uV2l0aDpbMSwyLDBdLGlzRXF1YWxXaXRoOlsxLDIsMF0saXNNYXRjaFdpdGg6WzIsMSwwXSxtZXJnZUFsbFdpdGg6WzEsMF0sbWVyZ2VXaXRoOlsxLDIsMF0scGFkQ2hhcnM6WzIsMSwwXSxwYWRDaGFyc0VuZDpbMiwxLDBdLHBhZENoYXJzU3RhcnQ6WzIsMSwwXSxwdWxsQWxsQnk6WzIsMSwwXSxwdWxsQWxsV2l0aDpbMiwxLDBdLHJhbmdlU3RlcDpbMSwyLDBdLHJhbmdlU3RlcFJpZ2h0OlsxLDIsMF0sc2V0V2l0aDpbMywxLDIsMF0sc29ydGVkSW5kZXhCeTpbMiwxLDBdLHNvcnRlZExhc3RJbmRleEJ5OlsyLDEsMF0sdW5pb25CeTpbMSwyLDBdLHVuaW9uV2l0aDpbMSwyLDBdLHVwZGF0ZVdpdGg6WzMsMSwyLDBdLHhvckJ5OlsxLDIsMF0seG9yV2l0aDpbMSwyLDBdLHppcFdpdGg6WzEsMiwwXX0sdC5tZXRob2RTcHJlYWQ9e2Fzc2lnbkFsbDp7c3RhcnQ6MH0sYXNzaWduQWxsV2l0aDp7c3RhcnQ6MH0sYXNzaWduSW5BbGw6e3N0YXJ0OjB9LGFzc2lnbkluQWxsV2l0aDp7c3RhcnQ6MH0sZGVmYXVsdHNBbGw6e3N0YXJ0OjB9LGRlZmF1bHRzRGVlcEFsbDp7c3RhcnQ6MH0saW52b2tlQXJnczp7c3RhcnQ6Mn0saW52b2tlQXJnc01hcDp7c3RhcnQ6Mn0sbWVyZ2VBbGw6e3N0YXJ0OjB9LG1lcmdlQWxsV2l0aDp7c3RhcnQ6MH0scGFydGlhbDp7c3RhcnQ6MX0scGFydGlhbFJpZ2h0OntzdGFydDoxfSx3aXRob3V0OntzdGFydDoxfSx6aXBBbGw6e3N0YXJ0OjB9fSx0Lm11dGF0ZT17YXJyYXk6e2ZpbGw6ITAscHVsbDohMCxwdWxsQWxsOiEwLHB1bGxBbGxCeTohMCxwdWxsQWxsV2l0aDohMCxwdWxsQXQ6ITAscmVtb3ZlOiEwLHJldmVyc2U6ITB9LG9iamVjdDp7YXNzaWduOiEwLGFzc2lnbkFsbDohMCxhc3NpZ25BbGxXaXRoOiEwLGFzc2lnbkluOiEwLGFzc2lnbkluQWxsOiEwLGFzc2lnbkluQWxsV2l0aDohMCxhc3NpZ25JbldpdGg6ITAsYXNzaWduV2l0aDohMCxkZWZhdWx0czohMCxkZWZhdWx0c0FsbDohMCxkZWZhdWx0c0RlZXA6ITAsZGVmYXVsdHNEZWVwQWxsOiEwLG1lcmdlOiEwLG1lcmdlQWxsOiEwLG1lcmdlQWxsV2l0aDohMCxtZXJnZVdpdGg6ITB9LHNldDp7c2V0OiEwLHNldFdpdGg6ITAsdW5zZXQ6ITAsdXBkYXRlOiEwLHVwZGF0ZVdpdGg6ITB9fSx0LnJlYWxUb0FsaWFzPWZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPXQuYWxpYXNUb1JlYWwscj17fTtmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtlLmNhbGwocixhKT9yW2FdLnB1c2gobyk6clthXT1bb119cmV0dXJuIHJ9KCksdC5yZW1hcD17YXNzaWduQWxsOiJhc3NpZ24iLGFzc2lnbkFsbFdpdGg6ImFzc2lnbldpdGgiLGFzc2lnbkluQWxsOiJhc3NpZ25JbiIsYXNzaWduSW5BbGxXaXRoOiJhc3NpZ25JbldpdGgiLGN1cnJ5TjoiY3VycnkiLGN1cnJ5UmlnaHROOiJjdXJyeVJpZ2h0IixkZWZhdWx0c0FsbDoiZGVmYXVsdHMiLGRlZmF1bHRzRGVlcEFsbDoiZGVmYXVsdHNEZWVwIixmaW5kRnJvbToiZmluZCIsZmluZEluZGV4RnJvbToiZmluZEluZGV4IixmaW5kTGFzdEZyb206ImZpbmRMYXN0IixmaW5kTGFzdEluZGV4RnJvbToiZmluZExhc3RJbmRleCIsZ2V0T3I6ImdldCIsaW5jbHVkZXNGcm9tOiJpbmNsdWRlcyIsaW5kZXhPZkZyb206ImluZGV4T2YiLGludm9rZUFyZ3M6Imludm9rZSIsaW52b2tlQXJnc01hcDoiaW52b2tlTWFwIixsYXN0SW5kZXhPZkZyb206Imxhc3RJbmRleE9mIixtZXJnZUFsbDoibWVyZ2UiLG1lcmdlQWxsV2l0aDoibWVyZ2VXaXRoIixwYWRDaGFyczoicGFkIixwYWRDaGFyc0VuZDoicGFkRW5kIixwYWRDaGFyc1N0YXJ0OiJwYWRTdGFydCIscHJvcGVydHlPZjoiZ2V0IixyYW5nZVN0ZXA6InJhbmdlIixyYW5nZVN0ZXBSaWdodDoicmFuZ2VSaWdodCIscmVzdEZyb206InJlc3QiLHNwcmVhZEZyb206InNwcmVhZCIsdHJpbUNoYXJzOiJ0cmltIix0cmltQ2hhcnNFbmQ6InRyaW1FbmQiLHRyaW1DaGFyc1N0YXJ0OiJ0cmltU3RhcnQiLHppcEFsbDoiemlwIn0sdC5za2lwRml4ZWQ9e2Nhc3RBcnJheTohMCxmbG93OiEwLGZsb3dSaWdodDohMCxpdGVyYXRlZTohMCxtaXhpbjohMCxyZWFyZzohMCxydW5JbkNvbnRleHQ6ITB9LHQuc2tpcFJlYXJnPXthZGQ6ITAsYXNzaWduOiEwLGFzc2lnbkluOiEwLGJpbmQ6ITAsYmluZEtleTohMCxjb25jYXQ6ITAsZGlmZmVyZW5jZTohMCxkaXZpZGU6ITAsZXE6ITAsZ3Q6ITAsZ3RlOiEwLGlzRXF1YWw6ITAsbHQ6ITAsbHRlOiEwLG1hdGNoZXNQcm9wZXJ0eTohMCxtZXJnZTohMCxtdWx0aXBseTohMCxvdmVyQXJnczohMCxwYXJ0aWFsOiEwLHBhcnRpYWxSaWdodDohMCxwcm9wZXJ0eU9mOiEwLHJhbmRvbTohMCxyYW5nZTohMCxyYW5nZVJpZ2h0OiEwLHN1YnRyYWN0OiEwLHppcDohMCx6aXBPYmplY3Q6ITAsemlwT2JqZWN0RGVlcDohMH19LGlOZFY6ZnVuY3Rpb24oZSx0KXt2YXIgbj17aW52YWxpZFByZWRpY2F0ZToiYHByZWRpY2F0ZWAgbXVzdCBiZSBhIGZ1bmN0aW9uIixpbnZhbGlkUHJvcFZhbGlkYXRvcjoiYHByb3BWYWxpZGF0b3JgIG11c3QgYmUgYSBmdW5jdGlvbiIscmVxdWlyZWRDb3JlOiJpcyBtYXJrZWQgYXMgcmVxdWlyZWQiLGludmFsaWRUeXBlQ29yZToiSW52YWxpZCBpbnB1dCB0eXBlIixwcmVkaWNhdGVGYWlsdXJlQ29yZToiRmFpbGVkIHRvIHN1Y2NlZWQgd2l0aCBwcmVkaWNhdGUiLGFub255bW91c01lc3NhZ2U6Ijw8YW5vbnltb3VzPj4iLGJhc2VJbnZhbGlkTWVzc2FnZToiSW52YWxpZCAifTtmdW5jdGlvbiByKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihuLmludmFsaWRQcm9wVmFsaWRhdG9yKTt2YXIgdD1lLmJpbmQobnVsbCwhMSxudWxsKTtyZXR1cm4gdC5pc1JlcXVpcmVkPWUuYmluZChudWxsLCEwLG51bGwpLHQud2l0aFByZWRpY2F0ZT1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3Iobi5pbnZhbGlkUHJlZGljYXRlKTt2YXIgcj1lLmJpbmQobnVsbCwhMSx0KTtyZXR1cm4gci5pc1JlcXVpcmVkPWUuYmluZChudWxsLCEwLHQpLHJ9LHR9ZnVuY3Rpb24gbyhlLHQscil7cmV0dXJuIG5ldyBFcnJvcigiVGhlIHByb3AgYCIrZSsiYCAiK24ucmVxdWlyZWRDb3JlKyIgaW4gYCIrdCsiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgIityKyJgLiIpfWUuZXhwb3J0cz17Y29uc3RydWN0UHJvcFZhbGlkYXRvclZhcmlhdGlvbnM6cixjcmVhdGVNb21lbnRDaGVja2VyOmZ1bmN0aW9uKGUsdCxhLGkpe3JldHVybiByKChmdW5jdGlvbihyLHUscyxsLGMsZixkKXt2YXIgcD1zW2xdLGg9dHlwZW9mIHAseT1mdW5jdGlvbihlLHQsbixyKXt2YXIgYT12b2lkIDA9PT1yLGk9bnVsbD09PXI7aWYoZSl7aWYoYSlyZXR1cm4gbyhuLHQsInVuZGVmaW5lZCIpO2lmKGkpcmV0dXJuIG8obix0LCJudWxsIil9cmV0dXJuIGF8fGk/bnVsbDotMX0ocixjPWN8fG4uYW5vbnltb3VzTWVzc2FnZSxkPWR8fGwscCk7aWYoLTEhPT15KXJldHVybiB5O2lmKHQmJiF0KHApKXJldHVybiBuZXcgRXJyb3Iobi5pbnZhbGlkVHlwZUNvcmUrIjogYCIrbCsiYCBvZiB0eXBlIGAiK2grImAgc3VwcGxpZWQgdG8gYCIrYysiYCwgZXhwZWN0ZWQgYCIrZSsiYC4iKTtpZighYShwKSlyZXR1cm4gbmV3IEVycm9yKG4uYmFzZUludmFsaWRNZXNzYWdlK2YrIiBgIitsKyJgIG9mIHR5cGUgYCIraCsiYCBzdXBwbGllZCB0byBgIitjKyJgLCBleHBlY3RlZCBgIitpKyJgLiIpO2lmKHUmJiF1KHApKXt2YXIgbT11Lm5hbWV8fG4uYW5vbnltb3VzTWVzc2FnZTtyZXR1cm4gbmV3IEVycm9yKG4uYmFzZUludmFsaWRNZXNzYWdlK2YrIiBgIitsKyJgIG9mIHR5cGUgYCIraCsiYCBzdXBwbGllZCB0byBgIitjKyJgLiAiK24ucHJlZGljYXRlRmFpbHVyZUNvcmUrIiBgIittKyJgLiIpfXJldHVybiBudWxsfSkpfSxtZXNzYWdlczpufX0saVl1TDpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiksbj0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIikscj1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLG89L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtlLmRlZmluZUxvY2FsZSgiZXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZT8vLU1NTS0vLnRlc3Qocik/bltlLm1vbnRoKCldOnRbZS5tb250aCgpXTp0fSxtb250aHNSZWdleDpvLG1vbnRoc1Nob3J0UmVnZXg6byxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6cixsb25nTW9udGhzUGFyc2U6cixzaG9ydE1vbnRoc1BhcnNlOnIsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21pX2p1X3ZpX3PDoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWHDsWFuYSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5vcyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkw61hIixkZDoiJWQgZMOtYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhw7FvIix5eToiJWQgYcOxb3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSxpWmpjOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZT1lfHx7fSx0LnR5cGU9ZS50eXBlfHwiY2FjaGUtbW9kdWxlIix0LnZlcmJvc2U9ZS52ZXJib3NlfHwhMSx0LmRlZmF1bHRFeHBpcmF0aW9uPWUuZGVmYXVsdEV4cGlyYXRpb258fDkwMCx0LnJlYWRPbmx5PWUucmVhZE9ubHl8fCExLHQuY2hlY2tPblByZXZpb3VzRW1wdHk9ImJvb2xlYW4iIT10eXBlb2YgZS5jaGVja09uUHJldmlvdXNFbXB0eXx8ZS5jaGVja09uUHJldmlvdXNFbXB0eSx0LmJhY2tncm91bmRSZWZyZXNoSW50ZXJ2YWxDaGVjaz0iYm9vbGVhbiIhPXR5cGVvZiBlLmJhY2tncm91bmRSZWZyZXNoSW50ZXJ2YWxDaGVja3x8ZS5iYWNrZ3JvdW5kUmVmcmVzaEludGVydmFsQ2hlY2ssdC5iYWNrZ3JvdW5kUmVmcmVzaEludGVydmFsPWUuYmFja2dyb3VuZFJlZnJlc2hJbnRlcnZhbHx8NmU0LHQuYmFja2dyb3VuZFJlZnJlc2hNaW5UdGw9ZS5iYWNrZ3JvdW5kUmVmcmVzaE1pblR0bHx8N2U0O3ZhciBuLHIsbz1udWxsLGE9ZS5zdG9yYWdlTW9ja3x8ITEsaT0hMSx1PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LHM9e2RiOnt9LGV4cGlyYXRpb25zOnt9LHJlZnJlc2hLZXlzOnt9fTtmdW5jdGlvbiBsKCl7aWYodSYmb3x8YSl7dmFyIGU9czt0cnl7ZT1KU09OLnN0cmluZ2lmeShlKSxvLnNldEl0ZW0obixlKX1jYXRjaChlKXt9fX1mdW5jdGlvbiBjKGUsdCl7aWYoZSl0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gZihlKXtkZWxldGUgcy5kYltlXSxkZWxldGUgcy5leHBpcmF0aW9uc1tlXSxsKCl9ZnVuY3Rpb24gZCgpe2lmKCFpKXtpZihpPSEwLHQuYmFja2dyb3VuZFJlZnJlc2hJbnRlcnZhbENoZWNrJiZ0LmJhY2tncm91bmRSZWZyZXNoSW50ZXJ2YWw+dC5iYWNrZ3JvdW5kUmVmcmVzaE1pblR0bCl0aHJvdyBuZXcgRXJyb3IoIkJBQ0tHUk9VTkRfUkVGUkVTSF9JTlRFUlZBTF9FWENFUFRJT046IGJhY2tncm91bmRSZWZyZXNoSW50ZXJ2YWwgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBiYWNrZ3JvdW5kUmVmcmVzaE1pblR0bC4iKTtyPXNldEludGVydmFsKGgsdC5iYWNrZ3JvdW5kUmVmcmVzaEludGVydmFsKX19ZnVuY3Rpb24gcChlLHQsbixyKXtufHx0aGlzLnNldChlLHIsdC5saWZlU3Bhbi8xZTMsdC5yZWZyZXNoLChmdW5jdGlvbigpe30pKX1mdW5jdGlvbiBoKCl7T2JqZWN0LmtleXMocy5yZWZyZXNoS2V5cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9cy5yZWZyZXNoS2V5c1tlXTt0LmV4cGlyYXRpb24tRGF0ZS5ub3coKTx0aGlzLmJhY2tncm91bmRSZWZyZXNoTWluVHRsJiZ0LnJlZnJlc2goZSxwLmJpbmQodGhpcyxlLHQpKX0pLHQpfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWZ1bmN0aW9uIG0oZSxuLHIpeyh0LnZlcmJvc2V8fGUpJiYocj9jb25zb2xlLmxvZyh0LnR5cGUrIjogIituLHIpOmNvbnNvbGUubG9nKHQudHlwZStuKSl9IWZ1bmN0aW9uKCl7aWYodXx8YSl7aWYoYSlvPWEsbj0iY2FjaGUtbW9kdWxlLXN0b3JhZ2UtbW9jayI7ZWxzZXt2YXIgcj0ibG9jYWwiPT09ZS5zdG9yYWdlfHwic2Vzc2lvbiI9PT1lLnN0b3JhZ2U/ZS5zdG9yYWdlOm51bGw7bz0hKCFyfHx2b2lkIDA9PT10eXBlb2YgU3RvcmFnZSkmJndpbmRvd1tyKyJTdG9yYWdlIl0sbj1yP3QudHlwZSsiLSIrcisiLXN0b3JhZ2UiOm51bGx9aWYobyl7dmFyIGk9by5nZXRJdGVtKG4pO3RyeXtzPUpTT04ucGFyc2UoaSl8fHN9Y2F0Y2goZSl7fX1lbHNlIHImJm0oITAsIkJyb3dzZXIgc3RvcmFnZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci4gRGVmYXVsdGluZyB0byBhbiBpbi1tZW1vcnkgY2FjaGUuIil9fSgpLG0oITEsIkNhY2hlLW1vZHVsZSBjbGllbnQgY3JlYXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZGVmYXVsdHM6Iix7dHlwZTp0LnR5cGUsZGVmYXVsdEV4cGlyYXRpb246dC5kZWZhdWx0RXhwaXJhdGlvbix2ZXJib3NlOnQudmVyYm9zZSxyZWFkT25seTp0LnJlYWRPbmx5fSksdC5nZXQ9ZnVuY3Rpb24oZSx0KXtjKGFyZ3VtZW50cy5sZW5ndGg8MiwiQVJHVU1FTlRfRVhDRVBUSU9OOiAuZ2V0KCkgcmVxdWlyZXMgMiBhcmd1bWVudHMuIiksbSghMSwiZ2V0KCkgY2FsbGVkOiIse2tleTplfSk7dHJ5e3ZhciBuPURhdGUubm93KCkscj1zLmV4cGlyYXRpb25zW2VdO2lmKHI+bil7dmFyIG89cy5kYltlXTsib2JqZWN0Ij09dHlwZW9mIG8mJihvPXkobykpLHQobnVsbCxvKX1lbHNlIGYoZSksdChudWxsLG51bGwpfWNhdGNoKGUpe3Qoe25hbWU6IkdldEV4Y2VwdGlvbiIsbWVzc2FnZTplfSxudWxsKX19LHQubWdldD1mdW5jdGlvbihlLG4scil7Yyhhcmd1bWVudHMubGVuZ3RoPDIsIkFSR1VNRU5UX0VYQ0VQVElPTjogLm1nZXQoKSByZXF1aXJlcyAyIGFyZ3VtZW50cy4iKSxtKCExLCIubWdldCgpIGNhbGxlZDoiLHtrZXlzOmV9KTtmb3IodmFyIG89e30sYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgaT1lW2FdO3QuZ2V0KGksKGZ1bmN0aW9uKGUsdCl7bnVsbCE9PXQmJihvW2ldPXQpfSkpfW4obnVsbCxvLHIpfSx0LnNldD1mdW5jdGlvbigpe2MoYXJndW1lbnRzLmxlbmd0aDwyLCJBUkdVTUVOVF9FWENFUFRJT046IC5zZXQoKSByZXF1aXJlcyBhdCBsZWFzdCAyIGFyZ3VtZW50cy4iKTt2YXIgZT1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbMV0scj1hcmd1bWVudHNbMl18fG51bGwsbz01PT1hcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1szXTpudWxsLGE9NT09YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNF06YXJndW1lbnRzWzNdO2lmKG0oITEsIi5zZXQoKSBjYWxsZWQ6Iix7a2V5OmUsdmFsdWU6bn0pLCF0LnJlYWRPbmx5KXRyeXt2YXIgaT0ocj1yPzFlMypyOjFlMyp0LmRlZmF1bHRFeHBpcmF0aW9uKStEYXRlLm5vdygpO3MuZXhwaXJhdGlvbnNbZV09aSxzLmRiW2VdPW4sYSYmYSgpLG8mJihzLnJlZnJlc2hLZXlzW2VdPXtleHBpcmF0aW9uOmksbGlmZVNwYW46cixyZWZyZXNoOm99LGQoKSksbCgpfWNhdGNoKGUpe20oITAsIi5zZXQoKSBmYWlsZWQgZm9yIGNhY2hlIG9mIHR5cGUgIit0LnR5cGUse25hbWU6IkNhY2hlTW9kdWxlU2V0RXhjZXB0aW9uIixtZXNzYWdlOmV9KX19LHQubXNldD1mdW5jdGlvbihlLG4scil7Zm9yKHZhciBvIGluIGMoYXJndW1lbnRzLmxlbmd0aDwxLCJBUkdVTUVOVF9FWENFUFRJT046IC5tc2V0KCkgcmVxdWlyZXMgYXQgbGVhc3QgMSBhcmd1bWVudC4iKSxtKCExLCIubXNldCgpIGNhbGxlZDoiLHtkYXRhOmV9KSxlKWlmKGUuaGFzT3duUHJvcGVydHkobykpe3ZhciBhPW58fHQuZGVmYXVsdEV4cGlyYXRpb24saT1lW29dOyJvYmplY3QiPT10eXBlb2YgaSYmaS5jYWNoZVZhbHVlJiYoYT1pLmV4cGlyYXRpb258fGEsaT1pLmNhY2hlVmFsdWUpLHQuc2V0KG8saSxhKX1yJiZyKCl9LHQuZGVsPWZ1bmN0aW9uKGUsdCl7aWYoYyhhcmd1bWVudHMubGVuZ3RoPDEsIkFSR1VNRU5UX0VYQ0VQVElPTjogLmRlbCgpIHJlcXVpcmVzIGF0IGxlYXN0IDEgYXJndW1lbnQuIiksbSghMSwiLmRlbCgpIGNhbGxlZDoiLHtrZXlzOmV9KSwib2JqZWN0Ij09dHlwZW9mIGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO2RlbGV0ZSBzLmRiW3JdLGRlbGV0ZSBzLmV4cGlyYXRpb25zW3JdLGRlbGV0ZSBzLnJlZnJlc2hLZXlzW3JdfXQmJnQobnVsbCxlLmxlbmd0aCl9ZWxzZSBkZWxldGUgcy5kYltlXSxkZWxldGUgcy5leHBpcmF0aW9uc1tlXSxkZWxldGUgcy5yZWZyZXNoS2V5c1tlXSx0JiZ0KG51bGwsMSk7bCgpfSx0LmZsdXNoPWZ1bmN0aW9uKGUpe20oITEsIi5mbHVzaCgpIGNhbGxlZCIpLHMuZGI9e30scy5leHBpcmF0aW9ucz17fSxzLnJlZnJlc2hLZXlzPXt9LGUmJmUoKSxsKCksciYmY2xlYXJJbnRlcnZhbChyKSxpPSExfX19LGliN1E6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ4b2oyIiksbz1uKCI4MmMyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9cigpO3JldHVybiBvKE9iamVjdCx7dmFsdWVzOmV9LHt2YWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyE9PWV9fSksZX19LGljV1Y6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJMYWtyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXIoZSk7cmV0dXJue3g6dC5sZWZ0LHk6dC50b3Asd2lkdGg6dC5yaWdodC10LmxlZnQsaGVpZ2h0OnQuYm90dG9tLXQudG9wfX19LGlkalY6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlLHIpe3ZhciBvOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGEoZSx0LG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBlLmNhbGwodCk7Y2FzZSAxOnJldHVybiBlLmNhbGwodCxuWzBdKTtjYXNlIDI6cmV0dXJuIGUuY2FsbCh0LG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiBlLmNhbGwodCxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIGUuYXBwbHkodCxuKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2Zvcih2YXIgbz0tMSxhPW51bGw9PWU/MDplLmxlbmd0aDsrK288YTspe3ZhciBpPWVbb107dChyLGksbihpKSxlKX1yZXR1cm4gcn1mdW5jdGlvbiB1KGUsdCl7Zm9yKHZhciBuPS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoOysrbjxyJiYhMSE9PXQoZVtuXSxuLGUpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGg7bi0tJiYhMSE9PXQoZVtuXSxuLGUpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gbChlLHQpe2Zvcih2YXIgbj0tMSxyPW51bGw9PWU/MDplLmxlbmd0aDsrK248cjspaWYoIXQoZVtuXSxuLGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGMoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGgsbz0wLGE9W107KytuPHI7KXt2YXIgaT1lW25dO3QoaSxuLGUpJiYoYVtvKytdPWkpfXJldHVybiBhfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4hKG51bGw9PWV8fCFlLmxlbmd0aCkmJi0xPHcoZSx0LDApfWZ1bmN0aW9uIGQoZSx0LG4pe2Zvcih2YXIgcj0tMSxvPW51bGw9PWU/MDplLmxlbmd0aDsrK3I8bzspaWYobih0LGVbcl0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHAoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGgsbz1BcnJheShyKTsrK248cjspb1tuXT10KGVbbl0sbixlKTtyZXR1cm4gb31mdW5jdGlvbiBoKGUsdCl7Zm9yKHZhciBuPS0xLHI9dC5sZW5ndGgsbz1lLmxlbmd0aDsrK248cjspZVtvK25dPXRbbl07cmV0dXJuIGV9ZnVuY3Rpb24geShlLHQsbixyKXt2YXIgbz0tMSxhPW51bGw9PWU/MDplLmxlbmd0aDtmb3IociYmYSYmKG49ZVsrK29dKTsrK288YTspbj10KG4sZVtvXSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIG0oZSx0LG4scil7dmFyIG89bnVsbD09ZT8wOmUubGVuZ3RoO2ZvcihyJiZvJiYobj1lWy0tb10pO28tLTspbj10KG4sZVtvXSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIHYoZSx0KXtmb3IodmFyIG49LTEscj1udWxsPT1lPzA6ZS5sZW5ndGg7KytuPHI7KWlmKHQoZVtuXSxuLGUpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGcoZSx0LG4pe3ZhciByO3JldHVybiBuKGUsKGZ1bmN0aW9uKGUsbixvKXtpZih0KGUsbixvKSlyZXR1cm4gcj1uLCExfSkpLHJ9ZnVuY3Rpb24gYihlLHQsbixyKXt2YXIgbz1lLmxlbmd0aDtmb3Iobis9cj8xOi0xO3I/bi0tOisrbjxvOylpZih0KGVbbl0sbixlKSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiB3KGUsdCxuKXtpZih0PT10KWU6ey0tbjtmb3IodmFyIHI9ZS5sZW5ndGg7KytuPHI7KWlmKGVbbl09PT10KXtlPW47YnJlYWsgZX1lPS0xfWVsc2UgZT1iKGUsRSxuKTtyZXR1cm4gZX1mdW5jdGlvbiBfKGUsdCxuLHIpey0tbjtmb3IodmFyIG89ZS5sZW5ndGg7KytuPG87KWlmKHIoZVtuXSx0KSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBFKGUpe3JldHVybiBlIT1lfWZ1bmN0aW9uIE8oZSx0KXt2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIG4/UyhlLHQpL246Vn1mdW5jdGlvbiBrKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9LOnRbZV19fWZ1bmN0aW9uIEMoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT1lP0s6ZVt0XX19ZnVuY3Rpb24geChlLHQsbixyLG8pe3JldHVybiBvKGUsKGZ1bmN0aW9uKGUsbyxhKXtuPXI/KHI9ITEsZSk6dChuLGUsbyxhKX0pKSxufWZ1bmN0aW9uIFMoZSx0KXtmb3IodmFyIG4scj0tMSxvPWUubGVuZ3RoOysrcjxvOyl7dmFyIGE9dChlW3JdKTthIT09SyYmKG49bj09PUs/YTpuK2EpfXJldHVybiBufWZ1bmN0aW9uIEQoZSx0KXtmb3IodmFyIG49LTEscj1BcnJheShlKTsrK248ZTspcltuXT10KG4pO3JldHVybiByfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX1mdW5jdGlvbiBNKGUsdCl7cmV0dXJuIHAodCwoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSl9ZnVuY3Rpb24gUChlLHQpe3JldHVybiBlLmhhcyh0KX1mdW5jdGlvbiBOKGUsdCl7Zm9yKHZhciBuPS0xLHI9ZS5sZW5ndGg7KytuPHImJi0xPHcodCxlW25dLDApOyk7cmV0dXJuIG59ZnVuY3Rpb24gaihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aDtuLS0mJi0xPHcodCxlW25dLDApOyk7cmV0dXJuIG59ZnVuY3Rpb24gTChlKXtyZXR1cm4iXFwiK1JlW2VdfWZ1bmN0aW9uIFIoZSl7dmFyIHQ9LTEsbj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUscil7blsrK3RdPVtyLGVdfSkpLG59ZnVuY3Rpb24gSShlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZSh0KG4pKX19ZnVuY3Rpb24gQShlLHQpe2Zvcih2YXIgbj0tMSxyPWUubGVuZ3RoLG89MCxhPVtdOysrbjxyOyl7dmFyIGk9ZVtuXTtpIT09dCYmIl9fbG9kYXNoX3BsYWNlaG9sZGVyX18iIT09aXx8KGVbbl09Il9fbG9kYXNoX3BsYWNlaG9sZGVyX18iLGFbbysrXT1uKX1yZXR1cm4gYX1mdW5jdGlvbiBGKGUpe3ZhciB0PS0xLG49QXJyYXkoZS5zaXplKTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtuWysrdF09ZX0pKSxufWZ1bmN0aW9uIEIoZSl7aWYoTWUudGVzdChlKSl7Zm9yKHZhciB0PURlLmxhc3RJbmRleD0wO0RlLnRlc3QoZSk7KSsrdDtlPXR9ZWxzZSBlPSRlKGUpO3JldHVybiBlfWZ1bmN0aW9uIHooZSl7cmV0dXJuIE1lLnRlc3QoZSk/ZS5tYXRjaChEZSl8fFtdOmUuc3BsaXQoIiIpfXZhciBLLHE9MS8wLFY9TmFOLFU9W1siYXJ5IiwxMjhdLFsiYmluZCIsMV0sWyJiaW5kS2V5IiwyXSxbImN1cnJ5Iiw4XSxbImN1cnJ5UmlnaHQiLDE2XSxbImZsaXAiLDUxMl0sWyJwYXJ0aWFsIiwzMl0sWyJwYXJ0aWFsUmlnaHQiLDY0XSxbInJlYXJnIiwyNTZdXSxXPS9cYl9fcFwrPScnOy9nLFk9L1xiKF9fcFwrPSknJ1wrL2csSD0vKF9fZVwoLio/XCl8XGJfX3RcKSlcKycnOy9nLEc9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFE9L1smPD4iJ10vZyxKPVJlZ0V4cChHLnNvdXJjZSksWj1SZWdFeHAoUS5zb3VyY2UpLCQ9LzwlLShbXHNcU10rPyklPi9nLFg9LzwlKFtcc1xTXSs/KSU+L2csZWU9LzwlPShbXHNcU10rPyklPi9nLHRlPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLG5lPS9eXHcqJC8scmU9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csb2U9L1tcXF4kLiorPygpW1xde318XS9nLGFlPVJlZ0V4cChvZS5zb3VyY2UpLGllPS9eXHMrfFxzKyQvZyx1ZT0vXlxzKy8sc2U9L1xzKyQvLGxlPS9ceyg/OlxuXC9cKiBcW3dyYXBwZWQgd2l0aCAuK1xdIFwqXC8pP1xuPy8sY2U9L1x7XG5cL1wqIFxbd3JhcHBlZCB3aXRoICguKylcXSBcKi8sZmU9Lyw/ICYgLyxkZT0vW15ceDAwLVx4MmZceDNhLVx4NDBceDViLVx4NjBceDdiLVx4N2ZdKy9nLHBlPS9cXChcXCk/L2csaGU9L1wkXHsoW15cXH1dKig/OlxcLlteXFx9XSopKilcfS9nLHllPS9cdyokLyxtZT0vXlstK10weFswLTlhLWZdKyQvaSx2ZT0vXjBiWzAxXSskL2ksZ2U9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sYmU9L14wb1swLTddKyQvaSx3ZT0vXig/OjB8WzEtOV1cZCopJC8sX2U9L1tceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx4ZmZcdTAxMDAtXHUwMTdmXS9nLEVlPS8oJF4pLyxPZT0vWydcblxyXHUyMDI4XHUyMDI5XFxdL2csa2U9IltcXHVmZTBlXFx1ZmUwZl0/KD86W1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl18XFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdKT8oPzpcXHUyMDBkKD86W15cXHVkODAwLVxcdWRmZmZdfCg/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn18W1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSlbXFx1ZmUwZVxcdWZlMGZdPyg/OltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdfFxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSk/KSoiLENlPSIoPzpbXFx1MjcwMC1cXHUyN2JmXXwoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9fFtcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0pIitrZSx4ZT1SZWdFeHAoIlsn4oCZXSIsImciKSxTZT1SZWdFeHAoIltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIiwiZyIpLERlPVJlZ0V4cCgiXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdKD89XFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdKXwoPzpbXlxcdWQ4MDAtXFx1ZGZmZl1bXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXT98W1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl18KD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfXxbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdfFtcXHVkODAwLVxcdWRmZmZdKSIra2UsImciKSxUZT1SZWdFeHAoWyJbQS1aXFx4YzAtXFx4ZDZcXHhkOC1cXHhkZV0/W2EtelxceGRmLVxceGY2XFx4ZjgtXFx4ZmZdKyg/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT8oPz1bXFx4YWNcXHhiMVxceGQ3XFx4ZjdcXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHhiZlxcdTIwMDAtXFx1MjA2ZiBcXHRcXHgwYlxcZlxceGEwXFx1ZmVmZlxcblxcclxcdTIwMjhcXHUyMDI5XFx1MTY4MFxcdTE4MGVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMF18W0EtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdfCQpfCg/OltBLVpcXHhjMC1cXHhkNlxceGQ4LVxceGRlXXxbXlxcdWQ4MDAtXFx1ZGZmZlxceGFjXFx4YjFcXHhkN1xceGY3XFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4YmZcXHUyMDAwLVxcdTIwNmYgXFx0XFx4MGJcXGZcXHhhMFxcdWZlZmZcXG5cXHJcXHUyMDI4XFx1MjAyOVxcdTE2ODBcXHUxODBlXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMGFcXHUyMDJmXFx1MjA1ZlxcdTMwMDBcXGQrXFx1MjcwMC1cXHUyN2JmYS16XFx4ZGYtXFx4ZjZcXHhmOC1cXHhmZkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdKSsoPzpbJ+KAmV0oPzpEfExMfE18UkV8U3xUfFZFKSk/KD89W1xceGFjXFx4YjFcXHhkN1xceGY3XFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4YmZcXHUyMDAwLVxcdTIwNmYgXFx0XFx4MGJcXGZcXHhhMFxcdWZlZmZcXG5cXHJcXHUyMDI4XFx1MjAyOVxcdTE2ODBcXHUxODBlXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMGFcXHUyMDJmXFx1MjA1ZlxcdTMwMDBdfFtBLVpcXHhjMC1cXHhkNlxceGQ4LVxceGRlXSg/OlthLXpcXHhkZi1cXHhmNlxceGY4LVxceGZmXXxbXlxcdWQ4MDAtXFx1ZGZmZlxceGFjXFx4YjFcXHhkN1xceGY3XFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4YmZcXHUyMDAwLVxcdTIwNmYgXFx0XFx4MGJcXGZcXHhhMFxcdWZlZmZcXG5cXHJcXHUyMDI4XFx1MjAyOVxcdTE2ODBcXHUxODBlXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMGFcXHUyMDJmXFx1MjA1ZlxcdTMwMDBcXGQrXFx1MjcwMC1cXHUyN2JmYS16XFx4ZGYtXFx4ZjZcXHhmOC1cXHhmZkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdKXwkKXxbQS1aXFx4YzAtXFx4ZDZcXHhkOC1cXHhkZV0/KD86W2EtelxceGRmLVxceGY2XFx4ZjgtXFx4ZmZdfFteXFx1ZDgwMC1cXHVkZmZmXFx4YWNcXHhiMVxceGQ3XFx4ZjdcXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHhiZlxcdTIwMDAtXFx1MjA2ZiBcXHRcXHgwYlxcZlxceGEwXFx1ZmVmZlxcblxcclxcdTIwMjhcXHUyMDI5XFx1MTY4MFxcdTE4MGVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMFxcZCtcXHUyNzAwLVxcdTI3YmZhLXpcXHhkZi1cXHhmNlxceGY4LVxceGZmQS1aXFx4YzAtXFx4ZDZcXHhkOC1cXHhkZV0pKyg/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT98W0EtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdKyg/Olsn4oCZXSg/OkR8TEx8TXxSRXxTfFR8VkUpKT98XFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcZFRIKSg/PVxcYnxbYS16X10pfFxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXGR0aCkoPz1cXGJ8W0EtWl9dKXxcXGQrIixDZV0uam9pbigifCIpLCJnIiksTWU9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpLFBlPS9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vLE5lPSJBcnJheSBCdWZmZXIgRGF0YVZpZXcgRGF0ZSBFcnJvciBGbG9hdDMyQXJyYXkgRmxvYXQ2NEFycmF5IEZ1bmN0aW9uIEludDhBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgTWFwIE1hdGggT2JqZWN0IFByb21pc2UgUmVnRXhwIFNldCBTdHJpbmcgU3ltYm9sIFR5cGVFcnJvciBVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5IFdlYWtNYXAgXyBjbGVhclRpbWVvdXQgaXNGaW5pdGUgcGFyc2VJbnQgc2V0VGltZW91dCIuc3BsaXQoIiAiKSxqZT17fTtqZVsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09amVbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWplWyJbb2JqZWN0IEludDhBcnJheV0iXT1qZVsiW29iamVjdCBJbnQxNkFycmF5XSJdPWplWyJbb2JqZWN0IEludDMyQXJyYXldIl09amVbIltvYmplY3QgVWludDhBcnJheV0iXT1qZVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1qZVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1qZVsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxqZVsiW29iamVjdCBBcmd1bWVudHNdIl09amVbIltvYmplY3QgQXJyYXldIl09amVbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09amVbIltvYmplY3QgQm9vbGVhbl0iXT1qZVsiW29iamVjdCBEYXRhVmlld10iXT1qZVsiW29iamVjdCBEYXRlXSJdPWplWyJbb2JqZWN0IEVycm9yXSJdPWplWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWplWyJbb2JqZWN0IE1hcF0iXT1qZVsiW29iamVjdCBOdW1iZXJdIl09amVbIltvYmplY3QgT2JqZWN0XSJdPWplWyJbb2JqZWN0IFJlZ0V4cF0iXT1qZVsiW29iamVjdCBTZXRdIl09amVbIltvYmplY3QgU3RyaW5nXSJdPWplWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIExlPXt9O0xlWyJbb2JqZWN0IEFyZ3VtZW50c10iXT1MZVsiW29iamVjdCBBcnJheV0iXT1MZVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MZVsiW29iamVjdCBEYXRhVmlld10iXT1MZVsiW29iamVjdCBCb29sZWFuXSJdPUxlWyJbb2JqZWN0IERhdGVdIl09TGVbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxlWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1MZVsiW29iamVjdCBJbnQ4QXJyYXldIl09TGVbIltvYmplY3QgSW50MTZBcnJheV0iXT1MZVsiW29iamVjdCBJbnQzMkFycmF5XSJdPUxlWyJbb2JqZWN0IE1hcF0iXT1MZVsiW29iamVjdCBOdW1iZXJdIl09TGVbIltvYmplY3QgT2JqZWN0XSJdPUxlWyJbb2JqZWN0IFJlZ0V4cF0iXT1MZVsiW29iamVjdCBTZXRdIl09TGVbIltvYmplY3QgU3RyaW5nXSJdPUxlWyJbb2JqZWN0IFN5bWJvbF0iXT1MZVsiW29iamVjdCBVaW50OEFycmF5XSJdPUxlWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPUxlWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPUxlWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExlWyJbb2JqZWN0IEVycm9yXSJdPUxlWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxlWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIFJlPXsiXFwiOiJcXCIsIiciOiInIiwiXG4iOiJuIiwiXHIiOiJyIiwiXHUyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LEllPXBhcnNlRmxvYXQsQWU9cGFyc2VJbnQsRmU9Im9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLk9iamVjdD09PU9iamVjdCYmZSxCZT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLHplPUZlfHxCZXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxLZT10JiYhdC5ub2RlVHlwZSYmdCxxZT1LZSYmIm9iamVjdCI9PXR5cGVvZiByJiZyJiYhci5ub2RlVHlwZSYmcixWZT1xZSYmcWUuZXhwb3J0cz09PUtlLFVlPVZlJiZGZS5wcm9jZXNzLFdlPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXFlJiZxZS5mJiZxZS5mKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fFVlJiZVZS5iaW5kaW5nJiZVZS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2goZSl7fX0oKSxZZT1XZSYmV2UuaXNBcnJheUJ1ZmZlcixIZT1XZSYmV2UuaXNEYXRlLEdlPVdlJiZXZS5pc01hcCxRZT1XZSYmV2UuaXNSZWdFeHAsSmU9V2UmJldlLmlzU2V0LFplPVdlJiZXZS5pc1R5cGVkQXJyYXksJGU9aygibGVuZ3RoIiksWGU9Qyh7IsOAIjoiQSIsIsOBIjoiQSIsIsOCIjoiQSIsIsODIjoiQSIsIsOEIjoiQSIsIsOFIjoiQSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIsOjIjoiYSIsIsOkIjoiYSIsIsOlIjoiYSIsIsOHIjoiQyIsIsOnIjoiYyIsIsOQIjoiRCIsIsOwIjoiZCIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIsOLIjoiRSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIsOrIjoiZSIsIsOMIjoiSSIsIsONIjoiSSIsIsOOIjoiSSIsIsOPIjoiSSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsOvIjoiaSIsIsORIjoiTiIsIsOxIjoibiIsIsOSIjoiTyIsIsOTIjoiTyIsIsOUIjoiTyIsIsOVIjoiTyIsIsOWIjoiTyIsIsOYIjoiTyIsIsOyIjoibyIsIsOzIjoibyIsIsO0IjoibyIsIsO1IjoibyIsIsO2IjoibyIsIsO4IjoibyIsIsOZIjoiVSIsIsOaIjoiVSIsIsObIjoiVSIsIsOcIjoiVSIsIsO5IjoidSIsIsO6IjoidSIsIsO7IjoidSIsIsO8IjoidSIsIsOdIjoiWSIsIsO9IjoieSIsIsO/IjoieSIsIsOGIjoiQWUiLCLDpiI6ImFlIiwiw54iOiJUaCIsIsO+IjoidGgiLCLDnyI6InNzIiwixIAiOiJBIiwixIIiOiJBIiwixIQiOiJBIiwixIEiOiJhIiwixIMiOiJhIiwixIUiOiJhIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwixIciOiJjIiwixIkiOiJjIiwixIsiOiJjIiwixI0iOiJjIiwixI4iOiJEIiwixJAiOiJEIiwixI8iOiJkIiwixJEiOiJkIiwixJIiOiJFIiwixJQiOiJFIiwixJYiOiJFIiwixJgiOiJFIiwixJoiOiJFIiwixJMiOiJlIiwixJUiOiJlIiwixJciOiJlIiwixJkiOiJlIiwixJsiOiJlIiwixJwiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwixKIiOiJHIiwixJ0iOiJnIiwixJ8iOiJnIiwixKEiOiJnIiwixKMiOiJnIiwixKQiOiJIIiwixKYiOiJIIiwixKUiOiJoIiwixKciOiJoIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixK4iOiJJIiwixLAiOiJJIiwixKkiOiJpIiwixKsiOiJpIiwixK0iOiJpIiwixK8iOiJpIiwixLEiOiJpIiwixLQiOiJKIiwixLUiOiJqIiwixLYiOiJLIiwixLciOiJrIiwixLgiOiJrIiwixLkiOiJMIiwixLsiOiJMIiwixL0iOiJMIiwixL8iOiJMIiwixYEiOiJMIiwixLoiOiJsIiwixLwiOiJsIiwixL4iOiJsIiwixYAiOiJsIiwixYIiOiJsIiwixYMiOiJOIiwixYUiOiJOIiwixYciOiJOIiwixYoiOiJOIiwixYQiOiJuIiwixYYiOiJuIiwixYgiOiJuIiwixYsiOiJuIiwixYwiOiJPIiwixY4iOiJPIiwixZAiOiJPIiwixY0iOiJvIiwixY8iOiJvIiwixZEiOiJvIiwixZQiOiJSIiwixZYiOiJSIiwixZgiOiJSIiwixZUiOiJyIiwixZciOiJyIiwixZkiOiJyIiwixZoiOiJTIiwixZwiOiJTIiwixZ4iOiJTIiwixaAiOiJTIiwixZsiOiJzIiwixZ0iOiJzIiwixZ8iOiJzIiwixaEiOiJzIiwixaIiOiJUIiwixaQiOiJUIiwixaYiOiJUIiwixaMiOiJ0IiwixaUiOiJ0IiwixaciOiJ0IiwixagiOiJVIiwixaoiOiJVIiwixawiOiJVIiwixa4iOiJVIiwixbAiOiJVIiwixbIiOiJVIiwixakiOiJ1IiwixasiOiJ1Iiwixa0iOiJ1Iiwixa8iOiJ1IiwixbEiOiJ1IiwixbMiOiJ1IiwixbQiOiJXIiwixbUiOiJ3IiwixbYiOiJZIiwixbciOiJ5IiwixbgiOiJZIiwixbkiOiJaIiwixbsiOiJaIiwixb0iOiJaIiwixboiOiJ6IiwixbwiOiJ6Iiwixb4iOiJ6IiwixLIiOiJJSiIsIsSzIjoiaWoiLCLFkiI6Ik9lIiwixZMiOiJvZSIsIsWJIjoiJ24iLCLFvyI6InMifSksZXQ9Qyh7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pLHR0PUMoeyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiYjMzk7IjoiJyJ9KSxudD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIG4oZSl7aWYoUXIoZSkmJiFBaShlKSYmIShlIGluc3RhbmNlb2YgQykpe2lmKGUgaW5zdGFuY2VvZiBvKXJldHVybiBlO2lmKEZvLmNhbGwoZSwiX193cmFwcGVkX18iKSlyZXR1cm4gX3IoZSl9cmV0dXJuIG5ldyBvKGUpfWZ1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyhlLHQpe3RoaXMuX193cmFwcGVkX189ZSx0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19jaGFpbl9fPSEhdCx0aGlzLl9faW5kZXhfXz0wLHRoaXMuX192YWx1ZXNfXz1LfWZ1bmN0aW9uIEMoZSl7dGhpcy5fX3dyYXBwZWRfXz1lLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz00Mjk0OTY3Mjk1LHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIGtlKGUpe3ZhciB0PS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIENlKGUpe3ZhciB0PS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIERlKGUpe3ZhciB0PS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIFJlKGUpe3ZhciB0PS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBEZTsrK3Q8bjspdGhpcy5hZGQoZVt0XSl9ZnVuY3Rpb24gRmUoZSl7dGhpcy5zaXplPSh0aGlzLl9fZGF0YV9fPW5ldyBDZShlKSkuc2l6ZX1mdW5jdGlvbiBCZShlLHQpe3ZhciBuLHI9QWkoZSksbz0hciYmSWkoZSksYT0hciYmIW8mJkJpKGUpLGk9IXImJiFvJiYhYSYmVWkoZSksdT0obz0ocj1yfHxvfHxhfHxpKT9EKGUubGVuZ3RoLE5vKTpbXSkubGVuZ3RoO2ZvcihuIGluIGUpIXQmJiFGby5jYWxsKGUsbil8fHImJigibGVuZ3RoIj09bnx8YSYmKCJvZmZzZXQiPT1ufHwicGFyZW50Ij09bil8fGkmJigiYnVmZmVyIj09bnx8ImJ5dGVMZW5ndGgiPT1ufHwiYnl0ZU9mZnNldCI9PW4pfHx1cihuLHUpKXx8by5wdXNoKG4pO3JldHVybiBvfWZ1bmN0aW9uIEtlKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiB0P2VbVXQoMCx0LTEpXTpLfWZ1bmN0aW9uIHFlKGUsdCl7cmV0dXJuIHZyKF9uKGUpLHN0KHQsMCxlLmxlbmd0aCkpfWZ1bmN0aW9uIFVlKGUpe3JldHVybiB2cihfbihlKSl9ZnVuY3Rpb24gV2UoZSx0LG4peyhuPT09S3x8S3IoZVt0XSxuKSkmJihuIT09S3x8dCBpbiBlKXx8aXQoZSx0LG4pfWZ1bmN0aW9uICRlKGUsdCxuKXt2YXIgcj1lW3RdO0ZvLmNhbGwoZSx0KSYmS3IocixuKSYmKG4hPT1LfHx0IGluIGUpfHxpdChlLHQsbil9ZnVuY3Rpb24gcnQoZSx0KXtmb3IodmFyIG49ZS5sZW5ndGg7bi0tOylpZihLcihlW25dWzBdLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIG90KGUsdCxuLHIpe3JldHVybiBJYShlLChmdW5jdGlvbihlLG8sYSl7dChyLGUsbihlKSxhKX0pKSxyfWZ1bmN0aW9uIGF0KGUsdCl7cmV0dXJuIGUmJkVuKHQsbG8odCksZSl9ZnVuY3Rpb24gaXQoZSx0LG4peyJfX3Byb3RvX18iPT10JiZuYT9uYShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTplW3RdPW59ZnVuY3Rpb24gdXQoZSx0KXtmb3IodmFyIG49LTEscj10Lmxlbmd0aCxvPUNvKHIpLGE9bnVsbD09ZTsrK248cjspb1tuXT1hP0s6dW8oZSx0W25dKTtyZXR1cm4gb31mdW5jdGlvbiBzdChlLHQsbil7cmV0dXJuIGU9PWUmJihuIT09SyYmKGU9ZTw9bj9lOm4pLHQhPT1LJiYoZT1lPj10P2U6dCkpLGV9ZnVuY3Rpb24gbHQoZSx0LG4scixvLGEpe3ZhciBpLHM9MSZ0LGw9MiZ0LGM9NCZ0O2lmKG4mJihpPW8/bihlLHIsbyxhKTpuKGUpKSxpIT09SylyZXR1cm4gaTtpZighR3IoZSkpcmV0dXJuIGU7aWYocj1BaShlKSl7aWYoaT1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxuPW5ldyBlLmNvbnN0cnVjdG9yKHQpO3JldHVybiB0JiYic3RyaW5nIj09dHlwZW9mIGVbMF0mJkZvLmNhbGwoZSwiaW5kZXgiKSYmKG4uaW5kZXg9ZS5pbmRleCxuLmlucHV0PWUuaW5wdXQpLG59KGUpLCFzKXJldHVybiBfbihlLGkpfWVsc2V7dmFyIGY9SGEoZSksZD0iW29iamVjdCBGdW5jdGlvbl0iPT1mfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1mO2lmKEJpKGUpKXJldHVybiB5bihlLHMpO2lmKCJbb2JqZWN0IE9iamVjdF0iPT1mfHwiW29iamVjdCBBcmd1bWVudHNdIj09Znx8ZCYmIW8pe2lmKGk9bHx8ZD97fTphcihlKSwhcylyZXR1cm4gbD9mdW5jdGlvbihlLHQpe3JldHVybiBFbihlLFlhKGUpLHQpfShlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJkVuKHQsY28odCksZSl9KGksZSkpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEVuKGUsV2EoZSksdCl9KGUsYXQoaSxlKSl9ZWxzZXtpZighTGVbZl0pcmV0dXJuIG8/ZTp7fTtpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmNvbnN0cnVjdG9yO3N3aXRjaCh0KXtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4gbW4oZSk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgcigrZSk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIHQ9bj9tbihlLmJ1ZmZlcik6ZS5idWZmZXIsbmV3IGUuY29uc3RydWN0b3IodCxlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gdm4oZSxuKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyByO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyByKGUpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4odD1uZXcgZS5jb25zdHJ1Y3RvcihlLnNvdXJjZSx5ZS5leGVjKGUpKSkubGFzdEluZGV4PWUubGFzdEluZGV4LHQ7Y2FzZSJbb2JqZWN0IFNldF0iOnJldHVybiBuZXcgcjtjYXNlIltvYmplY3QgU3ltYm9sXSI6cmV0dXJuIGphP01vKGphLmNhbGwoZSkpOnt9fX0oZSxmLHMpfX1pZihhfHwoYT1uZXcgRmUpLG89YS5nZXQoZSkpcmV0dXJuIG87YS5zZXQoZSxpKSxWaShlKT9lLmZvckVhY2goKGZ1bmN0aW9uKHIpe2kuYWRkKGx0KHIsdCxuLHIsZSxhKSl9KSk6S2koZSkmJmUuZm9yRWFjaCgoZnVuY3Rpb24ocixvKXtpLnNldChvLGx0KHIsdCxuLG8sZSxhKSl9KSk7bD1jP2w/Wm46Sm46bD9jbzpsbzt2YXIgcD1yP0s6bChlKTtyZXR1cm4gdShwfHxlLChmdW5jdGlvbihyLG8pe3AmJihyPWVbbz1yXSksJGUoaSxvLGx0KHIsdCxuLG8sZSxhKSl9KSksaX1mdW5jdGlvbiBjdChlLHQsbil7dmFyIHI9bi5sZW5ndGg7aWYobnVsbD09ZSlyZXR1cm4hcjtmb3IoZT1NbyhlKTtyLS07KXt2YXIgbz1uW3JdLGE9dFtvXSxpPWVbb107aWYoaT09PUsmJiEobyBpbiBlKXx8IWEoaSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gZnQoZSx0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBqbygiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3JldHVybiBKYSgoZnVuY3Rpb24oKXtlLmFwcGx5KEssbil9KSx0KX1mdW5jdGlvbiBkdChlLHQsbixyKXt2YXIgbz0tMSxhPWYsaT0hMCx1PWUubGVuZ3RoLHM9W10sbD10Lmxlbmd0aDtpZighdSlyZXR1cm4gcztuJiYodD1wKHQsVChuKSkpLHI/KGE9ZCxpPSExKToyMDA8PXQubGVuZ3RoJiYoYT1QLGk9ITEsdD1uZXcgUmUodCkpO2U6Zm9yKDsrK288dTspe3ZhciBjPWVbb10saD1udWxsPT1uP2M6bihjKTtjPXJ8fDAhPT1jP2M6MDtpZihpJiZoPT1oKXtmb3IodmFyIHk9bDt5LS07KWlmKHRbeV09PT1oKWNvbnRpbnVlIGU7cy5wdXNoKGMpfWVsc2UgYSh0LGgscil8fHMucHVzaChjKX1yZXR1cm4gc31mdW5jdGlvbiBwdChlLHQpe3ZhciBuPSEwO3JldHVybiBJYShlLChmdW5jdGlvbihlLHIsbyl7cmV0dXJuIG49ISF0KGUscixvKX0pKSxufWZ1bmN0aW9uIGh0KGUsdCxuKXtmb3IodmFyIHI9LTEsbz1lLmxlbmd0aDsrK3I8bzspe3ZhciBhPWVbcl0saT10KGEpO2lmKG51bGwhPWkmJih1PT09Sz9pPT1pJiYhWHIoaSk6bihpLHUpKSl2YXIgdT1pLHM9YX1yZXR1cm4gc31mdW5jdGlvbiB5dChlLHQpe3ZhciBuPVtdO3JldHVybiBJYShlLChmdW5jdGlvbihlLHIsbyl7dChlLHIsbykmJm4ucHVzaChlKX0pKSxufWZ1bmN0aW9uIG10KGUsdCxuLHIsbyl7dmFyIGE9LTEsaT1lLmxlbmd0aDtmb3Iobnx8KG49aXIpLG98fChvPVtdKTsrK2E8aTspe3ZhciB1PWVbYV07MDx0JiZuKHUpPzE8dD9tdCh1LHQtMSxuLHIsbyk6aChvLHUpOnJ8fChvW28ubGVuZ3RoXT11KX1yZXR1cm4gb31mdW5jdGlvbiB2dChlLHQpe3JldHVybiBlJiZGYShlLHQsbG8pfWZ1bmN0aW9uIGd0KGUsdCl7cmV0dXJuIGUmJkJhKGUsdCxsbyl9ZnVuY3Rpb24gYnQoZSx0KXtyZXR1cm4gYyh0LChmdW5jdGlvbih0KXtyZXR1cm4gV3IoZVt0XSl9KSl9ZnVuY3Rpb24gd3QoZSx0KXtmb3IodmFyIG49MCxyPSh0PXBuKHQsZSkpLmxlbmd0aDtudWxsIT1lJiZuPHI7KWU9ZVtncih0W24rK10pXTtyZXR1cm4gbiYmbj09cj9lOkt9ZnVuY3Rpb24gX3QoZSx0LG4pe3JldHVybiB0PXQoZSksQWkoZSk/dDpoKHQsbihlKSl9ZnVuY3Rpb24gRXQoZSl7aWYobnVsbD09ZSllPWU9PT1LPyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjtlbHNlIGlmKHRhJiZ0YSBpbiBNbyhlKSl7dmFyIHQ9Rm8uY2FsbChlLHRhKSxuPWVbdGFdO3RyeXtlW3RhXT1LO3ZhciByPSEwfWNhdGNoKGUpe312YXIgbz1Lby5jYWxsKGUpO3ImJih0P2VbdGFdPW46ZGVsZXRlIGVbdGFdKSxlPW99ZWxzZSBlPUtvLmNhbGwoZSk7cmV0dXJuIGV9ZnVuY3Rpb24gT3QoZSx0KXtyZXR1cm4gZT50fWZ1bmN0aW9uIGt0KGUsdCl7cmV0dXJuIG51bGwhPWUmJkZvLmNhbGwoZSx0KX1mdW5jdGlvbiBDdChlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIE1vKGUpfWZ1bmN0aW9uIHh0KGUsdCxuKXtmb3IodmFyIHI9bj9kOmYsbz1lWzBdLmxlbmd0aCxhPWUubGVuZ3RoLGk9YSx1PUNvKGEpLHM9MS8wLGw9W107aS0tOyl7dmFyIGM9ZVtpXTtpJiZ0JiYoYz1wKGMsVCh0KSkpLHM9aGEoYy5sZW5ndGgscyksdVtpXT0hbiYmKHR8fDEyMDw9byYmMTIwPD1jLmxlbmd0aCk/bmV3IFJlKGkmJmMpOkt9Yz1lWzBdO3ZhciBoPS0xLHk9dVswXTtlOmZvcig7KytoPG8mJmwubGVuZ3RoPHM7KXt2YXIgbT1jW2hdLHY9dD90KG0pOm07bT1ufHwwIT09bT9tOjA7aWYoeT8hUCh5LHYpOiFyKGwsdixuKSl7Zm9yKGk9YTstLWk7KXt2YXIgZz11W2ldO2lmKGc/IVAoZyx2KTohcihlW2ldLHYsbikpY29udGludWUgZX15JiZ5LnB1c2godiksbC5wdXNoKG0pfX1yZXR1cm4gbH1mdW5jdGlvbiBTdChlLHQsbil7cmV0dXJuIG51bGw9PSh0PW51bGw9PShlPTI+KHQ9cG4odCxlKSkubGVuZ3RoP2U6d3QoZSxadCh0LDAsLTEpKSk/ZTplW2dyKHhyKHQpKV0pP0s6YSh0LGUsbil9ZnVuY3Rpb24gRHQoZSl7cmV0dXJuIFFyKGUpJiYiW29iamVjdCBBcmd1bWVudHNdIj09RXQoZSl9ZnVuY3Rpb24gVHQoZSx0LG4scixvKXtpZihlPT09dCl0PSEwO2Vsc2UgaWYobnVsbD09ZXx8bnVsbD09dHx8IVFyKGUpJiYhUXIodCkpdD1lIT1lJiZ0IT10O2Vsc2UgZTp7dmFyIGEsaSx1PUFpKGUpLHM9QWkodCksbD0iW29iamVjdCBPYmplY3RdIj09KGE9IltvYmplY3QgQXJndW1lbnRzXSI9PShhPXU/IltvYmplY3QgQXJyYXldIjpIYShlKSk/IltvYmplY3QgT2JqZWN0XSI6YSk7cz0iW29iamVjdCBPYmplY3RdIj09KGk9IltvYmplY3QgQXJndW1lbnRzXSI9PShpPXM/IltvYmplY3QgQXJyYXldIjpIYSh0KSk/IltvYmplY3QgT2JqZWN0XSI6aSk7aWYoKGk9YT09aSkmJkJpKGUpKXtpZighQmkodCkpe3Q9ITE7YnJlYWsgZX11PSEwLGw9ITF9aWYoaSYmIWwpb3x8KG89bmV3IEZlKSx0PXV8fFVpKGUpP0duKGUsdCxuLHIsVHQsbyk6ZnVuY3Rpb24oZSx0LG4scixvLGEsaSl7c3dpdGNoKG4pe2Nhc2UiW29iamVjdCBEYXRhVmlld10iOmlmKGUuYnl0ZUxlbmd0aCE9dC5ieXRlTGVuZ3RofHxlLmJ5dGVPZmZzZXQhPXQuYnl0ZU9mZnNldClicmVhaztlPWUuYnVmZmVyLHQ9dC5idWZmZXI7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fCFhKG5ldyBIbyhlKSxuZXcgSG8odCkpKWJyZWFrO3JldHVybiEwO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgTnVtYmVyXSI6cmV0dXJuIEtyKCtlLCt0KTtjYXNlIltvYmplY3QgRXJyb3JdIjpyZXR1cm4gZS5uYW1lPT10Lm5hbWUmJmUubWVzc2FnZT09dC5tZXNzYWdlO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIGU9PXQrIiI7Y2FzZSJbb2JqZWN0IE1hcF0iOnZhciB1PVI7Y2FzZSJbb2JqZWN0IFNldF0iOmlmKHV8fCh1PUYpLGUuc2l6ZSE9dC5zaXplJiYhKDEmcikpYnJlYWs7cmV0dXJuKG49aS5nZXQoZSkpP249PXQ6KHJ8PTIsaS5zZXQoZSx0KSx0PUduKHUoZSksdSh0KSxyLG8sYSxpKSxpLmRlbGV0ZShlKSx0KTtjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYoamEpcmV0dXJuIGphLmNhbGwoZSk9PWphLmNhbGwodCl9cmV0dXJuITF9KGUsdCxhLG4scixUdCxvKTtlbHNle2lmKCEoMSZuKSYmKHU9bCYmRm8uY2FsbChlLCJfX3dyYXBwZWRfXyIpLGE9cyYmRm8uY2FsbCh0LCJfX3dyYXBwZWRfXyIpLHV8fGEpKXtlPXU/ZS52YWx1ZSgpOmUsdD1hP3QudmFsdWUoKTp0LG98fChvPW5ldyBGZSksdD1UdChlLHQsbixyLG8pO2JyZWFrIGV9aWYoaSl0OmlmKG98fChvPW5ldyBGZSksdT0xJm4sYT1KbihlKSxzPWEubGVuZ3RoLGk9Sm4odCkubGVuZ3RoLHM9PWl8fHUpe2ZvcihsPXM7bC0tOyl7dmFyIGM9YVtsXTtpZighKHU/YyBpbiB0OkZvLmNhbGwodCxjKSkpe3Q9ITE7YnJlYWsgdH19aWYoKGk9by5nZXQoZSkpJiZvLmdldCh0KSl0PWk9PXQ7ZWxzZXtpPSEwLG8uc2V0KGUsdCksby5zZXQodCxlKTtmb3IodmFyIGY9dTsrK2w8czspe3ZhciBkPWVbYz1hW2xdXSxwPXRbY107aWYocil2YXIgaD11P3IocCxkLGMsdCxlLG8pOnIoZCxwLGMsZSx0LG8pO2lmKGg9PT1LP2QhPT1wJiYhVHQoZCxwLG4scixvKTohaCl7aT0hMTticmVha31mfHwoZj0iY29uc3RydWN0b3IiPT1jKX1pJiYhZiYmKChuPWUuY29uc3RydWN0b3IpIT0ocj10LmNvbnN0cnVjdG9yKSYmImNvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmImZ1bmN0aW9uIj09dHlwZW9mIHImJnIgaW5zdGFuY2VvZiByKSYmKGk9ITEpKSxvLmRlbGV0ZShlKSxvLmRlbGV0ZSh0KSx0PWl9fWVsc2UgdD0hMTtlbHNlIHQ9ITF9fXJldHVybiB0fWZ1bmN0aW9uIE10KGUsdCxuLHIpe3ZhciBvPW4ubGVuZ3RoLGE9byxpPSFyO2lmKG51bGw9PWUpcmV0dXJuIWE7Zm9yKGU9TW8oZSk7by0tOyl7dmFyIHU9bltvXTtpZihpJiZ1WzJdP3VbMV0hPT1lW3VbMF1dOiEodVswXWluIGUpKXJldHVybiExfWZvcig7KytvPGE7KXt2YXIgcz0odT1uW29dKVswXSxsPWVbc10sYz11WzFdO2lmKGkmJnVbMl0pe2lmKGw9PT1LJiYhKHMgaW4gZSkpcmV0dXJuITF9ZWxzZXtpZih1PW5ldyBGZSxyKXZhciBmPXIobCxjLHMsZSx0LHUpO2lmKGY9PT1LPyFUdChjLGwsMyxyLHUpOiFmKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBQdChlKXtyZXR1cm4hKCFHcihlKXx8em8mJnpvIGluIGUpJiYoV3IoZSk/VW86Z2UpLnRlc3QoYnIoZSkpfWZ1bmN0aW9uIE50KGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbD09ZT9nbzoib2JqZWN0Ij09dHlwZW9mIGU/QWkoZSk/QXQoZVswXSxlWzFdKTpJdChlKTpFbyhlKX1mdW5jdGlvbiBqdChlKXtpZighZnIoZSkpcmV0dXJuIGRhKGUpO3ZhciB0LG49W107Zm9yKHQgaW4gTW8oZSkpRm8uY2FsbChlLHQpJiYiY29uc3RydWN0b3IiIT10JiZuLnB1c2godCk7cmV0dXJuIG59ZnVuY3Rpb24gTHQoZSx0KXtyZXR1cm4gZTx0fWZ1bmN0aW9uIFJ0KGUsdCl7dmFyIG49LTEscj1xcihlKT9DbyhlLmxlbmd0aCk6W107cmV0dXJuIElhKGUsKGZ1bmN0aW9uKGUsbyxhKXtyWysrbl09dChlLG8sYSl9KSkscn1mdW5jdGlvbiBJdChlKXt2YXIgdD1ucihlKTtyZXR1cm4gMT09dC5sZW5ndGgmJnRbMF1bMl0/ZHIodFswXVswXSx0WzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PWV8fE10KG4sZSx0KX19ZnVuY3Rpb24gQXQoZSx0KXtyZXR1cm4gbHIoZSkmJnQ9PXQmJiFHcih0KT9kcihncihlKSx0KTpmdW5jdGlvbihuKXt2YXIgcj11byhuLGUpO3JldHVybiByPT09SyYmcj09PXQ/c28obixlKTpUdCh0LHIsMyl9fWZ1bmN0aW9uIEZ0KGUsdCxuLHIsbyl7ZSE9PXQmJkZhKHQsKGZ1bmN0aW9uKGEsaSl7aWYob3x8KG89bmV3IEZlKSxHcihhKSl7dmFyIHU9byxzPWhyKGUsaSksbD1ocih0LGkpO2lmKGg9dS5nZXQobCkpV2UoZSxpLGgpO2Vsc2V7dmFyIGM9KGg9cj9yKHMsbCxpKyIiLGUsdCx1KTpLKT09PUs7aWYoYyl7dmFyIGY9QWkobCksZD0hZiYmQmkobCkscD0hZiYmIWQmJlVpKGwpLGg9bDtmfHxkfHxwP0FpKHMpP2g9czpWcihzKT9oPV9uKHMpOmQ/KGM9ITEsaD15bihsLCEwKSk6cD8oYz0hMSxoPXZuKGwsITApKTpoPVtdOlpyKGwpfHxJaShsKT8oaD1zLElpKHMpP2g9YW8ocyk6R3IocykmJiFXcihzKXx8KGg9YXIobCkpKTpjPSExfWMmJih1LnNldChsLGgpLEZ0KGgsbCxuLHIsdSksdS5kZWxldGUobCkpLFdlKGUsaSxoKX19ZWxzZSh1PXI/cihocihlLGkpLGEsaSsiIixlLHQsbyk6Syk9PT1LJiYodT1hKSxXZShlLGksdSl9KSxjbyl9ZnVuY3Rpb24gQnQoZSx0KXt2YXIgbj1lLmxlbmd0aDtpZihuKXJldHVybiB1cih0Kz0wPnQ/bjowLG4pP2VbdF06S31mdW5jdGlvbiB6dChlLHQsbil7dmFyIHI9LTE7cmV0dXJuIHQ9cCh0Lmxlbmd0aD90Oltnb10sVChlcigpKSksZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO24tLTspZVtuXT1lW25dLmM7cmV0dXJuIGV9KGU9UnQoZSwoZnVuY3Rpb24oZSl7cmV0dXJue2E6cCh0LChmdW5jdGlvbih0KXtyZXR1cm4gdChlKX0pKSxiOisrcixjOmV9fSkpLChmdW5jdGlvbihlLHQpe3ZhciByO2U6e3I9LTE7Zm9yKHZhciBvPWUuYSxhPXQuYSxpPW8ubGVuZ3RoLHU9bi5sZW5ndGg7KytyPGk7KXt2YXIgcz1nbihvW3JdLGFbcl0pO2lmKHMpe3I9cj49dT9zOnMqKCJkZXNjIj09bltyXT8tMToxKTticmVhayBlfX1yPWUuYi10LmJ9cmV0dXJuIHJ9KSl9ZnVuY3Rpb24gS3QoZSx0LG4pe2Zvcih2YXIgcj0tMSxvPXQubGVuZ3RoLGE9e307KytyPG87KXt2YXIgaT10W3JdLHU9d3QoZSxpKTtuKHUsaSkmJlF0KGEscG4oaSxlKSx1KX1yZXR1cm4gYX1mdW5jdGlvbiBxdChlLHQsbixyKXt2YXIgbz1yP186dyxhPS0xLGk9dC5sZW5ndGgsdT1lO2ZvcihlPT09dCYmKHQ9X24odCkpLG4mJih1PXAoZSxUKG4pKSk7KythPGk7KXt2YXIgcz0wLGw9dFthXTtmb3IobD1uP24obCk6bDstMTwocz1vKHUsbCxzLHIpKTspdSE9PWUmJiRvLmNhbGwodSxzLDEpLCRvLmNhbGwoZSxzLDEpfXJldHVybiBlfWZ1bmN0aW9uIFZ0KGUsdCl7Zm9yKHZhciBuPWU/dC5sZW5ndGg6MCxyPW4tMTtuLS07KXt2YXIgbz10W25dO2lmKG49PXJ8fG8hPT1hKXt2YXIgYT1vO3VyKG8pPyRvLmNhbGwoZSxvLDEpOmFuKGUsbyl9fX1mdW5jdGlvbiBVdChlLHQpe3JldHVybiBlK3VhKHZhKCkqKHQtZSsxKSl9ZnVuY3Rpb24gV3QoZSx0KXt2YXIgbj0iIjtpZighZXx8MT50fHw5MDA3MTk5MjU0NzQwOTkxPHQpcmV0dXJuIG47ZG97dCUyJiYobis9ZSksKHQ9dWEodC8yKSkmJihlKz1lKX13aGlsZSh0KTtyZXR1cm4gbn1mdW5jdGlvbiBZdChlLHQpe3JldHVybiBaYShwcihlLHQsZ28pLGUrIiIpfWZ1bmN0aW9uIEh0KGUpe3JldHVybiBLZShwbyhlKSl9ZnVuY3Rpb24gR3QoZSx0KXt2YXIgbj1wbyhlKTtyZXR1cm4gdnIobixzdCh0LDAsbi5sZW5ndGgpKX1mdW5jdGlvbiBRdChlLHQsbixyKXtpZighR3IoZSkpcmV0dXJuIGU7Zm9yKHZhciBvPS0xLGE9KHQ9cG4odCxlKSkubGVuZ3RoLGk9YS0xLHU9ZTtudWxsIT11JiYrK288YTspe3ZhciBzPWdyKHRbb10pLGw9bjtpZihvIT1pKXt2YXIgYz11W3NdOyhsPXI/cihjLHMsdSk6Syk9PT1LJiYobD1HcihjKT9jOnVyKHRbbysxXSk/W106e30pfSRlKHUscyxsKSx1PXVbc119cmV0dXJuIGV9ZnVuY3Rpb24gSnQoZSl7cmV0dXJuIHZyKHBvKGUpKX1mdW5jdGlvbiBadChlLHQsbil7dmFyIHI9LTEsbz1lLmxlbmd0aDtmb3IoMD50JiYodD0tdD5vPzA6byt0KSwwPihuPW4+bz9vOm4pJiYobis9byksbz10Pm4/MDpuLXQ+Pj4wLHQ+Pj49MCxuPUNvKG8pOysrcjxvOyluW3JdPWVbcit0XTtyZXR1cm4gbn1mdW5jdGlvbiAkdChlLHQpe3ZhciBuO3JldHVybiBJYShlLChmdW5jdGlvbihlLHIsbyl7cmV0dXJuIShuPXQoZSxyLG8pKX0pKSwhIW59ZnVuY3Rpb24gWHQoZSx0LG4pe3ZhciByPTAsbz1udWxsPT1lP3I6ZS5sZW5ndGg7aWYoIm51bWJlciI9PXR5cGVvZiB0JiZ0PT10JiYyMTQ3NDgzNjQ3Pj1vKXtmb3IoO3I8bzspe3ZhciBhPXIrbz4+PjEsaT1lW2FdO251bGwhPT1pJiYhWHIoaSkmJihuP2k8PXQ6aTx0KT9yPWErMTpvPWF9cmV0dXJuIG99cmV0dXJuIGVuKGUsdCxnbyxuKX1mdW5jdGlvbiBlbihlLHQsbixyKXt0PW4odCk7Zm9yKHZhciBvPTAsYT1udWxsPT1lPzA6ZS5sZW5ndGgsaT10IT10LHU9bnVsbD09PXQscz1Ycih0KSxsPXQ9PT1LO288YTspe3ZhciBjPXVhKChvK2EpLzIpLGY9bihlW2NdKSxkPWYhPT1LLHA9bnVsbD09PWYsaD1mPT1mLHk9WHIoZik7KGk/cnx8aDpsP2gmJihyfHxkKTp1P2gmJmQmJihyfHwhcCk6cz9oJiZkJiYhcCYmKHJ8fCF5KTohcCYmIXkmJihyP2Y8PXQ6Zjx0KSk/bz1jKzE6YT1jfXJldHVybiBoYShhLDQyOTQ5NjcyOTQpfWZ1bmN0aW9uIHRuKGUsdCl7Zm9yKHZhciBuPS0xLHI9ZS5sZW5ndGgsbz0wLGE9W107KytuPHI7KXt2YXIgaT1lW25dLHU9dD90KGkpOmk7aWYoIW58fCFLcih1LHMpKXt2YXIgcz11O2FbbysrXT0wPT09aT8wOml9fXJldHVybiBhfWZ1bmN0aW9uIG5uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9lOlhyKGUpP1Y6K2V9ZnVuY3Rpb24gcm4oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2lmKEFpKGUpKXJldHVybiBwKGUscm4pKyIiO2lmKFhyKGUpKXJldHVybiBMYT9MYS5jYWxsKGUpOiIiO3ZhciB0PWUrIiI7cmV0dXJuIjAiPT10JiYxL2U9PS1xPyItMCI6dH1mdW5jdGlvbiBvbihlLHQsbil7dmFyIHI9LTEsbz1mLGE9ZS5sZW5ndGgsaT0hMCx1PVtdLHM9dTtpZihuKWk9ITEsbz1kO2Vsc2UgaWYoMjAwPD1hKXtpZihvPXQ/bnVsbDpWYShlKSlyZXR1cm4gRihvKTtpPSExLG89UCxzPW5ldyBSZX1lbHNlIHM9dD9bXTp1O2U6Zm9yKDsrK3I8YTspe3ZhciBsPWVbcl0sYz10P3QobCk6bDtsPW58fDAhPT1sP2w6MDtpZihpJiZjPT1jKXtmb3IodmFyIHA9cy5sZW5ndGg7cC0tOylpZihzW3BdPT09Yyljb250aW51ZSBlO3QmJnMucHVzaChjKSx1LnB1c2gobCl9ZWxzZSBvKHMsYyxuKXx8KHMhPT11JiZzLnB1c2goYyksdS5wdXNoKGwpKX1yZXR1cm4gdX1mdW5jdGlvbiBhbihlLHQpe3JldHVybiBudWxsPT0oZT0yPih0PXBuKHQsZSkpLmxlbmd0aD9lOnd0KGUsWnQodCwwLC0xKSkpfHxkZWxldGUgZVtncih4cih0KSldfWZ1bmN0aW9uIHVuKGUsdCxuLHIpe2Zvcih2YXIgbz1lLmxlbmd0aCxhPXI/bzotMTsocj9hLS06KythPG8pJiZ0KGVbYV0sYSxlKTspO3JldHVybiBuP1p0KGUscj8wOmEscj9hKzE6byk6WnQoZSxyP2ErMTowLHI/bzphKX1mdW5jdGlvbiBzbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4gaW5zdGFuY2VvZiBDJiYobj1uLnZhbHVlKCkpLHkodCwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5mdW5jLmFwcGx5KHQudGhpc0FyZyxoKFtlXSx0LmFyZ3MpKX0pLG4pfWZ1bmN0aW9uIGxuKGUsdCxuKXt2YXIgcj1lLmxlbmd0aDtpZigyPnIpcmV0dXJuIHI/b24oZVswXSk6W107Zm9yKHZhciBvPS0xLGE9Q28ocik7KytvPHI7KWZvcih2YXIgaT1lW29dLHU9LTE7Kyt1PHI7KXUhPW8mJihhW29dPWR0KGFbb118fGksZVt1XSx0LG4pKTtyZXR1cm4gb24obXQoYSwxKSx0LG4pfWZ1bmN0aW9uIGNuKGUsdCxuKXtmb3IodmFyIHI9LTEsbz1lLmxlbmd0aCxhPXQubGVuZ3RoLGk9e307KytyPG87KW4oaSxlW3JdLHI8YT90W3JdOkspO3JldHVybiBpfWZ1bmN0aW9uIGZuKGUpe3JldHVybiBWcihlKT9lOltdfWZ1bmN0aW9uIGRuKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z299ZnVuY3Rpb24gcG4oZSx0KXtyZXR1cm4gQWkoZSk/ZTpscihlLHQpP1tlXTokYShpbyhlKSl9ZnVuY3Rpb24gaG4oZSx0LG4pe3ZhciByPWUubGVuZ3RoO3JldHVybiBuPW49PT1LP3I6biwhdCYmbj49cj9lOlp0KGUsdCxuKX1mdW5jdGlvbiB5bihlLHQpe2lmKHQpcmV0dXJuIGUuc2xpY2UoKTt2YXIgbj1lLmxlbmd0aDtuPUdvP0dvKG4pOm5ldyBlLmNvbnN0cnVjdG9yKG4pO3JldHVybiBlLmNvcHkobiksbn1mdW5jdGlvbiBtbihlKXt2YXIgdD1uZXcgZS5jb25zdHJ1Y3RvcihlLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgSG8odCkuc2V0KG5ldyBIbyhlKSksdH1mdW5jdGlvbiB2bihlLHQpe3JldHVybiBuZXcgZS5jb25zdHJ1Y3Rvcih0P21uKGUuYnVmZmVyKTplLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5sZW5ndGgpfWZ1bmN0aW9uIGduKGUsdCl7aWYoZSE9PXQpe3ZhciBuPWUhPT1LLHI9bnVsbD09PWUsbz1lPT1lLGE9WHIoZSksaT10IT09Syx1PW51bGw9PT10LHM9dD09dCxsPVhyKHQpO2lmKCF1JiYhbCYmIWEmJmU+dHx8YSYmaSYmcyYmIXUmJiFsfHxyJiZpJiZzfHwhbiYmc3x8IW8pcmV0dXJuIDE7aWYoIXImJiFhJiYhbCYmZTx0fHxsJiZuJiZvJiYhciYmIWF8fHUmJm4mJm98fCFpJiZvfHwhcylyZXR1cm4tMX1yZXR1cm4gMH1mdW5jdGlvbiBibihlLHQsbixyKXt2YXIgbz0tMSxhPWUubGVuZ3RoLGk9bi5sZW5ndGgsdT0tMSxzPXQubGVuZ3RoLGw9cGEoYS1pLDApLGM9Q28ocytsKTtmb3Iocj0hcjsrK3U8czspY1t1XT10W3VdO2Zvcig7KytvPGk7KShyfHxvPGEpJiYoY1tuW29dXT1lW29dKTtmb3IoO2wtLTspY1t1KytdPWVbbysrXTtyZXR1cm4gY31mdW5jdGlvbiB3bihlLHQsbixyKXt2YXIgbz0tMSxhPWUubGVuZ3RoLGk9LTEsdT1uLmxlbmd0aCxzPS0xLGw9dC5sZW5ndGgsYz1wYShhLXUsMCksZj1DbyhjK2wpO2ZvcihyPSFyOysrbzxjOylmW29dPWVbb107Zm9yKGM9bzsrK3M8bDspZltjK3NdPXRbc107Zm9yKDsrK2k8dTspKHJ8fG88YSkmJihmW2MrbltpXV09ZVtvKytdKTtyZXR1cm4gZn1mdW5jdGlvbiBfbihlLHQpe3ZhciBuPS0xLHI9ZS5sZW5ndGg7Zm9yKHR8fCh0PUNvKHIpKTsrK248cjspdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIEVuKGUsdCxuLHIpe3ZhciBvPSFuO258fChuPXt9KTtmb3IodmFyIGE9LTEsaT10Lmxlbmd0aDsrK2E8aTspe3ZhciB1PXRbYV0scz1yP3Ioblt1XSxlW3VdLHUsbixlKTpLO3M9PT1LJiYocz1lW3VdKSxvP2l0KG4sdSxzKTokZShuLHUscyl9cmV0dXJuIG59ZnVuY3Rpb24gT24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgbz1BaShuKT9pOm90LGE9dD90KCk6e307cmV0dXJuIG8obixlLGVyKHIsMiksYSl9fWZ1bmN0aW9uIGtuKGUpe3JldHVybiBZdCgoZnVuY3Rpb24odCxuKXt2YXIgcj0tMSxvPW4ubGVuZ3RoLGE9MTxvP25bby0xXTpLLGk9MjxvP25bMl06SzthPTM8ZS5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBhPyhvLS0sYSk6Sztmb3IoaSYmc3IoblswXSxuWzFdLGkpJiYoYT0zPm8/SzphLG89MSksdD1Nbyh0KTsrK3I8bzspKGk9bltyXSkmJmUodCxpLHIsYSk7cmV0dXJuIHR9KSl9ZnVuY3Rpb24gQ24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXtpZihudWxsPT1uKXJldHVybiBuO2lmKCFxcihuKSlyZXR1cm4gZShuLHIpO2Zvcih2YXIgbz1uLmxlbmd0aCxhPXQ/bzotMSxpPU1vKG4pOyh0P2EtLTorK2E8bykmJiExIT09cihpW2FdLGEsaSk7KTtyZXR1cm4gbn19ZnVuY3Rpb24geG4oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIG89LTEsYT1Nbyh0KSxpPShyPXIodCkpLmxlbmd0aDtpLS07KXt2YXIgdT1yW2U/aTorK29dO2lmKCExPT09bihhW3VdLHUsYSkpYnJlYWt9cmV0dXJuIHR9fWZ1bmN0aW9uIFNuKGUpe3JldHVybiBmdW5jdGlvbih0KXt0PWlvKHQpO3ZhciBuPU1lLnRlc3QodCk/eih0KTpLLHI9bj9uWzBdOnQuY2hhckF0KDApO3JldHVybiB0PW4/aG4obiwxKS5qb2luKCIiKTp0LnNsaWNlKDEpLHJbZV0oKSt0fX1mdW5jdGlvbiBEbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHkobW8oeW8odCkucmVwbGFjZSh4ZSwiIikpLGUsIiIpfX1mdW5jdGlvbiBUbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtzd2l0Y2goKHQ9YXJndW1lbnRzKS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IGU7Y2FzZSAxOnJldHVybiBuZXcgZSh0WzBdKTtjYXNlIDI6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiBuZXcgZSh0WzBdLHRbMV0sdFsyXSk7Y2FzZSA0OnJldHVybiBuZXcgZSh0WzBdLHRbMV0sdFsyXSx0WzNdKTtjYXNlIDU6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSk7Y2FzZSA2OnJldHVybiBuZXcgZSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7Y2FzZSA3OnJldHVybiBuZXcgZSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdKX12YXIgdCxuPVJhKGUucHJvdG90eXBlKTtyZXR1cm4gR3IodD1lLmFwcGx5KG4sdCkpP3Q6bn19ZnVuY3Rpb24gTW4oZSx0LG4pe3ZhciByPVRuKGUpO3JldHVybiBmdW5jdGlvbiBvKCl7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgsdT1DbyhpKSxzPWksbD1YbihvKTtzLS07KXVbc109YXJndW1lbnRzW3NdO3JldHVybihpLT0ocz0zPmkmJnVbMF0hPT1sJiZ1W2ktMV0hPT1sP1tdOkEodSxsKSkubGVuZ3RoKTxuP0tuKGUsdCxqbixvLnBsYWNlaG9sZGVyLEssdSxzLEssSyxuLWkpOmEodGhpcyYmdGhpcyE9PXplJiZ0aGlzIGluc3RhbmNlb2Ygbz9yOmUsdGhpcyx1KX19ZnVuY3Rpb24gUG4oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1Nbyh0KTtpZighcXIodCkpe3ZhciBhPWVyKG4sMyk7dD1sbyh0KSxuPWZ1bmN0aW9uKGUpe3JldHVybiBhKG9bZV0sZSxvKX19cmV0dXJuLTE8KG49ZSh0LG4scikpP29bYT90W25dOm5dOkt9fWZ1bmN0aW9uIE5uKGUpe3JldHVybiBRbigoZnVuY3Rpb24odCl7dmFyIG49dC5sZW5ndGgscj1uLGE9by5wcm90b3R5cGUudGhydTtmb3IoZSYmdC5yZXZlcnNlKCk7ci0tOyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mKHU9dFtyXSkpdGhyb3cgbmV3IGpvKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7aWYoYSYmIWkmJiJ3cmFwcGVyIj09JG4odSkpdmFyIGk9bmV3IG8oW10sITApfWZvcihyPWk/cjpuOysrcjxuOyl7dmFyIHUscz0id3JhcHBlciI9PShhPSRuKHU9dFtyXSkpP1VhKHUpOks7aT1zJiZjcihzWzBdKSYmNDI0PT1zWzFdJiYhc1s0XS5sZW5ndGgmJjE9PXNbOV0/aVskbihzWzBdKV0uYXBwbHkoaSxzWzNdKToxPT11Lmxlbmd0aCYmY3IodSk/aVthXSgpOmkudGhydSh1KX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT0obz1hcmd1bWVudHMpWzBdO2lmKGkmJjE9PW8ubGVuZ3RoJiZBaShlKSlyZXR1cm4gaS5wbGFudChlKS52YWx1ZSgpO2Zvcih2YXIgcj0wLG89bj90W3JdLmFwcGx5KHRoaXMsbyk6ZTsrK3I8bjspbz10W3JdLmNhbGwodGhpcyxvKTtyZXR1cm4gb319KSl9ZnVuY3Rpb24gam4oZSx0LG4scixvLGEsaSx1LHMsbCl7dmFyIGM9MTI4JnQsZj0xJnQsZD0yJnQscD0yNCZ0LGg9NTEyJnQseT1kP0s6VG4oZSk7cmV0dXJuIGZ1bmN0aW9uIG0oKXtmb3IodmFyIHY9YXJndW1lbnRzLmxlbmd0aCxnPUNvKHYpLGI9djtiLS07KWdbYl09YXJndW1lbnRzW2JdO2lmKHApe3ZhciB3LF89WG4obSk7Yj1nLmxlbmd0aDtmb3Iodz0wO2ItLTspZ1tiXT09PV8mJisrd31pZihyJiYoZz1ibihnLHIsbyxwKSksYSYmKGc9d24oZyxhLGkscCkpLHYtPXcscCYmdjxsKXJldHVybiBfPUEoZyxfKSxLbihlLHQsam4sbS5wbGFjZWhvbGRlcixuLGcsXyx1LHMsbC12KTtpZihfPWY/bjp0aGlzLGI9ZD9fW2VdOmUsdj1nLmxlbmd0aCx1KXt3PWcubGVuZ3RoO2Zvcih2YXIgRT1oYSh1Lmxlbmd0aCx3KSxPPV9uKGcpO0UtLTspe3ZhciBrPXVbRV07Z1tFXT11cihrLHcpP09ba106S319ZWxzZSBoJiYxPHYmJmcucmV2ZXJzZSgpO3JldHVybiBjJiZzPHYmJihnLmxlbmd0aD1zKSx0aGlzJiZ0aGlzIT09emUmJnRoaXMgaW5zdGFuY2VvZiBtJiYoYj15fHxUbihiKSksYi5hcHBseShfLGcpfX1mdW5jdGlvbiBMbihlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI9e307cmV0dXJuIHZ0KGUsKGZ1bmN0aW9uKGUsbyxhKXt0KHIsbihlKSxvLGEpfSkpLHJ9KG4sZSx0KHIpKX19ZnVuY3Rpb24gUm4oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgbztpZihuPT09SyYmcj09PUspcmV0dXJuIHQ7aWYobiE9PUsmJihvPW4pLHIhPT1LKXtpZihvPT09SylyZXR1cm4gcjsic3RyaW5nIj09dHlwZW9mIG58fCJzdHJpbmciPT10eXBlb2Ygcj8obj1ybihuKSxyPXJuKHIpKToobj1ubihuKSxyPW5uKHIpKSxvPWUobixyKX1yZXR1cm4gb319ZnVuY3Rpb24gSW4oZSl7cmV0dXJuIFFuKChmdW5jdGlvbih0KXtyZXR1cm4gdD1wKHQsVChlcigpKSksWXQoKGZ1bmN0aW9uKG4pe3ZhciByPXRoaXM7cmV0dXJuIGUodCwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSxyLG4pfSkpfSkpfSkpfWZ1bmN0aW9uIEFuKGUsdCl7dmFyIG49KHQ9dD09PUs/IiAiOnJuKHQpKS5sZW5ndGg7cmV0dXJuIDI+bj9uP1d0KHQsZSk6dDoobj1XdCh0LGlhKGUvQih0KSkpLE1lLnRlc3QodCk/aG4oeihuKSwwLGUpLmpvaW4oIiIpOm4uc2xpY2UoMCxlKSl9ZnVuY3Rpb24gRm4oZSx0LG4scil7dmFyIG89MSZ0LGk9VG4oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtmb3IodmFyIHU9LTEscz1hcmd1bWVudHMubGVuZ3RoLGw9LTEsYz1yLmxlbmd0aCxmPUNvKGMrcyksZD10aGlzJiZ0aGlzIT09emUmJnRoaXMgaW5zdGFuY2VvZiB0P2k6ZTsrK2w8YzspZltsXT1yW2xdO2Zvcig7cy0tOylmW2wrK109YXJndW1lbnRzWysrdV07cmV0dXJuIGEoZCxvP246dGhpcyxmKX19ZnVuY3Rpb24gQm4oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyJiYibnVtYmVyIiE9dHlwZW9mIHImJnNyKHQsbixyKSYmKG49cj1LKSx0PXRvKHQpLG49PT1LPyhuPXQsdD0wKTpuPXRvKG4pLHI9cj09PUs/dDxuPzE6LTE6dG8ocik7dmFyIG89LTE7bj1wYShpYSgobi10KS8ocnx8MSkpLDApO2Zvcih2YXIgYT1DbyhuKTtuLS07KWFbZT9uOisrb109dCx0Kz1yO3JldHVybiBhfX1mdW5jdGlvbiB6bihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJiJzdHJpbmciPT10eXBlb2Ygbnx8KHQ9b28odCksbj1vbyhuKSksZSh0LG4pfX1mdW5jdGlvbiBLbihlLHQsbixyLG8sYSxpLHUscyxsKXt2YXIgYz04JnQ7cmV0dXJuIDQmKHQ9KHR8KGM/MzI6NjQpKSZ+KGM/NjQ6MzIpKXx8KHQmPS00KSxvPVtlLHQsbyxjP2E6SyxjP2k6SyxhPWM/SzphLGk9Yz9LOmksdSxzLGxdLG49bi5hcHBseShLLG8pLGNyKGUpJiZRYShuLG8pLG4ucGxhY2Vob2xkZXI9cix5cihuLGUsdCl9ZnVuY3Rpb24gcW4oZSl7dmFyIHQ9VG9bZV07cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYoZT1vbyhlKSwobj1udWxsPT1uPzA6aGEobm8obiksMjkyKSkmJmNhKGUpKXt2YXIgcj0oaW8oZSkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKHI9KGlvKHI9dChyWzBdKyJlIisoK3JbMV0rbikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK3JbMV0tbikpfXJldHVybiB0KGUpfX1mdW5jdGlvbiBWbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49SGEodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW4/Uih0KToiW29iamVjdCBTZXRdIj09bj9mdW5jdGlvbihlKXt2YXIgdD0tMSxuPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7blsrK3RdPVtlLGVdfSkpLG59KHQpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAodCwoZnVuY3Rpb24odCl7cmV0dXJuW3QsZVt0XV19KSl9KHQsZSh0KSl9fWZ1bmN0aW9uIFVuKGUsdCxuLHIsbyxhLGksdSl7dmFyIHM9MiZ0O2lmKCFzJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgam8oIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTt2YXIgbD1yP3IubGVuZ3RoOjA7aWYobHx8KHQmPS05NyxyPW89SyksaT1pPT09Sz9pOnBhKG5vKGkpLDApLHU9dT09PUs/dTpubyh1KSxsLT1vP28ubGVuZ3RoOjAsNjQmdCl7dmFyIGM9cixmPW87cj1vPUt9dmFyIGQ9cz9LOlVhKGUpO3JldHVybiBhPVtlLHQsbixyLG8sYyxmLGEsaSx1XSxkJiYodD0obj1hWzFdKXwoZT1kWzFdKSxyPTEyOD09ZSYmOD09bnx8MTI4PT1lJiYyNTY9PW4mJmFbN10ubGVuZ3RoPD1kWzhdfHwzODQ9PWUmJmRbN10ubGVuZ3RoPD1kWzhdJiY4PT1uLDEzMT50fHxyKSYmKDEmZSYmKGFbMl09ZFsyXSx0fD0xJm4/MDo0KSwobj1kWzNdKSYmKHI9YVszXSxhWzNdPXI/Ym4ocixuLGRbNF0pOm4sYVs0XT1yP0EoYVszXSwiX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyIpOmRbNF0pLChuPWRbNV0pJiYocj1hWzVdLGFbNV09cj93bihyLG4sZFs2XSk6bixhWzZdPXI/QShhWzVdLCJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fIik6ZFs2XSksKG49ZFs3XSkmJihhWzddPW4pLDEyOCZlJiYoYVs4XT1udWxsPT1hWzhdP2RbOF06aGEoYVs4XSxkWzhdKSksbnVsbD09YVs5XSYmKGFbOV09ZFs5XSksYVswXT1kWzBdLGFbMV09dCksZT1hWzBdLHQ9YVsxXSxuPWFbMl0scj1hWzNdLG89YVs0XSwhKHU9YVs5XT1hWzldPT09Sz9zPzA6ZS5sZW5ndGg6cGEoYVs5XS1sLDApKSYmMjQmdCYmKHQmPS0yNSkseXIoKGQ/emE6UWEpKHQmJjEhPXQ/OD09dHx8MTY9PXQ/TW4oZSx0LHUpOjMyIT10JiYzMyE9dHx8by5sZW5ndGg/am4uYXBwbHkoSyxhKTpGbihlLHQsbixyKTpmdW5jdGlvbihlLHQsbil7dmFyIHI9MSZ0LG89VG4oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtyZXR1cm4odGhpcyYmdGhpcyE9PXplJiZ0aGlzIGluc3RhbmNlb2YgdD9vOmUpLmFwcGx5KHI/bjp0aGlzLGFyZ3VtZW50cyl9fShlLHQsbiksYSksZSx0KX1mdW5jdGlvbiBXbihlLHQsbixyKXtyZXR1cm4gZT09PUt8fEtyKGUsUm9bbl0pJiYhRm8uY2FsbChyLG4pP3Q6ZX1mdW5jdGlvbiBZbihlLHQsbixyLG8sYSl7cmV0dXJuIEdyKGUpJiZHcih0KSYmKGEuc2V0KHQsZSksRnQoZSx0LEssWW4sYSksYS5kZWxldGUodCkpLGV9ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIFpyKGUpP0s6ZX1mdW5jdGlvbiBHbihlLHQsbixyLG8sYSl7dmFyIGk9MSZuLHU9ZS5sZW5ndGg7aWYodSE9KHM9dC5sZW5ndGgpJiYhKGkmJnM+dSkpcmV0dXJuITE7aWYoKHM9YS5nZXQoZSkpJiZhLmdldCh0KSlyZXR1cm4gcz09dDt2YXIgcz0tMSxsPSEwLGM9MiZuP25ldyBSZTpLO2ZvcihhLnNldChlLHQpLGEuc2V0KHQsZSk7KytzPHU7KXt2YXIgZj1lW3NdLGQ9dFtzXTtpZihyKXZhciBwPWk/cihkLGYscyx0LGUsYSk6cihmLGQscyxlLHQsYSk7aWYocCE9PUspe2lmKHApY29udGludWU7bD0hMTticmVha31pZihjKXtpZighdih0LChmdW5jdGlvbihlLHQpe2lmKCFQKGMsdCkmJihmPT09ZXx8byhmLGUsbixyLGEpKSlyZXR1cm4gYy5wdXNoKHQpfSkpKXtsPSExO2JyZWFrfX1lbHNlIGlmKGYhPT1kJiYhbyhmLGQsbixyLGEpKXtsPSExO2JyZWFrfX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUodCksbH1mdW5jdGlvbiBRbihlKXtyZXR1cm4gWmEocHIoZSxLLGtyKSxlKyIiKX1mdW5jdGlvbiBKbihlKXtyZXR1cm4gX3QoZSxsbyxXYSl9ZnVuY3Rpb24gWm4oZSl7cmV0dXJuIF90KGUsY28sWWEpfWZ1bmN0aW9uICRuKGUpe2Zvcih2YXIgdD1lLm5hbWUrIiIsbj14YVt0XSxyPUZvLmNhbGwoeGEsdCk/bi5sZW5ndGg6MDtyLS07KXt2YXIgbz1uW3JdLGE9by5mdW5jO2lmKG51bGw9PWF8fGE9PWUpcmV0dXJuIG8ubmFtZX1yZXR1cm4gdH1mdW5jdGlvbiBYbihlKXtyZXR1cm4oRm8uY2FsbChuLCJwbGFjZWhvbGRlciIpP246ZSkucGxhY2Vob2xkZXJ9ZnVuY3Rpb24gZXIoKXt2YXIgZT0oZT1uLml0ZXJhdGVlfHxibyk9PT1ibz9OdDplO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk6ZX1mdW5jdGlvbiB0cihlLHQpe3ZhciBuPWUuX19kYXRhX18scj10eXBlb2YgdDtyZXR1cm4oInN0cmluZyI9PXJ8fCJudW1iZXIiPT1yfHwic3ltYm9sIj09cnx8ImJvb2xlYW4iPT1yPyJfX3Byb3RvX18iIT09dDpudWxsPT09dCk/blsic3RyaW5nIj09dHlwZW9mIHQ/InN0cmluZyI6Imhhc2giXTpuLm1hcH1mdW5jdGlvbiBucihlKXtmb3IodmFyIHQ9bG8oZSksbj10Lmxlbmd0aDtuLS07KXt2YXIgcj10W25dLG89ZVtyXTt0W25dPVtyLG8sbz09byYmIUdyKG8pXX1yZXR1cm4gdH1mdW5jdGlvbiBycihlLHQpe3ZhciBuPW51bGw9PWU/SzplW3RdO3JldHVybiBQdChuKT9uOkt9ZnVuY3Rpb24gb3IoZSx0LG4pe2Zvcih2YXIgcj0tMSxvPSh0PXBuKHQsZSkpLmxlbmd0aCxhPSExOysrcjxvOyl7dmFyIGk9Z3IodFtyXSk7aWYoIShhPW51bGwhPWUmJm4oZSxpKSkpYnJlYWs7ZT1lW2ldfXJldHVybiBhfHwrK3IhPW8/YTohIShvPW51bGw9PWU/MDplLmxlbmd0aCkmJkhyKG8pJiZ1cihpLG8pJiYoQWkoZSl8fElpKGUpKX1mdW5jdGlvbiBhcihlKXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZS5jb25zdHJ1Y3Rvcnx8ZnIoZSk/e306UmEoUW8oZSkpfWZ1bmN0aW9uIGlyKGUpe3JldHVybiBBaShlKXx8SWkoZSl8fCEhKFhvJiZlJiZlW1hvXSl9ZnVuY3Rpb24gdXIoZSx0KXt2YXIgbj10eXBlb2YgZTtyZXR1cm4hISh0PW51bGw9PXQ/OTAwNzE5OTI1NDc0MDk5MTp0KSYmKCJudW1iZXIiPT1ufHwic3ltYm9sIiE9biYmd2UudGVzdChlKSkmJi0xPGUmJjA9PWUlMSYmZTx0fWZ1bmN0aW9uIHNyKGUsdCxuKXtpZighR3IobikpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISEoIm51bWJlciI9PXI/cXIobikmJnVyKHQsbi5sZW5ndGgpOiJzdHJpbmciPT1yJiZ0IGluIG4pJiZLcihuW3RdLGUpfWZ1bmN0aW9uIGxyKGUsdCl7aWYoQWkoZSkpcmV0dXJuITE7dmFyIG49dHlwZW9mIGU7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9ZSYmIVhyKGUpKXx8bmUudGVzdChlKXx8IXRlLnRlc3QoZSl8fG51bGwhPXQmJmUgaW4gTW8odCl9ZnVuY3Rpb24gY3IoZSl7dmFyIHQ9JG4oZSkscj1uW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiZ0IGluIEMucHJvdG90eXBlJiYoZT09PXJ8fCEhKHQ9VWEocikpJiZlPT09dFswXSl9ZnVuY3Rpb24gZnIoZSl7dmFyIHQ9ZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4gZT09PSgiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5wcm90b3R5cGV8fFJvKX1mdW5jdGlvbiBkcihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmbltlXT09PXQmJih0IT09S3x8ZSBpbiBNbyhuKSl9fWZ1bmN0aW9uIHByKGUsdCxuKXtyZXR1cm4gdD1wYSh0PT09Sz9lLmxlbmd0aC0xOnQsMCksZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzLG89LTEsaT1wYShyLmxlbmd0aC10LDApLHU9Q28oaSk7KytvPGk7KXVbb109clt0K29dO2ZvcihvPS0xLGk9Q28odCsxKTsrK288dDspaVtvXT1yW29dO3JldHVybiBpW3RdPW4odSksYShlLHRoaXMsaSl9fWZ1bmN0aW9uIGhyKGUsdCl7aWYoKCJjb25zdHJ1Y3RvciIhPT10fHwiZnVuY3Rpb24iIT10eXBlb2YgZVt0XSkmJiJfX3Byb3RvX18iIT10KXJldHVybiBlW3RdfWZ1bmN0aW9uIHlyKGUsdCxuKXt2YXIgcj10KyIiO3Q9WmE7dmFyIG8sYT13cjtyZXR1cm4gbj1hKG89KG89ci5tYXRjaChjZSkpP29bMV0uc3BsaXQoZmUpOltdLG4pLChhPW4ubGVuZ3RoKSYmKG5bbz1hLTFdPSgxPGE/IiYgIjoiIikrbltvXSxuPW4uam9pbigyPGE/IiwgIjoiICIpLHI9ci5yZXBsYWNlKGxlLCJ7XG4vKiBbd3JhcHBlZCB3aXRoICIrbisiXSAqL1xuIikpLHQoZSxyKX1mdW5jdGlvbiBtcihlKXt2YXIgdD0wLG49MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj15YSgpLG89MTYtKHItbik7aWYobj1yLDA8byl7aWYoODAwPD0rK3QpcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIHQ9MDtyZXR1cm4gZS5hcHBseShLLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHZyKGUsdCl7dmFyIG49LTEscj0obz1lLmxlbmd0aCktMTtmb3IodD10PT09Sz9vOnQ7KytuPHQ7KXt2YXIgbyxhPWVbbz1VdChuLHIpXTtlW29dPWVbbl0sZVtuXT1hfXJldHVybiBlLmxlbmd0aD10LGV9ZnVuY3Rpb24gZ3IoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlfHxYcihlKSlyZXR1cm4gZTt2YXIgdD1lKyIiO3JldHVybiIwIj09dCYmMS9lPT0tcT8iLTAiOnR9ZnVuY3Rpb24gYnIoZSl7aWYobnVsbCE9ZSl7dHJ5e3JldHVybiBBby5jYWxsKGUpfWNhdGNoKGUpe31yZXR1cm4gZSsiIn1yZXR1cm4iIn1mdW5jdGlvbiB3cihlLHQpe3JldHVybiB1KFUsKGZ1bmN0aW9uKG4pe3ZhciByPSJfLiIrblswXTt0Jm5bMV0mJiFmKGUscikmJmUucHVzaChyKX0pKSxlLnNvcnQoKX1mdW5jdGlvbiBfcihlKXtpZihlIGluc3RhbmNlb2YgQylyZXR1cm4gZS5jbG9uZSgpO3ZhciB0PW5ldyBvKGUuX193cmFwcGVkX18sZS5fX2NoYWluX18pO3JldHVybiB0Ll9fYWN0aW9uc19fPV9uKGUuX19hY3Rpb25zX18pLHQuX19pbmRleF9fPWUuX19pbmRleF9fLHQuX192YWx1ZXNfXz1lLl9fdmFsdWVzX18sdH1mdW5jdGlvbiBFcihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiByPygwPihuPW51bGw9PW4/MDpubyhuKSkmJihuPXBhKHIrbiwwKSksYihlLGVyKHQsMyksbikpOi0xfWZ1bmN0aW9uIE9yKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIG89ci0xO3JldHVybiBuIT09SyYmKG89bm8obiksbz0wPm4/cGEocitvLDApOmhhKG8sci0xKSksYihlLGVyKHQsMyksbywhMCl9ZnVuY3Rpb24ga3IoZSl7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP210KGUsMSk6W119ZnVuY3Rpb24gQ3IoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2VbMF06S31mdW5jdGlvbiB4cihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/ZVt0LTFdOkt9ZnVuY3Rpb24gU3IoZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGgmJnQmJnQubGVuZ3RoP3F0KGUsdCk6ZX1mdW5jdGlvbiBEcihlKXtyZXR1cm4gbnVsbD09ZT9lOmdhLmNhbGwoZSl9ZnVuY3Rpb24gVHIoZSl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm5bXTt2YXIgdD0wO3JldHVybiBlPWMoZSwoZnVuY3Rpb24oZSl7aWYoVnIoZSkpcmV0dXJuIHQ9cGEoZS5sZW5ndGgsdCksITB9KSksRCh0LChmdW5jdGlvbih0KXtyZXR1cm4gcChlLGsodCkpfSkpfWZ1bmN0aW9uIE1yKGUsdCl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm5bXTt2YXIgbj1UcihlKTtyZXR1cm4gbnVsbD09dD9uOnAobiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEodCxLLGUpfSkpfWZ1bmN0aW9uIFByKGUpe3JldHVybihlPW4oZSkpLl9fY2hhaW5fXz0hMCxlfWZ1bmN0aW9uIE5yKGUsdCl7cmV0dXJuIHQoZSl9ZnVuY3Rpb24ganIoZSx0KXtyZXR1cm4oQWkoZSk/dTpJYSkoZSxlcih0LDMpKX1mdW5jdGlvbiBMcihlLHQpe3JldHVybihBaShlKT9zOkFhKShlLGVyKHQsMykpfWZ1bmN0aW9uIFJyKGUsdCl7cmV0dXJuKEFpKGUpP3A6UnQpKGUsZXIodCwzKSl9ZnVuY3Rpb24gSXIoZSx0LG4pe3JldHVybiB0PW4/Szp0LHQ9ZSYmbnVsbD09dD9lLmxlbmd0aDp0LFVuKGUsMTI4LEssSyxLLEssdCl9ZnVuY3Rpb24gQXIoZSx0KXt2YXIgbjtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgam8oIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTtyZXR1cm4gZT1ubyhlKSxmdW5jdGlvbigpe3JldHVybiAwPC0tZSYmKG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLDE+PWUmJih0PUspLG59fWZ1bmN0aW9uIEZyKGUsdCxuKXtmdW5jdGlvbiByKHQpe3ZhciBuPXMscj1sO3JldHVybiBzPWw9SyxoPXQsZj1lLmFwcGx5KHIsbil9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lLXA7cmV0dXJuIGUtPWgscD09PUt8fG4+PXR8fDA+bnx8bSYmZT49Y31mdW5jdGlvbiBhKCl7dmFyIGU9Q2koKTtpZihvKGUpKXJldHVybiBpKGUpO3ZhciBuLHI9SmE7bj1lLWgsZT10LShlLXApLG49bT9oYShlLGMtbik6ZSxkPXIoYSxuKX1mdW5jdGlvbiBpKGUpe3JldHVybiBkPUssdiYmcz9yKGUpOihzPWw9SyxmKX1mdW5jdGlvbiB1KCl7dmFyIGU9Q2koKSxuPW8oZSk7aWYocz1hcmd1bWVudHMsbD10aGlzLHA9ZSxuKXtpZihkPT09SylyZXR1cm4gaD1lPXAsZD1KYShhLHQpLHk/cihlKTpmO2lmKG0pcmV0dXJuIHFhKGQpLGQ9SmEoYSx0KSxyKHApfXJldHVybiBkPT09SyYmKGQ9SmEoYSx0KSksZn12YXIgcyxsLGMsZixkLHAsaD0wLHk9ITEsbT0hMSx2PSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBqbygiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3JldHVybiB0PW9vKHQpfHwwLEdyKG4pJiYoeT0hIW4ubGVhZGluZyxjPShtPSJtYXhXYWl0ImluIG4pP3BhKG9vKG4ubWF4V2FpdCl8fDAsdCk6Yyx2PSJ0cmFpbGluZyJpbiBuPyEhbi50cmFpbGluZzp2KSx1LmNhbmNlbD1mdW5jdGlvbigpe2QhPT1LJiZxYShkKSxoPTAscz1wPWw9ZD1LfSx1LmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIGQ9PT1LP2Y6aShDaSgpKX0sdX1mdW5jdGlvbiBCcihlLHQpe2Z1bmN0aW9uIG4oKXt2YXIgcj1hcmd1bWVudHMsbz10P3QuYXBwbHkodGhpcyxyKTpyWzBdLGE9bi5jYWNoZTtyZXR1cm4gYS5oYXMobyk/YS5nZXQobyk6KHI9ZS5hcHBseSh0aGlzLHIpLG4uY2FjaGU9YS5zZXQobyxyKXx8YSxyKX1pZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IGpvKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7cmV0dXJuIG4uY2FjaGU9bmV3KEJyLkNhY2hlfHxEZSksbn1mdW5jdGlvbiB6cihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgam8oIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIWUuY2FsbCh0aGlzKTtjYXNlIDE6cmV0dXJuIWUuY2FsbCh0aGlzLHRbMF0pO2Nhc2UgMjpyZXR1cm4hZS5jYWxsKHRoaXMsdFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIWUuY2FsbCh0aGlzLHRbMF0sdFsxXSx0WzJdKX1yZXR1cm4hZS5hcHBseSh0aGlzLHQpfX1mdW5jdGlvbiBLcihlLHQpe3JldHVybiBlPT09dHx8ZSE9ZSYmdCE9dH1mdW5jdGlvbiBxcihlKXtyZXR1cm4gbnVsbCE9ZSYmSHIoZS5sZW5ndGgpJiYhV3IoZSl9ZnVuY3Rpb24gVnIoZSl7cmV0dXJuIFFyKGUpJiZxcihlKX1mdW5jdGlvbiBVcihlKXtpZighUXIoZSkpcmV0dXJuITE7dmFyIHQ9RXQoZSk7cmV0dXJuIltvYmplY3QgRXJyb3JdIj09dHx8IltvYmplY3QgRE9NRXhjZXB0aW9uXSI9PXR8fCJzdHJpbmciPT10eXBlb2YgZS5tZXNzYWdlJiYic3RyaW5nIj09dHlwZW9mIGUubmFtZSYmIVpyKGUpfWZ1bmN0aW9uIFdyKGUpe3JldHVybiEhR3IoZSkmJigiW29iamVjdCBGdW5jdGlvbl0iPT0oZT1FdChlKSl8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgUHJveHldIj09ZSl9ZnVuY3Rpb24gWXIoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZlPT1ubyhlKX1mdW5jdGlvbiBIcihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJi0xPGUmJjA9PWUlMSYmOTAwNzE5OTI1NDc0MDk5MT49ZX1mdW5jdGlvbiBHcihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gbnVsbCE9ZSYmKCJvYmplY3QiPT10fHwiZnVuY3Rpb24iPT10KX1mdW5jdGlvbiBRcihlKXtyZXR1cm4gbnVsbCE9ZSYmIm9iamVjdCI9PXR5cGVvZiBlfWZ1bmN0aW9uIEpyKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZXx8UXIoZSkmJiJbb2JqZWN0IE51bWJlcl0iPT1FdChlKX1mdW5jdGlvbiBacihlKXtyZXR1cm4hKCFRcihlKXx8IltvYmplY3QgT2JqZWN0XSIhPUV0KGUpKSYmKG51bGw9PT0oZT1RbyhlKSl8fCJmdW5jdGlvbiI9PXR5cGVvZihlPUZvLmNhbGwoZSwiY29uc3RydWN0b3IiKSYmZS5jb25zdHJ1Y3RvcikmJmUgaW5zdGFuY2VvZiBlJiZBby5jYWxsKGUpPT1xbyl9ZnVuY3Rpb24gJHIoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwhQWkoZSkmJlFyKGUpJiYiW29iamVjdCBTdHJpbmddIj09RXQoZSl9ZnVuY3Rpb24gWHIoZSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBlfHxRcihlKSYmIltvYmplY3QgU3ltYm9sXSI9PUV0KGUpfWZ1bmN0aW9uIGVvKGUpe2lmKCFlKXJldHVybltdO2lmKHFyKGUpKXJldHVybiAkcihlKT96KGUpOl9uKGUpO2lmKGVhJiZlW2VhXSl7ZT1lW2VhXSgpO2Zvcih2YXIgdCxuPVtdOyEodD1lLm5leHQoKSkuZG9uZTspbi5wdXNoKHQudmFsdWUpO3JldHVybiBufXJldHVybigiW29iamVjdCBNYXBdIj09KHQ9SGEoZSkpP1I6IltvYmplY3QgU2V0XSI9PXQ/RjpwbykoZSl9ZnVuY3Rpb24gdG8oZSl7cmV0dXJuIGU/KGU9b28oZSkpPT09cXx8ZT09PS1xPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiooMD5lPy0xOjEpOmU9PWU/ZTowOjA9PT1lP2U6MH1mdW5jdGlvbiBubyhlKXt2YXIgdD0oZT10byhlKSklMTtyZXR1cm4gZT09ZT90P2UtdDplOjB9ZnVuY3Rpb24gcm8oZSl7cmV0dXJuIGU/c3Qobm8oZSksMCw0Mjk0OTY3Mjk1KTowfWZ1bmN0aW9uIG9vKGUpe2lmKCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm4gZTtpZihYcihlKSlyZXR1cm4gVjtpZihHcihlKSYmKGU9R3IoZT0iZnVuY3Rpb24iPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmUpP2UrIiI6ZSksInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiAwPT09ZT9lOitlO2U9ZS5yZXBsYWNlKGllLCIiKTt2YXIgdD12ZS50ZXN0KGUpO3JldHVybiB0fHxiZS50ZXN0KGUpP0FlKGUuc2xpY2UoMiksdD8yOjgpOm1lLnRlc3QoZSk/VjorZX1mdW5jdGlvbiBhbyhlKXtyZXR1cm4gRW4oZSxjbyhlKSl9ZnVuY3Rpb24gaW8oZSl7cmV0dXJuIG51bGw9PWU/IiI6cm4oZSl9ZnVuY3Rpb24gdW8oZSx0LG4pe3JldHVybihlPW51bGw9PWU/Szp3dChlLHQpKT09PUs/bjplfWZ1bmN0aW9uIHNvKGUsdCl7cmV0dXJuIG51bGwhPWUmJm9yKGUsdCxDdCl9ZnVuY3Rpb24gbG8oZSl7cmV0dXJuIHFyKGUpP0JlKGUpOmp0KGUpfWZ1bmN0aW9uIGNvKGUpe2lmKHFyKGUpKWU9QmUoZSwhMCk7ZWxzZSBpZihHcihlKSl7dmFyIHQsbj1mcihlKSxyPVtdO2Zvcih0IGluIGUpKCJjb25zdHJ1Y3RvciIhPXR8fCFuJiZGby5jYWxsKGUsdCkpJiZyLnB1c2godCk7ZT1yfWVsc2V7aWYodD1bXSxudWxsIT1lKWZvcihuIGluIE1vKGUpKXQucHVzaChuKTtlPXR9cmV0dXJuIGV9ZnVuY3Rpb24gZm8oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuPXAoWm4oZSksKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pKTtyZXR1cm4gdD1lcih0KSxLdChlLG4sKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuWzBdKX0pKX1mdW5jdGlvbiBwbyhlKXtyZXR1cm4gbnVsbD09ZT9bXTpNKGUsbG8oZSkpfWZ1bmN0aW9uIGhvKGUpe3JldHVybiBtdShpbyhlKS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiB5byhlKXtyZXR1cm4oZT1pbyhlKSkmJmUucmVwbGFjZShfZSxYZSkucmVwbGFjZShTZSwiIil9ZnVuY3Rpb24gbW8oZSx0LG4pe3JldHVybiBlPWlvKGUpLCh0PW4/Szp0KT09PUs/UGUudGVzdChlKT9lLm1hdGNoKFRlKXx8W106ZS5tYXRjaChkZSl8fFtdOmUubWF0Y2godCl8fFtdfWZ1bmN0aW9uIHZvKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiBnbyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBibyhlKXtyZXR1cm4gTnQoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpsdChlLDEpKX1mdW5jdGlvbiB3byhlLHQsbil7dmFyIHI9bG8odCksbz1idCh0LHIpO251bGwhPW58fEdyKHQpJiYoby5sZW5ndGh8fCFyLmxlbmd0aCl8fChuPXQsdD1lLGU9dGhpcyxvPWJ0KHQsbG8odCkpKTt2YXIgYT0hKEdyKG4pJiYiY2hhaW4iaW4gbiYmIW4uY2hhaW4pLGk9V3IoZSk7cmV0dXJuIHUobywoZnVuY3Rpb24obil7dmFyIHI9dFtuXTtlW25dPXIsaSYmKGUucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX2NoYWluX187aWYoYXx8dCl7dmFyIG49ZSh0aGlzLl9fd3JhcHBlZF9fKTtyZXR1cm4obi5fX2FjdGlvbnNfXz1fbih0aGlzLl9fYWN0aW9uc19fKSkucHVzaCh7ZnVuYzpyLGFyZ3M6YXJndW1lbnRzLHRoaXNBcmc6ZX0pLG4uX19jaGFpbl9fPXQsbn1yZXR1cm4gci5hcHBseShlLGgoW3RoaXMudmFsdWUoKV0sYXJndW1lbnRzKSl9KX0pKSxlfWZ1bmN0aW9uIF9vKCl7fWZ1bmN0aW9uIEVvKGUpe3JldHVybiBscihlKT9rKGdyKGUpKTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHd0KHQsZSl9fShlKX1mdW5jdGlvbiBPbygpe3JldHVybltdfWZ1bmN0aW9uIGtvKCl7cmV0dXJuITF9dmFyIENvPSh0PW51bGw9PXQ/emU6bnQuZGVmYXVsdHMoemUuT2JqZWN0KCksdCxudC5waWNrKHplLE5lKSkpLkFycmF5LHhvPXQuRGF0ZSxTbz10LkVycm9yLERvPXQuRnVuY3Rpb24sVG89dC5NYXRoLE1vPXQuT2JqZWN0LFBvPXQuUmVnRXhwLE5vPXQuU3RyaW5nLGpvPXQuVHlwZUVycm9yLExvPUNvLnByb3RvdHlwZSxSbz1Nby5wcm90b3R5cGUsSW89dFsiX19jb3JlLWpzX3NoYXJlZF9fIl0sQW89RG8ucHJvdG90eXBlLnRvU3RyaW5nLEZvPVJvLmhhc093blByb3BlcnR5LEJvPTAsem89ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKElvJiZJby5rZXlzJiZJby5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpLEtvPVJvLnRvU3RyaW5nLHFvPUFvLmNhbGwoTW8pLFZvPXplLl8sVW89UG8oIl4iK0FvLmNhbGwoRm8pLnJlcGxhY2Uob2UsIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksV289VmU/dC5CdWZmZXI6SyxZbz10LlN5bWJvbCxIbz10LlVpbnQ4QXJyYXksR289V28/V28uZzpLLFFvPUkoTW8uZ2V0UHJvdG90eXBlT2YsTW8pLEpvPU1vLmNyZWF0ZSxabz1Sby5wcm9wZXJ0eUlzRW51bWVyYWJsZSwkbz1Mby5zcGxpY2UsWG89WW8/WW8uaXNDb25jYXRTcHJlYWRhYmxlOkssZWE9WW8/WW8uaXRlcmF0b3I6Syx0YT1Zbz9Zby50b1N0cmluZ1RhZzpLLG5hPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXJyKE1vLCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiBlKHt9LCIiLHt9KSxlfWNhdGNoKGUpe319KCkscmE9dC5jbGVhclRpbWVvdXQhPT16ZS5jbGVhclRpbWVvdXQmJnQuY2xlYXJUaW1lb3V0LG9hPXhvJiZ4by5ub3chPT16ZS5EYXRlLm5vdyYmeG8ubm93LGFhPXQuc2V0VGltZW91dCE9PXplLnNldFRpbWVvdXQmJnQuc2V0VGltZW91dCxpYT1Uby5jZWlsLHVhPVRvLmZsb29yLHNhPU1vLmdldE93blByb3BlcnR5U3ltYm9scyxsYT1Xbz9Xby5pc0J1ZmZlcjpLLGNhPXQuaXNGaW5pdGUsZmE9TG8uam9pbixkYT1JKE1vLmtleXMsTW8pLHBhPVRvLm1heCxoYT1Uby5taW4seWE9eG8ubm93LG1hPXQucGFyc2VJbnQsdmE9VG8ucmFuZG9tLGdhPUxvLnJldmVyc2UsYmE9cnIodCwiRGF0YVZpZXciKSx3YT1ycih0LCJNYXAiKSxfYT1ycih0LCJQcm9taXNlIiksRWE9cnIodCwiU2V0IiksT2E9cnIodCwiV2Vha01hcCIpLGthPXJyKE1vLCJjcmVhdGUiKSxDYT1PYSYmbmV3IE9hLHhhPXt9LFNhPWJyKGJhKSxEYT1icih3YSksVGE9YnIoX2EpLE1hPWJyKEVhKSxQYT1icihPYSksTmE9WW8/WW8ucHJvdG90eXBlOkssamE9TmE/TmEudmFsdWVPZjpLLExhPU5hP05hLnRvU3RyaW5nOkssUmE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gR3IodCk/Sm8/Sm8odCk6KGUucHJvdG90eXBlPXQsdD1uZXcgZSxlLnByb3RvdHlwZT1LLHQpOnt9fX0oKTtuLnRlbXBsYXRlU2V0dGluZ3M9e2VzY2FwZTokLGV2YWx1YXRlOlgsaW50ZXJwb2xhdGU6ZWUsdmFyaWFibGU6IiIsaW1wb3J0czp7XzpufX0sbi5wcm90b3R5cGU9ci5wcm90b3R5cGUsbi5wcm90b3R5cGUuY29uc3RydWN0b3I9bixvLnByb3RvdHlwZT1SYShyLnByb3RvdHlwZSksby5wcm90b3R5cGUuY29uc3RydWN0b3I9byxDLnByb3RvdHlwZT1SYShyLnByb3RvdHlwZSksQy5wcm90b3R5cGUuY29uc3RydWN0b3I9QyxrZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWthP2thKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlPXRoaXMuaGFzKGUpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tlXSx0aGlzLnNpemUtPWU/MTowLGV9LGtlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztyZXR1cm4ga2E/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09KGU9dFtlXSk/SzplOkZvLmNhbGwodCxlKT90W2VdOkt9LGtlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztyZXR1cm4ga2E/dFtlXSE9PUs6Rm8uY2FsbCh0LGUpfSxrZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhlKT8wOjEsbltlXT1rYSYmdD09PUs/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnQsdGhpc30sQ2UucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sQ2UucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiEoMD4oZT1ydCh0LGUpKXx8KGU9PXQubGVuZ3RoLTE/dC5wb3AoKTokby5jYWxsKHQsZSwxKSwtLXRoaXMuc2l6ZSwwKSl9LENlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztyZXR1cm4gMD4oZT1ydCh0LGUpKT9LOnRbZV1bMV19LENlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuLTE8cnQodGhpcy5fX2RhdGFfXyxlKX0sQ2UucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19kYXRhX18scj1ydChuLGUpO3JldHVybiAwPnI/KCsrdGhpcy5zaXplLG4ucHVzaChbZSx0XSkpOm5bcl1bMV09dCx0aGlzfSxEZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBrZSxtYXA6bmV3KHdhfHxDZSksc3RyaW5nOm5ldyBrZX19LERlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9dHIodGhpcyxlKS5kZWxldGUoZSksdGhpcy5zaXplLT1lPzE6MCxlfSxEZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0cih0aGlzLGUpLmdldChlKX0sRGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdHIodGhpcyxlKS5oYXMoZSl9LERlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10cih0aGlzLGUpLHI9bi5zaXplO3JldHVybiBuLnNldChlLHQpLHRoaXMuc2l6ZSs9bi5zaXplPT1yPzA6MSx0aGlzfSxSZS5wcm90b3R5cGUuYWRkPVJlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldChlLCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksdGhpc30sUmUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSl9LEZlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IENlLHRoaXMuc2l6ZT0wfSxGZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIGU9dC5kZWxldGUoZSksdGhpcy5zaXplPXQuc2l6ZSxlfSxGZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldChlKX0sRmUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSl9LEZlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBDZSl7dmFyIHI9bi5fX2RhdGFfXztpZighd2F8fDE5OT5yLmxlbmd0aClyZXR1cm4gci5wdXNoKFtlLHRdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IERlKHIpfXJldHVybiBuLnNldChlLHQpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307dmFyIElhPUNuKHZ0KSxBYT1DbihndCwhMCksRmE9eG4oKSxCYT14bighMCksemE9Q2E/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQ2Euc2V0KGUsdCksZX06Z28sS2E9bmE/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmEoZSwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTp2byh0KSx3cml0YWJsZTohMH0pfTpnbyxxYT1yYXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHplLmNsZWFyVGltZW91dChlKX0sVmE9RWEmJjEvRihuZXcgRWEoWywtMF0pKVsxXT09cT9mdW5jdGlvbihlKXtyZXR1cm4gbmV3IEVhKGUpfTpfbyxVYT1DYT9mdW5jdGlvbihlKXtyZXR1cm4gQ2EuZ2V0KGUpfTpfbyxXYT1zYT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1NbyhlKSxjKHNhKGUpLChmdW5jdGlvbih0KXtyZXR1cm4gWm8uY2FsbChlLHQpfSkpKX06T28sWWE9c2E/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdO2U7KWgodCxXYShlKSksZT1RbyhlKTtyZXR1cm4gdH06T28sSGE9RXQ7KGJhJiYiW29iamVjdCBEYXRhVmlld10iIT1IYShuZXcgYmEobmV3IEFycmF5QnVmZmVyKDEpKSl8fHdhJiYiW29iamVjdCBNYXBdIiE9SGEobmV3IHdhKXx8X2EmJiJbb2JqZWN0IFByb21pc2VdIiE9SGEoX2EucmVzb2x2ZSgpKXx8RWEmJiJbb2JqZWN0IFNldF0iIT1IYShuZXcgRWEpfHxPYSYmIltvYmplY3QgV2Vha01hcF0iIT1IYShuZXcgT2EpKSYmKEhhPWZ1bmN0aW9uKGUpe3ZhciB0PUV0KGUpO2lmKGU9KGU9IltvYmplY3QgT2JqZWN0XSI9PXQ/ZS5jb25zdHJ1Y3RvcjpLKT9icihlKToiIilzd2l0Y2goZSl7Y2FzZSBTYTpyZXR1cm4iW29iamVjdCBEYXRhVmlld10iO2Nhc2UgRGE6cmV0dXJuIltvYmplY3QgTWFwXSI7Y2FzZSBUYTpyZXR1cm4iW29iamVjdCBQcm9taXNlXSI7Y2FzZSBNYTpyZXR1cm4iW29iamVjdCBTZXRdIjtjYXNlIFBhOnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gdH0pO3ZhciBHYT1Jbz9XcjprbyxRYT1tcih6YSksSmE9YWF8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHplLnNldFRpbWVvdXQoZSx0KX0sWmE9bXIoS2EpLCRhPWZ1bmN0aW9uKGUpe3ZhciB0PShlPUJyKGUsKGZ1bmN0aW9uKGUpe3JldHVybiA1MDA9PT10LnNpemUmJnQuY2xlYXIoKSxlfSkpKS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UocmUsKGZ1bmN0aW9uKGUsbixyLG8pe3QucHVzaChyP28ucmVwbGFjZShwZSwiJDEiKTpufHxlKX0pKSx0fSkpLFhhPVl0KChmdW5jdGlvbihlLHQpe3JldHVybiBWcihlKT9kdChlLG10KHQsMSxWciwhMCkpOltdfSkpLGVpPVl0KChmdW5jdGlvbihlLHQpe3ZhciBuPXhyKHQpO3JldHVybiBWcihuKSYmKG49SyksVnIoZSk/ZHQoZSxtdCh0LDEsVnIsITApLGVyKG4sMikpOltdfSkpLHRpPVl0KChmdW5jdGlvbihlLHQpe3ZhciBuPXhyKHQpO3JldHVybiBWcihuKSYmKG49SyksVnIoZSk/ZHQoZSxtdCh0LDEsVnIsITApLEssbik6W119KSksbmk9WXQoKGZ1bmN0aW9uKGUpe3ZhciB0PXAoZSxmbik7cmV0dXJuIHQubGVuZ3RoJiZ0WzBdPT09ZVswXT94dCh0KTpbXX0pKSxyaT1ZdCgoZnVuY3Rpb24oZSl7dmFyIHQ9eHIoZSksbj1wKGUsZm4pO3JldHVybiB0PT09eHIobik/dD1LOm4ucG9wKCksbi5sZW5ndGgmJm5bMF09PT1lWzBdP3h0KG4sZXIodCwyKSk6W119KSksb2k9WXQoKGZ1bmN0aW9uKGUpe3ZhciB0PXhyKGUpLG49cChlLGZuKTtyZXR1cm4odD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkspJiZuLnBvcCgpLG4ubGVuZ3RoJiZuWzBdPT09ZVswXT94dChuLEssdCk6W119KSksYWk9WXQoU3IpLGlpPVFuKChmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/MDplLmxlbmd0aCxyPXV0KGUsdCk7cmV0dXJuIFZ0KGUscCh0LChmdW5jdGlvbihlKXtyZXR1cm4gdXIoZSxuKT8rZTplfSkpLnNvcnQoZ24pKSxyfSkpLHVpPVl0KChmdW5jdGlvbihlKXtyZXR1cm4gb24obXQoZSwxLFZyLCEwKSl9KSksc2k9WXQoKGZ1bmN0aW9uKGUpe3ZhciB0PXhyKGUpO3JldHVybiBWcih0KSYmKHQ9Syksb24obXQoZSwxLFZyLCEwKSxlcih0LDIpKX0pKSxsaT1ZdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mKHQ9eHIoZSkpP3Q6SztyZXR1cm4gb24obXQoZSwxLFZyLCEwKSxLLHQpfSkpLGNpPVl0KChmdW5jdGlvbihlLHQpe3JldHVybiBWcihlKT9kdChlLHQpOltdfSkpLGZpPVl0KChmdW5jdGlvbihlKXtyZXR1cm4gbG4oYyhlLFZyKSl9KSksZGk9WXQoKGZ1bmN0aW9uKGUpe3ZhciB0PXhyKGUpO3JldHVybiBWcih0KSYmKHQ9SyksbG4oYyhlLFZyKSxlcih0LDIpKX0pKSxwaT1ZdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mKHQ9eHIoZSkpP3Q6SztyZXR1cm4gbG4oYyhlLFZyKSxLLHQpfSkpLGhpPVl0KFRyKSx5aT1ZdCgoZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mKHQ9MTwodD1lLmxlbmd0aCk/ZVt0LTFdOkspPyhlLnBvcCgpLHQpOks7cmV0dXJuIE1yKGUsdCl9KSksbWk9UW4oKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIHV0KHQsZSl9dmFyIG49ZS5sZW5ndGgscj1uP2VbMF06MCxhPXRoaXMuX193cmFwcGVkX187cmV0dXJuISgxPG58fHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSYmYSBpbnN0YW5jZW9mIEMmJnVyKHIpPygoYT1hLnNsaWNlKHIsK3IrKG4/MTowKSkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6TnIsYXJnczpbdF0sdGhpc0FyZzpLfSksbmV3IG8oYSx0aGlzLl9fY2hhaW5fXykudGhydSgoZnVuY3Rpb24oZSl7cmV0dXJuIG4mJiFlLmxlbmd0aCYmZS5wdXNoKEspLGV9KSkpOnRoaXMudGhydSh0KX0pKSx2aT1PbigoZnVuY3Rpb24oZSx0LG4pe0ZvLmNhbGwoZSxuKT8rK2Vbbl06aXQoZSxuLDEpfSkpLGdpPVBuKEVyKSxiaT1QbihPciksd2k9T24oKGZ1bmN0aW9uKGUsdCxuKXtGby5jYWxsKGUsbik/ZVtuXS5wdXNoKHQpOml0KGUsbixbdF0pfSkpLF9pPVl0KChmdW5jdGlvbihlLHQsbil7dmFyIHI9LTEsbz0iZnVuY3Rpb24iPT10eXBlb2YgdCxpPXFyKGUpP0NvKGUubGVuZ3RoKTpbXTtyZXR1cm4gSWEoZSwoZnVuY3Rpb24oZSl7aVsrK3JdPW8/YSh0LGUsbik6U3QoZSx0LG4pfSkpLGl9KSksRWk9T24oKGZ1bmN0aW9uKGUsdCxuKXtpdChlLG4sdCl9KSksT2k9T24oKGZ1bmN0aW9uKGUsdCxuKXtlW24/MDoxXS5wdXNoKHQpfSksKGZ1bmN0aW9uKCl7cmV0dXJuW1tdLFtdXX0pKSxraT1ZdCgoZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybltdO3ZhciBuPXQubGVuZ3RoO3JldHVybiAxPG4mJnNyKGUsdFswXSx0WzFdKT90PVtdOjI8biYmc3IodFswXSx0WzFdLHRbMl0pJiYodD1bdFswXV0pLHp0KGUsbXQodCwxKSxbXSl9KSksQ2k9b2F8fGZ1bmN0aW9uKCl7cmV0dXJuIHplLkRhdGUubm93KCl9LHhpPVl0KChmdW5jdGlvbihlLHQsbil7dmFyIHI9MTtpZihuLmxlbmd0aCl7dmFyIG89QShuLFhuKHhpKSk7cj0zMnxyfXJldHVybiBVbihlLHIsdCxuLG8pfSkpLFNpPVl0KChmdW5jdGlvbihlLHQsbil7dmFyIHI9MztpZihuLmxlbmd0aCl7dmFyIG89QShuLFhuKFNpKSk7cj0zMnxyfXJldHVybiBVbih0LHIsZSxuLG8pfSkpLERpPVl0KChmdW5jdGlvbihlLHQpe3JldHVybiBmdChlLDEsdCl9KSksVGk9WXQoKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnQoZSxvbyh0KXx8MCxuKX0pKTtCci5DYWNoZT1EZTt2YXIgTWk9WXQoKGZ1bmN0aW9uKGUsdCl7dmFyIG49KHQ9MT09dC5sZW5ndGgmJkFpKHRbMF0pP3AodFswXSxUKGVyKCkpKTpwKG10KHQsMSksVChlcigpKSkpLmxlbmd0aDtyZXR1cm4gWXQoKGZ1bmN0aW9uKHIpe2Zvcih2YXIgbz0tMSxpPWhhKHIubGVuZ3RoLG4pOysrbzxpOylyW29dPXRbb10uY2FsbCh0aGlzLHJbb10pO3JldHVybiBhKGUsdGhpcyxyKX0pKX0pKSxQaT1ZdCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gVW4oZSwzMixLLHQsQSh0LFhuKFBpKSkpfSkpLE5pPVl0KChmdW5jdGlvbihlLHQpe3JldHVybiBVbihlLDY0LEssdCxBKHQsWG4oTmkpKSl9KSksamk9UW4oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIFVuKGUsMjU2LEssSyxLLHQpfSkpLExpPXpuKE90KSxSaT16bigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT49dH0pKSxJaT1EdChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP0R0OmZ1bmN0aW9uKGUpe3JldHVybiBRcihlKSYmRm8uY2FsbChlLCJjYWxsZWUiKSYmIVpvLmNhbGwoZSwiY2FsbGVlIil9LEFpPUNvLmlzQXJyYXksRmk9WWU/VChZZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIFFyKGUpJiYiW29iamVjdCBBcnJheUJ1ZmZlcl0iPT1FdChlKX0sQmk9bGF8fGtvLHppPUhlP1QoSGUpOmZ1bmN0aW9uKGUpe3JldHVybiBRcihlKSYmIltvYmplY3QgRGF0ZV0iPT1FdChlKX0sS2k9R2U/VChHZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIFFyKGUpJiYiW29iamVjdCBNYXBdIj09SGEoZSl9LHFpPVFlP1QoUWUpOmZ1bmN0aW9uKGUpe3JldHVybiBRcihlKSYmIltvYmplY3QgUmVnRXhwXSI9PUV0KGUpfSxWaT1KZT9UKEplKTpmdW5jdGlvbihlKXtyZXR1cm4gUXIoZSkmJiJbb2JqZWN0IFNldF0iPT1IYShlKX0sVWk9WmU/VChaZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIFFyKGUpJiZIcihlLmxlbmd0aCkmJiEhamVbRXQoZSldfSxXaT16bihMdCksWWk9em4oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXR9KSksSGk9a24oKGZ1bmN0aW9uKGUsdCl7aWYoZnIodCl8fHFyKHQpKUVuKHQsbG8odCksZSk7ZWxzZSBmb3IodmFyIG4gaW4gdClGby5jYWxsKHQsbikmJiRlKGUsbix0W25dKX0pKSxHaT1rbigoZnVuY3Rpb24oZSx0KXtFbih0LGNvKHQpLGUpfSkpLFFpPWtuKChmdW5jdGlvbihlLHQsbixyKXtFbih0LGNvKHQpLGUscil9KSksSmk9a24oKGZ1bmN0aW9uKGUsdCxuLHIpe0VuKHQsbG8odCksZSxyKX0pKSxaaT1Rbih1dCksJGk9WXQoKGZ1bmN0aW9uKGUsdCl7ZT1NbyhlKTt2YXIgbj0tMSxyPXQubGVuZ3RoO2Zvcigobz0yPHI/dFsyXTpLKSYmc3IodFswXSx0WzFdLG8pJiYocj0xKTsrK248cjspZm9yKHZhciBvLGE9Y28obz10W25dKSxpPS0xLHU9YS5sZW5ndGg7KytpPHU7KXt2YXIgcz1hW2ldLGw9ZVtzXTsobD09PUt8fEtyKGwsUm9bc10pJiYhRm8uY2FsbChlLHMpKSYmKGVbc109b1tzXSl9cmV0dXJuIGV9KSksWGk9WXQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnB1c2goSyxZbiksYShvdSxLLGUpfSkpLGV1PUxuKChmdW5jdGlvbihlLHQsbil7bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQudG9TdHJpbmcmJih0PUtvLmNhbGwodCkpLGVbdF09bn0pLHZvKGdvKSksdHU9TG4oKGZ1bmN0aW9uKGUsdCxuKXtudWxsIT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdC50b1N0cmluZyYmKHQ9S28uY2FsbCh0KSksRm8uY2FsbChlLHQpP2VbdF0ucHVzaChuKTplW3RdPVtuXX0pLGVyKSxudT1ZdChTdCkscnU9a24oKGZ1bmN0aW9uKGUsdCxuKXtGdChlLHQsbil9KSksb3U9a24oKGZ1bmN0aW9uKGUsdCxuLHIpe0Z0KGUsdCxuLHIpfSkpLGF1PVFuKChmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2lmKG51bGw9PWUpcmV0dXJuIG47dmFyIHI9ITE7dD1wKHQsKGZ1bmN0aW9uKHQpe3JldHVybiB0PXBuKHQsZSkscnx8KHI9MTx0Lmxlbmd0aCksdH0pKSxFbihlLFpuKGUpLG4pLHImJihuPWx0KG4sNyxIbikpO2Zvcih2YXIgbz10Lmxlbmd0aDtvLS07KWFuKG4sdFtvXSk7cmV0dXJuIG59KSksaXU9UW4oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/e306ZnVuY3Rpb24oZSx0KXtyZXR1cm4gS3QoZSx0LChmdW5jdGlvbih0LG4pe3JldHVybiBzbyhlLG4pfSkpfShlLHQpfSkpLHV1PVZuKGxvKSxzdT1WbihjbyksbHU9RG4oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD10LnRvTG93ZXJDYXNlKCksZSsobj9obyh0KTp0KX0pKSxjdT1EbigoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlKyhuPyItIjoiIikrdC50b0xvd2VyQ2FzZSgpfSkpLGZ1PURuKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUrKG4/IiAiOiIiKSt0LnRvTG93ZXJDYXNlKCl9KSksZHU9U24oInRvTG93ZXJDYXNlIikscHU9RG4oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj8iXyI6IiIpK3QudG9Mb3dlckNhc2UoKX0pKSxodT1EbigoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlKyhuPyIgIjoiIikrbXUodCl9KSkseXU9RG4oKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSsobj8iICI6IiIpK3QudG9VcHBlckNhc2UoKX0pKSxtdT1TbigidG9VcHBlckNhc2UiKSx2dT1ZdCgoZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGEoZSxLLHQpfWNhdGNoKGUpe3JldHVybiBVcihlKT9lOm5ldyBTbyhlKX19KSksZ3U9UW4oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUodCwoZnVuY3Rpb24odCl7dD1ncih0KSxpdChlLHQseGkoZVt0XSxlKSl9KSksZX0pKSxidT1ObigpLHd1PU5uKCEwKSxfdT1ZdCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIFN0KG4sZSx0KX19KSksRXU9WXQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBTdChlLG4sdCl9fSkpLE91PUluKHApLGt1PUluKGwpLEN1PUluKHYpLHh1PUJuKCksU3U9Qm4oITApLER1PVJuKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9KSwwKSxUdT1xbigiY2VpbCIpLE11PVJuKChmdW5jdGlvbihlLHQpe3JldHVybiBlL3R9KSwxKSxQdT1xbigiZmxvb3IiKSxOdT1SbigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSp0fSksMSksanU9cW4oInJvdW5kIiksTHU9Um4oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pLDApO3JldHVybiBuLmFmdGVyPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IGpvKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7cmV0dXJuIGU9bm8oZSksZnVuY3Rpb24oKXtpZigxPi0tZSlyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxuLmFyeT1JcixuLmFzc2lnbj1IaSxuLmFzc2lnbkluPUdpLG4uYXNzaWduSW5XaXRoPVFpLG4uYXNzaWduV2l0aD1KaSxuLmF0PVppLG4uYmVmb3JlPUFyLG4uYmluZD14aSxuLmJpbmRBbGw9Z3Usbi5iaW5kS2V5PVNpLG4uY2FzdEFycmF5PWZ1bmN0aW9uKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIGU9YXJndW1lbnRzWzBdO3JldHVybiBBaShlKT9lOltlXX0sbi5jaGFpbj1QcixuLmNodW5rPWZ1bmN0aW9uKGUsdCxuKXtpZih0PShuP3NyKGUsdCxuKTp0PT09Syk/MTpwYShubyh0KSwwKSwhKG49bnVsbD09ZT8wOmUubGVuZ3RoKXx8MT50KXJldHVybltdO2Zvcih2YXIgcj0wLG89MCxhPUNvKGlhKG4vdCkpO3I8bjspYVtvKytdPVp0KGUscixyKz10KTtyZXR1cm4gYX0sbi5jb21wYWN0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMSxuPW51bGw9PWU/MDplLmxlbmd0aCxyPTAsbz1bXTsrK3Q8bjspe3ZhciBhPWVbdF07YSYmKG9bcisrXT1hKX1yZXR1cm4gb30sbi5jb25jYXQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoO2lmKCFlKXJldHVybltdO2Zvcih2YXIgdD1DbyhlLTEpLG49YXJndW1lbnRzWzBdO2UtLTspdFtlLTFdPWFyZ3VtZW50c1tlXTtyZXR1cm4gaChBaShuKT9fbihuKTpbbl0sbXQodCwxKSl9LG4uY29uZD1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGgsbj1lcigpO3JldHVybiBlPXQ/cChlLChmdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZVsxXSl0aHJvdyBuZXcgam8oIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTtyZXR1cm5bbihlWzBdKSxlWzFdXX0pKTpbXSxZdCgoZnVuY3Rpb24obil7Zm9yKHZhciByPS0xOysrcjx0Oyl7dmFyIG89ZVtyXTtpZihhKG9bMF0sdGhpcyxuKSlyZXR1cm4gYShvWzFdLHRoaXMsbil9fSkpfSxuLmNvbmZvcm1zPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1sbyhlKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGN0KG4sZSx0KX19KGx0KGUsMSkpfSxuLmNvbnN0YW50PXZvLG4uY291bnRCeT12aSxuLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPVJhKGUpO3JldHVybiBudWxsPT10P246YXQobix0KX0sbi5jdXJyeT1mdW5jdGlvbiBlKHQsbixyKXtyZXR1cm4odD1Vbih0LDgsSyxLLEssSyxLLG49cj9LOm4pKS5wbGFjZWhvbGRlcj1lLnBsYWNlaG9sZGVyLHR9LG4uY3VycnlSaWdodD1mdW5jdGlvbiBlKHQsbixyKXtyZXR1cm4odD1Vbih0LDE2LEssSyxLLEssSyxuPXI/SzpuKSkucGxhY2Vob2xkZXI9ZS5wbGFjZWhvbGRlcix0fSxuLmRlYm91bmNlPUZyLG4uZGVmYXVsdHM9JGksbi5kZWZhdWx0c0RlZXA9WGksbi5kZWZlcj1EaSxuLmRlbGF5PVRpLG4uZGlmZmVyZW5jZT1YYSxuLmRpZmZlcmVuY2VCeT1laSxuLmRpZmZlcmVuY2VXaXRoPXRpLG4uZHJvcD1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiByP1p0KGUsMD4odD1ufHx0PT09Sz8xOm5vKHQpKT8wOnQscik6W119LG4uZHJvcFJpZ2h0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/WnQoZSwwLDA+KHQ9ci0odD1ufHx0PT09Sz8xOm5vKHQpKSk/MDp0KTpbXX0sbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD91bihlLGVyKHQsMyksITAsITApOltdfSxuLmRyb3BXaGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD91bihlLGVyKHQsMyksITApOltdfSxuLmZpbGw9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bnVsbD09ZT8wOmUubGVuZ3RoO2lmKCFvKXJldHVybltdO2ZvcihuJiYibnVtYmVyIiE9dHlwZW9mIG4mJnNyKGUsdCxuKSYmKG49MCxyPW8pLG89ZS5sZW5ndGgsMD4obj1ubyhuKSkmJihuPS1uPm8/MDpvK24pLDA+KHI9cj09PUt8fHI+bz9vOm5vKHIpKSYmKHIrPW8pLHI9bj5yPzA6cm8ocik7bjxyOyllW24rK109dDtyZXR1cm4gZX0sbi5maWx0ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oQWkoZSk/Yzp5dCkoZSxlcih0LDMpKX0sbi5mbGF0TWFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG10KFJyKGUsdCksMSl9LG4uZmxhdE1hcERlZXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbXQoUnIoZSx0KSxxKX0sbi5mbGF0TWFwRGVwdGg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPW49PT1LPzE6bm8obiksbXQoUnIoZSx0KSxuKX0sbi5mbGF0dGVuPWtyLG4uZmxhdHRlbkRlZXA9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP210KGUscSk6W119LG4uZmxhdHRlbkRlcHRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP210KGUsdD10PT09Sz8xOm5vKHQpKTpbXX0sbi5mbGlwPWZ1bmN0aW9uKGUpe3JldHVybiBVbihlLDUxMil9LG4uZmxvdz1idSxuLmZsb3dSaWdodD13dSxuLmZyb21QYWlycz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9LTEsbj1udWxsPT1lPzA6ZS5sZW5ndGgscj17fTsrK3Q8bjspe3ZhciBvPWVbdF07cltvWzBdXT1vWzFdfXJldHVybiByfSxuLmZ1bmN0aW9ucz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTpidChlLGxvKGUpKX0sbi5mdW5jdGlvbnNJbj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTpidChlLGNvKGUpKX0sbi5ncm91cEJ5PXdpLG4uaW5pdGlhbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZS5sZW5ndGg/WnQoZSwwLC0xKTpbXX0sbi5pbnRlcnNlY3Rpb249bmksbi5pbnRlcnNlY3Rpb25CeT1yaSxuLmludGVyc2VjdGlvbldpdGg9b2ksbi5pbnZlcnQ9ZXUsbi5pbnZlcnRCeT10dSxuLmludm9rZU1hcD1faSxuLml0ZXJhdGVlPWJvLG4ua2V5Qnk9RWksbi5rZXlzPWxvLG4ua2V5c0luPWNvLG4ubWFwPVJyLG4ubWFwS2V5cz1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiB0PWVyKHQsMyksdnQoZSwoZnVuY3Rpb24oZSxyLG8pe2l0KG4sdChlLHIsbyksZSl9KSksbn0sbi5tYXBWYWx1ZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtyZXR1cm4gdD1lcih0LDMpLHZ0KGUsKGZ1bmN0aW9uKGUscixvKXtpdChuLHIsdChlLHIsbykpfSkpLG59LG4ubWF0Y2hlcz1mdW5jdGlvbihlKXtyZXR1cm4gSXQobHQoZSwxKSl9LG4ubWF0Y2hlc1Byb3BlcnR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEF0KGUsbHQodCwxKSl9LG4ubWVtb2l6ZT1CcixuLm1lcmdlPXJ1LG4ubWVyZ2VXaXRoPW91LG4ubWV0aG9kPV91LG4ubWV0aG9kT2Y9RXUsbi5taXhpbj13byxuLm5lZ2F0ZT16cixuLm50aEFyZz1mdW5jdGlvbihlKXtyZXR1cm4gZT1ubyhlKSxZdCgoZnVuY3Rpb24odCl7cmV0dXJuIEJ0KHQsZSl9KSl9LG4ub21pdD1hdSxuLm9taXRCeT1mdW5jdGlvbihlLHQpe3JldHVybiBmbyhlLHpyKGVyKHQpKSl9LG4ub25jZT1mdW5jdGlvbihlKXtyZXR1cm4gQXIoMixlKX0sbi5vcmRlckJ5PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBudWxsPT1lP1tdOihBaSh0KXx8KHQ9bnVsbD09dD9bXTpbdF0pLEFpKG49cj9LOm4pfHwobj1udWxsPT1uP1tdOltuXSksenQoZSx0LG4pKX0sbi5vdmVyPU91LG4ub3ZlckFyZ3M9TWksbi5vdmVyRXZlcnk9a3Usbi5vdmVyU29tZT1DdSxuLnBhcnRpYWw9UGksbi5wYXJ0aWFsUmlnaHQ9Tmksbi5wYXJ0aXRpb249T2ksbi5waWNrPWl1LG4ucGlja0J5PWZvLG4ucHJvcGVydHk9RW8sbi5wcm9wZXJ0eU9mPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09ZT9LOnd0KGUsdCl9fSxuLnB1bGw9YWksbi5wdWxsQWxsPVNyLG4ucHVsbEFsbEJ5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGgmJnQmJnQubGVuZ3RoP3F0KGUsdCxlcihuLDIpKTplfSxuLnB1bGxBbGxXaXRoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGgmJnQmJnQubGVuZ3RoP3F0KGUsdCxLLG4pOmV9LG4ucHVsbEF0PWlpLG4ucmFuZ2U9eHUsbi5yYW5nZVJpZ2h0PVN1LG4ucmVhcmc9amksbi5yZWplY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oQWkoZSk/Yzp5dCkoZSx6cihlcih0LDMpKSl9LG4ucmVtb3ZlPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107aWYoIWV8fCFlLmxlbmd0aClyZXR1cm4gbjt2YXIgcj0tMSxvPVtdLGE9ZS5sZW5ndGg7Zm9yKHQ9ZXIodCwzKTsrK3I8YTspe3ZhciBpPWVbcl07dChpLHIsZSkmJihuLnB1c2goaSksby5wdXNoKHIpKX1yZXR1cm4gVnQoZSxvKSxufSxuLnJlc3Q9ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgam8oIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTtyZXR1cm4gWXQoZSx0PXQ9PT1LP3Q6bm8odCkpfSxuLnJldmVyc2U9RHIsbi5zYW1wbGVTaXplPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD0obj9zcihlLHQsbik6dD09PUspPzE6bm8odCksKEFpKGUpP3FlOkd0KShlLHQpfSxuLnNldD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWU/ZTpRdChlLHQsbil9LG4uc2V0V2l0aD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOkssbnVsbD09ZT9lOlF0KGUsdCxuLHIpfSxuLnNodWZmbGU9ZnVuY3Rpb24oZSl7cmV0dXJuKEFpKGUpP1VlOkp0KShlKX0sbi5zbGljZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiByPyhuJiYibnVtYmVyIiE9dHlwZW9mIG4mJnNyKGUsdCxuKT8odD0wLG49cik6KHQ9bnVsbD09dD8wOm5vKHQpLG49bj09PUs/cjpubyhuKSksWnQoZSx0LG4pKTpbXX0sbi5zb3J0Qnk9a2ksbi5zb3J0ZWRVbmlxPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLmxlbmd0aD90bihlKTpbXX0sbi5zb3J0ZWRVbmlxQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/dG4oZSxlcih0LDIpKTpbXX0sbi5zcGxpdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4mJiJudW1iZXIiIT10eXBlb2YgbiYmc3IoZSx0LG4pJiYodD1uPUspLChuPW49PT1LPzQyOTQ5NjcyOTU6bj4+PjApPyhlPWlvKGUpKSYmKCJzdHJpbmciPT10eXBlb2YgdHx8bnVsbCE9dCYmIXFpKHQpKSYmKCEodD1ybih0KSkmJk1lLnRlc3QoZSkpP2huKHooZSksMCxuKTplLnNwbGl0KHQsbik6W119LG4uc3ByZWFkPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IGpvKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7cmV0dXJuIHQ9bnVsbD09dD8wOnBhKG5vKHQpLDApLFl0KChmdW5jdGlvbihuKXt2YXIgcj1uW3RdO3JldHVybiBuPWhuKG4sMCx0KSxyJiZoKG4sciksYShlLHRoaXMsbil9KSl9LG4udGFpbD1mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/WnQoZSwxLHQpOltdfSxuLnRha2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlJiZlLmxlbmd0aD9adChlLDAsMD4odD1ufHx0PT09Sz8xOm5vKHQpKT8wOnQpOltdfSxuLnRha2VSaWdodD1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiByP1p0KGUsMD4odD1yLSh0PW58fHQ9PT1LPzE6bm8odCkpKT8wOnQscik6W119LG4udGFrZVJpZ2h0V2hpbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/dW4oZSxlcih0LDMpLCExLCEwKTpbXX0sbi50YWtlV2hpbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/dW4oZSxlcih0LDMpKTpbXX0sbi50YXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKSxlfSxuLnRocm90dGxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0hMCxvPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBqbygiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3JldHVybiBHcihuKSYmKHI9ImxlYWRpbmciaW4gbj8hIW4ubGVhZGluZzpyLG89InRyYWlsaW5nImluIG4/ISFuLnRyYWlsaW5nOm8pLEZyKGUsdCx7bGVhZGluZzpyLG1heFdhaXQ6dCx0cmFpbGluZzpvfSl9LG4udGhydT1OcixuLnRvQXJyYXk9ZW8sbi50b1BhaXJzPXV1LG4udG9QYWlyc0luPXN1LG4udG9QYXRoPWZ1bmN0aW9uKGUpe3JldHVybiBBaShlKT9wKGUsZ3IpOlhyKGUpP1tlXTpfbigkYShpbyhlKSkpfSxuLnRvUGxhaW5PYmplY3Q9YW8sbi50cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4pe3ZhciByPUFpKGUpLG89cnx8QmkoZSl8fFVpKGUpO2lmKHQ9ZXIodCw0KSxudWxsPT1uKXt2YXIgYT1lJiZlLmNvbnN0cnVjdG9yO249bz9yP25ldyBhOltdOkdyKGUpJiZXcihhKT9SYShRbyhlKSk6e319cmV0dXJuKG8/dTp2dCkoZSwoZnVuY3Rpb24oZSxyLG8pe3JldHVybiB0KG4sZSxyLG8pfSkpLG59LG4udW5hcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIElyKGUsMSl9LG4udW5pb249dWksbi51bmlvbkJ5PXNpLG4udW5pb25XaXRoPWxpLG4udW5pcT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGg/b24oZSk6W119LG4udW5pcUJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP29uKGUsZXIodCwyKSk6W119LG4udW5pcVdpdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkssZSYmZS5sZW5ndGg/b24oZSxLLHQpOltdfSxuLnVuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWV8fGFuKGUsdCl9LG4udW56aXA9VHIsbi51bnppcFdpdGg9TXIsbi51cGRhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsPT1lP2U6UXQoZSx0LGRuKG4pKHd0KGUsdCkpLHZvaWQgMCl9LG4udXBkYXRlV2l0aD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOkssbnVsbCE9ZSYmKGU9UXQoZSx0LGRuKG4pKHd0KGUsdCkpLHIpKSxlfSxuLnZhbHVlcz1wbyxuLnZhbHVlc0luPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP1tdOk0oZSxjbyhlKSl9LG4ud2l0aG91dD1jaSxuLndvcmRzPW1vLG4ud3JhcD1mdW5jdGlvbihlLHQpe3JldHVybiBQaShkbih0KSxlKX0sbi54b3I9Zmksbi54b3JCeT1kaSxuLnhvcldpdGg9cGksbi56aXA9aGksbi56aXBPYmplY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gY24oZXx8W10sdHx8W10sJGUpfSxuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gY24oZXx8W10sdHx8W10sUXQpfSxuLnppcFdpdGg9eWksbi5lbnRyaWVzPXV1LG4uZW50cmllc0luPXN1LG4uZXh0ZW5kPUdpLG4uZXh0ZW5kV2l0aD1RaSx3byhuLG4pLG4uYWRkPUR1LG4uYXR0ZW1wdD12dSxuLmNhbWVsQ2FzZT1sdSxuLmNhcGl0YWxpemU9aG8sbi5jZWlsPVR1LG4uY2xhbXA9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPT09SyYmKG49dCx0PUspLG4hPT1LJiYobj0obj1vbyhuKSk9PW4/bjowKSx0IT09SyYmKHQ9KHQ9b28odCkpPT10P3Q6MCksc3Qob28oZSksdCxuKX0sbi5jbG9uZT1mdW5jdGlvbihlKXtyZXR1cm4gbHQoZSw0KX0sbi5jbG9uZURlZXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGx0KGUsNSl9LG4uY2xvbmVEZWVwV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiBsdChlLDUsdD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkspfSxuLmNsb25lV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiBsdChlLDQsdD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkspfSxuLmNvbmZvcm1zVG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09dHx8Y3QoZSx0LGxvKHQpKX0sbi5kZWJ1cnI9eW8sbi5kZWZhdWx0VG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZXx8ZSE9ZT90OmV9LG4uZGl2aWRlPU11LG4uZW5kc1dpdGg9ZnVuY3Rpb24oZSx0LG4pe2U9aW8oZSksdD1ybih0KTt2YXIgcj1lLmxlbmd0aDtyPW49bj09PUs/cjpzdChubyhuKSwwLHIpO3JldHVybiAwPD0obi09dC5sZW5ndGgpJiZlLnNsaWNlKG4scik9PXR9LG4uZXE9S3Isbi5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9aW8oZSkpJiZaLnRlc3QoZSk/ZS5yZXBsYWNlKFEsZXQpOmV9LG4uZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGUpe3JldHVybihlPWlvKGUpKSYmYWUudGVzdChlKT9lLnJlcGxhY2Uob2UsIlxcJCYiKTplfSxuLmV2ZXJ5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1BaShlKT9sOnB0O3JldHVybiBuJiZzcihlLHQsbikmJih0PUspLHIoZSxlcih0LDMpKX0sbi5maW5kPWdpLG4uZmluZEluZGV4PUVyLG4uZmluZEtleT1mdW5jdGlvbihlLHQpe3JldHVybiBnKGUsZXIodCwzKSx2dCl9LG4uZmluZExhc3Q9Ymksbi5maW5kTGFzdEluZGV4PU9yLG4uZmluZExhc3RLZXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZyhlLGVyKHQsMyksZ3QpfSxuLmZsb29yPVB1LG4uZm9yRWFjaD1qcixuLmZvckVhY2hSaWdodD1McixuLmZvckluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/ZTpGYShlLGVyKHQsMyksY28pfSxuLmZvckluUmlnaHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZT9lOkJhKGUsZXIodCwzKSxjbyl9LG4uZm9yT3duPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnZ0KGUsZXIodCwzKSl9LG4uZm9yT3duUmlnaHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZ3QoZSxlcih0LDMpKX0sbi5nZXQ9dW8sbi5ndD1MaSxuLmd0ZT1SaSxuLmhhcz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZvcihlLHQsa3QpfSxuLmhhc0luPXNvLG4uaGVhZD1DcixuLmlkZW50aXR5PWdvLG4uaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGU9cXIoZSk/ZTpwbyhlKSxuPW4mJiFyP25vKG4pOjAscj1lLmxlbmd0aCwwPm4mJihuPXBhKHIrbiwwKSksJHIoZSk/bjw9ciYmLTE8ZS5pbmRleE9mKHQsbik6ISFyJiYtMTx3KGUsdCxuKX0sbi5pbmRleE9mPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/KDA+KG49bnVsbD09bj8wOm5vKG4pKSYmKG49cGEocituLDApKSx3KGUsdCxuKSk6LTF9LG4uaW5SYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ9dG8odCksbj09PUs/KG49dCx0PTApOm49dG8obiksKGU9b28oZSkpPj1oYSh0LG4pJiZlPHBhKHQsbil9LG4uaW52b2tlPW51LG4uaXNBcmd1bWVudHM9SWksbi5pc0FycmF5PUFpLG4uaXNBcnJheUJ1ZmZlcj1GaSxuLmlzQXJyYXlMaWtlPXFyLG4uaXNBcnJheUxpa2VPYmplY3Q9VnIsbi5pc0Jvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV8fFFyKGUpJiYiW29iamVjdCBCb29sZWFuXSI9PUV0KGUpfSxuLmlzQnVmZmVyPUJpLG4uaXNEYXRlPXppLG4uaXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBRcihlKSYmMT09PWUubm9kZVR5cGUmJiFacihlKX0sbi5pc0VtcHR5PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuITA7aWYocXIoZSkmJihBaShlKXx8InN0cmluZyI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZS5zcGxpY2V8fEJpKGUpfHxVaShlKXx8SWkoZSkpKXJldHVybiFlLmxlbmd0aDt2YXIgdD1IYShlKTtpZigiW29iamVjdCBNYXBdIj09dHx8IltvYmplY3QgU2V0XSI9PXQpcmV0dXJuIWUuc2l6ZTtpZihmcihlKSlyZXR1cm4hanQoZSkubGVuZ3RoO2Zvcih2YXIgbiBpbiBlKWlmKEZvLmNhbGwoZSxuKSlyZXR1cm4hMTtyZXR1cm4hMH0sbi5pc0VxdWFsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFR0KGUsdCl9LG4uaXNFcXVhbFdpdGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPShuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246Syk/bihlLHQpOks7cmV0dXJuIHI9PT1LP1R0KGUsdCxLLG4pOiEhcn0sbi5pc0Vycm9yPVVyLG4uaXNGaW5pdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZjYShlKX0sbi5pc0Z1bmN0aW9uPVdyLG4uaXNJbnRlZ2VyPVlyLG4uaXNMZW5ndGg9SHIsbi5pc01hcD1LaSxuLmlzTWF0Y2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR8fE10KGUsdCxucih0KSl9LG4uaXNNYXRjaFdpdGg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246SyxNdChlLHQsbnIodCksbil9LG4uaXNOYU49ZnVuY3Rpb24oZSl7cmV0dXJuIEpyKGUpJiZlIT0rZX0sbi5pc05hdGl2ZT1mdW5jdGlvbihlKXtpZihHYShlKSl0aHJvdyBuZXcgU28oIlVuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLiIpO3JldHVybiBQdChlKX0sbi5pc05pbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZX0sbi5pc051bGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfSxuLmlzTnVtYmVyPUpyLG4uaXNPYmplY3Q9R3Isbi5pc09iamVjdExpa2U9UXIsbi5pc1BsYWluT2JqZWN0PVpyLG4uaXNSZWdFeHA9cWksbi5pc1NhZmVJbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiBZcihlKSYmLTkwMDcxOTkyNTQ3NDA5OTE8PWUmJjkwMDcxOTkyNTQ3NDA5OTE+PWV9LG4uaXNTZXQ9Vmksbi5pc1N0cmluZz0kcixuLmlzU3ltYm9sPVhyLG4uaXNUeXBlZEFycmF5PVVpLG4uaXNVbmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1LfSxuLmlzV2Vha01hcD1mdW5jdGlvbihlKXtyZXR1cm4gUXIoZSkmJiJbb2JqZWN0IFdlYWtNYXBdIj09SGEoZSl9LG4uaXNXZWFrU2V0PWZ1bmN0aW9uKGUpe3JldHVybiBRcihlKSYmIltvYmplY3QgV2Vha1NldF0iPT1FdChlKX0sbi5qb2luPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/IiI6ZmEuY2FsbChlLHQpfSxuLmtlYmFiQ2FzZT1jdSxuLmxhc3Q9eHIsbi5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKCFyKXJldHVybi0xO3ZhciBvPXI7aWYobiE9PUsmJihvPTA+KG89bm8obikpP3BhKHIrbywwKTpoYShvLHItMSkpLHQ9PXQpe2ZvcihuPW8rMTtuLS0mJmVbbl0hPT10Oyk7ZT1ufWVsc2UgZT1iKGUsRSxvLCEwKTtyZXR1cm4gZX0sbi5sb3dlckNhc2U9ZnUsbi5sb3dlckZpcnN0PWR1LG4ubHQ9V2ksbi5sdGU9WWksbi5tYXg9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2h0KGUsZ28sT3QpOkt9LG4ubWF4Qnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/aHQoZSxlcih0LDIpLE90KTpLfSxuLm1lYW49ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSxnbyl9LG4ubWVhbkJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE8oZSxlcih0LDIpKX0sbi5taW49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2h0KGUsZ28sTHQpOkt9LG4ubWluQnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmZS5sZW5ndGg/aHQoZSxlcih0LDIpLEx0KTpLfSxuLnN0dWJBcnJheT1PbyxuLnN0dWJGYWxzZT1rbyxuLnN0dWJPYmplY3Q9ZnVuY3Rpb24oKXtyZXR1cm57fX0sbi5zdHViU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LG4uc3R1YlRydWU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sbi5tdWx0aXBseT1OdSxuLm50aD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9CdChlLG5vKHQpKTpLfSxuLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gemUuXz09PXRoaXMmJih6ZS5fPVZvKSx0aGlzfSxuLm5vb3A9X28sbi5ub3c9Q2ksbi5wYWQ9ZnVuY3Rpb24oZSx0LG4pe2U9aW8oZSk7dmFyIHI9KHQ9bm8odCkpP0IoZSk6MDtyZXR1cm4hdHx8cj49dD9lOkFuKHVhKHQ9KHQtcikvMiksbikrZStBbihpYSh0KSxuKX0sbi5wYWRFbmQ9ZnVuY3Rpb24oZSx0LG4pe2U9aW8oZSk7dmFyIHI9KHQ9bm8odCkpP0IoZSk6MDtyZXR1cm4gdCYmcjx0P2UrQW4odC1yLG4pOmV9LG4ucGFkU3RhcnQ9ZnVuY3Rpb24oZSx0LG4pe2U9aW8oZSk7dmFyIHI9KHQ9bm8odCkpP0IoZSk6MDtyZXR1cm4gdCYmcjx0P0FuKHQtcixuKStlOmV9LG4ucGFyc2VJbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBufHxudWxsPT10P3Q9MDp0JiYodD0rdCksbWEoaW8oZSkucmVwbGFjZSh1ZSwiIiksdHx8MCl9LG4ucmFuZG9tPWZ1bmN0aW9uKGUsdCxuKXtpZihuJiYiYm9vbGVhbiIhPXR5cGVvZiBuJiZzcihlLHQsbikmJih0PW49Syksbj09PUsmJigiYm9vbGVhbiI9PXR5cGVvZiB0PyhuPXQsdD1LKToiYm9vbGVhbiI9PXR5cGVvZiBlJiYobj1lLGU9SykpLGU9PT1LJiZ0PT09Sz8oZT0wLHQ9MSk6KGU9dG8oZSksdD09PUs/KHQ9ZSxlPTApOnQ9dG8odCkpLGU+dCl7dmFyIHI9ZTtlPXQsdD1yfXJldHVybiBufHxlJTF8fHQlMT8obj12YSgpLGhhKGUrbioodC1lK0llKCIxZS0iKygobisiIikubGVuZ3RoLTEpKSksdCkpOlV0KGUsdCl9LG4ucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1BaShlKT95Ongsbz0zPmFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIHIoZSxlcih0LDQpLG4sbyxJYSl9LG4ucmVkdWNlUmlnaHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPUFpKGUpP206eCxvPTM+YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcihlLGVyKHQsNCksbixvLEFhKX0sbi5yZXBlYXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PShuP3NyKGUsdCxuKTp0PT09Syk/MTpubyh0KSxXdChpbyhlKSx0KX0sbi5yZXBsYWNlPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHQ9aW8oZVswXSk7cmV0dXJuIDM+ZS5sZW5ndGg/dDp0LnJlcGxhY2UoZVsxXSxlWzJdKX0sbi5yZXN1bHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPS0xLG89KHQ9cG4odCxlKSkubGVuZ3RoO2ZvcihvfHwobz0xLGU9Syk7KytyPG87KXt2YXIgYT1udWxsPT1lP0s6ZVtncih0W3JdKV07YT09PUsmJihyPW8sYT1uKSxlPVdyKGEpP2EuY2FsbChlKTphfXJldHVybiBlfSxuLnJvdW5kPWp1LG4ucnVuSW5Db250ZXh0PWUsbi5zYW1wbGU9ZnVuY3Rpb24oZSl7cmV0dXJuKEFpKGUpP0tlOkh0KShlKX0sbi5zaXplPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIDA7aWYocXIoZSkpcmV0dXJuICRyKGUpP0IoZSk6ZS5sZW5ndGg7dmFyIHQ9SGEoZSk7cmV0dXJuIltvYmplY3QgTWFwXSI9PXR8fCJbb2JqZWN0IFNldF0iPT10P2Uuc2l6ZTpqdChlKS5sZW5ndGh9LG4uc25ha2VDYXNlPXB1LG4uc29tZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9QWkoZSk/djokdDtyZXR1cm4gbiYmc3IoZSx0LG4pJiYodD1LKSxyKGUsZXIodCwzKSl9LG4uc29ydGVkSW5kZXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWHQoZSx0KX0sbi5zb3J0ZWRJbmRleEJ5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZW4oZSx0LGVyKG4sMikpfSxuLnNvcnRlZEluZGV4T2Y9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYobil7dmFyIHI9WHQoZSx0KTtpZihyPG4mJktyKGVbcl0sdCkpcmV0dXJuIHJ9cmV0dXJuLTF9LG4uc29ydGVkTGFzdEluZGV4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFh0KGUsdCwhMCl9LG4uc29ydGVkTGFzdEluZGV4Qnk9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlbihlLHQsZXIobiwyKSwhMCl9LG4uc29ydGVkTGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT1lJiZlLmxlbmd0aCl7dmFyIG49WHQoZSx0LCEwKS0xO2lmKEtyKGVbbl0sdCkpcmV0dXJuIG59cmV0dXJuLTF9LG4uc3RhcnRDYXNlPWh1LG4uc3RhcnRzV2l0aD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9aW8oZSksbj1udWxsPT1uPzA6c3Qobm8obiksMCxlLmxlbmd0aCksdD1ybih0KSxlLnNsaWNlKG4sbit0Lmxlbmd0aCk9PXR9LG4uc3VidHJhY3Q9THUsbi5zdW09ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoP1MoZSxnbyk6MH0sbi5zdW1CeT1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9TKGUsZXIodCwyKSk6MH0sbi50ZW1wbGF0ZT1mdW5jdGlvbihlLHQscil7dmFyIG89bi50ZW1wbGF0ZVNldHRpbmdzO3ImJnNyKGUsdCxyKSYmKHQ9SyksZT1pbyhlKSx0PVFpKHt9LHQsbyxXbik7dmFyIGEsaSx1PWxvKHI9UWkoe30sdC5pbXBvcnRzLG8uaW1wb3J0cyxXbikpLHM9TShyLHUpLGw9MDtyPXQuaW50ZXJwb2xhdGV8fEVlO3ZhciBjPSJfX3ArPSciO3I9UG8oKHQuZXNjYXBlfHxFZSkuc291cmNlKyJ8IityLnNvdXJjZSsifCIrKHI9PT1lZT9oZTpFZSkuc291cmNlKyJ8IisodC5ldmFsdWF0ZXx8RWUpLnNvdXJjZSsifCQiLCJnIik7dmFyIGY9Rm8uY2FsbCh0LCJzb3VyY2VVUkwiKT8iLy8jIHNvdXJjZVVSTD0iKyh0LnNvdXJjZVVSTCsiIikucmVwbGFjZSgvW1xyXG5dL2csIiAiKSsiXG4iOiIiO2lmKGUucmVwbGFjZShyLChmdW5jdGlvbih0LG4scixvLHUscyl7cmV0dXJuIHJ8fChyPW8pLGMrPWUuc2xpY2UobCxzKS5yZXBsYWNlKE9lLEwpLG4mJihhPSEwLGMrPSInK19fZSgiK24rIikrJyIpLHUmJihpPSEwLGMrPSInOyIrdSsiO1xuX19wKz0nIiksciYmKGMrPSInKygoX190PSgiK3IrIikpPT1udWxsPycnOl9fdCkrJyIpLGw9cyt0Lmxlbmd0aCx0fSkpLGMrPSInOyIsKHQ9Rm8uY2FsbCh0LCJ2YXJpYWJsZSIpJiZ0LnZhcmlhYmxlKXx8KGM9IndpdGgob2JqKXsiK2MrIn0iKSxjPShpP2MucmVwbGFjZShXLCIiKTpjKS5yZXBsYWNlKFksIiQxIikucmVwbGFjZShILCIkMTsiKSxjPSJmdW5jdGlvbigiKyh0fHwib2JqIikrIil7IisodD8iIjoib2JqfHwob2JqPXt9KTsiKSsidmFyIF9fdCxfX3A9JyciKyhhPyIsX19lPV8uZXNjYXBlIjoiIikrKGk/IixfX2o9QXJyYXkucHJvdG90eXBlLmpvaW47ZnVuY3Rpb24gcHJpbnQoKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyl9IjoiOyIpK2MrInJldHVybiBfX3B9IiwodD12dSgoZnVuY3Rpb24oKXtyZXR1cm4gRG8odSxmKyJyZXR1cm4gIitjKS5hcHBseShLLHMpfSkpKS5zb3VyY2U9YyxVcih0KSl0aHJvdyB0O3JldHVybiB0fSxuLnRpbWVzPWZ1bmN0aW9uKGUsdCl7aWYoMT4oZT1ubyhlKSl8fDkwMDcxOTkyNTQ3NDA5OTE8ZSlyZXR1cm5bXTt2YXIgbj00Mjk0OTY3Mjk1LHI9aGEoZSw0Mjk0OTY3Mjk1KTtmb3IoZS09NDI5NDk2NzI5NSxyPUQocix0PWVyKHQpKTsrK248ZTspdChuKTtyZXR1cm4gcn0sbi50b0Zpbml0ZT10byxuLnRvSW50ZWdlcj1ubyxuLnRvTGVuZ3RoPXJvLG4udG9Mb3dlcj1mdW5jdGlvbihlKXtyZXR1cm4gaW8oZSkudG9Mb3dlckNhc2UoKX0sbi50b051bWJlcj1vbyxuLnRvU2FmZUludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/c3Qobm8oZSksLTkwMDcxOTkyNTQ3NDA5OTEsOTAwNzE5OTI1NDc0MDk5MSk6MD09PWU/ZTowfSxuLnRvU3RyaW5nPWlvLG4udG9VcHBlcj1mdW5jdGlvbihlKXtyZXR1cm4gaW8oZSkudG9VcHBlckNhc2UoKX0sbi50cmltPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4oZT1pbyhlKSkmJihufHx0PT09Syk/ZS5yZXBsYWNlKGllLCIiKTplJiYodD1ybih0KSk/aG4oZT16KGUpLHQ9TihlLG49eih0KSksbj1qKGUsbikrMSkuam9pbigiIik6ZX0sbi50cmltRW5kPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4oZT1pbyhlKSkmJihufHx0PT09Syk/ZS5yZXBsYWNlKHNlLCIiKTplJiYodD1ybih0KSk/aG4oZT16KGUpLDAsdD1qKGUseih0KSkrMSkuam9pbigiIik6ZX0sbi50cmltU3RhcnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybihlPWlvKGUpKSYmKG58fHQ9PT1LKT9lLnJlcGxhY2UodWUsIiIpOmUmJih0PXJuKHQpKT9obihlPXooZSksdD1OKGUseih0KSkpLmpvaW4oIiIpOmV9LG4udHJ1bmNhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0zMCxyPSIuLi4iO2lmKEdyKHQpKXt2YXIgbz0ic2VwYXJhdG9yImluIHQ/dC5zZXBhcmF0b3I6bztuPSJsZW5ndGgiaW4gdD9ubyh0Lmxlbmd0aCk6bixyPSJvbWlzc2lvbiJpbiB0P3JuKHQub21pc3Npb24pOnJ9dmFyIGE9KGU9aW8oZSkpLmxlbmd0aDtpZihNZS50ZXN0KGUpKXt2YXIgaT16KGUpO2E9aS5sZW5ndGh9aWYobj49YSlyZXR1cm4gZTtpZigxPihhPW4tQihyKSkpcmV0dXJuIHI7aWYobj1pP2huKGksMCxhKS5qb2luKCIiKTplLnNsaWNlKDAsYSksbz09PUspcmV0dXJuIG4rcjtpZihpJiYoYSs9bi5sZW5ndGgtYSkscWkobykpe2lmKGUuc2xpY2UoYSkuc2VhcmNoKG8pKXt2YXIgdT1uO2ZvcihvLmdsb2JhbHx8KG89UG8oby5zb3VyY2UsaW8oeWUuZXhlYyhvKSkrImciKSksby5sYXN0SW5kZXg9MDtpPW8uZXhlYyh1KTspdmFyIHM9aS5pbmRleDtuPW4uc2xpY2UoMCxzPT09Sz9hOnMpfX1lbHNlIGUuaW5kZXhPZihybihvKSxhKSE9YSYmKC0xPChvPW4ubGFzdEluZGV4T2YobykpJiYobj1uLnNsaWNlKDAsbykpKTtyZXR1cm4gbityfSxuLnVuZXNjYXBlPWZ1bmN0aW9uKGUpe3JldHVybihlPWlvKGUpKSYmSi50ZXN0KGUpP2UucmVwbGFjZShHLHR0KTplfSxuLnVuaXF1ZUlkPWZ1bmN0aW9uKGUpe3ZhciB0PSsrQm87cmV0dXJuIGlvKGUpK3R9LG4udXBwZXJDYXNlPXl1LG4udXBwZXJGaXJzdD1tdSxuLmVhY2g9anIsbi5lYWNoUmlnaHQ9THIsbi5maXJzdD1Dcix3byhuLGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIHZ0KG4sKGZ1bmN0aW9uKHQscil7Rm8uY2FsbChuLnByb3RvdHlwZSxyKXx8KGVbcl09dCl9KSksZX0oKSx7Y2hhaW46ITF9KSxuLlZFUlNJT049IjQuMTcuMTUiLHUoImJpbmQgYmluZEtleSBjdXJyeSBjdXJyeVJpZ2h0IHBhcnRpYWwgcGFydGlhbFJpZ2h0Ii5zcGxpdCgiICIpLChmdW5jdGlvbihlKXtuW2VdLnBsYWNlaG9sZGVyPW59KSksdShbImRyb3AiLCJ0YWtlIl0sKGZ1bmN0aW9uKGUsdCl7Qy5wcm90b3R5cGVbZV09ZnVuY3Rpb24obil7bj1uPT09Sz8xOnBhKG5vKG4pLDApO3ZhciByPXRoaXMuX19maWx0ZXJlZF9fJiYhdD9uZXcgQyh0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHIuX19maWx0ZXJlZF9fP3IuX190YWtlQ291bnRfXz1oYShuLHIuX190YWtlQ291bnRfXyk6ci5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpoYShuLDQyOTQ5NjcyOTUpLHR5cGU6ZSsoMD5yLl9fZGlyX18/IlJpZ2h0IjoiIil9KSxyfSxDLnByb3RvdHlwZVtlKyJSaWdodCJdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJldmVyc2UoKVtlXSh0KS5yZXZlcnNlKCl9fSkpLHUoWyJmaWx0ZXIiLCJtYXAiLCJ0YWtlV2hpbGUiXSwoZnVuY3Rpb24oZSx0KXt2YXIgbj10KzEscj0xPT1ufHwzPT1uO0MucHJvdG90eXBlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2xvbmUoKTtyZXR1cm4gdC5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOmVyKGUsMyksdHlwZTpufSksdC5fX2ZpbHRlcmVkX189dC5fX2ZpbHRlcmVkX198fHIsdH19KSksdShbImhlYWQiLCJsYXN0Il0sKGZ1bmN0aW9uKGUsdCl7dmFyIG49InRha2UiKyh0PyJSaWdodCI6IiIpO0MucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbbl0oMSkudmFsdWUoKVswXX19KSksdShbImluaXRpYWwiLCJ0YWlsIl0sKGZ1bmN0aW9uKGUsdCl7dmFyIG49ImRyb3AiKyh0PyIiOiJSaWdodCIpO0MucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19maWx0ZXJlZF9fP25ldyBDKHRoaXMpOnRoaXNbbl0oMSl9fSkpLEMucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoZ28pfSxDLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlcihlKS5oZWFkKCl9LEMucHJvdG90eXBlLmZpbmRMYXN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKGUpfSxDLnByb3RvdHlwZS5pbnZva2VNYXA9WXQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/bmV3IEModGhpcyk6dGhpcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBTdChuLGUsdCl9KSl9KSksQy5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlcih6cihlcihlKSkpfSxDLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe2U9bm8oZSk7dmFyIG49dGhpcztyZXR1cm4gbi5fX2ZpbHRlcmVkX18mJigwPGV8fDA+dCk/bmV3IEMobik6KDA+ZT9uPW4udGFrZVJpZ2h0KC1lKTplJiYobj1uLmRyb3AoZSkpLHQhPT1LJiYobj0wPih0PW5vKHQpKT9uLmRyb3BSaWdodCgtdCk6bi50YWtlKHQtZSkpLG4pfSxDLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKGUpLnJldmVyc2UoKX0sQy5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UoNDI5NDk2NzI5NSl9LHZ0KEMucHJvdG90eXBlLChmdW5jdGlvbihlLHQpe3ZhciByPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KHQpLGE9L14oPzpoZWFkfGxhc3QpJC8udGVzdCh0KSxpPW5bYT8idGFrZSIrKCJsYXN0Ij09dD8iUmlnaHQiOiIiKTp0XSx1PWF8fC9eZmluZC8udGVzdCh0KTtpJiYobi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3JldHVybiBlPWkuYXBwbHkobixoKFtlXSxsKSksYSYmcD9lWzBdOmV9dmFyIHM9dGhpcy5fX3dyYXBwZWRfXyxsPWE/WzFdOmFyZ3VtZW50cyxjPXMgaW5zdGFuY2VvZiBDLGY9bFswXSxkPWN8fEFpKHMpO2QmJnImJiJmdW5jdGlvbiI9PXR5cGVvZiBmJiYxIT1mLmxlbmd0aCYmKGM9ZD0hMSk7dmFyIHA9dGhpcy5fX2NoYWluX18seT0hIXRoaXMuX19hY3Rpb25zX18ubGVuZ3RoO2Y9dSYmIXAsYz1jJiYheTtyZXR1cm4hdSYmZD8ocz1jP3M6bmV3IEModGhpcyksKHM9ZS5hcHBseShzLGwpKS5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOk5yLGFyZ3M6W3RdLHRoaXNBcmc6S30pLG5ldyBvKHMscCkpOmYmJmM/ZS5hcHBseSh0aGlzLGwpOihzPXRoaXMudGhydSh0KSxmP2E/cy52YWx1ZSgpWzBdOnMudmFsdWUoKTpzKX0pfSkpLHUoInBvcCBwdXNoIHNoaWZ0IHNvcnQgc3BsaWNlIHVuc2hpZnQiLnNwbGl0KCIgIiksKGZ1bmN0aW9uKGUpe3ZhciB0PUxvW2VdLHI9L14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KGUpPyJ0YXAiOiJ0aHJ1IixvPS9eKD86cG9wfHNoaWZ0KSQvLnRlc3QoZSk7bi5wcm90b3R5cGVbZV09ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7aWYobyYmIXRoaXMuX19jaGFpbl9fKXt2YXIgbj10aGlzLnZhbHVlKCk7cmV0dXJuIHQuYXBwbHkoQWkobik/bjpbXSxlKX1yZXR1cm4gdGhpc1tyXSgoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkoQWkobik/bjpbXSxlKX0pKX19KSksdnQoQy5wcm90b3R5cGUsKGZ1bmN0aW9uKGUsdCl7dmFyIHI9blt0XTtpZihyKXt2YXIgbz1yLm5hbWUrIiI7Rm8uY2FsbCh4YSxvKXx8KHhhW29dPVtdKSx4YVtvXS5wdXNoKHtuYW1lOnQsZnVuYzpyfSl9fSkpLHhhW2puKEssMikubmFtZV09W3tuYW1lOiJ3cmFwcGVyIixmdW5jOkt9XSxDLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyBDKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBlLl9fYWN0aW9uc19fPV9uKHRoaXMuX19hY3Rpb25zX18pLGUuX19kaXJfXz10aGlzLl9fZGlyX18sZS5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sZS5fX2l0ZXJhdGVlc19fPV9uKHRoaXMuX19pdGVyYXRlZXNfXyksZS5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxlLl9fdmlld3NfXz1fbih0aGlzLl9fdmlld3NfXyksZX0sQy5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe2lmKHRoaXMuX19maWx0ZXJlZF9fKXt2YXIgZT1uZXcgQyh0aGlzKTtlLl9fZGlyX189LTEsZS5fX2ZpbHRlcmVkX189ITB9ZWxzZShlPXRoaXMuY2xvbmUoKSkuX19kaXJfXyo9LTE7cmV0dXJuIGV9LEMucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksbj10aGlzLl9fZGlyX18scj1BaSh0KSxvPTA+bixhPXI/dC5sZW5ndGg6MDtlPWE7Zm9yKHZhciBpPXRoaXMuX192aWV3c19fLHU9MCxzPS0xLGw9aS5sZW5ndGg7KytzPGw7KXt2YXIgYz1pW3NdLGY9Yy5zaXplO3N3aXRjaChjLnR5cGUpe2Nhc2UiZHJvcCI6dSs9ZjticmVhaztjYXNlImRyb3BSaWdodCI6ZS09ZjticmVhaztjYXNlInRha2UiOmU9aGEoZSx1K2YpO2JyZWFrO2Nhc2UidGFrZVJpZ2h0Ijp1PXBhKHUsZS1mKX19aWYoaT0oZT17c3RhcnQ6dSxlbmQ6ZX0pLnN0YXJ0LGU9KHU9ZS5lbmQpLWksaT1vP3U6aS0xLHM9KHU9dGhpcy5fX2l0ZXJhdGVlc19fKS5sZW5ndGgsbD0wLGM9aGEoZSx0aGlzLl9fdGFrZUNvdW50X18pLCFyfHwhbyYmYT09ZSYmYz09ZSlyZXR1cm4gc24odCx0aGlzLl9fYWN0aW9uc19fKTtyPVtdO2U6Zm9yKDtlLS0mJmw8Yzspe2ZvcihvPS0xLGE9dFtpKz1uXTsrK288czspe2Y9KGQ9dVtvXSkudHlwZTt2YXIgZD0oMCxkLml0ZXJhdGVlKShhKTtpZigyPT1mKWE9ZDtlbHNlIGlmKCFkKXtpZigxPT1mKWNvbnRpbnVlIGU7YnJlYWsgZX19cltsKytdPWF9cmV0dXJuIHJ9LG4ucHJvdG90eXBlLmF0PW1pLG4ucHJvdG90eXBlLmNoYWluPWZ1bmN0aW9uKCl7cmV0dXJuIFByKHRoaXMpfSxuLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8odGhpcy52YWx1ZSgpLHRoaXMuX19jaGFpbl9fKX0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3RoaXMuX192YWx1ZXNfXz09PUsmJih0aGlzLl9fdmFsdWVzX189ZW8odGhpcy52YWx1ZSgpKSk7dmFyIGU9dGhpcy5fX2luZGV4X18+PXRoaXMuX192YWx1ZXNfXy5sZW5ndGg7cmV0dXJue2RvbmU6ZSx2YWx1ZTplP0s6dGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdfX0sbi5wcm90b3R5cGUucGxhbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49dGhpcztuIGluc3RhbmNlb2Ygcjspe3ZhciBvPV9yKG4pO28uX19pbmRleF9fPTAsby5fX3ZhbHVlc19fPUssdD9hLl9fd3JhcHBlZF9fPW86dD1vO3ZhciBhPW87bj1uLl9fd3JhcHBlZF9ffXJldHVybiBhLl9fd3JhcHBlZF9fPWUsdH0sbi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX193cmFwcGVkX187cmV0dXJuIGUgaW5zdGFuY2VvZiBDPyh0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCYmKGU9bmV3IEModGhpcykpLChlPWUucmV2ZXJzZSgpKS5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOk5yLGFyZ3M6W0RyXSx0aGlzQXJnOkt9KSxuZXcgbyhlLHRoaXMuX19jaGFpbl9fKSk6dGhpcy50aHJ1KERyKX0sbi5wcm90b3R5cGUudG9KU09OPW4ucHJvdG90eXBlLnZhbHVlT2Y9bi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gc24odGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKX0sbi5wcm90b3R5cGUuZmlyc3Q9bi5wcm90b3R5cGUuaGVhZCxlYSYmKG4ucHJvdG90eXBlW2VhXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbn0oKTt6ZS5fPW50LHZvaWQgMD09PShvPWZ1bmN0aW9uKCl7cmV0dXJuIG50fS5jYWxsKHQsbix0LHIpKXx8KHIuZXhwb3J0cz1vKX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsbigieUxwaiIpLG4oIll1VGkiKShlKSl9LGlsV2E6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ2WXd1Iiksbz1uKCJKUGN2Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1lLmdldEJsb2NrTWFwKCksaT10LmdldFN0YXJ0S2V5KCksdT10LmdldFN0YXJ0T2Zmc2V0KCkscz10LmdldEVuZEtleSgpLGw9dC5nZXRFbmRPZmZzZXQoKSxjPWEuc2tpcFVudGlsKChmdW5jdGlvbihlLHQpe3JldHVybiB0PT09aX0pKS50YWtlVW50aWwoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9PT1zfSkpLnRvT3JkZXJlZE1hcCgpLm1lcmdlKG8uT3JkZXJlZE1hcChbW3MsYS5nZXQocyldXSkpLm1hcCgoZnVuY3Rpb24oZSx0KXt2YXIgbz10PT09aT91OjAsYT10PT09cz9sOmUuZ2V0TGVuZ3RoKCk7cmV0dXJuIHIoZSxvLGEsbil9KSk7cmV0dXJuIGUubWVyZ2Uoe2Jsb2NrTWFwOmEubWVyZ2UoYyksc2VsZWN0aW9uQmVmb3JlOnQsc2VsZWN0aW9uQWZ0ZXI6dH0pfX0saXVMcjpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89bigiMTd4OSIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9LGk9bigiNWY3biIpO3QuZGVmYXVsdD1hLmRlZmF1bHQub25lT2YoW2kuT1BFTl9ET1dOLGkuT1BFTl9VUF0pfSxqQllCOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPU1hdGgucm91bmQ7ZnVuY3Rpb24gbyhlKXt2YXIgdD1uZXcgRGF0ZShlKTtyZXR1cm4gdC5zZXRIb3VycygwLDAsMCwwKSx0fXQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuLGEsaSx1LHMsbD1yKCh0PSt0KS0oZT0rZSkpLGM9cihsLzFlMyksZj1yKGMvNjApLGQ9cihmLzYwKSxwPShuPWUsYT1vKHQpLGk9byhuKSx1PWEuZ2V0VGltZSgpLTZlNCphLmdldFRpbWV6b25lT2Zmc2V0KCkscz1pLmdldFRpbWUoKS02ZTQqaS5nZXRUaW1lem9uZU9mZnNldCgpLE1hdGgucm91bmQoKHUtcykvODY0ZTUpKSxoPXIocC83KSx5PTQwMCpwLzE0NjA5NyxtPXIoMTIqeSksdj1yKHkpO3JldHVybnttaWxsaXNlY29uZDpsLHNlY29uZDpjLCJzZWNvbmQtc2hvcnQiOmMsbWludXRlOmYsIm1pbnV0ZS1zaG9ydCI6Zixob3VyOmQsImhvdXItc2hvcnQiOmQsZGF5OnAsImRheS1zaG9ydCI6cCx3ZWVrOmgsIndlZWstc2hvcnQiOmgsbW9udGg6bSwibW9udGgtc2hvcnQiOm0seWVhcjp2LCJ5ZWFyLXNob3J0Ijp2fX19LGpDc2Q6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aXNJbWFnZTpmdW5jdGlvbihlKXtyZXR1cm4iaW1hZ2UiPT09byhlKVswXX0saXNKcGVnOmZ1bmN0aW9uKGUpe3ZhciB0PW8oZSk7cmV0dXJuIHIuaXNJbWFnZShlKSYmKCJqcGVnIj09PXRbMV18fCJwanBlZyI9PT10WzFdKX19O2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUuc3BsaXQoIi8iKX1lLmV4cG9ydHM9cn0sakg0eDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjNzT0oiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtlLnNldE1vZGUoImNvbXBvc2l0ZSIpLGUudXBkYXRlKHIuc2V0KGUuX2xhdGVzdEVkaXRvclN0YXRlLHtpbkNvbXBvc2l0aW9uTW9kZTohMH0pKSxlLl9vbkNvbXBvc2l0aW9uU3RhcnQodCl9fSxqS2U3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigieW9LdiIpO3QuYT1yLmF9LGpNWWE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxpPXYobigicTF0SSIpKSx1PXYobigiMTd4OSIpKSxzPXYobigiaThpNCIpKSxsPXYobigiRlVCQSIpKSxjPXYobigiVFNZUSIpKSxmPXYobigieGxmWiIpKSxkPXYobigicWlvZSIpKSxwPXYobigiS1ZtZyIpKSxoPXYobigiREpDZSIpKSx5PXYobigic2xkbSIpKSxtPXYobigiYzd6UCIpKTtmdW5jdGlvbiB2KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBnKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgYj1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsIT09ZSYmSlNPTi5zdHJpbmdpZnkoZSl8fCIifSx3PXUuZGVmYXVsdC5vbmVPZlR5cGUoW3UuZGVmYXVsdC5zdHJpbmcsdS5kZWZhdWx0Lm5vZGVdKSxfPTEsRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBuPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlKSk7cmV0dXJuWyJjbGVhclZhbHVlIiwiZm9jdXNPcHRpb24iLCJoYW5kbGVJbnB1dEJsdXIiLCJoYW5kbGVJbnB1dENoYW5nZSIsImhhbmRsZUlucHV0Rm9jdXMiLCJoYW5kbGVJbnB1dFZhbHVlQ2hhbmdlIiwiaGFuZGxlS2V5RG93biIsImhhbmRsZU1lbnVTY3JvbGwiLCJoYW5kbGVNb3VzZURvd24iLCJoYW5kbGVNb3VzZURvd25PbkFycm93IiwiaGFuZGxlTW91c2VEb3duT25NZW51IiwiaGFuZGxlUmVxdWlyZWQiLCJoYW5kbGVUb3VjaE91dHNpZGUiLCJoYW5kbGVUb3VjaE1vdmUiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlVG91Y2hFbmQiLCJoYW5kbGVUb3VjaEVuZENsZWFyVmFsdWUiLCJoYW5kbGVWYWx1ZUNsaWNrIiwiZ2V0T3B0aW9uTGFiZWwiLCJvbk9wdGlvblJlZiIsInJlbW92ZVZhbHVlIiwic2VsZWN0VmFsdWUiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gbltlXT1uW2VdLmJpbmQobil9KSksbi5zdGF0ZT17aW5wdXRWYWx1ZToiIixpc0ZvY3VzZWQ6ITEsaXNPcGVuOiExLGlzUHNldWRvRm9jdXNlZDohMSxyZXF1aXJlZDohMX0sbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToiY29tcG9uZW50V2lsbE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2luc3RhbmNlUHJlZml4PSJyZWFjdC1zZWxlY3QtIisodGhpcy5wcm9wcy5pbnN0YW5jZUlkfHwrK18pKyItIjt2YXIgZT10aGlzLmdldFZhbHVlQXJyYXkodGhpcy5wcm9wcy52YWx1ZSk7dGhpcy5wcm9wcy5yZXF1aXJlZCYmdGhpcy5zZXRTdGF0ZSh7cmVxdWlyZWQ6dGhpcy5oYW5kbGVSZXF1aXJlZChlWzBdLHRoaXMucHJvcHMubXVsdGkpfSl9fSx7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByb3BzLmF1dG9mb2N1cyYmdGhpcy5mb2N1cygpfX0se2tleToiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRWYWx1ZUFycmF5KGUudmFsdWUsZSk7ZS5yZXF1aXJlZD90aGlzLnNldFN0YXRlKHtyZXF1aXJlZDp0aGlzLmhhbmRsZVJlcXVpcmVkKHRbMF0sZS5tdWx0aSl9KTp0aGlzLnByb3BzLnJlcXVpcmVkJiZ0aGlzLnNldFN0YXRlKHtyZXF1aXJlZDohMX0pfX0se2tleToiY29tcG9uZW50V2lsbFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZih0LmlzT3BlbiE9PXRoaXMuc3RhdGUuaXNPcGVuKXt0aGlzLnRvZ2dsZVRvdWNoT3V0c2lkZUV2ZW50KHQuaXNPcGVuKTt2YXIgbj10LmlzT3Blbj9lLm9uT3BlbjplLm9uQ2xvc2U7biYmbigpfX19LHtrZXk6ImNvbXBvbmVudERpZFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZih0aGlzLm1lbnUmJnRoaXMuZm9jdXNlZCYmdGhpcy5zdGF0ZS5pc09wZW4mJiF0aGlzLmhhc1Njcm9sbGVkVG9PcHRpb24pe3ZhciBuPXMuZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzLmZvY3VzZWQpO3MuZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzLm1lbnUpLnNjcm9sbFRvcD1uLm9mZnNldFRvcCx0aGlzLmhhc1Njcm9sbGVkVG9PcHRpb249ITB9ZWxzZSB0aGlzLnN0YXRlLmlzT3Blbnx8KHRoaXMuaGFzU2Nyb2xsZWRUb09wdGlvbj0hMSk7aWYodGhpcy5fc2Nyb2xsVG9Gb2N1c2VkT3B0aW9uT25VcGRhdGUmJnRoaXMuZm9jdXNlZCYmdGhpcy5tZW51KXt0aGlzLl9zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZT0hMTt2YXIgcj1zLmRlZmF1bHQuZmluZERPTU5vZGUodGhpcy5mb2N1c2VkKSxvPXMuZGVmYXVsdC5maW5kRE9NTm9kZSh0aGlzLm1lbnUpLGE9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YS5ib3R0b20+aS5ib3R0b20/by5zY3JvbGxUb3A9ci5vZmZzZXRUb3Arci5jbGllbnRIZWlnaHQtby5vZmZzZXRIZWlnaHQ6YS50b3A8aS50b3AmJihvLnNjcm9sbFRvcD1yLm9mZnNldFRvcCl9aWYodGhpcy5wcm9wcy5zY3JvbGxNZW51SW50b1ZpZXcmJnRoaXMubWVudUNvbnRhaW5lcil7dmFyIHU9dGhpcy5tZW51Q29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3dpbmRvdy5pbm5lckhlaWdodDx1LmJvdHRvbSt0aGlzLnByb3BzLm1lbnVCdWZmZXImJndpbmRvdy5zY3JvbGxCeSgwLHUuYm90dG9tK3RoaXMucHJvcHMubWVudUJ1ZmZlci13aW5kb3cuaW5uZXJIZWlnaHQpfWUuZGlzYWJsZWQhPT10aGlzLnByb3BzLmRpc2FibGVkJiYodGhpcy5zZXRTdGF0ZSh7aXNGb2N1c2VkOiExfSksdGhpcy5jbG9zZU1lbnUoKSl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXshZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZG9jdW1lbnQuZGV0YWNoRXZlbnQ/ZG9jdW1lbnQuZGV0YWNoRXZlbnQoIm9udG91Y2hzdGFydCIsdGhpcy5oYW5kbGVUb3VjaE91dHNpZGUpOmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuaGFuZGxlVG91Y2hPdXRzaWRlKX19LHtrZXk6InRvZ2dsZVRvdWNoT3V0c2lkZUV2ZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtlPyFkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiZkb2N1bWVudC5hdHRhY2hFdmVudD9kb2N1bWVudC5hdHRhY2hFdmVudCgib250b3VjaHN0YXJ0Iix0aGlzLmhhbmRsZVRvdWNoT3V0c2lkZSk6ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5oYW5kbGVUb3VjaE91dHNpZGUpOiFkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyJiZkb2N1bWVudC5kZXRhY2hFdmVudD9kb2N1bWVudC5kZXRhY2hFdmVudCgib250b3VjaHN0YXJ0Iix0aGlzLmhhbmRsZVRvdWNoT3V0c2lkZSk6ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5oYW5kbGVUb3VjaE91dHNpZGUpfX0se2tleToiaGFuZGxlVG91Y2hPdXRzaWRlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLndyYXBwZXImJiF0aGlzLndyYXBwZXIuY29udGFpbnMoZS50YXJnZXQpJiZ0aGlzLmNsb3NlTWVudSgpfX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbnB1dCYmdGhpcy5pbnB1dC5mb2N1cygpfX0se2tleToiYmx1cklucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5wdXQmJnRoaXMuaW5wdXQuYmx1cigpfX0se2tleToiaGFuZGxlVG91Y2hNb3ZlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmRyYWdnaW5nPSEwfX0se2tleToiaGFuZGxlVG91Y2hTdGFydCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5kcmFnZ2luZz0hMX19LHtrZXk6ImhhbmRsZVRvdWNoRW5kIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmRyYWdnaW5nfHx0aGlzLmhhbmRsZU1vdXNlRG93bihlKX19LHtrZXk6ImhhbmRsZVRvdWNoRW5kQ2xlYXJWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5kcmFnZ2luZ3x8dGhpcy5jbGVhclZhbHVlKGUpfX0se2tleToiaGFuZGxlTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihlKXtpZighKHRoaXMucHJvcHMuZGlzYWJsZWR8fCJtb3VzZWRvd24iPT09ZS50eXBlJiYwIT09ZS5idXR0b24pJiYiSU5QVVQiIT09ZS50YXJnZXQudGFnTmFtZSl7aWYoZS5zdG9wUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksIXRoaXMucHJvcHMuc2VhcmNoYWJsZSlyZXR1cm4gdGhpcy5mb2N1cygpLHRoaXMuc2V0U3RhdGUoe2lzT3BlbjohdGhpcy5zdGF0ZS5pc09wZW59KTtpZih0aGlzLnN0YXRlLmlzRm9jdXNlZCl7dGhpcy5mb2N1cygpO3ZhciB0PXRoaXMuaW5wdXQ7ImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0SW5wdXQmJih0PXQuZ2V0SW5wdXQoKSksdC52YWx1ZT0iIix0aGlzLnNldFN0YXRlKHtpc09wZW46ITAsaXNQc2V1ZG9Gb2N1c2VkOiExfSl9ZWxzZSB0aGlzLl9vcGVuQWZ0ZXJGb2N1cz10aGlzLnByb3BzLm9wZW5PbkNsaWNrLHRoaXMuZm9jdXMoKX19fSx7a2V5OiJoYW5kbGVNb3VzZURvd25PbkFycm93Iix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnByb3BzLmRpc2FibGVkfHwibW91c2Vkb3duIj09PWUudHlwZSYmMCE9PWUuYnV0dG9ufHx0aGlzLnN0YXRlLmlzT3BlbiYmKGUuc3RvcFByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2VNZW51KCkpfX0se2tleToiaGFuZGxlTW91c2VEb3duT25NZW51Iix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnByb3BzLmRpc2FibGVkfHwibW91c2Vkb3duIj09PWUudHlwZSYmMCE9PWUuYnV0dG9ufHwoZS5zdG9wUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fb3BlbkFmdGVyRm9jdXM9ITAsdGhpcy5mb2N1cygpKX19LHtrZXk6ImNsb3NlTWVudSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByb3BzLm9uQ2xvc2VSZXNldHNJbnB1dD90aGlzLnNldFN0YXRlKHtpc09wZW46ITEsaXNQc2V1ZG9Gb2N1c2VkOnRoaXMuc3RhdGUuaXNGb2N1c2VkJiYhdGhpcy5wcm9wcy5tdWx0aSxpbnB1dFZhbHVlOnRoaXMuaGFuZGxlSW5wdXRWYWx1ZUNoYW5nZSgiIil9KTp0aGlzLnNldFN0YXRlKHtpc09wZW46ITEsaXNQc2V1ZG9Gb2N1c2VkOnRoaXMuc3RhdGUuaXNGb2N1c2VkJiYhdGhpcy5wcm9wcy5tdWx0aX0pLHRoaXMuaGFzU2Nyb2xsZWRUb09wdGlvbj0hMX19LHtrZXk6ImhhbmRsZUlucHV0Rm9jdXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnByb3BzLmRpc2FibGVkKXt2YXIgdD10aGlzLnN0YXRlLmlzT3Blbnx8dGhpcy5fb3BlbkFmdGVyRm9jdXN8fHRoaXMucHJvcHMub3Blbk9uRm9jdXM7dGhpcy5wcm9wcy5vbkZvY3VzJiZ0aGlzLnByb3BzLm9uRm9jdXMoZSksdGhpcy5zZXRTdGF0ZSh7aXNGb2N1c2VkOiEwLGlzT3Blbjp0fSksdGhpcy5fb3BlbkFmdGVyRm9jdXM9ITF9fX0se2tleToiaGFuZGxlSW5wdXRCbHVyIix2YWx1ZTpmdW5jdGlvbihlKXtpZighdGhpcy5tZW51fHx0aGlzLm1lbnUhPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYhdGhpcy5tZW51LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKXt0aGlzLnByb3BzLm9uQmx1ciYmdGhpcy5wcm9wcy5vbkJsdXIoZSk7dmFyIHQ9e2lzRm9jdXNlZDohMSxpc09wZW46ITEsaXNQc2V1ZG9Gb2N1c2VkOiExfTt0aGlzLnByb3BzLm9uQmx1clJlc2V0c0lucHV0JiYodC5pbnB1dFZhbHVlPXRoaXMuaGFuZGxlSW5wdXRWYWx1ZUNoYW5nZSgiIikpLHRoaXMuc2V0U3RhdGUodCl9ZWxzZSB0aGlzLmZvY3VzKCl9fSx7a2V5OiJoYW5kbGVJbnB1dENoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQudmFsdWU7dGhpcy5zdGF0ZS5pbnB1dFZhbHVlIT09ZS50YXJnZXQudmFsdWUmJih0PXRoaXMuaGFuZGxlSW5wdXRWYWx1ZUNoYW5nZSh0KSksdGhpcy5zZXRTdGF0ZSh7aXNPcGVuOiEwLGlzUHNldWRvRm9jdXNlZDohMSxpbnB1dFZhbHVlOnR9KX19LHtrZXk6ImhhbmRsZUlucHV0VmFsdWVDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJvcHMub25JbnB1dENoYW5nZSl7dmFyIHQ9dGhpcy5wcm9wcy5vbklucHV0Q2hhbmdlKGUpO251bGwhPXQmJiJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6byh0KSkmJihlPSIiK3QpfXJldHVybiBlfX0se2tleToiaGFuZGxlS2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoISh0aGlzLnByb3BzLmRpc2FibGVkfHwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5wcm9wcy5vbklucHV0S2V5RG93biYmKHRoaXMucHJvcHMub25JbnB1dEtleURvd24oZSksZS5kZWZhdWx0UHJldmVudGVkKSkpe3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgODpyZXR1cm4gdm9pZCghdGhpcy5zdGF0ZS5pbnB1dFZhbHVlJiZ0aGlzLnByb3BzLmJhY2tzcGFjZVJlbW92ZXMmJihlLnByZXZlbnREZWZhdWx0KCksdGhpcy5wb3BWYWx1ZSgpKSk7Y2FzZSA5OmlmKGUuc2hpZnRLZXl8fCF0aGlzLnN0YXRlLmlzT3Blbnx8IXRoaXMucHJvcHMudGFiU2VsZWN0c1ZhbHVlKXJldHVybjtyZXR1cm4gdm9pZCB0aGlzLnNlbGVjdEZvY3VzZWRPcHRpb24oKTtjYXNlIDEzOmlmKCF0aGlzLnN0YXRlLmlzT3BlbilyZXR1cm47ZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnNlbGVjdEZvY3VzZWRPcHRpb24oKTticmVhaztjYXNlIDI3OnRoaXMuc3RhdGUuaXNPcGVuPyh0aGlzLmNsb3NlTWVudSgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpOnRoaXMucHJvcHMuY2xlYXJhYmxlJiZ0aGlzLnByb3BzLmVzY2FwZUNsZWFyc1ZhbHVlJiYodGhpcy5jbGVhclZhbHVlKGUpLGUuc3RvcFByb3BhZ2F0aW9uKCkpO2JyZWFrO2Nhc2UgMzg6dGhpcy5mb2N1c1ByZXZpb3VzT3B0aW9uKCk7YnJlYWs7Y2FzZSA0MDp0aGlzLmZvY3VzTmV4dE9wdGlvbigpO2JyZWFrO2Nhc2UgMzM6dGhpcy5mb2N1c1BhZ2VVcE9wdGlvbigpO2JyZWFrO2Nhc2UgMzQ6dGhpcy5mb2N1c1BhZ2VEb3duT3B0aW9uKCk7YnJlYWs7Y2FzZSAzNTppZihlLnNoaWZ0S2V5KXJldHVybjt0aGlzLmZvY3VzRW5kT3B0aW9uKCk7YnJlYWs7Y2FzZSAzNjppZihlLnNoaWZ0S2V5KXJldHVybjt0aGlzLmZvY3VzU3RhcnRPcHRpb24oKTticmVhaztjYXNlIDQ2OnJldHVybiB2b2lkKCF0aGlzLnN0YXRlLmlucHV0VmFsdWUmJnRoaXMucHJvcHMuZGVsZXRlUmVtb3ZlcyYmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLnBvcFZhbHVlKCkpKTtkZWZhdWx0OnJldHVybn1lLnByZXZlbnREZWZhdWx0KCl9fX0se2tleToiaGFuZGxlVmFsdWVDbGljayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLnByb3BzLm9uVmFsdWVDbGljayYmdGhpcy5wcm9wcy5vblZhbHVlQ2xpY2soZSx0KX19LHtrZXk6ImhhbmRsZU1lbnVTY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJvcHMub25NZW51U2Nyb2xsVG9Cb3R0b20pe3ZhciB0PWUudGFyZ2V0O3Quc2Nyb2xsSGVpZ2h0PnQub2Zmc2V0SGVpZ2h0JiZ0LnNjcm9sbEhlaWdodC10Lm9mZnNldEhlaWdodC10LnNjcm9sbFRvcDw9MCYmdGhpcy5wcm9wcy5vbk1lbnVTY3JvbGxUb0JvdHRvbSgpfX19LHtrZXk6ImhhbmRsZVJlcXVpcmVkIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiFlfHwodD8wPT09ZS5sZW5ndGg6MD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aCl9fSx7a2V5OiJnZXRPcHRpb25MYWJlbCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbdGhpcy5wcm9wcy5sYWJlbEtleV19fSx7a2V5OiJnZXRWYWx1ZUFycmF5Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj0ib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOm8odCkpP3Q6dGhpcy5wcm9wcztpZihyLm11bHRpKXtpZigic3RyaW5nIj09dHlwZW9mIGUmJihlPWUuc3BsaXQoci5kZWxpbWl0ZXIpKSwhQXJyYXkuaXNBcnJheShlKSl7aWYobnVsbD09ZSlyZXR1cm5bXTtlPVtlXX1yZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuLmV4cGFuZFZhbHVlKGUscil9KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKX12YXIgYT10aGlzLmV4cGFuZFZhbHVlKGUscik7cmV0dXJuIGE/W2FdOltdfX0se2tleToiZXhwYW5kVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dm9pZCAwPT09ZT8idW5kZWZpbmVkIjpvKGUpO2lmKCJzdHJpbmciIT09biYmIm51bWJlciIhPT1uJiYiYm9vbGVhbiIhPT1uKXJldHVybiBlO3ZhciByPXQub3B0aW9ucyxhPXQudmFsdWVLZXk7aWYocilmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylpZihyW2ldW2FdPT09ZSlyZXR1cm4gcltpXX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHRoaXMucHJvcHMuYXV0b0JsdXImJnRoaXMuYmx1cklucHV0KCksdGhpcy5wcm9wcy5yZXF1aXJlZCl7dmFyIG49dGhpcy5oYW5kbGVSZXF1aXJlZChlLHRoaXMucHJvcHMubXVsdGkpO3RoaXMuc2V0U3RhdGUoe3JlcXVpcmVkOm59KX10aGlzLnByb3BzLm9uQ2hhbmdlJiYodGhpcy5wcm9wcy5zaW1wbGVWYWx1ZSYmZSYmKGU9dGhpcy5wcm9wcy5tdWx0aT9lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbdC5wcm9wcy52YWx1ZUtleV19KSkuam9pbih0aGlzLnByb3BzLmRlbGltaXRlcik6ZVt0aGlzLnByb3BzLnZhbHVlS2V5XSksdGhpcy5wcm9wcy5vbkNoYW5nZShlKSl9fSx7a2V5OiJzZWxlY3RWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QmJih0aGlzLmhhc1Njcm9sbGVkVG9PcHRpb249ITEpLHRoaXMucHJvcHMubXVsdGkpe3ZhciBuPXRoaXMucHJvcHMub25TZWxlY3RSZXNldHNJbnB1dD8iIjp0aGlzLnN0YXRlLmlucHV0VmFsdWU7dGhpcy5zZXRTdGF0ZSh7Zm9jdXNlZEluZGV4Om51bGwsaW5wdXRWYWx1ZTp0aGlzLmhhbmRsZUlucHV0VmFsdWVDaGFuZ2UobiksaXNPcGVuOiF0aGlzLnByb3BzLmNsb3NlT25TZWxlY3R9LChmdW5jdGlvbigpe3QuYWRkVmFsdWUoZSl9KSl9ZWxzZSB0aGlzLnNldFN0YXRlKHtpbnB1dFZhbHVlOnRoaXMuaGFuZGxlSW5wdXRWYWx1ZUNoYW5nZSgiIiksaXNPcGVuOiF0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QsaXNQc2V1ZG9Gb2N1c2VkOnRoaXMuc3RhdGUuaXNGb2N1c2VkfSwoZnVuY3Rpb24oKXt0LnNldFZhbHVlKGUpfSkpfX0se2tleToiYWRkVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0VmFsdWVBcnJheSh0aGlzLnByb3BzLnZhbHVlKSxuPXRoaXMuX3Zpc2libGVPcHRpb25zLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkscj1uLmluZGV4T2YoZSk7dGhpcy5zZXRWYWx1ZSh0LmNvbmNhdChlKSksbi5sZW5ndGgtMT09PXI/dGhpcy5mb2N1c09wdGlvbihuW3ItMV0pOm4ubGVuZ3RoPnImJnRoaXMuZm9jdXNPcHRpb24obltyKzFdKX19LHtrZXk6InBvcFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0VmFsdWVBcnJheSh0aGlzLnByb3BzLnZhbHVlKTtlLmxlbmd0aCYmITEhPT1lW2UubGVuZ3RoLTFdLmNsZWFyYWJsZVZhbHVlJiZ0aGlzLnNldFZhbHVlKHRoaXMucHJvcHMubXVsdGk/ZS5zbGljZSgwLGUubGVuZ3RoLTEpOm51bGwpfX0se2tleToicmVtb3ZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0VmFsdWVBcnJheSh0aGlzLnByb3BzLnZhbHVlKTt0aGlzLnNldFZhbHVlKHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KSkpLHRoaXMuZm9jdXMoKX19LHtrZXk6ImNsZWFyVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUpe2UmJiJtb3VzZWRvd24iPT09ZS50eXBlJiYwIT09ZS5idXR0b258fChlLnN0b3BQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSx0aGlzLnNldFZhbHVlKHRoaXMuZ2V0UmVzZXRWYWx1ZSgpKSx0aGlzLnNldFN0YXRlKHtpc09wZW46ITEsaW5wdXRWYWx1ZTp0aGlzLmhhbmRsZUlucHV0VmFsdWVDaGFuZ2UoIiIpfSx0aGlzLmZvY3VzKSl9fSx7a2V5OiJnZXRSZXNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLnByb3BzLnJlc2V0VmFsdWU/dGhpcy5wcm9wcy5yZXNldFZhbHVlOnRoaXMucHJvcHMubXVsdGk/W106bnVsbH19LHtrZXk6ImZvY3VzT3B0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnNldFN0YXRlKHtmb2N1c2VkT3B0aW9uOmV9KX19LHtrZXk6ImZvY3VzTmV4dE9wdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzQWRqYWNlbnRPcHRpb24oIm5leHQiKX19LHtrZXk6ImZvY3VzUHJldmlvdXNPcHRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c0FkamFjZW50T3B0aW9uKCJwcmV2aW91cyIpfX0se2tleToiZm9jdXNQYWdlVXBPcHRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c0FkamFjZW50T3B0aW9uKCJwYWdlX3VwIil9fSx7a2V5OiJmb2N1c1BhZ2VEb3duT3B0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNBZGphY2VudE9wdGlvbigicGFnZV9kb3duIil9fSx7a2V5OiJmb2N1c1N0YXJ0T3B0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNBZGphY2VudE9wdGlvbigic3RhcnQiKX19LHtrZXk6ImZvY3VzRW5kT3B0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNBZGphY2VudE9wdGlvbigiZW5kIil9fSx7a2V5OiJmb2N1c0FkamFjZW50T3B0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl92aXNpYmxlT3B0aW9ucy5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJue29wdGlvbjplLGluZGV4OnR9fSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWUub3B0aW9uLmRpc2FibGVkfSkpO2lmKHRoaXMuX3Njcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlPSEwLHRoaXMuc3RhdGUuaXNPcGVuKXtpZih0Lmxlbmd0aCl7Zm9yKHZhciBuPS0xLHI9MDtyPHQubGVuZ3RoO3IrKylpZih0aGlzLl9mb2N1c2VkT3B0aW9uPT09dFtyXS5vcHRpb24pe249cjticmVha31pZigibmV4dCI9PT1lJiYtMSE9PW4pbj0obisxKSV0Lmxlbmd0aDtlbHNlIGlmKCJwcmV2aW91cyI9PT1lKW4+MD9uLT0xOm49dC5sZW5ndGgtMTtlbHNlIGlmKCJzdGFydCI9PT1lKW49MDtlbHNlIGlmKCJlbmQiPT09ZSluPXQubGVuZ3RoLTE7ZWxzZSBpZigicGFnZV91cCI9PT1lKXtuPShvPW4tdGhpcy5wcm9wcy5wYWdlU2l6ZSk8MD8wOm99ZWxzZSBpZigicGFnZV9kb3duIj09PWUpe3ZhciBvO249KG89bit0aGlzLnByb3BzLnBhZ2VTaXplKT50Lmxlbmd0aC0xP3QubGVuZ3RoLTE6b30tMT09PW4mJihuPTApLHRoaXMuc2V0U3RhdGUoe2ZvY3VzZWRJbmRleDp0W25dLmluZGV4LGZvY3VzZWRPcHRpb246dFtuXS5vcHRpb259KX19ZWxzZSB0aGlzLnNldFN0YXRlKHtpc09wZW46ITAsaW5wdXRWYWx1ZToiIixmb2N1c2VkT3B0aW9uOnRoaXMuX2ZvY3VzZWRPcHRpb258fCh0Lmxlbmd0aD90WyJuZXh0Ij09PWU/MDp0Lmxlbmd0aC0xXS5vcHRpb246bnVsbCl9KX19LHtrZXk6ImdldEZvY3VzZWRPcHRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWRPcHRpb259fSx7a2V5OiJnZXRJbnB1dFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlLmlucHV0VmFsdWV9fSx7a2V5OiJzZWxlY3RGb2N1c2VkT3B0aW9uIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuX2ZvY3VzZWRPcHRpb24pcmV0dXJuIHRoaXMuc2VsZWN0VmFsdWUodGhpcy5fZm9jdXNlZE9wdGlvbil9fSx7a2V5OiJyZW5kZXJMb2FkaW5nIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMucHJvcHMuaXNMb2FkaW5nKXJldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiU2VsZWN0LWxvYWRpbmctem9uZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJTZWxlY3QtbG9hZGluZyJ9KSl9fSx7a2V5OiJyZW5kZXJWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9dGhpcy5wcm9wcy52YWx1ZVJlbmRlcmVyfHx0aGlzLmdldE9wdGlvbkxhYmVsLG89dGhpcy5wcm9wcy52YWx1ZUNvbXBvbmVudDtpZighZS5sZW5ndGgpcmV0dXJuIHRoaXMuc3RhdGUuaW5wdXRWYWx1ZT9udWxsOmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IlNlbGVjdC1wbGFjZWhvbGRlciJ9LHRoaXMucHJvcHMucGxhY2Vob2xkZXIpO3ZhciBhPXRoaXMucHJvcHMub25WYWx1ZUNsaWNrP3RoaXMuaGFuZGxlVmFsdWVDbGljazpudWxsO3JldHVybiB0aGlzLnByb3BzLm11bHRpP2UubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChvLHtpZDpuLl9pbnN0YW5jZVByZWZpeCsiLXZhbHVlLSIrdCxpbnN0YW5jZVByZWZpeDpuLl9pbnN0YW5jZVByZWZpeCxkaXNhYmxlZDpuLnByb3BzLmRpc2FibGVkfHwhMT09PWUuY2xlYXJhYmxlVmFsdWUsa2V5OiJ2YWx1ZS0iK3QrIi0iK2Vbbi5wcm9wcy52YWx1ZUtleV0sb25DbGljazphLG9uUmVtb3ZlOm4ucmVtb3ZlVmFsdWUsdmFsdWU6ZX0scihlLHQpLGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJTZWxlY3QtYXJpYS1vbmx5In0sIsKgIikpfSkpOnRoaXMuc3RhdGUuaW5wdXRWYWx1ZT92b2lkIDA6KHQmJihhPW51bGwpLGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG8se2lkOnRoaXMuX2luc3RhbmNlUHJlZml4KyItdmFsdWUtaXRlbSIsZGlzYWJsZWQ6dGhpcy5wcm9wcy5kaXNhYmxlZCxpbnN0YW5jZVByZWZpeDp0aGlzLl9pbnN0YW5jZVByZWZpeCxvbkNsaWNrOmEsdmFsdWU6ZVswXX0scihlWzBdKSkpfX0se2tleToicmVuZGVySW5wdXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4sbz10aGlzLGE9KDAsYy5kZWZhdWx0KSgiU2VsZWN0LWlucHV0Iix0aGlzLnByb3BzLmlucHV0UHJvcHMuY2xhc3NOYW1lKSx1PSEhdGhpcy5zdGF0ZS5pc09wZW4scz0oMCxjLmRlZmF1bHQpKChnKG49e30sdGhpcy5faW5zdGFuY2VQcmVmaXgrIi1saXN0Iix1KSxnKG4sdGhpcy5faW5zdGFuY2VQcmVmaXgrIi1iYWNrc3BhY2UtcmVtb3ZlLW1lc3NhZ2UiLHRoaXMucHJvcHMubXVsdGkmJiF0aGlzLnByb3BzLmRpc2FibGVkJiZ0aGlzLnN0YXRlLmlzRm9jdXNlZCYmIXRoaXMuc3RhdGUuaW5wdXRWYWx1ZSksbikpLGY9cih7fSx0aGlzLnByb3BzLmlucHV0UHJvcHMse3JvbGU6ImNvbWJvYm94IiwiYXJpYS1leHBhbmRlZCI6IiIrdSwiYXJpYS1vd25zIjpzLCJhcmlhLWhhc3BvcHVwIjoiIit1LCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOnU/dGhpcy5faW5zdGFuY2VQcmVmaXgrIi1vcHRpb24tIit0OnRoaXMuX2luc3RhbmNlUHJlZml4KyItdmFsdWUiLCJhcmlhLWRlc2NyaWJlZGJ5Ijp0aGlzLnByb3BzWyJhcmlhLWRlc2NyaWJlZGJ5Il0sImFyaWEtbGFiZWxsZWRieSI6dGhpcy5wcm9wc1siYXJpYS1sYWJlbGxlZGJ5Il0sImFyaWEtbGFiZWwiOnRoaXMucHJvcHNbImFyaWEtbGFiZWwiXSxjbGFzc05hbWU6YSx0YWJJbmRleDp0aGlzLnByb3BzLnRhYkluZGV4LG9uQmx1cjp0aGlzLmhhbmRsZUlucHV0Qmx1cixvbkNoYW5nZTp0aGlzLmhhbmRsZUlucHV0Q2hhbmdlLG9uRm9jdXM6dGhpcy5oYW5kbGVJbnB1dEZvY3VzLHJlZjpmdW5jdGlvbihlKXtyZXR1cm4gby5pbnB1dD1lfSxyZXF1aXJlZDp0aGlzLnN0YXRlLnJlcXVpcmVkLHZhbHVlOnRoaXMuc3RhdGUuaW5wdXRWYWx1ZX0pO2lmKHRoaXMucHJvcHMuaW5wdXRSZW5kZXJlcilyZXR1cm4gdGhpcy5wcm9wcy5pbnB1dFJlbmRlcmVyKGYpO2lmKHRoaXMucHJvcHMuZGlzYWJsZWR8fCF0aGlzLnByb3BzLnNlYXJjaGFibGUpe3ZhciBkPXRoaXMucHJvcHMuaW5wdXRQcm9wcyxwPShkLmlucHV0Q2xhc3NOYW1lLGZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KGQsWyJpbnB1dENsYXNzTmFtZSJdKSksaD0oMCxjLmRlZmF1bHQpKGcoe30sdGhpcy5faW5zdGFuY2VQcmVmaXgrIi1saXN0Iix1KSk7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHIoe30scCx7cm9sZToiY29tYm9ib3giLCJhcmlhLWV4cGFuZGVkIjp1LCJhcmlhLW93bnMiOmgsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6dT90aGlzLl9pbnN0YW5jZVByZWZpeCsiLW9wdGlvbi0iK3Q6dGhpcy5faW5zdGFuY2VQcmVmaXgrIi12YWx1ZSIsY2xhc3NOYW1lOmEsdGFiSW5kZXg6dGhpcy5wcm9wcy50YWJJbmRleHx8MCxvbkJsdXI6dGhpcy5oYW5kbGVJbnB1dEJsdXIsb25Gb2N1czp0aGlzLmhhbmRsZUlucHV0Rm9jdXMscmVmOmZ1bmN0aW9uKGUpe3JldHVybiBvLmlucHV0PWV9LCJhcmlhLXJlYWRvbmx5IjoiIishIXRoaXMucHJvcHMuZGlzYWJsZWQsc3R5bGU6e2JvcmRlcjowLHdpZHRoOjEsZGlzcGxheToiaW5saW5lLWJsb2NrIn19KSl9cmV0dXJuIHRoaXMucHJvcHMuYXV0b3NpemU/aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobC5kZWZhdWx0LHIoe30sZix7bWluV2lkdGg6IjUifSkpOmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6YX0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0IixmKSl9fSx7a2V5OiJyZW5kZXJDbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXtpZighKCF0aGlzLnByb3BzLmNsZWFyYWJsZXx8dm9pZCAwPT09dGhpcy5wcm9wcy52YWx1ZXx8bnVsbD09PXRoaXMucHJvcHMudmFsdWV8fHRoaXMucHJvcHMubXVsdGkmJiF0aGlzLnByb3BzLnZhbHVlLmxlbmd0aHx8dGhpcy5wcm9wcy5kaXNhYmxlZHx8dGhpcy5wcm9wcy5pc0xvYWRpbmcpKXt2YXIgZT10aGlzLnByb3BzLmNsZWFyUmVuZGVyZXIoKTtyZXR1cm4gaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6IlNlbGVjdC1jbGVhci16b25lIix0aXRsZTp0aGlzLnByb3BzLm11bHRpP3RoaXMucHJvcHMuY2xlYXJBbGxUZXh0OnRoaXMucHJvcHMuY2xlYXJWYWx1ZVRleHQsImFyaWEtbGFiZWwiOnRoaXMucHJvcHMubXVsdGk/dGhpcy5wcm9wcy5jbGVhckFsbFRleHQ6dGhpcy5wcm9wcy5jbGVhclZhbHVlVGV4dCxvbk1vdXNlRG93bjp0aGlzLmNsZWFyVmFsdWUsb25Ub3VjaFN0YXJ0OnRoaXMuaGFuZGxlVG91Y2hTdGFydCxvblRvdWNoTW92ZTp0aGlzLmhhbmRsZVRvdWNoTW92ZSxvblRvdWNoRW5kOnRoaXMuaGFuZGxlVG91Y2hFbmRDbGVhclZhbHVlfSxlKX19fSx7a2V5OiJyZW5kZXJBcnJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhhbmRsZU1vdXNlRG93bk9uQXJyb3csdD10aGlzLnN0YXRlLmlzT3BlbixuPXRoaXMucHJvcHMuYXJyb3dSZW5kZXJlcih7b25Nb3VzZURvd246ZSxpc09wZW46dH0pO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToiU2VsZWN0LWFycm93LXpvbmUiLG9uTW91c2VEb3duOmV9LG4pfX0se2tleToiZmlsdGVyT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zdGF0ZS5pbnB1dFZhbHVlLG49dGhpcy5wcm9wcy5vcHRpb25zfHxbXTtpZih0aGlzLnByb3BzLmZpbHRlck9wdGlvbnMpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnByb3BzLmZpbHRlck9wdGlvbnM/dGhpcy5wcm9wcy5maWx0ZXJPcHRpb25zOmQuZGVmYXVsdDtyZXR1cm4gcihuLHQsZSx7ZmlsdGVyT3B0aW9uOnRoaXMucHJvcHMuZmlsdGVyT3B0aW9uLGlnbm9yZUFjY2VudHM6dGhpcy5wcm9wcy5pZ25vcmVBY2NlbnRzLGlnbm9yZUNhc2U6dGhpcy5wcm9wcy5pZ25vcmVDYXNlLGxhYmVsS2V5OnRoaXMucHJvcHMubGFiZWxLZXksbWF0Y2hQb3M6dGhpcy5wcm9wcy5tYXRjaFBvcyxtYXRjaFByb3A6dGhpcy5wcm9wcy5tYXRjaFByb3AsdmFsdWVLZXk6dGhpcy5wcm9wcy52YWx1ZUtleX0pfXJldHVybiBufX0se2tleToib25PcHRpb25SZWYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dCYmKHRoaXMuZm9jdXNlZD1lKX19LHtrZXk6InJlbmRlck1lbnUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/dGhpcy5wcm9wcy5tZW51UmVuZGVyZXIoe2ZvY3VzZWRPcHRpb246bixmb2N1c09wdGlvbjp0aGlzLmZvY3VzT3B0aW9uLGluc3RhbmNlUHJlZml4OnRoaXMuX2luc3RhbmNlUHJlZml4LGxhYmVsS2V5OnRoaXMucHJvcHMubGFiZWxLZXksb25Gb2N1czp0aGlzLmZvY3VzT3B0aW9uLG9uU2VsZWN0OnRoaXMuc2VsZWN0VmFsdWUsb3B0aW9uQ2xhc3NOYW1lOnRoaXMucHJvcHMub3B0aW9uQ2xhc3NOYW1lLG9wdGlvbkNvbXBvbmVudDp0aGlzLnByb3BzLm9wdGlvbkNvbXBvbmVudCxvcHRpb25SZW5kZXJlcjp0aGlzLnByb3BzLm9wdGlvblJlbmRlcmVyfHx0aGlzLmdldE9wdGlvbkxhYmVsLG9wdGlvbnM6ZSxzZWxlY3RWYWx1ZTp0aGlzLnNlbGVjdFZhbHVlLHZhbHVlQXJyYXk6dCx2YWx1ZUtleTp0aGlzLnByb3BzLnZhbHVlS2V5LG9uT3B0aW9uUmVmOnRoaXMub25PcHRpb25SZWZ9KTp0aGlzLnByb3BzLm5vUmVzdWx0c1RleHQ/aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiU2VsZWN0LW5vcmVzdWx0cyJ9LHRoaXMucHJvcHMubm9SZXN1bHRzVGV4dCk6bnVsbH19LHtrZXk6InJlbmRlckhpZGRlbkZpZWxkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHRoaXMucHJvcHMubmFtZSl7aWYodGhpcy5wcm9wcy5qb2luVmFsdWVzKXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGIoZVt0LnByb3BzLnZhbHVlS2V5XSl9KSkuam9pbih0aGlzLnByb3BzLmRlbGltaXRlcik7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6ImhpZGRlbiIscmVmOmZ1bmN0aW9uKGUpe3JldHVybiB0LnZhbHVlPWV9LG5hbWU6dGhpcy5wcm9wcy5uYW1lLHZhbHVlOm4sZGlzYWJsZWQ6dGhpcy5wcm9wcy5kaXNhYmxlZH0pfXJldHVybiBlLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7a2V5OiJoaWRkZW4uIituLHR5cGU6ImhpZGRlbiIscmVmOiJ2YWx1ZSIrbixuYW1lOnQucHJvcHMubmFtZSx2YWx1ZTpiKGVbdC5wcm9wcy52YWx1ZUtleV0pLGRpc2FibGVkOnQucHJvcHMuZGlzYWJsZWR9KX0pKX19fSx7a2V5OiJnZXRGb2N1c2FibGVPcHRpb25JbmRleCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdmlzaWJsZU9wdGlvbnM7aWYoIXQubGVuZ3RoKXJldHVybiBudWxsO3ZhciBuPXRoaXMucHJvcHMudmFsdWVLZXkscj10aGlzLnN0YXRlLmZvY3VzZWRPcHRpb258fGU7aWYociYmIXIuZGlzYWJsZWQpe3ZhciBvPS0xO2lmKHQuc29tZSgoZnVuY3Rpb24oZSx0KXt2YXIgYT1lW25dPT09cltuXTtyZXR1cm4gYSYmKG89dCksYX0pKSwtMSE9PW8pcmV0dXJuIG99Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaWYoIXRbYV0uZGlzYWJsZWQpcmV0dXJuIGE7cmV0dXJuIG51bGx9fSx7a2V5OiJyZW5kZXJPdXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz10aGlzLnJlbmRlck1lbnUoZSx0LG4pO3JldHVybiBvP2kuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtyZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWVudUNvbnRhaW5lcj1lfSxjbGFzc05hbWU6IlNlbGVjdC1tZW51LW91dGVyIixzdHlsZTp0aGlzLnByb3BzLm1lbnVDb250YWluZXJTdHlsZX0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse3JlZjpmdW5jdGlvbihlKXtyZXR1cm4gci5tZW51PWV9LHJvbGU6Imxpc3Rib3giLHRhYkluZGV4Oi0xLGNsYXNzTmFtZToiU2VsZWN0LW1lbnUiLGlkOnRoaXMuX2luc3RhbmNlUHJlZml4KyItbGlzdCIsc3R5bGU6dGhpcy5wcm9wcy5tZW51U3R5bGUsb25TY3JvbGw6dGhpcy5oYW5kbGVNZW51U2Nyb2xsLG9uTW91c2VEb3duOnRoaXMuaGFuZGxlTW91c2VEb3duT25NZW51fSxvKSk6bnVsbH19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5nZXRWYWx1ZUFycmF5KHRoaXMucHJvcHMudmFsdWUpLG49dGhpcy5fdmlzaWJsZU9wdGlvbnM9dGhpcy5maWx0ZXJPcHRpb25zKHRoaXMucHJvcHMubXVsdGk/dGhpcy5nZXRWYWx1ZUFycmF5KHRoaXMucHJvcHMudmFsdWUpOm51bGwpLHI9dGhpcy5zdGF0ZS5pc09wZW47dGhpcy5wcm9wcy5tdWx0aSYmIW4ubGVuZ3RoJiZ0Lmxlbmd0aCYmIXRoaXMuc3RhdGUuaW5wdXRWYWx1ZSYmKHI9ITEpO3ZhciBvPXRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9uSW5kZXgodFswXSksYT1udWxsO2E9dGhpcy5fZm9jdXNlZE9wdGlvbj1udWxsIT09bz9uW29dOm51bGw7dmFyIHU9KDAsYy5kZWZhdWx0KSgiU2VsZWN0Iix0aGlzLnByb3BzLmNsYXNzTmFtZSx7IlNlbGVjdC0tbXVsdGkiOnRoaXMucHJvcHMubXVsdGksIlNlbGVjdC0tc2luZ2xlIjohdGhpcy5wcm9wcy5tdWx0aSwiaXMtY2xlYXJhYmxlIjp0aGlzLnByb3BzLmNsZWFyYWJsZSwiaXMtZGlzYWJsZWQiOnRoaXMucHJvcHMuZGlzYWJsZWQsImlzLWZvY3VzZWQiOnRoaXMuc3RhdGUuaXNGb2N1c2VkLCJpcy1sb2FkaW5nIjp0aGlzLnByb3BzLmlzTG9hZGluZywiaXMtb3BlbiI6ciwiaXMtcHNldWRvLWZvY3VzZWQiOnRoaXMuc3RhdGUuaXNQc2V1ZG9Gb2N1c2VkLCJpcy1zZWFyY2hhYmxlIjp0aGlzLnByb3BzLnNlYXJjaGFibGUsImhhcy12YWx1ZSI6dC5sZW5ndGh9KSxzPW51bGw7cmV0dXJuIHRoaXMucHJvcHMubXVsdGkmJiF0aGlzLnByb3BzLmRpc2FibGVkJiZ0Lmxlbmd0aCYmIXRoaXMuc3RhdGUuaW5wdXRWYWx1ZSYmdGhpcy5zdGF0ZS5pc0ZvY3VzZWQmJnRoaXMucHJvcHMuYmFja3NwYWNlUmVtb3ZlcyYmKHM9aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtpZDp0aGlzLl9pbnN0YW5jZVByZWZpeCsiLWJhY2tzcGFjZS1yZW1vdmUtbWVzc2FnZSIsY2xhc3NOYW1lOiJTZWxlY3QtYXJpYS1vbmx5IiwiYXJpYS1saXZlIjoiYXNzZXJ0aXZlIn0sdGhpcy5wcm9wcy5iYWNrc3BhY2VUb1JlbW92ZU1lc3NhZ2UucmVwbGFjZSgie2xhYmVsfSIsdFt0Lmxlbmd0aC0xXVt0aGlzLnByb3BzLmxhYmVsS2V5XSkpKSxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7cmVmOmZ1bmN0aW9uKHQpe3JldHVybiBlLndyYXBwZXI9dH0sY2xhc3NOYW1lOnUsc3R5bGU6dGhpcy5wcm9wcy53cmFwcGVyU3R5bGV9LHRoaXMucmVuZGVySGlkZGVuRmllbGQodCksaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse3JlZjpmdW5jdGlvbih0KXtyZXR1cm4gZS5jb250cm9sPXR9LGNsYXNzTmFtZToiU2VsZWN0LWNvbnRyb2wiLHN0eWxlOnRoaXMucHJvcHMuc3R5bGUsb25LZXlEb3duOnRoaXMuaGFuZGxlS2V5RG93bixvbk1vdXNlRG93bjp0aGlzLmhhbmRsZU1vdXNlRG93bixvblRvdWNoRW5kOnRoaXMuaGFuZGxlVG91Y2hFbmQsb25Ub3VjaFN0YXJ0OnRoaXMuaGFuZGxlVG91Y2hTdGFydCxvblRvdWNoTW92ZTp0aGlzLmhhbmRsZVRvdWNoTW92ZX0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6IlNlbGVjdC1tdWx0aS12YWx1ZS13cmFwcGVyIixpZDp0aGlzLl9pbnN0YW5jZVByZWZpeCsiLXZhbHVlIn0sdGhpcy5yZW5kZXJWYWx1ZSh0LHIpLHRoaXMucmVuZGVySW5wdXQodCxvKSkscyx0aGlzLnJlbmRlckxvYWRpbmcoKSx0aGlzLnJlbmRlckNsZWFyKCksdGhpcy5yZW5kZXJBcnJvdygpKSxyP3RoaXMucmVuZGVyT3V0ZXIobix0aGlzLnByb3BzLm11bHRpP251bGw6dCxhKTpudWxsKX19XSksdH0oaS5kZWZhdWx0LkNvbXBvbmVudCk7RS5wcm9wVHlwZXM9eyJhcmlhLWRlc2NyaWJlZGJ5Ijp1LmRlZmF1bHQuc3RyaW5nLCJhcmlhLWxhYmVsIjp1LmRlZmF1bHQuc3RyaW5nLCJhcmlhLWxhYmVsbGVkYnkiOnUuZGVmYXVsdC5zdHJpbmcsYWRkTGFiZWxUZXh0OnUuZGVmYXVsdC5zdHJpbmcsYXJyb3dSZW5kZXJlcjp1LmRlZmF1bHQuZnVuYyxhdXRvQmx1cjp1LmRlZmF1bHQuYm9vbCxhdXRvZm9jdXM6dS5kZWZhdWx0LmJvb2wsYXV0b3NpemU6dS5kZWZhdWx0LmJvb2wsYmFja3NwYWNlUmVtb3Zlczp1LmRlZmF1bHQuYm9vbCxiYWNrc3BhY2VUb1JlbW92ZU1lc3NhZ2U6dS5kZWZhdWx0LnN0cmluZyxjbGFzc05hbWU6dS5kZWZhdWx0LnN0cmluZyxjbGVhckFsbFRleHQ6dyxjbGVhclJlbmRlcmVyOnUuZGVmYXVsdC5mdW5jLGNsZWFyVmFsdWVUZXh0OncsY2xlYXJhYmxlOnUuZGVmYXVsdC5ib29sLGNsb3NlT25TZWxlY3Q6dS5kZWZhdWx0LmJvb2wsZGVsZXRlUmVtb3Zlczp1LmRlZmF1bHQuYm9vbCxkZWxpbWl0ZXI6dS5kZWZhdWx0LnN0cmluZyxkaXNhYmxlZDp1LmRlZmF1bHQuYm9vbCxlc2NhcGVDbGVhcnNWYWx1ZTp1LmRlZmF1bHQuYm9vbCxmaWx0ZXJPcHRpb246dS5kZWZhdWx0LmZ1bmMsZmlsdGVyT3B0aW9uczp1LmRlZmF1bHQuYW55LGlnbm9yZUFjY2VudHM6dS5kZWZhdWx0LmJvb2wsaWdub3JlQ2FzZTp1LmRlZmF1bHQuYm9vbCxpbnB1dFByb3BzOnUuZGVmYXVsdC5vYmplY3QsaW5wdXRSZW5kZXJlcjp1LmRlZmF1bHQuZnVuYyxpbnN0YW5jZUlkOnUuZGVmYXVsdC5zdHJpbmcsaXNMb2FkaW5nOnUuZGVmYXVsdC5ib29sLGpvaW5WYWx1ZXM6dS5kZWZhdWx0LmJvb2wsbGFiZWxLZXk6dS5kZWZhdWx0LnN0cmluZyxtYXRjaFBvczp1LmRlZmF1bHQuc3RyaW5nLG1hdGNoUHJvcDp1LmRlZmF1bHQuc3RyaW5nLG1lbnVCdWZmZXI6dS5kZWZhdWx0Lm51bWJlcixtZW51Q29udGFpbmVyU3R5bGU6dS5kZWZhdWx0Lm9iamVjdCxtZW51UmVuZGVyZXI6dS5kZWZhdWx0LmZ1bmMsbWVudVN0eWxlOnUuZGVmYXVsdC5vYmplY3QsbXVsdGk6dS5kZWZhdWx0LmJvb2wsbmFtZTp1LmRlZmF1bHQuc3RyaW5nLG5vUmVzdWx0c1RleHQ6dyxvbkJsdXI6dS5kZWZhdWx0LmZ1bmMsb25CbHVyUmVzZXRzSW5wdXQ6dS5kZWZhdWx0LmJvb2wsb25DaGFuZ2U6dS5kZWZhdWx0LmZ1bmMsb25DbG9zZTp1LmRlZmF1bHQuZnVuYyxvbkNsb3NlUmVzZXRzSW5wdXQ6dS5kZWZhdWx0LmJvb2wsb25Gb2N1czp1LmRlZmF1bHQuZnVuYyxvbklucHV0Q2hhbmdlOnUuZGVmYXVsdC5mdW5jLG9uSW5wdXRLZXlEb3duOnUuZGVmYXVsdC5mdW5jLG9uTWVudVNjcm9sbFRvQm90dG9tOnUuZGVmYXVsdC5mdW5jLG9uT3Blbjp1LmRlZmF1bHQuZnVuYyxvblNlbGVjdFJlc2V0c0lucHV0OnUuZGVmYXVsdC5ib29sLG9uVmFsdWVDbGljazp1LmRlZmF1bHQuZnVuYyxvcGVuT25DbGljazp1LmRlZmF1bHQuYm9vbCxvcGVuT25Gb2N1czp1LmRlZmF1bHQuYm9vbCxvcHRpb25DbGFzc05hbWU6dS5kZWZhdWx0LnN0cmluZyxvcHRpb25Db21wb25lbnQ6dS5kZWZhdWx0LmZ1bmMsb3B0aW9uUmVuZGVyZXI6dS5kZWZhdWx0LmZ1bmMsb3B0aW9uczp1LmRlZmF1bHQuYXJyYXkscGFnZVNpemU6dS5kZWZhdWx0Lm51bWJlcixwbGFjZWhvbGRlcjp3LHJlcXVpcmVkOnUuZGVmYXVsdC5ib29sLHJlc2V0VmFsdWU6dS5kZWZhdWx0LmFueSxzY3JvbGxNZW51SW50b1ZpZXc6dS5kZWZhdWx0LmJvb2wsc2VhcmNoYWJsZTp1LmRlZmF1bHQuYm9vbCxzaW1wbGVWYWx1ZTp1LmRlZmF1bHQuYm9vbCxzdHlsZTp1LmRlZmF1bHQub2JqZWN0LHRhYkluZGV4OnUuZGVmYXVsdC5zdHJpbmcsdGFiU2VsZWN0c1ZhbHVlOnUuZGVmYXVsdC5ib29sLHZhbHVlOnUuZGVmYXVsdC5hbnksdmFsdWVDb21wb25lbnQ6dS5kZWZhdWx0LmZ1bmMsdmFsdWVLZXk6dS5kZWZhdWx0LnN0cmluZyx2YWx1ZVJlbmRlcmVyOnUuZGVmYXVsdC5mdW5jLHdyYXBwZXJTdHlsZTp1LmRlZmF1bHQub2JqZWN0fSxFLmRlZmF1bHRQcm9wcz17YWRkTGFiZWxUZXh0OidBZGQgIntsYWJlbH0iPycsYXJyb3dSZW5kZXJlcjpmLmRlZmF1bHQsYXV0b3NpemU6ITAsYmFja3NwYWNlUmVtb3ZlczohMCxiYWNrc3BhY2VUb1JlbW92ZU1lc3NhZ2U6IlByZXNzIGJhY2tzcGFjZSB0byByZW1vdmUge2xhYmVsfSIsY2xlYXJhYmxlOiEwLGNsZWFyQWxsVGV4dDoiQ2xlYXIgYWxsIixjbGVhclJlbmRlcmVyOmguZGVmYXVsdCxjbGVhclZhbHVlVGV4dDoiQ2xlYXIgdmFsdWUiLGNsb3NlT25TZWxlY3Q6ITAsZGVsZXRlUmVtb3ZlczohMCxkZWxpbWl0ZXI6IiwiLGRpc2FibGVkOiExLGVzY2FwZUNsZWFyc1ZhbHVlOiEwLGZpbHRlck9wdGlvbnM6ZC5kZWZhdWx0LGlnbm9yZUFjY2VudHM6ITAsaWdub3JlQ2FzZTohMCxpbnB1dFByb3BzOnt9LGlzTG9hZGluZzohMSxqb2luVmFsdWVzOiExLGxhYmVsS2V5OiJsYWJlbCIsbWF0Y2hQb3M6ImFueSIsbWF0Y2hQcm9wOiJhbnkiLG1lbnVCdWZmZXI6MCxtZW51UmVuZGVyZXI6cC5kZWZhdWx0LG11bHRpOiExLG5vUmVzdWx0c1RleHQ6Ik5vIHJlc3VsdHMgZm91bmQiLG9uQmx1clJlc2V0c0lucHV0OiEwLG9uU2VsZWN0UmVzZXRzSW5wdXQ6ITAsb25DbG9zZVJlc2V0c0lucHV0OiEwLG9wZW5PbkNsaWNrOiEwLG9wdGlvbkNvbXBvbmVudDp5LmRlZmF1bHQscGFnZVNpemU6NSxwbGFjZWhvbGRlcjoiU2VsZWN0Li4uIixyZXF1aXJlZDohMSxzY3JvbGxNZW51SW50b1ZpZXc6ITAsc2VhcmNoYWJsZTohMCxzaW1wbGVWYWx1ZTohMSx0YWJTZWxlY3RzVmFsdWU6ITAsdmFsdWVDb21wb25lbnQ6bS5kZWZhdWx0LHZhbHVlS2V5OiJ2YWx1ZSJ9LHQuZGVmYXVsdD1FfSxqZW5rOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7dmFyIG49ci5kZWZhdWx0LmlzTW9tZW50KGUpP2U6KDAsby5kZWZhdWx0KShlLHQpO3JldHVybiBuP24uZm9ybWF0KGEuSVNPX01PTlRIX0ZPUk1BVCk6bnVsbH07dmFyIHI9aShuKCJ3ZC9SIikpLG89aShuKCJXbVMxIikpLGE9bigiNWY3biIpO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fX0samwxVzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjRYclkiKSxvPW4oImZ5T1kiKSxhPW4oIklxOEUiKSxpPW4oIjNzT0oiKSx1PW4oInBNbHAiKSxzPW4oIldKT1UiKSxsPW4oIjBJS1UiKSxjPW4oIlpnYjciKSxmPW4oImhwTUoiKSxkPW4oInF5c3YiKSxwPSExLGg9ITEseT1udWxsO3ZhciBtPXtvbkNvbXBvc2l0aW9uU3RhcnQ6ZnVuY3Rpb24oZSl7aD0hMCxmdW5jdGlvbihlKXt5fHwoeT1uZXcgcihsKGUpKSkuc3RhcnQoKX0oZSl9LG9uQ29tcG9zaXRpb25FbmQ6ZnVuY3Rpb24oZSl7cD0hMSxoPSExLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cHx8bS5yZXNvbHZlQ29tcG9zaXRpb24oZSl9KSwyMCl9LG9uU2VsZWN0OnMsb25LZXlEb3duOmZ1bmN0aW9uKGUsdCl7aWYoIWgpcmV0dXJuIG0ucmVzb2x2ZUNvbXBvc2l0aW9uKGUpLHZvaWQgZS5fb25LZXlEb3duKHQpO3Qud2hpY2ghPT11LlJJR0hUJiZ0LndoaWNoIT09dS5MRUZUfHx0LnByZXZlbnREZWZhdWx0KCl9LG9uS2V5UHJlc3M6ZnVuY3Rpb24oZSx0KXt0LndoaWNoPT09dS5SRVRVUk4mJnQucHJldmVudERlZmF1bHQoKX0scmVzb2x2ZUNvbXBvc2l0aW9uOmZ1bmN0aW9uKGUpe2lmKCFoKXt2YXIgdD1kKHkpLnN0b3BBbmRGbHVzaE11dGF0aW9ucygpO3k9bnVsbCxwPSEwO3ZhciBuPWkuc2V0KGUuX2xhdGVzdEVkaXRvclN0YXRlLHtpbkNvbXBvc2l0aW9uTW9kZTohMX0pO2lmKGUuZXhpdEN1cnJlbnRNb2RlKCksdC5zaXplKXt2YXIgcj1uLmdldEN1cnJlbnRDb250ZW50KCk7dC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe3ZhciB1PWEuZGVjb2RlKHQpLHM9dS5ibG9ja0tleSxsPXUuZGVjb3JhdG9yS2V5LGM9dS5sZWFmS2V5LGQ9bi5nZXRCbG9ja1RyZWUocykuZ2V0SW4oW2wsImxlYXZlcyIsY10pLHA9ZC5zdGFydCxoPWQuZW5kLHk9bi5nZXRTZWxlY3Rpb24oKS5tZXJnZSh7YW5jaG9yS2V5OnMsZm9jdXNLZXk6cyxhbmNob3JPZmZzZXQ6cCxmb2N1c09mZnNldDpoLGlzQmFja3dhcmQ6ITF9KSxtPWYocix5KSx2PXIuZ2V0QmxvY2tGb3JLZXkocykuZ2V0SW5saW5lU3R5bGVBdChwKTtyPW8ucmVwbGFjZVRleHQocix5LGUsdixtKSxuPWkuc2V0KG4se2N1cnJlbnRDb250ZW50OnJ9KX0pKTt2YXIgdT1jKG4sbChlKSkuc2VsZWN0aW9uU3RhdGU7ZS5yZXN0b3JlRWRpdG9yRE9NKCk7dmFyIHM9aS5hY2NlcHRTZWxlY3Rpb24obix1KTtlLnVwZGF0ZShpLnB1c2gocyxyLCJpbnNlcnQtY2hhcmFjdGVycyIpKX1lbHNlIGUudXBkYXRlKG4pfX19O2UuZXhwb3J0cz1tfSxqc0MyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLG89bigicTF0SSIpLGE9aShvKTtpKG4oIjE3eDkiKSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gdShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHMoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgbD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIHUodGhpcyx0KSxzKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxyKHQsW3trZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJvcHMhPT1lfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLndlZWtkYXksbj1lLmNsYXNzTmFtZSxyPWUud2Vla2RheXNMb25nLG89ZS53ZWVrZGF5c1Nob3J0LGk9ZS5sb2NhbGVVdGlscyx1PWUubG9jYWxlLHM9dm9pZCAwO3M9cj9yW3RdOmkuZm9ybWF0V2Vla2RheUxvbmcodCx1KTt2YXIgbD12b2lkIDA7cmV0dXJuIGw9bz9vW3RdOmkuZm9ybWF0V2Vla2RheVNob3J0KHQsdSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpuLHJvbGU6ImNvbHVtbmhlYWRlciJ9LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJhYmJyIix7dGl0bGU6c30sbCkpfX1dKSx0fShvLkNvbXBvbmVudCk7dC5kZWZhdWx0PWwsbC5wcm9wVHlwZXM9e319LGp1SkQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LklURU1fVFlQRVM9e1BBR0U6IlBBR0UiLEVMTElQU0lTOiJFTExJUFNJUyIsRklSU1RfUEFHRV9MSU5LOiJGSVJTVF9QQUdFX0xJTksiLFBSRVZJT1VTX1BBR0VfTElOSzoiUFJFVklPVVNfUEFHRV9MSU5LIixORVhUX1BBR0VfTElOSzoiTkVYVF9QQUdFX0xJTksiLExBU1RfUEFHRV9MSU5LOiJMQVNUX1BBR0VfTElOSyJ9LHQuSVRFTV9LRVlTPXtGSVJTVF9FTExJUFNJUzotMSxTRUNPTkRfRUxMSVBTSVM6LTIsRklSU1RfUEFHRV9MSU5LOi0zLFBSRVZJT1VTX1BBR0VfTElOSzotNCxORVhUX1BBR0VfTElOSzotNSxMQVNUX1BBR0VfTElOSzotNn19LGp5RGc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmeU9ZIiksbz1uKCJJcThFIiksYT1uKCIzc09KIiksaT1uKCI0cElCIiksdT1uKCJHbjVEIikubm90RW1wdHlLZXkscz1uKCJrYzlZIiksbD1uKCIzQnIrIiksYz1uKCJxeXN2IiksZj1pLmlzRW5naW5lKCJHZWNrbyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZvaWQgMCE9PWUuX3BlbmRpbmdTdGF0ZUZyb21CZWZvcmVJbnB1dCYmKGUudXBkYXRlKGUuX3BlbmRpbmdTdGF0ZUZyb21CZWZvcmVJbnB1dCksZS5fcGVuZGluZ1N0YXRlRnJvbUJlZm9yZUlucHV0PXZvaWQgMCk7dmFyIG49ZS5lZGl0b3Iub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRTZWxlY3Rpb24oKSxpPW4uYW5jaG9yTm9kZSxkPW4uaXNDb2xsYXBzZWQ7aWYoIShpLm5vZGVUeXBlIT09Tm9kZS5URVhUX05PREUmJmkubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSkpe2lmKGkubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmKG51bGwhPT1pLnByZXZpb3VzU2libGluZ3x8bnVsbCE9PWkubmV4dFNpYmxpbmcpKXt2YXIgcD1pLnBhcmVudE5vZGU7aS5ub2RlVmFsdWU9cC50ZXh0Q29udGVudDtmb3IodmFyIGg9cC5maXJzdENoaWxkO251bGwhPT1oO2g9aC5uZXh0U2libGluZyloIT09aSYmcC5yZW1vdmVDaGlsZChoKX12YXIgeT1pLnRleHRDb250ZW50LG09ZS5fbGF0ZXN0RWRpdG9yU3RhdGUsdj1jKHMoaSkpLGc9by5kZWNvZGUodiksYj1nLmJsb2NrS2V5LHc9Zy5kZWNvcmF0b3JLZXksXz1nLmxlYWZLZXksRT1tLmdldEJsb2NrVHJlZShiKS5nZXRJbihbdywibGVhdmVzIixfXSksTz1FLnN0YXJ0LGs9RS5lbmQsQz1tLmdldEN1cnJlbnRDb250ZW50KCkseD1DLmdldEJsb2NrRm9yS2V5KGIpLFM9eC5nZXRUZXh0KCkuc2xpY2UoTyxrKTtpZih5LmVuZHNXaXRoKCJcblxuIikmJih5PXkuc2xpY2UoMCwtMSkpLHkhPT1TKXt2YXIgRCxULE0sUCxOPW0uZ2V0U2VsZWN0aW9uKCksaj1OLm1lcmdlKHthbmNob3JPZmZzZXQ6Tyxmb2N1c09mZnNldDprLGlzQmFja3dhcmQ6ITF9KSxMPXguZ2V0RW50aXR5QXQoTyksUj11KEwpP0MuZ2V0RW50aXR5KEwpOm51bGwsST0iTVVUQUJMRSI9PT0obnVsbCE9Uj9SLmdldE11dGFiaWxpdHkoKTpudWxsKSxBPUk/InNwZWxsY2hlY2stY2hhbmdlIjoiYXBwbHktZW50aXR5IixGPXIucmVwbGFjZVRleHQoQyxqLHkseC5nZXRJbmxpbmVTdHlsZUF0KE8pLEk/eC5nZXRFbnRpdHlBdChPKTpudWxsKTtpZihmKUQ9bi5hbmNob3JPZmZzZXQsVD1uLmZvY3VzT2Zmc2V0LFA9KE09TytNYXRoLm1pbihELFQpKStNYXRoLmFicyhELVQpLEQ9TSxUPVA7ZWxzZXt2YXIgQj15Lmxlbmd0aC1TLmxlbmd0aDtNPU4uZ2V0U3RhcnRPZmZzZXQoKSxQPU4uZ2V0RW5kT2Zmc2V0KCksRD1kP1ArQjpNLFQ9UCtCfXZhciB6PUYubWVyZ2Uoe3NlbGVjdGlvbkJlZm9yZTpDLmdldFNlbGVjdGlvbkFmdGVyKCksc2VsZWN0aW9uQWZ0ZXI6Ti5tZXJnZSh7YW5jaG9yT2Zmc2V0OkQsZm9jdXNPZmZzZXQ6VH0pfSk7ZS51cGRhdGUoYS5wdXNoKG0seixBKSl9ZWxzZXt2YXIgSz10Lm5hdGl2ZUV2ZW50LmlucHV0VHlwZTtpZihLKXt2YXIgcT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImRlbGV0ZUNvbnRlbnRCYWNrd2FyZCI6cmV0dXJuIGwodCl9cmV0dXJuIHR9KEssbSk7aWYocSE9PW0pcmV0dXJuIGUucmVzdG9yZUVkaXRvckRPTSgpLHZvaWQgZS51cGRhdGUocSl9fX19fSxrODRIOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuU291cmNlPXZvaWQgMDt2YXIgcj1hKG4oInd0VjEiKSksbz1hKG4oIndZTTAiKSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIGk9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuYm9keT1lLHRoaXMubmFtZT10fHwiR3JhcGhRTCByZXF1ZXN0Iix0aGlzLmxvY2F0aW9uT2Zmc2V0PW58fHtsaW5lOjEsY29sdW1uOjF9LHRoaXMubG9jYXRpb25PZmZzZXQubGluZT4wfHwoMCxyLmRlZmF1bHQpKDAsImxpbmUgaW4gbG9jYXRpb25PZmZzZXQgaXMgMS1pbmRleGVkIGFuZCBtdXN0IGJlIHBvc2l0aXZlIiksdGhpcy5sb2NhdGlvbk9mZnNldC5jb2x1bW4+MHx8KDAsci5kZWZhdWx0KSgwLCJjb2x1bW4gaW4gbG9jYXRpb25PZmZzZXQgaXMgMS1pbmRleGVkIGFuZCBtdXN0IGJlIHBvc2l0aXZlIil9O3QuU291cmNlPWksKDAsby5kZWZhdWx0KShpKX0sa0RrSjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlllVmUiKSxvPW4oImxGSm4iKSxhPW4oImdybmciKSxpPW4oImZ5T1kiKSx1PW4oIlBRaEUiKSxzPW4oIjNzT0oiKSxsPW4oIk54NCsiKSxjPW4oImhwTUoiKSxmPW4oIkhLUzUiKSxkPW4oIlQ0MDEiKSxwPW4oIlJLK1ciKTtmdW5jdGlvbiBoKGUsdCxuKXt2YXIgcj1pLnJlcGxhY2VXaXRoRnJhZ21lbnQoZS5nZXRDdXJyZW50Q29udGVudCgpLGUuZ2V0U2VsZWN0aW9uKCksdCk7cmV0dXJuIHMucHVzaChlLHIuc2V0KCJlbnRpdHlNYXAiLG4pLCJpbnNlcnQtZnJhZ21lbnQiKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIG49bmV3IGEodC5jbGlwYm9hcmREYXRhKTtpZighbi5pc1JpY2hUZXh0KCkpe3ZhciB5PW4uZ2V0RmlsZXMoKSxtPW4uZ2V0VGV4dCgpO2lmKHkubGVuZ3RoPjApe2lmKGUucHJvcHMuaGFuZGxlUGFzdGVkRmlsZXMmJmQoZS5wcm9wcy5oYW5kbGVQYXN0ZWRGaWxlcyh5KSkpcmV0dXJuO3JldHVybiB2b2lkIGYoeSwoZnVuY3Rpb24odCl7aWYodD10fHxtKXt2YXIgbj1lLl9sYXRlc3RFZGl0b3JTdGF0ZSxhPXAodCksZj1vLmNyZWF0ZSh7c3R5bGU6bi5nZXRDdXJyZW50SW5saW5lU3R5bGUoKSxlbnRpdHk6YyhuLmdldEN1cnJlbnRDb250ZW50KCksbi5nZXRTZWxlY3Rpb24oKSl9KSxkPWwuZ2V0Q3VycmVudEJsb2NrVHlwZShuKSxoPXUucHJvY2Vzc1RleHQoYSxmLGQpLHk9ci5jcmVhdGVGcm9tQXJyYXkoaCksdj1pLnJlcGxhY2VXaXRoRnJhZ21lbnQobi5nZXRDdXJyZW50Q29udGVudCgpLG4uZ2V0U2VsZWN0aW9uKCkseSk7ZS51cGRhdGUocy5wdXNoKG4sdiwiaW5zZXJ0LWZyYWdtZW50IikpfX0pKX19dmFyIHY9W10sZz1uLmdldFRleHQoKSxiPW4uZ2V0SFRNTCgpLHc9ZS5fbGF0ZXN0RWRpdG9yU3RhdGU7aWYoIWUucHJvcHMuaGFuZGxlUGFzdGVkVGV4dHx8IWQoZS5wcm9wcy5oYW5kbGVQYXN0ZWRUZXh0KGcsYix3KSkpe2lmKGcmJih2PXAoZykpLCFlLnByb3BzLnN0cmlwUGFzdGVkU3R5bGVzKXt2YXIgXz1lLmdldENsaXBib2FyZCgpO2lmKG4uaXNSaWNoVGV4dCgpJiZfKXtpZigtMSE9PWIuaW5kZXhPZihlLmdldEVkaXRvcktleSgpKXx8MT09PXYubGVuZ3RoJiYxPT09Xy5zaXplJiZfLmZpcnN0KCkuZ2V0VGV4dCgpPT09ZylyZXR1cm4gdm9pZCBlLnVwZGF0ZShoKGUuX2xhdGVzdEVkaXRvclN0YXRlLF8pKX1lbHNlIGlmKF8mJm4udHlwZXMuaW5jbHVkZXMoImNvbS5hcHBsZS53ZWJhcmNoaXZlIikmJiFuLnR5cGVzLmluY2x1ZGVzKCJ0ZXh0L2h0bWwiKSYmZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5sZW5ndGg9PT10LnNpemUmJnQudmFsdWVTZXEoKS5ldmVyeSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5nZXRUZXh0KCk9PT1lW25dfSkpfSh2LF8pKXJldHVybiB2b2lkIGUudXBkYXRlKGgoZS5fbGF0ZXN0RWRpdG9yU3RhdGUsXykpO2lmKGIpe3ZhciBFPXUucHJvY2Vzc0hUTUwoYixlLnByb3BzLmJsb2NrUmVuZGVyTWFwKTtpZihFKXt2YXIgTz1FLmNvbnRlbnRCbG9ja3Msaz1FLmVudGl0eU1hcDtpZihPKXt2YXIgQz1yLmNyZWF0ZUZyb21BcnJheShPKTtyZXR1cm4gdm9pZCBlLnVwZGF0ZShoKGUuX2xhdGVzdEVkaXRvclN0YXRlLEMsaykpfX19ZS5zZXRDbGlwYm9hcmQobnVsbCl9aWYodi5sZW5ndGgpe3ZhciB4PW8uY3JlYXRlKHtzdHlsZTp3LmdldEN1cnJlbnRJbmxpbmVTdHlsZSgpLGVudGl0eTpjKHcuZ2V0Q3VycmVudENvbnRlbnQoKSx3LmdldFNlbGVjdGlvbigpKX0pLFM9bC5nZXRDdXJyZW50QmxvY2tUeXBlKHcpLEQ9dS5wcm9jZXNzVGV4dCh2LHgsUyksVD1yLmNyZWF0ZUZyb21BcnJheShEKTtlLnVwZGF0ZShoKGUuX2xhdGVzdEVkaXRvclN0YXRlLFQpKX19fX0sa0U1ODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oInBNbHAiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUud2hpY2g9PT1yLlJFVFVSTiYmKGUuZ2V0TW9kaWZpZXJTdGF0ZSgiU2hpZnQiKXx8ZS5nZXRNb2RpZmllclN0YXRlKCJBbHQiKXx8ZS5nZXRNb2RpZmllclN0YXRlKCJDb250cm9sIikpfX0sa01seDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjh6Z0siKTtmdW5jdGlvbiBvKGUpe2lmKGUpcmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBvLnByb3RvdHlwZSllW3RdPW8ucHJvdG90eXBlW3RdO3JldHVybiBlfShlKX1lLmV4cG9ydHM9byxvLnByb3RvdHlwZS5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKSxjbGVhclRpbWVvdXQodGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIpLGRlbGV0ZSB0aGlzLl90aW1lcixkZWxldGUgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIsdGhpc30sby5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcnNlcj1lLHRoaXN9LG8ucHJvdG90eXBlLnJlc3BvbnNlVHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcmVzcG9uc2VUeXBlPWUsdGhpc30sby5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9zZXJpYWxpemVyPWUsdGhpc30sby5wcm90b3R5cGUudGltZW91dD1mdW5jdGlvbihlKXtpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiB0aGlzLl90aW1lb3V0PWUsdGhpcy5fcmVzcG9uc2VUaW1lb3V0PTAsdGhpcztmb3IodmFyIHQgaW4gZSlzd2l0Y2godCl7Y2FzZSJkZWFkbGluZSI6dGhpcy5fdGltZW91dD1lLmRlYWRsaW5lO2JyZWFrO2Nhc2UicmVzcG9uc2UiOnRoaXMuX3Jlc3BvbnNlVGltZW91dD1lLnJlc3BvbnNlO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJVbmtub3duIHRpbWVvdXQgb3B0aW9uIix0KX1yZXR1cm4gdGhpc30sby5wcm90b3R5cGUucmV0cnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMCE9PWFyZ3VtZW50cy5sZW5ndGgmJiEwIT09ZXx8KGU9MSksZTw9MCYmKGU9MCksdGhpcy5fbWF4UmV0cmllcz1lLHRoaXMuX3JldHJpZXM9MCx0aGlzLl9yZXRyeUNhbGxiYWNrPXQsdGhpc307dmFyIGE9WyJFQ09OTlJFU0VUIiwiRVRJTUVET1VUIiwiRUFERFJJTkZPIiwiRVNPQ0tFVFRJTUVET1VUIl07by5wcm90b3R5cGUuX3Nob3VsZFJldHJ5PWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX21heFJldHJpZXN8fHRoaXMuX3JldHJpZXMrKz49dGhpcy5fbWF4UmV0cmllcylyZXR1cm4hMTtpZih0aGlzLl9yZXRyeUNhbGxiYWNrKXRyeXt2YXIgbj10aGlzLl9yZXRyeUNhbGxiYWNrKGUsdCk7aWYoITA9PT1uKXJldHVybiEwO2lmKCExPT09bilyZXR1cm4hMX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfWlmKHQmJnQuc3RhdHVzJiZ0LnN0YXR1cz49NTAwJiY1MDEhPXQuc3RhdHVzKXJldHVybiEwO2lmKGUpe2lmKGUuY29kZSYmfmEuaW5kZXhPZihlLmNvZGUpKXJldHVybiEwO2lmKGUudGltZW91dCYmIkVDT05OQUJPUlRFRCI9PWUuY29kZSlyZXR1cm4hMDtpZihlLmNyb3NzRG9tYWluKXJldHVybiEwfXJldHVybiExfSxvLnByb3RvdHlwZS5fcmV0cnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGVhclRpbWVvdXQoKSx0aGlzLnJlcSYmKHRoaXMucmVxPW51bGwsdGhpcy5yZXE9dGhpcy5yZXF1ZXN0KCkpLHRoaXMuX2Fib3J0ZWQ9ITEsdGhpcy50aW1lZG91dD0hMSx0aGlzLl9lbmQoKX0sby5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSl7dmFyIG49dGhpczt0aGlzLl9lbmRDYWxsZWQmJmNvbnNvbGUud2FybigiV2FybmluZzogc3VwZXJhZ2VudCByZXF1ZXN0IHdhcyBzZW50IHR3aWNlLCBiZWNhdXNlIGJvdGggLmVuZCgpIGFuZCAudGhlbigpIHdlcmUgY2FsbGVkLiBOZXZlciBjYWxsIC5lbmQoKSBpZiB5b3UgdXNlIHByb21pc2VzIiksdGhpcy5fZnVsbGZpbGxlZFByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7bi5lbmQoKGZ1bmN0aW9uKG4scil7bj90KG4pOmUocil9KSl9KSl9cmV0dXJuIHRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlLnRoZW4oZSx0KX0sby5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9LG8ucHJvdG90eXBlLnVzZT1mdW5jdGlvbihlKXtyZXR1cm4gZSh0aGlzKSx0aGlzfSxvLnByb3RvdHlwZS5vaz1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBFcnJvcigiQ2FsbGJhY2sgcmVxdWlyZWQiKTtyZXR1cm4gdGhpcy5fb2tDYWxsYmFjaz1lLHRoaXN9LG8ucHJvdG90eXBlLl9pc1Jlc3BvbnNlT0s9ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYodGhpcy5fb2tDYWxsYmFjaz90aGlzLl9va0NhbGxiYWNrKGUpOmUuc3RhdHVzPj0yMDAmJmUuc3RhdHVzPDMwMCl9LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faGVhZGVyW2UudG9Mb3dlckNhc2UoKV19LG8ucHJvdG90eXBlLmdldEhlYWRlcj1vLnByb3RvdHlwZS5nZXQsby5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7aWYocihlKSl7Zm9yKHZhciBuIGluIGUpdGhpcy5zZXQobixlW25dKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5faGVhZGVyW2UudG9Mb3dlckNhc2UoKV09dCx0aGlzLmhlYWRlcltlXT10LHRoaXN9LG8ucHJvdG90eXBlLnVuc2V0PWZ1bmN0aW9uKGUpe3JldHVybiBkZWxldGUgdGhpcy5faGVhZGVyW2UudG9Mb3dlckNhc2UoKV0sZGVsZXRlIHRoaXMuaGVhZGVyW2VdLHRoaXN9LG8ucHJvdG90eXBlLmZpZWxkPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIi5maWVsZChuYW1lLCB2YWwpIG5hbWUgY2FuIG5vdCBiZSBlbXB0eSIpO2lmKHRoaXMuX2RhdGEmJmNvbnNvbGUuZXJyb3IoIi5maWVsZCgpIGNhbid0IGJlIHVzZWQgaWYgLnNlbmQoKSBpcyB1c2VkLiBQbGVhc2UgdXNlIG9ubHkgLnNlbmQoKSBvciBvbmx5IC5maWVsZCgpICYgLmF0dGFjaCgpIikscihlKSl7Zm9yKHZhciBuIGluIGUpdGhpcy5maWVsZChuLGVbbl0pO3JldHVybiB0aGlzfWlmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgbyBpbiB0KXRoaXMuZmllbGQoZSx0W29dKTtyZXR1cm4gdGhpc31pZihudWxsPT10KXRocm93IG5ldyBFcnJvcigiLmZpZWxkKG5hbWUsIHZhbCkgdmFsIGNhbiBub3QgYmUgZW1wdHkiKTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0JiYodD0iIit0KSx0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChlLHQpLHRoaXN9LG8ucHJvdG90eXBlLmFib3J0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fib3J0ZWQ/dGhpczoodGhpcy5fYWJvcnRlZD0hMCx0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKSx0aGlzLnJlcSYmdGhpcy5yZXEuYWJvcnQoKSx0aGlzLmNsZWFyVGltZW91dCgpLHRoaXMuZW1pdCgiYWJvcnQiKSx0aGlzKX0sby5wcm90b3R5cGUuX2F1dGg9ZnVuY3Rpb24oZSx0LG4scil7c3dpdGNoKG4udHlwZSl7Y2FzZSJiYXNpYyI6dGhpcy5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK3IoZSsiOiIrdCkpO2JyZWFrO2Nhc2UiYXV0byI6dGhpcy51c2VybmFtZT1lLHRoaXMucGFzc3dvcmQ9dDticmVhaztjYXNlImJlYXJlciI6dGhpcy5zZXQoIkF1dGhvcml6YXRpb24iLCJCZWFyZXIgIitlKX1yZXR1cm4gdGhpc30sby5wcm90b3R5cGUud2l0aENyZWRlbnRpYWxzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lJiYoZT0hMCksdGhpcy5fd2l0aENyZWRlbnRpYWxzPWUsdGhpc30sby5wcm90b3R5cGUucmVkaXJlY3RzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXhSZWRpcmVjdHM9ZSx0aGlzfSxvLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IFR5cGVFcnJvcigiSW52YWxpZCBhcmd1bWVudCIpO3JldHVybiB0aGlzLl9tYXhSZXNwb25zZVNpemU9ZSx0aGlzfSxvLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWV0aG9kOnRoaXMubWV0aG9kLHVybDp0aGlzLnVybCxkYXRhOnRoaXMuX2RhdGEsaGVhZGVyczp0aGlzLl9oZWFkZXJ9fSxvLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGUpe3ZhciB0PXIoZSksbj10aGlzLl9oZWFkZXJbImNvbnRlbnQtdHlwZSJdO2lmKHRoaXMuX2Zvcm1EYXRhJiZjb25zb2xlLmVycm9yKCIuc2VuZCgpIGNhbid0IGJlIHVzZWQgaWYgLmF0dGFjaCgpIG9yIC5maWVsZCgpIGlzIHVzZWQuIFBsZWFzZSB1c2Ugb25seSAuc2VuZCgpIG9yIG9ubHkgLmZpZWxkKCkgJiAuYXR0YWNoKCkiKSx0JiYhdGhpcy5fZGF0YSlBcnJheS5pc0FycmF5KGUpP3RoaXMuX2RhdGE9W106dGhpcy5faXNIb3N0KGUpfHwodGhpcy5fZGF0YT17fSk7ZWxzZSBpZihlJiZ0aGlzLl9kYXRhJiZ0aGlzLl9pc0hvc3QodGhpcy5fZGF0YSkpdGhyb3cgRXJyb3IoIkNhbid0IG1lcmdlIHRoZXNlIHNlbmQgY2FsbHMiKTtpZih0JiZyKHRoaXMuX2RhdGEpKWZvcih2YXIgbyBpbiBlKXRoaXMuX2RhdGFbb109ZVtvXTtlbHNlInN0cmluZyI9PXR5cGVvZiBlPyhufHx0aGlzLnR5cGUoImZvcm0iKSxuPXRoaXMuX2hlYWRlclsiY29udGVudC10eXBlIl0sdGhpcy5fZGF0YT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIj09bj90aGlzLl9kYXRhP3RoaXMuX2RhdGErIiYiK2U6ZToodGhpcy5fZGF0YXx8IiIpK2UpOnRoaXMuX2RhdGE9ZTtyZXR1cm4hdHx8dGhpcy5faXNIb3N0KGUpP3RoaXM6KG58fHRoaXMudHlwZSgianNvbiIpLHRoaXMpfSxvLnByb3RvdHlwZS5zb3J0UXVlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3NvcnQ9dm9pZCAwPT09ZXx8ZSx0aGlzfSxvLnByb3RvdHlwZS5fZmluYWxpemVRdWVyeVN0cmluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX3F1ZXJ5LmpvaW4oIiYiKTtpZihlJiYodGhpcy51cmwrPSh0aGlzLnVybC5pbmRleE9mKCI/Iik+PTA/IiYiOiI/IikrZSksdGhpcy5fcXVlcnkubGVuZ3RoPTAsdGhpcy5fc29ydCl7dmFyIHQ9dGhpcy51cmwuaW5kZXhPZigiPyIpO2lmKHQ+PTApe3ZhciBuPXRoaXMudXJsLnN1YnN0cmluZyh0KzEpLnNwbGl0KCImIik7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX3NvcnQ/bi5zb3J0KHRoaXMuX3NvcnQpOm4uc29ydCgpLHRoaXMudXJsPXRoaXMudXJsLnN1YnN0cmluZygwLHQpKyI/IituLmpvaW4oIiYiKX19fSxvLnByb3RvdHlwZS5fYXBwZW5kUXVlcnlTdHJpbmc9ZnVuY3Rpb24oKXtjb25zb2xlLnRyYWNlKCJVbnN1cHBvcnRlZCIpfSxvLnByb3RvdHlwZS5fdGltZW91dEVycm9yPWZ1bmN0aW9uKGUsdCxuKXtpZighdGhpcy5fYWJvcnRlZCl7dmFyIHI9bmV3IEVycm9yKGUrdCsibXMgZXhjZWVkZWQiKTtyLnRpbWVvdXQ9dCxyLmNvZGU9IkVDT05OQUJPUlRFRCIsci5lcnJubz1uLHRoaXMudGltZWRvdXQ9ITAsdGhpcy5hYm9ydCgpLHRoaXMuY2FsbGJhY2socil9fSxvLnByb3RvdHlwZS5fc2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX3RpbWVvdXQmJiF0aGlzLl90aW1lciYmKHRoaXMuX3RpbWVyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5fdGltZW91dEVycm9yKCJUaW1lb3V0IG9mICIsZS5fdGltZW91dCwiRVRJTUUiKX0pLHRoaXMuX3RpbWVvdXQpKSx0aGlzLl9yZXNwb25zZVRpbWVvdXQmJiF0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lciYmKHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5fdGltZW91dEVycm9yKCJSZXNwb25zZSB0aW1lb3V0IG9mICIsZS5fcmVzcG9uc2VUaW1lb3V0LCJFVElNRURPVVQiKX0pLHRoaXMuX3Jlc3BvbnNlVGltZW91dCkpfX0sa09wTjpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiemgtdHciLHttb250aHM6IuS4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IumAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZ5bm0TeaciETml6UiLExMTDoiWVlZWeW5tE3mnIhE5pelIEhIOm1tIixMTExMOiJZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tIixsOiJZWVlZL00vRCIsbGw6IllZWVnlubRN5pyIROaXpSIsbGxsOiJZWVlZ5bm0TeaciETml6UgSEg6bW0iLGxsbGw6IllZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDEyPT09ZSYmKGU9MCksIuWHjOaZqCI9PT10fHwi5pep5LiKIj09PXR8fCLkuIrljYgiPT09dD9lOiLkuK3ljYgiPT09dD9lPj0xMT9lOmUrMTI6IuS4i+WNiCI9PT10fHwi5pma5LiKIj09PXQ/ZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0xMDAqZSt0O3JldHVybiByPDYwMD8i5YeM5pmoIjpyPDkwMD8i5pep5LiKIjpyPDExMzA/IuS4iuWNiCI6cjwxMjMwPyLkuK3ljYgiOnI8MTgwMD8i5LiL5Y2IIjoi5pma5LiKIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rlpKldIExUIixuZXh0RGF5OiJb5piO5aSpXSBMVCIsbmV4dFdlZWs6IlvkuItdZGRkZCBMVCIsbGFzdERheToiW+aYqOWkqV0gTFQiLGxhc3RXZWVrOiJb5LiKXWRkZGQgTFQiLHNhbWVFbHNlOiJMIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSjml6V85pyIfOmAsSkvLG9yZGluYWw6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gZSsi5pelIjtjYXNlIk0iOnJldHVybiBlKyLmnIgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gZSsi6YCxIjtkZWZhdWx0OnJldHVybiBlfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5YWnIixwYXN0OiIlc+WJjSIsczoi5bm+56eSIixzczoiJWQg56eSIixtOiIxIOWIhumQmCIsbW06IiVkIOWIhumQmCIsaDoiMSDlsI/mmYIiLGhoOiIlZCDlsI/mmYIiLGQ6IjEg5aSpIixkZDoiJWQg5aSpIixNOiIxIOWAi+aciCIsTU06IiVkIOWAi+aciCIseToiMSDlubQiLHl5OiIlZCDlubQifX0pfShuKCJ3ZC9SIikpfSxrV2pUOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bigiWjYvbyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0U2VsZWN0aW9uKCkscj1lLmdldEN1cnJlbnRDb250ZW50KCksbz1uLmdldFN0YXJ0S2V5KCksYT1uLmdldFN0YXJ0T2Zmc2V0KCksaT1vLHU9MDtpZih0PmEpe3ZhciBzPXIuZ2V0S2V5QmVmb3JlKG8pO2lmKG51bGw9PXMpaT1vO2Vsc2UgaT1zLHU9ci5nZXRCbG9ja0ZvcktleShzKS5nZXRUZXh0KCkubGVuZ3RofWVsc2UgdT1hLXQ7cmV0dXJuIG4ubWVyZ2Uoe2ZvY3VzS2V5OmksZm9jdXNPZmZzZXQ6dSxpc0JhY2t3YXJkOiEwfSl9fSxrYzlZOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiRjA5dyIpLG89bigiek9SZyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZTt0JiZ0IT09cihlKS5kb2N1bWVudEVsZW1lbnQ7KXt2YXIgbj1vKHQpO2lmKG51bGwhPW4pcmV0dXJuIG47dD10LnBhcmVudE5vZGV9cmV0dXJuIG51bGx9fSxrZDJFOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4sYSl7dD10fHwiJiIsbj1ufHwiPSI7dmFyIGk9e307aWYoInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGgpcmV0dXJuIGk7dmFyIHU9L1wrL2c7ZT1lLnNwbGl0KHQpO3ZhciBzPTFlMzthJiYibnVtYmVyIj09dHlwZW9mIGEubWF4S2V5cyYmKHM9YS5tYXhLZXlzKTt2YXIgbD1lLmxlbmd0aDtzPjAmJmw+cyYmKGw9cyk7Zm9yKHZhciBjPTA7YzxsOysrYyl7dmFyIGYsZCxwLGgseT1lW2NdLnJlcGxhY2UodSwiJTIwIiksbT15LmluZGV4T2Yobik7bT49MD8oZj15LnN1YnN0cigwLG0pLGQ9eS5zdWJzdHIobSsxKSk6KGY9eSxkPSIiKSxwPWRlY29kZVVSSUNvbXBvbmVudChmKSxoPWRlY29kZVVSSUNvbXBvbmVudChkKSxyKGkscCk/byhpW3BdKT9pW3BdLnB1c2goaCk6aVtwXT1baVtwXSxoXTppW3BdPWh9cmV0dXJuIGl9O3ZhciBvPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9fSwibC8vRiI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbz1uKCJxMXRJIiksYT1zKG8pLGk9KHMobigiMTd4OSIpKSxzKG4oIlpFNDQiKSkpLHU9bigiVkJWWSIpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGwoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBjKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scjtsKHRoaXMsdCk7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsYT1BcnJheShvKSxpPTA7aTxvO2krKylhW2ldPWFyZ3VtZW50c1tpXTtyZXR1cm4gbj1yPWModGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChhKSkpLHIuaGFuZGxlTmV4dENsaWNrPWZ1bmN0aW9uKCl7ci5wcm9wcy5vbk5leHRDbGljayYmci5wcm9wcy5vbk5leHRDbGljaygpfSxyLmhhbmRsZVByZXZpb3VzQ2xpY2s9ZnVuY3Rpb24oKXtyLnByb3BzLm9uUHJldmlvdXNDbGljayYmci5wcm9wcy5vblByZXZpb3VzQ2xpY2soKX0sci5oYW5kbGVOZXh0S2V5RG93bj1mdW5jdGlvbihlKXtlLmtleUNvZGUhPT11LkVOVEVSJiZlLmtleUNvZGUhPT11LlNQQUNFfHwoZS5wcmV2ZW50RGVmYXVsdCgpLHIuaGFuZGxlTmV4dENsaWNrKCkpfSxyLmhhbmRsZVByZXZpb3VzS2V5RG93bj1mdW5jdGlvbihlKXtlLmtleUNvZGUhPT11LkVOVEVSJiZlLmtleUNvZGUhPT11LlNQQUNFfHwoZS5wcmV2ZW50RGVmYXVsdCgpLHIuaGFuZGxlUHJldmlvdXNDbGljaygpKX0sYyhyLG4pfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSkscih0LFt7a2V5OiJzaG91bGRDb21wb25lbnRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmxhYmVscyE9PXRoaXMucHJvcHMubGFiZWxzfHxlLmRpciE9PXRoaXMucHJvcHMuZGlyfHx0aGlzLnByb3BzLnNob3dQcmV2aW91c0J1dHRvbiE9PWUuc2hvd1ByZXZpb3VzQnV0dG9ufHx0aGlzLnByb3BzLnNob3dOZXh0QnV0dG9uIT09ZS5zaG93TmV4dEJ1dHRvbn19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jbGFzc05hbWVzLG49ZS5jbGFzc05hbWUscj1lLnNob3dQcmV2aW91c0J1dHRvbixvPWUuc2hvd05leHRCdXR0b24saT1lLmxhYmVscyx1PWUuZGlyLHM9dm9pZCAwLGw9dm9pZCAwLGM9dm9pZCAwLGY9dm9pZCAwLGQ9dm9pZCAwLHA9dm9pZCAwOyJydGwiPT09dT8ocz10aGlzLmhhbmRsZU5leHRDbGljayxsPXRoaXMuaGFuZGxlUHJldmlvdXNDbGljayxjPXRoaXMuaGFuZGxlTmV4dEtleURvd24sZj10aGlzLmhhbmRsZVByZXZpb3VzS2V5RG93bixwPXIsZD1vKToocz10aGlzLmhhbmRsZVByZXZpb3VzQ2xpY2ssbD10aGlzLmhhbmRsZU5leHRDbGljayxjPXRoaXMuaGFuZGxlUHJldmlvdXNLZXlEb3duLGY9dGhpcy5oYW5kbGVOZXh0S2V5RG93bixwPW8sZD1yKTt2YXIgaD1kP3QubmF2QnV0dG9uUHJldjp0Lm5hdkJ1dHRvblByZXYrIiAiK3QubmF2QnV0dG9uSW50ZXJhY3Rpb25EaXNhYmxlZCx5PXA/dC5uYXZCdXR0b25OZXh0OnQubmF2QnV0dG9uTmV4dCsiICIrdC5uYXZCdXR0b25JbnRlcmFjdGlvbkRpc2FibGVkLG09YS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHt0YWJJbmRleDoiMCIscm9sZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6aS5wcmV2aW91c01vbnRoLGtleToicHJldmlvdXMiLGNsYXNzTmFtZTpoLG9uS2V5RG93bjpkP2M6dm9pZCAwLG9uQ2xpY2s6ZD9zOnZvaWQgMH0pLHY9YS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHt0YWJJbmRleDoiMCIscm9sZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6aS5uZXh0TW9udGgsa2V5OiJyaWdodCIsY2xhc3NOYW1lOnksb25LZXlEb3duOnA/Zjp2b2lkIDAsb25DbGljazpwP2w6dm9pZCAwfSk7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6bnx8dC5uYXZCYXJ9LCJydGwiPT09dT9bdixtXTpbbSx2XSl9fV0pLHR9KG8uQ29tcG9uZW50KTtmLmRlZmF1bHRQcm9wcz17Y2xhc3NOYW1lczppLmRlZmF1bHQsZGlyOiJsdHIiLGxhYmVsczp7cHJldmlvdXNNb250aDoiUHJldmlvdXMgTW9udGgiLG5leHRNb250aDoiTmV4dCBNb250aCJ9LHNob3dQcmV2aW91c0J1dHRvbjohMCxzaG93TmV4dEJ1dHRvbjohMH0sdC5kZWZhdWx0PWYsZi5wcm9wVHlwZXM9e319LGwxUEY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ2UkdKIiksbz1uLm4ociksYT17fSxpPTAsdT1mdW5jdGlvbihlKXt2YXIgdD1lLG49YVt0XXx8KGFbdF09e30pO2lmKG5bZV0pcmV0dXJuIG5bZV07dmFyIHI9by5hLmNvbXBpbGUoZSk7cmV0dXJuIGk8MWU0JiYobltlXT1yLGkrKykscn07dC5hPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIvIix0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZigiLyI9PT1lKXJldHVybiBlO3ZhciBuPXUoZSk7cmV0dXJuIG4odCx7cHJldHR5OiEwfSl9fSxsRkpuOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSlBjdiIpLG89ci5NYXAsYT1yLk9yZGVyZWRTZXQsaT1yLlJlY29yZCx1PWEoKSxzPXtzdHlsZTp1LGVudGl0eTpudWxsfSxsPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gcigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31uPWUsKHQ9cikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgYT1yLnByb3RvdHlwZTtyZXR1cm4gYS5nZXRTdHlsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgic3R5bGUiKX0sYS5nZXRFbnRpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImVudGl0eSIpfSxhLmhhc1N0eWxlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldFN0eWxlKCkuaW5jbHVkZXMoZSl9LHIuYXBwbHlTdHlsZT1mdW5jdGlvbihlLHQpe3ZhciBuPWUuc2V0KCJzdHlsZSIsZS5nZXRTdHlsZSgpLmFkZCh0KSk7cmV0dXJuIHIuY3JlYXRlKG4pfSxyLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zZXQoInN0eWxlIixlLmdldFN0eWxlKCkucmVtb3ZlKHQpKTtyZXR1cm4gci5jcmVhdGUobil9LHIuYXBwbHlFbnRpdHk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldEVudGl0eSgpPT09dD9lOmUuc2V0KCJlbnRpdHkiLHQpO3JldHVybiByLmNyZWF0ZShuKX0sci5jcmVhdGU9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGM7dmFyIHQ9byh7c3R5bGU6dSxlbnRpdHk6bnVsbH0pLm1lcmdlKGUpLG49Zi5nZXQodCk7aWYobilyZXR1cm4gbjt2YXIgYT1uZXcgcih0KTtyZXR1cm4gZj1mLnNldCh0LGEpLGF9LHJ9KGkocykpLGM9bmV3IGwsZj1vKFtbbyhzKSxjXV0pO2wuRU1QVFk9YyxlLmV4cG9ydHM9bH0sbFNOQTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9fSxsVENSOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJERU0yIikucGFyc2U7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXHMsXSsvZywiICIpLnRyaW0oKX12YXIgYT17fSxpPXt9O3ZhciB1PSEwO3ZhciBzPSExO2Z1bmN0aW9uIGwoZSl7dmFyIHQ9byhlKTtpZihhW3RdKXJldHVybiBhW3RdO3ZhciBuPXIoZSx7ZXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXM6c30pO2lmKCFufHwiRG9jdW1lbnQiIT09bi5raW5kKXRocm93IG5ldyBFcnJvcigiTm90IGEgdmFsaWQgR3JhcGhRTCBkb2N1bWVudC4iKTtyZXR1cm4gbj1mdW5jdGlvbiBlKHQsbil7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO2lmKCJbb2JqZWN0IEFycmF5XSI9PT1yKXJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUodCxuKX0pKTtpZigiW29iamVjdCBPYmplY3RdIiE9PXIpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0LiIpO24mJnQubG9jJiZkZWxldGUgdC5sb2MsdC5sb2MmJihkZWxldGUgdC5sb2Muc3RhcnRUb2tlbixkZWxldGUgdC5sb2MuZW5kVG9rZW4pO3ZhciBvLGEsaSx1PU9iamVjdC5rZXlzKHQpO2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShvKSYmKGE9dFt1W29dXSwiW29iamVjdCBPYmplY3RdIiE9PShpPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKSkmJiJbb2JqZWN0IEFycmF5XSIhPT1pfHwodFt1W29dXT1lKGEsITApKSk7cmV0dXJuIHR9KG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49e30scj1bXSxhPTA7YTxlLmRlZmluaXRpb25zLmxlbmd0aDthKyspe3ZhciBzPWUuZGVmaW5pdGlvbnNbYV07aWYoIkZyYWdtZW50RGVmaW5pdGlvbiI9PT1zLmtpbmQpe3ZhciBsPXMubmFtZS52YWx1ZSxjPW8oKHQ9cy5sb2MpLnNvdXJjZS5ib2R5LnN1YnN0cmluZyh0LnN0YXJ0LHQuZW5kKSk7aS5oYXNPd25Qcm9wZXJ0eShsKSYmIWlbbF1bY10/KHUmJmNvbnNvbGUud2FybigiV2FybmluZzogZnJhZ21lbnQgd2l0aCBuYW1lICIrbCsiIGFscmVhZHkgZXhpc3RzLlxuZ3JhcGhxbC10YWcgZW5mb3JjZXMgYWxsIGZyYWdtZW50IG5hbWVzIGFjcm9zcyB5b3VyIGFwcGxpY2F0aW9uIHRvIGJlIHVuaXF1ZTsgcmVhZCBtb3JlIGFib3V0XG50aGlzIGluIHRoZSBkb2NzOiBodHRwOi8vZGV2LmFwb2xsb2RhdGEuY29tL2NvcmUvZnJhZ21lbnRzLmh0bWwjdW5pcXVlLW5hbWVzIiksaVtsXVtjXT0hMCk6aS5oYXNPd25Qcm9wZXJ0eShsKXx8KGlbbF09e30saVtsXVtjXT0hMCksbltjXXx8KG5bY109ITAsci5wdXNoKHMpKX1lbHNlIHIucHVzaChzKX1yZXR1cm4gZS5kZWZpbml0aW9ucz1yLGV9KG4pLCExKSxhW3RdPW4sbn1mdW5jdGlvbiBjKCl7Zm9yKHZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1lWzBdLG49InN0cmluZyI9PXR5cGVvZiB0P3Q6dFswXSxyPTE7cjxlLmxlbmd0aDtyKyspZVtyXSYmZVtyXS5raW5kJiYiRG9jdW1lbnQiPT09ZVtyXS5raW5kP24rPWVbcl0ubG9jLnNvdXJjZS5ib2R5Om4rPWVbcl0sbis9dFtyXTtyZXR1cm4gbChuKX1jLmRlZmF1bHQ9YyxjLnJlc2V0Q2FjaGVzPWZ1bmN0aW9uKCl7YT17fSxpPXt9fSxjLmRpc2FibGVGcmFnbWVudFdhcm5pbmdzPWZ1bmN0aW9uKCl7dT0hMX0sYy5lbmFibGVFeHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlcz1mdW5jdGlvbigpe3M9ITB9LGMuZGlzYWJsZUV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzPWZ1bmN0aW9uKCl7cz0hMX0sZS5leHBvcnRzPWN9LGxWQlg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJmTkpoIiksbz1uKCJSNWpyIik7ci5kZWZhdWx0Ll9fYWRkTG9jYWxlRGF0YShvLmRlZmF1bHQpLHIuZGVmYXVsdC5kZWZhdWx0TG9jYWxlPSJlbiIsdC5kZWZhdWx0PXIuZGVmYXVsdH0sbFh6bzpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCxuKXt2YXIgcixvO3JldHVybiJtIj09PW4/dD8i0LzQuNC90YPRgtCwIjoi0LzQuNC90YPRgtGDIjplKyIgIisocj0rZSxvPXtzczp0PyLRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQiOiLRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQiLG1tOnQ/ItC80LjQvdGD0YLQsF/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiI6ItC80LjQvdGD0YLRg1/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiIsaGg6ItGH0LDRgV/Rh9Cw0YHQsF/Rh9Cw0YHQvtCyIixkZDoi0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5IixNTToi0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LIiLHl5OiLQs9C+0LRf0LPQvtC00LBf0LvQtdGCIn1bbl0uc3BsaXQoIl8iKSxyJTEwPT0xJiZyJTEwMCE9MTE/b1swXTpyJTEwPj0yJiZyJTEwPD00JiYociUxMDA8MTB8fHIlMTAwPj0yMCk/b1sxXTpvWzJdKX12YXIgbj1bL17Rj9C90LIvaSwvXtGE0LXQsi9pLC9e0LzQsNGAL2ksL17QsNC/0YAvaSwvXtC80LBb0LnRj10vaSwvXtC40Y7QvS9pLC9e0LjRjtC7L2ksL17QsNCy0LMvaSwvXtGB0LXQvS9pLC9e0L7QutGCL2ksL17QvdC+0Y8vaSwvXtC00LXQui9pXTtlLmRlZmluZUxvY2FsZSgicnUiLHttb250aHM6e2Zvcm1hdDoi0Y/QvdCy0LDRgNGPX9GE0LXQstGA0LDQu9GPX9C80LDRgNGC0LBf0LDQv9GA0LXQu9GPX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LPRg9GB0YLQsF/RgdC10L3RgtGP0LHRgNGPX9C+0LrRgtGP0LHRgNGPX9C90L7Rj9Cx0YDRj1/QtNC10LrQsNCx0YDRjyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiLRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0Ontmb3JtYXQ6ItGP0L3Qsi5f0YTQtdCy0YAuX9C80LDRgC5f0LDQv9GALl/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6LiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiLRj9C90LIuX9GE0LXQstGALl/QvNCw0YDRgl/QsNC/0YAuX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouIi5zcGxpdCgiXyIpfSx3ZWVrZGF5czp7c3RhbmRhbG9uZToi0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0LBf0YHRg9Cx0LHQvtGC0LAiLnNwbGl0KCJfIiksZm9ybWF0OiLQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTRg1/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbRg1/RgdGD0LHQsdC+0YLRgyIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovXFsgP1vQktCyXSA/KD860L/RgNC+0YjQu9GD0Y580YHQu9C10LTRg9GO0YnRg9GOfNGN0YLRgyk/ID9cXSA/ZGRkZC99LHdlZWtkYXlzU2hvcnQ6ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbW9udGhzUGFyc2U6bixsb25nTW9udGhzUGFyc2U6bixzaG9ydE1vbnRoc1BhcnNlOm4sbW9udGhzUmVnZXg6L14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1wuP3zQvNCw0YDRgtCwP3zQvNCw0YBcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1wuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1wuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XC4/KS9pLG1vbnRoc1Nob3J0UmVnZXg6L14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1wuP3zQvNCw0YDRgtCwP3zQvNCw0YBcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1wuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1wuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XC4/KS9pLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKNGP0L3QstCw0YBb0Y/RjF180YTQtdCy0YDQsNC7W9GP0YxdfNC80LDRgNGC0LA/fNCw0L/RgNC10Ltb0Y/RjF180LzQsFvRj9C5XXzQuNGO0L1b0Y/RjF180LjRjtC7W9GP0YxdfNCw0LLQs9GD0YHRgtCwP3zRgdC10L3RgtGP0LHRgFvRj9GMXXzQvtC60YLRj9Cx0YBb0Y/RjF180L3QvtGP0LHRgFvRj9GMXXzQtNC10LrQsNCx0YBb0Y/RjF0pL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXijRj9C90LJcLnzRhNC10LLRgD9cLnzQvNCw0YBb0YIuXXzQsNC/0YBcLnzQvNCwW9GP0LldfNC40Y7QvVvRjNGPLl180LjRjtC7W9GM0Y8uXXzQsNCy0LNcLnzRgdC10L3Rgj9cLnzQvtC60YJcLnzQvdC+0Y/QsT9cLnzQtNC10LpcLikvaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINCzLiIsTExMOiJEIE1NTU0gWVlZWSDQsy4sIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZINCzLiwgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb0KHQtdCz0L7QtNC90Y8sINCyXSBMVCIsbmV4dERheToiW9CX0LDQstGC0YDQsCwg0LJdIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCwg0LJdIExUIixuZXh0V2VlazpmdW5jdGlvbihlKXtpZihlLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQsIFvQsl0gTFQiOiJb0JJdIGRkZGQsIFvQsl0gTFQiO3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlvQkiDRgdC70LXQtNGD0Y7RidC10LVdIGRkZGQsIFvQsl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJb0JIg0YHQu9C10LTRg9GO0YnQuNC5XSBkZGRkLCBb0LJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW9CSINGB0LvQtdC00YPRjtGJ0YPRjl0gZGRkZCwgW9CyXSBMVCJ9fSxsYXN0V2VlazpmdW5jdGlvbihlKXtpZihlLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQsIFvQsl0gTFQiOiJb0JJdIGRkZGQsIFvQsl0gTFQiO3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlvQkiDQv9GA0L7RiNC70L7QtV0gZGRkZCwgW9CyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIlvQkiDQv9GA0L7RiNC70YvQuV0gZGRkZCwgW9CyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIlvQkiDQv9GA0L7RiNC70YPRjl0gZGRkZCwgW9CyXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLRh9C10YDQtdC3ICVzIixwYXN0OiIlcyDQvdCw0LfQsNC0IixzOiLQvdC10YHQutC+0LvRjNC60L4g0YHQtdC60YPQvdC0Iixzczp0LG06dCxtbTp0LGg6ItGH0LDRgSIsaGg6dCxkOiLQtNC10L3RjCIsZGQ6dCxNOiLQvNC10YHRj9GGIixNTTp0LHk6ItCz0L7QtCIseXk6dH0sbWVyaWRpZW1QYXJzZTov0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQsC9pLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C10YDQsCkkLy50ZXN0KGUpfSxtZXJpZGllbTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGU8ND8i0L3QvtGH0LgiOmU8MTI/ItGD0YLRgNCwIjplPDE3PyLQtNC90Y8iOiLQstC10YfQtdGA0LAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LSjQuXzQs9C+fNGPKS8sb3JkaW5hbDpmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlIk0iOmNhc2UiZCI6Y2FzZSJEREQiOnJldHVybiBlKyIt0LkiO2Nhc2UiRCI6cmV0dXJuIGUrIi3Qs9C+IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGUrIi3RjyI7ZGVmYXVsdDpyZXR1cm4gZX19LHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSxsczgyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZSxuPXQuaGFzT3duUHJvcGVydHkscj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxvPXIuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixhPXIuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsaT1yLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gdShlLHQsbixyKXt2YXIgbz10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGM/dDpjLGE9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksaT1uZXcgRShyfHxbXSk7cmV0dXJuIGEuX2ludm9rZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24obyxhKXtpZigiZXhlY3V0aW5nIj09PXIpdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1yKXtpZigidGhyb3ciPT09byl0aHJvdyBhO3JldHVybiBrKCl9Zm9yKG4ubWV0aG9kPW8sbi5hcmc9YTs7KXt2YXIgaT1uLmRlbGVnYXRlO2lmKGkpe3ZhciB1PWIoaSxuKTtpZih1KXtpZih1PT09bCljb250aW51ZTtyZXR1cm4gdX19aWYoIm5leHQiPT09bi5tZXRob2Qpbi5zZW50PW4uX3NlbnQ9bi5hcmc7ZWxzZSBpZigidGhyb3ciPT09bi5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1yKXRocm93IHI9ImNvbXBsZXRlZCIsbi5hcmc7bi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyl9ZWxzZSJyZXR1cm4iPT09bi5tZXRob2QmJm4uYWJydXB0KCJyZXR1cm4iLG4uYXJnKTtyPSJleGVjdXRpbmciO3ZhciBjPXMoZSx0LG4pO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihyPW4uZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGMuYXJnPT09bCljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpuLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihyPSJjb21wbGV0ZWQiLG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9Yy5hcmcpfX19KGUsbixpKSxhfWZ1bmN0aW9uIHMoZSx0LG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQsbil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9dTt2YXIgbD17fTtmdW5jdGlvbiBjKCl7fWZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gZCgpe312YXIgcD17fTtwW29dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciBoPU9iamVjdC5nZXRQcm90b3R5cGVPZix5PWgmJmgoaChPKFtdKSkpO3kmJnkhPT10JiZuLmNhbGwoeSxvKSYmKHA9eSk7dmFyIG09ZC5wcm90b3R5cGU9Yy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwKTtmdW5jdGlvbiB2KGUpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9fSkpfWZ1bmN0aW9uIGcoZSl7dmFyIHQ7dGhpcy5faW52b2tlPWZ1bmN0aW9uKHIsbyl7ZnVuY3Rpb24gYSgpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxhKXshZnVuY3Rpb24gdChyLG8sYSxpKXt2YXIgdT1zKGVbcl0sZSxvKTtpZigidGhyb3ciIT09dS50eXBlKXt2YXIgbD11LmFyZyxjPWwudmFsdWU7cmV0dXJuIGMmJiJvYmplY3QiPT10eXBlb2YgYyYmbi5jYWxsKGMsIl9fYXdhaXQiKT9Qcm9taXNlLnJlc29sdmUoYy5fX2F3YWl0KS50aGVuKChmdW5jdGlvbihlKXt0KCJuZXh0IixlLGEsaSl9KSwoZnVuY3Rpb24oZSl7dCgidGhyb3ciLGUsYSxpKX0pKTpQcm9taXNlLnJlc29sdmUoYykudGhlbigoZnVuY3Rpb24oZSl7bC52YWx1ZT1lLGEobCl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQoInRocm93IixlLGEsaSl9KSl9aSh1LmFyZyl9KHIsbyx0LGEpfSkpfXJldHVybiB0PXQ/dC50aGVuKGEsYSk6YSgpfX1mdW5jdGlvbiBiKGUsdCl7dmFyIG49ZS5pdGVyYXRvclt0Lm1ldGhvZF07aWYodm9pZCAwPT09bil7aWYodC5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT10Lm1ldGhvZCl7aWYoZS5pdGVyYXRvci5yZXR1cm4mJih0Lm1ldGhvZD0icmV0dXJuIix0LmFyZz12b2lkIDAsYihlLHQpLCJ0aHJvdyI9PT10Lm1ldGhvZCkpcmV0dXJuIGw7dC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kIil9cmV0dXJuIGx9dmFyIHI9cyhuLGUuaXRlcmF0b3IsdC5hcmcpO2lmKCJ0aHJvdyI9PT1yLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9ci5hcmcsdC5kZWxlZ2F0ZT1udWxsLGw7dmFyIG89ci5hcmc7cmV0dXJuIG8/by5kb25lPyh0W2UucmVzdWx0TmFtZV09by52YWx1ZSx0Lm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09dC5tZXRob2QmJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSx0LmRlbGVnYXRlPW51bGwsbCk6bzoodC5tZXRob2Q9InRocm93Iix0LmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuZGVsZWdhdGU9bnVsbCxsKX1mdW5jdGlvbiB3KGUpe3ZhciB0PXt0cnlMb2M6ZVswXX07MSBpbiBlJiYodC5jYXRjaExvYz1lWzFdKSwyIGluIGUmJih0LmZpbmFsbHlMb2M9ZVsyXSx0LmFmdGVyTG9jPWVbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKHQpfWZ1bmN0aW9uIF8oZSl7dmFyIHQ9ZS5jb21wbGV0aW9ufHx7fTt0LnR5cGU9Im5vcm1hbCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIEUoZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLGUuZm9yRWFjaCh3LHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIE8oZSl7aWYoZSl7dmFyIHQ9ZVtvXTtpZih0KXJldHVybiB0LmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgcj0tMSxhPWZ1bmN0aW9uIHQoKXtmb3IoOysrcjxlLmxlbmd0aDspaWYobi5jYWxsKGUscikpcmV0dXJuIHQudmFsdWU9ZVtyXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT12b2lkIDAsdC5kb25lPSEwLHR9O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6a319ZnVuY3Rpb24gaygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIGYucHJvdG90eXBlPW0uY29uc3RydWN0b3I9ZCxkLmNvbnN0cnVjdG9yPWYsZFtpXT1mLmRpc3BsYXlOYW1lPSJHZW5lcmF0b3JGdW5jdGlvbiIsZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1mfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxkKTooZS5fX3Byb3RvX189ZCxpIGluIGV8fChlW2ldPSJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG0pLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LHYoZy5wcm90b3R5cGUpLGcucHJvdG90eXBlW2FdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUuQXN5bmNJdGVyYXRvcj1nLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyl7dmFyIGE9bmV3IGcodSh0LG4scixvKSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTphLm5leHQoKX0pKX0sdihtKSxtW2ldPSJHZW5lcmF0b3IiLG1bb109ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sbS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuIGluIGUpdC5wdXNoKG4pO3JldHVybiB0LnJldmVyc2UoKSxmdW5jdGlvbiBuKCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciByPXQucG9wKCk7aWYociBpbiBlKXJldHVybiBuLnZhbHVlPXIsbi5kb25lPSExLG59cmV0dXJuIG4uZG9uZT0hMCxufX0sZS52YWx1ZXM9TyxFLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RSxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKF8pLCFlKWZvcih2YXIgdCBpbiB0aGlzKSJ0Ij09PXQuY2hhckF0KDApJiZuLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciB0PXRoaXM7ZnVuY3Rpb24gcihuLHIpe3JldHVybiBpLnR5cGU9InRocm93IixpLmFyZz1lLHQubmV4dD1uLHImJih0Lm1ldGhvZD0ibmV4dCIsdC5hcmc9dm9pZCAwKSwhIXJ9Zm9yKHZhciBvPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtvPj0wOy0tbyl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW29dLGk9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiByKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgdT1uLmNhbGwoYSwiY2F0Y2hMb2MiKSxzPW4uY2FsbChhLCJmaW5hbGx5TG9jIik7aWYodSYmcyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIHIoYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gcihhLmZpbmFsbHlMb2MpfWVsc2UgaWYodSl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIHIoYS5jYXRjaExvYywhMCl9ZWxzZXtpZighcyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gcihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3I+PTA7LS1yKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbcl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmbi5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGE9bzticmVha319YSYmKCJicmVhayI9PT1lfHwiY29udGludWUiPT09ZSkmJmEudHJ5TG9jPD10JiZ0PD1hLmZpbmFsbHlMb2MmJihhPW51bGwpO3ZhciBpPWE/YS5jb21wbGV0aW9uOnt9O3JldHVybiBpLnR5cGU9ZSxpLmFyZz10LGE/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9YS5maW5hbGx5TG9jLGwpOnRoaXMuY29tcGxldGUoaSl9LGNvbXBsZXRlOmZ1bmN0aW9uKGUsdCl7aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4iYnJlYWsiPT09ZS50eXBlfHwiY29udGludWUiPT09ZS50eXBlP3RoaXMubmV4dD1lLmFyZzoicmV0dXJuIj09PWUudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPWUuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1lLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksbH0sZmluaXNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciBuPXRoaXMudHJ5RW50cmllc1t0XTtpZihuLmZpbmFsbHlMb2M9PT1lKXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxfKG4pLGx9fSxjYXRjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgbj10aGlzLnRyeUVudHJpZXNbdF07aWYobi50cnlMb2M9PT1lKXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7XyhuKX1yZXR1cm4gb319dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOk8oZSkscmVzdWx0TmFtZTp0LG5leHRMb2M6bn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLGx9fSxlfShlLmV4cG9ydHMpO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9cn1jYXRjaChlKXtGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShyKX19LGx0Vk86ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIisxanUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLG89WyJHRVQiLCJIRUFEIiwiUE9TVCIsIlBVVCIsIlBBVENIIiwiREVMRVRFIl0sYT1bIkdFVCIsIkhFQUQiXTtyZXR1cm4gdGhpcy5jYWNoZT1lLHRoaXMuZGVmYXVsdHM9dHx8e30sZnVuY3Rpb24odCl7dmFyIGk9ci5yZXNldFByb3BzKG4uZGVmYXVsdHMpO3QuZG9RdWVyeT1mdW5jdGlvbihlKXtyZXR1cm4gaS5kb1F1ZXJ5PWUsdH0sdC5wcnVuZVF1ZXJ5PWZ1bmN0aW9uKGUpe3JldHVybiBpLnBydW5lUXVlcnk9ZSx0fSx0LnBydW5lSGVhZGVyPWZ1bmN0aW9uKGUpe3JldHVybiBpLnBydW5lSGVhZGVyPWUsdH0sdC5wcnVuZT1mdW5jdGlvbihlKXtyZXR1cm4gaS5wcnVuZT1lLHR9LHQucmVzcG9uc2VQcm9wPWZ1bmN0aW9uKGUpe3JldHVybiBpLnJlc3BvbnNlUHJvcD1lLHR9LHQuZXhwaXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gaS5leHBpcmF0aW9uPWUsdH0sdC5jYWNoZVdoZW5FbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4gaS5jYWNoZVdoZW5FbXB0eT1lLHR9LHQuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuZm9yY2VVcGRhdGU9ImJvb2xlYW4iIT10eXBlb2YgZXx8ZSx0fTt2YXIgdT10LmVuZDtyZXR1cm4gdC5lbmQ9ZnVuY3Rpb24obil7aWYodC5zY1JlZGlyZWN0c0xpc3Q9dC5zY1JlZGlyZWN0c0xpc3R8fFtdLHQuc2NSZWRpcmVjdHNMaXN0PXQuc2NSZWRpcmVjdHNMaXN0LmNvbmNhdCh0Ll9yZWRpcmVjdExpc3QpLH5vLmluZGV4T2YodC5tZXRob2QudG9VcHBlckNhc2UoKSkpe3ZhciBzPXQsbD1yLmtleWdlbih0LGkpO35hLmluZGV4T2YodC5tZXRob2QudG9VcHBlckNhc2UoKSk/ZS5nZXQobCwoZnVuY3Rpb24obyxhKXtpZihvfHwhYXx8aS5mb3JjZVVwZGF0ZSl7aWYoIWkuZG9RdWVyeSlyZXR1cm4gci5jYWxsYmFja0V4ZWN1dG9yKG4sbnVsbCxudWxsLGwpO3UuY2FsbCh0LChmdW5jdGlvbih0LG8pe2lmKHQpcmV0dXJuIHIuY2FsbGJhY2tFeGVjdXRvcihuLHQsbyxsKTtpZighdCYmbyl7aWYoby5yZWRpcmVjdHM9cy5zY1JlZGlyZWN0c0xpc3Qsbz1pLnBydW5lP2kucHJ1bmUobyk6aS5yZXNwb25zZVByb3A/b1tpLnJlc3BvbnNlUHJvcF18fG51bGw6ci5ndXRSZXNwb25zZShvKSxyLmlzRW1wdHkobykmJiFpLmNhY2hlV2hlbkVtcHR5KXJldHVybiByLmNhbGxiYWNrRXhlY3V0b3Iobix0LG8sbCk7ZS5zZXQobCxvLGkuZXhwaXJhdGlvbiwoZnVuY3Rpb24oKXtyZXR1cm4gci5jYWxsYmFja0V4ZWN1dG9yKG4sdCxvLGwpfSkpfX0pKX1lbHNlIHIuY2FsbGJhY2tFeGVjdXRvcihuLG8sYSxsKX0pKTp1LmNhbGwodCwoZnVuY3Rpb24odCxvKXtpZih0KXJldHVybiByLmNhbGxiYWNrRXhlY3V0b3Iobix0LG8sbCk7aWYoIXQmJm8pe3ZhciBhPWwucmVwbGFjZSgnIm1ldGhvZCI6Iicrcy5tZXRob2QrJyInLCcibWV0aG9kIjoiR0VUIicpLGk9bC5yZXBsYWNlKCcibWV0aG9kIjoiJytzLm1ldGhvZCsnIicsJyJtZXRob2QiOiJIRUFEIicpO2UuZGVsKFthLGldLChmdW5jdGlvbigpe3IuY2FsbGJhY2tFeGVjdXRvcihuLHQsbyxsKX0pKX19KSl9ZWxzZSB1LmNhbGwodCwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5jYWxsYmFja0V4ZWN1dG9yKG4sZSx0LHZvaWQgMCl9KSl9LHR9fX0sbHdzRTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfX0sbTBMSTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSl8fCJbb2JqZWN0IEFyZ3VtZW50c10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSx1PWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT11Lm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5e3J8fG51bGw9PXUucmV0dXJufHx1LnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn19fSxtMWxSOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LG89e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sYT1PYmplY3QuZGVmaW5lUHJvcGVydHksaT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyx1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMscz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGw9T2JqZWN0LmdldFByb3RvdHlwZU9mLGM9bCYmbChPYmplY3QpO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbixmKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pe2lmKGMpe3ZhciBkPWwobik7ZCYmZCE9PWMmJmUodCxkLGYpfXZhciBwPWkobik7dSYmKHA9cC5jb25jYXQodShuKSkpO2Zvcih2YXIgaD0wO2g8cC5sZW5ndGg7KytoKXt2YXIgeT1wW2hdO2lmKCEoclt5XXx8b1t5XXx8ZiYmZlt5XSkpe3ZhciBtPXMobix5KTt0cnl7YSh0LHksbSl9Y2F0Y2goZSl7fX19cmV0dXJuIHR9cmV0dXJuIHR9fSxtMmF4OmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gNyooZSsxKSsyMH19LG03NVM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2luaXRPRFM6ZnVuY3Rpb24oKXt9LGhhbmRsZUV4dGVuc2lvbkNhdXNlZEVycm9yOmZ1bmN0aW9uKCl7fX19LG1GeVY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiaW52YXJpYW50KC4uLik6IFNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShuPjI/bi0yOjApLGE9MjthPG47YSsrKW9bYS0yXT1hcmd1bWVudHNbYV07aWYocih0KSwhZSl7dmFyIGk7aWYodm9pZCAwPT09dClpPW5ldyBFcnJvcigiTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iKTtlbHNle3ZhciB1PTA7KGk9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZywoZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKG9bdSsrXSl9KSkpKS5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10aHJvdyBpLmZyYW1lc1RvUG9wPTEsaX19fSxtSG51OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbmV3IERhdGUoZS5nZXRUaW1lKCkpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4oZS52YWx1ZU9mKCkpfWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj1yKGUpO3JldHVybiBuLnNldE1vbnRoKGUuZ2V0TW9udGgoKSt0KSxufWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4hKCFlfHwhdCkmJihlLmdldERhdGUoKT09PXQuZ2V0RGF0ZSgpJiZlLmdldE1vbnRoKCk9PT10LmdldE1vbnRoKCkmJmUuZ2V0RnVsbFllYXIoKT09PXQuZ2V0RnVsbFllYXIoKSl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiEoIWV8fCF0KSYmKGUuZ2V0TW9udGgoKT09PXQuZ2V0TW9udGgoKSYmZS5nZXRGdWxsWWVhcigpPT09dC5nZXRGdWxsWWVhcigpKX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHIoZSkuc2V0SG91cnMoMCwwLDAsMCk8cih0KS5zZXRIb3VycygwLDAsMCwwKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIHIoZSkuc2V0SG91cnMoMCwwLDAsMCk+cih0KS5zZXRIb3VycygwLDAsMCwwKX1mdW5jdGlvbiBjKGUpe3ZhciB0PW5ldyBEYXRlO3JldHVybiB0LnNldEhvdXJzKDAsMCwwLDApLHMoZSx0KX1mdW5jdGlvbiBmKGUpe3ZhciB0PW5ldyBEYXRlKChuZXcgRGF0ZSkuZ2V0VGltZSgpKzg2NGU1KTtyZXR1cm4gdC5zZXRIb3VycygwLDAsMCwwKSxlPj10fWZ1bmN0aW9uIGQoZSx0LG4pe3ZhciBvPXIoZSk7cmV0dXJuIG8uc2V0SG91cnMoMCwwLDAsMCksbChvLHQpJiZzKG8sbil8fGwobyxuKSYmcyhvLHQpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOntmcm9tOm51bGwsdG86bnVsbH0sbj10LmZyb20scj10LnRvO3JldHVybiBuP24mJnImJmkobixyKSYmaShlLG4pPyhuPW51bGwscj1udWxsKTpyJiZzKGUsbik/bj1lOnImJmkoZSxyKT8obj1lLHI9ZSk6cyhyPWUsbikmJihyPW4sbj1lKTpuPWUse2Zyb206bix0bzpyfX1mdW5jdGlvbiBoKGUsdCl7dmFyIG49dC5mcm9tLHI9dC50bztyZXR1cm4gbiYmaShlLG4pfHxyJiZpKGUscil8fG4mJnImJmQoZSxuLHIpfWZ1bmN0aW9uIHkoZSl7dmFyIHQ9cihlKTtyZXR1cm4gdC5zZXRIb3VycygwLDAsMCksdC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzQtKHQuZ2V0RGF5KCl8fDcpKSxNYXRoLmNlaWwoKCh0LW5ldyBEYXRlKHQuZ2V0RnVsbFllYXIoKSwwLDEpKS84NjRlNSsxKS83KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5jbG9uZT1yLHQuaXNEYXRlPW8sdC5hZGRNb250aHM9YSx0LmlzU2FtZURheT1pLHQuaXNTYW1lTW9udGg9dSx0LmlzRGF5QmVmb3JlPXMsdC5pc0RheUFmdGVyPWwsdC5pc1Bhc3REYXk9Yyx0LmlzRnV0dXJlRGF5PWYsdC5pc0RheUJldHdlZW49ZCx0LmFkZERheVRvUmFuZ2U9cCx0LmlzRGF5SW5SYW5nZT1oLHQuZ2V0V2Vla051bWJlcj15LHQuZGVmYXVsdD17YWRkRGF5VG9SYW5nZTpwLGFkZE1vbnRoczphLGNsb25lOnIsZ2V0V2Vla051bWJlcjp5LGlzRGF0ZTpvLGlzRGF5QWZ0ZXI6bCxpc0RheUJlZm9yZTpzLGlzRGF5QmV0d2VlbjpkLGlzRGF5SW5SYW5nZTpoLGlzRnV0dXJlRGF5OmYsaXNQYXN0RGF5OmMsaXNTYW1lRGF5OmksaXNTYW1lTW9udGg6dX19LG1MdzE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJxMXRJIiksbz1uLm4ociksYT1uKCIxN3g5IiksaT1uLm4oYSksdT1uKCIyVzZ6Iikscz1uLm4odSksbD1uKCJRTGFQIiksYz1uLm4obCksZj1uKCJMaEN2IiksZD1uKCJsMVBGIikscD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTtmdW5jdGlvbiBoKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24geShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBtPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gaCh0aGlzLHQpLHkodGhpcyxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0LnByb3RvdHlwZS5pc1N0YXRpYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHQucm91dGVyJiZ0aGlzLmNvbnRleHQucm91dGVyLnN0YXRpY0NvbnRleHR9LHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxNb3VudD1mdW5jdGlvbigpe2MoKSh0aGlzLmNvbnRleHQucm91dGVyLCJZb3Ugc2hvdWxkIG5vdCB1c2UgPFJlZGlyZWN0PiBvdXRzaWRlIGEgPFJvdXRlcj4iKSx0aGlzLmlzU3RhdGljKCkmJnRoaXMucGVyZm9ybSgpfSx0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3RoaXMuaXNTdGF0aWMoKXx8dGhpcy5wZXJmb3JtKCl9LHQucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QoZi5jKShlLnRvKSxuPU9iamVjdChmLmMpKHRoaXMucHJvcHMudG8pO09iamVjdChmLmYpKHQsbik/cygpKCExLCJZb3UgdHJpZWQgdG8gcmVkaXJlY3QgdG8gdGhlIHNhbWUgcm91dGUgeW91J3JlIGN1cnJlbnRseSBvbjogXCIiK24ucGF0aG5hbWUrbi5zZWFyY2grJyInKTp0aGlzLnBlcmZvcm0oKX0sdC5wcm90b3R5cGUuY29tcHV0ZVRvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29tcHV0ZWRNYXRjaCxuPWUudG87cmV0dXJuIHQ/InN0cmluZyI9PXR5cGVvZiBuP09iamVjdChkLmEpKG4sdC5wYXJhbXMpOnAoe30sbix7cGF0aG5hbWU6T2JqZWN0KGQuYSkobi5wYXRobmFtZSx0LnBhcmFtcyl9KTpufSx0LnByb3RvdHlwZS5wZXJmb3JtPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb250ZXh0LnJvdXRlci5oaXN0b3J5LHQ9dGhpcy5wcm9wcy5wdXNoLG49dGhpcy5jb21wdXRlVG8odGhpcy5wcm9wcyk7dD9lLnB1c2gobik6ZS5yZXBsYWNlKG4pfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdH0oby5hLkNvbXBvbmVudCk7bS5wcm9wVHlwZXM9e2NvbXB1dGVkTWF0Y2g6aS5hLm9iamVjdCxwdXNoOmkuYS5ib29sLGZyb206aS5hLnN0cmluZyx0bzppLmEub25lT2ZUeXBlKFtpLmEuc3RyaW5nLGkuYS5vYmplY3RdKS5pc1JlcXVpcmVkfSxtLmRlZmF1bHRQcm9wcz17cHVzaDohMX0sbS5jb250ZXh0VHlwZXM9e3JvdXRlcjppLmEuc2hhcGUoe2hpc3Rvcnk6aS5hLnNoYXBlKHtwdXNoOmkuYS5mdW5jLmlzUmVxdWlyZWQscmVwbGFjZTppLmEuZnVuYy5pc1JlcXVpcmVkfSkuaXNSZXF1aXJlZCxzdGF0aWNDb250ZXh0OmkuYS5vYmplY3R9KS5pc1JlcXVpcmVkfSx0LmE9bX0sbU1pSDpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9IiIsbihuLnM9NjIpfSh7MDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJxMXRJIil9LDE6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiSHNxZyIpfSwxMDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJYR0JiIil9LDEyOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjJTMkUiKX0sMTM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicFl4VCIpfSwxNDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJZWkRWIil9LDI6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiNWY3biIpfSwyMjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJwUnZjIil9LDM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigidlYrRyIpfSw0OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjE3eDkiKX0sNDc6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiRjdaUyIpfSw1OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInljMmUiKX0sNTE6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiTjNrNCIpfSw2OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlRTWVEiKX0sNjI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYT1fKG4oMCkpLGk9XyhuKDQpKSx1PV8obigxNCkpLHM9XyhuKDEwKSksbD1uKDEpLGM9XyhuKDcpKSxmPV8obig2KSksZD1uKDMpLHA9XyhuKDUpKSxoPV8obig1MSkpLHk9XyhuKDQ3KSksbT1fKG4oMjIpKSx2PV8obigxMykpLGc9XyhuKDgpKSxiPV8obigxMikpLHc9bigyKTtmdW5jdGlvbiBfKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgRT0oMCxsLmZvcmJpZEV4dHJhUHJvcHMpKHttb250aDpzLmRlZmF1bHQubW9tZW50T2JqLGlzVmlzaWJsZTppLmRlZmF1bHQuYm9vbCxlbmFibGVPdXRzaWRlRGF5czppLmRlZmF1bHQuYm9vbCxtb2RpZmllcnM6aS5kZWZhdWx0Lm9iamVjdCxvcmllbnRhdGlvbjpnLmRlZmF1bHQsZGF5U2l6ZTpsLm5vbk5lZ2F0aXZlSW50ZWdlcixvbkRheUNsaWNrOmkuZGVmYXVsdC5mdW5jLG9uRGF5TW91c2VFbnRlcjppLmRlZmF1bHQuZnVuYyxvbkRheU1vdXNlTGVhdmU6aS5kZWZhdWx0LmZ1bmMscmVuZGVyTW9udGg6aS5kZWZhdWx0LmZ1bmMscmVuZGVyRGF5OmkuZGVmYXVsdC5mdW5jLGZpcnN0RGF5T2ZXZWVrOmIuZGVmYXVsdCxmb2N1c2VkRGF0ZTpzLmRlZmF1bHQubW9tZW50T2JqLGlzRm9jdXNlZDppLmRlZmF1bHQuYm9vbCxtb250aEZvcm1hdDppLmRlZmF1bHQuc3RyaW5nLHBocmFzZXM6aS5kZWZhdWx0LnNoYXBlKCgwLHAuZGVmYXVsdCkoZC5DYWxlbmRhckRheVBocmFzZXMpKX0pLE89e21vbnRoOigwLGMuZGVmYXVsdCkoKSxpc1Zpc2libGU6ITAsZW5hYmxlT3V0c2lkZURheXM6ITEsbW9kaWZpZXJzOnt9LG9yaWVudGF0aW9uOncuSE9SSVpPTlRBTF9PUklFTlRBVElPTixkYXlTaXplOncuREFZX1NJWkUsb25EYXlDbGljazpmdW5jdGlvbigpe30sb25EYXlNb3VzZUVudGVyOmZ1bmN0aW9uKCl7fSxvbkRheU1vdXNlTGVhdmU6ZnVuY3Rpb24oKXt9LHJlbmRlck1vbnRoOm51bGwscmVuZGVyRGF5Om51bGwsZmlyc3REYXlPZldlZWs6bnVsbCxmb2N1c2VkRGF0ZTpudWxsLGlzRm9jdXNlZDohMSxtb250aEZvcm1hdDoiTU1NTSBZWVlZIixwaHJhc2VzOmQuQ2FsZW5kYXJEYXlQaHJhc2VzfSxrPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCk7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlKSk7cmV0dXJuIG4uc3RhdGU9e3dlZWtzOigwLHkuZGVmYXVsdCkoZS5tb250aCxlLmVuYWJsZU91dHNpZGVEYXlzLG51bGw9PWUuZmlyc3REYXlPZldlZWs/Yy5kZWZhdWx0LmxvY2FsZURhdGEoKS5maXJzdERheU9mV2VlaygpOmUuZmlyc3REYXlPZldlZWspfSxufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrKHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLm1vbnRoLG49ZS5lbmFibGVPdXRzaWRlRGF5cyxyPWUuZmlyc3REYXlPZldlZWs7dC5pc1NhbWUodGhpcy5wcm9wcy5tb250aCkmJm49PT10aGlzLnByb3BzLmVuYWJsZU91dHNpZGVEYXlzJiZyPT09dGhpcy5wcm9wcy5maXJzdERheU9mV2Vla3x8dGhpcy5zZXRTdGF0ZSh7d2Vla3M6KDAseS5kZWZhdWx0KSh0LG4sbnVsbD09cj9jLmRlZmF1bHQubG9jYWxlRGF0YSgpLmZpcnN0RGF5T2ZXZWVrKCk6cil9KX19LHtrZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCx1LmRlZmF1bHQpKHRoaXMsZSx0KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5tb250aCxuPWUubW9udGhGb3JtYXQscj1lLm9yaWVudGF0aW9uLG89ZS5pc1Zpc2libGUsaT1lLm1vZGlmaWVycyx1PWUub25EYXlDbGljayxzPWUub25EYXlNb3VzZUVudGVyLGw9ZS5vbkRheU1vdXNlTGVhdmUsYz1lLnJlbmRlck1vbnRoLGQ9ZS5yZW5kZXJEYXkscD1lLmRheVNpemUseT1lLmZvY3VzZWREYXRlLGc9ZS5pc0ZvY3VzZWQsYj1lLnBocmFzZXMsXz10aGlzLnN0YXRlLndlZWtzLEU9Yz9jKHQpOnQuZm9ybWF0KG4pLE89KDAsZi5kZWZhdWx0KSgiQ2FsZW5kYXJNb250aCIseyJDYWxlbmRhck1vbnRoLS1ob3Jpem9udGFsIjpyPT09dy5IT1JJWk9OVEFMX09SSUVOVEFUSU9OLCJDYWxlbmRhck1vbnRoLS12ZXJ0aWNhbCI6cj09PXcuVkVSVElDQUxfT1JJRU5UQVRJT04sIkNhbGVuZGFyTW9udGgtLXZlcnRpY2FsLXNjcm9sbGFibGUiOnI9PT13LlZFUlRJQ0FMX1NDUk9MTEFCTEV9KTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTpPLCJkYXRhLXZpc2libGUiOm99LGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtpZDoiQ2FsZW5kYXJNb250aF9fY2FwdGlvbiIsY2xhc3NOYW1lOiJDYWxlbmRhck1vbnRoX19jYXB0aW9uIGpzLUNhbGVuZGFyTW9udGhfX2NhcHRpb24ifSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3Ryb25nIixudWxsLEUpKSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgidGFibGUiLHtyb2xlOiJwcmVzZW50YXRpb24ifSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgidGJvZHkiLHtjbGFzc05hbWU6ImpzLUNhbGVuZGFyTW9udGhfX2dyaWQifSxfLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInRyIix7a2V5Om59LGUubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChoLmRlZmF1bHQse2RheTplLGRheVNpemU6cCxpc091dHNpZGVEYXk6IWV8fGUubW9udGgoKSE9PXQubW9udGgoKSx0YWJJbmRleDpvJiYoMCxtLmRlZmF1bHQpKGUseSk/MDotMSxpc0ZvY3VzZWQ6ZyxrZXk6bixvbkRheU1vdXNlRW50ZXI6cyxvbkRheU1vdXNlTGVhdmU6bCxvbkRheUNsaWNrOnUscmVuZGVyRGF5OmQscGhyYXNlczpiLG1vZGlmaWVyczppWygwLHYuZGVmYXVsdCkoZSldfSl9KSkpfSkpKSkpfX1dKSx0fShhLmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9ayxrLnByb3BUeXBlcz1FLGsuZGVmYXVsdFByb3BzPU99LDc6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigid2QvUiIpfSw4OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oImFFNlUiKX19KX0sbWJLcjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdCxuLHI7cj12b2lkIDAsKG49Il91cmkiKWluKHQ9dGhpcyk/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbbl09cix0aGlzLl91cmk9ZX1yZXR1cm4gZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXJpfSxlfSgpO2UuZXhwb3J0cz1yfSxtclNHOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQsImMiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQodCwiZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKHQsImIiLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZCh0LCJkIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQodCwiZiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSk7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ocj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYoZVtuXT10W25dKX0pKGUsdCl9O2Z1bmN0aW9uIG8oZSx0KXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXIoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9dmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4oYT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGkoZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKG51bGwhPWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihvLGEpe2Z1bmN0aW9uIGkoZSl7dHJ5e3Moci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiB1KGUpe3RyeXtzKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7ZS5kb25lP28oZS52YWx1ZSk6bmV3IG4oKGZ1bmN0aW9uKHQpe3QoZS52YWx1ZSl9KSkudGhlbihpLHUpfXMoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiBzKGUsdCl7dmFyIG4scixvLGEsaT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDp1KDApLHRocm93OnUoMSkscmV0dXJuOnUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gdShhKXtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7aTspdHJ5e2lmKG49MSxyJiYobz0yJmFbMF0/ci5yZXR1cm46YVswXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGFbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGE9WzImYVswXSxvLnZhbHVlXSksYVswXSl7Y2FzZSAwOmNhc2UgMTpvPWE7YnJlYWs7Y2FzZSA0OnJldHVybiBpLmxhYmVsKysse3ZhbHVlOmFbMV0sZG9uZTohMX07Y2FzZSA1OmkubGFiZWwrKyxyPWFbMV0sYT1bMF07Y29udGludWU7Y2FzZSA3OmE9aS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWkudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWFbMF18fDI9PT1hWzBdKSl7aT0wO2NvbnRpbnVlfWlmKDM9PT1hWzBdJiYoIW98fGFbMV0+b1swXSYmYVsxXTxvWzNdKSl7aS5sYWJlbD1hWzFdO2JyZWFrfWlmKDY9PT1hWzBdJiZpLmxhYmVsPG9bMV0pe2kubGFiZWw9b1sxXSxvPWE7YnJlYWt9aWYobyYmaS5sYWJlbDxvWzJdKXtpLmxhYmVsPW9bMl0saS5vcHMucHVzaChhKTticmVha31vWzJdJiZpLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWV9YT10LmNhbGwoZSxpKX1jYXRjaChlKXthPVs2LGVdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmYVswXSl0aHJvdyBhWzFdO3JldHVybnt2YWx1ZTphWzBdP2FbMV06dm9pZCAwLGRvbmU6ITB9fShbYSx1XSl9fX1mdW5jdGlvbiBsKGUsdCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiBlO3ZhciByLG8sYT1uLmNhbGwoZSksaT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09dHx8dC0tID4wKSYmIShyPWEubmV4dCgpKS5kb25lOylpLnB1c2goci52YWx1ZSl9Y2F0Y2goZSl7bz17ZXJyb3I6ZX19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG49YS5yZXR1cm4pJiZuLmNhbGwoYSl9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBpfWZ1bmN0aW9uIGMoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZT1lLmNvbmNhdChsKGFyZ3VtZW50c1t0XSkpO3JldHVybiBlfX0sbkVPZDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImhRVXciKSxvPW4oInBvK0ciKTt0LmdldFBhZ2luYXRpb25Nb2RlbD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBFcnJvcigiZ2V0UGFnaW5hdGlvbk1vZGVsKCk6IG9wdGlvbnMgb2JqZWN0IHNob3VsZCBiZSBhIHBhc3NlZCIpO3ZhciB0PU51bWJlcihlLnRvdGFsUGFnZXMpO2lmKGlzTmFOKHQpKXRocm93IG5ldyBFcnJvcigiZ2V0UGFnaW5hdGlvbk1vZGVsKCk6IHRvdGFsUGFnZXMgc2hvdWxkIGJlIGEgbnVtYmVyIik7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZ2V0UGFnaW5hdGlvbk1vZGVsKCk6IHRvdGFsUGFnZXMgc2hvdWxkbid0IGJlIGEgbmVnYXRpdmUgbnVtYmVyIik7dmFyIG49TnVtYmVyKGUuY3VycmVudFBhZ2UpO2lmKGlzTmFOKG4pKXRocm93IG5ldyBFcnJvcigiZ2V0UGFnaW5hdGlvbk1vZGVsKCk6IGN1cnJlbnRQYWdlIHNob3VsZCBiZSBhIG51bWJlciIpO2lmKG48MCl0aHJvdyBuZXcgRXJyb3IoImdldFBhZ2luYXRpb25Nb2RlbCgpOiBjdXJyZW50UGFnZSBzaG91bGRuJ3QgYmUgYSBuZWdhdGl2ZSBudW1iZXIiKTtpZihuPnQpdGhyb3cgbmV3IEVycm9yKCJnZXRQYWdpbmF0aW9uTW9kZWwoKTogY3VycmVudFBhZ2Ugc2hvdWxkbid0IGJlIGdyZWF0ZXIgdGhhbiB0b3RhbFBhZ2VzIik7dmFyIGE9bnVsbD09ZS5ib3VuZGFyeVBhZ2VzUmFuZ2U/MTpOdW1iZXIoZS5ib3VuZGFyeVBhZ2VzUmFuZ2UpO2lmKGlzTmFOKGEpKXRocm93IG5ldyBFcnJvcigiZ2V0UGFnaW5hdGlvbk1vZGVsKCk6IGJvdW5kYXJ5UGFnZXNSYW5nZSBzaG91bGQgYmUgYSBudW1iZXIiKTtpZihhPDApdGhyb3cgbmV3IEVycm9yKCJnZXRQYWdpbmF0aW9uTW9kZWwoKTogYm91bmRhcnlQYWdlc1JhbmdlIHNob3VsZG4ndCBiZSBhIG5lZ2F0aXZlIG51bWJlciIpO3ZhciBpPW51bGw9PWUuc2libGluZ1BhZ2VzUmFuZ2U/MTpOdW1iZXIoZS5zaWJsaW5nUGFnZXNSYW5nZSk7aWYoaXNOYU4oaSkpdGhyb3cgbmV3IEVycm9yKCJnZXRQYWdpbmF0aW9uTW9kZWwoKTogc2libGluZ1BhZ2VzUmFuZ2Ugc2hvdWxkIGJlIGEgbnVtYmVyIik7aWYoaTwwKXRocm93IG5ldyBFcnJvcigiZ2V0UGFnaW5hdGlvbk1vZGVsKCk6IHNpYmxpbmdQYWdlc1JhbmdlIHNob3VsZG4ndCBiZSBhIG5lZ2F0aXZlIG51bWJlciIpO3ZhciB1PUJvb2xlYW4oZS5oaWRlUHJldmlvdXNBbmROZXh0UGFnZUxpbmtzKSxzPUJvb2xlYW4oZS5oaWRlRmlyc3RBbmRMYXN0UGFnZUxpbmtzKSxsPUJvb2xlYW4oZS5oaWRlRWxsaXBzaXMpLGM9bD8wOjEsZj1bXSxkPW8uY3JlYXRlUGFnZUZ1bmN0aW9uRmFjdG9yeShlKTtpZihzfHxmLnB1c2goby5jcmVhdGVGaXJzdFBhZ2VMaW5rKGUpKSx1fHxmLnB1c2goby5jcmVhdGVQcmV2aW91c1BhZ2VMaW5rKGUpKSwxKzIqYysyKmkrMiphPj10KXt2YXIgcD1yLmNyZWF0ZVJhbmdlKDEsdCkubWFwKGQpO2YucHVzaC5hcHBseShmLHApfWVsc2V7dmFyIGg9YSx5PXIuY3JlYXRlUmFuZ2UoMSxoKS5tYXAoZCksbT10KzEtYSx2PXQsZz1yLmNyZWF0ZVJhbmdlKG0sdikubWFwKGQpLGI9TWF0aC5taW4oTWF0aC5tYXgobi1pLGgrYysxKSxtLWMtMippLTEpLHc9YisyKmksXz1yLmNyZWF0ZVJhbmdlKGIsdykubWFwKGQpO2lmKGYucHVzaC5hcHBseShmLHkpLCFsKXt2YXIgRT1iLTEsTz0oRT09PWgrMT9kOm8uY3JlYXRlRmlyc3RFbGxpcHNpcykoRSk7Zi5wdXNoKE8pfWlmKGYucHVzaC5hcHBseShmLF8pLCFsKXt2YXIgaz13KzEsQz0oaz09PW0tMT9kOm8uY3JlYXRlU2Vjb25kRWxsaXBzaXMpKGspO2YucHVzaChDKX1mLnB1c2guYXBwbHkoZixnKX1yZXR1cm4gdXx8Zi5wdXNoKG8uY3JlYXRlTmV4dFBhZ2VMaW5rKGUpKSxzfHxmLnB1c2goby5jcmVhdGVMYXN0UGFnZUxpbmsoZSkpLGZ9O3ZhciBhPW4oImp1SkQiKTt0LklURU1fVFlQRVM9YS5JVEVNX1RZUEVTLHQuSVRFTV9LRVlTPWEuSVRFTV9LRVlTfSxuWmJ2OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3RoaXMuX2RlZmF1bHRzPVtdfVsidXNlIiwib24iLCJvbmNlIiwic2V0IiwicXVlcnkiLCJ0eXBlIiwiYWNjZXB0IiwiYXV0aCIsIndpdGhDcmVkZW50aWFscyIsInNvcnRRdWVyeSIsInJldHJ5Iiwib2siLCJyZWRpcmVjdHMiLCJ0aW1lb3V0IiwiYnVmZmVyIiwic2VyaWFsaXplIiwicGFyc2UiLCJjYSIsImtleSIsInBmeCIsImNlcnQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtuLnByb3RvdHlwZVtlXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZhdWx0cy5wdXNoKHtmbjplLGFyZ3VtZW50czphcmd1bWVudHN9KSx0aGlzfX0pKSxuLnByb3RvdHlwZS5fc2V0RGVmYXVsdHM9ZnVuY3Rpb24oZSl7dGhpcy5fZGVmYXVsdHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0LmZuXS5hcHBseShlLHQuYXJndW1lbnRzKX0pKX0sZS5leHBvcnRzPW59LG5kSzU6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siYmFubmVyIjp7ImFkdmVydGlzaW5nIjp7ImFuY2hvclRleHQiOiLluoPlkYrjgq3jg6Pjg7Pjg5rjg7zjg7Pjgavpo5vjgbYiLCJkZXNjcmlwdGlvbiI6IumZkOOCieOCjOOBn+acn+mWk+WGheOBp0ZhY2Vib29rLCBJbnN0YWdyYW3luoPlkYrjgpI1MCXlibLlvJXjgafjgZTliKnnlKjjgYTjgZ/jgaDjgZHjgb7jgZnvvIEifSwib3JjaGFyZEdvIjp7ImFuY2hvclRleHQiOiLku4rjgZnjgZBPcmNoYXJkR2/jgpLjg4Djgqbjg7Pjg63jg7zjg4njgZnjgosiLCJkZXNjcmlwdGlvbiI6IuWkluWHuuWFiOOBp+OCguOCouODiuODquODhuOCo+OCr+OCueOCkui/vei3oe+8gSJ9fSwiZXJyb3JzIjp7ImRlZmF1bHQiOiLjgqjjg6njg7zjgYznmbrnlJ/jgYTjgZ/jgZfjgb7jgZfjgZ/jgILmmYLplpPjgpLnva7jgYTjgabmlLnjgoHjgabjgqLjgq/jgrvjgrnjgZfjgabjgY/jgaDjgZXjgYTjgILnubDjgorov5TjgZfjgZPjga7jgqjjg6njg7zjgYznj77jgozjgovloLTlkIjjga9UaGUgT3JjaGFyZOOBruOBlOaLheW9k+iAheOBvuOBp+OBlOmAo+e1oeOBj+OBoOOBleOBhOOAgiIsIm5vblJlYWN0aWZpZWRQYWdlIjoi44GC44Gq44Gf44GM44Oq44Kv44Ko44K544OI44GX44Gf44Oa44O844K444GvUEhQ44Kz44Oz44OI44Ot44O844Op44O844Gr44KI44Gj44Gm566h55CG44GV44KM44Gm44GE44G+44GZ44CC44KC44GX44KC5L2c5oiQ5Lit44Gu44Oa44O844K444KS44GU6Kan44Gr44Gq44KJ44KM44Gf5aC05ZCI44Gv44CBVGhlIE9yY2hhcmTjga7jgZTmi4XlvZPogIXjgb7jgafjgYrllY/jgYTlkIjjgo/jgZvjgY/jgaDjgZXjgYTjgIIiLCJwYWdlTm90Rm91bmQiOiLnlLPjgZfoqLPjgYLjgorjgb7jgZvjgpPjgYzjgIHjg6rjgq/jgqjjgrnjg4jjgZfjgZ/jg5rjg7zjgrjjga/lrZjlnKjjgZfjgb7jgZvjgpPjgIIiLCJ1c2VyRmVhdHVyZXMiOiLjgqjjg6njg7zjgYznmbrnlJ/jgYTjgZ/jgZfjgb7jgZfjgZ/jgILmmYLplpPjgpLnva7jgYTjgabmlLnjgoHjgabjgqLjgq/jgrvjgrnjgZfjgabjgY/jgaDjgZXjgYTjgILnubDjgorov5TjgZfjgZPjga7jgqjjg6njg7zjgYznj77jgozjgovloLTlkIjjga9UaGUgT3JjaGFyZOOBruOBlOaLheW9k+iAheOBvuOBp+OBlOmAo+e1oeOBj+OBoOOBleOBhOOAgiJ9LCJmb290ZXIiOnsiY29udGFjdERpc3RyaWJ1dG9yIjoi44K144Od44O844OI44GM5b+F6KaB44Gq5aC05ZCI44Gv44CBVGhlIE9yY2hhcmTjga7jgZTmi4XlvZPogIXjgavjgZTpgKPntaHjgY/jgaDjgZXjgYTjgIIiLCJoZWxwIjoi44Ov44O844Kv44K544OG44O844K344On44Oz44OY44Or44OXIiwicHJpdmFjeVBvbGljeSI6IuODl+ODqeOCpOODkOOCt+ODvOODneODquOCt+ODvCIsInN1cHBvcnRDb250YWN0Ijoi44GK5ZWP44GE5ZCI44KP44Gb77yaIiwidGVybXNBbmRDb25kaXRpb25zIjoi44GU5Yip55So6KaP57SEIiwidHJhZGVtYXJrIjoi44Kq44O844OB44Oj44O844OJ44Gv55m76Yyy44GV44KM44Gf44OI44Os44O844OJ44Oe44O844Kv44Gn44CB44Kq44O844OB44Oj44O844OJ44Gu44Ot44K044Gv44Kq44O844OB44Oj44O844OJ44Ko44Oz44K/44O844OX44Op44Kk44K64oCi44OL44Ol44O844Oo44O844Kv5qCq5byP5Lya56S+44Gu44K144O844OT44K544Oe44O844Kv44Gn44GZ44CC54Sh5pat6KSH5YaZ44Gv56aB44GY44KJ44KM44Gm44GE44G+44GZ44CCIn0sImdsb2JhbFNlYXJjaCI6eyJwbGFjZWhvbGRlciI6IuODl+ODreOCuOOCp+OCr+ODiOOAgeODl+ODreODgOOCr+ODiOOAgeOCouODvOODhuOCo+OCueODiOetieOCkuaknOe0ouOBmeOCiyJ9LCJoZWFkZXIiOnsiYWNjb3VudGluZyI6IuS8muioiCIsImFuYWx5dGljcyI6IuOCouODiuODquODhuOCo+OCr+OCuSIsImNhdGFsb2ciOiLjgqvjgr/jg63jgrAiLCJkcm9wZG93biI6eyJhZG1pbiI6IueuoeeQhuiAhSIsImRlZmF1bHRzIjoi44OH44OV44Kp44Or44OIIiwibG9nT3V0Ijoi44Ot44Kw44Ki44Km44OIIiwibG9nb3MiOiLjg63jgrQiLCJteUFjY291bnQiOiLjg57jgqTjgqLjgqvjgqbjg7Pjg4giLCJwcm9maWxlIjoi44OX44Ot44OV44Kj44O844OrIn0sImhlbHAiOiLjg5jjg6vjg5ciLCJtYXJrZXRpbmciOiLjg57jg7zjgrHjg4bjgqPjg7PjgrAifSwic3ViaGVhZGVyIjp7ImFjY291bnRpbmciOnsiY29sbGFib3JhdG9yU3BsaXRzIjoi44Kz44Op44Oc44Os44O844K/44O8IiwicGh5c2ljYWxSZXNlcnZlcyI6IuODleOCo+OCuOOCq+ODq+OBruW8leW9k+mHkSIsInN0YXRlbWVudHMiOiLmmI7ntLDmm7giLCJ2aWV3Ijoi6KaL44KLIn0sImFuYWx5dGljcyI6eyJhdWRpZW5jZSI6IuOCquODvOODh+OCo+OCqOODs+OCuSIsImNvbXBhcmlzb24iOiLmr5TovIMiLCJlbmdhZ2VtZW50Ijoi44Ko44Oz44Ky44O844K444Oh44Oz44OIIiwiZmlsbVRyYW5zcGFyZW5jeSI6IuaYoOeUu+OBrumAj+aYjuaApyIsImhlYXRtYXAiOiLjg5Ljg7zjg4jjg57jg4Pjg5ciLCJvdmVydmlldyI6IuamguimgSIsInBoeXNpY2FsUmVwb3J0aW5nIjoi44OV44Kj44K444Kr44Or44Os44Od44O844OIIiwidG9wQ2hhcnRzIjoi44OI44OD44OX44OB44Oj44O844OIIn19fScpfSxubVRSOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5pPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz02Nyl9KHswOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInExdEkiKX0sMTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJIc3FnIil9LDEwOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIlhHQmIiKX0sMTM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicFl4VCIpfSwxNTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJpdUxyIil9LDE2OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInJpdDkiKX0sMTk6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiQmg2UiIpfSwyOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjVmN24iKX0sMzpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJ2VitHIil9LDMyOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oImg2eEgiKX0sMzM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiVXl4UCIpfSwzNDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJXbVMxIil9LDQ6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiMTd4OSIpfSw1OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInljMmUiKX0sNTQ6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiaHdCbSIpfSw2NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxhPV8obigwKSksaT1fKG4oNCkpLHU9XyhuKDcpKSxzPV8obigxMCkpLGw9bigxKSxjPV8obigxNSkpLGY9bigzKSxkPV8obig1KSkscD1fKG4oNTQpKSxoPV8obigxOSkpLHk9XyhuKDM0KSksbT1fKG4oMzMpKSx2PV8obigxMykpLGc9XyhuKDE2KSksYj1fKG4oMzIpKSx3PW4oMik7ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIEU9KDAsbC5mb3JiaWRFeHRyYVByb3BzKSh7c3RhcnREYXRlOnMuZGVmYXVsdC5tb21lbnRPYmosc3RhcnREYXRlSWQ6aS5kZWZhdWx0LnN0cmluZyxzdGFydERhdGVQbGFjZWhvbGRlclRleHQ6aS5kZWZhdWx0LnN0cmluZyxpc1N0YXJ0RGF0ZUZvY3VzZWQ6aS5kZWZhdWx0LmJvb2wsZW5kRGF0ZTpzLmRlZmF1bHQubW9tZW50T2JqLGVuZERhdGVJZDppLmRlZmF1bHQuc3RyaW5nLGVuZERhdGVQbGFjZWhvbGRlclRleHQ6aS5kZWZhdWx0LnN0cmluZyxpc0VuZERhdGVGb2N1c2VkOmkuZGVmYXVsdC5ib29sLHNjcmVlblJlYWRlck1lc3NhZ2U6aS5kZWZhdWx0LnN0cmluZyxzaG93Q2xlYXJEYXRlczppLmRlZmF1bHQuYm9vbCxzaG93Q2FyZXQ6aS5kZWZhdWx0LmJvb2wsc2hvd0RlZmF1bHRJbnB1dEljb246aS5kZWZhdWx0LmJvb2wsaW5wdXRJY29uUG9zaXRpb246aC5kZWZhdWx0LGRpc2FibGVkOmkuZGVmYXVsdC5ib29sLHJlcXVpcmVkOmkuZGVmYXVsdC5ib29sLHJlYWRPbmx5OmkuZGVmYXVsdC5ib29sLG9wZW5EaXJlY3Rpb246Yy5kZWZhdWx0LGtlZXBPcGVuT25EYXRlU2VsZWN0OmkuZGVmYXVsdC5ib29sLHJlb3BlblBpY2tlck9uQ2xlYXJEYXRlczppLmRlZmF1bHQuYm9vbCx3aXRoRnVsbFNjcmVlblBvcnRhbDppLmRlZmF1bHQuYm9vbCxtaW5pbXVtTmlnaHRzOmwubm9uTmVnYXRpdmVJbnRlZ2VyLGlzT3V0c2lkZVJhbmdlOmkuZGVmYXVsdC5mdW5jLGRpc3BsYXlGb3JtYXQ6aS5kZWZhdWx0Lm9uZU9mVHlwZShbaS5kZWZhdWx0LnN0cmluZyxpLmRlZmF1bHQuZnVuY10pLG9uRm9jdXNDaGFuZ2U6aS5kZWZhdWx0LmZ1bmMsb25DbG9zZTppLmRlZmF1bHQuZnVuYyxvbkRhdGVzQ2hhbmdlOmkuZGVmYXVsdC5mdW5jLG9uQXJyb3dEb3duOmkuZGVmYXVsdC5mdW5jLG9uUXVlc3Rpb25NYXJrOmkuZGVmYXVsdC5mdW5jLGN1c3RvbUlucHV0SWNvbjppLmRlZmF1bHQubm9kZSxjdXN0b21BcnJvd0ljb246aS5kZWZhdWx0Lm5vZGUsY3VzdG9tQ2xvc2VJY29uOmkuZGVmYXVsdC5ub2RlLGlzRm9jdXNlZDppLmRlZmF1bHQuYm9vbCxwaHJhc2VzOmkuZGVmYXVsdC5zaGFwZSgoMCxkLmRlZmF1bHQpKGYuRGF0ZVJhbmdlUGlja2VySW5wdXRQaHJhc2VzKSksaXNSVEw6aS5kZWZhdWx0LmJvb2x9KSxPPXtzdGFydERhdGU6bnVsbCxzdGFydERhdGVJZDp3LlNUQVJUX0RBVEUsc3RhcnREYXRlUGxhY2Vob2xkZXJUZXh0OiJTdGFydCBEYXRlIixpc1N0YXJ0RGF0ZUZvY3VzZWQ6ITEsZW5kRGF0ZTpudWxsLGVuZERhdGVJZDp3LkVORF9EQVRFLGVuZERhdGVQbGFjZWhvbGRlclRleHQ6IkVuZCBEYXRlIixpc0VuZERhdGVGb2N1c2VkOiExLHNjcmVlblJlYWRlck1lc3NhZ2U6IiIsc2hvd0NsZWFyRGF0ZXM6ITEsc2hvd0NhcmV0OiExLHNob3dEZWZhdWx0SW5wdXRJY29uOiExLGlucHV0SWNvblBvc2l0aW9uOncuSUNPTl9CRUZPUkVfUE9TSVRJT04sZGlzYWJsZWQ6ITEscmVxdWlyZWQ6ITEscmVhZE9ubHk6ITEsb3BlbkRpcmVjdGlvbjp3Lk9QRU5fRE9XTixrZWVwT3Blbk9uRGF0ZVNlbGVjdDohMSxyZW9wZW5QaWNrZXJPbkNsZWFyRGF0ZXM6ITEsd2l0aEZ1bGxTY3JlZW5Qb3J0YWw6ITEsbWluaW11bU5pZ2h0czoxLGlzT3V0c2lkZVJhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiEoMCxnLmRlZmF1bHQpKGUsKDAsdS5kZWZhdWx0KSgpKX0sZGlzcGxheUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHQubG9jYWxlRGF0YSgpLmxvbmdEYXRlRm9ybWF0KCJMIil9LG9uRm9jdXNDaGFuZ2U6ZnVuY3Rpb24oKXt9LG9uQ2xvc2U6ZnVuY3Rpb24oKXt9LG9uRGF0ZXNDaGFuZ2U6ZnVuY3Rpb24oKXt9LG9uQXJyb3dEb3duOmZ1bmN0aW9uKCl7fSxvblF1ZXN0aW9uTWFyazpmdW5jdGlvbigpe30sY3VzdG9tSW5wdXRJY29uOm51bGwsY3VzdG9tQXJyb3dJY29uOm51bGwsY3VzdG9tQ2xvc2VJY29uOm51bGwsaXNGb2N1c2VkOiExLHBocmFzZXM6Zi5EYXRlUmFuZ2VQaWNrZXJJbnB1dFBocmFzZXMsaXNSVEw6ITF9LGs9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09KHZvaWQgMD09PXQ/InVuZGVmaW5lZCI6cih0KSkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH0odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gbi5vbkNsZWFyRm9jdXM9bi5vbkNsZWFyRm9jdXMuYmluZChuKSxuLm9uU3RhcnREYXRlQ2hhbmdlPW4ub25TdGFydERhdGVDaGFuZ2UuYmluZChuKSxuLm9uU3RhcnREYXRlRm9jdXM9bi5vblN0YXJ0RGF0ZUZvY3VzLmJpbmQobiksbi5vbkVuZERhdGVDaGFuZ2U9bi5vbkVuZERhdGVDaGFuZ2UuYmluZChuKSxuLm9uRW5kRGF0ZUZvY3VzPW4ub25FbmREYXRlRm9jdXMuYmluZChuKSxuLmNsZWFyRGF0ZXM9bi5jbGVhckRhdGVzLmJpbmQobiksbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiKyh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG8odCxbe2tleToib25DbGVhckZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm9uRm9jdXNDaGFuZ2Usbj1lLm9uQ2xvc2Uscj1lLnN0YXJ0RGF0ZSxvPWUuZW5kRGF0ZTt0KG51bGwpLG4oe3N0YXJ0RGF0ZTpyLGVuZERhdGU6b30pfX0se2tleToib25FbmREYXRlQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC5zdGFydERhdGUscj10LmlzT3V0c2lkZVJhbmdlLG89dC5taW5pbXVtTmlnaHRzLGE9dC5rZWVwT3Blbk9uRGF0ZVNlbGVjdCxpPXQub25EYXRlc0NoYW5nZSx1PSgwLHkuZGVmYXVsdCkoZSx0aGlzLmdldERpc3BsYXlGb3JtYXQoKSk7IXV8fHIodSl8fG4mJigwLGIuZGVmYXVsdCkodSxuLmNsb25lKCkuYWRkKG8sImRheXMiKSk/aSh7c3RhcnREYXRlOm4sZW5kRGF0ZTpudWxsfSk6KGkoe3N0YXJ0RGF0ZTpuLGVuZERhdGU6dX0pLGF8fHRoaXMub25DbGVhckZvY3VzKCkpfX0se2tleToib25FbmREYXRlRm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuc3RhcnREYXRlLG49ZS5vbkZvY3VzQ2hhbmdlLHI9ZS53aXRoRnVsbFNjcmVlblBvcnRhbCxvPWUuZGlzYWJsZWQ7dHx8IXJ8fG8/b3x8bih3LkVORF9EQVRFKTpuKHcuU1RBUlRfREFURSl9fSx7a2V5OiJvblN0YXJ0RGF0ZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9KDAseS5kZWZhdWx0KShlLHRoaXMuZ2V0RGlzcGxheUZvcm1hdCgpKSxuPXRoaXMucHJvcHMuZW5kRGF0ZSxyPXRoaXMucHJvcHMsbz1yLmlzT3V0c2lkZVJhbmdlLGE9ci5taW5pbXVtTmlnaHRzLGk9ci5vbkRhdGVzQ2hhbmdlLHU9ci5vbkZvY3VzQ2hhbmdlO3QmJiFvKHQpPyh0JiYoMCxiLmRlZmF1bHQpKG4sdC5jbG9uZSgpLmFkZChhLCJkYXlzIikpJiYobj1udWxsKSxpKHtzdGFydERhdGU6dCxlbmREYXRlOm59KSx1KHcuRU5EX0RBVEUpKTppKHtzdGFydERhdGU6bnVsbCxlbmREYXRlOm59KX19LHtrZXk6Im9uU3RhcnREYXRlRm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5kaXNhYmxlZHx8dGhpcy5wcm9wcy5vbkZvY3VzQ2hhbmdlKHcuU1RBUlRfREFURSl9fSx7a2V5OiJnZXREaXNwbGF5Rm9ybWF0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuZGlzcGxheUZvcm1hdDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplKCl9fSx7a2V5OiJnZXREYXRlU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldERpc3BsYXlGb3JtYXQoKTtyZXR1cm4gZSYmdD9lJiZlLmZvcm1hdCh0KTooMCxtLmRlZmF1bHQpKGUpfX0se2tleToiY2xlYXJEYXRlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5vbkRhdGVzQ2hhbmdlLG49ZS5yZW9wZW5QaWNrZXJPbkNsZWFyRGF0ZXMscj1lLm9uRm9jdXNDaGFuZ2U7dCh7c3RhcnREYXRlOm51bGwsZW5kRGF0ZTpudWxsfSksbiYmcih3LlNUQVJUX0RBVEUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnN0YXJ0RGF0ZSxuPWUuc3RhcnREYXRlSWQscj1lLnN0YXJ0RGF0ZVBsYWNlaG9sZGVyVGV4dCxvPWUuaXNTdGFydERhdGVGb2N1c2VkLGk9ZS5lbmREYXRlLHU9ZS5lbmREYXRlSWQscz1lLmVuZERhdGVQbGFjZWhvbGRlclRleHQsbD1lLmlzRW5kRGF0ZUZvY3VzZWQsYz1lLnNjcmVlblJlYWRlck1lc3NhZ2UsZj1lLnNob3dDbGVhckRhdGVzLGQ9ZS5zaG93Q2FyZXQsaD1lLnNob3dEZWZhdWx0SW5wdXRJY29uLHk9ZS5pbnB1dEljb25Qb3NpdGlvbixtPWUuY3VzdG9tSW5wdXRJY29uLGc9ZS5jdXN0b21BcnJvd0ljb24sYj1lLmN1c3RvbUNsb3NlSWNvbix3PWUuZGlzYWJsZWQsXz1lLnJlcXVpcmVkLEU9ZS5yZWFkT25seSxPPWUub3BlbkRpcmVjdGlvbixrPWUuaXNGb2N1c2VkLEM9ZS5waHJhc2VzLHg9ZS5vbkFycm93RG93bixTPWUub25RdWVzdGlvbk1hcmssRD1lLmlzUlRMLFQ9dGhpcy5nZXREYXRlU3RyaW5nKHQpLE09KDAsdi5kZWZhdWx0KSh0KSxQPXRoaXMuZ2V0RGF0ZVN0cmluZyhpKSxOPSgwLHYuZGVmYXVsdCkoaSk7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdCx7c3RhcnREYXRlOlQsc3RhcnREYXRlVmFsdWU6TSxzdGFydERhdGVJZDpuLHN0YXJ0RGF0ZVBsYWNlaG9sZGVyVGV4dDpyLGlzU3RhcnREYXRlRm9jdXNlZDpvLGVuZERhdGU6UCxlbmREYXRlVmFsdWU6TixlbmREYXRlSWQ6dSxlbmREYXRlUGxhY2Vob2xkZXJUZXh0OnMsaXNFbmREYXRlRm9jdXNlZDpsLGlzRm9jdXNlZDprLGRpc2FibGVkOncscmVxdWlyZWQ6XyxyZWFkT25seTpFLG9wZW5EaXJlY3Rpb246TyxzaG93Q2FyZXQ6ZCxzaG93RGVmYXVsdElucHV0SWNvbjpoLGlucHV0SWNvblBvc2l0aW9uOnksY3VzdG9tSW5wdXRJY29uOm0sY3VzdG9tQXJyb3dJY29uOmcsY3VzdG9tQ2xvc2VJY29uOmIscGhyYXNlczpDLG9uU3RhcnREYXRlQ2hhbmdlOnRoaXMub25TdGFydERhdGVDaGFuZ2Usb25TdGFydERhdGVGb2N1czp0aGlzLm9uU3RhcnREYXRlRm9jdXMsb25TdGFydERhdGVTaGlmdFRhYjp0aGlzLm9uQ2xlYXJGb2N1cyxvbkVuZERhdGVDaGFuZ2U6dGhpcy5vbkVuZERhdGVDaGFuZ2Usb25FbmREYXRlRm9jdXM6dGhpcy5vbkVuZERhdGVGb2N1cyxvbkVuZERhdGVUYWI6dGhpcy5vbkNsZWFyRm9jdXMsc2hvd0NsZWFyRGF0ZXM6ZixvbkNsZWFyRGF0ZXM6dGhpcy5jbGVhckRhdGVzLHNjcmVlblJlYWRlck1lc3NhZ2U6YyxvbkFycm93RG93bjp4LG9uUXVlc3Rpb25NYXJrOlMsaXNSVEw6RH0pfX1dKSx0fShhLmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9ayxrLnByb3BUeXBlcz1FLGsuZGVmYXVsdFByb3BzPU99LDc6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigid2QvUiIpfX0pfSxubW5jOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJLejV5IikuU3ltYm9sO2UuZXhwb3J0cz1yfSxubk9BOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLldpbmRvdyYmZSBpbnN0YW5jZW9mIGUuV2luZG93P3t4OmUucGFnZVhPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQseTplLnBhZ2VZT2Zmc2V0fHxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B9Ont4OmUuc2Nyb2xsTGVmdCx5OmUuc2Nyb2xsVG9wfX19LG5yNk86ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIyVzZ6Iiksbz1uLm4ociksYT1uKCJRTGFQIiksaT1uLm4oYSksdT1uKCJxMXRJIikscz1uLm4odSksbD1uKCIxN3g5IiksYz1uLm4obCksZj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTtmdW5jdGlvbiBkKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBoPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbixyO2QodGhpcyx0KTtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxhPUFycmF5KG8pLGk9MDtpPG87aSsrKWFbaV09YXJndW1lbnRzW2ldO3JldHVybiBuPXI9cCh0aGlzLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYSkpKSxyLnN0YXRlPXttYXRjaDpyLmNvbXB1dGVNYXRjaChyLnByb3BzLmhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUpfSxwKHIsbil9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0LnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm57cm91dGVyOmYoe30sdGhpcy5jb250ZXh0LnJvdXRlcix7aGlzdG9yeTp0aGlzLnByb3BzLmhpc3Rvcnkscm91dGU6e2xvY2F0aW9uOnRoaXMucHJvcHMuaGlzdG9yeS5sb2NhdGlvbixtYXRjaDp0aGlzLnN0YXRlLm1hdGNofX0pfX0sdC5wcm90b3R5cGUuY29tcHV0ZU1hdGNoPWZ1bmN0aW9uKGUpe3JldHVybntwYXRoOiIvIix1cmw6Ii8iLHBhcmFtczp7fSxpc0V4YWN0OiIvIj09PWV9fSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQuY2hpbGRyZW4scj10Lmhpc3Rvcnk7aSgpKG51bGw9PW58fDE9PT1zLmEuQ2hpbGRyZW4uY291bnQobiksIkEgPFJvdXRlcj4gbWF5IGhhdmUgb25seSBvbmUgY2hpbGQgZWxlbWVudCIpLHRoaXMudW5saXN0ZW49ci5saXN0ZW4oKGZ1bmN0aW9uKCl7ZS5zZXRTdGF0ZSh7bWF0Y2g6ZS5jb21wdXRlTWF0Y2goci5sb2NhdGlvbi5wYXRobmFtZSl9KX0pKX0sdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5jdGlvbihlKXtvKCkodGhpcy5wcm9wcy5oaXN0b3J5PT09ZS5oaXN0b3J5LCJZb3UgY2Fubm90IGNoYW5nZSA8Um91dGVyIGhpc3Rvcnk+Iil9LHQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy51bmxpc3RlbigpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmNoaWxkcmVuO3JldHVybiBlP3MuYS5DaGlsZHJlbi5vbmx5KGUpOm51bGx9LHR9KHMuYS5Db21wb25lbnQpO2gucHJvcFR5cGVzPXtoaXN0b3J5OmMuYS5vYmplY3QuaXNSZXF1aXJlZCxjaGlsZHJlbjpjLmEubm9kZX0saC5jb250ZXh0VHlwZXM9e3JvdXRlcjpjLmEub2JqZWN0fSxoLmNoaWxkQ29udGV4dFR5cGVzPXtyb3V0ZXI6Yy5hLm9iamVjdC5pc1JlcXVpcmVkfSx0LmE9aH0sbnlZYzpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZUxvY2FsZSgiZnIiLHttb250aHM6ImphbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRpX2x1X21hX21lX2plX3ZlX3NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0F1am91cmTigJlodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLHNzOiIlZCBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJEIjpyZXR1cm4gZSsoMT09PWU/ImVyIjoiIik7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2FzZSJEREQiOmNhc2UiZCI6cmV0dXJuIGUrKDE9PT1lPyJlciI6ImUiKTtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGUrKDE9PT1lPyJyZSI6ImUiKX19LHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSxvMG8xOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigibHM4MiIpfSxvMkdBOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe2lmKCFlKXJldHVybiBudWxsO3ZhciBvPXt9O2Zvcih2YXIgYSBpbiBlKXIuY2FsbChlLGEpJiYob1thXT10LmNhbGwobixlW2FdLGEsZSkpO3JldHVybiBvfX0sb0I1OTpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO289W10sdm9pZCAwPT09KGE9ImZ1bmN0aW9uIj09dHlwZW9mKHI9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCk7ZnVuY3Rpb24gdChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfXZhciBuPXZvaWQgMDt2b2lkIDA9PT1uJiYobj17bW9kdWxlczpbXX0pO3ZhciByPW51bGw7ZnVuY3Rpb24gbyhlKXt2YXIgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49e307Zm9yKHZhciByIGluIHQpbltyXT10W3JdO3RyeXtpZihlLm93bmVyRG9jdW1lbnQhPT1kb2N1bWVudCl7dmFyIGE9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudDtpZihhKXt2YXIgaT1vKGEpO24udG9wKz1pLnRvcCxuLmJvdHRvbSs9aS50b3Asbi5sZWZ0Kz1pLmxlZnQsbi5yaWdodCs9aS5sZWZ0fX19Y2F0Y2goZSl7fXJldHVybiBufWZ1bmN0aW9uIGEoZSl7dmFyIHQ9KGdldENvbXB1dGVkU3R5bGUoZSl8fHt9KS5wb3NpdGlvbixuPVtdO2lmKCJmaXhlZCI9PT10KXJldHVybltlXTtmb3IodmFyIHI9ZTsocj1yLnBhcmVudE5vZGUpJiZyJiYxPT09ci5ub2RlVHlwZTspe3ZhciBvPXZvaWQgMDt0cnl7bz1nZXRDb21wdXRlZFN0eWxlKHIpfWNhdGNoKGUpe31pZihudWxsPT1vKXJldHVybiBuLnB1c2gociksbjt2YXIgYT1vLGk9YS5vdmVyZmxvdyx1PWEub3ZlcmZsb3dYLHM9YS5vdmVyZmxvd1k7LyhhdXRvfHNjcm9sbHxvdmVybGF5KS8udGVzdChpK3MrdSkmJigiYWJzb2x1dGUiIT09dHx8WyJyZWxhdGl2ZSIsImFic29sdXRlIiwiZml4ZWQiXS5pbmRleE9mKG8ucG9zaXRpb24pPj0wKSYmbi5wdXNoKHIpfXJldHVybiBuLnB1c2goZS5vd25lckRvY3VtZW50LmJvZHkpLGUub3duZXJEb2N1bWVudCE9PWRvY3VtZW50JiZuLnB1c2goZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSxufXZhciBpLHU9KGk9MCxmdW5jdGlvbigpe3JldHVybisraX0pLHM9e307ZnVuY3Rpb24gbCgpe3ImJmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocikscj1udWxsfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9dm9pZCAwO2U9PT1kb2N1bWVudD8odD1kb2N1bWVudCxlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6dD1lLm93bmVyRG9jdW1lbnQ7dmFyIG49dC5kb2N1bWVudEVsZW1lbnQsYT1vKGUpLGk9ZnVuY3Rpb24oKXt2YXIgZT1yO2UmJmRvY3VtZW50LmJvZHkuY29udGFpbnMoZSl8fCgoZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc2V0QXR0cmlidXRlKCJkYXRhLXRldGhlci1pZCIsdSgpKSxoKGUuc3R5bGUse3RvcDowLGxlZnQ6MCxwb3NpdGlvbjoiYWJzb2x1dGUifSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKSxyPWUpO3ZhciB0PWUuZ2V0QXR0cmlidXRlKCJkYXRhLXRldGhlci1pZCIpO3JldHVybiB2b2lkIDA9PT1zW3RdJiYoc1t0XT1vKGUpLEUoKGZ1bmN0aW9uKCl7ZGVsZXRlIHNbdF19KSkpLHNbdF19KCk7cmV0dXJuIGEudG9wLT1pLnRvcCxhLmxlZnQtPWkubGVmdCx2b2lkIDA9PT1hLndpZHRoJiYoYS53aWR0aD1kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoLWEubGVmdC1hLnJpZ2h0KSx2b2lkIDA9PT1hLmhlaWdodCYmKGEuaGVpZ2h0PWRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LWEudG9wLWEuYm90dG9tKSxhLnRvcD1hLnRvcC1uLmNsaWVudFRvcCxhLmxlZnQ9YS5sZWZ0LW4uY2xpZW50TGVmdCxhLnJpZ2h0PXQuYm9keS5jbGllbnRXaWR0aC1hLndpZHRoLWEubGVmdCxhLmJvdHRvbT10LmJvZHkuY2xpZW50SGVpZ2h0LWEuaGVpZ2h0LWEudG9wLGF9ZnVuY3Rpb24gZihlKXtyZXR1cm4gZS5vZmZzZXRQYXJlbnR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH12YXIgZD1udWxsO2Z1bmN0aW9uIHAoKXtpZihkKXJldHVybiBkO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Uuc3R5bGUud2lkdGg9IjEwMCUiLGUuc3R5bGUuaGVpZ2h0PSIyMDBweCI7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aCh0LnN0eWxlLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxwb2ludGVyRXZlbnRzOiJub25lIix2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOiIyMDBweCIsaGVpZ2h0OiIxNTBweCIsb3ZlcmZsb3c6ImhpZGRlbiJ9KSx0LmFwcGVuZENoaWxkKGUpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7dmFyIG49ZS5vZmZzZXRXaWR0aDt0LnN0eWxlLm92ZXJmbG93PSJzY3JvbGwiO3ZhciByPWUub2Zmc2V0V2lkdGg7bj09PXImJihyPXQuY2xpZW50V2lkdGgpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCk7dmFyIG89bi1yO3JldHVybiBkPXt3aWR0aDpvLGhlaWdodDpvfX1mdW5jdGlvbiBoKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXSx0PVtdO3JldHVybiBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0LGFyZ3VtZW50cyksdC5zbGljZSgxKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0KWZvcih2YXIgbiBpbiB0KSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKSxlfWZ1bmN0aW9uIHkoZSx0KXtpZih2b2lkIDAhPT1lLmNsYXNzTGlzdCl0LnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC50cmltKCkmJmUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pKTtlbHNle3ZhciBuPW5ldyBSZWdFeHAoIihefCApIit0LnNwbGl0KCIgIikuam9pbigifCIpKyIoIHwkKSIsImdpIikscj1nKGUpLnJlcGxhY2UobiwiICIpO2IoZSxyKX19ZnVuY3Rpb24gbShlLHQpe2lmKHZvaWQgMCE9PWUuY2xhc3NMaXN0KXQuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnRyaW0oKSYmZS5jbGFzc0xpc3QuYWRkKHQpfSkpO2Vsc2V7eShlLHQpO3ZhciBuPWcoZSkrIiAiK3Q7YihlLG4pfX1mdW5jdGlvbiB2KGUsdCl7aWYodm9pZCAwIT09ZS5jbGFzc0xpc3QpcmV0dXJuIGUuY2xhc3NMaXN0LmNvbnRhaW5zKHQpO3ZhciBuPWcoZSk7cmV0dXJuIG5ldyBSZWdFeHAoIihefCApIit0KyIoIHwkKSIsImdpIikudGVzdChuKX1mdW5jdGlvbiBnKGUpe3JldHVybiBlLmNsYXNzTmFtZSBpbnN0YW5jZW9mIGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TVkdBbmltYXRlZFN0cmluZz9lLmNsYXNzTmFtZS5iYXNlVmFsOmUuY2xhc3NOYW1lfWZ1bmN0aW9uIGIoZSx0KXtlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHQpfWZ1bmN0aW9uIHcoZSx0LG4pe24uZm9yRWFjaCgoZnVuY3Rpb24obil7LTE9PT10LmluZGV4T2YobikmJnYoZSxuKSYmeShlLG4pfSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dihlLHQpfHxtKGUsdCl9KSl9dmFyIF89W10sRT1mdW5jdGlvbihlKXtfLnB1c2goZSl9LE89ZnVuY3Rpb24oKXtmb3IodmFyIGU9dm9pZCAwO2U9Xy5wb3AoKTspZSgpfSxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3QodGhpcyxuKX1yZXR1cm4gZShuLFt7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSEoYXJndW1lbnRzLmxlbmd0aDw9M3x8dm9pZCAwPT09YXJndW1lbnRzWzNdKSYmYXJndW1lbnRzWzNdO3ZvaWQgMD09PXRoaXMuYmluZGluZ3MmJih0aGlzLmJpbmRpbmdzPXt9KSx2b2lkIDA9PT10aGlzLmJpbmRpbmdzW2VdJiYodGhpcy5iaW5kaW5nc1tlXT1bXSksdGhpcy5iaW5kaW5nc1tlXS5wdXNoKHtoYW5kbGVyOnQsY3R4Om4sb25jZTpyfSl9fSx7a2V5OiJvbmNlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dGhpcy5vbihlLHQsbiwhMCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09dGhpcy5iaW5kaW5ncyYmdm9pZCAwIT09dGhpcy5iaW5kaW5nc1tlXSlpZih2b2lkIDA9PT10KWRlbGV0ZSB0aGlzLmJpbmRpbmdzW2VdO2Vsc2UgZm9yKHZhciBuPTA7bjx0aGlzLmJpbmRpbmdzW2VdLmxlbmd0aDspdGhpcy5iaW5kaW5nc1tlXVtuXS5oYW5kbGVyPT09dD90aGlzLmJpbmRpbmdzW2VdLnNwbGljZShuLDEpOisrbn19LHtrZXk6InRyaWdnZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PXRoaXMuYmluZGluZ3MmJnRoaXMuYmluZGluZ3NbZV0pe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtmb3IoO3Q8dGhpcy5iaW5kaW5nc1tlXS5sZW5ndGg7KXt2YXIgYT10aGlzLmJpbmRpbmdzW2VdW3RdLGk9YS5oYW5kbGVyLHU9YS5jdHgscz1hLm9uY2UsbD11O3ZvaWQgMD09PWwmJihsPXRoaXMpLGkuYXBwbHkobCxyKSxzP3RoaXMuYmluZGluZ3NbZV0uc3BsaWNlKHQsMSk6Kyt0fX19fV0pLG59KCk7bi5VdGlscz17Z2V0QWN0dWFsQm91bmRpbmdDbGllbnRSZWN0Om8sZ2V0U2Nyb2xsUGFyZW50czphLGdldEJvdW5kczpjLGdldE9mZnNldFBhcmVudDpmLGV4dGVuZDpoLGFkZENsYXNzOm0scmVtb3ZlQ2xhc3M6eSxoYXNDbGFzczp2LHVwZGF0ZUNsYXNzZXM6dyxkZWZlcjpFLGZsdXNoOk8sdW5pcXVlSWQ6dSxFdmVudGVkOmssZ2V0U2Nyb2xsQmFyU2l6ZTpwLHJlbW92ZVV0aWxFbGVtZW50czpsfTt2YXIgQz1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLG89ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgaSx1PWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0oaT11Lm5leHQoKSkuZG9uZSkmJihuLnB1c2goaS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe289ITAsYT1lfWZpbmFsbHl7dHJ5eyFyJiZ1LnJldHVybiYmdS5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfTtmdW5jdGlvbiB0KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9aWYoZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSx2b2lkIDA9PT1uKXRocm93IG5ldyBFcnJvcigiWW91IG11c3QgaW5jbHVkZSB0aGUgdXRpbHMuanMgZmlsZSBiZWZvcmUgdGV0aGVyLmpzIik7dmFyIGE9KEg9bi5VdGlscykuZ2V0U2Nyb2xsUGFyZW50cyxmPShjPUguZ2V0Qm91bmRzLEguZ2V0T2Zmc2V0UGFyZW50KSxtPShoPUguZXh0ZW5kLEguYWRkQ2xhc3MpLHk9SC5yZW1vdmVDbGFzcyxwPSh3PUgudXBkYXRlQ2xhc3NlcyxFPUguZGVmZXIsTz1ILmZsdXNoLEguZ2V0U2Nyb2xsQmFyU2l6ZSksbD1ILnJlbW92ZVV0aWxFbGVtZW50cztmdW5jdGlvbiB4KGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDw9Mnx8dm9pZCAwPT09YXJndW1lbnRzWzJdPzE6YXJndW1lbnRzWzJdO3JldHVybiBlK24+PXQmJnQ+PWUtbn12YXIgUyxELFQsTSxQPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4iIjtmb3IodmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdD1bInRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSIsIk9UcmFuc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdLG49MDtuPHQubGVuZ3RoOysrbil7dmFyIHI9dFtuXTtpZih2b2lkIDAhPT1lLnN0eWxlW3JdKXJldHVybiByfX0oKSxOPVtdLGo9ZnVuY3Rpb24oKXtOLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucG9zaXRpb24oITEpfSkpLE8oKX07ZnVuY3Rpb24gTCgpe3JldHVybiJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2Uubm93KCk6K25ldyBEYXRlfVM9bnVsbCxEPW51bGwsVD1udWxsLE09ZnVuY3Rpb24gZSgpe2lmKHZvaWQgMCE9PUQmJkQ+MTYpcmV0dXJuIEQ9TWF0aC5taW4oRC0xNiwyNTApLHZvaWQoVD1zZXRUaW1lb3V0KGUsMjUwKSk7dm9pZCAwIT09UyYmTCgpLVM8MTB8fChudWxsIT1UJiYoY2xlYXJUaW1lb3V0KFQpLFQ9bnVsbCksUz1MKCksaigpLEQ9TCgpLVMpfSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LmFkZEV2ZW50TGlzdGVuZXImJlsicmVzaXplIiwic2Nyb2xsIiwidG91Y2htb3ZlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZSxNKX0pKTt2YXIgUj17Y2VudGVyOiJjZW50ZXIiLGxlZnQ6InJpZ2h0IixyaWdodDoibGVmdCJ9LEk9e21pZGRsZToibWlkZGxlIix0b3A6ImJvdHRvbSIsYm90dG9tOiJ0b3AifSxBPXt0b3A6MCxsZWZ0OjAsbWlkZGxlOiI1MCUiLGNlbnRlcjoiNTAlIixib3R0b206IjEwMCUiLHJpZ2h0OiIxMDAlIn0sRj1mdW5jdGlvbihlLHQpe3ZhciBuPWUubGVmdCxyPWUudG9wO3JldHVybiJhdXRvIj09PW4mJihuPVJbdC5sZWZ0XSksImF1dG8iPT09ciYmKHI9SVt0LnRvcF0pLHtsZWZ0Om4sdG9wOnJ9fSxCPWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVmdCxuPWUudG9wO3JldHVybiB2b2lkIDAhPT1BW2UubGVmdF0mJih0PUFbZS5sZWZ0XSksdm9pZCAwIT09QVtlLnRvcF0mJihuPUFbZS50b3BdKSx7bGVmdDp0LHRvcDpufX07ZnVuY3Rpb24geigpe2Zvcih2YXIgZT17dG9wOjAsbGVmdDowfSx0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10LnRvcCxyPXQubGVmdDsic3RyaW5nIj09dHlwZW9mIG4mJihuPXBhcnNlRmxvYXQobiwxMCkpLCJzdHJpbmciPT10eXBlb2YgciYmKHI9cGFyc2VGbG9hdChyLDEwKSksZS50b3ArPW4sZS5sZWZ0Kz1yfSkpLGV9ZnVuY3Rpb24gSyhlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZS5sZWZ0JiYtMSE9PWUubGVmdC5pbmRleE9mKCIlIikmJihlLmxlZnQ9cGFyc2VGbG9hdChlLmxlZnQsMTApLzEwMCp0LndpZHRoKSwic3RyaW5nIj09dHlwZW9mIGUudG9wJiYtMSE9PWUudG9wLmluZGV4T2YoIiUiKSYmKGUudG9wPXBhcnNlRmxvYXQoZS50b3AsMTApLzEwMCp0LmhlaWdodCksZX12YXIgcT1mdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCIgIiksbj1DKHQsMik7cmV0dXJue3RvcDpuWzBdLGxlZnQ6blsxXX19LFY9cSxVPWZ1bmN0aW9uKHIpe2Z1bmN0aW9uIG8oZSl7dmFyIHI9dGhpczt0KHRoaXMsbyksZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0hMDtyOyl7dmFyIG89ZSxhPXQsaT1uO3I9ITEsbnVsbD09PW8mJihvPUZ1bmN0aW9uLnByb3RvdHlwZSk7dmFyIHU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGEpO2lmKHZvaWQgMCE9PXUpe2lmKCJ2YWx1ZSJpbiB1KXJldHVybiB1LnZhbHVlO3ZhciBzPXUuZ2V0O2lmKHZvaWQgMD09PXMpcmV0dXJuO3JldHVybiBzLmNhbGwoaSl9dmFyIGw9T2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO2lmKG51bGw9PT1sKXJldHVybjtlPWwsdD1hLG49aSxyPSEwLHU9bD12b2lkIDB9fShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoby5wcm90b3R5cGUpLCJjb25zdHJ1Y3RvciIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLnBvc2l0aW9uPXRoaXMucG9zaXRpb24uYmluZCh0aGlzKSxOLnB1c2godGhpcyksdGhpcy5oaXN0b3J5PVtdLHRoaXMuc2V0T3B0aW9ucyhlLCExKSxuLm1vZHVsZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5pbml0aWFsaXplJiZlLmluaXRpYWxpemUuY2FsbChyKX0pKSx0aGlzLnBvc2l0aW9uKCl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0obyxyKSxlKG8sW3trZXk6ImdldENsYXNzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT8iIjphcmd1bWVudHNbMF0sdD10aGlzLm9wdGlvbnMuY2xhc3NlcztyZXR1cm4gdm9pZCAwIT09dCYmdFtlXT90aGlzLm9wdGlvbnMuY2xhc3Nlc1tlXTp0aGlzLm9wdGlvbnMuY2xhc3NQcmVmaXg/dGhpcy5vcHRpb25zLmNsYXNzUHJlZml4KyItIitlOmV9fSx7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdfHxhcmd1bWVudHNbMV0scj17b2Zmc2V0OiIwIDAiLHRhcmdldE9mZnNldDoiMCAwIix0YXJnZXRBdHRhY2htZW50OiJhdXRvIGF1dG8iLGNsYXNzUHJlZml4OiJ0ZXRoZXIifTt0aGlzLm9wdGlvbnM9aChyLGUpO3ZhciBvPXRoaXMub3B0aW9ucyxpPW8uZWxlbWVudCx1PW8udGFyZ2V0LHM9by50YXJnZXRNb2RpZmllcjtpZih0aGlzLmVsZW1lbnQ9aSx0aGlzLnRhcmdldD11LHRoaXMudGFyZ2V0TW9kaWZpZXI9cywidmlld3BvcnQiPT09dGhpcy50YXJnZXQ/KHRoaXMudGFyZ2V0PWRvY3VtZW50LmJvZHksdGhpcy50YXJnZXRNb2RpZmllcj0idmlzaWJsZSIpOiJzY3JvbGwtaGFuZGxlIj09PXRoaXMudGFyZ2V0JiYodGhpcy50YXJnZXQ9ZG9jdW1lbnQuYm9keSx0aGlzLnRhcmdldE1vZGlmaWVyPSJzY3JvbGwtaGFuZGxlIiksWyJlbGVtZW50IiwidGFyZ2V0Il0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09dFtlXSl0aHJvdyBuZXcgRXJyb3IoIlRldGhlciBFcnJvcjogQm90aCBlbGVtZW50IGFuZCB0YXJnZXQgbXVzdCBiZSBkZWZpbmVkIik7dm9pZCAwIT09dFtlXS5qcXVlcnk/dFtlXT10W2VdWzBdOiJzdHJpbmciPT10eXBlb2YgdFtlXSYmKHRbZV09ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0W2VdKSl9KSksbSh0aGlzLmVsZW1lbnQsdGhpcy5nZXRDbGFzcygiZWxlbWVudCIpKSwhMSE9PXRoaXMub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzJiZtKHRoaXMudGFyZ2V0LHRoaXMuZ2V0Q2xhc3MoInRhcmdldCIpKSwhdGhpcy5vcHRpb25zLmF0dGFjaG1lbnQpdGhyb3cgbmV3IEVycm9yKCJUZXRoZXIgRXJyb3I6IFlvdSBtdXN0IHByb3ZpZGUgYW4gYXR0YWNobWVudCIpO3RoaXMudGFyZ2V0QXR0YWNobWVudD1WKHRoaXMub3B0aW9ucy50YXJnZXRBdHRhY2htZW50KSx0aGlzLmF0dGFjaG1lbnQ9Vih0aGlzLm9wdGlvbnMuYXR0YWNobWVudCksdGhpcy5vZmZzZXQ9cSh0aGlzLm9wdGlvbnMub2Zmc2V0KSx0aGlzLnRhcmdldE9mZnNldD1xKHRoaXMub3B0aW9ucy50YXJnZXRPZmZzZXQpLHZvaWQgMCE9PXRoaXMuc2Nyb2xsUGFyZW50cyYmdGhpcy5kaXNhYmxlKCksInNjcm9sbC1oYW5kbGUiPT09dGhpcy50YXJnZXRNb2RpZmllcj90aGlzLnNjcm9sbFBhcmVudHM9W3RoaXMudGFyZ2V0XTp0aGlzLnNjcm9sbFBhcmVudHM9YSh0aGlzLnRhcmdldCksITEhPT10aGlzLm9wdGlvbnMuZW5hYmxlZCYmdGhpcy5lbmFibGUobil9fSx7a2V5OiJnZXRUYXJnZXRCb3VuZHMiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09dGhpcy50YXJnZXRNb2RpZmllcilyZXR1cm4gYyh0aGlzLnRhcmdldCk7aWYoInZpc2libGUiPT09dGhpcy50YXJnZXRNb2RpZmllcilyZXR1cm4gdGhpcy50YXJnZXQ9PT1kb2N1bWVudC5ib2R5P3t0b3A6cGFnZVlPZmZzZXQsbGVmdDpwYWdlWE9mZnNldCxoZWlnaHQ6aW5uZXJIZWlnaHQsd2lkdGg6aW5uZXJXaWR0aH06KChhPXtoZWlnaHQ6KGU9Yyh0aGlzLnRhcmdldCkpLmhlaWdodCx3aWR0aDplLndpZHRoLHRvcDplLnRvcCxsZWZ0OmUubGVmdH0pLmhlaWdodD1NYXRoLm1pbihhLmhlaWdodCxlLmhlaWdodC0ocGFnZVlPZmZzZXQtZS50b3ApKSxhLmhlaWdodD1NYXRoLm1pbihhLmhlaWdodCxlLmhlaWdodC0oZS50b3ArZS5oZWlnaHQtKHBhZ2VZT2Zmc2V0K2lubmVySGVpZ2h0KSkpLGEuaGVpZ2h0PU1hdGgubWluKGlubmVySGVpZ2h0LGEuaGVpZ2h0KSxhLmhlaWdodC09MixhLndpZHRoPU1hdGgubWluKGEud2lkdGgsZS53aWR0aC0ocGFnZVhPZmZzZXQtZS5sZWZ0KSksYS53aWR0aD1NYXRoLm1pbihhLndpZHRoLGUud2lkdGgtKGUubGVmdCtlLndpZHRoLShwYWdlWE9mZnNldCtpbm5lcldpZHRoKSkpLGEud2lkdGg9TWF0aC5taW4oaW5uZXJXaWR0aCxhLndpZHRoKSxhLndpZHRoLT0yLGEudG9wPHBhZ2VZT2Zmc2V0JiYoYS50b3A9cGFnZVlPZmZzZXQpLGEubGVmdDxwYWdlWE9mZnNldCYmKGEubGVmdD1wYWdlWE9mZnNldCksYSk7aWYoInNjcm9sbC1oYW5kbGUiPT09dGhpcy50YXJnZXRNb2RpZmllcil7dmFyIGU9dm9pZCAwLHQ9dGhpcy50YXJnZXQ7dD09PWRvY3VtZW50LmJvZHk/KHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9e2xlZnQ6cGFnZVhPZmZzZXQsdG9wOnBhZ2VZT2Zmc2V0LGhlaWdodDppbm5lckhlaWdodCx3aWR0aDppbm5lcldpZHRofSk6ZT1jKHQpO3ZhciBuPWdldENvbXB1dGVkU3R5bGUodCkscj0wOyh0LnNjcm9sbFdpZHRoPnQuY2xpZW50V2lkdGh8fFtuLm92ZXJmbG93LG4ub3ZlcmZsb3dYXS5pbmRleE9mKCJzY3JvbGwiKT49MHx8dGhpcy50YXJnZXQhPT1kb2N1bWVudC5ib2R5KSYmKHI9MTUpO3ZhciBvPWUuaGVpZ2h0LXBhcnNlRmxvYXQobi5ib3JkZXJUb3BXaWR0aCktcGFyc2VGbG9hdChuLmJvcmRlckJvdHRvbVdpZHRoKS1yLGE9e3dpZHRoOjE1LGhlaWdodDouOTc1Km8qKG8vdC5zY3JvbGxIZWlnaHQpLGxlZnQ6ZS5sZWZ0K2Uud2lkdGgtcGFyc2VGbG9hdChuLmJvcmRlckxlZnRXaWR0aCktMTV9LGk9MDtvPDQwOCYmdGhpcy50YXJnZXQ9PT1kb2N1bWVudC5ib2R5JiYoaT0tMTFlLTUqTWF0aC5wb3cobywyKS0uMDA3MjcqbysyMi41OCksdGhpcy50YXJnZXQhPT1kb2N1bWVudC5ib2R5JiYoYS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsMjQpKTt2YXIgdT10aGlzLnRhcmdldC5zY3JvbGxUb3AvKHQuc2Nyb2xsSGVpZ2h0LW8pO3JldHVybiBhLnRvcD11KihvLWEuaGVpZ2h0LWkpK2UudG9wK3BhcnNlRmxvYXQobi5ib3JkZXJUb3BXaWR0aCksdGhpcy50YXJnZXQ9PT1kb2N1bWVudC5ib2R5JiYoYS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsMjQpKSxhfX19LHtrZXk6ImNsZWFyQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY2FjaGU9e319fSx7a2V5OiJjYWNoZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fY2FjaGUmJih0aGlzLl9jYWNoZT17fSksdm9pZCAwPT09dGhpcy5fY2FjaGVbZV0mJih0aGlzLl9jYWNoZVtlXT10LmNhbGwodGhpcykpLHRoaXMuX2NhY2hlW2VdfX0se2tleToiZW5hYmxlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF18fGFyZ3VtZW50c1swXTshMSE9PXRoaXMub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzJiZtKHRoaXMudGFyZ2V0LHRoaXMuZ2V0Q2xhc3MoImVuYWJsZWQiKSksbSh0aGlzLmVsZW1lbnQsdGhpcy5nZXRDbGFzcygiZW5hYmxlZCIpKSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy5zY3JvbGxQYXJlbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QhPT1lLnRhcmdldC5vd25lckRvY3VtZW50JiZ0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZS5wb3NpdGlvbil9KSksdCYmdGhpcy5wb3NpdGlvbigpfX0se2tleToiZGlzYWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3kodGhpcy50YXJnZXQsdGhpcy5nZXRDbGFzcygiZW5hYmxlZCIpKSx5KHRoaXMuZWxlbWVudCx0aGlzLmdldENsYXNzKCJlbmFibGVkIikpLHRoaXMuZW5hYmxlZD0hMSx2b2lkIDAhPT10aGlzLnNjcm9sbFBhcmVudHMmJnRoaXMuc2Nyb2xsUGFyZW50cy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZS5wb3NpdGlvbil9KSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5kaXNhYmxlKCksTi5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3Q9PT1lJiZOLnNwbGljZShuLDEpfSkpLDA9PT1OLmxlbmd0aCYmbCgpfX0se2tleToidXBkYXRlQXR0YWNoQ2xhc3NlcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2U9ZXx8dGhpcy5hdHRhY2htZW50LHQ9dHx8dGhpcy50YXJnZXRBdHRhY2htZW50LHZvaWQgMCE9PXRoaXMuX2FkZEF0dGFjaENsYXNzZXMmJnRoaXMuX2FkZEF0dGFjaENsYXNzZXMubGVuZ3RoJiZ0aGlzLl9hZGRBdHRhY2hDbGFzc2VzLnNwbGljZSgwLHRoaXMuX2FkZEF0dGFjaENsYXNzZXMubGVuZ3RoKSx2b2lkIDA9PT10aGlzLl9hZGRBdHRhY2hDbGFzc2VzJiYodGhpcy5fYWRkQXR0YWNoQ2xhc3Nlcz1bXSk7dmFyIHI9dGhpcy5fYWRkQXR0YWNoQ2xhc3NlcztlLnRvcCYmci5wdXNoKHRoaXMuZ2V0Q2xhc3MoImVsZW1lbnQtYXR0YWNoZWQiKSsiLSIrZS50b3ApLGUubGVmdCYmci5wdXNoKHRoaXMuZ2V0Q2xhc3MoImVsZW1lbnQtYXR0YWNoZWQiKSsiLSIrZS5sZWZ0KSx0LnRvcCYmci5wdXNoKHRoaXMuZ2V0Q2xhc3MoInRhcmdldC1hdHRhY2hlZCIpKyItIit0LnRvcCksdC5sZWZ0JiZyLnB1c2godGhpcy5nZXRDbGFzcygidGFyZ2V0LWF0dGFjaGVkIikrIi0iK3QubGVmdCk7dmFyIG89W107WyJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJtaWRkbGUiLCJjZW50ZXIiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtvLnB1c2gobi5nZXRDbGFzcygiZWxlbWVudC1hdHRhY2hlZCIpKyItIitlKSxvLnB1c2gobi5nZXRDbGFzcygidGFyZ2V0LWF0dGFjaGVkIikrIi0iK2UpfSkpLEUoKGZ1bmN0aW9uKCl7dm9pZCAwIT09bi5fYWRkQXR0YWNoQ2xhc3NlcyYmKHcobi5lbGVtZW50LG4uX2FkZEF0dGFjaENsYXNzZXMsbyksITEhPT1uLm9wdGlvbnMuYWRkVGFyZ2V0Q2xhc3NlcyYmdyhuLnRhcmdldCxuLl9hZGRBdHRhY2hDbGFzc2VzLG8pLGRlbGV0ZSBuLl9hZGRBdHRhY2hDbGFzc2VzKX0pKX19LHtrZXk6InBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF18fGFyZ3VtZW50c1swXTtpZih0aGlzLmVuYWJsZWQpe3RoaXMuY2xlYXJDYWNoZSgpO3ZhciByPUYodGhpcy50YXJnZXRBdHRhY2htZW50LHRoaXMuYXR0YWNobWVudCk7dGhpcy51cGRhdGVBdHRhY2hDbGFzc2VzKHRoaXMuYXR0YWNobWVudCxyKTt2YXIgbz10aGlzLmNhY2hlKCJlbGVtZW50LWJvdW5kcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGMoZS5lbGVtZW50KX0pKSxhPW8ud2lkdGgsaT1vLmhlaWdodDtpZigwPT09YSYmMD09PWkmJnZvaWQgMCE9PXRoaXMubGFzdFNpemUpe3ZhciB1PXRoaXMubGFzdFNpemU7YT11LndpZHRoLGk9dS5oZWlnaHR9ZWxzZSB0aGlzLmxhc3RTaXplPXt3aWR0aDphLGhlaWdodDppfTt2YXIgcz10aGlzLmNhY2hlKCJ0YXJnZXQtYm91bmRzIiwoZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRUYXJnZXRCb3VuZHMoKX0pKSxsPXMsZD1LKEIodGhpcy5hdHRhY2htZW50KSx7d2lkdGg6YSxoZWlnaHQ6aX0pLGg9SyhCKHIpLGwpLHk9Syh0aGlzLm9mZnNldCx7d2lkdGg6YSxoZWlnaHQ6aX0pLG09Syh0aGlzLnRhcmdldE9mZnNldCxsKTtkPXooZCx5KSxoPXooaCxtKTtmb3IodmFyIHY9cy5sZWZ0K2gubGVmdC1kLmxlZnQsZz1zLnRvcCtoLnRvcC1kLnRvcCxiPTA7YjxuLm1vZHVsZXMubGVuZ3RoOysrYil7dmFyIHc9bi5tb2R1bGVzW2JdLF89dy5wb3NpdGlvbi5jYWxsKHRoaXMse2xlZnQ6dix0b3A6Zyx0YXJnZXRBdHRhY2htZW50OnIsdGFyZ2V0UG9zOnMsZWxlbWVudFBvczpvLG9mZnNldDpkLHRhcmdldE9mZnNldDpoLG1hbnVhbE9mZnNldDp5LG1hbnVhbFRhcmdldE9mZnNldDptLHNjcm9sbGJhclNpemU6eCxhdHRhY2htZW50OnRoaXMuYXR0YWNobWVudH0pO2lmKCExPT09XylyZXR1cm4hMTt2b2lkIDAhPT1fJiYib2JqZWN0Ij09dHlwZW9mIF8mJihnPV8udG9wLHY9Xy5sZWZ0KX12YXIgRT17cGFnZTp7dG9wOmcsbGVmdDp2fSx2aWV3cG9ydDp7dG9wOmctcGFnZVlPZmZzZXQsYm90dG9tOnBhZ2VZT2Zmc2V0LWctaStpbm5lckhlaWdodCxsZWZ0OnYtcGFnZVhPZmZzZXQscmlnaHQ6cGFnZVhPZmZzZXQtdi1hK2lubmVyV2lkdGh9fSxrPXRoaXMudGFyZ2V0Lm93bmVyRG9jdW1lbnQsQz1rLmRlZmF1bHRWaWV3LHg9dm9pZCAwO3JldHVybiBDLmlubmVySGVpZ2h0PmsuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCYmKHg9dGhpcy5jYWNoZSgic2Nyb2xsYmFyLXNpemUiLHApLEUudmlld3BvcnQuYm90dG9tLT14LmhlaWdodCksQy5pbm5lcldpZHRoPmsuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoJiYoeD10aGlzLmNhY2hlKCJzY3JvbGxiYXItc2l6ZSIscCksRS52aWV3cG9ydC5yaWdodC09eC53aWR0aCksLTEhPT1bIiIsInN0YXRpYyJdLmluZGV4T2Yoay5ib2R5LnN0eWxlLnBvc2l0aW9uKSYmLTEhPT1bIiIsInN0YXRpYyJdLmluZGV4T2Yoay5ib2R5LnBhcmVudEVsZW1lbnQuc3R5bGUucG9zaXRpb24pfHwoRS5wYWdlLmJvdHRvbT1rLmJvZHkuc2Nyb2xsSGVpZ2h0LWctaSxFLnBhZ2UucmlnaHQ9ay5ib2R5LnNjcm9sbFdpZHRoLXYtYSksdm9pZCAwIT09dGhpcy5vcHRpb25zLm9wdGltaXphdGlvbnMmJiExIT09dGhpcy5vcHRpb25zLm9wdGltaXphdGlvbnMubW92ZUVsZW1lbnQmJnZvaWQgMD09PXRoaXMudGFyZ2V0TW9kaWZpZXImJmZ1bmN0aW9uKCl7dmFyIHQ9ZS5jYWNoZSgidGFyZ2V0LW9mZnNldHBhcmVudCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGYoZS50YXJnZXQpfSkpLG49ZS5jYWNoZSgidGFyZ2V0LW9mZnNldHBhcmVudC1ib3VuZHMiLChmdW5jdGlvbigpe3JldHVybiBjKHQpfSkpLHI9Z2V0Q29tcHV0ZWRTdHlsZSh0KSxvPW4sYT17fTtpZihbIlRvcCIsIkxlZnQiLCJCb3R0b20iLCJSaWdodCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2FbZS50b0xvd2VyQ2FzZSgpXT1wYXJzZUZsb2F0KHJbImJvcmRlciIrZSsiV2lkdGgiXSl9KSksbi5yaWdodD1rLmJvZHkuc2Nyb2xsV2lkdGgtbi5sZWZ0LW8ud2lkdGgrYS5yaWdodCxuLmJvdHRvbT1rLmJvZHkuc2Nyb2xsSGVpZ2h0LW4udG9wLW8uaGVpZ2h0K2EuYm90dG9tLEUucGFnZS50b3A+PW4udG9wK2EudG9wJiZFLnBhZ2UuYm90dG9tPj1uLmJvdHRvbSYmRS5wYWdlLmxlZnQ+PW4ubGVmdCthLmxlZnQmJkUucGFnZS5yaWdodD49bi5yaWdodCl7dmFyIGk9dC5zY3JvbGxUb3AsdT10LnNjcm9sbExlZnQ7RS5vZmZzZXQ9e3RvcDpFLnBhZ2UudG9wLW4udG9wK2ktYS50b3AsbGVmdDpFLnBhZ2UubGVmdC1uLmxlZnQrdS1hLmxlZnR9fX0oKSx0aGlzLm1vdmUoRSksdGhpcy5oaXN0b3J5LnVuc2hpZnQoRSksdGhpcy5oaXN0b3J5Lmxlbmd0aD4zJiZ0aGlzLmhpc3RvcnkucG9wKCksdCYmTygpLCEwfX19LHtrZXk6Im1vdmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodm9pZCAwIT09dGhpcy5lbGVtZW50LnBhcmVudE5vZGUpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWZvcih2YXIgbyBpbiBuW3JdPXt9LGVbcl0pe2Zvcih2YXIgYT0hMSxpPTA7aTx0aGlzLmhpc3RvcnkubGVuZ3RoOysraSl7dmFyIHU9dGhpcy5oaXN0b3J5W2ldO2lmKHZvaWQgMCE9PXVbcl0mJiF4KHVbcl1bb10sZVtyXVtvXSkpe2E9ITA7YnJlYWt9fWF8fChuW3JdW29dPSEwKX12YXIgcyxsLGM9e3RvcDoiIixsZWZ0OiIiLHJpZ2h0OiIiLGJvdHRvbToiIn0sZD1mdW5jdGlvbihlLG4pe2lmKCExIT09KHZvaWQgMCE9PXQub3B0aW9ucy5vcHRpbWl6YXRpb25zP3Qub3B0aW9ucy5vcHRpbWl6YXRpb25zLmdwdTpudWxsKSl7dmFyIHI9dm9pZCAwLG89dm9pZCAwO2UudG9wPyhjLnRvcD0wLHI9bi50b3ApOihjLmJvdHRvbT0wLHI9LW4uYm90dG9tKSxlLmxlZnQ/KGMubGVmdD0wLG89bi5sZWZ0KTooYy5yaWdodD0wLG89LW4ucmlnaHQpLCJudW1iZXIiPT10eXBlb2Ygd2luZG93LmRldmljZVBpeGVsUmF0aW8mJmRldmljZVBpeGVsUmF0aW8lMT09MCYmKG89TWF0aC5yb3VuZChvKmRldmljZVBpeGVsUmF0aW8pL2RldmljZVBpeGVsUmF0aW8scj1NYXRoLnJvdW5kKHIqZGV2aWNlUGl4ZWxSYXRpbykvZGV2aWNlUGl4ZWxSYXRpbyksY1tQXT0idHJhbnNsYXRlWCgiK28rInB4KSB0cmFuc2xhdGVZKCIrcisicHgpIiwibXNUcmFuc2Zvcm0iIT09UCYmKGNbUF0rPSIgdHJhbnNsYXRlWigwKSIpfWVsc2UgZS50b3A/Yy50b3A9bi50b3ArInB4IjpjLmJvdHRvbT1uLmJvdHRvbSsicHgiLGUubGVmdD9jLmxlZnQ9bi5sZWZ0KyJweCI6Yy5yaWdodD1uLnJpZ2h0KyJweCJ9LHA9ITE7aWYoKG4ucGFnZS50b3B8fG4ucGFnZS5ib3R0b20pJiYobi5wYWdlLmxlZnR8fG4ucGFnZS5yaWdodCk/KGMucG9zaXRpb249ImFic29sdXRlIixkKG4ucGFnZSxlLnBhZ2UpKToobi52aWV3cG9ydC50b3B8fG4udmlld3BvcnQuYm90dG9tKSYmKG4udmlld3BvcnQubGVmdHx8bi52aWV3cG9ydC5yaWdodCk/KGMucG9zaXRpb249ImZpeGVkIixkKG4udmlld3BvcnQsZS52aWV3cG9ydCkpOnZvaWQgMCE9PW4ub2Zmc2V0JiZuLm9mZnNldC50b3AmJm4ub2Zmc2V0LmxlZnQ/ZnVuY3Rpb24oKXtjLnBvc2l0aW9uPSJhYnNvbHV0ZSI7dmFyIHI9dC5jYWNoZSgidGFyZ2V0LW9mZnNldHBhcmVudCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGYodC50YXJnZXQpfSkpO2YodC5lbGVtZW50KSE9PXImJkUoKGZ1bmN0aW9uKCl7dC5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5lbGVtZW50KSxyLmFwcGVuZENoaWxkKHQuZWxlbWVudCl9KSksZChuLm9mZnNldCxlLm9mZnNldCkscD0hMH0oKTooYy5wb3NpdGlvbj0iYWJzb2x1dGUiLGQoe3RvcDohMCxsZWZ0OiEwfSxlLnBhZ2UpKSwhcClpZih0aGlzLm9wdGlvbnMuYm9keUVsZW1lbnQpdGhpcy5lbGVtZW50LnBhcmVudE5vZGUhPT10aGlzLm9wdGlvbnMuYm9keUVsZW1lbnQmJnRoaXMub3B0aW9ucy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO2Vsc2V7Zm9yKHZhciB5PSEwLG09dGhpcy5lbGVtZW50LnBhcmVudE5vZGU7bSYmMT09PW0ubm9kZVR5cGUmJiJCT0RZIiE9PW0udGFnTmFtZSYmKGw9dm9pZCAwLCgobD0ocz1tKS5vd25lckRvY3VtZW50KS5mdWxsc2NyZWVuRWxlbWVudHx8bC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8bC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8bC5tc0Z1bGxzY3JlZW5FbGVtZW50KSE9PXMpOyl7aWYoInN0YXRpYyIhPT1nZXRDb21wdXRlZFN0eWxlKG0pLnBvc2l0aW9uKXt5PSExO2JyZWFrfW09bS5wYXJlbnROb2RlfXl8fCh0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KSl9dmFyIHY9e30sZz0hMTtmb3IodmFyIG8gaW4gYyl7dmFyIGI9Y1tvXTt0aGlzLmVsZW1lbnQuc3R5bGVbb10hPT1iJiYoZz0hMCx2W29dPWIpfWcmJkUoKGZ1bmN0aW9uKCl7aCh0LmVsZW1lbnQuc3R5bGUsdiksdC50cmlnZ2VyKCJyZXBvc2l0aW9uZWQiKX0pKX19fV0pLG99KGspO1UubW9kdWxlcz1bXSxuLnBvc2l0aW9uPWo7dmFyIFc9aChVLG4pO0M9ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49W10scj0hMCxvPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIGksdT1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGk9dS5uZXh0KCkpLmRvbmUpJiYobi5wdXNoKGkudmFsdWUpLCF0fHxuLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtvPSEwLGE9ZX1maW5hbGx5e3RyeXshciYmdS5yZXR1cm4mJnUucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufShlLHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0sYz0oSD1uLlV0aWxzKS5nZXRCb3VuZHM7dmFyIGg9SC5leHRlbmQsWT0odz1ILnVwZGF0ZUNsYXNzZXMsRT1ILmRlZmVyLFsibGVmdCIsInRvcCIsInJpZ2h0IiwiYm90dG9tIl0pO24ubW9kdWxlcy5wdXNoKHtwb3NpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ZS50b3Ascj1lLmxlZnQsbz1lLnRhcmdldEF0dGFjaG1lbnQ7aWYoIXRoaXMub3B0aW9ucy5jb25zdHJhaW50cylyZXR1cm4hMDt2YXIgYT10aGlzLmNhY2hlKCJlbGVtZW50LWJvdW5kcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGModC5lbGVtZW50KX0pKSxpPWEuaGVpZ2h0LHU9YS53aWR0aDtpZigwPT09dSYmMD09PWkmJnZvaWQgMCE9PXRoaXMubGFzdFNpemUpe3ZhciBzPXRoaXMubGFzdFNpemU7dT1zLndpZHRoLGk9cy5oZWlnaHR9dmFyIGw9dGhpcy5jYWNoZSgidGFyZ2V0LWJvdW5kcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0VGFyZ2V0Qm91bmRzKCl9KSksZj1sLmhlaWdodCxkPWwud2lkdGgscD1bdGhpcy5nZXRDbGFzcygicGlubmVkIiksdGhpcy5nZXRDbGFzcygib3V0LW9mLWJvdW5kcyIpXTt0aGlzLm9wdGlvbnMuY29uc3RyYWludHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vdXRPZkJvdW5kc0NsYXNzLG49ZS5waW5uZWRDbGFzczt0JiZwLnB1c2godCksbiYmcC5wdXNoKG4pfSkpLHAuZm9yRWFjaCgoZnVuY3Rpb24oZSl7WyJsZWZ0IiwidG9wIiwicmlnaHQiLCJib3R0b20iXS5mb3JFYWNoKChmdW5jdGlvbih0KXtwLnB1c2goZSsiLSIrdCl9KSl9KSk7dmFyIHk9W10sbT1oKHt9LG8pLHY9aCh7fSx0aGlzLmF0dGFjaG1lbnQpO3JldHVybiB0aGlzLm9wdGlvbnMuY29uc3RyYWludHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGE9ZS50byxzPWUuYXR0YWNobWVudCxsPWUucGluO3ZvaWQgMD09PXMmJihzPSIiKTt2YXIgcD12b2lkIDAsaD12b2lkIDA7aWYocy5pbmRleE9mKCIgIik+PTApe3ZhciBnPXMuc3BsaXQoIiAiKSxiPUMoZywyKTtoPWJbMF0scD1iWzFdfWVsc2UgcD1oPXM7dmFyIHc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic2Nyb2xsUGFyZW50Ij09PXQ/dD1lLnNjcm9sbFBhcmVudHNbMF06IndpbmRvdyI9PT10JiYodD1bcGFnZVhPZmZzZXQscGFnZVlPZmZzZXQsaW5uZXJXaWR0aCtwYWdlWE9mZnNldCxpbm5lckhlaWdodCtwYWdlWU9mZnNldF0pLHQ9PT1kb2N1bWVudCYmKHQ9dC5kb2N1bWVudEVsZW1lbnQpLHZvaWQgMCE9PXQubm9kZVR5cGUmJmZ1bmN0aW9uKCl7dmFyIGU9dCxuPWModCkscj1uLG89Z2V0Q29tcHV0ZWRTdHlsZSh0KTtpZih0PVtyLmxlZnQsci50b3Asbi53aWR0aCtyLmxlZnQsbi5oZWlnaHQrci50b3BdLGUub3duZXJEb2N1bWVudCE9PWRvY3VtZW50KXt2YXIgYT1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7dFswXSs9YS5wYWdlWE9mZnNldCx0WzFdKz1hLnBhZ2VZT2Zmc2V0LHRbMl0rPWEucGFnZVhPZmZzZXQsdFszXSs9YS5wYWdlWU9mZnNldH1ZLmZvckVhY2goKGZ1bmN0aW9uKGUsbil7IlRvcCI9PT0oZT1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHIoMSkpfHwiTGVmdCI9PT1lP3Rbbl0rPXBhcnNlRmxvYXQob1siYm9yZGVyIitlKyJXaWR0aCJdKTp0W25dLT1wYXJzZUZsb2F0KG9bImJvcmRlciIrZSsiV2lkdGgiXSl9KSl9KCksdH0odCxhKTsidGFyZ2V0IiE9PWgmJiJib3RoIiE9PWh8fChuPHdbMV0mJiJ0b3AiPT09bS50b3AmJihuKz1mLG0udG9wPSJib3R0b20iKSxuK2k+d1szXSYmImJvdHRvbSI9PT1tLnRvcCYmKG4tPWYsbS50b3A9InRvcCIpKSwidG9nZXRoZXIiPT09aCYmKCJ0b3AiPT09bS50b3AmJigiYm90dG9tIj09PXYudG9wJiZuPHdbMV0/KG4rPWYsbS50b3A9ImJvdHRvbSIsbis9aSx2LnRvcD0idG9wIik6InRvcCI9PT12LnRvcCYmbitpPndbM10mJm4tKGktZik+PXdbMV0mJihuLT1pLWYsbS50b3A9ImJvdHRvbSIsdi50b3A9ImJvdHRvbSIpKSwiYm90dG9tIj09PW0udG9wJiYoInRvcCI9PT12LnRvcCYmbitpPndbM10/KG4tPWYsbS50b3A9InRvcCIsbi09aSx2LnRvcD0iYm90dG9tIik6ImJvdHRvbSI9PT12LnRvcCYmbjx3WzFdJiZuKygyKmktZik8PXdbM10mJihuKz1pLWYsbS50b3A9InRvcCIsdi50b3A9InRvcCIpKSwibWlkZGxlIj09PW0udG9wJiYobitpPndbM10mJiJ0b3AiPT09di50b3A/KG4tPWksdi50b3A9ImJvdHRvbSIpOm48d1sxXSYmImJvdHRvbSI9PT12LnRvcCYmKG4rPWksdi50b3A9InRvcCIpKSksInRhcmdldCIhPT1wJiYiYm90aCIhPT1wfHwocjx3WzBdJiYibGVmdCI9PT1tLmxlZnQmJihyKz1kLG0ubGVmdD0icmlnaHQiKSxyK3U+d1syXSYmInJpZ2h0Ij09PW0ubGVmdCYmKHItPWQsbS5sZWZ0PSJsZWZ0IikpLCJ0b2dldGhlciI9PT1wJiYocjx3WzBdJiYibGVmdCI9PT1tLmxlZnQ/InJpZ2h0Ij09PXYubGVmdD8ocis9ZCxtLmxlZnQ9InJpZ2h0IixyKz11LHYubGVmdD0ibGVmdCIpOiJsZWZ0Ij09PXYubGVmdCYmKHIrPWQsbS5sZWZ0PSJyaWdodCIsci09dSx2LmxlZnQ9InJpZ2h0Iik6cit1PndbMl0mJiJyaWdodCI9PT1tLmxlZnQ/ImxlZnQiPT09di5sZWZ0PyhyLT1kLG0ubGVmdD0ibGVmdCIsci09dSx2LmxlZnQ9InJpZ2h0Iik6InJpZ2h0Ij09PXYubGVmdCYmKHItPWQsbS5sZWZ0PSJsZWZ0IixyKz11LHYubGVmdD0ibGVmdCIpOiJjZW50ZXIiPT09bS5sZWZ0JiYocit1PndbMl0mJiJsZWZ0Ij09PXYubGVmdD8oci09dSx2LmxlZnQ9InJpZ2h0Iik6cjx3WzBdJiYicmlnaHQiPT09di5sZWZ0JiYocis9dSx2LmxlZnQ9ImxlZnQiKSkpLCJlbGVtZW50IiE9PWgmJiJib3RoIiE9PWh8fChuPHdbMV0mJiJib3R0b20iPT09di50b3AmJihuKz1pLHYudG9wPSJ0b3AiKSxuK2k+d1szXSYmInRvcCI9PT12LnRvcCYmKG4tPWksdi50b3A9ImJvdHRvbSIpKSwiZWxlbWVudCIhPT1wJiYiYm90aCIhPT1wfHwocjx3WzBdJiYoInJpZ2h0Ij09PXYubGVmdD8ocis9dSx2LmxlZnQ9ImxlZnQiKToiY2VudGVyIj09PXYubGVmdCYmKHIrPXUvMix2LmxlZnQ9ImxlZnQiKSkscit1PndbMl0mJigibGVmdCI9PT12LmxlZnQ/KHItPXUsdi5sZWZ0PSJyaWdodCIpOiJjZW50ZXIiPT09di5sZWZ0JiYoci09dS8yLHYubGVmdD0icmlnaHQiKSkpLCJzdHJpbmciPT10eXBlb2YgbD9sPWwuc3BsaXQoIiwiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX0pKTohMD09PWwmJihsPVsidG9wIiwibGVmdCIsInJpZ2h0IiwiYm90dG9tIl0pLGw9bHx8W107dmFyIF8sRSxPPVtdLGs9W107bjx3WzFdJiYobC5pbmRleE9mKCJ0b3AiKT49MD8obj13WzFdLE8ucHVzaCgidG9wIikpOmsucHVzaCgidG9wIikpLG4raT53WzNdJiYobC5pbmRleE9mKCJib3R0b20iKT49MD8obj13WzNdLWksTy5wdXNoKCJib3R0b20iKSk6ay5wdXNoKCJib3R0b20iKSkscjx3WzBdJiYobC5pbmRleE9mKCJsZWZ0Iik+PTA/KHI9d1swXSxPLnB1c2goImxlZnQiKSk6ay5wdXNoKCJsZWZ0IikpLHIrdT53WzJdJiYobC5pbmRleE9mKCJyaWdodCIpPj0wPyhyPXdbMl0tdSxPLnB1c2goInJpZ2h0IikpOmsucHVzaCgicmlnaHQiKSksTy5sZW5ndGgmJihfPXZvaWQgMCxfPXZvaWQgMCE9PXQub3B0aW9ucy5waW5uZWRDbGFzcz90Lm9wdGlvbnMucGlubmVkQ2xhc3M6dC5nZXRDbGFzcygicGlubmVkIikseS5wdXNoKF8pLE8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7eS5wdXNoKF8rIi0iK2UpfSkpKSxrLmxlbmd0aCYmKEU9dm9pZCAwLEU9dm9pZCAwIT09dC5vcHRpb25zLm91dE9mQm91bmRzQ2xhc3M/dC5vcHRpb25zLm91dE9mQm91bmRzQ2xhc3M6dC5nZXRDbGFzcygib3V0LW9mLWJvdW5kcyIpLHkucHVzaChFKSxrLmZvckVhY2goKGZ1bmN0aW9uKGUpe3kucHVzaChFKyItIitlKX0pKSksKE8uaW5kZXhPZigibGVmdCIpPj0wfHxPLmluZGV4T2YoInJpZ2h0Iik+PTApJiYodi5sZWZ0PW0ubGVmdD0hMSksKE8uaW5kZXhPZigidG9wIik+PTB8fE8uaW5kZXhPZigiYm90dG9tIik+PTApJiYodi50b3A9bS50b3A9ITEpLG0udG9wPT09by50b3AmJm0ubGVmdD09PW8ubGVmdCYmdi50b3A9PT10LmF0dGFjaG1lbnQudG9wJiZ2LmxlZnQ9PT10LmF0dGFjaG1lbnQubGVmdHx8KHQudXBkYXRlQXR0YWNoQ2xhc3Nlcyh2LG0pLHQudHJpZ2dlcigidXBkYXRlIix7YXR0YWNobWVudDp2LHRhcmdldEF0dGFjaG1lbnQ6bX0pKX0pKSxFKChmdW5jdGlvbigpeyExIT09dC5vcHRpb25zLmFkZFRhcmdldENsYXNzZXMmJncodC50YXJnZXQseSxwKSx3KHQuZWxlbWVudCx5LHApfSkpLHt0b3A6bixsZWZ0OnJ9fX0pO3ZhciBILGM9KEg9bi5VdGlscykuZ2V0Qm91bmRzLHc9SC51cGRhdGVDbGFzc2VzO3JldHVybiBFPUguZGVmZXIsbi5tb2R1bGVzLnB1c2goe3Bvc2l0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1lLnRvcCxyPWUubGVmdCxvPXRoaXMuY2FjaGUoImVsZW1lbnQtYm91bmRzIiwoZnVuY3Rpb24oKXtyZXR1cm4gYyh0LmVsZW1lbnQpfSkpLGE9by5oZWlnaHQsaT1vLndpZHRoLHU9dGhpcy5nZXRUYXJnZXRCb3VuZHMoKSxzPW4rYSxsPXIraSxmPVtdO248PXUuYm90dG9tJiZzPj11LnRvcCYmWyJsZWZ0IiwicmlnaHQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD11W2VdO3QhPT1yJiZ0IT09bHx8Zi5wdXNoKGUpfSkpLHI8PXUucmlnaHQmJmw+PXUubGVmdCYmWyJ0b3AiLCJib3R0b20iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD11W2VdO3QhPT1uJiZ0IT09c3x8Zi5wdXNoKGUpfSkpO3ZhciBkPVtdLHA9W107cmV0dXJuIGQucHVzaCh0aGlzLmdldENsYXNzKCJhYnV0dGVkIikpLFsibGVmdCIsInRvcCIsInJpZ2h0IiwiYm90dG9tIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZC5wdXNoKHQuZ2V0Q2xhc3MoImFidXR0ZWQiKSsiLSIrZSl9KSksZi5sZW5ndGgmJnAucHVzaCh0aGlzLmdldENsYXNzKCJhYnV0dGVkIikpLGYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cC5wdXNoKHQuZ2V0Q2xhc3MoImFidXR0ZWQiKSsiLSIrZSl9KSksRSgoZnVuY3Rpb24oKXshMSE9PXQub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzJiZ3KHQudGFyZ2V0LHAsZCksdyh0LmVsZW1lbnQscCxkKX0pKSwhMH19KSxDPWZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPVtdLHI9ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLHU9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPShpPXUubmV4dCgpKS5kb25lKSYmKG4ucHVzaChpLnZhbHVlKSwhdHx8bi5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7IXImJnUucmV0dXJuJiZ1LnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1yZXR1cm4gbn0oZSx0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9LG4ubW9kdWxlcy5wdXNoKHtwb3NpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1lLnRvcCxuPWUubGVmdDtpZih0aGlzLm9wdGlvbnMuc2hpZnQpe3ZhciByPXRoaXMub3B0aW9ucy5zaGlmdDsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLnNoaWZ0JiYocj10aGlzLm9wdGlvbnMuc2hpZnQuY2FsbCh0aGlzLHt0b3A6dCxsZWZ0Om59KSk7dmFyIG89dm9pZCAwLGE9dm9pZCAwO2lmKCJzdHJpbmciPT10eXBlb2Ygcil7KHI9ci5zcGxpdCgiICIpKVsxXT1yWzFdfHxyWzBdO3ZhciBpPUMociwyKTtvPWlbMF0sYT1pWzFdLG89cGFyc2VGbG9hdChvLDEwKSxhPXBhcnNlRmxvYXQoYSwxMCl9ZWxzZSBvPXIudG9wLGE9ci5sZWZ0O3JldHVybnt0b3A6dCs9byxsZWZ0Om4rPWF9fX19KSxXfSk/ci5hcHBseSh0LG8pOnIpfHwoZS5leHBvcnRzPWEpfSxvRkZKOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMlc2eiIpLG89bi5uKHIpLGE9bigicTF0SSIpLGk9bi5uKGEpLHU9bigiMTd4OSIpLHM9bi5uKHUpLGw9bigiTGhDdiIpLGM9bigiYUo0QSIpO2Z1bmN0aW9uIGYoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBkKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIHA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuLHI7Zih0aGlzLHQpO2Zvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLGE9QXJyYXkobyksaT0wO2k8bztpKyspYVtpXT1hcmd1bWVudHNbaV07cmV0dXJuIG49cj1kKHRoaXMsZS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChhKSkpLHIuaGlzdG9yeT1PYmplY3QobC5hKShyLnByb3BzKSxkKHIsbil9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSx0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsTW91bnQ9ZnVuY3Rpb24oKXtvKCkoIXRoaXMucHJvcHMuaGlzdG9yeSwiPEJyb3dzZXJSb3V0ZXI+IGlnbm9yZXMgdGhlIGhpc3RvcnkgcHJvcC4gVG8gdXNlIGEgY3VzdG9tIGhpc3RvcnksIHVzZSBgaW1wb3J0IHsgUm91dGVyIH1gIGluc3RlYWQgb2YgYGltcG9ydCB7IEJyb3dzZXJSb3V0ZXIgYXMgUm91dGVyIH1gLiIpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaS5hLmNyZWF0ZUVsZW1lbnQoYy5hLHtoaXN0b3J5OnRoaXMuaGlzdG9yeSxjaGlsZHJlbjp0aGlzLnByb3BzLmNoaWxkcmVufSl9LHR9KGkuYS5Db21wb25lbnQpO3AucHJvcFR5cGVzPXtiYXNlbmFtZTpzLmEuc3RyaW5nLGZvcmNlUmVmcmVzaDpzLmEuYm9vbCxnZXRVc2VyQ29uZmlybWF0aW9uOnMuYS5mdW5jLGtleUxlbmd0aDpzLmEubnVtYmVyLGNoaWxkcmVuOnMuYS5ub2RlfSx0LmE9cH0sb0hucDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvICo7ICovKS5zaGlmdCgpfSx0LnBhcmFtcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvICo7ICovKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zcGxpdCgvICo9ICovKSxyPW4uc2hpZnQoKSxvPW4uc2hpZnQoKTtyZXR1cm4gciYmbyYmKGVbcl09byksZX0pLHt9KX0sdC5wYXJzZUxpbmtzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KC8gKiwgKi8pLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj10LnNwbGl0KC8gKjsgKi8pLHI9blswXS5zbGljZSgxLC0xKTtyZXR1cm4gZVtuWzFdLnNwbGl0KC8gKj0gKi8pWzFdLnNsaWNlKDEsLTEpXT1yLGV9KSx7fSl9LHQuY2xlYW5IZWFkZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZGVsZXRlIGVbImNvbnRlbnQtdHlwZSJdLGRlbGV0ZSBlWyJjb250ZW50LWxlbmd0aCJdLGRlbGV0ZSBlWyJ0cmFuc2Zlci1lbmNvZGluZyJdLGRlbGV0ZSBlLmhvc3QsdCYmKGRlbGV0ZSBlLmF1dGhvcml6YXRpb24sZGVsZXRlIGUuY29va2llKSxlfX0sb05OUDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkQzekEiKTtlLmV4cG9ydHM9ci5jYWxsKEZ1bmN0aW9uLmNhbGwsT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSl9LG9PY3I6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlKHQpO3JldHVybiIifX0sb09zdjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuZGVmYXVsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuLHIsbyl7dGhpcy5tZXNzYWdlPXQsdGhpcy5leHBlY3RlZD1uLHRoaXMuZm91bmQ9cix0aGlzLmxvY2F0aW9uPW8sdGhpcy5uYW1lPSJTeW50YXhFcnJvciIsImZ1bmN0aW9uIj09dHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGUpfXJldHVybiBmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9bi5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IG59KGUsRXJyb3IpLHtTeW50YXhFcnJvcjplLHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBuLHI9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp7fSxvPXt9LGE9e3N0YXJ0Ok1lfSxpPU1lLHU9ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6Im1lc3NhZ2VGb3JtYXRQYXR0ZXJuIixlbGVtZW50czplLGxvY2F0aW9uOkNlKCl9fSxzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaT0iIjtmb3IodD0wLHI9ZS5sZW5ndGg7dDxyO3QrPTEpZm9yKG49MCxhPShvPWVbdF0pLmxlbmd0aDtuPGE7bis9MSlpKz1vW25dO3JldHVybiBpfSxsPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOiJtZXNzYWdlVGV4dEVsZW1lbnQiLHZhbHVlOmUsbG9jYXRpb246Q2UoKX19LGM9L15bXiBcdFxuXHIsLis9e30jXS8sZj17dHlwZToiY2xhc3MiLHZhbHVlOiJbXiBcXHRcXG5cXHIsLis9e30jXSIsZGVzY3JpcHRpb246IlteIFxcdFxcblxcciwuKz17fSNdIn0sZD0ieyIscD17dHlwZToibGl0ZXJhbCIsdmFsdWU6InsiLGRlc2NyaXB0aW9uOicieyInfSxoPSIsIix5PXt0eXBlOiJsaXRlcmFsIix2YWx1ZToiLCIsZGVzY3JpcHRpb246JyIsIid9LG09In0iLHY9e3R5cGU6ImxpdGVyYWwiLHZhbHVlOiJ9IixkZXNjcmlwdGlvbjonIn0iJ30sZz1mdW5jdGlvbihlLHQpe3JldHVybnt0eXBlOiJhcmd1bWVudEVsZW1lbnQiLGlkOmUsZm9ybWF0OnQmJnRbMl0sbG9jYXRpb246Q2UoKX19LGI9Im51bWJlciIsdz17dHlwZToibGl0ZXJhbCIsdmFsdWU6Im51bWJlciIsZGVzY3JpcHRpb246JyJudW1iZXIiJ30sXz0iZGF0ZSIsRT17dHlwZToibGl0ZXJhbCIsdmFsdWU6ImRhdGUiLGRlc2NyaXB0aW9uOiciZGF0ZSInfSxPPSJ0aW1lIixrPXt0eXBlOiJsaXRlcmFsIix2YWx1ZToidGltZSIsZGVzY3JpcHRpb246JyJ0aW1lIid9LEM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dHlwZTplKyJGb3JtYXQiLHN0eWxlOnQmJnRbMl0sbG9jYXRpb246Q2UoKX19LHg9InBsdXJhbCIsUz17dHlwZToibGl0ZXJhbCIsdmFsdWU6InBsdXJhbCIsZGVzY3JpcHRpb246JyJwbHVyYWwiJ30sRD1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTplLnR5cGUsb3JkaW5hbDohMSxvZmZzZXQ6ZS5vZmZzZXR8fDAsb3B0aW9uczplLm9wdGlvbnMsbG9jYXRpb246Q2UoKX19LFQ9InNlbGVjdG9yZGluYWwiLE09e3R5cGU6ImxpdGVyYWwiLHZhbHVlOiJzZWxlY3RvcmRpbmFsIixkZXNjcmlwdGlvbjonInNlbGVjdG9yZGluYWwiJ30sUD1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTplLnR5cGUsb3JkaW5hbDohMCxvZmZzZXQ6ZS5vZmZzZXR8fDAsb3B0aW9uczplLm9wdGlvbnMsbG9jYXRpb246Q2UoKX19LE49InNlbGVjdCIsaj17dHlwZToibGl0ZXJhbCIsdmFsdWU6InNlbGVjdCIsZGVzY3JpcHRpb246JyJzZWxlY3QiJ30sTD1mdW5jdGlvbihlKXtyZXR1cm57dHlwZToic2VsZWN0Rm9ybWF0IixvcHRpb25zOmUsbG9jYXRpb246Q2UoKX19LFI9Ij0iLEk9e3R5cGU6ImxpdGVyYWwiLHZhbHVlOiI9IixkZXNjcmlwdGlvbjonIj0iJ30sQT1mdW5jdGlvbihlLHQpe3JldHVybnt0eXBlOiJvcHRpb25hbEZvcm1hdFBhdHRlcm4iLHNlbGVjdG9yOmUsdmFsdWU6dCxsb2NhdGlvbjpDZSgpfX0sRj0ib2Zmc2V0OiIsQj17dHlwZToibGl0ZXJhbCIsdmFsdWU6Im9mZnNldDoiLGRlc2NyaXB0aW9uOicib2Zmc2V0OiInfSx6PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxLPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3R5cGU6InBsdXJhbEZvcm1hdCIsb2Zmc2V0OmUsb3B0aW9uczp0LGxvY2F0aW9uOkNlKCl9fSxxPXt0eXBlOiJvdGhlciIsZGVzY3JpcHRpb246IndoaXRlc3BhY2UifSxWPS9eWyBcdFxuXHJdLyxVPXt0eXBlOiJjbGFzcyIsdmFsdWU6IlsgXFx0XFxuXFxyXSIsZGVzY3JpcHRpb246IlsgXFx0XFxuXFxyXSJ9LFc9e3R5cGU6Im90aGVyIixkZXNjcmlwdGlvbjoib3B0aW9uYWxXaGl0ZXNwYWNlIn0sWT0vXlswLTldLyxIPXt0eXBlOiJjbGFzcyIsdmFsdWU6IlswLTldIixkZXNjcmlwdGlvbjoiWzAtOV0ifSxHPS9eWzAtOWEtZl0vaSxRPXt0eXBlOiJjbGFzcyIsdmFsdWU6IlswLTlhLWZdaSIsZGVzY3JpcHRpb246IlswLTlhLWZdaSJ9LEo9IjAiLFo9e3R5cGU6ImxpdGVyYWwiLHZhbHVlOiIwIixkZXNjcmlwdGlvbjonIjAiJ30sJD0vXlsxLTldLyxYPXt0eXBlOiJjbGFzcyIsdmFsdWU6IlsxLTldIixkZXNjcmlwdGlvbjoiWzEtOV0ifSxlZT1mdW5jdGlvbihlKXtyZXR1cm4gcGFyc2VJbnQoZSwxMCl9LHRlPS9eW157fVxcXDAtXHgxRn8gXHRcblxyXS8sbmU9e3R5cGU6ImNsYXNzIix2YWx1ZToiW157fVxcXFxcXDAtXFx4MUZcXHg3ZiBcXHRcXG5cXHJdIixkZXNjcmlwdGlvbjoiW157fVxcXFxcXDAtXFx4MUZcXHg3ZiBcXHRcXG5cXHJdIn0scmU9IlxcXFwiLG9lPXt0eXBlOiJsaXRlcmFsIix2YWx1ZToiXFxcXCIsZGVzY3JpcHRpb246JyJcXFxcXFxcXCInfSxhZT1mdW5jdGlvbigpe3JldHVybiJcXCJ9LGllPSJcXCMiLHVlPXt0eXBlOiJsaXRlcmFsIix2YWx1ZToiXFwjIixkZXNjcmlwdGlvbjonIlxcXFwjIid9LHNlPWZ1bmN0aW9uKCl7cmV0dXJuIlxcIyJ9LGxlPSJcXHsiLGNlPXt0eXBlOiJsaXRlcmFsIix2YWx1ZToiXFx7IixkZXNjcmlwdGlvbjonIlxcXFx7Iid9LGZlPWZ1bmN0aW9uKCl7cmV0dXJuInsifSxkZT0iXFx9IixwZT17dHlwZToibGl0ZXJhbCIsdmFsdWU6IlxcfSIsZGVzY3JpcHRpb246JyJcXFxcfSInfSxoZT1mdW5jdGlvbigpe3JldHVybiJ9In0seWU9IlxcdSIsbWU9e3R5cGU6ImxpdGVyYWwiLHZhbHVlOiJcXHUiLGRlc2NyaXB0aW9uOiciXFxcXHUiJ30sdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZSwxNikpfSxnZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5qb2luKCIiKX0sYmU9MCx3ZT0wLF9lPVt7bGluZToxLGNvbHVtbjoxLHNlZW5DUjohMX1dLEVlPTAsT2U9W10sa2U9MDtpZigic3RhcnRSdWxlImluIHIpe2lmKCEoci5zdGFydFJ1bGUgaW4gYSkpdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBzdGFydCBwYXJzaW5nIGZyb20gcnVsZSBcIiIrci5zdGFydFJ1bGUrJyIuJyk7aT1hW3Iuc3RhcnRSdWxlXX1mdW5jdGlvbiBDZSgpe3JldHVybiBTZSh3ZSxiZSl9ZnVuY3Rpb24geGUoZSl7dmFyIG4scixvPV9lW2VdO2lmKG8pcmV0dXJuIG87Zm9yKG49ZS0xOyFfZVtuXTspbi0tO2ZvcihvPXtsaW5lOihvPV9lW25dKS5saW5lLGNvbHVtbjpvLmNvbHVtbixzZWVuQ1I6by5zZWVuQ1J9O248ZTspIlxuIj09PShyPXQuY2hhckF0KG4pKT8oby5zZWVuQ1J8fG8ubGluZSsrLG8uY29sdW1uPTEsby5zZWVuQ1I9ITEpOiJcciI9PT1yfHwiXHUyMDI4Ij09PXJ8fCJcdTIwMjkiPT09cj8oby5saW5lKyssby5jb2x1bW49MSxvLnNlZW5DUj0hMCk6KG8uY29sdW1uKyssby5zZWVuQ1I9ITEpLG4rKztyZXR1cm4gX2VbZV09byxvfWZ1bmN0aW9uIFNlKGUsdCl7dmFyIG49eGUoZSkscj14ZSh0KTtyZXR1cm57c3RhcnQ6e29mZnNldDplLGxpbmU6bi5saW5lLGNvbHVtbjpuLmNvbHVtbn0sZW5kOntvZmZzZXQ6dCxsaW5lOnIubGluZSxjb2x1bW46ci5jb2x1bW59fX1mdW5jdGlvbiBEZShlKXtiZTxFZXx8KGJlPkVlJiYoRWU9YmUsT2U9W10pLE9lLnB1c2goZSkpfWZ1bmN0aW9uIFRlKHQsbixyLG8pe3JldHVybiBudWxsIT09biYmZnVuY3Rpb24oZSl7dmFyIHQ9MTtmb3IoZS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmRlc2NyaXB0aW9uPHQuZGVzY3JpcHRpb24/LTE6ZS5kZXNjcmlwdGlvbj50LmRlc2NyaXB0aW9uPzE6MH0pKTt0PGUubGVuZ3RoOyllW3QtMV09PT1lW3RdP2Uuc3BsaWNlKHQsMSk6dCsrfShuKSxuZXcgZShudWxsIT09dD90OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1uZXcgQXJyYXkoZS5sZW5ndGgpO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspcltuXT1lW25dLmRlc2NyaXB0aW9uO3JldHVybiJFeHBlY3RlZCAiKyhlLmxlbmd0aD4xP3Iuc2xpY2UoMCwtMSkuam9pbigiLCAiKSsiIG9yICIrcltlLmxlbmd0aC0xXTpyWzBdKSsiIGJ1dCAiKyh0PyciJytmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBlLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9cmV0dXJuIGUucmVwbGFjZSgvXFwvZywiXFxcXCIpLnJlcGxhY2UoLyIvZywnXFwiJykucmVwbGFjZSgvXHgwOC9nLCJcXGIiKS5yZXBsYWNlKC9cdC9nLCJcXHQiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cZi9nLCJcXGYiKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9bXHgwMC1ceDA3XHgwQlx4MEVceDBGXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXFx4MCIrdChlKX0pKS5yZXBsYWNlKC9bXHgxMC1ceDFGXHg4MC1ceEZGXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXFx4Iit0KGUpfSkpLnJlcGxhY2UoL1tcdTAxMDAtXHUwRkZGXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXFx1MCIrdChlKX0pKS5yZXBsYWNlKC9bXHUxMDAwLVx1RkZGRl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIlxcdSIrdChlKX0pKX0odCkrJyInOiJlbmQgb2YgaW5wdXQiKSsiIGZvdW5kLiJ9KG4sciksbixyLG8pfWZ1bmN0aW9uIE1lKCl7cmV0dXJuIFBlKCl9ZnVuY3Rpb24gUGUoKXt2YXIgZSx0LG47Zm9yKGU9YmUsdD1bXSxuPU5lKCk7biE9PW87KXQucHVzaChuKSxuPU5lKCk7cmV0dXJuIHQhPT1vJiYod2U9ZSx0PXUodCkpLGU9dH1mdW5jdGlvbiBOZSgpe3ZhciBlO3JldHVybihlPUxlKCkpPT09byYmKGU9SWUoKSksZX1mdW5jdGlvbiBqZSgpe3ZhciBlLG4scixhLGksdTtpZihlPWJlLG49W10scj1iZSwoYT1IZSgpKSE9PW8mJihpPSRlKCkpIT09byYmKHU9SGUoKSkhPT1vP3I9YT1bYSxpLHVdOihiZT1yLHI9byksciE9PW8pZm9yKDtyIT09bzspbi5wdXNoKHIpLHI9YmUsKGE9SGUoKSkhPT1vJiYoaT0kZSgpKSE9PW8mJih1PUhlKCkpIT09bz9yPWE9W2EsaSx1XTooYmU9cixyPW8pO2Vsc2Ugbj1vO3JldHVybiBuIT09byYmKHdlPWUsbj1zKG4pKSwoZT1uKT09PW8mJihlPWJlLGU9KG49WWUoKSkhPT1vP3Quc3Vic3RyaW5nKGUsYmUpOm4pLGV9ZnVuY3Rpb24gTGUoKXt2YXIgZSx0O3JldHVybiBlPWJlLCh0PWplKCkpIT09byYmKHdlPWUsdD1sKHQpKSxlPXR9ZnVuY3Rpb24gUmUoKXt2YXIgZSxuLHI7aWYoKGU9SmUoKSk9PT1vKXtpZihlPWJlLG49W10sYy50ZXN0KHQuY2hhckF0KGJlKSk/KHI9dC5jaGFyQXQoYmUpLGJlKyspOihyPW8sMD09PWtlJiZEZShmKSksciE9PW8pZm9yKDtyIT09bzspbi5wdXNoKHIpLGMudGVzdCh0LmNoYXJBdChiZSkpPyhyPXQuY2hhckF0KGJlKSxiZSsrKToocj1vLDA9PT1rZSYmRGUoZikpO2Vsc2Ugbj1vO2U9biE9PW8/dC5zdWJzdHJpbmcoZSxiZSk6bn1yZXR1cm4gZX1mdW5jdGlvbiBJZSgpe3ZhciBlLG4scixhLGksdSxzO3JldHVybiBlPWJlLDEyMz09PXQuY2hhckNvZGVBdChiZSk/KG49ZCxiZSsrKToobj1vLDA9PT1rZSYmRGUocCkpLG4hPT1vJiZIZSgpIT09byYmKHI9UmUoKSkhPT1vJiZIZSgpIT09bz8oYT1iZSw0ND09PXQuY2hhckNvZGVBdChiZSk/KGk9aCxiZSsrKTooaT1vLDA9PT1rZSYmRGUoeSkpLGkhPT1vJiYodT1IZSgpKSE9PW8mJihzPUFlKCkpIT09bz9hPWk9W2ksdSxzXTooYmU9YSxhPW8pLGE9PT1vJiYoYT1udWxsKSxhIT09byYmKGk9SGUoKSkhPT1vPygxMjU9PT10LmNoYXJDb2RlQXQoYmUpPyh1PW0sYmUrKyk6KHU9bywwPT09a2UmJkRlKHYpKSx1IT09bz8od2U9ZSxlPW49ZyhyLGEpKTooYmU9ZSxlPW8pKTooYmU9ZSxlPW8pKTooYmU9ZSxlPW8pLGV9ZnVuY3Rpb24gQWUoKXt2YXIgZTtyZXR1cm4oZT1GZSgpKT09PW8mJihlPUJlKCkpPT09byYmKGU9emUoKSk9PT1vJiYoZT1LZSgpKSxlfWZ1bmN0aW9uIEZlKCl7dmFyIGUsbixyLGEsaSx1O3JldHVybiBlPWJlLHQuc3Vic3RyKGJlLDYpPT09Yj8obj1iLGJlKz02KToobj1vLDA9PT1rZSYmRGUodykpLG49PT1vJiYodC5zdWJzdHIoYmUsNCk9PT1fPyhuPV8sYmUrPTQpOihuPW8sMD09PWtlJiZEZShFKSksbj09PW8mJih0LnN1YnN0cihiZSw0KT09PU8/KG49TyxiZSs9NCk6KG49bywwPT09a2UmJkRlKGspKSkpLG4hPT1vJiZIZSgpIT09bz8ocj1iZSw0ND09PXQuY2hhckNvZGVBdChiZSk/KGE9aCxiZSsrKTooYT1vLDA9PT1rZSYmRGUoeSkpLGEhPT1vJiYoaT1IZSgpKSE9PW8mJih1PSRlKCkpIT09bz9yPWE9W2EsaSx1XTooYmU9cixyPW8pLHI9PT1vJiYocj1udWxsKSxyIT09bz8od2U9ZSxlPW49QyhuLHIpKTooYmU9ZSxlPW8pKTooYmU9ZSxlPW8pLGV9ZnVuY3Rpb24gQmUoKXt2YXIgZSxuLHIsYTtyZXR1cm4gZT1iZSx0LnN1YnN0cihiZSw2KT09PXg/KG49eCxiZSs9Nik6KG49bywwPT09a2UmJkRlKFMpKSxuIT09byYmSGUoKSE9PW8/KDQ0PT09dC5jaGFyQ29kZUF0KGJlKT8ocj1oLGJlKyspOihyPW8sMD09PWtlJiZEZSh5KSksciE9PW8mJkhlKCkhPT1vJiYoYT1XZSgpKSE9PW8/KHdlPWUsZT1uPUQoYSkpOihiZT1lLGU9bykpOihiZT1lLGU9byksZX1mdW5jdGlvbiB6ZSgpe3ZhciBlLG4scixhO3JldHVybiBlPWJlLHQuc3Vic3RyKGJlLDEzKT09PVQ/KG49VCxiZSs9MTMpOihuPW8sMD09PWtlJiZEZShNKSksbiE9PW8mJkhlKCkhPT1vPyg0ND09PXQuY2hhckNvZGVBdChiZSk/KHI9aCxiZSsrKToocj1vLDA9PT1rZSYmRGUoeSkpLHIhPT1vJiZIZSgpIT09byYmKGE9V2UoKSkhPT1vPyh3ZT1lLGU9bj1QKGEpKTooYmU9ZSxlPW8pKTooYmU9ZSxlPW8pLGV9ZnVuY3Rpb24gS2UoKXt2YXIgZSxuLHIsYSxpO2lmKGU9YmUsdC5zdWJzdHIoYmUsNik9PT1OPyhuPU4sYmUrPTYpOihuPW8sMD09PWtlJiZEZShqKSksbiE9PW8paWYoSGUoKSE9PW8paWYoNDQ9PT10LmNoYXJDb2RlQXQoYmUpPyhyPWgsYmUrKyk6KHI9bywwPT09a2UmJkRlKHkpKSxyIT09bylpZihIZSgpIT09byl7aWYoYT1bXSwoaT1WZSgpKSE9PW8pZm9yKDtpIT09bzspYS5wdXNoKGkpLGk9VmUoKTtlbHNlIGE9bzthIT09bz8od2U9ZSxlPW49TChhKSk6KGJlPWUsZT1vKX1lbHNlIGJlPWUsZT1vO2Vsc2UgYmU9ZSxlPW87ZWxzZSBiZT1lLGU9bztlbHNlIGJlPWUsZT1vO3JldHVybiBlfWZ1bmN0aW9uIHFlKCl7dmFyIGUsbixyLGE7cmV0dXJuIGU9YmUsbj1iZSw2MT09PXQuY2hhckNvZGVBdChiZSk/KHI9UixiZSsrKToocj1vLDA9PT1rZSYmRGUoSSkpLHIhPT1vJiYoYT1KZSgpKSE9PW8/bj1yPVtyLGFdOihiZT1uLG49byksKGU9biE9PW8/dC5zdWJzdHJpbmcoZSxiZSk6bik9PT1vJiYoZT0kZSgpKSxlfWZ1bmN0aW9uIFZlKCl7dmFyIGUsbixyLGEsaTtyZXR1cm4gZT1iZSxIZSgpIT09byYmKG49cWUoKSkhPT1vJiZIZSgpIT09bz8oMTIzPT09dC5jaGFyQ29kZUF0KGJlKT8ocj1kLGJlKyspOihyPW8sMD09PWtlJiZEZShwKSksciE9PW8mJkhlKCkhPT1vJiYoYT1QZSgpKSE9PW8mJkhlKCkhPT1vPygxMjU9PT10LmNoYXJDb2RlQXQoYmUpPyhpPW0sYmUrKyk6KGk9bywwPT09a2UmJkRlKHYpKSxpIT09bz8od2U9ZSxlPUEobixhKSk6KGJlPWUsZT1vKSk6KGJlPWUsZT1vKSk6KGJlPWUsZT1vKSxlfWZ1bmN0aW9uIFVlKCl7dmFyIGUsbixyO3JldHVybiBlPWJlLHQuc3Vic3RyKGJlLDcpPT09Rj8obj1GLGJlKz03KToobj1vLDA9PT1rZSYmRGUoQikpLG4hPT1vJiZIZSgpIT09byYmKHI9SmUoKSkhPT1vPyh3ZT1lLGU9bj16KHIpKTooYmU9ZSxlPW8pLGV9ZnVuY3Rpb24gV2UoKXt2YXIgZSx0LG4scjtpZihlPWJlLCh0PVVlKCkpPT09byYmKHQ9bnVsbCksdCE9PW8paWYoSGUoKSE9PW8pe2lmKG49W10sKHI9VmUoKSkhPT1vKWZvcig7ciE9PW87KW4ucHVzaChyKSxyPVZlKCk7ZWxzZSBuPW87biE9PW8/KHdlPWUsZT10PUsodCxuKSk6KGJlPWUsZT1vKX1lbHNlIGJlPWUsZT1vO2Vsc2UgYmU9ZSxlPW87cmV0dXJuIGV9ZnVuY3Rpb24gWWUoKXt2YXIgZSxuO2lmKGtlKyssZT1bXSxWLnRlc3QodC5jaGFyQXQoYmUpKT8obj10LmNoYXJBdChiZSksYmUrKyk6KG49bywwPT09a2UmJkRlKFUpKSxuIT09bylmb3IoO24hPT1vOyllLnB1c2gobiksVi50ZXN0KHQuY2hhckF0KGJlKSk/KG49dC5jaGFyQXQoYmUpLGJlKyspOihuPW8sMD09PWtlJiZEZShVKSk7ZWxzZSBlPW87cmV0dXJuIGtlLS0sZT09PW8mJihuPW8sMD09PWtlJiZEZShxKSksZX1mdW5jdGlvbiBIZSgpe3ZhciBlLG4scjtmb3Ioa2UrKyxlPWJlLG49W10scj1ZZSgpO3IhPT1vOyluLnB1c2gocikscj1ZZSgpO3JldHVybiBlPW4hPT1vP3Quc3Vic3RyaW5nKGUsYmUpOm4sa2UtLSxlPT09byYmKG49bywwPT09a2UmJkRlKFcpKSxlfWZ1bmN0aW9uIEdlKCl7dmFyIGU7cmV0dXJuIFkudGVzdCh0LmNoYXJBdChiZSkpPyhlPXQuY2hhckF0KGJlKSxiZSsrKTooZT1vLDA9PT1rZSYmRGUoSCkpLGV9ZnVuY3Rpb24gUWUoKXt2YXIgZTtyZXR1cm4gRy50ZXN0KHQuY2hhckF0KGJlKSk/KGU9dC5jaGFyQXQoYmUpLGJlKyspOihlPW8sMD09PWtlJiZEZShRKSksZX1mdW5jdGlvbiBKZSgpe3ZhciBlLG4scixhLGksdTtpZihlPWJlLDQ4PT09dC5jaGFyQ29kZUF0KGJlKT8obj1KLGJlKyspOihuPW8sMD09PWtlJiZEZShaKSksbj09PW8pe2lmKG49YmUscj1iZSwkLnRlc3QodC5jaGFyQXQoYmUpKT8oYT10LmNoYXJBdChiZSksYmUrKyk6KGE9bywwPT09a2UmJkRlKFgpKSxhIT09byl7Zm9yKGk9W10sdT1HZSgpO3UhPT1vOylpLnB1c2godSksdT1HZSgpO2khPT1vP3I9YT1bYSxpXTooYmU9cixyPW8pfWVsc2UgYmU9cixyPW87bj1yIT09bz90LnN1YnN0cmluZyhuLGJlKTpyfXJldHVybiBuIT09byYmKHdlPWUsbj1lZShuKSksZT1ufWZ1bmN0aW9uIFplKCl7dmFyIGUsbixyLGEsaSx1LHMsbDtyZXR1cm4gdGUudGVzdCh0LmNoYXJBdChiZSkpPyhlPXQuY2hhckF0KGJlKSxiZSsrKTooZT1vLDA9PT1rZSYmRGUobmUpKSxlPT09byYmKGU9YmUsdC5zdWJzdHIoYmUsMik9PT1yZT8obj1yZSxiZSs9Mik6KG49bywwPT09a2UmJkRlKG9lKSksbiE9PW8mJih3ZT1lLG49YWUoKSksKGU9bik9PT1vJiYoZT1iZSx0LnN1YnN0cihiZSwyKT09PWllPyhuPWllLGJlKz0yKToobj1vLDA9PT1rZSYmRGUodWUpKSxuIT09byYmKHdlPWUsbj1zZSgpKSwoZT1uKT09PW8mJihlPWJlLHQuc3Vic3RyKGJlLDIpPT09bGU/KG49bGUsYmUrPTIpOihuPW8sMD09PWtlJiZEZShjZSkpLG4hPT1vJiYod2U9ZSxuPWZlKCkpLChlPW4pPT09byYmKGU9YmUsdC5zdWJzdHIoYmUsMik9PT1kZT8obj1kZSxiZSs9Mik6KG49bywwPT09a2UmJkRlKHBlKSksbiE9PW8mJih3ZT1lLG49aGUoKSksKGU9bik9PT1vJiYoZT1iZSx0LnN1YnN0cihiZSwyKT09PXllPyhuPXllLGJlKz0yKToobj1vLDA9PT1rZSYmRGUobWUpKSxuIT09bz8ocj1iZSxhPWJlLChpPVFlKCkpIT09byYmKHU9UWUoKSkhPT1vJiYocz1RZSgpKSE9PW8mJihsPVFlKCkpIT09bz9hPWk9W2ksdSxzLGxdOihiZT1hLGE9byksKHI9YSE9PW8/dC5zdWJzdHJpbmcocixiZSk6YSkhPT1vPyh3ZT1lLGU9bj12ZShyKSk6KGJlPWUsZT1vKSk6KGJlPWUsZT1vKSkpKSkpLGV9ZnVuY3Rpb24gJGUoKXt2YXIgZSx0LG47aWYoZT1iZSx0PVtdLChuPVplKCkpIT09bylmb3IoO24hPT1vOyl0LnB1c2gobiksbj1aZSgpO2Vsc2UgdD1vO3JldHVybiB0IT09byYmKHdlPWUsdD1nZSh0KSksZT10fWlmKChuPWkoKSkhPT1vJiZiZT09PXQubGVuZ3RoKXJldHVybiBuO3Rocm93IG4hPT1vJiZiZTx0Lmxlbmd0aCYmRGUoe3R5cGU6ImVuZCIsZGVzY3JpcHRpb246ImVuZCBvZiBpbnB1dCJ9KSxUZShudWxsLE9lLEVlPHQubGVuZ3RoP3QuY2hhckF0KEVlKTpudWxsLEVlPHQubGVuZ3RoP1NlKEVlLEVlKzEpOlNlKEVlLEVlKSl9fX0oKX0sb1NobDpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiTnNiayIpLG89bigiU2tzTyIpLGE9bigieGZlSiIpLGk9bigic1h5QiIpO2Z1bmN0aW9uIHUodCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIE1hcD9uZXcgTWFwOnZvaWQgMDtyZXR1cm4gZS5leHBvcnRzPXU9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fCFhKGUpKXJldHVybiBlO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7aWYodm9pZCAwIT09bil7aWYobi5oYXMoZSkpcmV0dXJuIG4uZ2V0KGUpO24uc2V0KGUsdCl9ZnVuY3Rpb24gdCgpe3JldHVybiBpKGUsYXJndW1lbnRzLHIodGhpcykuY29uc3RydWN0b3IpfXJldHVybiB0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxvKHQsZSl9LHUodCl9ZS5leHBvcnRzPXV9LG9iRFU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsYT1mdW5jdGlvbigpe3RyeXtyZXR1cm4hIU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse30pfWNhdGNoKGUpe3JldHVybiExfX0oKSxpPSghYSYmT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fLGE/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxuKXsiZ2V0ImluIG4mJmUuX19kZWZpbmVHZXR0ZXJfXz9lLl9fZGVmaW5lR2V0dGVyX18odCxuLmdldCk6KCFyLmNhbGwoZSx0KXx8InZhbHVlImluIG4pJiYoZVt0XT1uLnZhbHVlKX0pO3QuZGVmaW5lUHJvcGVydHk9aTt2YXIgdT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbihlLHQpe3ZhciBuLG87ZnVuY3Rpb24gYSgpe31mb3IobyBpbiBhLnByb3RvdHlwZT1lLG49bmV3IGEsdClyLmNhbGwodCxvKSYmaShuLG8sdFtvXSk7cmV0dXJuIG59O3Qub2JqQ3JlYXRlPXU7dmFyIHM9QXJyYXkucHJvdG90eXBlLmluZGV4T2Z8fGZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgbj10fHwwLHI9dGhpcy5sZW5ndGg7bjxyO24rKylpZih0aGlzW25dPT09ZSlyZXR1cm4gbjtyZXR1cm4tMX07dC5hcnJJbmRleE9mPXM7dmFyIGw9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PW8uY2FsbChlKX07dC5pc0FycmF5PWw7dmFyIGM9RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3QuZGF0ZU5vdz1jfSxvY2d4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZnlPWSIpLG89bigiM3NPSiIpLGE9bigiRFlLaCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldFNlbGVjdGlvbigpO2lmKCF0LmlzQ29sbGFwc2VkKCkpcmV0dXJuIGU7dmFyIG49dC5nZXRBbmNob3JPZmZzZXQoKTtpZigwPT09bilyZXR1cm4gZTt2YXIgaSx1LHM9dC5nZXRBbmNob3JLZXkoKSxsPWUuZ2V0Q3VycmVudENvbnRlbnQoKSxjPWwuZ2V0QmxvY2tGb3JLZXkocykuZ2V0TGVuZ3RoKCk7aWYoYzw9MSlyZXR1cm4gZTtuPT09Yz8oaT10LnNldCgiYW5jaG9yT2Zmc2V0IixuLTEpLHU9dCk6dT0oaT10LnNldCgiZm9jdXNPZmZzZXQiLG4rMSkpLnNldCgiYW5jaG9yT2Zmc2V0IixuKzEpO3ZhciBmPWEobCxpKSxkPXIucmVtb3ZlUmFuZ2UobCxpLCJiYWNrd2FyZCIpLHA9ZC5nZXRTZWxlY3Rpb25BZnRlcigpLGg9cC5nZXRBbmNob3JPZmZzZXQoKS0xLHk9cC5tZXJnZSh7YW5jaG9yT2Zmc2V0OmgsZm9jdXNPZmZzZXQ6aH0pLG09ci5yZXBsYWNlV2l0aEZyYWdtZW50KGQseSxmKSx2PW8ucHVzaChlLG0sImluc2VydC1mcmFnbWVudCIpO3JldHVybiBvLmFjY2VwdFNlbGVjdGlvbih2LHUpfX0scDdKWjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKTtmdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sfSxpPWZ1bmN0aW9uKGUpe3JldHVybiBhKCkmJkJvb2xlYW4oU3ltYm9sW2VdKX0sdT1mdW5jdGlvbihlKXtyZXR1cm4gaShlKT9TeW1ib2xbZV06IkBAIitlfTthKCkmJiFpKCJvYnNlcnZhYmxlIikmJihTeW1ib2wub2JzZXJ2YWJsZT1TeW1ib2woIm9ic2VydmFibGUiKSk7dmFyIHM9dSgiaXRlcmF0b3IiKSxsPXUoIm9ic2VydmFibGUiKSxjPXUoInNwZWNpZXMiKTtmdW5jdGlvbiBmKGUsdCl7dmFyIG49ZVt0XTtpZihudWxsIT1uKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKG4rIiBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiBufX1mdW5jdGlvbiBkKGUpe3ZhciB0PWUuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMCE9PXQmJm51bGw9PT0odD10W2NdKSYmKHQ9dm9pZCAwKSx2b2lkIDAhPT10P3Q6RX1mdW5jdGlvbiBwKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRX1mdW5jdGlvbiBoKGUpe2gubG9nP2gubG9nKGUpOnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgZX0pKX1mdW5jdGlvbiB5KGUpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtoKGUpfX0pKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWUuX2NsZWFudXA7aWYodm9pZCAwIT09dCYmKGUuX2NsZWFudXA9dm9pZCAwLHQpKXRyeXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl0KCk7ZWxzZXt2YXIgbj1mKHQsInVuc3Vic2NyaWJlIik7biYmbi5jYWxsKHQpfX1jYXRjaChlKXtoKGUpfX1mdW5jdGlvbiB2KGUpe2UuX29ic2VydmVyPXZvaWQgMCxlLl9xdWV1ZT12b2lkIDAsZS5fc3RhdGU9ImNsb3NlZCJ9ZnVuY3Rpb24gZyhlLHQsbil7ZS5fc3RhdGU9InJ1bm5pbmciO3ZhciByPWUuX29ic2VydmVyO3RyeXt2YXIgbz1mKHIsdCk7c3dpdGNoKHQpe2Nhc2UibmV4dCI6byYmby5jYWxsKHIsbik7YnJlYWs7Y2FzZSJlcnJvciI6aWYodihlKSwhbyl0aHJvdyBuO28uY2FsbChyLG4pO2JyZWFrO2Nhc2UiY29tcGxldGUiOnYoZSksbyYmby5jYWxsKHIpfX1jYXRjaChlKXtoKGUpfSJjbG9zZWQiPT09ZS5fc3RhdGU/bShlKToicnVubmluZyI9PT1lLl9zdGF0ZSYmKGUuX3N0YXRlPSJyZWFkeSIpfWZ1bmN0aW9uIGIoZSx0LG4pe2lmKCJjbG9zZWQiIT09ZS5fc3RhdGUpe2lmKCJidWZmZXJpbmciIT09ZS5fc3RhdGUpcmV0dXJuInJlYWR5IiE9PWUuX3N0YXRlPyhlLl9zdGF0ZT0iYnVmZmVyaW5nIixlLl9xdWV1ZT1be3R5cGU6dCx2YWx1ZTpufV0sdm9pZCB5KChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLl9xdWV1ZTtpZih0KXtlLl9xdWV1ZT12b2lkIDAsZS5fc3RhdGU9InJlYWR5Ijtmb3IodmFyIG49MDtuPHQubGVuZ3RoJiYoZyhlLHRbbl0udHlwZSx0W25dLnZhbHVlKSwiY2xvc2VkIiE9PWUuX3N0YXRlKTsrK24pO319KGUpfSkpKTp2b2lkIGcoZSx0LG4pO2UuX3F1ZXVlLnB1c2goe3R5cGU6dCx2YWx1ZTpufSl9fXZhciB3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe28odGhpcyxlKSx0aGlzLl9jbGVhbnVwPXZvaWQgMCx0aGlzLl9vYnNlcnZlcj10LHRoaXMuX3F1ZXVlPXZvaWQgMCx0aGlzLl9zdGF0ZT0iaW5pdGlhbGl6aW5nIjt2YXIgcj1uZXcgXyh0aGlzKTt0cnl7dGhpcy5fY2xlYW51cD1uLmNhbGwodm9pZCAwLHIpfWNhdGNoKGUpe3IuZXJyb3IoZSl9ImluaXRpYWxpemluZyI9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3N0YXRlPSJyZWFkeSIpfXJldHVybiByKGUsW3trZXk6InVuc3Vic2NyaWJlIix2YWx1ZTpmdW5jdGlvbigpeyJjbG9zZWQiIT09dGhpcy5fc3RhdGUmJih2KHRoaXMpLG0odGhpcykpfX0se2tleToiY2xvc2VkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iY2xvc2VkIj09PXRoaXMuX3N0YXRlfX1dKSxlfSgpLF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9zdWJzY3JpcHRpb249dH1yZXR1cm4gcihlLFt7a2V5OiJuZXh0Iix2YWx1ZTpmdW5jdGlvbihlKXtiKHRoaXMuX3N1YnNjcmlwdGlvbiwibmV4dCIsZSl9fSx7a2V5OiJlcnJvciIsdmFsdWU6ZnVuY3Rpb24oZSl7Yih0aGlzLl9zdWJzY3JpcHRpb24sImVycm9yIixlKX19LHtrZXk6ImNvbXBsZXRlIix2YWx1ZTpmdW5jdGlvbigpe2IodGhpcy5fc3Vic2NyaXB0aW9uLCJjb21wbGV0ZSIpfX0se2tleToiY2xvc2VkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iY2xvc2VkIj09PXRoaXMuX3N1YnNjcmlwdGlvbi5fc3RhdGV9fV0pLGV9KCksRT10Lk9ic2VydmFibGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKG8odGhpcyxlKSwhKHRoaXMgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYnNlcnZhYmxlIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbiIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIk9ic2VydmFibGUgaW5pdGlhbGl6ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIik7dGhpcy5fc3Vic2NyaWJlcj10fXJldHVybiByKGUsW3trZXk6InN1YnNjcmliZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8KGU9e25leHQ6ZSxlcnJvcjphcmd1bWVudHNbMV0sY29tcGxldGU6YXJndW1lbnRzWzJdfSksbmV3IHcoZSx0aGlzLl9zdWJzY3JpYmVyKX19LHtrZXk6ImZvckVhY2giLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXZhciBvPXQuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe3RyeXtlKHQsYSl9Y2F0Y2goZSl7cihlKSxvLnVuc3Vic2NyaWJlKCl9fSxlcnJvcjpyLGNvbXBsZXRlOm59KTtlbHNlIHIobmV3IFR5cGVFcnJvcihlKyIgaXMgbm90IGEgZnVuY3Rpb24iKSk7ZnVuY3Rpb24gYSgpe28udW5zdWJzY3JpYmUoKSxuKCl9fSkpfX0se2tleToibWFwIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIG5ldyhkKHRoaXMpKSgoZnVuY3Rpb24obil7cmV0dXJuIHQuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe3RyeXt0PWUodCl9Y2F0Y2goZSl7cmV0dXJuIG4uZXJyb3IoZSl9bi5uZXh0KHQpfSxlcnJvcjpmdW5jdGlvbihlKXtuLmVycm9yKGUpfSxjb21wbGV0ZTpmdW5jdGlvbigpe24uY29tcGxldGUoKX19KX0pKX19LHtrZXk6ImZpbHRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKGUrIiBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiBuZXcoZCh0aGlzKSkoKGZ1bmN0aW9uKG4pe3JldHVybiB0LnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbih0KXt0cnl7aWYoIWUodCkpcmV0dXJufWNhdGNoKGUpe3JldHVybiBuLmVycm9yKGUpfW4ubmV4dCh0KX0sZXJyb3I6ZnVuY3Rpb24oZSl7bi5lcnJvcihlKX0sY29tcGxldGU6ZnVuY3Rpb24oKXtuLmNvbXBsZXRlKCl9fSl9KSl9fSx7a2V5OiJyZWR1Y2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihlKyIgaXMgbm90IGEgZnVuY3Rpb24iKTt2YXIgbj1kKHRoaXMpLHI9YXJndW1lbnRzLmxlbmd0aD4xLG89ITEsYT1hcmd1bWVudHNbMV0saT1hO3JldHVybiBuZXcgbigoZnVuY3Rpb24obil7cmV0dXJuIHQuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe3ZhciBhPSFvO2lmKG89ITAsIWF8fHIpdHJ5e2k9ZShpLHQpfWNhdGNoKGUpe3JldHVybiBuLmVycm9yKGUpfWVsc2UgaT10fSxlcnJvcjpmdW5jdGlvbihlKXtuLmVycm9yKGUpfSxjb21wbGV0ZTpmdW5jdGlvbigpe2lmKCFvJiYhcilyZXR1cm4gbi5lcnJvcihuZXcgVHlwZUVycm9yKCJDYW5ub3QgcmVkdWNlIGFuIGVtcHR5IHNlcXVlbmNlIikpO24ubmV4dChpKSxuLmNvbXBsZXRlKCl9fSl9KSl9fSx7a2V5OiJjb25jYXQiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07dmFyIG89ZCh0aGlzKTtyZXR1cm4gbmV3IG8oKGZ1bmN0aW9uKHQpe3ZhciByPXZvaWQgMCxhPTA7cmV0dXJuIGZ1bmN0aW9uIGUoaSl7cj1pLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihlKXt0Lm5leHQoZSl9LGVycm9yOmZ1bmN0aW9uKGUpe3QuZXJyb3IoZSl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7YT09PW4ubGVuZ3RoPyhyPXZvaWQgMCx0LmNvbXBsZXRlKCkpOmUoby5mcm9tKG5bYSsrXSkpfX0pfShlKSxmdW5jdGlvbigpe3ImJihyLnVuc3Vic2NyaWJlKCkscj12b2lkIDApfX0pKX19LHtrZXk6ImZsYXRNYXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihlKyIgaXMgbm90IGEgZnVuY3Rpb24iKTt2YXIgbj1kKHRoaXMpO3JldHVybiBuZXcgbigoZnVuY3Rpb24ocil7dmFyIG89W10sYT10LnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbih0KXtpZihlKXRyeXt0PWUodCl9Y2F0Y2goZSl7cmV0dXJuIHIuZXJyb3IoZSl9dmFyIGE9bi5mcm9tKHQpLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihlKXtyLm5leHQoZSl9LGVycm9yOmZ1bmN0aW9uKGUpe3IuZXJyb3IoZSl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIGU9by5pbmRleE9mKGEpO2U+PTAmJm8uc3BsaWNlKGUsMSksaSgpfX0pO28ucHVzaChhKX0sZXJyb3I6ZnVuY3Rpb24oZSl7ci5lcnJvcihlKX0sY29tcGxldGU6ZnVuY3Rpb24oKXtpKCl9fSk7ZnVuY3Rpb24gaSgpe2EuY2xvc2VkJiYwPT09by5sZW5ndGgmJnIuY29tcGxldGUoKX1yZXR1cm4gZnVuY3Rpb24oKXtvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVuc3Vic2NyaWJlKCl9KSksYS51bnN1YnNjcmliZSgpfX0pKX19LHtrZXk6bCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzfX1dLFt7a2V5OiJmcm9tIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOmU7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKHQrIiBpcyBub3QgYW4gb2JqZWN0Iik7dmFyIHI9Zih0LGwpO2lmKHIpe3ZhciBvPXIuY2FsbCh0KTtpZihPYmplY3QobykhPT1vKXRocm93IG5ldyBUeXBlRXJyb3IobysiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gcChvKSYmby5jb25zdHJ1Y3Rvcj09PW4/bzpuZXcgbigoZnVuY3Rpb24oZSl7cmV0dXJuIG8uc3Vic2NyaWJlKGUpfSkpfWlmKGkoIml0ZXJhdG9yIikmJihyPWYodCxzKSkpcmV0dXJuIG5ldyBuKChmdW5jdGlvbihlKXt5KChmdW5jdGlvbigpe2lmKCFlLmNsb3NlZCl7dmFyIG49ITAsbz0hMSxhPXZvaWQgMDt0cnl7Zm9yKHZhciBpLHU9ci5jYWxsKHQpW1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KGk9dS5uZXh0KCkpLmRvbmUpO249ITApe3ZhciBzPWkudmFsdWU7aWYoZS5uZXh0KHMpLGUuY2xvc2VkKXJldHVybn19Y2F0Y2goZSl7bz0hMCxhPWV9ZmluYWxseXt0cnl7IW4mJnUucmV0dXJuJiZ1LnJldHVybigpfWZpbmFsbHl7aWYobyl0aHJvdyBhfX1lLmNvbXBsZXRlKCl9fSkpfSkpO2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIG5ldyBuKChmdW5jdGlvbihlKXt5KChmdW5jdGlvbigpe2lmKCFlLmNsb3NlZCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24paWYoZS5uZXh0KHRbbl0pLGUuY2xvc2VkKXJldHVybjtlLmNvbXBsZXRlKCl9fSkpfSkpO3Rocm93IG5ldyBUeXBlRXJyb3IodCsiIGlzIG5vdCBvYnNlcnZhYmxlIil9fSx7a2V5OiJvZiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3ZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6ZTtyZXR1cm4gbmV3IG8oKGZ1bmN0aW9uKGUpe3koKGZ1bmN0aW9uKCl7aWYoIWUuY2xvc2VkKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoOysrdClpZihlLm5leHQoblt0XSksZS5jbG9zZWQpcmV0dXJuO2UuY29tcGxldGUoKX19KSl9KSl9fSx7a2V5OmMsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fV0pLGV9KCk7YSgpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoRSxTeW1ib2woImV4dGVuc2lvbnMiKSx7dmFsdWU6e3N5bWJvbDpsLGhvc3RSZXBvcnRFcnJvcjpofSxjb25maWd1cmFibGU6ITB9KX0scE1scDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17QkFDS1NQQUNFOjgsVEFCOjksUkVUVVJOOjEzLEFMVDoxOCxFU0M6MjcsU1BBQ0U6MzIsUEFHRV9VUDozMyxQQUdFX0RPV046MzQsRU5EOjM1LEhPTUU6MzYsTEVGVDozNyxVUDozOCxSSUdIVDozOSxET1dOOjQwLERFTEVURTo0NixDT01NQToxODgsUEVSSU9EOjE5MCxBOjY1LFo6OTAsWkVSTzo0OCxOVU1QQURfMDo5NixOVU1QQURfOToxMDV9fSxwUnZjOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuISghYS5kZWZhdWx0LmlzTW9tZW50KGUpfHwhYS5kZWZhdWx0LmlzTW9tZW50KHQpKSYmKGUuZGF0ZSgpPT09dC5kYXRlKCkmJmUubW9udGgoKT09PXQubW9udGgoKSYmZS55ZWFyKCk9PT10LnllYXIoKSl9O3ZhciByLG89bigid2QvUiIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9fSxwVm5MOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3JldHVybiBlLmV4cG9ydHM9bj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1lLmV4cG9ydHM9bn0scFhtcDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXC8vZywiLSIpfWUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/T2JqZWN0LmtleXMoZSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKS5tYXAocikuam9pbigiICIpOkFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhcmd1bWVudHMscikuam9pbigiICIpfX0scFl4VDpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlLHQpe3ZhciBuPXIuZGVmYXVsdC5pc01vbWVudChlKT9lOigwLG8uZGVmYXVsdCkoZSx0KTtyZXR1cm4gbj9uLmZvcm1hdChhLklTT19GT1JNQVQpOm51bGx9O3ZhciByPWkobigid2QvUiIpKSxvPWkobigiV21TMSIpKSxhPW4oIjVmN24iKTtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX19LHBnNE06ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIzc09KIiksbz1uKCI0cElCIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5fbGF0ZXN0RWRpdG9yU3RhdGUsYT1uLmdldFNlbGVjdGlvbigpO2lmKCFhLmdldEhhc0ZvY3VzKCkpe3ZhciBpPWEuc2V0KCJoYXNGb2N1cyIsITApO2UucHJvcHMub25Gb2N1cyYmZS5wcm9wcy5vbkZvY3VzKHQpLG8uaXNCcm93c2VyKCJDaHJvbWUgPCA2MC4wLjMwODEuMCIpP2UudXBkYXRlKHIuZm9yY2VTZWxlY3Rpb24obixpKSk6ZS51cGRhdGUoci5hY2NlcHRTZWxlY3Rpb24obixpKSl9fX0sInBvK0ciOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigianVKRCIpO3QuY3JlYXRlRmlyc3RFbGxpcHNpcz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTpyLklURU1fVFlQRVMuRUxMSVBTSVMsa2V5OnIuSVRFTV9LRVlTLkZJUlNUX0VMTElQU0lTLHZhbHVlOmUsaXNBY3RpdmU6ITF9fSx0LmNyZWF0ZVNlY29uZEVsbGlwc2lzPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOnIuSVRFTV9UWVBFUy5FTExJUFNJUyxrZXk6ci5JVEVNX0tFWVMuU0VDT05EX0VMTElQU0lTLHZhbHVlOmUsaXNBY3RpdmU6ITF9fSx0LmNyZWF0ZUZpcnN0UGFnZUxpbms9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXJyZW50UGFnZTtyZXR1cm57dHlwZTpyLklURU1fVFlQRVMuRklSU1RfUEFHRV9MSU5LLGtleTpyLklURU1fS0VZUy5GSVJTVF9QQUdFX0xJTkssdmFsdWU6MSxpc0FjdGl2ZToxPT09dH19LHQuY3JlYXRlUHJldmlvdXNQYWdlTGluaz1mdW5jdGlvbihlKXt2YXIgdD1lLmN1cnJlbnRQYWdlO3JldHVybnt0eXBlOnIuSVRFTV9UWVBFUy5QUkVWSU9VU19QQUdFX0xJTkssa2V5OnIuSVRFTV9LRVlTLlBSRVZJT1VTX1BBR0VfTElOSyx2YWx1ZTpNYXRoLm1heCgxLHQtMSksaXNBY3RpdmU6MT09PXR9fSx0LmNyZWF0ZU5leHRQYWdlTGluaz1mdW5jdGlvbihlKXt2YXIgdD1lLmN1cnJlbnRQYWdlLG49ZS50b3RhbFBhZ2VzO3JldHVybnt0eXBlOnIuSVRFTV9UWVBFUy5ORVhUX1BBR0VfTElOSyxrZXk6ci5JVEVNX0tFWVMuTkVYVF9QQUdFX0xJTkssdmFsdWU6TWF0aC5taW4obix0KzEpLGlzQWN0aXZlOnQ9PT1ufX0sdC5jcmVhdGVMYXN0UGFnZUxpbms9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXJyZW50UGFnZSxuPWUudG90YWxQYWdlcztyZXR1cm57dHlwZTpyLklURU1fVFlQRVMuTEFTVF9QQUdFX0xJTkssa2V5OnIuSVRFTV9LRVlTLkxBU1RfUEFHRV9MSU5LLHZhbHVlOm4saXNBY3RpdmU6dD09PW59fSx0LmNyZWF0ZVBhZ2VGdW5jdGlvbkZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXJyZW50UGFnZTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6ci5JVEVNX1RZUEVTLlBBR0Usa2V5OmUsdmFsdWU6ZSxpc0FjdGl2ZTplPT09dH19fX0scHNzZDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9bChuKCJxMXRJIikpLGk9bChuKCJqTVlhIikpLHU9bChuKCJIMEFEIikpLHM9bChuKCI2RFl6IikpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBmKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gZChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZSgoZnVuY3Rpb24odCxuKXt2YXIgcj1lW25dO3JldHVybiB2b2lkIDAhPT1yJiYodFtuXT1yKSx0fSksdCl9dmFyIHA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBjKHRoaXMsdCksZih0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdC5mb2N1cygpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHUuZGVmYXVsdCx0aGlzLnByb3BzLChmdW5jdGlvbih0KXtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocy5kZWZhdWx0LGUucHJvcHMsKGZ1bmN0aW9uKG4pe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChpLmRlZmF1bHQscih7fSxkKHQsZChuLHt9KSkse29uSW5wdXRDaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG4ub25JbnB1dENoYW5nZShlKSx0Lm9uSW5wdXRDaGFuZ2UoZSl9LHJlZjpmdW5jdGlvbihyKXtlLnNlbGVjdD1yLG4ucmVmKHIpLHQucmVmKHIpfX0pKX0pKX0pKX19XSksdH0oYS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PXB9LHB2SWg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhLGkpe3ZhciB1PW98fCI8PGFub255bW91cz4+IixzPWl8fHI7aWYobnVsbD09bltyXSlyZXR1cm4gdD9uZXcgRXJyb3IoIlJlcXVpcmVkICIrYSsiIGAiK3MrImAgd2FzIG5vdCBzcGVjaWZpZWQgaW4gYCIrdSsiYC4iKTpudWxsO2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGM9QXJyYXkobD42P2wtNjowKSxmPTY7ZjxsO2YrKyljW2YtNl09YXJndW1lbnRzW2ZdO3JldHVybiBlLmFwcGx5KHZvaWQgMCxbbixyLHUsYSxzXS5jb25jYXQoYykpfXZhciBuPXQuYmluZChudWxsLCExKTtyZXR1cm4gbi5pc1JlcXVpcmVkPXQuYmluZChudWxsLCEwKSxufSxlLmV4cG9ydHM9dC5kZWZhdWx0fSxxMXRJOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oInZpUk8iKX0scTg2QTpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJue3RyYW5zZm9ybTplLG1zVHJhbnNmb3JtOmUsTW96VHJhbnNmb3JtOmUsV2Via2l0VHJhbnNmb3JtOmV9fX0scUZTMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmJvZHlPcGVuQ2xhc3NOYW1lPXQucG9ydGFsQ2xhc3NOYW1lPXZvaWQgMDt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9bigicTF0SSIpLGk9aChhKSx1PWgobigiaThpNCIpKSxzPWgobigiMTd4OSIpKSxsPWgobigiUUVzbyIpKSxjPWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH0obigiWWU3bSIpKSxmPW4oIjJ6czciKSxkPWgoZikscD1uKCJWQ0w4Iik7ZnVuY3Rpb24gaChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24geShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG0oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgdj10LnBvcnRhbENsYXNzTmFtZT0iUmVhY3RNb2RhbFBvcnRhbCIsZz10LmJvZHlPcGVuQ2xhc3NOYW1lPSJSZWFjdE1vZGFsX19Cb2R5LS1vcGVuIixiPXZvaWQgMCE9PXUuZGVmYXVsdC5jcmVhdGVQb3J0YWwsdz1mdW5jdGlvbigpe3JldHVybiBiP3UuZGVmYXVsdC5jcmVhdGVQb3J0YWw6dS5kZWZhdWx0LnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyfTtmdW5jdGlvbiBfKGUpe3JldHVybiBlKCl9dmFyIEU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4sbzt5KHRoaXMsdCk7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheShhKSxjPTA7YzxhO2MrKylzW2NdPWFyZ3VtZW50c1tjXTtyZXR1cm4gbj1vPW0odGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLG8ucmVtb3ZlUG9ydGFsPWZ1bmN0aW9uKCl7IWImJnUuZGVmYXVsdC51bm1vdW50Q29tcG9uZW50QXROb2RlKG8ubm9kZSksXyhvLnByb3BzLnBhcmVudFNlbGVjdG9yKS5yZW1vdmVDaGlsZChvLm5vZGUpfSxvLnBvcnRhbFJlZj1mdW5jdGlvbihlKXtvLnBvcnRhbD1lfSxvLnJlbmRlclBvcnRhbD1mdW5jdGlvbihlKXt2YXIgbj13KCkobyxpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLmRlZmF1bHQscih7ZGVmYXVsdFN0eWxlczp0LmRlZmF1bHRTdHlsZXN9LGUpKSxvLm5vZGUpO28ucG9ydGFsUmVmKG4pfSxtKG8sbil9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe2YuY2FuVXNlRE9NJiYoYnx8KHRoaXMubm9kZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSksdGhpcy5ub2RlLmNsYXNzTmFtZT10aGlzLnByb3BzLnBvcnRhbENsYXNzTmFtZSxfKHRoaXMucHJvcHMucGFyZW50U2VsZWN0b3IpLmFwcGVuZENoaWxkKHRoaXMubm9kZSksIWImJnRoaXMucmVuZGVyUG9ydGFsKHRoaXMucHJvcHMpKX19LHtrZXk6ImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm57cHJldlBhcmVudDpfKGUucGFyZW50U2VsZWN0b3IpLG5leHRQYXJlbnQ6Xyh0aGlzLnByb3BzLnBhcmVudFNlbGVjdG9yKX19fSx7a2V5OiJjb21wb25lbnREaWRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtpZihmLmNhblVzZURPTSl7dmFyIHI9dGhpcy5wcm9wcyxvPXIuaXNPcGVuLGE9ci5wb3J0YWxDbGFzc05hbWU7ZS5wb3J0YWxDbGFzc05hbWUhPT1hJiYodGhpcy5ub2RlLmNsYXNzTmFtZT1hKTt2YXIgaT1uLnByZXZQYXJlbnQsdT1uLm5leHRQYXJlbnQ7dSE9PWkmJihpLnJlbW92ZUNoaWxkKHRoaXMubm9kZSksdS5hcHBlbmRDaGlsZCh0aGlzLm5vZGUpKSwoZS5pc09wZW58fG8pJiYhYiYmdGhpcy5yZW5kZXJQb3J0YWwodGhpcy5wcm9wcyl9fX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoZi5jYW5Vc2VET00mJnRoaXMubm9kZSYmdGhpcy5wb3J0YWwpe3ZhciBlPXRoaXMucG9ydGFsLnN0YXRlLHQ9RGF0ZS5ub3coKSxuPWUuaXNPcGVuJiZ0aGlzLnByb3BzLmNsb3NlVGltZW91dE1TJiYoZS5jbG9zZXNBdHx8dCt0aGlzLnByb3BzLmNsb3NlVGltZW91dE1TKTtuPyhlLmJlZm9yZUNsb3NlfHx0aGlzLnBvcnRhbC5jbG9zZVdpdGhUaW1lb3V0KCksc2V0VGltZW91dCh0aGlzLnJlbW92ZVBvcnRhbCxuLXQpKTp0aGlzLnJlbW92ZVBvcnRhbCgpfX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5jYW5Vc2VET00mJmI/KCF0aGlzLm5vZGUmJmImJih0aGlzLm5vZGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHcoKShpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLmRlZmF1bHQscih7cmVmOnRoaXMucG9ydGFsUmVmLGRlZmF1bHRTdHlsZXM6dC5kZWZhdWx0U3R5bGVzfSx0aGlzLnByb3BzKSksdGhpcy5ub2RlKSk6bnVsbH19XSxbe2tleToic2V0QXBwRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oZSl7Yy5zZXRFbGVtZW50KGUpfX1dKSx0fShhLkNvbXBvbmVudCk7RS5wcm9wVHlwZXM9e2lzT3BlbjpzLmRlZmF1bHQuYm9vbC5pc1JlcXVpcmVkLHN0eWxlOnMuZGVmYXVsdC5zaGFwZSh7Y29udGVudDpzLmRlZmF1bHQub2JqZWN0LG92ZXJsYXk6cy5kZWZhdWx0Lm9iamVjdH0pLHBvcnRhbENsYXNzTmFtZTpzLmRlZmF1bHQuc3RyaW5nLGJvZHlPcGVuQ2xhc3NOYW1lOnMuZGVmYXVsdC5zdHJpbmcsaHRtbE9wZW5DbGFzc05hbWU6cy5kZWZhdWx0LnN0cmluZyxjbGFzc05hbWU6cy5kZWZhdWx0Lm9uZU9mVHlwZShbcy5kZWZhdWx0LnN0cmluZyxzLmRlZmF1bHQuc2hhcGUoe2Jhc2U6cy5kZWZhdWx0LnN0cmluZy5pc1JlcXVpcmVkLGFmdGVyT3BlbjpzLmRlZmF1bHQuc3RyaW5nLmlzUmVxdWlyZWQsYmVmb3JlQ2xvc2U6cy5kZWZhdWx0LnN0cmluZy5pc1JlcXVpcmVkfSldKSxvdmVybGF5Q2xhc3NOYW1lOnMuZGVmYXVsdC5vbmVPZlR5cGUoW3MuZGVmYXVsdC5zdHJpbmcscy5kZWZhdWx0LnNoYXBlKHtiYXNlOnMuZGVmYXVsdC5zdHJpbmcuaXNSZXF1aXJlZCxhZnRlck9wZW46cy5kZWZhdWx0LnN0cmluZy5pc1JlcXVpcmVkLGJlZm9yZUNsb3NlOnMuZGVmYXVsdC5zdHJpbmcuaXNSZXF1aXJlZH0pXSksYXBwRWxlbWVudDpzLmRlZmF1bHQuaW5zdGFuY2VPZihkLmRlZmF1bHQpLG9uQWZ0ZXJPcGVuOnMuZGVmYXVsdC5mdW5jLG9uUmVxdWVzdENsb3NlOnMuZGVmYXVsdC5mdW5jLGNsb3NlVGltZW91dE1TOnMuZGVmYXVsdC5udW1iZXIsYXJpYUhpZGVBcHA6cy5kZWZhdWx0LmJvb2wsc2hvdWxkRm9jdXNBZnRlclJlbmRlcjpzLmRlZmF1bHQuYm9vbCxzaG91bGRDbG9zZU9uT3ZlcmxheUNsaWNrOnMuZGVmYXVsdC5ib29sLHNob3VsZFJldHVybkZvY3VzQWZ0ZXJDbG9zZTpzLmRlZmF1bHQuYm9vbCxwYXJlbnRTZWxlY3RvcjpzLmRlZmF1bHQuZnVuYyxhcmlhOnMuZGVmYXVsdC5vYmplY3QsZGF0YTpzLmRlZmF1bHQub2JqZWN0LHJvbGU6cy5kZWZhdWx0LnN0cmluZyxjb250ZW50TGFiZWw6cy5kZWZhdWx0LnN0cmluZyxzaG91bGRDbG9zZU9uRXNjOnMuZGVmYXVsdC5ib29sLG92ZXJsYXlSZWY6cy5kZWZhdWx0LmZ1bmMsY29udGVudFJlZjpzLmRlZmF1bHQuZnVuY30sRS5kZWZhdWx0UHJvcHM9e2lzT3BlbjohMSxwb3J0YWxDbGFzc05hbWU6dixib2R5T3BlbkNsYXNzTmFtZTpnLHJvbGU6ImRpYWxvZyIsYXJpYUhpZGVBcHA6ITAsY2xvc2VUaW1lb3V0TVM6MCxzaG91bGRGb2N1c0FmdGVyUmVuZGVyOiEwLHNob3VsZENsb3NlT25Fc2M6ITAsc2hvdWxkQ2xvc2VPbk92ZXJsYXlDbGljazohMCxzaG91bGRSZXR1cm5Gb2N1c0FmdGVyQ2xvc2U6ITAscGFyZW50U2VsZWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuYm9keX19LEUuZGVmYXVsdFN0eWxlcz17b3ZlcmxheTp7cG9zaXRpb246ImZpeGVkIix0b3A6MCxsZWZ0OjAscmlnaHQ6MCxib3R0b206MCxiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSkifSxjb250ZW50Ontwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiNDBweCIsbGVmdDoiNDBweCIscmlnaHQ6IjQwcHgiLGJvdHRvbToiNDBweCIsYm9yZGVyOiIxcHggc29saWQgI2NjYyIsYmFja2dyb3VuZDoiI2ZmZiIsb3ZlcmZsb3c6ImF1dG8iLFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiJ0b3VjaCIsYm9yZGVyUmFkaXVzOiI0cHgiLG91dGxpbmU6Im5vbmUiLHBhZGRpbmc6IjIwcHgifX0sKDAscC5wb2x5ZmlsbCkoRSksdC5kZWZhdWx0PUV9LHFOR0k6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oIjlWdVMiKS5kZWZhdWx0LG89bigiaHdCbSIpLmRlZmF1bHQsYT1uKCJubVRSIikuZGVmYXVsdCxpPW4oIjRDekYiKS5kZWZhdWx0LHU9bigiSFVFTCIpLmRlZmF1bHQscz1uKCJObG9oIikuZGVmYXVsdCxsPW4oIkNEQXAiKS5kZWZhdWx0LGM9bigiWHRrbyIpLmRlZmF1bHQsZj1uKCJUaHp2IikuZGVmYXVsdCxkPW4oIm1NaUgiKS5kZWZhdWx0LHA9bigiTjNrNCIpLmRlZmF1bHQsaD1uKCJ5TG9XIikuZGVmYXVsdCx5PW4oIlRVZ3kiKS5kZWZhdWx0LG09bigicml0OSIpLmRlZmF1bHQsdj1uKCJZQ0VVIikuZGVmYXVsdCxnPW4oIllBVzgiKS5kZWZhdWx0LGI9bigicFJ2YyIpLmRlZmF1bHQsdz1uKCJwWXhUIikuZGVmYXVsdCxfPW4oIlV5eFAiKS5kZWZhdWx0LEU9bigiV21TMSIpLmRlZmF1bHQ7ZS5leHBvcnRzPXtEYXRlUmFuZ2VQaWNrZXI6cixTaW5nbGVEYXRlUGlja2VyOmksRGF0ZVJhbmdlUGlja2VySW5wdXRDb250cm9sbGVyOmEsRGF0ZVJhbmdlUGlja2VySW5wdXQ6byxTaW5nbGVEYXRlUGlja2VySW5wdXQ6dSxEYXlQaWNrZXI6cyxEYXlQaWNrZXJSYW5nZUNvbnRyb2xsZXI6bCxEYXlQaWNrZXJTaW5nbGVEYXRlQ29udHJvbGxlcjpjLENhbGVuZGFyTW9udGhHcmlkOmYsQ2FsZW5kYXJNb250aDpkLENhbGVuZGFyRGF5OnAsRGF0ZVJhbmdlUGlja2VyU2hhcGU6aCxTaW5nbGVEYXRlUGlja2VyU2hhcGU6eSxpc0luY2x1c2l2ZWx5QWZ0ZXJEYXk6bSxpc0luY2x1c2l2ZWx5QmVmb3JlRGF5OnYsaXNOZXh0RGF5OmcsaXNTYW1lRGF5OmIsdG9JU09EYXRlU3RyaW5nOncsdG9Mb2NhbGl6ZWREYXRlU3RyaW5nOl8sdG9Nb21lbnRPYmplY3Q6RX19LHFPU0s6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPW4oIjE3eDkiKSxhPShyPW8pJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfSxpPW4oIjVmN24iKTt0LmRlZmF1bHQ9YS5kZWZhdWx0Lm9uZU9mKFtpLkhPUklaT05UQUxfT1JJRU5UQVRJT04saS5WRVJUSUNBTF9PUklFTlRBVElPTl0pfSxxVmRUOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUpe24uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQodCwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSk7dmFyIHI9bigibXJTRyIpLG89T2JqZWN0LnNldFByb3RvdHlwZU9mLGE9dm9pZCAwPT09bz9mdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9Om8saT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3ZvaWQgMD09PW4mJihuPSJJbnZhcmlhbnQgVmlvbGF0aW9uIik7dmFyIHI9ZS5jYWxsKHRoaXMsIm51bWJlciI9PXR5cGVvZiBuPyJJbnZhcmlhbnQgVmlvbGF0aW9uOiAiK24rIiAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL2ludmFyaWFudC1wYWNrYWdlcykiOm4pfHx0aGlzO3JldHVybiByLmZyYW1lc1RvUG9wPTEsci5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixhKHIsdC5wcm90b3R5cGUpLHJ9cmV0dXJuIE9iamVjdChyLmMpKHQsZSksdH0oRXJyb3IpO2Z1bmN0aW9uIHUoZSx0KXtpZighZSl0aHJvdyBuZXcgaSh0KX1mdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBjb25zb2xlW2VdLmFwcGx5KGNvbnNvbGUsYXJndW1lbnRzKX19IWZ1bmN0aW9uKGUpe2Uud2Fybj1zKCJ3YXJuIiksZS5lcnJvcj1zKCJlcnJvciIpfSh1fHwodT17fSkpO3ZhciBsPXtlbnY6e319O2lmKCJvYmplY3QiPT10eXBlb2YgZSlsPWU7ZWxzZSB0cnl7RnVuY3Rpb24oInN0dWIiLCJwcm9jZXNzID0gc3R1YiIpKGwpfWNhdGNoKGUpe319KS5jYWxsKHRoaXMsbigiOG94QiIpKX0scWJUUTpmdW5jdGlvbihlLHQsbil7fSxxaW9lOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89bigiWUFWMiIpLGE9KHI9bykmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O3QuZGVmYXVsdD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlzO3JldHVybiByLmlnbm9yZUFjY2VudHMmJih0PSgwLGEuZGVmYXVsdCkodCkpLHIuaWdub3JlQ2FzZSYmKHQ9dC50b0xvd2VyQ2FzZSgpKSxuJiYobj1uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbci52YWx1ZUtleV19KSkpLGUuZmlsdGVyKChmdW5jdGlvbihlKXtpZihuJiZuLmluZGV4T2YoZVtyLnZhbHVlS2V5XSk+LTEpcmV0dXJuITE7aWYoci5maWx0ZXJPcHRpb24pcmV0dXJuIHIuZmlsdGVyT3B0aW9uLmNhbGwobyxlLHQpO2lmKCF0KXJldHVybiEwO3ZhciBpPVN0cmluZyhlW3IudmFsdWVLZXldKSx1PVN0cmluZyhlW3IubGFiZWxLZXldKTtyZXR1cm4gci5pZ25vcmVBY2NlbnRzJiYoImxhYmVsIiE9PXIubWF0Y2hQcm9wJiYoaT0oMCxhLmRlZmF1bHQpKGkpKSwidmFsdWUiIT09ci5tYXRjaFByb3AmJih1PSgwLGEuZGVmYXVsdCkodSkpKSxyLmlnbm9yZUNhc2UmJigibGFiZWwiIT09ci5tYXRjaFByb3AmJihpPWkudG9Mb3dlckNhc2UoKSksInZhbHVlIiE9PXIubWF0Y2hQcm9wJiYodT11LnRvTG93ZXJDYXNlKCkpKSwic3RhcnQiPT09ci5tYXRjaFBvcz8ibGFiZWwiIT09ci5tYXRjaFByb3AmJmkuc3Vic3RyKDAsdC5sZW5ndGgpPT09dHx8InZhbHVlIiE9PXIubWF0Y2hQcm9wJiZ1LnN1YnN0cigwLHQubGVuZ3RoKT09PXQ6ImxhYmVsIiE9PXIubWF0Y2hQcm9wJiZpLmluZGV4T2YodCk+PTB8fCJ2YWx1ZSIhPT1yLm1hdGNoUHJvcCYmdS5pbmRleE9mKHQpPj0wfSkpfX0scW5reTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZnVuY3Rpb24gcigpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31uPWUsKHQ9cikucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5fX3Byb3RvX189bjt2YXIgbz1yLnByb3RvdHlwZTtyZXR1cm4gby5nZXRUeXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJ0eXBlIil9LG8uZ2V0TXV0YWJpbGl0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgibXV0YWJpbGl0eSIpfSxvLmdldERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoImRhdGEiKX0scn0oKDAsbigiSlBjdiIpLlJlY29yZCkoe3R5cGU6IlRPS0VOIixtdXRhYmlsaXR5OiJJTU1VVEFCTEUiLGRhdGE6T2JqZWN0fSkpO2UuZXhwb3J0cz1yfSxxdVMyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bigiWjYvbyIpO3ZhciByPXtpc1ZhbGlkQmxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldEtleSgpLHI9ZS5nZXRQYXJlbnRLZXkoKTtpZihudWxsIT1yJiYhdC5nZXQocikuZ2V0Q2hpbGRLZXlzKCkuaW5jbHVkZXMobikpcmV0dXJuITE7aWYoIWUuZ2V0Q2hpbGRLZXlzKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5nZXQoZSl9KSkuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmVudEtleSgpPT09bn0pKSlyZXR1cm4hMTt2YXIgbz1lLmdldFByZXZTaWJsaW5nS2V5KCk7aWYobnVsbCE9byYmdC5nZXQobykuZ2V0TmV4dFNpYmxpbmdLZXkoKSE9PW4pcmV0dXJuITE7dmFyIGE9ZS5nZXROZXh0U2libGluZ0tleSgpO2lmKG51bGwhPWEmJnQuZ2V0KGEpLmdldFByZXZTaWJsaW5nS2V5KCkhPT1uKXJldHVybiExO3JldHVybihudWxsPT09YXx8bnVsbD09PW98fG8hPT1hKSYmISgiIiE9ZS50ZXh0JiZlLmdldENoaWxkS2V5cygpLnNpemU+MCl9LGlzQ29ubmVjdGVkVHJlZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRvQXJyYXkoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldFBhcmVudEtleSgpJiZudWxsPT1lLmdldFByZXZTaWJsaW5nS2V5KCl9KSk7aWYoMSE9PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wLHI9dC5zaGlmdCgpLmdldEtleSgpLG89W107bnVsbCE9cjspe3ZhciBhPWUuZ2V0KHIpLGk9YS5nZXRDaGlsZEtleXMoKSx1PWEuZ2V0TmV4dFNpYmxpbmdLZXkoKTtpZihpLnNpemU+MCl7bnVsbCE9dSYmby51bnNoaWZ0KHUpO3ZhciBzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5nZXQodCl9KSkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWUuZ2V0UHJldlNpYmxpbmdLZXkoKX0pKTtpZihudWxsPT1zKXJldHVybiExO3I9cy5nZXRLZXkoKX1lbHNlIHI9bnVsbCE9YS5nZXROZXh0U2libGluZ0tleSgpP2EuZ2V0TmV4dFNpYmxpbmdLZXkoKTpvLnNoaWZ0KCk7bisrfXJldHVybiBuPT09ZS5zaXplfSxpc1ZhbGlkVHJlZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiEhZS50b0FycmF5KCkuZXZlcnkoKGZ1bmN0aW9uKG4pe3JldHVybiB0LmlzVmFsaWRCbG9jayhuLGUpfSkpJiZ0aGlzLmlzQ29ubmVjdGVkVHJlZShlKX19O2UuZXhwb3J0cz1yfSxxeDJuOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQsImEiLChmdW5jdGlvbigpe3JldHVybiB1fSkpO3ZhciByPU9iamVjdC5wcm90b3R5cGUsbz1yLnRvU3RyaW5nLGE9ci5oYXNPd25Qcm9wZXJ0eSxpPW5ldyBNYXA7ZnVuY3Rpb24gdShlLHQpe3RyeXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4pe2lmKHQ9PT1uKXJldHVybiEwO3ZhciByPW8uY2FsbCh0KSxpPW8uY2FsbChuKTtpZihyIT09aSlyZXR1cm4hMTtzd2l0Y2gocil7Y2FzZSJbb2JqZWN0IEFycmF5XSI6aWYodC5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm4hMTtjYXNlIltvYmplY3QgT2JqZWN0XSI6aWYocyh0LG4pKXJldHVybiEwO3ZhciB1PU9iamVjdC5rZXlzKHQpLGw9T2JqZWN0LmtleXMobiksYz11Lmxlbmd0aDtpZihjIT09bC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBmPTA7ZjxjOysrZilpZighYS5jYWxsKG4sdVtmXSkpcmV0dXJuITE7Zm9yKGY9MDtmPGM7KytmKXt2YXIgZD11W2ZdO2lmKCFlKHRbZF0sbltkXSkpcmV0dXJuITF9cmV0dXJuITA7Y2FzZSJbb2JqZWN0IEVycm9yXSI6cmV0dXJuIHQubmFtZT09PW4ubmFtZSYmdC5tZXNzYWdlPT09bi5tZXNzYWdlO2Nhc2UiW29iamVjdCBOdW1iZXJdIjppZih0IT10KXJldHVybiBuIT1uO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4rdD09K247Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09IiIrbjtjYXNlIltvYmplY3QgTWFwXSI6Y2FzZSJbb2JqZWN0IFNldF0iOmlmKHQuc2l6ZSE9PW4uc2l6ZSlyZXR1cm4hMTtpZihzKHQsbikpcmV0dXJuITA7Zm9yKHZhciBwPXQuZW50cmllcygpLGg9IltvYmplY3QgTWFwXSI9PT1yOzspe3ZhciB5PXAubmV4dCgpO2lmKHkuZG9uZSlicmVhazt2YXIgbT15LnZhbHVlLHY9bVswXSxnPW1bMV07aWYoIW4uaGFzKHYpKXJldHVybiExO2lmKGgmJiFlKGcsbi5nZXQodikpKXJldHVybiExfXJldHVybiEwfXJldHVybiExfShlLHQpfWZpbmFsbHl7aS5jbGVhcigpfX1mdW5jdGlvbiBzKGUsdCl7dmFyIG49aS5nZXQoZSk7aWYobil7aWYobi5oYXModCkpcmV0dXJuITB9ZWxzZSBpLnNldChlLG49bmV3IFNldCk7cmV0dXJuIG4uYWRkKHQpLCExfX0scXlzdjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihudWxsIT1lKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcigiR290IHVuZXhwZWN0ZWQgbnVsbCBvciB1bmRlZmluZWQiKX19LHIzNlk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9bigiQ29waSIpfSxyQVY5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicTF0SSIpLG89bigicFhtcCIpLGE9KDAsbigiSlBjdiIpLk1hcCkoeyJoZWFkZXItb25lIjp7ZWxlbWVudDoiaDEifSwiaGVhZGVyLXR3byI6e2VsZW1lbnQ6ImgyIn0sImhlYWRlci10aHJlZSI6e2VsZW1lbnQ6ImgzIn0sImhlYWRlci1mb3VyIjp7ZWxlbWVudDoiaDQifSwiaGVhZGVyLWZpdmUiOntlbGVtZW50OiJoNSJ9LCJoZWFkZXItc2l4Ijp7ZWxlbWVudDoiaDYifSxzZWN0aW9uOntlbGVtZW50OiJzZWN0aW9uIn0sYXJ0aWNsZTp7ZWxlbWVudDoiYXJ0aWNsZSJ9LCJ1bm9yZGVyZWQtbGlzdC1pdGVtIjp7ZWxlbWVudDoibGkiLHdyYXBwZXI6ci5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZTpvKCJwdWJsaWMvRHJhZnRTdHlsZURlZmF1bHQvdWwiKX0pfSwib3JkZXJlZC1saXN0LWl0ZW0iOntlbGVtZW50OiJsaSIsd3JhcHBlcjpyLmNyZWF0ZUVsZW1lbnQoIm9sIix7Y2xhc3NOYW1lOm8oInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9vbCIpfSl9LGJsb2NrcXVvdGU6e2VsZW1lbnQ6ImJsb2NrcXVvdGUifSxhdG9taWM6e2VsZW1lbnQ6ImZpZ3VyZSJ9LCJjb2RlLWJsb2NrIjp7ZWxlbWVudDoicHJlIix3cmFwcGVyOnIuY3JlYXRlRWxlbWVudCgicHJlIix7Y2xhc3NOYW1lOm8oInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9wcmUiKX0pfSx1bnN0eWxlZDp7ZWxlbWVudDoiZGl2IixhbGlhc2VkRWxlbWVudHM6WyJwIl19fSk7ZS5leHBvcnRzPWF9LHJKWTE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fSxvPU1hdGgucG93KDIsMjQpO2UuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgZTt2b2lkIDA9PT1lfHxyLmhhc093blByb3BlcnR5KGUpfHwhaXNOYU4oK2UpOyllPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvKS50b1N0cmluZygzMik7cmV0dXJuIHJbZV09ITAsZX19LHJReTM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJvTk5QIiksbz1uKCJJaTlWIiksYT1uKCJLaHFsIikoIk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9byhlKSxuPVtdO2Zvcih2YXIgaSBpbiB0KXIodCxpKSYmYSh0LGkpJiZuLnB1c2godFtpXSk7cmV0dXJuIG59fSxyaXQ5OmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuISghci5kZWZhdWx0LmlzTW9tZW50KGUpfHwhci5kZWZhdWx0LmlzTW9tZW50KHQpKSYmISgwLG8uZGVmYXVsdCkoZSx0KX07dmFyIHI9YShuKCJ3ZC9SIikpLG89YShuKCJoNnhIIikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fX0scnpWNzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09MS90OmUhPWUmJnQhPXR9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYobyhlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksYT1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PWEubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKWlmKCFyLmNhbGwodCxuW2ldKXx8IW8oZVtuW2ldXSx0W25baV1dKSlyZXR1cm4hMTtyZXR1cm4hMH19LCJzK3VrIjpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCxuLHIpe3ZhciBvPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOltlKyIgVGFnZSIsZSsiIFRhZ2VuIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2UrIiBNb25hdGUiLGUrIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OltlKyIgSmFocmUiLGUrIiBKYWhyZW4iXX07cmV0dXJuIHQ/b1tuXVswXTpvW25dWzFdfWUuZGVmaW5lTG9jYWxlKCJkZS1hdCIse21vbnRoczoiSsOkbm5lcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKw6RuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLHNzOiIlZCBTZWt1bmRlbiIsbTp0LG1tOiIlZCBNaW51dGVuIixoOnQsaGg6IiVkIFN0dW5kZW4iLGQ6dCxkZDp0LE06dCxNTTp0LHk6dCx5eTp0fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KG4oIndkL1IiKSl9LHM0TlI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmRlY29kZT10LnBhcnNlPW4oImtkMkUiKSx0LmVuY29kZT10LnN0cmluZ2lmeT1uKCI0SmxEIil9LHM4cmE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI0cElCIiksbz1uKCJrRTU4IiksYT1yLmlzUGxhdGZvcm0oIk1hYyBPUyBYIiksaT17aXNDdHJsS2V5Q29tbWFuZDpmdW5jdGlvbihlKXtyZXR1cm4hIWUuY3RybEtleSYmIWUuYWx0S2V5fSxpc09wdGlvbktleUNvbW1hbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGEmJmUuYWx0S2V5fSx1c2VzTWFjT1NIZXVyaXN0aWNzOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGhhc0NvbW1hbmRNb2RpZmllcjpmdW5jdGlvbihlKXtyZXR1cm4gYT8hIWUubWV0YUtleSYmIWUuYWx0S2V5OmkuaXNDdHJsS2V5Q29tbWFuZChlKX0saXNTb2Z0TmV3bGluZUV2ZW50Om99O2UuZXhwb3J0cz1pfSxzRWZDOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJHb3lRIiksbz1uKCJRSXlGIiksYT1uKCJ0TEIzIiksaT1NYXRoLm1heCx1PU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHMsbCxjLGYsZCxwLGg9MCx5PSExLG09ITEsdj0hMDtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gZyh0KXt2YXIgbj1zLHI9bDtyZXR1cm4gcz1sPXZvaWQgMCxoPXQsZj1lLmFwcGx5KHIsbil9ZnVuY3Rpb24gYihlKXtyZXR1cm4gaD1lLGQ9c2V0VGltZW91dChfLHQpLHk/ZyhlKTpmfWZ1bmN0aW9uIHcoZSl7dmFyIG49ZS1wO3JldHVybiB2b2lkIDA9PT1wfHxuPj10fHxuPDB8fG0mJmUtaD49Y31mdW5jdGlvbiBfKCl7dmFyIGU9bygpO2lmKHcoZSkpcmV0dXJuIEUoZSk7ZD1zZXRUaW1lb3V0KF8sZnVuY3Rpb24oZSl7dmFyIG49dC0oZS1wKTtyZXR1cm4gbT91KG4sYy0oZS1oKSk6bn0oZSkpfWZ1bmN0aW9uIEUoZSl7cmV0dXJuIGQ9dm9pZCAwLHYmJnM/ZyhlKToocz1sPXZvaWQgMCxmKX1mdW5jdGlvbiBPKCl7dmFyIGU9bygpLG49dyhlKTtpZihzPWFyZ3VtZW50cyxsPXRoaXMscD1lLG4pe2lmKHZvaWQgMD09PWQpcmV0dXJuIGIocCk7aWYobSlyZXR1cm4gY2xlYXJUaW1lb3V0KGQpLGQ9c2V0VGltZW91dChfLHQpLGcocCl9cmV0dXJuIHZvaWQgMD09PWQmJihkPXNldFRpbWVvdXQoXyx0KSksZn1yZXR1cm4gdD1hKHQpfHwwLHIobikmJih5PSEhbi5sZWFkaW5nLGM9KG09Im1heFdhaXQiaW4gbik/aShhKG4ubWF4V2FpdCl8fDAsdCk6Yyx2PSJ0cmFpbGluZyJpbiBuPyEhbi50cmFpbGluZzp2KSxPLmNhbmNlbD1mdW5jdGlvbigpe3ZvaWQgMCE9PWQmJmNsZWFyVGltZW91dChkKSxoPTAscz1wPWw9ZD12b2lkIDB9LE8uZmx1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09ZD9mOkUobygpKX0sT319LHNPc2w6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISF0JiYoZT09PXQuZG9jdW1lbnRFbGVtZW50fHxlPT09dC5ib2R5KX12YXIgbz17Z2V0VG9wOmZ1bmN0aW9uKGUpe3ZhciB0PWUub3duZXJEb2N1bWVudDtyZXR1cm4gcihlLHQpP3QuYm9keS5zY3JvbGxUb3B8fHQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDplLnNjcm9sbFRvcH0sc2V0VG9wOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5vd25lckRvY3VtZW50O3IoZSxuKT9uLmJvZHkuc2Nyb2xsVG9wPW4uZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcD10OmUuc2Nyb2xsVG9wPXR9LGdldExlZnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50O3JldHVybiByKGUsdCk/dC5ib2R5LnNjcm9sbExlZnR8fHQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ6ZS5zY3JvbGxMZWZ0fSxzZXRMZWZ0OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5vd25lckRvY3VtZW50O3IoZSxuKT9uLmJvZHkuc2Nyb2xsTGVmdD1uLmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0PXQ6ZS5zY3JvbGxMZWZ0PXR9fTtlLmV4cG9ydHM9b30sc1dXNjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIklxYkciKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSkmJjM9PWUubm9kZVR5cGV9fSxzWHlCOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJTa3NPIik7ZnVuY3Rpb24gbygpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGEodCxuLGkpe3JldHVybiBvKCk/ZS5leHBvcnRzPWE9UmVmbGVjdC5jb25zdHJ1Y3Q6ZS5leHBvcnRzPWE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPVtudWxsXTtvLnB1c2guYXBwbHkobyx0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG8pKTtyZXR1cm4gbiYmcihhLG4ucHJvdG90eXBlKSxhfSxhLmFwcGx5KG51bGwsYXJndW1lbnRzKX1lLmV4cG9ydHM9YX0sc1luMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByO2lmKCFPYmplY3Qua2V5cyl7dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaT1uKCIxS3NLIiksdT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLHM9IXUuY2FsbCh7dG9TdHJpbmc6bnVsbH0sInRvU3RyaW5nIiksbD11LmNhbGwoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIpLGM9WyJ0b1N0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVPZiIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY29uc3RydWN0b3IiXSxmPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uc3RydWN0b3I7cmV0dXJuIHQmJnQucHJvdG90eXBlPT09ZX0sZD17JGFwcGxpY2F0aW9uQ2FjaGU6ITAsJGNvbnNvbGU6ITAsJGV4dGVybmFsOiEwLCRmcmFtZTohMCwkZnJhbWVFbGVtZW50OiEwLCRmcmFtZXM6ITAsJGlubmVySGVpZ2h0OiEwLCRpbm5lcldpZHRoOiEwLCRvbm1vemZ1bGxzY3JlZW5jaGFuZ2U6ITAsJG9ubW96ZnVsbHNjcmVlbmVycm9yOiEwLCRvdXRlckhlaWdodDohMCwkb3V0ZXJXaWR0aDohMCwkcGFnZVhPZmZzZXQ6ITAsJHBhZ2VZT2Zmc2V0OiEwLCRwYXJlbnQ6ITAsJHNjcm9sbExlZnQ6ITAsJHNjcm9sbFRvcDohMCwkc2Nyb2xsWDohMCwkc2Nyb2xsWTohMCwkc2VsZjohMCwkd2Via2l0SW5kZXhlZERCOiEwLCR3ZWJraXRTdG9yYWdlSW5mbzohMCwkd2luZG93OiEwfSxwPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuITE7Zm9yKHZhciBlIGluIHdpbmRvdyl0cnl7aWYoIWRbIiQiK2VdJiZvLmNhbGwod2luZG93LGUpJiZudWxsIT09d2luZG93W2VdJiYib2JqZWN0Ij09dHlwZW9mIHdpbmRvd1tlXSl0cnl7Zih3aW5kb3dbZV0pfWNhdGNoKGUpe3JldHVybiEwfX1jYXRjaChlKXtyZXR1cm4hMH1yZXR1cm4hMX0oKTtyPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUsbj0iW29iamVjdCBGdW5jdGlvbl0iPT09YS5jYWxsKGUpLHI9aShlKSx1PXQmJiJbb2JqZWN0IFN0cmluZ10iPT09YS5jYWxsKGUpLGQ9W107aWYoIXQmJiFuJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIGg9bCYmbjtpZih1JiZlLmxlbmd0aD4wJiYhby5jYWxsKGUsMCkpZm9yKHZhciB5PTA7eTxlLmxlbmd0aDsrK3kpZC5wdXNoKFN0cmluZyh5KSk7aWYociYmZS5sZW5ndGg+MClmb3IodmFyIG09MDttPGUubGVuZ3RoOysrbSlkLnB1c2goU3RyaW5nKG0pKTtlbHNlIGZvcih2YXIgdiBpbiBlKWgmJiJwcm90b3R5cGUiPT09dnx8IW8uY2FsbChlLHYpfHxkLnB1c2goU3RyaW5nKHYpKTtpZihzKWZvcih2YXIgZz1mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXApcmV0dXJuIGYoZSk7dHJ5e3JldHVybiBmKGUpfWNhdGNoKGUpe3JldHVybiExfX0oZSksYj0wO2I8Yy5sZW5ndGg7KytiKWcmJiJjb25zdHJ1Y3RvciI9PT1jW2JdfHwhby5jYWxsKGUsY1tiXSl8fGQucHVzaChjW2JdKTtyZXR1cm4gZH19ZS5leHBvcnRzPXJ9LHNsZG06ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbz11KG4oInExdEkiKSksYT11KG4oIjE3eDkiKSksaT11KG4oIlRTWVEiKSk7ZnVuY3Rpb24gdShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpO3JldHVybiBuLmhhbmRsZU1vdXNlRG93bj1uLmhhbmRsZU1vdXNlRG93bi5iaW5kKG4pLG4uaGFuZGxlTW91c2VFbnRlcj1uLmhhbmRsZU1vdXNlRW50ZXIuYmluZChuKSxuLmhhbmRsZU1vdXNlTW92ZT1uLmhhbmRsZU1vdXNlTW92ZS5iaW5kKG4pLG4uaGFuZGxlVG91Y2hTdGFydD1uLmhhbmRsZVRvdWNoU3RhcnQuYmluZChuKSxuLmhhbmRsZVRvdWNoRW5kPW4uaGFuZGxlVG91Y2hFbmQuYmluZChuKSxuLmhhbmRsZVRvdWNoTW92ZT1uLmhhbmRsZVRvdWNoTW92ZS5iaW5kKG4pLG4ub25Gb2N1cz1uLm9uRm9jdXMuYmluZChuKSxufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSkscih0LFt7a2V5OiJibG9ja0V2ZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSwiQSI9PT1lLnRhcmdldC50YWdOYW1lJiYiaHJlZiJpbiBlLnRhcmdldCYmKGUudGFyZ2V0LnRhcmdldD93aW5kb3cub3BlbihlLnRhcmdldC5ocmVmLGUudGFyZ2V0LnRhcmdldCk6d2luZG93LmxvY2F0aW9uLmhyZWY9ZS50YXJnZXQuaHJlZil9fSx7a2V5OiJoYW5kbGVNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMucHJvcHMub25TZWxlY3QodGhpcy5wcm9wcy5vcHRpb24sZSl9fSx7a2V5OiJoYW5kbGVNb3VzZUVudGVyIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLm9uRm9jdXMoZSl9fSx7a2V5OiJoYW5kbGVNb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMub25Gb2N1cyhlKX19LHtrZXk6ImhhbmRsZVRvdWNoRW5kIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmRyYWdnaW5nfHx0aGlzLmhhbmRsZU1vdXNlRG93bihlKX19LHtrZXk6ImhhbmRsZVRvdWNoTW92ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5kcmFnZ2luZz0hMH19LHtrZXk6ImhhbmRsZVRvdWNoU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuZHJhZ2dpbmc9ITF9fSx7a2V5OiJvbkZvY3VzIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnByb3BzLmlzRm9jdXNlZHx8dGhpcy5wcm9wcy5vbkZvY3VzKHRoaXMucHJvcHMub3B0aW9uLGUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLm9wdGlvbixuPWUuaW5zdGFuY2VQcmVmaXgscj1lLm9wdGlvbkluZGV4LGE9KDAsaS5kZWZhdWx0KSh0aGlzLnByb3BzLmNsYXNzTmFtZSx0LmNsYXNzTmFtZSk7cmV0dXJuIHQuZGlzYWJsZWQ/by5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTphLG9uTW91c2VEb3duOnRoaXMuYmxvY2tFdmVudCxvbkNsaWNrOnRoaXMuYmxvY2tFdmVudH0sdGhpcy5wcm9wcy5jaGlsZHJlbik6by5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTphLHN0eWxlOnQuc3R5bGUscm9sZToib3B0aW9uIixvbk1vdXNlRG93bjp0aGlzLmhhbmRsZU1vdXNlRG93bixvbk1vdXNlRW50ZXI6dGhpcy5oYW5kbGVNb3VzZUVudGVyLG9uTW91c2VNb3ZlOnRoaXMuaGFuZGxlTW91c2VNb3ZlLG9uVG91Y2hTdGFydDp0aGlzLmhhbmRsZVRvdWNoU3RhcnQsb25Ub3VjaE1vdmU6dGhpcy5oYW5kbGVUb3VjaE1vdmUsb25Ub3VjaEVuZDp0aGlzLmhhbmRsZVRvdWNoRW5kLGlkOm4rIi1vcHRpb24tIityLHRpdGxlOnQudGl0bGV9LHRoaXMucHJvcHMuY2hpbGRyZW4pfX1dKSx0fShvLmRlZmF1bHQuQ29tcG9uZW50KTtzLnByb3BUeXBlcz17Y2hpbGRyZW46YS5kZWZhdWx0Lm5vZGUsY2xhc3NOYW1lOmEuZGVmYXVsdC5zdHJpbmcsaW5zdGFuY2VQcmVmaXg6YS5kZWZhdWx0LnN0cmluZy5pc1JlcXVpcmVkLGlzRGlzYWJsZWQ6YS5kZWZhdWx0LmJvb2wsaXNGb2N1c2VkOmEuZGVmYXVsdC5ib29sLGlzU2VsZWN0ZWQ6YS5kZWZhdWx0LmJvb2wsb25Gb2N1czphLmRlZmF1bHQuZnVuYyxvblNlbGVjdDphLmRlZmF1bHQuZnVuYyxvblVuZm9jdXM6YS5kZWZhdWx0LmZ1bmMsb3B0aW9uOmEuZGVmYXVsdC5vYmplY3QuaXNSZXF1aXJlZCxvcHRpb25JbmRleDphLmRlZmF1bHQubnVtYmVyfSx0LmRlZmF1bHQ9c30sdEdsWDpmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUsdCxuLHIpe3ZhciBvPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOltlKyIgVGFnZSIsZSsiIFRhZ2VuIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2UrIiBNb25hdGUiLGUrIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OltlKyIgSmFocmUiLGUrIiBKYWhyZW4iXX07cmV0dXJuIHQ/b1tuXVswXTpvW25dWzFdfWUuZGVmaW5lTG9jYWxlKCJkZSIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4iLG06dCxtbToiJWQgTWludXRlbiIsaDp0LGhoOiIlZCBTdHVuZGVuIixkOnQsZGQ6dCxNOnQsTU06dCx5OnQseXk6dH0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSx0TEIzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJHb3lRIiksbz1uKCIvOWFhIiksYT0vXlxzK3xccyskL2csaT0vXlstK10weFswLTlhLWZdKyQvaSx1PS9eMGJbMDFdKyQvaSxzPS9eMG9bMC03XSskL2ksbD1wYXJzZUludDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiBlO2lmKG8oZSkpcmV0dXJuIE5hTjtpZihyKGUpKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgZS52YWx1ZU9mP2UudmFsdWVPZigpOmU7ZT1yKHQpP3QrIiI6dH1pZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIDA9PT1lP2U6K2U7ZT1lLnJlcGxhY2UoYSwiIik7dmFyIG49dS50ZXN0KGUpO3JldHVybiBufHxzLnRlc3QoZSk/bChlLnNsaWNlKDIpLG4/Mjo4KTppLnRlc3QoZSk/TmFOOitlfX0sdGtmTzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSxbXSl9O3ZhciByLG89KHI9bigiNmZkSCIpKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07ZnVuY3Rpb24gYShlKXtyZXR1cm4oYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGkoZSx0KXtzd2l0Y2goYShlKSl7Y2FzZSJzdHJpbmciOnJldHVybiBKU09OLnN0cmluZ2lmeShlKTtjYXNlImZ1bmN0aW9uIjpyZXR1cm4gZS5uYW1lPyJbZnVuY3Rpb24gIi5jb25jYXQoZS5uYW1lLCJdIik6IltmdW5jdGlvbl0iO2Nhc2Uib2JqZWN0IjpyZXR1cm4gbnVsbD09PWU/Im51bGwiOmZ1bmN0aW9uKGUsdCl7aWYoLTEhPT10LmluZGV4T2YoZSkpcmV0dXJuIltDaXJjdWxhcl0iO3ZhciBuPVtdLmNvbmNhdCh0LFtlXSkscj1mdW5jdGlvbihlKXt2YXIgdD1lW1N0cmluZyhvLmRlZmF1bHQpXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5pbnNwZWN0KXJldHVybiBlLmluc3BlY3R9KGUpO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuY2FsbChlKTtpZihhIT09ZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/YTppKGEsbil9ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBmdW5jdGlvbihlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iW10iO2lmKHQubGVuZ3RoPjIpcmV0dXJuIltBcnJheV0iO2Zvcih2YXIgbj1NYXRoLm1pbigxMCxlLmxlbmd0aCkscj1lLmxlbmd0aC1uLG89W10sYT0wO2E8bjsrK2Epby5wdXNoKGkoZVthXSx0KSk7MT09PXI/by5wdXNoKCIuLi4gMSBtb3JlIGl0ZW0iKTpyPjEmJm8ucHVzaCgiLi4uICIuY29uY2F0KHIsIiBtb3JlIGl0ZW1zIikpO3JldHVybiJbIitvLmpvaW4oIiwgIikrIl0ifShlLG4pO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4ie30iO2lmKHQubGVuZ3RoPjIpcmV0dXJuIlsiK2Z1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5yZXBsYWNlKC9eXFtvYmplY3QgLywiIikucmVwbGFjZSgvXSQvLCIiKTtpZigiT2JqZWN0Ij09PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yKXt2YXIgbj1lLmNvbnN0cnVjdG9yLm5hbWU7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYiIiE9PW4pcmV0dXJuIG59cmV0dXJuIHR9KGUpKyJdIjtyZXR1cm4ieyAiK24ubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gbisiOiAiK2koZVtuXSx0KX0pKS5qb2luKCIsICIpKyIgfSJ9KGUsbil9KGUsdCk7ZGVmYXVsdDpyZXR1cm4gU3RyaW5nKGUpfX19LHRxQ3g6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC52aXNpdD1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTphLHI9dm9pZCAwLGw9QXJyYXkuaXNBcnJheShlKSxjPVtlXSxmPS0xLGQ9W10scD12b2lkIDAsaD12b2lkIDAseT12b2lkIDAsbT1bXSx2PVtdLGc9ZTtkb3t2YXIgYj0rK2Y9PT1jLmxlbmd0aCx3PWImJjAhPT1kLmxlbmd0aDtpZihiKXtpZihoPTA9PT12Lmxlbmd0aD92b2lkIDA6bVttLmxlbmd0aC0xXSxwPXkseT12LnBvcCgpLHcpe2lmKGwpcD1wLnNsaWNlKCk7ZWxzZXtmb3IodmFyIF89e30sRT0wLE89T2JqZWN0LmtleXMocCk7RTxPLmxlbmd0aDtFKyspe3ZhciBrPU9bRV07X1trXT1wW2tdfXA9X31mb3IodmFyIEM9MCx4PTA7eDxkLmxlbmd0aDt4Kyspe3ZhciBTPWRbeF1bMF0sRD1kW3hdWzFdO2wmJihTLT1DKSxsJiZudWxsPT09RD8ocC5zcGxpY2UoUywxKSxDKyspOnBbU109RH19Zj1yLmluZGV4LGM9ci5rZXlzLGQ9ci5lZGl0cyxsPXIuaW5BcnJheSxyPXIucHJldn1lbHNle2lmKGg9eT9sP2Y6Y1tmXTp2b2lkIDAsbnVsbD09KHA9eT95W2hdOmcpKWNvbnRpbnVlO3kmJm0ucHVzaChoKX12YXIgVD12b2lkIDA7aWYoIUFycmF5LmlzQXJyYXkocCkpe2lmKCF1KHApKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBBU1QgTm9kZTogIisoMCxvLmRlZmF1bHQpKHApKTt2YXIgTT1zKHQscC5raW5kLGIpO2lmKE0pe2lmKChUPU0uY2FsbCh0LHAsaCx5LG0sdikpPT09aSlicmVhaztpZighMT09PVQpe2lmKCFiKXttLnBvcCgpO2NvbnRpbnVlfX1lbHNlIGlmKHZvaWQgMCE9PVQmJihkLnB1c2goW2gsVF0pLCFiKSl7aWYoIXUoVCkpe20ucG9wKCk7Y29udGludWV9cD1UfX19dm9pZCAwPT09VCYmdyYmZC5wdXNoKFtoLHBdKSxiP20ucG9wKCk6KHI9e2luQXJyYXk6bCxpbmRleDpmLGtleXM6YyxlZGl0czpkLHByZXY6cn0sbD1BcnJheS5pc0FycmF5KHApLGM9bD9wOm5bcC5raW5kXXx8W10sZj0tMSxkPVtdLHkmJnYucHVzaCh5KSx5PXApfXdoaWxlKHZvaWQgMCE9PXIpOzAhPT1kLmxlbmd0aCYmKGc9ZFtkLmxlbmd0aC0xXVsxXSk7cmV0dXJuIGd9LHQudmlzaXRJblBhcmFsbGVsPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShlLmxlbmd0aCk7cmV0dXJue2VudGVyOmZ1bmN0aW9uKG4pe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKCF0W3JdKXt2YXIgbz1zKGVbcl0sbi5raW5kLCExKTtpZihvKXt2YXIgYT1vLmFwcGx5KGVbcl0sYXJndW1lbnRzKTtpZighMT09PWEpdFtyXT1uO2Vsc2UgaWYoYT09PWkpdFtyXT1pO2Vsc2UgaWYodm9pZCAwIT09YSlyZXR1cm4gYX19fSxsZWF2ZTpmdW5jdGlvbihuKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKylpZih0W3JdKXRbcl09PT1uJiYodFtyXT1udWxsKTtlbHNle3ZhciBvPXMoZVtyXSxuLmtpbmQsITApO2lmKG8pe3ZhciBhPW8uYXBwbHkoZVtyXSxhcmd1bWVudHMpO2lmKGE9PT1pKXRbcl09aTtlbHNlIGlmKHZvaWQgMCE9PWEmJiExIT09YSlyZXR1cm4gYX19fX19LHQudmlzaXRXaXRoVHlwZUluZm89ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW50ZXI6ZnVuY3Rpb24obil7ZS5lbnRlcihuKTt2YXIgcj1zKHQsbi5raW5kLCExKTtpZihyKXt2YXIgbz1yLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4gdm9pZCAwIT09byYmKGUubGVhdmUobiksdShvKSYmZS5lbnRlcihvKSksb319LGxlYXZlOmZ1bmN0aW9uKG4pe3ZhciByLG89cyh0LG4ua2luZCwhMCk7cmV0dXJuIG8mJihyPW8uYXBwbHkodCxhcmd1bWVudHMpKSxlLmxlYXZlKG4pLHJ9fX0sdC5nZXRWaXNpdEZuPXMsdC5CUkVBSz10LlF1ZXJ5RG9jdW1lbnRLZXlzPXZvaWQgMDt2YXIgcixvPShyPW4oInRrZk8iKSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O3ZhciBhPXtOYW1lOltdLERvY3VtZW50OlsiZGVmaW5pdGlvbnMiXSxPcGVyYXRpb25EZWZpbml0aW9uOlsibmFtZSIsInZhcmlhYmxlRGVmaW5pdGlvbnMiLCJkaXJlY3RpdmVzIiwic2VsZWN0aW9uU2V0Il0sVmFyaWFibGVEZWZpbml0aW9uOlsidmFyaWFibGUiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiZGlyZWN0aXZlcyJdLFZhcmlhYmxlOlsibmFtZSJdLFNlbGVjdGlvblNldDpbInNlbGVjdGlvbnMiXSxGaWVsZDpbImFsaWFzIiwibmFtZSIsImFyZ3VtZW50cyIsImRpcmVjdGl2ZXMiLCJzZWxlY3Rpb25TZXQiXSxBcmd1bWVudDpbIm5hbWUiLCJ2YWx1ZSJdLEZyYWdtZW50U3ByZWFkOlsibmFtZSIsImRpcmVjdGl2ZXMiXSxJbmxpbmVGcmFnbWVudDpbInR5cGVDb25kaXRpb24iLCJkaXJlY3RpdmVzIiwic2VsZWN0aW9uU2V0Il0sRnJhZ21lbnREZWZpbml0aW9uOlsibmFtZSIsInZhcmlhYmxlRGVmaW5pdGlvbnMiLCJ0eXBlQ29uZGl0aW9uIiwiZGlyZWN0aXZlcyIsInNlbGVjdGlvblNldCJdLEludFZhbHVlOltdLEZsb2F0VmFsdWU6W10sU3RyaW5nVmFsdWU6W10sQm9vbGVhblZhbHVlOltdLE51bGxWYWx1ZTpbXSxFbnVtVmFsdWU6W10sTGlzdFZhbHVlOlsidmFsdWVzIl0sT2JqZWN0VmFsdWU6WyJmaWVsZHMiXSxPYmplY3RGaWVsZDpbIm5hbWUiLCJ2YWx1ZSJdLERpcmVjdGl2ZTpbIm5hbWUiLCJhcmd1bWVudHMiXSxOYW1lZFR5cGU6WyJuYW1lIl0sTGlzdFR5cGU6WyJ0eXBlIl0sTm9uTnVsbFR5cGU6WyJ0eXBlIl0sU2NoZW1hRGVmaW5pdGlvbjpbImRpcmVjdGl2ZXMiLCJvcGVyYXRpb25UeXBlcyJdLE9wZXJhdGlvblR5cGVEZWZpbml0aW9uOlsidHlwZSJdLFNjYWxhclR5cGVEZWZpbml0aW9uOlsiZGVzY3JpcHRpb24iLCJuYW1lIiwiZGlyZWN0aXZlcyJdLE9iamVjdFR5cGVEZWZpbml0aW9uOlsiZGVzY3JpcHRpb24iLCJuYW1lIiwiaW50ZXJmYWNlcyIsImRpcmVjdGl2ZXMiLCJmaWVsZHMiXSxGaWVsZERlZmluaXRpb246WyJkZXNjcmlwdGlvbiIsIm5hbWUiLCJhcmd1bWVudHMiLCJ0eXBlIiwiZGlyZWN0aXZlcyJdLElucHV0VmFsdWVEZWZpbml0aW9uOlsiZGVzY3JpcHRpb24iLCJuYW1lIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImRpcmVjdGl2ZXMiXSxJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjpbImRlc2NyaXB0aW9uIiwibmFtZSIsImRpcmVjdGl2ZXMiLCJmaWVsZHMiXSxVbmlvblR5cGVEZWZpbml0aW9uOlsiZGVzY3JpcHRpb24iLCJuYW1lIiwiZGlyZWN0aXZlcyIsInR5cGVzIl0sRW51bVR5cGVEZWZpbml0aW9uOlsiZGVzY3JpcHRpb24iLCJuYW1lIiwiZGlyZWN0aXZlcyIsInZhbHVlcyJdLEVudW1WYWx1ZURlZmluaXRpb246WyJkZXNjcmlwdGlvbiIsIm5hbWUiLCJkaXJlY3RpdmVzIl0sSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjpbImRlc2NyaXB0aW9uIiwibmFtZSIsImRpcmVjdGl2ZXMiLCJmaWVsZHMiXSxEaXJlY3RpdmVEZWZpbml0aW9uOlsiZGVzY3JpcHRpb24iLCJuYW1lIiwiYXJndW1lbnRzIiwibG9jYXRpb25zIl0sU2NoZW1hRXh0ZW5zaW9uOlsiZGlyZWN0aXZlcyIsIm9wZXJhdGlvblR5cGVzIl0sU2NhbGFyVHlwZUV4dGVuc2lvbjpbIm5hbWUiLCJkaXJlY3RpdmVzIl0sT2JqZWN0VHlwZUV4dGVuc2lvbjpbIm5hbWUiLCJpbnRlcmZhY2VzIiwiZGlyZWN0aXZlcyIsImZpZWxkcyJdLEludGVyZmFjZVR5cGVFeHRlbnNpb246WyJuYW1lIiwiZGlyZWN0aXZlcyIsImZpZWxkcyJdLFVuaW9uVHlwZUV4dGVuc2lvbjpbIm5hbWUiLCJkaXJlY3RpdmVzIiwidHlwZXMiXSxFbnVtVHlwZUV4dGVuc2lvbjpbIm5hbWUiLCJkaXJlY3RpdmVzIiwidmFsdWVzIl0sSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uOlsibmFtZSIsImRpcmVjdGl2ZXMiLCJmaWVsZHMiXX07dC5RdWVyeURvY3VtZW50S2V5cz1hO3ZhciBpPU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIEJvb2xlYW4oZSYmInN0cmluZyI9PXR5cGVvZiBlLmtpbmQpfWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciByPWVbdF07aWYocil7aWYoIW4mJiJmdW5jdGlvbiI9PXR5cGVvZiByKXJldHVybiByO3ZhciBvPW4/ci5sZWF2ZTpyLmVudGVyO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBvKXJldHVybiBvfWVsc2V7dmFyIGE9bj9lLmxlYXZlOmUuZW50ZXI7aWYoYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEpcmV0dXJuIGE7dmFyIGk9YVt0XTtpZigiZnVuY3Rpb24iPT10eXBlb2YgaSlyZXR1cm4gaX19fXQuQlJFQUs9aX0sdHRyQzpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiaUdBayIpLG89bigid3VUbiIpLGE9QXJyYXkucHJvdG90eXBlLnB1c2g7ZnVuY3Rpb24gaShlLHQpe3JldHVybiAyPT10P2Z1bmN0aW9uKHQsbil7cmV0dXJuIGUodCxuKX06ZnVuY3Rpb24odCl7cmV0dXJuIGUodCl9fWZ1bmN0aW9uIHUoZSl7Zm9yKHZhciB0PWU/ZS5sZW5ndGg6MCxuPUFycmF5KHQpO3QtLTspblt0XT1lW3RdO3JldHVybiBufWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoO2lmKG4pe2Zvcih2YXIgcj1BcnJheShuKTtuLS07KXJbbl09YXJndW1lbnRzW25dO3ZhciBvPXJbMF09dC5hcHBseSh2b2lkIDAscik7cmV0dXJuIGUuYXBwbHkodm9pZCAwLHIpLG99fX1lLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LG4sbCxjKXt2YXIgZj0iZnVuY3Rpb24iPT10eXBlb2YgbixkPW49PT1PYmplY3Qobik7aWYoZCYmKGM9bCxsPW4sbj12b2lkIDApLG51bGw9PWwpdGhyb3cgbmV3IFR5cGVFcnJvcjtjfHwoYz17fSk7dmFyIHA9ISgiY2FwImluIGMpfHxjLmNhcCxoPSEoImN1cnJ5ImluIGMpfHxjLmN1cnJ5LHk9ISgiZml4ZWQiaW4gYyl8fGMuZml4ZWQsbT0hKCJpbW11dGFibGUiaW4gYyl8fGMuaW1tdXRhYmxlLHY9ISgicmVhcmciaW4gYyl8fGMucmVhcmcsZz1mP2w6byxiPSJjdXJyeSJpbiBjJiZjLmN1cnJ5LHc9ImZpeGVkImluIGMmJmMuZml4ZWQsXz0icmVhcmciaW4gYyYmYy5yZWFyZyxFPWY/bC5ydW5JbkNvbnRleHQoKTp2b2lkIDAsTz1mP2w6e2FyeTp0LmFyeSxhc3NpZ246dC5hc3NpZ24sY2xvbmU6dC5jbG9uZSxjdXJyeTp0LmN1cnJ5LGZvckVhY2g6dC5mb3JFYWNoLGlzQXJyYXk6dC5pc0FycmF5LGlzRXJyb3I6dC5pc0Vycm9yLGlzRnVuY3Rpb246dC5pc0Z1bmN0aW9uLGlzV2Vha01hcDp0LmlzV2Vha01hcCxpdGVyYXRlZTp0Lml0ZXJhdGVlLGtleXM6dC5rZXlzLHJlYXJnOnQucmVhcmcsdG9JbnRlZ2VyOnQudG9JbnRlZ2VyLHRvUGF0aDp0LnRvUGF0aH0saz1PLmFyeSxDPU8uYXNzaWduLHg9Ty5jbG9uZSxTPU8uY3VycnksRD1PLmZvckVhY2gsVD1PLmlzQXJyYXksTT1PLmlzRXJyb3IsUD1PLmlzRnVuY3Rpb24sTj1PLmlzV2Vha01hcCxqPU8ua2V5cyxMPU8ucmVhcmcsUj1PLnRvSW50ZWdlcixJPU8udG9QYXRoLEE9aihyLmFyeU1ldGhvZCksRj17Y2FzdEFycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gVCh0KT9lKHUodCkpOmUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fSxpdGVyYXRlZTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbMV0scj1lKHQsbiksbz1yLmxlbmd0aDtyZXR1cm4gcCYmIm51bWJlciI9PXR5cGVvZiBuPyhuPW4+Mj9uLTI6MSxvJiZvPD1uP3I6aShyLG4pKTpyfX0sbWl4aW46ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7aWYoIVAobikpcmV0dXJuIGUobixPYmplY3QodCkpO3ZhciByPVtdO3JldHVybiBEKGoodCksKGZ1bmN0aW9uKGUpe1AodFtlXSkmJnIucHVzaChbZSxuLnByb3RvdHlwZVtlXV0pfSkpLGUobixPYmplY3QodCkpLEQociwoZnVuY3Rpb24oZSl7dmFyIHQ9ZVsxXTtQKHQpP24ucHJvdG90eXBlW2VbMF1dPXQ6ZGVsZXRlIG4ucHJvdG90eXBlW2VbMF1dfSkpLG59fSxudGhBcmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQ8MD8xOlIodCkrMTtyZXR1cm4gUyhlKHQpLG4pfX0scmVhcmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9bj9uLmxlbmd0aDowO3JldHVybiBTKGUodCxuKSxyKX19LHJ1bkluQ29udGV4dDpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUodCxuKHIpLGMpfX19O2Z1bmN0aW9uIEIoZSx0KXtpZihwKXt2YXIgbj1yLml0ZXJhdGVlUmVhcmdbZV07aWYobilyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gVShlLChmdW5jdGlvbihlKXt2YXIgbj10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gMj09dD9mdW5jdGlvbih0LG4pe3JldHVybiBlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfTpmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19KEwoaShlLG4pLHQpLG4pfSkpfSh0LG4pO3ZhciBvPSFmJiZyLml0ZXJhdGVlQXJ5W2VdO2lmKG8pcmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIFUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/aShlLHQpOmV9KSl9KHQsbyl9cmV0dXJuIHR9ZnVuY3Rpb24geihlLHQsbil7aWYoeSYmKHd8fCFyLnNraXBGaXhlZFtlXSkpe3ZhciBvPXIubWV0aG9kU3ByZWFkW2VdLGk9byYmby5zdGFydDtyZXR1cm4gdm9pZCAwPT09aT9rKHQsbik6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW4tMSxvPUFycmF5KG4pO24tLTspb1tuXT1hcmd1bWVudHNbbl07dmFyIGk9b1t0XSx1PW8uc2xpY2UoMCx0KTtyZXR1cm4gaSYmYS5hcHBseSh1LGkpLHQhPXImJmEuYXBwbHkodSxvLnNsaWNlKHQrMSkpLGUuYXBwbHkodGhpcyx1KX19KHQsaSl9cmV0dXJuIHR9ZnVuY3Rpb24gSyhlLHQsbil7cmV0dXJuIHYmJm4+MSYmKF98fCFyLnNraXBSZWFyZ1tlXSk/TCh0LHIubWV0aG9kUmVhcmdbZV18fHIuYXJ5UmVhcmdbbl0pOnR9ZnVuY3Rpb24gcShlLHQpe2Zvcih2YXIgbj0tMSxyPSh0PUkodCkpLmxlbmd0aCxvPXItMSxhPXgoT2JqZWN0KGUpKSxpPWE7bnVsbCE9aSYmKytuPHI7KXt2YXIgdT10W25dLHM9aVt1XTtudWxsPT1zfHxQKHMpfHxNKHMpfHxOKHMpfHwoaVt1XT14KG49PW8/czpPYmplY3QocykpKSxpPWlbdV19cmV0dXJuIGF9ZnVuY3Rpb24gVih0LG4pe3ZhciBvPXIuYWxpYXNUb1JlYWxbdF18fHQsYT1yLnJlbWFwW29dfHxvLGk9YztyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9Zj9FOk8sdT1mP0VbYV06bixzPUMoQyh7fSxpKSx0KTtyZXR1cm4gZShyLG8sdSxzKX19ZnVuY3Rpb24gVShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg7aWYoIW4pcmV0dXJuIGUoKTtmb3IodmFyIHI9QXJyYXkobik7bi0tOylyW25dPWFyZ3VtZW50c1tuXTt2YXIgbz12PzA6bi0xO3JldHVybiByW29dPXQocltvXSksZS5hcHBseSh2b2lkIDAscil9fWZ1bmN0aW9uIFcoZSx0LG4pe3ZhciBvLGE9ci5hbGlhc1RvUmVhbFtlXXx8ZSxpPXQsbD1GW2FdO3JldHVybiBsP2k9bCh0KTptJiYoci5tdXRhdGUuYXJyYXlbYV0/aT1zKHQsdSk6ci5tdXRhdGUub2JqZWN0W2FdP2k9cyh0LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSh7fSx0KX19KHQpKTpyLm11dGF0ZS5zZXRbYV0mJihpPXModCxxKSkpLEQoQSwoZnVuY3Rpb24oZSl7cmV0dXJuIEQoci5hcnlNZXRob2RbZV0sKGZ1bmN0aW9uKHQpe2lmKGE9PXQpe3ZhciBuPXIubWV0aG9kU3ByZWFkW2FdLHU9biYmbi5hZnRlclJlYXJnO3JldHVybiBvPXU/eihhLEsoYSxpLGUpLGUpOksoYSx6KGEsaSxlKSxlKSxvPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gYnx8aCYmbj4xP1ModCxuKTp0fSgwLG89QihhLG8pLGUpLCExfX0pKSwhb30pKSxvfHwobz1pKSxvPT10JiYobz1iP1MobywxKTpmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLG8uY29udmVydD1WKGEsdCksby5wbGFjZWhvbGRlcj10LnBsYWNlaG9sZGVyPW4sb31pZighZClyZXR1cm4gVyhuLGwsZyk7dmFyIFk9bCxIPVtdO3JldHVybiBEKEEsKGZ1bmN0aW9uKGUpe0Qoci5hcnlNZXRob2RbZV0sKGZ1bmN0aW9uKGUpe3ZhciB0PVlbci5yZW1hcFtlXXx8ZV07dCYmSC5wdXNoKFtlLFcoZSx0LFkpXSl9KSl9KSksRChqKFkpLChmdW5jdGlvbihlKXt2YXIgdD1ZW2VdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXtmb3IodmFyIG49SC5sZW5ndGg7bi0tOylpZihIW25dWzBdPT1lKXJldHVybjt0LmNvbnZlcnQ9VihlLHQpLEgucHVzaChbZSx0XSl9fSkpLEQoSCwoZnVuY3Rpb24oZSl7WVtlWzBdXT1lWzFdfSkpLFkuY29udmVydD1mdW5jdGlvbihlKXtyZXR1cm4gWS5ydW5JbkNvbnRleHQuY29udmVydChlKSh2b2lkIDApfSxZLnBsYWNlaG9sZGVyPVksRChqKFkpLChmdW5jdGlvbihlKXtEKHIucmVhbFRvQWxpYXNbZV18fFtdLChmdW5jdGlvbih0KXtZW3RdPVlbZV19KSl9KSksWX19LHR1Smg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIzc09KIiksbz1uKCJ5NVArIiksYT1uKCJERVdHIiksaT1uKCI4ZC8vIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRTZWxlY3Rpb24oKSxuPWUuZ2V0Q3VycmVudENvbnRlbnQoKSxyPXQuZ2V0QW5jaG9yS2V5KCksaT10LmdldEFuY2hvck9mZnNldCgpLHU9bi5nZXRCbG9ja0ZvcktleShyKS5nZXRUZXh0KClbaV07cmV0dXJuIGEoZSx1P28uZ2V0VVRGMTZMZW5ndGgodSwwKToxKX0pLCJmb3J3YXJkIik7aWYodD09PWUuZ2V0Q3VycmVudENvbnRlbnQoKSlyZXR1cm4gZTt2YXIgbj1lLmdldFNlbGVjdGlvbigpO3JldHVybiByLnB1c2goZSx0LnNldCgic2VsZWN0aW9uQmVmb3JlIixuKSxuLmlzQ29sbGFwc2VkKCk/ImRlbGV0ZS1jaGFyYWN0ZXIiOiJyZW1vdmUtcmFuZ2UiKX19LHUzR0k6ZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLHQsbixyKXt2YXIgbz17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbZSsiIFRhZ2UiLGUrIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOltlKyIgTW9uYXRlIixlKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbZSsiIEphaHJlIixlKyIgSmFocmVuIl19O3JldHVybiB0P29bbl1bMF06b1tuXVsxXX1lLmRlZmluZUxvY2FsZSgiZGUtY2giLHttb250aHM6IkphbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4iLG06dCxtbToiJWQgTWludXRlbiIsaDp0LGhoOiIlZCBTdHVuZGVuIixkOnQsZGQ6dCxNOnQsTU06dCx5OnQseXk6dH0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShuKCJ3ZC9SIikpfSx1NUZxOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCxuLGEpe2lmKCFyLmRlZmF1bHQuaXNNb21lbnQoZSkpcmV0dXJue307Zm9yKHZhciBpPXt9LHU9YT9lLmNsb25lKCk6ZS5jbG9uZSgpLnN1YnRyYWN0KDEsIm1vbnRoIikscz0wO3M8KGE/dDp0KzIpO3MrPTEpe3ZhciBsPVtdLGM9dS5jbG9uZSgpLGY9Yy5jbG9uZSgpLnN0YXJ0T2YoIm1vbnRoIikuaG91cigxMiksZD1jLmNsb25lKCkuZW5kT2YoIm1vbnRoIikuaG91cigxMikscD1mLmNsb25lKCk7aWYobilmb3IodmFyIGg9MDtoPHAud2Vla2RheSgpO2grPTEpe3ZhciB5PXAuY2xvbmUoKS5zdWJ0cmFjdChoKzEsImRheSIpO2wudW5zaGlmdCh5KX1mb3IoO3A8ZDspbC5wdXNoKHAuY2xvbmUoKSkscC5hZGQoMSwiZGF5Iik7aWYobiYmMCE9PXAud2Vla2RheSgpKWZvcih2YXIgbT1wLndlZWtkYXkoKSx2PTA7bTw3O20rPTEsdis9MSl7dmFyIGc9cC5jbG9uZSgpLmFkZCh2LCJkYXkiKTtsLnB1c2goZyl9aVsoMCxvLmRlZmF1bHQpKHUpXT1sLHU9dS5jbG9uZSgpLmFkZCgxLCJtb250aCIpfXJldHVybiBpfTt2YXIgcj1hKG4oIndkL1IiKSksbz1hKG4oImplbmsiKSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSx1Tk90OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicTF0SSIpLG89bi5uKHIpLGE9bigiMTd4OSIpLGk9bi5uKGEpLHU9bigiMklOTiIpLHM9bigiMmlFbSIpLGw9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sYz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07dmFyIGY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50byxuPWUuZXhhY3Qscj1lLnN0cmljdCxhPWUubG9jYXRpb24saT1lLmFjdGl2ZUNsYXNzTmFtZSxmPWUuY2xhc3NOYW1lLGQ9ZS5hY3RpdmVTdHlsZSxwPWUuc3R5bGUsaD1lLmlzQWN0aXZlLHk9ZVsiYXJpYS1jdXJyZW50Il0sbT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufShlLFsidG8iLCJleGFjdCIsInN0cmljdCIsImxvY2F0aW9uIiwiYWN0aXZlQ2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiYWN0aXZlU3R5bGUiLCJzdHlsZSIsImlzQWN0aXZlIiwiYXJpYS1jdXJyZW50Il0pLHY9Im9iamVjdCI9PT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjpjKHQpKT90LnBhdGhuYW1lOnQsZz12JiZ2LnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXXwvXFxdKS9nLCJcXCQxIik7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KHUuYSx7cGF0aDpnLGV4YWN0Om4sc3RyaWN0OnIsbG9jYXRpb246YSxjaGlsZHJlbjpmdW5jdGlvbihlKXt2YXIgbj1lLmxvY2F0aW9uLHI9ZS5tYXRjaCxhPSEhKGg/aChyLG4pOnIpO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChzLmEsbCh7dG86dCxjbGFzc05hbWU6YT9bZixpXS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmpvaW4oIiAiKTpmLHN0eWxlOmE/bCh7fSxwLGQpOnAsImFyaWEtY3VycmVudCI6YSYmeXx8bnVsbH0sbSkpfX0pfTtmLnByb3BUeXBlcz17dG86cy5hLnByb3BUeXBlcy50byxleGFjdDppLmEuYm9vbCxzdHJpY3Q6aS5hLmJvb2wsbG9jYXRpb246aS5hLm9iamVjdCxhY3RpdmVDbGFzc05hbWU6aS5hLnN0cmluZyxjbGFzc05hbWU6aS5hLnN0cmluZyxhY3RpdmVTdHlsZTppLmEub2JqZWN0LHN0eWxlOmkuYS5vYmplY3QsaXNBY3RpdmU6aS5hLmZ1bmMsImFyaWEtY3VycmVudCI6aS5hLm9uZU9mKFsicGFnZSIsInN0ZXAiLCJsb2NhdGlvbiIsImRhdGUiLCJ0aW1lIiwidHJ1ZSJdKX0sZi5kZWZhdWx0UHJvcHM9e2FjdGl2ZUNsYXNzTmFtZToiYWN0aXZlIiwiYXJpYS1jdXJyZW50IjoicGFnZSJ9LHQuYT1mfSx1ZUZzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpKSxyLmZvckVhY2goKGZ1bmN0aW9uKHQpe28oZSx0LG5bdF0pfSkpfXJldHVybiBlfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBhPW4oIjh1UW0iKSxpPW4oIkpMN1QiKSx1PW4oIkxwUUEiKSxzPW4oIlR6VS8iKSxsPW4oIlBGVTgiKSxjPShuKCJxdVMyIiksbigiaE1wZCIpKSxmPW4oIlRsWFEiKSxkPW4oImJOZGoiKSxwPW4oIlJDUjYiKSxoPW4oInJKWTEiKSx5PW4oImN3RlkiKSxtPW4oIkpQY3YiKSx2PW4oIm1GeVYiKSxnPXkoImRyYWZ0X3RyZWVfZGF0YV9zdXBwb3J0IiksYj1tLkxpc3Qsdz1tLk1hcCxfPW0uT3JkZXJlZE1hcCxFPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5rZXkscj1lLnR5cGUsbz1lLmRhdGE7cmV0dXJue3RleHQ6ZS50ZXh0LGRlcHRoOmUuZGVwdGh8fDAsdHlwZTpyfHwidW5zdHlsZWQiLGtleTpufHxoKCksZGF0YTp3KG8pLGNoYXJhY3Rlckxpc3Q6TyhlLHQpfX0sTz1mdW5jdGlvbihlLHQpe3ZhciBuPWUudGV4dCxvPWUuZW50aXR5UmFuZ2VzLGE9ZS5pbmxpbmVTdHlsZVJhbmdlcyxpPW98fFtdO3JldHVybiBmKHAobixhfHxbXSksZChuLGkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShlLmtleSl9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gcih7fSxlLHtrZXk6dFtlLmtleV19KX0pKSkpfSxrPWZ1bmN0aW9uKGUpe3JldHVybiByKHt9LGUse2tleTplLmtleXx8aCgpfSl9LEM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gcih7fSxlLHtwYXJlbnRSZWY6bn0pfSkpO3JldHVybiBlLmNvbmNhdChvLnJldmVyc2UoKSl9LHg9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmJsb2Nrcy5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlLmNoaWxkcmVuKSYmZS5jaGlsZHJlbi5sZW5ndGg+MH0pKSxvPWcmJiFuP2wuZnJvbVJhd1N0YXRlVG9SYXdUcmVlU3RhdGUoZSkuYmxvY2tzOmUuYmxvY2tzO3JldHVybiBnP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGspLnJlZHVjZSgoZnVuY3Rpb24obixvLGEpe0FycmF5LmlzQXJyYXkoby5jaGlsZHJlbil8fHYoITEpO3ZhciB1PW8uY2hpbGRyZW4ubWFwKGspLHM9bmV3IGkocih7fSxFKG8sdCkse3ByZXZTaWJsaW5nOjA9PT1hP251bGw6ZVthLTFdLmtleSxuZXh0U2libGluZzphPT09ZS5sZW5ndGgtMT9udWxsOmVbYSsxXS5rZXksY2hpbGRyZW46Yih1Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSkpKX0pKTtuPW4uc2V0KHMuZ2V0S2V5KCkscyk7Zm9yKHZhciBsPUMoW10sdSxzKTtsLmxlbmd0aD4wOyl7dmFyIGM9bC5wb3AoKSxmPWMucGFyZW50UmVmLGQ9Zi5nZXRDaGlsZEtleXMoKSxwPWQuaW5kZXhPZihjLmtleSksaD1BcnJheS5pc0FycmF5KGMuY2hpbGRyZW4pO2lmKCFoKXtofHx2KCExKTticmVha312YXIgeT1jLmNoaWxkcmVuLm1hcChrKSxtPW5ldyBpKHIoe30sRShjLHQpLHtwYXJlbnQ6Zi5nZXRLZXkoKSxjaGlsZHJlbjpiKHkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KSkpLHByZXZTaWJsaW5nOjA9PT1wP251bGw6ZC5nZXQocC0xKSxuZXh0U2libGluZzpwPT09ZC5zaXplLTE/bnVsbDpkLmdldChwKzEpfSkpO249bi5zZXQobS5nZXRLZXkoKSxtKSxsPUMobCx5LG0pfXJldHVybiBufSksXygpKX0obyx0KTpmdW5jdGlvbihlLHQpe3JldHVybiBfKGUubWFwKChmdW5jdGlvbihlKXt2YXIgbj1uZXcgYShFKGUsdCkpO3JldHVybltuLmdldEtleSgpLG5dfSkpKX0obj9sLmZyb21SYXdUcmVlU3RhdGVUb1Jhd1N0YXRlKGUpLmJsb2NrczpvLHQpfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7QXJyYXkuaXNBcnJheShlLmJsb2Nrcyl8fHYoITEpO3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuZW50aXR5TWFwLG49e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPXRbZV0sbz1yLnR5cGUsYT1yLm11dGFiaWxpdHksaT1yLmRhdGE7bltlXT1zLl9fY3JlYXRlKG8sYSxpfHx7fSl9KSksbn0oZSksbj14KGUsdCkscj1uLmlzRW1wdHkoKT9uZXcgYzpjLmNyZWF0ZUVtcHR5KG4uZmlyc3QoKS5nZXRLZXkoKSk7cmV0dXJuIG5ldyB1KHtibG9ja01hcDpuLGVudGl0eU1hcDp0LHNlbGVjdGlvbkJlZm9yZTpyLHNlbGVjdGlvbkFmdGVyOnJ9KX19LHVqdVU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIzc09KIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0U2VsZWN0aW9uKCksbj10LmdldFN0YXJ0S2V5KCk7cmV0dXJuIHIuc2V0KGUse3NlbGVjdGlvbjp0Lm1lcmdlKHthbmNob3JLZXk6bixhbmNob3JPZmZzZXQ6MCxmb2N1c0tleTpuLGZvY3VzT2Zmc2V0OjAsaXNCYWNrd2FyZDohMX0pLGZvcmNlU2VsZWN0aW9uOiEwfSl9fSx2ODN5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZnlSeSIpLG89bigiWWVWZSIpLGE9bigibEZKbiIpLGk9bigiODRsYyIpLHU9bigiOHVRbSIpLHM9bigiTHBRQSIpLGw9bigickFWOSIpLGM9bigiMFRSRCIpLGY9bigiNnR5eCIpLGQ9bigiRHRoWSIpLHA9bigiVHpVLyIpLGg9bigiZnlPWSIpLHk9bigicW5reSIpLG09bigiM3NPSiIpLHY9bigiczhyYSIpLGc9bigiN1B1cyIpLGI9bigiTng0KyIpLHc9bigiaE1wZCIpLF89bigiL3krbCIpLEU9bigidWVGcyIpLE89bigickpZMSIpLGs9bigiQXlCNSIpLEM9bigienhOKyIpLHg9e0VkaXRvcjpmLEVkaXRvckJsb2NrOmQsRWRpdG9yU3RhdGU6bSxDb21wb3NpdGVEZWNvcmF0b3I6aSxFbnRpdHk6cCxFbnRpdHlJbnN0YW5jZTp5LEJsb2NrTWFwQnVpbGRlcjpvLENoYXJhY3Rlck1ldGFkYXRhOmEsQ29udGVudEJsb2NrOnUsQ29udGVudFN0YXRlOnMsUmF3RHJhZnRDb250ZW50U3RhdGU6ZyxTZWxlY3Rpb25TdGF0ZTp3LEF0b21pY0Jsb2NrVXRpbHM6cixLZXlCaW5kaW5nVXRpbDp2LE1vZGlmaWVyOmgsUmljaFV0aWxzOmIsRGVmYXVsdERyYWZ0QmxvY2tSZW5kZXJNYXA6bCxEZWZhdWx0RHJhZnRJbmxpbmVTdHlsZTpjLGNvbnZlcnRGcm9tSFRNTDpuKCIxcXEyIiksY29udmVydEZyb21SYXc6RSxjb252ZXJ0VG9SYXc6XyxnZW5LZXk6TyxnZXREZWZhdWx0S2V5QmluZGluZzprLGdldFZpc2libGVTZWxlY3Rpb25SZWN0OkN9O2UuZXhwb3J0cz14fSx2UkdKOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJBcUNMIik7ZS5leHBvcnRzPXAsZS5leHBvcnRzLnBhcnNlPWEsZS5leHBvcnRzLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShhKGUsdCkpfSxlLmV4cG9ydHMudG9rZW5zVG9GdW5jdGlvbj11LGUuZXhwb3J0cy50b2tlbnNUb1JlZ0V4cD1kO3ZhciBvPW5ldyBSZWdFeHAoWyIoXFxcXC4pIiwiKFtcXC8uXSk/KD86KD86XFw6KFxcdyspKD86XFwoKCg/OlxcXFwufFteXFxcXCgpXSkrKVxcKSk/fFxcKCgoPzpcXFxcLnxbXlxcXFwoKV0pKylcXCkpKFsrKj9dKT98KFxcKikpIl0uam9pbigifCIpLCJnIik7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgbixyPVtdLGE9MCxpPTAsdT0iIixjPXQmJnQuZGVsaW1pdGVyfHwiLyI7bnVsbCE9KG49by5leGVjKGUpKTspe3ZhciBmPW5bMF0sZD1uWzFdLHA9bi5pbmRleDtpZih1Kz1lLnNsaWNlKGkscCksaT1wK2YubGVuZ3RoLGQpdSs9ZFsxXTtlbHNle3ZhciBoPWVbaV0seT1uWzJdLG09blszXSx2PW5bNF0sZz1uWzVdLGI9bls2XSx3PW5bN107dSYmKHIucHVzaCh1KSx1PSIiKTt2YXIgXz1udWxsIT15JiZudWxsIT1oJiZoIT09eSxFPSIrIj09PWJ8fCIqIj09PWIsTz0iPyI9PT1ifHwiKiI9PT1iLGs9blsyXXx8YyxDPXZ8fGc7ci5wdXNoKHtuYW1lOm18fGErKyxwcmVmaXg6eXx8IiIsZGVsaW1pdGVyOmssb3B0aW9uYWw6TyxyZXBlYXQ6RSxwYXJ0aWFsOl8sYXN0ZXJpc2s6ISF3LHBhdHRlcm46Qz9sKEMpOnc/Ii4qIjoiW14iK3MoaykrIl0rPyJ9KX19cmV0dXJuIGk8ZS5sZW5ndGgmJih1Kz1lLnN1YnN0cihpKSksdSYmci5wdXNoKHUpLHJ9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZW5jb2RlVVJJKGUpLnJlcGxhY2UoL1tcLz8jXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iJSIrZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSkpfWZ1bmN0aW9uIHUoZSl7Zm9yKHZhciB0PW5ldyBBcnJheShlLmxlbmd0aCksbj0wO248ZS5sZW5ndGg7bisrKSJvYmplY3QiPT10eXBlb2YgZVtuXSYmKHRbbl09bmV3IFJlZ0V4cCgiXig/OiIrZVtuXS5wYXR0ZXJuKyIpJCIpKTtyZXR1cm4gZnVuY3Rpb24obixvKXtmb3IodmFyIGE9IiIsdT1ufHx7fSxzPShvfHx7fSkucHJldHR5P2k6ZW5jb2RlVVJJQ29tcG9uZW50LGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9ZVtsXTtpZigic3RyaW5nIiE9dHlwZW9mIGMpe3ZhciBmLGQ9dVtjLm5hbWVdO2lmKG51bGw9PWQpe2lmKGMub3B0aW9uYWwpe2MucGFydGlhbCYmKGErPWMucHJlZml4KTtjb250aW51ZX10aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCAiJytjLm5hbWUrJyIgdG8gYmUgZGVmaW5lZCcpfWlmKHIoZCkpe2lmKCFjLnJlcGVhdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCAiJytjLm5hbWUrJyIgdG8gbm90IHJlcGVhdCwgYnV0IHJlY2VpdmVkIGAnK0pTT04uc3RyaW5naWZ5KGQpKyJgIik7aWYoMD09PWQubGVuZ3RoKXtpZihjLm9wdGlvbmFsKWNvbnRpbnVlO3Rocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkICInK2MubmFtZSsnIiB0byBub3QgYmUgZW1wdHknKX1mb3IodmFyIHA9MDtwPGQubGVuZ3RoO3ArKyl7aWYoZj1zKGRbcF0pLCF0W2xdLnRlc3QoZikpdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYWxsICInK2MubmFtZSsnIiB0byBtYXRjaCAiJytjLnBhdHRlcm4rJyIsIGJ1dCByZWNlaXZlZCBgJytKU09OLnN0cmluZ2lmeShmKSsiYCIpO2ErPSgwPT09cD9jLnByZWZpeDpjLmRlbGltaXRlcikrZn19ZWxzZXtpZihmPWMuYXN0ZXJpc2s/ZW5jb2RlVVJJKGQpLnJlcGxhY2UoL1s/I10vZywoZnVuY3Rpb24oZSl7cmV0dXJuIiUiK2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0pKTpzKGQpLCF0W2xdLnRlc3QoZikpdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgIicrYy5uYW1lKyciIHRvIG1hdGNoICInK2MucGF0dGVybisnIiwgYnV0IHJlY2VpdmVkICInK2YrJyInKTthKz1jLnByZWZpeCtmfX1lbHNlIGErPWN9cmV0dXJuIGF9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFsuKyo/PV4hOiR7fSgpW1xdfFwvXFxdKS9nLCJcXCQxIil9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS5yZXBsYWNlKC8oWz0hOiRcLygpXSkvZywiXFwkMSIpfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gZS5rZXlzPXQsZX1mdW5jdGlvbiBmKGUpe3JldHVybiBlLnNlbnNpdGl2ZT8iIjoiaSJ9ZnVuY3Rpb24gZChlLHQsbil7cih0KXx8KG49dHx8bix0PVtdKTtmb3IodmFyIG89KG49bnx8e30pLnN0cmljdCxhPSExIT09bi5lbmQsaT0iIix1PTA7dTxlLmxlbmd0aDt1Kyspe3ZhciBsPWVbdV07aWYoInN0cmluZyI9PXR5cGVvZiBsKWkrPXMobCk7ZWxzZXt2YXIgZD1zKGwucHJlZml4KSxwPSIoPzoiK2wucGF0dGVybisiKSI7dC5wdXNoKGwpLGwucmVwZWF0JiYocCs9Iig/OiIrZCtwKyIpKiIpLGkrPXA9bC5vcHRpb25hbD9sLnBhcnRpYWw/ZCsiKCIrcCsiKT8iOiIoPzoiK2QrIigiK3ArIikpPyI6ZCsiKCIrcCsiKSJ9fXZhciBoPXMobi5kZWxpbWl0ZXJ8fCIvIikseT1pLnNsaWNlKC1oLmxlbmd0aCk9PT1oO3JldHVybiBvfHwoaT0oeT9pLnNsaWNlKDAsLWgubGVuZ3RoKTppKSsiKD86IitoKyIoPz0kKSk/IiksaSs9YT8iJCI6byYmeT8iIjoiKD89IitoKyJ8JCkiLGMobmV3IFJlZ0V4cCgiXiIraSxmKG4pKSx0KX1mdW5jdGlvbiBwKGUsdCxuKXtyZXR1cm4gcih0KXx8KG49dHx8bix0PVtdKSxuPW58fHt9LGUgaW5zdGFuY2VvZiBSZWdFeHA/ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNvdXJjZS5tYXRjaCgvXCgoPyFcPykvZyk7aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl0LnB1c2goe25hbWU6cixwcmVmaXg6bnVsbCxkZWxpbWl0ZXI6bnVsbCxvcHRpb25hbDohMSxyZXBlYXQ6ITEscGFydGlhbDohMSxhc3RlcmlzazohMSxwYXR0ZXJuOm51bGx9KTtyZXR1cm4gYyhlLHQpfShlLHQpOnIoZSk/ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXSxvPTA7bzxlLmxlbmd0aDtvKyspci5wdXNoKHAoZVtvXSx0LG4pLnNvdXJjZSk7cmV0dXJuIGMobmV3IFJlZ0V4cCgiKD86IityLmpvaW4oInwiKSsiKSIsZihuKSksdCl9KGUsdCxuKTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGQoYShlLG4pLHQsbil9KGUsdCxuKX19LCJ2VitHIjpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0iSW50ZXJhY3Qgd2l0aCB0aGUgY2FsZW5kYXIgYW5kIGFkZCB0aGUgY2hlY2staW4gZGF0ZSBmb3IgeW91ciB0cmlwLiIscj0iTW92ZSBiYWNrd2FyZCB0byBzd2l0Y2ggdG8gdGhlIHByZXZpb3VzIG1vbnRoIixvPSJNb3ZlIGZvcndhcmQgdG8gc3dpdGNoIHRvIHRoZSBuZXh0IG1vbnRoIixhPSJwYWdlIHVwIGFuZCBwYWdlIGRvd24ga2V5cyIsaT0iSG9tZSBhbmQgZW5kIGtleXMiLHU9IkVzY2FwZSBrZXkiLHM9Ik1vdmUgYmFja3dhcmQgKGxlZnQpIGFuZCBmb3J3YXJkIChyaWdodCkgYnkgb25lIGRheSIsbD0iTW92ZSBiYWNrd2FyZCAodXApIGFuZCBmb3J3YXJkIChkb3duKSBieSBvbmUgd2VlayIsYz0iUmV0dXJuIHRvIHRoZSBkYXRlIGlucHV0IGZpZWxkIixmPSJQcmVzcyB0aGUgZG93biBhcnJvdyBrZXkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgY2FsZW5kYXIgYW5kXG4gIHNlbGVjdCBhIGRhdGUuIFByZXNzIHRoZSBxdWVzdGlvbiBtYXJrIGtleSB0byBnZXQgdGhlIGtleWJvYXJkIHNob3J0Y3V0cyBmb3IgY2hhbmdpbmcgZGF0ZXMuIixkPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0ZTtyZXR1cm4iQ2hvb3NlICIrU3RyaW5nKHQpKyIgYXMgeW91ciBjaGVjay1pbiBkYXRlLiBJdCdzIGF2YWlsYWJsZS4ifSxwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0ZTtyZXR1cm4iQ2hvb3NlICIrU3RyaW5nKHQpKyIgYXMgeW91ciBjaGVjay1vdXQgZGF0ZS4gSXQncyBhdmFpbGFibGUuIn0saD1mdW5jdGlvbihlKXtyZXR1cm4gZS5kYXRlfSx5PWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0ZTtyZXR1cm4iTm90IGF2YWlsYWJsZS4gIitTdHJpbmcodCl9O3QuZGVmYXVsdD17Y2FsZW5kYXJMYWJlbDoiQ2FsZW5kYXIiLGNsb3NlRGF0ZVBpY2tlcjoiQ2xvc2UiLGZvY3VzU3RhcnREYXRlOm4sY2xlYXJEYXRlOiJDbGVhciBEYXRlIixjbGVhckRhdGVzOiJDbGVhciBEYXRlcyIsanVtcFRvUHJldk1vbnRoOnIsanVtcFRvTmV4dE1vbnRoOm8sa2V5Ym9hcmRTaG9ydGN1dHM6IktleWJvYXJkIFNob3J0Y3V0cyIsc2hvd0tleWJvYXJkU2hvcnRjdXRzUGFuZWw6Ik9wZW4gdGhlIGtleWJvYXJkIHNob3J0Y3V0cyBwYW5lbCIsaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWw6IkNsb3NlIHRoZSBzaG9ydGN1dHMgcGFuZWwiLG9wZW5UaGlzUGFuZWw6Ik9wZW4gdGhpcyBwYW5lbCIsZW50ZXJLZXk6IkVudGVyIGtleSIsbGVmdEFycm93UmlnaHRBcnJvdzoiUmlnaHQgYW5kIGxlZnQgYXJyb3cga2V5cyIsdXBBcnJvd0Rvd25BcnJvdzoidXAgYW5kIGRvd24gYXJyb3cga2V5cyIscGFnZVVwUGFnZURvd246YSxob21lRW5kOmksZXNjYXBlOnUscXVlc3Rpb25NYXJrOiJRdWVzdGlvbiBtYXJrIixzZWxlY3RGb2N1c2VkRGF0ZToiU2VsZWN0IHRoZSBkYXRlIGluIGZvY3VzIixtb3ZlRm9jdXNCeU9uZURheTpzLG1vdmVGb2N1c0J5T25lV2VlazpsLG1vdmVGb2N1c0J5T25lTW9udGg6IlN3aXRjaCBtb250aHMiLG1vdmVGb2N1c3RvU3RhcnRBbmRFbmRPZldlZWs6IkdvIHRvIHRoZSBmaXJzdCBvciBsYXN0IGRheSBvZiBhIHdlZWsiLHJldHVybkZvY3VzVG9JbnB1dDpjLGtleWJvYXJkTmF2aWdhdGlvbkluc3RydWN0aW9uczpmLGNob29zZUF2YWlsYWJsZVN0YXJ0RGF0ZTpkLGNob29zZUF2YWlsYWJsZUVuZERhdGU6cCxkYXRlSXNVbmF2YWlsYWJsZTp5fTt0LkRhdGVSYW5nZVBpY2tlclBocmFzZXM9e2NhbGVuZGFyTGFiZWw6IkNhbGVuZGFyIixjbG9zZURhdGVQaWNrZXI6IkNsb3NlIixjbGVhckRhdGVzOiJDbGVhciBEYXRlcyIsZm9jdXNTdGFydERhdGU6bixqdW1wVG9QcmV2TW9udGg6cixqdW1wVG9OZXh0TW9udGg6byxrZXlib2FyZFNob3J0Y3V0czoiS2V5Ym9hcmQgU2hvcnRjdXRzIixzaG93S2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDoiT3BlbiB0aGUga2V5Ym9hcmQgc2hvcnRjdXRzIHBhbmVsIixoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDoiQ2xvc2UgdGhlIHNob3J0Y3V0cyBwYW5lbCIsb3BlblRoaXNQYW5lbDoiT3BlbiB0aGlzIHBhbmVsIixlbnRlcktleToiRW50ZXIga2V5IixsZWZ0QXJyb3dSaWdodEFycm93OiJSaWdodCBhbmQgbGVmdCBhcnJvdyBrZXlzIix1cEFycm93RG93bkFycm93OiJ1cCBhbmQgZG93biBhcnJvdyBrZXlzIixwYWdlVXBQYWdlRG93bjphLGhvbWVFbmQ6aSxlc2NhcGU6dSxxdWVzdGlvbk1hcms6IlF1ZXN0aW9uIG1hcmsiLHNlbGVjdEZvY3VzZWREYXRlOiJTZWxlY3QgdGhlIGRhdGUgaW4gZm9jdXMiLG1vdmVGb2N1c0J5T25lRGF5OnMsbW92ZUZvY3VzQnlPbmVXZWVrOmwsbW92ZUZvY3VzQnlPbmVNb250aDoiU3dpdGNoIG1vbnRocyIsbW92ZUZvY3VzdG9TdGFydEFuZEVuZE9mV2VlazoiR28gdG8gdGhlIGZpcnN0IG9yIGxhc3QgZGF5IG9mIGEgd2VlayIscmV0dXJuRm9jdXNUb0lucHV0OmMsa2V5Ym9hcmROYXZpZ2F0aW9uSW5zdHJ1Y3Rpb25zOmYsY2hvb3NlQXZhaWxhYmxlU3RhcnREYXRlOmQsY2hvb3NlQXZhaWxhYmxlRW5kRGF0ZTpwLGRhdGVJc1VuYXZhaWxhYmxlOnl9LHQuRGF0ZVJhbmdlUGlja2VySW5wdXRQaHJhc2VzPXtmb2N1c1N0YXJ0RGF0ZTpuLGNsZWFyRGF0ZXM6IkNsZWFyIERhdGVzIixrZXlib2FyZE5hdmlnYXRpb25JbnN0cnVjdGlvbnM6Zn0sdC5TaW5nbGVEYXRlUGlja2VyUGhyYXNlcz17Y2FsZW5kYXJMYWJlbDoiQ2FsZW5kYXIiLGNsb3NlRGF0ZVBpY2tlcjoiQ2xvc2UiLGNsZWFyRGF0ZToiQ2xlYXIgRGF0ZSIsanVtcFRvUHJldk1vbnRoOnIsanVtcFRvTmV4dE1vbnRoOm8sa2V5Ym9hcmRTaG9ydGN1dHM6IktleWJvYXJkIFNob3J0Y3V0cyIsc2hvd0tleWJvYXJkU2hvcnRjdXRzUGFuZWw6Ik9wZW4gdGhlIGtleWJvYXJkIHNob3J0Y3V0cyBwYW5lbCIsaGlkZUtleWJvYXJkU2hvcnRjdXRzUGFuZWw6IkNsb3NlIHRoZSBzaG9ydGN1dHMgcGFuZWwiLG9wZW5UaGlzUGFuZWw6Ik9wZW4gdGhpcyBwYW5lbCIsZW50ZXJLZXk6IkVudGVyIGtleSIsbGVmdEFycm93UmlnaHRBcnJvdzoiUmlnaHQgYW5kIGxlZnQgYXJyb3cga2V5cyIsdXBBcnJvd0Rvd25BcnJvdzoidXAgYW5kIGRvd24gYXJyb3cga2V5cyIscGFnZVVwUGFnZURvd246YSxob21lRW5kOmksZXNjYXBlOnUscXVlc3Rpb25NYXJrOiJRdWVzdGlvbiBtYXJrIixzZWxlY3RGb2N1c2VkRGF0ZToiU2VsZWN0IHRoZSBkYXRlIGluIGZvY3VzIixtb3ZlRm9jdXNCeU9uZURheTpzLG1vdmVGb2N1c0J5T25lV2VlazpsLG1vdmVGb2N1c0J5T25lTW9udGg6IlN3aXRjaCBtb250aHMiLG1vdmVGb2N1c3RvU3RhcnRBbmRFbmRPZldlZWs6IkdvIHRvIHRoZSBmaXJzdCBvciBsYXN0IGRheSBvZiBhIHdlZWsiLHJldHVybkZvY3VzVG9JbnB1dDpjLGtleWJvYXJkTmF2aWdhdGlvbkluc3RydWN0aW9uczpmLGNob29zZUF2YWlsYWJsZURhdGU6aCxkYXRlSXNVbmF2YWlsYWJsZTp5fSx0LlNpbmdsZURhdGVQaWNrZXJJbnB1dFBocmFzZXM9e2NsZWFyRGF0ZToiQ2xlYXIgRGF0ZSIsa2V5Ym9hcmROYXZpZ2F0aW9uSW5zdHJ1Y3Rpb25zOmZ9LHQuRGF5UGlja2VyUGhyYXNlcz17Y2FsZW5kYXJMYWJlbDoiQ2FsZW5kYXIiLGp1bXBUb1ByZXZNb250aDpyLGp1bXBUb05leHRNb250aDpvLGtleWJvYXJkU2hvcnRjdXRzOiJLZXlib2FyZCBTaG9ydGN1dHMiLHNob3dLZXlib2FyZFNob3J0Y3V0c1BhbmVsOiJPcGVuIHRoZSBrZXlib2FyZCBzaG9ydGN1dHMgcGFuZWwiLGhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsOiJDbG9zZSB0aGUgc2hvcnRjdXRzIHBhbmVsIixvcGVuVGhpc1BhbmVsOiJPcGVuIHRoaXMgcGFuZWwiLGVudGVyS2V5OiJFbnRlciBrZXkiLGxlZnRBcnJvd1JpZ2h0QXJyb3c6IlJpZ2h0IGFuZCBsZWZ0IGFycm93IGtleXMiLHVwQXJyb3dEb3duQXJyb3c6InVwIGFuZCBkb3duIGFycm93IGtleXMiLHBhZ2VVcFBhZ2VEb3duOmEsaG9tZUVuZDppLGVzY2FwZTp1LHF1ZXN0aW9uTWFyazoiUXVlc3Rpb24gbWFyayIsc2VsZWN0Rm9jdXNlZERhdGU6IlNlbGVjdCB0aGUgZGF0ZSBpbiBmb2N1cyIsbW92ZUZvY3VzQnlPbmVEYXk6cyxtb3ZlRm9jdXNCeU9uZVdlZWs6bCxtb3ZlRm9jdXNCeU9uZU1vbnRoOiJTd2l0Y2ggbW9udGhzIixtb3ZlRm9jdXN0b1N0YXJ0QW5kRW5kT2ZXZWVrOiJHbyB0byB0aGUgZmlyc3Qgb3IgbGFzdCBkYXkgb2YgYSB3ZWVrIixyZXR1cm5Gb2N1c1RvSW5wdXQ6YyxjaG9vc2VBdmFpbGFibGVTdGFydERhdGU6ZCxjaG9vc2VBdmFpbGFibGVFbmREYXRlOnAsY2hvb3NlQXZhaWxhYmxlRGF0ZTpoLGRhdGVJc1VuYXZhaWxhYmxlOnl9LHQuRGF5UGlja2VyS2V5Ym9hcmRTaG9ydGN1dHNQaHJhc2VzPXtrZXlib2FyZFNob3J0Y3V0czoiS2V5Ym9hcmQgU2hvcnRjdXRzIixzaG93S2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDoiT3BlbiB0aGUga2V5Ym9hcmQgc2hvcnRjdXRzIHBhbmVsIixoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDoiQ2xvc2UgdGhlIHNob3J0Y3V0cyBwYW5lbCIsb3BlblRoaXNQYW5lbDoiT3BlbiB0aGlzIHBhbmVsIixlbnRlcktleToiRW50ZXIga2V5IixsZWZ0QXJyb3dSaWdodEFycm93OiJSaWdodCBhbmQgbGVmdCBhcnJvdyBrZXlzIix1cEFycm93RG93bkFycm93OiJ1cCBhbmQgZG93biBhcnJvdyBrZXlzIixwYWdlVXBQYWdlRG93bjphLGhvbWVFbmQ6aSxlc2NhcGU6dSxxdWVzdGlvbk1hcms6IlF1ZXN0aW9uIG1hcmsiLHNlbGVjdEZvY3VzZWREYXRlOiJTZWxlY3QgdGhlIGRhdGUgaW4gZm9jdXMiLG1vdmVGb2N1c0J5T25lRGF5OnMsbW92ZUZvY3VzQnlPbmVXZWVrOmwsbW92ZUZvY3VzQnlPbmVNb250aDoiU3dpdGNoIG1vbnRocyIsbW92ZUZvY3VzdG9TdGFydEFuZEVuZE9mV2VlazoiR28gdG8gdGhlIGZpcnN0IG9yIGxhc3QgZGF5IG9mIGEgd2VlayIscmV0dXJuRm9jdXNUb0lucHV0OmN9LHQuRGF5UGlja2VyTmF2aWdhdGlvblBocmFzZXM9e2p1bXBUb1ByZXZNb250aDpyLGp1bXBUb05leHRNb250aDpvfSx0LkNhbGVuZGFyRGF5UGhyYXNlcz17Y2hvb3NlQXZhaWxhYmxlRGF0ZTpoLGRhdGVJc1VuYXZhaWxhYmxlOnl9fSx2WXd1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigibEZKbiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixvKXtmb3IodmFyIGE9ZS5nZXRDaGFyYWN0ZXJMaXN0KCk7dDxuOylhPWEuc2V0KHQsci5hcHBseUVudGl0eShhLmdldCh0KSxvKSksdCsrO3JldHVybiBlLnNldCgiY2hhcmFjdGVyTGlzdCIsYSl9fSx2Y05YOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiU0Y1cSIpLG89bigiM3NPSiIpLGE9bigia1dqVCIpLGk9bigiOGQvLyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pKGUsKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0U2VsZWN0aW9uKCksbj10LmdldFN0YXJ0T2Zmc2V0KCk7aWYoMD09PW4pcmV0dXJuIGEoZSwxKTt2YXIgbz10LmdldFN0YXJ0S2V5KCksaT1lLmdldEN1cnJlbnRDb250ZW50KCkuZ2V0QmxvY2tGb3JLZXkobykuZ2V0VGV4dCgpLnNsaWNlKDAsbiksdT1yLmdldEJhY2t3YXJkKGkpO3JldHVybiBhKGUsdS5sZW5ndGh8fDEpfSksImJhY2t3YXJkIik7cmV0dXJuIHQ9PT1lLmdldEN1cnJlbnRDb250ZW50KCk/ZTpvLnB1c2goZSx0LCJyZW1vdmUtcmFuZ2UiKX19LHZpUk86ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJNZ3pXIiksbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGE9bz9TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iik6NjAxMDMsaT1vP1N5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpOjYwMTA2LHU9bz9TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpOjYwMTA3LHM9bz9TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpOjYwMTA4LGw9bz9TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpOjYwMTE0LGM9bz9TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpOjYwMTA5LGY9bz9TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0Iik6NjAxMTAsZD1vP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIscD1vP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIik6NjAxMTM7byYmU3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpO3ZhciBoPW8/U3ltYm9sLmZvcigicmVhY3QubWVtbyIpOjYwMTE1LHk9bz9TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iik6NjAxMTY7byYmU3ltYm9sLmZvcigicmVhY3QuZnVuZGFtZW50YWwiKSxvJiZTeW1ib2wuZm9yKCJyZWFjdC5yZXNwb25kZXIiKSxvJiZTeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpO3ZhciBtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiB2KGUpe2Zvcih2YXIgdD0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIit0KyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIGc9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LGI9e307ZnVuY3Rpb24gdyhlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1iLHRoaXMudXBkYXRlcj1ufHxnfWZ1bmN0aW9uIF8oKXt9ZnVuY3Rpb24gRShlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1iLHRoaXMudXBkYXRlcj1ufHxnfXcucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sdy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT1lKXRocm93IEVycm9yKHYoODUpKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSx0LCJzZXRTdGF0ZSIpfSx3LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX0sXy5wcm90b3R5cGU9dy5wcm90b3R5cGU7dmFyIE89RS5wcm90b3R5cGU9bmV3IF87Ty5jb25zdHJ1Y3Rvcj1FLHIoTyx3LnByb3RvdHlwZSksTy5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgaz17Y3VycmVudDpudWxsfSxDPXtjdXJyZW50Om51bGx9LHg9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxTPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gRChlLHQsbil7dmFyIHIsbz17fSxpPW51bGwsdT1udWxsO2lmKG51bGwhPXQpZm9yKHIgaW4gdm9pZCAwIT09dC5yZWYmJih1PXQucmVmKSx2b2lkIDAhPT10LmtleSYmKGk9IiIrdC5rZXkpLHQpeC5jYWxsKHQscikmJiFTLmhhc093blByb3BlcnR5KHIpJiYob1tyXT10W3JdKTt2YXIgcz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXMpby5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxzKXtmb3IodmFyIGw9QXJyYXkocyksYz0wO2M8cztjKyspbFtjXT1hcmd1bWVudHNbYysyXTtvLmNoaWxkcmVuPWx9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gcz1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1vW3JdJiYob1tyXT1zW3JdKTtyZXR1cm57JCR0eXBlb2Y6YSx0eXBlOmUsa2V5OmkscmVmOnUscHJvcHM6byxfb3duZXI6Qy5jdXJyZW50fX1mdW5jdGlvbiBUKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1hfXZhciBNPS9cLysvZyxQPVtdO2Z1bmN0aW9uIE4oZSx0LG4scil7aWYoUC5sZW5ndGgpe3ZhciBvPVAucG9wKCk7cmV0dXJuIG8ucmVzdWx0PWUsby5rZXlQcmVmaXg9dCxvLmZ1bmM9bixvLmNvbnRleHQ9cixvLmNvdW50PTAsb31yZXR1cm57cmVzdWx0OmUsa2V5UHJlZml4OnQsZnVuYzpuLGNvbnRleHQ6cixjb3VudDowfX1mdW5jdGlvbiBqKGUpe2UucmVzdWx0PW51bGwsZS5rZXlQcmVmaXg9bnVsbCxlLmZ1bmM9bnVsbCxlLmNvbnRleHQ9bnVsbCxlLmNvdW50PTAsMTA+UC5sZW5ndGgmJlAucHVzaChlKX1mdW5jdGlvbiBMKGUsdCxuKXtyZXR1cm4gbnVsbD09ZT8wOmZ1bmN0aW9uIGUodCxuLHIsbyl7dmFyIHU9dHlwZW9mIHQ7InVuZGVmaW5lZCIhPT11JiYiYm9vbGVhbiIhPT11fHwodD1udWxsKTt2YXIgcz0hMTtpZihudWxsPT09dClzPSEwO2Vsc2Ugc3dpdGNoKHUpe2Nhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6cz0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgYTpjYXNlIGk6cz0hMH19aWYocylyZXR1cm4gcihvLHQsIiI9PT1uPyIuIitSKHQsMCk6biksMTtpZihzPTAsbj0iIj09PW4/Ii4iOm4rIjoiLEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBjPW4rUih1PXRbbF0sbCk7cys9ZSh1LGMscixvKX1lbHNlIGlmKG51bGw9PT10fHwib2JqZWN0IiE9dHlwZW9mIHQ/Yz1udWxsOmM9ImZ1bmN0aW9uIj09dHlwZW9mKGM9bSYmdFttXXx8dFsiQEBpdGVyYXRvciJdKT9jOm51bGwsImZ1bmN0aW9uIj09dHlwZW9mIGMpZm9yKHQ9Yy5jYWxsKHQpLGw9MDshKHU9dC5uZXh0KCkpLmRvbmU7KXMrPWUodT11LnZhbHVlLGM9bitSKHUsbCsrKSxyLG8pO2Vsc2UgaWYoIm9iamVjdCI9PT11KXRocm93IHI9IiIrdCxFcnJvcih2KDMxLCJbb2JqZWN0IE9iamVjdF0iPT09cj8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyh0KS5qb2luKCIsICIpKyJ9IjpyLCIiKSk7cmV0dXJuIHN9KGUsIiIsdCxuKX1mdW5jdGlvbiBSKGUsdCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmbnVsbCE9ZS5rZXk/ZnVuY3Rpb24oZSl7dmFyIHQ9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK2UpLnJlcGxhY2UoL1s9Ol0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9KGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBJKGUsdCl7ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKX1mdW5jdGlvbiBBKGUsdCxuKXt2YXIgcj1lLnJlc3VsdCxvPWUua2V5UHJlZml4O2U9ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKSxBcnJheS5pc0FycmF5KGUpP0YoZSxyLG4sKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpOm51bGwhPWUmJihUKGUpJiYoZT1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjphLHR5cGU6ZS50eXBlLGtleTp0LHJlZjplLnJlZixwcm9wczplLnByb3BzLF9vd25lcjplLl9vd25lcn19KGUsbysoIWUua2V5fHx0JiZ0LmtleT09PWUua2V5PyIiOigiIitlLmtleSkucmVwbGFjZShNLCIkJi8iKSsiLyIpK24pKSxyLnB1c2goZSkpfWZ1bmN0aW9uIEYoZSx0LG4scixvKXt2YXIgYT0iIjtudWxsIT1uJiYoYT0oIiIrbikucmVwbGFjZShNLCIkJi8iKSsiLyIpLEwoZSxBLHQ9Tih0LGEscixvKSksaih0KX1mdW5jdGlvbiBCKCl7dmFyIGU9ay5jdXJyZW50O2lmKG51bGw9PT1lKXRocm93IEVycm9yKHYoMzIxKSk7cmV0dXJuIGV9dmFyIHo9e0NoaWxkcmVuOnttYXA6ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9W107cmV0dXJuIEYoZSxyLG51bGwsdCxuKSxyfSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO0woZSxJLHQ9TihudWxsLG51bGwsdCxuKSksaih0KX0sY291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pLG51bGwpfSx0b0FycmF5OmZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBGKGUsdCxudWxsLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKSx0fSxvbmx5OmZ1bmN0aW9uKGUpe2lmKCFUKGUpKXRocm93IEVycm9yKHYoMTQzKSk7cmV0dXJuIGV9fSxjcmVhdGVSZWY6ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sQ29tcG9uZW50OncsUHVyZUNvbXBvbmVudDpFLGNyZWF0ZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmYsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmMsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSxmb3J3YXJkUmVmOmZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpkLHJlbmRlcjplfX0sbGF6eTpmdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6eSxfY3RvcjplLF9zdGF0dXM6LTEsX3Jlc3VsdDpudWxsfX0sbWVtbzpmdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpoLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQigpLnVzZUNhbGxiYWNrKGUsdCl9LHVzZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQigpLnVzZUNvbnRleHQoZSx0KX0sdXNlRWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEIoKS51c2VFZmZlY3QoZSx0KX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEIoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxuKX0sdXNlRGVidWdWYWx1ZTpmdW5jdGlvbigpe30sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEIoKS51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3JldHVybiBCKCkudXNlTWVtbyhlLHQpfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQigpLnVzZVJlZHVjZXIoZSx0LG4pfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIEIoKS51c2VSZWYoZSl9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBCKCkudXNlU3RhdGUoZSl9LEZyYWdtZW50OnUsUHJvZmlsZXI6bCxTdHJpY3RNb2RlOnMsU3VzcGVuc2U6cCxjcmVhdGVFbGVtZW50OkQsY2xvbmVFbGVtZW50OmZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXRocm93IEVycm9yKHYoMjY3LGUpKTt2YXIgbz1yKHt9LGUucHJvcHMpLGk9ZS5rZXksdT1lLnJlZixzPWUuX293bmVyO2lmKG51bGwhPXQpe2lmKHZvaWQgMCE9PXQucmVmJiYodT10LnJlZixzPUMuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihpPSIiK3Qua2V5KSxlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGw9ZS50eXBlLmRlZmF1bHRQcm9wcztmb3IoYyBpbiB0KXguY2FsbCh0LGMpJiYhUy5oYXNPd25Qcm9wZXJ0eShjKSYmKG9bY109dm9pZCAwPT09dFtjXSYmdm9pZCAwIT09bD9sW2NdOnRbY10pfXZhciBjPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09YylvLmNoaWxkcmVuPW47ZWxzZSBpZigxPGMpe2w9QXJyYXkoYyk7Zm9yKHZhciBmPTA7ZjxjO2YrKylsW2ZdPWFyZ3VtZW50c1tmKzJdO28uY2hpbGRyZW49bH1yZXR1cm57JCR0eXBlb2Y6YSx0eXBlOmUudHlwZSxrZXk6aSxyZWY6dSxwcm9wczpvLF9vd25lcjpzfX0sY3JlYXRlRmFjdG9yeTpmdW5jdGlvbihlKXt2YXIgdD1ELmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH0saXNWYWxpZEVsZW1lbnQ6VCx2ZXJzaW9uOiIxNi4xMi4wIixfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDp7UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjprLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOntzdXNwZW5zZTpudWxsfSxSZWFjdEN1cnJlbnRPd25lcjpDLElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxhc3NpZ246cn19LEs9e2RlZmF1bHQ6en0scT1LJiZ6fHxLO2UuZXhwb3J0cz1xLmRlZmF1bHR8fHF9LHZwenQ6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siYmFubmVyIjp7Im9yY2hhcmRHbyI6eyJhbmNob3JUZXh0Ijoi56uL5Y2z5LiL6LyJIE9yY2hhcmRHbyIsImRlc2NyaXB0aW9uIjoi6Zqo5pmC6L+96Lmk5oKo55qE5pW45pOa5YiG5p6Q77yBIn19LCJlcnJvcnMiOnsicGFnZU5vdEZvdW5kIjoi5oqx5q2J77yM5oKo6KuL5rGC55qE6aCB6Z2i5LiN5a2Y5Zyo44CCIn0sImZvb3RlciI6eyJoZWxwIjoid29ya3N0YXRpb27luavliqkiLCJwcml2YWN5UG9saWN5Ijoi6Zqx56eB5qyK5pS/562WIiwidGVybXNBbmRDb25kaXRpb25zIjoi5qKd5qy+6IiH5qKd5Lu2IiwidHJhZGVtYXJrIjoiVGhlIE9yY2hhcmTns7voqLvlhorllYbmqJnvvIxUaGUgT3JjaGFyZCBsb2dv5pivT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLueahOacjeWLmeWVhuaomeOAgueJiOasiuaJgOacieOAgiJ9LCJnbG9iYWxTZWFyY2giOnsicGxhY2Vob2xkZXIiOiLmn6XoqaLpoIXnm67jgIHnlKLlk4HjgIHol53ooZPlrrYuLi4ifSwiaGVhZGVyIjp7ImFjY291bnRpbmciOiLntZDnrpciLCJhbmFseXRpY3MiOiLmlbjmk5rliIbmnpAiLCJjYXRhbG9nIjoi55uu6YyEIiwiZHJvcGRvd24iOnsiYWRtaW4iOiLnrqHnkIblk6EiLCJkZWZhdWx0cyI6IumgkOioreWAvCIsImxvZ091dCI6IueZu+WHuiIsImxvZ29zIjoi5ZyW5YOP5qiZ6KqMIiwibXlBY2NvdW50Ijoi5oiR55qE5biz5oi2IiwicHJvZmlsZSI6IuewoeS7iyJ9LCJoZWxwIjoi5bmr5YqpIiwibWFya2V0aW5nIjoi54ef6Yq3In0sInN1YmhlYWRlciI6eyJhbmFseXRpY3MiOnsiYXVkaWVuY2UiOiLop4DnnL4iLCJlbmdhZ2VtZW50Ijoi5Y+D6IiH5bqmIiwiZmlsbVRyYW5zcGFyZW5jeSI6IuiGoOeJh+mAj+aYjuW6piIsImhlYXRtYXAiOiLnhrHpu57lnLDlnJYiLCJvdmVydmlldyI6IuamguimvSIsInBoeXNpY2FsUmVwb3J0aW5nIjoi5a+m6auU5aCx6KGoIiwidG9wQ2hhcnRzIjoi54ax6ZaA5o6S6KGM5qacIn19fScpfSx3MGlKOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBhPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdy5pbm5lcldpZHRoOjAsaT1lPT09ci5BTkNIT1JfTEVGVD9hLW46bix1PW98fDA7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bjtyZXR1cm4gZX0oe30sZSxNYXRoLm1pbih0K2ktdSwwKSl9O3ZhciByPW4oIjVmN24iKX0sd0lzMTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjlDL2IiKTt0LmE9ci5hfSx3VFZBOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9fSx3WU0wOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWV9fSl9fSwid2QvUiI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQscjtmdW5jdGlvbiBvKCl7cmV0dXJuIHQuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBBcnJheXx8IltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBudWxsIT1lJiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX1mdW5jdGlvbiB1KGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfHwiW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX1mdW5jdGlvbiBsKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRGF0ZXx8IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWZ1bmN0aW9uIGMoZSx0KXt2YXIgbixyPVtdO2ZvcihuPTA7bjxlLmxlbmd0aDsrK24pci5wdXNoKHQoZVtuXSxuKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gZihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX1mdW5jdGlvbiBkKGUsdCl7Zm9yKHZhciBuIGluIHQpZih0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZih0LCJ0b1N0cmluZyIpJiYoZS50b1N0cmluZz10LnRvU3RyaW5nKSxmKHQsInZhbHVlT2YiKSYmKGUudmFsdWVPZj10LnZhbHVlT2YpLGV9ZnVuY3Rpb24gcChlLHQsbixyKXtyZXR1cm4ga3QoZSx0LG4sciwhMCkudXRjKCl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gbnVsbD09ZS5fcGYmJihlLl9wZj17ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElucHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZE1vbnRoOm51bGwsaW52YWxpZEZvcm1hdDohMSx1c2VySW52YWxpZGF0ZWQ6ITEsaXNvOiExLHBhcnNlZERhdGVQYXJ0czpbXSxtZXJpZGllbTpudWxsLHJmYzI4MjI6ITEsd2Vla2RheU1pc21hdGNoOiExfSksZS5fcGZ9ZnVuY3Rpb24geShlKXtpZihudWxsPT1lLl9pc1ZhbGlkKXt2YXIgdD1oKGUpLG49ci5jYWxsKHQucGFyc2VkRGF0ZVBhcnRzLChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0pKSxvPSFpc05hTihlLl9kLmdldFRpbWUoKSkmJnQub3ZlcmZsb3c8MCYmIXQuZW1wdHkmJiF0LmludmFsaWRNb250aCYmIXQuaW52YWxpZFdlZWtkYXkmJiF0LndlZWtkYXlNaXNtYXRjaCYmIXQubnVsbElucHV0JiYhdC5pbnZhbGlkRm9ybWF0JiYhdC51c2VySW52YWxpZGF0ZWQmJighdC5tZXJpZGllbXx8dC5tZXJpZGllbSYmbik7aWYoZS5fc3RyaWN0JiYobz1vJiYwPT09dC5jaGFyc0xlZnRPdmVyJiYwPT09dC51bnVzZWRUb2tlbnMubGVuZ3RoJiZ2b2lkIDA9PT10LmJpZ0hvdXIpLG51bGwhPU9iamVjdC5pc0Zyb3plbiYmT2JqZWN0LmlzRnJvemVuKGUpKXJldHVybiBvO2UuX2lzVmFsaWQ9b31yZXR1cm4gZS5faXNWYWxpZH1mdW5jdGlvbiBtKGUpe3ZhciB0PXAoTmFOKTtyZXR1cm4gbnVsbCE9ZT9kKGgodCksZSk6aCh0KS51c2VySW52YWxpZGF0ZWQ9ITAsdH1yPUFycmF5LnByb3RvdHlwZS5zb21lP0FycmF5LnByb3RvdHlwZS5zb21lOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3QodGhpcyksbj10Lmxlbmd0aD4+PjAscj0wO3I8bjtyKyspaWYociBpbiB0JiZlLmNhbGwodGhpcyx0W3JdLHIsdCkpcmV0dXJuITA7cmV0dXJuITF9O3ZhciB2PW8ubW9tZW50UHJvcGVydGllcz1bXTtmdW5jdGlvbiBnKGUsdCl7dmFyIG4scixvO2lmKHUodC5faXNBTW9tZW50T2JqZWN0KXx8KGUuX2lzQU1vbWVudE9iamVjdD10Ll9pc0FNb21lbnRPYmplY3QpLHUodC5faSl8fChlLl9pPXQuX2kpLHUodC5fZil8fChlLl9mPXQuX2YpLHUodC5fbCl8fChlLl9sPXQuX2wpLHUodC5fc3RyaWN0KXx8KGUuX3N0cmljdD10Ll9zdHJpY3QpLHUodC5fdHptKXx8KGUuX3R6bT10Ll90em0pLHUodC5faXNVVEMpfHwoZS5faXNVVEM9dC5faXNVVEMpLHUodC5fb2Zmc2V0KXx8KGUuX29mZnNldD10Ll9vZmZzZXQpLHUodC5fcGYpfHwoZS5fcGY9aCh0KSksdSh0Ll9sb2NhbGUpfHwoZS5fbG9jYWxlPXQuX2xvY2FsZSksdi5sZW5ndGg+MClmb3Iobj0wO248di5sZW5ndGg7bisrKXUobz10W3I9dltuXV0pfHwoZVtyXT1vKTtyZXR1cm4gZX12YXIgYj0hMTtmdW5jdGlvbiB3KGUpe2codGhpcyxlKSx0aGlzLl9kPW5ldyBEYXRlKG51bGwhPWUuX2Q/ZS5fZC5nZXRUaW1lKCk6TmFOKSx0aGlzLmlzVmFsaWQoKXx8KHRoaXMuX2Q9bmV3IERhdGUoTmFOKSksITE9PT1iJiYoYj0hMCxvLnVwZGF0ZU9mZnNldCh0aGlzKSxiPSExKX1mdW5jdGlvbiBfKGUpe3JldHVybiBlIGluc3RhbmNlb2Ygd3x8bnVsbCE9ZSYmbnVsbCE9ZS5faXNBTW9tZW50T2JqZWN0fWZ1bmN0aW9uIEUoZSl7cmV0dXJuIGU8MD9NYXRoLmNlaWwoZSl8fDA6TWF0aC5mbG9vcihlKX1mdW5jdGlvbiBPKGUpe3ZhciB0PStlLG49MDtyZXR1cm4gMCE9PXQmJmlzRmluaXRlKHQpJiYobj1FKHQpKSxufWZ1bmN0aW9uIGsoZSx0LG4pe3ZhciByLG89TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpLGE9TWF0aC5hYnMoZS5sZW5ndGgtdC5sZW5ndGgpLGk9MDtmb3Iocj0wO3I8bztyKyspKG4mJmVbcl0hPT10W3JdfHwhbiYmTyhlW3JdKSE9PU8odFtyXSkpJiZpKys7cmV0dXJuIGkrYX1mdW5jdGlvbiBDKGUpeyExPT09by5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIrZSl9ZnVuY3Rpb24geChlLHQpe3ZhciBuPSEwO3JldHVybiBkKChmdW5jdGlvbigpe2lmKG51bGwhPW8uZGVwcmVjYXRpb25IYW5kbGVyJiZvLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLGUpLG4pe2Zvcih2YXIgcixhPVtdLGk9MDtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXtpZihyPSIiLCJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzW2ldKXtmb3IodmFyIHUgaW4gcis9IlxuWyIraSsiXSAiLGFyZ3VtZW50c1swXSlyKz11KyI6ICIrYXJndW1lbnRzWzBdW3VdKyIsICI7cj1yLnNsaWNlKDAsLTIpfWVsc2Ugcj1hcmd1bWVudHNbaV07YS5wdXNoKHIpfUMoZSsiXG5Bcmd1bWVudHM6ICIrQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSkuam9pbigiIikrIlxuIisobmV3IEVycm9yKS5zdGFjayksbj0hMX1yZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSx0KX12YXIgUyxEPXt9O2Z1bmN0aW9uIFQoZSx0KXtudWxsIT1vLmRlcHJlY2F0aW9uSGFuZGxlciYmby5kZXByZWNhdGlvbkhhbmRsZXIoZSx0KSxEW2VdfHwoQyh0KSxEW2VdPSEwKX1mdW5jdGlvbiBNKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gUChlLHQpe3ZhciBuLHI9ZCh7fSxlKTtmb3IobiBpbiB0KWYodCxuKSYmKGkoZVtuXSkmJmkodFtuXSk/KHJbbl09e30sZChyW25dLGVbbl0pLGQocltuXSx0W25dKSk6bnVsbCE9dFtuXT9yW25dPXRbbl06ZGVsZXRlIHJbbl0pO2ZvcihuIGluIGUpZihlLG4pJiYhZih0LG4pJiZpKGVbbl0pJiYocltuXT1kKHt9LHJbbl0pKTtyZXR1cm4gcn1mdW5jdGlvbiBOKGUpe251bGwhPWUmJnRoaXMuc2V0KGUpfW8uc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPSExLG8uZGVwcmVjYXRpb25IYW5kbGVyPW51bGwsUz1PYmplY3Qua2V5cz9PYmplY3Qua2V5czpmdW5jdGlvbihlKXt2YXIgdCxuPVtdO2Zvcih0IGluIGUpZihlLHQpJiZuLnB1c2godCk7cmV0dXJuIG59O3ZhciBqPXt9O2Z1bmN0aW9uIEwoZSx0KXt2YXIgbj1lLnRvTG93ZXJDYXNlKCk7altuXT1qW24rInMiXT1qW3RdPWV9ZnVuY3Rpb24gUihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/altlXXx8altlLnRvTG93ZXJDYXNlKCldOnZvaWQgMH1mdW5jdGlvbiBJKGUpe3ZhciB0LG4scj17fTtmb3IobiBpbiBlKWYoZSxuKSYmKHQ9UihuKSkmJihyW3RdPWVbbl0pO3JldHVybiByfXZhciBBPXt9O2Z1bmN0aW9uIEYoZSx0KXtBW2VdPXR9ZnVuY3Rpb24gQihlLHQsbil7dmFyIHI9IiIrTWF0aC5hYnMoZSksbz10LXIubGVuZ3RoO3JldHVybihlPj0wP24/IisiOiIiOiItIikrTWF0aC5wb3coMTAsTWF0aC5tYXgoMCxvKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkrcn12YXIgej0vKFxbW15cW10qXF0pfChcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xZWVlZWVl8WVlZWVl8WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZyxLPS8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLHE9e30sVj17fTtmdW5jdGlvbiBVKGUsdCxuLHIpe3ZhciBvPXI7InN0cmluZyI9PXR5cGVvZiByJiYobz1mdW5jdGlvbigpe3JldHVybiB0aGlzW3JdKCl9KSxlJiYoVltlXT1vKSx0JiYoVlt0WzBdXT1mdW5jdGlvbigpe3JldHVybiBCKG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLHRbMV0sdFsyXSl9KSxuJiYoVltuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGUpfSl9ZnVuY3Rpb24gVyhlLHQpe3JldHVybiBlLmlzVmFsaWQoKT8odD1ZKHQsZS5sb2NhbGVEYXRhKCkpLHFbdF09cVt0XXx8ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89ZS5tYXRjaCh6KTtmb3IodD0wLG49by5sZW5ndGg7dDxuO3QrKylWW29bdF1dP29bdF09VltvW3RdXTpvW3RdPShyPW9bdF0pLm1hdGNoKC9cW1tcc1xTXS8pP3IucmVwbGFjZSgvXlxbfFxdJC9nLCIiKTpyLnJlcGxhY2UoL1xcL2csIiIpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcixhPSIiO2ZvcihyPTA7cjxuO3IrKylhKz1NKG9bcl0pP29bcl0uY2FsbCh0LGUpOm9bcl07cmV0dXJuIGF9fSh0KSxxW3RdKGUpKTplLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIFkoZSx0KXt2YXIgbj01O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQubG9uZ0RhdGVGb3JtYXQoZSl8fGV9Zm9yKEsubGFzdEluZGV4PTA7bj49MCYmSy50ZXN0KGUpOyllPWUucmVwbGFjZShLLHIpLEsubGFzdEluZGV4PTAsbi09MTtyZXR1cm4gZX12YXIgSD0vXGQvLEc9L1xkXGQvLFE9L1xkezN9LyxKPS9cZHs0fS8sWj0vWystXT9cZHs2fS8sJD0vXGRcZD8vLFg9L1xkXGRcZFxkPy8sZWU9L1xkXGRcZFxkXGRcZD8vLHRlPS9cZHsxLDN9LyxuZT0vXGR7MSw0fS8scmU9L1srLV0/XGR7MSw2fS8sb2U9L1xkKy8sYWU9L1srLV0/XGQrLyxpZT0vWnxbKy1dXGRcZDo/XGRcZC9naSx1ZT0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/L2dpLHNlPS9bMC05XXswLDI1Nn1bJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGMDdcdUZGMTAtXHVGRkVGXXsxLDI1Nn18W1x1MDYwMC1cdTA2RkZcL117MSwyNTZ9KFxzKj9bXHUwNjAwLVx1MDZGRl17MSwyNTZ9KXsxLDJ9L2ksbGU9e307ZnVuY3Rpb24gY2UoZSx0LG4pe2xlW2VdPU0odCk/dDpmdW5jdGlvbihlLHIpe3JldHVybiBlJiZuP246dH19ZnVuY3Rpb24gZmUoZSx0KXtyZXR1cm4gZihsZSxlKT9sZVtlXSh0Ll9zdHJpY3QsdC5fbG9jYWxlKTpuZXcgUmVnRXhwKGRlKGUucmVwbGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9cXChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csKGZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIHR8fG58fHJ8fG99KSkpKX1mdW5jdGlvbiBkZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfXZhciBwZT17fTtmdW5jdGlvbiBoZShlLHQpe3ZhciBuLHI9dDtmb3IoInN0cmluZyI9PXR5cGVvZiBlJiYoZT1bZV0pLHModCkmJihyPWZ1bmN0aW9uKGUsbil7blt0XT1PKGUpfSksbj0wO248ZS5sZW5ndGg7bisrKXBlW2Vbbl1dPXJ9ZnVuY3Rpb24geWUoZSx0KXtoZShlLChmdW5jdGlvbihlLG4scixvKXtyLl93PXIuX3d8fHt9LHQoZSxyLl93LHIsbyl9KSl9ZnVuY3Rpb24gbWUoZSx0LG4pe251bGwhPXQmJmYocGUsZSkmJnBlW2VdKHQsbi5fYSxuLGUpfWZ1bmN0aW9uIHZlKGUpe3JldHVybiBnZShlKT8zNjY6MzY1fWZ1bmN0aW9uIGdlKGUpe3JldHVybiBlJTQ9PTAmJmUlMTAwIT0wfHxlJTQwMD09MH1VKCJZIiwwLDAsKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy55ZWFyKCk7cmV0dXJuIGU8PTk5OTk/IiIrZToiKyIrZX0pKSxVKDAsWyJZWSIsMl0sMCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55ZWFyKCklMTAwfSkpLFUoMCxbIllZWVkiLDRdLDAsInllYXIiKSxVKDAsWyJZWVlZWSIsNV0sMCwieWVhciIpLFUoMCxbIllZWVlZWSIsNiwhMF0sMCwieWVhciIpLEwoInllYXIiLCJ5IiksRigieWVhciIsMSksY2UoIlkiLGFlKSxjZSgiWVkiLCQsRyksY2UoIllZWVkiLG5lLEopLGNlKCJZWVlZWSIscmUsWiksY2UoIllZWVlZWSIscmUsWiksaGUoWyJZWVlZWSIsIllZWVlZWSJdLDApLGhlKCJZWVlZIiwoZnVuY3Rpb24oZSx0KXt0WzBdPTI9PT1lLmxlbmd0aD9vLnBhcnNlVHdvRGlnaXRZZWFyKGUpOk8oZSl9KSksaGUoIllZIiwoZnVuY3Rpb24oZSx0KXt0WzBdPW8ucGFyc2VUd29EaWdpdFllYXIoZSl9KSksaGUoIlkiLChmdW5jdGlvbihlLHQpe3RbMF09cGFyc2VJbnQoZSwxMCl9KSksby5wYXJzZVR3b0RpZ2l0WWVhcj1mdW5jdGlvbihlKXtyZXR1cm4gTyhlKSsoTyhlKT42OD8xOTAwOjJlMyl9O3ZhciBiZSx3ZT1fZSgiRnVsbFllYXIiLCEwKTtmdW5jdGlvbiBfZShlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9bj8oT2UodGhpcyxlLG4pLG8udXBkYXRlT2Zmc2V0KHRoaXMsdCksdGhpcyk6RWUodGhpcyxlKX19ZnVuY3Rpb24gRWUoZSx0KXtyZXR1cm4gZS5pc1ZhbGlkKCk/ZS5fZFsiZ2V0IisoZS5faXNVVEM/IlVUQyI6IiIpK3RdKCk6TmFOfWZ1bmN0aW9uIE9lKGUsdCxuKXtlLmlzVmFsaWQoKSYmIWlzTmFOKG4pJiYoIkZ1bGxZZWFyIj09PXQmJmdlKGUueWVhcigpKSYmMT09PWUubW9udGgoKSYmMjk9PT1lLmRhdGUoKT9lLl9kWyJzZXQiKyhlLl9pc1VUQz8iVVRDIjoiIikrdF0obixlLm1vbnRoKCksa2UobixlLm1vbnRoKCkpKTplLl9kWyJzZXQiKyhlLl9pc1VUQz8iVVRDIjoiIikrdF0obikpfWZ1bmN0aW9uIGtlKGUsdCl7aWYoaXNOYU4oZSl8fGlzTmFOKHQpKXJldHVybiBOYU47dmFyIG4scj0odCUobj0xMikrbiklbjtyZXR1cm4gZSs9KHQtcikvMTIsMT09PXI/Z2UoZSk/Mjk6Mjg6MzEtciU3JTJ9YmU9QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/QXJyYXkucHJvdG90eXBlLmluZGV4T2Y6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQ9MDt0PHRoaXMubGVuZ3RoOysrdClpZih0aGlzW3RdPT09ZSlyZXR1cm4gdDtyZXR1cm4tMX0sVSgiTSIsWyJNTSIsMl0sIk1vIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb250aCgpKzF9KSksVSgiTU1NIiwwLDAsKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLGUpfSkpLFUoIk1NTU0iLDAsMCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLGUpfSkpLEwoIm1vbnRoIiwiTSIpLEYoIm1vbnRoIiw4KSxjZSgiTSIsJCksY2UoIk1NIiwkLEcpLGNlKCJNTU0iLChmdW5jdGlvbihlLHQpe3JldHVybiB0Lm1vbnRoc1Nob3J0UmVnZXgoZSl9KSksY2UoIk1NTU0iLChmdW5jdGlvbihlLHQpe3JldHVybiB0Lm1vbnRoc1JlZ2V4KGUpfSkpLGhlKFsiTSIsIk1NIl0sKGZ1bmN0aW9uKGUsdCl7dFsxXT1PKGUpLTF9KSksaGUoWyJNTU0iLCJNTU1NIl0sKGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPW4uX2xvY2FsZS5tb250aHNQYXJzZShlLHIsbi5fc3RyaWN0KTtudWxsIT1vP3RbMV09bzpoKG4pLmludmFsaWRNb250aD1lfSkpO3ZhciBDZT0vRFtvRF0/KFxbW15cW1xdXSpcXXxccykrTU1NTT8vLHhlPSJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLFNlPSJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKTtmdW5jdGlvbiBEZShlLHQsbil7dmFyIHIsbyxhLGk9ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKCF0aGlzLl9tb250aHNQYXJzZSlmb3IodGhpcy5fbW9udGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10scj0wO3I8MTI7KytyKWE9cChbMmUzLHJdKSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW3JdPXRoaXMubW9udGhzU2hvcnQoYSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9sb25nTW9udGhzUGFyc2Vbcl09dGhpcy5tb250aHMoYSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gbj8iTU1NIj09PXQ/LTEhPT0obz1iZS5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsaSkpP286bnVsbDotMSE9PShvPWJlLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLGkpKT9vOm51bGw6Ik1NTSI9PT10Py0xIT09KG89YmUuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLGkpKT9vOi0xIT09KG89YmUuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsaSkpP286bnVsbDotMSE9PShvPWJlLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLGkpKT9vOi0xIT09KG89YmUuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLGkpKT9vOm51bGx9ZnVuY3Rpb24gVGUoZSx0KXt2YXIgbjtpZighZS5pc1ZhbGlkKCkpcmV0dXJuIGU7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKC9eXGQrJC8udGVzdCh0KSl0PU8odCk7ZWxzZSBpZighcyh0PWUubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKHQpKSlyZXR1cm4gZTtyZXR1cm4gbj1NYXRoLm1pbihlLmRhdGUoKSxrZShlLnllYXIoKSx0KSksZS5fZFsic2V0IisoZS5faXNVVEM/IlVUQyI6IiIpKyJNb250aCJdKHQsbiksZX1mdW5jdGlvbiBNZShlKXtyZXR1cm4gbnVsbCE9ZT8oVGUodGhpcyxlKSxvLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzKTpFZSh0aGlzLCJNb250aCIpfXZhciBQZT1zZSxOZT1zZTtmdW5jdGlvbiBqZSgpe2Z1bmN0aW9uIGUoZSx0KXtyZXR1cm4gdC5sZW5ndGgtZS5sZW5ndGh9dmFyIHQsbixyPVtdLG89W10sYT1bXTtmb3IodD0wO3Q8MTI7dCsrKW49cChbMmUzLHRdKSxyLnB1c2godGhpcy5tb250aHNTaG9ydChuLCIiKSksby5wdXNoKHRoaXMubW9udGhzKG4sIiIpKSxhLnB1c2godGhpcy5tb250aHMobiwiIikpLGEucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG4sIiIpKTtmb3Ioci5zb3J0KGUpLG8uc29ydChlKSxhLnNvcnQoZSksdD0wO3Q8MTI7dCsrKXJbdF09ZGUoclt0XSksb1t0XT1kZShvW3RdKTtmb3IodD0wO3Q8MjQ7dCsrKWFbdF09ZGUoYVt0XSk7dGhpcy5fbW9udGhzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK2Euam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9dGhpcy5fbW9udGhzUmVnZXgsdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK28uam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Iuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIExlKGUsdCxuLHIsbyxhLGkpe3ZhciB1O3JldHVybiBlPDEwMCYmZT49MD8odT1uZXcgRGF0ZShlKzQwMCx0LG4scixvLGEsaSksaXNGaW5pdGUodS5nZXRGdWxsWWVhcigpKSYmdS5zZXRGdWxsWWVhcihlKSk6dT1uZXcgRGF0ZShlLHQsbixyLG8sYSxpKSx1fWZ1bmN0aW9uIFJlKGUpe3ZhciB0O2lmKGU8MTAwJiZlPj0wKXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO25bMF09ZSs0MDAsdD1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLG4pKSxpc0Zpbml0ZSh0LmdldFVUQ0Z1bGxZZWFyKCkpJiZ0LnNldFVUQ0Z1bGxZZWFyKGUpfWVsc2UgdD1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpO3JldHVybiB0fWZ1bmN0aW9uIEllKGUsdCxuKXt2YXIgcj03K3QtbjtyZXR1cm4tKDcrUmUoZSwwLHIpLmdldFVUQ0RheSgpLXQpJTcrci0xfWZ1bmN0aW9uIEFlKGUsdCxuLHIsbyl7dmFyIGEsaSx1PTErNyoodC0xKSsoNytuLXIpJTcrSWUoZSxyLG8pO3JldHVybiB1PD0wP2k9dmUoYT1lLTEpK3U6dT52ZShlKT8oYT1lKzEsaT11LXZlKGUpKTooYT1lLGk9dSkse3llYXI6YSxkYXlPZlllYXI6aX19ZnVuY3Rpb24gRmUoZSx0LG4pe3ZhciByLG8sYT1JZShlLnllYXIoKSx0LG4pLGk9TWF0aC5mbG9vcigoZS5kYXlPZlllYXIoKS1hLTEpLzcpKzE7cmV0dXJuIGk8MT9yPWkrQmUobz1lLnllYXIoKS0xLHQsbik6aT5CZShlLnllYXIoKSx0LG4pPyhyPWktQmUoZS55ZWFyKCksdCxuKSxvPWUueWVhcigpKzEpOihvPWUueWVhcigpLHI9aSkse3dlZWs6cix5ZWFyOm99fWZ1bmN0aW9uIEJlKGUsdCxuKXt2YXIgcj1JZShlLHQsbiksbz1JZShlKzEsdCxuKTtyZXR1cm4odmUoZSktcitvKS83fWZ1bmN0aW9uIHplKGUsdCl7cmV0dXJuIGUuc2xpY2UodCw3KS5jb25jYXQoZS5zbGljZSgwLHQpKX1VKCJ3IixbInd3IiwyXSwid28iLCJ3ZWVrIiksVSgiVyIsWyJXVyIsMl0sIldvIiwiaXNvV2VlayIpLEwoIndlZWsiLCJ3IiksTCgiaXNvV2VlayIsIlciKSxGKCJ3ZWVrIiw1KSxGKCJpc29XZWVrIiw1KSxjZSgidyIsJCksY2UoInd3IiwkLEcpLGNlKCJXIiwkKSxjZSgiV1ciLCQsRykseWUoWyJ3Iiwid3ciLCJXIiwiV1ciXSwoZnVuY3Rpb24oZSx0LG4scil7dFtyLnN1YnN0cigwLDEpXT1PKGUpfSkpLFUoImQiLDAsImRvIiwiZGF5IiksVSgiZGQiLDAsMCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzTWluKHRoaXMsZSl9KSksVSgiZGRkIiwwLDAsKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsZSl9KSksVSgiZGRkZCIsMCwwLChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcyxlKX0pKSxVKCJlIiwwLDAsIndlZWtkYXkiKSxVKCJFIiwwLDAsImlzb1dlZWtkYXkiKSxMKCJkYXkiLCJkIiksTCgid2Vla2RheSIsImUiKSxMKCJpc29XZWVrZGF5IiwiRSIpLEYoImRheSIsMTEpLEYoIndlZWtkYXkiLDExKSxGKCJpc29XZWVrZGF5IiwxMSksY2UoImQiLCQpLGNlKCJlIiwkKSxjZSgiRSIsJCksY2UoImRkIiwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC53ZWVrZGF5c01pblJlZ2V4KGUpfSkpLGNlKCJkZGQiLChmdW5jdGlvbihlLHQpe3JldHVybiB0LndlZWtkYXlzU2hvcnRSZWdleChlKX0pKSxjZSgiZGRkZCIsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQud2Vla2RheXNSZWdleChlKX0pKSx5ZShbImRkIiwiZGRkIiwiZGRkZCJdLChmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1uLl9sb2NhbGUud2Vla2RheXNQYXJzZShlLHIsbi5fc3RyaWN0KTtudWxsIT1vP3QuZD1vOmgobikuaW52YWxpZFdlZWtkYXk9ZX0pKSx5ZShbImQiLCJlIiwiRSJdLChmdW5jdGlvbihlLHQsbixyKXt0W3JdPU8oZSl9KSk7dmFyIEtlPSJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSxxZT0iU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLFZlPSJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKTtmdW5jdGlvbiBVZShlLHQsbil7dmFyIHIsbyxhLGk9ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKCF0aGlzLl93ZWVrZGF5c1BhcnNlKWZvcih0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZT1bXSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlPVtdLHI9MDtyPDc7KytyKWE9cChbMmUzLDFdKS5kYXkociksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtyXT10aGlzLndlZWtkYXlzTWluKGEsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW3JdPXRoaXMud2Vla2RheXNTaG9ydChhLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpLHRoaXMuX3dlZWtkYXlzUGFyc2Vbcl09dGhpcy53ZWVrZGF5cyhhLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVybiBuPyJkZGRkIj09PXQ/LTEhPT0obz1iZS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsaSkpP286bnVsbDoiZGRkIj09PXQ/LTEhPT0obz1iZS5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxpKSk/bzpudWxsOi0xIT09KG89YmUuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLGkpKT9vOm51bGw6ImRkZGQiPT09dD8tMSE9PShvPWJlLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxpKSk/bzotMSE9PShvPWJlLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLGkpKT9vOi0xIT09KG89YmUuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLGkpKT9vOm51bGw6ImRkZCI9PT10Py0xIT09KG89YmUuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsaSkpP286LTEhPT0obz1iZS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsaSkpP286LTEhPT0obz1iZS5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsaSkpP286bnVsbDotMSE9PShvPWJlLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxpKSk/bzotMSE9PShvPWJlLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxpKSk/bzotMSE9PShvPWJlLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLGkpKT9vOm51bGx9dmFyIFdlPXNlLFllPXNlLEhlPXNlO2Z1bmN0aW9uIEdlKCl7ZnVuY3Rpb24gZShlLHQpe3JldHVybiB0Lmxlbmd0aC1lLmxlbmd0aH12YXIgdCxuLHIsbyxhLGk9W10sdT1bXSxzPVtdLGw9W107Zm9yKHQ9MDt0PDc7dCsrKW49cChbMmUzLDFdKS5kYXkodCkscj10aGlzLndlZWtkYXlzTWluKG4sIiIpLG89dGhpcy53ZWVrZGF5c1Nob3J0KG4sIiIpLGE9dGhpcy53ZWVrZGF5cyhuLCIiKSxpLnB1c2gociksdS5wdXNoKG8pLHMucHVzaChhKSxsLnB1c2gociksbC5wdXNoKG8pLGwucHVzaChhKTtmb3IoaS5zb3J0KGUpLHUuc29ydChlKSxzLnNvcnQoZSksbC5zb3J0KGUpLHQ9MDt0PDc7dCsrKXVbdF09ZGUodVt0XSksc1t0XT1kZShzW3RdKSxsW3RdPWRlKGxbdF0pO3RoaXMuX3dlZWtkYXlzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK2wuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzTWluUmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitzLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK3Uuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2kuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIFFlKCl7cmV0dXJuIHRoaXMuaG91cnMoKSUxMnx8MTJ9ZnVuY3Rpb24gSmUoZSx0KXtVKGUsMCwwLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksdGhpcy5taW51dGVzKCksdCl9KSl9ZnVuY3Rpb24gWmUoZSx0KXtyZXR1cm4gdC5fbWVyaWRpZW1QYXJzZX1VKCJIIixbIkhIIiwyXSwwLCJob3VyIiksVSgiaCIsWyJoaCIsMl0sMCxRZSksVSgiayIsWyJrayIsMl0sMCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3VycygpfHwyNH0pKSxVKCJobW0iLDAsMCwoZnVuY3Rpb24oKXtyZXR1cm4iIitRZS5hcHBseSh0aGlzKStCKHRoaXMubWludXRlcygpLDIpfSkpLFUoImhtbXNzIiwwLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIiIrUWUuYXBwbHkodGhpcykrQih0aGlzLm1pbnV0ZXMoKSwyKStCKHRoaXMuc2Vjb25kcygpLDIpfSkpLFUoIkhtbSIsMCwwLChmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStCKHRoaXMubWludXRlcygpLDIpfSkpLFUoIkhtbXNzIiwwLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5ob3VycygpK0IodGhpcy5taW51dGVzKCksMikrQih0aGlzLnNlY29uZHMoKSwyKX0pKSxKZSgiYSIsITApLEplKCJBIiwhMSksTCgiaG91ciIsImgiKSxGKCJob3VyIiwxMyksY2UoImEiLFplKSxjZSgiQSIsWmUpLGNlKCJIIiwkKSxjZSgiaCIsJCksY2UoImsiLCQpLGNlKCJISCIsJCxHKSxjZSgiaGgiLCQsRyksY2UoImtrIiwkLEcpLGNlKCJobW0iLFgpLGNlKCJobW1zcyIsZWUpLGNlKCJIbW0iLFgpLGNlKCJIbW1zcyIsZWUpLGhlKFsiSCIsIkhIIl0sMyksaGUoWyJrIiwia2siXSwoZnVuY3Rpb24oZSx0LG4pe3ZhciByPU8oZSk7dFszXT0yND09PXI/MDpyfSkpLGhlKFsiYSIsIkEiXSwoZnVuY3Rpb24oZSx0LG4pe24uX2lzUG09bi5fbG9jYWxlLmlzUE0oZSksbi5fbWVyaWRpZW09ZX0pKSxoZShbImgiLCJoaCJdLChmdW5jdGlvbihlLHQsbil7dFszXT1PKGUpLGgobikuYmlnSG91cj0hMH0pKSxoZSgiaG1tIiwoZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubGVuZ3RoLTI7dFszXT1PKGUuc3Vic3RyKDAscikpLHRbNF09TyhlLnN1YnN0cihyKSksaChuKS5iaWdIb3VyPSEwfSkpLGhlKCJobW1zcyIsKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmxlbmd0aC00LG89ZS5sZW5ndGgtMjt0WzNdPU8oZS5zdWJzdHIoMCxyKSksdFs0XT1PKGUuc3Vic3RyKHIsMikpLHRbNV09TyhlLnN1YnN0cihvKSksaChuKS5iaWdIb3VyPSEwfSkpLGhlKCJIbW0iLChmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5sZW5ndGgtMjt0WzNdPU8oZS5zdWJzdHIoMCxyKSksdFs0XT1PKGUuc3Vic3RyKHIpKX0pKSxoZSgiSG1tc3MiLChmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5sZW5ndGgtNCxvPWUubGVuZ3RoLTI7dFszXT1PKGUuc3Vic3RyKDAscikpLHRbNF09TyhlLnN1YnN0cihyLDIpKSx0WzVdPU8oZS5zdWJzdHIobykpfSkpO3ZhciAkZSxYZT1fZSgiSG91cnMiLCEwKSxldD17Y2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxsb25nRGF0ZUZvcm1hdDp7TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sbW9udGhzOnhlLG1vbnRoc1Nob3J0OlNlLHdlZWs6e2RvdzowLGRveTo2fSx3ZWVrZGF5czpLZSx3ZWVrZGF5c01pbjpWZSx3ZWVrZGF5c1Nob3J0OnFlLG1lcmlkaWVtUGFyc2U6L1thcF1cLj9tP1wuPy9pfSx0dD17fSxudD17fTtmdW5jdGlvbiBydChlKXtyZXR1cm4gZT9lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTplfWZ1bmN0aW9uIG90KHQpe3ZhciByPW51bGw7aWYoIXR0W3RdJiZ2b2lkIDAhPT1lJiZlJiZlLmV4cG9ydHMpdHJ5e3I9JGUuX2FiYnIsbigiWSsrMyIpKCIuLyIrdCksYXQocil9Y2F0Y2goZSl7fXJldHVybiB0dFt0XX1mdW5jdGlvbiBhdChlLHQpe3ZhciBuO3JldHVybiBlJiYoKG49dSh0KT91dChlKTppdChlLHQpKT8kZT1uOiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkxvY2FsZSAiK2UrIiBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/IikpLCRlLl9hYmJyfWZ1bmN0aW9uIGl0KGUsdCl7aWYobnVsbCE9PXQpe3ZhciBuLHI9ZXQ7aWYodC5hYmJyPWUsbnVsbCE9dHRbZV0pVCgiZGVmaW5lTG9jYWxlT3ZlcnJpZGUiLCJ1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSBhbiBleGlzdGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4iKSxyPXR0W2VdLl9jb25maWc7ZWxzZSBpZihudWxsIT10LnBhcmVudExvY2FsZSlpZihudWxsIT10dFt0LnBhcmVudExvY2FsZV0pcj10dFt0LnBhcmVudExvY2FsZV0uX2NvbmZpZztlbHNle2lmKG51bGw9PShuPW90KHQucGFyZW50TG9jYWxlKSkpcmV0dXJuIG50W3QucGFyZW50TG9jYWxlXXx8KG50W3QucGFyZW50TG9jYWxlXT1bXSksbnRbdC5wYXJlbnRMb2NhbGVdLnB1c2goe25hbWU6ZSxjb25maWc6dH0pLG51bGw7cj1uLl9jb25maWd9cmV0dXJuIHR0W2VdPW5ldyBOKFAocix0KSksbnRbZV0mJm50W2VdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2l0KGUubmFtZSxlLmNvbmZpZyl9KSksYXQoZSksdHRbZV19cmV0dXJuIGRlbGV0ZSB0dFtlXSxudWxsfWZ1bmN0aW9uIHV0KGUpe3ZhciB0O2lmKGUmJmUuX2xvY2FsZSYmZS5fbG9jYWxlLl9hYmJyJiYoZT1lLl9sb2NhbGUuX2FiYnIpLCFlKXJldHVybiAkZTtpZighYShlKSl7aWYodD1vdChlKSlyZXR1cm4gdDtlPVtlXX1yZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixvLGE9MDthPGUubGVuZ3RoOyl7Zm9yKHQ9KG89cnQoZVthXSkuc3BsaXQoIi0iKSkubGVuZ3RoLG49KG49cnQoZVthKzFdKSk/bi5zcGxpdCgiLSIpOm51bGw7dD4wOyl7aWYocj1vdChvLnNsaWNlKDAsdCkuam9pbigiLSIpKSlyZXR1cm4gcjtpZihuJiZuLmxlbmd0aD49dCYmayhvLG4sITApPj10LTEpYnJlYWs7dC0tfWErK31yZXR1cm4gJGV9KGUpfWZ1bmN0aW9uIHN0KGUpe3ZhciB0LG49ZS5fYTtyZXR1cm4gbiYmLTI9PT1oKGUpLm92ZXJmbG93JiYodD1uWzFdPDB8fG5bMV0+MTE/MTpuWzJdPDF8fG5bMl0+a2UoblswXSxuWzFdKT8yOm5bM108MHx8blszXT4yNHx8MjQ9PT1uWzNdJiYoMCE9PW5bNF18fDAhPT1uWzVdfHwwIT09bls2XSk/MzpuWzRdPDB8fG5bNF0+NTk/NDpuWzVdPDB8fG5bNV0+NTk/NTpuWzZdPDB8fG5bNl0+OTk5PzY6LTEsaChlKS5fb3ZlcmZsb3dEYXlPZlllYXImJih0PDB8fHQ+MikmJih0PTIpLGgoZSkuX292ZXJmbG93V2Vla3MmJi0xPT09dCYmKHQ9NyksaChlKS5fb3ZlcmZsb3dXZWVrZGF5JiYtMT09PXQmJih0PTgpLGgoZSkub3ZlcmZsb3c9dCksZX1mdW5jdGlvbiBsdChlLHQsbil7cmV0dXJuIG51bGwhPWU/ZTpudWxsIT10P3Q6bn1mdW5jdGlvbiBjdChlKXt2YXIgdCxuLHIsYSxpLHU9W107aWYoIWUuX2Qpe2ZvcihyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKG8ubm93KCkpO3JldHVybiBlLl91c2VVVEM/W3QuZ2V0VVRDRnVsbFllYXIoKSx0LmdldFVUQ01vbnRoKCksdC5nZXRVVENEYXRlKCldOlt0LmdldEZ1bGxZZWFyKCksdC5nZXRNb250aCgpLHQuZ2V0RGF0ZSgpXX0oZSksZS5fdyYmbnVsbD09ZS5fYVsyXSYmbnVsbD09ZS5fYVsxXSYmZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLHUscztpZihudWxsIT0odD1lLl93KS5HR3x8bnVsbCE9dC5XfHxudWxsIT10LkUpYT0xLGk9NCxuPWx0KHQuR0csZS5fYVswXSxGZShDdCgpLDEsNCkueWVhcikscj1sdCh0LlcsMSksKChvPWx0KHQuRSwxKSk8MXx8bz43KSYmKHM9ITApO2Vsc2V7YT1lLl9sb2NhbGUuX3dlZWsuZG93LGk9ZS5fbG9jYWxlLl93ZWVrLmRveTt2YXIgbD1GZShDdCgpLGEsaSk7bj1sdCh0LmdnLGUuX2FbMF0sbC55ZWFyKSxyPWx0KHQudyxsLndlZWspLG51bGwhPXQuZD8oKG89dC5kKTwwfHxvPjYpJiYocz0hMCk6bnVsbCE9dC5lPyhvPXQuZSthLCh0LmU8MHx8dC5lPjYpJiYocz0hMCkpOm89YX1yPDF8fHI+QmUobixhLGkpP2goZSkuX292ZXJmbG93V2Vla3M9ITA6bnVsbCE9cz9oKGUpLl9vdmVyZmxvd1dlZWtkYXk9ITA6KHU9QWUobixyLG8sYSxpKSxlLl9hWzBdPXUueWVhcixlLl9kYXlPZlllYXI9dS5kYXlPZlllYXIpfShlKSxudWxsIT1lLl9kYXlPZlllYXImJihpPWx0KGUuX2FbMF0sclswXSksKGUuX2RheU9mWWVhcj52ZShpKXx8MD09PWUuX2RheU9mWWVhcikmJihoKGUpLl9vdmVyZmxvd0RheU9mWWVhcj0hMCksbj1SZShpLDAsZS5fZGF5T2ZZZWFyKSxlLl9hWzFdPW4uZ2V0VVRDTW9udGgoKSxlLl9hWzJdPW4uZ2V0VVRDRGF0ZSgpKSx0PTA7dDwzJiZudWxsPT1lLl9hW3RdOysrdCllLl9hW3RdPXVbdF09clt0XTtmb3IoO3Q8Nzt0KyspZS5fYVt0XT11W3RdPW51bGw9PWUuX2FbdF0/Mj09PXQ/MTowOmUuX2FbdF07MjQ9PT1lLl9hWzNdJiYwPT09ZS5fYVs0XSYmMD09PWUuX2FbNV0mJjA9PT1lLl9hWzZdJiYoZS5fbmV4dERheT0hMCxlLl9hWzNdPTApLGUuX2Q9KGUuX3VzZVVUQz9SZTpMZSkuYXBwbHkobnVsbCx1KSxhPWUuX3VzZVVUQz9lLl9kLmdldFVUQ0RheSgpOmUuX2QuZ2V0RGF5KCksbnVsbCE9ZS5fdHptJiZlLl9kLnNldFVUQ01pbnV0ZXMoZS5fZC5nZXRVVENNaW51dGVzKCktZS5fdHptKSxlLl9uZXh0RGF5JiYoZS5fYVszXT0yNCksZS5fdyYmdm9pZCAwIT09ZS5fdy5kJiZlLl93LmQhPT1hJiYoaChlKS53ZWVrZGF5TWlzbWF0Y2g9ITApfX12YXIgZnQ9L15ccyooKD86WystXVxkezZ9fFxkezR9KS0oPzpcZFxkLVxkXGR8V1xkXGQtXGR8V1xkXGR8XGRcZFxkfFxkXGQpKSg/OihUfCApKFxkXGQoPzo6XGRcZCg/OjpcZFxkKD86Wy4sXVxkKyk/KT8pPykoW1wrXC1dXGRcZCg/Ojo/XGRcZCk/fFxzKlopPyk/JC8sZHQ9L15ccyooKD86WystXVxkezZ9fFxkezR9KSg/OlxkXGRcZFxkfFdcZFxkXGR8V1xkXGR8XGRcZFxkfFxkXGQpKSg/OihUfCApKFxkXGQoPzpcZFxkKD86XGRcZCg/OlsuLF1cZCspPyk/KT8pKFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLHB0PS9afFsrLV1cZFxkKD86Oj9cZFxkKT8vLGh0PVtbIllZWVlZWS1NTS1ERCIsL1srLV1cZHs2fS1cZFxkLVxkXGQvXSxbIllZWVktTU0tREQiLC9cZHs0fS1cZFxkLVxkXGQvXSxbIkdHR0ctW1ddV1ctRSIsL1xkezR9LVdcZFxkLVxkL10sWyJHR0dHLVtXXVdXIiwvXGR7NH0tV1xkXGQvLCExXSxbIllZWVktREREIiwvXGR7NH0tXGR7M30vXSxbIllZWVktTU0iLC9cZHs0fS1cZFxkLywhMV0sWyJZWVlZWVlNTUREIiwvWystXVxkezEwfS9dLFsiWVlZWU1NREQiLC9cZHs4fS9dLFsiR0dHR1tXXVdXRSIsL1xkezR9V1xkezN9L10sWyJHR0dHW1ddV1ciLC9cZHs0fVdcZHsyfS8sITFdLFsiWVlZWURERCIsL1xkezd9L11dLHl0PVtbIkhIOm1tOnNzLlNTU1MiLC9cZFxkOlxkXGQ6XGRcZFwuXGQrL10sWyJISDptbTpzcyxTU1NTIiwvXGRcZDpcZFxkOlxkXGQsXGQrL10sWyJISDptbTpzcyIsL1xkXGQ6XGRcZDpcZFxkL10sWyJISDptbSIsL1xkXGQ6XGRcZC9dLFsiSEhtbXNzLlNTU1MiLC9cZFxkXGRcZFxkXGRcLlxkKy9dLFsiSEhtbXNzLFNTU1MiLC9cZFxkXGRcZFxkXGQsXGQrL10sWyJISG1tc3MiLC9cZFxkXGRcZFxkXGQvXSxbIkhIbW0iLC9cZFxkXGRcZC9dLFsiSEgiLC9cZFxkL11dLG10PS9eXC8/RGF0ZVwoKFwtP1xkKykvaTtmdW5jdGlvbiB2dChlKXt2YXIgdCxuLHIsbyxhLGksdT1lLl9pLHM9ZnQuZXhlYyh1KXx8ZHQuZXhlYyh1KTtpZihzKXtmb3IoaChlKS5pc289ITAsdD0wLG49aHQubGVuZ3RoO3Q8bjt0KyspaWYoaHRbdF1bMV0uZXhlYyhzWzFdKSl7bz1odFt0XVswXSxyPSExIT09aHRbdF1bMl07YnJlYWt9aWYobnVsbD09bylyZXR1cm4gdm9pZChlLl9pc1ZhbGlkPSExKTtpZihzWzNdKXtmb3IodD0wLG49eXQubGVuZ3RoO3Q8bjt0KyspaWYoeXRbdF1bMV0uZXhlYyhzWzNdKSl7YT0oc1syXXx8IiAiKSt5dFt0XVswXTticmVha31pZihudWxsPT1hKXJldHVybiB2b2lkKGUuX2lzVmFsaWQ9ITEpfWlmKCFyJiZudWxsIT1hKXJldHVybiB2b2lkKGUuX2lzVmFsaWQ9ITEpO2lmKHNbNF0pe2lmKCFwdC5leGVjKHNbNF0pKXJldHVybiB2b2lkKGUuX2lzVmFsaWQ9ITEpO2k9IloifWUuX2Y9bysoYXx8IiIpKyhpfHwiIiksRXQoZSl9ZWxzZSBlLl9pc1ZhbGlkPSExfXZhciBndD0vXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9ccyk/KFxkezEsMn0pXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXHMoXGR7Miw0fSlccyhcZFxkKTooXGRcZCkoPzo6KFxkXGQpKT9ccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoWystXVxkezR9KSkkLztmdW5jdGlvbiBidChlKXt2YXIgdD1wYXJzZUludChlLDEwKTtyZXR1cm4gdDw9NDk/MmUzK3Q6dDw9OTk5PzE5MDArdDp0fXZhciB3dD17VVQ6MCxHTVQ6MCxFRFQ6LTI0MCxFU1Q6LTMwMCxDRFQ6LTMwMCxDU1Q6LTM2MCxNRFQ6LTM2MCxNU1Q6LTQyMCxQRFQ6LTQyMCxQU1Q6LTQ4MH07ZnVuY3Rpb24gX3QoZSl7dmFyIHQsbixyLG8sYSxpLHUscz1ndC5leGVjKGUuX2kucmVwbGFjZSgvXChbXildKlwpfFtcblx0XS9nLCIgIikucmVwbGFjZSgvKFxzXHMrKS9nLCIgIikucmVwbGFjZSgvXlxzXHMqLywiIikucmVwbGFjZSgvXHNccyokLywiIikpO2lmKHMpe3ZhciBsPSh0PXNbNF0sbj1zWzNdLHI9c1syXSxvPXNbNV0sYT1zWzZdLGk9c1s3XSx1PVtidCh0KSxTZS5pbmRleE9mKG4pLHBhcnNlSW50KHIsMTApLHBhcnNlSW50KG8sMTApLHBhcnNlSW50KGEsMTApXSxpJiZ1LnB1c2gocGFyc2VJbnQoaSwxMCkpLHUpO2lmKCFmdW5jdGlvbihlLHQsbil7cmV0dXJuIWV8fHFlLmluZGV4T2YoZSk9PT1uZXcgRGF0ZSh0WzBdLHRbMV0sdFsyXSkuZ2V0RGF5KCl8fChoKG4pLndlZWtkYXlNaXNtYXRjaD0hMCxuLl9pc1ZhbGlkPSExLCExKX0oc1sxXSxsLGUpKXJldHVybjtlLl9hPWwsZS5fdHptPWZ1bmN0aW9uKGUsdCxuKXtpZihlKXJldHVybiB3dFtlXTtpZih0KXJldHVybiAwO3ZhciByPXBhcnNlSW50KG4sMTApLG89ciUxMDA7cmV0dXJuKHItbykvMTAwKjYwK299KHNbOF0sc1s5XSxzWzEwXSksZS5fZD1SZS5hcHBseShudWxsLGUuX2EpLGUuX2Quc2V0VVRDTWludXRlcyhlLl9kLmdldFVUQ01pbnV0ZXMoKS1lLl90em0pLGgoZSkucmZjMjgyMj0hMH1lbHNlIGUuX2lzVmFsaWQ9ITF9ZnVuY3Rpb24gRXQoZSl7aWYoZS5fZiE9PW8uSVNPXzg2MDEpaWYoZS5fZiE9PW8uUkZDXzI4MjIpe2UuX2E9W10saChlKS5lbXB0eT0hMDt2YXIgdCxuLHIsYSxpLHU9IiIrZS5faSxzPXUubGVuZ3RoLGw9MDtmb3Iocj1ZKGUuX2YsZS5fbG9jYWxlKS5tYXRjaCh6KXx8W10sdD0wO3Q8ci5sZW5ndGg7dCsrKWE9clt0XSwobj0odS5tYXRjaChmZShhLGUpKXx8W10pWzBdKSYmKChpPXUuc3Vic3RyKDAsdS5pbmRleE9mKG4pKSkubGVuZ3RoPjAmJmgoZSkudW51c2VkSW5wdXQucHVzaChpKSx1PXUuc2xpY2UodS5pbmRleE9mKG4pK24ubGVuZ3RoKSxsKz1uLmxlbmd0aCksVlthXT8obj9oKGUpLmVtcHR5PSExOmgoZSkudW51c2VkVG9rZW5zLnB1c2goYSksbWUoYSxuLGUpKTplLl9zdHJpY3QmJiFuJiZoKGUpLnVudXNlZFRva2Vucy5wdXNoKGEpO2goZSkuY2hhcnNMZWZ0T3Zlcj1zLWwsdS5sZW5ndGg+MCYmaChlKS51bnVzZWRJbnB1dC5wdXNoKHUpLGUuX2FbM108PTEyJiYhMD09PWgoZSkuYmlnSG91ciYmZS5fYVszXT4wJiYoaChlKS5iaWdIb3VyPXZvaWQgMCksaChlKS5wYXJzZWREYXRlUGFydHM9ZS5fYS5zbGljZSgwKSxoKGUpLm1lcmlkaWVtPWUuX21lcmlkaWVtLGUuX2FbM109ZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiBudWxsPT1uP3Q6bnVsbCE9ZS5tZXJpZGllbUhvdXI/ZS5tZXJpZGllbUhvdXIodCxuKTpudWxsIT1lLmlzUE0/KChyPWUuaXNQTShuKSkmJnQ8MTImJih0Kz0xMikscnx8MTIhPT10fHwodD0wKSx0KTp0fShlLl9sb2NhbGUsZS5fYVszXSxlLl9tZXJpZGllbSksY3QoZSksc3QoZSl9ZWxzZSBfdChlKTtlbHNlIHZ0KGUpfWZ1bmN0aW9uIE90KGUpe3ZhciB0PWUuX2ksbj1lLl9mO3JldHVybiBlLl9sb2NhbGU9ZS5fbG9jYWxlfHx1dChlLl9sKSxudWxsPT09dHx8dm9pZCAwPT09biYmIiI9PT10P20oe251bGxJbnB1dDohMH0pOigic3RyaW5nIj09dHlwZW9mIHQmJihlLl9pPXQ9ZS5fbG9jYWxlLnByZXBhcnNlKHQpKSxfKHQpP25ldyB3KHN0KHQpKToobCh0KT9lLl9kPXQ6YShuKT9mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhO2lmKDA9PT1lLl9mLmxlbmd0aClyZXR1cm4gaChlKS5pbnZhbGlkRm9ybWF0PSEwLHZvaWQoZS5fZD1uZXcgRGF0ZShOYU4pKTtmb3Iobz0wO288ZS5fZi5sZW5ndGg7bysrKWE9MCx0PWcoe30sZSksbnVsbCE9ZS5fdXNlVVRDJiYodC5fdXNlVVRDPWUuX3VzZVVUQyksdC5fZj1lLl9mW29dLEV0KHQpLHkodCkmJihhKz1oKHQpLmNoYXJzTGVmdE92ZXIsYSs9MTAqaCh0KS51bnVzZWRUb2tlbnMubGVuZ3RoLGgodCkuc2NvcmU9YSwobnVsbD09cnx8YTxyKSYmKHI9YSxuPXQpKTtkKGUsbnx8dCl9KGUpOm4/RXQoZSk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5faTt1KHQpP2UuX2Q9bmV3IERhdGUoby5ub3coKSk6bCh0KT9lLl9kPW5ldyBEYXRlKHQudmFsdWVPZigpKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSl7dmFyIHQ9bXQuZXhlYyhlLl9pKTtudWxsPT09dD8odnQoZSksITE9PT1lLl9pc1ZhbGlkJiYoZGVsZXRlIGUuX2lzVmFsaWQsX3QoZSksITE9PT1lLl9pc1ZhbGlkJiYoZGVsZXRlIGUuX2lzVmFsaWQsby5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhlKSkpKTplLl9kPW5ldyBEYXRlKCt0WzFdKX0oZSk6YSh0KT8oZS5fYT1jKHQuc2xpY2UoMCksKGZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChlLDEwKX0pKSxjdChlKSk6aSh0KT9mdW5jdGlvbihlKXtpZighZS5fZCl7dmFyIHQ9SShlLl9pKTtlLl9hPWMoW3QueWVhcix0Lm1vbnRoLHQuZGF5fHx0LmRhdGUsdC5ob3VyLHQubWludXRlLHQuc2Vjb25kLHQubWlsbGlzZWNvbmRdLChmdW5jdGlvbihlKXtyZXR1cm4gZSYmcGFyc2VJbnQoZSwxMCl9KSksY3QoZSl9fShlKTpzKHQpP2UuX2Q9bmV3IERhdGUodCk6by5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhlKX0oZSkseShlKXx8KGUuX2Q9bnVsbCksZSkpfWZ1bmN0aW9uIGt0KGUsdCxuLHIsbyl7dmFyIHUscz17fTtyZXR1cm4hMCE9PW4mJiExIT09bnx8KHI9bixuPXZvaWQgMCksKGkoZSkmJmZ1bmN0aW9uKGUpe2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKXJldHVybiAwPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkubGVuZ3RoO3ZhciB0O2Zvcih0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSl8fGEoZSkmJjA9PT1lLmxlbmd0aCkmJihlPXZvaWQgMCkscy5faXNBTW9tZW50T2JqZWN0PSEwLHMuX3VzZVVUQz1zLl9pc1VUQz1vLHMuX2w9bixzLl9pPWUscy5fZj10LHMuX3N0cmljdD1yLCh1PW5ldyB3KHN0KE90KHMpKSkpLl9uZXh0RGF5JiYodS5hZGQoMSwiZCIpLHUuX25leHREYXk9dm9pZCAwKSx1fWZ1bmN0aW9uIEN0KGUsdCxuLHIpe3JldHVybiBrdChlLHQsbixyLCExKX1vLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrPXgoInZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCB3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlIGRpc2NvdXJhZ2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgbWFqb3IgcmVsZWFzZS4gUGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4iLChmdW5jdGlvbihlKXtlLl9kPW5ldyBEYXRlKGUuX2krKGUuX3VzZVVUQz8iIFVUQyI6IiIpKX0pKSxvLklTT184NjAxPWZ1bmN0aW9uKCl7fSxvLlJGQ18yODIyPWZ1bmN0aW9uKCl7fTt2YXIgeHQ9eCgibW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8iLChmdW5jdGlvbigpe3ZhciBlPUN0LmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJmUuaXNWYWxpZCgpP2U8dGhpcz90aGlzOmU6bSgpfSkpLFN0PXgoIm1vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIiwoZnVuY3Rpb24oKXt2YXIgZT1DdC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZlLmlzVmFsaWQoKT9lPnRoaXM/dGhpczplOm0oKX0pKTtmdW5jdGlvbiBEdChlLHQpe3ZhciBuLHI7aWYoMT09PXQubGVuZ3RoJiZhKHRbMF0pJiYodD10WzBdKSwhdC5sZW5ndGgpcmV0dXJuIEN0KCk7Zm9yKG49dFswXSxyPTE7cjx0Lmxlbmd0aDsrK3IpdFtyXS5pc1ZhbGlkKCkmJiF0W3JdW2VdKG4pfHwobj10W3JdKTtyZXR1cm4gbn12YXIgVHQ9WyJ5ZWFyIiwicXVhcnRlciIsIm1vbnRoIiwid2VlayIsImRheSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCJdO2Z1bmN0aW9uIE10KGUpe3ZhciB0PUkoZSksbj10LnllYXJ8fDAscj10LnF1YXJ0ZXJ8fDAsbz10Lm1vbnRofHwwLGE9dC53ZWVrfHx0Lmlzb1dlZWt8fDAsaT10LmRheXx8MCx1PXQuaG91cnx8MCxzPXQubWludXRlfHwwLGw9dC5zZWNvbmR8fDAsYz10Lm1pbGxpc2Vjb25kfHwwO3RoaXMuX2lzVmFsaWQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpaWYoLTE9PT1iZS5jYWxsKFR0LHQpfHxudWxsIT1lW3RdJiZpc05hTihlW3RdKSlyZXR1cm4hMTtmb3IodmFyIG49ITEscj0wO3I8VHQubGVuZ3RoOysrcilpZihlW1R0W3JdXSl7aWYobilyZXR1cm4hMTtwYXJzZUZsb2F0KGVbVHRbcl1dKSE9PU8oZVtUdFtyXV0pJiYobj0hMCl9cmV0dXJuITB9KHQpLHRoaXMuX21pbGxpc2Vjb25kcz0rYysxZTMqbCs2ZTQqcysxZTMqdSo2MCo2MCx0aGlzLl9kYXlzPStpKzcqYSx0aGlzLl9tb250aHM9K28rMypyKzEyKm4sdGhpcy5fZGF0YT17fSx0aGlzLl9sb2NhbGU9dXQoKSx0aGlzLl9idWJibGUoKX1mdW5jdGlvbiBQdChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIE10fWZ1bmN0aW9uIE50KGUpe3JldHVybiBlPDA/LTEqTWF0aC5yb3VuZCgtMSplKTpNYXRoLnJvdW5kKGUpfWZ1bmN0aW9uIGp0KGUsdCl7VShlLDAsMCwoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnV0Y09mZnNldCgpLG49IisiO3JldHVybiBlPDAmJihlPS1lLG49Ii0iKSxuK0Iofn4oZS82MCksMikrdCtCKH5+ZSU2MCwyKX0pKX1qdCgiWiIsIjoiKSxqdCgiWloiLCIiKSxjZSgiWiIsdWUpLGNlKCJaWiIsdWUpLGhlKFsiWiIsIlpaIl0sKGZ1bmN0aW9uKGUsdCxuKXtuLl91c2VVVEM9ITAsbi5fdHptPVJ0KHVlLGUpfSkpO3ZhciBMdD0vKFtcK1wtXXxcZFxkKS9naTtmdW5jdGlvbiBSdChlLHQpe3ZhciBuPSh0fHwiIikubWF0Y2goZSk7aWYobnVsbD09PW4pcmV0dXJuIG51bGw7dmFyIHI9KChuW24ubGVuZ3RoLTFdfHxbXSkrIiIpLm1hdGNoKEx0KXx8WyItIiwwLDBdLG89NjAqclsxXStPKHJbMl0pO3JldHVybiAwPT09bz8wOiIrIj09PXJbMF0/bzotb31mdW5jdGlvbiBJdChlLHQpe3ZhciBuLHI7cmV0dXJuIHQuX2lzVVRDPyhuPXQuY2xvbmUoKSxyPShfKGUpfHxsKGUpP2UudmFsdWVPZigpOkN0KGUpLnZhbHVlT2YoKSktbi52YWx1ZU9mKCksbi5fZC5zZXRUaW1lKG4uX2QudmFsdWVPZigpK3IpLG8udXBkYXRlT2Zmc2V0KG4sITEpLG4pOkN0KGUpLmxvY2FsKCl9ZnVuY3Rpb24gQXQoZSl7cmV0dXJuIDE1Ki1NYXRoLnJvdW5kKGUuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKS8xNSl9ZnVuY3Rpb24gRnQoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiZ0aGlzLl9pc1VUQyYmMD09PXRoaXMuX29mZnNldH1vLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe307dmFyIEJ0PS9eKFwtfFwrKT8oPzooXGQqKVsuIF0pPyhcZCspXDooXGQrKSg/Olw6KFxkKykoXC5cZCopPyk/JC8senQ9L14oLXxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO2Z1bmN0aW9uIEt0KGUsdCl7dmFyIG4scixvLGEsaSx1LGw9ZSxjPW51bGw7cmV0dXJuIFB0KGUpP2w9e21zOmUuX21pbGxpc2Vjb25kcyxkOmUuX2RheXMsTTplLl9tb250aHN9OnMoZSk/KGw9e30sdD9sW3RdPWU6bC5taWxsaXNlY29uZHM9ZSk6KGM9QnQuZXhlYyhlKSk/KG49Ii0iPT09Y1sxXT8tMToxLGw9e3k6MCxkOk8oY1syXSkqbixoOk8oY1szXSkqbixtOk8oY1s0XSkqbixzOk8oY1s1XSkqbixtczpPKE50KDFlMypjWzZdKSkqbn0pOihjPXp0LmV4ZWMoZSkpPyhuPSItIj09PWNbMV0/LTE6MSxsPXt5OnF0KGNbMl0sbiksTTpxdChjWzNdLG4pLHc6cXQoY1s0XSxuKSxkOnF0KGNbNV0sbiksaDpxdChjWzZdLG4pLG06cXQoY1s3XSxuKSxzOnF0KGNbOF0sbil9KTpudWxsPT1sP2w9e306Im9iamVjdCI9PXR5cGVvZiBsJiYoImZyb20iaW4gbHx8InRvImluIGwpJiYoYT1DdChsLmZyb20pLGk9Q3QobC50byksbz1hLmlzVmFsaWQoKSYmaS5pc1ZhbGlkKCk/KGk9SXQoaSxhKSxhLmlzQmVmb3JlKGkpP3U9VnQoYSxpKTooKHU9VnQoaSxhKSkubWlsbGlzZWNvbmRzPS11Lm1pbGxpc2Vjb25kcyx1Lm1vbnRocz0tdS5tb250aHMpLHUpOnttaWxsaXNlY29uZHM6MCxtb250aHM6MH0sKGw9e30pLm1zPW8ubWlsbGlzZWNvbmRzLGwuTT1vLm1vbnRocykscj1uZXcgTXQobCksUHQoZSkmJmYoZSwiX2xvY2FsZSIpJiYoci5fbG9jYWxlPWUuX2xvY2FsZSkscn1mdW5jdGlvbiBxdChlLHQpe3ZhciBuPWUmJnBhcnNlRmxvYXQoZS5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1cm4oaXNOYU4obik/MDpuKSp0fWZ1bmN0aW9uIFZ0KGUsdCl7dmFyIG49e307cmV0dXJuIG4ubW9udGhzPXQubW9udGgoKS1lLm1vbnRoKCkrMTIqKHQueWVhcigpLWUueWVhcigpKSxlLmNsb25lKCkuYWRkKG4ubW9udGhzLCJNIikuaXNBZnRlcih0KSYmLS1uLm1vbnRocyxuLm1pbGxpc2Vjb25kcz0rdC0rZS5jbG9uZSgpLmFkZChuLm1vbnRocywiTSIpLG59ZnVuY3Rpb24gVXQoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgbztyZXR1cm4gbnVsbD09PXJ8fGlzTmFOKCtyKXx8KFQodCwibW9tZW50KCkuIit0KyIocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuIit0KyIobnVtYmVyLCBwZXJpb2QpLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9hZGQtaW52ZXJ0ZWQtcGFyYW0vIGZvciBtb3JlIGluZm8uIiksbz1uLG49cixyPW8pLFd0KHRoaXMsS3Qobj0ic3RyaW5nIj09dHlwZW9mIG4/K246bixyKSxlKSx0aGlzfX1mdW5jdGlvbiBXdChlLHQsbixyKXt2YXIgYT10Ll9taWxsaXNlY29uZHMsaT1OdCh0Ll9kYXlzKSx1PU50KHQuX21vbnRocyk7ZS5pc1ZhbGlkKCkmJihyPW51bGw9PXJ8fHIsdSYmVGUoZSxFZShlLCJNb250aCIpK3UqbiksaSYmT2UoZSwiRGF0ZSIsRWUoZSwiRGF0ZSIpK2kqbiksYSYmZS5fZC5zZXRUaW1lKGUuX2QudmFsdWVPZigpK2EqbiksciYmby51cGRhdGVPZmZzZXQoZSxpfHx1KSl9S3QuZm49TXQucHJvdG90eXBlLEt0LmludmFsaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gS3QoTmFOKX07dmFyIFl0PVV0KDEsImFkZCIpLEh0PVV0KC0xLCJzdWJ0cmFjdCIpO2Z1bmN0aW9uIEd0KGUsdCl7dmFyIG49MTIqKHQueWVhcigpLWUueWVhcigpKSsodC5tb250aCgpLWUubW9udGgoKSkscj1lLmNsb25lKCkuYWRkKG4sIm1vbnRocyIpO3JldHVybi0obisodC1yPDA/KHQtcikvKHItZS5jbG9uZSgpLmFkZChuLTEsIm1vbnRocyIpKToodC1yKS8oZS5jbG9uZSgpLmFkZChuKzEsIm1vbnRocyIpLXIpKSl8fDB9ZnVuY3Rpb24gUXQoZSl7dmFyIHQ7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5fbG9jYWxlLl9hYmJyOihudWxsIT0odD11dChlKSkmJih0aGlzLl9sb2NhbGU9dCksdGhpcyl9by5kZWZhdWx0Rm9ybWF0PSJZWVlZLU1NLUREVEhIOm1tOnNzWiIsby5kZWZhdWx0Rm9ybWF0VXRjPSJZWVlZLU1NLUREVEhIOm1tOnNzW1pdIjt2YXIgSnQ9eCgibW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4iLChmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT90aGlzLmxvY2FsZURhdGEoKTp0aGlzLmxvY2FsZShlKX0pKTtmdW5jdGlvbiBadCgpe3JldHVybiB0aGlzLl9sb2NhbGV9ZnVuY3Rpb24gJHQoZSx0KXtyZXR1cm4oZSV0K3QpJXR9ZnVuY3Rpb24gWHQoZSx0LG4pe3JldHVybiBlPDEwMCYmZT49MD9uZXcgRGF0ZShlKzQwMCx0LG4pLTEyNjIyNzgwOGU1Om5ldyBEYXRlKGUsdCxuKS52YWx1ZU9mKCl9ZnVuY3Rpb24gZW4oZSx0LG4pe3JldHVybiBlPDEwMCYmZT49MD9EYXRlLlVUQyhlKzQwMCx0LG4pLTEyNjIyNzgwOGU1OkRhdGUuVVRDKGUsdCxuKX1mdW5jdGlvbiB0bihlLHQpe1UoMCxbZSxlLmxlbmd0aF0sMCx0KX1mdW5jdGlvbiBubihlLHQsbixyLG8pe3ZhciBhO3JldHVybiBudWxsPT1lP0ZlKHRoaXMscixvKS55ZWFyOih0PihhPUJlKGUscixvKSkmJih0PWEpLHJuLmNhbGwodGhpcyxlLHQsbixyLG8pKX1mdW5jdGlvbiBybihlLHQsbixyLG8pe3ZhciBhPUFlKGUsdCxuLHIsbyksaT1SZShhLnllYXIsMCxhLmRheU9mWWVhcik7cmV0dXJuIHRoaXMueWVhcihpLmdldFVUQ0Z1bGxZZWFyKCkpLHRoaXMubW9udGgoaS5nZXRVVENNb250aCgpKSx0aGlzLmRhdGUoaS5nZXRVVENEYXRlKCkpLHRoaXN9VSgwLFsiZ2ciLDJdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2Vla1llYXIoKSUxMDB9KSksVSgwLFsiR0ciLDJdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSUxMDB9KSksdG4oImdnZ2ciLCJ3ZWVrWWVhciIpLHRuKCJnZ2dnZyIsIndlZWtZZWFyIiksdG4oIkdHR0ciLCJpc29XZWVrWWVhciIpLHRuKCJHR0dHRyIsImlzb1dlZWtZZWFyIiksTCgid2Vla1llYXIiLCJnZyIpLEwoImlzb1dlZWtZZWFyIiwiR0ciKSxGKCJ3ZWVrWWVhciIsMSksRigiaXNvV2Vla1llYXIiLDEpLGNlKCJHIixhZSksY2UoImciLGFlKSxjZSgiR0ciLCQsRyksY2UoImdnIiwkLEcpLGNlKCJHR0dHIixuZSxKKSxjZSgiZ2dnZyIsbmUsSiksY2UoIkdHR0dHIixyZSxaKSxjZSgiZ2dnZ2ciLHJlLFopLHllKFsiZ2dnZyIsImdnZ2dnIiwiR0dHRyIsIkdHR0dHIl0sKGZ1bmN0aW9uKGUsdCxuLHIpe3Rbci5zdWJzdHIoMCwyKV09TyhlKX0pKSx5ZShbImdnIiwiR0ciXSwoZnVuY3Rpb24oZSx0LG4scil7dFtyXT1vLnBhcnNlVHdvRGlnaXRZZWFyKGUpfSkpLFUoIlEiLDAsIlFvIiwicXVhcnRlciIpLEwoInF1YXJ0ZXIiLCJRIiksRigicXVhcnRlciIsNyksY2UoIlEiLEgpLGhlKCJRIiwoZnVuY3Rpb24oZSx0KXt0WzFdPTMqKE8oZSktMSl9KSksVSgiRCIsWyJERCIsMl0sIkRvIiwiZGF0ZSIpLEwoImRhdGUiLCJEIiksRigiZGF0ZSIsOSksY2UoIkQiLCQpLGNlKCJERCIsJCxHKSxjZSgiRG8iLChmdW5jdGlvbihlLHQpe3JldHVybiBlP3QuX2RheU9mTW9udGhPcmRpbmFsUGFyc2V8fHQuX29yZGluYWxQYXJzZTp0Ll9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudH0pKSxoZShbIkQiLCJERCJdLDIpLGhlKCJEbyIsKGZ1bmN0aW9uKGUsdCl7dFsyXT1PKGUubWF0Y2goJClbMF0pfSkpO3ZhciBvbj1fZSgiRGF0ZSIsITApO1UoIkRERCIsWyJEREREIiwzXSwiREREbyIsImRheU9mWWVhciIpLEwoImRheU9mWWVhciIsIkRERCIpLEYoImRheU9mWWVhciIsNCksY2UoIkRERCIsdGUpLGNlKCJEREREIixRKSxoZShbIkRERCIsIkREREQiXSwoZnVuY3Rpb24oZSx0LG4pe24uX2RheU9mWWVhcj1PKGUpfSkpLFUoIm0iLFsibW0iLDJdLDAsIm1pbnV0ZSIpLEwoIm1pbnV0ZSIsIm0iKSxGKCJtaW51dGUiLDE0KSxjZSgibSIsJCksY2UoIm1tIiwkLEcpLGhlKFsibSIsIm1tIl0sNCk7dmFyIGFuPV9lKCJNaW51dGVzIiwhMSk7VSgicyIsWyJzcyIsMl0sMCwic2Vjb25kIiksTCgic2Vjb25kIiwicyIpLEYoInNlY29uZCIsMTUpLGNlKCJzIiwkKSxjZSgic3MiLCQsRyksaGUoWyJzIiwic3MiXSw1KTt2YXIgdW4sc249X2UoIlNlY29uZHMiLCExKTtmb3IoVSgiUyIsMCwwLChmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQoKS8xMDApfSkpLFUoMCxbIlNTIiwyXSwwLChmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQoKS8xMCl9KSksVSgwLFsiU1NTIiwzXSwwLCJtaWxsaXNlY29uZCIpLFUoMCxbIlNTU1MiLDRdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDEwKnRoaXMubWlsbGlzZWNvbmQoKX0pKSxVKDAsWyJTU1NTUyIsNV0sMCwoZnVuY3Rpb24oKXtyZXR1cm4gMTAwKnRoaXMubWlsbGlzZWNvbmQoKX0pKSxVKDAsWyJTU1NTU1MiLDZdLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDFlMyp0aGlzLm1pbGxpc2Vjb25kKCl9KSksVSgwLFsiU1NTU1NTUyIsN10sMCwoZnVuY3Rpb24oKXtyZXR1cm4gMWU0KnRoaXMubWlsbGlzZWNvbmQoKX0pKSxVKDAsWyJTU1NTU1NTUyIsOF0sMCwoZnVuY3Rpb24oKXtyZXR1cm4gMWU1KnRoaXMubWlsbGlzZWNvbmQoKX0pKSxVKDAsWyJTU1NTU1NTU1MiLDldLDAsKGZ1bmN0aW9uKCl7cmV0dXJuIDFlNip0aGlzLm1pbGxpc2Vjb25kKCl9KSksTCgibWlsbGlzZWNvbmQiLCJtcyIpLEYoIm1pbGxpc2Vjb25kIiwxNiksY2UoIlMiLHRlLEgpLGNlKCJTUyIsdGUsRyksY2UoIlNTUyIsdGUsUSksdW49IlNTU1MiO3VuLmxlbmd0aDw9OTt1bis9IlMiKWNlKHVuLG9lKTtmdW5jdGlvbiBsbihlLHQpe3RbNl09TygxZTMqKCIwLiIrZSkpfWZvcih1bj0iUyI7dW4ubGVuZ3RoPD05O3VuKz0iUyIpaGUodW4sbG4pO3ZhciBjbj1fZSgiTWlsbGlzZWNvbmRzIiwhMSk7VSgieiIsMCwwLCJ6b25lQWJiciIpLFUoInp6IiwwLDAsInpvbmVOYW1lIik7dmFyIGZuPXcucHJvdG90eXBlO2Z1bmN0aW9uIGRuKGUpe3JldHVybiBlfWZuLmFkZD1ZdCxmbi5jYWxlbmRhcj1mdW5jdGlvbihlLHQpe3ZhciBuPWV8fEN0KCkscj1JdChuLHRoaXMpLnN0YXJ0T2YoImRheSIpLGE9by5jYWxlbmRhckZvcm1hdCh0aGlzLHIpfHwic2FtZUVsc2UiLGk9dCYmKE0odFthXSk/dFthXS5jYWxsKHRoaXMsbik6dFthXSk7cmV0dXJuIHRoaXMuZm9ybWF0KGl8fHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGEsdGhpcyxDdChuKSkpfSxmbi5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgdyh0aGlzKX0sZm4uZGlmZj1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gTmFOO2lmKCEocj1JdChlLHRoaXMpKS5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtzd2l0Y2gobz02ZTQqKHIudXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSksdD1SKHQpKXtjYXNlInllYXIiOmE9R3QodGhpcyxyKS8xMjticmVhaztjYXNlIm1vbnRoIjphPUd0KHRoaXMscik7YnJlYWs7Y2FzZSJxdWFydGVyIjphPUd0KHRoaXMscikvMzticmVhaztjYXNlInNlY29uZCI6YT0odGhpcy1yKS8xZTM7YnJlYWs7Y2FzZSJtaW51dGUiOmE9KHRoaXMtcikvNmU0O2JyZWFrO2Nhc2UiaG91ciI6YT0odGhpcy1yKS8zNmU1O2JyZWFrO2Nhc2UiZGF5IjphPSh0aGlzLXItbykvODY0ZTU7YnJlYWs7Y2FzZSJ3ZWVrIjphPSh0aGlzLXItbykvNjA0OGU1O2JyZWFrO2RlZmF1bHQ6YT10aGlzLXJ9cmV0dXJuIG4/YTpFKGEpfSxmbi5lbmRPZj1mdW5jdGlvbihlKXt2YXIgdDtpZih2b2lkIDA9PT0oZT1SKGUpKXx8Im1pbGxpc2Vjb25kIj09PWV8fCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl9pc1VUQz9lbjpYdDtzd2l0Y2goZSl7Y2FzZSJ5ZWFyIjp0PW4odGhpcy55ZWFyKCkrMSwwLDEpLTE7YnJlYWs7Y2FzZSJxdWFydGVyIjp0PW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLXRoaXMubW9udGgoKSUzKzMsMSktMTticmVhaztjYXNlIm1vbnRoIjp0PW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpKzEsMSktMTticmVhaztjYXNlIndlZWsiOnQ9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktdGhpcy53ZWVrZGF5KCkrNyktMTticmVhaztjYXNlImlzb1dlZWsiOnQ9bih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktKHRoaXMuaXNvV2Vla2RheSgpLTEpKzcpLTE7YnJlYWs7Y2FzZSJkYXkiOmNhc2UiZGF0ZSI6dD1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSsxKS0xO2JyZWFrO2Nhc2UiaG91ciI6dD10aGlzLl9kLnZhbHVlT2YoKSx0Kz0zNmU1LSR0KHQrKHRoaXMuX2lzVVRDPzA6NmU0KnRoaXMudXRjT2Zmc2V0KCkpLDM2ZTUpLTE7YnJlYWs7Y2FzZSJtaW51dGUiOnQ9dGhpcy5fZC52YWx1ZU9mKCksdCs9NmU0LSR0KHQsNmU0KS0xO2JyZWFrO2Nhc2Uic2Vjb25kIjp0PXRoaXMuX2QudmFsdWVPZigpLHQrPTFlMy0kdCh0LDFlMyktMX1yZXR1cm4gdGhpcy5fZC5zZXRUaW1lKHQpLG8udXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXN9LGZuLmZvcm1hdD1mdW5jdGlvbihlKXtlfHwoZT10aGlzLmlzVXRjKCk/by5kZWZhdWx0Rm9ybWF0VXRjOm8uZGVmYXVsdEZvcm1hdCk7dmFyIHQ9Vyh0aGlzLGUpO3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KHQpfSxmbi5mcm9tPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoXyhlKSYmZS5pc1ZhbGlkKCl8fEN0KGUpLmlzVmFsaWQoKSk/S3Qoe3RvOnRoaXMsZnJvbTplfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF0KTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxmbi5mcm9tTm93PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZyb20oQ3QoKSxlKX0sZm4udG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJihfKGUpJiZlLmlzVmFsaWQoKXx8Q3QoZSkuaXNWYWxpZCgpKT9LdCh7ZnJvbTp0aGlzLHRvOmV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXQpOnRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCl9LGZuLnRvTm93PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRvKEN0KCksZSl9LGZuLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gTSh0aGlzW2U9UihlKV0pP3RoaXNbZV0oKTp0aGlzfSxmbi5pbnZhbGlkQXQ9ZnVuY3Rpb24oKXtyZXR1cm4gaCh0aGlzKS5vdmVyZmxvd30sZm4uaXNBZnRlcj1mdW5jdGlvbihlLHQpe3ZhciBuPV8oZSk/ZTpDdChlKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IW4uaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9PT0odD1SKHQpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKT5uLnZhbHVlT2YoKTpuLnZhbHVlT2YoKTx0aGlzLmNsb25lKCkuc3RhcnRPZih0KS52YWx1ZU9mKCkpfSxmbi5pc0JlZm9yZT1mdW5jdGlvbihlLHQpe3ZhciBuPV8oZSk/ZTpDdChlKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IW4uaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9PT0odD1SKHQpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKTxuLnZhbHVlT2YoKTp0aGlzLmNsb25lKCkuZW5kT2YodCkudmFsdWVPZigpPG4udmFsdWVPZigpKX0sZm4uaXNCZXR3ZWVuPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPV8oZSk/ZTpDdChlKSxhPV8odCk/dDpDdCh0KTtyZXR1cm4hISh0aGlzLmlzVmFsaWQoKSYmby5pc1ZhbGlkKCkmJmEuaXNWYWxpZCgpKSYmKCIoIj09PShyPXJ8fCIoKSIpWzBdP3RoaXMuaXNBZnRlcihvLG4pOiF0aGlzLmlzQmVmb3JlKG8sbikpJiYoIikiPT09clsxXT90aGlzLmlzQmVmb3JlKGEsbik6IXRoaXMuaXNBZnRlcihhLG4pKX0sZm4uaXNTYW1lPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1fKGUpP2U6Q3QoZSk7cmV0dXJuISghdGhpcy5pc1ZhbGlkKCl8fCFyLmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KHQ9Uih0KXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk9PT1yLnZhbHVlT2YoKToobj1yLnZhbHVlT2YoKSx0aGlzLmNsb25lKCkuc3RhcnRPZih0KS52YWx1ZU9mKCk8PW4mJm48PXRoaXMuY2xvbmUoKS5lbmRPZih0KS52YWx1ZU9mKCkpKX0sZm4uaXNTYW1lT3JBZnRlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlzU2FtZShlLHQpfHx0aGlzLmlzQWZ0ZXIoZSx0KX0sZm4uaXNTYW1lT3JCZWZvcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5pc1NhbWUoZSx0KXx8dGhpcy5pc0JlZm9yZShlLHQpfSxmbi5pc1ZhbGlkPWZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcyl9LGZuLmxhbmc9SnQsZm4ubG9jYWxlPVF0LGZuLmxvY2FsZURhdGE9WnQsZm4ubWF4PVN0LGZuLm1pbj14dCxmbi5wYXJzaW5nRmxhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gZCh7fSxoKHRoaXMpKX0sZm4uc2V0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCI9PXR5cGVvZiBlKWZvcih2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFyIG4gaW4gZSl0LnB1c2goe3VuaXQ6bixwcmlvcml0eTpBW25dfSk7cmV0dXJuIHQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5wcmlvcml0eS10LnByaW9yaXR5fSkpLHR9KGU9SShlKSkscj0wO3I8bi5sZW5ndGg7cisrKXRoaXNbbltyXS51bml0XShlW25bcl0udW5pdF0pO2Vsc2UgaWYoTSh0aGlzW2U9UihlKV0pKXJldHVybiB0aGlzW2VdKHQpO3JldHVybiB0aGlzfSxmbi5zdGFydE9mPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKHZvaWQgMD09PShlPVIoZSkpfHwibWlsbGlzZWNvbmQiPT09ZXx8IXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzO3ZhciBuPXRoaXMuX2lzVVRDP2VuOlh0O3N3aXRjaChlKXtjYXNlInllYXIiOnQ9bih0aGlzLnllYXIoKSwwLDEpO2JyZWFrO2Nhc2UicXVhcnRlciI6dD1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKS10aGlzLm1vbnRoKCklMywxKTticmVhaztjYXNlIm1vbnRoIjp0PW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLDEpO2JyZWFrO2Nhc2Uid2VlayI6dD1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS10aGlzLndlZWtkYXkoKSk7YnJlYWs7Y2FzZSJpc29XZWVrIjp0PW4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSk7YnJlYWs7Y2FzZSJkYXkiOmNhc2UiZGF0ZSI6dD1uKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSk7YnJlYWs7Y2FzZSJob3VyIjp0PXRoaXMuX2QudmFsdWVPZigpLHQtPSR0KHQrKHRoaXMuX2lzVVRDPzA6NmU0KnRoaXMudXRjT2Zmc2V0KCkpLDM2ZTUpO2JyZWFrO2Nhc2UibWludXRlIjp0PXRoaXMuX2QudmFsdWVPZigpLHQtPSR0KHQsNmU0KTticmVhaztjYXNlInNlY29uZCI6dD10aGlzLl9kLnZhbHVlT2YoKSx0LT0kdCh0LDFlMyl9cmV0dXJuIHRoaXMuX2Quc2V0VGltZSh0KSxvLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzfSxmbi5zdWJ0cmFjdD1IdCxmbi50b0FycmF5PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm5bZS55ZWFyKCksZS5tb250aCgpLGUuZGF0ZSgpLGUuaG91cigpLGUubWludXRlKCksZS5zZWNvbmQoKSxlLm1pbGxpc2Vjb25kKCldfSxmbi50b09iamVjdD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJue3llYXJzOmUueWVhcigpLG1vbnRoczplLm1vbnRoKCksZGF0ZTplLmRhdGUoKSxob3VyczplLmhvdXJzKCksbWludXRlczplLm1pbnV0ZXMoKSxzZWNvbmRzOmUuc2Vjb25kcygpLG1pbGxpc2Vjb25kczplLm1pbGxpc2Vjb25kcygpfX0sZm4udG9EYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKX0sZm4udG9JU09TdHJpbmc9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsO3ZhciB0PSEwIT09ZSxuPXQ/dGhpcy5jbG9uZSgpLnV0YygpOnRoaXM7cmV0dXJuIG4ueWVhcigpPDB8fG4ueWVhcigpPjk5OTk/VyhuLHQ/IllZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSI6IllZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1oiKTpNKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKT90P3RoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTpuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSs2MCp0aGlzLnV0Y09mZnNldCgpKjFlMykudG9JU09TdHJpbmcoKS5yZXBsYWNlKCJaIixXKG4sIloiKSk6VyhuLHQ/IllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iOiJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWiIpfSxmbi5pbnNwZWN0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiJtb21lbnQuaW52YWxpZCgvKiAiK3RoaXMuX2krIiAqLykiO3ZhciBlPSJtb21lbnQiLHQ9IiI7dGhpcy5pc0xvY2FsKCl8fChlPTA9PT10aGlzLnV0Y09mZnNldCgpPyJtb21lbnQudXRjIjoibW9tZW50LnBhcnNlWm9uZSIsdD0iWiIpO3ZhciBuPSJbIitlKycoIl0nLHI9MDw9dGhpcy55ZWFyKCkmJnRoaXMueWVhcigpPD05OTk5PyJZWVlZIjoiWVlZWVlZIixvPXQrJ1siKV0nO3JldHVybiB0aGlzLmZvcm1hdChuK3IrIi1NTS1ERFtUXUhIOm1tOnNzLlNTUyIrbyl9LGZuLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLnRvSVNPU3RyaW5nKCk6bnVsbH0sZm4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgiZW4iKS5mb3JtYXQoImRkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaIil9LGZuLnVuaXg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKS8xZTMpfSxmbi52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QudmFsdWVPZigpLTZlNCoodGhpcy5fb2Zmc2V0fHwwKX0sZm4uY3JlYXRpb25EYXRhPWZ1bmN0aW9uKCl7cmV0dXJue2lucHV0OnRoaXMuX2ksZm9ybWF0OnRoaXMuX2YsbG9jYWxlOnRoaXMuX2xvY2FsZSxpc1VUQzp0aGlzLl9pc1VUQyxzdHJpY3Q6dGhpcy5fc3RyaWN0fX0sZm4ueWVhcj13ZSxmbi5pc0xlYXBZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIGdlKHRoaXMueWVhcigpKX0sZm4ud2Vla1llYXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5uLmNhbGwodGhpcyxlLHRoaXMud2VlaygpLHRoaXMud2Vla2RheSgpLHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpfSxmbi5pc29XZWVrWWVhcj1mdW5jdGlvbihlKXtyZXR1cm4gbm4uY2FsbCh0aGlzLGUsdGhpcy5pc29XZWVrKCksdGhpcy5pc29XZWVrZGF5KCksMSw0KX0sZm4ucXVhcnRlcj1mbi5xdWFydGVycz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9NYXRoLmNlaWwoKHRoaXMubW9udGgoKSsxKS8zKTp0aGlzLm1vbnRoKDMqKGUtMSkrdGhpcy5tb250aCgpJTMpfSxmbi5tb250aD1NZSxmbi5kYXlzSW5Nb250aD1mdW5jdGlvbigpe3JldHVybiBrZSh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCkpfSxmbi53ZWVrPWZuLndlZWtzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7cmV0dXJuIG51bGw9PWU/dDp0aGlzLmFkZCg3KihlLXQpLCJkIil9LGZuLmlzb1dlZWs9Zm4uaXNvV2Vla3M9ZnVuY3Rpb24oZSl7dmFyIHQ9RmUodGhpcywxLDQpLndlZWs7cmV0dXJuIG51bGw9PWU/dDp0aGlzLmFkZCg3KihlLXQpLCJkIil9LGZuLndlZWtzSW5ZZWFyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7cmV0dXJuIEJlKHRoaXMueWVhcigpLGUuZG93LGUuZG95KX0sZm4uaXNvV2Vla3NJblllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gQmUodGhpcy55ZWFyKCksMSw0KX0sZm4uZGF0ZT1vbixmbi5kYXk9Zm4uZGF5cz1mdW5jdGlvbihlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPWU/dGhpczpOYU47dmFyIHQ9dGhpcy5faXNVVEM/dGhpcy5fZC5nZXRVVENEYXkoKTp0aGlzLl9kLmdldERheSgpO3JldHVybiBudWxsIT1lPyhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U6aXNOYU4oZSk/Im51bWJlciI9PXR5cGVvZihlPXQud2Vla2RheXNQYXJzZShlKSk/ZTpudWxsOnBhcnNlSW50KGUsMTApfShlLHRoaXMubG9jYWxlRGF0YSgpKSx0aGlzLmFkZChlLXQsImQiKSk6dH0sZm4ud2Vla2RheT1mdW5jdGlvbihlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPWU/dGhpczpOYU47dmFyIHQ9KHRoaXMuZGF5KCkrNy10aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpJTc7cmV0dXJuIG51bGw9PWU/dDp0aGlzLmFkZChlLXQsImQiKX0sZm4uaXNvV2Vla2RheT1mdW5jdGlvbihlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPWU/dGhpczpOYU47aWYobnVsbCE9ZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/dC53ZWVrZGF5c1BhcnNlKGUpJTd8fDc6aXNOYU4oZSk/bnVsbDplfShlLHRoaXMubG9jYWxlRGF0YSgpKTtyZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSU3P3Q6dC03KX1yZXR1cm4gdGhpcy5kYXkoKXx8N30sZm4uZGF5T2ZZZWFyPWZ1bmN0aW9uKGUpe3ZhciB0PU1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS10aGlzLmNsb25lKCkuc3RhcnRPZigieWVhciIpKS84NjRlNSkrMTtyZXR1cm4gbnVsbD09ZT90OnRoaXMuYWRkKGUtdCwiZCIpfSxmbi5ob3VyPWZuLmhvdXJzPVhlLGZuLm1pbnV0ZT1mbi5taW51dGVzPWFuLGZuLnNlY29uZD1mbi5zZWNvbmRzPXNuLGZuLm1pbGxpc2Vjb25kPWZuLm1pbGxpc2Vjb25kcz1jbixmbi51dGNPZmZzZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGE9dGhpcy5fb2Zmc2V0fHwwO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9ZT90aGlzOk5hTjtpZihudWxsIT1lKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKG51bGw9PT0oZT1SdCh1ZSxlKSkpcmV0dXJuIHRoaXN9ZWxzZSBNYXRoLmFicyhlKTwxNiYmIW4mJihlKj02MCk7cmV0dXJuIXRoaXMuX2lzVVRDJiZ0JiYocj1BdCh0aGlzKSksdGhpcy5fb2Zmc2V0PWUsdGhpcy5faXNVVEM9ITAsbnVsbCE9ciYmdGhpcy5hZGQociwibSIpLGEhPT1lJiYoIXR8fHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M/V3QodGhpcyxLdChlLWEsIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCxvLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzfXJldHVybiB0aGlzLl9pc1VUQz9hOkF0KHRoaXMpfSxmbi51dGM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsZSl9LGZuLmxvY2FsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pc1VUQyYmKHRoaXMudXRjT2Zmc2V0KDAsZSksdGhpcy5faXNVVEM9ITEsZSYmdGhpcy5zdWJ0cmFjdChBdCh0aGlzKSwibSIpKSx0aGlzfSxmbi5wYXJzZVpvbmU9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLl90em0pdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCExLCEwKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5faSl7dmFyIGU9UnQoaWUsdGhpcy5faSk7bnVsbCE9ZT90aGlzLnV0Y09mZnNldChlKTp0aGlzLnV0Y09mZnNldCgwLCEwKX1yZXR1cm4gdGhpc30sZm4uaGFzQWxpZ25lZEhvdXJPZmZzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmKGU9ZT9DdChlKS51dGNPZmZzZXQoKTowLCh0aGlzLnV0Y09mZnNldCgpLWUpJTYwPT0wKX0sZm4uaXNEU1Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCl8fHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpfSxmbi5pc0xvY2FsPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmIXRoaXMuX2lzVVRDfSxmbi5pc1V0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDfSxmbi5pc1V0Yz1GdCxmbi5pc1VUQz1GdCxmbi56b25lQWJicj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1VUQz8iVVRDIjoiIn0sZm4uem9uZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEM/IkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0sZm4uZGF0ZXM9eCgiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLG9uKSxmbi5tb250aHM9eCgibW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkIixNZSksZm4ueWVhcnM9eCgieWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCIsd2UpLGZuLnpvbmU9eCgibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLChmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lPygic3RyaW5nIiE9dHlwZW9mIGUmJihlPS1lKSx0aGlzLnV0Y09mZnNldChlLHQpLHRoaXMpOi10aGlzLnV0Y09mZnNldCgpfSkpLGZuLmlzRFNUU2hpZnRlZD14KCJpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uIiwoZnVuY3Rpb24oKXtpZighdSh0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIGU9e307aWYoZyhlLHRoaXMpLChlPU90KGUpKS5fYSl7dmFyIHQ9ZS5faXNVVEM/cChlLl9hKTpDdChlLl9hKTt0aGlzLl9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJmsoZS5fYSx0LnRvQXJyYXkoKSk+MH1lbHNlIHRoaXMuX2lzRFNUU2hpZnRlZD0hMTtyZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkfSkpO3ZhciBwbj1OLnByb3RvdHlwZTtmdW5jdGlvbiBobihlLHQsbixyKXt2YXIgbz11dCgpLGE9cCgpLnNldChyLHQpO3JldHVybiBvW25dKGEsZSl9ZnVuY3Rpb24geW4oZSx0LG4pe2lmKHMoZSkmJih0PWUsZT12b2lkIDApLGU9ZXx8IiIsbnVsbCE9dClyZXR1cm4gaG4oZSx0LG4sIm1vbnRoIik7dmFyIHIsbz1bXTtmb3Iocj0wO3I8MTI7cisrKW9bcl09aG4oZSxyLG4sIm1vbnRoIik7cmV0dXJuIG99ZnVuY3Rpb24gbW4oZSx0LG4scil7ImJvb2xlYW4iPT10eXBlb2YgZT8ocyh0KSYmKG49dCx0PXZvaWQgMCksdD10fHwiIik6KG49dD1lLGU9ITEscyh0KSYmKG49dCx0PXZvaWQgMCksdD10fHwiIik7dmFyIG8sYT11dCgpLGk9ZT9hLl93ZWVrLmRvdzowO2lmKG51bGwhPW4pcmV0dXJuIGhuKHQsKG4raSklNyxyLCJkYXkiKTt2YXIgdT1bXTtmb3Iobz0wO288NztvKyspdVtvXT1obih0LChvK2kpJTcsciwiZGF5Iik7cmV0dXJuIHV9cG4uY2FsZW5kYXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2NhbGVuZGFyW2VdfHx0aGlzLl9jYWxlbmRhci5zYW1lRWxzZTtyZXR1cm4gTShyKT9yLmNhbGwodCxuKTpyfSxwbi5sb25nRGF0ZUZvcm1hdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9sb25nRGF0ZUZvcm1hdFtlXSxuPXRoaXMuX2xvbmdEYXRlRm9ybWF0W2UudG9VcHBlckNhc2UoKV07cmV0dXJuIHR8fCFuP3Q6KHRoaXMuX2xvbmdEYXRlRm9ybWF0W2VdPW4ucmVwbGFjZSgvTU1NTXxNTXxERHxkZGRkL2csKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpfSkpLHRoaXMuX2xvbmdEYXRlRm9ybWF0W2VdKX0scG4uaW52YWxpZERhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW52YWxpZERhdGV9LHBuLm9yZGluYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLGUpfSxwbi5wcmVwYXJzZT1kbixwbi5wb3N0Zm9ybWF0PWRuLHBuLnJlbGF0aXZlVGltZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlzLl9yZWxhdGl2ZVRpbWVbbl07cmV0dXJuIE0obyk/byhlLHQsbixyKTpvLnJlcGxhY2UoLyVkL2ksZSl9LHBuLnBhc3RGdXR1cmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9yZWxhdGl2ZVRpbWVbZT4wPyJmdXR1cmUiOiJwYXN0Il07cmV0dXJuIE0obik/bih0KTpuLnJlcGxhY2UoLyVzL2ksdCl9LHBuLnNldD1mdW5jdGlvbihlKXt2YXIgdCxuO2ZvcihuIGluIGUpTSh0PWVbbl0pP3RoaXNbbl09dDp0aGlzWyJfIituXT10O3RoaXMuX2NvbmZpZz1lLHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50PW5ldyBSZWdFeHAoKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlfHx0aGlzLl9vcmRpbmFsUGFyc2Uuc291cmNlKSsifCIrL1xkezEsMn0vLnNvdXJjZSl9LHBuLm1vbnRocz1mdW5jdGlvbihlLHQpe3JldHVybiBlP2EodGhpcy5fbW9udGhzKT90aGlzLl9tb250aHNbZS5tb250aCgpXTp0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdHx8Q2UpLnRlc3QodCk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXVtlLm1vbnRoKCldOmEodGhpcy5fbW9udGhzKT90aGlzLl9tb250aHM6dGhpcy5fbW9udGhzLnN0YW5kYWxvbmV9LHBuLm1vbnRoc1Nob3J0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU/YSh0aGlzLl9tb250aHNTaG9ydCk/dGhpcy5fbW9udGhzU2hvcnRbZS5tb250aCgpXTp0aGlzLl9tb250aHNTaG9ydFtDZS50ZXN0KHQpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl1bZS5tb250aCgpXTphKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydDp0aGlzLl9tb250aHNTaG9ydC5zdGFuZGFsb25lfSxwbi5tb250aHNQYXJzZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2lmKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpcmV0dXJuIERlLmNhbGwodGhpcyxlLHQsbik7Zm9yKHRoaXMuX21vbnRoc1BhcnNlfHwodGhpcy5fbW9udGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10pLHI9MDtyPDEyO3IrKyl7aWYobz1wKFsyZTMscl0pLG4mJiF0aGlzLl9sb25nTW9udGhzUGFyc2Vbcl0mJih0aGlzLl9sb25nTW9udGhzUGFyc2Vbcl09bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250aHMobywiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0TW9udGhzUGFyc2Vbcl09bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250aHNTaG9ydChvLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIikpLG58fHRoaXMuX21vbnRoc1BhcnNlW3JdfHwoYT0iXiIrdGhpcy5tb250aHMobywiIikrInxeIit0aGlzLm1vbnRoc1Nob3J0KG8sIiIpLHRoaXMuX21vbnRoc1BhcnNlW3JdPW5ldyBSZWdFeHAoYS5yZXBsYWNlKCIuIiwiIiksImkiKSksbiYmIk1NTU0iPT09dCYmdGhpcy5fbG9uZ01vbnRoc1BhcnNlW3JdLnRlc3QoZSkpcmV0dXJuIHI7aWYobiYmIk1NTSI9PT10JiZ0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW3JdLnRlc3QoZSkpcmV0dXJuIHI7aWYoIW4mJnRoaXMuX21vbnRoc1BhcnNlW3JdLnRlc3QoZSkpcmV0dXJuIHJ9fSxwbi5tb250aHNSZWdleD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oZih0aGlzLCJfbW9udGhzUmVnZXgiKXx8amUuY2FsbCh0aGlzKSxlP3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KTooZih0aGlzLCJfbW9udGhzUmVnZXgiKXx8KHRoaXMuX21vbnRoc1JlZ2V4PU5lKSx0aGlzLl9tb250aHNTdHJpY3RSZWdleCYmZT90aGlzLl9tb250aHNTdHJpY3RSZWdleDp0aGlzLl9tb250aHNSZWdleCl9LHBuLm1vbnRoc1Nob3J0UmVnZXg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX21vbnRoc1BhcnNlRXhhY3Q/KGYodGhpcywiX21vbnRoc1JlZ2V4Iil8fGplLmNhbGwodGhpcyksZT90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpOihmKHRoaXMsIl9tb250aHNTaG9ydFJlZ2V4Iil8fCh0aGlzLl9tb250aHNTaG9ydFJlZ2V4PVBlKSx0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4JiZlP3RoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzU2hvcnRSZWdleCl9LHBuLndlZWs9ZnVuY3Rpb24oZSl7cmV0dXJuIEZlKGUsdGhpcy5fd2Vlay5kb3csdGhpcy5fd2Vlay5kb3kpLndlZWt9LHBuLmZpcnN0RGF5T2ZZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dlZWsuZG95fSxwbi5maXJzdERheU9mV2Vlaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl93ZWVrLmRvd30scG4ud2Vla2RheXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hKHRoaXMuX3dlZWtkYXlzKT90aGlzLl93ZWVrZGF5czp0aGlzLl93ZWVrZGF5c1tlJiYhMCE9PWUmJnRoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QodCk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXTtyZXR1cm4hMD09PWU/emUobix0aGlzLl93ZWVrLmRvdyk6ZT9uW2UuZGF5KCldOm59LHBuLndlZWtkYXlzTWluPWZ1bmN0aW9uKGUpe3JldHVybiEwPT09ZT96ZSh0aGlzLl93ZWVrZGF5c01pbix0aGlzLl93ZWVrLmRvdyk6ZT90aGlzLl93ZWVrZGF5c01pbltlLmRheSgpXTp0aGlzLl93ZWVrZGF5c01pbn0scG4ud2Vla2RheXNTaG9ydD1mdW5jdGlvbihlKXtyZXR1cm4hMD09PWU/emUodGhpcy5fd2Vla2RheXNTaG9ydCx0aGlzLl93ZWVrLmRvdyk6ZT90aGlzLl93ZWVrZGF5c1Nob3J0W2UuZGF5KCldOnRoaXMuX3dlZWtkYXlzU2hvcnR9LHBuLndlZWtkYXlzUGFyc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYTtpZih0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpcmV0dXJuIFVlLmNhbGwodGhpcyxlLHQsbik7Zm9yKHRoaXMuX3dlZWtkYXlzUGFyc2V8fCh0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlPVtdKSxyPTA7cjw3O3IrKyl7aWYobz1wKFsyZTMsMV0pLmRheShyKSxuJiYhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2Vbcl0mJih0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtyXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzKG8sIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIiksdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW3JdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNTaG9ydChvLCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpLHRoaXMuX21pbldlZWtkYXlzUGFyc2Vbcl09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5c01pbihvLCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpKSx0aGlzLl93ZWVrZGF5c1BhcnNlW3JdfHwoYT0iXiIrdGhpcy53ZWVrZGF5cyhvLCIiKSsifF4iK3RoaXMud2Vla2RheXNTaG9ydChvLCIiKSsifF4iK3RoaXMud2Vla2RheXNNaW4obywiIiksdGhpcy5fd2Vla2RheXNQYXJzZVtyXT1uZXcgUmVnRXhwKGEucmVwbGFjZSgiLiIsIiIpLCJpIikpLG4mJiJkZGRkIj09PXQmJnRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW3JdLnRlc3QoZSkpcmV0dXJuIHI7aWYobiYmImRkZCI9PT10JiZ0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2Vbcl0udGVzdChlKSlyZXR1cm4gcjtpZihuJiYiZGQiPT09dCYmdGhpcy5fbWluV2Vla2RheXNQYXJzZVtyXS50ZXN0KGUpKXJldHVybiByO2lmKCFuJiZ0aGlzLl93ZWVrZGF5c1BhcnNlW3JdLnRlc3QoZSkpcmV0dXJuIHJ9fSxwbi53ZWVrZGF5c1JlZ2V4PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3Q/KGYodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8R2UuY2FsbCh0aGlzKSxlP3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCk6KGYodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzUmVnZXg9V2UpLHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXgmJmU/dGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1JlZ2V4KX0scG4ud2Vla2RheXNTaG9ydFJlZ2V4PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3Q/KGYodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8R2UuY2FsbCh0aGlzKSxlP3RoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXgpOihmKHRoaXMsIl93ZWVrZGF5c1Nob3J0UmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleD1ZZSksdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4JiZlP3RoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXgpfSxwbi53ZWVrZGF5c01pblJlZ2V4PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3Q/KGYodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8R2UuY2FsbCh0aGlzKSxlP3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCk6KGYodGhpcywiX3dlZWtkYXlzTWluUmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzTWluUmVnZXg9SGUpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXgmJmU/dGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c01pblJlZ2V4KX0scG4uaXNQTT1mdW5jdGlvbihlKXtyZXR1cm4icCI9PT0oZSsiIikudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCl9LHBuLm1lcmlkaWVtPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT4xMT9uPyJwbSI6IlBNIjpuPyJhbSI6IkFNIn0sYXQoImVuIix7ZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDtyZXR1cm4gZSsoMT09PU8oZSUxMDAvMTApPyJ0aCI6MT09PXQ/InN0IjoyPT09dD8ibmQiOjM9PT10PyJyZCI6InRoIil9fSksby5sYW5nPXgoIm1vbWVudC5sYW5nIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlIGluc3RlYWQuIixhdCksby5sYW5nRGF0YT14KCJtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuIix1dCk7dmFyIHZuPU1hdGguYWJzO2Z1bmN0aW9uIGduKGUsdCxuLHIpe3ZhciBvPUt0KHQsbik7cmV0dXJuIGUuX21pbGxpc2Vjb25kcys9cipvLl9taWxsaXNlY29uZHMsZS5fZGF5cys9cipvLl9kYXlzLGUuX21vbnRocys9cipvLl9tb250aHMsZS5fYnViYmxlKCl9ZnVuY3Rpb24gYm4oZSl7cmV0dXJuIGU8MD9NYXRoLmZsb29yKGUpOk1hdGguY2VpbChlKX1mdW5jdGlvbiB3bihlKXtyZXR1cm4gNDgwMCplLzE0NjA5N31mdW5jdGlvbiBfbihlKXtyZXR1cm4gMTQ2MDk3KmUvNDgwMH1mdW5jdGlvbiBFbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcyhlKX19dmFyIE9uPUVuKCJtcyIpLGtuPUVuKCJzIiksQ249RW4oIm0iKSx4bj1FbigiaCIpLFNuPUVuKCJkIiksRG49RW4oInciKSxUbj1FbigiTSIpLE1uPUVuKCJRIiksUG49RW4oInkiKTtmdW5jdGlvbiBObihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy5fZGF0YVtlXTpOYU59fXZhciBqbj1ObigibWlsbGlzZWNvbmRzIiksTG49Tm4oInNlY29uZHMiKSxSbj1ObigibWludXRlcyIpLEluPU5uKCJob3VycyIpLEFuPU5uKCJkYXlzIiksRm49Tm4oIm1vbnRocyIpLEJuPU5uKCJ5ZWFycyIpLHpuPU1hdGgucm91bmQsS249e3NzOjQ0LHM6NDUsbTo0NSxoOjIyLGQ6MjYsTToxMX07ZnVuY3Rpb24gcW4oZSx0LG4scixvKXtyZXR1cm4gby5yZWxhdGl2ZVRpbWUodHx8MSwhIW4sZSxyKX12YXIgVm49TWF0aC5hYnM7ZnVuY3Rpb24gVW4oZSl7cmV0dXJuKGU+MCktKGU8MCl8fCtlfWZ1bmN0aW9uIFduKCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO3ZhciBlLHQsbj1Wbih0aGlzLl9taWxsaXNlY29uZHMpLzFlMyxyPVZuKHRoaXMuX2RheXMpLG89Vm4odGhpcy5fbW9udGhzKTtlPUUobi82MCksdD1FKGUvNjApLG4lPTYwLGUlPTYwO3ZhciBhPUUoby8xMiksaT1vJT0xMix1PXIscz10LGw9ZSxjPW4/bi50b0ZpeGVkKDMpLnJlcGxhY2UoL1wuPzArJC8sIiIpOiIiLGY9dGhpcy5hc1NlY29uZHMoKTtpZighZilyZXR1cm4iUDBEIjt2YXIgZD1mPDA/Ii0iOiIiLHA9VW4odGhpcy5fbW9udGhzKSE9PVVuKGYpPyItIjoiIixoPVVuKHRoaXMuX2RheXMpIT09VW4oZik/Ii0iOiIiLHk9VW4odGhpcy5fbWlsbGlzZWNvbmRzKSE9PVVuKGYpPyItIjoiIjtyZXR1cm4gZCsiUCIrKGE/cCthKyJZIjoiIikrKGk/cCtpKyJNIjoiIikrKHU/aCt1KyJEIjoiIikrKHN8fGx8fGM/IlQiOiIiKSsocz95K3MrIkgiOiIiKSsobD95K2wrIk0iOiIiKSsoYz95K2MrIlMiOiIiKX12YXIgWW49TXQucHJvdG90eXBlO3JldHVybiBZbi5pc1ZhbGlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVmFsaWR9LFluLmFicz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2RhdGE7cmV0dXJuIHRoaXMuX21pbGxpc2Vjb25kcz12bih0aGlzLl9taWxsaXNlY29uZHMpLHRoaXMuX2RheXM9dm4odGhpcy5fZGF5cyksdGhpcy5fbW9udGhzPXZuKHRoaXMuX21vbnRocyksZS5taWxsaXNlY29uZHM9dm4oZS5taWxsaXNlY29uZHMpLGUuc2Vjb25kcz12bihlLnNlY29uZHMpLGUubWludXRlcz12bihlLm1pbnV0ZXMpLGUuaG91cnM9dm4oZS5ob3VycyksZS5tb250aHM9dm4oZS5tb250aHMpLGUueWVhcnM9dm4oZS55ZWFycyksdGhpc30sWW4uYWRkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGduKHRoaXMsZSx0LDEpfSxZbi5zdWJ0cmFjdD1mdW5jdGlvbihlLHQpe3JldHVybiBnbih0aGlzLGUsdCwtMSl9LFluLmFzPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gTmFOO3ZhciB0LG4scj10aGlzLl9taWxsaXNlY29uZHM7aWYoIm1vbnRoIj09PShlPVIoZSkpfHwicXVhcnRlciI9PT1lfHwieWVhciI9PT1lKXN3aXRjaCh0PXRoaXMuX2RheXMrci84NjRlNSxuPXRoaXMuX21vbnRocyt3bih0KSxlKXtjYXNlIm1vbnRoIjpyZXR1cm4gbjtjYXNlInF1YXJ0ZXIiOnJldHVybiBuLzM7Y2FzZSJ5ZWFyIjpyZXR1cm4gbi8xMn1lbHNlIHN3aXRjaCh0PXRoaXMuX2RheXMrTWF0aC5yb3VuZChfbih0aGlzLl9tb250aHMpKSxlKXtjYXNlIndlZWsiOnJldHVybiB0Lzcrci82MDQ4ZTU7Y2FzZSJkYXkiOnJldHVybiB0K3IvODY0ZTU7Y2FzZSJob3VyIjpyZXR1cm4gMjQqdCtyLzM2ZTU7Y2FzZSJtaW51dGUiOnJldHVybiAxNDQwKnQrci82ZTQ7Y2FzZSJzZWNvbmQiOnJldHVybiA4NjQwMCp0K3IvMWUzO2Nhc2UibWlsbGlzZWNvbmQiOnJldHVybiBNYXRoLmZsb29yKDg2NGU1KnQpK3I7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gdW5pdCAiK2UpfX0sWW4uYXNNaWxsaXNlY29uZHM9T24sWW4uYXNTZWNvbmRzPWtuLFluLmFzTWludXRlcz1DbixZbi5hc0hvdXJzPXhuLFluLmFzRGF5cz1TbixZbi5hc1dlZWtzPURuLFluLmFzTW9udGhzPVRuLFluLmFzUXVhcnRlcnM9TW4sWW4uYXNZZWFycz1QbixZbi52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuX21pbGxpc2Vjb25kcys4NjRlNSp0aGlzLl9kYXlzK3RoaXMuX21vbnRocyUxMioyNTkyZTYrMzE1MzZlNipPKHRoaXMuX21vbnRocy8xMik6TmFOfSxZbi5fYnViYmxlPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbyxhPXRoaXMuX21pbGxpc2Vjb25kcyxpPXRoaXMuX2RheXMsdT10aGlzLl9tb250aHMscz10aGlzLl9kYXRhO3JldHVybiBhPj0wJiZpPj0wJiZ1Pj0wfHxhPD0wJiZpPD0wJiZ1PD0wfHwoYSs9ODY0ZTUqYm4oX24odSkraSksaT0wLHU9MCkscy5taWxsaXNlY29uZHM9YSUxZTMsZT1FKGEvMWUzKSxzLnNlY29uZHM9ZSU2MCx0PUUoZS82MCkscy5taW51dGVzPXQlNjAsbj1FKHQvNjApLHMuaG91cnM9biUyNCxpKz1FKG4vMjQpLG89RSh3bihpKSksdSs9byxpLT1ibihfbihvKSkscj1FKHUvMTIpLHUlPTEyLHMuZGF5cz1pLHMubW9udGhzPXUscy55ZWFycz1yLHRoaXN9LFluLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEt0KHRoaXMpfSxZbi5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9UihlKSx0aGlzLmlzVmFsaWQoKT90aGlzW2UrInMiXSgpOk5hTn0sWW4ubWlsbGlzZWNvbmRzPWpuLFluLnNlY29uZHM9TG4sWW4ubWludXRlcz1SbixZbi5ob3Vycz1JbixZbi5kYXlzPUFuLFluLndlZWtzPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5kYXlzKCkvNyl9LFluLm1vbnRocz1GbixZbi55ZWFycz1CbixZbi5odW1hbml6ZT1mdW5jdGlvbihlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7dmFyIHQ9dGhpcy5sb2NhbGVEYXRhKCksbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9S3QoZSkuYWJzKCksbz16bihyLmFzKCJzIikpLGE9em4oci5hcygibSIpKSxpPXpuKHIuYXMoImgiKSksdT16bihyLmFzKCJkIikpLHM9em4oci5hcygiTSIpKSxsPXpuKHIuYXMoInkiKSksYz1vPD1Lbi5zcyYmWyJzIixvXXx8bzxLbi5zJiZbInNzIixvXXx8YTw9MSYmWyJtIl18fGE8S24ubSYmWyJtbSIsYV18fGk8PTEmJlsiaCJdfHxpPEtuLmgmJlsiaGgiLGldfHx1PD0xJiZbImQiXXx8dTxLbi5kJiZbImRkIix1XXx8czw9MSYmWyJNIl18fHM8S24uTSYmWyJNTSIsc118fGw8PTEmJlsieSJdfHxbInl5IixsXTtyZXR1cm4gY1syXT10LGNbM109K2U+MCxjWzRdPW4scW4uYXBwbHkobnVsbCxjKX0odGhpcywhZSx0KTtyZXR1cm4gZSYmKG49dC5wYXN0RnV0dXJlKCt0aGlzLG4pKSx0LnBvc3Rmb3JtYXQobil9LFluLnRvSVNPU3RyaW5nPVduLFluLnRvU3RyaW5nPVduLFluLnRvSlNPTj1XbixZbi5sb2NhbGU9UXQsWW4ubG9jYWxlRGF0YT1adCxZbi50b0lzb1N0cmluZz14KCJ0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKSIsV24pLFluLmxhbmc9SnQsVSgiWCIsMCwwLCJ1bml4IiksVSgieCIsMCwwLCJ2YWx1ZU9mIiksY2UoIngiLGFlKSxjZSgiWCIsL1srLV0/XGQrKFwuXGR7MSwzfSk/LyksaGUoIlgiLChmdW5jdGlvbihlLHQsbil7bi5fZD1uZXcgRGF0ZSgxZTMqcGFyc2VGbG9hdChlLDEwKSl9KSksaGUoIngiLChmdW5jdGlvbihlLHQsbil7bi5fZD1uZXcgRGF0ZShPKGUpKX0pKSxvLnZlcnNpb249IjIuMjQuMCIsdD1DdCxvLmZuPWZuLG8ubWluPWZ1bmN0aW9uKCl7dmFyIGU9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIER0KCJpc0JlZm9yZSIsZSl9LG8ubWF4PWZ1bmN0aW9uKCl7dmFyIGU9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIER0KCJpc0FmdGVyIixlKX0sby5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGV9LG8udXRjPXAsby51bml4PWZ1bmN0aW9uKGUpe3JldHVybiBDdCgxZTMqZSl9LG8ubW9udGhzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHluKGUsdCwibW9udGhzIil9LG8uaXNEYXRlPWwsby5sb2NhbGU9YXQsby5pbnZhbGlkPW0sby5kdXJhdGlvbj1LdCxvLmlzTW9tZW50PV8sby53ZWVrZGF5cz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG1uKGUsdCxuLCJ3ZWVrZGF5cyIpfSxvLnBhcnNlWm9uZT1mdW5jdGlvbigpe3JldHVybiBDdC5hcHBseShudWxsLGFyZ3VtZW50cykucGFyc2Vab25lKCl9LG8ubG9jYWxlRGF0YT11dCxvLmlzRHVyYXRpb249UHQsby5tb250aHNTaG9ydD1mdW5jdGlvbihlLHQpe3JldHVybiB5bihlLHQsIm1vbnRoc1Nob3J0Iil9LG8ud2Vla2RheXNNaW49ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBtbihlLHQsbiwid2Vla2RheXNNaW4iKX0sby5kZWZpbmVMb2NhbGU9aXQsby51cGRhdGVMb2NhbGU9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KXt2YXIgbixyLG89ZXQ7bnVsbCE9KHI9b3QoZSkpJiYobz1yLl9jb25maWcpLHQ9UChvLHQpLChuPW5ldyBOKHQpKS5wYXJlbnRMb2NhbGU9dHRbZV0sdHRbZV09bixhdChlKX1lbHNlIG51bGwhPXR0W2VdJiYobnVsbCE9dHRbZV0ucGFyZW50TG9jYWxlP3R0W2VdPXR0W2VdLnBhcmVudExvY2FsZTpudWxsIT10dFtlXSYmZGVsZXRlIHR0W2VdKTtyZXR1cm4gdHRbZV19LG8ubG9jYWxlcz1mdW5jdGlvbigpe3JldHVybiBTKHR0KX0sby53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbW4oZSx0LG4sIndlZWtkYXlzU2hvcnQiKX0sby5ub3JtYWxpemVVbml0cz1SLG8ucmVsYXRpdmVUaW1lUm91bmRpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/em46ImZ1bmN0aW9uIj09dHlwZW9mIGUmJih6bj1lLCEwKX0sby5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwIT09S25bZV0mJih2b2lkIDA9PT10P0tuW2VdOihLbltlXT10LCJzIj09PWUmJihLbi5zcz10LTEpLCEwKSl9LG8uY2FsZW5kYXJGb3JtYXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRpZmYodCwiZGF5cyIsITApO3JldHVybiBuPC02PyJzYW1lRWxzZSI6bjwtMT8ibGFzdFdlZWsiOm48MD8ibGFzdERheSI6bjwxPyJzYW1lRGF5IjpuPDI/Im5leHREYXkiOm48Nz8ibmV4dFdlZWsiOiJzYW1lRWxzZSJ9LG8ucHJvdG90eXBlPWZuLG8uSFRNTDVfRk1UPXtEQVRFVElNRV9MT0NBTDoiWVlZWS1NTS1ERFRISDptbSIsREFURVRJTUVfTE9DQUxfU0VDT05EUzoiWVlZWS1NTS1ERFRISDptbTpzcyIsREFURVRJTUVfTE9DQUxfTVM6IllZWVktTU0tRERUSEg6bW06c3MuU1NTIixEQVRFOiJZWVlZLU1NLUREIixUSU1FOiJISDptbSIsVElNRV9TRUNPTkRTOiJISDptbTpzcyIsVElNRV9NUzoiSEg6bW06c3MuU1NTIixXRUVLOiJHR0dHLVtXXVdXIixNT05USDoiWVlZWS1NTSJ9LG99KCl9KS5jYWxsKHRoaXMsbigiWXVUaSIpKGUpKX0sd2ltRzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmNyZWF0ZUxleGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IGModS5Ub2tlbktpbmQuU09GLDAsMCwwLDAsbnVsbCk7cmV0dXJue3NvdXJjZTplLG9wdGlvbnM6dCxsYXN0VG9rZW46bix0b2tlbjpuLGxpbmU6MSxsaW5lU3RhcnQ6MCxhZHZhbmNlOnMsbG9va2FoZWFkOmx9fSx0LmlzUHVuY3R1YXRvclRva2VuPWZ1bmN0aW9uKGUpe3ZhciB0PWUua2luZDtyZXR1cm4gdD09PXUuVG9rZW5LaW5kLkJBTkd8fHQ9PT11LlRva2VuS2luZC5ET0xMQVJ8fHQ9PT11LlRva2VuS2luZC5BTVB8fHQ9PT11LlRva2VuS2luZC5QQVJFTl9MfHx0PT09dS5Ub2tlbktpbmQuUEFSRU5fUnx8dD09PXUuVG9rZW5LaW5kLlNQUkVBRHx8dD09PXUuVG9rZW5LaW5kLkNPTE9OfHx0PT09dS5Ub2tlbktpbmQuRVFVQUxTfHx0PT09dS5Ub2tlbktpbmQuQVR8fHQ9PT11LlRva2VuS2luZC5CUkFDS0VUX0x8fHQ9PT11LlRva2VuS2luZC5CUkFDS0VUX1J8fHQ9PT11LlRva2VuS2luZC5CUkFDRV9MfHx0PT09dS5Ub2tlbktpbmQuUElQRXx8dD09PXUuVG9rZW5LaW5kLkJSQUNFX1J9O3ZhciByLG89KHI9bigiQi80TyIpKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn0sYT1uKCJnbGJmIiksaT1uKCJ5UWJoIiksdT1uKCJYZlNhIik7ZnVuY3Rpb24gcygpe3JldHVybiB0aGlzLmxhc3RUb2tlbj10aGlzLnRva2VuLHRoaXMudG9rZW49dGhpcy5sb29rYWhlYWQoKX1mdW5jdGlvbiBsKCl7dmFyIGU9dGhpcy50b2tlbjtpZihlLmtpbmQhPT11LlRva2VuS2luZC5FT0YpZG97ZT1lLm5leHR8fChlLm5leHQ9ZCh0aGlzLGUpKX13aGlsZShlLmtpbmQ9PT11LlRva2VuS2luZC5DT01NRU5UKTtyZXR1cm4gZX1mdW5jdGlvbiBjKGUsdCxuLHIsbyxhLGkpe3RoaXMua2luZD1lLHRoaXMuc3RhcnQ9dCx0aGlzLmVuZD1uLHRoaXMubGluZT1yLHRoaXMuY29sdW1uPW8sdGhpcy52YWx1ZT1pLHRoaXMucHJldj1hLHRoaXMubmV4dD1udWxsfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGlzTmFOKGUpP3UuVG9rZW5LaW5kLkVPRjplPDEyNz9KU09OLnN0cmluZ2lmeShTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTonIlxcdScuY29uY2F0KCgiMDAiK2UudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkpLnNsaWNlKC00KSwnIicpfWZ1bmN0aW9uIGQoZSx0KXt2YXIgbj1lLnNvdXJjZSxyPW4uYm9keSxvPXIubGVuZ3RoLHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubGVuZ3RoLG89dDtmb3IoO288cjspe3ZhciBhPWUuY2hhckNvZGVBdChvKTtpZig5PT09YXx8MzI9PT1hfHw0ND09PWF8fDY1Mjc5PT09YSkrK287ZWxzZSBpZigxMD09PWEpKytvLCsrbi5saW5lLG4ubGluZVN0YXJ0PW87ZWxzZXtpZigxMyE9PWEpYnJlYWs7MTA9PT1lLmNoYXJDb2RlQXQobysxKT9vKz0yOisrbywrK24ubGluZSxuLmxpbmVTdGFydD1vfX1yZXR1cm4gb30ocix0LmVuZCxlKSxsPWUubGluZSxkPTErcy1lLmxpbmVTdGFydDtpZihzPj1vKXJldHVybiBuZXcgYyh1LlRva2VuS2luZC5FT0YsbyxvLGwsZCx0KTt2YXIgeT1yLmNoYXJDb2RlQXQocyk7c3dpdGNoKHkpe2Nhc2UgMzM6cmV0dXJuIG5ldyBjKHUuVG9rZW5LaW5kLkJBTkcscyxzKzEsbCxkLHQpO2Nhc2UgMzU6cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGEsaT1lLmJvZHkscz10O2Rve2E9aS5jaGFyQ29kZUF0KCsrcyl9d2hpbGUoIWlzTmFOKGEpJiYoYT4zMXx8OT09PWEpKTtyZXR1cm4gbmV3IGModS5Ub2tlbktpbmQuQ09NTUVOVCx0LHMsbixyLG8saS5zbGljZSh0KzEscykpfShuLHMsbCxkLHQpO2Nhc2UgMzY6cmV0dXJuIG5ldyBjKHUuVG9rZW5LaW5kLkRPTExBUixzLHMrMSxsLGQsdCk7Y2FzZSAzODpyZXR1cm4gbmV3IGModS5Ub2tlbktpbmQuQU1QLHMscysxLGwsZCx0KTtjYXNlIDQwOnJldHVybiBuZXcgYyh1LlRva2VuS2luZC5QQVJFTl9MLHMscysxLGwsZCx0KTtjYXNlIDQxOnJldHVybiBuZXcgYyh1LlRva2VuS2luZC5QQVJFTl9SLHMscysxLGwsZCx0KTtjYXNlIDQ2OmlmKDQ2PT09ci5jaGFyQ29kZUF0KHMrMSkmJjQ2PT09ci5jaGFyQ29kZUF0KHMrMikpcmV0dXJuIG5ldyBjKHUuVG9rZW5LaW5kLlNQUkVBRCxzLHMrMyxsLGQsdCk7YnJlYWs7Y2FzZSA1ODpyZXR1cm4gbmV3IGModS5Ub2tlbktpbmQuQ09MT04scyxzKzEsbCxkLHQpO2Nhc2UgNjE6cmV0dXJuIG5ldyBjKHUuVG9rZW5LaW5kLkVRVUFMUyxzLHMrMSxsLGQsdCk7Y2FzZSA2NDpyZXR1cm4gbmV3IGModS5Ub2tlbktpbmQuQVQscyxzKzEsbCxkLHQpO2Nhc2UgOTE6cmV0dXJuIG5ldyBjKHUuVG9rZW5LaW5kLkJSQUNLRVRfTCxzLHMrMSxsLGQsdCk7Y2FzZSA5MzpyZXR1cm4gbmV3IGModS5Ub2tlbktpbmQuQlJBQ0tFVF9SLHMscysxLGwsZCx0KTtjYXNlIDEyMzpyZXR1cm4gbmV3IGModS5Ub2tlbktpbmQuQlJBQ0VfTCxzLHMrMSxsLGQsdCk7Y2FzZSAxMjQ6cmV0dXJuIG5ldyBjKHUuVG9rZW5LaW5kLlBJUEUscyxzKzEsbCxkLHQpO2Nhc2UgMTI1OnJldHVybiBuZXcgYyh1LlRva2VuS2luZC5CUkFDRV9SLHMscysxLGwsZCx0KTtjYXNlIDY1OmNhc2UgNjY6Y2FzZSA2NzpjYXNlIDY4OmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDcxOmNhc2UgNzI6Y2FzZSA3MzpjYXNlIDc0OmNhc2UgNzU6Y2FzZSA3NjpjYXNlIDc3OmNhc2UgNzg6Y2FzZSA3OTpjYXNlIDgwOmNhc2UgODE6Y2FzZSA4MjpjYXNlIDgzOmNhc2UgODQ6Y2FzZSA4NTpjYXNlIDg2OmNhc2UgODc6Y2FzZSA4ODpjYXNlIDg5OmNhc2UgOTA6Y2FzZSA5NTpjYXNlIDk3OmNhc2UgOTg6Y2FzZSA5OTpjYXNlIDEwMDpjYXNlIDEwMTpjYXNlIDEwMjpjYXNlIDEwMzpjYXNlIDEwNDpjYXNlIDEwNTpjYXNlIDEwNjpjYXNlIDEwNzpjYXNlIDEwODpjYXNlIDEwOTpjYXNlIDExMDpjYXNlIDExMTpjYXNlIDExMjpjYXNlIDExMzpjYXNlIDExNDpjYXNlIDExNTpjYXNlIDExNjpjYXNlIDExNzpjYXNlIDExODpjYXNlIDExOTpjYXNlIDEyMDpjYXNlIDEyMTpjYXNlIDEyMjpyZXR1cm4gZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT1lLmJvZHksaT1hLmxlbmd0aCxzPXQrMSxsPTA7Zm9yKDtzIT09aSYmIWlzTmFOKGw9YS5jaGFyQ29kZUF0KHMpKSYmKDk1PT09bHx8bD49NDgmJmw8PTU3fHxsPj02NSYmbDw9OTB8fGw+PTk3JiZsPD0xMjIpOykrK3M7cmV0dXJuIG5ldyBjKHUuVG9rZW5LaW5kLk5BTUUsdCxzLG4scixvLGEuc2xpY2UodCxzKSl9KG4scyxsLGQsdCk7Y2FzZSA0NTpjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OnJldHVybiBmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIHM9ZS5ib2R5LGw9bixkPXQsaD0hMTs0NT09PWwmJihsPXMuY2hhckNvZGVBdCgrK2QpKTtpZig0OD09PWwpe2lmKChsPXMuY2hhckNvZGVBdCgrK2QpKT49NDgmJmw8PTU3KXRocm93KDAsYS5zeW50YXhFcnJvcikoZSxkLCJJbnZhbGlkIG51bWJlciwgdW5leHBlY3RlZCBkaWdpdCBhZnRlciAwOiAiLmNvbmNhdChmKGwpLCIuIikpfWVsc2UgZD1wKGUsZCxsKSxsPXMuY2hhckNvZGVBdChkKTs0Nj09PWwmJihoPSEwLGw9cy5jaGFyQ29kZUF0KCsrZCksZD1wKGUsZCxsKSxsPXMuY2hhckNvZGVBdChkKSk7NjkhPT1sJiYxMDEhPT1sfHwoaD0hMCw0MyE9PShsPXMuY2hhckNvZGVBdCgrK2QpKSYmNDUhPT1sfHwobD1zLmNoYXJDb2RlQXQoKytkKSksZD1wKGUsZCxsKSk7cmV0dXJuIG5ldyBjKGg/dS5Ub2tlbktpbmQuRkxPQVQ6dS5Ub2tlbktpbmQuSU5ULHQsZCxyLG8saSxzLnNsaWNlKHQsZCkpfShuLHMseSxsLGQsdCk7Y2FzZSAzNDpyZXR1cm4gMzQ9PT1yLmNoYXJDb2RlQXQocysxKSYmMzQ9PT1yLmNoYXJDb2RlQXQocysyKT9mdW5jdGlvbihlLHQsbixyLG8scyl7dmFyIGw9ZS5ib2R5LGQ9dCszLHA9ZCxoPTAseT0iIjtmb3IoO2Q8bC5sZW5ndGgmJiFpc05hTihoPWwuY2hhckNvZGVBdChkKSk7KXtpZigzND09PWgmJjM0PT09bC5jaGFyQ29kZUF0KGQrMSkmJjM0PT09bC5jaGFyQ29kZUF0KGQrMikpcmV0dXJuIHkrPWwuc2xpY2UocCxkKSxuZXcgYyh1LlRva2VuS2luZC5CTE9DS19TVFJJTkcsdCxkKzMsbixyLG8sKDAsaS5kZWRlbnRCbG9ja1N0cmluZ1ZhbHVlKSh5KSk7aWYoaDwzMiYmOSE9PWgmJjEwIT09aCYmMTMhPT1oKXRocm93KDAsYS5zeW50YXhFcnJvcikoZSxkLCJJbnZhbGlkIGNoYXJhY3RlciB3aXRoaW4gU3RyaW5nOiAiLmNvbmNhdChmKGgpLCIuIikpOzEwPT09aD8oKytkLCsrcy5saW5lLHMubGluZVN0YXJ0PWQpOjEzPT09aD8oMTA9PT1sLmNoYXJDb2RlQXQoZCsxKT9kKz0yOisrZCwrK3MubGluZSxzLmxpbmVTdGFydD1kKTo5Mj09PWgmJjM0PT09bC5jaGFyQ29kZUF0KGQrMSkmJjM0PT09bC5jaGFyQ29kZUF0KGQrMikmJjM0PT09bC5jaGFyQ29kZUF0KGQrMyk/KHkrPWwuc2xpY2UocCxkKSsnIiIiJyxwPWQrPTQpOisrZH10aHJvdygwLGEuc3ludGF4RXJyb3IpKGUsZCwiVW50ZXJtaW5hdGVkIHN0cmluZy4iKX0obixzLGwsZCx0LGUpOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9ZS5ib2R5LHM9dCsxLGw9cyxkPTAscD0iIjtmb3IoO3M8aS5sZW5ndGgmJiFpc05hTihkPWkuY2hhckNvZGVBdChzKSkmJjEwIT09ZCYmMTMhPT1kOyl7aWYoMzQ9PT1kKXJldHVybiBwKz1pLnNsaWNlKGwscyksbmV3IGModS5Ub2tlbktpbmQuU1RSSU5HLHQscysxLG4scixvLHApO2lmKGQ8MzImJjkhPT1kKXRocm93KDAsYS5zeW50YXhFcnJvcikoZSxzLCJJbnZhbGlkIGNoYXJhY3RlciB3aXRoaW4gU3RyaW5nOiAiLmNvbmNhdChmKGQpLCIuIikpO2lmKCsrcyw5Mj09PWQpe3N3aXRjaChwKz1pLnNsaWNlKGwscy0xKSxkPWkuY2hhckNvZGVBdChzKSl7Y2FzZSAzNDpwKz0nIic7YnJlYWs7Y2FzZSA0NzpwKz0iLyI7YnJlYWs7Y2FzZSA5MjpwKz0iXFwiO2JyZWFrO2Nhc2UgOTg6cCs9IlxiIjticmVhaztjYXNlIDEwMjpwKz0iXGYiO2JyZWFrO2Nhc2UgMTEwOnArPSJcbiI7YnJlYWs7Y2FzZSAxMTQ6cCs9IlxyIjticmVhaztjYXNlIDExNjpwKz0iXHQiO2JyZWFrO2Nhc2UgMTE3OnZhciB5PSh2PWkuY2hhckNvZGVBdChzKzEpLGc9aS5jaGFyQ29kZUF0KHMrMiksYj1pLmNoYXJDb2RlQXQocyszKSx3PWkuY2hhckNvZGVBdChzKzQpLGgodik8PDEyfGgoZyk8PDh8aChiKTw8NHxoKHcpKTtpZih5PDApe3ZhciBtPWkuc2xpY2UocysxLHMrNSk7dGhyb3coMCxhLnN5bnRheEVycm9yKShlLHMsIkludmFsaWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZTogXFx1Ii5jb25jYXQobSwiLiIpKX1wKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHkpLHMrPTQ7YnJlYWs7ZGVmYXVsdDp0aHJvdygwLGEuc3ludGF4RXJyb3IpKGUscywiSW52YWxpZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlOiBcXCIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoZCksIi4iKSl9KytzLGw9c319dmFyIHYsZyxiLHc7dGhyb3coMCxhLnN5bnRheEVycm9yKShlLHMsIlVudGVybWluYXRlZCBzdHJpbmcuIil9KG4scyxsLGQsdCl9dGhyb3coMCxhLnN5bnRheEVycm9yKShuLHMsZnVuY3Rpb24oZSl7aWYoZTwzMiYmOSE9PWUmJjEwIT09ZSYmMTMhPT1lKXJldHVybiJDYW5ub3QgY29udGFpbiB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgIi5jb25jYXQoZihlKSwiLiIpO2lmKDM5PT09ZSlyZXR1cm4iVW5leHBlY3RlZCBzaW5nbGUgcXVvdGUgY2hhcmFjdGVyICgnKSwgZGlkIHlvdSBtZWFuIHRvIHVzZSBhIGRvdWJsZSBxdW90ZSAoXCIpPyI7cmV0dXJuIkNhbm5vdCBwYXJzZSB0aGUgdW5leHBlY3RlZCBjaGFyYWN0ZXIgIi5jb25jYXQoZihlKSwiLiIpfSh5KSl9ZnVuY3Rpb24gcChlLHQsbil7dmFyIHI9ZS5ib2R5LG89dCxpPW47aWYoaT49NDgmJmk8PTU3KXtkb3tpPXIuY2hhckNvZGVBdCgrK28pfXdoaWxlKGk+PTQ4JiZpPD01Nyk7cmV0dXJuIG99dGhyb3coMCxhLnN5bnRheEVycm9yKShlLG8sIkludmFsaWQgbnVtYmVyLCBleHBlY3RlZCBkaWdpdCBidXQgZ290OiAiLmNvbmNhdChmKGkpLCIuIikpfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz9lLTQ4OmU+PTY1JiZlPD03MD9lLTU1OmU+PTk3JiZlPD0xMDI/ZS04NzotMX0oMCxvLmRlZmF1bHQpKGMsKGZ1bmN0aW9uKCl7cmV0dXJue2tpbmQ6dGhpcy5raW5kLHZhbHVlOnRoaXMudmFsdWUsbGluZTp0aGlzLmxpbmUsY29sdW1uOnRoaXMuY29sdW1ufX0pKX0sd2tCVDpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX19LHd0VjE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7aWYoIUJvb2xlYW4oZSkpdGhyb3cgbmV3IEVycm9yKHQpfX0sd3VUbjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17fX0seFNKaTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGE9bigicTF0SSIpLGk9YyhhKSx1PShjKG4oIjE3eDkiKSksbigibUhudSIpKSxzPW4oIlZKQ1IiKSxsPWMobigiWkU0NCIpKTtmdW5jdGlvbiBjKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBmKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIHAoZSx0LG4pe2lmKGUpcmV0dXJuIGZ1bmN0aW9uKHIpe3IucGVyc2lzdCgpLGUodCxuLHIpfX12YXIgaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGYodGhpcyx0KSxkKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxvKHQsW3trZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPU9iamVjdC5rZXlzKHRoaXMucHJvcHMpLHI9T2JqZWN0LmtleXMoZSk7cmV0dXJuIG4ubGVuZ3RoIT09ci5sZW5ndGh8fG4uc29tZSgoZnVuY3Rpb24obil7aWYoIm1vZGlmaWVycyI9PT1ufHwibW9kaWZpZXJzU3R5bGVzIj09PW58fCJjbGFzc05hbWVzIj09PW4pe3ZhciByPXQucHJvcHNbbl0sbz1lW25dLGE9T2JqZWN0LmtleXMociksaT1PYmplY3Qua2V5cyhvKTtyZXR1cm4gYS5sZW5ndGghPT1pLmxlbmd0aHx8YS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4hKDAscy5oYXNPd25Qcm9wKShvLGUpfHxyW2VdIT09b1tlXX0pKX1yZXR1cm4iZGF5Ij09PW4/ISgwLHUuaXNTYW1lRGF5KSh0LnByb3BzW25dLGVbbl0pOiEoMCxzLmhhc093blByb3ApKGUsbil8fHQucHJvcHNbbl0hPT1lW25dfSkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNsYXNzTmFtZXMsbj1lLm1vZGlmaWVyc1N0eWxlcyxvPWUuZGF5LGE9ZS50YWJJbmRleCx1PWUuZW1wdHkscz1lLm1vZGlmaWVycyxjPWUub25Nb3VzZUVudGVyLGY9ZS5vbk1vdXNlTGVhdmUsZD1lLm9uTW91c2VVcCxoPWUub25Nb3VzZURvd24seT1lLm9uQ2xpY2ssbT1lLm9uS2V5RG93bix2PWUub25Ub3VjaFN0YXJ0LGc9ZS5vblRvdWNoRW5kLGI9ZS5vbkZvY3VzLHc9ZS5hcmlhTGFiZWwsXz1lLmFyaWFEaXNhYmxlZCxFPWUuYXJpYVNlbGVjdGVkLE89ZS5jaGlsZHJlbixrPXQuZGF5O3QhPT1sLmRlZmF1bHQ/ays9IiAiK09iamVjdC5rZXlzKHMpLmpvaW4oIiAiKTprKz1PYmplY3Qua2V5cyhzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIgIitrKyItLSIrZX0pKS5qb2luKCIiKTt2YXIgQz12b2lkIDA7cmV0dXJuIG4mJk9iamVjdC5rZXlzKHMpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuISFuW2VdfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe0M9cih7fSxDLG5bZV0pfSkpLHU/aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIseyJhcmlhLWRpc2FibGVkIjohMCxjbGFzc05hbWU6ayxzdHlsZTpDfSk6aS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTprLHRhYkluZGV4OmEsc3R5bGU6Qyxyb2xlOiJncmlkY2VsbCIsImFyaWEtbGFiZWwiOncsImFyaWEtZGlzYWJsZWQiOl8sImFyaWEtc2VsZWN0ZWQiOkUsb25DbGljazpwKHksbyxzKSxvbktleURvd246cChtLG8scyksb25Nb3VzZUVudGVyOnAoYyxvLHMpLG9uTW91c2VMZWF2ZTpwKGYsbyxzKSxvbk1vdXNlVXA6cChkLG8scyksb25Nb3VzZURvd246cChoLG8scyksb25Ub3VjaEVuZDpwKGcsbyxzKSxvblRvdWNoU3RhcnQ6cCh2LG8scyksb25Gb2N1czpwKGIsbyxzKX0sTyl9fV0pLHR9KGEuQ29tcG9uZW50KTtoLmRlZmF1bHRQcm9wcz17dGFiSW5kZXg6LTF9LGguZGVmYXVsdFByb3BzPXttb2RpZmllcnM6e30sbW9kaWZpZXJzU3R5bGVzOnt9LGVtcHR5OiExfSx0LmRlZmF1bHQ9aCxoLnByb3BUeXBlcz17fX0seGFLNTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LktpbmQ9dm9pZCAwO3ZhciByPU9iamVjdC5mcmVlemUoe05BTUU6Ik5hbWUiLERPQ1VNRU5UOiJEb2N1bWVudCIsT1BFUkFUSU9OX0RFRklOSVRJT046Ik9wZXJhdGlvbkRlZmluaXRpb24iLFZBUklBQkxFX0RFRklOSVRJT046IlZhcmlhYmxlRGVmaW5pdGlvbiIsU0VMRUNUSU9OX1NFVDoiU2VsZWN0aW9uU2V0IixGSUVMRDoiRmllbGQiLEFSR1VNRU5UOiJBcmd1bWVudCIsRlJBR01FTlRfU1BSRUFEOiJGcmFnbWVudFNwcmVhZCIsSU5MSU5FX0ZSQUdNRU5UOiJJbmxpbmVGcmFnbWVudCIsRlJBR01FTlRfREVGSU5JVElPTjoiRnJhZ21lbnREZWZpbml0aW9uIixWQVJJQUJMRToiVmFyaWFibGUiLElOVDoiSW50VmFsdWUiLEZMT0FUOiJGbG9hdFZhbHVlIixTVFJJTkc6IlN0cmluZ1ZhbHVlIixCT09MRUFOOiJCb29sZWFuVmFsdWUiLE5VTEw6Ik51bGxWYWx1ZSIsRU5VTToiRW51bVZhbHVlIixMSVNUOiJMaXN0VmFsdWUiLE9CSkVDVDoiT2JqZWN0VmFsdWUiLE9CSkVDVF9GSUVMRDoiT2JqZWN0RmllbGQiLERJUkVDVElWRToiRGlyZWN0aXZlIixOQU1FRF9UWVBFOiJOYW1lZFR5cGUiLExJU1RfVFlQRToiTGlzdFR5cGUiLE5PTl9OVUxMX1RZUEU6Ik5vbk51bGxUeXBlIixTQ0hFTUFfREVGSU5JVElPTjoiU2NoZW1hRGVmaW5pdGlvbiIsT1BFUkFUSU9OX1RZUEVfREVGSU5JVElPTjoiT3BlcmF0aW9uVHlwZURlZmluaXRpb24iLFNDQUxBUl9UWVBFX0RFRklOSVRJT046IlNjYWxhclR5cGVEZWZpbml0aW9uIixPQkpFQ1RfVFlQRV9ERUZJTklUSU9OOiJPYmplY3RUeXBlRGVmaW5pdGlvbiIsRklFTERfREVGSU5JVElPTjoiRmllbGREZWZpbml0aW9uIixJTlBVVF9WQUxVRV9ERUZJTklUSU9OOiJJbnB1dFZhbHVlRGVmaW5pdGlvbiIsSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTjoiSW50ZXJmYWNlVHlwZURlZmluaXRpb24iLFVOSU9OX1RZUEVfREVGSU5JVElPTjoiVW5pb25UeXBlRGVmaW5pdGlvbiIsRU5VTV9UWVBFX0RFRklOSVRJT046IkVudW1UeXBlRGVmaW5pdGlvbiIsRU5VTV9WQUxVRV9ERUZJTklUSU9OOiJFbnVtVmFsdWVEZWZpbml0aW9uIixJTlBVVF9PQkpFQ1RfVFlQRV9ERUZJTklUSU9OOiJJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uIixESVJFQ1RJVkVfREVGSU5JVElPTjoiRGlyZWN0aXZlRGVmaW5pdGlvbiIsU0NIRU1BX0VYVEVOU0lPTjoiU2NoZW1hRXh0ZW5zaW9uIixTQ0FMQVJfVFlQRV9FWFRFTlNJT046IlNjYWxhclR5cGVFeHRlbnNpb24iLE9CSkVDVF9UWVBFX0VYVEVOU0lPTjoiT2JqZWN0VHlwZUV4dGVuc2lvbiIsSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OOiJJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uIixVTklPTl9UWVBFX0VYVEVOU0lPTjoiVW5pb25UeXBlRXh0ZW5zaW9uIixFTlVNX1RZUEVfRVhURU5TSU9OOiJFbnVtVHlwZUV4dGVuc2lvbiIsSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OOiJJbnB1dE9iamVjdFR5cGVFeHRlbnNpb24ifSk7dC5LaW5kPXJ9LHhmZUo6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKGUpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKX19LHhsZlo6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWk7dmFyIHI9YShuKCJxMXRJIikpLG89YShuKCIxN3g5IikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5vbk1vdXNlRG93bjtyZXR1cm4gci5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6IlNlbGVjdC1hcnJvdyIsb25Nb3VzZURvd246dH0pfWkucHJvcFR5cGVzPXtvbk1vdXNlRG93bjpvLmRlZmF1bHQuZnVuY319LHhvY0k6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI0cElCIiksbz1uKCJtRnlWIiksYT1yLmlzQnJvd3NlcigiSUUgPD0gOSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuPW51bGw7cmV0dXJuIWEmJmRvY3VtZW50LmltcGxlbWVudGF0aW9uJiZkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQmJigodD1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoImZvbyIpKS5kb2N1bWVudEVsZW1lbnR8fG8oITEpLHQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTD1lLG49dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKSxufX0seG9qMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oInJReTMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnZhbHVlcz9PYmplY3QudmFsdWVzOnJ9fSx5MGxyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiUURFbSIpLG89bigiQ0pYeCIpLGE9bigiSXE4RSIpLGk9bigiSlBjdiIpLHU9bigicTF0SSIpLHM9bigicFhtcCIpLGw9KGkuTGlzdCxmdW5jdGlvbihlKXt2YXIgdCxuO2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG49ZSwodD1pKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1uLGkucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmJsb2NrLG49ZS5jb250ZW50U3RhdGUsaT1lLmN1c3RvbVN0eWxlRm4sbD1lLmN1c3RvbVN0eWxlTWFwLGM9ZS5kZWNvcmF0b3IsZj1lLmRpcmVjdGlvbixkPWUuZm9yY2VTZWxlY3Rpb24scD1lLmhhc1NlbGVjdGlvbixoPWUuc2VsZWN0aW9uLHk9ZS50cmVlLG09dC5nZXRLZXkoKSx2PXQuZ2V0VGV4dCgpLGc9eS5zaXplLTEsYj10aGlzLnByb3BzLmNoaWxkcmVufHx5Lm1hcCgoZnVuY3Rpb24oZSxzKXt2YXIgeT1lLmdldCgiZGVjb3JhdG9yS2V5IiksYj1lLmdldCgibGVhdmVzIiksdz1iLnNpemUtMSxfPWIubWFwKChmdW5jdGlvbihlLG4pe3ZhciByPWEuZW5jb2RlKG0scyxuKSxjPWUuZ2V0KCJzdGFydCIpLGY9ZS5nZXQoImVuZCIpO3JldHVybiB1LmNyZWF0ZUVsZW1lbnQobyx7a2V5OnIsb2Zmc2V0S2V5OnIsYmxvY2s6dCxzdGFydDpjLHNlbGVjdGlvbjpwP2g6bnVsbCxmb3JjZVNlbGVjdGlvbjpkLHRleHQ6di5zbGljZShjLGYpLHN0eWxlU2V0OnQuZ2V0SW5saW5lU3R5bGVBdChjKSxjdXN0b21TdHlsZU1hcDpsLGN1c3RvbVN0eWxlRm46aSxpc0xhc3Q6eT09PWcmJm49PT13fSl9KSkudG9BcnJheSgpO3JldHVybiB5JiZjP3UuY3JlYXRlRWxlbWVudChyLHtibG9jazp0LGNoaWxkcmVuOl8sY29udGVudFN0YXRlOm4sZGVjb3JhdG9yOmMsZGVjb3JhdG9yS2V5OnksZGlyZWN0aW9uOmYsbGVhZlNldDplLHRleHQ6dixrZXk6c30pOl99KSkudG9BcnJheSgpO3JldHVybiB1LmNyZWF0ZUVsZW1lbnQoImRpdiIseyJkYXRhLW9mZnNldC1rZXkiOmEuZW5jb2RlKG0sMCwwKSxjbGFzc05hbWU6cyh7InB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9ibG9jayI6ITAsInB1YmxpYy9EcmFmdFN0eWxlRGVmYXVsdC9sdHIiOiJMVFIiPT09ZiwicHVibGljL0RyYWZ0U3R5bGVEZWZhdWx0L3J0bCI6IlJUTCI9PT1mfSl9LGIpfSxpfSh1LkNvbXBvbmVudCkpO2UuZXhwb3J0cz1sfSx5MW5BOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImJhbm5lciI6eyJhZHZlcnRpc2luZyI6eyJhbmNob3JUZXh0IjoiR2VoZSB6dSBXZXJiZWthbXBhZ25lbiJ9LCJvcmNoYXJkR28iOnsiYW5jaG9yVGV4dCI6Ik9yY2hhcmRHbyBqZXR6dCBoZXJ1bnRlcmxhZGVuIiwiZGVzY3JpcHRpb24iOiJWZXJmb2xnZSBkZWluZSBBdXN3ZXJ0dW5nZW4gdW5kIEFuYWx5c2VuIHVudGVyd2VncyEifX0sImVycm9ycyI6eyJkZWZhdWx0IjoiT29vcHMsIGhpZXIgaXN0IGV0d2FzIHNjaGllZmdlZ2FuZ2VuLiBCaXR0ZSB3YXJ0ZSBrdXJ6IHVuZCBsYWRlIGRpZSBTZWl0ZSBkYW5uIGVybmV1dC4gU29sbHRlc3QgZHUgd2VpdGVyaGluIGRpZXNlIE5hY2hyaWNodCBzZWhlbiB3ZW5kZSBkaWNoIGJpdHRlIGFuIGRlbiBTdXBwb3J0IEtvbnRha3QuIiwibm9uUmVhY3RpZmllZFBhZ2UiOiJEaWUgYW5nZWZvcmRlcnRlIFNlaXRlIHNvbGx0ZSB2b24gZWluZW0gUEhQIENvbnRyb2xsZXIgZ2VsYWRlbiB3ZXJkZW4uIFNvbGx0ZXN0IGR1IGRpZXNlIE1lbGR1bmcgd8OkaHJlbmQgZGVyIFByb2R1a3Rpb24gc2VoZW4ga29udGFrdGllcmUgYml0dGUgZGVuIFN1cHBvcnQgS29udGFrdC4iLCJwYWdlTm90Rm91bmQiOiJFbnRzY2h1bGRpZ3VuZywgYWJlciBkaWUgYW5nZWZvcmRlcnRlIFNlaXRlIGV4aXN0aWVydCBuaWNodC4iLCJ1c2VyRmVhdHVyZXMiOiJFbnRzY2h1bGRpZ2UsIHdpciBrb25udGVuIGRpZSB1c2VyIGZlYXR1cmVzIG5pY2h0IGxhZGVuLiBCaXR0ZSB2ZXJzdWNoZSBlcyBlcm5ldXQgb2RlciB3ZW5kZSBkaWNoIGFuIGRlbiBTdXBwb3J0IEtvbnRha3QuIn0sImZvb3RlciI6eyJjb250YWN0RGlzdHJpYnV0b3IiOiJXZW5uIER1IEhpbGZlIGJlbsO2dGlnc3QsIHdlbmRlIGRpY2ggc2ljaCBiaXR0ZSBhbiBkZWluZS9uIExhYmVsbWFuYWdlci9pbi4iLCJoZWxwIjoiV29ya3N0YXRpb24gSGlsZmUiLCJwcml2YWN5UG9saWN5IjoiRGF0ZW5zY2h1dHoiLCJzdXBwb3J0Q29udGFjdCI6IlN1cHBvcnQgS29udGFrdDoiLCJ0ZXJtc0FuZENvbmRpdGlvbnMiOiJHZXNjaMOkZnRzYmVkaW5ndW5nZW4iLCJ0cmFkZW1hcmsiOiJUaGUgT3JjaGFyZCBpc3QgZWluIGVpbmdldHJhZ2VuZXMgV2FyZW56ZWljaGVuIHVuZCBkYXMgVGhlIE9yY2hhcmQtTG9nbyBpc3QgZWluZSBEaWVuc3RsZWlzdHVuZ3NtYXJrZSBkZXIgT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbi4ifSwiZ2xvYmFsU2VhcmNoIjp7InBsYWNlaG9sZGVyIjoiU3VjaGUgbmFjaCBQcm9qZWt0LCBQcm9kdWt0LCBLw7xuc3RsZXIuLi4iLCJwcm9kdWN0UGx1cmFsIjoiUHJvZHVrdGUiLCJwcm9qZWN0UGx1cmFsIjoiUHJvamVrdGUifSwiaGVhZGVyIjp7ImFjY291bnRpbmciOiJBYnJlY2hudW5nIiwiYW5hbHl0aWNzIjoiQW5hbHl0aWNzIiwiY2F0YWxvZyI6IkthdGFsb2ciLCJkcm9wZG93biI6eyJhZG1pbiI6IkFkbWluIiwiZGVmYXVsdHMiOiJTdGFuZGFyZCIsImxvZ091dCI6IkF1c2xvZ2dlbiIsImxvZ29zIjoiTG9nb3MiLCJteUFjY291bnQiOiJNZWluIEtvbnRvIiwicHJvZmlsZSI6IlByb2ZpbCJ9LCJoZWxwIjoiSGlsZmUiLCJtYXJrZXRpbmciOiJNYXJrZXRpbmcifSwic3ViaGVhZGVyIjp7ImFjY291bnRpbmciOnsiY29sbGFib3JhdG9yU3BsaXRzIjoiQmV0ZWlsaWd0ZSIsInBoeXNpY2FsUmVzZXJ2ZXMiOiJQaHlzaXNjaGUgUmVzZXJ2ZW4iLCJzdGF0ZW1lbnRzIjoiQWJyZWNobnVuZ2VuIiwidmlldyI6IkFuc2VoZW4ifSwiYW5hbHl0aWNzIjp7ImF1ZGllbmNlIjoiUHVibGlrdW0iLCJjb21wYXJpc29uIjoiVmVyZ2xlaWNoIiwiZW5nYWdlbWVudCI6IkVuZ2FnZW1lbnQiLCJmaWxtVHJhbnNwYXJlbmN5IjoiRmlsbS1UcmFuc3BhcmVueiIsImhlYXRtYXAiOiJIZWF0bWFwIiwib3ZlcnZpZXciOiLDnGJlcnNpY2h0IiwicGh5c2ljYWxSZXBvcnRpbmciOiJQaHlzaXNjaGVzIFJlcG9ydGluZyIsInRvcENoYXJ0cyI6IlRvcCBDaGFydHMifX19Jyl9LHk0eUo6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5wcmludExvY2F0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBvKGUuc291cmNlLCgwLHIuZ2V0TG9jYXRpb24pKGUuc291cmNlLGUuc3RhcnQpKX0sdC5wcmludFNvdXJjZUxvY2F0aW9uPW87dmFyIHI9bigiUE85byIpO2Z1bmN0aW9uIG8oZSx0KXt2YXIgbj1lLmxvY2F0aW9uT2Zmc2V0LmNvbHVtbi0xLHI9aShuKStlLmJvZHksbz10LmxpbmUtMSx1PWUubG9jYXRpb25PZmZzZXQubGluZS0xLHM9dC5saW5lK3UsbD0xPT09dC5saW5lP246MCxjPXQuY29sdW1uK2wsZj0iIi5jb25jYXQoZS5uYW1lLCI6IikuY29uY2F0KHMsIjoiKS5jb25jYXQoYywiXG4iKSxkPXIuc3BsaXQoL1xyXG58W1xuXHJdL2cpLHA9ZFtvXTtpZihwLmxlbmd0aD4xMjApe2Zvcih2YXIgaD1NYXRoLmZsb29yKGMvODApLHk9YyU4MCxtPVtdLHY9MDt2PHAubGVuZ3RoO3YrPTgwKW0ucHVzaChwLnNsaWNlKHYsdis4MCkpO3JldHVybiBmK2EoW1siIi5jb25jYXQocyksbVswXV1dLmNvbmNhdChtLnNsaWNlKDEsaCsxKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblsiIixlXX0pKSxbWyIgIixpKHktMSkrIl4iXSxbIiIsbVtoKzFdXV0pKX1yZXR1cm4gZithKFtbIiIuY29uY2F0KHMtMSksZFtvLTFdXSxbIiIuY29uY2F0KHMpLHBdLFsiIixpKGMtMSkrIl4iXSxbIiIuY29uY2F0KHMrMSksZFtvKzFdXV0pfWZ1bmN0aW9uIGEoZSl7dmFyIHQ9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe2VbMF07cmV0dXJuIHZvaWQgMCE9PWVbMV19KSksbj1NYXRoLm1heC5hcHBseShNYXRoLHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZVswXS5sZW5ndGh9KSkpO3JldHVybiB0Lm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQscj1lWzBdLG89ZVsxXTtyZXR1cm4gaShuLSh0PXIpLmxlbmd0aCkrdCsiIHwgIitvfSkpLmpvaW4oIlxuIil9ZnVuY3Rpb24gaShlKXtyZXR1cm4gQXJyYXkoZSsxKS5qb2luKCIgIil9fSwieTVQKyI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJtRnlWIiksbz0vW1x1RDgwMC1cdURGRkZdLztmdW5jdGlvbiBhKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTczNDN9ZnVuY3Rpb24gaShlKXtyZXR1cm4gby50ZXN0KGUpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gMSthKGUuY2hhckNvZGVBdCh0KSl9ZnVuY3Rpb24gcyhlLHQsbil7aWYodD10fHwwLG49dm9pZCAwPT09bj8xLzA6bnx8MCwhaShlKSlyZXR1cm4gZS5zdWJzdHIodCxuKTt2YXIgcj1lLmxlbmd0aDtpZihyPD0wfHx0PnJ8fG48PTApcmV0dXJuIiI7dmFyIG89MDtpZih0PjApe2Zvcig7dD4wJiZvPHI7dC0tKW8rPXUoZSxvKTtpZihvPj1yKXJldHVybiIifWVsc2UgaWYodDwwKXtmb3Iobz1yO3Q8MCYmMDxvO3QrKylvLT11KGUsby0xKTtvPDAmJihvPTApfXZhciBhPXI7aWYobjxyKWZvcihhPW87bj4wJiZhPHI7bi0tKWErPXUoZSxhKTtyZXR1cm4gZS5zdWJzdHJpbmcobyxhKX12YXIgbD17Z2V0Q29kZVBvaW50czpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bis9dShlLG4pKXQucHVzaChlLmNvZGVQb2ludEF0KG4pKTtyZXR1cm4gdH0sZ2V0VVRGMTZMZW5ndGg6dSxoYXNTdXJyb2dhdGVVbml0OmksaXNDb2RlVW5pdEluU3Vycm9nYXRlUmFuZ2U6YSxpc1N1cnJvZ2F0ZVBhaXI6ZnVuY3Rpb24oZSx0KXtpZigwPD10JiZ0PGUubGVuZ3RofHxyKCExKSx0KzE9PT1lLmxlbmd0aClyZXR1cm4hMTt2YXIgbj1lLmNoYXJDb2RlQXQodCksbz1lLmNoYXJDb2RlQXQodCsxKTtyZXR1cm4gNTUyOTY8PW4mJm48PTU2MzE5JiY1NjMyMDw9byYmbzw9NTczNDN9LHN0cmxlbjpmdW5jdGlvbihlKXtpZighaShlKSlyZXR1cm4gZS5sZW5ndGg7Zm9yKHZhciB0PTAsbj0wO248ZS5sZW5ndGg7bis9dShlLG4pKXQrKztyZXR1cm4gdH0sc3Vic3RyaW5nOmZ1bmN0aW9uKGUsdCxuKXsodD10fHwwKTwwJiYodD0wKSwobj12b2lkIDA9PT1uPzEvMDpufHwwKTwwJiYobj0wKTt2YXIgcj1NYXRoLmFicyhuLXQpO3JldHVybiBzKGUsdD10PG4/dDpuLHIpfSxzdWJzdHI6c307ZS5leHBvcnRzPWx9LHlHNFo6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5WYWx1ZT10LkNyZWF0YWJsZT10LkFzeW5jQ3JlYXRhYmxlPXQuQXN5bmM9dm9pZCAwO3ZhciByPXMobigiak1ZYSIpKSxvPXMobigiSDBBRCIpKSxhPXMobigicHNzZCIpKSxpPXMobigiNkRZeiIpKSx1PXMobigiYzd6UCIpKTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1yLmRlZmF1bHQuQXN5bmM9by5kZWZhdWx0LHIuZGVmYXVsdC5Bc3luY0NyZWF0YWJsZT1hLmRlZmF1bHQsci5kZWZhdWx0LkNyZWF0YWJsZT1pLmRlZmF1bHQsci5kZWZhdWx0LlZhbHVlPXUuZGVmYXVsdCx0LmRlZmF1bHQ9ci5kZWZhdWx0LHQuQXN5bmM9by5kZWZhdWx0LHQuQXN5bmNDcmVhdGFibGU9YS5kZWZhdWx0LHQuQ3JlYXRhYmxlPWkuZGVmYXVsdCx0LlZhbHVlPXUuZGVmYXVsdH0seUxvVzpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWgobigiMTd4OSIpKSxvPWgobigiWEdCYiIpKSxhPW4oIkhzcWciKSxpPW4oInZWK0ciKSx1PWgobigieWMyZSIpKSxzPWgobigiNWJOOSIpKSxsPWgobigiQmg2UiIpKSxjPWgobigicU9TSyIpKSxmPWgobigiMCtiZyIpKSxkPWgobigiaXVMciIpKSxwPWgobigiMlMyRSIpKTtmdW5jdGlvbiBoKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10LmRlZmF1bHQ9e3N0YXJ0RGF0ZTpvLmRlZmF1bHQubW9tZW50T2JqLGVuZERhdGU6by5kZWZhdWx0Lm1vbWVudE9iaixvbkRhdGVzQ2hhbmdlOnIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsZm9jdXNlZElucHV0OnMuZGVmYXVsdCxvbkZvY3VzQ2hhbmdlOnIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsb25DbG9zZTpyLmRlZmF1bHQuZnVuYyxzdGFydERhdGVJZDpyLmRlZmF1bHQuc3RyaW5nLmlzUmVxdWlyZWQsc3RhcnREYXRlUGxhY2Vob2xkZXJUZXh0OnIuZGVmYXVsdC5zdHJpbmcsZW5kRGF0ZUlkOnIuZGVmYXVsdC5zdHJpbmcuaXNSZXF1aXJlZCxlbmREYXRlUGxhY2Vob2xkZXJUZXh0OnIuZGVmYXVsdC5zdHJpbmcsZGlzYWJsZWQ6ci5kZWZhdWx0LmJvb2wscmVxdWlyZWQ6ci5kZWZhdWx0LmJvb2wscmVhZE9ubHk6ci5kZWZhdWx0LmJvb2wsc2NyZWVuUmVhZGVySW5wdXRNZXNzYWdlOnIuZGVmYXVsdC5zdHJpbmcsc2hvd0NsZWFyRGF0ZXM6ci5kZWZhdWx0LmJvb2wsc2hvd0RlZmF1bHRJbnB1dEljb246ci5kZWZhdWx0LmJvb2wsaW5wdXRJY29uUG9zaXRpb246bC5kZWZhdWx0LGN1c3RvbUlucHV0SWNvbjpyLmRlZmF1bHQubm9kZSxjdXN0b21BcnJvd0ljb246ci5kZWZhdWx0Lm5vZGUsY3VzdG9tQ2xvc2VJY29uOnIuZGVmYXVsdC5ub2RlLHJlbmRlck1vbnRoOnIuZGVmYXVsdC5mdW5jLG9yaWVudGF0aW9uOmMuZGVmYXVsdCxhbmNob3JEaXJlY3Rpb246Zi5kZWZhdWx0LG9wZW5EaXJlY3Rpb246ZC5kZWZhdWx0LGhvcml6b250YWxNYXJnaW46ci5kZWZhdWx0Lm51bWJlcix3aXRoUG9ydGFsOnIuZGVmYXVsdC5ib29sLHdpdGhGdWxsU2NyZWVuUG9ydGFsOnIuZGVmYXVsdC5ib29sLGRheVNpemU6YS5ub25OZWdhdGl2ZUludGVnZXIsaXNSVEw6ci5kZWZhdWx0LmJvb2wsZmlyc3REYXlPZldlZWs6cC5kZWZhdWx0LGluaXRpYWxWaXNpYmxlTW9udGg6ci5kZWZhdWx0LmZ1bmMsbnVtYmVyT2ZNb250aHM6ci5kZWZhdWx0Lm51bWJlcixrZWVwT3Blbk9uRGF0ZVNlbGVjdDpyLmRlZmF1bHQuYm9vbCxyZW9wZW5QaWNrZXJPbkNsZWFyRGF0ZXM6ci5kZWZhdWx0LmJvb2wscmVuZGVyQ2FsZW5kYXJJbmZvOnIuZGVmYXVsdC5mdW5jLGhpZGVLZXlib2FyZFNob3J0Y3V0c1BhbmVsOnIuZGVmYXVsdC5ib29sLG5hdlByZXY6ci5kZWZhdWx0Lm5vZGUsbmF2TmV4dDpyLmRlZmF1bHQubm9kZSxvblByZXZNb250aENsaWNrOnIuZGVmYXVsdC5mdW5jLG9uTmV4dE1vbnRoQ2xpY2s6ci5kZWZhdWx0LmZ1bmMscmVuZGVyRGF5OnIuZGVmYXVsdC5mdW5jLG1pbmltdW1OaWdodHM6ci5kZWZhdWx0Lm51bWJlcixlbmFibGVPdXRzaWRlRGF5czpyLmRlZmF1bHQuYm9vbCxpc0RheUJsb2NrZWQ6ci5kZWZhdWx0LmZ1bmMsaXNPdXRzaWRlUmFuZ2U6ci5kZWZhdWx0LmZ1bmMsaXNEYXlIaWdobGlnaHRlZDpyLmRlZmF1bHQuZnVuYyxkaXNwbGF5Rm9ybWF0OnIuZGVmYXVsdC5vbmVPZlR5cGUoW3IuZGVmYXVsdC5zdHJpbmcsci5kZWZhdWx0LmZ1bmNdKSxtb250aEZvcm1hdDpyLmRlZmF1bHQuc3RyaW5nLHdlZWtEYXlGb3JtYXQ6ci5kZWZhdWx0LnN0cmluZyxwaHJhc2VzOnIuZGVmYXVsdC5zaGFwZSgoMCx1LmRlZmF1bHQpKGkuRGF0ZVJhbmdlUGlja2VyUGhyYXNlcykpfX0seUxwajpmdW5jdGlvbihlLHQpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1ufHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaChlKXsib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKG49d2luZG93KX1lLmV4cG9ydHM9bn0seUxwdDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkZ1Zk8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbj9mdW5jdGlvbigpe2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO2Zvcih2YXIgZT0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLHQ9ZS5zcGxpdCgiIiksbj17fSxyPTA7cjx0Lmxlbmd0aDsrK3Ipblt0W3JdXT10W3JdO3ZhciBvPU9iamVjdC5hc3NpZ24oe30sbiksYT0iIjtmb3IodmFyIGkgaW4gbylhKz1pO3JldHVybiBlIT09YX0oKT9yOmZ1bmN0aW9uKCl7aWYoIU9iamVjdC5hc3NpZ258fCFPYmplY3QucHJldmVudEV4dGVuc2lvbnMpcmV0dXJuITE7dmFyIGU9T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHsxOjJ9KTt0cnl7T2JqZWN0LmFzc2lnbihlLCJ4eSIpfWNhdGNoKHQpe3JldHVybiJ5Ij09PWVbMV19cmV0dXJuITF9KCk/cjpPYmplY3QuYXNzaWduOnJ9fSx5UWJoOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9bnVsbCxuPTE7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl0sYT1vKHIpO2lmKGEhPT1yLmxlbmd0aCYmKChudWxsPT09dHx8YTx0KSYmMD09PSh0PWEpKSlicmVha31yZXR1cm4gbnVsbD09PXQ/MDp0fWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aCYmKCIgIj09PWVbdF18fCJcdCI9PT1lW3RdKTspdCsrO3JldHVybiB0fWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG8oZSk9PT1lLmxlbmd0aH1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWRlbnRCbG9ja1N0cmluZ1ZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3BsaXQoL1xyXG58W1xuXHJdL2cpLG49cih0KTtpZigwIT09bilmb3IodmFyIG89MTtvPHQubGVuZ3RoO28rKyl0W29dPXRbb10uc2xpY2Uobik7Zm9yKDt0Lmxlbmd0aD4wJiZhKHRbMF0pOyl0LnNoaWZ0KCk7Zm9yKDt0Lmxlbmd0aD4wJiZhKHRbdC5sZW5ndGgtMV0pOyl0LnBvcCgpO3JldHVybiB0LmpvaW4oIlxuIil9LHQuZ2V0QmxvY2tTdHJpbmdJbmRlbnRhdGlvbj1yLHQucHJpbnRCbG9ja1N0cmluZz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IiIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHI9LTE9PT1lLmluZGV4T2YoIlxuIiksbz0iICI9PT1lWzBdfHwiXHQiPT09ZVswXSxhPSciJz09PWVbZS5sZW5ndGgtMV0saT0hcnx8YXx8bix1PSIiOyFpfHxyJiZvfHwodSs9IlxuIit0KTt1Kz10P2UucmVwbGFjZSgvXG4vZywiXG4iK3QpOmUsaSYmKHUrPSJcbiIpO3JldHVybiciIiInK3UucmVwbGFjZSgvIiIiL2csJ1xcIiIiJykrJyIiIid9fSx5VUdKOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJihlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCksIWUmJmRvY3VtZW50LmJvZHkmJihlPWRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpLGV8fDB9ZnVuY3Rpb24gbygpe3ZhciBlO3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJihlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpLCFlJiZkb2N1bWVudC5ib2R5JiYoZT1kb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCksZXx8MH1mdW5jdGlvbiBhKCl7cmV0dXJue3dpZHRoOndpbmRvdy5pbm5lcldpZHRofHxyKCksaGVpZ2h0OndpbmRvdy5pbm5lckhlaWdodHx8bygpfX1hLndpdGhvdXRTY3JvbGxiYXJzPWZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOnIoKSxoZWlnaHQ6bygpfX0sZS5leHBvcnRzPWF9LHlYUFU6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUsdCxuLHIsbyxhLGkpe3RyeXt2YXIgdT1lW2FdKGkpLHM9dS52YWx1ZX1jYXRjaChlKXtyZXR1cm4gdm9pZCBuKGUpfXUuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiB1KGUpe24oaSxvLGEsdSxzLCJuZXh0IixlKX1mdW5jdGlvbiBzKGUpe24oaSxvLGEsdSxzLCJ0aHJvdyIsZSl9dSh2b2lkIDApfSkpfX19LHljMmU6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCxyLmRlZmF1bHQpKHt9LGUsZnVuY3Rpb24oZSx0LG4pe3QgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uO3JldHVybiBlfSh7fSx0LG8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5zdHJpbmcsby5kZWZhdWx0LmZ1bmMsby5kZWZhdWx0Lm5vZGVdKSkpfSkse30pfTt2YXIgcj1hKG4oIktvcS8iKSksbz1hKG4oIjE3eDkiKSk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSx5Y3pwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMlc2eiIpLG89bi5uKHIpLGE9bigiUUxhUCIpLGk9bi5uKGEpLHU9bigicTF0SSIpLHM9bi5uKHUpLGw9bigiMTd4OSIpLGM9bi5uKGwpLGY9bigiTGhDdiIpLGQ9bigibnI2TyIpLHA9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07ZnVuY3Rpb24gaChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgbT1mdW5jdGlvbihlKXtyZXR1cm4iLyI9PT1lLmNoYXJBdCgwKT9lOiIvIitlfSx2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU/cCh7fSx0LHtwYXRobmFtZTptKGUpK3QucGF0aG5hbWV9KTp0fSxnPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIHQ7dmFyIG49bShlKTtyZXR1cm4gMCE9PXQucGF0aG5hbWUuaW5kZXhPZihuKT90OnAoe30sdCx7cGF0aG5hbWU6dC5wYXRobmFtZS5zdWJzdHIobi5sZW5ndGgpfSl9LGI9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6T2JqZWN0KGYuZSkoZSl9LHc9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7aSgpKCExLCJZb3UgY2Fubm90ICVzIHdpdGggPFN0YXRpY1JvdXRlcj4iLGUpfX0sXz1mdW5jdGlvbigpe30sRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIG4scjtoKHRoaXMsdCk7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsYT1BcnJheShvKSxpPTA7aTxvO2krKylhW2ldPWFyZ3VtZW50c1tpXTtyZXR1cm4gbj1yPXkodGhpcyxlLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGEpKSksci5jcmVhdGVIcmVmPWZ1bmN0aW9uKGUpe3JldHVybiBtKHIucHJvcHMuYmFzZW5hbWUrYihlKSl9LHIuaGFuZGxlUHVzaD1mdW5jdGlvbihlKXt2YXIgdD1yLnByb3BzLG49dC5iYXNlbmFtZSxvPXQuY29udGV4dDtvLmFjdGlvbj0iUFVTSCIsby5sb2NhdGlvbj12KG4sT2JqZWN0KGYuYykoZSkpLG8udXJsPWIoby5sb2NhdGlvbil9LHIuaGFuZGxlUmVwbGFjZT1mdW5jdGlvbihlKXt2YXIgdD1yLnByb3BzLG49dC5iYXNlbmFtZSxvPXQuY29udGV4dDtvLmFjdGlvbj0iUkVQTEFDRSIsby5sb2NhdGlvbj12KG4sT2JqZWN0KGYuYykoZSkpLG8udXJsPWIoby5sb2NhdGlvbil9LHIuaGFuZGxlTGlzdGVuPWZ1bmN0aW9uKCl7cmV0dXJuIF99LHIuaGFuZGxlQmxvY2s9ZnVuY3Rpb24oKXtyZXR1cm4gX30seShyLG4pfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksdC5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3JvdXRlcjp7c3RhdGljQ29udGV4dDp0aGlzLnByb3BzLmNvbnRleHR9fX0sdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7bygpKCF0aGlzLnByb3BzLmhpc3RvcnksIjxTdGF0aWNSb3V0ZXI+IGlnbm9yZXMgdGhlIGhpc3RvcnkgcHJvcC4gVG8gdXNlIGEgY3VzdG9tIGhpc3RvcnksIHVzZSBgaW1wb3J0IHsgUm91dGVyIH1gIGluc3RlYWQgb2YgYGltcG9ydCB7IFN0YXRpY1JvdXRlciBhcyBSb3V0ZXIgfWAuIil9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmJhc2VuYW1lLG49KGUuY29udGV4dCxlLmxvY2F0aW9uKSxyPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59KGUsWyJiYXNlbmFtZSIsImNvbnRleHQiLCJsb2NhdGlvbiJdKSxvPXtjcmVhdGVIcmVmOnRoaXMuY3JlYXRlSHJlZixhY3Rpb246IlBPUCIsbG9jYXRpb246Zyh0LE9iamVjdChmLmMpKG4pKSxwdXNoOnRoaXMuaGFuZGxlUHVzaCxyZXBsYWNlOnRoaXMuaGFuZGxlUmVwbGFjZSxnbzp3KCJnbyIpLGdvQmFjazp3KCJnb0JhY2siKSxnb0ZvcndhcmQ6dygiZ29Gb3J3YXJkIiksbGlzdGVuOnRoaXMuaGFuZGxlTGlzdGVuLGJsb2NrOnRoaXMuaGFuZGxlQmxvY2t9O3JldHVybiBzLmEuY3JlYXRlRWxlbWVudChkLmEscCh7fSxyLHtoaXN0b3J5Om99KSl9LHR9KHMuYS5Db21wb25lbnQpO0UucHJvcFR5cGVzPXtiYXNlbmFtZTpjLmEuc3RyaW5nLGNvbnRleHQ6Yy5hLm9iamVjdC5pc1JlcXVpcmVkLGxvY2F0aW9uOmMuYS5vbmVPZlR5cGUoW2MuYS5zdHJpbmcsYy5hLm9iamVjdF0pfSxFLmRlZmF1bHRQcm9wcz17YmFzZW5hbWU6IiIsbG9jYXRpb246Ii8ifSxFLmNoaWxkQ29udGV4dFR5cGVzPXtyb3V0ZXI6Yy5hLm9iamVjdC5pc1JlcXVpcmVkfSx0LmE9RX0seWwzMDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oInExdEkiKSxvPW4oIk1nelciKSxhPW4oIlFDbmIiKTtmdW5jdGlvbiBpKGUpe2Zvcih2YXIgdD0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIit0KyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9aWYoIXIpdGhyb3cgRXJyb3IoaSgyMjcpKTt2YXIgdT1udWxsLHM9e307ZnVuY3Rpb24gbCgpe2lmKHUpZm9yKHZhciBlIGluIHMpe3ZhciB0PXNbZV0sbj11LmluZGV4T2YoZSk7aWYoISgtMTxuKSl0aHJvdyBFcnJvcihpKDk2LGUpKTtpZighZltuXSl7aWYoIXQuZXh0cmFjdEV2ZW50cyl0aHJvdyBFcnJvcihpKDk3LGUpKTtmb3IodmFyIHIgaW4gZltuXT10LG49dC5ldmVudFR5cGVzKXt2YXIgbz12b2lkIDAsYT1uW3JdLGw9dCxwPXI7aWYoZC5oYXNPd25Qcm9wZXJ0eShwKSl0aHJvdyBFcnJvcihpKDk5LHApKTtkW3BdPWE7dmFyIGg9YS5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihoKXtmb3IobyBpbiBoKWguaGFzT3duUHJvcGVydHkobykmJmMoaFtvXSxsLHApO289ITB9ZWxzZSBhLnJlZ2lzdHJhdGlvbk5hbWU/KGMoYS5yZWdpc3RyYXRpb25OYW1lLGwscCksbz0hMCk6bz0hMTtpZighbyl0aHJvdyBFcnJvcihpKDk4LHIsZSkpfX19fWZ1bmN0aW9uIGMoZSx0LG4pe2lmKHBbZV0pdGhyb3cgRXJyb3IoaSgxMDAsZSkpO3BbZV09dCxoW2VdPXQuZXZlbnRUeXBlc1tuXS5kZXBlbmRlbmNpZXN9dmFyIGY9W10sZD17fSxwPXt9LGg9e307ZnVuY3Rpb24geShlLHQsbixyLG8sYSxpLHUscyl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXt0LmFwcGx5KG4sbCl9Y2F0Y2goZSl7dGhpcy5vbkVycm9yKGUpfX12YXIgbT0hMSx2PW51bGwsZz0hMSxiPW51bGwsdz17b25FcnJvcjpmdW5jdGlvbihlKXttPSEwLHY9ZX19O2Z1bmN0aW9uIF8oZSx0LG4scixvLGEsaSx1LHMpe209ITEsdj1udWxsLHkuYXBwbHkodyxhcmd1bWVudHMpfXZhciBFPW51bGwsTz1udWxsLGs9bnVsbDtmdW5jdGlvbiBDKGUsdCxuKXt2YXIgcj1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9ayhuKSxmdW5jdGlvbihlLHQsbixyLG8sYSx1LHMsbCl7aWYoXy5hcHBseSh0aGlzLGFyZ3VtZW50cyksbSl7aWYoIW0pdGhyb3cgRXJyb3IoaSgxOTgpKTt2YXIgYz12O209ITEsdj1udWxsLGd8fChnPSEwLGI9Yyl9fShyLHQsdm9pZCAwLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIHgoZSx0KXtpZihudWxsPT10KXRocm93IEVycm9yKGkoMzApKTtyZXR1cm4gbnVsbD09ZT90OkFycmF5LmlzQXJyYXkoZSk/QXJyYXkuaXNBcnJheSh0KT8oZS5wdXNoLmFwcGx5KGUsdCksZSk6KGUucHVzaCh0KSxlKTpBcnJheS5pc0FycmF5KHQpP1tlXS5jb25jYXQodCk6W2UsdF19ZnVuY3Rpb24gUyhlLHQsbil7QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX12YXIgRD1udWxsO2Z1bmN0aW9uIFQoZSl7aWYoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisrKUMoZSx0W3JdLG5bcl0pO2Vsc2UgdCYmQyhlLHQsbik7ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLGUuaXNQZXJzaXN0ZW50KCl8fGUuY29uc3RydWN0b3IucmVsZWFzZShlKX19ZnVuY3Rpb24gTShlKXtpZihudWxsIT09ZSYmKEQ9eChELGUpKSxlPUQsRD1udWxsLGUpe2lmKFMoZSxUKSxEKXRocm93IEVycm9yKGkoOTUpKTtpZihnKXRocm93IGU9YixnPSExLGI9bnVsbCxlfX12YXIgUD17aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihlKXtpZih1KXRocm93IEVycm9yKGkoMTAxKSk7dT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxsKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2YXIgdCxuPSExO2Zvcih0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIHI9ZVt0XTtpZighcy5oYXNPd25Qcm9wZXJ0eSh0KXx8c1t0XSE9PXIpe2lmKHNbdF0pdGhyb3cgRXJyb3IoaSgxMDIsdCkpO3NbdF09cixuPSEwfX1uJiZsKCl9fTtmdW5jdGlvbiBOKGUsdCl7dmFyIG49ZS5zdGF0ZU5vZGU7aWYoIW4pcmV0dXJuIG51bGw7dmFyIHI9RShuKTtpZighcilyZXR1cm4gbnVsbDtuPXJbdF07ZTpzd2l0Y2godCl7Y2FzZSJvbkNsaWNrIjpjYXNlIm9uQ2xpY2tDYXB0dXJlIjpjYXNlIm9uRG91YmxlQ2xpY2siOmNhc2Uib25Eb3VibGVDbGlja0NhcHR1cmUiOmNhc2Uib25Nb3VzZURvd24iOmNhc2Uib25Nb3VzZURvd25DYXB0dXJlIjpjYXNlIm9uTW91c2VNb3ZlIjpjYXNlIm9uTW91c2VNb3ZlQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlVXAiOmNhc2Uib25Nb3VzZVVwQ2FwdHVyZSI6KHI9IXIuZGlzYWJsZWQpfHwocj0hKCJidXR0b24iPT09KGU9ZS50eXBlKXx8ImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWUpKSxlPSFyO2JyZWFrIGU7ZGVmYXVsdDplPSExfWlmKGUpcmV0dXJuIG51bGw7aWYobiYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgRXJyb3IoaSgyMzEsdCx0eXBlb2YgbikpO3JldHVybiBufXZhciBqPXIuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7ai5oYXNPd25Qcm9wZXJ0eSgiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIpfHwoai5SZWFjdEN1cnJlbnREaXNwYXRjaGVyPXtjdXJyZW50Om51bGx9KSxqLmhhc093blByb3BlcnR5KCJSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyIpfHwoai5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZz17c3VzcGVuc2U6bnVsbH0pO3ZhciBMPS9eKC4qKVtcXFwvXS8sUj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLEk9Uj9TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iik6NjAxMDMsQT1SP1N5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpOjYwMTA2LEY9Uj9TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpOjYwMTA3LEI9Uj9TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpOjYwMTA4LHo9Uj9TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpOjYwMTE0LEs9Uj9TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpOjYwMTA5LHE9Uj9TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0Iik6NjAxMTAsVj1SP1N5bWJvbC5mb3IoInJlYWN0LmNvbmN1cnJlbnRfbW9kZSIpOjYwMTExLFU9Uj9TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpOjYwMTEyLFc9Uj9TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpOjYwMTEzLFk9Uj9TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0Iik6NjAxMjAsSD1SP1N5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKTo2MDExNSxHPVI/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2O1ImJlN5bWJvbC5mb3IoInJlYWN0LmZ1bmRhbWVudGFsIiksUiYmU3ltYm9sLmZvcigicmVhY3QucmVzcG9uZGVyIiksUiYmU3ltYm9sLmZvcigicmVhY3Quc2NvcGUiKTt2YXIgUT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gSihlKXtyZXR1cm4gbnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgZT9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZihlPVEmJmVbUV18fGVbIkBAaXRlcmF0b3IiXSk/ZTpudWxsfWZ1bmN0aW9uIFooZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxudWxsO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtzd2l0Y2goZSl7Y2FzZSBGOnJldHVybiJGcmFnbWVudCI7Y2FzZSBBOnJldHVybiJQb3J0YWwiO2Nhc2UgejpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgQjpyZXR1cm4iU3RyaWN0TW9kZSI7Y2FzZSBXOnJldHVybiJTdXNwZW5zZSI7Y2FzZSBZOnJldHVybiJTdXNwZW5zZUxpc3QifWlmKCJvYmplY3QiPT10eXBlb2YgZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBxOnJldHVybiJDb250ZXh0LkNvbnN1bWVyIjtjYXNlIEs6cmV0dXJuIkNvbnRleHQuUHJvdmlkZXIiO2Nhc2UgVTp2YXIgdD1lLnJlbmRlcjtyZXR1cm4gdD10LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fCIiLGUuZGlzcGxheU5hbWV8fCgiIiE9PXQ/IkZvcndhcmRSZWYoIit0KyIpIjoiRm9yd2FyZFJlZiIpO2Nhc2UgSDpyZXR1cm4gWihlLnR5cGUpO2Nhc2UgRzppZihlPTE9PT1lLl9zdGF0dXM/ZS5fcmVzdWx0Om51bGwpcmV0dXJuIFooZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gJChlKXt2YXIgdD0iIjtkb3tlOnN3aXRjaChlLnRhZyl7Y2FzZSAzOmNhc2UgNDpjYXNlIDY6Y2FzZSA3OmNhc2UgMTA6Y2FzZSA5OnZhciBuPSIiO2JyZWFrIGU7ZGVmYXVsdDp2YXIgcj1lLl9kZWJ1Z093bmVyLG89ZS5fZGVidWdTb3VyY2UsYT1aKGUudHlwZSk7bj1udWxsLHImJihuPVooci50eXBlKSkscj1hLGE9IiIsbz9hPSIgKGF0ICIrby5maWxlTmFtZS5yZXBsYWNlKEwsIiIpKyI6IitvLmxpbmVOdW1iZXIrIikiOm4mJihhPSIgKGNyZWF0ZWQgYnkgIituKyIpIiksbj0iXG4gICAgaW4gIisocnx8IlVua25vd24iKSthfXQrPW4sZT1lLnJldHVybn13aGlsZShlKTtyZXR1cm4gdH12YXIgWD0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHx2b2lkIDA9PT13aW5kb3cuZG9jdW1lbnR8fHZvaWQgMD09PXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxlZT1udWxsLHRlPW51bGwsbmU9bnVsbDtmdW5jdGlvbiByZShlKXtpZihlPU8oZSkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlZSl0aHJvdyBFcnJvcihpKDI4MCkpO3ZhciB0PUUoZS5zdGF0ZU5vZGUpO2VlKGUuc3RhdGVOb2RlLGUudHlwZSx0KX19ZnVuY3Rpb24gb2UoZSl7dGU/bmU/bmUucHVzaChlKTpuZT1bZV06dGU9ZX1mdW5jdGlvbiBhZSgpe2lmKHRlKXt2YXIgZT10ZSx0PW5lO2lmKG5lPXRlPW51bGwscmUoZSksdClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXJlKHRbZV0pfX1mdW5jdGlvbiBpZShlLHQpe3JldHVybiBlKHQpfWZ1bmN0aW9uIHVlKGUsdCxuLHIpe3JldHVybiBlKHQsbixyKX1mdW5jdGlvbiBzZSgpe312YXIgbGU9aWUsY2U9ITEsZmU9ITE7ZnVuY3Rpb24gZGUoKXtudWxsPT09dGUmJm51bGw9PT1uZXx8KHNlKCksYWUoKSl9bmV3IE1hcDt2YXIgcGU9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLyxoZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHllPXt9LG1lPXt9O2Z1bmN0aW9uIHZlKGUsdCxuLHIsbyxhKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09dHx8Mz09PXR8fDQ9PT10LHRoaXMuYXR0cmlidXRlTmFtZT1yLHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlPW8sdGhpcy5tdXN0VXNlUHJvcGVydHk9bix0aGlzLnByb3BlcnR5TmFtZT1lLHRoaXMudHlwZT10LHRoaXMuc2FuaXRpemVVUkw9YX12YXIgZ2U9e307ImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZSIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtnZVtlXT1uZXcgdmUoZSwwLCExLGUsbnVsbCwhMSl9KSksW1siYWNjZXB0Q2hhcnNldCIsImFjY2VwdC1jaGFyc2V0Il0sWyJjbGFzc05hbWUiLCJjbGFzcyJdLFsiaHRtbEZvciIsImZvciJdLFsiaHR0cEVxdWl2IiwiaHR0cC1lcXVpdiJdXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lWzBdO2dlW3RdPW5ldyB2ZSh0LDEsITEsZVsxXSxudWxsLCExKX0pKSxbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2dlW2VdPW5ldyB2ZShlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSkpLFsiYXV0b1JldmVyc2UiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZm9jdXNhYmxlIiwicHJlc2VydmVBbHBoYSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2dlW2VdPW5ldyB2ZShlLDIsITEsZSxudWxsLCExKX0pKSwiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2dlW2VdPW5ldyB2ZShlLDMsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSkpLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2dlW2VdPW5ldyB2ZShlLDMsITAsZSxudWxsLCExKX0pKSxbImNhcHR1cmUiLCJkb3dubG9hZCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2dlW2VdPW5ldyB2ZShlLDQsITEsZSxudWxsLCExKX0pKSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtnZVtlXT1uZXcgdmUoZSw2LCExLGUsbnVsbCwhMSl9KSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtnZVtlXT1uZXcgdmUoZSw1LCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pKTt2YXIgYmU9L1tcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIHdlKGUpe3JldHVybiBlWzFdLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gX2UoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlImJvb2xlYW4iOmNhc2UibnVtYmVyIjpjYXNlIm9iamVjdCI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBFZShlLHQsbixyKXt2YXIgbz1nZS5oYXNPd25Qcm9wZXJ0eSh0KT9nZVt0XTpudWxsOyhudWxsIT09bz8wPT09by50eXBlOiFyJiYoMjx0Lmxlbmd0aCYmKCJvIj09PXRbMF18fCJPIj09PXRbMF0pJiYoIm4iPT09dFsxXXx8Ik4iPT09dFsxXSkpKXx8KGZ1bmN0aW9uKGUsdCxuLHIpe2lmKG51bGw9PXR8fGZ1bmN0aW9uKGUsdCxuLHIpe2lmKG51bGwhPT1uJiYwPT09bi50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIXImJihudWxsIT09bj8hbi5hY2NlcHRzQm9vbGVhbnM6ImRhdGEtIiE9PShlPWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmImFyaWEtIiE9PWUpO2RlZmF1bHQ6cmV0dXJuITF9fShlLHQsbixyKSlyZXR1cm4hMDtpZihyKXJldHVybiExO2lmKG51bGwhPT1uKXN3aXRjaChuLnR5cGUpe2Nhc2UgMzpyZXR1cm4hdDtjYXNlIDQ6cmV0dXJuITE9PT10O2Nhc2UgNTpyZXR1cm4gaXNOYU4odCk7Y2FzZSA2OnJldHVybiBpc05hTih0KXx8MT50fXJldHVybiExfSh0LG4sbyxyKSYmKG49bnVsbCkscnx8bnVsbD09PW8/ZnVuY3Rpb24oZSl7cmV0dXJuISFoZS5jYWxsKG1lLGUpfHwhaGUuY2FsbCh5ZSxlKSYmKHBlLnRlc3QoZSk/bWVbZV09ITA6KHllW2VdPSEwLCExKSl9KHQpJiYobnVsbD09PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIituKSk6by5tdXN0VXNlUHJvcGVydHk/ZVtvLnByb3BlcnR5TmFtZV09bnVsbD09PW4/MyE9PW8udHlwZSYmIiI6bjoodD1vLmF0dHJpYnV0ZU5hbWUscj1vLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KToobj0zPT09KG89by50eXBlKXx8ND09PW8mJiEwPT09bj8iIjoiIituLHI/ZS5zZXRBdHRyaWJ1dGVOUyhyLHQsbik6ZS5zZXRBdHRyaWJ1dGUodCxuKSkpKX1mdW5jdGlvbiBPZShlKXt2YXIgdD1lLnR5cGU7cmV0dXJuKGU9ZS5ub2RlTmFtZSkmJiJpbnB1dCI9PT1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09dHx8InJhZGlvIj09PXQpfWZ1bmN0aW9uIGtlKGUpe2UuX3ZhbHVlVHJhY2tlcnx8KGUuX3ZhbHVlVHJhY2tlcj1mdW5jdGlvbihlKXt2YXIgdD1PZShlKT8iY2hlY2tlZCI6InZhbHVlIixuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsdCkscj0iIitlW3RdO2lmKCFlLmhhc093blByb3BlcnR5KHQpJiZ2b2lkIDAhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5nZXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnNldCl7dmFyIG89bi5nZXQsYT1uLnNldDtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtyPSIiK2UsYS5jYWxsKHRoaXMsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTpuLmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7cj0iIitlfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXtlLl92YWx1ZVRyYWNrZXI9bnVsbCxkZWxldGUgZVt0XX19fX0oZSkpfWZ1bmN0aW9uIENlKGUpe2lmKCFlKXJldHVybiExO3ZhciB0PWUuX3ZhbHVlVHJhY2tlcjtpZighdClyZXR1cm4hMDt2YXIgbj10LmdldFZhbHVlKCkscj0iIjtyZXR1cm4gZSYmKHI9T2UoZSk/ZS5jaGVja2VkPyJ0cnVlIjoiZmFsc2UiOmUudmFsdWUpLChlPXIpIT09biYmKHQuc2V0VmFsdWUoZSksITApfWZ1bmN0aW9uIHhlKGUsdCl7dmFyIG49dC5jaGVja2VkO3JldHVybiBvKHt9LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPW4/bjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBTZShlLHQpe3ZhciBuPW51bGw9PXQuZGVmYXVsdFZhbHVlPyIiOnQuZGVmYXVsdFZhbHVlLHI9bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkO249X2UobnVsbCE9dC52YWx1ZT90LnZhbHVlOm4pLGUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6cixpbml0aWFsVmFsdWU6bixjb250cm9sbGVkOiJjaGVja2JveCI9PT10LnR5cGV8fCJyYWRpbyI9PT10LnR5cGU/bnVsbCE9dC5jaGVja2VkOm51bGwhPXQudmFsdWV9fWZ1bmN0aW9uIERlKGUsdCl7bnVsbCE9KHQ9dC5jaGVja2VkKSYmRWUoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gVGUoZSx0KXtEZShlLHQpO3ZhciBuPV9lKHQudmFsdWUpLHI9dC50eXBlO2lmKG51bGwhPW4pIm51bWJlciI9PT1yPygwPT09biYmIiI9PT1lLnZhbHVlfHxlLnZhbHVlIT1uKSYmKGUudmFsdWU9IiIrbik6ZS52YWx1ZSE9PSIiK24mJihlLnZhbHVlPSIiK24pO2Vsc2UgaWYoInN1Ym1pdCI9PT1yfHwicmVzZXQiPT09cilyZXR1cm4gdm9pZCBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTt0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpP1BlKGUsdC50eXBlLG4pOnQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpJiZQZShlLHQudHlwZSxfZSh0LmRlZmF1bHRWYWx1ZSkpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKGUuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX1mdW5jdGlvbiBNZShlLHQsbil7aWYodC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikpe3ZhciByPXQudHlwZTtpZighKCJzdWJtaXQiIT09ciYmInJlc2V0IiE9PXJ8fHZvaWQgMCE9PXQudmFsdWUmJm51bGwhPT10LnZhbHVlKSlyZXR1cm47dD0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLG58fHQ9PT1lLnZhbHVlfHwoZS52YWx1ZT10KSxlLmRlZmF1bHRWYWx1ZT10fSIiIT09KG49ZS5uYW1lKSYmKGUubmFtZT0iIiksZS5kZWZhdWx0Q2hlY2tlZD0hZS5kZWZhdWx0Q2hlY2tlZCxlLmRlZmF1bHRDaGVja2VkPSEhZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLCIiIT09biYmKGUubmFtZT1uKX1mdW5jdGlvbiBQZShlLHQsbil7Im51bWJlciI9PT10JiZlLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWV8fChudWxsPT1uP2UuZGVmYXVsdFZhbHVlPSIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6ZS5kZWZhdWx0VmFsdWUhPT0iIituJiYoZS5kZWZhdWx0VmFsdWU9IiIrbikpfWZ1bmN0aW9uIE5lKGUsdCl7cmV0dXJuIGU9byh7Y2hpbGRyZW46dm9pZCAwfSx0KSwodD1mdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gci5DaGlsZHJlbi5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe251bGwhPWUmJih0Kz1lKX0pKSx0fSh0LmNoaWxkcmVuKSkmJihlLmNoaWxkcmVuPXQpLGV9ZnVuY3Rpb24gamUoZSx0LG4scil7aWYoZT1lLm9wdGlvbnMsdCl7dD17fTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl0WyIkIituW29dXT0hMDtmb3Iobj0wO248ZS5sZW5ndGg7bisrKW89dC5oYXNPd25Qcm9wZXJ0eSgiJCIrZVtuXS52YWx1ZSksZVtuXS5zZWxlY3RlZCE9PW8mJihlW25dLnNlbGVjdGVkPW8pLG8mJnImJihlW25dLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtmb3Iobj0iIitfZShuKSx0PW51bGwsbz0wO288ZS5sZW5ndGg7bysrKXtpZihlW29dLnZhbHVlPT09bilyZXR1cm4gZVtvXS5zZWxlY3RlZD0hMCx2b2lkKHImJihlW29dLmRlZmF1bHRTZWxlY3RlZD0hMCkpO251bGwhPT10fHxlW29dLmRpc2FibGVkfHwodD1lW29dKX1udWxsIT09dCYmKHQuc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBMZShlLHQpe2lmKG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IoaSg5MSkpO3JldHVybiBvKHt9LHQse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBSZShlLHQpe3ZhciBuPXQudmFsdWU7aWYobnVsbD09bil7aWYobj10LmRlZmF1bHRWYWx1ZSxudWxsIT0odD10LmNoaWxkcmVuKSl7aWYobnVsbCE9bil0aHJvdyBFcnJvcihpKDkyKSk7aWYoQXJyYXkuaXNBcnJheSh0KSl7aWYoISgxPj10Lmxlbmd0aCkpdGhyb3cgRXJyb3IoaSg5MykpO3Q9dFswXX1uPXR9bnVsbD09biYmKG49IiIpfWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOl9lKG4pfX1mdW5jdGlvbiBJZShlLHQpe3ZhciBuPV9lKHQudmFsdWUpLHI9X2UodC5kZWZhdWx0VmFsdWUpO251bGwhPW4mJigobj0iIituKSE9PWUudmFsdWUmJihlLnZhbHVlPW4pLG51bGw9PXQuZGVmYXVsdFZhbHVlJiZlLmRlZmF1bHRWYWx1ZSE9PW4mJihlLmRlZmF1bHRWYWx1ZT1uKSksbnVsbCE9ciYmKGUuZGVmYXVsdFZhbHVlPSIiK3IpfWZ1bmN0aW9uIEFlKGUpe3ZhciB0PWUudGV4dENvbnRlbnQ7dD09PWUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJiIiIT09dCYmbnVsbCE9PXQmJihlLnZhbHVlPXQpfSJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodCIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoYmUsd2UpO2dlW3RdPW5ldyB2ZSh0LDEsITEsZSxudWxsLCExKX0pKSwieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlIi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShiZSx3ZSk7Z2VbdF09bmV3IHZlKHQsMSwhMSxlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMSl9KSksWyJ4bWw6YmFzZSIsInhtbDpsYW5nIiwieG1sOnNwYWNlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGJlLHdlKTtnZVt0XT1uZXcgdmUodCwxLCExLGUsImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsITEpfSkpLFsidGFiSW5kZXgiLCJjcm9zc09yaWdpbiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2dlW2VdPW5ldyB2ZShlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSkpLGdlLnhsaW5rSHJlZj1uZXcgdmUoInhsaW5rSHJlZiIsMSwhMSwieGxpbms6aHJlZiIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCEwKSxbInNyYyIsImhyZWYiLCJhY3Rpb24iLCJmb3JtQWN0aW9uIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Z2VbZV09bmV3IHZlKGUsMSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMCl9KSk7dmFyIEZlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixCZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciO2Z1bmN0aW9uIHplKGUpe3N3aXRjaChlKXtjYXNlInN2ZyI6cmV0dXJuImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtjYXNlIm1hdGgiOnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjtkZWZhdWx0OnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIn19ZnVuY3Rpb24gS2UoZSx0KXtyZXR1cm4gbnVsbD09ZXx8Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09ZT96ZSh0KToiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPT09ZSYmImZvcmVpZ25PYmplY3QiPT09dD8iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI6ZX12YXIgcWUsVmU9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24odCxuLHIsbyl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuKX0pKX06ZX0oKGZ1bmN0aW9uKGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1CZXx8ImlubmVySFRNTCJpbiBlKWUuaW5uZXJIVE1MPXQ7ZWxzZXtmb3IoKHFlPXFlfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPSI8c3ZnPiIrdC52YWx1ZU9mKCkudG9TdHJpbmcoKSsiPC9zdmc+Iix0PXFlLmZpcnN0Q2hpbGQ7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7Zm9yKDt0LmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQodC5maXJzdENoaWxkKX19KSk7ZnVuY3Rpb24gVWUoZSx0KXtpZih0KXt2YXIgbj1lLmZpcnN0Q2hpbGQ7aWYobiYmbj09PWUubGFzdENoaWxkJiYzPT09bi5ub2RlVHlwZSlyZXR1cm4gdm9pZChuLm5vZGVWYWx1ZT10KX1lLnRleHRDb250ZW50PXR9ZnVuY3Rpb24gV2UoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG59dmFyIFllPXthbmltYXRpb25lbmQ6V2UoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpXZSgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6V2UoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpXZSgiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sSGU9e30sR2U9e307ZnVuY3Rpb24gUWUoZSl7aWYoSGVbZV0pcmV0dXJuIEhlW2VdO2lmKCFZZVtlXSlyZXR1cm4gZTt2YXIgdCxuPVllW2VdO2Zvcih0IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh0KSYmdCBpbiBHZSlyZXR1cm4gSGVbZV09blt0XTtyZXR1cm4gZX1YJiYoR2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBZZS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBZZS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBZZS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgWWUudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTt2YXIgSmU9UWUoImFuaW1hdGlvbmVuZCIpLFplPVFlKCJhbmltYXRpb25pdGVyYXRpb24iKSwkZT1RZSgiYW5pbWF0aW9uc3RhcnQiKSxYZT1RZSgidHJhbnNpdGlvbmVuZCIpLGV0PSJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nIi5zcGxpdCgiICIpO2Z1bmN0aW9uIHR0KGUpe3ZhciB0PWUsbj1lO2lmKGUuYWx0ZXJuYXRlKWZvcig7dC5yZXR1cm47KXQ9dC5yZXR1cm47ZWxzZXtlPXQ7ZG97MCE9KDEwMjYmKHQ9ZSkuZWZmZWN0VGFnKSYmKG49dC5yZXR1cm4pLGU9dC5yZXR1cm59d2hpbGUoZSl9cmV0dXJuIDM9PT10LnRhZz9uOm51bGx9ZnVuY3Rpb24gbnQoZSl7aWYoMTM9PT1lLnRhZyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT10JiYobnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKHQ9ZS5tZW1vaXplZFN0YXRlKSksbnVsbCE9PXQpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBydChlKXtpZih0dChlKSE9PWUpdGhyb3cgRXJyb3IoaSgxODgpKX1mdW5jdGlvbiBvdChlKXtpZighKGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7aWYoIXQpe2lmKG51bGw9PT0odD10dChlKSkpdGhyb3cgRXJyb3IoaSgxODgpKTtyZXR1cm4gdCE9PWU/bnVsbDplfWZvcih2YXIgbj1lLHI9dDs7KXt2YXIgbz1uLnJldHVybjtpZihudWxsPT09bylicmVhazt2YXIgYT1vLmFsdGVybmF0ZTtpZihudWxsPT09YSl7aWYobnVsbCE9PShyPW8ucmV0dXJuKSl7bj1yO2NvbnRpbnVlfWJyZWFrfWlmKG8uY2hpbGQ9PT1hLmNoaWxkKXtmb3IoYT1vLmNoaWxkO2E7KXtpZihhPT09bilyZXR1cm4gcnQobyksZTtpZihhPT09cilyZXR1cm4gcnQobyksdDthPWEuc2libGluZ310aHJvdyBFcnJvcihpKDE4OCkpfWlmKG4ucmV0dXJuIT09ci5yZXR1cm4pbj1vLHI9YTtlbHNle2Zvcih2YXIgdT0hMSxzPW8uY2hpbGQ7czspe2lmKHM9PT1uKXt1PSEwLG49byxyPWE7YnJlYWt9aWYocz09PXIpe3U9ITAscj1vLG49YTticmVha31zPXMuc2libGluZ31pZighdSl7Zm9yKHM9YS5jaGlsZDtzOyl7aWYocz09PW4pe3U9ITAsbj1hLHI9bzticmVha31pZihzPT09cil7dT0hMCxyPWEsbj1vO2JyZWFrfXM9cy5zaWJsaW5nfWlmKCF1KXRocm93IEVycm9yKGkoMTg5KSl9fWlmKG4uYWx0ZXJuYXRlIT09cil0aHJvdyBFcnJvcihpKDE5MCkpfWlmKDMhPT1uLnRhZyl0aHJvdyBFcnJvcihpKDE4OCkpO3JldHVybiBuLnN0YXRlTm9kZS5jdXJyZW50PT09bj9lOnR9KGUpKSlyZXR1cm4gbnVsbDtmb3IodmFyIHQ9ZTs7KXtpZig1PT09dC50YWd8fDY9PT10LnRhZylyZXR1cm4gdDtpZih0LmNoaWxkKXQuY2hpbGQucmV0dXJuPXQsdD10LmNoaWxkO2Vsc2V7aWYodD09PWUpYnJlYWs7Zm9yKDshdC5zaWJsaW5nOyl7aWYoIXQucmV0dXJufHx0LnJldHVybj09PWUpcmV0dXJuIG51bGw7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfX1yZXR1cm4gbnVsbH12YXIgYXQsaXQsdXQsc3Q9ITEsbHQ9W10sY3Q9bnVsbCxmdD1udWxsLGR0PW51bGwscHQ9bmV3IE1hcCxodD1uZXcgTWFwLHl0PVtdLG10PSJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjbG9zZSBjYW5jZWwgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdCIuc3BsaXQoIiAiKSx2dD0iZm9jdXMgYmx1ciBkcmFnZW50ZXIgZHJhZ2xlYXZlIG1vdXNlb3ZlciBtb3VzZW91dCBwb2ludGVyb3ZlciBwb2ludGVyb3V0IGdvdHBvaW50ZXJjYXB0dXJlIGxvc3Rwb2ludGVyY2FwdHVyZSIuc3BsaXQoIiAiKTtmdW5jdGlvbiBndChlLHQsbixyKXtyZXR1cm57YmxvY2tlZE9uOmUsdG9wTGV2ZWxUeXBlOnQsZXZlbnRTeXN0ZW1GbGFnczozMnxuLG5hdGl2ZUV2ZW50OnJ9fWZ1bmN0aW9uIGJ0KGUsdCl7c3dpdGNoKGUpe2Nhc2UiZm9jdXMiOmNhc2UiYmx1ciI6Y3Q9bnVsbDticmVhaztjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnbGVhdmUiOmZ0PW51bGw7YnJlYWs7Y2FzZSJtb3VzZW92ZXIiOmNhc2UibW91c2VvdXQiOmR0PW51bGw7YnJlYWs7Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVyb3V0IjpwdC5kZWxldGUodC5wb2ludGVySWQpO2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpodC5kZWxldGUodC5wb2ludGVySWQpfX1mdW5jdGlvbiB3dChlLHQsbixyLG8pe3JldHVybiBudWxsPT09ZXx8ZS5uYXRpdmVFdmVudCE9PW8/KGU9Z3QodCxuLHIsbyksbnVsbCE9PXQmJihudWxsIT09KHQ9bHIodCkpJiZpdCh0KSksZSk6KGUuZXZlbnRTeXN0ZW1GbGFnc3w9cixlKX1mdW5jdGlvbiBfdChlKXt2YXIgdD1zcihlLnRhcmdldCk7aWYobnVsbCE9PXQpe3ZhciBuPXR0KHQpO2lmKG51bGwhPT1uKWlmKDEzPT09KHQ9bi50YWcpKXtpZihudWxsIT09KHQ9bnQobikpKXJldHVybiBlLmJsb2NrZWRPbj10LHZvaWQgYS51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHkoZS5wcmlvcml0eSwoZnVuY3Rpb24oKXt1dChuKX0pKX1lbHNlIGlmKDM9PT10JiZuLnN0YXRlTm9kZS5oeWRyYXRlKXJldHVybiB2b2lkKGUuYmxvY2tlZE9uPTM9PT1uLnRhZz9uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGwpfWUuYmxvY2tlZE9uPW51bGx9ZnVuY3Rpb24gRXQoZSl7aWYobnVsbCE9PWUuYmxvY2tlZE9uKXJldHVybiExO3ZhciB0PVBuKGUudG9wTGV2ZWxUeXBlLGUuZXZlbnRTeXN0ZW1GbGFncyxlLm5hdGl2ZUV2ZW50KTtpZihudWxsIT09dCl7dmFyIG49bHIodCk7cmV0dXJuIG51bGwhPT1uJiZpdChuKSxlLmJsb2NrZWRPbj10LCExfXJldHVybiEwfWZ1bmN0aW9uIE90KGUsdCxuKXtFdChlKSYmbi5kZWxldGUodCl9ZnVuY3Rpb24ga3QoKXtmb3Ioc3Q9ITE7MDxsdC5sZW5ndGg7KXt2YXIgZT1sdFswXTtpZihudWxsIT09ZS5ibG9ja2VkT24pe251bGwhPT0oZT1scihlLmJsb2NrZWRPbikpJiZhdChlKTticmVha312YXIgdD1QbihlLnRvcExldmVsVHlwZSxlLmV2ZW50U3lzdGVtRmxhZ3MsZS5uYXRpdmVFdmVudCk7bnVsbCE9PXQ/ZS5ibG9ja2VkT249dDpsdC5zaGlmdCgpfW51bGwhPT1jdCYmRXQoY3QpJiYoY3Q9bnVsbCksbnVsbCE9PWZ0JiZFdChmdCkmJihmdD1udWxsKSxudWxsIT09ZHQmJkV0KGR0KSYmKGR0PW51bGwpLHB0LmZvckVhY2goT3QpLGh0LmZvckVhY2goT3QpfWZ1bmN0aW9uIEN0KGUsdCl7ZS5ibG9ja2VkT249PT10JiYoZS5ibG9ja2VkT249bnVsbCxzdHx8KHN0PSEwLGEudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGt0KSkpfWZ1bmN0aW9uIHh0KGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIEN0KHQsZSl9aWYoMDxsdC5sZW5ndGgpe0N0KGx0WzBdLGUpO2Zvcih2YXIgbj0xO248bHQubGVuZ3RoO24rKyl7dmFyIHI9bHRbbl07ci5ibG9ja2VkT249PT1lJiYoci5ibG9ja2VkT249bnVsbCl9fWZvcihudWxsIT09Y3QmJkN0KGN0LGUpLG51bGwhPT1mdCYmQ3QoZnQsZSksbnVsbCE9PWR0JiZDdChkdCxlKSxwdC5mb3JFYWNoKHQpLGh0LmZvckVhY2godCksbj0wO248eXQubGVuZ3RoO24rKykocj15dFtuXSkuYmxvY2tlZE9uPT09ZSYmKHIuYmxvY2tlZE9uPW51bGwpO2Zvcig7MDx5dC5sZW5ndGgmJm51bGw9PT0obj15dFswXSkuYmxvY2tlZE9uOylfdChuKSxudWxsPT09bi5ibG9ja2VkT24mJnl0LnNoaWZ0KCl9ZnVuY3Rpb24gU3QoZSl7cmV0dXJuKGU9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93KS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGU9ZS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksMz09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlOmV9ZnVuY3Rpb24gRHQoZSl7ZG97ZT1lLnJldHVybn13aGlsZShlJiY1IT09ZS50YWcpO3JldHVybiBlfHxudWxsfWZ1bmN0aW9uIFR0KGUsdCxuKXsodD1OKGUsbi5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1t0XSkpJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9eChuLl9kaXNwYXRjaExpc3RlbmVycyx0KSxuLl9kaXNwYXRjaEluc3RhbmNlcz14KG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBNdChlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXtmb3IodmFyIHQ9ZS5fdGFyZ2V0SW5zdCxuPVtdO3Q7KW4ucHVzaCh0KSx0PUR0KHQpO2Zvcih0PW4ubGVuZ3RoOzA8dC0tOylUdChuW3RdLCJjYXB0dXJlZCIsZSk7Zm9yKHQ9MDt0PG4ubGVuZ3RoO3QrKylUdChuW3RdLCJidWJibGVkIixlKX19ZnVuY3Rpb24gUHQoZSx0LG4pe2UmJm4mJm4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmKHQ9TihlLG4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkpJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9eChuLl9kaXNwYXRjaExpc3RlbmVycyx0KSxuLl9kaXNwYXRjaEluc3RhbmNlcz14KG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBOdChlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJlB0KGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5jdGlvbiBqdChlKXtTKGUsTXQpfWZ1bmN0aW9uIEx0KCl7cmV0dXJuITB9ZnVuY3Rpb24gUnQoKXtyZXR1cm4hMX1mdW5jdGlvbiBJdChlLHQsbixyKXtmb3IodmFyIG8gaW4gdGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PW4sZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZSllLmhhc093blByb3BlcnR5KG8pJiYoKHQ9ZVtvXSk/dGhpc1tvXT10KG4pOiJ0YXJnZXQiPT09bz90aGlzLnRhcmdldD1yOnRoaXNbb109bltvXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1uLmRlZmF1bHRQcmV2ZW50ZWQ/bi5kZWZhdWx0UHJldmVudGVkOiExPT09bi5yZXR1cm5WYWx1ZSk/THQ6UnQsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1SdCx0aGlzfWZ1bmN0aW9uIEF0KGUsdCxuLHIpe2lmKHRoaXMuZXZlbnRQb29sLmxlbmd0aCl7dmFyIG89dGhpcy5ldmVudFBvb2wucG9wKCk7cmV0dXJuIHRoaXMuY2FsbChvLGUsdCxuLHIpLG99cmV0dXJuIG5ldyB0aGlzKGUsdCxuLHIpfWZ1bmN0aW9uIEZ0KGUpe2lmKCEoZSBpbnN0YW5jZW9mIHRoaXMpKXRocm93IEVycm9yKGkoMjc5KSk7ZS5kZXN0cnVjdG9yKCksMTA+dGhpcy5ldmVudFBvb2wubGVuZ3RoJiZ0aGlzLmV2ZW50UG9vbC5wdXNoKGUpfWZ1bmN0aW9uIEJ0KGUpe2UuZXZlbnRQb29sPVtdLGUuZ2V0UG9vbGVkPUF0LGUucmVsZWFzZT1GdH1vKEl0LnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6InVua25vd24iIT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPUx0KX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93biIhPXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPUx0KX0scGVyc2lzdDpmdW5jdGlvbigpe3RoaXMuaXNQZXJzaXN0ZW50PUx0fSxpc1BlcnNpc3RlbnQ6UnQsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKGUgaW4gdCl0aGlzW2VdPW51bGw7dGhpcy5uYXRpdmVFdmVudD10aGlzLl90YXJnZXRJbnN0PXRoaXMuZGlzcGF0Y2hDb25maWc9bnVsbCx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXRoaXMuaXNEZWZhdWx0UHJldmVudGVkPVJ0LHRoaXMuX2Rpc3BhdGNoSW5zdGFuY2VzPXRoaXMuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGx9fSksSXQuSW50ZXJmYWNlPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9LEl0LmV4dGVuZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7fWZ1bmN0aW9uIG4oKXtyZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHI9dGhpczt0LnByb3RvdHlwZT1yLnByb3RvdHlwZTt2YXIgYT1uZXcgdDtyZXR1cm4gbyhhLG4ucHJvdG90eXBlKSxuLnByb3RvdHlwZT1hLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sbi5JbnRlcmZhY2U9byh7fSxyLkludGVyZmFjZSxlKSxuLmV4dGVuZD1yLmV4dGVuZCxCdChuKSxufSxCdChJdCk7dmFyIHp0PUl0LmV4dGVuZCh7YW5pbWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfSksS3Q9SXQuZXh0ZW5kKHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9hcmREYXRhImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLHF0PUl0LmV4dGVuZCh7dmlldzpudWxsLGRldGFpbDpudWxsfSksVnQ9cXQuZXh0ZW5kKHtyZWxhdGVkVGFyZ2V0Om51bGx9KTtmdW5jdGlvbiBVdChlKXt2YXIgdD1lLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGU/MD09PShlPWUuY2hhckNvZGUpJiYxMz09PXQmJihlPTEzKTplPXQsMTA9PT1lJiYoZT0xMyksMzI8PWV8fDEzPT09ZT9lOjB9dmFyIFd0PXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxZdD17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9LEh0PXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZnVuY3Rpb24gR3QoZSl7dmFyIHQ9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gdC5nZXRNb2RpZmllclN0YXRlP3QuZ2V0TW9kaWZpZXJTdGF0ZShlKTohIShlPUh0W2VdKSYmISF0W2VdfWZ1bmN0aW9uIFF0KCl7cmV0dXJuIEd0fWZvcih2YXIgSnQ9cXQuZXh0ZW5kKHtrZXk6ZnVuY3Rpb24oZSl7aWYoZS5rZXkpe3ZhciB0PVd0W2Uua2V5XXx8ZS5rZXk7aWYoIlVuaWRlbnRpZmllZCIhPT10KXJldHVybiB0fXJldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/MTM9PT0oZT1VdChlKSk/IkVudGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9ZdFtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn0sbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpRdCxjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP1V0KGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP1V0KGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH19KSxadD0wLCR0PTAsWHQ9ITEsZW49ITEsdG49cXQuZXh0ZW5kKHtzY3JlZW5YOm51bGwsc2NyZWVuWTpudWxsLGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwscGFnZVg6bnVsbCxwYWdlWTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOlF0LGJ1dHRvbjpudWxsLGJ1dHRvbnM6bnVsbCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8fChlLmZyb21FbGVtZW50PT09ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQpfSxtb3ZlbWVudFg6ZnVuY3Rpb24oZSl7aWYoIm1vdmVtZW50WCJpbiBlKXJldHVybiBlLm1vdmVtZW50WDt2YXIgdD1adDtyZXR1cm4gWnQ9ZS5zY3JlZW5YLFh0PyJtb3VzZW1vdmUiPT09ZS50eXBlP2Uuc2NyZWVuWC10OjA6KFh0PSEwLDApfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7aWYoIm1vdmVtZW50WSJpbiBlKXJldHVybiBlLm1vdmVtZW50WTt2YXIgdD0kdDtyZXR1cm4gJHQ9ZS5zY3JlZW5ZLGVuPyJtb3VzZW1vdmUiPT09ZS50eXBlP2Uuc2NyZWVuWS10OjA6KGVuPSEwLDApfX0pLG5uPXRuLmV4dGVuZCh7cG9pbnRlcklkOm51bGwsd2lkdGg6bnVsbCxoZWlnaHQ6bnVsbCxwcmVzc3VyZTpudWxsLHRhbmdlbnRpYWxQcmVzc3VyZTpudWxsLHRpbHRYOm51bGwsdGlsdFk6bnVsbCx0d2lzdDpudWxsLHBvaW50ZXJUeXBlOm51bGwsaXNQcmltYXJ5Om51bGx9KSxybj10bi5leHRlbmQoe2RhdGFUcmFuc2ZlcjpudWxsfSksb249cXQuZXh0ZW5kKHt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6UXR9KSxhbj1JdC5leHRlbmQoe3Byb3BlcnR5TmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfSksdW49dG4uZXh0ZW5kKHtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfSksc249W1siYmx1ciIsImJsdXIiLDBdLFsiY2FuY2VsIiwiY2FuY2VsIiwwXSxbImNsaWNrIiwiY2xpY2siLDBdLFsiY2xvc2UiLCJjbG9zZSIsMF0sWyJjb250ZXh0bWVudSIsImNvbnRleHRNZW51IiwwXSxbImNvcHkiLCJjb3B5IiwwXSxbImN1dCIsImN1dCIsMF0sWyJhdXhjbGljayIsImF1eENsaWNrIiwwXSxbImRibGNsaWNrIiwiZG91YmxlQ2xpY2siLDBdLFsiZHJhZ2VuZCIsImRyYWdFbmQiLDBdLFsiZHJhZ3N0YXJ0IiwiZHJhZ1N0YXJ0IiwwXSxbImRyb3AiLCJkcm9wIiwwXSxbImZvY3VzIiwiZm9jdXMiLDBdLFsiaW5wdXQiLCJpbnB1dCIsMF0sWyJpbnZhbGlkIiwiaW52YWxpZCIsMF0sWyJrZXlkb3duIiwia2V5RG93biIsMF0sWyJrZXlwcmVzcyIsImtleVByZXNzIiwwXSxbImtleXVwIiwia2V5VXAiLDBdLFsibW91c2Vkb3duIiwibW91c2VEb3duIiwwXSxbIm1vdXNldXAiLCJtb3VzZVVwIiwwXSxbInBhc3RlIiwicGFzdGUiLDBdLFsicGF1c2UiLCJwYXVzZSIsMF0sWyJwbGF5IiwicGxheSIsMF0sWyJwb2ludGVyY2FuY2VsIiwicG9pbnRlckNhbmNlbCIsMF0sWyJwb2ludGVyZG93biIsInBvaW50ZXJEb3duIiwwXSxbInBvaW50ZXJ1cCIsInBvaW50ZXJVcCIsMF0sWyJyYXRlY2hhbmdlIiwicmF0ZUNoYW5nZSIsMF0sWyJyZXNldCIsInJlc2V0IiwwXSxbInNlZWtlZCIsInNlZWtlZCIsMF0sWyJzdWJtaXQiLCJzdWJtaXQiLDBdLFsidG91Y2hjYW5jZWwiLCJ0b3VjaENhbmNlbCIsMF0sWyJ0b3VjaGVuZCIsInRvdWNoRW5kIiwwXSxbInRvdWNoc3RhcnQiLCJ0b3VjaFN0YXJ0IiwwXSxbInZvbHVtZWNoYW5nZSIsInZvbHVtZUNoYW5nZSIsMF0sWyJkcmFnIiwiZHJhZyIsMV0sWyJkcmFnZW50ZXIiLCJkcmFnRW50ZXIiLDFdLFsiZHJhZ2V4aXQiLCJkcmFnRXhpdCIsMV0sWyJkcmFnbGVhdmUiLCJkcmFnTGVhdmUiLDFdLFsiZHJhZ292ZXIiLCJkcmFnT3ZlciIsMV0sWyJtb3VzZW1vdmUiLCJtb3VzZU1vdmUiLDFdLFsibW91c2VvdXQiLCJtb3VzZU91dCIsMV0sWyJtb3VzZW92ZXIiLCJtb3VzZU92ZXIiLDFdLFsicG9pbnRlcm1vdmUiLCJwb2ludGVyTW92ZSIsMV0sWyJwb2ludGVyb3V0IiwicG9pbnRlck91dCIsMV0sWyJwb2ludGVyb3ZlciIsInBvaW50ZXJPdmVyIiwxXSxbInNjcm9sbCIsInNjcm9sbCIsMV0sWyJ0b2dnbGUiLCJ0b2dnbGUiLDFdLFsidG91Y2htb3ZlIiwidG91Y2hNb3ZlIiwxXSxbIndoZWVsIiwid2hlZWwiLDFdLFsiYWJvcnQiLCJhYm9ydCIsMl0sW0plLCJhbmltYXRpb25FbmQiLDJdLFtaZSwiYW5pbWF0aW9uSXRlcmF0aW9uIiwyXSxbJGUsImFuaW1hdGlvblN0YXJ0IiwyXSxbImNhbnBsYXkiLCJjYW5QbGF5IiwyXSxbImNhbnBsYXl0aHJvdWdoIiwiY2FuUGxheVRocm91Z2giLDJdLFsiZHVyYXRpb25jaGFuZ2UiLCJkdXJhdGlvbkNoYW5nZSIsMl0sWyJlbXB0aWVkIiwiZW1wdGllZCIsMl0sWyJlbmNyeXB0ZWQiLCJlbmNyeXB0ZWQiLDJdLFsiZW5kZWQiLCJlbmRlZCIsMl0sWyJlcnJvciIsImVycm9yIiwyXSxbImdvdHBvaW50ZXJjYXB0dXJlIiwiZ290UG9pbnRlckNhcHR1cmUiLDJdLFsibG9hZCIsImxvYWQiLDJdLFsibG9hZGVkZGF0YSIsImxvYWRlZERhdGEiLDJdLFsibG9hZGVkbWV0YWRhdGEiLCJsb2FkZWRNZXRhZGF0YSIsMl0sWyJsb2Fkc3RhcnQiLCJsb2FkU3RhcnQiLDJdLFsibG9zdHBvaW50ZXJjYXB0dXJlIiwibG9zdFBvaW50ZXJDYXB0dXJlIiwyXSxbInBsYXlpbmciLCJwbGF5aW5nIiwyXSxbInByb2dyZXNzIiwicHJvZ3Jlc3MiLDJdLFsic2Vla2luZyIsInNlZWtpbmciLDJdLFsic3RhbGxlZCIsInN0YWxsZWQiLDJdLFsic3VzcGVuZCIsInN1c3BlbmQiLDJdLFsidGltZXVwZGF0ZSIsInRpbWVVcGRhdGUiLDJdLFtYZSwidHJhbnNpdGlvbkVuZCIsMl0sWyJ3YWl0aW5nIiwid2FpdGluZyIsMl1dLGxuPXt9LGNuPXt9LGZuPTA7Zm48c24ubGVuZ3RoO2ZuKyspe3ZhciBkbj1zbltmbl0scG49ZG5bMF0saG49ZG5bMV0seW49ZG5bMl0sbW49Im9uIisoaG5bMF0udG9VcHBlckNhc2UoKStobi5zbGljZSgxKSksdm49e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOm1uLGNhcHR1cmVkOm1uKyJDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOltwbl0sZXZlbnRQcmlvcml0eTp5bn07bG5baG5dPXZuLGNuW3BuXT12bn12YXIgZ249e2V2ZW50VHlwZXM6bG4sZ2V0RXZlbnRQcmlvcml0eTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09KGU9Y25bZV0pP2UuZXZlbnRQcmlvcml0eToyfSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWNuW2VdO2lmKCFvKXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlImtleXByZXNzIjppZigwPT09VXQobikpcmV0dXJuIG51bGw7Y2FzZSJrZXlkb3duIjpjYXNlImtleXVwIjplPUp0O2JyZWFrO2Nhc2UiYmx1ciI6Y2FzZSJmb2N1cyI6ZT1WdDticmVhaztjYXNlImNsaWNrIjppZigyPT09bi5idXR0b24pcmV0dXJuIG51bGw7Y2FzZSJhdXhjbGljayI6Y2FzZSJkYmxjbGljayI6Y2FzZSJtb3VzZWRvd24iOmNhc2UibW91c2Vtb3ZlIjpjYXNlIm1vdXNldXAiOmNhc2UibW91c2VvdXQiOmNhc2UibW91c2VvdmVyIjpjYXNlImNvbnRleHRtZW51IjplPXRuO2JyZWFrO2Nhc2UiZHJhZyI6Y2FzZSJkcmFnZW5kIjpjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnZXhpdCI6Y2FzZSJkcmFnbGVhdmUiOmNhc2UiZHJhZ292ZXIiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOmU9cm47YnJlYWs7Y2FzZSJ0b3VjaGNhbmNlbCI6Y2FzZSJ0b3VjaGVuZCI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2UidG91Y2hzdGFydCI6ZT1vbjticmVhaztjYXNlIEplOmNhc2UgWmU6Y2FzZSAkZTplPXp0O2JyZWFrO2Nhc2UgWGU6ZT1hbjticmVhaztjYXNlInNjcm9sbCI6ZT1xdDticmVhaztjYXNlIndoZWVsIjplPXVuO2JyZWFrO2Nhc2UiY29weSI6Y2FzZSJjdXQiOmNhc2UicGFzdGUiOmU9S3Q7YnJlYWs7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJsb3N0cG9pbnRlcmNhcHR1cmUiOmNhc2UicG9pbnRlcmNhbmNlbCI6Y2FzZSJwb2ludGVyZG93biI6Y2FzZSJwb2ludGVybW92ZSI6Y2FzZSJwb2ludGVyb3V0IjpjYXNlInBvaW50ZXJvdmVyIjpjYXNlInBvaW50ZXJ1cCI6ZT1ubjticmVhaztkZWZhdWx0OmU9SXR9cmV0dXJuIGp0KHQ9ZS5nZXRQb29sZWQobyx0LG4scikpLHR9fSxibj1hLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LHduPWEudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5LF9uPWduLmdldEV2ZW50UHJpb3JpdHksRW49W107ZnVuY3Rpb24gT24oZSl7dmFyIHQ9ZS50YXJnZXRJbnN0LG49dDtkb3tpZighbil7ZS5hbmNlc3RvcnMucHVzaChuKTticmVha312YXIgcj1uO2lmKDM9PT1yLnRhZylyPXIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87ZWxzZXtmb3IoO3IucmV0dXJuOylyPXIucmV0dXJuO3I9MyE9PXIudGFnP251bGw6ci5zdGF0ZU5vZGUuY29udGFpbmVySW5mb31pZighcilicmVhazs1IT09KHQ9bi50YWcpJiY2IT09dHx8ZS5hbmNlc3RvcnMucHVzaChuKSxuPXNyKHIpfXdoaWxlKG4pO2ZvcihuPTA7bjxlLmFuY2VzdG9ycy5sZW5ndGg7bisrKXt0PWUuYW5jZXN0b3JzW25dO3ZhciBvPVN0KGUubmF0aXZlRXZlbnQpO3I9ZS50b3BMZXZlbFR5cGU7Zm9yKHZhciBhPWUubmF0aXZlRXZlbnQsaT1lLmV2ZW50U3lzdGVtRmxhZ3MsdT1udWxsLHM9MDtzPGYubGVuZ3RoO3MrKyl7dmFyIGw9ZltzXTtsJiYobD1sLmV4dHJhY3RFdmVudHMocix0LGEsbyxpKSkmJih1PXgodSxsKSl9TSh1KX19dmFyIGtuPSEwO2Z1bmN0aW9uIENuKGUsdCl7eG4odCxlLCExKX1mdW5jdGlvbiB4bihlLHQsbil7c3dpdGNoKF9uKHQpKXtjYXNlIDA6dmFyIHI9U24uYmluZChudWxsLHQsMSk7YnJlYWs7Y2FzZSAxOnI9RG4uYmluZChudWxsLHQsMSk7YnJlYWs7ZGVmYXVsdDpyPU1uLmJpbmQobnVsbCx0LDEpfW4/ZS5hZGRFdmVudExpc3RlbmVyKHQsciwhMCk6ZS5hZGRFdmVudExpc3RlbmVyKHQsciwhMSl9ZnVuY3Rpb24gU24oZSx0LG4pe2NlfHxzZSgpO3ZhciByPU1uLG89Y2U7Y2U9ITA7dHJ5e3VlKHIsZSx0LG4pfWZpbmFsbHl7KGNlPW8pfHxkZSgpfX1mdW5jdGlvbiBEbihlLHQsbil7d24oYm4sTW4uYmluZChudWxsLGUsdCxuKSl9ZnVuY3Rpb24gVG4oZSx0LG4scil7aWYoRW4ubGVuZ3RoKXt2YXIgbz1Fbi5wb3AoKTtvLnRvcExldmVsVHlwZT1lLG8uZXZlbnRTeXN0ZW1GbGFncz10LG8ubmF0aXZlRXZlbnQ9bixvLnRhcmdldEluc3Q9cixlPW99ZWxzZSBlPXt0b3BMZXZlbFR5cGU6ZSxldmVudFN5c3RlbUZsYWdzOnQsbmF0aXZlRXZlbnQ6bix0YXJnZXRJbnN0OnIsYW5jZXN0b3JzOltdfTt0cnl7aWYodD1PbixuPWUsZmUpdChuLHZvaWQgMCk7ZWxzZXtmZT0hMDt0cnl7bGUodCxuLHZvaWQgMCl9ZmluYWxseXtmZT0hMSxkZSgpfX19ZmluYWxseXtlLnRvcExldmVsVHlwZT1udWxsLGUubmF0aXZlRXZlbnQ9bnVsbCxlLnRhcmdldEluc3Q9bnVsbCxlLmFuY2VzdG9ycy5sZW5ndGg9MCxFbi5sZW5ndGg8MTAmJkVuLnB1c2goZSl9fWZ1bmN0aW9uIE1uKGUsdCxuKXtpZihrbilpZigwPGx0Lmxlbmd0aCYmLTE8bXQuaW5kZXhPZihlKSllPWd0KG51bGwsZSx0LG4pLGx0LnB1c2goZSk7ZWxzZXt2YXIgcj1QbihlLHQsbik7bnVsbD09PXI/YnQoZSxuKTotMTxtdC5pbmRleE9mKGUpPyhlPWd0KHIsZSx0LG4pLGx0LnB1c2goZSkpOmZ1bmN0aW9uKGUsdCxuLHIpe3N3aXRjaCh0KXtjYXNlImZvY3VzIjpyZXR1cm4gY3Q9d3QoY3QsZSx0LG4sciksITA7Y2FzZSJkcmFnZW50ZXIiOnJldHVybiBmdD13dChmdCxlLHQsbixyKSwhMDtjYXNlIm1vdXNlb3ZlciI6cmV0dXJuIGR0PXd0KGR0LGUsdCxuLHIpLCEwO2Nhc2UicG9pbnRlcm92ZXIiOnZhciBvPXIucG9pbnRlcklkO3JldHVybiBwdC5zZXQobyx3dChwdC5nZXQobyl8fG51bGwsZSx0LG4scikpLCEwO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOnJldHVybiBvPXIucG9pbnRlcklkLGh0LnNldChvLHd0KGh0LmdldChvKXx8bnVsbCxlLHQsbixyKSksITB9cmV0dXJuITF9KHIsZSx0LG4pfHwoYnQoZSxuKSxUbihlLHQsbixudWxsKSl9fWZ1bmN0aW9uIFBuKGUsdCxuKXt2YXIgcj1TdChuKTtpZihudWxsIT09KHI9c3IocikpKXt2YXIgbz10dChyKTtpZihudWxsPT09bylyPW51bGw7ZWxzZXt2YXIgYT1vLnRhZztpZigxMz09PWEpe2lmKG51bGwhPT0ocj1udChvKSkpcmV0dXJuIHI7cj1udWxsfWVsc2UgaWYoMz09PWEpe2lmKG8uc3RhdGVOb2RlLmh5ZHJhdGUpcmV0dXJuIDM9PT1vLnRhZz9vLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cj1udWxsfWVsc2UgbyE9PXImJihyPW51bGwpfX1yZXR1cm4gVG4oZSx0LG4sciksbnVsbH1mdW5jdGlvbiBObihlKXtpZighWClyZXR1cm4hMTt2YXIgdD0oZT0ib24iK2UpaW4gZG9jdW1lbnQ7cmV0dXJuIHR8fCgodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc2V0QXR0cmlidXRlKGUsInJldHVybjsiKSx0PSJmdW5jdGlvbiI9PXR5cGVvZiB0W2VdKSx0fXZhciBqbj1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXApO2Z1bmN0aW9uIExuKGUpe3ZhciB0PWpuLmdldChlKTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bmV3IFNldCxqbi5zZXQoZSx0KSksdH1mdW5jdGlvbiBSbihlLHQsbil7aWYoIW4uaGFzKGUpKXtzd2l0Y2goZSl7Y2FzZSJzY3JvbGwiOnhuKHQsInNjcm9sbCIsITApO2JyZWFrO2Nhc2UiZm9jdXMiOmNhc2UiYmx1ciI6eG4odCwiZm9jdXMiLCEwKSx4bih0LCJibHVyIiwhMCksbi5hZGQoImJsdXIiKSxuLmFkZCgiZm9jdXMiKTticmVhaztjYXNlImNhbmNlbCI6Y2FzZSJjbG9zZSI6Tm4oZSkmJnhuKHQsZSwhMCk7YnJlYWs7Y2FzZSJpbnZhbGlkIjpjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJlYWs7ZGVmYXVsdDotMT09PWV0LmluZGV4T2YoZSkmJkNuKGUsdCl9bi5hZGQoZSl9fXZhciBJbj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sQW49WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtmdW5jdGlvbiBGbihlLHQsbil7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09dD8iIjpufHwibnVtYmVyIiE9dHlwZW9mIHR8fDA9PT10fHxJbi5oYXNPd25Qcm9wZXJ0eShlKSYmSW5bZV0/KCIiK3QpLnRyaW0oKTp0KyJweCJ9ZnVuY3Rpb24gQm4oZSx0KXtmb3IodmFyIG4gaW4gZT1lLnN0eWxlLHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9MD09PW4uaW5kZXhPZigiLS0iKSxvPUZuKG4sdFtuXSxyKTsiZmxvYXQiPT09biYmKG49ImNzc0Zsb2F0Iikscj9lLnNldFByb3BlcnR5KG4sbyk6ZVtuXT1vfX1PYmplY3Qua2V5cyhJbikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7QW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7dD10K2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSksSW5bdF09SW5bZV19KSl9KSk7dmFyIHpuPW8oe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7ZnVuY3Rpb24gS24oZSx0KXtpZih0KXtpZih6bltlXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKGkoMTM3LGUsIiIpKTtpZihudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT10LmNoaWxkcmVuKXRocm93IEVycm9yKGkoNjApKTtpZighKCJvYmplY3QiPT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmIl9faHRtbCJpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihpKDYxKSl9aWYobnVsbCE9dC5zdHlsZSYmIm9iamVjdCIhPXR5cGVvZiB0LnN0eWxlKXRocm93IEVycm9yKGkoNjIsIiIpKX19ZnVuY3Rpb24gcW4oZSx0KXtpZigtMT09PWUuaW5kZXhPZigiLSIpKXJldHVybiJzdHJpbmciPT10eXBlb2YgdC5pcztzd2l0Y2goZSl7Y2FzZSJhbm5vdGF0aW9uLXhtbCI6Y2FzZSJjb2xvci1wcm9maWxlIjpjYXNlImZvbnQtZmFjZSI6Y2FzZSJmb250LWZhY2Utc3JjIjpjYXNlImZvbnQtZmFjZS11cmkiOmNhc2UiZm9udC1mYWNlLWZvcm1hdCI6Y2FzZSJmb250LWZhY2UtbmFtZSI6Y2FzZSJtaXNzaW5nLWdseXBoIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX1mdW5jdGlvbiBWbihlLHQpe3ZhciBuPUxuKGU9OT09PWUubm9kZVR5cGV8fDExPT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudCk7dD1oW3RdO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKVJuKHRbcl0sZSxuKX1mdW5jdGlvbiBVbigpe31mdW5jdGlvbiBXbihlKXtpZih2b2lkIDA9PT0oZT1lfHwoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5fWNhdGNoKHQpe3JldHVybiBlLmJvZHl9fWZ1bmN0aW9uIFluKGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlvbiBIbihlLHQpe3ZhciBuLHI9WW4oZSk7Zm9yKGU9MDtyOyl7aWYoMz09PXIubm9kZVR5cGUpe2lmKG49ZStyLnRleHRDb250ZW50Lmxlbmd0aCxlPD10JiZuPj10KXJldHVybntub2RlOnIsb2Zmc2V0OnQtZX07ZT1ufWU6e2Zvcig7cjspe2lmKHIubmV4dFNpYmxpbmcpe3I9ci5uZXh0U2libGluZzticmVhayBlfXI9ci5wYXJlbnROb2RlfXI9dm9pZCAwfXI9WW4ocil9fWZ1bmN0aW9uIEduKCl7Zm9yKHZhciBlPXdpbmRvdyx0PVduKCk7dCBpbnN0YW5jZW9mIGUuSFRNTElGcmFtZUVsZW1lbnQ7KXt0cnl7dmFyIG49InN0cmluZyI9PXR5cGVvZiB0LmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChlKXtuPSExfWlmKCFuKWJyZWFrO3Q9V24oKGU9dC5jb250ZW50V2luZG93KS5kb2N1bWVudCl9cmV0dXJuIHR9ZnVuY3Rpb24gUW4oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0JiYoImlucHV0Ij09PXQmJigidGV4dCI9PT1lLnR5cGV8fCJzZWFyY2giPT09ZS50eXBlfHwidGVsIj09PWUudHlwZXx8InVybCI9PT1lLnR5cGV8fCJwYXNzd29yZCI9PT1lLnR5cGUpfHwidGV4dGFyZWEiPT09dHx8InRydWUiPT09ZS5jb250ZW50RWRpdGFibGUpfXZhciBKbj1udWxsLFpuPW51bGw7ZnVuY3Rpb24gJG4oZSx0KXtzd2l0Y2goZSl7Y2FzZSJidXR0b24iOmNhc2UiaW5wdXQiOmNhc2Uic2VsZWN0IjpjYXNlInRleHRhcmVhIjpyZXR1cm4hIXQuYXV0b0ZvY3VzfXJldHVybiExfWZ1bmN0aW9uIFhuKGUsdCl7cmV0dXJuInRleHRhcmVhIj09PWV8fCJvcHRpb24iPT09ZXx8Im5vc2NyaXB0Ij09PWV8fCJzdHJpbmciPT10eXBlb2YgdC5jaGlsZHJlbnx8Im51bWJlciI9PXR5cGVvZiB0LmNoaWxkcmVufHwib2JqZWN0Ij09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH12YXIgZXI9ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsdHI9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dm9pZCAwO2Z1bmN0aW9uIG5yKGUpe2Zvcig7bnVsbCE9ZTtlPWUubmV4dFNpYmxpbmcpe3ZhciB0PWUubm9kZVR5cGU7aWYoMT09PXR8fDM9PT10KWJyZWFrfXJldHVybiBlfWZ1bmN0aW9uIHJyKGUpe2U9ZS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciB0PTA7ZTspe2lmKDg9PT1lLm5vZGVUeXBlKXt2YXIgbj1lLmRhdGE7aWYoIiQiPT09bnx8IiQhIj09PW58fCIkPyI9PT1uKXtpZigwPT09dClyZXR1cm4gZTt0LS19ZWxzZSIvJCI9PT1uJiZ0Kyt9ZT1lLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH12YXIgb3I9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksYXI9Il9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCIrb3IsaXI9Il9fcmVhY3RFdmVudEhhbmRsZXJzJCIrb3IsdXI9Il9fcmVhY3RDb250YWluZXJlJCIrb3I7ZnVuY3Rpb24gc3IoZSl7dmFyIHQ9ZVthcl07aWYodClyZXR1cm4gdDtmb3IodmFyIG49ZS5wYXJlbnROb2RlO247KXtpZih0PW5bdXJdfHxuW2FyXSl7aWYobj10LmFsdGVybmF0ZSxudWxsIT09dC5jaGlsZHx8bnVsbCE9PW4mJm51bGwhPT1uLmNoaWxkKWZvcihlPXJyKGUpO251bGwhPT1lOyl7aWYobj1lW2FyXSlyZXR1cm4gbjtlPXJyKGUpfXJldHVybiB0fW49KGU9bikucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBscihlKXtyZXR1cm4hKGU9ZVthcl18fGVbdXJdKXx8NSE9PWUudGFnJiY2IT09ZS50YWcmJjEzIT09ZS50YWcmJjMhPT1lLnRhZz9udWxsOmV9ZnVuY3Rpb24gY3IoZSl7aWYoNT09PWUudGFnfHw2PT09ZS50YWcpcmV0dXJuIGUuc3RhdGVOb2RlO3Rocm93IEVycm9yKGkoMzMpKX1mdW5jdGlvbiBmcihlKXtyZXR1cm4gZVtpcl18fG51bGx9dmFyIGRyPW51bGwscHI9bnVsbCxocj1udWxsO2Z1bmN0aW9uIHlyKCl7aWYoaHIpcmV0dXJuIGhyO3ZhciBlLHQsbj1wcixyPW4ubGVuZ3RoLG89InZhbHVlImluIGRyP2RyLnZhbHVlOmRyLnRleHRDb250ZW50LGE9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09PT1vW2VdO2UrKyk7dmFyIGk9ci1lO2Zvcih0PTE7dDw9aSYmbltyLXRdPT09b1thLXRdO3QrKyk7cmV0dXJuIGhyPW8uc2xpY2UoZSwxPHQ/MS10OnZvaWQgMCl9dmFyIG1yPUl0LmV4dGVuZCh7ZGF0YTpudWxsfSksdnI9SXQuZXh0ZW5kKHtkYXRhOm51bGx9KSxncj1bOSwxMywyNywzMl0sYnI9WCYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LHdyPW51bGw7WCYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKHdyPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIF9yPVgmJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhd3IsRXI9WCYmKCFicnx8d3ImJjg8d3ImJjExPj13ciksT3I9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksa3I9e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25CZWZvcmVJbnB1dCIsY2FwdHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsiY29tcG9zaXRpb25lbmQiLCJrZXlwcmVzcyIsInRleHRJbnB1dCIsInBhc3RlIl19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvbkVuZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOiJibHVyIGNvbXBvc2l0aW9uZW5kIGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpfSxjb21wb3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvblN0YXJ0IixjYXB0dXJlZDoib25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczoiYmx1ciBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25VcGRhdGUiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczoiYmx1ciBjb21wb3NpdGlvbnVwZGF0ZSBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKX19LENyPSExO2Z1bmN0aW9uIHhyKGUsdCl7c3dpdGNoKGUpe2Nhc2Uia2V5dXAiOnJldHVybi0xIT09Z3IuaW5kZXhPZih0LmtleUNvZGUpO2Nhc2Uia2V5ZG93biI6cmV0dXJuIDIyOSE9PXQua2V5Q29kZTtjYXNlImtleXByZXNzIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJibHVyIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBTcihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mKGU9ZS5kZXRhaWwpJiYiZGF0YSJpbiBlP2UuZGF0YTpudWxsfXZhciBEcj0hMTt2YXIgVHI9e2V2ZW50VHlwZXM6a3IsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbztpZihicillOntzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0Ijp2YXIgYT1rci5jb21wb3NpdGlvblN0YXJ0O2JyZWFrIGU7Y2FzZSJjb21wb3NpdGlvbmVuZCI6YT1rci5jb21wb3NpdGlvbkVuZDticmVhayBlO2Nhc2UiY29tcG9zaXRpb251cGRhdGUiOmE9a3IuY29tcG9zaXRpb25VcGRhdGU7YnJlYWsgZX1hPXZvaWQgMH1lbHNlIERyP3hyKGUsbikmJihhPWtyLmNvbXBvc2l0aW9uRW5kKToia2V5ZG93biI9PT1lJiYyMjk9PT1uLmtleUNvZGUmJihhPWtyLmNvbXBvc2l0aW9uU3RhcnQpO3JldHVybiBhPyhFciYmImtvIiE9PW4ubG9jYWxlJiYoRHJ8fGEhPT1rci5jb21wb3NpdGlvblN0YXJ0P2E9PT1rci5jb21wb3NpdGlvbkVuZCYmRHImJihvPXlyKCkpOihwcj0idmFsdWUiaW4oZHI9cik/ZHIudmFsdWU6ZHIudGV4dENvbnRlbnQsRHI9ITApKSxhPW1yLmdldFBvb2xlZChhLHQsbixyKSxvP2EuZGF0YT1vOm51bGwhPT0obz1TcihuKSkmJihhLmRhdGE9byksanQoYSksbz1hKTpvPW51bGwsKGU9X3I/ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIFNyKHQpO2Nhc2Uia2V5cHJlc3MiOnJldHVybiAzMiE9PXQud2hpY2g/bnVsbDooQ3I9ITAsT3IpO2Nhc2UidGV4dElucHV0IjpyZXR1cm4oZT10LmRhdGEpPT09T3ImJkNyP251bGw6ZTtkZWZhdWx0OnJldHVybiBudWxsfX0oZSxuKTpmdW5jdGlvbihlLHQpe2lmKERyKXJldHVybiJjb21wb3NpdGlvbmVuZCI9PT1lfHwhYnImJnhyKGUsdCk/KGU9eXIoKSxocj1wcj1kcj1udWxsLERyPSExLGUpOm51bGw7c3dpdGNoKGUpe2Nhc2UicGFzdGUiOnJldHVybiBudWxsO2Nhc2Uia2V5cHJlc3MiOmlmKCEodC5jdHJsS2V5fHx0LmFsdEtleXx8dC5tZXRhS2V5KXx8dC5jdHJsS2V5JiZ0LmFsdEtleSl7aWYodC5jaGFyJiYxPHQuY2hhci5sZW5ndGgpcmV0dXJuIHQuY2hhcjtpZih0LndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQud2hpY2gpfXJldHVybiBudWxsO2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiBFciYmImtvIiE9PXQubG9jYWxlP251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShlLG4pKT8oKHQ9dnIuZ2V0UG9vbGVkKGtyLmJlZm9yZUlucHV0LHQsbixyKSkuZGF0YT1lLGp0KHQpKTp0PW51bGwsbnVsbD09PW8/dDpudWxsPT09dD9vOltvLHRdfX0sTXI9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2FsIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIFByKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dD8hIU1yW2UudHlwZV06InRleHRhcmVhIj09PXR9dmFyIE5yPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdlQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczoiYmx1ciBjaGFuZ2UgY2xpY2sgZm9jdXMgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2UiLnNwbGl0KCIgIil9fTtmdW5jdGlvbiBqcihlLHQsbil7cmV0dXJuKGU9SXQuZ2V0UG9vbGVkKE5yLmNoYW5nZSxlLHQsbikpLnR5cGU9ImNoYW5nZSIsb2UobiksanQoZSksZX12YXIgTHI9bnVsbCxScj1udWxsO2Z1bmN0aW9uIElyKGUpe00oZSl9ZnVuY3Rpb24gQXIoZSl7aWYoQ2UoY3IoZSkpKXJldHVybiBlfWZ1bmN0aW9uIEZyKGUsdCl7aWYoImNoYW5nZSI9PT1lKXJldHVybiB0fXZhciBCcj0hMTtmdW5jdGlvbiB6cigpe0xyJiYoTHIuZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLEtyKSxScj1Mcj1udWxsKX1mdW5jdGlvbiBLcihlKXtpZigidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUmJkFyKFJyKSlpZihlPWpyKFJyLGUsU3QoZSkpLGNlKU0oZSk7ZWxzZXtjZT0hMDt0cnl7aWUoSXIsZSl9ZmluYWxseXtjZT0hMSxkZSgpfX19ZnVuY3Rpb24gcXIoZSx0LG4peyJmb2N1cyI9PT1lPyh6cigpLFJyPW4sKExyPXQpLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixLcikpOiJibHVyIj09PWUmJnpyKCl9ZnVuY3Rpb24gVnIoZSl7aWYoInNlbGVjdGlvbmNoYW5nZSI9PT1lfHwia2V5dXAiPT09ZXx8ImtleWRvd24iPT09ZSlyZXR1cm4gQXIoUnIpfWZ1bmN0aW9uIFVyKGUsdCl7aWYoImNsaWNrIj09PWUpcmV0dXJuIEFyKHQpfWZ1bmN0aW9uIFdyKGUsdCl7aWYoImlucHV0Ij09PWV8fCJjaGFuZ2UiPT09ZSlyZXR1cm4gQXIodCl9WCYmKEJyPU5uKCJpbnB1dCIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpKTt2YXIgWXIsSHI9e2V2ZW50VHlwZXM6TnIsX2lzSW5wdXRFdmVudFN1cHBvcnRlZDpCcixleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQ/Y3IodCk6d2luZG93LGE9by5ub2RlTmFtZSYmby5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCJzZWxlY3QiPT09YXx8ImlucHV0Ij09PWEmJiJmaWxlIj09PW8udHlwZSl2YXIgaT1GcjtlbHNlIGlmKFByKG8pKWlmKEJyKWk9V3I7ZWxzZXtpPVZyO3ZhciB1PXFyfWVsc2UoYT1vLm5vZGVOYW1lKSYmImlucHV0Ij09PWEudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT1vLnR5cGV8fCJyYWRpbyI9PT1vLnR5cGUpJiYoaT1Vcik7aWYoaSYmKGk9aShlLHQpKSlyZXR1cm4ganIoaSxuLHIpO3UmJnUoZSxvLHQpLCJibHVyIj09PWUmJihlPW8uX3dyYXBwZXJTdGF0ZSkmJmUuY29udHJvbGxlZCYmIm51bWJlciI9PT1vLnR5cGUmJlBlKG8sIm51bWJlciIsby52YWx1ZSl9fSxHcj17bW91c2VFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZToib25Nb3VzZUVudGVyIixkZXBlbmRlbmNpZXM6WyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdfSxtb3VzZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNlTGVhdmUiLGRlcGVuZGVuY2llczpbIm1vdXNlb3V0IiwibW91c2VvdmVyIl19LHBvaW50ZXJFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZToib25Qb2ludGVyRW50ZXIiLGRlcGVuZGVuY2llczpbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdfSxwb2ludGVyTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uUG9pbnRlckxlYXZlIixkZXBlbmRlbmNpZXM6WyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXX19LFFyPXtldmVudFR5cGVzOkdyLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT0ibW91c2VvdmVyIj09PWV8fCJwb2ludGVyb3ZlciI9PT1lLGk9Im1vdXNlb3V0Ij09PWV8fCJwb2ludGVyb3V0Ij09PWU7aWYoYSYmMD09KDMyJm8pJiYobi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KXx8IWkmJiFhKXJldHVybiBudWxsO2lmKG89ci53aW5kb3c9PT1yP3I6KG89ci5vd25lckRvY3VtZW50KT9vLmRlZmF1bHRWaWV3fHxvLnBhcmVudFdpbmRvdzp3aW5kb3csaT8oaT10LG51bGwhPT0odD0odD1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50KT9zcih0KTpudWxsKSYmKHQhPT0oYT10dCh0KSl8fDUhPT10LnRhZyYmNiE9PXQudGFnKSYmKHQ9bnVsbCkpOmk9bnVsbCxpPT09dClyZXR1cm4gbnVsbDtpZigibW91c2VvdXQiPT09ZXx8Im1vdXNlb3ZlciI9PT1lKXZhciB1PXRuLHM9R3IubW91c2VMZWF2ZSxsPUdyLm1vdXNlRW50ZXIsYz0ibW91c2UiO2Vsc2UicG9pbnRlcm91dCIhPT1lJiYicG9pbnRlcm92ZXIiIT09ZXx8KHU9bm4scz1Hci5wb2ludGVyTGVhdmUsbD1Hci5wb2ludGVyRW50ZXIsYz0icG9pbnRlciIpO2lmKGU9bnVsbD09aT9vOmNyKGkpLG89bnVsbD09dD9vOmNyKHQpLChzPXUuZ2V0UG9vbGVkKHMsaSxuLHIpKS50eXBlPWMrImxlYXZlIixzLnRhcmdldD1lLHMucmVsYXRlZFRhcmdldD1vLChyPXUuZ2V0UG9vbGVkKGwsdCxuLHIpKS50eXBlPWMrImVudGVyIixyLnRhcmdldD1vLHIucmVsYXRlZFRhcmdldD1lLGM9dCwodT1pKSYmYyllOntmb3IoZT1jLGk9MCx0PWw9dTt0O3Q9RHQodCkpaSsrO2Zvcih0PTAsbz1lO287bz1EdChvKSl0Kys7Zm9yKDswPGktdDspbD1EdChsKSxpLS07Zm9yKDswPHQtaTspZT1EdChlKSx0LS07Zm9yKDtpLS07KXtpZihsPT09ZXx8bD09PWUuYWx0ZXJuYXRlKWJyZWFrIGU7bD1EdChsKSxlPUR0KGUpfWw9bnVsbH1lbHNlIGw9bnVsbDtmb3IoZT1sLGw9W107dSYmdSE9PWUmJihudWxsPT09KGk9dS5hbHRlcm5hdGUpfHxpIT09ZSk7KWwucHVzaCh1KSx1PUR0KHUpO2Zvcih1PVtdO2MmJmMhPT1lJiYobnVsbD09PShpPWMuYWx0ZXJuYXRlKXx8aSE9PWUpOyl1LnB1c2goYyksYz1EdChjKTtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKVB0KGxbY10sImJ1YmJsZWQiLHMpO2ZvcihjPXUubGVuZ3RoOzA8Yy0tOylQdCh1W2NdLCJjYXB0dXJlZCIscik7cmV0dXJuIG49PT1Zcj8oWXI9bnVsbCxbc10pOihZcj1uLFtzLHJdKX19O3ZhciBKcj0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpmdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKDAhPT1lfHwxL2U9PTEvdCl8fGUhPWUmJnQhPXR9LFpyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gJHIoZSx0KXtpZihKcihlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2ZvcihyPTA7cjxuLmxlbmd0aDtyKyspaWYoIVpyLmNhbGwodCxuW3JdKXx8IUpyKGVbbltyXV0sdFtuW3JdXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIFhyPVgmJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsZW89e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uU2VsZWN0IixjYXB0dXJlZDoib25TZWxlY3RDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOiJibHVyIGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXMga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2UiLnNwbGl0KCIgIil9fSx0bz1udWxsLG5vPW51bGwscm89bnVsbCxvbz0hMTtmdW5jdGlvbiBhbyhlLHQpe3ZhciBuPXQud2luZG93PT09dD90LmRvY3VtZW50Ojk9PT10Lm5vZGVUeXBlP3Q6dC5vd25lckRvY3VtZW50O3JldHVybiBvb3x8bnVsbD09dG98fHRvIT09V24obik/bnVsbDooInNlbGVjdGlvblN0YXJ0ImluKG49dG8pJiZRbihuKT9uPXtzdGFydDpuLnNlbGVjdGlvblN0YXJ0LGVuZDpuLnNlbGVjdGlvbkVuZH06bj17YW5jaG9yTm9kZToobj0obi5vd25lckRvY3VtZW50JiZuLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCkpLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0Om4uYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpuLmZvY3VzTm9kZSxmb2N1c09mZnNldDpuLmZvY3VzT2Zmc2V0fSxybyYmJHIocm8sbik/bnVsbDoocm89biwoZT1JdC5nZXRQb29sZWQoZW8uc2VsZWN0LG5vLGUsdCkpLnR5cGU9InNlbGVjdCIsZS50YXJnZXQ9dG8sanQoZSksZSkpfXZhciBpbz17ZXZlbnRUeXBlczplbyxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGE9ci53aW5kb3c9PT1yP3IuZG9jdW1lbnQ6OT09PXIubm9kZVR5cGU/cjpyLm93bmVyRG9jdW1lbnQ7aWYoIShvPSFhKSl7ZTp7YT1MbihhKSxvPWgub25TZWxlY3Q7Zm9yKHZhciBpPTA7aTxvLmxlbmd0aDtpKyspaWYoIWEuaGFzKG9baV0pKXthPSExO2JyZWFrIGV9YT0hMH1vPSFhfWlmKG8pcmV0dXJuIG51bGw7c3dpdGNoKGE9dD9jcih0KTp3aW5kb3csZSl7Y2FzZSJmb2N1cyI6KFByKGEpfHwidHJ1ZSI9PT1hLmNvbnRlbnRFZGl0YWJsZSkmJih0bz1hLG5vPXQscm89bnVsbCk7YnJlYWs7Y2FzZSJibHVyIjpybz1ubz10bz1udWxsO2JyZWFrO2Nhc2UibW91c2Vkb3duIjpvbz0hMDticmVhaztjYXNlImNvbnRleHRtZW51IjpjYXNlIm1vdXNldXAiOmNhc2UiZHJhZ2VuZCI6cmV0dXJuIG9vPSExLGFvKG4scik7Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmlmKFhyKWJyZWFrO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6cmV0dXJuIGFvKG4scil9cmV0dXJuIG51bGx9fTtQLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoIlJlc3BvbmRlckV2ZW50UGx1Z2luIFNpbXBsZUV2ZW50UGx1Z2luIEVudGVyTGVhdmVFdmVudFBsdWdpbiBDaGFuZ2VFdmVudFBsdWdpbiBTZWxlY3RFdmVudFBsdWdpbiBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luIi5zcGxpdCgiICIpKSxFPWZyLE89bHIsaz1jcixQLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSh7U2ltcGxlRXZlbnRQbHVnaW46Z24sRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOlFyLENoYW5nZUV2ZW50UGx1Z2luOkhyLFNlbGVjdEV2ZW50UGx1Z2luOmlvLEJlZm9yZUlucHV0RXZlbnRQbHVnaW46VHJ9KSxuZXcgU2V0O3ZhciB1bz1bXSxzbz0tMTtmdW5jdGlvbiBsbyhlKXswPnNvfHwoZS5jdXJyZW50PXVvW3NvXSx1b1tzb109bnVsbCxzby0tKX1mdW5jdGlvbiBjbyhlLHQpe3NvKyssdW9bc29dPWUuY3VycmVudCxlLmN1cnJlbnQ9dH12YXIgZm89e30scG89e2N1cnJlbnQ6Zm99LGhvPXtjdXJyZW50OiExfSx5bz1mbztmdW5jdGlvbiBtbyhlLHQpe3ZhciBuPWUudHlwZS5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIGZvO3ZhciByPWUuc3RhdGVOb2RlO2lmKHImJnIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PXQpcmV0dXJuIHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIG8sYT17fTtmb3IobyBpbiBuKWFbb109dFtvXTtyZXR1cm4gciYmKChlPWUuc3RhdGVOb2RlKS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PXQsZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1hKSxhfWZ1bmN0aW9uIHZvKGUpe3JldHVybiBudWxsIT0oZT1lLmNoaWxkQ29udGV4dFR5cGVzKX1mdW5jdGlvbiBnbyhlKXtsbyhobyksbG8ocG8pfWZ1bmN0aW9uIGJvKGUpe2xvKGhvKSxsbyhwbyl9ZnVuY3Rpb24gd28oZSx0LG4pe2lmKHBvLmN1cnJlbnQhPT1mbyl0aHJvdyBFcnJvcihpKDE2OCkpO2NvKHBvLHQpLGNvKGhvLG4pfWZ1bmN0aW9uIF9vKGUsdCxuKXt2YXIgcj1lLnN0YXRlTm9kZTtpZihlPXQuY2hpbGRDb250ZXh0VHlwZXMsImZ1bmN0aW9uIiE9dHlwZW9mIHIuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBuO2Zvcih2YXIgYSBpbiByPXIuZ2V0Q2hpbGRDb250ZXh0KCkpaWYoIShhIGluIGUpKXRocm93IEVycm9yKGkoMTA4LFoodCl8fCJVbmtub3duIixhKSk7cmV0dXJuIG8oe30sbix7fSxyKX1mdW5jdGlvbiBFbyhlKXt2YXIgdD1lLnN0YXRlTm9kZTtyZXR1cm4gdD10JiZ0Ll9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxmbyx5bz1wby5jdXJyZW50LGNvKHBvLHQpLGNvKGhvLGhvLmN1cnJlbnQpLCEwfWZ1bmN0aW9uIE9vKGUsdCxuKXt2YXIgcj1lLnN0YXRlTm9kZTtpZighcil0aHJvdyBFcnJvcihpKDE2OSkpO24/KHQ9X28oZSx0LHlvKSxyLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PXQsbG8oaG8pLGxvKHBvKSxjbyhwbyx0KSk6bG8oaG8pLGNvKGhvLG4pfXZhciBrbz1hLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSxDbz1hLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2sseG89YS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxTbz1hLnVuc3RhYmxlX3Nob3VsZFlpZWxkLERvPWEudW5zdGFibGVfcmVxdWVzdFBhaW50LFRvPWEudW5zdGFibGVfbm93LE1vPWEudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsUG89YS51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxObz1hLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGpvPWEudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksTG89YS51bnN0YWJsZV9Mb3dQcmlvcml0eSxSbz1hLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxJbz17fSxBbz12b2lkIDAhPT1Ebz9EbzpmdW5jdGlvbigpe30sRm89bnVsbCxCbz1udWxsLHpvPSExLEtvPVRvKCkscW89MWU0PktvP1RvOmZ1bmN0aW9uKCl7cmV0dXJuIFRvKCktS299O2Z1bmN0aW9uIFZvKCl7c3dpdGNoKE1vKCkpe2Nhc2UgUG86cmV0dXJuIDk5O2Nhc2UgTm86cmV0dXJuIDk4O2Nhc2Ugam86cmV0dXJuIDk3O2Nhc2UgTG86cmV0dXJuIDk2O2Nhc2UgUm86cmV0dXJuIDk1O2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSgzMzIpKX19ZnVuY3Rpb24gVW8oZSl7c3dpdGNoKGUpe2Nhc2UgOTk6cmV0dXJuIFBvO2Nhc2UgOTg6cmV0dXJuIE5vO2Nhc2UgOTc6cmV0dXJuIGpvO2Nhc2UgOTY6cmV0dXJuIExvO2Nhc2UgOTU6cmV0dXJuIFJvO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSgzMzIpKX19ZnVuY3Rpb24gV28oZSx0KXtyZXR1cm4gZT1VbyhlKSxrbyhlLHQpfWZ1bmN0aW9uIFlvKGUsdCxuKXtyZXR1cm4gZT1VbyhlKSxDbyhlLHQsbil9ZnVuY3Rpb24gSG8oZSl7cmV0dXJuIG51bGw9PT1Gbz8oRm89W2VdLEJvPUNvKFBvLFFvKSk6Rm8ucHVzaChlKSxJb31mdW5jdGlvbiBHbygpe2lmKG51bGwhPT1Cbyl7dmFyIGU9Qm87Qm89bnVsbCx4byhlKX1RbygpfWZ1bmN0aW9uIFFvKCl7aWYoIXpvJiZudWxsIT09Rm8pe3pvPSEwO3ZhciBlPTA7dHJ5e3ZhciB0PUZvO1dvKDk5LChmdW5jdGlvbigpe2Zvcig7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07ZG97bj1uKCEwKX13aGlsZShudWxsIT09bil9fSkpLEZvPW51bGx9Y2F0Y2godCl7dGhyb3cgbnVsbCE9PUZvJiYoRm89Rm8uc2xpY2UoZSsxKSksQ28oUG8sR28pLHR9ZmluYWxseXt6bz0hMX19fXZhciBKbz0zO2Z1bmN0aW9uIFpvKGUsdCxuKXtyZXR1cm4gMTA3Mzc0MTgyMS0oMSsoKDEwNzM3NDE4MjEtZSt0LzEwKS8obi89MTApfDApKSpufWZ1bmN0aW9uICRvKGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHZhciBuIGluIHQ9byh7fSx0KSxlPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PXRbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXZhciBYbz17Y3VycmVudDpudWxsfSxlYT1udWxsLHRhPW51bGwsbmE9bnVsbDtmdW5jdGlvbiByYSgpe25hPXRhPWVhPW51bGx9ZnVuY3Rpb24gb2EoZSx0KXt2YXIgbj1lLnR5cGUuX2NvbnRleHQ7Y28oWG8sbi5fY3VycmVudFZhbHVlKSxuLl9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiBhYShlKXt2YXIgdD1Yby5jdXJyZW50O2xvKFhvKSxlLnR5cGUuX2NvbnRleHQuX2N1cnJlbnRWYWx1ZT10fWZ1bmN0aW9uIGlhKGUsdCl7Zm9yKDtudWxsIT09ZTspe3ZhciBuPWUuYWx0ZXJuYXRlO2lmKGUuY2hpbGRFeHBpcmF0aW9uVGltZTx0KWUuY2hpbGRFeHBpcmF0aW9uVGltZT10LG51bGwhPT1uJiZuLmNoaWxkRXhwaXJhdGlvblRpbWU8dCYmKG4uY2hpbGRFeHBpcmF0aW9uVGltZT10KTtlbHNle2lmKCEobnVsbCE9PW4mJm4uY2hpbGRFeHBpcmF0aW9uVGltZTx0KSlicmVhaztuLmNoaWxkRXhwaXJhdGlvblRpbWU9dH1lPWUucmV0dXJufX1mdW5jdGlvbiB1YShlLHQpe2VhPWUsbmE9dGE9bnVsbCxudWxsIT09KGU9ZS5kZXBlbmRlbmNpZXMpJiZudWxsIT09ZS5maXJzdENvbnRleHQmJihlLmV4cGlyYXRpb25UaW1lPj10JiYoS2k9ITApLGUuZmlyc3RDb250ZXh0PW51bGwpfWZ1bmN0aW9uIHNhKGUsdCl7aWYobmEhPT1lJiYhMSE9PXQmJjAhPT10KWlmKCJudW1iZXIiPT10eXBlb2YgdCYmMTA3Mzc0MTgyMyE9PXR8fChuYT1lLHQ9MTA3Mzc0MTgyMyksdD17Y29udGV4dDplLG9ic2VydmVkQml0czp0LG5leHQ6bnVsbH0sbnVsbD09PXRhKXtpZihudWxsPT09ZWEpdGhyb3cgRXJyb3IoaSgzMDgpKTt0YT10LGVhLmRlcGVuZGVuY2llcz17ZXhwaXJhdGlvblRpbWU6MCxmaXJzdENvbnRleHQ6dCxyZXNwb25kZXJzOm51bGx9fWVsc2UgdGE9dGEubmV4dD10O3JldHVybiBlLl9jdXJyZW50VmFsdWV9dmFyIGxhPSExO2Z1bmN0aW9uIGNhKGUpe3JldHVybntiYXNlU3RhdGU6ZSxmaXJzdFVwZGF0ZTpudWxsLGxhc3RVcGRhdGU6bnVsbCxmaXJzdENhcHR1cmVkVXBkYXRlOm51bGwsbGFzdENhcHR1cmVkVXBkYXRlOm51bGwsZmlyc3RFZmZlY3Q6bnVsbCxsYXN0RWZmZWN0Om51bGwsZmlyc3RDYXB0dXJlZEVmZmVjdDpudWxsLGxhc3RDYXB0dXJlZEVmZmVjdDpudWxsfX1mdW5jdGlvbiBmYShlKXtyZXR1cm57YmFzZVN0YXRlOmUuYmFzZVN0YXRlLGZpcnN0VXBkYXRlOmUuZmlyc3RVcGRhdGUsbGFzdFVwZGF0ZTplLmxhc3RVcGRhdGUsZmlyc3RDYXB0dXJlZFVwZGF0ZTpudWxsLGxhc3RDYXB0dXJlZFVwZGF0ZTpudWxsLGZpcnN0RWZmZWN0Om51bGwsbGFzdEVmZmVjdDpudWxsLGZpcnN0Q2FwdHVyZWRFZmZlY3Q6bnVsbCxsYXN0Q2FwdHVyZWRFZmZlY3Q6bnVsbH19ZnVuY3Rpb24gZGEoZSx0KXtyZXR1cm57ZXhwaXJhdGlvblRpbWU6ZSxzdXNwZW5zZUNvbmZpZzp0LHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbCxuZXh0RWZmZWN0Om51bGx9fWZ1bmN0aW9uIHBhKGUsdCl7bnVsbD09PWUubGFzdFVwZGF0ZT9lLmZpcnN0VXBkYXRlPWUubGFzdFVwZGF0ZT10OihlLmxhc3RVcGRhdGUubmV4dD10LGUubGFzdFVwZGF0ZT10KX1mdW5jdGlvbiBoYShlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlO2lmKG51bGw9PT1uKXt2YXIgcj1lLnVwZGF0ZVF1ZXVlLG89bnVsbDtudWxsPT09ciYmKHI9ZS51cGRhdGVRdWV1ZT1jYShlLm1lbW9pemVkU3RhdGUpKX1lbHNlIHI9ZS51cGRhdGVRdWV1ZSxvPW4udXBkYXRlUXVldWUsbnVsbD09PXI/bnVsbD09PW8/KHI9ZS51cGRhdGVRdWV1ZT1jYShlLm1lbW9pemVkU3RhdGUpLG89bi51cGRhdGVRdWV1ZT1jYShuLm1lbW9pemVkU3RhdGUpKTpyPWUudXBkYXRlUXVldWU9ZmEobyk6bnVsbD09PW8mJihvPW4udXBkYXRlUXVldWU9ZmEocikpO251bGw9PT1vfHxyPT09bz9wYShyLHQpOm51bGw9PT1yLmxhc3RVcGRhdGV8fG51bGw9PT1vLmxhc3RVcGRhdGU/KHBhKHIsdCkscGEobyx0KSk6KHBhKHIsdCksby5sYXN0VXBkYXRlPXQpfWZ1bmN0aW9uIHlhKGUsdCl7dmFyIG49ZS51cGRhdGVRdWV1ZTtudWxsPT09KG49bnVsbD09PW4/ZS51cGRhdGVRdWV1ZT1jYShlLm1lbW9pemVkU3RhdGUpOm1hKGUsbikpLmxhc3RDYXB0dXJlZFVwZGF0ZT9uLmZpcnN0Q2FwdHVyZWRVcGRhdGU9bi5sYXN0Q2FwdHVyZWRVcGRhdGU9dDoobi5sYXN0Q2FwdHVyZWRVcGRhdGUubmV4dD10LG4ubGFzdENhcHR1cmVkVXBkYXRlPXQpfWZ1bmN0aW9uIG1hKGUsdCl7dmFyIG49ZS5hbHRlcm5hdGU7cmV0dXJuIG51bGwhPT1uJiZ0PT09bi51cGRhdGVRdWV1ZSYmKHQ9ZS51cGRhdGVRdWV1ZT1mYSh0KSksdH1mdW5jdGlvbiB2YShlLHQsbixyLGEsaSl7c3dpdGNoKG4udGFnKXtjYXNlIDE6cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mKGU9bi5wYXlsb2FkKT9lLmNhbGwoaSxyLGEpOmU7Y2FzZSAzOmUuZWZmZWN0VGFnPS00MDk3JmUuZWZmZWN0VGFnfDY0O2Nhc2UgMDppZihudWxsPT0oYT0iZnVuY3Rpb24iPT10eXBlb2YoZT1uLnBheWxvYWQpP2UuY2FsbChpLHIsYSk6ZSkpYnJlYWs7cmV0dXJuIG8oe30scixhKTtjYXNlIDI6bGE9ITB9cmV0dXJuIHJ9ZnVuY3Rpb24gZ2EoZSx0LG4scixvKXtsYT0hMTtmb3IodmFyIGE9KHQ9bWEoZSx0KSkuYmFzZVN0YXRlLGk9bnVsbCx1PTAscz10LmZpcnN0VXBkYXRlLGw9YTtudWxsIT09czspe3ZhciBjPXMuZXhwaXJhdGlvblRpbWU7YzxvPyhudWxsPT09aSYmKGk9cyxhPWwpLHU8YyYmKHU9YykpOihmcyhjLHMuc3VzcGVuc2VDb25maWcpLGw9dmEoZSwwLHMsbCxuLHIpLG51bGwhPT1zLmNhbGxiYWNrJiYoZS5lZmZlY3RUYWd8PTMyLHMubmV4dEVmZmVjdD1udWxsLG51bGw9PT10Lmxhc3RFZmZlY3Q/dC5maXJzdEVmZmVjdD10Lmxhc3RFZmZlY3Q9czoodC5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9cyx0Lmxhc3RFZmZlY3Q9cykpKSxzPXMubmV4dH1mb3IoYz1udWxsLHM9dC5maXJzdENhcHR1cmVkVXBkYXRlO251bGwhPT1zOyl7dmFyIGY9cy5leHBpcmF0aW9uVGltZTtmPG8/KG51bGw9PT1jJiYoYz1zLG51bGw9PT1pJiYoYT1sKSksdTxmJiYodT1mKSk6KGw9dmEoZSwwLHMsbCxuLHIpLG51bGwhPT1zLmNhbGxiYWNrJiYoZS5lZmZlY3RUYWd8PTMyLHMubmV4dEVmZmVjdD1udWxsLG51bGw9PT10Lmxhc3RDYXB0dXJlZEVmZmVjdD90LmZpcnN0Q2FwdHVyZWRFZmZlY3Q9dC5sYXN0Q2FwdHVyZWRFZmZlY3Q9czoodC5sYXN0Q2FwdHVyZWRFZmZlY3QubmV4dEVmZmVjdD1zLHQubGFzdENhcHR1cmVkRWZmZWN0PXMpKSkscz1zLm5leHR9bnVsbD09PWkmJih0Lmxhc3RVcGRhdGU9bnVsbCksbnVsbD09PWM/dC5sYXN0Q2FwdHVyZWRVcGRhdGU9bnVsbDplLmVmZmVjdFRhZ3w9MzIsbnVsbD09PWkmJm51bGw9PT1jJiYoYT1sKSx0LmJhc2VTdGF0ZT1hLHQuZmlyc3RVcGRhdGU9aSx0LmZpcnN0Q2FwdHVyZWRVcGRhdGU9Yyxkcyh1KSxlLmV4cGlyYXRpb25UaW1lPXUsZS5tZW1vaXplZFN0YXRlPWx9ZnVuY3Rpb24gYmEoZSx0LG4pe251bGwhPT10LmZpcnN0Q2FwdHVyZWRVcGRhdGUmJihudWxsIT09dC5sYXN0VXBkYXRlJiYodC5sYXN0VXBkYXRlLm5leHQ9dC5maXJzdENhcHR1cmVkVXBkYXRlLHQubGFzdFVwZGF0ZT10Lmxhc3RDYXB0dXJlZFVwZGF0ZSksdC5maXJzdENhcHR1cmVkVXBkYXRlPXQubGFzdENhcHR1cmVkVXBkYXRlPW51bGwpLHdhKHQuZmlyc3RFZmZlY3QsbiksdC5maXJzdEVmZmVjdD10Lmxhc3RFZmZlY3Q9bnVsbCx3YSh0LmZpcnN0Q2FwdHVyZWRFZmZlY3QsbiksdC5maXJzdENhcHR1cmVkRWZmZWN0PXQubGFzdENhcHR1cmVkRWZmZWN0PW51bGx9ZnVuY3Rpb24gd2EoZSx0KXtmb3IoO251bGwhPT1lOyl7dmFyIG49ZS5jYWxsYmFjaztpZihudWxsIT09bil7ZS5jYWxsYmFjaz1udWxsO3ZhciByPXQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgRXJyb3IoaSgxOTEsbikpO24uY2FsbChyKX1lPWUubmV4dEVmZmVjdH19dmFyIF9hPWouUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsRWE9KG5ldyByLkNvbXBvbmVudCkucmVmcztmdW5jdGlvbiBPYShlLHQsbixyKXtuPW51bGw9PShuPW4ocix0PWUubWVtb2l6ZWRTdGF0ZSkpP3Q6byh7fSx0LG4pLGUubWVtb2l6ZWRTdGF0ZT1uLG51bGwhPT0ocj1lLnVwZGF0ZVF1ZXVlKSYmMD09PWUuZXhwaXJhdGlvblRpbWUmJihyLmJhc2VTdGF0ZT1uKX12YXIga2E9e2lzTW91bnRlZDpmdW5jdGlvbihlKXtyZXR1cm4hIShlPWUuX3JlYWN0SW50ZXJuYWxGaWJlcikmJnR0KGUpPT09ZX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxGaWJlcjt2YXIgcj0kdSgpLG89X2Euc3VzcGVuc2U7KG89ZGEocj1YdShyLGUsbyksbykpLnBheWxvYWQ9dCxudWxsIT1uJiYoby5jYWxsYmFjaz1uKSxoYShlLG8pLGVzKGUscil9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0LG4pe2U9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciByPSR1KCksbz1fYS5zdXNwZW5zZTsobz1kYShyPVh1KHIsZSxvKSxvKSkudGFnPTEsby5wYXlsb2FkPXQsbnVsbCE9biYmKG8uY2FsbGJhY2s9biksaGEoZSxvKSxlcyhlLHIpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSx0KXtlPWUuX3JlYWN0SW50ZXJuYWxGaWJlcjt2YXIgbj0kdSgpLHI9X2Euc3VzcGVuc2U7KHI9ZGEobj1YdShuLGUscikscikpLnRhZz0yLG51bGwhPXQmJihyLmNhbGxiYWNrPXQpLGhhKGUsciksZXMoZSxuKX19O2Z1bmN0aW9uIENhKGUsdCxuLHIsbyxhLGkpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZihlPWUuc3RhdGVOb2RlKS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZS5zaG91bGRDb21wb25lbnRVcGRhdGUocixhLGkpOiF0LnByb3RvdHlwZXx8IXQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50fHwoISRyKG4scil8fCEkcihvLGEpKX1mdW5jdGlvbiB4YShlLHQsbil7dmFyIHI9ITEsbz1mbyxhPXQuY29udGV4dFR5cGU7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhJiZudWxsIT09YT9hPXNhKGEpOihvPXZvKHQpP3lvOnBvLmN1cnJlbnQsYT0ocj1udWxsIT0ocj10LmNvbnRleHRUeXBlcykpP21vKGUsbyk6Zm8pLHQ9bmV3IHQobixhKSxlLm1lbW9pemVkU3RhdGU9bnVsbCE9PXQuc3RhdGUmJnZvaWQgMCE9PXQuc3RhdGU/dC5zdGF0ZTpudWxsLHQudXBkYXRlcj1rYSxlLnN0YXRlTm9kZT10LHQuX3JlYWN0SW50ZXJuYWxGaWJlcj1lLHImJigoZT1lLnN0YXRlTm9kZSkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1vLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9YSksdH1mdW5jdGlvbiBTYShlLHQsbixyKXtlPXQuc3RhdGUsImZ1bmN0aW9uIj09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4sciksImZ1bmN0aW9uIj09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJnQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobixyKSx0LnN0YXRlIT09ZSYma2EuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0LHQuc3RhdGUsbnVsbCl9ZnVuY3Rpb24gRGEoZSx0LG4scil7dmFyIG89ZS5zdGF0ZU5vZGU7by5wcm9wcz1uLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlLG8ucmVmcz1FYTt2YXIgYT10LmNvbnRleHRUeXBlOyJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWE/by5jb250ZXh0PXNhKGEpOihhPXZvKHQpP3lvOnBvLmN1cnJlbnQsby5jb250ZXh0PW1vKGUsYSkpLG51bGwhPT0oYT1lLnVwZGF0ZVF1ZXVlKSYmKGdhKGUsYSxuLG8sciksby5zdGF0ZT1lLm1lbW9pemVkU3RhdGUpLCJmdW5jdGlvbiI9PXR5cGVvZihhPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSYmKE9hKGUsdCxhLG4pLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fCJmdW5jdGlvbiI9PXR5cGVvZiBvLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHwiZnVuY3Rpb24iIT10eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT10eXBlb2Ygby5jb21wb25lbnRXaWxsTW91bnR8fCh0PW8uc3RhdGUsImZ1bmN0aW9uIj09dHlwZW9mIG8uY29tcG9uZW50V2lsbE1vdW50JiZvLmNvbXBvbmVudFdpbGxNb3VudCgpLCJmdW5jdGlvbiI9PXR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJm8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLHQhPT1vLnN0YXRlJiZrYS5lbnF1ZXVlUmVwbGFjZVN0YXRlKG8sby5zdGF0ZSxudWxsKSxudWxsIT09KGE9ZS51cGRhdGVRdWV1ZSkmJihnYShlLGEsbixvLHIpLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSksImZ1bmN0aW9uIj09dHlwZW9mIG8uY29tcG9uZW50RGlkTW91bnQmJihlLmVmZmVjdFRhZ3w9NCl9dmFyIFRhPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gTWEoZSx0LG4pe2lmKG51bGwhPT0oZT1uLnJlZikmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiYib2JqZWN0IiE9dHlwZW9mIGUpe2lmKG4uX293bmVyKXtpZihuPW4uX293bmVyKXtpZigxIT09bi50YWcpdGhyb3cgRXJyb3IoaSgzMDkpKTt2YXIgcj1uLnN0YXRlTm9kZX1pZighcil0aHJvdyBFcnJvcihpKDE0NyxlKSk7dmFyIG89IiIrZTtyZXR1cm4gbnVsbCE9PXQmJm51bGwhPT10LnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIHQucmVmJiZ0LnJlZi5fc3RyaW5nUmVmPT09bz90LnJlZjooKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5yZWZzO3Q9PT1FYSYmKHQ9ci5yZWZzPXt9KSxudWxsPT09ZT9kZWxldGUgdFtvXTp0W29dPWV9KS5fc3RyaW5nUmVmPW8sdCl9aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IEVycm9yKGkoMjg0KSk7aWYoIW4uX293bmVyKXRocm93IEVycm9yKGkoMjkwLGUpKX1yZXR1cm4gZX1mdW5jdGlvbiBQYShlLHQpe2lmKCJ0ZXh0YXJlYSIhPT1lLnR5cGUpdGhyb3cgRXJyb3IoaSgzMSwiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyh0KS5qb2luKCIsICIpKyJ9Ijp0LCIiKSl9ZnVuY3Rpb24gTmEoZSl7ZnVuY3Rpb24gdCh0LG4pe2lmKGUpe3ZhciByPXQubGFzdEVmZmVjdDtudWxsIT09cj8oci5uZXh0RWZmZWN0PW4sdC5sYXN0RWZmZWN0PW4pOnQuZmlyc3RFZmZlY3Q9dC5sYXN0RWZmZWN0PW4sbi5uZXh0RWZmZWN0PW51bGwsbi5lZmZlY3RUYWc9OH19ZnVuY3Rpb24gbihuLHIpe2lmKCFlKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PXI7KXQobixyKSxyPXIuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiByKGUsdCl7Zm9yKGU9bmV3IE1hcDtudWxsIT09dDspbnVsbCE9PXQua2V5P2Uuc2V0KHQua2V5LHQpOmUuc2V0KHQuaW5kZXgsdCksdD10LnNpYmxpbmc7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJuKGU9TnMoZSx0KSkuaW5kZXg9MCxlLnNpYmxpbmc9bnVsbCxlfWZ1bmN0aW9uIGEodCxuLHIpe3JldHVybiB0LmluZGV4PXIsZT9udWxsIT09KHI9dC5hbHRlcm5hdGUpPyhyPXIuaW5kZXgpPG4/KHQuZWZmZWN0VGFnPTIsbik6cjoodC5lZmZlY3RUYWc9MixuKTpufWZ1bmN0aW9uIHUodCl7cmV0dXJuIGUmJm51bGw9PT10LmFsdGVybmF0ZSYmKHQuZWZmZWN0VGFnPTIpLHR9ZnVuY3Rpb24gcyhlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDYhPT10LnRhZz8oKHQ9UnMobixlLm1vZGUscikpLnJldHVybj1lLHQpOigodD1vKHQsbikpLnJldHVybj1lLHQpfWZ1bmN0aW9uIGwoZSx0LG4scil7cmV0dXJuIG51bGwhPT10JiZ0LmVsZW1lbnRUeXBlPT09bi50eXBlPygocj1vKHQsbi5wcm9wcykpLnJlZj1NYShlLHQsbiksci5yZXR1cm49ZSxyKTooKHI9anMobi50eXBlLG4ua2V5LG4ucHJvcHMsbnVsbCxlLm1vZGUscikpLnJlZj1NYShlLHQsbiksci5yZXR1cm49ZSxyKX1mdW5jdGlvbiBjKGUsdCxuLHIpe3JldHVybiBudWxsPT09dHx8NCE9PXQudGFnfHx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09bi5jb250YWluZXJJbmZvfHx0LnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PW4uaW1wbGVtZW50YXRpb24/KCh0PUlzKG4sZS5tb2RlLHIpKS5yZXR1cm49ZSx0KTooKHQ9byh0LG4uY2hpbGRyZW58fFtdKSkucmV0dXJuPWUsdCl9ZnVuY3Rpb24gZihlLHQsbixyLGEpe3JldHVybiBudWxsPT09dHx8NyE9PXQudGFnPygodD1McyhuLGUubW9kZSxyLGEpKS5yZXR1cm49ZSx0KTooKHQ9byh0LG4pKS5yZXR1cm49ZSx0KX1mdW5jdGlvbiBkKGUsdCxuKXtpZigic3RyaW5nIj09dHlwZW9mIHR8fCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4odD1ScygiIit0LGUubW9kZSxuKSkucmV0dXJuPWUsdDtpZigib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10KXtzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBJOnJldHVybihuPWpzKHQudHlwZSx0LmtleSx0LnByb3BzLG51bGwsZS5tb2RlLG4pKS5yZWY9TWEoZSxudWxsLHQpLG4ucmV0dXJuPWUsbjtjYXNlIEE6cmV0dXJuKHQ9SXModCxlLm1vZGUsbikpLnJldHVybj1lLHR9aWYoVGEodCl8fEoodCkpcmV0dXJuKHQ9THModCxlLm1vZGUsbixudWxsKSkucmV0dXJuPWUsdDtQYShlLHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIHAoZSx0LG4scil7dmFyIG89bnVsbCE9PXQ/dC5rZXk6bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIG58fCJudW1iZXIiPT10eXBlb2YgbilyZXR1cm4gbnVsbCE9PW8/bnVsbDpzKGUsdCwiIituLHIpO2lmKCJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4pe3N3aXRjaChuLiQkdHlwZW9mKXtjYXNlIEk6cmV0dXJuIG4ua2V5PT09bz9uLnR5cGU9PT1GP2YoZSx0LG4ucHJvcHMuY2hpbGRyZW4scixvKTpsKGUsdCxuLHIpOm51bGw7Y2FzZSBBOnJldHVybiBuLmtleT09PW8/YyhlLHQsbixyKTpudWxsfWlmKFRhKG4pfHxKKG4pKXJldHVybiBudWxsIT09bz9udWxsOmYoZSx0LG4scixudWxsKTtQYShlLG4pfXJldHVybiBudWxsfWZ1bmN0aW9uIGgoZSx0LG4scixvKXtpZigic3RyaW5nIj09dHlwZW9mIHJ8fCJudW1iZXIiPT10eXBlb2YgcilyZXR1cm4gcyh0LGU9ZS5nZXQobil8fG51bGwsIiIrcixvKTtpZigib2JqZWN0Ij09dHlwZW9mIHImJm51bGwhPT1yKXtzd2l0Y2goci4kJHR5cGVvZil7Y2FzZSBJOnJldHVybiBlPWUuZ2V0KG51bGw9PT1yLmtleT9uOnIua2V5KXx8bnVsbCxyLnR5cGU9PT1GP2YodCxlLHIucHJvcHMuY2hpbGRyZW4sbyxyLmtleSk6bCh0LGUscixvKTtjYXNlIEE6cmV0dXJuIGModCxlPWUuZ2V0KG51bGw9PT1yLmtleT9uOnIua2V5KXx8bnVsbCxyLG8pfWlmKFRhKHIpfHxKKHIpKXJldHVybiBmKHQsZT1lLmdldChuKXx8bnVsbCxyLG8sbnVsbCk7UGEodCxyKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KG8saSx1LHMpe2Zvcih2YXIgbD1udWxsLGM9bnVsbCxmPWkseT1pPTAsbT1udWxsO251bGwhPT1mJiZ5PHUubGVuZ3RoO3krKyl7Zi5pbmRleD55PyhtPWYsZj1udWxsKTptPWYuc2libGluZzt2YXIgdj1wKG8sZix1W3ldLHMpO2lmKG51bGw9PT12KXtudWxsPT09ZiYmKGY9bSk7YnJlYWt9ZSYmZiYmbnVsbD09PXYuYWx0ZXJuYXRlJiZ0KG8sZiksaT1hKHYsaSx5KSxudWxsPT09Yz9sPXY6Yy5zaWJsaW5nPXYsYz12LGY9bX1pZih5PT09dS5sZW5ndGgpcmV0dXJuIG4obyxmKSxsO2lmKG51bGw9PT1mKXtmb3IoO3k8dS5sZW5ndGg7eSsrKW51bGwhPT0oZj1kKG8sdVt5XSxzKSkmJihpPWEoZixpLHkpLG51bGw9PT1jP2w9ZjpjLnNpYmxpbmc9ZixjPWYpO3JldHVybiBsfWZvcihmPXIobyxmKTt5PHUubGVuZ3RoO3krKyludWxsIT09KG09aChmLG8seSx1W3ldLHMpKSYmKGUmJm51bGwhPT1tLmFsdGVybmF0ZSYmZi5kZWxldGUobnVsbD09PW0ua2V5P3k6bS5rZXkpLGk9YShtLGkseSksbnVsbD09PWM/bD1tOmMuc2libGluZz1tLGM9bSk7cmV0dXJuIGUmJmYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQobyxlKX0pKSxsfWZ1bmN0aW9uIG0obyx1LHMsbCl7dmFyIGM9SihzKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyl0aHJvdyBFcnJvcihpKDE1MCkpO2lmKG51bGw9PShzPWMuY2FsbChzKSkpdGhyb3cgRXJyb3IoaSgxNTEpKTtmb3IodmFyIGY9Yz1udWxsLHk9dSxtPXU9MCx2PW51bGwsZz1zLm5leHQoKTtudWxsIT09eSYmIWcuZG9uZTttKyssZz1zLm5leHQoKSl7eS5pbmRleD5tPyh2PXkseT1udWxsKTp2PXkuc2libGluZzt2YXIgYj1wKG8seSxnLnZhbHVlLGwpO2lmKG51bGw9PT1iKXtudWxsPT09eSYmKHk9dik7YnJlYWt9ZSYmeSYmbnVsbD09PWIuYWx0ZXJuYXRlJiZ0KG8seSksdT1hKGIsdSxtKSxudWxsPT09Zj9jPWI6Zi5zaWJsaW5nPWIsZj1iLHk9dn1pZihnLmRvbmUpcmV0dXJuIG4obyx5KSxjO2lmKG51bGw9PT15KXtmb3IoOyFnLmRvbmU7bSsrLGc9cy5uZXh0KCkpbnVsbCE9PShnPWQobyxnLnZhbHVlLGwpKSYmKHU9YShnLHUsbSksbnVsbD09PWY/Yz1nOmYuc2libGluZz1nLGY9Zyk7cmV0dXJuIGN9Zm9yKHk9cihvLHkpOyFnLmRvbmU7bSsrLGc9cy5uZXh0KCkpbnVsbCE9PShnPWgoeSxvLG0sZy52YWx1ZSxsKSkmJihlJiZudWxsIT09Zy5hbHRlcm5hdGUmJnkuZGVsZXRlKG51bGw9PT1nLmtleT9tOmcua2V5KSx1PWEoZyx1LG0pLG51bGw9PT1mP2M9ZzpmLnNpYmxpbmc9ZyxmPWcpO3JldHVybiBlJiZ5LmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0KG8sZSl9KSksY31yZXR1cm4gZnVuY3Rpb24oZSxyLGEscyl7dmFyIGw9Im9iamVjdCI9PXR5cGVvZiBhJiZudWxsIT09YSYmYS50eXBlPT09RiYmbnVsbD09PWEua2V5O2wmJihhPWEucHJvcHMuY2hpbGRyZW4pO3ZhciBjPSJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWE7aWYoYylzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBJOmU6e2ZvcihjPWEua2V5LGw9cjtudWxsIT09bDspe2lmKGwua2V5PT09Yyl7aWYoNz09PWwudGFnP2EudHlwZT09PUY6bC5lbGVtZW50VHlwZT09PWEudHlwZSl7bihlLGwuc2libGluZyksKHI9byhsLGEudHlwZT09PUY/YS5wcm9wcy5jaGlsZHJlbjphLnByb3BzKSkucmVmPU1hKGUsbCxhKSxyLnJldHVybj1lLGU9cjticmVhayBlfW4oZSxsKTticmVha310KGUsbCksbD1sLnNpYmxpbmd9YS50eXBlPT09Rj8oKHI9THMoYS5wcm9wcy5jaGlsZHJlbixlLm1vZGUscyxhLmtleSkpLnJldHVybj1lLGU9cik6KChzPWpzKGEudHlwZSxhLmtleSxhLnByb3BzLG51bGwsZS5tb2RlLHMpKS5yZWY9TWEoZSxyLGEpLHMucmV0dXJuPWUsZT1zKX1yZXR1cm4gdShlKTtjYXNlIEE6ZTp7Zm9yKGw9YS5rZXk7bnVsbCE9PXI7KXtpZihyLmtleT09PWwpe2lmKDQ9PT1yLnRhZyYmci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWEuY29udGFpbmVySW5mbyYmci5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1hLmltcGxlbWVudGF0aW9uKXtuKGUsci5zaWJsaW5nKSwocj1vKHIsYS5jaGlsZHJlbnx8W10pKS5yZXR1cm49ZSxlPXI7YnJlYWsgZX1uKGUscik7YnJlYWt9dChlLHIpLHI9ci5zaWJsaW5nfShyPUlzKGEsZS5tb2RlLHMpKS5yZXR1cm49ZSxlPXJ9cmV0dXJuIHUoZSl9aWYoInN0cmluZyI9PXR5cGVvZiBhfHwibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGE9IiIrYSxudWxsIT09ciYmNj09PXIudGFnPyhuKGUsci5zaWJsaW5nKSwocj1vKHIsYSkpLnJldHVybj1lLGU9cik6KG4oZSxyKSwocj1ScyhhLGUubW9kZSxzKSkucmV0dXJuPWUsZT1yKSx1KGUpO2lmKFRhKGEpKXJldHVybiB5KGUscixhLHMpO2lmKEooYSkpcmV0dXJuIG0oZSxyLGEscyk7aWYoYyYmUGEoZSxhKSx2b2lkIDA9PT1hJiYhbClzd2l0Y2goZS50YWcpe2Nhc2UgMTpjYXNlIDA6dGhyb3cgZT1lLnR5cGUsRXJyb3IoaSgxNTIsZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiQ29tcG9uZW50IikpfXJldHVybiBuKGUscil9fXZhciBqYT1OYSghMCksTGE9TmEoITEpLFJhPXt9LElhPXtjdXJyZW50OlJhfSxBYT17Y3VycmVudDpSYX0sRmE9e2N1cnJlbnQ6UmF9O2Z1bmN0aW9uIEJhKGUpe2lmKGU9PT1SYSl0aHJvdyBFcnJvcihpKDE3NCkpO3JldHVybiBlfWZ1bmN0aW9uIHphKGUsdCl7Y28oRmEsdCksY28oQWEsZSksY28oSWEsUmEpO3ZhciBuPXQubm9kZVR5cGU7c3dpdGNoKG4pe2Nhc2UgOTpjYXNlIDExOnQ9KHQ9dC5kb2N1bWVudEVsZW1lbnQpP3QubmFtZXNwYWNlVVJJOktlKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6dD1LZSh0PShuPTg9PT1uP3QucGFyZW50Tm9kZTp0KS5uYW1lc3BhY2VVUkl8fG51bGwsbj1uLnRhZ05hbWUpfWxvKElhKSxjbyhJYSx0KX1mdW5jdGlvbiBLYShlKXtsbyhJYSksbG8oQWEpLGxvKEZhKX1mdW5jdGlvbiBxYShlKXtCYShGYS5jdXJyZW50KTt2YXIgdD1CYShJYS5jdXJyZW50KSxuPUtlKHQsZS50eXBlKTt0IT09biYmKGNvKEFhLGUpLGNvKElhLG4pKX1mdW5jdGlvbiBWYShlKXtBYS5jdXJyZW50PT09ZSYmKGxvKElhKSxsbyhBYSkpfXZhciBVYT17Y3VycmVudDowfTtmdW5jdGlvbiBXYShlKXtmb3IodmFyIHQ9ZTtudWxsIT09dDspe2lmKDEzPT09dC50YWcpe3ZhciBuPXQubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09biYmKG51bGw9PT0obj1uLmRlaHlkcmF0ZWQpfHwiJD8iPT09bi5kYXRhfHwiJCEiPT09bi5kYXRhKSlyZXR1cm4gdH1lbHNlIGlmKDE5PT09dC50YWcmJnZvaWQgMCE9PXQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9KDY0JnQuZWZmZWN0VGFnKSlyZXR1cm4gdH1lbHNlIGlmKG51bGwhPT10LmNoaWxkKXt0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtjb250aW51ZX1pZih0PT09ZSlicmVhaztmb3IoO251bGw9PT10LnNpYmxpbmc7KXtpZihudWxsPT09dC5yZXR1cm58fHQucmV0dXJuPT09ZSlyZXR1cm4gbnVsbDt0PXQucmV0dXJufXQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWWEoZSx0KXtyZXR1cm57cmVzcG9uZGVyOmUscHJvcHM6dH19dmFyIEhhPWouUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixHYT1qLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFFhPTAsSmE9bnVsbCxaYT1udWxsLCRhPW51bGwsWGE9bnVsbCxlaT1udWxsLHRpPW51bGwsbmk9MCxyaT1udWxsLG9pPTAsYWk9ITEsaWk9bnVsbCx1aT0wO2Z1bmN0aW9uIHNpKCl7dGhyb3cgRXJyb3IoaSgzMjEpKX1mdW5jdGlvbiBsaShlLHQpe2lmKG51bGw9PT10KXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJm48ZS5sZW5ndGg7bisrKWlmKCFKcihlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGNpKGUsdCxuLHIsbyxhKXtpZihRYT1hLEphPXQsJGE9bnVsbCE9PWU/ZS5tZW1vaXplZFN0YXRlOm51bGwsSGEuY3VycmVudD1udWxsPT09JGE/VGk6TWksdD1uKHIsbyksYWkpe2Rve2FpPSExLHVpKz0xLCRhPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsLHRpPVhhLHJpPWVpPVphPW51bGwsSGEuY3VycmVudD1NaSx0PW4ocixvKX13aGlsZShhaSk7aWk9bnVsbCx1aT0wfWlmKEhhLmN1cnJlbnQ9RGksKGU9SmEpLm1lbW9pemVkU3RhdGU9WGEsZS5leHBpcmF0aW9uVGltZT1uaSxlLnVwZGF0ZVF1ZXVlPXJpLGUuZWZmZWN0VGFnfD1vaSxlPW51bGwhPT1aYSYmbnVsbCE9PVphLm5leHQsUWE9MCx0aT1laT1YYT0kYT1aYT1KYT1udWxsLG5pPTAscmk9bnVsbCxvaT0wLGUpdGhyb3cgRXJyb3IoaSgzMDApKTtyZXR1cm4gdH1mdW5jdGlvbiBmaSgpe0hhLmN1cnJlbnQ9RGksUWE9MCx0aT1laT1YYT0kYT1aYT1KYT1udWxsLG5pPTAscmk9bnVsbCxvaT0wLGFpPSExLGlpPW51bGwsdWk9MH1mdW5jdGlvbiBkaSgpe3ZhciBlPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwscXVldWU6bnVsbCxiYXNlVXBkYXRlOm51bGwsbmV4dDpudWxsfTtyZXR1cm4gbnVsbD09PWVpP1hhPWVpPWU6ZWk9ZWkubmV4dD1lLGVpfWZ1bmN0aW9uIHBpKCl7aWYobnVsbCE9PXRpKXRpPShlaT10aSkubmV4dCwkYT1udWxsIT09KFphPSRhKT9aYS5uZXh0Om51bGw7ZWxzZXtpZihudWxsPT09JGEpdGhyb3cgRXJyb3IoaSgzMTApKTt2YXIgZT17bWVtb2l6ZWRTdGF0ZTooWmE9JGEpLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOlphLmJhc2VTdGF0ZSxxdWV1ZTpaYS5xdWV1ZSxiYXNlVXBkYXRlOlphLmJhc2VVcGRhdGUsbmV4dDpudWxsfTtlaT1udWxsPT09ZWk/WGE9ZTplaS5uZXh0PWUsJGE9WmEubmV4dH1yZXR1cm4gZWl9ZnVuY3Rpb24gaGkoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KGUpOnR9ZnVuY3Rpb24geWkoZSl7dmFyIHQ9cGkoKSxuPXQucXVldWU7aWYobnVsbD09PW4pdGhyb3cgRXJyb3IoaSgzMTEpKTtpZihuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZSwwPHVpKXt2YXIgcj1uLmRpc3BhdGNoO2lmKG51bGwhPT1paSl7dmFyIG89aWkuZ2V0KG4pO2lmKHZvaWQgMCE9PW8pe2lpLmRlbGV0ZShuKTt2YXIgYT10Lm1lbW9pemVkU3RhdGU7ZG97YT1lKGEsby5hY3Rpb24pLG89by5uZXh0fXdoaWxlKG51bGwhPT1vKTtyZXR1cm4gSnIoYSx0Lm1lbW9pemVkU3RhdGUpfHwoS2k9ITApLHQubWVtb2l6ZWRTdGF0ZT1hLHQuYmFzZVVwZGF0ZT09PW4ubGFzdCYmKHQuYmFzZVN0YXRlPWEpLG4ubGFzdFJlbmRlcmVkU3RhdGU9YSxbYSxyXX19cmV0dXJuW3QubWVtb2l6ZWRTdGF0ZSxyXX1yPW4ubGFzdDt2YXIgdT10LmJhc2VVcGRhdGU7aWYoYT10LmJhc2VTdGF0ZSxudWxsIT09dT8obnVsbCE9PXImJihyLm5leHQ9bnVsbCkscj11Lm5leHQpOnI9bnVsbCE9PXI/ci5uZXh0Om51bGwsbnVsbCE9PXIpe3ZhciBzPW89bnVsbCxsPXIsYz0hMTtkb3t2YXIgZj1sLmV4cGlyYXRpb25UaW1lO2Y8UWE/KGN8fChjPSEwLHM9dSxvPWEpLGY+bmkmJmRzKG5pPWYpKTooZnMoZixsLnN1c3BlbnNlQ29uZmlnKSxhPWwuZWFnZXJSZWR1Y2VyPT09ZT9sLmVhZ2VyU3RhdGU6ZShhLGwuYWN0aW9uKSksdT1sLGw9bC5uZXh0fXdoaWxlKG51bGwhPT1sJiZsIT09cik7Y3x8KHM9dSxvPWEpLEpyKGEsdC5tZW1vaXplZFN0YXRlKXx8KEtpPSEwKSx0Lm1lbW9pemVkU3RhdGU9YSx0LmJhc2VVcGRhdGU9cyx0LmJhc2VTdGF0ZT1vLG4ubGFzdFJlbmRlcmVkU3RhdGU9YX1yZXR1cm5bdC5tZW1vaXplZFN0YXRlLG4uZGlzcGF0Y2hdfWZ1bmN0aW9uIG1pKGUpe3ZhciB0PWRpKCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUoKSksdC5tZW1vaXplZFN0YXRlPXQuYmFzZVN0YXRlPWUsZT0oZT10LnF1ZXVlPXtsYXN0Om51bGwsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmhpLGxhc3RSZW5kZXJlZFN0YXRlOmV9KS5kaXNwYXRjaD1TaS5iaW5kKG51bGwsSmEsZSksW3QubWVtb2l6ZWRTdGF0ZSxlXX1mdW5jdGlvbiB2aShlKXtyZXR1cm4geWkoaGkpfWZ1bmN0aW9uIGdpKGUsdCxuLHIpe3JldHVybiBlPXt0YWc6ZSxjcmVhdGU6dCxkZXN0cm95Om4sZGVwczpyLG5leHQ6bnVsbH0sbnVsbD09PXJpPyhyaT17bGFzdEVmZmVjdDpudWxsfSkubGFzdEVmZmVjdD1lLm5leHQ9ZTpudWxsPT09KHQ9cmkubGFzdEVmZmVjdCk/cmkubGFzdEVmZmVjdD1lLm5leHQ9ZToobj10Lm5leHQsdC5uZXh0PWUsZS5uZXh0PW4scmkubGFzdEVmZmVjdD1lKSxlfWZ1bmN0aW9uIGJpKGUsdCxuLHIpe3ZhciBvPWRpKCk7b2l8PWUsby5tZW1vaXplZFN0YXRlPWdpKHQsbix2b2lkIDAsdm9pZCAwPT09cj9udWxsOnIpfWZ1bmN0aW9uIHdpKGUsdCxuLHIpe3ZhciBvPXBpKCk7cj12b2lkIDA9PT1yP251bGw6cjt2YXIgYT12b2lkIDA7aWYobnVsbCE9PVphKXt2YXIgaT1aYS5tZW1vaXplZFN0YXRlO2lmKGE9aS5kZXN0cm95LG51bGwhPT1yJiZsaShyLGkuZGVwcykpcmV0dXJuIHZvaWQgZ2koMCxuLGEscil9b2l8PWUsby5tZW1vaXplZFN0YXRlPWdpKHQsbixhLHIpfWZ1bmN0aW9uIF9pKGUsdCl7cmV0dXJuIGJpKDUxNiwxOTIsZSx0KX1mdW5jdGlvbiBFaShlLHQpe3JldHVybiB3aSg1MTYsMTkyLGUsdCl9ZnVuY3Rpb24gT2koZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD8oZT1lKCksdChlKSxmdW5jdGlvbigpe3QobnVsbCl9KTpudWxsIT10PyhlPWUoKSx0LmN1cnJlbnQ9ZSxmdW5jdGlvbigpe3QuY3VycmVudD1udWxsfSk6dm9pZCAwfWZ1bmN0aW9uIGtpKCl7fWZ1bmN0aW9uIENpKGUsdCl7cmV0dXJuIGRpKCkubWVtb2l6ZWRTdGF0ZT1bZSx2b2lkIDA9PT10P251bGw6dF0sZX1mdW5jdGlvbiB4aShlLHQpe3ZhciBuPXBpKCk7dD12b2lkIDA9PT10P251bGw6dDt2YXIgcj1uLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGwhPT1yJiZudWxsIT09dCYmbGkodCxyWzFdKT9yWzBdOihuLm1lbW9pemVkU3RhdGU9W2UsdF0sZSl9ZnVuY3Rpb24gU2koZSx0LG4pe2lmKCEoMjU+dWkpKXRocm93IEVycm9yKGkoMzAxKSk7dmFyIHI9ZS5hbHRlcm5hdGU7aWYoZT09PUphfHxudWxsIT09ciYmcj09PUphKWlmKGFpPSEwLGU9e2V4cGlyYXRpb25UaW1lOlFhLHN1c3BlbnNlQ29uZmlnOm51bGwsYWN0aW9uOm4sZWFnZXJSZWR1Y2VyOm51bGwsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0sbnVsbD09PWlpJiYoaWk9bmV3IE1hcCksdm9pZCAwPT09KG49aWkuZ2V0KHQpKSlpaS5zZXQodCxlKTtlbHNle2Zvcih0PW47bnVsbCE9PXQubmV4dDspdD10Lm5leHQ7dC5uZXh0PWV9ZWxzZXt2YXIgbz0kdSgpLGE9X2Euc3VzcGVuc2U7YT17ZXhwaXJhdGlvblRpbWU6bz1YdShvLGUsYSksc3VzcGVuc2VDb25maWc6YSxhY3Rpb246bixlYWdlclJlZHVjZXI6bnVsbCxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTt2YXIgdT10Lmxhc3Q7aWYobnVsbD09PXUpYS5uZXh0PWE7ZWxzZXt2YXIgcz11Lm5leHQ7bnVsbCE9PXMmJihhLm5leHQ9cyksdS5uZXh0PWF9aWYodC5sYXN0PWEsMD09PWUuZXhwaXJhdGlvblRpbWUmJihudWxsPT09cnx8MD09PXIuZXhwaXJhdGlvblRpbWUpJiZudWxsIT09KHI9dC5sYXN0UmVuZGVyZWRSZWR1Y2VyKSl0cnl7dmFyIGw9dC5sYXN0UmVuZGVyZWRTdGF0ZSxjPXIobCxuKTtpZihhLmVhZ2VyUmVkdWNlcj1yLGEuZWFnZXJTdGF0ZT1jLEpyKGMsbCkpcmV0dXJufWNhdGNoKGUpe31lcyhlLG8pfX12YXIgRGk9e3JlYWRDb250ZXh0OnNhLHVzZUNhbGxiYWNrOnNpLHVzZUNvbnRleHQ6c2ksdXNlRWZmZWN0OnNpLHVzZUltcGVyYXRpdmVIYW5kbGU6c2ksdXNlTGF5b3V0RWZmZWN0OnNpLHVzZU1lbW86c2ksdXNlUmVkdWNlcjpzaSx1c2VSZWY6c2ksdXNlU3RhdGU6c2ksdXNlRGVidWdWYWx1ZTpzaSx1c2VSZXNwb25kZXI6c2ksdXNlRGVmZXJyZWRWYWx1ZTpzaSx1c2VUcmFuc2l0aW9uOnNpfSxUaT17cmVhZENvbnRleHQ6c2EsdXNlQ2FsbGJhY2s6Q2ksdXNlQ29udGV4dDpzYSx1c2VFZmZlY3Q6X2ksdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG49bnVsbCE9bj9uLmNvbmNhdChbZV0pOm51bGwsYmkoNCwzNixPaS5iaW5kKG51bGwsdCxlKSxuKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGJpKDQsMzYsZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPWRpKCk7cmV0dXJuIHQ9dm9pZCAwPT09dD9udWxsOnQsZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGV9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWRpKCk7cmV0dXJuIHQ9dm9pZCAwIT09bj9uKHQpOnQsci5tZW1vaXplZFN0YXRlPXIuYmFzZVN0YXRlPXQsZT0oZT1yLnF1ZXVlPXtsYXN0Om51bGwsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmUsbGFzdFJlbmRlcmVkU3RhdGU6dH0pLmRpc3BhdGNoPVNpLmJpbmQobnVsbCxKYSxlKSxbci5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9e2N1cnJlbnQ6ZX0sZGkoKS5tZW1vaXplZFN0YXRlPWV9LHVzZVN0YXRlOm1pLHVzZURlYnVnVmFsdWU6a2ksdXNlUmVzcG9uZGVyOllhLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1taShlKSxyPW5bMF0sbz1uWzFdO3JldHVybiBfaSgoZnVuY3Rpb24oKXthLnVuc3RhYmxlX25leHQoKGZ1bmN0aW9uKCl7dmFyIG49R2Euc3VzcGVuc2U7R2Euc3VzcGVuc2U9dm9pZCAwPT09dD9udWxsOnQ7dHJ5e28oZSl9ZmluYWxseXtHYS5zdXNwZW5zZT1ufX0pKX0pLFtlLHRdKSxyfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PW1pKCExKSxuPXRbMF0scj10WzFdO3JldHVybltDaSgoZnVuY3Rpb24odCl7cighMCksYS51bnN0YWJsZV9uZXh0KChmdW5jdGlvbigpe3ZhciBuPUdhLnN1c3BlbnNlO0dhLnN1c3BlbnNlPXZvaWQgMD09PWU/bnVsbDplO3RyeXtyKCExKSx0KCl9ZmluYWxseXtHYS5zdXNwZW5zZT1ufX0pKX0pLFtlLG5dKSxuXX19LE1pPXtyZWFkQ29udGV4dDpzYSx1c2VDYWxsYmFjazp4aSx1c2VDb250ZXh0OnNhLHVzZUVmZmVjdDpFaSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1udWxsIT1uP24uY29uY2F0KFtlXSk6bnVsbCx3aSg0LDM2LE9pLmJpbmQobnVsbCx0LGUpLG4pfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gd2koNCwzNixlLHQpfSx1c2VNZW1vOmZ1bmN0aW9uKGUsdCl7dmFyIG49cGkoKTt0PXZvaWQgMD09PXQ/bnVsbDp0O3ZhciByPW4ubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbCE9PXImJm51bGwhPT10JiZsaSh0LHJbMV0pP3JbMF06KGU9ZSgpLG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlKX0sdXNlUmVkdWNlcjp5aSx1c2VSZWY6ZnVuY3Rpb24oKXtyZXR1cm4gcGkoKS5tZW1vaXplZFN0YXRlfSx1c2VTdGF0ZTp2aSx1c2VEZWJ1Z1ZhbHVlOmtpLHVzZVJlc3BvbmRlcjpZYSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dmkoKSxyPW5bMF0sbz1uWzFdO3JldHVybiBFaSgoZnVuY3Rpb24oKXthLnVuc3RhYmxlX25leHQoKGZ1bmN0aW9uKCl7dmFyIG49R2Euc3VzcGVuc2U7R2Euc3VzcGVuc2U9dm9pZCAwPT09dD9udWxsOnQ7dHJ5e28oZSl9ZmluYWxseXtHYS5zdXNwZW5zZT1ufX0pKX0pLFtlLHRdKSxyfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXZpKCksbj10WzBdLHI9dFsxXTtyZXR1cm5beGkoKGZ1bmN0aW9uKHQpe3IoITApLGEudW5zdGFibGVfbmV4dCgoZnVuY3Rpb24oKXt2YXIgbj1HYS5zdXNwZW5zZTtHYS5zdXNwZW5zZT12b2lkIDA9PT1lP251bGw6ZTt0cnl7cighMSksdCgpfWZpbmFsbHl7R2Euc3VzcGVuc2U9bn19KSl9KSxbZSxuXSksbl19fSxQaT1udWxsLE5pPW51bGwsamk9ITE7ZnVuY3Rpb24gTGkoZSx0KXt2YXIgbj1Ncyg1LG51bGwsbnVsbCwwKTtuLmVsZW1lbnRUeXBlPSJERUxFVEVEIixuLnR5cGU9IkRFTEVURUQiLG4uc3RhdGVOb2RlPXQsbi5yZXR1cm49ZSxuLmVmZmVjdFRhZz04LG51bGwhPT1lLmxhc3RFZmZlY3Q/KGUubGFzdEVmZmVjdC5uZXh0RWZmZWN0PW4sZS5sYXN0RWZmZWN0PW4pOmUuZmlyc3RFZmZlY3Q9ZS5sYXN0RWZmZWN0PW59ZnVuY3Rpb24gUmkoZSx0KXtzd2l0Y2goZS50YWcpe2Nhc2UgNTp2YXIgbj1lLnR5cGU7cmV0dXJuIG51bGwhPT0odD0xIT09dC5ub2RlVHlwZXx8bi50b0xvd2VyQ2FzZSgpIT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6dCkmJihlLnN0YXRlTm9kZT10LCEwKTtjYXNlIDY6cmV0dXJuIG51bGwhPT0odD0iIj09PWUucGVuZGluZ1Byb3BzfHwzIT09dC5ub2RlVHlwZT9udWxsOnQpJiYoZS5zdGF0ZU5vZGU9dCwhMCk7Y2FzZSAxMzpkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBJaShlKXtpZihqaSl7dmFyIHQ9Tmk7aWYodCl7dmFyIG49dDtpZighUmkoZSx0KSl7aWYoISh0PW5yKG4ubmV4dFNpYmxpbmcpKXx8IVJpKGUsdCkpcmV0dXJuIGUuZWZmZWN0VGFnPS0xMDI1JmUuZWZmZWN0VGFnfDIsamk9ITEsdm9pZChQaT1lKTtMaShQaSxuKX1QaT1lLE5pPW5yKHQuZmlyc3RDaGlsZCl9ZWxzZSBlLmVmZmVjdFRhZz0tMTAyNSZlLmVmZmVjdFRhZ3wyLGppPSExLFBpPWV9fWZ1bmN0aW9uIEFpKGUpe2ZvcihlPWUucmV0dXJuO251bGwhPT1lJiY1IT09ZS50YWcmJjMhPT1lLnRhZyYmMTMhPT1lLnRhZzspZT1lLnJldHVybjtQaT1lfWZ1bmN0aW9uIEZpKGUpe2lmKGUhPT1QaSlyZXR1cm4hMTtpZighamkpcmV0dXJuIEFpKGUpLGppPSEwLCExO3ZhciB0PWUudHlwZTtpZig1IT09ZS50YWd8fCJoZWFkIiE9PXQmJiJib2R5IiE9PXQmJiFYbih0LGUubWVtb2l6ZWRQcm9wcykpZm9yKHQ9Tmk7dDspTGkoZSx0KSx0PW5yKHQubmV4dFNpYmxpbmcpO2lmKEFpKGUpLDEzPT09ZS50YWcpe2lmKCEoZT1udWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKT9lLmRlaHlkcmF0ZWQ6bnVsbCkpdGhyb3cgRXJyb3IoaSgzMTcpKTtlOntmb3IoZT1lLm5leHRTaWJsaW5nLHQ9MDtlOyl7aWYoOD09PWUubm9kZVR5cGUpe3ZhciBuPWUuZGF0YTtpZigiLyQiPT09bil7aWYoMD09PXQpe05pPW5yKGUubmV4dFNpYmxpbmcpO2JyZWFrIGV9dC0tfWVsc2UiJCIhPT1uJiYiJCEiIT09biYmIiQ/IiE9PW58fHQrK31lPWUubmV4dFNpYmxpbmd9Tmk9bnVsbH19ZWxzZSBOaT1QaT9ucihlLnN0YXRlTm9kZS5uZXh0U2libGluZyk6bnVsbDtyZXR1cm4hMH1mdW5jdGlvbiBCaSgpe05pPVBpPW51bGwsamk9ITF9dmFyIHppPWouUmVhY3RDdXJyZW50T3duZXIsS2k9ITE7ZnVuY3Rpb24gcWkoZSx0LG4scil7dC5jaGlsZD1udWxsPT09ZT9MYSh0LG51bGwsbixyKTpqYSh0LGUuY2hpbGQsbixyKX1mdW5jdGlvbiBWaShlLHQsbixyLG8pe249bi5yZW5kZXI7dmFyIGE9dC5yZWY7cmV0dXJuIHVhKHQsbykscj1jaShlLHQsbixyLGEsbyksbnVsbD09PWV8fEtpPyh0LmVmZmVjdFRhZ3w9MSxxaShlLHQscixvKSx0LmNoaWxkKToodC51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQuZWZmZWN0VGFnJj0tNTE3LGUuZXhwaXJhdGlvblRpbWU8PW8mJihlLmV4cGlyYXRpb25UaW1lPTApLGF1KGUsdCxvKSl9ZnVuY3Rpb24gVWkoZSx0LG4scixvLGEpe2lmKG51bGw9PT1lKXt2YXIgaT1uLnR5cGU7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGl8fFBzKGkpfHx2b2lkIDAhPT1pLmRlZmF1bHRQcm9wc3x8bnVsbCE9PW4uY29tcGFyZXx8dm9pZCAwIT09bi5kZWZhdWx0UHJvcHM/KChlPWpzKG4udHlwZSxudWxsLHIsbnVsbCx0Lm1vZGUsYSkpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSk6KHQudGFnPTE1LHQudHlwZT1pLFdpKGUsdCxpLHIsbyxhKSl9cmV0dXJuIGk9ZS5jaGlsZCxvPGEmJihvPWkubWVtb2l6ZWRQcm9wcywobj1udWxsIT09KG49bi5jb21wYXJlKT9uOiRyKShvLHIpJiZlLnJlZj09PXQucmVmKT9hdShlLHQsYSk6KHQuZWZmZWN0VGFnfD0xLChlPU5zKGkscikpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSl9ZnVuY3Rpb24gV2koZSx0LG4scixvLGEpe3JldHVybiBudWxsIT09ZSYmJHIoZS5tZW1vaXplZFByb3BzLHIpJiZlLnJlZj09PXQucmVmJiYoS2k9ITEsbzxhKT9hdShlLHQsYSk6SGkoZSx0LG4scixhKX1mdW5jdGlvbiBZaShlLHQpe3ZhciBuPXQucmVmOyhudWxsPT09ZSYmbnVsbCE9PW58fG51bGwhPT1lJiZlLnJlZiE9PW4pJiYodC5lZmZlY3RUYWd8PTEyOCl9ZnVuY3Rpb24gSGkoZSx0LG4scixvKXt2YXIgYT12byhuKT95bzpwby5jdXJyZW50O3JldHVybiBhPW1vKHQsYSksdWEodCxvKSxuPWNpKGUsdCxuLHIsYSxvKSxudWxsPT09ZXx8S2k/KHQuZWZmZWN0VGFnfD0xLHFpKGUsdCxuLG8pLHQuY2hpbGQpOih0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdC5lZmZlY3RUYWcmPS01MTcsZS5leHBpcmF0aW9uVGltZTw9byYmKGUuZXhwaXJhdGlvblRpbWU9MCksYXUoZSx0LG8pKX1mdW5jdGlvbiBHaShlLHQsbixyLG8pe2lmKHZvKG4pKXt2YXIgYT0hMDtFbyh0KX1lbHNlIGE9ITE7aWYodWEodCxvKSxudWxsPT09dC5zdGF0ZU5vZGUpbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLHhhKHQsbixyKSxEYSh0LG4scixvKSxyPSEwO2Vsc2UgaWYobnVsbD09PWUpe3ZhciBpPXQuc3RhdGVOb2RlLHU9dC5tZW1vaXplZFByb3BzO2kucHJvcHM9dTt2YXIgcz1pLmNvbnRleHQsbD1uLmNvbnRleHRUeXBlOyJvYmplY3QiPT10eXBlb2YgbCYmbnVsbCE9PWw/bD1zYShsKTpsPW1vKHQsbD12byhuKT95bzpwby5jdXJyZW50KTt2YXIgYz1uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyxmPSJmdW5jdGlvbiI9PXR5cGVvZiBjfHwiZnVuY3Rpb24iPT10eXBlb2YgaS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtmfHwiZnVuY3Rpb24iIT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KHUhPT1yfHxzIT09bCkmJlNhKHQsaSxyLGwpLGxhPSExO3ZhciBkPXQubWVtb2l6ZWRTdGF0ZTtzPWkuc3RhdGU9ZDt2YXIgcD10LnVwZGF0ZVF1ZXVlO251bGwhPT1wJiYoZ2EodCxwLHIsaSxvKSxzPXQubWVtb2l6ZWRTdGF0ZSksdSE9PXJ8fGQhPT1zfHxoby5jdXJyZW50fHxsYT8oImZ1bmN0aW9uIj09dHlwZW9mIGMmJihPYSh0LG4sYyxyKSxzPXQubWVtb2l6ZWRTdGF0ZSksKHU9bGF8fENhKHQsbix1LHIsZCxzLGwpKT8oZnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmImZ1bmN0aW9uIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50fHwoImZ1bmN0aW9uIj09dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50JiZpLmNvbXBvbmVudFdpbGxNb3VudCgpLCJmdW5jdGlvbiI9PXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmkuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSwiZnVuY3Rpb24iPT10eXBlb2YgaS5jb21wb25lbnREaWRNb3VudCYmKHQuZWZmZWN0VGFnfD00KSk6KCJmdW5jdGlvbiI9PXR5cGVvZiBpLmNvbXBvbmVudERpZE1vdW50JiYodC5lZmZlY3RUYWd8PTQpLHQubWVtb2l6ZWRQcm9wcz1yLHQubWVtb2l6ZWRTdGF0ZT1zKSxpLnByb3BzPXIsaS5zdGF0ZT1zLGkuY29udGV4dD1sLHI9dSk6KCJmdW5jdGlvbiI9PXR5cGVvZiBpLmNvbXBvbmVudERpZE1vdW50JiYodC5lZmZlY3RUYWd8PTQpLHI9ITEpfWVsc2UgaT10LnN0YXRlTm9kZSx1PXQubWVtb2l6ZWRQcm9wcyxpLnByb3BzPXQudHlwZT09PXQuZWxlbWVudFR5cGU/dTokbyh0LnR5cGUsdSkscz1pLmNvbnRleHQsIm9iamVjdCI9PXR5cGVvZihsPW4uY29udGV4dFR5cGUpJiZudWxsIT09bD9sPXNhKGwpOmw9bW8odCxsPXZvKG4pP3lvOnBvLmN1cnJlbnQpLChmPSJmdW5jdGlvbiI9PXR5cGVvZihjPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHwiZnVuY3Rpb24iIT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KHUhPT1yfHxzIT09bCkmJlNhKHQsaSxyLGwpLGxhPSExLHM9dC5tZW1vaXplZFN0YXRlLGQ9aS5zdGF0ZT1zLG51bGwhPT0ocD10LnVwZGF0ZVF1ZXVlKSYmKGdhKHQscCxyLGksbyksZD10Lm1lbW9pemVkU3RhdGUpLHUhPT1yfHxzIT09ZHx8aG8uY3VycmVudHx8bGE/KCJmdW5jdGlvbiI9PXR5cGVvZiBjJiYoT2EodCxuLGMsciksZD10Lm1lbW9pemVkU3RhdGUpLChjPWxhfHxDYSh0LG4sdSxyLHMsZCxsKSk/KGZ8fCJmdW5jdGlvbiIhPXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiYiZnVuY3Rpb24iIT10eXBlb2YgaS5jb21wb25lbnRXaWxsVXBkYXRlfHwoImZ1bmN0aW9uIj09dHlwZW9mIGkuY29tcG9uZW50V2lsbFVwZGF0ZSYmaS5jb21wb25lbnRXaWxsVXBkYXRlKHIsZCxsKSwiZnVuY3Rpb24iPT10eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmaS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShyLGQsbCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBpLmNvbXBvbmVudERpZFVwZGF0ZSYmKHQuZWZmZWN0VGFnfD00KSwiZnVuY3Rpb24iPT10eXBlb2YgaS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKHQuZWZmZWN0VGFnfD0yNTYpKTooImZ1bmN0aW9uIiE9dHlwZW9mIGkuY29tcG9uZW50RGlkVXBkYXRlfHx1PT09ZS5tZW1vaXplZFByb3BzJiZzPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTQpLCJmdW5jdGlvbiIhPXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHx1PT09ZS5tZW1vaXplZFByb3BzJiZzPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTI1NiksdC5tZW1vaXplZFByb3BzPXIsdC5tZW1vaXplZFN0YXRlPWQpLGkucHJvcHM9cixpLnN0YXRlPWQsaS5jb250ZXh0PWwscj1jKTooImZ1bmN0aW9uIiE9dHlwZW9mIGkuY29tcG9uZW50RGlkVXBkYXRlfHx1PT09ZS5tZW1vaXplZFByb3BzJiZzPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTQpLCJmdW5jdGlvbiIhPXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHx1PT09ZS5tZW1vaXplZFByb3BzJiZzPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTI1Nikscj0hMSk7cmV0dXJuIFFpKGUsdCxuLHIsYSxvKX1mdW5jdGlvbiBRaShlLHQsbixyLG8sYSl7WWkoZSx0KTt2YXIgaT0wIT0oNjQmdC5lZmZlY3RUYWcpO2lmKCFyJiYhaSlyZXR1cm4gbyYmT28odCxuLCExKSxhdShlLHQsYSk7cj10LnN0YXRlTm9kZSx6aS5jdXJyZW50PXQ7dmFyIHU9aSYmImZ1bmN0aW9uIiE9dHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6ci5yZW5kZXIoKTtyZXR1cm4gdC5lZmZlY3RUYWd8PTEsbnVsbCE9PWUmJmk/KHQuY2hpbGQ9amEodCxlLmNoaWxkLG51bGwsYSksdC5jaGlsZD1qYSh0LG51bGwsdSxhKSk6cWkoZSx0LHUsYSksdC5tZW1vaXplZFN0YXRlPXIuc3RhdGUsbyYmT28odCxuLCEwKSx0LmNoaWxkfWZ1bmN0aW9uIEppKGUpe3ZhciB0PWUuc3RhdGVOb2RlO3QucGVuZGluZ0NvbnRleHQ/d28oMCx0LnBlbmRpbmdDb250ZXh0LHQucGVuZGluZ0NvbnRleHQhPT10LmNvbnRleHQpOnQuY29udGV4dCYmd28oMCx0LmNvbnRleHQsITEpLHphKGUsdC5jb250YWluZXJJbmZvKX12YXIgWmksJGksWGksZXU9e2RlaHlkcmF0ZWQ6bnVsbCxyZXRyeVRpbWU6MH07ZnVuY3Rpb24gdHUoZSx0LG4pe3ZhciByLG89dC5tb2RlLGE9dC5wZW5kaW5nUHJvcHMsaT1VYS5jdXJyZW50LHU9ITE7aWYoKHI9MCE9KDY0JnQuZWZmZWN0VGFnKSl8fChyPTAhPSgyJmkpJiYobnVsbD09PWV8fG51bGwhPT1lLm1lbW9pemVkU3RhdGUpKSxyPyh1PSEwLHQuZWZmZWN0VGFnJj0tNjUpOm51bGwhPT1lJiZudWxsPT09ZS5tZW1vaXplZFN0YXRlfHx2b2lkIDA9PT1hLmZhbGxiYWNrfHwhMD09PWEudW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2t8fChpfD0xKSxjbyhVYSwxJmkpLG51bGw9PT1lKXtpZih2b2lkIDAhPT1hLmZhbGxiYWNrJiZJaSh0KSx1KXtpZih1PWEuZmFsbGJhY2ssKGE9THMobnVsbCxvLDAsbnVsbCkpLnJldHVybj10LDA9PSgyJnQubW9kZSkpZm9yKGU9bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZT90LmNoaWxkLmNoaWxkOnQuY2hpbGQsYS5jaGlsZD1lO251bGwhPT1lOyllLnJldHVybj1hLGU9ZS5zaWJsaW5nO3JldHVybihuPUxzKHUsbyxuLG51bGwpKS5yZXR1cm49dCxhLnNpYmxpbmc9bix0Lm1lbW9pemVkU3RhdGU9ZXUsdC5jaGlsZD1hLG59cmV0dXJuIG89YS5jaGlsZHJlbix0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LmNoaWxkPUxhKHQsbnVsbCxvLG4pfWlmKG51bGwhPT1lLm1lbW9pemVkU3RhdGUpe2lmKG89KGU9ZS5jaGlsZCkuc2libGluZyx1KXtpZihhPWEuZmFsbGJhY2ssKG49TnMoZSxlLnBlbmRpbmdQcm9wcykpLnJldHVybj10LDA9PSgyJnQubW9kZSkmJih1PW51bGwhPT10Lm1lbW9pemVkU3RhdGU/dC5jaGlsZC5jaGlsZDp0LmNoaWxkKSE9PWUuY2hpbGQpZm9yKG4uY2hpbGQ9dTtudWxsIT09dTspdS5yZXR1cm49bix1PXUuc2libGluZztyZXR1cm4obz1OcyhvLGEsby5leHBpcmF0aW9uVGltZSkpLnJldHVybj10LG4uc2libGluZz1vLG4uY2hpbGRFeHBpcmF0aW9uVGltZT0wLHQubWVtb2l6ZWRTdGF0ZT1ldSx0LmNoaWxkPW4sb31yZXR1cm4gbj1qYSh0LGUuY2hpbGQsYS5jaGlsZHJlbixuKSx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LmNoaWxkPW59aWYoZT1lLmNoaWxkLHUpe2lmKHU9YS5mYWxsYmFjaywoYT1McyhudWxsLG8sMCxudWxsKSkucmV0dXJuPXQsYS5jaGlsZD1lLG51bGwhPT1lJiYoZS5yZXR1cm49YSksMD09KDImdC5tb2RlKSlmb3IoZT1udWxsIT09dC5tZW1vaXplZFN0YXRlP3QuY2hpbGQuY2hpbGQ6dC5jaGlsZCxhLmNoaWxkPWU7bnVsbCE9PWU7KWUucmV0dXJuPWEsZT1lLnNpYmxpbmc7cmV0dXJuKG49THModSxvLG4sbnVsbCkpLnJldHVybj10LGEuc2libGluZz1uLG4uZWZmZWN0VGFnfD0yLGEuY2hpbGRFeHBpcmF0aW9uVGltZT0wLHQubWVtb2l6ZWRTdGF0ZT1ldSx0LmNoaWxkPWEsbn1yZXR1cm4gdC5tZW1vaXplZFN0YXRlPW51bGwsdC5jaGlsZD1qYSh0LGUsYS5jaGlsZHJlbixuKX1mdW5jdGlvbiBudShlLHQpe2UuZXhwaXJhdGlvblRpbWU8dCYmKGUuZXhwaXJhdGlvblRpbWU9dCk7dmFyIG49ZS5hbHRlcm5hdGU7bnVsbCE9PW4mJm4uZXhwaXJhdGlvblRpbWU8dCYmKG4uZXhwaXJhdGlvblRpbWU9dCksaWEoZS5yZXR1cm4sdCl9ZnVuY3Rpb24gcnUoZSx0LG4scixvLGEpe3ZhciBpPWUubWVtb2l6ZWRTdGF0ZTtudWxsPT09aT9lLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOnQscmVuZGVyaW5nOm51bGwsbGFzdDpyLHRhaWw6bix0YWlsRXhwaXJhdGlvbjowLHRhaWxNb2RlOm8sbGFzdEVmZmVjdDphfTooaS5pc0JhY2t3YXJkcz10LGkucmVuZGVyaW5nPW51bGwsaS5sYXN0PXIsaS50YWlsPW4saS50YWlsRXhwaXJhdGlvbj0wLGkudGFpbE1vZGU9byxpLmxhc3RFZmZlY3Q9YSl9ZnVuY3Rpb24gb3UoZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzLG89ci5yZXZlYWxPcmRlcixhPXIudGFpbDtpZihxaShlLHQsci5jaGlsZHJlbixuKSwwIT0oMiYocj1VYS5jdXJyZW50KSkpcj0xJnJ8Mix0LmVmZmVjdFRhZ3w9NjQ7ZWxzZXtpZihudWxsIT09ZSYmMCE9KDY0JmUuZWZmZWN0VGFnKSllOmZvcihlPXQuY2hpbGQ7bnVsbCE9PWU7KXtpZigxMz09PWUudGFnKW51bGwhPT1lLm1lbW9pemVkU3RhdGUmJm51KGUsbik7ZWxzZSBpZigxOT09PWUudGFnKW51KGUsbik7ZWxzZSBpZihudWxsIT09ZS5jaGlsZCl7ZS5jaGlsZC5yZXR1cm49ZSxlPWUuY2hpbGQ7Y29udGludWV9aWYoZT09PXQpYnJlYWsgZTtmb3IoO251bGw9PT1lLnNpYmxpbmc7KXtpZihudWxsPT09ZS5yZXR1cm58fGUucmV0dXJuPT09dClicmVhayBlO2U9ZS5yZXR1cm59ZS5zaWJsaW5nLnJldHVybj1lLnJldHVybixlPWUuc2libGluZ31yJj0xfWlmKGNvKFVhLHIpLDA9PSgyJnQubW9kZSkpdC5tZW1vaXplZFN0YXRlPW51bGw7ZWxzZSBzd2l0Y2gobyl7Y2FzZSJmb3J3YXJkcyI6Zm9yKG49dC5jaGlsZCxvPW51bGw7bnVsbCE9PW47KW51bGwhPT0oZT1uLmFsdGVybmF0ZSkmJm51bGw9PT1XYShlKSYmKG89biksbj1uLnNpYmxpbmc7bnVsbD09PShuPW8pPyhvPXQuY2hpbGQsdC5jaGlsZD1udWxsKToobz1uLnNpYmxpbmcsbi5zaWJsaW5nPW51bGwpLHJ1KHQsITEsbyxuLGEsdC5sYXN0RWZmZWN0KTticmVhaztjYXNlImJhY2t3YXJkcyI6Zm9yKG49bnVsbCxvPXQuY2hpbGQsdC5jaGlsZD1udWxsO251bGwhPT1vOyl7aWYobnVsbCE9PShlPW8uYWx0ZXJuYXRlKSYmbnVsbD09PVdhKGUpKXt0LmNoaWxkPW87YnJlYWt9ZT1vLnNpYmxpbmcsby5zaWJsaW5nPW4sbj1vLG89ZX1ydSh0LCEwLG4sbnVsbCxhLHQubGFzdEVmZmVjdCk7YnJlYWs7Y2FzZSJ0b2dldGhlciI6cnUodCwhMSxudWxsLG51bGwsdm9pZCAwLHQubGFzdEVmZmVjdCk7YnJlYWs7ZGVmYXVsdDp0Lm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBhdShlLHQsbil7bnVsbCE9PWUmJih0LmRlcGVuZGVuY2llcz1lLmRlcGVuZGVuY2llcyk7dmFyIHI9dC5leHBpcmF0aW9uVGltZTtpZigwIT09ciYmZHMociksdC5jaGlsZEV4cGlyYXRpb25UaW1lPG4pcmV0dXJuIG51bGw7aWYobnVsbCE9PWUmJnQuY2hpbGQhPT1lLmNoaWxkKXRocm93IEVycm9yKGkoMTUzKSk7aWYobnVsbCE9PXQuY2hpbGQpe2ZvcihuPU5zKGU9dC5jaGlsZCxlLnBlbmRpbmdQcm9wcyxlLmV4cGlyYXRpb25UaW1lKSx0LmNoaWxkPW4sbi5yZXR1cm49dDtudWxsIT09ZS5zaWJsaW5nOyllPWUuc2libGluZywobj1uLnNpYmxpbmc9TnMoZSxlLnBlbmRpbmdQcm9wcyxlLmV4cGlyYXRpb25UaW1lKSkucmV0dXJuPXQ7bi5zaWJsaW5nPW51bGx9cmV0dXJuIHQuY2hpbGR9ZnVuY3Rpb24gaXUoZSl7ZS5lZmZlY3RUYWd8PTR9ZnVuY3Rpb24gdXUoZSx0KXtzd2l0Y2goZS50YWlsTW9kZSl7Y2FzZSJoaWRkZW4iOnQ9ZS50YWlsO2Zvcih2YXIgbj1udWxsO251bGwhPT10OyludWxsIT09dC5hbHRlcm5hdGUmJihuPXQpLHQ9dC5zaWJsaW5nO251bGw9PT1uP2UudGFpbD1udWxsOm4uc2libGluZz1udWxsO2JyZWFrO2Nhc2UiY29sbGFwc2VkIjpuPWUudGFpbDtmb3IodmFyIHI9bnVsbDtudWxsIT09bjspbnVsbCE9PW4uYWx0ZXJuYXRlJiYocj1uKSxuPW4uc2libGluZztudWxsPT09cj90fHxudWxsPT09ZS50YWlsP2UudGFpbD1udWxsOmUudGFpbC5zaWJsaW5nPW51bGw6ci5zaWJsaW5nPW51bGx9fWZ1bmN0aW9uIHN1KGUpe3N3aXRjaChlLnRhZyl7Y2FzZSAxOnZvKGUudHlwZSkmJmdvKCk7dmFyIHQ9ZS5lZmZlY3RUYWc7cmV0dXJuIDQwOTYmdD8oZS5lZmZlY3RUYWc9LTQwOTcmdHw2NCxlKTpudWxsO2Nhc2UgMzppZihLYSgpLGJvKCksMCE9KDY0Jih0PWUuZWZmZWN0VGFnKSkpdGhyb3cgRXJyb3IoaSgyODUpKTtyZXR1cm4gZS5lZmZlY3RUYWc9LTQwOTcmdHw2NCxlO2Nhc2UgNTpyZXR1cm4gVmEoZSksbnVsbDtjYXNlIDEzOnJldHVybiBsbyhVYSksNDA5NiYodD1lLmVmZmVjdFRhZyk/KGUuZWZmZWN0VGFnPS00MDk3JnR8NjQsZSk6bnVsbDtjYXNlIDE5OnJldHVybiBsbyhVYSksbnVsbDtjYXNlIDQ6cmV0dXJuIEthKCksbnVsbDtjYXNlIDEwOnJldHVybiBhYShlKSxudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGx1KGUsdCl7cmV0dXJue3ZhbHVlOmUsc291cmNlOnQsc3RhY2s6JCh0KX19Wmk9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5jaGlsZDtudWxsIT09bjspe2lmKDU9PT1uLnRhZ3x8Nj09PW4udGFnKWUuYXBwZW5kQ2hpbGQobi5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PW4udGFnJiZudWxsIT09bi5jaGlsZCl7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGQ7Y29udGludWV9aWYobj09PXQpYnJlYWs7Zm9yKDtudWxsPT09bi5zaWJsaW5nOyl7aWYobnVsbD09PW4ucmV0dXJufHxuLnJldHVybj09PXQpcmV0dXJuO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ319LCRpPWZ1bmN0aW9uKGUsdCxuLHIsYSl7dmFyIGk9ZS5tZW1vaXplZFByb3BzO2lmKGkhPT1yKXt2YXIgdSxzLGw9dC5zdGF0ZU5vZGU7c3dpdGNoKEJhKElhLmN1cnJlbnQpLGU9bnVsbCxuKXtjYXNlImlucHV0IjppPXhlKGwsaSkscj14ZShsLHIpLGU9W107YnJlYWs7Y2FzZSJvcHRpb24iOmk9TmUobCxpKSxyPU5lKGwsciksZT1bXTticmVhaztjYXNlInNlbGVjdCI6aT1vKHt9LGkse3ZhbHVlOnZvaWQgMH0pLHI9byh7fSxyLHt2YWx1ZTp2b2lkIDB9KSxlPVtdO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmk9TGUobCxpKSxyPUxlKGwsciksZT1bXTticmVhaztkZWZhdWx0OiJmdW5jdGlvbiIhPXR5cGVvZiBpLm9uQ2xpY2smJiJmdW5jdGlvbiI9PXR5cGVvZiByLm9uQ2xpY2smJihsLm9uY2xpY2s9VW4pfWZvcih1IGluIEtuKG4sciksbj1udWxsLGkpaWYoIXIuaGFzT3duUHJvcGVydHkodSkmJmkuaGFzT3duUHJvcGVydHkodSkmJm51bGwhPWlbdV0paWYoInN0eWxlIj09PXUpZm9yKHMgaW4gbD1pW3VdKWwuaGFzT3duUHJvcGVydHkocykmJihufHwobj17fSksbltzXT0iIik7ZWxzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCIhPT11JiYiY2hpbGRyZW4iIT09dSYmInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT11JiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PXUmJiJhdXRvRm9jdXMiIT09dSYmKHAuaGFzT3duUHJvcGVydHkodSk/ZXx8KGU9W10pOihlPWV8fFtdKS5wdXNoKHUsbnVsbCkpO2Zvcih1IGluIHIpe3ZhciBjPXJbdV07aWYobD1udWxsIT1pP2lbdV06dm9pZCAwLHIuaGFzT3duUHJvcGVydHkodSkmJmMhPT1sJiYobnVsbCE9Y3x8bnVsbCE9bCkpaWYoInN0eWxlIj09PXUpaWYobCl7Zm9yKHMgaW4gbCkhbC5oYXNPd25Qcm9wZXJ0eShzKXx8YyYmYy5oYXNPd25Qcm9wZXJ0eShzKXx8KG58fChuPXt9KSxuW3NdPSIiKTtmb3IocyBpbiBjKWMuaGFzT3duUHJvcGVydHkocykmJmxbc10hPT1jW3NdJiYobnx8KG49e30pLG5bc109Y1tzXSl9ZWxzZSBufHwoZXx8KGU9W10pLGUucHVzaCh1LG4pKSxuPWM7ZWxzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT11PyhjPWM/Yy5fX2h0bWw6dm9pZCAwLGw9bD9sLl9faHRtbDp2b2lkIDAsbnVsbCE9YyYmbCE9PWMmJihlPWV8fFtdKS5wdXNoKHUsIiIrYykpOiJjaGlsZHJlbiI9PT11P2w9PT1jfHwic3RyaW5nIiE9dHlwZW9mIGMmJiJudW1iZXIiIT10eXBlb2YgY3x8KGU9ZXx8W10pLnB1c2godSwiIitjKToic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiE9PXUmJiJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciIT09dSYmKHAuaGFzT3duUHJvcGVydHkodSk/KG51bGwhPWMmJlZuKGEsdSksZXx8bD09PWN8fChlPVtdKSk6KGU9ZXx8W10pLnB1c2godSxjKSl9biYmKGU9ZXx8W10pLnB1c2goInN0eWxlIixuKSxhPWUsKHQudXBkYXRlUXVldWU9YSkmJml1KHQpfX0sWGk9ZnVuY3Rpb24oZSx0LG4scil7biE9PXImJml1KHQpfTt2YXIgY3U9ImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQ7ZnVuY3Rpb24gZnUoZSx0KXt2YXIgbj10LnNvdXJjZSxyPXQuc3RhY2s7bnVsbD09PXImJm51bGwhPT1uJiYocj0kKG4pKSxudWxsIT09biYmWihuLnR5cGUpLHQ9dC52YWx1ZSxudWxsIT09ZSYmMT09PWUudGFnJiZaKGUudHlwZSk7dHJ5e2NvbnNvbGUuZXJyb3IodCl9Y2F0Y2goZSl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0aHJvdyBlfSkpfX1mdW5jdGlvbiBkdShlKXt2YXIgdD1lLnJlZjtpZihudWxsIT09dClpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl0cnl7dChudWxsKX1jYXRjaCh0KXtrcyhlLHQpfWVsc2UgdC5jdXJyZW50PW51bGx9ZnVuY3Rpb24gcHUoZSx0KXtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6aHUoMiwwLHQpO2JyZWFrO2Nhc2UgMTppZigyNTYmdC5lZmZlY3RUYWcmJm51bGwhPT1lKXt2YXIgbj1lLm1lbW9pemVkUHJvcHMscj1lLm1lbW9pemVkU3RhdGU7dD0oZT10LnN0YXRlTm9kZSkuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUodC5lbGVtZW50VHlwZT09PXQudHlwZT9uOiRvKHQudHlwZSxuKSxyKSxlLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPXR9YnJlYWs7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDE2MykpfX1mdW5jdGlvbiBodShlLHQsbil7aWYobnVsbCE9PShuPW51bGwhPT0obj1uLnVwZGF0ZVF1ZXVlKT9uLmxhc3RFZmZlY3Q6bnVsbCkpe3ZhciByPW49bi5uZXh0O2Rve2lmKDAhPShyLnRhZyZlKSl7dmFyIG89ci5kZXN0cm95O3IuZGVzdHJveT12b2lkIDAsdm9pZCAwIT09byYmbygpfTAhPShyLnRhZyZ0KSYmKG89ci5jcmVhdGUsci5kZXN0cm95PW8oKSkscj1yLm5leHR9d2hpbGUociE9PW4pfX1mdW5jdGlvbiB5dShlLHQsbil7c3dpdGNoKCJmdW5jdGlvbiI9PXR5cGVvZiBEcyYmRHModCksdC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZihudWxsIT09KGU9dC51cGRhdGVRdWV1ZSkmJm51bGwhPT0oZT1lLmxhc3RFZmZlY3QpKXt2YXIgcj1lLm5leHQ7V28oOTc8bj85NzpuLChmdW5jdGlvbigpe3ZhciBlPXI7ZG97dmFyIG49ZS5kZXN0cm95O2lmKHZvaWQgMCE9PW4pe3ZhciBvPXQ7dHJ5e24oKX1jYXRjaChlKXtrcyhvLGUpfX1lPWUubmV4dH13aGlsZShlIT09cil9KSl9YnJlYWs7Y2FzZSAxOmR1KHQpLCJmdW5jdGlvbiI9PXR5cGVvZihuPXQuc3RhdGVOb2RlKS5jb21wb25lbnRXaWxsVW5tb3VudCYmZnVuY3Rpb24oZSx0KXt0cnl7dC5wcm9wcz1lLm1lbW9pemVkUHJvcHMsdC5zdGF0ZT1lLm1lbW9pemVkU3RhdGUsdC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKHQpe2tzKGUsdCl9fSh0LG4pO2JyZWFrO2Nhc2UgNTpkdSh0KTticmVhaztjYXNlIDQ6YnUoZSx0LG4pfX1mdW5jdGlvbiBtdShlKXt2YXIgdD1lLmFsdGVybmF0ZTtlLnJldHVybj1udWxsLGUuY2hpbGQ9bnVsbCxlLm1lbW9pemVkU3RhdGU9bnVsbCxlLnVwZGF0ZVF1ZXVlPW51bGwsZS5kZXBlbmRlbmNpZXM9bnVsbCxlLmFsdGVybmF0ZT1udWxsLGUuZmlyc3RFZmZlY3Q9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCxlLnBlbmRpbmdQcm9wcz1udWxsLGUubWVtb2l6ZWRQcm9wcz1udWxsLG51bGwhPT10JiZtdSh0KX1mdW5jdGlvbiB2dShlKXtyZXR1cm4gNT09PWUudGFnfHwzPT09ZS50YWd8fDQ9PT1lLnRhZ31mdW5jdGlvbiBndShlKXtlOntmb3IodmFyIHQ9ZS5yZXR1cm47bnVsbCE9PXQ7KXtpZih2dSh0KSl7dmFyIG49dDticmVhayBlfXQ9dC5yZXR1cm59dGhyb3cgRXJyb3IoaSgxNjApKX1zd2l0Y2godD1uLnN0YXRlTm9kZSxuLnRhZyl7Y2FzZSA1OnZhciByPSExO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dD10LmNvbnRhaW5lckluZm8scj0hMDticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGkoMTYxKSl9MTYmbi5lZmZlY3RUYWcmJihVZSh0LCIiKSxuLmVmZmVjdFRhZyY9LTE3KTtlOnQ6Zm9yKG49ZTs7KXtmb3IoO251bGw9PT1uLnNpYmxpbmc7KXtpZihudWxsPT09bi5yZXR1cm58fHZ1KG4ucmV0dXJuKSl7bj1udWxsO2JyZWFrIGV9bj1uLnJldHVybn1mb3Iobi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZzs1IT09bi50YWcmJjYhPT1uLnRhZyYmMTghPT1uLnRhZzspe2lmKDImbi5lZmZlY3RUYWcpY29udGludWUgdDtpZihudWxsPT09bi5jaGlsZHx8ND09PW4udGFnKWNvbnRpbnVlIHQ7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGR9aWYoISgyJm4uZWZmZWN0VGFnKSl7bj1uLnN0YXRlTm9kZTticmVhayBlfX1mb3IodmFyIG89ZTs7KXt2YXIgYT01PT09by50YWd8fDY9PT1vLnRhZztpZihhKXt2YXIgdT1hP28uc3RhdGVOb2RlOm8uc3RhdGVOb2RlLmluc3RhbmNlO2lmKG4paWYocil7dmFyIHM9dTt1PW4sOD09PShhPXQpLm5vZGVUeXBlP2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyx1KTphLmluc2VydEJlZm9yZShzLHUpfWVsc2UgdC5pbnNlcnRCZWZvcmUodSxuKTtlbHNlIHI/KDg9PT0ocz10KS5ub2RlVHlwZT8oYT1zLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZSh1LHMpOihhPXMpLmFwcGVuZENoaWxkKHUpLG51bGwhPShzPXMuX3JlYWN0Um9vdENvbnRhaW5lcil8fG51bGwhPT1hLm9uY2xpY2t8fChhLm9uY2xpY2s9VW4pKTp0LmFwcGVuZENoaWxkKHUpfWVsc2UgaWYoNCE9PW8udGFnJiZudWxsIT09by5jaGlsZCl7by5jaGlsZC5yZXR1cm49byxvPW8uY2hpbGQ7Y29udGludWV9aWYobz09PWUpYnJlYWs7Zm9yKDtudWxsPT09by5zaWJsaW5nOyl7aWYobnVsbD09PW8ucmV0dXJufHxvLnJldHVybj09PWUpcmV0dXJuO289by5yZXR1cm59by5zaWJsaW5nLnJldHVybj1vLnJldHVybixvPW8uc2libGluZ319ZnVuY3Rpb24gYnUoZSx0LG4pe2Zvcih2YXIgcixvLGE9dCx1PSExOzspe2lmKCF1KXt1PWEucmV0dXJuO2U6Zm9yKDs7KXtpZihudWxsPT09dSl0aHJvdyBFcnJvcihpKDE2MCkpO3N3aXRjaChyPXUuc3RhdGVOb2RlLHUudGFnKXtjYXNlIDU6bz0hMTticmVhayBlO2Nhc2UgMzpjYXNlIDQ6cj1yLmNvbnRhaW5lckluZm8sbz0hMDticmVhayBlfXU9dS5yZXR1cm59dT0hMH1pZig1PT09YS50YWd8fDY9PT1hLnRhZyl7ZTpmb3IodmFyIHM9ZSxsPWEsYz1uLGY9bDs7KWlmKHl1KHMsZixjKSxudWxsIT09Zi5jaGlsZCYmNCE9PWYudGFnKWYuY2hpbGQucmV0dXJuPWYsZj1mLmNoaWxkO2Vsc2V7aWYoZj09PWwpYnJlYWs7Zm9yKDtudWxsPT09Zi5zaWJsaW5nOyl7aWYobnVsbD09PWYucmV0dXJufHxmLnJldHVybj09PWwpYnJlYWsgZTtmPWYucmV0dXJufWYuc2libGluZy5yZXR1cm49Zi5yZXR1cm4sZj1mLnNpYmxpbmd9bz8ocz1yLGw9YS5zdGF0ZU5vZGUsOD09PXMubm9kZVR5cGU/cy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGwpOnMucmVtb3ZlQ2hpbGQobCkpOnIucmVtb3ZlQ2hpbGQoYS5zdGF0ZU5vZGUpfWVsc2UgaWYoND09PWEudGFnKXtpZihudWxsIT09YS5jaGlsZCl7cj1hLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLG89ITAsYS5jaGlsZC5yZXR1cm49YSxhPWEuY2hpbGQ7Y29udGludWV9fWVsc2UgaWYoeXUoZSxhLG4pLG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hLGE9YS5jaGlsZDtjb250aW51ZX1pZihhPT09dClicmVhaztmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fGEucmV0dXJuPT09dClyZXR1cm47ND09PShhPWEucmV0dXJuKS50YWcmJih1PSExKX1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuLGE9YS5zaWJsaW5nfX1mdW5jdGlvbiB3dShlLHQpe3N3aXRjaCh0LnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1Omh1KDQsOCx0KTticmVhaztjYXNlIDE6YnJlYWs7Y2FzZSA1OnZhciBuPXQuc3RhdGVOb2RlO2lmKG51bGwhPW4pe3ZhciByPXQubWVtb2l6ZWRQcm9wcyxvPW51bGwhPT1lP2UubWVtb2l6ZWRQcm9wczpyO2U9dC50eXBlO3ZhciBhPXQudXBkYXRlUXVldWU7aWYodC51cGRhdGVRdWV1ZT1udWxsLG51bGwhPT1hKXtmb3Iobltpcl09ciwiaW5wdXQiPT09ZSYmInJhZGlvIj09PXIudHlwZSYmbnVsbCE9ci5uYW1lJiZEZShuLHIpLHFuKGUsbyksdD1xbihlLHIpLG89MDtvPGEubGVuZ3RoO28rPTIpe3ZhciB1PWFbb10scz1hW28rMV07InN0eWxlIj09PXU/Qm4obixzKToiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09dT9WZShuLHMpOiJjaGlsZHJlbiI9PT11P1VlKG4scyk6RWUobix1LHMsdCl9c3dpdGNoKGUpe2Nhc2UiaW5wdXQiOlRlKG4scik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6SWUobixyKTticmVhaztjYXNlInNlbGVjdCI6dD1uLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUsbi5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhci5tdWx0aXBsZSxudWxsIT0oZT1yLnZhbHVlKT9qZShuLCEhci5tdWx0aXBsZSxlLCExKTp0IT09ISFyLm11bHRpcGxlJiYobnVsbCE9ci5kZWZhdWx0VmFsdWU/amUobiwhIXIubXVsdGlwbGUsci5kZWZhdWx0VmFsdWUsITApOmplKG4sISFyLm11bHRpcGxlLHIubXVsdGlwbGU/W106IiIsITEpKX19fWJyZWFrO2Nhc2UgNjppZihudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IoaSgxNjIpKTt0LnN0YXRlTm9kZS5ub2RlVmFsdWU9dC5tZW1vaXplZFByb3BzO2JyZWFrO2Nhc2UgMzoodD10LnN0YXRlTm9kZSkuaHlkcmF0ZSYmKHQuaHlkcmF0ZT0hMSx4dCh0LmNvbnRhaW5lckluZm8pKTticmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobj10LG51bGw9PT10Lm1lbW9pemVkU3RhdGU/cj0hMToocj0hMCxuPXQuY2hpbGQsenU9cW8oKSksbnVsbCE9PW4pZTpmb3IoZT1uOzspe2lmKDU9PT1lLnRhZylhPWUuc3RhdGVOb2RlLHI/ImZ1bmN0aW9uIj09dHlwZW9mKGE9YS5zdHlsZSkuc2V0UHJvcGVydHk/YS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsIm5vbmUiLCJpbXBvcnRhbnQiKTphLmRpc3BsYXk9Im5vbmUiOihhPWUuc3RhdGVOb2RlLG89bnVsbCE9KG89ZS5tZW1vaXplZFByb3BzLnN0eWxlKSYmby5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP28uZGlzcGxheTpudWxsLGEuc3R5bGUuZGlzcGxheT1GbigiZGlzcGxheSIsbykpO2Vsc2UgaWYoNj09PWUudGFnKWUuc3RhdGVOb2RlLm5vZGVWYWx1ZT1yPyIiOmUubWVtb2l6ZWRQcm9wcztlbHNle2lmKDEzPT09ZS50YWcmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJm51bGw9PT1lLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7KGE9ZS5jaGlsZC5zaWJsaW5nKS5yZXR1cm49ZSxlPWE7Y29udGludWV9aWYobnVsbCE9PWUuY2hpbGQpe2UuY2hpbGQucmV0dXJuPWUsZT1lLmNoaWxkO2NvbnRpbnVlfX1pZihlPT09bilicmVhayBlO2Zvcig7bnVsbD09PWUuc2libGluZzspe2lmKG51bGw9PT1lLnJldHVybnx8ZS5yZXR1cm49PT1uKWJyZWFrIGU7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfV91KHQpO2JyZWFrO2Nhc2UgMTk6X3UodCk7YnJlYWs7Y2FzZSAxNzpjYXNlIDIwOmNhc2UgMjE6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDE2MykpfX1mdW5jdGlvbiBfdShlKXt2YXIgdD1lLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT10KXtlLnVwZGF0ZVF1ZXVlPW51bGw7dmFyIG49ZS5zdGF0ZU5vZGU7bnVsbD09PW4mJihuPWUuc3RhdGVOb2RlPW5ldyBjdSksdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcj14cy5iaW5kKG51bGwsZSx0KTtuLmhhcyh0KXx8KG4uYWRkKHQpLHQudGhlbihyLHIpKX0pKX19dmFyIEV1PSJmdW5jdGlvbiI9PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIE91KGUsdCxuKXsobj1kYShuLG51bGwpKS50YWc9MyxuLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIHI9dC52YWx1ZTtyZXR1cm4gbi5jYWxsYmFjaz1mdW5jdGlvbigpe3F1fHwocXU9ITAsVnU9ciksZnUoZSx0KX0sbn1mdW5jdGlvbiBrdShlLHQsbil7KG49ZGEobixudWxsKSkudGFnPTM7dmFyIHI9ZS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcil7dmFyIG89dC52YWx1ZTtuLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnUoZSx0KSxyKG8pfX12YXIgYT1lLnN0YXRlTm9kZTtyZXR1cm4gbnVsbCE9PWEmJiJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudERpZENhdGNoJiYobi5jYWxsYmFjaz1mdW5jdGlvbigpeyJmdW5jdGlvbiIhPXR5cGVvZiByJiYobnVsbD09PVV1P1V1PW5ldyBTZXQoW3RoaXNdKTpVdS5hZGQodGhpcyksZnUoZSx0KSk7dmFyIG49dC5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKHQudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1uP246IiJ9KX0pLG59dmFyIEN1LHh1PU1hdGguY2VpbCxTdT1qLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsRHU9ai5SZWFjdEN1cnJlbnRPd25lcixUdT0wLE11PW51bGwsUHU9bnVsbCxOdT0wLGp1PTAsTHU9bnVsbCxSdT0xMDczNzQxODIzLEl1PTEwNzM3NDE4MjMsQXU9bnVsbCxGdT0wLEJ1PSExLHp1PTAsS3U9bnVsbCxxdT0hMSxWdT1udWxsLFV1PW51bGwsV3U9ITEsWXU9bnVsbCxIdT05MCxHdT1udWxsLFF1PTAsSnU9bnVsbCxadT0wO2Z1bmN0aW9uICR1KCl7cmV0dXJuIDAhPSg0OCZUdSk/MTA3Mzc0MTgyMS0ocW8oKS8xMHwwKTowIT09WnU/WnU6WnU9MTA3Mzc0MTgyMS0ocW8oKS8xMHwwKX1mdW5jdGlvbiBYdShlLHQsbil7aWYoMD09KDImKHQ9dC5tb2RlKSkpcmV0dXJuIDEwNzM3NDE4MjM7dmFyIHI9Vm8oKTtpZigwPT0oNCZ0KSlyZXR1cm4gOTk9PT1yPzEwNzM3NDE4MjM6MTA3Mzc0MTgyMjtpZigwIT0oMTYmVHUpKXJldHVybiBOdTtpZihudWxsIT09billPVpvKGUsMHxuLnRpbWVvdXRNc3x8NWUzLDI1MCk7ZWxzZSBzd2l0Y2gocil7Y2FzZSA5OTplPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA5ODplPVpvKGUsMTUwLDEwMCk7YnJlYWs7Y2FzZSA5NzpjYXNlIDk2OmU9Wm8oZSw1ZTMsMjUwKTticmVhaztjYXNlIDk1OmU9MjticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGkoMzI2KSl9cmV0dXJuIG51bGwhPT1NdSYmZT09PU51JiYtLWUsZX1mdW5jdGlvbiBlcyhlLHQpe2lmKDUwPFF1KXRocm93IFF1PTAsSnU9bnVsbCxFcnJvcihpKDE4NSkpO2lmKG51bGwhPT0oZT10cyhlLHQpKSl7dmFyIG49Vm8oKTsxMDczNzQxODIzPT09dD8wIT0oOCZUdSkmJjA9PSg0OCZUdSk/YXMoZSk6KHJzKGUpLDA9PT1UdSYmR28oKSk6cnMoZSksMD09KDQmVHUpfHw5OCE9PW4mJjk5IT09bnx8KG51bGw9PT1HdT9HdT1uZXcgTWFwKFtbZSx0XV0pOih2b2lkIDA9PT0obj1HdS5nZXQoZSkpfHxuPnQpJiZHdS5zZXQoZSx0KSl9fWZ1bmN0aW9uIHRzKGUsdCl7ZS5leHBpcmF0aW9uVGltZTx0JiYoZS5leHBpcmF0aW9uVGltZT10KTt2YXIgbj1lLmFsdGVybmF0ZTtudWxsIT09biYmbi5leHBpcmF0aW9uVGltZTx0JiYobi5leHBpcmF0aW9uVGltZT10KTt2YXIgcj1lLnJldHVybixvPW51bGw7aWYobnVsbD09PXImJjM9PT1lLnRhZylvPWUuc3RhdGVOb2RlO2Vsc2UgZm9yKDtudWxsIT09cjspe2lmKG49ci5hbHRlcm5hdGUsci5jaGlsZEV4cGlyYXRpb25UaW1lPHQmJihyLmNoaWxkRXhwaXJhdGlvblRpbWU9dCksbnVsbCE9PW4mJm4uY2hpbGRFeHBpcmF0aW9uVGltZTx0JiYobi5jaGlsZEV4cGlyYXRpb25UaW1lPXQpLG51bGw9PT1yLnJldHVybiYmMz09PXIudGFnKXtvPXIuc3RhdGVOb2RlO2JyZWFrfXI9ci5yZXR1cm59cmV0dXJuIG51bGwhPT1vJiYoTXU9PT1vJiYoZHModCksND09PWp1JiZCcyhvLE51KSksenMobyx0KSksb31mdW5jdGlvbiBucyhlKXt2YXIgdD1lLmxhc3RFeHBpcmVkVGltZTtyZXR1cm4gMCE9PXQ/dDpGcyhlLHQ9ZS5maXJzdFBlbmRpbmdUaW1lKT8odD1lLmxhc3RQaW5nZWRUaW1lKT4oZT1lLm5leHRLbm93blBlbmRpbmdMZXZlbCk/dDplOnR9ZnVuY3Rpb24gcnMoZSl7aWYoMCE9PWUubGFzdEV4cGlyZWRUaW1lKWUuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT0xMDczNzQxODIzLGUuY2FsbGJhY2tQcmlvcml0eT05OSxlLmNhbGxiYWNrTm9kZT1Ibyhhcy5iaW5kKG51bGwsZSkpO2Vsc2V7dmFyIHQ9bnMoZSksbj1lLmNhbGxiYWNrTm9kZTtpZigwPT09dCludWxsIT09biYmKGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPTAsZS5jYWxsYmFja1ByaW9yaXR5PTkwKTtlbHNle3ZhciByPSR1KCk7aWYoMTA3Mzc0MTgyMz09PXQ/cj05OToxPT09dHx8Mj09PXQ/cj05NTpyPTA+PShyPTEwKigxMDczNzQxODIxLXQpLTEwKigxMDczNzQxODIxLXIpKT85OToyNTA+PXI/OTg6NTI1MD49cj85Nzo5NSxudWxsIT09bil7dmFyIG89ZS5jYWxsYmFja1ByaW9yaXR5O2lmKGUuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT09PXQmJm8+PXIpcmV0dXJuO24hPT1JbyYmeG8obil9ZS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPXQsZS5jYWxsYmFja1ByaW9yaXR5PXIsdD0xMDczNzQxODIzPT09dD9Ibyhhcy5iaW5kKG51bGwsZSkpOllvKHIsb3MuYmluZChudWxsLGUpLHt0aW1lb3V0OjEwKigxMDczNzQxODIxLXQpLXFvKCl9KSxlLmNhbGxiYWNrTm9kZT10fX19ZnVuY3Rpb24gb3MoZSx0KXtpZihadT0wLHQpcmV0dXJuIEtzKGUsdD0kdSgpKSxycyhlKSxudWxsO3ZhciBuPW5zKGUpO2lmKDAhPT1uKXtpZih0PWUuY2FsbGJhY2tOb2RlLDAhPSg0OCZUdSkpdGhyb3cgRXJyb3IoaSgzMjcpKTtpZihfcygpLGU9PT1NdSYmbj09PU51fHxzcyhlLG4pLG51bGwhPT1QdSl7dmFyIHI9VHU7VHV8PTE2O2Zvcih2YXIgbz1jcygpOzspdHJ5e2hzKCk7YnJlYWt9Y2F0Y2godCl7bHMoZSx0KX1pZihyYSgpLFR1PXIsU3UuY3VycmVudD1vLDE9PT1qdSl0aHJvdyB0PUx1LHNzKGUsbiksQnMoZSxuKSxycyhlKSx0O2lmKG51bGw9PT1QdSlzd2l0Y2gobz1lLmZpbmlzaGVkV29yaz1lLmN1cnJlbnQuYWx0ZXJuYXRlLGUuZmluaXNoZWRFeHBpcmF0aW9uVGltZT1uLHI9anUsTXU9bnVsbCxyKXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKGkoMzQ1KSk7Y2FzZSAyOktzKGUsMjxuPzI6bik7YnJlYWs7Y2FzZSAzOmlmKEJzKGUsbiksbj09PShyPWUubGFzdFN1c3BlbmRlZFRpbWUpJiYoZS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9dnMobykpLDEwNzM3NDE4MjM9PT1SdSYmMTA8KG89enUrNTAwLXFvKCkpKXtpZihCdSl7dmFyIGE9ZS5sYXN0UGluZ2VkVGltZTtpZigwPT09YXx8YT49bil7ZS5sYXN0UGluZ2VkVGltZT1uLHNzKGUsbik7YnJlYWt9fWlmKDAhPT0oYT1ucyhlKSkmJmEhPT1uKWJyZWFrO2lmKDAhPT1yJiZyIT09bil7ZS5sYXN0UGluZ2VkVGltZT1yO2JyZWFrfWUudGltZW91dEhhbmRsZT1lcihncy5iaW5kKG51bGwsZSksbyk7YnJlYWt9Z3MoZSk7YnJlYWs7Y2FzZSA0OmlmKEJzKGUsbiksbj09PShyPWUubGFzdFN1c3BlbmRlZFRpbWUpJiYoZS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9dnMobykpLEJ1JiYoMD09PShvPWUubGFzdFBpbmdlZFRpbWUpfHxvPj1uKSl7ZS5sYXN0UGluZ2VkVGltZT1uLHNzKGUsbik7YnJlYWt9aWYoMCE9PShvPW5zKGUpKSYmbyE9PW4pYnJlYWs7aWYoMCE9PXImJnIhPT1uKXtlLmxhc3RQaW5nZWRUaW1lPXI7YnJlYWt9aWYoMTA3Mzc0MTgyMyE9PUl1P3I9MTAqKDEwNzM3NDE4MjEtSXUpLXFvKCk6MTA3Mzc0MTgyMz09PVJ1P3I9MDoocj0xMCooMTA3Mzc0MTgyMS1SdSktNWUzLDA+KHI9KG89cW8oKSktcikmJihyPTApLChuPTEwKigxMDczNzQxODIxLW4pLW8pPChyPSgxMjA+cj8xMjA6NDgwPnI/NDgwOjEwODA+cj8xMDgwOjE5MjA+cj8xOTIwOjNlMz5yPzNlMzo0MzIwPnI/NDMyMDoxOTYwKnh1KHIvMTk2MCkpLXIpJiYocj1uKSksMTA8cil7ZS50aW1lb3V0SGFuZGxlPWVyKGdzLmJpbmQobnVsbCxlKSxyKTticmVha31ncyhlKTticmVhaztjYXNlIDU6aWYoMTA3Mzc0MTgyMyE9PVJ1JiZudWxsIT09QXUpe2E9UnU7dmFyIHU9QXU7aWYoMD49KHI9MHx1LmJ1c3lNaW5EdXJhdGlvbk1zKT9yPTA6KG89MHx1LmJ1c3lEZWxheU1zLHI9KGE9cW8oKS0oMTAqKDEwNzM3NDE4MjEtYSktKDB8dS50aW1lb3V0TXN8fDVlMykpKTw9bz8wOm8rci1hKSwxMDxyKXtCcyhlLG4pLGUudGltZW91dEhhbmRsZT1lcihncy5iaW5kKG51bGwsZSkscik7YnJlYWt9fWdzKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSgzMjkpKX1pZihycyhlKSxlLmNhbGxiYWNrTm9kZT09PXQpcmV0dXJuIG9zLmJpbmQobnVsbCxlKX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gYXMoZSl7dmFyIHQ9ZS5sYXN0RXhwaXJlZFRpbWU7aWYodD0wIT09dD90OjEwNzM3NDE4MjMsZS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPT09dClncyhlKTtlbHNle2lmKDAhPSg0OCZUdSkpdGhyb3cgRXJyb3IoaSgzMjcpKTtpZihfcygpLGU9PT1NdSYmdD09PU51fHxzcyhlLHQpLG51bGwhPT1QdSl7dmFyIG49VHU7VHV8PTE2O2Zvcih2YXIgcj1jcygpOzspdHJ5e3BzKCk7YnJlYWt9Y2F0Y2godCl7bHMoZSx0KX1pZihyYSgpLFR1PW4sU3UuY3VycmVudD1yLDE9PT1qdSl0aHJvdyBuPUx1LHNzKGUsdCksQnMoZSx0KSxycyhlKSxuO2lmKG51bGwhPT1QdSl0aHJvdyBFcnJvcihpKDI2MSkpO2UuZmluaXNoZWRXb3JrPWUuY3VycmVudC5hbHRlcm5hdGUsZS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPXQsTXU9bnVsbCxncyhlKSxycyhlKX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gaXMoZSx0KXt2YXIgbj1UdTtUdXw9MTt0cnl7cmV0dXJuIGUodCl9ZmluYWxseXswPT09KFR1PW4pJiZHbygpfX1mdW5jdGlvbiB1cyhlLHQpe3ZhciBuPVR1O1R1Jj0tMixUdXw9ODt0cnl7cmV0dXJuIGUodCl9ZmluYWxseXswPT09KFR1PW4pJiZHbygpfX1mdW5jdGlvbiBzcyhlLHQpe2UuZmluaXNoZWRXb3JrPW51bGwsZS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPTA7dmFyIG49ZS50aW1lb3V0SGFuZGxlO2lmKC0xIT09biYmKGUudGltZW91dEhhbmRsZT0tMSx0cihuKSksbnVsbCE9PVB1KWZvcihuPVB1LnJldHVybjtudWxsIT09bjspe3ZhciByPW47c3dpdGNoKHIudGFnKXtjYXNlIDE6dmFyIG89ci50eXBlLmNoaWxkQ29udGV4dFR5cGVzO251bGwhPW8mJmdvKCk7YnJlYWs7Y2FzZSAzOkthKCksYm8oKTticmVhaztjYXNlIDU6VmEocik7YnJlYWs7Y2FzZSA0OkthKCk7YnJlYWs7Y2FzZSAxMzpjYXNlIDE5OmxvKFVhKTticmVhaztjYXNlIDEwOmFhKHIpfW49bi5yZXR1cm59TXU9ZSxQdT1OcyhlLmN1cnJlbnQsbnVsbCksTnU9dCxqdT0wLEx1PW51bGwsSXU9UnU9MTA3Mzc0MTgyMyxBdT1udWxsLEZ1PTAsQnU9ITF9ZnVuY3Rpb24gbHMoZSx0KXtmb3IoOzspe3RyeXtpZihyYSgpLGZpKCksbnVsbD09PVB1fHxudWxsPT09UHUucmV0dXJuKXJldHVybiBqdT0xLEx1PXQsbnVsbDtlOnt2YXIgbj1lLHI9UHUucmV0dXJuLG89UHUsYT10O2lmKHQ9TnUsby5lZmZlY3RUYWd8PTIwNDgsby5maXJzdEVmZmVjdD1vLmxhc3RFZmZlY3Q9bnVsbCxudWxsIT09YSYmIm9iamVjdCI9PXR5cGVvZiBhJiYiZnVuY3Rpb24iPT10eXBlb2YgYS50aGVuKXt2YXIgaT1hLHU9MCE9KDEmVWEuY3VycmVudCkscz1yO2Rve3ZhciBsO2lmKGw9MTM9PT1zLnRhZyl7dmFyIGM9cy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jKWw9bnVsbCE9PWMuZGVoeWRyYXRlZDtlbHNle3ZhciBmPXMubWVtb2l6ZWRQcm9wcztsPXZvaWQgMCE9PWYuZmFsbGJhY2smJighMCE9PWYudW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2t8fCF1KX19aWYobCl7dmFyIGQ9cy51cGRhdGVRdWV1ZTtpZihudWxsPT09ZCl7dmFyIHA9bmV3IFNldDtwLmFkZChpKSxzLnVwZGF0ZVF1ZXVlPXB9ZWxzZSBkLmFkZChpKTtpZigwPT0oMiZzLm1vZGUpKXtpZihzLmVmZmVjdFRhZ3w9NjQsby5lZmZlY3RUYWcmPS0yOTgxLDE9PT1vLnRhZylpZihudWxsPT09by5hbHRlcm5hdGUpby50YWc9MTc7ZWxzZXt2YXIgaD1kYSgxMDczNzQxODIzLG51bGwpO2gudGFnPTIsaGEobyxoKX1vLmV4cGlyYXRpb25UaW1lPTEwNzM3NDE4MjM7YnJlYWsgZX1hPXZvaWQgMCxvPXQ7dmFyIHk9bi5waW5nQ2FjaGU7aWYobnVsbD09PXk/KHk9bi5waW5nQ2FjaGU9bmV3IEV1LGE9bmV3IFNldCx5LnNldChpLGEpKTp2b2lkIDA9PT0oYT15LmdldChpKSkmJihhPW5ldyBTZXQseS5zZXQoaSxhKSksIWEuaGFzKG8pKXthLmFkZChvKTt2YXIgbT1Dcy5iaW5kKG51bGwsbixpLG8pO2kudGhlbihtLG0pfXMuZWZmZWN0VGFnfD00MDk2LHMuZXhwaXJhdGlvblRpbWU9dDticmVhayBlfXM9cy5yZXR1cm59d2hpbGUobnVsbCE9PXMpO2E9RXJyb3IoKFooby50eXBlKXx8IkEgUmVhY3QgY29tcG9uZW50IikrIiBzdXNwZW5kZWQgd2hpbGUgcmVuZGVyaW5nLCBidXQgbm8gZmFsbGJhY2sgVUkgd2FzIHNwZWNpZmllZC5cblxuQWRkIGEgPFN1c3BlbnNlIGZhbGxiYWNrPS4uLj4gY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgdHJlZSB0byBwcm92aWRlIGEgbG9hZGluZyBpbmRpY2F0b3Igb3IgcGxhY2Vob2xkZXIgdG8gZGlzcGxheS4iKyQobykpfTUhPT1qdSYmKGp1PTIpLGE9bHUoYSxvKSxzPXI7ZG97c3dpdGNoKHMudGFnKXtjYXNlIDM6aT1hLHMuZWZmZWN0VGFnfD00MDk2LHMuZXhwaXJhdGlvblRpbWU9dCx5YShzLE91KHMsaSx0KSk7YnJlYWsgZTtjYXNlIDE6aT1hO3ZhciB2PXMudHlwZSxnPXMuc3RhdGVOb2RlO2lmKDA9PSg2NCZzLmVmZmVjdFRhZykmJigiZnVuY3Rpb24iPT10eXBlb2Ygdi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT1nJiYiZnVuY3Rpb24iPT10eXBlb2YgZy5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1VdXx8IVV1LmhhcyhnKSkpKXtzLmVmZmVjdFRhZ3w9NDA5NixzLmV4cGlyYXRpb25UaW1lPXQseWEocyxrdShzLGksdCkpO2JyZWFrIGV9fXM9cy5yZXR1cm59d2hpbGUobnVsbCE9PXMpfVB1PW1zKFB1KX1jYXRjaChlKXt0PWU7Y29udGludWV9YnJlYWt9fWZ1bmN0aW9uIGNzKCl7dmFyIGU9U3UuY3VycmVudDtyZXR1cm4gU3UuY3VycmVudD1EaSxudWxsPT09ZT9EaTplfWZ1bmN0aW9uIGZzKGUsdCl7ZTxSdSYmMjxlJiYoUnU9ZSksbnVsbCE9PXQmJmU8SXUmJjI8ZSYmKEl1PWUsQXU9dCl9ZnVuY3Rpb24gZHMoZSl7ZT5GdSYmKEZ1PWUpfWZ1bmN0aW9uIHBzKCl7Zm9yKDtudWxsIT09UHU7KVB1PXlzKFB1KX1mdW5jdGlvbiBocygpe2Zvcig7bnVsbCE9PVB1JiYhU28oKTspUHU9eXMoUHUpfWZ1bmN0aW9uIHlzKGUpe3ZhciB0PUN1KGUuYWx0ZXJuYXRlLGUsTnUpO3JldHVybiBlLm1lbW9pemVkUHJvcHM9ZS5wZW5kaW5nUHJvcHMsbnVsbD09PXQmJih0PW1zKGUpKSxEdS5jdXJyZW50PW51bGwsdH1mdW5jdGlvbiBtcyhlKXtQdT1lO2Rve3ZhciB0PVB1LmFsdGVybmF0ZTtpZihlPVB1LnJldHVybiwwPT0oMjA0OCZQdS5lZmZlY3RUYWcpKXtlOnt2YXIgbj10LHI9TnUsYT0odD1QdSkucGVuZGluZ1Byb3BzO3N3aXRjaCh0LnRhZyl7Y2FzZSAyOmNhc2UgMTY6YnJlYWs7Y2FzZSAxNTpjYXNlIDA6YnJlYWs7Y2FzZSAxOnZvKHQudHlwZSkmJmdvKCk7YnJlYWs7Y2FzZSAzOkthKCksYm8oKSwoYT10LnN0YXRlTm9kZSkucGVuZGluZ0NvbnRleHQmJihhLmNvbnRleHQ9YS5wZW5kaW5nQ29udGV4dCxhLnBlbmRpbmdDb250ZXh0PW51bGwpLChudWxsPT09bnx8bnVsbD09PW4uY2hpbGQpJiZGaSh0KSYmaXUodCk7YnJlYWs7Y2FzZSA1OlZhKHQpLHI9QmEoRmEuY3VycmVudCk7dmFyIHU9dC50eXBlO2lmKG51bGwhPT1uJiZudWxsIT10LnN0YXRlTm9kZSkkaShuLHQsdSxhLHIpLG4ucmVmIT09dC5yZWYmJih0LmVmZmVjdFRhZ3w9MTI4KTtlbHNlIGlmKGEpe3ZhciBzPUJhKElhLmN1cnJlbnQpO2lmKEZpKHQpKXt2YXIgbD0oYT10KS5zdGF0ZU5vZGU7bj1hLnR5cGU7dmFyIGM9YS5tZW1vaXplZFByb3BzLGY9cjtzd2l0Y2gobFthcl09YSxsW2lyXT1jLHU9dm9pZCAwLHI9bCxuKXtjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOkNuKCJsb2FkIixyKTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjpmb3IobD0wO2w8ZXQubGVuZ3RoO2wrKylDbihldFtsXSxyKTticmVhaztjYXNlInNvdXJjZSI6Q24oImVycm9yIixyKTticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjpDbigiZXJyb3IiLHIpLENuKCJsb2FkIixyKTticmVhaztjYXNlImZvcm0iOkNuKCJyZXNldCIsciksQ24oInN1Ym1pdCIscik7YnJlYWs7Y2FzZSJkZXRhaWxzIjpDbigidG9nZ2xlIixyKTticmVhaztjYXNlImlucHV0IjpTZShyLGMpLENuKCJpbnZhbGlkIixyKSxWbihmLCJvbkNoYW5nZSIpO2JyZWFrO2Nhc2Uic2VsZWN0IjpyLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhYy5tdWx0aXBsZX0sQ24oImludmFsaWQiLHIpLFZuKGYsIm9uQ2hhbmdlIik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6UmUocixjKSxDbigiaW52YWxpZCIsciksVm4oZiwib25DaGFuZ2UiKX1mb3IodSBpbiBLbihuLGMpLGw9bnVsbCxjKWMuaGFzT3duUHJvcGVydHkodSkmJihzPWNbdV0sImNoaWxkcmVuIj09PXU/InN0cmluZyI9PXR5cGVvZiBzP3IudGV4dENvbnRlbnQhPT1zJiYobD1bImNoaWxkcmVuIixzXSk6Im51bWJlciI9PXR5cGVvZiBzJiZyLnRleHRDb250ZW50IT09IiIrcyYmKGw9WyJjaGlsZHJlbiIsIiIrc10pOnAuaGFzT3duUHJvcGVydHkodSkmJm51bGwhPXMmJlZuKGYsdSkpO3N3aXRjaChuKXtjYXNlImlucHV0IjprZShyKSxNZShyLGMsITApO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmtlKHIpLEFlKHIpO2JyZWFrO2Nhc2Uic2VsZWN0IjpjYXNlIm9wdGlvbiI6YnJlYWs7ZGVmYXVsdDoiZnVuY3Rpb24iPT10eXBlb2YgYy5vbkNsaWNrJiYoci5vbmNsaWNrPVVuKX11PWwsYS51cGRhdGVRdWV1ZT11LChhPW51bGwhPT11KSYmaXUodCl9ZWxzZXtuPXQsZj11LGM9YSxsPTk9PT1yLm5vZGVUeXBlP3I6ci5vd25lckRvY3VtZW50LHM9PT1GZSYmKHM9emUoZikpLHM9PT1GZT8ic2NyaXB0Ij09PWY/KChjPWwuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD0iPHNjcmlwdD48XC9zY3JpcHQ+IixsPWMucmVtb3ZlQ2hpbGQoYy5maXJzdENoaWxkKSk6InN0cmluZyI9PXR5cGVvZiBjLmlzP2w9bC5jcmVhdGVFbGVtZW50KGYse2lzOmMuaXN9KToobD1sLmNyZWF0ZUVsZW1lbnQoZiksInNlbGVjdCI9PT1mJiYoZj1sLGMubXVsdGlwbGU/Zi5tdWx0aXBsZT0hMDpjLnNpemUmJihmLnNpemU9Yy5zaXplKSkpOmw9bC5jcmVhdGVFbGVtZW50TlMocyxmKSwoYz1sKVthcl09bixjW2lyXT1hLFppKGMsdCksdC5zdGF0ZU5vZGU9Yzt2YXIgZD1yLGg9cW4oZj11LG49YSk7c3dpdGNoKGYpe2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6Y2FzZSJlbWJlZCI6Q24oImxvYWQiLGMpLHI9bjticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjpmb3Iocj0wO3I8ZXQubGVuZ3RoO3IrKylDbihldFtyXSxjKTtyPW47YnJlYWs7Y2FzZSJzb3VyY2UiOkNuKCJlcnJvciIsYykscj1uO2JyZWFrO2Nhc2UiaW1nIjpjYXNlImltYWdlIjpjYXNlImxpbmsiOkNuKCJlcnJvciIsYyksQ24oImxvYWQiLGMpLHI9bjticmVhaztjYXNlImZvcm0iOkNuKCJyZXNldCIsYyksQ24oInN1Ym1pdCIsYykscj1uO2JyZWFrO2Nhc2UiZGV0YWlscyI6Q24oInRvZ2dsZSIsYykscj1uO2JyZWFrO2Nhc2UiaW5wdXQiOlNlKGMsbikscj14ZShjLG4pLENuKCJpbnZhbGlkIixjKSxWbihkLCJvbkNoYW5nZSIpO2JyZWFrO2Nhc2Uib3B0aW9uIjpyPU5lKGMsbik7YnJlYWs7Y2FzZSJzZWxlY3QiOmMuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFuLm11bHRpcGxlfSxyPW8oe30sbix7dmFsdWU6dm9pZCAwfSksQ24oImludmFsaWQiLGMpLFZuKGQsIm9uQ2hhbmdlIik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6UmUoYyxuKSxyPUxlKGMsbiksQ24oImludmFsaWQiLGMpLFZuKGQsIm9uQ2hhbmdlIik7YnJlYWs7ZGVmYXVsdDpyPW59S24oZixyKSxsPXZvaWQgMCxzPWY7dmFyIHk9YyxtPXI7Zm9yKGwgaW4gbSlpZihtLmhhc093blByb3BlcnR5KGwpKXt2YXIgdj1tW2xdOyJzdHlsZSI9PT1sP0JuKHksdik6ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj09PWw/bnVsbCE9KHY9dj92Ll9faHRtbDp2b2lkIDApJiZWZSh5LHYpOiJjaGlsZHJlbiI9PT1sPyJzdHJpbmciPT10eXBlb2Ygdj8oInRleHRhcmVhIiE9PXN8fCIiIT09dikmJlVlKHksdik6Im51bWJlciI9PXR5cGVvZiB2JiZVZSh5LCIiK3YpOiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09bCYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT1sJiYiYXV0b0ZvY3VzIiE9PWwmJihwLmhhc093blByb3BlcnR5KGwpP251bGwhPXYmJlZuKGQsbCk6bnVsbCE9diYmRWUoeSxsLHYsaCkpfXN3aXRjaChmKXtjYXNlImlucHV0IjprZShjKSxNZShjLG4sITEpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmtlKGMpLEFlKGMpO2JyZWFrO2Nhc2Uib3B0aW9uIjpudWxsIT1uLnZhbHVlJiZjLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiK19lKG4udmFsdWUpKTticmVhaztjYXNlInNlbGVjdCI6KHI9YykubXVsdGlwbGU9ISFuLm11bHRpcGxlLG51bGwhPShjPW4udmFsdWUpP2plKHIsISFuLm11bHRpcGxlLGMsITEpOm51bGwhPW4uZGVmYXVsdFZhbHVlJiZqZShyLCEhbi5tdWx0aXBsZSxuLmRlZmF1bHRWYWx1ZSwhMCk7YnJlYWs7ZGVmYXVsdDoiZnVuY3Rpb24iPT10eXBlb2Ygci5vbkNsaWNrJiYoYy5vbmNsaWNrPVVuKX0oYT0kbih1LGEpKSYmaXUodCl9bnVsbCE9PXQucmVmJiYodC5lZmZlY3RUYWd8PTEyOCl9ZWxzZSBpZihudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IoaSgxNjYpKTticmVhaztjYXNlIDY6aWYobiYmbnVsbCE9dC5zdGF0ZU5vZGUpWGkoMCx0LG4ubWVtb2l6ZWRQcm9wcyxhKTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgYSYmbnVsbD09PXQuc3RhdGVOb2RlKXRocm93IEVycm9yKGkoMTY2KSk7cj1CYShGYS5jdXJyZW50KSxCYShJYS5jdXJyZW50KSxGaSh0KT8odT0oYT10KS5zdGF0ZU5vZGUscj1hLm1lbW9pemVkUHJvcHMsdVthcl09YSwoYT11Lm5vZGVWYWx1ZSE9PXIpJiZpdSh0KSk6KHU9dCwoYT0oOT09PXIubm9kZVR5cGU/cjpyLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGEpKVthcl09dSx0LnN0YXRlTm9kZT1hKX1icmVhaztjYXNlIDExOmJyZWFrO2Nhc2UgMTM6aWYobG8oVWEpLGE9dC5tZW1vaXplZFN0YXRlLDAhPSg2NCZ0LmVmZmVjdFRhZykpe3QuZXhwaXJhdGlvblRpbWU9cjticmVhayBlfWE9bnVsbCE9PWEsdT0hMSxudWxsPT09bj92b2lkIDAhPT10Lm1lbW9pemVkUHJvcHMuZmFsbGJhY2smJkZpKHQpOih1PW51bGwhPT0ocj1uLm1lbW9pemVkU3RhdGUpLGF8fG51bGw9PT1yfHxudWxsIT09KHI9bi5jaGlsZC5zaWJsaW5nKSYmKG51bGwhPT0oYz10LmZpcnN0RWZmZWN0KT8odC5maXJzdEVmZmVjdD1yLHIubmV4dEVmZmVjdD1jKToodC5maXJzdEVmZmVjdD10Lmxhc3RFZmZlY3Q9cixyLm5leHRFZmZlY3Q9bnVsbCksci5lZmZlY3RUYWc9OCkpLGEmJiF1JiYwIT0oMiZ0Lm1vZGUpJiYobnVsbD09PW4mJiEwIT09dC5tZW1vaXplZFByb3BzLnVuc3RhYmxlX2F2b2lkVGhpc0ZhbGxiYWNrfHwwIT0oMSZVYS5jdXJyZW50KT8wPT09anUmJihqdT0zKTooMCE9PWp1JiYzIT09anV8fChqdT00KSwwIT09RnUmJm51bGwhPT1NdSYmKEJzKE11LE51KSx6cyhNdSxGdSkpKSksKGF8fHUpJiYodC5lZmZlY3RUYWd8PTQpO2JyZWFrO2Nhc2UgNzpjYXNlIDg6Y2FzZSAxMjpicmVhaztjYXNlIDQ6S2EoKTticmVhaztjYXNlIDEwOmFhKHQpO2JyZWFrO2Nhc2UgOTpjYXNlIDE0OmJyZWFrO2Nhc2UgMTc6dm8odC50eXBlKSYmZ28oKTticmVhaztjYXNlIDE5OmlmKGxvKFVhKSxudWxsPT09KGE9dC5tZW1vaXplZFN0YXRlKSlicmVhaztpZih1PTAhPSg2NCZ0LmVmZmVjdFRhZyksbnVsbD09PShjPWEucmVuZGVyaW5nKSl7aWYodSl1dShhLCExKTtlbHNlIGlmKDAhPT1qdXx8bnVsbCE9PW4mJjAhPSg2NCZuLmVmZmVjdFRhZykpZm9yKG49dC5jaGlsZDtudWxsIT09bjspe2lmKG51bGwhPT0oYz1XYShuKSkpe2Zvcih0LmVmZmVjdFRhZ3w9NjQsdXUoYSwhMSksbnVsbCE9PSh1PWMudXBkYXRlUXVldWUpJiYodC51cGRhdGVRdWV1ZT11LHQuZWZmZWN0VGFnfD00KSxudWxsPT09YS5sYXN0RWZmZWN0JiYodC5maXJzdEVmZmVjdD1udWxsKSx0Lmxhc3RFZmZlY3Q9YS5sYXN0RWZmZWN0LGE9cix1PXQuY2hpbGQ7bnVsbCE9PXU7KW49YSwocj11KS5lZmZlY3RUYWcmPTIsci5uZXh0RWZmZWN0PW51bGwsci5maXJzdEVmZmVjdD1udWxsLHIubGFzdEVmZmVjdD1udWxsLG51bGw9PT0oYz1yLmFsdGVybmF0ZSk/KHIuY2hpbGRFeHBpcmF0aW9uVGltZT0wLHIuZXhwaXJhdGlvblRpbWU9bixyLmNoaWxkPW51bGwsci5tZW1vaXplZFByb3BzPW51bGwsci5tZW1vaXplZFN0YXRlPW51bGwsci51cGRhdGVRdWV1ZT1udWxsLHIuZGVwZW5kZW5jaWVzPW51bGwpOihyLmNoaWxkRXhwaXJhdGlvblRpbWU9Yy5jaGlsZEV4cGlyYXRpb25UaW1lLHIuZXhwaXJhdGlvblRpbWU9Yy5leHBpcmF0aW9uVGltZSxyLmNoaWxkPWMuY2hpbGQsci5tZW1vaXplZFByb3BzPWMubWVtb2l6ZWRQcm9wcyxyLm1lbW9pemVkU3RhdGU9Yy5tZW1vaXplZFN0YXRlLHIudXBkYXRlUXVldWU9Yy51cGRhdGVRdWV1ZSxuPWMuZGVwZW5kZW5jaWVzLHIuZGVwZW5kZW5jaWVzPW51bGw9PT1uP251bGw6e2V4cGlyYXRpb25UaW1lOm4uZXhwaXJhdGlvblRpbWUsZmlyc3RDb250ZXh0Om4uZmlyc3RDb250ZXh0LHJlc3BvbmRlcnM6bi5yZXNwb25kZXJzfSksdT11LnNpYmxpbmc7Y28oVWEsMSZVYS5jdXJyZW50fDIpLHQ9dC5jaGlsZDticmVhayBlfW49bi5zaWJsaW5nfX1lbHNle2lmKCF1KWlmKG51bGwhPT0obj1XYShjKSkpe2lmKHQuZWZmZWN0VGFnfD02NCx1PSEwLG51bGwhPT0ocj1uLnVwZGF0ZVF1ZXVlKSYmKHQudXBkYXRlUXVldWU9cix0LmVmZmVjdFRhZ3w9NCksdXUoYSwhMCksbnVsbD09PWEudGFpbCYmImhpZGRlbiI9PT1hLnRhaWxNb2RlJiYhYy5hbHRlcm5hdGUpe251bGwhPT0odD10Lmxhc3RFZmZlY3Q9YS5sYXN0RWZmZWN0KSYmKHQubmV4dEVmZmVjdD1udWxsKTticmVha319ZWxzZSBxbygpPmEudGFpbEV4cGlyYXRpb24mJjE8ciYmKHQuZWZmZWN0VGFnfD02NCx1PSEwLHV1KGEsITEpLHQuZXhwaXJhdGlvblRpbWU9dC5jaGlsZEV4cGlyYXRpb25UaW1lPXItMSk7YS5pc0JhY2t3YXJkcz8oYy5zaWJsaW5nPXQuY2hpbGQsdC5jaGlsZD1jKToobnVsbCE9PShyPWEubGFzdCk/ci5zaWJsaW5nPWM6dC5jaGlsZD1jLGEubGFzdD1jKX1pZihudWxsIT09YS50YWlsKXswPT09YS50YWlsRXhwaXJhdGlvbiYmKGEudGFpbEV4cGlyYXRpb249cW8oKSs1MDApLHI9YS50YWlsLGEucmVuZGVyaW5nPXIsYS50YWlsPXIuc2libGluZyxhLmxhc3RFZmZlY3Q9dC5sYXN0RWZmZWN0LHIuc2libGluZz1udWxsLGE9VWEuY3VycmVudCxjbyhVYSxhPXU/MSZhfDI6MSZhKSx0PXI7YnJlYWsgZX1icmVhaztjYXNlIDIwOmNhc2UgMjE6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDE1Nix0LnRhZykpfXQ9bnVsbH1pZihhPVB1LDE9PT1OdXx8MSE9PWEuY2hpbGRFeHBpcmF0aW9uVGltZSl7Zm9yKHU9MCxyPWEuY2hpbGQ7bnVsbCE9PXI7KShuPXIuZXhwaXJhdGlvblRpbWUpPnUmJih1PW4pLChjPXIuY2hpbGRFeHBpcmF0aW9uVGltZSk+dSYmKHU9Yykscj1yLnNpYmxpbmc7YS5jaGlsZEV4cGlyYXRpb25UaW1lPXV9aWYobnVsbCE9PXQpcmV0dXJuIHQ7bnVsbCE9PWUmJjA9PSgyMDQ4JmUuZWZmZWN0VGFnKSYmKG51bGw9PT1lLmZpcnN0RWZmZWN0JiYoZS5maXJzdEVmZmVjdD1QdS5maXJzdEVmZmVjdCksbnVsbCE9PVB1Lmxhc3RFZmZlY3QmJihudWxsIT09ZS5sYXN0RWZmZWN0JiYoZS5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9UHUuZmlyc3RFZmZlY3QpLGUubGFzdEVmZmVjdD1QdS5sYXN0RWZmZWN0KSwxPFB1LmVmZmVjdFRhZyYmKG51bGwhPT1lLmxhc3RFZmZlY3Q/ZS5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9UHU6ZS5maXJzdEVmZmVjdD1QdSxlLmxhc3RFZmZlY3Q9UHUpKX1lbHNle2lmKG51bGwhPT0odD1zdShQdSkpKXJldHVybiB0LmVmZmVjdFRhZyY9MjA0Nyx0O251bGwhPT1lJiYoZS5maXJzdEVmZmVjdD1lLmxhc3RFZmZlY3Q9bnVsbCxlLmVmZmVjdFRhZ3w9MjA0OCl9aWYobnVsbCE9PSh0PVB1LnNpYmxpbmcpKXJldHVybiB0O1B1PWV9d2hpbGUobnVsbCE9PVB1KTtyZXR1cm4gMD09PWp1JiYoanU9NSksbnVsbH1mdW5jdGlvbiB2cyhlKXt2YXIgdD1lLmV4cGlyYXRpb25UaW1lO3JldHVybiB0PihlPWUuY2hpbGRFeHBpcmF0aW9uVGltZSk/dDplfWZ1bmN0aW9uIGdzKGUpe3ZhciB0PVZvKCk7cmV0dXJuIFdvKDk5LGJzLmJpbmQobnVsbCxlLHQpKSxudWxsfWZ1bmN0aW9uIGJzKGUsdCl7ZG97X3MoKX13aGlsZShudWxsIT09WXUpO2lmKDAhPSg0OCZUdSkpdGhyb3cgRXJyb3IoaSgzMjcpKTt2YXIgbj1lLmZpbmlzaGVkV29yayxyPWUuZmluaXNoZWRFeHBpcmF0aW9uVGltZTtpZihudWxsPT09bilyZXR1cm4gbnVsbDtpZihlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRFeHBpcmF0aW9uVGltZT0wLG49PT1lLmN1cnJlbnQpdGhyb3cgRXJyb3IoaSgxNzcpKTtlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT0wLGUuY2FsbGJhY2tQcmlvcml0eT05MCxlLm5leHRLbm93blBlbmRpbmdMZXZlbD0wO3ZhciBvPXZzKG4pO2lmKGUuZmlyc3RQZW5kaW5nVGltZT1vLHI8PWUubGFzdFN1c3BlbmRlZFRpbWU/ZS5maXJzdFN1c3BlbmRlZFRpbWU9ZS5sYXN0U3VzcGVuZGVkVGltZT1lLm5leHRLbm93blBlbmRpbmdMZXZlbD0wOnI8PWUuZmlyc3RTdXNwZW5kZWRUaW1lJiYoZS5maXJzdFN1c3BlbmRlZFRpbWU9ci0xKSxyPD1lLmxhc3RQaW5nZWRUaW1lJiYoZS5sYXN0UGluZ2VkVGltZT0wKSxyPD1lLmxhc3RFeHBpcmVkVGltZSYmKGUubGFzdEV4cGlyZWRUaW1lPTApLGU9PT1NdSYmKFB1PU11PW51bGwsTnU9MCksMTxuLmVmZmVjdFRhZz9udWxsIT09bi5sYXN0RWZmZWN0PyhuLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1uLG89bi5maXJzdEVmZmVjdCk6bz1uOm89bi5maXJzdEVmZmVjdCxudWxsIT09byl7dmFyIGE9VHU7VHV8PTMyLER1LmN1cnJlbnQ9bnVsbCxKbj1rbjt2YXIgdT1HbigpO2lmKFFuKHUpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gdSl2YXIgcz17c3RhcnQ6dS5zZWxlY3Rpb25TdGFydCxlbmQ6dS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7dmFyIGw9KHM9KHM9dS5vd25lckRvY3VtZW50KSYmcy5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24mJnMuZ2V0U2VsZWN0aW9uKCk7aWYobCYmMCE9PWwucmFuZ2VDb3VudCl7cz1sLmFuY2hvck5vZGU7dmFyIGM9bC5hbmNob3JPZmZzZXQsZj1sLmZvY3VzTm9kZTtsPWwuZm9jdXNPZmZzZXQ7dHJ5e3Mubm9kZVR5cGUsZi5ub2RlVHlwZX1jYXRjaChlKXtzPW51bGw7YnJlYWsgZX12YXIgZD0wLHA9LTEsaD0tMSx5PTAsbT0wLHY9dSxnPW51bGw7dDpmb3IoOzspe2Zvcih2YXIgYjt2IT09c3x8MCE9PWMmJjMhPT12Lm5vZGVUeXBlfHwocD1kK2MpLHYhPT1mfHwwIT09bCYmMyE9PXYubm9kZVR5cGV8fChoPWQrbCksMz09PXYubm9kZVR5cGUmJihkKz12Lm5vZGVWYWx1ZS5sZW5ndGgpLG51bGwhPT0oYj12LmZpcnN0Q2hpbGQpOylnPXYsdj1iO2Zvcig7Oyl7aWYodj09PXUpYnJlYWsgdDtpZihnPT09cyYmKyt5PT09YyYmKHA9ZCksZz09PWYmJisrbT09PWwmJihoPWQpLG51bGwhPT0oYj12Lm5leHRTaWJsaW5nKSlicmVhaztnPSh2PWcpLnBhcmVudE5vZGV9dj1ifXM9LTE9PT1wfHwtMT09PWg/bnVsbDp7c3RhcnQ6cCxlbmQ6aH19ZWxzZSBzPW51bGx9cz1zfHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBzPW51bGw7Wm49e2ZvY3VzZWRFbGVtOnUsc2VsZWN0aW9uUmFuZ2U6c30sa249ITEsS3U9bztkb3t0cnl7d3MoKX1jYXRjaChlKXtpZihudWxsPT09S3UpdGhyb3cgRXJyb3IoaSgzMzApKTtrcyhLdSxlKSxLdT1LdS5uZXh0RWZmZWN0fX13aGlsZShudWxsIT09S3UpO0t1PW87ZG97dHJ5e2Zvcih1PWUscz10O251bGwhPT1LdTspe3ZhciB3PUt1LmVmZmVjdFRhZztpZigxNiZ3JiZVZShLdS5zdGF0ZU5vZGUsIiIpLDEyOCZ3KXt2YXIgXz1LdS5hbHRlcm5hdGU7aWYobnVsbCE9PV8pe3ZhciBFPV8ucmVmO251bGwhPT1FJiYoImZ1bmN0aW9uIj09dHlwZW9mIEU/RShudWxsKTpFLmN1cnJlbnQ9bnVsbCl9fXN3aXRjaCgxMDM4Jncpe2Nhc2UgMjpndShLdSksS3UuZWZmZWN0VGFnJj0tMzticmVhaztjYXNlIDY6Z3UoS3UpLEt1LmVmZmVjdFRhZyY9LTMsd3UoS3UuYWx0ZXJuYXRlLEt1KTticmVhaztjYXNlIDEwMjQ6S3UuZWZmZWN0VGFnJj0tMTAyNTticmVhaztjYXNlIDEwMjg6S3UuZWZmZWN0VGFnJj0tMTAyNSx3dShLdS5hbHRlcm5hdGUsS3UpO2JyZWFrO2Nhc2UgNDp3dShLdS5hbHRlcm5hdGUsS3UpO2JyZWFrO2Nhc2UgODpidSh1LGM9S3UscyksbXUoYyl9S3U9S3UubmV4dEVmZmVjdH19Y2F0Y2goZSl7aWYobnVsbD09PUt1KXRocm93IEVycm9yKGkoMzMwKSk7a3MoS3UsZSksS3U9S3UubmV4dEVmZmVjdH19d2hpbGUobnVsbCE9PUt1KTtpZihFPVpuLF89R24oKSx3PUUuZm9jdXNlZEVsZW0scz1FLnNlbGVjdGlvblJhbmdlLF8hPT13JiZ3JiZ3Lm93bmVyRG9jdW1lbnQmJmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4hKCF0fHwhbikmJih0PT09bnx8KCF0fHwzIT09dC5ub2RlVHlwZSkmJihuJiYzPT09bi5ub2RlVHlwZT9lKHQsbi5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gdD90LmNvbnRhaW5zKG4pOiEhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuKSkpKX0ody5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx3KSl7bnVsbCE9PXMmJlFuKHcpJiYoXz1zLnN0YXJ0LHZvaWQgMD09PShFPXMuZW5kKSYmKEU9XyksInNlbGVjdGlvblN0YXJ0ImluIHc/KHcuc2VsZWN0aW9uU3RhcnQ9Xyx3LnNlbGVjdGlvbkVuZD1NYXRoLm1pbihFLHcudmFsdWUubGVuZ3RoKSk6KEU9KF89dy5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJl8uZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uJiYoRT1FLmdldFNlbGVjdGlvbigpLGM9dy50ZXh0Q29udGVudC5sZW5ndGgsdT1NYXRoLm1pbihzLnN0YXJ0LGMpLHM9dm9pZCAwPT09cy5lbmQ/dTpNYXRoLm1pbihzLmVuZCxjKSwhRS5leHRlbmQmJnU+cyYmKGM9cyxzPXUsdT1jKSxjPUhuKHcsdSksZj1Ibih3LHMpLGMmJmYmJigxIT09RS5yYW5nZUNvdW50fHxFLmFuY2hvck5vZGUhPT1jLm5vZGV8fEUuYW5jaG9yT2Zmc2V0IT09Yy5vZmZzZXR8fEUuZm9jdXNOb2RlIT09Zi5ub2RlfHxFLmZvY3VzT2Zmc2V0IT09Zi5vZmZzZXQpJiYoKF89Xy5jcmVhdGVSYW5nZSgpKS5zZXRTdGFydChjLm5vZGUsYy5vZmZzZXQpLEUucmVtb3ZlQWxsUmFuZ2VzKCksdT5zPyhFLmFkZFJhbmdlKF8pLEUuZXh0ZW5kKGYubm9kZSxmLm9mZnNldCkpOihfLnNldEVuZChmLm5vZGUsZi5vZmZzZXQpLEUuYWRkUmFuZ2UoXykpKSkpLF89W107Zm9yKEU9dztFPUUucGFyZW50Tm9kZTspMT09PUUubm9kZVR5cGUmJl8ucHVzaCh7ZWxlbWVudDpFLGxlZnQ6RS5zY3JvbGxMZWZ0LHRvcDpFLnNjcm9sbFRvcH0pO2ZvcigiZnVuY3Rpb24iPT10eXBlb2Ygdy5mb2N1cyYmdy5mb2N1cygpLHc9MDt3PF8ubGVuZ3RoO3crKykoRT1fW3ddKS5lbGVtZW50LnNjcm9sbExlZnQ9RS5sZWZ0LEUuZWxlbWVudC5zY3JvbGxUb3A9RS50b3B9Wm49bnVsbCxrbj0hIUpuLEpuPW51bGwsZS5jdXJyZW50PW4sS3U9bztkb3t0cnl7Zm9yKHc9cjtudWxsIT09S3U7KXt2YXIgTz1LdS5lZmZlY3RUYWc7aWYoMzYmTyl7dmFyIGs9S3UuYWx0ZXJuYXRlO3N3aXRjaChFPXcsKF89S3UpLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpodSgxNiwzMixfKTticmVhaztjYXNlIDE6dmFyIEM9Xy5zdGF0ZU5vZGU7aWYoNCZfLmVmZmVjdFRhZylpZihudWxsPT09aylDLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgeD1fLmVsZW1lbnRUeXBlPT09Xy50eXBlP2subWVtb2l6ZWRQcm9wczokbyhfLnR5cGUsay5tZW1vaXplZFByb3BzKTtDLmNvbXBvbmVudERpZFVwZGF0ZSh4LGsubWVtb2l6ZWRTdGF0ZSxDLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX12YXIgUz1fLnVwZGF0ZVF1ZXVlO251bGwhPT1TJiZiYSgwLFMsQyk7YnJlYWs7Y2FzZSAzOnZhciBEPV8udXBkYXRlUXVldWU7aWYobnVsbCE9PUQpe2lmKHU9bnVsbCxudWxsIT09Xy5jaGlsZClzd2l0Y2goXy5jaGlsZC50YWcpe2Nhc2UgNTp1PV8uY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTp1PV8uY2hpbGQuc3RhdGVOb2RlfWJhKDAsRCx1KX1icmVhaztjYXNlIDU6dmFyIFQ9Xy5zdGF0ZU5vZGU7bnVsbD09PWsmJjQmXy5lZmZlY3RUYWcmJiRuKF8udHlwZSxfLm1lbW9pemVkUHJvcHMpJiZULmZvY3VzKCk7YnJlYWs7Y2FzZSA2OmNhc2UgNDpjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobnVsbD09PV8ubWVtb2l6ZWRTdGF0ZSl7dmFyIE09Xy5hbHRlcm5hdGU7aWYobnVsbCE9PU0pe3ZhciBQPU0ubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09UCl7dmFyIE49UC5kZWh5ZHJhdGVkO251bGwhPT1OJiZ4dChOKX19fWJyZWFrO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIwOmNhc2UgMjE6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDE2MykpfX1pZigxMjgmTyl7Xz12b2lkIDA7dmFyIGo9S3UucmVmO2lmKG51bGwhPT1qKXt2YXIgTD1LdS5zdGF0ZU5vZGU7c3dpdGNoKEt1LnRhZyl7Y2FzZSA1Ol89TDticmVhaztkZWZhdWx0Ol89TH0iZnVuY3Rpb24iPT10eXBlb2Ygaj9qKF8pOmouY3VycmVudD1ffX1LdT1LdS5uZXh0RWZmZWN0fX1jYXRjaChlKXtpZihudWxsPT09S3UpdGhyb3cgRXJyb3IoaSgzMzApKTtrcyhLdSxlKSxLdT1LdS5uZXh0RWZmZWN0fX13aGlsZShudWxsIT09S3UpO0t1PW51bGwsQW8oKSxUdT1hfWVsc2UgZS5jdXJyZW50PW47aWYoV3UpV3U9ITEsWXU9ZSxIdT10O2Vsc2UgZm9yKEt1PW87bnVsbCE9PUt1Oyl0PUt1Lm5leHRFZmZlY3QsS3UubmV4dEVmZmVjdD1udWxsLEt1PXQ7aWYoMD09PSh0PWUuZmlyc3RQZW5kaW5nVGltZSkmJihVdT1udWxsKSwxMDczNzQxODIzPT09dD9lPT09SnU/UXUrKzooUXU9MCxKdT1lKTpRdT0wLCJmdW5jdGlvbiI9PXR5cGVvZiBTcyYmU3Mobi5zdGF0ZU5vZGUscikscnMoZSkscXUpdGhyb3cgcXU9ITEsZT1WdSxWdT1udWxsLGU7cmV0dXJuIDAhPSg4JlR1KT9udWxsOihHbygpLG51bGwpfWZ1bmN0aW9uIHdzKCl7Zm9yKDtudWxsIT09S3U7KXt2YXIgZT1LdS5lZmZlY3RUYWc7MCE9KDI1NiZlKSYmcHUoS3UuYWx0ZXJuYXRlLEt1KSwwPT0oNTEyJmUpfHxXdXx8KFd1PSEwLFlvKDk3LChmdW5jdGlvbigpe3JldHVybiBfcygpLG51bGx9KSkpLEt1PUt1Lm5leHRFZmZlY3R9fWZ1bmN0aW9uIF9zKCl7aWYoOTAhPT1IdSl7dmFyIGU9OTc8SHU/OTc6SHU7cmV0dXJuIEh1PTkwLFdvKGUsRXMpfX1mdW5jdGlvbiBFcygpe2lmKG51bGw9PT1ZdSlyZXR1cm4hMTt2YXIgZT1ZdTtpZihZdT1udWxsLDAhPSg0OCZUdSkpdGhyb3cgRXJyb3IoaSgzMzEpKTt2YXIgdD1UdTtmb3IoVHV8PTMyLGU9ZS5jdXJyZW50LmZpcnN0RWZmZWN0O251bGwhPT1lOyl7dHJ5e3ZhciBuPWU7aWYoMCE9KDUxMiZuLmVmZmVjdFRhZykpc3dpdGNoKG4udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1Omh1KDEyOCwwLG4pLGh1KDAsNjQsbil9fWNhdGNoKHQpe2lmKG51bGw9PT1lKXRocm93IEVycm9yKGkoMzMwKSk7a3MoZSx0KX1uPWUubmV4dEVmZmVjdCxlLm5leHRFZmZlY3Q9bnVsbCxlPW59cmV0dXJuIFR1PXQsR28oKSwhMH1mdW5jdGlvbiBPcyhlLHQsbil7aGEoZSx0PU91KGUsdD1sdShuLHQpLDEwNzM3NDE4MjMpKSxudWxsIT09KGU9dHMoZSwxMDczNzQxODIzKSkmJnJzKGUpfWZ1bmN0aW9uIGtzKGUsdCl7aWYoMz09PWUudGFnKU9zKGUsZSx0KTtlbHNlIGZvcih2YXIgbj1lLnJldHVybjtudWxsIT09bjspe2lmKDM9PT1uLnRhZyl7T3MobixlLHQpO2JyZWFrfWlmKDE9PT1uLnRhZyl7dmFyIHI9bi5zdGF0ZU5vZGU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4udHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fCJmdW5jdGlvbiI9PXR5cGVvZiByLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PVV1fHwhVXUuaGFzKHIpKSl7aGEobixlPWt1KG4sZT1sdSh0LGUpLDEwNzM3NDE4MjMpKSxudWxsIT09KG49dHMobiwxMDczNzQxODIzKSkmJnJzKG4pO2JyZWFrfX1uPW4ucmV0dXJufX1mdW5jdGlvbiBDcyhlLHQsbil7dmFyIHI9ZS5waW5nQ2FjaGU7bnVsbCE9PXImJnIuZGVsZXRlKHQpLE11PT09ZSYmTnU9PT1uPzQ9PT1qdXx8Mz09PWp1JiYxMDczNzQxODIzPT09UnUmJnFvKCktenU8NTAwP3NzKGUsTnUpOkJ1PSEwOkZzKGUsbikmJigwIT09KHQ9ZS5sYXN0UGluZ2VkVGltZSkmJnQ8bnx8KGUubGFzdFBpbmdlZFRpbWU9bixlLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU9PT1uJiYoZS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPTAsZS5maW5pc2hlZFdvcms9bnVsbCkscnMoZSkpKX1mdW5jdGlvbiB4cyhlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO251bGwhPT1uJiZuLmRlbGV0ZSh0KSwwPT09KHQ9MCkmJih0PVh1KHQ9JHUoKSxlLG51bGwpKSxudWxsIT09KGU9dHMoZSx0KSkmJnJzKGUpfUN1PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LmV4cGlyYXRpb25UaW1lO2lmKG51bGwhPT1lKXt2YXIgbz10LnBlbmRpbmdQcm9wcztpZihlLm1lbW9pemVkUHJvcHMhPT1vfHxoby5jdXJyZW50KUtpPSEwO2Vsc2V7aWYocjxuKXtzd2l0Y2goS2k9ITEsdC50YWcpe2Nhc2UgMzpKaSh0KSxCaSgpO2JyZWFrO2Nhc2UgNTppZihxYSh0KSw0JnQubW9kZSYmMSE9PW4mJm8uaGlkZGVuKXJldHVybiB0LmV4cGlyYXRpb25UaW1lPXQuY2hpbGRFeHBpcmF0aW9uVGltZT0xLG51bGw7YnJlYWs7Y2FzZSAxOnZvKHQudHlwZSkmJkVvKHQpO2JyZWFrO2Nhc2UgNDp6YSh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6b2EodCx0Lm1lbW9pemVkUHJvcHMudmFsdWUpO2JyZWFrO2Nhc2UgMTM6aWYobnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gMCE9PShyPXQuY2hpbGQuY2hpbGRFeHBpcmF0aW9uVGltZSkmJnI+PW4/dHUoZSx0LG4pOihjbyhVYSwxJlVhLmN1cnJlbnQpLG51bGwhPT0odD1hdShlLHQsbikpP3Quc2libGluZzpudWxsKTtjbyhVYSwxJlVhLmN1cnJlbnQpO2JyZWFrO2Nhc2UgMTk6aWYocj10LmNoaWxkRXhwaXJhdGlvblRpbWU+PW4sMCE9KDY0JmUuZWZmZWN0VGFnKSl7aWYocilyZXR1cm4gb3UoZSx0LG4pO3QuZWZmZWN0VGFnfD02NH1pZihudWxsIT09KG89dC5tZW1vaXplZFN0YXRlKSYmKG8ucmVuZGVyaW5nPW51bGwsby50YWlsPW51bGwpLGNvKFVhLFVhLmN1cnJlbnQpLCFyKXJldHVybiBudWxsfXJldHVybiBhdShlLHQsbil9S2k9ITF9fWVsc2UgS2k9ITE7c3dpdGNoKHQuZXhwaXJhdGlvblRpbWU9MCx0LnRhZyl7Y2FzZSAyOmlmKHI9dC50eXBlLG51bGwhPT1lJiYoZS5hbHRlcm5hdGU9bnVsbCx0LmFsdGVybmF0ZT1udWxsLHQuZWZmZWN0VGFnfD0yKSxlPXQucGVuZGluZ1Byb3BzLG89bW8odCxwby5jdXJyZW50KSx1YSh0LG4pLG89Y2kobnVsbCx0LHIsZSxvLG4pLHQuZWZmZWN0VGFnfD0xLCJvYmplY3QiPT10eXBlb2YgbyYmbnVsbCE9PW8mJiJmdW5jdGlvbiI9PXR5cGVvZiBvLnJlbmRlciYmdm9pZCAwPT09by4kJHR5cGVvZil7aWYodC50YWc9MSxmaSgpLHZvKHIpKXt2YXIgYT0hMDtFbyh0KX1lbHNlIGE9ITE7dC5tZW1vaXplZFN0YXRlPW51bGwhPT1vLnN0YXRlJiZ2b2lkIDAhPT1vLnN0YXRlP28uc3RhdGU6bnVsbDt2YXIgdT1yLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczsiZnVuY3Rpb24iPT10eXBlb2YgdSYmT2EodCxyLHUsZSksby51cGRhdGVyPWthLHQuc3RhdGVOb2RlPW8sby5fcmVhY3RJbnRlcm5hbEZpYmVyPXQsRGEodCxyLGUsbiksdD1RaShudWxsLHQsciwhMCxhLG4pfWVsc2UgdC50YWc9MCxxaShudWxsLHQsbyxuKSx0PXQuY2hpbGQ7cmV0dXJuIHQ7Y2FzZSAxNjppZihvPXQuZWxlbWVudFR5cGUsbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLGU9dC5wZW5kaW5nUHJvcHMsZnVuY3Rpb24oZSl7aWYoLTE9PT1lLl9zdGF0dXMpe2UuX3N0YXR1cz0wO3ZhciB0PWUuX2N0b3I7dD10KCksZS5fcmVzdWx0PXQsdC50aGVuKChmdW5jdGlvbih0KXswPT09ZS5fc3RhdHVzJiYodD10LmRlZmF1bHQsZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSksKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MixlLl9yZXN1bHQ9dCl9KSl9fShvKSwxIT09by5fc3RhdHVzKXRocm93IG8uX3Jlc3VsdDtzd2l0Y2gobz1vLl9yZXN1bHQsdC50eXBlPW8sYT10LnRhZz1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gUHMoZSk/MTowO2lmKG51bGwhPWUpe2lmKChlPWUuJCR0eXBlb2YpPT09VSlyZXR1cm4gMTE7aWYoZT09PUgpcmV0dXJuIDE0fXJldHVybiAyfShvKSxlPSRvKG8sZSksYSl7Y2FzZSAwOnQ9SGkobnVsbCx0LG8sZSxuKTticmVhaztjYXNlIDE6dD1HaShudWxsLHQsbyxlLG4pO2JyZWFrO2Nhc2UgMTE6dD1WaShudWxsLHQsbyxlLG4pO2JyZWFrO2Nhc2UgMTQ6dD1VaShudWxsLHQsbywkbyhvLnR5cGUsZSkscixuKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGkoMzA2LG8sIiIpKX1yZXR1cm4gdDtjYXNlIDA6cmV0dXJuIHI9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsSGkoZSx0LHIsbz10LmVsZW1lbnRUeXBlPT09cj9vOiRvKHIsbyksbik7Y2FzZSAxOnJldHVybiByPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLEdpKGUsdCxyLG89dC5lbGVtZW50VHlwZT09PXI/bzokbyhyLG8pLG4pO2Nhc2UgMzppZihKaSh0KSxudWxsPT09KHI9dC51cGRhdGVRdWV1ZSkpdGhyb3cgRXJyb3IoaSgyODIpKTtpZihvPW51bGwhPT0obz10Lm1lbW9pemVkU3RhdGUpP28uZWxlbWVudDpudWxsLGdhKHQscix0LnBlbmRpbmdQcm9wcyxudWxsLG4pLChyPXQubWVtb2l6ZWRTdGF0ZS5lbGVtZW50KT09PW8pQmkoKSx0PWF1KGUsdCxuKTtlbHNle2lmKChvPXQuc3RhdGVOb2RlLmh5ZHJhdGUpJiYoTmk9bnIodC5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSxQaT10LG89amk9ITApLG8pZm9yKG49TGEodCxudWxsLHIsbiksdC5jaGlsZD1uO247KW4uZWZmZWN0VGFnPS0zJm4uZWZmZWN0VGFnfDEwMjQsbj1uLnNpYmxpbmc7ZWxzZSBxaShlLHQscixuKSxCaSgpO3Q9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDU6cmV0dXJuIHFhKHQpLG51bGw9PT1lJiZJaSh0KSxyPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLGE9bnVsbCE9PWU/ZS5tZW1vaXplZFByb3BzOm51bGwsdT1vLmNoaWxkcmVuLFhuKHIsbyk/dT1udWxsOm51bGwhPT1hJiZYbihyLGEpJiYodC5lZmZlY3RUYWd8PTE2KSxZaShlLHQpLDQmdC5tb2RlJiYxIT09biYmby5oaWRkZW4/KHQuZXhwaXJhdGlvblRpbWU9dC5jaGlsZEV4cGlyYXRpb25UaW1lPTEsdD1udWxsKToocWkoZSx0LHUsbiksdD10LmNoaWxkKSx0O2Nhc2UgNjpyZXR1cm4gbnVsbD09PWUmJklpKHQpLG51bGw7Y2FzZSAxMzpyZXR1cm4gdHUoZSx0LG4pO2Nhc2UgNDpyZXR1cm4gemEodCx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxyPXQucGVuZGluZ1Byb3BzLG51bGw9PT1lP3QuY2hpbGQ9amEodCxudWxsLHIsbik6cWkoZSx0LHIsbiksdC5jaGlsZDtjYXNlIDExOnJldHVybiByPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLFZpKGUsdCxyLG89dC5lbGVtZW50VHlwZT09PXI/bzokbyhyLG8pLG4pO2Nhc2UgNzpyZXR1cm4gcWkoZSx0LHQucGVuZGluZ1Byb3BzLG4pLHQuY2hpbGQ7Y2FzZSA4OmNhc2UgMTI6cmV0dXJuIHFpKGUsdCx0LnBlbmRpbmdQcm9wcy5jaGlsZHJlbixuKSx0LmNoaWxkO2Nhc2UgMTA6ZTp7aWYocj10LnR5cGUuX2NvbnRleHQsbz10LnBlbmRpbmdQcm9wcyx1PXQubWVtb2l6ZWRQcm9wcyxvYSh0LGE9by52YWx1ZSksbnVsbCE9PXUpe3ZhciBzPXUudmFsdWU7aWYoMD09PShhPUpyKHMsYSk/MDowfCgiZnVuY3Rpb24iPT10eXBlb2Ygci5fY2FsY3VsYXRlQ2hhbmdlZEJpdHM/ci5fY2FsY3VsYXRlQ2hhbmdlZEJpdHMocyxhKToxMDczNzQxODIzKSkpe2lmKHUuY2hpbGRyZW49PT1vLmNoaWxkcmVuJiYhaG8uY3VycmVudCl7dD1hdShlLHQsbik7YnJlYWsgZX19ZWxzZSBmb3IobnVsbCE9PShzPXQuY2hpbGQpJiYocy5yZXR1cm49dCk7bnVsbCE9PXM7KXt2YXIgbD1zLmRlcGVuZGVuY2llcztpZihudWxsIT09bCl7dT1zLmNoaWxkO2Zvcih2YXIgYz1sLmZpcnN0Q29udGV4dDtudWxsIT09Yzspe2lmKGMuY29udGV4dD09PXImJjAhPShjLm9ic2VydmVkQml0cyZhKSl7MT09PXMudGFnJiYoKGM9ZGEobixudWxsKSkudGFnPTIsaGEocyxjKSkscy5leHBpcmF0aW9uVGltZTxuJiYocy5leHBpcmF0aW9uVGltZT1uKSxudWxsIT09KGM9cy5hbHRlcm5hdGUpJiZjLmV4cGlyYXRpb25UaW1lPG4mJihjLmV4cGlyYXRpb25UaW1lPW4pLGlhKHMucmV0dXJuLG4pLGwuZXhwaXJhdGlvblRpbWU8biYmKGwuZXhwaXJhdGlvblRpbWU9bik7YnJlYWt9Yz1jLm5leHR9fWVsc2UgdT0xMD09PXMudGFnJiZzLnR5cGU9PT10LnR5cGU/bnVsbDpzLmNoaWxkO2lmKG51bGwhPT11KXUucmV0dXJuPXM7ZWxzZSBmb3IodT1zO251bGwhPT11Oyl7aWYodT09PXQpe3U9bnVsbDticmVha31pZihudWxsIT09KHM9dS5zaWJsaW5nKSl7cy5yZXR1cm49dS5yZXR1cm4sdT1zO2JyZWFrfXU9dS5yZXR1cm59cz11fX1xaShlLHQsby5jaGlsZHJlbixuKSx0PXQuY2hpbGR9cmV0dXJuIHQ7Y2FzZSA5OnJldHVybiBvPXQudHlwZSxyPShhPXQucGVuZGluZ1Byb3BzKS5jaGlsZHJlbix1YSh0LG4pLHI9cihvPXNhKG8sYS51bnN0YWJsZV9vYnNlcnZlZEJpdHMpKSx0LmVmZmVjdFRhZ3w9MSxxaShlLHQscixuKSx0LmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGE9JG8obz10LnR5cGUsdC5wZW5kaW5nUHJvcHMpLFVpKGUsdCxvLGE9JG8oby50eXBlLGEpLHIsbik7Y2FzZSAxNTpyZXR1cm4gV2koZSx0LHQudHlwZSx0LnBlbmRpbmdQcm9wcyxyLG4pO2Nhc2UgMTc6cmV0dXJuIHI9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsbz10LmVsZW1lbnRUeXBlPT09cj9vOiRvKHIsbyksbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLHQudGFnPTEsdm8ocik/KGU9ITAsRW8odCkpOmU9ITEsdWEodCxuKSx4YSh0LHIsbyksRGEodCxyLG8sbiksUWkobnVsbCx0LHIsITAsZSxuKTtjYXNlIDE5OnJldHVybiBvdShlLHQsbil9dGhyb3cgRXJyb3IoaSgxNTYsdC50YWcpKX07dmFyIFNzPW51bGwsRHM9bnVsbDtmdW5jdGlvbiBUcyhlLHQsbixyKXt0aGlzLnRhZz1lLHRoaXMua2V5PW4sdGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbCx0aGlzLmluZGV4PTAsdGhpcy5yZWY9bnVsbCx0aGlzLnBlbmRpbmdQcm9wcz10LHRoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsLHRoaXMubW9kZT1yLHRoaXMuZWZmZWN0VGFnPTAsdGhpcy5sYXN0RWZmZWN0PXRoaXMuZmlyc3RFZmZlY3Q9dGhpcy5uZXh0RWZmZWN0PW51bGwsdGhpcy5jaGlsZEV4cGlyYXRpb25UaW1lPXRoaXMuZXhwaXJhdGlvblRpbWU9MCx0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIE1zKGUsdCxuLHIpe3JldHVybiBuZXcgVHMoZSx0LG4scil9ZnVuY3Rpb24gUHMoZSl7cmV0dXJuISghKGU9ZS5wcm90b3R5cGUpfHwhZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBOcyhlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlO3JldHVybiBudWxsPT09bj8oKG49TXMoZS50YWcsdCxlLmtleSxlLm1vZGUpKS5lbGVtZW50VHlwZT1lLmVsZW1lbnRUeXBlLG4udHlwZT1lLnR5cGUsbi5zdGF0ZU5vZGU9ZS5zdGF0ZU5vZGUsbi5hbHRlcm5hdGU9ZSxlLmFsdGVybmF0ZT1uKToobi5wZW5kaW5nUHJvcHM9dCxuLmVmZmVjdFRhZz0wLG4ubmV4dEVmZmVjdD1udWxsLG4uZmlyc3RFZmZlY3Q9bnVsbCxuLmxhc3RFZmZlY3Q9bnVsbCksbi5jaGlsZEV4cGlyYXRpb25UaW1lPWUuY2hpbGRFeHBpcmF0aW9uVGltZSxuLmV4cGlyYXRpb25UaW1lPWUuZXhwaXJhdGlvblRpbWUsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdD1lLmRlcGVuZGVuY2llcyxuLmRlcGVuZGVuY2llcz1udWxsPT09dD9udWxsOntleHBpcmF0aW9uVGltZTp0LmV4cGlyYXRpb25UaW1lLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dCxyZXNwb25kZXJzOnQucmVzcG9uZGVyc30sbi5zaWJsaW5nPWUuc2libGluZyxuLmluZGV4PWUuaW5kZXgsbi5yZWY9ZS5yZWYsbn1mdW5jdGlvbiBqcyhlLHQsbixyLG8sYSl7dmFyIHU9MjtpZihyPWUsImZ1bmN0aW9uIj09dHlwZW9mIGUpUHMoZSkmJih1PTEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXU9NTtlbHNlIGU6c3dpdGNoKGUpe2Nhc2UgRjpyZXR1cm4gTHMobi5jaGlsZHJlbixvLGEsdCk7Y2FzZSBWOnU9OCxvfD03O2JyZWFrO2Nhc2UgQjp1PTgsb3w9MTticmVhaztjYXNlIHo6cmV0dXJuKGU9TXMoMTIsbix0LDh8bykpLmVsZW1lbnRUeXBlPXosZS50eXBlPXosZS5leHBpcmF0aW9uVGltZT1hLGU7Y2FzZSBXOnJldHVybihlPU1zKDEzLG4sdCxvKSkudHlwZT1XLGUuZWxlbWVudFR5cGU9VyxlLmV4cGlyYXRpb25UaW1lPWEsZTtjYXNlIFk6cmV0dXJuKGU9TXMoMTksbix0LG8pKS5lbGVtZW50VHlwZT1ZLGUuZXhwaXJhdGlvblRpbWU9YSxlO2RlZmF1bHQ6aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBLOnU9MTA7YnJlYWsgZTtjYXNlIHE6dT05O2JyZWFrIGU7Y2FzZSBVOnU9MTE7YnJlYWsgZTtjYXNlIEg6dT0xNDticmVhayBlO2Nhc2UgRzp1PTE2LHI9bnVsbDticmVhayBlfXRocm93IEVycm9yKGkoMTMwLG51bGw9PWU/ZTp0eXBlb2YgZSwiIikpfXJldHVybih0PU1zKHUsbix0LG8pKS5lbGVtZW50VHlwZT1lLHQudHlwZT1yLHQuZXhwaXJhdGlvblRpbWU9YSx0fWZ1bmN0aW9uIExzKGUsdCxuLHIpe3JldHVybihlPU1zKDcsZSxyLHQpKS5leHBpcmF0aW9uVGltZT1uLGV9ZnVuY3Rpb24gUnMoZSx0LG4pe3JldHVybihlPU1zKDYsZSxudWxsLHQpKS5leHBpcmF0aW9uVGltZT1uLGV9ZnVuY3Rpb24gSXMoZSx0LG4pe3JldHVybih0PU1zKDQsbnVsbCE9PWUuY2hpbGRyZW4/ZS5jaGlsZHJlbjpbXSxlLmtleSx0KSkuZXhwaXJhdGlvblRpbWU9bix0LnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzplLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246ZS5pbXBsZW1lbnRhdGlvbn0sdH1mdW5jdGlvbiBBcyhlLHQsbil7dGhpcy50YWc9dCx0aGlzLmN1cnJlbnQ9bnVsbCx0aGlzLmNvbnRhaW5lckluZm89ZSx0aGlzLnBpbmdDYWNoZT10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsLHRoaXMuZmluaXNoZWRFeHBpcmF0aW9uVGltZT0wLHRoaXMuZmluaXNoZWRXb3JrPW51bGwsdGhpcy50aW1lb3V0SGFuZGxlPS0xLHRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGwsdGhpcy5oeWRyYXRlPW4sdGhpcy5jYWxsYmFja05vZGU9bnVsbCx0aGlzLmNhbGxiYWNrUHJpb3JpdHk9OTAsdGhpcy5sYXN0RXhwaXJlZFRpbWU9dGhpcy5sYXN0UGluZ2VkVGltZT10aGlzLm5leHRLbm93blBlbmRpbmdMZXZlbD10aGlzLmxhc3RTdXNwZW5kZWRUaW1lPXRoaXMuZmlyc3RTdXNwZW5kZWRUaW1lPXRoaXMuZmlyc3RQZW5kaW5nVGltZT0wfWZ1bmN0aW9uIEZzKGUsdCl7dmFyIG49ZS5maXJzdFN1c3BlbmRlZFRpbWU7cmV0dXJuIGU9ZS5sYXN0U3VzcGVuZGVkVGltZSwwIT09biYmbj49dCYmZTw9dH1mdW5jdGlvbiBCcyhlLHQpe3ZhciBuPWUuZmlyc3RTdXNwZW5kZWRUaW1lLHI9ZS5sYXN0U3VzcGVuZGVkVGltZTtuPHQmJihlLmZpcnN0U3VzcGVuZGVkVGltZT10KSwocj50fHwwPT09bikmJihlLmxhc3RTdXNwZW5kZWRUaW1lPXQpLHQ8PWUubGFzdFBpbmdlZFRpbWUmJihlLmxhc3RQaW5nZWRUaW1lPTApLHQ8PWUubGFzdEV4cGlyZWRUaW1lJiYoZS5sYXN0RXhwaXJlZFRpbWU9MCl9ZnVuY3Rpb24genMoZSx0KXt0PmUuZmlyc3RQZW5kaW5nVGltZSYmKGUuZmlyc3RQZW5kaW5nVGltZT10KTt2YXIgbj1lLmZpcnN0U3VzcGVuZGVkVGltZTswIT09biYmKHQ+PW4/ZS5maXJzdFN1c3BlbmRlZFRpbWU9ZS5sYXN0U3VzcGVuZGVkVGltZT1lLm5leHRLbm93blBlbmRpbmdMZXZlbD0wOnQ+PWUubGFzdFN1c3BlbmRlZFRpbWUmJihlLmxhc3RTdXNwZW5kZWRUaW1lPXQrMSksdD5lLm5leHRLbm93blBlbmRpbmdMZXZlbCYmKGUubmV4dEtub3duUGVuZGluZ0xldmVsPXQpKX1mdW5jdGlvbiBLcyhlLHQpe3ZhciBuPWUubGFzdEV4cGlyZWRUaW1lOygwPT09bnx8bj50KSYmKGUubGFzdEV4cGlyZWRUaW1lPXQpfWZ1bmN0aW9uIHFzKGUsdCxuLHIpe3ZhciBvPXQuY3VycmVudCxhPSR1KCksdT1fYS5zdXNwZW5zZTthPVh1KGEsbyx1KTtlOmlmKG4pe3Q6e2lmKHR0KG49bi5fcmVhY3RJbnRlcm5hbEZpYmVyKSE9PW58fDEhPT1uLnRhZyl0aHJvdyBFcnJvcihpKDE3MCkpO3ZhciBzPW47ZG97c3dpdGNoKHMudGFnKXtjYXNlIDM6cz1zLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIHQ7Y2FzZSAxOmlmKHZvKHMudHlwZSkpe3M9cy5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgdH19cz1zLnJldHVybn13aGlsZShudWxsIT09cyk7dGhyb3cgRXJyb3IoaSgxNzEpKX1pZigxPT09bi50YWcpe3ZhciBsPW4udHlwZTtpZih2byhsKSl7bj1fbyhuLGwscyk7YnJlYWsgZX19bj1zfWVsc2Ugbj1mbztyZXR1cm4gbnVsbD09PXQuY29udGV4dD90LmNvbnRleHQ9bjp0LnBlbmRpbmdDb250ZXh0PW4sKHQ9ZGEoYSx1KSkucGF5bG9hZD17ZWxlbWVudDplfSxudWxsIT09KHI9dm9pZCAwPT09cj9udWxsOnIpJiYodC5jYWxsYmFjaz1yKSxoYShvLHQpLGVzKG8sYSksYX1mdW5jdGlvbiBWcyhlKXtpZighKGU9ZS5jdXJyZW50KS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goZS5jaGlsZC50YWcpe2Nhc2UgNTpkZWZhdWx0OnJldHVybiBlLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gVXMoZSx0KXtudWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PWUuZGVoeWRyYXRlZCYmZS5yZXRyeVRpbWU8dCYmKGUucmV0cnlUaW1lPXQpfWZ1bmN0aW9uIFdzKGUsdCl7VXMoZSx0KSwoZT1lLmFsdGVybmF0ZSkmJlVzKGUsdCl9ZnVuY3Rpb24gWXMoZSx0LG4pe3ZhciByPW5ldyBBcyhlLHQsbj1udWxsIT1uJiYhMD09PW4uaHlkcmF0ZSksbz1NcygzLG51bGwsbnVsbCwyPT09dD83OjE9PT10PzM6MCk7ci5jdXJyZW50PW8sby5zdGF0ZU5vZGU9cixlW3VyXT1yLmN1cnJlbnQsbiYmMCE9PXQmJmZ1bmN0aW9uKGUpe3ZhciB0PUxuKGUpO210LmZvckVhY2goKGZ1bmN0aW9uKG4pe1JuKG4sZSx0KX0pKSx2dC5mb3JFYWNoKChmdW5jdGlvbihuKXtSbihuLGUsdCl9KSl9KDk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50KSx0aGlzLl9pbnRlcm5hbFJvb3Q9cn1mdW5jdGlvbiBIcyhlKXtyZXR1cm4hKCFlfHwxIT09ZS5ub2RlVHlwZSYmOSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZSYmKDghPT1lLm5vZGVUeXBlfHwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlICIhPT1lLm5vZGVWYWx1ZSkpfWZ1bmN0aW9uIEdzKGUsdCxuLHIsbyl7dmFyIGE9bi5fcmVhY3RSb290Q29udGFpbmVyO2lmKGEpe3ZhciBpPWEuX2ludGVybmFsUm9vdDtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbyl7dmFyIHU9bztvPWZ1bmN0aW9uKCl7dmFyIGU9VnMoaSk7dS5jYWxsKGUpfX1xcyh0LGksZSxvKX1lbHNle2lmKGE9bi5fcmVhY3RSb290Q29udGFpbmVyPWZ1bmN0aW9uKGUsdCl7aWYodHx8KHQ9ISghKHQ9ZT85PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbCl8fDEhPT10Lm5vZGVUeXBlfHwhdC5oYXNBdHRyaWJ1dGUoImRhdGEtcmVhY3Ryb290IikpKSwhdClmb3IodmFyIG47bj1lLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChuKTtyZXR1cm4gbmV3IFlzKGUsMCx0P3toeWRyYXRlOiEwfTp2b2lkIDApfShuLHIpLGk9YS5faW50ZXJuYWxSb290LCJmdW5jdGlvbiI9PXR5cGVvZiBvKXt2YXIgcz1vO289ZnVuY3Rpb24oKXt2YXIgZT1WcyhpKTtzLmNhbGwoZSl9fXVzKChmdW5jdGlvbigpe3FzKHQsaSxlLG8pfSkpfXJldHVybiBWcyhpKX1mdW5jdGlvbiBRcyhlLHQsbil7dmFyIHI9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOkEsa2V5Om51bGw9PXI/bnVsbDoiIityLGNoaWxkcmVuOmUsY29udGFpbmVySW5mbzp0LGltcGxlbWVudGF0aW9uOm59fWZ1bmN0aW9uIEpzKGUsdCl7dmFyIG49Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIUhzKHQpKXRocm93IEVycm9yKGkoMjAwKSk7cmV0dXJuIFFzKGUsdCxudWxsLG4pfVlzLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSx0KXtxcyhlLHRoaXMuX2ludGVybmFsUm9vdCxudWxsLHZvaWQgMD09PXQ/bnVsbDp0KX0sWXMucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW50ZXJuYWxSb290LG49dm9pZCAwPT09ZT9udWxsOmUscj10LmNvbnRhaW5lckluZm87cXMobnVsbCx0LG51bGwsKGZ1bmN0aW9uKCl7clt1cl09bnVsbCxudWxsIT09biYmbigpfSkpfSxhdD1mdW5jdGlvbihlKXtpZigxMz09PWUudGFnKXt2YXIgdD1abygkdSgpLDE1MCwxMDApO2VzKGUsdCksV3MoZSx0KX19LGl0PWZ1bmN0aW9uKGUpe2lmKDEzPT09ZS50YWcpeyR1KCk7dmFyIHQ9Sm8rKztlcyhlLHQpLFdzKGUsdCl9fSx1dD1mdW5jdGlvbihlKXtpZigxMz09PWUudGFnKXt2YXIgdD0kdSgpO2VzKGUsdD1YdSh0LGUsbnVsbCkpLFdzKGUsdCl9fSxlZT1mdW5jdGlvbihlLHQsbil7c3dpdGNoKHQpe2Nhc2UiaW5wdXQiOmlmKFRlKGUsbiksdD1uLm5hbWUsInJhZGlvIj09PW4udHlwZSYmbnVsbCE9dCl7Zm9yKG49ZTtuLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO2ZvcihuPW4ucXVlcnlTZWxlY3RvckFsbCgiaW5wdXRbbmFtZT0iK0pTT04uc3RyaW5naWZ5KCIiK3QpKyddW3R5cGU9InJhZGlvIl0nKSx0PTA7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07aWYociE9PWUmJnIuZm9ybT09PWUuZm9ybSl7dmFyIG89ZnIocik7aWYoIW8pdGhyb3cgRXJyb3IoaSg5MCkpO0NlKHIpLFRlKHIsbyl9fX1icmVhaztjYXNlInRleHRhcmVhIjpJZShlLG4pO2JyZWFrO2Nhc2Uic2VsZWN0IjpudWxsIT0odD1uLnZhbHVlKSYmamUoZSwhIW4ubXVsdGlwbGUsdCwhMSl9fSxpZT1pcyx1ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1UdTtUdXw9NDt0cnl7cmV0dXJuIFdvKDk4LGUuYmluZChudWxsLHQsbixyKSl9ZmluYWxseXswPT09KFR1PW8pJiZHbygpfX0sc2U9ZnVuY3Rpb24oKXswPT0oNDkmVHUpJiYoZnVuY3Rpb24oKXtpZihudWxsIT09R3Upe3ZhciBlPUd1O0d1PW51bGwsZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe0tzKHQsZSkscnModCl9KSksR28oKX19KCksX3MoKSl9LGxlPWZ1bmN0aW9uKGUsdCl7dmFyIG49VHU7VHV8PTI7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7MD09PShUdT1uKSYmR28oKX19O3ZhciBacywkcyxYcz17Y3JlYXRlUG9ydGFsOkpzLGZpbmRET01Ob2RlOmZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO2lmKHZvaWQgMD09PXQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRlcil0aHJvdyBFcnJvcihpKDE4OCkpO3Rocm93IEVycm9yKGkoMjY4LE9iamVjdC5rZXlzKGUpKSl9cmV0dXJuIGU9bnVsbD09PShlPW90KHQpKT9udWxsOmUuc3RhdGVOb2RlfSxoeWRyYXRlOmZ1bmN0aW9uKGUsdCxuKXtpZighSHModCkpdGhyb3cgRXJyb3IoaSgyMDApKTtyZXR1cm4gR3MobnVsbCxlLHQsITAsbil9LHJlbmRlcjpmdW5jdGlvbihlLHQsbil7aWYoIUhzKHQpKXRocm93IEVycm9yKGkoMjAwKSk7cmV0dXJuIEdzKG51bGwsZSx0LCExLG4pfSx1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtpZighSHMobikpdGhyb3cgRXJyb3IoaSgyMDApKTtpZihudWxsPT1lfHx2b2lkIDA9PT1lLl9yZWFjdEludGVybmFsRmliZXIpdGhyb3cgRXJyb3IoaSgzOCkpO3JldHVybiBHcyhlLHQsbiwhMSxyKX0sdW5tb3VudENvbXBvbmVudEF0Tm9kZTpmdW5jdGlvbihlKXtpZighSHMoZSkpdGhyb3cgRXJyb3IoaSg0MCkpO3JldHVybiEhZS5fcmVhY3RSb290Q29udGFpbmVyJiYodXMoKGZ1bmN0aW9uKCl7R3MobnVsbCxudWxsLGUsITEsKGZ1bmN0aW9uKCl7ZS5fcmVhY3RSb290Q29udGFpbmVyPW51bGwsZVt1cl09bnVsbH0pKX0pKSwhMCl9LHVuc3RhYmxlX2NyZWF0ZVBvcnRhbDpmdW5jdGlvbigpe3JldHVybiBKcy5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX0sdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6aXMsZmx1c2hTeW5jOmZ1bmN0aW9uKGUsdCl7aWYoMCE9KDQ4JlR1KSl0aHJvdyBFcnJvcihpKDE4NykpO3ZhciBuPVR1O1R1fD0xO3RyeXtyZXR1cm4gV28oOTksZS5iaW5kKG51bGwsdCkpfWZpbmFsbHl7VHU9bixHbygpfX0sX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6e0V2ZW50czpbbHIsY3IsZnIsUC5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUsZCxqdCxmdW5jdGlvbihlKXtTKGUsTnQpfSxvZSxhZSxNbixNLF9zLHtjdXJyZW50OiExfV19fTskcz0oWnM9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnNyLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOiIxNi4xMi4wIixyZW5kZXJlclBhY2thZ2VOYW1lOiJyZWFjdC1kb20ifSkuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2UsZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pcmV0dXJuITE7dmFyIHQ9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKHQuaXNEaXNhYmxlZHx8IXQuc3VwcG9ydHNGaWJlcilyZXR1cm4hMDt0cnl7dmFyIG49dC5pbmplY3QoZSk7U3M9ZnVuY3Rpb24oZSl7dHJ5e3Qub25Db21taXRGaWJlclJvb3QobixlLHZvaWQgMCw2ND09KDY0JmUuY3VycmVudC5lZmZlY3RUYWcpKX1jYXRjaChlKXt9fSxEcz1mdW5jdGlvbihlKXt0cnl7dC5vbkNvbW1pdEZpYmVyVW5tb3VudChuLGUpfWNhdGNoKGUpe319fWNhdGNoKGUpe319KG8oe30sWnMse292ZXJyaWRlSG9va1N0YXRlOm51bGwsb3ZlcnJpZGVQcm9wczpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6ai5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09KGU9b3QoZSkpP251bGw6ZS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiAkcz8kcyhlKTpudWxsfSxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsfSkpO3ZhciBlbD17ZGVmYXVsdDpYc30sdGw9ZWwmJlhzfHxlbDtlLmV4cG9ydHM9dGwuZGVmYXVsdHx8dGx9LHlvS3Y6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJxMXRJIiksbz1uLm4ociksYT1uKCIxN3g5IiksaT1uLm4oYSksdT1uKCIyVzZ6Iikscz1uLm4odSksbD1uKCJRTGFQIiksYz1uLm4obCksZj1uKCJTc0tYIik7ZnVuY3Rpb24gZChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHAoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGQodGhpcyx0KSxwKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbE1vdW50PWZ1bmN0aW9uKCl7YygpKHRoaXMuY29udGV4dC5yb3V0ZXIsIllvdSBzaG91bGQgbm90IHVzZSA8U3dpdGNoPiBvdXRzaWRlIGEgPFJvdXRlcj4iKX0sdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5jdGlvbihlKXtzKCkoIShlLmxvY2F0aW9uJiYhdGhpcy5wcm9wcy5sb2NhdGlvbiksJzxTd2l0Y2g+IGVsZW1lbnRzIHNob3VsZCBub3QgY2hhbmdlIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiBZb3UgaW5pdGlhbGx5IHVzZWQgbm8gImxvY2F0aW9uIiBwcm9wIGFuZCB0aGVuIHByb3ZpZGVkIG9uZSBvbiBhIHN1YnNlcXVlbnQgcmVuZGVyLicpLHMoKSghKCFlLmxvY2F0aW9uJiZ0aGlzLnByb3BzLmxvY2F0aW9uKSwnPFN3aXRjaD4gZWxlbWVudHMgc2hvdWxkIG5vdCBjaGFuZ2UgZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuIFlvdSBwcm92aWRlZCBhICJsb2NhdGlvbiIgcHJvcCBpbml0aWFsbHkgYnV0IG9taXR0ZWQgaXQgb24gYSBzdWJzZXF1ZW50IHJlbmRlci4nKX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb250ZXh0LnJvdXRlci5yb3V0ZSx0PXRoaXMucHJvcHMuY2hpbGRyZW4sbj10aGlzLnByb3BzLmxvY2F0aW9ufHxlLmxvY2F0aW9uLHI9dm9pZCAwLGE9dm9pZCAwO3JldHVybiBvLmEuQ2hpbGRyZW4uZm9yRWFjaCh0LChmdW5jdGlvbih0KXtpZihudWxsPT1yJiZvLmEuaXNWYWxpZEVsZW1lbnQodCkpe3ZhciBpPXQucHJvcHMsdT1pLnBhdGgscz1pLmV4YWN0LGw9aS5zdHJpY3QsYz1pLnNlbnNpdGl2ZSxkPWkuZnJvbSxwPXV8fGQ7YT10LHI9T2JqZWN0KGYuYSkobi5wYXRobmFtZSx7cGF0aDpwLGV4YWN0OnMsc3RyaWN0Omwsc2Vuc2l0aXZlOmN9LGUubWF0Y2gpfX0pKSxyP28uYS5jbG9uZUVsZW1lbnQoYSx7bG9jYXRpb246bixjb21wdXRlZE1hdGNoOnJ9KTpudWxsfSx0fShvLmEuQ29tcG9uZW50KTtoLmNvbnRleHRUeXBlcz17cm91dGVyOmkuYS5zaGFwZSh7cm91dGU6aS5hLm9iamVjdC5pc1JlcXVpcmVkfSkuaXNSZXF1aXJlZH0saC5wcm9wVHlwZXM9e2NoaWxkcmVuOmkuYS5ub2RlLGxvY2F0aW9uOmkuYS5vYmplY3R9LHQuYT1ofSx5eHlEOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigieTVQKyIpLG89bigiVGFqZSIpLGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR9LGk9ZnVuY3Rpb24oZSl7cmV0dXJuISFlfSx1PVtdO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldENoYXJhY3Rlckxpc3QoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFN0eWxlKCl9KSkudG9MaXN0KCksbj10LmZsYXR0ZW4oKS50b1NldCgpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgdT1bXSxzPXQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5oYXMobil9KSkudG9MaXN0KCk7cmV0dXJuIG8ocyxhLGksKGZ1bmN0aW9uKHQsbyl7dmFyIGE9ZS5nZXRUZXh0KCk7dS5wdXNoKHtvZmZzZXQ6ci5zdHJsZW4oYS5zbGljZSgwLHQpKSxsZW5ndGg6ci5zdHJsZW4oYS5zbGljZSh0LG8pKSxzdHlsZTpufSl9KSksdX0oZSx0LG4pfSkpO3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KHUsbi50b0pTKCkpfX0sek9SZzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkd5T2YiKTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtpZihyKHQpKXt2YXIgbj10LG89bi5nZXRBdHRyaWJ1dGUoImRhdGEtb2Zmc2V0LWtleSIpO2lmKG8pcmV0dXJuIG87Zm9yKHZhciBhPTA7YTxuLmNoaWxkTm9kZXMubGVuZ3RoO2ErKyl7dmFyIGk9ZShuLmNoaWxkTm9kZXNbYV0pO2lmKGkpcmV0dXJuIGl9fXJldHVybiBudWxsfX0selVHTTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJoZWFkZXIiOnsiYWNjb3VudGluZyI6IkFjY291bnRpbmciLCJhbmFseXRpY3MiOiJBbmFseXRpY3MiLCJjYXRhbG9nIjoiQ2F0YWxvZyIsIm1hcmtldGluZyI6Ik1hcmtldGluZyIsImhlbHAiOiJIZWxwIiwiZHJvcGRvd24iOnsibXlBY2NvdW50IjoiTXkgYWNjb3VudCIsImFkbWluIjoiQWRtaW4iLCJsb2dvcyI6IkxvZ29zIiwicHJvZmlsZSI6IlByb2ZpbGUiLCJkZWZhdWx0cyI6IkRlZmF1bHRzIiwibG9nT3V0IjoiTG9nIG91dCJ9fSwic3ViaGVhZGVyIjp7ImFuYWx5dGljcyI6eyJ0b3BDaGFydHMiOiJUb3AgQ2hhcnRzIiwib3ZlcnZpZXciOiJPdmVydmlldyIsImF1ZGllbmNlIjoiQXVkaWVuY2UiLCJlbmdhZ2VtZW50IjoiRW5nYWdlbWVudCIsImhlYXRtYXAiOiJIZWF0bWFwIiwicGh5c2ljYWxSZXBvcnRpbmciOiJQaHlzaWNhbCBSZXBvcnRpbmciLCJmaWxtVHJhbnNwYXJlbmN5IjoiRmlsbSBUcmFuc3BhcmVuY3kiLCJjb21wYXJpc29uIjoiQ29tcGFyaXNvbiJ9LCJhY2NvdW50aW5nIjp7InZpZXciOiJWaWV3Iiwic3RhdGVtZW50cyI6IlN0YXRlbWVudHMiLCJwaHlzaWNhbFJlc2VydmVzIjoiUGh5c2ljYWwgUmVzZXJ2ZXMiLCJjb2xsYWJvcmF0b3JTcGxpdHMiOiJDb2xsYWJvcmF0b3JzIn19LCJnbG9iYWxTZWFyY2giOnsicGxhY2Vob2xkZXIiOiJTZWFyY2ggZm9yIFByb2plY3QsIFByb2R1Y3QsIEFydGlzdC4uLiIsInByb2plY3RQbHVyYWwiOiJQcm9qZWN0cyIsInByb2plY3RSZXN1bHRzIjp7Im9uZSI6Intjb3VudH0gcHJvamVjdCByZXN1bHQiLCJvdGhlciI6Intjb3VudH0gcHJvamVjdCByZXN1bHRzIn0sInByb2R1Y3RQbHVyYWwiOiJQcm9kdWN0cyIsInByb2R1Y3RSZXN1bHRzIjp7Im9uZSI6Intjb3VudH0gcHJvZHVjdCByZXN1bHQiLCJvdGhlciI6Intjb3VudH0gcHJvZHVjdCByZXN1bHRzIn0sIm5vUmVzdWx0IjoiTm8gcmVzdWx0cyBmb3VuZCBmb3IgXFwie3F1ZXJ5fVxcIiIsImVycm9yIjoiU29ycnksIGJ1dCBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBzZWFyY2hpbmcifSwiZm9vdGVyIjp7InN1cHBvcnRDb250YWN0IjoiU3VwcG9ydCBjb250YWN0OiIsImNvbnRhY3REaXN0cmlidXRvciI6IklmIHlvdSBuZWVkIGFzc2lzdGFuY2UsIHBsZWFzZSBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIiwiaGVscCI6IndvcmtzdGF0aW9uIGhlbHAiLCJwcml2YWN5UG9saWN5IjoicHJpdmFjeSBwb2xpY3kiLCJ0ZXJtc0FuZENvbmRpdGlvbnMiOiJ0ZXJtcyBhbmQgY29uZGl0aW9ucyIsImNvcHlyaWdodCI6IkNvcHlyaWdodCDCqSB7eWVhcn0gT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLiIsInRyYWRlbWFyayI6IlRoZSBPcmNoYXJkIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgYW5kIFRoZSBPcmNoYXJkIGxvZ28gaXMgYSBzZXJ2aWNlIG1hcmsgb2YgT3JjaGFyZCBFbnRlcnByaXNlcyBOWSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiJ9LCJlcnJvcnMiOnsicGFnZU5vdEZvdW5kIjoiU29ycnksIGJ1dCB0aGUgcGFnZSB5b3UgcmVxdWVzdGVkIGRvZXMgbm90IGV4aXN0LiIsIm5vblJlYWN0aWZpZWRQYWdlIjoiVGhlIHBhZ2UgeW91IHJlcXVlc3RlZCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgUEhQIGNvbnRyb2xsZXIuIFxcbklmIHlvdSBhcmUgc2VlaW5nIHRoaXMgaW4gcHJvZHVjdGlvbiBwbGVhc2UgY29udGFjdCBzdXBwb3J0IC8gZGF0YS10ZWFtLiIsImRlZmF1bHQiOiJTb3JyeSwgd2UgaGFkIGFuIHVuZXhwZWN0ZWQgZXJyb3IuIFBsZWFzZSB3YWl0IGEgbWludXRlIGFuZCByZWxvYWQgdGhlIHBhZ2UgdG8gdHJ5IGFnYWluLiBJZiB5b3UgYXJlIHN0aWxsIHNlZWluZyB0aGlzIG1lc3NhZ2UsIHBsZWFzZSBjb250YWN0IHN1cHBvcnQuIiwidXNlckZlYXR1cmVzIjoiU29ycnksIGJ1dCB3ZSBmYWlsZWQgdG8gbG9hZCB1c2VyIGZlYXR1cmVzLiBQbGVhc2UgdHJ5IGFnYWluIG9yIGNvbnRhY3Qgc3VwcG9ydC4ifSwiYmFubmVyIjp7ImFkdmVydGlzaW5nIjp7ImRlc2NyaXB0aW9uIjoiRm9yIGEgbGltaXRlZCB0aW1lIHdlIGFyZSBib29zdGluZyB5b3VyIEZhY2Vib29rICYgSW5zdGFncmFtIGFkIGNhbXBhaWduIGJ1ZGdldHMgYnkgNTAlIGZvciBmcmVlISIsImFuY2hvclRleHQiOiJHbyB0byBhZCBjYW1wYWlnbnMifSwib3JjaGFyZEdvIjp7ImRlc2NyaXB0aW9uIjoiVHJhY2sgeW91ciBhbmFseXRpY3Mgb24gdGhlIGdvISIsImFuY2hvclRleHQiOiJEb3dubG9hZCBPcmNoYXJkR28gbm93In19fScpfSx6YXZFOmZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZGVmaW5lTG9jYWxlKCJlbi1TRyIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKGUpe3ZhciB0PWUlMTA7cmV0dXJuIGUrKDE9PX5+KGUlMTAwLzEwKT8idGgiOjE9PT10PyJzdCI6Mj09PXQ/Im5kIjozPT09dD8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0obigid2QvUiIpKX0semUyeDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmZvcm1hdERheT1pLHQuZm9ybWF0TW9udGhUaXRsZT11LHQuZm9ybWF0V2Vla2RheVNob3J0PXMsdC5mb3JtYXRXZWVrZGF5TG9uZz1sLHQuZ2V0Rmlyc3REYXlPZldlZWs9Yyx0LmdldE1vbnRocz1mO3ZhciByPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxvPVsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSxhPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXTtmdW5jdGlvbiBpKGUpe3JldHVybiBlLnRvRGF0ZVN0cmluZygpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGFbZS5nZXRNb250aCgpXSsiICIrZS5nZXRGdWxsWWVhcigpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIG9bZV19ZnVuY3Rpb24gbChlKXtyZXR1cm4gcltlXX1mdW5jdGlvbiBjKCl7cmV0dXJuIDB9ZnVuY3Rpb24gZigpe3JldHVybiBhfXQuZGVmYXVsdD17Zm9ybWF0RGF5OmksZm9ybWF0TW9udGhUaXRsZTp1LGZvcm1hdFdlZWtkYXlTaG9ydDpzLGZvcm1hdFdlZWtkYXlMb25nOmwsZ2V0Rmlyc3REYXlPZldlZWs6YyxnZXRNb250aHM6Zn19LHpmSjU6ZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG4uZD1mdW5jdGlvbihlLHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsImEiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPSIiLG4obi5zPTcwKX0oezA6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigicTF0SSIpfSwxOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIkhzcWciKX0sMjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCI1ZjduIil9LDI1OmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHIsbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGk9bigwKSx1PShyPWkpJiZyLl9fZXNNb2R1bGU/cjp7ZGVmYXVsdDpyfTtmdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fXZhciBjPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcyh0aGlzLHQpLGwodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLGEodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3ZnIixvKHt2aWV3Qm94OiIwIDAgMTAwMCAxMDAwIn0sdGhpcy5wcm9wcyksdS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMzM2LjIgMjc0LjVsLTIxMC4xIDIxMGg4MDUuNGMxMyAwIDIzIDEwIDIzIDIzcy0xMCAyMy0yMyAyM0gxMjYuMWwyMTAuMSAyMTAuMWMxMSAxMSAxMSAyMSAwIDMyLTUgNS0xMCA3LTE2IDdzLTExLTItMTYtN2wtMjQ5LjEtMjQ5Yy0xMS0xMS0xMS0yMSAwLTMybDI0OS4xLTI0OS4xYzIxLTIxLjEgNTMgMTAuOSAzMiAzMnoifSkpfX1dKSx0fSh1LmRlZmF1bHQuQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sMjY6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT1uKDApLHU9KHI9aSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O2Z1bmN0aW9uIHMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBzKHRoaXMsdCksbCh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksYSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdmciLG8oe3ZpZXdCb3g6IjAgMCAxMDAwIDEwMDAifSx0aGlzLnByb3BzKSx1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik02OTQuNCAyNDIuNGwyNDkuMSAyNDkuMWMxMSAxMSAxMSAyMSAwIDMyTDY5NC40IDc3Mi43Yy01IDUtMTAgNy0xNiA3cy0xMS0yLTE2LTdjLTExLTExLTExLTIxIDAtMzJsMjEwLjEtMjEwLjFINjcuMWMtMTMgMC0yMy0xMC0yMy0yM3MxMC0yMyAyMy0yM2g4MDUuNEw2NjIuNCAyNzQuNWMtMjEtMjEuMSAxMS01My4xIDMyLTMyLjF6In0pKX19XSksdH0odS5kZWZhdWx0LkNvbXBvbmVudCk7dC5kZWZhdWx0PWN9LDM6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigidlYrRyIpfSw0OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oIjE3eDkiKX0sNDE6ZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcixvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksaT1uKDApLHU9KHI9aSkmJnIuX19lc01vZHVsZT9yOntkZWZhdWx0OnJ9O2Z1bmN0aW9uIHMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9dmFyIGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBzKHRoaXMsdCksbCh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksYSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdmciLG8oe3ZpZXdCb3g6IjAgMCAxMDAwIDEwMDAifSx0aGlzLnByb3BzKSx1LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgicGF0aCIse2Q6Ik05NjcuNSAyODguNUw1MTQuMyA3NDAuN2MtMTEgMTEtMjEgMTEtMzIgMEwyOS4xIDI4OC41Yy00LTUtNi0xMS02LTE2IDAtMTMgMTAtMjMgMjMtMjMgNiAwIDExIDIgMTUgN2w0MzcuMiA0MzYuMiA0MzcuMi00MzYuMmM0LTUgOS03IDE2LTcgNiAwIDExIDIgMTYgNyA5IDEwLjkgOSAyMSAwIDMyeiJ9KSl9fV0pLHR9KHUuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1jfSw0MjpmdW5jdGlvbihlLHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByLG89T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxpPW4oMCksdT0ocj1pKSYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn07ZnVuY3Rpb24gcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGwoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH12YXIgYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIHModGhpcyx0KSxsKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxhKHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInN2ZyIsbyh7dmlld0JveDoiMCAwIDEwMDAgMTAwMCJ9LHRoaXMucHJvcHMpLHUuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTMyLjEgNzEyLjZsNDUzLjItNDUyLjJjMTEtMTEgMjEtMTEgMzIgMGw0NTMuMiA0NTIuMmM0IDUgNiAxMCA2IDE2IDAgMTMtMTAgMjMtMjIgMjMtNyAwLTEyLTItMTYtN0w1MDEuMyAzMDguNSA2NC4xIDc0NC43Yy00IDUtOSA3LTE1IDctNyAwLTEyLTItMTctNy05LTExLTktMjEgMC0zMi4xeiJ9KSl9fV0pLHR9KHUuZGVmYXVsdC5Db21wb25lbnQpO3QuZGVmYXVsdD1jfSw1OmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPW4oInljMmUiKX0sNjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uKCJUU1lRIil9LDcwOmZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWc7dmFyIHI9eShuKDApKSxvPXkobig0KSksYT1uKDEpLGk9eShuKDYpKSx1PW4oMykscz15KG4oNSkpLGw9eShuKDI1KSksYz15KG4oMjYpKSxmPXkobig0MikpLGQ9eShuKDQxKSkscD15KG4oOCkpLGg9bigyKTtmdW5jdGlvbiB5KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgbT0oMCxhLmZvcmJpZEV4dHJhUHJvcHMpKHtuYXZQcmV2Om8uZGVmYXVsdC5ub2RlLG5hdk5leHQ6by5kZWZhdWx0Lm5vZGUsb3JpZW50YXRpb246cC5kZWZhdWx0LG9uUHJldk1vbnRoQ2xpY2s6by5kZWZhdWx0LmZ1bmMsb25OZXh0TW9udGhDbGljazpvLmRlZmF1bHQuZnVuYyxwaHJhc2VzOm8uZGVmYXVsdC5zaGFwZSgoMCxzLmRlZmF1bHQpKHUuRGF5UGlja2VyTmF2aWdhdGlvblBocmFzZXMpKSxpc1JUTDpvLmRlZmF1bHQuYm9vbH0pLHY9e25hdlByZXY6bnVsbCxuYXZOZXh0Om51bGwsb3JpZW50YXRpb246aC5IT1JJWk9OVEFMX09SSUVOVEFUSU9OLG9uUHJldk1vbnRoQ2xpY2s6ZnVuY3Rpb24oKXt9LG9uTmV4dE1vbnRoQ2xpY2s6ZnVuY3Rpb24oKXt9LHBocmFzZXM6dS5EYXlQaWNrZXJOYXZpZ2F0aW9uUGhyYXNlcyxpc1JUTDohMX07ZnVuY3Rpb24gZyhlKXt2YXIgdD1lLm5hdlByZXYsbj1lLm5hdk5leHQsbz1lLm9uUHJldk1vbnRoQ2xpY2ssYT1lLm9uTmV4dE1vbnRoQ2xpY2ssdT1lLm9yaWVudGF0aW9uLHM9ZS5waHJhc2VzLHA9ZS5pc1JUTCx5PXUhPT1oLkhPUklaT05UQUxfT1JJRU5UQVRJT04sbT11PT09aC5WRVJUSUNBTF9TQ1JPTExBQkxFLHY9dCxnPW4sYj0hMSx3PSExO3Z8fChiPSEwLHY9eT9yLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmLmRlZmF1bHQsbnVsbCk6ci5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobC5kZWZhdWx0LG51bGwpLHAmJiF5JiYodj1yLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjLmRlZmF1bHQsbnVsbCkpKSxnfHwodz0hMCxnPXk/ci5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZC5kZWZhdWx0LG51bGwpOnIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCxudWxsKSxwJiYheSYmKGc9ci5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobC5kZWZhdWx0LG51bGwpKSk7dmFyIF89KDAsaS5kZWZhdWx0KSgiRGF5UGlja2VyTmF2aWdhdGlvbiIseyJEYXlQaWNrZXJOYXZpZ2F0aW9uLS1ob3Jpem9udGFsIjoheSwiRGF5UGlja2VyTmF2aWdhdGlvbi0tdmVydGljYWwiOnksIkRheVBpY2tlck5hdmlnYXRpb24tLXZlcnRpY2FsLXNjcm9sbGFibGUiOm19KSxFPSgwLGkuZGVmYXVsdCkoIkRheVBpY2tlck5hdmlnYXRpb25fX3ByZXYiLHsiRGF5UGlja2VyTmF2aWdhdGlvbl9fcHJldi0tZGVmYXVsdCI6YiwiRGF5UGlja2VyTmF2aWdhdGlvbl9fcHJldi0tcnRsIjpwfSksTz0oMCxpLmRlZmF1bHQpKCJEYXlQaWNrZXJOYXZpZ2F0aW9uX19uZXh0Iix7IkRheVBpY2tlck5hdmlnYXRpb25fX25leHQtLWRlZmF1bHQiOncsIkRheVBpY2tlck5hdmlnYXRpb25fX25leHQtLXJ0bCI6cH0pO3JldHVybiByLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOl99LCFtJiZyLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6cy5qdW1wVG9QcmV2TW9udGgsY2xhc3NOYW1lOkUsb25DbGljazpvLG9uTW91c2VVcDpmdW5jdGlvbihlKXtlLmN1cnJlbnRUYXJnZXQuYmx1cigpfX0sdiksci5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsImFyaWEtbGFiZWwiOnMuanVtcFRvTmV4dE1vbnRoLGNsYXNzTmFtZTpPLG9uQ2xpY2s6YSxvbk1vdXNlVXA6ZnVuY3Rpb24oZSl7ZS5jdXJyZW50VGFyZ2V0LmJsdXIoKX19LGcpKX1nLnByb3BUeXBlcz1tLGcuZGVmYXVsdFByb3BzPXZ9LDg6ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9bigiYUU2VSIpfX0pfSx6bFk1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMTU4ZiIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1yKGUpLG49MCxvPTAsYT0wLGk9MDtpZih0Lmxlbmd0aCl7aWYodC5sZW5ndGg+MSYmMD09PXRbMF0ud2lkdGgpe3ZhciB1PXRbMV07bj11LnRvcCxvPXUucmlnaHQsYT11LmJvdHRvbSxpPXUubGVmdH1lbHNle3ZhciBzPXRbMF07bj1zLnRvcCxvPXMucmlnaHQsYT1zLmJvdHRvbSxpPXMubGVmdH1mb3IodmFyIGw9MTtsPHQubGVuZ3RoO2wrKyl7dmFyIGM9dFtsXTswIT09Yy5oZWlnaHQmJjAhPT1jLndpZHRoJiYobj1NYXRoLm1pbihuLGMudG9wKSxvPU1hdGgubWF4KG8sYy5yaWdodCksYT1NYXRoLm1heChhLGMuYm90dG9tKSxpPU1hdGgubWluKGksYy5sZWZ0KSl9fXJldHVybnt0b3A6bixyaWdodDpvLGJvdHRvbTphLGxlZnQ6aSx3aWR0aDpvLWksaGVpZ2h0OmEtbn19fSwienhOKyI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ6bFk1Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0U2VsZWN0aW9uKCk7aWYoIXQucmFuZ2VDb3VudClyZXR1cm4gbnVsbDt2YXIgbj10LmdldFJhbmdlQXQoMCksbz1yKG4pLGE9by50b3AsaT1vLnJpZ2h0LHU9by5ib3R0b20scz1vLmxlZnQ7cmV0dXJuIDA9PT1hJiYwPT09aSYmMD09PXUmJjA9PT1zP251bGw6b319fSl9KSk7",
            "encoding": "base64"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 566658
        },
        "cache": {},
        "timings": {
          "blocked": 3.5360000643804668,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.2909999999999999,
          "wait": 138.0980000555739,
          "receive": 541.082999901846,
          "_blocked_queueing": 2.103000064380467
        },
        "serverIPAddress": "99.84.32.49",
        "_initiator": {
          "type": "parser",
          "url": "https://workstation.theorchard.com/analytics/engagement",
          "lineNumber": 15
        },
        "_priority": "High",
        "_resourceType": "script",
        "connection": "1949487",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:15.989Z",
        "time": 710.3219999698922,
        "request": {
          "method": "GET",
          "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/frontend-workstation.css",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.theorchard.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/frontend-workstation.css"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "text/css,*/*;q=0.1"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "_ga=GA1.2.623441365.1582092609"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "_ga",
              "value": "GA1.2.623441365.1582092609",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "text/css"
            },
            {
              "name": "date",
              "value": "Mon, 09 Mar 2020 11:04:35 GMT"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Wed, 04 Mar 2020 09:04:13 GMT"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "x-amz-version-id",
              "value": ".ZfZiYhA_o9MeHJYLIJDaeVy040VSiq6"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "x-cache",
              "value": "Hit from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 075ecc80ea8e9352008139ab9fd7a593.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C4"
            },
            {
              "name": "x-amz-cf-id",
              "value": "evf1cGsBcVPBvGFDhLdxa7I6tIToPe9tADD8OXKqiVqSbexhzPD5Iw=="
            },
            {
              "name": "age",
              "value": "77202"
            }
          ],
          "cookies": [],
          "content": {
            "size": 190752,
            "mimeType": "text/css",
            "text": "@charset \"UTF-8\";.DayPicker{display:inline-block;font-size:1rem}.DayPicker-wrapper{position:relative;flex-direction:row;padding-bottom:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-Months{display:flex;flex-wrap:wrap;justify-content:center}.DayPicker-Month{display:table;margin:1em 1em 0;border-spacing:0;border-collapse:collapse;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DayPicker-NavButton{position:absolute;top:1em;right:1.5em;left:auto;display:inline-block;margin-top:2px;width:1.25em;height:1.25em;background-position:50%;background-size:50%;background-repeat:no-repeat;color:#8b9898;cursor:pointer}.DayPicker-NavButton:hover{opacity:.8}.DayPicker-NavButton--prev{margin-right:1.5em;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAVVJREFUWAnN2G0KgjAYwPHpGfRkaZeqvgQaK+hY3SUHrk1YzNLay/OiEFp92I+/Mp2F2Mh2lLISWnflFjzH263RQjzMZ19wgs73ez0o1WmtW+dgA01VxrE3p6l2GLsnBy1VYQOtVSEH/atCCgqpQgKKqYIOiq2CBkqtggLKqQIKgqgCBjpJ2Y5CdJ+zrT9A7HHSTA1dxUdHgzCqJIEwq0SDsKsEg6iqBIEoq/wEcVRZBXFV+QJxV5mBtlDFB5VjYTaGZ2sf4R9PM7U9ZU+lLuaetPP/5Die3ToO1+u+MKtHs06qODB2zBnI/jBd4MPQm1VkY79Tb18gB+C62FdBFsZR6yeIo1YQiLJWMIiqVjQIu1YSCLNWFgijVjYIuhYYCKoWKAiiFgoopxYaKLUWOii2FgkophYp6F3r42W5A9s9OcgNvva8xQaysKXlFytoqdYmQH6tF3toSUo0INq9AAAAAElFTkSuQmCC\")}.DayPicker-NavButton--next{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAwCAYAAAB5R9gVAAAABGdBTUEAALGPC/xhBQAAAXRJREFUWAnN119ugjAcwPHWzJ1gnmxzB/BBE0n24m4xfNkTaOL7wOtsl3AXMMb+Vjaa1BG00N8fSEibPpAP3xAKKs2yjzTPH9RAjhEo9WzPr/Vm8zgE0+gXATAxxuxtqeJ9t5tIwv5AtQAApsfT6TPdbp+kUBcgVwvO51KqVhMkXKsVJFXrOkigVhCIs1Y4iKlWZxB1rX4gwlpRIIpa8SDkWmggrFq4IIRaJKCYWnSgnrXIQV1r8YD+1Vrn+bReagysIFfLABRt31v8oBu1xEBttfRbltmfjgEcWh9snUS2kNdBK6WN1vrOWxObWsz+fjxevsxmB1GQDfINWiev83nhaoiB/CoOU438oPrhXS0WpQ9xc1ZQWxWHqUYe0I0qrKCQKjygDlXIQV2r0IF6ViEBxVTBBSFUQQNhVYkHIVeJAtkNsbQ7c1LtzP6FsObhb2rCKv7NBIGoq4SDmKoEgTirXAcJVGkFSVVpgoSrXICGUMUH/QBZNSUy5XWUhwAAAABJRU5ErkJggg==\")}.DayPicker-NavButton--interactionDisabled{display:none}.DayPicker-Caption{display:table-caption;margin-bottom:.5em;padding:0 .5em;text-align:left}.DayPicker-Caption>div{font-weight:500;font-size:1.15em}.DayPicker-Weekdays{display:table-header-group;margin-top:1em}.DayPicker-WeekdaysRow{display:table-row}.DayPicker-Weekday{display:table-cell;padding:.5em;color:#8b9898;text-align:center;font-size:.875em}.DayPicker-Weekday abbr[title]{border-bottom:none;text-decoration:none}.DayPicker-Body{display:table-row-group}.DayPicker-Week{display:table-row}.DayPicker-Day{border-radius:50%;text-align:center}.DayPicker-Day,.DayPicker-WeekNumber{display:table-cell;padding:.5em;vertical-align:middle;cursor:pointer}.DayPicker-WeekNumber{min-width:1em;border-right:1px solid #eaecec;color:#8b9898;text-align:right;font-size:.75em}.DayPicker--interactionDisabled .DayPicker-Day{cursor:default}.DayPicker-Footer{padding-top:.5em}.DayPicker-TodayButton{border:none;background-color:transparent;background-image:none;box-shadow:none;color:#4a90e2;font-size:.875em;cursor:pointer}.DayPicker-Day--today{color:#d0021b;font-weight:700}.DayPicker-Day--outside{color:#8b9898;cursor:default}.DayPicker-Day--disabled{color:#dce0e0;cursor:default}.DayPicker-Day--sunday{background-color:#f7f8f8}.DayPicker-Day--sunday:not(.DayPicker-Day--today){color:#dce0e0}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside){position:relative;background-color:#4a90e2;color:#f0f8ff}.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside):hover{background-color:#51a0fa}.DayPicker:not(.DayPicker--interactionDisabled) .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover{background-color:#f0f8ff}.DayPickerInput{display:inline-block}.DayPickerInput-OverlayWrapper{position:relative}.DayPickerInput-Overlay{position:absolute;left:0;z-index:1;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.15)}.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-root{position:relative}.DraftEditor-editorContainer{background-color:hsla(0,0%,100%,0);border-left:.1px solid transparent;position:relative;z-index:1}.public-DraftEditor-block{position:relative}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.DraftEditorPlaceholder-hidden{display:none}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) \". \";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1,lower-alpha) \". \";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2,lower-roman) \". \";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) \". \";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4,lower-alpha) \". \";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4}:root{--blue:#0070e0;--indigo:#6610f2;--purple:#6f42c1;--pink:#f04861;--red:#e84031;--orange:#ff893e;--yellow:#ffd630;--green:#17ad41;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#847c7c;--gray-dark:#4a4a4a;--sky-blue:#42c6ff;--midnight-1:#0070e0;--midnight-2:#0663c3;--midnight-3:#0a57a6;--midnight-4:#0b4a8b;--midnight-5:#0b3e70;--midnight-6:#093357;--midnight-7:#082740;--midnight-8:#071c2a;--midnight-9:#000f17;--dataviz-1:#ff893e;--dataviz-2:#0070e0;--dataviz-3:#42c6ff;--dataviz-4:#f04861;--bluefish:#338ee8;--bluejay_light:#e5f0f6;--bluejay:#026ead;--chameleon:#419b86;--fox_light:#fff3eb;--fox:#ff893e;--gorilla:#4a4a4a;--humpback:#093c59;--koala:#d9d2d0;--mouse:#f2f2f2;--octopus:#4b3da3;--parrot_light:#faecea;--parrot:#d54236;--peacock:#9f0088;--puma:#282828;--rhino:#6d6565;--timberwolf:#a8a0a0;--turtle_light:#f1f5ea;--turtle:#78a22f;--primary:#ff893e;--secondary:#e4e0df;--success:#17ad41;--info:#0070e0;--warning:#ffd630;--danger:#e84031;--light:#f7f7f7;--dark:#4a4a4a;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:Rubik,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Rubik,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#1c1c1c;text-align:left;background-color:#fff}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0070e0;text-decoration:none;background-color:transparent}a:hover{color:#004a94;text-decoration:underline}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#a8a0a0;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.5rem}.h4,h4{font-size:1.33rem}.h5,h5{font-size:1.16rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#847c7c}.blockquote-footer:before{content:\"\\2014\\00A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #e4e0df;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#847c7c}code{font-size:87.5%;color:#f04861;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#1c1c1c;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:500}pre{display:block;font-size:87.5%;color:#1c1c1c}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#1c1c1c}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #d9d2d0}.table thead th{vertical-align:bottom;border-bottom:2px solid #d9d2d0}.table tbody+tbody{border-top:2px solid #d9d2d0}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #d9d2d0}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#1c1c1c;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#ffdec9}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#ffc29b}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#ffceb0}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#f7f6f6}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#f1efee}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#ebe9e9}.table-success,.table-success>td,.table-success>th{background-color:#bee8ca}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#86d49c}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#abe1bb}.table-info,.table-info>td,.table-info>th{background-color:#b8d7f6}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#7ab5ef}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#a1caf3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fff4c5}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffea93}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffefac}.table-danger,.table-danger>td,.table-danger>th{background-color:#f9cac5}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f39c94}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f7b5ae}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfd}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfbfb}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#f0f0f0}.table-dark,.table-dark>td,.table-dark>th{background-color:#ccc}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#a1a1a1}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#bfbfbf}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#4a4a4a;border-color:#5d5d5d}.table .thead-light th{color:#6d6565;background-color:#f2f2f2;border-color:#d9d2d0}.table-dark{color:#fff;background-color:#4a4a4a}.table-dark td,.table-dark th,.table-dark thead th{border-color:#5d5d5d}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + 1.3rem + 2px);padding:.65rem 1.2rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6d6565;background-color:#fff;background-clip:padding-box;border:1px solid #d9d2d0;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#6d6565;background-color:#fff;border-color:#61b0ff;outline:0;box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.form-control::placeholder{color:#847c7c;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#f2f2f2;opacity:1}select.form-control:focus::-ms-value{color:#6d6565;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.65rem + 1px);padding-bottom:calc(.65rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(1rem + 1px);padding-bottom:calc(1rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.65rem;padding-bottom:.65rem;margin-bottom:0;line-height:1.5;color:#1c1c1c;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 2rem + 2px);padding:1rem 2rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#a8a0a0}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#e84031}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(232,64,49,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#e84031}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#e84031;box-shadow:0 0 0 .2rem rgba(232,64,49,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#e84031}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#e84031;box-shadow:0 0 0 .2rem rgba(232,64,49,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#e84031}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#e84031}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#e84031}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#ed6b5f;background-color:#ed6b5f}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(232,64,49,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#e84031}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#e84031;box-shadow:0 0 0 .2rem rgba(232,64,49,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:500;color:#1c1c1c;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.65rem 1.2rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#1c1c1c;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#ff893e;border-color:#ff893e}.btn-primary:hover{color:#fff;background-color:#ff7218;border-color:#ff6a0b}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(255,155,91,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#ff893e;border-color:#ff893e}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#ff6a0b;border-color:#fd6200}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,155,91,.5)}.btn-secondary{color:#4a4a4a;background-color:#e4e0df;border-color:#e4e0df}.btn-secondary:hover{color:#4a4a4a;background-color:#d2ccca;border-color:#cdc5c3}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(205,202,201,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#4a4a4a;background-color:#e4e0df;border-color:#e4e0df}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#4a4a4a;background-color:#cdc5c3;border-color:#c7bfbc}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(205,202,201,.5)}.btn-success{color:#fff;background-color:#17ad41;border-color:#17ad41}.btn-success:hover{color:#fff;background-color:#138b34;border-color:#118030}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(58,185,94,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#17ad41;border-color:#17ad41}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#118030;border-color:#10752c}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,185,94,.5)}.btn-info{color:#fff;background-color:#0070e0;border-color:#0070e0}.btn-info:hover{color:#fff;background-color:#005dba;border-color:#0057ad}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(38,133,229,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#0070e0;border-color:#0070e0}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#0057ad;border-color:#0050a0}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,133,229,.5)}.btn-warning{color:#4a4a4a;background-color:#ffd630;border-color:#ffd630}.btn-warning:hover{color:#4a4a4a;background-color:#ffce0a;border-color:#fcca00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(228,193,52,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#4a4a4a;background-color:#ffd630;border-color:#ffd630}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#4a4a4a;background-color:#fcca00;border-color:#efc000}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(228,193,52,.5)}.btn-danger{color:#fff;background-color:#e84031;border-color:#e84031}.btn-danger:hover{color:#fff;background-color:#da2818;border-color:#cf2617}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(235,93,80,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#e84031;border-color:#e84031}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#cf2617;border-color:#c32416}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(235,93,80,.5)}.btn-light{color:#4a4a4a;background-color:#f7f7f7;border-color:#f7f7f7}.btn-light:hover{color:#4a4a4a;background-color:#e4e4e4;border-color:#dedede}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem hsla(0,0%,86.7%,.5)}.btn-light.disabled,.btn-light:disabled{color:#4a4a4a;background-color:#f7f7f7;border-color:#f7f7f7}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#4a4a4a;background-color:#dedede;border-color:#d7d7d7}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(0,0%,86.7%,.5)}.btn-dark{color:#fff;background-color:#4a4a4a;border-color:#4a4a4a}.btn-dark:hover{color:#fff;background-color:#373737;border-color:#313131}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem hsla(0,0%,39.6%,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#4a4a4a;border-color:#4a4a4a}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#313131;border-color:#2a2a2a}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(0,0%,39.6%,.5)}.btn-outline-primary{color:#ff893e;border-color:#ff893e}.btn-outline-primary:hover{color:#fff;background-color:#ff893e;border-color:#ff893e}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(255,137,62,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#ff893e;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#ff893e;border-color:#ff893e}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,137,62,.5)}.btn-outline-secondary{color:#e4e0df;border-color:#e4e0df}.btn-outline-secondary:hover{color:#4a4a4a;background-color:#e4e0df;border-color:#e4e0df}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(228,224,223,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#e4e0df;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#4a4a4a;background-color:#e4e0df;border-color:#e4e0df}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(228,224,223,.5)}.btn-outline-success{color:#17ad41;border-color:#17ad41}.btn-outline-success:hover{color:#fff;background-color:#17ad41;border-color:#17ad41}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(23,173,65,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#17ad41;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#17ad41;border-color:#17ad41}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,173,65,.5)}.btn-outline-info{color:#0070e0;border-color:#0070e0}.btn-outline-info:hover{color:#fff;background-color:#0070e0;border-color:#0070e0}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(0,112,224,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0070e0;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#0070e0;border-color:#0070e0}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,112,224,.5)}.btn-outline-warning{color:#ffd630;border-color:#ffd630}.btn-outline-warning:hover{color:#4a4a4a;background-color:#ffd630;border-color:#ffd630}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,214,48,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffd630;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#4a4a4a;background-color:#ffd630;border-color:#ffd630}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,214,48,.5)}.btn-outline-danger{color:#e84031;border-color:#e84031}.btn-outline-danger:hover{color:#fff;background-color:#e84031;border-color:#e84031}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(232,64,49,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#e84031;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#e84031;border-color:#e84031}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(232,64,49,.5)}.btn-outline-light{color:#f7f7f7;border-color:#f7f7f7}.btn-outline-light:hover{color:#4a4a4a;background-color:#f7f7f7;border-color:#f7f7f7}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem hsla(0,0%,96.9%,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f7f7f7;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#4a4a4a;background-color:#f7f7f7;border-color:#f7f7f7}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(0,0%,96.9%,.5)}.btn-outline-dark{color:#4a4a4a;border-color:#4a4a4a}.btn-outline-dark:hover{color:#fff;background-color:#4a4a4a;border-color:#4a4a4a}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(74,74,74,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#4a4a4a;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#4a4a4a;border-color:#4a4a4a}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(74,74,74,.5)}.btn-link{font-weight:400;color:#0070e0;text-decoration:none}.btn-link:hover{color:#004a94;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#847c7c;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:1rem 2rem;font-size:1rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#1c1c1c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #f2f2f2}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#1c1c1c;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#0f0f0f;text-decoration:none;background-color:#f7f7f7}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0070e0}.dropdown-item.disabled,.dropdown-item:disabled{color:#847c7c;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#847c7c}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#1c1c1c}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.9rem;padding-left:.9rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.5rem;padding-left:1.5rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.65rem 1.2rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#6d6565;text-align:center;white-space:nowrap;background-color:#f2f2f2;border:1px solid #d9d2d0;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 2rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:1rem 2rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:2.2rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#0070e0;background-color:#0070e0}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#61b0ff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#94c9ff;border-color:#94c9ff}.custom-control-input:disabled~.custom-control-label{color:#847c7c}.custom-control-input:disabled~.custom-control-label:before{background-color:#f2f2f2}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #a8a0a0}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#0070e0;background-color:#0070e0}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(255,137,62,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(255,137,62,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(255,137,62,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#a8a0a0;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(255,137,62,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + 1.3rem + 2px);padding:.65rem 2.2rem .65rem 1.2rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6d6565;vertical-align:middle;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%234a4a4a' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 1.2rem center/8px 10px;background-color:#fff;border:1px solid #d9d2d0;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#61b0ff;outline:0;box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.custom-select:focus::-ms-value{color:#6d6565;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:1.2rem;background-image:none}.custom-select:disabled{color:#847c7c;background-color:#f2f2f2}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 2rem + 2px);padding-top:1rem;padding-bottom:1rem;padding-left:2rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + 1.3rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#61b0ff;box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#f2f2f2}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + 1.3rem + 2px);font-weight:400;background-color:#fff;border:1px solid #d9d2d0;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.65rem 1.2rem;line-height:1.5;color:#6d6565}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + 1.3rem);content:\"Browse\";background-color:#f2f2f2;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,112,224,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,112,224,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,112,224,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0070e0;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#94c9ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#e4e0df;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0070e0;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#94c9ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#e4e0df;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#0070e0;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#94c9ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#e4e0df;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#a8a0a0}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#a8a0a0}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#a8a0a0}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#847c7c;pointer-events:none;cursor:default}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#f2f2f2 #f2f2f2 #e4e0df}.nav-tabs .nav-link.disabled{color:#847c7c;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#6d6565;background-color:#fff;border-color:#e4e0df #e4e0df #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0070e0}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#0070e0;background-color:#fff;border:1px solid #e4e0df}.page-link:hover{z-index:2;color:#004a94;text-decoration:none;background-color:#f2f2f2;border-color:#e4e0df}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#0070e0;border-color:#0070e0}.page-item.disabled .page-link{color:#847c7c;pointer-events:none;cursor:auto;background-color:#fff;border-color:#e4e0df}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:500;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#ff893e}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#ff6a0b}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,137,62,.5)}.badge-secondary{color:#4a4a4a;background-color:#e4e0df}a.badge-secondary:focus,a.badge-secondary:hover{color:#4a4a4a;background-color:#cdc5c3}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(228,224,223,.5)}.badge-success{color:#fff;background-color:#17ad41}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#118030}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,173,65,.5)}.badge-info{color:#fff;background-color:#0070e0}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#0057ad}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,112,224,.5)}.badge-warning{color:#4a4a4a;background-color:#ffd630}a.badge-warning:focus,a.badge-warning:hover{color:#4a4a4a;background-color:#fcca00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,214,48,.5)}.badge-danger{color:#fff;background-color:#e84031}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#cf2617}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(232,64,49,.5)}.badge-light{color:#4a4a4a;background-color:#f7f7f7}a.badge-light:focus,a.badge-light:hover{color:#4a4a4a;background-color:#dedede}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem hsla(0,0%,96.9%,.5)}.badge-dark{color:#fff;background-color:#4a4a4a}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#313131}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(74,74,74,.5)}.tooltip{margin:0;font-family:Rubik,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;text-align:left;letter-spacing:normal;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#1c1c1c}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#1c1c1c}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#1c1c1c}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#1c1c1c}.tooltip-inner{padding:.25rem .5rem;background-color:#1c1c1c;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Rubik,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#1c1c1c}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#ff893e!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#ff6a0b!important}.bg-secondary{background-color:#e4e0df!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#cdc5c3!important}.bg-success{background-color:#17ad41!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#118030!important}.bg-info{background-color:#0070e0!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#0057ad!important}.bg-warning{background-color:#ffd630!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#fcca00!important}.bg-danger{background-color:#e84031!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#cf2617!important}.bg-light{background-color:#f7f7f7!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dedede!important}.bg-dark{background-color:#4a4a4a!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#313131!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #d9d2d0!important}.border-top{border-top:1px solid #d9d2d0!important}.border-right{border-right:1px solid #d9d2d0!important}.border-bottom{border-bottom:1px solid #d9d2d0!important}.border-left{border-left:1px solid #d9d2d0!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#ff893e!important}.border-secondary{border-color:#e4e0df!important}.border-success{border-color:#17ad41!important}.border-info{border-color:#0070e0!important}.border-warning{border-color:#ffd630!important}.border-danger{border-color:#e84031!important}.border-light{border-color:#f7f7f7!important}.border-dark{border-color:#4a4a4a!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\"\";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:500!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#ff893e!important}a.text-primary:focus,a.text-primary:hover{color:#f15d00!important}.text-secondary{color:#e4e0df!important}a.text-secondary:focus,a.text-secondary:hover{color:#c1b8b6!important}.text-success{color:#17ad41!important}a.text-success:focus,a.text-success:hover{color:#0e6928!important}.text-info{color:#0070e0!important}a.text-info:focus,a.text-info:hover{color:#004a94!important}.text-warning{color:#ffd630!important}a.text-warning:focus,a.text-warning:hover{color:#e3b600!important}.text-danger{color:#e84031!important}a.text-danger:focus,a.text-danger:hover{color:#b82215!important}.text-light{color:#f7f7f7!important}a.text-light:focus,a.text-light:hover{color:#d1d1d1!important}.text-dark{color:#4a4a4a!important}a.text-dark:focus,a.text-dark:hover{color:#242424!important}.text-body{color:#1c1c1c!important}.text-muted{color:#a8a0a0!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #a8a0a0;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #e4e0df!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#d9d2d0}.table .thead-dark th{color:inherit;border-color:#d9d2d0}}:root{--gray-100:#f7f7f7;--gray-200:#f2f2f2;--gray-300:#e4e0df;--gray-400:#d9d2d0;--gray-500:#a8a0a0;--gray-600:#847c7c;--gray-700:#6d6565;--gray-800:#4a4a4a;--gray-900:#1c1c1c;--border:#d9d2d0;--divider:#e4e0df;--weight-bold:500}.Select{position:relative}.Select,.Select div,.Select input,.Select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.Select.is-disabled>.Select-control{background-color:#f2f2f2}.Select.is-disabled>.Select-control:hover{box-shadow:none}.Select.is-disabled .Select-arrow-zone{cursor:default;pointer-events:none}.Select-control{background-color:#fff;border-radius:.25rem;border:1px solid #d9d2d0;color:#6d6565;cursor:default;display:table;border-spacing:0;border-collapse:separate;height:calc(1.5em + 1.3rem + 2px);outline:none;overflow:hidden;position:relative;width:100%}.Select-control:hover{box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.Select-control .Select-input:focus{outline:none}.is-searchable.is-open>.Select-control{cursor:text}.is-open>.Select-control{border-bottom-right-radius:0;border-bottom-left-radius:0;background:#fff;border-color:#c2b7b4 #d9d2d0 #e4e0de}.is-open>.Select-control .Select-arrow{top:-2px;border-color:transparent transparent #f2f2f2;border-width:0 5px 5px}.is-searchable.is-focused:not(.is-open)>.Select-control{cursor:text}.is-focused:not(.is-open)>.Select-control{border-color:#61b0ff #7abdff #7abdff;box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.Select--single>.Select-control .Select-value,.Select-placeholder{bottom:0;color:#a8a0a0;left:0;line-height:calc(1.5em + 1.3rem);padding-left:10px;padding-right:10px;position:absolute;right:0;top:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-value.is-clearable.Select--single>.Select-control .Select-value{padding-right:calc(1.5em + 1.3rem)/225px}.has-value.is-pseudo-focused.Select--single>.Select-control .Select-value .Select-value-label,.has-value.Select--single>.Select-control .Select-value .Select-value-label{color:#6d6565}.has-value.is-pseudo-focused.Select--single>.Select-control .Select-value a.Select-value-label,.has-value.Select--single>.Select-control .Select-value a.Select-value-label{cursor:pointer;text-decoration:none}.has-value.is-pseudo-focused.Select--single>.Select-control .Select-value a.Select-value-label:focus,.has-value.is-pseudo-focused.Select--single>.Select-control .Select-value a.Select-value-label:hover,.has-value.Select--single>.Select-control .Select-value a.Select-value-label:focus,.has-value.Select--single>.Select-control .Select-value a.Select-value-label:hover{color:#0f0f0f;outline:none;text-decoration:underline}.Select-input{height:calc(1.5em + 1.3rem);padding-left:10px;padding-right:10px;vertical-align:middle}.Select-input>input{background:none transparent;border:0;box-shadow:none;cursor:default;display:inline-block;font-family:inherit;font-size:inherit;margin:0;outline:none;line-height:14px;padding:calc(1.5em + 1.3rem)-14/2-2 0 calc(1.5em + 1.3rem)-14/22;-webkit-appearance:none}.is-focused .Select-input>input{cursor:text}.has-value.is-pseudo-focused .Select-input{opacity:0}.Select-control:not(.is-searchable)>.Select-input{outline:none}.Select-loading-zone{cursor:pointer;display:table-cell;text-align:center}.Select-loading,.Select-loading-zone{position:relative;vertical-align:middle;width:16px}.Select-loading{-webkit-animation:Select-animation-spin .4s linear infinite;-o-animation:Select-animation-spin .4s infinite linear;animation:Select-animation-spin .4s linear infinite;height:16px;box-sizing:border-box;border-radius:50%;border:2px solid #d9d2d0;border-right-color:#6d6565;display:inline-block}.Select-clear-zone{-webkit-animation:Select-animation-fadeIn .2s;-o-animation:Select-animation-fadeIn .2s;animation:Select-animation-fadeIn .2s;color:#999;cursor:pointer;display:table-cell;position:relative;text-align:center;vertical-align:middle;width:calc(1.5em + 1.3rem)/2}.Select-clear-zone:hover{color:#1c1c1c}.Select-clear{display:inline-block;font-size:calc(1.5em + 1.3rem + 2px)/2;line-height:1}.Select--multi .Select-clear-zone{width:calc(1.5em + 1.3rem)/2}.Select--multi .Select-multi-value-wrapper{display:inline-block}.Select .Select-aria-only{display:inline-block;height:1px;width:1px;margin:-1px;clip:rect(0,0,0,0);overflow:hidden;float:left}.Select-arrow-zone{cursor:pointer;display:table-cell;position:relative;text-align:center;vertical-align:middle;width:25px;padding-right:5px}.Select-arrow{border-color:#f2f2f2 transparent transparent;border-style:solid;border-width:5px 5px 2.5px;display:inline-block;height:0;width:0;position:relative}.is-open .Select-arrow,.Select-arrow-zone:hover>.Select-arrow{border-top-color:#e4e0df}@-webkit-keyframes Select-animation-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes Select-animation-fadeIn{0%{opacity:0}to{opacity:1}}.Select-menu-outer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem;background-color:#fff;border:1px solid #d9d2d0;border-top-color:#ece9e8;box-shadow:0 .5rem 1rem rgba(0,0,0,.175);box-sizing:border-box;margin-top:-1px;max-height:400px;position:absolute;top:100%;width:100%;z-index:1000;-webkit-overflow-scrolling:touch}.Select-menu{max-height:398px;overflow-y:auto}.Select-option{box-sizing:border-box;background-color:#fff;color:#6d6565;cursor:pointer;display:block;padding:.65rem 10px}.Select-option:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.Select-option.is-selected{background-color:#0070e0;color:#fff}.Select-option.is-focused{background-color:#f7f7f7;color:#6d6565}.Select-option.is-disabled{color:#fff;cursor:default}.Select-noresults{box-sizing:border-box;color:#1c1c1c;cursor:default;display:block;padding:.65rem 10px}.Select--multi .Select-input{vertical-align:middle;margin-left:10px;padding:0}.Select--multi.has-value .Select-input{margin-left:5px}.Select--multi .Select-value{background-color:#0070e0;border-radius:3px;border:1px solid #0070e0;color:#fff;display:inline-block;font-size:.9em;margin-left:5px;margin-top:5px;vertical-align:top}.Select--multi .Select-value-icon,.Select--multi .Select-value-label{display:inline-block;vertical-align:middle}.Select--multi .Select-value-label{border-bottom-right-radius:3px;border-top-right-radius:3px;cursor:default;padding:2px 5px}.Select--multi a.Select-value-label{color:#fff;cursor:pointer;text-decoration:none}.Select--multi a.Select-value-label:hover{text-decoration:underline}.Select--multi .Select-value-icon{cursor:pointer;border-bottom-left-radius:3px;border-top-left-radius:3px;border-right:1px solid #0070e0;padding:1px 5px 3px}.Select--multi .Select-value-icon:focus,.Select--multi .Select-value-icon:hover{background-color:#0063c7;color:#f2f2f2}.Select--multi .Select-value-icon:active{background-color:#0070e0}.Select--multi.is-disabled .Select-value{background-color:#fcfcfc;border:1px solid #e3e3e3;color:#333}.Select--multi.is-disabled .Select-value-icon{cursor:not-allowed;border-right:1px solid #e3e3e3}.Select--multi.is-disabled .Select-value-icon:active,.Select--multi.is-disabled .Select-value-icon:focus,.Select--multi.is-disabled .Select-value-icon:hover{background-color:#fcfcfc}@keyframes Select-animation-spin{to{transform:rotate(1turn)}}@-webkit-keyframes Select-animation-spin{to{-webkit-transform:rotate(1turn)}}.Icons-download-box{height:120px;width:120px}.Icons-up-and-down-carets{fill:#6d6565;height:16px;width:16px}.Icons-man{fill:#6d6565;height:16px;width:15px}.Icons-woman{fill:#6d6565;height:18px;width:12px}.Icons-history{fill:#a8a0a0;height:16px;width:15px}.Icons-pdf,.Icons-xls,.Icons-xls-inactive{height:28px;width:23px}.Icons-royalty-share-logo{height:40px;width:354px}.Icons-error-404{height:288px;width:486px}@keyframes roll{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.Icons-aan{height:12px;width:32px}.Icons-admin{height:13px;width:20px}.Icons-advertise{height:65px;width:68px}.Icons-analytics{height:67px;width:68px}.Icons-apple-music{height:16px;width:16px}.Icons-artwork-empty{height:81px;width:80px}.Icons-attention{height:16px;width:16px}.Icons-attention-error{fill:#d54236}.Icons-attention-incomplete{fill:#ff893e}.Icons-audio-player-mute{fill:#fff;height:21px;width:26px}.Icons-audio-player-next-lite{height:12px;width:12px}#audio-player-next-lite-path{fill:#6d6565}.Icons-audio-player-next{height:30px;width:30px}#audio-player-next-circle{fill:#6d6565}#audio-player-next-path{fill:#fff}.Icons-audio-player-pause-lite{height:14px;width:12px}#audio-player-pause-lite-path{fill:#ff893e}.Icons-audio-player-pause,.Icons-audio-player-play{height:30px;width:30px}#audio-player-play-circle{fill:#6d6565}#audio-player-play-triangle{fill:#fff}.Icons-audio-player-previous-lite{height:12px;width:12px}#audio-player-previous-lite-path{fill:#6d6565}.Icons-audio-player-previous{height:30px;width:30px}#audio-player-previous-circle{fill:#6d6565}#audio-player-previous-path{fill:#fff}.Icons-audio-player-volume{fill:#fff;height:20px;width:23px}.Icons-calendar{height:15px;width:15px}.Icons-camera{height:16px;width:16px}.Icons-catalog{height:50px;width:50px}.Icons-chevron{fill:#4a4a4a;height:16px;vertical-align:middle;width:16px}.Icons-clean-version{height:15px;margin-left:10px;position:relative;top:3px;width:42px}.Icons-close-round{height:25px;width:25px}.Icons-close{cursor:pointer;fill:#bab7b7;height:16px;width:16px}.Icons-complete-checkmark{fill:#78a22f;height:16px;width:16px}.Icons-deezer,.Icons-digital-audio{height:16px;width:16px}.Icons-digital-audio{fill:#6d6565}.Icons-digital{height:57px;width:55px}.Icons-down-direction-arrow,.Icons-download-symbol,.Icons-edit{fill:#6d6565;height:16px;width:16px}.Icons-explicit{height:15px;margin-left:10px;position:relative;top:3px;width:54px}.Icons-external-link{fill:#6d6565}.Icons-external-link,.Icons-facebook,.Icons-filled-chevron-down{height:16px;width:16px}.Icons-filled-chevron-up,.Icons-film{height:57px;width:55px}.Icons-gear{height:16px;width:16px}.Icons-go-to-catalog{height:54px;width:66px}.Icons-info{fill:#a8a0a0;height:12px;margin-left:6px;margin-right:6px;width:12px}.Icons-instagram{height:16px;width:16px}.Icons-left-pagination-arrow{fill:#404040;height:13px;width:8px}.Icons-link{height:16px;width:16px}.Icons-loading-arrows{animation:roll 1.25s ease infinite;fill:#a8a0a0;height:20px;width:15px}.Icons-loading-ring{height:120px;width:120px}.Icons-logo-and-name{height:40px;width:110px}.Icons-logo-footer{fill:#fff;height:29px;width:21px}.Icons-logo{height:32px;width:23px}.Icons-logout{height:12px;width:20px}.Icons-maintenance{height:131px;width:220px}.Icons-new-product{height:67px;width:68px}.Icons-physical-audio{fill:#6d6565;height:16px;width:16px}.Icons-physical{height:57px;width:55px}.Icons-play{fill:#6d6565;height:12px;width:9px}.Icons-playlist-placeholder{height:135px;width:135px}.Icons-plus{fill:#6d6565;height:16px;width:16px}.Icons-profile{height:13px;width:15px}.Icons-refresh{fill:#6d6565;height:16px;width:16px}.Icons-right-direction-arrow{height:22px;width:12px}.Icons-right-pagination-arrow{fill:#404040;height:13px;width:8px}.Icons-search{fill:#4a4a4a;height:16px;width:16px}.Icons-server-error{height:50px;width:80px}.Icons-spotify{height:16px;width:16px}.Icons-status{height:12px;width:12px}.Icons-status-red{fill:#e84031}.Icons-status-green{fill:#17ad41}.Icons-status-blue{fill:#0070e0}.Icons-status-orange{fill:#ff893e}.Icons-status-yellow{fill:#ffd630}.Icons-stop{fill:#026ead;height:8px;width:8px}.Icons-three-dots{fill:#6d6565;height:30px;width:30px}.Icons-three-right-directed-arrows{height:16px;width:30px}.Icons-tracks-complete-checkmark{fill:#d9d2d0}.Icons-transparent-logo{height:60px;width:60px}.Icons-trash-can{fill:#6d6565}.Icons-trash-can,.Icons-triple-checkmark{height:16px;width:16px}.Icons-twitter{height:16px;width:14px}.Icons-up-and-down-arrows{fill:#9b9b9b;height:20px;width:8px}.Icons-up-direction-arrow{fill:#6d6565;height:16px;width:16px}.Icons-upload{height:16px;margin-right:5px;vertical-align:text-top;width:16px}.Icons-video{fill:#6d6565;height:16px;width:16px}.Icons-view-more-next-arrow{fill:#026ead;height:16px;width:16px}.Icons-western-union{height:48px;width:207px}.Icons-youtube{height:12px;width:16px}.FormField-note{color:#bab7b6;font-size:13px;font-style:italic;margin-top:10px}.FormField-required{margin-left:6px}.FormField-errorMessage{display:block}.FormField-labelWrapper:after{clear:both;content:\"\";display:block}.FormField-labelAppendix{float:right}.FormField-note{font-size:12px;font-style:normal}.form-label,.FormField-label{color:#a8a0a0;font-size:12px;font-weight:500;letter-spacing:1px;text-transform:uppercase}.FormField-group-has-error{color:#d46258;position:relative}.FormField-group-has-error .DateField-form-control,.FormField-group-has-error .FormField-form-control,.FormField-group-has-error .Select-control{border-color:#d46258}.FormField-group-has-error .FormField-label,.FormField-group-has-error .Select-placeholder{color:#d46258}.ToggleInput-label{color:#a8a0a0;cursor:pointer;display:inline-block;font-size:9px;font-weight:500;letter-spacing:.3px;transition:color .2s ease-in-out;vertical-align:middle}.ToggleInput-label-enabled{color:#338ee8}.ToggleInput-toggle-bg{background-color:#338ee8;border-radius:20px;cursor:pointer;display:inline-block;height:18px;margin-left:8px;margin-right:8px;position:relative;vertical-align:middle;width:30px}.ToggleInput-toggle-bg-disabled{background-color:#bab7b7}.ToggleInput-toggle{background-color:#fff;border-radius:7px;height:14px;position:absolute;top:2px;transition:left .2s ease-in-out;width:14px}.ToggleInput-toggle-left{left:3px}.ToggleInput-toggle-right{left:13px}.Tile{border:1px solid #d9d2d0;border-radius:4px;height:100%;margin-bottom:15px;padding:15px}.Tile:hover{background-color:#f2f2f2;cursor:pointer}.Tile-image-column{width:30%}.Tile-image-column-inner{background-color:#f2f2f2;background-size:cover;border-radius:3px;height:0;padding:100% 0 0}.Tile-image-column+.Tile-column{padding-left:0;width:70%}.CountriesCounter{font-size:medium}.GlobalCountriesSelector{align-items:baseline;display:flex;flex-direction:row;justify-content:flex-start;padding-top:10px}.GlobalCountriesSelector-all,.GlobalCountriesSelector-none{font-size:14px;padding:0 5px;text-transform:capitalize}.GlobalCountriesSelector :first-child{font-size:14px}.GlobalCountriesSelector-all,.GlobalCountriesSelector-all:hover{border-right:1px solid #bab7b7}.GlobalCountriesSelector-all:hover,.GlobalCountriesSelector-none:hover{cursor:pointer}.ListHeaderSearch-field{border:1px solid #bab7b7;border-radius:5px;font-size:14px;height:35px;padding:5px 20px 5px 30px;width:100%}.ListHeaderSearch-search{margin-left:10px;margin-top:10px;position:absolute}.ListHeaderSearch-close{cursor:pointer;margin-left:-30px;margin-top:5px;position:absolute}.ListHeader{border-bottom:1px solid #bab7b7;padding:15px}.ListHeader-list-type{display:flex;flex-direction:row;justify-content:space-between;margin:0 0 10px}.ListHeader-header-text{font-size:16px;margin:0}.MoveCountryButton{align-items:center;display:flex;justify-content:center}.MoveCountryButton-icons{flex-grow:0}.MoveCountryButton-reverse{fill:#fff;transform:rotateY(180deg)}.MoveCountryButton-text{flex-grow:3;font-size:14px}.TerritoriesListManager{background-color:#fff;padding:0}.TerritoriesListManager-header{border-bottom:1px solid #bab7b7;padding:15px}.TerritoriesListManager-territories-list{height:279px;overflow-x:hidden;overflow-y:scroll}.TerritoriesListManager-undo-message{background:#d2e3f8;border-top:none;padding:10px 15px}.TerritoriesListManager-move-button{background:#468ee5;color:#fff;cursor:pointer;font-size:16px;margin:20px 0 0;padding:10px 25px;text-align:center;text-transform:uppercase}.ContinentItem-container{background-color:#f9f9f9;border-top:1px solid #a2a2a2;display:flex;font-weight:700;margin:0;padding:5px 25px}.ContinentItem-container+.ContinentItem-container{margin-top:0}.ContinentItem-container .ContinentItem-label{color:#404040;cursor:pointer;display:inline-block;font-size:14px;font-weight:500;padding:5px 10px;text-transform:none;user-select:none}.ContinentItem-container .ContinentItem-label.ContinentItem-disabled{color:#9b9b9b}.ContinentItem-country{border-left:1px solid #a2a2a2;border-right:1px solid #a2a2a2;margin-left:25px;margin-right:25px}.ContinentItem-country .ContinentItem-label{font-weight:400;width:100%}.ContinentItem-label-inverted{transform:rotateX(180deg)}.ContinentItem-fullWidth{flex-grow:2;text-align:right}.ContinentItem [disabled]:after{background-color:#bab7b7;border-radius:5px;content:\"\";height:12px;position:absolute;width:12px}.ContinentItem-bordered{border-bottom:1px solid #a2a2a2}.TerritoriesList-empty{margin:20% 0;text-align:center;width:100%}.TerritoriesList .ContinentItem-container:first-child+.ContinentItem-country,.TerritoriesList .ContinentItem:first-child .ContinentItem-container:not(.ContinentItem-country){border-top:none}.TerritoriesList .ContinentItem:last-child .ContinentItem-container.ContinentItem-country:last-child,.TerritoriesList .ContinentItem:last-child .ContinentItem-container:not(.ContinentItem-country){border-bottom:1px solid #a2a2a2}.UndoLink{display:flex;flex-direction:row;justify-content:space-between}.UndoLink-link{padding:0 5px}.UndoLink-link.btn:not(.disabled):hover{box-shadow:none}.TagsInput{border:1px solid #bab7b7;border-radius:3px;height:auto!important;overflow:hidden;padding:5px 5px 0!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.TagsInput-disabled{background-color:#ececec;cursor:not-allowed;opacity:1;pointer-events:none}.TagsInput-focused{border-color:#61b0ff;box-shadow:0 0 0 .2rem rgba(0,112,224,.25)}.TagsInput-input{background:transparent;border:0;font-family:inherit;line-height:1.5;margin-top:1px;max-width:inherit;outline:none;padding:5px;width:auto}.TagsInput-input,.TagsInput-tag{font-size:1rem;margin-bottom:5px}.TagsInput-tag{background-color:#0071ce;border:1px solid #0071ce;border-radius:3px;color:#fff;display:inline-block;margin-right:5px;padding:2px 5px;user-select:none}.TagsInput-tag a:before{content:\"✕\";padding-right:5px}.TagsInput-remove{cursor:pointer;margin-left:7px;opacity:.8;transition:opacity .12s ease}.TagsInput-remove:hover{opacity:1}.SnapshotItem{border-right:1px solid #d9d2d0;padding:0;position:relative;text-align:center}.SnapshotItem:last-child{border-right:none}.SnapshotItem .Icons-info{vertical-align:text-top}.SnapshotItem-line{margin:0 auto 5px;width:15px}.SnapshotItem-title{color:#a2a2a2;font-weight:500}.SnapshotItem-value{margin-top:0}.Snapshot{color:#868686;display:flex;justify-content:space-around;padding-bottom:20px;padding-top:20px;text-transform:uppercase}.SingleDatePickerInput__calendar-icon{float:right;margin:5px 5px 0 0}.DayPickerNavigation--horizontal .DayPickerNavigation__next,.DayPickerNavigation--horizontal .DayPickerNavigation__prev{background:linear-gradient(180deg,hsla(0,0%,100%,.5),#f2f2f2),linear-gradient(#fff,#fff);border:1px solid #d9d2d0;border-radius:3px;color:#6d6565;padding-left:15px;padding-right:15px}.DayPickerNavigation--horizontal .DayPickerNavigation__prev{border-bottom-left-radius:4px;border-top-left-radius:4px}.DayPickerNavigation--horizontal .DayPickerNavigation__next{border-bottom-right-radius:4px;border-top-right-radius:4px}.DateInput-section{position:relative}.DateInput-section .DayPicker{left:0;position:absolute;top:40px;z-index:9000}.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--selected-span .CalendarDay__button,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--today .CalendarDay__button{color:#4a4a4a}.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--selected-span.CalendarDay--hovered .CalendarDay__button,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--selected-span.CalendarDay--selected-end .CalendarDay__button,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--selected-span.CalendarDay--selected-start .CalendarDay__button,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--today.CalendarDay--hovered .CalendarDay__button,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--today.CalendarDay--selected-end .CalendarDay__button,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--today.CalendarDay--selected-start .CalendarDay__button{color:#fff}.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--selected-span.CalendarDay--hovered,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--selected-span.CalendarDay--selected-start,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--today.CalendarDay--hovered,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--today.CalendarDay--selected-start{background-color:#026ead}.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--selected-span.CalendarDay--after-hovered-start,.DateInput-section .CalendarDay.CalendarDay--valid.CalendarDay--today.CalendarDay--after-hovered-start{background-color:#e2f4ff;border:1px double #b0e1fe}.DateInput-container{position:relative}.DateInput-container .Icons-calendar{pointer-events:none;position:absolute;right:7px;top:7px}.DateInput-container.in-range .Icons-calendar{right:22px}.DateInput-container.dash-after:after{content:\"—\";display:inline-block;position:absolute;right:-15px;text-align:center;top:7px;width:30px}.SearchRow-option{border-bottom:1px solid #d1d0d0;padding:5px 10px;display:flex}.SearchRow-option-img{background-color:#e4e0df;margin-right:10px}.SearchRow-option-img,.SearchRow-option-img-cover{height:50px;width:50px}.SearchRow-option-content{display:flex;flex:1;flex-direction:column}.SearchRow-option-artist{color:#a2a2a2}.SearchRow-option-title .highlighted{color:#1c1c1c;font-weight:500}.SearchRow{display:flex}.SearchRow-fixed{padding:20px 0;position:fixed;top:0;width:inherit;z-index:9999}.SearchRow-input{position:relative;width:100%}.SearchRow-input .Icons-search{position:absolute;right:10px;top:calc(50% - 8px)}.SearchRow-heading{color:#868686;font-weight:500;padding:5px 10px}.SearchRow-empty,.SearchRow-error,.SearchRow-loading{padding:40px 60px;text-align:center}.SearchRow .LoadingIndicator{transform:scale(.5)}.SearchRow .dropdown>.dropdown-toggle{border-bottom-right-radius:0;border-right:none;border-top-right-radius:0}.SearchRow .Select-control{border-bottom-left-radius:0;border-top-left-radius:0}.SearchRow .Select-clear-zone{margin-right:30px}.DayPicker .DayPickerNavigation__next:focus,.DayPicker .DayPickerNavigation__prev:focus{box-shadow:0 0 4px 2px #468ee5}.DayPicker .CalendarDay--blocked-out-of-range .CalendarDay__button:focus,.DayPicker .CalendarDay--blocked .CalendarDay__button:focus{background-color:#e0dad8;color:#6d6565}.DayPicker .CalendarDay--valid .CalendarDay__button:focus{background-color:#e0dad8}.DayPicker .CalendarDay--valid.CalendarDay--selected-end .CalendarDay__button:focus,.DayPicker .CalendarDay--valid.CalendarDay--selected-span .CalendarDay__button:focus,.DayPicker .CalendarDay--valid.CalendarDay--selected-start .CalendarDay__button:focus,.DayPicker .CalendarDay--valid.CalendarDay--today .CalendarDay__button:focus{background-color:#026ead;color:#fff}.RadioButtonGroup{align-items:flex-start;display:flex;flex-flow:column}.RadioButton-label,.RadioButton-wrapper{align-items:center;color:#4a4a4a;display:flex;flex-flow:row;font-size:14px;font-weight:400;margin:0 0 5px;text-transform:none}.RadioButton-label:last-child{margin-bottom:0}.RadioButton-radio{margin:1px 8px 0 0!important;position:relative;top:-1px}.MaintenanceScreen-centered,.MaintenanceScreen-content,.MaintenanceScreen-graphic{display:block;margin:0 auto}.MaintenanceScreen{background:#062b40;height:100%;width:100%}.MaintenanceScreen-logo{padding-bottom:50px;padding-top:10%;text-align:center}.MaintenanceScreen-content{background:#093c59;border-radius:10px;padding:60px;text-align:center;width:650px}.MaintenanceScreen-graphic{width:200px}.MaintenanceScreen-subtitle,.MaintenanceScreen-title{color:#f9f9f9}.MaintenanceScreen-title{font-size:16px;font-weight:700;margin:50px 0 15px}.MaintenanceScreen-subtitle{font-size:14px}.MaintenanceScreen-highlighted{color:#ff893e}.MainNavigation .header-main{text-align:inherit}.MainNavigation .header-main li[role=presentation]{display:inline-block}.MainNavigation .header-main li[role=presentation]>a{padding:0 15px}.MainNavigation .header-main .dropdown{display:inline-block}.MainNavigation .header-main .dropdown-toggle{padding-bottom:0;padding-top:0}.MainNavigation .header-main .nav{float:left}.MainNavigation .header-main .navigation-right{float:right}.LoadingIndicator{position:relative}.LoadingIndicator-dots{box-sizing:content-box;display:flex;flex-wrap:wrap;height:36px;justify-content:center;margin:24px 0;overflow:hidden;padding-left:12px;padding-right:12px;width:100%}.LoadingIndicator-dots-small{height:12px;margin:0;padding:0}.LoadingIndicator-outer{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;visibility:visible;width:100%}.LoadingIndicator-loader-dot{animation:LoadingIndicator-scale-dot 1.2s ease-out infinite;background:#9b9b9b;border-radius:50%;height:36px;margin:0 4px;opacity:.75;transform:scale(.5);visibility:inherit;width:36px}.LoadingIndicator-loader-dot:nth-of-type(2){animation-delay:.2s}.LoadingIndicator-loader-dot:nth-of-type(3){animation-delay:.3s}.LoadingIndicator-loader-dot:nth-of-type(4){animation-delay:.4s}.LoadingIndicator-loader-dot:nth-of-type(5){animation-delay:.5s}.LoadingIndicator-loader-dot-small{height:12px;margin:0 2px;width:12px}@keyframes LoadingIndicator-scale-dot{0%{transform:scale(.5)}25%{transform:scale(1)}75%{transform:scale(.5)}to{transform:scale(.5)}}.LoadingIndicator.LoadingIndicator-fullscreen{background-color:#000;bottom:0;left:0;opacity:.5;position:fixed;right:0;top:0;z-index:100000}.LoadingIndicator.LoadingIndicator-fullscreen .LoadingIndicator-dots{position:absolute;top:200px}.LoadingIndicator.LoadingIndicator-fullscreen .LoadingIndicator-loader-dot{background:#f2f2f2}.GroupedBarChartXaxis-line{stroke:#a8a0a0}.GroupedBarChartXaxis-label{text-anchor:middle;transform:translateY(-4px)}.GroupedBarChartYaxis-label{transform:translate(9px,4px)}.GroupedBarChartYaxis-line,.GroupedBarChartYaxis-tick{stroke:#a8a0a0}.GroupedBarChart-bar-value{font-weight:500;text-anchor:middle;transform:translateY(-5px)}.FullWidthButton{margin-top:10px;text-align:center}.FullWidthButton-button-container{background:#f2f2f2;padding:20px}.FullWidthButton-button{margin:0 auto;max-width:40%;overflow:hidden}.FullWidthButton-add-note{margin:10px 0 20px}.FullWidthButton-disabled-layout{margin:0 auto;max-width:40%}.DropdownButton .btn-group>.btn{float:none;font-size:12px;padding:13px 20px 11px}.DropdownButton .Icons-chevron{fill:#fff;margin-left:20px}.DropdownButton .dropdown-menu{margin-top:7px;padding-top:5px}.DropdownButton .dropdown-menu>li>a{color:#6d6565}.DropdownButton .dropdown-menu>.active>a{background-color:#e5f0f6;color:#4a4a4a}.DropdownButton .dropdown-menu>.active>a:focus,.DropdownButton .dropdown-menu>.active>a:hover{background-color:#f2f2f2;color:#4a4a4a}.Doughnut-chart-total{fill:#4a4a4a;font-size:2.8rem;font-weight:300;text-anchor:middle}.Doughnut-chart-title{fill:#4a4a4a;font-size:1.2rem;font-weight:400;text-anchor:middle}.Doughnut-chart-tx-amount{fill:#4a4a4a;font-size:1.8rem;font-weight:300}.Doughnut-chart-tx-amount-strong{font-weight:400}.Doughnut-chart-tx-type{fill:#a2a2a2;font-weight:300}.Doughnut-chart-tx-line{fill:none;stroke:#a2a2a2}.DismissibleAlert{align-items:center;background-color:#fff3eb;border-radius:3px;display:flex;flex-direction:row}.DismissibleAlert-danger-title,.DismissibleAlert-success-title,.DismissibleAlert-warning-title{font-size:14px;font-weight:500;line-height:16px;margin-top:0}.DismissibleAlert-danger-subtitle,.DismissibleAlert-success-subtitle,.DismissibleAlert-warning-subtitle{line-height:20px}.DismissibleAlert-danger-description,.DismissibleAlert-success-description,.DismissibleAlert-warning-description{line-height:20px;margin-top:10px}.DismissibleAlert-danger-titles,.DismissibleAlert-success-titles,.DismissibleAlert-warning-titles{margin-bottom:12px;margin-top:12px}.DismissibleAlert-danger-button,.DismissibleAlert-success-button,.DismissibleAlert-warning-button{background:none;border:none;color:#026ead;font-weight:500;margin-left:auto;margin-right:20px;padding:0}.DismissibleAlert-danger .Icons-attention-error,.DismissibleAlert-danger .Icons-attention-incomplete,.DismissibleAlert-danger .Icons-complete-checkmark,.DismissibleAlert-success .Icons-attention-error,.DismissibleAlert-success .Icons-attention-incomplete,.DismissibleAlert-success .Icons-complete-checkmark,.DismissibleAlert-warning .Icons-attention-error,.DismissibleAlert-warning .Icons-attention-incomplete,.DismissibleAlert-warning .Icons-complete-checkmark{height:32px;margin-left:15px;margin-right:15px;width:32px}.DismissibleAlert-danger-title{color:#d54236}.DismissibleAlert-success{background-color:#f1f5ea}.DismissibleAlert-success-title{color:#78a22f}.DismissibleAlert-success .Icons-complete-checkmark{fill:#78a22f}.DismissibleAlert-warning-title{color:#ff893e}.DismissibleAlert-high .Icons-attention-error,.DismissibleAlert-high .Icons-attention-incomplete,.DismissibleAlert-high .Icons-complete-checkmark{align-self:flex-start;margin-top:15px}.DismissibleAlert-high-button{align-self:flex-start;margin-top:20px}.ClickableTable-row{cursor:pointer}.checkbox>.checkbox-input,.checkbox>label{margin-bottom:0;user-select:none}.checkbox>.checkbox-input:checked+label,.checkbox>.checkbox-input:not(:checked)+label{cursor:pointer;padding-left:22px;position:relative}.checkbox>.checkbox-input:checked+label:after,.checkbox>.checkbox-input:not(:checked)+label:after{padding-left:2px;padding-top:0}.checkbox>.checkbox-input:checked+label.partial:after,.checkbox>.checkbox-input:not(:checked)+label.partial:after{border-bottom:2px solid #026ead;border-radius:0;content:\" \";margin-left:3px;margin-top:-16px;width:10px}.ChartContainer{border:1px solid #d9d2d0;border-radius:3px;overflow:hidden;position:relative}.ChartInteractive .Circle{fill:#6d6565}.ChartInteractive .ChartContainer{border:none}.ChartInteractive .ChartContainer-svg{border:1px solid #d9d2d0;border-radius:3px;display:block;margin-top:10px;overflow:visible}.ChartInteractive .HoverLine{stroke:#a8a0a0;stroke-width:1}.ChartInteractive .ChartYaxis-label{fill:#a8a0a0;font-size:10px;position:relative;transform:translate(10px,3px)}.ChartInteractive .ChartXaxis-hover-text,.ChartInteractive .ChartXaxis-label{fill:#a8a0a0;font-size:10px;position:relative;transform:translate(-5px,-10px)}.ChartInteractive .ChartAreaPath{stroke:none}.ChartInteractive .Circle-text{fill:#6d6565}.ChartInteractive .NoGraphData{color:#6d6565;font-size:14px}.ChartInteractive .HoverSpot{position:absolute;z-index:100}.ChartInteractive .ChartGrid-x-line,.ChartInteractive .ChartGrid-y-line{fill:none;stroke:#f2f2f2;stroke-width:1}.ChartInteractive .ChartContainer,.ChartInteractive .ChartContainer-svg{overflow:visible}.ChartOverlayTrigger{fill-opacity:0;position:absolute;z-index:10000}.ChartXaxis-label{fill:#a8a0a0;font-size:10px;position:relative;transform:translate(-25px,-10px)}.ChartXaxis-hover-text{font-size:10px}.CharacterLimitIndicator-indicator{color:#a2a2a2;float:right}.CharacterLimitIndicator-indicator-error{color:#d46258}.CharacterLimitIndicator-message{display:inline;font-weight:700}.CharacterLimitIndicator-remaining{display:inline}.ButtonsRow{width:100%}.frc-alert{border-radius:.25rem;margin-bottom:10px;padding:10px}.frc-alert-inner{align-items:center;display:flex}.frc-alert-title{font-size:16px;font-weight:500;line-height:24px}.frc-alert-icon{align-self:flex-start;margin-right:10px}.frc-alert-icon svg{height:24px;width:24px}.frc-alert-children{font-size:14px;margin-right:1rem}.frc-alert-dismiss{align-items:center;align-self:flex-start;cursor:pointer;display:flex;height:24px;justify-content:center;margin-left:auto;opacity:.5;width:24px}.frc-alert-dismiss:hover{opacity:1}.frc-alert-variant-info{background:#e0f0ff;border:1px solid #c7e3ff}.frc-alert-variant-info .frc-alert-title{color:#0070e0}.frc-alert-variant-info .Glyph{fill:#0070e0}.frc-alert-variant-danger{background:#fceae9;border:1px solid #fad5d2}.frc-alert-variant-danger .frc-alert-title{color:#e84031}.frc-alert-variant-danger .Glyph{fill:#e84031}.frc-alert-variant-success{background:#e1fbe9;border:1px solid #b4f5c7}.frc-alert-variant-success .frc-alert-title{color:#17ad41}.frc-alert-variant-success .Glyph{fill:#17ad41}.frc-alert-variant-warning{background:#fff9e3;border:1px solid #ffefb0}.frc-alert-variant-warning .frc-alert-title{color:#1c1c1c}.frc-alert-variant-warning .Glyph{fill:#ff893e}.frc-alert-variant-warning .Close{fill:#ffd630}.badge{letter-spacing:.5px}.badge,.breadcrumb{text-transform:uppercase}.breadcrumb{list-style:none;margin-bottom:0;padding-left:0;font-weight:500;letter-spacing:1px}.breadcrumb a{color:#4a4a4a}.breadcrumb a:after{content:\">\";padding:0 1em}.breadcrumb-item,.breadcrumb a:after{display:inline-block;color:#a8a0a0}.btn{letter-spacing:1px;text-transform:uppercase;transition:none}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn-link{font-weight:500;padding-left:0;padding-right:0}.btn-link:hover{text-decoration:none}.btn-default,.btn-secondary{background:linear-gradient(-180deg,#fff,#f2f2f2 100%)}.btn-default.active:not(:disabled):not(.disabled),.btn-default.btn-active:not(:disabled):not(.disabled),.btn-default:active:not(:disabled):not(.disabled),.btn-default:not(:disabled):not(.disabled).active:focus,.btn-default:not(:disabled):not(.disabled):active:focus,.btn-secondary.active:not(:disabled):not(.disabled),.btn-secondary.btn-active:not(:disabled):not(.disabled),.btn-secondary:active:not(:disabled):not(.disabled),.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus{background:#e4e0df;box-shadow:inset 0 0 5px 0 rgba(0,0,0,.3);border-color:#a8a0a0}.btn .Glyph{fill:currentColor;vertical-align:text-bottom}.btn.icon-left .Glyph{margin-right:5px}.btn.icon-right .Glyph{margin-left:5px}.btn.icon-only{padding-left:.65rem;padding-right:.65rem}.btn.icon-only .Glyph{margin-left:2px;margin-right:2px}.btn-group-lg>.btn.icon-only,.btn.icon-only.btn-lg{padding-left:1rem;padding-right:1rem}.FRCControl-error-message{display:none;font-size:12px;color:#e84031}.FRCControl-Input{margin-bottom:4px}.FRCControl-append .form-control{border-bottom-right-radius:0;border-top-right-radius:0;display:inline-block;width:inherit}.FRCControl-append .btn{border-left:0;border-bottom-left-radius:0;border-top-left-radius:0;vertical-align:inherit}.was-validated .form-control.is-invalid,.was-validated .form-control:invalid,.was-validated .FRCControl-error .form-control,.was-validated .FRCControl-error .form-control:valid:focus,.was-validated .FRCControl-error .RichTextEditor,.was-validated .FRCControl-error .Select-control{border-color:#e84031}.was-validated .FRCControl-error-message{display:block}.form-control{padding-left:10px;padding-right:10px}.DayPicker .DayPicker-Month{margin:0}.DayPicker .DayPicker-NavButton--prev{margin-right:calc(100% - 4rem)}.DayPicker .DayPicker-Caption{display:table-caption!important;margin:0 auto 20px;padding:0;text-align:center;width:200px}.DayPicker .DayPicker-Footer{border-top:1px solid #f2f2f2;margin-top:1rem;padding-bottom:.75rem;padding-top:1.25rem;text-align:center}.DayPicker .DayPicker-Day{line-height:normal;padding:14px}.DayPicker .DayPicker-Day--today{color:#1c1c1c;font-weight:500}.DayPicker .DayPicker-Weekday{color:#4a4a4a;font-size:14px}.DayPicker .DayPicker-Month-Picker{margin-right:10px}.DayPicker .DayPicker-Month-Picker,.DayPicker .DayPicker-Year-Picker{display:inline-block;height:28px}.DayPicker-left-arrow,.DayPicker-right-arrow{background:none;border:0;height:28px;position:absolute;top:0;width:28px}.DayPicker-left-arrow svg,.DayPicker-right-arrow svg{height:16px;margin-top:-3px;opacity:.6;transition:opacity .2s ease;width:16px}.DayPicker-left-arrow svg:hover,.DayPicker-right-arrow svg:hover{opacity:1}.DayPicker-left-arrow{left:0}.DayPicker-right-arrow{right:0}.DayPickerInput{position:relative}.DayPickerInput .Icons-chevron{margin-left:5px}.DayPickerInput .DayPicker-wrapper{padding-bottom:0}.DayPickerInput-icon{align-items:center;bottom:0;display:flex;padding:.65rem 1.2rem;pointer-events:none;position:absolute;right:0;top:0}.DayPickerInput-icon .Glyph{fill:#d9d2d0}.DayPickerInput-input:focus+.DayPickerInput-icon .Glyph{fill:#a8a0a0}.DayPickerInput .DayPickerInput-Overlay{border-radius:3px;box-shadow:0 10px 25px 0 rgba(0,0,0,.3);padding:20px 20px 10px;z-index:5}.DropdownToggleChevron{margin-left:.5rem;display:inline-flex;align-items:center}.DropdownToggleChevron .Glyph{fill:currentColor}.dropdown-toggle:after{display:none}.dropdown-toggle.btn-block .DropdownToggleLabel{margin-right:auto}.DropdownToggleContent{display:flex}.DropdownIconOnly .DropdownToggleContent{line-height:1}.DropdownIconOnly .btn,.DropdownIconOnly .btn-secondary{background:transparent;border:0;padding:.65rem;border-radius:100px}.DropdownIconOnly .btn-secondary:focus,.DropdownIconOnly .btn-secondary:hover,.DropdownIconOnly .btn-secondary[aria-expanded=true],.DropdownIconOnly .btn:focus,.DropdownIconOnly .btn:hover,.DropdownIconOnly .btn[aria-expanded=true]{background:#f2f2f2}.DropdownIconOnly .btn-secondary.active,.DropdownIconOnly .btn-secondary:active,.DropdownIconOnly .btn-secondary:active:not(:disabled):not(.disabled),.DropdownIconOnly .btn.active,.DropdownIconOnly .btn:active,.DropdownIconOnly .btn:active:not(:disabled):not(.disabled){box-shadow:none}.form-group{margin-bottom:20px}.frc-help-icon{color:#d9d2d0;cursor:pointer}.Glyph{height:16px;width:16px}.AudioPause *,.AudioPlay *,.Glyph{fill:#4a4a4a}.Outline{stroke:#a8a0a0;height:76px;width:76px;stroke-width:2px}.FRCControl-Input .form-check.form-check-inline label{margin-right:25px}.FRCControl-Input .form-check.form-check-inline input{margin-right:6px}.FRCLabel{display:flex}.FRCLabel .Help{position:relative;top:-1px}.was-validated .FRCLabel-error .form-label{color:#e84031}.LeftNav{background-color:#071c2a;display:flex;flex-direction:column;height:100vh;position:sticky;top:0;width:230px}.LeftNav-title{color:#fff;font-size:18px;font-weight:500;padding:25px;width:230px}.LeftNav-title .Orchard{height:30px;margin-right:5px;position:relative;top:-5px;width:30px}.LeftNav-menu-items{flex-grow:1;font-size:18px}.LeftNav-menu-item{cursor:pointer;padding:20px 25px;color:#a2a2a2}.LeftNav-menu-item:hover{background-color:#082740}.LeftNav-menu-item-selected{cursor:pointer;padding:20px 25px;background-color:#0b3e70;color:#fff}.LoaderWrapper{display:flex;flex-direction:column}.LoaderWrapper-item{flex:1}.LoaderWrapper-horizontal{align-items:center;display:flex;flex-direction:row;justify-content:space-between}.LoaderWrapper-vertical{display:flex;flex-direction:column}.LoaderWrapper-line{height:20px;width:100%;background:linear-gradient(90deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background-color:#f7f7f7;background-size:400%}.LoaderWrapper-line,.LoaderWrapper-square{overflow:hidden;animation:rectangleRTL 2s linear infinite;animation-timing-function:linear}.LoaderWrapper-square{border-radius:3px;height:40px;width:40px;background:linear-gradient(90deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background:linear-gradient(135deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background-color:#f7f7f7;background-size:400%}.LoaderWrapper-vertical>.LoaderWrapper-item+.LoaderWrapper-item{margin-top:3px}.LoaderWrapper-horizontal>.LoaderWrapper-item+.LoaderWrapper-item{margin-left:3px}.ReactModal{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1050}.ReactModal-content{background:#fff;border:1px solid #f2f2f2;border-radius:3px;box-shadow:0 15px 12px 0 rgba(0,0,0,.22),0 19px 38px 0 rgba(0,0,0,.3);display:flex;flex-direction:column;max-height:calc(100vh - 80px);min-height:130px;overflow:hidden;position:relative;min-width:400px}.ReactModal-header{align-items:center;border-bottom:1px solid #e4e0df;display:flex;padding:10px}.ReactModal-header-text{font-size:18px;margin:0}.ReactModal-close{margin-left:auto;margin-top:-4px;order:2}.ReactModal-body{overflow-y:auto;padding:10px}.ReactModal-body p{margin:0}.ReactModal-body-open{overflow:hidden}.ReactModal-footer{padding:10px;border-top:1px solid #e4e0df}.ReactModal-footer .btn:not(:first-child){margin-left:10px}.ReactModal-footer-right-align{display:flex;justify-content:flex-end}.frc-pagination-ellipsis{height:12px;width:12px}.frc-pagination-small ul.pagination li>a,.frc-pagination-small ul.pagination li>span{padding:5px 10px}.frc-pagination-small .Icons-left-pagination-arrow,.frc-pagination-small .Icons-right-pagination-arrow{height:11px}.frc-pagination ul{list-style-type:none}.frc-pagination .Icons-left-pagination-arrow,.frc-pagination .Icons-right-pagination-arrow{vertical-align:middle}.frc-pagination ul.pagination li.active>a,.frc-pagination ul.pagination li.active>a:focus,.frc-pagination ul.pagination li.active>a:hover,.frc-pagination ul.pagination li.active>span,.frc-pagination ul.pagination li.active>span:focus,.frc-pagination ul.pagination li.active>span:hover{background:#f7f7f7;border-color:#a8a0a0;box-shadow:inset 0 1px 1px 0 rgba(0,0,0,.2),inset 0 0 5px 0 rgba(0,0,0,.2);color:#4a4a4a}.frc-pagination ul.pagination li.disabled>a,.frc-pagination ul.pagination li.disabled>a:focus,.frc-pagination ul.pagination li.disabled>a:hover,.frc-pagination ul.pagination li.disabled>span,.frc-pagination ul.pagination li.disabled>span:focus,.frc-pagination ul.pagination li.disabled>span:hover,.frc-pagination ul.pagination li>a,.frc-pagination ul.pagination li>a:focus,.frc-pagination ul.pagination li>span,.frc-pagination ul.pagination li>span:focus{background:linear-gradient(180deg,hsla(0,0%,100%,.5),#f7f7f7),linear-gradient(#fff,#fff);border:1px solid #d9d2d0;box-shadow:none;color:#6d6565}.frc-pagination .pagination>.active>a,.frc-pagination .pagination>.active>a:focus,.frc-pagination .pagination>.active>a:hover,.frc-pagination .pagination>.active>span,.frc-pagination .pagination>.active>span:focus,.frc-pagination .pagination>.active>span:hover{color:#fff;cursor:default;z-index:2}.frc-pagination ul.pagination li>a,.frc-pagination ul.pagination li>span{border-radius:3px;display:list-item;font-size:11px;font-weight:500;margin-left:10px;padding:9px 15px;text-align:center;text-transform:uppercase;vertical-align:middle;white-space:pre-wrap}.frc-pagination .pagination>li>a,.frc-pagination .pagination>li>span{float:left;line-height:1.43;position:relative;text-decoration:none}.RichTextEditor{border:1px solid #d9d2d0;border-radius:2px}.RichTextEditor-button{margin-right:10px}.RichTextEditor-buttons{border-bottom:1px solid #d9d2d0;padding:10px}.RichTextEditor-text-area{padding:10px}.RichTextEditor .Checkmark{fill:#17ad41}.RichTextEditor-url{height:29px;margin-right:10px;width:300px}.RichTextEditor-link-input{border-top:1px solid #d9d2d0;margin-top:10px;padding-top:10px}.RichTextEditor-hidePlaceholder .public-DraftEditorPlaceholder-root{display:none}.SelectInputWithAddNew-container{align-items:center;display:flex;flex-flow:row wrap}.SelectInputWithAddNew-dropdown{flex:1;min-width:265px}.SelectInputWithAddNew-add-button{flex:1;max-width:160px}.SelectInputWithAddNew-new-box{background-color:#f9f9f9;border:1px solid #f2f2f2;border-radius:3px;flex:0 0 100%;margin-top:10px;padding:20px}.SelectInputWithAddNew-button-wrapper{text-align:center}.Select-arrow-zone{align-items:center;display:flex;justify-content:center;padding-right:0;width:auto}.Select-arrow{background:url(\"data:image/svg+xml;utf8,<svg width='13' height='8' viewBox='0 0 13 8' xmlns='http://www.w3.org/2000/svg'><path d='M.134 1.325L5.97 7.16c.067.09.18.135.27.135.112 0 .224-.045.29-.135l5.837-5.835c.09-.09.135-.18.135-.292 0-.09-.045-.202-.135-.292L11.74.136C11.67.045 11.56 0 11.47 0c-.113 0-.225.045-.292.135L6.238 5.05 1.325.136C1.234.045 1.144 0 1.032 0 .92 0 .83.045.74.135L.134.74C.044.83 0 .944 0 1.034c0 .112.044.202.134.292' fill='%234A4A4A' fillRule='evenodd'/></svg>\") no-repeat 50%;background-size:10px 9px;border:none;display:block;height:26px;top:0;width:38px}.Select-control{display:flex;height:auto;min-height:calc(1.5em + 1.3rem + 2px)}.Select-input{align-items:center;display:flex;display:flex!important;height:auto}.Select-input input{padding:0;line-height:normal}.Select-placeholder{align-items:center;display:flex;line-height:normal}.Select--multi .Select-multi-value-wrapper,.Select-multi-value-wrapper{align-items:center;display:flex;flex:1;flex-wrap:wrap}.Select--multi .Select-value-icon,.Select-value-icon{order:1}.Select--multi .Select-value{align-items:center;display:flex;font-size:1rem;margin:4px 0 4px 6px;padding:0 5px}.Select--multi .Select-remove,.Select-remove{cursor:pointer;margin-left:10px}.Select--multi .Select-remove>.Icons-close,.Select-remove>.Icons-close{fill:#e6e6e6;height:10px;vertical-align:initial;width:10px}.Select--multi .Select-remove:hover>.Icons-close,.Select-remove:hover>.Icons-close{fill:#fff}.Select-clear-zone{align-items:center;display:flex;justify-content:center;width:20px}.Select-clear{font-size:1rem}.Select.is-open>.Select-control .Select-arrow{top:0}.Select.is-disabled>.Select-control{cursor:not-allowed}.table thead th{color:#a8a0a0;font-size:12px;font-weight:500;letter-spacing:1px;text-transform:uppercase;padding-top:.25em;padding-bottom:.25em;border-bottom:1px solid #d9d2d0;border-top:none}.table td{border-color:#f2f2f2}.table-striped tbody tr:nth-of-type(odd){background-color:#f7f7f7}.table-striped td{border-color:#f7f7f7}.table-striped.table-bordered td{border-color:#e4e0df}.table-hover tbody tr:hover{background-color:#f2f2f2}.nav-item.nav-link[role=tab]{border:0;color:#e4e0df;font-size:18px;font-weight:500;margin-right:30px;padding:0 0 10px}.nav-item.nav-link[role=tab]:hover{border-bottom:2px solid #e4e0df}.nav-item.nav-link[role=tab].active{border-bottom:2px solid #4a4a4a;color:#4a4a4a}.nav-tabs{border-bottom:1px solid #e4e0df}.TimeInput{width:100px}.UploadArea{border:2px dashed #d9d2d0;border-radius:2px;outline:0}.UploadArea-drag-is-active{border-color:#0070e0;box-shadow:inset 0 0 50px 0 rgba(0,112,224,.1)}.UploadArea-input{display:none}@keyframes rectangleRTL{to{background-position:0 0}50%{background-position:50% 50%}0%{background-position:100% 100%}}.btn.btn-default{border:1px solid #d9d2d0}.DayPickerInput-wrapper{align-items:center;display:flex;flex-direction:row;justify-content:space-between}.DayPickerInput-wrapper>.Icons-calendar{margin-left:5px}.Pagination-small ul.pagination li>a,.Pagination-small ul.pagination li>span{padding:5px 10px}.Pagination-small .Icons-left-pagination-arrow,.Pagination-small .Icons-right-pagination-arrow{height:11px}.Pagination ul{list-style-type:none}.Pagination .Icons-left-pagination-arrow,.Pagination .Icons-right-pagination-arrow{vertical-align:middle}.Pagination ul.pagination li.active>a,.Pagination ul.pagination li.active>a:focus,.Pagination ul.pagination li.active>a:hover,.Pagination ul.pagination li.active>span,.Pagination ul.pagination li.active>span:focus,.Pagination ul.pagination li.active>span:hover{background:#f2f2f2;border-color:#a8a0a0;box-shadow:inset 0 1px 1px 0 rgba(0,0,0,.2),inset 0 0 5px 0 rgba(0,0,0,.2);color:#4a4a4a}.Pagination ul.pagination li.disabled>a,.Pagination ul.pagination li.disabled>a:focus,.Pagination ul.pagination li.disabled>a:hover,.Pagination ul.pagination li.disabled>span,.Pagination ul.pagination li.disabled>span:focus,.Pagination ul.pagination li.disabled>span:hover,.Pagination ul.pagination li>a,.Pagination ul.pagination li>a:focus,.Pagination ul.pagination li>span,.Pagination ul.pagination li>span:focus{background:linear-gradient(180deg,hsla(0,0%,100%,.5),#f2f2f2),linear-gradient(#fff,#fff);border:1px solid #d9d2d0;box-shadow:none;color:#6d6565}.Pagination .pagination>.active>a,.Pagination .pagination>.active>a:focus,.Pagination .pagination>.active>a:hover,.Pagination .pagination>.active>span,.Pagination .pagination>.active>span:focus,.Pagination .pagination>.active>span:hover{color:#fff;cursor:default;z-index:2}.Pagination ul.pagination li>a,.Pagination ul.pagination li>span{border-radius:3px;display:list-item;font-size:11px;font-weight:500;margin-left:10px;padding:9px 15px;text-align:center;text-transform:uppercase;vertical-align:middle;white-space:pre-wrap}.Pagination .pagination>li>a,.Pagination .pagination>li>span{float:left;line-height:1.43;position:relative;text-decoration:none}.dropdown-menu>li>a{clear:both;color:#333;display:block;font-weight:400;line-height:40px;padding:3px 20px;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#f2f2f2;color:#282828;text-decoration:none}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.open>.dropdown-menu{display:block}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#337ab7;color:#fff;outline:0;text-decoration:none}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{background-color:transparent;background-image:none;cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);text-decoration:none}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{color:#777;display:block;font-size:12px;line-height:1.43;padding:3px 20px;white-space:nowrap}.dropdown-backdrop{bottom:0;left:0;position:fixed;right:0;top:0;z-index:990}.pull-right>.dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-bottom:4px dashed;border-bottom:4px solid\\9;border-top:0;content:\"\"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{bottom:100%;margin-bottom:2px;top:auto}.navbar-right .dropdown-menu{left:auto;right:0}.panel-title{color:inherit;font-size:16px;margin-bottom:0;margin-top:0}.tooltip{background-color:#4a4a4a;border-radius:3px;color:#fff;display:block;filter:alpha(opacity=0);font-family:Rubik,sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:1px;line-break:auto;line-height:1.43;max-width:200px;opacity:1;padding:8px;position:absolute;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;z-index:1070}.tooltip.in{filter:alpha(opacity=90);opacity:1}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.top .tooltip-arrow{border-width:8px 5px 0;border-top:5px solid #4a4a4a;bottom:0;left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{border-width:5px 5px 0;bottom:0;margin-bottom:-5px;right:5px}.tooltip.top-right .tooltip-arrow{border-width:5px 5px 0;bottom:0;left:5px;margin-bottom:-5px}.tooltip.top .tooltip-inner{margin-bottom:3px}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.right .tooltip-arrow{border-left-width:0;border-bottom-width:5px;border-right:5px solid #4a4a4a;border-top-width:5px;left:0;margin-top:-5px;top:50%}.tooltip.right .tooltip-inner{margin-left:3px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.bottom .tooltip-arrow{border-left-width:5px;border-bottom:5px solid #4a4a4a;border-right-width:5px;border-top-width:0;left:50%;margin-left:-5px;top:0}.tooltip.bottom .tooltip-inner{margin-top:3px}.tooltip.bottom-left .tooltip-arrow{border-width:0 5px 5px;margin-top:-5px;right:5px;top:0}.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;left:5px;margin-top:-5px;top:0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip.left .tooltip-arrow{border-left:5px solid #4a4a4a;border-bottom-width:5px;border-right-width:0;border-top-width:5px;margin-top:-5px;right:0;top:50%}.tooltip.left .tooltip-inner{margin-right:3px}.tooltip-inner{background-color:#000;border-radius:4px;color:#fff;max-width:200px;padding:3px 8px;text-align:center}.tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.tooltip:before{background:transparent none repeat scroll 0 0;border:8px solid transparent}.tooltip.tooltip-sm-width{font-size:11px;max-width:140px;word-wrap:break-word}.tooltip.bottom,.tooltip.top{background:none}.tooltip.bottom .tooltip-arrow,.tooltip.top .tooltip-arrow{border-left:8px solid transparent;border-right:8px solid transparent;margin-left:-8px}.tooltip.left,.tooltip.right{background:none}.tooltip.left .tooltip-arrow,.tooltip.right .tooltip-arrow{border-bottom:8px solid transparent;border-top:8px solid transparent;margin-top:-8px}.tooltip .tooltip-inner{background-color:#4a4a4a;font-size:12px;text-align:left}.tooltip.right-arrow:before{border-right-color:rgba(51,51,51,.9);content:\"\";left:-16px;position:absolute;top:15px}.tooltip.top-arrow:before{left:30px}.tooltip.top-arrow::before-sm:before,.tooltip.top-arrow:before{border-top-color:rgba(51,51,51,.9);bottom:-16px;content:\"\";position:absolute}.tooltip.top-arrow::before-sm:before{left:50%;margin-left:-8px}.tooltip.bottom-arrow:before{border-bottom-color:rgba(51,51,51,.9);content:\"\";left:90px;position:absolute;top:-16px}.DeliveryPopover-overlay.in{opacity:1}.Advertising-banner{background:linear-gradient(315deg,#4b3da3,#026ead);display:flex;height:60px;justify-content:space-between}.Advertising-banner-closeBannerButton{align-items:center;display:flex;padding:0 30px}.Advertising-banner-closeBannerButton .Icons-close{fill:#fff}.Orchard-go-banner{background:linear-gradient(90deg,#1a5f80,#020e14);display:flex;height:60px;justify-content:space-between}.Orchard-go-banner-closeBannerButton{align-items:center;display:flex;padding:0 30px}.Orchard-go-banner-closeBannerButton .Icons-close{fill:#fff}.ErrorMessage{margin-bottom:20px}.ErrorMessage .error-text{font-size:1.2rem;margin-bottom:10px}.ErrorMessage .error-details{overflow:auto;white-space:pre}.Footer{background:#4a4a4a;bottom:0;color:#fff;height:200px;left:0;padding:30px 0 28px;position:absolute;right:0;text-align:center;width:100%}.Footer-logoFooter{margin-bottom:20px}.Footer-textLinePart{color:#fff;margin:0 5px;text-decoration:underline}.Footer-textLinePart:hover{color:#d9d2d0}.Footer-textLinePart.divider+.Footer-textLinePart.divider{border-left:1px solid #fff;margin-left:0;padding-left:5px}.Footer-textLine{margin-bottom:15px}.GlobalSearchResults .Select-arrow-zone,.GlobalSearchResults .Select-loading-zone{display:none}.GlobalSearchResults .Select-menu,.GlobalSearchResults .Select-menu-outer{max-height:80vh}.GlobalSearchResults .Select-input{height:40px}.GlobalSearchResults .Select-control,.GlobalSearchResults .Select-control:focus{box-shadow:none!important;outline:none}.GlobalSearchResults .Select-noresults{padding:0}.GlobalSearchResults .Select-noresults .error-text,.GlobalSearchResults .Select-noresults .noresults-container{padding:20px}.GlobalSearchResults .Select-noresults .noresults-container{text-align:center}.GlobalSearchResults .Select-noresults .noresults-text{color:#a8a0a0;font-size:1.2rem;font-style:italic;padding:.5rem 0}.GlobalSearchResults .Select-noresults .error-text{color:#e84031}.GlobalSearchResults .Select-placeholder{height:auto}.SearchResultsLoadingIndicator-cover{border-radius:3px;height:50px;width:50px;background:linear-gradient(90deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background:linear-gradient(135deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background-color:#f7f7f7;background-size:400%}.SearchResultsLoadingIndicator-cover,.SearchResultsLoadingIndicator-line{overflow:hidden;animation:rectangleRTL 2s linear infinite;animation-timing-function:linear}.SearchResultsLoadingIndicator-line{height:18px;width:20%}.SearchResultsLoadingIndicator-line,.SearchResultsLoadingIndicator-line-sm{background:linear-gradient(90deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background-color:#f7f7f7;background-size:400%}.SearchResultsLoadingIndicator-line-sm{height:20px;overflow:hidden;width:10%;animation:rectangleRTL 2s linear infinite;animation-timing-function:linear}.SearchResultsLoadingIndicator .GlobalSearchResults-option,.SearchResultsLoadingIndicator .GlobalSearchResults-option:hover{background:inherit;border-color:#f7f7f7;cursor:default;flex:1}.SearchResultsLoadingIndicator .LoaderWrapper{margin-bottom:28px}.GlobalSearchResults-option{border-bottom:1px solid #f7f7f7;cursor:pointer;display:flex;height:auto;padding:5px 10px}.GlobalSearchResults-option:hover{background:#f2f2f2;border-color:#f2f2f2}.GlobalSearchResults-option.is-focused{color:#000}.GlobalSearchResults-option-image{cursor:pointer;float:left;height:50px;margin-right:10px;width:50px}.GlobalSearchResults-option-image-img{max-height:50px;max-width:50px}.GlobalSearchResults-option-image-placeholder{background-color:#e5e5e5;height:50px;width:50px}.GlobalSearchResults-option-body{display:flex;flex:1;flex-direction:column;overflow:hidden}.GlobalSearchResults-option-subtitle{color:#a1a1a1}.GlobalSearchResults-option-title{margin-bottom:3px;overflow:hidden;padding-right:10px;text-overflow:ellipsis;white-space:nowrap}.GlobalSearchResults-option-type{margin-right:10px}.GlobalSearchResults-option-highlighted{font-weight:700}.GlobalSearchResults{position:relative}.GlobalSearchResults-search{align-items:center;display:flex;cursor:pointer;position:absolute;right:10px;top:calc(50% - 8px)}.GlobalSearchResults-heading{border-bottom:1px solid #ececec;color:#868686;font-weight:700;padding:5px 10px}.GlobalSearchResults-footer{color:#0070e0;cursor:pointer;padding:5px 10px;text-align:right;width:100%}.GlobalSearchResults-footer:hover{background:#f2f2f2;border-color:#f2f2f2}.GlobalSearchResults-footer-static{padding:1rem;text-align:center}.Header-accountMenu{align-items:stretch;align-self:stretch;display:flex}.Header-accountMenu>.dropdown-toggle{align-items:stretch;display:flex;font-size:1rem;line-height:15px;padding:0 15px}.Header-accountMenu .dropdown-menu{left:auto;max-height:80vh;min-width:160px;overflow:auto;right:0}.Header-accountMenu .dropdown-item{font-size:1.15rem;padding:17px 15px}.Header-accountMenu .dropdown-item>svg{margin-right:10px}.Header-accountMenu .Icons-chevron{fill:#fff;height:5px;margin-left:12px;width:8px}.Header-dropdownTitle{align-items:center;display:flex;text-align:center}.HeaderDropdownLoader-wrapper{justify-content:center;padding-right:15px}.HeaderDropdownLoader-item{align-items:flex-end;width:150px;display:flex;flex-direction:column}.HeaderDropdownLoader-line-top{margin-bottom:8px;width:50%}.HeaderDropdownLoader-line-bottom,.HeaderDropdownLoader-line-top{height:10px;overflow:hidden;animation:rectangleRTL 2s linear infinite;animation-timing-function:linear;background:linear-gradient(90deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background-color:#f7f7f7;background-size:400%;background-color:#a8a0a0;background-image:linear-gradient(90deg,#a8a0a0 30%,#4a4a4a 50%,#a8a0a0 70%)}.HeaderDropdownLoader-line-bottom{width:100%}.LinkedAccountsDropdown-linked-menu-item{border-bottom:1px solid #f2f2f2}.LinkedAccountsDropdown-linked-menu-item-row{align-items:center;display:flex}.LinkedAccountsDropdown-vendor-name{color:#a8a0a0;font-size:11px;font-weight:500;margin-bottom:5px}.LinkedAccountsDropdown-vendor-or-subaccount{display:inline-block;font-weight:500;max-width:600px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.LinkedAccountsDropdown-vendor-or-subaccount-id{display:inline-block;margin-left:5px}.LinkedAccountsDropdown-checkmark{border-bottom:3px solid #78a22f;border-right:3px solid #78a22f;height:12px;margin-bottom:7px;margin-left:10px;transform:rotate(45deg);width:8px}.Ad-campaign-promo{align-items:center;color:#fff;display:flex;font-size:1.3rem}.Ad-campaign-promo-title{display:flex;flex-wrap:wrap;margin-left:30px}.Ad-campaign-promo-url{color:inherit;text-decoration:underline}.Ad-campaign-promo-url:hover{color:inherit}.Ad-campaign-promo-icon{height:100%;margin-right:30px;position:relative;width:150px}.Ad-campaign-promo-icon .Facebook-advertising{position:absolute;top:-35px;width:100%}@media (min-width:1200px){.Ad-campaign-promo{font-size:1.5rem}}.Orchard-go-ad{align-items:center;color:#fff;display:flex;font-size:1.3rem}.Orchard-go-ad-icon{margin-left:20px}.Orchard-go-ad-title{display:flex;flex-wrap:wrap;font-size:21px;font-weight:300;line-height:25px;margin-left:20px}.Orchard-go-ad-url{color:inherit;margin-left:20px;text-decoration:underline}.Orchard-go-ad-url:hover{color:inherit}.Header-globalSearch{background:#fff;box-shadow:0 10px 15px -10px rgba(0,0,0,.2);color:#1c1c1c;font-size:1rem;left:0;position:absolute;right:0;top:54px;width:100%;z-index:999}.Header-globalSearch .Select-control{border:none;border-radius:0;font-size:1.4rem;margin:15px 100px;width:auto}.Header-globalSearch .Select-control:hover{box-shadow:none}@media (max-width:1200px){.Header-globalSearch .Select-control{margin:15px 25px}}.Header-globalSearch .Select-menu-outer{border-left:none;border-radius:0;border-right:none;padding:20px 25px;top:auto}.Header-globalSearch .Select-menu-outer .Select-menu{margin:auto}.Header-globalSearch .Select-menu-outer .noresults-text{padding:0}@media (min-width:1200px){.Header-globalSearch .Select-menu-outer{padding-left:100px;padding-right:100px}}.Header-globalSearch .closeSearchButton{cursor:pointer;position:absolute;right:100px;top:calc(50% - 8px)}@media (max-width:1200px){.Header-globalSearch .closeSearchButton{right:25px}}.Header-globalSearch .GlobalSearchResults-search{display:none}.Header-closeOverlay{bottom:0;left:0;position:fixed;right:0;top:54px}.globalSearchIcon .Icons-search{fill:#fff}.globalSearchIcon.active .Icons-search{fill:#868686}.Header-logo{align-items:center;display:flex;margin-right:15px;padding:0}.Header-logo .Icons-logo{width:40px}.Header-logoImage{height:40px;width:40px}.HeaderVendorIconLoader-wrapper{padding-right:15px}.HeaderVendorIconLoader-image{border-radius:3px;height:40px;overflow:hidden;width:40px;background:linear-gradient(90deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);animation:rectangleRTL 2s linear infinite;animation-timing-function:linear;background:linear-gradient(135deg,#f7f7f7 30%,#fff 50%,#f7f7f7 70%);background-color:#f7f7f7;background-size:400%;background-color:#a8a0a0;background-image:linear-gradient(135deg,#a8a0a0 30%,#4a4a4a 50%,#a8a0a0 70%)}.Header{height:70px}.Header .navbar{align-items:stretch;padding:0 100px}@media (max-width:1200px){.Header .navbar{padding:0 25px}}.Header .navbar-brand{align-items:center;display:flex;margin:0;padding:0}.Header-navItem,.Header .navbar-dark .navbar-nav .nav-link{color:#fff;cursor:pointer;padding:17px 15px;user-select:none}.Header-navItem-active,.Header-navItem.active,.Header-navItem:hover,.Header .navbar-dark .navbar-nav .nav-link-active,.Header .navbar-dark .navbar-nav .nav-link.active,.Header .navbar-dark .navbar-nav .nav-link:hover{background-color:#282828;color:#fff}.Header-navItem.dropdown-toggle,.Header .navbar-dark .navbar-nav .nav-link.dropdown-toggle{padding:0 15px}.Header .navbar-nav{align-items:center}.Header-navItem,.navbar-nav>.Header-navItem{font-size:14px;line-height:20px}.SubHeader{align-items:stretch;border-bottom:1px solid #e4e0df;margin:0 auto 20px;padding:14px 0 0}.SubHeader>.navbar-nav .nav-link.SubHeader-navItem{border-bottom:2px solid transparent;color:#a8a0a0;font-size:18px;font-weight:500;margin-bottom:-1px;margin-right:30px;padding:0 0 10px}.SubHeader>.navbar-nav .nav-link.SubHeader-navItem:hover{border-bottom-color:#a8a0a0}.SubHeader>.navbar-nav .nav-link.SubHeader-navItem-active,.SubHeader>.navbar-nav .nav-link.SubHeader-navItem.active{border-bottom-color:#4a4a4a;color:#4a4a4a}h1,h2,h3,h4,h5,h6{color:#4a4a4a;font-weight:400}h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{color:#777;font-weight:400}h2{margin-bottom:10px}h3,h4{font-weight:500}html{font-size:12px}body,html{height:100%}body{background-color:#f2f2f2;color:#4a4a4a;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:1.4}.App-container{min-height:100vh;min-width:991px;position:relative}.page-content{margin:0 auto;padding:0 25px 200px}@media (min-width:1200px){.page-content{padding-left:100px;padding-right:100px}}.container-max-1170{margin-left:auto;margin-right:auto;max-width:1170px}.pull-right{float:right}.pull-left{float:left}.clearfix{display:block}.container,.container-fluid{margin-left:auto;margin-right:auto}.container-fluid{padding-left:15px;padding-right:15px}.caret{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #818081;border-top:4px solid\\9;display:inline-block;height:0;margin-left:2px;vertical-align:middle;width:0}body>.container,body>.container>.row{display:block!important;height:100%;margin:0!important;max-width:100%!important;padding:0!important;width:100%!important}body>.container>.row>.main-content,body>.container>.row>.main-content>div:first-child{height:100%}body>.container>.row>.main-content>div:first-child>.LoadingIndicator{display:none}.ButtonsRow{width:auto}"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 34380
        },
        "cache": {},
        "timings": {
          "blocked": 8.778999942570925,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.573,
          "wait": 659.9259999567792,
          "receive": 41.0440000705421,
          "_blocked_queueing": 6.535999942570925
        },
        "serverIPAddress": "99.84.32.49",
        "_initiator": {
          "type": "parser",
          "url": "https://workstation.theorchard.com/analytics/engagement",
          "lineNumber": 16
        },
        "_priority": "VeryHigh",
        "_resourceType": "stylesheet",
        "connection": "1949487",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:15.989Z",
        "time": 149.68200004659593,
        "request": {
          "method": "GET",
          "url": "https://fonts.googleapis.com/css?family=Rubik:400,500",
          "httpVersion": "http/2.0+quic/46",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "fonts.googleapis.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/css?family=Rubik:400,500"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "text/css,*/*;q=0.1"
            },
            {
              "name": "x-client-data",
              "value": "CIq2yQEIorbJAQjEtskBCKmdygEInK3KAQjLrsoBCL2wygEI97TKAQiXtcoBCJu1ygEI7bXKAQiOusoBCK+9ygEYq6TKARj2tsoBGLy6ygE="
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [
            {
              "name": "family",
              "value": "Rubik:400,500"
            }
          ],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0+quic/46",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "text/css; charset=utf-8"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "timing-allow-origin",
              "value": "*"
            },
            {
              "name": "link",
              "value": "<https://fonts.gstatic.com>; rel=preconnect; crossorigin"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=31536000"
            },
            {
              "name": "expires",
              "value": "Tue, 10 Mar 2020 08:31:16 GMT"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:16 GMT"
            },
            {
              "name": "cache-control",
              "value": "private, max-age=86400, stale-while-revalidate=604800"
            },
            {
              "name": "last-modified",
              "value": "Tue, 10 Mar 2020 08:31:16 GMT"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "server",
              "value": "ESF"
            },
            {
              "name": "x-xss-protection",
              "value": "0"
            },
            {
              "name": "x-frame-options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "x-content-type-options",
              "value": "nosniff"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 2744,
            "mimeType": "text/css",
            "text": "/* cyrillic */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 400;\n  src: local('Rubik'), local('Rubik-Regular'), url(https://fonts.gstatic.com/s/rubik/v9/iJWKBXyIfDnIV7nFrXyw023e1Ik.woff2) format('woff2');\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* hebrew */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 400;\n  src: local('Rubik'), local('Rubik-Regular'), url(https://fonts.gstatic.com/s/rubik/v9/iJWKBXyIfDnIV7nDrXyw023e1Ik.woff2) format('woff2');\n  unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;\n}\n/* latin-ext */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 400;\n  src: local('Rubik'), local('Rubik-Regular'), url(https://fonts.gstatic.com/s/rubik/v9/iJWKBXyIfDnIV7nPrXyw023e1Ik.woff2) format('woff2');\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 400;\n  src: local('Rubik'), local('Rubik-Regular'), url(https://fonts.gstatic.com/s/rubik/v9/iJWKBXyIfDnIV7nBrXyw023e.woff2) format('woff2');\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 500;\n  src: local('Rubik Medium'), local('Rubik-Medium'), url(https://fonts.gstatic.com/s/rubik/v9/iJWHBXyIfDnIV7EyjmmZ8WD07oB-98o.woff2) format('woff2');\n  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* hebrew */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 500;\n  src: local('Rubik Medium'), local('Rubik-Medium'), url(https://fonts.gstatic.com/s/rubik/v9/iJWHBXyIfDnIV7Eyjmmf8WD07oB-98o.woff2) format('woff2');\n  unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;\n}\n/* latin-ext */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 500;\n  src: local('Rubik Medium'), local('Rubik-Medium'), url(https://fonts.gstatic.com/s/rubik/v9/iJWHBXyIfDnIV7EyjmmT8WD07oB-98o.woff2) format('woff2');\n  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n  font-family: 'Rubik';\n  font-style: normal;\n  font-weight: 500;\n  src: local('Rubik Medium'), local('Rubik-Medium'), url(https://fonts.gstatic.com/s/rubik/v9/iJWHBXyIfDnIV7Eyjmmd8WD07oB-.woff2) format('woff2');\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 932
        },
        "cache": {},
        "timings": {
          "blocked": 6.113999988883734,
          "dns": 0,
          "ssl": -1,
          "connect": 0,
          "send": 2.273,
          "wait": 140.01000005197525,
          "receive": 1.285000005736947,
          "_blocked_queueing": 6.113999988883734
        },
        "serverIPAddress": "[2607:f8b0:4006:81b::200a]",
        "_initiator": {
          "type": "parser",
          "url": "https://workstation.theorchard.com/analytics/engagement",
          "lineNumber": 14
        },
        "_priority": "VeryHigh",
        "_resourceType": "stylesheet",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:15.990Z",
        "time": 30.18200001679361,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "no-cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2346,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:16 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/javascript"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Last-Modified",
              "value": "Tue, 05 Nov 2019 03:27:30 GMT"
            },
            {
              "name": "ETag",
              "value": "W/\"2bdb-59691031ea9d8\""
            },
            {
              "name": "Cache-Control",
              "value": "public, max-age=86400"
            },
            {
              "name": "Expires",
              "value": "Wed, 11 Mar 2020 08:31:16 GMT"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1;mode=block"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=31536000;includeSubDomains"
            },
            {
              "name": "Content-Security-Policy",
              "value": "script-src: self"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "Referrer-Policy",
              "value": "no-referrer-when-downgrade"
            },
            {
              "name": "CF-Cache-Status",
              "value": "HIT"
            },
            {
              "name": "Age",
              "value": "70240"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badad6b9d7b53-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 11227,
            "mimeType": "application/javascript",
            "compression": 7748,
            "text": "/** \n * =================================================================\n * Javascript code for OWASP CSRF Protector\n * Task it does: Fetch csrftoken from cookie, and attach it to every\n * \t\tPOST request\n *\t\tAllowed GET url\n *\t\t\t-- XHR\n *\t\t\t-- Static Forms\n *\t\t\t-- URLS (GET only)\n *\t\t\t-- dynamic forms\n * =================================================================\n */\n\nvar CSRFP_FIELD_TOKEN_NAME = 'csrfp_hidden_data_token';\nvar CSRFP_FIELD_URLS = 'csrfp_hidden_data_urls';\nvar WHITELIST_URL = 'segment.io|mouseflow.com|google-analytics.com|sentry.io|hotjar.io|assets.qaorch.com|assets.theorchard.com';\n\nvar CSRFP = {\n\tCSRFP_TOKEN: 'csrfp_token',\n\t/**\n\t * Array of patterns of url, for which csrftoken need to be added\n\t * In case of GET request also, provided from server\n\t *\n\t * @var {Array}\n\t */\n\tcheckForUrls: [],\n\t/**\n\t * Function to check if a certain url is allowed to perform the request\n\t * With or without csrf token\n\t *\n\t * @param {string} url\n\t *\n\t * @return {Boolean} \ttrue if csrftoken is not needed\n\t * \t\t\t\t\t\tfalse if csrftoken is needed\n\t */\n\t_isValidGetRequest: function(url) {\n\t\tfor (var i = 0; i < CSRFP.checkForUrls.length; i++) {\n\t\t\tvar match = CSRFP.checkForUrls[i].exec(url);\n\t\t\tif (match !== null && match.length > 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\t/**\n\t * Function to get Auth key from cookie and return it to requesting function\n\t *\n\t * @param: void\n\t *\n\t * @return {string|Boolean} csrftoken retrieved from cookie\n\t */\n\t_getAuthKey: function() {\n\t\tvar re = new RegExp(CSRFP.CSRFP_TOKEN +\"=([^;]+)(;|$)\");\n\t\tvar RegExpArray = re.exec(document.cookie);\n\t\t\n\t\tif (RegExpArray === null) {\n\t\t\treturn false;\n\t\t}\n\t\treturn RegExpArray[1];\n\t},\n\t/** \n\t * Function to get domain of any url\n\t *\n\t * @param {string} url\n\t *\n\t * @return {string} domain of url\n\t */\n\t_getDomain: function(url) {\n\t\tif (url.indexOf(\"http://\") !== 0 \n\t\t\t&& url.indexOf(\"https://\") !== 0)\n\t\t\treturn document.domain;\n\t\treturn /http(s)?:\\/\\/([^\\/]+)/.exec(url)[2];\n\t},\n\t/**\n\t * Function to create and return a hidden input element\n\t * For storing the CSRFP_TOKEN\n\t *\n\t * @param: void\n\t *\n\t * @return {HTMLInputElement} input element\n\t */\n\t_getInputElt: function() {\n\t\tvar hiddenObj = document.createElement(\"input\");\n\t\thiddenObj.setAttribute('name', CSRFP.CSRFP_TOKEN);\n\t\thiddenObj.setAttribute('class', CSRFP.CSRFP_TOKEN);\n\t\thiddenObj.type = 'hidden';\n\t\thiddenObj.value = CSRFP._getAuthKey();\n\t\treturn hiddenObj;\n\t},\n\t/**\n\t * Returns absolute path for relative path\n\t *\n\t * @param {string} base base url\n\t * @param {string} relative relative url\n\t *\n\t * @return {string} absolute path\n\t */\n\t_getAbsolutePath: function(base, relative) {\n\t\tvar stack = base.split(\"/\");\n\t\tvar parts = relative.split(\"/\");\n\t\t// remove current file name (or empty string)\n\t\t// (omit if \"base\" is the current folder without trailing slash)\n\t\tstack.pop(); \n\t\t\t \n\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\tif (parts[i] === \".\")\n\t\t\t\tcontinue;\n\t\t\tif (parts[i] === \"..\")\n\t\t\t\tstack.pop();\n\t\t\telse\n\t\t\t\tstack.push(parts[i]);\n\t\t}\n\t\treturn stack.join(\"/\");\n\t},\n\t/**\n\t * Remove jcsrfp-token run fun and then put them back\n\t *\n\t * @param {function} fun\n\t * @param {object} obj reference form obj\n\t *\n\t * @return function\n\t */\n\t_csrfpWrap: function(fun, obj) {\n\t\treturn function(event) {\n\t\t\t// Remove CSRf token if exists\n\t\t\tif (typeof obj[CSRFP.CSRFP_TOKEN] !== 'undefined') {\n\t\t\t\tvar target = obj[CSRFP.CSRFP_TOKEN];\n\t\t\t\ttarget.parentNode.removeChild(target);\n\t\t\t}\n\t\t\t\n\t\t\t// Trigger the functions\n\t\t\tvar result = fun.apply(this, [event]);\n\t\t\t\n\t\t\t// Now append the csrfp_token back\n\t\t\tobj.appendChild(CSRFP._getInputElt());\n\t\t\t\n\t\t\treturn result;\n\t\t};\n\t},\n\t/**\n\t * Initialises the CSRFProtector js script\n\t *\n\t * @param: void\n\t *\n\t * @return void\n\t */\n\t_init: function() {\n\t\tCSRFP.CSRFP_TOKEN = document.getElementById(CSRFP_FIELD_TOKEN_NAME).value;\n\t\ttry {\n\t\t\tCSRFP.checkForUrls = JSON.parse(document.getElementById(CSRFP_FIELD_URLS).value);\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\tconsole.error('[ERROR] [CSRF Protector] unable to parse blacklisted url fields.');\n\t\t}\n\n\t\t//convert these rules received from php lib to regex objects\n\t\tfor (var i = 0; i < CSRFP.checkForUrls.length; i++) {\n\t\t\tCSRFP.checkForUrls[i] = CSRFP.checkForUrls[i].replace(/\\*/g, '(.*)')\n\t\t\t\t\t\t\t\t.replace(/\\//g, \"\\\\/\");\n\t\t\tCSRFP.checkForUrls[i] = new RegExp(CSRFP.checkForUrls[i]);\n\t\t}\n\t\n\t}\n\t\n}; \n\n//==========================================================\n// Adding tokens, wrappers on window onload\n//==========================================================\n\nfunction csrfprotector_init() {\n\t\n\t// Call the init function\n\tCSRFP._init();\n\n\t// definition of basic FORM submit event handler to intercept the form request\n\t// and attach a CSRFP TOKEN if it's not already available\n\tvar BasicSubmitInterceptor = function(event) {\n\t\tif (typeof event.target[CSRFP.CSRFP_TOKEN] === 'undefined') {\n\t\t    if (event.target['method'] != 'get') {\n\t\t        event.target.appendChild(CSRFP._getInputElt());\n\t\t    }\n\t\t} else {\n\t\t\t//modify token to latest value\n\t\t\tevent.target[CSRFP.CSRFP_TOKEN].value = CSRFP._getAuthKey();\n\t\t}\n\t};\n\n\t//==================================================================\n\t// Adding csrftoken to request resulting from <form> submissions\n\t// Add for each POST, while for mentioned GET request\n\t// TODO - check for method\n\t//==================================================================\n\t// run time binding\n\tdocument.querySelector('body').addEventListener('submit', function(event) {\n\t\tif (event.target.tagName.toLowerCase() === 'form') {\n\t\t\tBasicSubmitInterceptor(event);\n\t\t}\n\t});\n\n\t// initial binding\n\t// for(var i = 0; i < document.forms.length; i++) {\n\t// \tdocument.forms[i].addEventListener(\"submit\", BasicSubmitInterceptor);\n\t// }\n\n\t//==================================================================\n\t// Adding csrftoken to request resulting from direct form.submit() call\n\t// Add for each POST, while for mentioned GET request\n\t// TODO - check for form method\n\t//==================================================================\n\tHTMLFormElement.prototype.submit_ = HTMLFormElement.prototype.submit;\n\tHTMLFormElement.prototype.submit = function() {\n\t\t// check if the FORM already contains the token element\n\t\tif (!this.getElementsByClassName(CSRFP.CSRFP_TOKEN).length && this.method != 'get')\n\t\t\tthis.appendChild(CSRFP._getInputElt());\n\t\tthis.submit_();\n\t};\n\n\n\t/**\n\t * Add wrapper for HTMLFormElements addEventListener so that any further \n\t * addEventListens won't have trouble with CSRF token\n\t * todo - check for method\n\t */\n\tHTMLFormElement.prototype.addEventListener_ = HTMLFormElement.prototype.addEventListener;\n\tHTMLFormElement.prototype.addEventListener = function(eventType, fun, bubble) {\n\t\tif (eventType === 'submit') {\n\t\t\tvar wrapped = CSRFP._csrfpWrap(fun, this);\n\t\t\tthis.addEventListener_(eventType, wrapped, bubble);\n\t\t} else {\n\t\t\tthis.addEventListener_(eventType, fun, bubble);\n\t\t}\t\n\t};\n\n\t/**\n\t * Add wrapper for IE's attachEvent\n\t * todo - check for method\n\t * todo - typeof is now obsolete for IE 11, use some other method.\n\t */\n\tif (typeof HTMLFormElement.prototype.attachEvent !== 'undefined') {\n\t\tHTMLFormElement.prototype.attachEvent_ = HTMLFormElement.prototype.attachEvent;\n\t\tHTMLFormElement.prototype.attachEvent = function(eventType, fun) {\n\t\t\tif (eventType === 'onsubmit') {\n\t\t\t\tvar wrapped = CSRFP._csrfpWrap(fun, this);\n\t\t\t\tthis.attachEvent_(eventType, wrapped);\n\t\t\t} else {\n\t\t\t\tthis.attachEvent_(eventType, fun);\n\t\t\t}\n\t\t}\n\t}\n\n\n\t//==================================================================\n\t// Wrapper for XMLHttpRequest & ActiveXObject (for IE 6 & below)\n\t// Set X-No-CSRF to true before sending if request method is \n\t//==================================================================\n\n\t/** \n\t * Wrapper to XHR open method\n\t * Add a property method to XMLHttpRequest class\n\t * @param: all parameters to XHR open method\n\t * @return: object returned by default, XHR open method\n\t */\n\tfunction new_open(method, url, isAsync, username, password) {\n\t\tthis.method = method;\n\t\tvar hostname = url.match(WHITELIST_URL);\n\t\tif (hostname != null) {\n\t\t   isAsync = true;\n\t\t}\n\t\tvar isAbsolute = (url.indexOf(\"./\") === -1);\n\t\tif (!isAbsolute) {\n\t\t\tvar base = location.protocol +'//' +location.host \n\t\t\t\t\t\t\t+ location.pathname;\n\t\t\turl = CSRFP._getAbsolutePath(base, url);\n\t\t}\n\t\tthis.url = url;\n\t\tif (method.toLowerCase() === 'get' \n\t\t\t&& !CSRFP._isValidGetRequest(url)) {\n\t\t\t//modify the url\n\t\t\tif (url.indexOf('?') === -1) {\n\t\t\t\turl += \"?\" +CSRFP.CSRFP_TOKEN +\"=\" +CSRFP._getAuthKey();\n\t\t\t} else {\n\t\t\t\turl += \"&\" +CSRFP.CSRFP_TOKEN +\"=\" +CSRFP._getAuthKey();\n\t\t\t}\n\t\t}\n\n\t\treturn this.old_open(method, url, isAsync, username, password);\n\t}\n\n\t/** \n\t * Wrapper to XHR send method\n\t * Add query parameter to XHR object\n\t *\n\t * @param: all parameters to XHR send method\n\t *\n\t * @return: object returned by default, XHR send method\n\t */\n\tfunction new_send(data) {\n\t\tvar hostname = this.url.match(WHITELIST_URL);\n\t\tif (this.method.toLowerCase() === 'post' && hostname == null) {\n\t\t\t// attach the token in request header\n\t\t\tthis.setRequestHeader(CSRFP.CSRFP_TOKEN, CSRFP._getAuthKey());\n\t\t}\n\t\treturn this.old_send(data);\n\t}\n\n\tif (window.XMLHttpRequest) {\n\t\t// Wrapping\n\t\tXMLHttpRequest.prototype.old_send = XMLHttpRequest.prototype.send;\n\t\tXMLHttpRequest.prototype.old_open = XMLHttpRequest.prototype.open;\n\t\tXMLHttpRequest.prototype.open = new_open;\n\t\tXMLHttpRequest.prototype.send = new_send;\n\t}\n\tif (typeof ActiveXObject !== 'undefined') {\n\t\tActiveXObject.prototype.old_send = ActiveXObject.prototype.send;\n\t\tActiveXObject.prototype.old_open = ActiveXObject.prototype.open;\n\t\tActiveXObject.prototype.open = new_open;\n\t\tActiveXObject.prototype.send = new_send;\t\n\t}\n\t//==================================================================\n\t// Rewrite existing urls ( Attach CSRF token )\n\t// Rules:\n\t// Rewrite those urls which matches the regex sent by Server\n\t// Ignore cross origin urls & internal links (one with hashtags)\n\t// Append the token to those url already containing GET query parameter(s)\n\t// Add the token to those which does not contain GET query parameter(s)\n\t//==================================================================\n\n\tfor (var i = 0; i < document.links.length; i++) {\n\t\tdocument.links[i].addEventListener(\"mousedown\", function(event) {\n\t\t\tvar href = event.target.href;\n\t\t\tif(typeof href === \"string\")\n\t\t\t{\n\t\t\t\tvar urlParts = href.split('#');\n\t\t\t\tvar url = urlParts[0];\n\t\t\t\tvar hash = urlParts[1];\n\n\t\t\t\tif(CSRFP._getDomain(url).indexOf(document.domain) === -1\n\t\t\t\t\t|| CSRFP._isValidGetRequest(url)) {\n\t\t\t\t\t//cross origin or not to be protected by rules -- ignore\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (url.indexOf('?') !== -1) {\n\t\t\t\t\tif(url.indexOf(CSRFP.CSRFP_TOKEN) === -1) {\n\t\t\t\t\t\turl += \"&\" +CSRFP.CSRFP_TOKEN +\"=\" +CSRFP._getAuthKey();\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = url.replace(new RegExp(CSRFP.CSRFP_TOKEN +\"=.*?(&|$)\", 'g'),\n\t\t\t\t\t\t\tCSRFP.CSRFP_TOKEN +\"=\" +CSRFP._getAuthKey() + \"$1\");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\turl += \"?\" +CSRFP.CSRFP_TOKEN +\"=\" +CSRFP._getAuthKey();\n\t\t\t\t}\n\n\t\t\t\tevent.target.href = url;\n\t\t\t\tif (typeof hash !== 'undefined') {\n\t\t\t\t\tevent.target.href += '#' +hash;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n}\n\nwindow.addEventListener(\"DOMContentLoaded\", function() {\n\tcsrfprotector_init();\n}, false);\n"
          },
          "redirectURL": "",
          "headersSize": 776,
          "bodySize": 3479,
          "_transferSize": 4255
        },
        "cache": {},
        "timings": {
          "blocked": 8.148999989040195,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.13100000000000023,
          "wait": 20.453000053808093,
          "receive": 1.4489999739453197,
          "_blocked_queueing": 6.006999989040196
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "parser",
          "url": "https://workstation.theorchard.com/analytics/engagement",
          "lineNumber": 58
        },
        "_priority": "High",
        "_resourceType": "script",
        "connection": "1949472",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:16.920Z",
        "time": 128.96599993109703,
        "request": {
          "method": "GET",
          "url": "https://fonts.gstatic.com/s/rubik/v9/iJWKBXyIfDnIV7nBrXyw023e.woff2",
          "httpVersion": "http/2.0+quic/46",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "fonts.gstatic.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/s/rubik/v9/iJWKBXyIfDnIV7nBrXyw023e.woff2"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "x-client-data",
              "value": "CIq2yQEIorbJAQjEtskBCKmdygEInK3KAQjLrsoBCL2wygEI97TKAQiXtcoBCJu1ygEI7bXKAQiOusoBCK+9ygEYq6TKARj2tsoBGLy6ygE="
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://fonts.googleapis.com/css?family=Rubik:400,500"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0+quic/46",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "content-type",
              "value": "font/woff2"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "timing-allow-origin",
              "value": "*"
            },
            {
              "name": "content-length",
              "value": "16268"
            },
            {
              "name": "date",
              "value": "Fri, 21 Feb 2020 01:37:19 GMT"
            },
            {
              "name": "expires",
              "value": "Sat, 20 Feb 2021 01:37:19 GMT"
            },
            {
              "name": "last-modified",
              "value": "Mon, 22 Jul 2019 19:27:24 GMT"
            },
            {
              "name": "x-content-type-options",
              "value": "nosniff"
            },
            {
              "name": "server",
              "value": "sffe"
            },
            {
              "name": "x-xss-protection",
              "value": "0"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "age",
              "value": "1580038"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 16268,
            "mimeType": "font/woff2",
            "text": "d09GMgABAAAAAD+MAA4AAAAAo3AAAD8zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGigb4k4cjGAGYACEZBEICoG1EIGQZQuEHgABNgIkA4g4BCAFgwAHiXwbNI4l7CbeQ+2EEpXLZxkoimDjAJFhO2RUlBSqPPv/zwlqjOHDtntQ02oiGFlEg2XhUleL0epSq0erHeZarQ7rqpqN0eydnV2a4V7PldLpW2mlPClrZt56QJewSQrXX5WSFQ6jrNeaWh/9492h3qHn6+MLO793uFSyLEQkACIBAoQiMREhdHipiMVxOEMrOR9Uzs/0ZGWIH1sExi18VM15eeJ/v0DvzNsNEJAKOyCSgOQINFfYVvXkD89vs/c/9f8HG1TAAAQMogURlSoVsbAa7Vmxus1FXnl6udtcl7pKvV7VdW27u93287S23iy7M/+9v9VErmIU3VYhBnJK6HXbBZgB7SXorFXsKJdL7WVwmQ3w7y+Qf77u2blvkz9NZAkngQUUWAQhBtpEnG39gg8/Z/6s2IT9WqMbAfZ6gL0Sp0kD9IBC9AIA+pfdefsjaSJTo1avBLMfBNHUav7n2sxOFPMErx9rEMWnj5CvDdOJtXb/EmazyqPSNJrfu1+W2eVJtoRCtpJQ91UyPV9hNnby1v1r9oDAAzvMbHqXY5A8qHMVi1ViI21nKhdw8VwHBfCPKlt3DMq6TM2Vuzax+CUmFXgGYQrGHiIEpvL+3tS03ce9LwKKhKhAjSsop/pEp5Taj7+7+Hj7d4HM4wKECFJzFHG4QBwVyINOs7sAKWAvKFCJpxCDE0EqUZl3Djl2HlUed/b0LnPlonRXumlD7htXpYvWRWV4+r9vXPNb9NKAttCAlWFg2zLNiR/F0Qq4rQpRQjFmm8j7Pd08YC0suIeEEoJfJMD3V9/0HhHjKhZTusNsGUL949M213S39yuiS7t310JnX7MvKaWIFAkSJEiQUKTI/N1DnA6o2JT1qSXOe9djbNVh7Ge6UYqCRdSgYHx8TwtgMQAUHt4gyJAFYAstJ3joGQgEWITHqKD9DnDnAepFddWdgHVZVXcb0MIDTP8HsAjo4BO9LBC6ZkLjelhQiYO/9PzONiBkmWHwWwOA2ScSazFiXS25EltgeMsYyT2AJSsH9t58w/wyKP+/Hytps0STTv2+S4SksaY772ZfjuReRZja9Prb2+Xd2G092fMgkRZbBaFmVnZObl5+oHp7nboUCMUSt+7ce/DoEw4gp0nQj4KkTbMkQFjHg3E0TIrb/K73kKB0FGhOVxQddlFfBlinmyCIwqQrJTxQk+CjoWK1RntggTNaZVg0p8C6WHuysrx9E9w+eAd8iNzj0Dzg+ipP0GGZJYtwXEDM0sW5IOyRKgRURzN2EN3RAdRWYsfn1hG5fE/l2wCXMDpgcE3CNYS5OJ0crAwhnEKF3UMgpfr0xRzgm7YANIhAAVhOL6O4aaGCidGGScpSAIAFgpigAQIGVDQisEEDBnMIYAIOoBhUhxoaUXsCDzwIrQ6xgQKrIrZlSenIF7qlgngFBphIgYNcjn8JAxCWqQPTDHlQCPjgf4x6yCRkXV1cljbC8h17FMcHr0UqBH+xc9MtLWbKJBLcdeciPHruXS3gc01c00XZyPcZ/wBE0nlTe5ZxywYHpLtuydJ6Wlgg+ORGmINe16GT1wUXnfGxT3zquptuue2Ou+65DxaAEIRUW0FmIILEQMz5FNwGkJtAboFzG7w7ENwF7x4E96txYNEWo/cSQZagsRRmFLIM0XJ0VqC2ErQKyRG3GxGDGBLsDAh31mmmEsU1EOyGB0OChCyQkAVKQf4Aof4kxGPCPKmggjeagSXYaCmQEJ9xwNTXAph+n5JuIQ44FIfUHdadwGPqSzQushjCWyGVLKDWxu0/TCB4AUw/wnnx3pr3wIsPX4ofkCs4ws8MuNlGAshiBAEsiAgGIcADBhgxKlkgAotH4CJRvX8+ITAECXXBmeXPYuP53w1dmpAOICepAafU24IszI7saMF1R/bVOiS/5J8yojBvq8YUQk8xtLYbe639SZj21b9GwWgZ71KM3Inxg+NpDn49fpg/1bLxeFY6+2JiaSs+PC99c/Nsw09F8XU/RKoYJg4XY2YbKyaJGWIRcRaxhvgQcYXtd714UvxKwkjSXJpUAv8rlpKqSE+QlkkrKYg/HAQjfBFlXMgvFSdpNpcvlSutTrfXH40n09l8sVytN9v90+n25ORmNQKRRKZQzanSLFi1Zt2GzYrLBqwht9sh9azqsqH3ynWhzf7k2Zt3XxCVjubIzJ+t4FMJYqG8TJyOqtVX/iMJJLAMdPPKnC+HU2EoIckICpq6qs60dOHKkFoV0BqiLcACiK8Y6cwG6hXoFumS6C0OiUE3tEOb3AEo4EenKDIQv2WwWggAJhC8AIACRIKZUKbEwhzNADV0AAEq+c81KaM6Aq98qK0Wmrjt+ZpEaYAFWzBx1bYgnHwmKUH4VmxIGLIMRYPqaSN0OyMPhSuROqCAxkxpEtru3N8hdLEhqKggYAE8Fx0omtl+PmU/572F3t3CCYV6IJCAsyQmj4SUVWqXOxr96FLia44rvoXf3aIMpXc2XAh/i00DLOSbbxjaYmG8fYI1/doB1WkWxFGS9D5qYMDUbJAieHRWMC9YLkweTD5AEWCINSySYoMSLFVohNbmB3kcJzoFnb6Clwhcyc8SyuHssKdY/kXBZkXgRTAXXh7kQwEUgq9YBFasUIKlgEZobb6QZBFygMtBXPtxzAmuiEAGMpXgdQQ387fB1YghAAKEBohiAAc4wAEOcIADHBUohhIohUZo/UFYSLQIc4DkIHSc5AS1U5jTEJegrkDNQl2HcxPOHXj34D1Fw+gveJqAAh1DS0JG50rR8oUp4J8WQS96K5PmRwHLUrVoYIluC2wYgAJKcfRc1LRSEggaQE2njMLSgfH/DUhS0DVpEIrLiSlIQ1QEzxeqIniXLXUlqzrz8Q9nilAjNUkz1xF78KdWchVHOwCEi6C2yS9gxGlcoIH6WCisFl1adRg+HjmcPJIgpRnso27Athy6CZ3Y0sJNg7BSv183KDKCDmjubEu6ZABd0Db/HAagB0a9NkJSGDPQouAAAxx0zFTp82MVnG5xw0NECjNgKnr56OsjwaQWmFaYNjQJQYZTcGV438h5Nwy06I2/XDYE0rnW7jzx7VPu+KmADIEFCzv+0KR5DtMNHGgJONo2c+rIYkFcFX8zNO1r0GdnWYB8eYfbEptYFACNFTQqXblGLAodP1D01FnIWMgmhjZF/H5vLo8hEvNhHMf4RK7PJ6uQeHeKUzWauzWT6dnaHXv1ZfxOSyKJs5oenCxgSkv3KiC2QJL8a89VirUa8pOl8g6NtZ8mvt+MIogcHgthsLzcVFfrkaGZfpJc6miQSSPu2Q40NwuRXEp+5d+oiasiJpX/1BK7vM7tuiHmwH0P/ec9S2ZV4P83dC3MnfgsWSdFWLoJrP+V3NjL4DlNmQK/upPnZjDk1QQQDPo1ZGSFhRFfNgmQCwAyy1hVpeCa4xjMuisl5tmTTZaBXwUIPcvXAvasnSL9OsHtu/VQ1yN7dj1oagTf++attJXYPkZgwba8lBrXVK/DtLR/mp944lkosNqzb70SlZuVM2OKQDlLj2WhFhIoyxMhQZIxRpdhjrHGicKZafrURZx2Fb+T5NYKpyOcc3hAoeiytbMtXkjX2UgyGUdlAeBYbyhu7flFlV171LWd67Bje54REVOSGEvNZic45Sfh5W+9j9Mld88LAREVFT/Pvx3Yxo6ZCYigZB+bSVBrA9yhFVkr6hWsAzvnAtupLkY8fzUP3I9Nx21tN7MSWFuJP5YjljmlGBPfzXiFIc8OgRyUm2rb9oPoFl2biyagFvoJhTh6iLyEWW0f//Tbl1ri+zReNKQcs7SxZ3p9Xv1Zi1JhXRwWQFVldW8nDMbqCX2Zaq6bE9xwXDJABuT3M54abL3iNPq8MQAHtZSR0xobTKOSemovD4bFmjWZFIeC9fd9bTUAQcamUB97DebtFSOLHcQcrmwf0hNmk+nYHgBCMOwHJ4RvBfTGZf+LDQg2NQB3ormtvKBtp+G+jTi0OwhHa13dgQlMyC4eRd4wAE2mwdVkJs87Izgv0DMcRm9E7R7LrMe3XYD/2KTZSnIAQLJfF3bxU7PwzEgDug5kjSrkMBg7bdoa8gB8iAdggmwJjQ3sVXQyxuC172gA5NKWICKbix+pcUzC09DnYcuZJvHuoT4pOTzl2ea+B4gRS4hRCPbpAMvqHHOy3IeHkDdyc6ridDe6xzewRjk4QWhTEVyx2qW5YEp/bZdxSreEXmoX8GZLCBPUjCrGA+sUglLFpcej89SvW96+4agaO32V1D0lnaX7hhMdyPgahr6lGc6wmFWWrrxFVc/WtrSxOoRM7At+4FDs4Mj/PFavZq6vIJocow5dUUwwzh/G0uYbs1+Dw0oMc0axzlPI0+WuC8qMpCIKb4AZc7WklCL5o4mlJC+2sBB31TZmsEz5KHJ9kGhKEFNQFBmW23FaxvKDPRa2TGV7F2QcDIwRIBiE0EyACx/XxeV/jmGrxiw4FVueyBRNXDCi+kB0zlhs4iQ5OPiqdMBstqeoZ6R0+aQMluFdxISuAsVCMuguqpyjKc82Vz+1Ytjznp2Le7CQjw7WsHVVvTsuw3Leivz2Dk8Jq7dd5ZganVjxHM34pXX+cZ6rdse2dQ6u0FWVUHSrkKlLQZeUCNXlBboDQGM298t/F9047a7N1tOCdUmlWShBcdxYYYeZTJ5McLjJAZ3hoefxOj2XaWs6YaCPoXMxsqcuP8qJCYthipQV15FB9to/+mR8jMebEgntou6Mqaz5x/u+PJO03un02c7kCmSG0dHACVoYAU8NyrtnSvyTZynvW3vBuTbn9Miue9Wc2dr3MOgH0soKlq4EcLoFYkAsUuHV+yIU/taaIBCKWE+CABZuxsCDPHBehQkQCPVUQWiCd0MQECHjEuaEw64YHibSP0lFAKkYK8EjJCVBSoaK3EIU1Kg0YFKAaS1dKh2cNEuTziKG1XLZ2CVwwOK0Ii7ZEnjAy4HNa7ly+fAVIVT8natEqXhlKihVangmfqDUCFcTLM0otZCoFa42S9Kui0w3YXpA9FqmPgNQgx7dWZfDt4HeIgwOwB1E6xBxjthwR3UKcZwRZghxIkzdJZMzINZZGC4R4AoRZm2wj32K5xoc14lzA46bxLlFlNuX4X0ojeEpyp9A4Smh/v0jksAzMTwwu2x2VYhYQFQzvnFPfic71Z4jlAKtPaqXANOmouuJokvJrnXahKz2wOAvc7u6Ibn0o9RSILq4zFlBBMrkarwGmXhBv7WxHipHxaXjHGDnUGDNhYzs5hlL5EXy00uJCZ0Uh1aWkR8zhT73COIRfXb1wGtmr5RRIMyKQsf0iMbkkY0Unek/3jZOAqziVPEz9SkRZstbtj3wtQBQCAYKCV/eqK1Yh6qmDAk6Hl2aULvU0OA6meWohxtfYuRHEDe/5coty7swrsK61/GUbf0zbaPhcQsEvRXs1oR51IDGMA0tLS3OMb0WxoM6kIDi9swZyJRGMS5BtTSJcaxzckEdzYUC8fpF9z7XkKmhMCkSFnjT+rosLT80BYSDAYfdtbe0rBL+4NBKesxQ5ya0o8d8p48OP6L52ah192g9dfil12/ccJ0qkANGQqACAczgAYsB9+CSSEjBpQBgEVgUFgdAjFsJCHjcAY+AGMCDYNgBQYJQ4Z2Euq280G2n4b7LMDhhsFsYGQn0rIioAWDlXSIw0V+ZIhIILgVYQ47ujF6MBqyoR48CLI8BewwRABG4bRCKgCtgEThNW/z4CKCgadhxgXj0fthS/4kfOy+F4pIfW51eCL43C6HZSwQ13gAnSLXegpBHACYP4KQIYu2W8YJUH0sEsIW4rvthbRhSI1STOrvTGwiuTHpIHzjJ8XXsTtu2fjF7DTaSY6lmzwbSl+boBdc6B4H0rBcAWFoCnxlBABmWcTJE6wBcfCXoIoALgil4y8zzHAldp14ZBoZRRFCmXARBZQiislDpEoiaYKQJBLmAuzDfucBJvUsL6nEV4aXJwaUgqVUfBJECmYDvRGCOYC5qYCFYeP5FRG4AbMwQ+Fd2jECTL30IppluXhd4AAP17K6b5sAYOysv1KoMSAIXCv4FIL8AIvqaFrPJQ2JpJgO+iAOjhgAFqKWrmBjO+7KLKDbzIIXMaZVCYzNHZdzKGGjfvfNYgLrOwYhfDDlLox79T5gnAJr3N+uyxoYqUFDZXtMCSgGLy6OJG+tJrfnhAYAItAj0c8HXNJf7cf8bUUM3ysfisW18PP6aCWels3dnX8yN86wSKWG4cLZIJQZpEAIsmYeUbArGRj0DxCErWOG/G1akVKDfuE5+fyU4wlhTmf6sz5bM5ON8mt+KwJFNaHLNcMjjzq3QGBB5Zq0U7qzimE0V3l0nNsagL49A5MGJnG549tpQcn2AAR0FUMgGAu2BuLj20Fi6KzuTkMEwhdSCaA+6jB3S5yYV+3Q6Ur+AREbe8wsxtKq7bELrUYGB2D3Q5w8QuXfCoyI6ZlM+3OohdD4UXAbR7okHcsNv0w6UQbJeKHibQLsXLk/1dEunWnDxJkmfbhBtHlidRSKVhiqwUi0PyG27w/XgPKYfshCpsU+CA8rkz1WTejfBxVX+LKLMq9TgNjcL9lw2b/haqkxGNxY74bJ8rJo1l/Lg0wSrhufFSoQ4YWJfzEtDEZMAEzo9X4tfkIKHicHbM16ejQ/Mqnt9Lm8DdARWPWW+/F6Y1VAfQ+/8ew4ICQUxA82XBsNZrRZ4DddN5nyA7AtUdlAsaQ7CFtsY+MZsWEgfCDbmEPCDj2DwwTlI8l0QrhTvKwpHgmE4HrlGIFhiCGzNB+/WArAFIJAtvBQDhqEYjscGO/RFSrMwlr/myZwNDTCm3m577LXPfgccdEgbrjwMhz3wlbMsASDHQL0eHgJnoeWvG7LJZltstc12O+y0Sy09AvJ4pPF40lVabOVja+zI+8dXnPU0QO+sD3Do/W5zBnk0AHPLXhYExFfo+HthFjgNrLM8buskAhhvRrEWAO8DuhA8A6yFAihgAJaDA0EAX89XchsseKGAxUmkmO+FMC65nenF9jewlpXFYMWwOCw+S8sys7pZu9ZehxPKob14wX+3LFJaG1q9O1hYkayozlK+BzLFgGMApmjg34Oe+7iPA/78XAB/vu944D1TP0z6wK/NtOEFCMAWgEN8CuReJpXb/1SF+xqOu0D2kd/96TS1X7sDPnfUW2ZcdsQlP/nBj074CR5FgCAhwkWIRBcjFgtHHB5RS6tXTvHIxF/3NJcddMsz5yKQzsrGwcUjh1euIsVKlClXya9JsxZt2nXr0avPoIv+dckvHpjygS898pX//B0EPLbQO371mSchg3/8bKeWCOA3fzkUEeyw3Lv2afeS8xgCIgwJiiwQTagwVNEYmKIE40rEF08gwXeSqB8A+Vh1xFoZZdAzMzCxsMvmlimLb/w95VShVpVq9Wp8r06XDvN06tdogFCDT3zstjtugUCTXBIgSwBAVwOyKACr3QDWWRiA8RvQTyxP2IkVG+9SiEEbIoObm54k2II3Hvzm6s9Ht3jbDvD8MMAOBKvbuX6Y6rPjxxaJgwoBHHjsS9UwW3LOuHxPMTyqA2ltmC8fKHgmwJ4DHt22iQSJ4dSpIx7HzQOd62+BJypzZEkAxL9WfU5U8otKWKyJepHzOoB8zD0FCjzvLuJcXGtkiw20BSg26nyHGidBCXQatBb+Tp2ph8sapU2ApID+y5cPPtn5xbJdVe1WrviYPGNcUhXSkNK4PS6Z0zRUMcZRIedxd1w0JxLHck1EYOvmR8uMBS+Fj9rYRrwdoDs4YiiWlrPpNI5zOadIko2iGbab8Dl5dn6MsVOHhunYXxcDnq74w0dhGHsxGx8vynlxK6TtU1ETShXGfFpX4Uw9HyLmzVNpFLB+YTeXZm6lVhmCpCBYNVoknMhN0xCthPulklgwZ+SAiZQoqHwRBHTW3JJxzCPJPCReTgDymvSPu75GasP0QFrEUEy9KfC8VJMXjkueizLXI7stiCWisik4J0gjFSrrUbmb4uGv0esuQZOk3m3sdm7qhdqDkA0h4lid69S77ScTb7XjQB5YGqQky/LVIMUXPpygiRHrPnFOLDERTcZxbKzKquN4OnydEVIMGRQEa+dWjeV6rLlTKJlQkIPB4HOWd0HQK9atwmHtLch85nhhVN0UjNN1lJvVjXKuEdwsriDXWdJsHJaKba/t6JP3LknXMdJ2XfjCTE8Sk0V1UscWm50EfjBglbBTFL5888AZ3pGCHBzp4NIHJ8sS5OPkeecjjzvdDCWDPahnzNRY0RQ683O0AiwyTU2rlJ2Q1i6z5ESySZYeY2xuNrQIVYogUjPGqOtjbxt4yrRFfXf9v9fVvbuHxFJ6lBGpZ4kx184yeQvcX+ogWIy1rDhU2h8lTVk/qAtigQhUaYbkyPqBeWEklFQZ16PaFcqacUQFhaTjJ36+Jx4rHFutG8BXFqxplJaLhOah4lXEDLjgwncMf8YUr09iMOtNLE33SrUuZqI8Os9chJBIkVSIwWGLhRlTGA/1nldLHqneL6D2lSaY+cpCDjRCvUjZKzrrVX5sCpKFcMag3rkCjDoHCuTqQtQESCohla6uYNQzja4RiWIeN0HL7YTAETNKWbFrhiJ1NgZVmyVlqPKxZH7cvNBfempX2Dy5PzLI5p3YWtx0qGjDdPxqsGck18aHCH/P3E0cO5wUAyCiwzAhOkVY2EtQNlQLdR1PI69oVfwLye+nsmR1JPxi41XOescjYV+u82zAqrALqBfA7124+oRDZmYGMJ2AzFrlwHs45QBnGmyY/qEbOGAy6bgydd6IBGactnZeOeC8loj4ENRz8fKtrfPIM53ENb/GUXXc6G9UX8VpRLx47HCoBfSSx32SrHDrSGd0VYdc/RzMGEfK1aPOf1xj2TQb1iUaVwA4psjnIw15nt0DVqSJmV5CbW6s63tUgT2BKKgJTgeL+XIA7kOoBRkkNM+PjkalTz2kEydCC+k1MyJFFO7u4fXUMRycdWhqdCTQ6GX9TLnbcN3rEa3ZJmegg/B4ElKPhoXlrXFNXSxRYiw107iextH33EGUCy5pp+3ISofNGOUbd7/vyByA2WWOgbKEa+oxFr+eIRYnBv7Q8ZwBqmMK2Iwbl3CbxpMxmvlHI8FY0rRpOwu/PcF+NAt0tte6PQbgGBOUMGtQi3Gnwesft4S4qR0H1Fgypspjb+1Owx1BT22fNZENmx193m5+DMBZL4hSyM0L0HbFBbSjwR91LPiYuepsZUVMO/HYTnwaz3AXRbmOoByDucGLpIVjWtyV4IWsazSa2jw430et/HXO67rJmrF9hyU1YmqgowEzTC8Nc5CkVGPEXMwmj9HS2qRCGlR5z549ZQNcQMr37LKMx14GzDWaktifuiKzkW4gV1GZ0atua1yboU7HzViNjx1/LDwjLGcRBM2VxZqbbotlq1D8RdqVmYcVQDDauREGoEQg9U9OqsWd4AjFhgxXCF2yMbTJYNkXpdEkJ+mBKvgLzca87ZimsEKOkgHn1HkfmoQRycxHaD5OnQ8Kr7uvni+HZRCyyTDVHAZ1sZudPjRyg84mYbADl8vtmBXzlGB4MrHo2w9Boa091wJIDxRz+nEJJMFtFKMkVS2Hc7aerNwzak8Nx+phjL3B61wm7sbKeHkdY5kWysG9T5IqVaRmhz5XBJSR9WFpJPxY4pQCKe04KTQOvdJ1FncwdIWOKLO3s3qBt4+z8DgOzK0nk0fW0+ozt8xnj6i7NOT9eiee00mrRzE5UT/fW/hdW65AOGuiP+k5g3Hd+ntgtlX3N6DHPyHGqPQWTr8+KDSOTl4havLavuziOpkL+e5hysaWevkorTNnvvwVFkw9w6cyvdbX8c1eaIF1HY04OTtS5MQaKwlONNWGthIcljKKxeNKz1avyhi6IfrcxSgV6H4/mq8lDvC6nMUygFoQp90YEeQHykzFK7Fa6MkHN0tG5ajLuVuJu3wc8uDzdvTfNfnN8Em5WbaMqADkEQcyv5HDLHxJspQwM1aBrhS5RtRp5voc2Rz1XrzdxJXcSqRFS4QT7WjtHf0fj0rhq3it2jonYQ2hgKmPRDuKeZwr8YB4soPglBYUcqqxVGFyaUPaWcT4UANTDcu45T/NwnOtiXHXu5pFNcO+3itwQ7skuU5V+Vs7u+WG+74HuLWaY6NF4w4lVkXCU2DRlvKbvVMnutCKave3dIHm3YwfMU/WAU9zZbwEMruJuSZr+WVz9+qr4CQDsDCOzdFavP0ahHcP+UqCNkQiKQrK9Imulnt9GfT7gUK/Pt7lXnZL83MQ4VVRG/biUvJNP9KvAN1yrxSkX33oiNL9K4IWP5xYpbJ43YuJ/WGbNo5h1bh5I/J61POztsaC6wriOF5oW6MmyCFi8z4xkbKOle2AlV/70zIZhHInQiiaLSs2RCmO0Yrs652brepg6k4SGRJqT191p/VM8TTnaHZB9Gu5ye44NFXrs/uOT8OPw8XiQsfVQcyJtYWmJPaOKYgjphz2jv1whTAvR8eLyzoLrriaXWy+tZy34xvwE1nf598O2QSwBVvWprZYXxojm9W7YiF4IX7RHseA00k2A+RdLYwSlxyJfzssUmc8dMaQmj+rS270RT7A1Riu93pokMS2W0gIJ1a1HSWsKoSJ4n2zQ5yuHk46t35Z2KnzXXczXL1enShOkL6qCpraYaKntR6n9k17pemW3uRLjlYH9j2+hkr4uyCP+WNB9ub1pqEjB7rGF96WJk1GwPDL/z6bvTcq+waZOMG9Y4GUT2JicR915z51H6bQYfF+9NQSP+qySZ9mYIzesTxNn5wRIu3ZAwVEZ6PH5QP6BUe7e9ZaTWsEBdQ0uuFMygwpRZ0IPVD2RLM7Kb4ujY1OOC4KhbpK3MV41zF2R5uF0JNQBDMNf3CLs6L45i539vRQf+e81jPDaEpsEOLKgFXkEmKbKFnB8NyiNa9bl3UPJ4OYTX0iz1rcJoE1+SEujDzYM9iwU4n9QJc3r6mj+IPzKC7sqPZ46b192UjDvOtG/uDkkLGTXbus28o0S57wROJd9Q49Pd+WTnrYSu37vPlC8qzN2xoZX5OHI/V8eOk+cvfSWph7LB/+nxYXiSUzxu+jj0fqI3uejLoRH5NQly153cTkdQ+FSN/+2by8BoTIDBevuvLMj3d6Xgu7yWc4l3zkeZhGCueQl2u/KMMUziWF3qU5Wvnz5A34jhD5yZ/vPESEWi+2hs9QyD3NdV6NwsmaTC1M0chLalQWOrQj16RVKY0q49SdKya93Zystpv053+DLq7cph7BMrPI6pGV61fPHUpPr0tEu1BOZ0YEu31p7j3EM6RJoYin2yYWpQW7BMdJjl2YmFU3lF4ERAOTAjXywXiNOtURZK4KCa4OJd/UoJbfFQRNe3pj4P2r8O10j112yRG1x8P/XTSmT/kX9avXCMu0snEBQrmmdyCl7tuPvFYvn+uFiphBRhdUWVzqfz0CtHqxuHRMoRg+YWpYk13HUYQydd9Q6zeR1yupKD/21RrcrtEvWsq+xee4vj3Pf5jNKecyvii/PTRAmyrAGPLcbdk/p/uJn0g1nj/JEvgU121VDwbkGChBA+vXrigbyEjz0WB2lWlwbdrz/GxHXkUJXEHJSA9QVY7N8vLrSssEE/QBxfBdPeJzvCLHOLjAWNgFSEvhC8LJSoJrYHkpKcRawEKsgm8tFeRc5p00N2c4jmvvwS1Bvaiw8wk5hWlGt7cmv77Oj3y+q918jk9O0/V1GbJpg2T2f/Twoj4OkRliVovcTgsyDVfq/1gTyaCOJ9xBiDM5WYz2j0G1UrsZl5jbru32734hWLIorqE5Eqc0+71pwmvhMbTJxgm/W1yGo4RUX5iF+4u3lAt8NX2gFplas54/bvBw4CNcsy5ohU6dTAlatmPj8yMvr4KCi0Fn2lNvWrdiqreiElfJpIbTu6krqjyeyiq4khIfF6DSNqwyB3RgeKC8E281cyjrr25R8dyx9Rc3r2wKq38kkUsPRERGRBAa3t5POaUeO4GCGNE8I4ofU1B8VP0qxFeW5waPn0lV98ILQRZkqtauXlP/sSlsLf3AvTXji5T379d53ogcf0kpVAkc4BSKeF4v3zrW6f5/eFmL37+wed6hZ5K5i99r6l/KcZrce0nCBAUNcAy5e8ndiS6j/tU7KUj/rHGd3bFYKE0LjMYyHoFNM8VTKx6Bwp1HB2u9mfGvR5Y11btdVabQCaqzgtCga3nlxculSV+M7+97Y8GCN7b9Bzb2K9LzghEZZeaaFXm67PzcVBVn1TSWJ8JNK5aJ7JrklLxWqSurTX3lvHRURjnrGzYvV51hzlYq41xutoOWF1EpkVg15Wv9g+C5QtlnaI7iuUKP+AyPJ4VOT9XdI93HVRs21xl4k/HFxRV5ucWVVeMJknQ6PrZ5w4bloJ/4cIWnpN2ILvu19Ovp9quBWZjMSLhHK/a408DhuQtLqq+HzMaqRx9oKKTHRfa1NtSjEXaMORDxi1aMZ3Dp/UMLhxf66TzAW1Wu+jTvdlIiiaZL0Z9++Z/T/2wzqpBH2/Ukf5orzd67od0rTUt7DWpgKfTzD3UezF1LzR0Xis4XoTQcJ6g9D2+Q5rgUkhWeYPoMnhBqMIV4nKWz1FpiPv0I/lE3+YG9AY3ojZeak4zNuaUBtdbohj5x9+XUNSweFYxomSs0dFQ2ZFkwhYTkJeG0XIEx356b743qDrah4yXcRKNADLZjXrzInGRqyS+h1FqZDX3iJfXB+9vUnJ+k0GW1za95yx+KKeRFhexMdzL3P93gZkoinkXqyAqR0Vym2ptRtzZIri425xvVmdnQJHz7V+0U76FmoqDFJC6O81kSqam/TR7f1OhfDtdjFgtW0PGDblRmGorgEtRycUuB3ReFhQRj4UWlVrAX+/rh+0gSUXrYzfZqudRFQwZRSLsnBn83NtuRCU+FVUBhygzZLePEcUyIg4wav0y1wg6eTiYbmx7zUzr9UPTNMdsbML8bKqcJYxbaWi85J5J7fw/9y3ANATpcfeNyvz/F8a1fYuyFuE1A3ntPcbX4Mi2lEiw4BAsp8Znt7yOU7HMJTTiwpKVlcHGL4UV5eTWvmojjSOPrr/5x5ujfhDtQ6ngW220u4XQS7v7I1fWNOSz0BkDzU4tajU6rD1jUotXqM5tsPmugYLEWGMEBHJhPuB8CQvPAgvq2/lX9oZhCJahK7yhJk0x+snGXVoi3WHh5tVC/So4rchXqDY5CKw5WKzRZivmIRQoVyHOyfMWpmKKt5KOU0Rly0aIsueg4Qx8xXB2oUSfYGGgAhdiZzsyucdkyciwpDn+TfxncQJbjCk2NWrcAu03fpv76i+9NXGuxBHG7kDFqhNWuL4aLUQIKPXZQZApzEHOZf381i6+tbBqsY2IKSXAGWokl26h3eWw0T94s++45UtJtSqX3SAqgYIg7+q0lJw2+RMMPpNPtiIIPIK2MnSEWyRQoU437zwgHXux7LYNgBvoRlV06/vVrOjk2Ebr9qwuqJ00M3Ykyw7WzH7378fg1PBA2jLe6XknkJU6isbRNVDLgk6m9De1N7MqUp6PIaQZzstRszYpE7KpjqtmimGTJoje+IwGXufCdKfGplY1cIOL5DCP2Yu8QrgYj7ugfammhCmkH2lHPVG0ZTqcHnoiGhKBAx6Ref5EiaA4V4Bo2e2iGTCPzMbX3OdLMjQ5QVXQu7ipuzqGayl8g6rMWEsokqirnLepZVnfErlDoMh3wpADhatskBzyFaHMgtnsvlMjlYF8f0hERr26XsUJx8k65Is3kfKIlwVVaEZ4ZUSlMSyuXnzzPJzRBpncym77ocb/v3Czns54kkvVLdTc3+pfA9ZjDganq/Esbm5Nd3ztblxsCjY4ia2mM6mahS+bnqMAZs98lTUAy7jEJKllKJETxMOLYOR//PmVi42HoUrgOEnD1sKSxRe0WKlIff59aBHmo7hBsTBO1WjWT4q5v0weUxJU/abGm6niyzHnk5SnJvyYPxQIkgqNYLrxtoX6WJFYWNK+TJuvj+fQTORH/F5htthSewFyQpMvwJV6yoA/5+nlw1Um2TMOhld5SysOyHFqB1FIZbwJFCt1c2DTQ5qxUifIkGpmdPY8/Ok5SVqdzW7AAxVJgW7I106HRuu32ZLKPR5HCxSvhgXHWdG2q2W69NieMhv52SjYmE2uRyN56Zqxltj7n6mXDhPig2EwPsvlYZrAbGwbrGfq4cPeqHOfBJL1l4ng41yfzdeCbhjPdKhI6zcTGBRNrj+tju4JiJiO9s7vBnQAuDeg2d0/w95xIXeqOkb7+iHtaljbgeLJ/UcR3USKKaHBExoCe6+7vbjwO9jO4IMm+R7Rx9+dH/c+QcJZJDe1r2iA5ZyvJ0QzzT95q/eBudM2gzNC2pRMjpc6CBN4+Vx4Tl5V55OTl+QTWj7L2d9oXBIsWcyU5GeuKt6JCSFaIzZYVhVcTaIZieZZqTKE4/rZ5UQxZ5rGwRgs8o3nzGrzzZHNRooAlCiE92QObYyfT/zp5ml+3vIpfU5izp/7kMVpE3aLK3LgGMNEjBB9LvznGiv4awm9A3NETbTDVqxNNS3Lm5rXXXkfa+VDrWwRs/r7iW9GjqM7goxjNOiTyw0K2amrcWpzGaP7Tj4x86f6TGP665yUD5goGQy0GNR8jXoFGpTJreHi7HT8kR50SzcObTHjnfhf9bSdBw4sDU9g7hhsA+eBTPdU/tnD5U2NwPzkzHQsa6B1bPMmbWQctoCQlY0JJVr3bnVkPzQc54BUWZNa5ATZDylPLqhEcmG8l8bHeUycNElJoLc2RDNIVinEs6et1pKuzRakGY4bOYhlk/IeMRZlRE6ob0p0dHd3FGbpavfr8jVQucz7D36PQh/Pk2hwmehZFvDfjcmliqj3PrB98vRxTiGFoutyTQD7icoVW8znO5vsu9wdXw0/UVBr15V1yB1iu0CuFmEI8ffvIrcUaSgFZ5tvmr75SJa+436f3r19L4Sa2qlIKQmB2nMls+V9PU6rMRV6HqSjLzN1/1xWGSTHAYiYlhBf7IyarT77p8o/T81uV+jqrU9/UmewEX2C3XtdqKDBXnUTBKj/KsAUJtpdnayMcbXpdk57n0NZlyE7yOuIEVrlMaHVwBYJNm1UmD9kVYE0LRv5pnxCyWl4+jp8Ejrn7sWHCCbIcfsMn5IYKfarWF9ErcCoKF9U2NS2s8cnneEMEFXR6Q3nsnty6TTNT5QqvLj0jR6dQ0K4zrLnlNp0ubbP/+iLYwfEWJKn2vPs4ywaaczR+nU7T3GHyeOYZUprS1PzcZ2cM/qta+fpcGy/RLBInWjYdgiQrLy4W6RHL/KcR9LS57ELADIVGldjNZptdFEGm6JFOuyFOT48JQTA2jMHlJsUEuVxA7OKCZY0y/ebNR6j/lJWEyxY7xgIYJJOcZGJCYqNMNHaw/w3z45dsEZjTvuae1uIxhGkOYaTvik6x6MVxX13eto2miUoy/QyVbVZpCCwd19B1ctQvNyPC+2iRVFYiJlMYydMco9g00UimD959iLxi3KaPixcpHBoTuNook3QnTVO4/sIa+ZIptsmcia6aiBubT8e4d2nhCPC32eXBxD+WaO06E9xpj2ZF0v+PotooIp/ed+t3uD/cdrrBh7VKNB0ac6QYdKqYJ/uHg862HEMKd909BY0fGkP9Y2FXqnme+YlpUzzG1OdVwYwqFjuHwcxhg6LGnUhS3/30VdrZ029/Ki6G7v3/DWM0aG1z6qSyn/8odAiM2rQ0k1YQwf3nStIYly6DccNjpaoYDBqVhg92TTQ4IpaFRPdFhE8Eg8bGaUY8kWaS/t/vSc6xpKZ6zeq4r4tz6z80huZur2IyOwbm6cGyclk8KRp9XJY/PsqmudiEROW365+5pLVoOnUMrn/68nc71HuXaokqYbbdWI09PK8jEnZID3flS0IrSewDTMbbjERdVCjtCsaxSyJMIK2ePq+GPN6QDyWK2qXtM0g6W3JiSWJJGMcWIHnBoplXbbYuVTyeTTOeuYNW81LBhf5bg8KRv3ylXQZeueh+MHIEDoWc8hnMRM4fQQtZ4SYsQBb06oMA2gmrImmrMyL1pL0ioolfusYSC3IUMmKAhiBVUmCVuy7taTcoOlaaP4TK+g9+HM0Gpg2WjgJKCqwL3hFvCsIxmcspc1QBm4fMstCna2cNigvb6fsfPE4xFDIQOY0clFlRP3YSNYEK5UhbmvnA0RxEjIqGukvv1LZ67YjyFuz2N0n5CoLvD8uUaJVn/powRoBD8WSVUuPU7kkMF6I+Ck8rbUq2OGpkEo9IIXJ8XObjMAOLqbLQDQppVw/4npIC6wSBdDPeJO8BuL62GXer0e2YQS049tlCo5cZz6DCdlQrHw7Ky+fIRB4VVYB1sbYpsmODSEzagIlTlFjgzZxG8PG2GtVCEw/5NF2XinaVc8ExdI52f9HMVEnKwwGtH5a0jYzYW0yR4dQIphk+2QDHCHZQwyMB88ObzRpORkyCb6+RnzbBNwdnGdjDNYrxy5U3D+tCdYd7Hju7Nr6GNZynzyTQNHFIRsJv3+lLi3ociY7EnqLA8p9/0CyTMY5kIgAkjM02sIZrFNua7kcbpj3c++i5+pFDeQY3EWcpjiLLYIdBfVlRd5svcCHmOKfkkA8JIP/gDA1gGNxPc8S25hEfLtlI+vbD0IMjv21hm4Q5FXQdrKoUzJ46NeKq0gtKpkAvW5jtZG7ZsZMp9i9EZrByD+AdfOzr0Ldt3bGDotGB4liwiq4snDo1YpYWFoCcIP6ZGD/5DRltHSXCKYWA5f1wceo9izPs/oXeFa4O4WlfnBjfeezb80KAZ4n/hF6D/83O0BcWMM+yN9W9sPGLlAXo1epn9LX0JOGtUXB2Pf7EGXRwbdsU46+i9vqIoJPWS8TEM2SxK1g1kq4fS7JALxWsJg0EMV786ATP2tRJy5k+yWfQ6oO7B/i30sdtuVhFL1RBknh4Za8Xy+S+6KlS93tuKs8ShQ7s++zELqrT2qkqaWWmxNh3NNId5bEmJR9bY64PC+zVfhLW76i1Wuq3+xHJn1+PUsHOPrOpb2eBdeeR9cf9JnP9VB0moYcVUWm0eY7FWrgzHfnttL8rhvB5+r+ooOdy9fnPebaexwcRlbPcaiFUKZVZUYiMUssuaUvJ8q7WukqkkKxVlV6yPilJFjtpu6VP9JUL7C1VZfn9DX5SoWyDuPC+34eEZpcNa4sWrljFug2YEq3n9Rl6R+k2oI854y8WBbMZpWF/XLhTBTVmBM1XOzcGbb35IXc1u2st8fn08suGLUcnlKgDMxpJARs0+pgR0ipXPPIk6RnySNzLIEN6lgDsJPWkNj42Vnxn/9oeV7NWUxuFelGG37icK58x2ys8fNa5Ch/zFM+NPnTm3etL3QnaFeq3JAHuZSCzrMAMTEfVVyuGB7B4Xdw6mi1w9hllWSTfghlJNuJSiv3DVyrU6773SW7u2CfeO3q9SYb4GIiKmKNPuv8+M+IjH3mWWFzu+Y3+Zj96IE/zkUa0XyOgoL4ew/pXDkN21aBUd38XWmz82q5kwX0J97/62s4ddxL3SzHyWso0O9dIpFEYbFTobzmLdFzhqTNgZcNRH8VyHw2vNiOySrx2KqrOkSwp4zrIWzHnZs/BJyknhf55lQXZxWvnwoGbumPHuXS08kRsQiISnHzjr6v6EP3VP4dBhJXFGMl/Sn8NGv8g4pR8S97aMXjzACVSNxw8u6DQW3vY6/PRRP2AHI68YcG05G3Zl26/wD62AXvw8NtAzo8rkaf/JjIk+sofN8siaT9l5b2KD7VW0tdzijrW29DgCr83Wd5NgiN1PqrNxO46A8Xt+DR/s8CBvBtadOMW39DR8eavoqO/6r3FWwkrHM3nyUWPDnxTbTEsWOA0B+1QLNmlsOEhI11mQ2lp/MVCsQALm1q+/URZT07QxWFEjA1L4nIZMUEuJzSKYuLem+AQRmMUQaAFQ8c//5BwcxL7183pgkLdXPDs8Zfe1b88UpuaELT5peN7Tp8+KL0aGpkYhiu2unSCvHN8NMFd0FRVWdji5H1vM2EKMUihG8NGRHEnwTEkJAJ5erT/lcGV8wMeTUhWCSmPrh4eNubRlBdM/cRHH5Fsn29KbxW8aBcajEKromqFTuKUgTvYIEspSslw+Iz8P/jOJKHImSdUq3KTRA5xWpbXkbizYaghYA7SRIkoY1Rsu7mutge1WFQhE7mGwvyF4tme+GEdgoSXY5lfn0sqy2FD5zoyhpI0Xr0WPKyc5RvGeaUSr0wm8Xolsls0R3+QQhzy8dNTTxefUvhs44KkB+EqdgWTsCNtd7RamZsQVeFb5w73yROsKqcrZX6yUOAulKQbk7YMU+GT60zdTLNgliU5h5jR/Ya4L9pXvfmqG6bmfrHsGKTj8bsqJ6urmXa0sJ/Ks9OWTsta7iFKlMzRVBod4WgsLILzYRVR+jCdSjtbjtI0xeKe1NG1MdJRGyTQ1ozlLluTOoGOFUfl0bWt7OCrMNI1jRkxmV7KdqvT4vOe6e9VIbiLM8wbc9qzWjGZopZdKVBF/OyZ2gSWvCTT4YQFQ4a2/0oqX1s4SIfgwR1Sue9ubXlq+eFQGnbDkukGtE3jKBkdv0c7gKaA8eY8Ll8fn9DexBMSuLs9IV4LVUvZ+gkO5+tQUNDtJQ6RybPTAg+K+re6sjDp4IlX9wSGXArbMa944jxF0dU97cjtKCWQbjwyXXP8iLcY6eBw70ZnSLcuMo20XkLUw9pcUxQ2lA7KpCJvY6oknyFfEtVXQgWbBt/u7Sw3kywWW4B/7/giM2I08oBy0MgKHEVv3tDZwsJIBZ3lvZ9xHrQNatHtne82Bt9ZP794YkuGaeyejhgZ4Ngn/0RynsXFPeOw+4GPQBfweq5g15d7hi1JQdkbRSPkcGm9yP7aY55CazlcVmzrIeVHpc5riQTGGW22Gs5MLPT9N4Efil7GydYleP8nIGOcccmcFs/SHQgliA6KJVn3T2PKY9GilA4QZYuSlttVzWBpkE5DUobBxzPOPdF1dHYwBPo3TBjBAll3T2PR5HBPoTMFj0x2/ga/mzyArnJK1+jWY1xAQSKM/fxEfk+80DowkBHkAUvPkG74gv5WeYb/WC9Y85/2UbWINkP0ZC0JkUkkRFaTEPmKTD89gF7DM0BQ1QuC58LC9hcQCqzdThAKvvzvbTPOhpxEeHI54ckCwquPxbYv4AumILOJQm4mCllDFHIiUci/RJGaItmSviCAV2kViKSCriIOoJgclNILCLCAcKnIrsx1YYAiXgCmBclTAgaUtAEU2Qdg4xAlcfL6f7dn5Xnz/kKl7M0qL6ykSCFQLAMIKPB1JtoTZSprv/BCkWpgTtEnli3SV0YyWdCGyUuhMHmfbCSbyCTZTLaQrWQb2R7cALoQeZ9sJJvIJNlMtpCtZFvjdp6eYwewrj1+AhTPv1Y7tgQnq7Nt3q7Nyoerecl5c+aFsXke8oXfXrCzgAX978TKXPDRbhmujw34dEnSiuv99kXQJOdfAEsCM8BCAMsBvX30wcuzTBYFivlw48yFGjzwZfPEFABWh3jl1YZnQoAPpe2rdWbfZ4xiadPjNrjBy9MKFPNi8+pCMQ9ysYBU4p9fHjVAXt1Evmk7Ky5RIE6i4K1BF5DlxT9ZsPhgCPh/tZtJATwL7uy+vSgp6wqdknACqEvL66NlqlAEAU6i4K1lsZNxZGLW5/Jf7KkRDPi6hWKA7CjIzFAOCNf3QAggRDYgFWiwBMShpot0we1iND9FsfeM4Hzw3HiFIRG1IjNDOcAu0kEBQowEpIINAiEaNV2kCyojTIuMQJ9Bx/S8m3yC/QPZr2e64kqHhEinqfoS75t/Q4DT3z2MaVcXhxnolYYWEwQo8PuL/8wg3X8ZDvcdwK//JakAv13/jrn7P5ZrrAcWBAMI8BVZ8dmNhS/JJJArFkOaA8b/bl+iPs0649hC07eUzYSMCve91/84Q8v4ALaDb5XZy3wF+V8EEJejPSW+BbUhg2/RN5vDz3qTzOwU3iobr8vuIjGXSnCtPNItBDWgd8aM22ZrRI5Ywvah90U43lIFEsvHHzUGxdfLrUIJinJ5VWSVhBvNmvlCm0vRCm6/MV3zXP7JgrBc8WzaTqgiv8NX0l5WP9eUPmsdZbZcYOuwsU2iBcyVPi9FTn7qPSOoi7slLPWx4sESsAYLr3Qx5YmtmuQ/id3DPLIv6SV/Y6Xc/1qVFso0SO6AjGznqp2sBQRtElsPcX1keS66gzTNFp9WfH8ITr6Y5GOmQHjcYpKHHS5aSsQlF13iun+IDXvMHuluelvwEH4rnpSUh+hx0mZEnhdwgKfkrWH2J7Mf6ee4OP8yTzB2McBJpxS3pSQQZOQhRn+S5ms8X4tKmxgNMmLiDDLjoY3S94XHQ/qMZdLF11f78S/QswgSKUFL1ud1cRmVkIVSfE/pSymWlI9Z8y2o62KcBon95qS4SVzrhNlo1iapK5SMSLrTeu5a9n5g7ke8SuhHxjFG1im7Rj8hGxlSegjTBYHYqglGquRqV+0jyUtz8i2Xn2W2Rx4w5QL/PnbBD/AtPrCDo9nz8CyQI5jSAvZKa31+UwBrQQjrPz0QkCXAapJeBLAkqVYBT1/C4UCAhdRPV5qhADgK6O0EwXh2ggUq3glHyr8THsM4EMgBIJK574RASt8waddhQKdGDfy6schJyaiw5PGrw+LVo1qjZiwendo1qVMjtAx6Av376Tt1idBbYsMyU4sqneTEpNejU+VzKZQ1bUIPUc++tTMWFiwsy7U1ateGpVqrEvM0c7cOWhISXWq8YofRV4h1sCWYeWyojp7Nyg3+ammQu199zrIEACmA4XBdcUm13SrtsY0HX61430tQV1rI/SVKIiA05wMf+qjEglRwIefqyb+++Mdv8JmXtTst3s+lFxz9muv8bpRggD9SmD3OrUWTNq02KGTVzuYH9otFI+aVaYAu4k3d0F59emTKkh0eeOTo5zVQ39mg9z1vv5l+KedArOiJ+V9Sab745YQfWKmfTCmPABEhEjjtjHccLCahLqL3T2cQCIUwiAxRoAAoEAqCghOS0ISFGlrCE5HI0MMIM1GJTkxiwwo7nMSFG174iU9CEs34xd8eC5DhnGVCBdlJbRNRCI6NNDAxQhlLikC5Sun0yCgRRhRxJA56mTFS2zU574JrDnnN6zpcbZwlzpEit1RdCoF+9ZtjIrDFetUikykh4qCWW2OjDTZZqcJ3DKmSHHU0SYk2qdFZ4323rBVgcsd9t09Tjne78e7z2rvxLX9FXP2Z9YSvVEVjL9kS3Lg5Z7MBr7O9M6j9irrlE3dfs0+EnEq8s6cH/9U458pJNPamP3PXxf1KuTXONaWIGuco0hZOiECT4Saasi4E2JcYcxhBzGsRyPYhvR1pjG1Q2L6ssP2RCnPEST3rQrlUIx0TGZETBVESFUkmaqJpSdlGKjUSuaaxkZqY0xZaU28nt9TVHzkRvsWzM85o2IF2LzEq2zeoGTMG8zgpxZ+YtHKRl8tUT0elRynkyRT6w84JR2Pgf/HRWHdmONTFF6g6t6dbO6xBzoaBX6D74pZaIFFLGk0=",
            "encoding": "base64"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 16608
        },
        "cache": {},
        "timings": {
          "blocked": 0.8410000009462237,
          "dns": 0,
          "ssl": -1,
          "connect": 0,
          "send": 0.67,
          "wait": 124.5050000519678,
          "receive": 2.9499998781830072,
          "_blocked_queueing": 0.8410000009462237
        },
        "serverIPAddress": "[2607:f8b0:4006:815::2003]",
        "_initiator": {
          "type": "parser",
          "url": "https://workstation.theorchard.com/analytics/engagement",
          "lineNumber": 0
        },
        "_priority": "VeryHigh",
        "_resourceType": "font",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:16.937Z",
        "time": 745.3380000079051,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/grass/features/features",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "session",
              "value": "26318db24967a7888b9314f5172426c5"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2412,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:17 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Cache-Control",
              "value": "max-age=10"
            },
            {
              "name": "Grass",
              "value": "prod"
            },
            {
              "name": "Etag",
              "value": "W/\"7f37f2c9fc776ef1e22e4a9b57f46bb4ba8ad927\""
            },
            {
              "name": "CF-Cache-Status",
              "value": "DYNAMIC"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badb34b207b53-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 8568,
            "mimeType": "application/json",
            "compression": 6094,
            "text": "{\"mobile_artist_profile_search\": \"enabled\", \"custom_video_thumbnail_to_ows_video\": \"control\", \"mobile_get_real_global_participants\": \"control\", \"mobile_artist_profile_recent_products_tab\": \"enabled\", \"profile_header_product_search\": \"enabled\", \"mobile_artist_product_access\": \"enabled\", \"mobile_recent_playlist_filtering\": \"enabled\", \"mobile_playlist_filtering\": \"enabled\", \"dpb_replace_artwork_sixty_second_delay\": \"enabled\", \"mobile_sound_recording_endpoints\": \"enabled\", \"mobile_artist_demo\": \"control\", \"global_sync_highlights\": \"control\", \"oa_japan_physical_fields\": \"control\", \"japan_sales_sheets\": \"control\", \"japan_physical_supply_chain\": \"control\", \"mobile_artist_top_markets\": \"control\", \"mobile_artist_product\": \"enabled\", \"mobile_artist_product_metadata\": \"enabled\", \"mobile_artist_sound_recording\": \"enabled\", \"mobile_artist_sound_recording_metadata\": \"enabled\", \"mobile_artist_recent_placements\": \"enabled\", \"mobile_artist_source_of_streams\": \"enabled\", \"bulk_video_upload\": \"enabled\", \"mobile_aggregate_playlists\": \"enabled\", \"mobile_all_time_counting\": \"enabled\", \"add_placements_to_spike_detector_email\": \"enabled\", \"alw_analytics_digest_email\": \"enabled\", \"display_upc\": \"enabled\", \"label_copy_export\": \"control\", \"account_statements_export_physical\": \"enabled\", \"account_statements_column_changes\": \"enabled\", \"sales_sheets_select_template\": \"control\", \"data_beta\": \"control\", \"analytics_revamp\": \"control\", \"product_digital_bit_depth_validation\": \"control\", \"track_builder_batch_upload\": \"control\", \"oa_segment_mouseflow\": \"control\", \"digital_gras_registration\": \"control\", \"project_manager_loading_animation\": \"enabled\", \"update_artistbuilder\": \"control\", \"localized_sales_sheets\": \"enabled\", \"localized_sales_sheets_europe\": \"enabled\", \"export_analytics_breakdown\": \"control\", \"label_store_creds\": \"control\", \"get_product_prefetch_stream_info\": \"control\", \"bulk_deletion_per_release_id\": \"control\", \"exclude_physical_isrc_count\": \"control\", \"workstation_maintenance\": \"control\", \"first_statement_period\": \"enabled\", \"feature_merge\": \"control\", \"shared_search\": \"control\", \"test_feature_do_not_remove\": \"control\", \"subaccount_gross_net\": \"enabled\", \"vendor_gross_net\": \"enabled\", \"finetunes_display_banner\": \"enabled\", \"assets_v2_streaming\": \"enabled\", \"transaction_types_with_sales_snowflake_migration\": \"enabled\", \"renameasset_with_curl_multi\": \"control\", \"track_localization_by_product\": \"control\", \"spotify_gdpr_playlist\": \"enabled\", \"dpb_validate_optimization\": \"control\", \"apple_artist_id_in_xml\": \"control\", \"assetless_tracks\": \"enabled\", \"conflict_manager_notification_banner\": \"control\", \"complex_track\": \"enabled\", \"helpcenter_auto_login\": \"control\", \"spotify_equity_payout\": \"enabled\", \"bulk_delete_assets\": \"enabled\", \"use_ows_users_for_alw_session\": \"enabled\", \"workstation_impersonate_subaccount\": \"control\", \"engagement_skips_saves\": \"enabled\", \"engagement_deep_linking\": \"enabled\", \"deprecate_heatmap\": \"enabled\", \"impersonate_login\": \"control\", \"infosec_credit_card_tables_deprecation\": \"control\", \"accounting-breakdown-query-snowflake\": \"control\", \"workstation-static-assets-cdn\": \"control\", \"delivery_priority_management\": \"control\", \"show_only_indexed_conflicts\": \"control\", \"async_bundle_loading\": \"enabled\", \"deprecate_legacy_image_url\": \"enabled\", \"film_release_images_from_cdn\": \"control\", \"hide_custom_vinyl_and_cd_pricing\": \"control\", \"pricing_bff\": \"control\", \"physical_reserves_conversion_rate\": \"enabled\", \"use-reactapp-layout-for-other-pages\": \"control\", \"improve_submission\": \"enabled\", \"cache-grass-token-in-memcached\": \"control\", \"display_mvrb_info_banner\": \"control\", \"accounting_summary_page_redesign\": \"enabled\", \"gross_accounting\": \"enabled\", \"physical_supply_chain_metadata\": \"control\", \"spotify_outstanding_balance\": \"enabled\", \"music_video_2\": \"enabled\", \"accounting_maintenance\": \"control\", \"film_transparency_film_selector\": \"control\", \"conflict_manager_learn_more_links\": \"enabled\", \"dpb_use_bff_endpoint_for_pricing\": \"control\", \"point_of_sale_price_columns\": \"control\", \"add_vendor_checkspaid\": \"enabled\", \"hide_accounting_terms\": \"enabled\", \"get_track_name_for_instant_grats\": \"control\", \"new_featuring_artist_entry\": \"control\", \"new_artist_entry\": \"control\", \"participant_profiles_view\": \"control\", \"participant_profiles_add\": \"control\", \"participant_profiles_neo4j_search\": \"control\", \"participant_profiles_neo4j_create\": \"control\", \"product_by_territory_split\": \"enabled\", \"product_release_date_filter\": \"enabled\", \"orchard_logging\": \"enabled\", \"global_search_in_header\": \"control\", \"improve_ows_users_perfomance\": \"enabled\", \"service_type\": \"enabled\", \"detect_explicit_or_suggestive_adult_content\": \"control\", \"reactified_featurefm_page\": \"enabled\", \"marketing_opt_in_page\": \"enabled\", \"reactified_catalog_page\": \"enabled\", \"calculate_product_status\": \"enabled\", \"dpb_version_and_classical_validation\": \"control\", \"performance_artist_index\": \"control\", \"mv_437_auto_carveouts\": \"control\", \"infosec_old_data_tables_deprecation\": \"control\", \"payment_calculator_update\": \"control\", \"mv_253_cloud_transit\": \"enabled\", \"mv_268_custom_thumbnails\": \"control\", \"artwork_submission_v2\": \"control\", \"reactified_homepage_dynamic_loader\": \"enabled\", \"mv_438_associate_audio_track\": \"enabled\", \"track_builder_optimized_validation\": \"control\", \"product_approval\": \"enabled\", \"header_icon_endpoint\": \"enabled\", \"workstation_sagas\": \"control\", \"simple_track_assets_verify_endpoint\": \"control\", \"edit_label_contact_security\": \"enabled\", \"infosec_phpmailer_removing\": \"enabled\", \"infosec_csrf_prevention\": \"enabled\", \"infosec_sql_injection_prevention\": \"enabled\", \"improve_performer_copy\": \"control\", \"mv_708_update_carveout_tables\": \"control\", \"supported_video_resolutions_override\": \"control\", \"remove_react_bundles_in_old_homepage\": \"control\", \"collaborator_splits\": \"control\", \"infosec_oa_content_spoofing_prevention\": \"enabled\", \"oa_approval_logging\": \"enabled\", \"frontend_distribution_routing_v2\": \"control\", \"advertising_campaign_vendor_role\": \"control\", \"performers_in_itunes_XML\": \"enabled\", \"oa_content_spoofing_deprecation\": \"enabled\", \"analytics_comparison\": \"control\", \"infosec_alw_content_spoofing_prevention\": \"enabled\", \"infosec_oa_login_content_spoofing_prevention\": \"enabled\", \"fix_get_assets_by_product_id_logic\": \"control\", \"featured_artist_on_all_tracks_must_be_featured_on_release\": \"control\", \"featured_artist_on_release_must_be_featured_on_all_tracks\": \"enabled\", \"primary_artist_cannot_be_featured_track_level\": \"enabled\", \"primary_artist_cannot_be_featured_release_level\": \"enabled\", \"sql_injection_prevention\": \"enabled\", \"auth0_contact_email\": \"control\", \"artarch_41_itunes_delivery_various_artists_support\": \"enabled\", \"artarch_41_ddex_delivery_various_artists_support\": \"enabled\", \"artarch_41_orchard_delivery_various_artists_support\": \"enabled\", \"artarch_41_medianet_delivery_various_artists_support\": \"enabled\", \"artarch_41_audiblemagic_delivery_various_artists_support\": \"enabled\", \"artarch_41_dubsetmedia_delivery_various_artists_support\": \"enabled\", \"artarch_41_filtr_delivery_various_artists_support\": \"enabled\", \"artarch_64_add_apple_artist_ids_to_apple_deliveries\": \"control\", \"artarch_64_add_spotify_artist_ids_to_spotify_deliveries\": \"control\", \"artarch_152_get_store_artist_id_from_participant_identifier_table\": \"enabled\", \"deprecate_mktg_apps\": \"enabled\", \"distro_one_four_seven_eight_product_p_line\": \"enabled\", \"collaborators_finalize\": \"control\", \"collaborators_gross_net\": \"control\", \"oa_participant_identifier\": \"enabled\", \"download_assets_from_s3\": \"control\", \"collaborators_performance_rights\": \"enabled\", \"oa_acl_accounting\": \"enabled\", \"intercom_chat_widget\": \"control\", \"frontend_distribution_oa_components\": \"enabled\", \"update_project_artist_in_workstation\": \"enabled\", \"upc_provisioner\": \"control\", \"validate_bulk_upload_project_code_length\": \"enabled\", \"require_and_validate_track_level_explicit_content\": \"enabled\", \"collaborators_auto_report\": \"control\", \"collaborators_payouts\": \"control\", \"oa_feature_control_logging\": \"control\", \"activity_period_sort_order\": \"control\", \"flag_videos_made_for_kids_in_youtube_commerical_feed_XML\": \"enabled\", \"aws_storage_store_setup_in_oa\": \"enabled\", \"update_create_ad_campaign_link\": \"enabled\", \"upc_provisioner_physical_product_builder\": \"control\", \"collaborators_manual_multi_period_reports\": \"control\", \"remove_artist_id_section\": \"enabled\", \"delete_hidden_data_when_genre_changes_in_digital_product_builder\": \"control\", \"tracklist_styling_switchboard\": \"control\", \"upc_provisioner_video_product_builder\": \"control\"}"
          },
          "redirectURL": "",
          "headersSize": 432,
          "bodySize": 2474,
          "_transferSize": 2906
        },
        "cache": {},
        "timings": {
          "blocked": 3.3770000073835256,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.17799999999999994,
          "wait": 740.6929999662116,
          "receive": 1.0900000343099236,
          "_blocked_queueing": 0.9030000073835254
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "v._end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 51723
              },
              {
                "functionName": "v.end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 50464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562389
              },
              {
                "functionName": "o.then",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562360
              },
              {
                "functionName": "Ye",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 148045
              },
              {
                "functionName": "wI",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 803238
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 803543
              },
              {
                "functionName": "s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579429
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579182
              },
              {
                "functionName": "forEach.e.<computed>",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579786
              },
              {
                "functionName": "n",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799494
              },
              {
                "functionName": "u",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799705
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799764
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799645
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 803716
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 145319
              },
              {
                "functionName": "hu",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1880954
              },
              {
                "functionName": "Es",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905686
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "_s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905449
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905360
              },
              {
                "functionName": "B",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8108
              },
              {
                "functionName": "O.port1.onmessage",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 6852
              }
            ],
            "parentId": {
              "id": "2",
              "debuggerId": "-6680354813689365837.-4924173665645887486"
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949472",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:16.938Z",
        "time": 1133.3159999921918,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/grass/users/users/session/alw",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "session",
              "value": "26318db24967a7888b9314f5172426c5"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2418,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:17 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Grass",
              "value": "prod"
            },
            {
              "name": "Etag",
              "value": "W/\"d975e59d149b3f73e3ed0f1c4518323f47403240\""
            },
            {
              "name": "CF-Cache-Status",
              "value": "DYNAMIC"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badb34edd8eef-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 21485,
            "mimeType": "application/json",
            "compression": 19390,
            "text": "{\"language\": \"en\", \"id\": 6918, \"subaccount\": null, \"contact\": {\"contact_email\": \"syd@frenchkissrecords.com\", \"contact_id\": 47627, \"contact_first_name\": \"Syd\", \"contact_last_name\": \"Butler\"}, \"number_format\": \"us\", \"vend_contact_roles\": [{\"role\": {\"id\": \"4\", \"vendor_role_permissions\": [{\"role_id\": 4, \"role\": \"Administrator\", \"id\": 184, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"accounting\", \"id\": 3}, \"id\": 38, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 185, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"index\", \"id\": 4}, \"id\": 39, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 186, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"marketing\", \"id\": 6}, \"id\": 40, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 187, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"logout\", \"id\": 7}, \"id\": 41, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 188, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"messagecenter\", \"id\": 8}, \"id\": 42, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 189, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"account\", \"id\": 9}, \"id\": 43, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 190, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"account\", \"id\": 9}, \"id\": 47, \"privilege\": \"manageusers\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 191, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"account\", \"id\": 9}, \"id\": 48, \"privilege\": \"accountsettings\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 192, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"proposal\", \"id\": 10}, \"id\": 45, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 193, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"analytics\", \"id\": 2}, \"id\": 37, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 209, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"faq\", \"id\": 11}, \"id\": 49, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 214, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"releasebuilder\", \"id\": 1}, \"id\": 50, \"privilege\": \"viewrelease\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 219, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"releasebuilder\", \"id\": 1}, \"id\": 36, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 223, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"releasebuilder\", \"id\": 1}, \"id\": 51, \"privilege\": \"gettracks\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 228, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"videos\", \"id\": 12}, \"id\": 52, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 230, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"inventory\", \"id\": 13}, \"id\": 53, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 235, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"helpcenter\", \"id\": 14}, \"id\": 55, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 238, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"multiplereleases\", \"id\": 18}, \"id\": 66, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 239, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"marketing\", \"id\": 6}, \"id\": 115, \"privilege\": \"marketyourmusic\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 240, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"marketing\", \"id\": 6}, \"id\": 116, \"privilege\": \"resources\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 241, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"marketing\", \"id\": 6}, \"id\": 117, \"privilege\": \"tools\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 247, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artist\", \"id\": 21}, \"id\": 118, \"privilege\": \"addartistmodal\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 248, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinfo\", \"id\": 23}, \"id\": 119, \"privilege\": \"save\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 255, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinfo\", \"id\": 23}, \"id\": 111, \"privilege\": \"createartistmodal\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 257, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinfo\", \"id\": 23}, \"id\": 119, \"privilege\": \"save\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 258, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinfo\", \"id\": 23}, \"id\": 121, \"privilege\": \"checkartistexistence\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 261, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artist\", \"id\": 21}, \"id\": 69, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 263, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinfo\", \"id\": 23}, \"id\": 71, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 265, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinfo\", \"id\": 23}, \"id\": 108, \"privilege\": \"index\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 267, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinfo\", \"id\": 23}, \"id\": 120, \"privilege\": \"saveartist\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 269, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistphotos\", \"id\": 24}, \"id\": 72, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 271, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artisttourdates\", \"id\": 25}, \"id\": 73, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 273, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistvideos\", \"id\": 26}, \"id\": 74, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 275, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistsocial\", \"id\": 29}, \"id\": 107, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 277, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistinstalledapps\", \"id\": 30}, \"id\": 112, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 279, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistnews\", \"id\": 31}, \"id\": 113, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 281, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistgadget\", \"id\": 33}, \"id\": 124, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 283, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"artistanalytics\", \"id\": 34}, \"id\": 125, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 288, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"account\", \"id\": 9}, \"id\": 126, \"privilege\": \"admin\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 311, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 127, \"privilege\": \"error\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 312, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 128, \"privilege\": \"index\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 313, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 129, \"privilege\": \"overview\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 314, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 130, \"privilege\": \"overview_detail\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 315, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 131, \"privilege\": \"user\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 316, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 132, \"privilege\": \"detail\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 317, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 133, \"privilege\": \"stats\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 318, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 134, \"privilege\": \"catalogs\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 319, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 135, \"privilege\": \"countries\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 320, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 136, \"privilege\": \"stores\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 321, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 137, \"privilege\": \"imprints\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 322, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 138, \"privilege\": \"genres\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 323, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 139, \"privilege\": \"releases\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 324, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 140, \"privilege\": \"artists\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 325, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 141, \"privilege\": \"tracks\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 326, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 142, \"privilege\": \"event\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 327, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 143, \"privilege\": \"addevent\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 328, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 144, \"privilege\": \"channeldetail\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 329, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 145, \"privilege\": \"prefs\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 330, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 146, \"privilege\": \"map\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 331, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 147, \"privilege\": \"geostats\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 332, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 148, \"privilege\": \"getindexdata\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 334, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 149, \"privilege\": \"isrctrack\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 336, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 150, \"privilege\": \"sources\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 338, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 151, \"privilege\": \"socialstats\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 340, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"analytics\", \"id\": 2}, \"id\": 152, \"privilege\": \"heatmap\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 342, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"analytics\", \"id\": 2}, \"id\": 153, \"privilege\": \"fetchdisplaycatalog\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 344, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"analytics\", \"id\": 2}, \"id\": 154, \"privilege\": \"catalogsearch\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 346, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 155, \"privilege\": \"subaccount\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 348, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 156, \"privilege\": \"subaccounts\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 350, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"stats\", \"id\": 35}, \"id\": 157, \"privilege\": \"artistcustomevent\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 363, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"rb\", \"id\": 36}, \"id\": 167, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 368, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 168, \"privilege\": null}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 371, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 169, \"privilege\": \"managerights\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 373, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 170, \"privilege\": \"rightsinfo\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 375, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 171, \"privilege\": \"download\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 377, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 172, \"privilege\": \"downloadinfo\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 379, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 173, \"privilege\": \"upload\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 381, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 174, \"privilege\": \"status\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 383, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 175, \"privilege\": \"templatepublicurl\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 385, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"managerights\", \"id\": 37}, \"id\": 176, \"privilege\": \"exceptionpublicurl\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 389, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"gowatchit\", \"id\": 38}, \"id\": 177, \"privilege\": \"filmavailabilities\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 396, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"gowatchit\", \"id\": 38}, \"id\": 178, \"privilege\": \"filmsuggestions\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 402, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"filmtransparency\", \"id\": 39}, \"id\": 179, \"privilege\": \"index\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 406, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"project\", \"id\": 40}, \"id\": 180, \"privilege\": \"index\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 408, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"conflict\", \"id\": 41}, \"id\": 181, \"privilege\": \"index\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 413, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"legal\", \"id\": 19}, \"id\": 182, \"privilege\": \"privacy\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 420, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"legal\", \"id\": 19}, \"id\": 183, \"privilege\": \"terms\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 424, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"conflict\", \"id\": 41}, \"id\": 184, \"privilege\": \"getconflictlist\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 431, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"account\", \"id\": 9}, \"id\": 185, \"privilege\": \"general\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 438, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"index2\", \"id\": 42}, \"id\": 186, \"privilege\": \"index\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 442, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"marketing2\", \"id\": 43}, \"id\": 187, \"privilege\": \"index\"}}, {\"role_id\": 4, \"role\": \"Administrator\", \"id\": 445, \"allow\": \"Y\", \"vend_contact_role_id\": 77848, \"vend_contact_id\": 6918, \"permission\": {\"resource\": {\"resource\": \"catalog\", \"id\": 44}, \"id\": 188, \"privilege\": \"index\"}}], \"role\": \"Administrator\"}, \"id\": 77848, \"vend_contact_id\": 6918}], \"vendor\": {\"language\": \"en\", \"number_format\": \"us\", \"name\": \"Syd Butler\", \"vendor_id\": 6971, \"company\": \"Frenchkiss Records\", \"owner\": \"odd\", \"is_distributor\": \"N\", \"label_identifier\": \"Frontline\", \"assigned_to_email\": \"phanly@theorchard.com\", \"support_contact_email\": \"\", \"assigned_to_phone\": \"\", \"image_asset_id\": null, \"vendor_restricted_features\": [\"Film Release Builder\", \"Vendor Identifiers\", \"All Time Accounting\", \"Localizations\", \"Film Transparency\", \"Label Copy Export\", \"Show Gross Accounting\", \"Facebook Advertising Banner\", \"Japan Physical Product Builder\"], \"travelex_enrollment_id\": \"7770A32180BA4AF58B5CEF69152B7061\"}, \"login\": \"frenchkiss\", \"auth0_user_id\": \"5c9405f8000f0c2b7ce2e297\", \"linked_accounts\": [], \"account_name\": \"Syd Butler\", \"account_type\": \"vendor\", \"account_id\": \"6971\"}"
          },
          "redirectURL": "",
          "headersSize": 405,
          "bodySize": 2095,
          "_transferSize": 2500
        },
        "cache": {},
        "timings": {
          "blocked": 2.98800001295656,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.17499999999999982,
          "wait": 984.9729999869838,
          "receive": 145.1799999922514,
          "_blocked_queueing": 0.8120000129565597
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "v._end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 51723
              },
              {
                "functionName": "v.end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 50464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562389
              },
              {
                "functionName": "o.then",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562360
              },
              {
                "functionName": "Ye",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 148045
              },
              {
                "functionName": "_I",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 803343
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 803548
              },
              {
                "functionName": "s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579429
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579182
              },
              {
                "functionName": "forEach.e.<computed>",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579786
              },
              {
                "functionName": "n",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799494
              },
              {
                "functionName": "u",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799705
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799764
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799645
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 803716
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 145319
              },
              {
                "functionName": "hu",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1880954
              },
              {
                "functionName": "Es",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905686
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "_s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905449
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905360
              },
              {
                "functionName": "B",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8108
              },
              {
                "functionName": "O.port1.onmessage",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 6852
              }
            ],
            "parentId": {
              "id": "2",
              "debuggerId": "-6680354813689365837.-4924173665645887486"
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949470",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:17.052Z",
        "time": 61.95100003021956,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/js/releases/segment-analytics-1522397179446.min.js",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "no-cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03061529d70f8e445aefcb4837603ae7883fa401.-6004846313.1583491155230$03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898|1583829074008|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2367,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:17 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/javascript"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Last-Modified",
              "value": "Fri, 30 Mar 2018 15:43:07 GMT"
            },
            {
              "name": "ETag",
              "value": "W/\"150ed-568a318b6215c\""
            },
            {
              "name": "Cache-Control",
              "value": "public, max-age=86400"
            },
            {
              "name": "Expires",
              "value": "Wed, 11 Mar 2020 08:31:17 GMT"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1;mode=block"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=31536000;includeSubDomains"
            },
            {
              "name": "Content-Security-Policy",
              "value": "script-src: self"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "Referrer-Policy",
              "value": "no-referrer-when-downgrade"
            },
            {
              "name": "CF-Cache-Status",
              "value": "HIT"
            },
            {
              "name": "Age",
              "value": "70240"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badb429657b77-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 86253,
            "mimeType": "application/javascript",
            "compression": 55874,
            "text": "!function(){function e(t,n,r){function i(s,a){if(!n[s]){if(!t[s]){var u=\"function\"==typeof require&&require;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error(\"Cannot find module '\"+s+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return i(n||e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var o=\"function\"==typeof require&&require,s=0;s<r.length;s++)i(r[s]);return i}return e}()({1:[function(e,t,n){\"use strict\";var r=window.segmentAnalyticsConfig,i=e(\"jquery\");r&&r.key&&(!function(){var e=window.analytics=window.analytics||[];if(!e.initialize)if(e.invoked)window.console&&console.error&&console.error(\"Segment snippet included twice.\");else{e.invoked=!0,e.methods=[\"trackSubmit\",\"trackClick\",\"trackLink\",\"trackForm\",\"pageview\",\"identify\",\"reset\",\"group\",\"track\",\"ready\",\"alias\",\"page\",\"once\",\"off\",\"on\"],e.factory=function(t){return function(){var n=Array.prototype.slice.call(arguments);return n.unshift(t),e.push(n),e}};for(var t=0;t<e.methods.length;t++){var n=e.methods[t];e[n]=e.factory(n)}e.load=function(e){var t=document.createElement(\"script\");t.type=\"text/javascript\",t.async=!0,t.src=(\"https:\"===document.location.protocol?\"https://\":\"http://\")+\"cdn.segment.com/analytics.js/v1/\"+e+\"/analytics.min.js\";var n=document.getElementsByTagName(\"script\")[0];n.parentNode.insertBefore(t,n)},e.SNIPPET_VERSION=\"3.1.0\",e.load(r.key)}}(),i(document).ready(function(){i(function(){var e={};e.businessType=\"Uncategorized Vendor\",e.subaccountId=\"Not Applicable\",r.businessType&&(e.businessType=r.businessType),r.subaccountId&&(e.subaccountId=r.subaccountId),r.labelId&&(e.labelId=r.labelId),r.impersonatorUserId&&(e.impersonatorUserId=r.impersonatorUserId),r.labelType&&(e.labelType=r.labelType),r.userId&&(e.userId=r.userId,analytics.identify(r.userId,e)),analytics.page(),i(\".segment-analytics\").each(function(e,t){var t=i(t);t.on(t.data(\"event\"),function(e){analytics.track(i(this).text(),{category:t.data(\"event-category\"),action:t.data(\"event-action\"),label:t.data(\"event-label\"),value:t.data(\"event-value\")})})})})}))},{jquery:2}],2:[function(e,t,n){!function(e,n){\"object\"==typeof t&&\"object\"==typeof t.exports?t.exports=e.document?n(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return n(e)}:n(e)}(\"undefined\"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=ee.type(e);return\"function\"===n||ee.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e}function r(e,t,n){if(ee.isFunction(t))return ee.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return ee.grep(e,function(e){return e===t!==n});if(\"string\"==typeof t){if(ae.test(t))return ee.filter(t,e,n);t=ee.filter(t,e)}return ee.grep(e,function(e){return U.call(t,e)>=0!==n})}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function o(e){var t=he[e]={};return ee.each(e.match(de)||[],function(e,n){t[n]=!0}),t}function s(){K.removeEventListener(\"DOMContentLoaded\",s,!1),e.removeEventListener(\"load\",s,!1),ee.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=ee.expando+Math.random()}function u(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(be,\"-$1\").toLowerCase(),n=e.getAttribute(r),\"string\"==typeof n){try{n=\"true\"===n?!0:\"false\"===n?!1:\"null\"===n?null:+n+\"\"===n?+n:xe.test(n)?ee.parseJSON(n):n}catch(i){}ye.set(e,t,n)}else n=void 0;return n}function c(){return!0}function l(){return!1}function f(){try{return K.activeElement}catch(e){}}function p(e,t){return ee.nodeName(e,\"table\")&&ee.nodeName(11!==t.nodeType?t:t.firstChild,\"tr\")?e.getElementsByTagName(\"tbody\")[0]||e.appendChild(e.ownerDocument.createElement(\"tbody\")):e}function d(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function h(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\"type\"),e}function g(e,t){for(var n=0,r=e.length;r>n;n++)ve.set(e[n],\"globalEval\",!t||ve.get(t[n],\"globalEval\"))}function m(e,t){var n,r,i,o,s,a,u,c;if(1===t.nodeType){if(ve.hasData(e)&&(o=ve.access(e),s=ve.set(t,o),c=o.events)){delete s.handle,s.events={};for(i in c)for(n=0,r=c[i].length;r>n;n++)ee.event.add(t,i,c[i][n])}ye.hasData(e)&&(a=ye.access(e),u=ee.extend({},a),ye.set(t,u))}}function v(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):e.querySelectorAll?e.querySelectorAll(t||\"*\"):[];return void 0===t||t&&ee.nodeName(e,t)?ee.merge([e],n):n}function y(e,t){var n=t.nodeName.toLowerCase();\"input\"===n&&ke.test(e.type)?t.checked=e.checked:(\"input\"===n||\"textarea\"===n)&&(t.defaultValue=e.defaultValue)}function x(t,n){var r=ee(n.createElement(t)).appendTo(n.body),i=e.getDefaultComputedStyle?e.getDefaultComputedStyle(r[0]).display:ee.css(r[0],\"display\");return r.detach(),i}function b(e){var t=K,n=We[e];return n||(n=x(e,t),\"none\"!==n&&n||(Ie=(Ie||ee(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(t.documentElement),t=Ie[0].contentDocument,t.write(),t.close(),n=x(e,t),Ie.detach()),We[e]=n),n}function w(e,t,n){var r,i,o,s,a=e.style;return n=n||_e(e),n&&(s=n.getPropertyValue(t)||n[t]),n&&(\"\"!==s||ee.contains(e.ownerDocument,e)||(s=ee.style(e,t)),Be.test(s)&&$e.test(t)&&(r=a.width,i=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=r,a.minWidth=i,a.maxWidth=o)),void 0!==s?s+\"\":s}function T(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function C(e,t){if(t in e)return t;for(var n=t[0].toUpperCase()+t.slice(1),r=t,i=Ge.length;i--;)if(t=Ge[i]+n,t in e)return t;return r}function k(e,t,n){var r=Xe.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||\"px\"):t}function N(e,t,n,r,i){for(var o=n===(r?\"border\":\"content\")?4:\"width\"===t?1:0,s=0;4>o;o+=2)\"margin\"===n&&(s+=ee.css(e,n+Te[o],!0,i)),r?(\"content\"===n&&(s-=ee.css(e,\"padding\"+Te[o],!0,i)),\"margin\"!==n&&(s-=ee.css(e,\"border\"+Te[o]+\"Width\",!0,i))):(s+=ee.css(e,\"padding\"+Te[o],!0,i),\"padding\"!==n&&(s+=ee.css(e,\"border\"+Te[o]+\"Width\",!0,i)));return s}function E(e,t,n){var r=!0,i=\"width\"===t?e.offsetWidth:e.offsetHeight,o=_e(e),s=\"border-box\"===ee.css(e,\"boxSizing\",!1,o);if(0>=i||null==i){if(i=w(e,t,o),(0>i||null==i)&&(i=e.style[t]),Be.test(i))return i;r=s&&(J.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+N(e,t,n||(s?\"border\":\"content\"),r,o)+\"px\"}function j(e,t){for(var n,r,i,o=[],s=0,a=e.length;a>s;s++)r=e[s],r.style&&(o[s]=ve.get(r,\"olddisplay\"),n=r.style.display,t?(o[s]||\"none\"!==n||(r.style.display=\"\"),\"\"===r.style.display&&Ce(r)&&(o[s]=ve.access(r,\"olddisplay\",b(r.nodeName)))):o[s]||(i=Ce(r),(n&&\"none\"!==n||!i)&&ve.set(r,\"olddisplay\",i?n:ee.css(r,\"display\"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&\"none\"!==r.style.display&&\"\"!==r.style.display||(r.style.display=t?o[s]||\"\":\"none\"));return e}function S(e,t,n,r,i){return new S.prototype.init(e,t,n,r,i)}function D(){return setTimeout(function(){Qe=void 0}),Qe=ee.now()}function A(e,t){var n,r=0,i={height:e};for(t=t?1:0;4>r;r+=2-t)n=Te[r],i[\"margin\"+n]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function L(e,t,n){for(var r,i=(nt[t]||[]).concat(nt[\"*\"]),o=0,s=i.length;s>o;o++)if(r=i[o].call(n,t,e))return r}function q(e,t,n){var r,i,o,s,a,u,c,l=this,f={},p=e.style,d=e.nodeType&&Ce(e),h=ve.get(e,\"fxshow\");n.queue||(a=ee._queueHooks(e,\"fx\"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,ee.queue(e,\"fx\").length||a.empty.fire()})})),1===e.nodeType&&(\"height\"in t||\"width\"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],c=ee.css(e,\"display\"),\"none\"===c&&(c=b(e.nodeName)),\"inline\"===c&&\"none\"===ee.css(e,\"float\")&&(p.display=\"inline-block\")),n.overflow&&(p.overflow=\"hidden\",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Ke.exec(i)){if(delete t[r],o=o||\"toggle\"===i,i===(d?\"hide\":\"show\")){if(\"show\"!==i||!h||void 0===h[r])continue;d=!0}f[r]=h&&h[r]||ee.style(e,r)}if(!ee.isEmptyObject(f)){h?\"hidden\"in h&&(d=h.hidden):h=ve.access(e,\"fxshow\",{}),o&&(h.hidden=!d),d?ee(e).show():l.done(function(){ee(e).hide()}),l.done(function(){var t;ve.remove(e,\"fxshow\");for(t in f)ee.style(e,t,f[t])});for(r in f)s=L(d?h[r]:0,r,l),r in h||(h[r]=s.start,d&&(s.end=s.start,s.start=\"width\"===r||\"height\"===r?1:0))}}function H(e,t){var n,r,i,o,s;for(n in e)if(r=ee.camelCase(n),i=t[r],o=e[n],ee.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=ee.cssHooks[r],s&&\"expand\"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function O(e,t,n){var r,i,o=0,s=tt.length,a=ee.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Qe||D(),n=Math.max(0,c.startTime+c.duration-t),r=n/c.duration||0,o=1-r,s=0,u=c.tweens.length;u>s;s++)c.tweens[s].run(o);return a.notifyWith(e,[c,o,n]),1>o&&u?n:(a.resolveWith(e,[c]),!1)},c=a.promise({elem:e,props:ee.extend({},t),opts:ee.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Qe||D(),duration:n.duration,tweens:[],createTween:function(t,n){var r=ee.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(r),r},stop:function(t){var n=0,r=t?c.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)c.tweens[n].run(1);return t?a.resolveWith(e,[c,t]):a.rejectWith(e,[c,t]),this}}),l=c.props;for(H(l,c.opts.specialEasing);s>o;o++)if(r=tt[o].call(c,e,l,c.opts))return r;return ee.map(l,L,c),ee.isFunction(c.opts.start)&&c.opts.start.call(e,c),ee.fx.timer(ee.extend(u,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function F(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(de)||[];if(ee.isFunction(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function P(e,t,n,r){function i(a){var u;return o[a]=!0,ee.each(e[a]||[],function(e,a){var c=a(t,n,r);return\"string\"!=typeof c||s||o[c]?s?!(u=c):void 0:(t.dataTypes.unshift(c),i(c),!1)}),u}var o={},s=e===wt;return i(t.dataTypes[0])||!o[\"*\"]&&i(\"*\")}function M(e,t){var n,r,i=ee.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ee.extend(!0,e,r),e}function R(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):void 0}function I(e,t,n,r){var i,o,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for(s in e.converters)c[s.toLowerCase()]=e.converters[s];for(o=l.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=l.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(s=c[u+\" \"+o]||c[\"* \"+o],!s)for(i in c)if(a=i.split(\" \"),a[1]===o&&(s=c[u+\" \"+a[0]]||c[\"* \"+a[0]])){s===!0?s=c[i]:c[i]!==!0&&(o=a[0],l.unshift(a[1]));break}if(s!==!0)if(s&&e[\"throws\"])t=s(t);else try{t=s(t)}catch(f){return{state:\"parsererror\",error:s?f:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}function W(e,t,n,r){var i;if(ee.isArray(t))ee.each(t,function(t,i){n||Nt.test(e)?r(e,i):W(e+\"[\"+(\"object\"==typeof i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==ee.type(t))r(e,t);else for(i in t)W(e+\"[\"+i+\"]\",t[i],n,r)}function $(e){return ee.isWindow(e)?e:9===e.nodeType&&e.defaultView}var B=[],_=B.slice,z=B.concat,X=B.push,U=B.indexOf,V={},Y=V.toString,G=V.hasOwnProperty,Q=\"\".trim,J={},K=e.document,Z=\"2.1.0\",ee=function(e,t){return new ee.fn.init(e,t)},te=/^-ms-/,ne=/-([\\da-z])/gi,re=function(e,t){return t.toUpperCase()};ee.fn=ee.prototype={jquery:Z,constructor:ee,selector:\"\",length:0,toArray:function(){return _.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:_.call(this)},pushStack:function(e){var t=ee.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return ee.each(this,e,t)},map:function(e){return this.pushStack(ee.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(_.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:X,sort:B.sort,splice:B.splice},ee.extend=ee.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[a]||{},a++),\"object\"==typeof s||ee.isFunction(s)||(s={}),a===u&&(s=this,a--);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(c&&r&&(ee.isPlainObject(r)||(i=ee.isArray(r)))?(i?(i=!1,o=n&&ee.isArray(n)?n:[]):o=n&&ee.isPlainObject(n)?n:{},s[t]=ee.extend(c,o,r)):void 0!==r&&(s[t]=r));return s},ee.extend({expando:\"jQuery\"+(Z+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\"function\"===ee.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return e-parseFloat(e)>=0},isPlainObject:function(e){if(\"object\"!==ee.type(e)||e.nodeType||ee.isWindow(e))return!1;try{if(e.constructor&&!G.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?V[Y.call(e)]||\"object\":typeof e},globalEval:function(e){var t,n=eval;e=ee.trim(e),e&&(1===e.indexOf(\"use strict\")?(t=K.createElement(\"script\"),t.text=e,K.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(te,\"ms-\").replace(ne,re)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,r){var i,o=0,s=e.length,a=n(e);if(r){if(a)for(;s>o&&(i=t.apply(e[o],r),i!==!1);o++);else for(o in e)if(i=t.apply(e[o],r),i===!1)break}else if(a)for(;s>o&&(i=t.call(e[o],o,e[o]),i!==!1);o++);else for(o in e)if(i=t.call(e[o],o,e[o]),i===!1)break;return e},trim:function(e){return null==e?\"\":Q.call(e)},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?ee.merge(r,\"string\"==typeof e?[e]:e):X.call(r,e)),r},inArray:function(e,t,n){return null==t?-1:U.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,s=e.length,a=!n;s>o;o++)r=!t(e[o],o),r!==a&&i.push(e[o]);return i},map:function(e,t,r){var i,o=0,s=e.length,a=n(e),u=[];if(a)for(;s>o;o++)i=t(e[o],o,r),null!=i&&u.push(i);else for(o in e)i=t(e[o],o,r),null!=i&&u.push(i);return z.apply([],u)},guid:1,proxy:function(e,t){var n,r,i;return\"string\"==typeof t&&(n=e[t],t=e,e=n),ee.isFunction(e)?(r=_.call(arguments,2),i=function(){return e.apply(t||this,r.concat(_.call(arguments)))},i.guid=e.guid=e.guid||ee.guid++,i):void 0},now:Date.now,support:J}),ee.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(e,t){V[\"[object \"+t+\"]\"]=t.toLowerCase()});var ie=function(e){function t(e,t,n,r){var i,o,s,a,u,c,f,h,g,m;if((t?t.ownerDocument||t:W)!==q&&L(t),t=t||q,n=n||[],!e||\"string\"!=typeof e)return n;if(1!==(a=t.nodeType)&&9!==a)return[];if(O&&!r){if(i=ye.exec(e))if(s=i[1]){if(9===a){if(o=t.getElementById(s),!o||!o.parentNode)return n;if(o.id===s)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(s))&&R(t,o)&&o.id===s)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((s=i[3])&&C.getElementsByClassName&&t.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(s)),n}if(C.qsa&&(!F||!F.test(e))){if(h=f=I,g=t,m=9===a&&e,1===a&&\"object\"!==t.nodeName.toLowerCase()){for(c=p(e),(f=t.getAttribute(\"id\"))?h=f.replace(be,\"\\\\$&\"):t.setAttribute(\"id\",h),h=\"[id='\"+h+\"'] \",u=c.length;u--;)c[u]=h+d(c[u]);g=xe.test(e)&&l(t.parentNode)||t,m=c.join(\",\")}if(m)try{return Z.apply(n,g.querySelectorAll(m)),n}catch(v){}finally{f||t.removeAttribute(\"id\")}}}return w(e.replace(ue,\"$1\"),t,n,r)}function n(){function e(n,r){return t.push(n+\" \")>k.cacheLength&&delete e[t.shift()],e[n+\" \"]=r}var t=[];return e}function r(e){return e[I]=!0,e}function i(e){var t=q.createElement(\"div\");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split(\"|\"),r=e.length;r--;)k.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||Y)-(~e.sourceIndex||Y);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return\"input\"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}function l(e){return e&&typeof e.getElementsByTagName!==V&&e}function f(){}function p(e,n){var r,i,o,s,a,u,c,l=z[e+\" \"];if(l)return n?0:l.slice(0);for(a=e,u=[],c=k.preFilter;a;){(!r||(i=ce.exec(a)))&&(i&&(a=a.slice(i[0].length)||a),u.push(o=[])),r=!1,(i=le.exec(a))&&(r=i.shift(),o.push({value:r,type:i[0].replace(ue,\" \")}),a=a.slice(r.length));for(s in k.filter)!(i=he[s].exec(a))||c[s]&&!(i=c[s](i))||(r=i.shift(),o.push({value:r,type:s,matches:i}),a=a.slice(r.length));if(!r)break}return n?a.length:a?t.error(e):z(e,u).slice(0)}function d(e){for(var t=0,n=e.length,r=\"\";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=n&&\"parentNode\"===r,o=B++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,s){var a,u,c=[$,o];if(s){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,s))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(u=t[I]||(t[I]={}),(a=u[r])&&a[0]===$&&a[1]===o)return c[2]=a[2];if(u[r]=c,c[2]=e(t,n,s))return!0}}}function g(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,c=null!=t;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),c&&t.push(a));return s}function v(e,t,n,i,o,s){return i&&!i[I]&&(i=v(i)),o&&!o[I]&&(o=v(o,s)),r(function(r,s,a,u){var c,l,f,p=[],d=[],h=s.length,g=r||b(t||\"*\",a.nodeType?[a]:a,[]),v=!e||!r&&t?g:m(g,p,e,a,u),y=n?o||(r?e:h||i)?[]:s:v;if(n&&n(v,y,a,u),i)for(c=m(y,d),i(c,[],a,u),l=c.length;l--;)(f=c[l])&&(y[d[l]]=!(v[d[l]]=f));if(r){if(o||e){if(o){for(c=[],l=y.length;l--;)(f=y[l])&&c.push(v[l]=f);o(null,y=[],c,u)}for(l=y.length;l--;)(f=y[l])&&(c=o?te.call(r,f):p[l])>-1&&(r[c]=!(s[c]=f))}}else y=m(y===s?y.splice(h,y.length):y),o?o(null,s,y,u):Z.apply(s,y)})}function y(e){for(var t,n,r,i=e.length,o=k.relative[e[0].type],s=o||k.relative[\" \"],a=o?1:0,u=h(function(e){return e===t},s,!0),c=h(function(e){return te.call(t,e)>-1},s,!0),l=[function(e,n,r){return!o&&(r||n!==S)||((t=n).nodeType?u(e,n,r):c(e,n,r))}];i>a;a++)if(n=k.relative[e[a].type])l=[h(g(l),n)];else{if(n=k.filter[e[a].type].apply(null,e[a].matches),n[I]){for(r=++a;i>r&&!k.relative[e[r].type];r++);return v(a>1&&g(l),a>1&&d(e.slice(0,a-1).concat({value:\" \"===e[a-2].type?\"*\":\"\"})).replace(ue,\"$1\"),n,r>a&&y(e.slice(a,r)),i>r&&y(e=e.slice(r)),i>r&&d(e))}l.push(n)}return g(l)}function x(e,n){var i=n.length>0,o=e.length>0,s=function(r,s,a,u,c){var l,f,p,d=0,h=\"0\",g=r&&[],v=[],y=S,x=r||o&&k.find.TAG(\"*\",c),b=$+=null==y?1:Math.random()||.1,w=x.length;for(c&&(S=s!==q&&s);h!==w&&null!=(l=x[h]);h++){if(o&&l){for(f=0;p=e[f++];)if(p(l,s,a)){u.push(l);break}c&&($=b)}i&&((l=!p&&l)&&d--,r&&g.push(l))}if(d+=h,i&&h!==d){for(f=0;p=n[f++];)p(g,v,s,a);if(r){if(d>0)for(;h--;)g[h]||v[h]||(v[h]=J.call(u));v=m(v)}Z.apply(u,v),c&&!r&&v.length>0&&d+n.length>1&&t.uniqueSort(u)}return c&&($=b,S=y),g};return i?r(s):s}function b(e,n,r){for(var i=0,o=n.length;o>i;i++)t(e,n[i],r);return r}function w(e,t,n,r){var i,o,s,a,u,c=p(e);if(!r&&1===c.length){if(o=c[0]=c[0].slice(0),o.length>2&&\"ID\"===(s=o[0]).type&&C.getById&&9===t.nodeType&&O&&k.relative[o[1].type]){if(t=(k.find.ID(s.matches[0].replace(we,Te),t)||[])[0],!t)return n;e=e.slice(o.shift().value.length)}for(i=he.needsContext.test(e)?0:o.length;i--&&(s=o[i],!k.relative[a=s.type]);)if((u=k.find[a])&&(r=u(s.matches[0].replace(we,Te),xe.test(o[0].type)&&l(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Z.apply(n,r),n;break}}return j(e,c)(r,t,!O,n,xe.test(e)&&l(t.parentNode)||t),n}var T,C,k,N,E,j,S,D,A,L,q,H,O,F,P,M,R,I=\"sizzle\"+-new Date,W=e.document,$=0,B=0,_=n(),z=n(),X=n(),U=function(e,t){return e===t&&(A=!0),0},V=\"undefined\",Y=1<<31,G={}.hasOwnProperty,Q=[],J=Q.pop,K=Q.push,Z=Q.push,ee=Q.slice,te=Q.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},ne=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",re=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",ie=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",oe=ie.replace(\"w\",\"w#\"),se=\"\\\\[\"+re+\"*(\"+ie+\")\"+re+\"*(?:([*^$|!~]?=)\"+re+\"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\"+oe+\")|)|)\"+re+\"*\\\\]\",ae=\":(\"+ie+\")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+se.replace(3,8)+\")*)|.*)\\\\)|)\",ue=new RegExp(\"^\"+re+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+re+\"+$\",\"g\"),ce=new RegExp(\"^\"+re+\"*,\"+re+\"*\"),le=new RegExp(\"^\"+re+\"*([>+~]|\"+re+\")\"+re+\"*\"),fe=new RegExp(\"=\"+re+\"*([^\\\\]'\\\"]*?)\"+re+\"*\\\\]\",\"g\"),pe=new RegExp(ae),de=new RegExp(\"^\"+oe+\"$\"),he={ID:new RegExp(\"^#(\"+ie+\")\"),CLASS:new RegExp(\"^\\\\.(\"+ie+\")\"),TAG:new RegExp(\"^(\"+ie.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+se),PSEUDO:new RegExp(\"^\"+ae),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+re+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+re+\"*(?:([+-]|)\"+re+\"*(\\\\d+)|))\"+re+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+ne+\")$\",\"i\"),needsContext:new RegExp(\"^\"+re+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+re+\"*((?:-\\\\d)?\\\\d*)\"+re+\"*\\\\)|)(?=[^-]|$)\",\"i\")},ge=/^(?:input|select|textarea|button)$/i,me=/^h\\d$/i,ve=/^[^{]+\\{\\s*\\[native \\w/,ye=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,xe=/[+~]/,be=/'|\\\\/g,we=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+re+\"?|(\"+re+\")|.)\",\"ig\"),Te=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(Q=ee.call(W.childNodes),W.childNodes),Q[W.childNodes.length].nodeType}catch(Ce){Z={apply:Q.length?function(e,t){K.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}C=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?\"HTML\"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n=e?e.ownerDocument||e:W,r=n.defaultView;return n!==q&&9===n.nodeType&&n.documentElement?(q=n,H=n.documentElement,O=!E(n),r&&r!==r.top&&(r.addEventListener?r.addEventListener(\"unload\",function(){L()},!1):r.attachEvent&&r.attachEvent(\"onunload\",function(){L()})),C.attributes=i(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),C.getElementsByTagName=i(function(e){return e.appendChild(n.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),C.getElementsByClassName=ve.test(n.getElementsByClassName)&&i(function(e){return e.innerHTML=\"<div class='a'></div><div class='a i'></div>\",e.firstChild.className=\"i\",2===e.getElementsByClassName(\"i\").length}),C.getById=i(function(e){return H.appendChild(e).id=I,!n.getElementsByName||!n.getElementsByName(I).length}),C.getById?(k.find.ID=function(e,t){if(typeof t.getElementById!==V&&O){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},k.filter.ID=function(e){var t=e.replace(we,Te);return function(e){return e.getAttribute(\"id\")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(we,Te);return function(e){var n=typeof e.getAttributeNode!==V&&e.getAttributeNode(\"id\");return n&&n.value===t}}),k.find.TAG=C.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==V?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},k.find.CLASS=C.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==V&&O?t.getElementsByClassName(e):void 0},P=[],F=[],(C.qsa=ve.test(n.querySelectorAll))&&(i(function(e){e.innerHTML=\"<select t=''><option selected=''></option></select>\",e.querySelectorAll(\"[t^='']\").length&&F.push(\"[*^$]=\"+re+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||F.push(\"\\\\[\"+re+\"*(?:value|\"+ne+\")\"),e.querySelectorAll(\":checked\").length||F.push(\":checked\")}),i(function(e){var t=n.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&F.push(\"name\"+re+\"*[*^$|!~]?=\"),e.querySelectorAll(\":enabled\").length||F.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),F.push(\",.*:\")})),(C.matchesSelector=ve.test(M=H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&i(function(e){C.disconnectedMatch=M.call(e,\"div\"),M.call(e,\"[s!='']:x\"),P.push(\"!=\",ae)}),F=F.length&&new RegExp(F.join(\"|\")),P=P.length&&new RegExp(P.join(\"|\")),t=ve.test(H.compareDocumentPosition),R=t||ve.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return A=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r?r:(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&r||!C.sortDetached&&t.compareDocumentPosition(e)===r?e===n||e.ownerDocument===W&&R(W,e)?-1:t===n||t.ownerDocument===W&&R(W,t)?1:D?te.call(D,e)-te.call(D,t):0:4&r?-1:1)}:function(e,t){if(e===t)return A=!0,0;var r,i=0,o=e.parentNode,a=t.parentNode,u=[e],c=[t];if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:D?te.call(D,e)-te.call(D,t):0;if(o===a)return s(e,t);for(r=e;r=r.parentNode;)u.unshift(r);for(r=t;r=r.parentNode;)c.unshift(r);for(;u[i]===c[i];)i++;return i?s(u[i],c[i]):u[i]===W?-1:c[i]===W?1:0},n):q},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==q&&L(e),n=n.replace(fe,\"='$1']\"),C.matchesSelector&&O&&(!P||!P.test(n))&&(!F||!F.test(n)))try{var r=M.call(e,n);if(r||C.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,q,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==q&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==q&&L(e);var n=k.attrHandle[t.toLowerCase()],r=n&&G.call(k.attrHandle,t.toLowerCase())?n(e,t,!O):void 0;return void 0!==r?r:C.attributes||!O?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!C.detectDuplicates,D=!C.sortStable&&e.slice(0),e.sort(U),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},N=t.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=N(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=N(t);return n},k=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(we,Te),e[3]=(e[4]||e[5]||\"\").replace(we,Te),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return he.CHILD.test(e[0])?null:(e[3]&&void 0!==e[4]?e[2]=e[4]:n&&pe.test(n)&&(t=p(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(we,Te).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=_[e+\" \"];return t||(t=new RegExp(\"(^|\"+re+\")\"+e+\"(\"+re+\"|$)\"))&&_(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||typeof e.getAttribute!==V&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?\"!=\"===n:n?(o+=\"\",\"=\"===n?o===r:\"!=\"===n?o!==r:\"^=\"===n?r&&0===o.indexOf(r):\"*=\"===n?r&&o.indexOf(r)>-1:\"$=\"===n?r&&o.slice(-r.length)===r:\"~=\"===n?(\" \"+o+\" \").indexOf(r)>-1:\"|=\"===n?o===r||o.slice(0,r.length+1)===r+\"-\":!1):!0}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),s=\"last\"!==e.slice(-4),a=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,d,h,g=o!==s?\"nextSibling\":\"previousSibling\",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a;if(m){if(o){for(;g;){for(f=t;f=f[g];)if(a?f.nodeName.toLowerCase()===v:1===f.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[s?m.firstChild:m.lastChild],s&&y){for(l=m[I]||(m[I]={}),c=l[e]||[],d=c[0]===$&&c[1],p=c[0]===$&&c[2],f=d&&m.childNodes[d];f=++d&&f&&f[g]||(p=d=0)||h.pop();)if(1===f.nodeType&&++p&&f===t){l[e]=[$,d,p];break}}else if(y&&(c=(t[I]||(t[I]={}))[e])&&c[0]===$)p=c[1];else for(;(f=++d&&f&&f[g]||(p=d=0)||h.pop())&&((a?f.nodeName.toLowerCase()!==v:1!==f.nodeType)||!++p||(y&&((f[I]||(f[I]={}))[e]=[$,p]),f!==t)););return p-=i,p===r||p%r===0&&p/r>=0}}},PSEUDO:function(e,n){var i,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error(\"unsupported pseudo: \"+e);return o[I]?o(n):o.length>1?(i=[e,e,\"\",n],k.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),s=i.length;s--;)r=te.call(e,i[s]),e[r]=!(t[r]=i[s])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=j(e.replace(ue,\"$1\"));return i[I]?r(function(e,t,n,r){for(var o,s=i(e,null,r,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return function(t){return(t.textContent||t.innerText||N(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||\"\")||t.error(\"unsupported lang: \"+e),e=e.replace(we,Te).toLowerCase(),function(t){var n;do if(n=O?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+\"-\");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===q.activeElement&&(!q.hasFocus||q.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return ge.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){\nfor(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},k.pseudos.nth=k.pseudos.eq;for(T in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[T]=a(T);for(T in{submit:!0,reset:!0})k.pseudos[T]=u(T);return f.prototype=k.filters=k.pseudos,k.setFilters=new f,j=t.compile=function(e,t){var n,r=[],i=[],o=X[e+\" \"];if(!o){for(t||(t=p(e)),n=t.length;n--;)o=y(t[n]),o[I]?r.push(o):i.push(o);o=X(e,x(i,r))}return o},C.sortStable=I.split(\"\").sort(U).join(\"\")===I,C.detectDuplicates=!!A,L(),C.sortDetached=i(function(e){return 1&e.compareDocumentPosition(q.createElement(\"div\"))}),i(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||o(\"type|href|height|width\",function(e,t,n){return n?void 0:e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),C.attributes&&i(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||o(\"value\",function(e,t,n){return n||\"input\"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute(\"disabled\")})||o(ne,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);ee.find=ie,ee.expr=ie.selectors,ee.expr[\":\"]=ee.expr.pseudos,ee.unique=ie.uniqueSort,ee.text=ie.getText,ee.isXMLDoc=ie.isXML,ee.contains=ie.contains;var oe=ee.expr.match.needsContext,se=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,ae=/^.[^:#\\[\\.,]*$/;ee.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?ee.find.matchesSelector(r,e)?[r]:[]:ee.find.matches(e,ee.grep(t,function(e){return 1===e.nodeType}))},ee.fn.extend({find:function(e){var t,n=this.length,r=[],i=this;if(\"string\"!=typeof e)return this.pushStack(ee(e).filter(function(){for(t=0;n>t;t++)if(ee.contains(i[t],this))return!0}));for(t=0;n>t;t++)ee.find(e,i[t],r);return r=this.pushStack(n>1?ee.unique(r):r),r.selector=this.selector?this.selector+\" \"+e:e,r},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,\"string\"==typeof e&&oe.test(e)?ee(e):e||[],!1).length}});var ue,ce=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,le=ee.fn.init=function(e,t){var n,r;if(!e)return this;if(\"string\"==typeof e){if(n=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:ce.exec(e),!n||!n[1]&&t)return!t||t.jquery?(t||ue).find(e):this.constructor(t).find(e);if(n[1]){if(t=t instanceof ee?t[0]:t,ee.merge(this,ee.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:K,!0)),se.test(n[1])&&ee.isPlainObject(t))for(n in t)ee.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n]);return this}return r=K.getElementById(n[2]),r&&r.parentNode&&(this.length=1,this[0]=r),this.context=K,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ee.isFunction(e)?\"undefined\"!=typeof ue.ready?ue.ready(e):e(ee):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ee.makeArray(e,this))};le.prototype=ee.fn,ue=ee(K);var fe=/^(?:parents|prev(?:Until|All))/,pe={children:!0,contents:!0,next:!0,prev:!0};ee.extend({dir:function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&ee(e).is(n))break;r.push(e)}return r},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),ee.fn.extend({has:function(e){var t=ee(e,this),n=t.length;return this.filter(function(){for(var e=0;n>e;e++)if(ee.contains(this,t[e]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],s=oe.test(e)||\"string\"!=typeof e?ee(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(s?s.index(n)>-1:1===n.nodeType&&ee.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ee.unique(o):o)},index:function(e){return e?\"string\"==typeof e?U.call(ee(e),this[0]):U.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ee.unique(ee.merge(this.get(),ee(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ee.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return ee.dir(e,\"parentNode\")},parentsUntil:function(e,t,n){return ee.dir(e,\"parentNode\",n)},next:function(e){return i(e,\"nextSibling\")},prev:function(e){return i(e,\"previousSibling\")},nextAll:function(e){return ee.dir(e,\"nextSibling\")},prevAll:function(e){return ee.dir(e,\"previousSibling\")},nextUntil:function(e,t,n){return ee.dir(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return ee.dir(e,\"previousSibling\",n)},siblings:function(e){return ee.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return ee.sibling(e.firstChild)},contents:function(e){return e.contentDocument||ee.merge([],e.childNodes)}},function(e,t){ee.fn[e]=function(n,r){var i=ee.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=ee.filter(r,i)),this.length>1&&(pe[e]||ee.unique(i),fe.test(e)&&i.reverse()),this.pushStack(i)}});var de=/\\S+/g,he={};ee.Callbacks=function(e){e=\"string\"==typeof e?he[e]||o(e):ee.extend({},e);var t,n,r,i,s,a,u=[],c=!e.once&&[],l=function(o){for(t=e.memory&&o,n=!0,a=i||0,i=0,s=u.length,r=!0;u&&s>a;a++)if(u[a].apply(o[0],o[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,u&&(c?c.length&&l(c.shift()):t?u=[]:f.disable())},f={add:function(){if(u){var n=u.length;!function o(t){ee.each(t,function(t,n){var r=ee.type(n);\"function\"===r?e.unique&&f.has(n)||u.push(n):n&&n.length&&\"string\"!==r&&o(n)})}(arguments),r?s=u.length:t&&(i=n,l(t))}return this},remove:function(){return u&&ee.each(arguments,function(e,t){for(var n;(n=ee.inArray(t,u,n))>-1;)u.splice(n,1),r&&(s>=n&&s--,a>=n&&a--)}),this},has:function(e){return e?ee.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],s=0,this},disable:function(){return u=c=t=void 0,this},disabled:function(){return!u},lock:function(){return c=void 0,t||f.disable(),this},locked:function(){return!c},fireWith:function(e,t){return!u||n&&!c||(t=t||[],t=[e,t.slice?t.slice():t],r?c.push(t):l(t)),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!n}};return f},ee.extend({Deferred:function(e){var t=[[\"resolve\",\"done\",ee.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",ee.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",ee.Callbacks(\"memory\")]],n=\"pending\",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ee.Deferred(function(n){ee.each(t,function(t,o){var s=ee.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&ee.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o[0]+\"With\"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ee.extend(e,r):r}},i={};return r.pipe=r.then,ee.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+\"With\"](this===i?r:this,arguments),this},i[o[0]+\"With\"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=_.call(arguments),s=o.length,a=1!==s||e&&ee.isFunction(e.promise)?s:0,u=1===a?e:ee.Deferred(),c=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?_.call(arguments):i,r===t?u.notifyWith(n,r):--a||u.resolveWith(n,r)}};if(s>1)for(t=new Array(s),n=new Array(s),r=new Array(s);s>i;i++)o[i]&&ee.isFunction(o[i].promise)?o[i].promise().done(c(i,r,o)).fail(u.reject).progress(c(i,n,t)):--a;return a||u.resolveWith(r,o),u.promise()}});var ge;ee.fn.ready=function(e){return ee.ready.promise().done(e),this},ee.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ee.readyWait++:ee.ready(!0)},ready:function(e){(e===!0?--ee.readyWait:ee.isReady)||(ee.isReady=!0,e!==!0&&--ee.readyWait>0||(ge.resolveWith(K,[ee]),ee.fn.trigger&&ee(K).trigger(\"ready\").off(\"ready\")))}}),ee.ready.promise=function(t){return ge||(ge=ee.Deferred(),\"complete\"===K.readyState?setTimeout(ee.ready):(K.addEventListener(\"DOMContentLoaded\",s,!1),e.addEventListener(\"load\",s,!1))),ge.promise(t)},ee.ready.promise();var me=ee.access=function(e,t,n,r,i,o,s){var a=0,u=e.length,c=null==n;if(\"object\"===ee.type(n)){i=!0;for(a in n)ee.access(e,t,a,n[a],!0,o,s)}else if(void 0!==r&&(i=!0,ee.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(ee(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:c?t.call(e):u?t(e[0],n):o};ee.acceptData=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType},a.uid=1,a.accepts=ee.acceptData,a.prototype={key:function(e){if(!a.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=a.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,ee.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if(\"string\"==typeof t)o[t]=n;else if(ee.isEmptyObject(o))ee.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return void 0===t?n:n[t]},access:function(e,t,n){var r;return void 0===t||t&&\"string\"==typeof t&&void 0===n?(r=this.get(e,t),void 0!==r?r:this.get(e,ee.camelCase(t))):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(void 0===t)this.cache[o]={};else{ee.isArray(t)?r=t.concat(t.map(ee.camelCase)):(i=ee.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(de)||[])),n=r.length;for(;n--;)delete s[r[n]]}},hasData:function(e){return!ee.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}};var ve=new a,ye=new a,xe=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,be=/([A-Z])/g;ee.extend({hasData:function(e){return ye.hasData(e)||ve.hasData(e)},data:function(e,t,n){return ye.access(e,t,n)},removeData:function(e,t){ye.remove(e,t)},_data:function(e,t,n){return ve.access(e,t,n)},_removeData:function(e,t){ve.remove(e,t)}}),ee.fn.extend({data:function(e,t){var n,r,i,o=this[0],s=o&&o.attributes;if(void 0===e){if(this.length&&(i=ye.get(o),1===o.nodeType&&!ve.get(o,\"hasDataAttrs\"))){for(n=s.length;n--;)r=s[n].name,0===r.indexOf(\"data-\")&&(r=ee.camelCase(r.slice(5)),u(o,r,i[r]));ve.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){ye.set(this,e)}):me(this,function(t){var n,r=ee.camelCase(e);if(o&&void 0===t){if(n=ye.get(o,e),void 0!==n)return n;if(n=ye.get(o,r),void 0!==n)return n;if(n=u(o,r,void 0),void 0!==n)return n}else this.each(function(){var n=ye.get(this,r);ye.set(this,r,t),-1!==e.indexOf(\"-\")&&void 0!==n&&ye.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){ye.remove(this,e)})}}),ee.extend({queue:function(e,t,n){var r;return e?(t=(t||\"fx\")+\"queue\",r=ve.get(e,t),n&&(!r||ee.isArray(n)?r=ve.access(e,t,ee.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||\"fx\";var n=ee.queue(e,t),r=n.length,i=n.shift(),o=ee._queueHooks(e,t),s=function(){ee.dequeue(e,t)};\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return ve.get(e,n)||ve.access(e,n,{empty:ee.Callbacks(\"once memory\").add(function(){ve.remove(e,[t+\"queue\",n])})})}}),ee.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?ee.queue(this[0],e):void 0===t?this:this.each(function(){var n=ee.queue(this,e,t);ee._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&ee.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ee.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=ee.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};for(\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";s--;)n=ve.get(o[s],e+\"queueHooks\"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var we=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,Te=[\"Top\",\"Right\",\"Bottom\",\"Left\"],Ce=function(e,t){return e=t||e,\"none\"===ee.css(e,\"display\")||!ee.contains(e.ownerDocument,e)},ke=/^(?:checkbox|radio)$/i;!function(){var e=K.createDocumentFragment(),t=e.appendChild(K.createElement(\"div\"));t.innerHTML=\"<input type='radio' checked='checked' name='t'/>\",J.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML=\"<textarea>x</textarea>\",J.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Ne=\"undefined\";J.focusinBubbles=\"onfocusin\"in e;var Ee=/^key/,je=/^(?:mouse|contextmenu)|click/,Se=/^(?:focusinfocus|focusoutblur)$/,De=/^([^.]*)(?:\\.(.+)|)$/;ee.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,c,l,f,p,d,h,g,m=ve.get(e);if(m)for(n.handler&&(o=n,n=o.handler,i=o.selector),n.guid||(n.guid=ee.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return typeof ee!==Ne&&ee.event.triggered!==t.type?ee.event.dispatch.apply(e,arguments):void 0}),t=(t||\"\").match(de)||[\"\"],c=t.length;c--;)a=De.exec(t[c])||[],d=g=a[1],h=(a[2]||\"\").split(\".\").sort(),d&&(f=ee.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ee.event.special[d]||{},l=ee.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ee.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||(p=u[d]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,h,s)!==!1||e.addEventListener&&e.addEventListener(d,s,!1)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),ee.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,c,l,f,p,d,h,g,m=ve.hasData(e)&&ve.get(e);if(m&&(u=m.events)){for(t=(t||\"\").match(de)||[\"\"],c=t.length;c--;)if(a=De.exec(t[c])||[],d=g=a[1],h=(a[2]||\"\").split(\".\").sort(),d){for(f=ee.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],a=a[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),s=o=p.length;o--;)l=p[o],!i&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&(\"**\"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||ee.removeEvent(e,d,m.handle),delete u[d])}else for(d in u)ee.event.remove(e,d+t[c],n,r,!0);ee.isEmptyObject(u)&&(delete m.handle,ve.remove(e,\"events\"))}},trigger:function(t,n,r,i){var o,s,a,u,c,l,f,p=[r||K],d=G.call(t,\"type\")?t.type:t,h=G.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=a=r=r||K,3!==r.nodeType&&8!==r.nodeType&&!Se.test(d+ee.event.triggered)&&(d.indexOf(\".\")>=0&&(h=d.split(\".\"),d=h.shift(),h.sort()),c=d.indexOf(\":\")<0&&\"on\"+d,t=t[ee.expando]?t:new ee.Event(d,\"object\"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join(\".\"),t.namespace_re=t.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:ee.makeArray(n,[t]),f=ee.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!ee.isWindow(r)){for(u=f.delegateType||d,Se.test(u+d)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||K)&&p.push(a.defaultView||a.parentWindow||e)}for(o=0;(s=p[o++])&&!t.isPropagationStopped();)t.type=o>1?u:f.bindType||d,l=(ve.get(s,\"events\")||{})[t.type]&&ve.get(s,\"handle\"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&ee.acceptData(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!ee.acceptData(r)||c&&ee.isFunction(r[d])&&!ee.isWindow(r)&&(a=r[c],a&&(r[c]=null),ee.event.triggered=d,r[d](),ee.event.triggered=void 0,a&&(r[c]=a)),t.result}},dispatch:function(e){e=ee.event.fix(e);var t,n,r,i,o,s=[],a=_.call(arguments),u=(ve.get(this,\"events\")||{})[e.type]||[],c=ee.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=ee.event.handlers.call(this,e,u),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((ee.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||\"click\"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||\"click\"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+\" \",void 0===r[i]&&(r[i]=o.needsContext?ee(i,this).index(u)>=0:ee.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return a<t.length&&s.push({elem:this,handlers:t.slice(a)}),s},props:\"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:\"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(e,t){var n,r,i,o=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||K,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},fix:function(e){if(e[ee.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];for(s||(this.fixHooks[i]=s=je.test(i)?this.mouseHooks:Ee.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new ee.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=K),3===e.target.nodeType&&(e.target=e.target.parentNode),s.filter?s.filter(e,o):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==f()&&this.focus?(this.focus(),!1):void 0},delegateType:\"focusin\"},blur:{trigger:function(){return this===f()&&this.blur?(this.blur(),!1):void 0},delegateType:\"focusout\"},click:{trigger:function(){return\"checkbox\"===this.type&&this.click&&ee.nodeName(this,\"input\")?(this.click(),!1):void 0},_default:function(e){return ee.nodeName(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=ee.extend(new ee.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?ee.event.trigger(i,null,t):ee.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},ee.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},ee.Event=function(e,t){return this instanceof ee.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.getPreventDefault&&e.getPreventDefault()?c:l):this.type=e,t&&ee.extend(this,t),this.timeStamp=e&&e.timeStamp||ee.now(),void(this[ee.expando]=!0)):new ee.Event(e,t)},ee.Event.prototype={isDefaultPrevented:l,isPropagationStopped:l,isImmediatePropagationStopped:l,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=c,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=c,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=c,this.stopPropagation()}},ee.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(e,t){ee.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!ee.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),J.focusinBubbles||ee.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){ee.event.simulate(t,e.target,ee.event.fix(e),!0)};ee.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=ve.access(r,t);i||r.addEventListener(e,n,!0),ve.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=ve.access(r,t)-1;i?ve.access(r,t,i):(r.removeEventListener(e,n,!0),ve.remove(r,t))}}}),ee.fn.extend({on:function(e,t,n,r,i){var o,s;if(\"object\"==typeof e){\"string\"!=typeof t&&(n=n||t,t=void 0);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=void 0):null==r&&(\"string\"==typeof t?(r=n,n=void 0):(r=n,n=t,t=void 0)),r===!1)r=l;else if(!r)return this;return 1===i&&(o=r,r=function(e){return ee().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=ee.guid++)),this.each(function(){ee.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ee(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||\"function\"==typeof t)&&(n=t,t=void 0),n===!1&&(n=l),this.each(function(){ee.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ee.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ee.event.trigger(e,t,n,!0):void 0}});var Ae=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,Le=/<([\\w:]+)/,qe=/<|&#?\\w+;/,He=/<(?:script|style|link)/i,Oe=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Fe=/^$|\\/(?:java|ecma)script/i,Pe=/^true\\/(.*)/,Me=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,Re={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};Re.optgroup=Re.option,Re.tbody=Re.tfoot=Re.colgroup=Re.caption=Re.thead,Re.th=Re.td,ee.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=ee.contains(e.ownerDocument,e);if(!(J.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ee.isXMLDoc(e)))for(s=v(a),o=v(e),r=0,i=o.length;i>r;r++)y(o[r],s[r]);if(t)if(n)for(o=o||v(e),s=s||v(a),r=0,i=o.length;i>r;r++)m(o[r],s[r]);else m(e,a);return s=v(a,\"script\"),s.length>0&&g(s,!u&&v(e,\"script\")),a},buildFragment:function(e,t,n,r){for(var i,o,s,a,u,c,l=t.createDocumentFragment(),f=[],p=0,d=e.length;d>p;p++)if(i=e[p],i||0===i)if(\"object\"===ee.type(i))ee.merge(f,i.nodeType?[i]:i);else if(qe.test(i)){for(o=o||l.appendChild(t.createElement(\"div\")),s=(Le.exec(i)||[\"\",\"\"])[1].toLowerCase(),a=Re[s]||Re._default,o.innerHTML=a[1]+i.replace(Ae,\"<$1></$2>\")+a[2],c=a[0];c--;)o=o.lastChild;ee.merge(f,o.childNodes),o=l.firstChild,o.textContent=\"\"}else f.push(t.createTextNode(i));for(l.textContent=\"\",p=0;i=f[p++];)if((!r||-1===ee.inArray(i,r))&&(u=ee.contains(i.ownerDocument,i),o=v(l.appendChild(i),\"script\"),u&&g(o),n))for(c=0;i=o[c++];)Fe.test(i.type||\"\")&&n.push(i);return l},cleanData:function(e){for(var t,n,r,i,o,s,a=ee.event.special,u=0;void 0!==(n=e[u]);u++){if(ee.acceptData(n)&&(o=n[ve.expando],o&&(t=ve.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;void 0!==(i=r[s]);s++)a[i]?ee.event.remove(n,i):ee.removeEvent(n,i,t.handle);ve.cache[o]&&delete ve.cache[o]}delete ye.cache[n[ye.expando]]}}}),ee.fn.extend({text:function(e){return me(this,function(e){return void 0===e?ee.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=e)})},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=p(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=p(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=e?ee.filter(e,this):this,i=0;null!=(n=r[i]);i++)t||1!==n.nodeType||ee.cleanData(v(n)),n.parentNode&&(t&&ee.contains(n.ownerDocument,n)&&g(v(n,\"script\")),n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ee.cleanData(v(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ee.clone(this,e,t)})},html:function(e){return me(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!He.test(e)&&!Re[(Le.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=e.replace(Ae,\"<$1></$2>\");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(ee.cleanData(v(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,ee.cleanData(v(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=z.apply([],e);var n,r,i,o,s,a,u=0,c=this.length,l=this,f=c-1,p=e[0],g=ee.isFunction(p);if(g||c>1&&\"string\"==typeof p&&!J.checkClone&&Oe.test(p))return this.each(function(n){var r=l.eq(n);g&&(e[0]=p.call(this,n,r.html())),r.domManip(e,t)});if(c&&(n=ee.buildFragment(e,this[0].ownerDocument,!1,this),r=n.firstChild,1===n.childNodes.length&&(n=r),r)){for(i=ee.map(v(n,\"script\"),d),o=i.length;c>u;u++)s=n,u!==f&&(s=ee.clone(s,!0,!0),o&&ee.merge(i,v(s,\"script\"))),t.call(this[u],s,u);if(o)for(a=i[i.length-1].ownerDocument,ee.map(i,h),u=0;o>u;u++)s=i[u],Fe.test(s.type||\"\")&&!ve.access(s,\"globalEval\")&&ee.contains(a,s)&&(s.src?ee._evalUrl&&ee._evalUrl(s.src):ee.globalEval(s.textContent.replace(Me,\"\")))}return this}}),ee.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){ee.fn[e]=function(e){for(var n,r=[],i=ee(e),o=i.length-1,s=0;o>=s;s++)n=s===o?this:this.clone(!0),ee(i[s])[t](n),X.apply(r,n.get());return this.pushStack(r)}});var Ie,We={},$e=/^margin/,Be=new RegExp(\"^(\"+we+\")(?!px)[a-z%]+$\",\"i\"),_e=function(e){return e.ownerDocument.defaultView.getComputedStyle(e,null)};!function(){function t(){a.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%\",o.appendChild(s);var t=e.getComputedStyle(a,null);n=\"1%\"!==t.top,r=\"4px\"===t.width,o.removeChild(s)}var n,r,i=\"padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box\",o=K.documentElement,s=K.createElement(\"div\"),a=K.createElement(\"div\");a.style.backgroundClip=\"content-box\",a.cloneNode(!0).style.backgroundClip=\"\",J.clearCloneStyle=\"content-box\"===a.style.backgroundClip,s.style.cssText=\"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\",s.appendChild(a),e.getComputedStyle&&ee.extend(J,{pixelPosition:function(){return t(),n},boxSizingReliable:function(){return null==r&&t(),r},reliableMarginRight:function(){var t,n=a.appendChild(K.createElement(\"div\"));return n.style.cssText=a.style.cssText=i,n.style.marginRight=n.style.width=\"0\",a.style.width=\"1px\",o.appendChild(s),t=!parseFloat(e.getComputedStyle(n,null).marginRight),o.removeChild(s),a.innerHTML=\"\",t}})}(),ee.swap=function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i};var ze=/^(none|table(?!-c[ea]).+)/,Xe=new RegExp(\"^(\"+we+\")(.*)$\",\"i\"),Ue=new RegExp(\"^([+-])=(\"+we+\")\",\"i\"),Ve={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ye={letterSpacing:0,fontWeight:400},Ge=[\"Webkit\",\"O\",\"Moz\",\"ms\"];ee.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=w(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=ee.camelCase(t),u=e.style;return t=ee.cssProps[a]||(ee.cssProps[a]=C(u,a)),s=ee.cssHooks[t]||ee.cssHooks[a],void 0===n?s&&\"get\"in s&&void 0!==(i=s.get(e,!1,r))?i:u[t]:(o=typeof n,\"string\"===o&&(i=Ue.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(ee.css(e,t)),o=\"number\"),null!=n&&n===n&&(\"number\"!==o||ee.cssNumber[a]||(n+=\"px\"),J.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(u[t]=\"inherit\"),s&&\"set\"in s&&void 0===(n=s.set(e,n,r))||(u[t]=\"\",u[t]=n)),void 0)}},css:function(e,t,n,r){var i,o,s,a=ee.camelCase(t);return t=ee.cssProps[a]||(ee.cssProps[a]=C(e.style,a)),s=ee.cssHooks[t]||ee.cssHooks[a],s&&\"get\"in s&&(i=s.get(e,!0,n)),void 0===i&&(i=w(e,t,r)),\"normal\"===i&&t in Ye&&(i=Ye[t]),\"\"===n||n?(o=parseFloat(i),n===!0||ee.isNumeric(o)?o||0:i):i}}),ee.each([\"height\",\"width\"],function(e,t){ee.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&ze.test(ee.css(e,\"display\"))?ee.swap(e,Ve,function(){return E(e,t,r)}):E(e,t,r):void 0},set:function(e,n,r){var i=r&&_e(e);return k(e,n,r?N(e,t,r,\"border-box\"===ee.css(e,\"boxSizing\",!1,i),i):0)}}}),ee.cssHooks.marginRight=T(J.reliableMarginRight,function(e,t){return t?ee.swap(e,{display:\"inline-block\"},w,[e,\"marginRight\"]):void 0}),ee.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){ee.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];4>r;r++)i[e+Te[r]+t]=o[r]||o[r-2]||o[0];return i}},$e.test(e)||(ee.cssHooks[e+t].set=k)}),ee.fn.extend({css:function(e,t){return me(this,function(e,t,n){var r,i,o={},s=0;if(ee.isArray(t)){for(r=_e(e),i=t.length;i>s;s++)o[t[s]]=ee.css(e,t[s],!1,r);return o}return void 0!==n?ee.style(e,t,n):ee.css(e,t)},e,t,arguments.length>1)},show:function(){return j(this,!0)},hide:function(){return j(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){Ce(this)?ee(this).show():ee(this).hide()})}}),ee.Tween=S,S.prototype={constructor:S,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||\"swing\",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ee.cssNumber[n]?\"\":\"px\")},cur:function(){var e=S.propHooks[this.prop];return e&&e.get?e.get(this):S.propHooks._default.get(this)},run:function(e){var t,n=S.propHooks[this.prop];return this.options.duration?this.pos=t=ee.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):S.propHooks._default.set(this),this}},S.prototype.init.prototype=S.prototype,S.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=ee.css(e.elem,e.prop,\"\"),t&&\"auto\"!==t?t:0):e.elem[e.prop]},set:function(e){ee.fx.step[e.prop]?ee.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[ee.cssProps[e.prop]]||ee.cssHooks[e.prop])?ee.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},S.propHooks.scrollTop=S.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ee.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},ee.fx=S.prototype.init,ee.fx.step={};var Qe,Je,Ke=/^(?:toggle|show|hide)$/,Ze=new RegExp(\"^(?:([+-])=|)(\"+we+\")([a-z%]*)$\",\"i\"),et=/queueHooks$/,tt=[q],nt={\"*\":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Ze.exec(t),o=i&&i[3]||(ee.cssNumber[e]?\"\":\"px\"),s=(ee.cssNumber[e]||\"px\"!==o&&+r)&&Ze.exec(ee.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){\no=o||s[3],i=i||[],s=+r||1;do a=a||\".5\",s/=a,ee.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};ee.Animation=ee.extend(O,{tweener:function(e,t){ee.isFunction(e)?(t=e,e=[\"*\"]):e=e.split(\" \");for(var n,r=0,i=e.length;i>r;r++)n=e[r],nt[n]=nt[n]||[],nt[n].unshift(t)},prefilter:function(e,t){t?tt.unshift(e):tt.push(e)}}),ee.speed=function(e,t,n){var r=e&&\"object\"==typeof e?ee.extend({},e):{complete:n||!n&&t||ee.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ee.isFunction(t)&&t};return r.duration=ee.fx.off?0:\"number\"==typeof r.duration?r.duration:r.duration in ee.fx.speeds?ee.fx.speeds[r.duration]:ee.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){ee.isFunction(r.old)&&r.old.call(this),r.queue&&ee.dequeue(this,r.queue)},r},ee.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Ce).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=ee.isEmptyObject(e),o=ee.speed(t,n,r),s=function(){var t=O(this,ee.extend({},e),o);(i||ve.get(this,\"finish\"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=ee.timers,s=ve.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&et.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&ee.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||\"fx\"),this.each(function(){var t,n=ve.get(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=ee.timers,s=r?r.length:0;for(n.finish=!0,ee.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),ee.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=ee.fn[t];ee.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(A(t,!0),e,r,i)}}),ee.each({slideDown:A(\"show\"),slideUp:A(\"hide\"),slideToggle:A(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){ee.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),ee.timers=[],ee.fx.tick=function(){var e,t=0,n=ee.timers;for(Qe=ee.now();t<n.length;t++)e=n[t],e()||n[t]!==e||n.splice(t--,1);n.length||ee.fx.stop(),Qe=void 0},ee.fx.timer=function(e){ee.timers.push(e),e()?ee.fx.start():ee.timers.pop()},ee.fx.interval=13,ee.fx.start=function(){Je||(Je=setInterval(ee.fx.tick,ee.fx.interval))},ee.fx.stop=function(){clearInterval(Je),Je=null},ee.fx.speeds={slow:600,fast:200,_default:400},ee.fn.delay=function(e,t){return e=ee.fx?ee.fx.speeds[e]||e:e,t=t||\"fx\",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},function(){var e=K.createElement(\"input\"),t=K.createElement(\"select\"),n=t.appendChild(K.createElement(\"option\"));e.type=\"checkbox\",J.checkOn=\"\"!==e.value,J.optSelected=n.selected,t.disabled=!0,J.optDisabled=!n.disabled,e=K.createElement(\"input\"),e.value=\"t\",e.type=\"radio\",J.radioValue=\"t\"===e.value}();var rt,it,ot=ee.expr.attrHandle;ee.fn.extend({attr:function(e,t){return me(this,ee.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ee.removeAttr(this,e)})}}),ee.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(e&&3!==o&&8!==o&&2!==o)return typeof e.getAttribute===Ne?ee.prop(e,t,n):(1===o&&ee.isXMLDoc(e)||(t=t.toLowerCase(),r=ee.attrHooks[t]||(ee.expr.match.bool.test(t)?it:rt)),void 0===n?r&&\"get\"in r&&null!==(i=r.get(e,t))?i:(i=ee.find.attr(e,t),null==i?void 0:i):null!==n?r&&\"set\"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+\"\"),n):void ee.removeAttr(e,t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(de);if(o&&1===e.nodeType)for(;n=o[i++];)r=ee.propFix[n]||n,ee.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!J.radioValue&&\"radio\"===t&&ee.nodeName(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}}}),it={set:function(e,t,n){return t===!1?ee.removeAttr(e,n):e.setAttribute(n,n),n}},ee.each(ee.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=ot[t]||ee.find.attr;ot[t]=function(e,t,r){var i,o;return r||(o=ot[t],ot[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,ot[t]=o),i}});var st=/^(?:input|select|textarea|button)$/i;ee.fn.extend({prop:function(e,t){return me(this,ee.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[ee.propFix[e]||e]})}}),ee.extend({propFix:{\"for\":\"htmlFor\",\"class\":\"className\"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!ee.isXMLDoc(e),o&&(t=ee.propFix[t]||t,i=ee.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute(\"tabindex\")||st.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),J.optSelected||(ee.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),ee.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){ee.propFix[this.toLowerCase()]=this});var at=/[\\t\\r\\n\\f]/g;ee.fn.extend({addClass:function(e){var t,n,r,i,o,s,a=\"string\"==typeof e&&e,u=0,c=this.length;if(ee.isFunction(e))return this.each(function(t){ee(this).addClass(e.call(this,t,this.className))});if(a)for(t=(e||\"\").match(de)||[];c>u;u++)if(n=this[u],r=1===n.nodeType&&(n.className?(\" \"+n.className+\" \").replace(at,\" \"):\" \")){for(o=0;i=t[o++];)r.indexOf(\" \"+i+\" \")<0&&(r+=i+\" \");s=ee.trim(r),n.className!==s&&(n.className=s)}return this},removeClass:function(e){var t,n,r,i,o,s,a=0===arguments.length||\"string\"==typeof e&&e,u=0,c=this.length;if(ee.isFunction(e))return this.each(function(t){ee(this).removeClass(e.call(this,t,this.className))});if(a)for(t=(e||\"\").match(de)||[];c>u;u++)if(n=this[u],r=1===n.nodeType&&(n.className?(\" \"+n.className+\" \").replace(at,\" \"):\"\")){for(o=0;i=t[o++];)for(;r.indexOf(\" \"+i+\" \")>=0;)r=r.replace(\" \"+i+\" \",\" \");s=e?ee.trim(r):\"\",n.className!==s&&(n.className=s)}return this},toggleClass:function(e,t){var n=typeof e;return\"boolean\"==typeof t&&\"string\"===n?t?this.addClass(e):this.removeClass(e):ee.isFunction(e)?this.each(function(n){ee(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(\"string\"===n)for(var t,r=0,i=ee(this),o=e.match(de)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else(n===Ne||\"boolean\"===n)&&(this.className&&ve.set(this,\"__className__\",this.className),this.className=this.className||e===!1?\"\":ve.get(this,\"__className__\")||\"\")})},hasClass:function(e){for(var t=\" \"+e+\" \",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(\" \"+this[n].className+\" \").replace(at,\" \").indexOf(t)>=0)return!0;return!1}});var ut=/\\r/g;ee.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=ee.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,ee(this).val()):e,null==i?i=\"\":\"number\"==typeof i?i+=\"\":ee.isArray(i)&&(i=ee.map(i,function(e){return null==e?\"\":e+\"\"})),t=ee.valHooks[this.type]||ee.valHooks[this.nodeName.toLowerCase()],t&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))});if(i)return t=ee.valHooks[i.type]||ee.valHooks[i.nodeName.toLowerCase()],t&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:(n=i.value,\"string\"==typeof n?n.replace(ut,\"\"):null==n?\"\":n)}}}),ee.extend({valHooks:{select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o=\"select-one\"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;a>u;u++)if(n=r[u],(n.selected||u===i)&&(J.optDisabled?!n.disabled:null===n.getAttribute(\"disabled\"))&&(!n.parentNode.disabled||!ee.nodeName(n.parentNode,\"optgroup\"))){if(t=ee(n).val(),o)return t;s.push(t)}return s},set:function(e,t){for(var n,r,i=e.options,o=ee.makeArray(t),s=i.length;s--;)r=i[s],(r.selected=ee.inArray(ee(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ee.each([\"radio\",\"checkbox\"],function(){ee.valHooks[this]={set:function(e,t){return ee.isArray(t)?e.checked=ee.inArray(ee(e).val(),t)>=0:void 0}},J.checkOn||(ee.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),ee.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(e,t){ee.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ee.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}});var ct=ee.now(),lt=/\\?/;ee.parseJSON=function(e){return JSON.parse(e+\"\")},ee.parseXML=function(e){var t,n;if(!e||\"string\"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,\"text/xml\")}catch(r){t=void 0}return(!t||t.getElementsByTagName(\"parsererror\").length)&&ee.error(\"Invalid XML: \"+e),t};var ft,pt,dt=/#.*$/,ht=/([?&])_=[^&]*/,gt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,mt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,vt=/^(?:GET|HEAD)$/,yt=/^\\/\\//,xt=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,bt={},wt={},Tt=\"*/\".concat(\"*\");try{pt=location.href}catch(Ct){pt=K.createElement(\"a\"),pt.href=\"\",pt=pt.href}ft=xt.exec(pt.toLowerCase())||[],ee.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:pt,type:\"GET\",isLocal:mt.test(ft[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Tt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":ee.parseJSON,\"text xml\":ee.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?M(M(e,ee.ajaxSettings),t):M(ee.ajaxSettings,e)},ajaxPrefilter:F(bt),ajaxTransport:F(wt),ajax:function(e,t){function n(e,t,n,s){var u,l,v,y,b,T=t;2!==x&&(x=2,a&&clearTimeout(a),r=void 0,o=s||\"\",w.readyState=e>0?4:0,u=e>=200&&300>e||304===e,n&&(y=R(f,w,n)),y=I(f,y,w,u),u?(f.ifModified&&(b=w.getResponseHeader(\"Last-Modified\"),b&&(ee.lastModified[i]=b),b=w.getResponseHeader(\"etag\"),b&&(ee.etag[i]=b)),204===e||\"HEAD\"===f.type?T=\"nocontent\":304===e?T=\"notmodified\":(T=y.state,l=y.data,v=y.error,u=!v)):(v=T,(e||!T)&&(T=\"error\",0>e&&(e=0))),w.status=e,w.statusText=(t||T)+\"\",u?h.resolveWith(p,[l,T,w]):h.rejectWith(p,[w,T,v]),w.statusCode(m),m=void 0,c&&d.trigger(u?\"ajaxSuccess\":\"ajaxError\",[w,f,u?l:v]),g.fireWith(p,[w,T]),c&&(d.trigger(\"ajaxComplete\",[w,f]),--ee.active||ee.event.trigger(\"ajaxStop\")))}\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,o,s,a,u,c,l,f=ee.ajaxSetup({},t),p=f.context||f,d=f.context&&(p.nodeType||p.jquery)?ee(p):ee.event,h=ee.Deferred(),g=ee.Callbacks(\"once memory\"),m=f.statusCode||{},v={},y={},x=0,b=\"canceled\",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!s)for(s={};t=gt.exec(o);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?o:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=y[n]=y[n]||e,v[e]=t),this},overrideMimeType:function(e){return x||(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||b;return r&&r.abort(t),n(0,t),this}};if(h.promise(w).complete=g.add,w.success=w.done,w.error=w.fail,f.url=((e||f.url||pt)+\"\").replace(dt,\"\").replace(yt,ft[1]+\"//\"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=ee.trim(f.dataType||\"*\").toLowerCase().match(de)||[\"\"],null==f.crossDomain&&(u=xt.exec(f.url.toLowerCase()),f.crossDomain=!(!u||u[1]===ft[1]&&u[2]===ft[2]&&(u[3]||(\"http:\"===u[1]?\"80\":\"443\"))===(ft[3]||(\"http:\"===ft[1]?\"80\":\"443\")))),f.data&&f.processData&&\"string\"!=typeof f.data&&(f.data=ee.param(f.data,f.traditional)),P(bt,f,t,w),2===x)return w;c=f.global,c&&0===ee.active++&&ee.event.trigger(\"ajaxStart\"),f.type=f.type.toUpperCase(),f.hasContent=!vt.test(f.type),i=f.url,f.hasContent||(f.data&&(i=f.url+=(lt.test(i)?\"&\":\"?\")+f.data,delete f.data),f.cache===!1&&(f.url=ht.test(i)?i.replace(ht,\"$1_=\"+ct++):i+(lt.test(i)?\"&\":\"?\")+\"_=\"+ct++)),f.ifModified&&(ee.lastModified[i]&&w.setRequestHeader(\"If-Modified-Since\",ee.lastModified[i]),ee.etag[i]&&w.setRequestHeader(\"If-None-Match\",ee.etag[i])),(f.data&&f.hasContent&&f.contentType!==!1||t.contentType)&&w.setRequestHeader(\"Content-Type\",f.contentType),w.setRequestHeader(\"Accept\",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+(\"*\"!==f.dataTypes[0]?\", \"+Tt+\"; q=0.01\":\"\"):f.accepts[\"*\"]);for(l in f.headers)w.setRequestHeader(l,f.headers[l]);if(f.beforeSend&&(f.beforeSend.call(p,w,f)===!1||2===x))return w.abort();b=\"abort\";for(l in{success:1,error:1,complete:1})w[l](f[l]);if(r=P(wt,f,t,w)){w.readyState=1,c&&d.trigger(\"ajaxSend\",[w,f]),f.async&&f.timeout>0&&(a=setTimeout(function(){w.abort(\"timeout\")},f.timeout));try{x=1,r.send(v,n)}catch(T){if(!(2>x))throw T;n(-1,T)}}else n(-1,\"No Transport\");return w},getJSON:function(e,t,n){return ee.get(e,t,n,\"json\")},getScript:function(e,t){return ee.get(e,void 0,t,\"script\")}}),ee.each([\"get\",\"post\"],function(e,t){ee[t]=function(e,n,r,i){return ee.isFunction(n)&&(i=i||r,r=n,n=void 0),ee.ajax({url:e,type:t,dataType:i,data:n,success:r})}}),ee.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){ee.fn[t]=function(e){return this.on(t,e)}}),ee._evalUrl=function(e){return ee.ajax({url:e,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0})},ee.fn.extend({wrapAll:function(e){var t;return ee.isFunction(e)?this.each(function(t){ee(this).wrapAll(e.call(this,t))}):(this[0]&&(t=ee(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return ee.isFunction(e)?this.each(function(t){ee(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ee(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ee.isFunction(e);return this.each(function(n){ee(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ee.nodeName(this,\"body\")||ee(this).replaceWith(this.childNodes)}).end()}}),ee.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0},ee.expr.filters.visible=function(e){return!ee.expr.filters.hidden(e)};var kt=/%20/g,Nt=/\\[\\]$/,Et=/\\r?\\n/g,jt=/^(?:submit|button|image|reset|file)$/i,St=/^(?:input|select|textarea|keygen)/i;ee.param=function(e,t){var n,r=[],i=function(e,t){t=ee.isFunction(t)?t():null==t?\"\":t,r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(t)};if(void 0===t&&(t=ee.ajaxSettings&&ee.ajaxSettings.traditional),ee.isArray(e)||e.jquery&&!ee.isPlainObject(e))ee.each(e,function(){i(this.name,this.value)});else for(n in e)W(n,e[n],t,i);return r.join(\"&\").replace(kt,\"+\")},ee.fn.extend({serialize:function(){return ee.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ee.prop(this,\"elements\");return e?ee.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ee(this).is(\":disabled\")&&St.test(this.nodeName)&&!jt.test(e)&&(this.checked||!ke.test(e))}).map(function(e,t){var n=ee(this).val();return null==n?null:ee.isArray(n)?ee.map(n,function(e){return{name:t.name,value:e.replace(Et,\"\\r\\n\")}}):{name:t.name,value:n.replace(Et,\"\\r\\n\")}}).get()}}),ee.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var Dt=0,At={},Lt={0:200,1223:204},qt=ee.ajaxSettings.xhr();e.ActiveXObject&&ee(e).on(\"unload\",function(){for(var e in At)At[e]()}),J.cors=!!qt&&\"withCredentials\"in qt,J.ajax=qt=!!qt,ee.ajaxTransport(function(e){var t;return J.cors||qt&&!e.crossDomain?{send:function(n,r){var i,o=e.xhr(),s=++Dt;if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)o[i]=e.xhrFields[i];e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||n[\"X-Requested-With\"]||(n[\"X-Requested-With\"]=\"XMLHttpRequest\");for(i in n)o.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete At[s],t=o.onload=o.onerror=null,\"abort\"===e?o.abort():\"error\"===e?r(o.status,o.statusText):r(Lt[o.status]||o.status,o.statusText,\"string\"==typeof o.responseText?{text:o.responseText}:void 0,o.getAllResponseHeaders()))}},o.onload=t(),o.onerror=t(\"error\"),t=At[s]=t(\"abort\"),o.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:void 0}),ee.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/(?:java|ecma)script/},converters:{\"text script\":function(e){return ee.globalEval(e),e}}}),ee.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),ee.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=ee(\"<script>\").prop({async:!0,charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e&&i(\"error\"===e.type?404:200,e.type)}),K.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Ht=[],Ot=/(=)\\?(?=&|$)|\\?\\?/;ee.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Ht.pop()||ee.expando+\"_\"+ct++;return this[e]=!0,e}}),ee.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(Ot.test(t.url)?\"url\":\"string\"==typeof t.data&&!(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ot.test(t.data)&&\"data\");return a||\"jsonp\"===t.dataTypes[0]?(i=t.jsonpCallback=ee.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(Ot,\"$1\"+i):t.jsonp!==!1&&(t.url+=(lt.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return s||ee.error(i+\" was not called\"),s[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Ht.push(i)),s&&ee.isFunction(o)&&o(s[0]),s=o=void 0}),\"script\"):void 0}),ee.parseHTML=function(e,t,n){if(!e||\"string\"!=typeof e)return null;\"boolean\"==typeof t&&(n=t,t=!1),t=t||K;var r=se.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=ee.buildFragment([e],t,i),i&&i.length&&ee(i).remove(),ee.merge([],r.childNodes))};var Ft=ee.fn.load;ee.fn.load=function(e,t,n){if(\"string\"!=typeof e&&Ft)return Ft.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(\" \");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),ee.isFunction(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),s.length>0&&ee.ajax({url:e,type:i,dataType:\"html\",data:t}).done(function(e){o=arguments,s.html(r?ee(\"<div>\").append(ee.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},ee.expr.filters.animated=function(e){return ee.grep(ee.timers,function(t){return e===t.elem}).length};var Pt=e.document.documentElement;ee.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,c,l=ee.css(e,\"position\"),f=ee(e),p={};\"static\"===l&&(e.style.position=\"relative\"),a=f.offset(),o=ee.css(e,\"top\"),u=ee.css(e,\"left\"),c=(\"absolute\"===l||\"fixed\"===l)&&(o+u).indexOf(\"auto\")>-1,c?(r=f.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),ee.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(p.top=t.top-a.top+s),null!=t.left&&(p.left=t.left-a.left+i),\"using\"in t?t.using.call(e,p):f.css(p)}},ee.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ee.offset.setOffset(this,e,t)});var t,n,r=this[0],i={top:0,left:0},o=r&&r.ownerDocument;if(o)return t=o.documentElement,ee.contains(t,r)?(typeof r.getBoundingClientRect!==Ne&&(i=r.getBoundingClientRect()),n=$(o),{top:i.top+n.pageYOffset-t.clientTop,left:i.left+n.pageXOffset-t.clientLeft}):i},position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return\"fixed\"===ee.css(n,\"position\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ee.nodeName(e[0],\"html\")||(r=e.offset()),r.top+=ee.css(e[0],\"borderTopWidth\",!0),r.left+=ee.css(e[0],\"borderLeftWidth\",!0)),{top:t.top-r.top-ee.css(n,\"marginTop\",!0),left:t.left-r.left-ee.css(n,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||Pt;e&&!ee.nodeName(e,\"html\")&&\"static\"===ee.css(e,\"position\");)e=e.offsetParent;return e||Pt})}}),ee.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,n){var r=\"pageYOffset\"===n;ee.fn[t]=function(i){return me(this,function(t,i,o){var s=$(t);return void 0===o?s?s[n]:t[i]:void(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o)},t,i,arguments.length,null)}}),ee.each([\"top\",\"left\"],function(e,t){ee.cssHooks[t]=T(J.pixelPosition,function(e,n){return n?(n=w(e,t),Be.test(n)?ee(e).position()[t]+\"px\":n):void 0})}),ee.each({Height:\"height\",Width:\"width\"},function(e,t){ee.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){ee.fn[r]=function(r,i){var o=arguments.length&&(n||\"boolean\"!=typeof r),s=n||(r===!0||i===!0?\"margin\":\"border\");return me(this,function(t,n,r){var i;return ee.isWindow(t)?t.document.documentElement[\"client\"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body[\"scroll\"+e],i[\"scroll\"+e],t.body[\"offset\"+e],i[\"offset\"+e],i[\"client\"+e])):void 0===r?ee.css(t,n,s):ee.style(t,n,r,s)},t,o?r:void 0,o,null)}})}),ee.fn.size=function(){return this.length},ee.fn.andSelf=ee.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return ee});var Mt=e.jQuery,Rt=e.$;return ee.noConflict=function(t){return e.$===ee&&(e.$=Rt),t&&e.jQuery===ee&&(e.jQuery=Mt),ee},typeof t===Ne&&(e.jQuery=e.$=ee),ee})},{}]},{},[1]);"
          },
          "redirectURL": "",
          "headersSize": 777,
          "bodySize": 30379,
          "_transferSize": 31156
        },
        "cache": {},
        "timings": {
          "blocked": 1.9240000214353203,
          "dns": 0.028000000000000025,
          "ssl": 16.847,
          "connect": 27.971,
          "send": 0.23200000000000287,
          "wait": 29.778000009559094,
          "receive": 2.0179999992251396,
          "_blocked_queueing": 0.9660000214353204
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "addBottomScript",
                "scriptId": "113",
                "url": "https://workstation.theorchard.com/analytics/engagement",
                "lineNumber": 50,
                "columnNumber": 38
              },
              {
                "functionName": "",
                "scriptId": "113",
                "url": "https://workstation.theorchard.com/analytics/engagement",
                "lineNumber": 54,
                "columnNumber": 38
              }
            ],
            "parent": {
              "description": "load",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "113",
                  "url": "https://workstation.theorchard.com/analytics/engagement",
                  "lineNumber": 53,
                  "columnNumber": 27
                }
              ]
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949633",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:17.127Z",
        "time": 841.3590000448526,
        "request": {
          "method": "GET",
          "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.segment.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "text/javascript; charset=utf-8"
            },
            {
              "name": "content-length",
              "value": "71100"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "access-control-allow-methods",
              "value": "GET, HEAD"
            },
            {
              "name": "access-control-max-age",
              "value": "3000"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Fri, 06 Mar 2020 17:48:12 GMT"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "x-amz-version-id",
              "value": "eM7AFIYv9yc4eoliyRODV0eQ0EAvUVUX"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:29:29 GMT"
            },
            {
              "name": "etag",
              "value": "\"28330c9453871079903251740ed09d55\""
            },
            {
              "name": "cache-control",
              "value": "public, max-age=300"
            },
            {
              "name": "x-cache",
              "value": "Hit from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 6b3d2643c74a20e5b5a8b8be0da4fbfa.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C3"
            },
            {
              "name": "x-amz-cf-id",
              "value": "TVHHuhGvd4FBb_W_guWsFww2A6-CZ4LGgh4kFvPmc2yyoG_5DibtRw=="
            },
            {
              "name": "age",
              "value": "109"
            }
          ],
          "cookies": [],
          "content": {
            "size": 379168,
            "mimeType": "text/javascript",
            "text": "!function(define){\"function\"==typeof define&&define.amd&&(define=undefined);!function(){function e(t,n,o){function i(r,s){if(!n[r]){if(!t[r]){var u=\"function\"==typeof require&&require;if(!s&&u)return u(r,!0);if(a)return a(r,!0);var l=new Error(\"Cannot find module '\"+r+\"'\");throw l.code=\"MODULE_NOT_FOUND\",l}var c=n[r]={exports:{}};t[r][0].call(c.exports,function(e){return i(t[r][1][e]||e)},c,c.exports,e,t,n,o)}return n[r].exports}for(var a=\"function\"==typeof require&&require,r=0;r<o.length;r++)i(o[r]);return i}return e}()({1:[function(e,t,n){\"use strict\";var o=e(\"@segment/analytics.js-core\"),i=e(\"@ndhoule/each\");t.exports=function(e){i(function(e){o.use(e)},e);return o}},{\"@ndhoule/each\":32,\"@segment/analytics.js-core\":64}],2:[function(e,t,n){(function(n){\"use strict\";var o=e(\"@segment/send-json\");t.exports=function(){for(var e=!1,t=!1,i=/.*\\/analytics\\.js\\/v1\\/([^\\/]*)(\\/platform)?\\/analytics.*/,a=n.document.getElementsByTagName(\"script\"),r=0;r<a.length;r++){var s=a[r].src,u=i.exec(s);if(u){e=!0;var l=u[1];if(\"38SQn7092M3aZn4AQWYwksOwBhOa0V2J\"===l){t=!0;break}}}if(e&&!t){var c={\"Content-Type\":\"text/plain\"},d={userId:\"segment\",event:\"Invalid WriteKey Loaded\",properties:{hostname:n.window.location.hostname,href:n.window.location.href,loadedKey:\"38SQn7092M3aZn4AQWYwksOwBhOa0V2J\",requestedKey:l,userAgent:n.navigator.userAgent,bailed:!0},writeKey:\"fkTyC7tQ4NxYVrfdUOVENwWgoJe8hXKA\"};o(\"https://api.segment.io/v1/t\",d,c,function(){});return!0}return!1}}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{})},{\"@segment/send-json\":1175}],3:[function(e,t,n){(function(t){\"use strict\";if(!e(\"./bot\")()){var n=e(\"./integrations\"),o=e(\"./analytics\")(n),i=e(\"extend\"),a=t.analytics||[],r=[],s=[],u=a&&a.SNIPPET_VERSION?parseFloat(a.SNIPPET_VERSION,10):0;o._VERSIONS={\"core\":\"3.11.2\",\"cdn\":\"ajs-renderer 2.8.0 (analytics.js-private 83dbbc6efda2e3079262754f4bf3d134714d100b)\",\"integrations\":{\"Sentry\":\"3.0.0\",\"Mouseflow\":\"2.2.2\",\"Google Analytics\":\"2.18.2\",\"Segment.io\":\"4.2.2\"}};o.plugins={};i(o.plugins,e(\"@segment/analytics.js-video-plugins/dist\"));var l,c={\"Sentry\":{\"config\":\"https://4ea4899850b544cab4aa4ab406443904@sentry.io/222889\",\"customVersionProperty\":\"\",\"ignoreErrors\":[],\"ignoreUrls\":[],\"includePaths\":[],\"logger\":\"\",\"maxMessageLength\":0,\"release\":\"\",\"serverName\":\"\",\"whitelistUrls\":[]},\"Mouseflow\":{\"apiKey\":\"31314d44-ad1b-4756-8b63-9284fb1ec469\",\"mouseflowHtmlDelay\":0},\"Google Analytics\":{\"anonymizeIp\":true,\"classic\":false,\"contentGroupings\":{},\"dimensions\":{\"userId\":\"dimension1\",\"impersonatorUserId\":\"dimension3\",\"labelId\":\"dimension2\",\"labelType\":\"dimension4\",\"businessType\":\"dimension6\",\"subaccountId\":\"dimension5\",\"numberoftags\":\"dimension7\"},\"domain\":\"\",\"doubleClick\":false,\"enableServerIdentify\":false,\"enhancedEcommerce\":false,\"enhancedLinkAttribution\":true,\"identifyCategory\":\"\",\"identifyEventName\":\"\",\"ignoredReferrers\":\"\",\"includeSearch\":true,\"metrics\":{},\"mobileTrackingId\":\"\",\"nameTracker\":false,\"nonInteraction\":true,\"optimize\":\"\",\"protocolMappings\":{},\"reportUncaughtExceptions\":false,\"sampleRate\":100,\"sendUserId\":false,\"setAllMappedProps\":true,\"siteSpeedSampleRate\":1,\"trackCategorizedPages\":true,\"trackNamedPages\":true,\"trackingId\":\"UA-127165-11\",\"useGoogleAmpClientId\":false},\"Segment.io\":{\"apiKey\":\"38SQn7092M3aZn4AQWYwksOwBhOa0V2J\",\"unbundledIntegrations\":[],\"addBundledMetadata\":true,\"retryQueue\":false}};if(a._loadOptions&&a._loadOptions.integrations){var d=a._loadOptions.integrations;l={};var p;for(p in d)if(d.hasOwnProperty(p)){l[p]=Boolean(d[p]);\"object\"==typeof c[p]&&\"object\"==typeof d[p]&&i(!0,c[p],d[p])}}var f=e(\"./middlewares\");f.source.forEach(function(e){r.push(e)});f.integration.forEach(function(e){s.push(e)});for(var h;r&&r.length>0;){h=r.shift();\"function\"==typeof h&&o.addSourceMiddleware(h)}for(var m;s&&s.length>0;){m=s.shift();\"function\"==typeof m&&o.addIntegrationMiddleware(m)}o.initialize(c,{initialPageview:0===u,plan:{\"track\":{\"__default\":{\"enabled\":true,\"integrations\":{}}},\"identify\":{\"__default\":{\"enabled\":true},\"businessType\":{\"enabled\":true},\"impersonatorUserId\":{\"enabled\":true},\"labelId\":{\"enabled\":true},\"labelType\":{\"enabled\":true},\"subaccountId\":{\"enabled\":true},\"userId\":{\"enabled\":true}},\"group\":{\"__default\":{\"enabled\":true}}},integrations:l,metrics:{\"sampleRate\":0.1},user:{},group:{},middlewareSettings:{}});for(;a&&a.length>0;){var b=a.shift(),g=b.shift();\"function\"==typeof o[g]&&o[g].apply(o,b)}a=null;t.analytics=o}}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{})},{\"./analytics\":1,\"./bot\":2,\"./integrations\":4,\"./middlewares\":5,\"@segment/analytics.js-video-plugins/dist\":1149,\"extend\":1263}],4:[function(e,t,n){\"use strict\";t.exports={\"@asayerio/analytics.js-integration-asayer\":e(\"@asayerio/analytics.js-integration-asayer\"),\"@auryc/analytics.js-integration-auryc\":e(\"@auryc/analytics.js-integration-auryc\"),\"@convertflow/analytics.js-integration-convertflow\":e(\"@convertflow/analytics.js-integration-convertflow\"),\"@owneriq/analytics.js-integration-owneriq-pixel\":e(\"@owneriq/analytics.js-integration-owneriq-pixel\"),\"@profitwell/analytics.js-integration\":e(\"@profitwell/analytics.js-integration\"),\"adlearn-open-platform\":e(\"@segment/analytics.js-integration-adlearn-open-platform\"),\"adobe-analytics\":e(\"@segment/analytics.js-integration-adobe-analytics\"),\"adobe-target\":e(\"@segment/analytics.js-integration-adobe-target\"),\"adometry\":e(\"@segment/analytics.js-integration-adometry\"),\"adroll\":e(\"@segment/analytics.js-integration-adroll\"),\"adwords\":e(\"@segment/analytics.js-integration-adwords\"),\"alexa\":e(\"@segment/analytics.js-integration-alexa\"),\"ambassador\":e(\"@segment/analytics.js-integration-ambassador\"),\"amplitude\":e(\"@segment/analytics.js-integration-amplitude\"),\"appboy\":e(\"@segment/analytics.js-integration-appboy\"),\"appboy-ibm\":e(\"@segment/analytics.js-integration-appboy-ibm\"),\"appcues\":e(\"@segment/analytics.js-integration-appcues\"),\"appnexus\":e(\"@segment/analytics.js-integration-appnexus\"),\"aptrinsic\":e(\"@segment/analytics.js-integration-aptrinsic\"),\"atatus\":e(\"@segment/analytics.js-integration-atatus\"),\"autosend\":e(\"@segment/analytics.js-integration-autosend\"),\"awesm\":e(\"@segment/analytics.js-integration-awesm\"),\"bing-ads\":e(\"@segment/analytics.js-integration-bing-ads\"),\"blueshift\":e(\"@segment/analytics.js-integration-blueshift\"),\"boomtrain\":e(\"@segment/analytics.js-integration-boomtrain\"),\"bronto\":e(\"@segment/analytics.js-integration-bronto\"),\"bugherd\":e(\"@segment/analytics.js-integration-bugherd\"),\"bugsnag\":e(\"@segment/analytics.js-integration-bugsnag\"),\"castle\":e(\"@segment/analytics.js-integration-castle\"),\"chameleon\":e(\"@segment/analytics.js-integration-chameleon\"),\"chartbeat\":e(\"@segment/analytics.js-integration-chartbeat\"),\"clevertap\":e(\"@segment/analytics.js-integration-clevertap\"),\"clicky\":e(\"@segment/analytics.js-integration-clicky\"),\"comscore\":e(\"@segment/analytics.js-integration-comscore\"),\"convertro\":e(\"@segment/analytics.js-integration-convertro\"),\"crazy-egg\":e(\"@segment/analytics.js-integration-crazy-egg\"),\"criteo\":e(\"@segment/analytics.js-integration-criteo\"),\"curebit\":e(\"@segment/analytics.js-integration-curebit\"),\"customerio\":e(\"@segment/analytics.js-integration-customerio\"),\"cxense\":e(\"@segment/analytics.js-integration-cxense\"),\"doubleclick-floodlight\":e(\"@segment/analytics.js-integration-doubleclick-floodlight\"),\"drift\":e(\"@segment/analytics.js-integration-drift\"),\"drip\":e(\"@segment/analytics.js-integration-drip\"),\"elevio\":e(\"@segment/analytics.js-integration-elevio\"),\"eloqua\":e(\"@segment/analytics.js-integration-eloqua\"),\"email-aptitude\":e(\"@segment/analytics.js-integration-email-aptitude\"),\"errorception\":e(\"@segment/analytics.js-integration-errorception\"),\"evergage\":e(\"@segment/analytics.js-integration-evergage\"),\"extole\":e(\"@segment/analytics.js-integration-extole\"),\"facebook-conversion-tracking\":e(\"@segment/analytics.js-integration-facebook-conversion-tracking\"),\"facebook-custom-audiences\":e(\"@segment/analytics.js-integration-facebook-custom-audiences\"),\"facebook-pixel\":e(\"@segment/analytics.js-integration-facebook-pixel\"),\"foxmetrics\":e(\"@segment/analytics.js-integration-foxmetrics\"),\"friendbuy\":e(\"@segment/analytics.js-integration-friendbuy\"),\"fullstory\":e(\"@segment/analytics.js-integration-fullstory\"),\"gauges\":e(\"@segment/analytics.js-integration-gauges\"),\"get-satisfaction\":e(\"@segment/analytics.js-integration-get-satisfaction\"),\"google-adwords-new\":e(\"@segment/analytics.js-integration-google-adwords-new\"),\"google-analytics\":e(\"@segment/analytics.js-integration-google-analytics\"),\"google-tag-manager\":e(\"@segment/analytics.js-integration-google-tag-manager\"),\"gosquared\":e(\"@segment/analytics.js-integration-gosquared\"),\"heap\":e(\"@segment/analytics.js-integration-heap\"),\"hellobar\":e(\"@segment/analytics.js-integration-hellobar\"),\"hindsight\":e(\"@segment/analytics.js-integration-hindsight\"),\"hittail\":e(\"@segment/analytics.js-integration-hittail\"),\"hotjar\":e(\"@segment/analytics.js-integration-hotjar\"),\"hubspot\":e(\"@segment/analytics.js-integration-hubspot\"),\"improvely\":e(\"@segment/analytics.js-integration-improvely\"),\"inspectlet\":e(\"@segment/analytics.js-integration-inspectlet\"),\"intercom\":e(\"@segment/analytics.js-integration-intercom\"),\"keen-io\":e(\"@segment/analytics.js-integration-keen-io\"),\"kenshoo\":e(\"@segment/analytics.js-integration-kenshoo\"),\"kenshoo-infinity\":e(\"@segment/analytics.js-integration-kenshoo-infinity\"),\"kissmetrics\":e(\"@segment/analytics.js-integration-kissmetrics\"),\"klaviyo\":e(\"@segment/analytics.js-integration-klaviyo\"),\"linkedin-insight-tag\":e(\"@segment/analytics.js-integration-linkedin-insight-tag\"),\"livechat\":e(\"@segment/analytics.js-integration-livechat\"),\"localytics\":e(\"@segment/analytics.js-integration-localytics\"),\"lucky-orange\":e(\"@segment/analytics.js-integration-lucky-orange\"),\"lytics\":e(\"@segment/analytics.js-integration-lytics\"),\"madkudu\":e(\"@segment/analytics.js-integration-madkudu\"),\"marketo\":e(\"@segment/analytics.js-integration-marketo\"),\"marketo-v2\":e(\"@segment/analytics.js-integration-marketo-v2\"),\"mediamath\":e(\"@segment/analytics.js-integration-mediamath\"),\"mixpanel\":e(\"@segment/analytics.js-integration-mixpanel\"),\"moengage\":e(\"@segment/analytics.js-integration-moengage\"),\"mojn\":e(\"@segment/analytics.js-integration-mojn\"),\"monetate\":e(\"@segment/analytics.js-integration-monetate\"),\"mouseflow\":e(\"@segment/analytics.js-integration-mouseflow\"),\"mousestats\":e(\"@segment/analytics.js-integration-mousestats\"),\"nanigans\":e(\"@segment/analytics.js-integration-nanigans\"),\"navilytics\":e(\"@segment/analytics.js-integration-navilytics\"),\"nielsen-dcr\":e(\"@segment/analytics.js-integration-nielsen-dcr\"),\"nielsen-dtvr\":e(\"@segment/analytics.js-integration-nielsen-dtvr\"),\"nudgespot\":e(\"@segment/analytics.js-integration-nudgespot\"),\"olark\":e(\"@segment/analytics.js-integration-olark\"),\"omniture\":e(\"@segment/analytics.js-integration-omniture\"),\"onespot\":e(\"@segment/analytics.js-integration-onespot\"),\"optimizely\":e(\"@segment/analytics.js-integration-optimizely\"),\"outbound\":e(\"@segment/analytics.js-integration-outbound\"),\"pardot\":e(\"@segment/analytics.js-integration-pardot\"),\"parsely\":e(\"@segment/analytics.js-integration-parsely\"),\"pendo\":e(\"@segment/analytics.js-integration-pendo\"),\"perfect-audience\":e(\"@segment/analytics.js-integration-perfect-audience\"),\"perimeterx\":e(\"@segment/analytics.js-integration-perimeterx\"),\"personas\":e(\"@segment/analytics.js-integration-personas\"),\"pingdom\":e(\"@segment/analytics.js-integration-pingdom\"),\"pinterest-tag\":e(\"@segment/analytics.js-integration-pinterest-tag\"),\"piwik\":e(\"@segment/analytics.js-integration-piwik\"),\"qualaroo\":e(\"@segment/analytics.js-integration-qualaroo\"),\"quantcast\":e(\"@segment/analytics.js-integration-quantcast\"),\"quanticmind\":e(\"@segment/analytics.js-integration-quanticmind\"),\"quora-conversion-pixel\":e(\"@segment/analytics.js-integration-quora-conversion-pixel\"),\"ramen\":e(\"@segment/analytics.js-integration-ramen\"),\"rockerbox\":e(\"@segment/analytics.js-integration-rockerbox\"),\"rocket-fuel\":e(\"@segment/analytics.js-integration-rocket-fuel\"),\"rollbar\":e(\"@segment/analytics.js-integration-rollbar\"),\"route\":e(\"@segment/analytics.js-integration-route\"),\"saasquatch\":e(\"@segment/analytics.js-integration-saasquatch\"),\"salesforce-dmp\":e(\"@segment/analytics.js-integration-salesforce-dmp\"),\"salesforce-live-agent\":e(\"@segment/analytics.js-integration-salesforce-live-agent\"),\"satismeter\":e(\"@segment/analytics.js-integration-satismeter\"),\"segmentio\":e(\"@segment/analytics.js-integration-segmentio\"),\"sentry\":e(\"@segment/analytics.js-integration-sentry\"),\"shareasale\":e(\"@segment/analytics.js-integration-shareasale\"),\"simplereach\":e(\"@segment/analytics.js-integration-simplereach\"),\"simplifi\":e(\"@segment/analytics.js-integration-simplifi\"),\"snapengage\":e(\"@segment/analytics.js-integration-snapengage\"),\"spinnakr\":e(\"@segment/analytics.js-integration-spinnakr\"),\"steelhouse\":e(\"@segment/analytics.js-integration-steelhouse\"),\"stripe-radar\":e(\"@segment/analytics.js-integration-stripe-radar\"),\"supporthero\":e(\"@segment/analytics.js-integration-supporthero\"),\"tag-injector\":e(\"@segment/analytics.js-integration-tag-injector\"),\"taplytics\":e(\"@segment/analytics.js-integration-taplytics\"),\"tapstream\":e(\"@segment/analytics.js-integration-tapstream\"),\"tell-apart\":e(\"@segment/analytics.js-integration-tell-apart\"),\"totango\":e(\"@segment/analytics.js-integration-totango\"),\"trackjs\":e(\"@segment/analytics.js-integration-trackjs\"),\"tvsquared\":e(\"@segment/analytics.js-integration-tvsquared\"),\"twitter-ads\":e(\"@segment/analytics.js-integration-twitter-ads\"),\"userlike\":e(\"@segment/analytics.js-integration-userlike\"),\"uservoice\":e(\"@segment/analytics.js-integration-uservoice\"),\"vero\":e(\"@segment/analytics.js-integration-vero\"),\"visual-tagger\":e(\"@segment/analytics.js-integration-visual-tagger\"),\"visual-website-optimizer\":e(\"@segment/analytics.js-integration-visual-website-optimizer\"),\"webengage\":e(\"@segment/analytics.js-integration-webengage\"),\"wigzo\":e(\"@segment/analytics.js-integration-wigzo\"),\"wishpond\":e(\"@segment/analytics.js-integration-wishpond\"),\"woopra\":e(\"@segment/analytics.js-integration-woopra\"),\"wootric\":e(\"@segment/analytics.js-integration-wootric\"),\"yandex-metrica\":e(\"@segment/analytics.js-integration-yandex-metrica\"),\"yellowhammer\":e(\"@segment/analytics.js-integration-yellowhammer\"),\"youbora\":e(\"@segment/analytics.js-integration-youbora\"),\"zopim\":e(\"@segment/analytics.js-integration-zopim\"),\"@segment/mme-e2e-direct-destination\":e(\"@segment/mme-e2e-direct-destination\"),\"@smartlook/analytics.js-integration-smartlook\":e(\"@smartlook/analytics.js-integration-smartlook\"),\"@survicate/analytics.js-integration-survicate\":e(\"@survicate/analytics.js-integration-survicate\"),\"@userpilot/analytics.js-integration-userpilot\":e(\"@userpilot/analytics.js-integration-userpilot\"),\"@walkme/analytics.js-integration-walkme\":e(\"@walkme/analytics.js-integration-walkme\"),\"analytics.js-integration-bouncex-test\":e(\"analytics.js-integration-bouncex-test\"),\"analytics.js-integration-crisp\":e(\"analytics.js-integration-crisp\"),\"listrak\":e(\"listrak\")}},{\"@asayerio/analytics.js-integration-asayer\":6,\"@auryc/analytics.js-integration-auryc\":13,\"@convertflow/analytics.js-integration-convertflow\":20,\"@owneriq/analytics.js-integration-owneriq-pixel\":43,\"@profitwell/analytics.js-integration\":50,\"@segment/analytics.js-integration-adlearn-open-platform\":74,\"@segment/analytics.js-integration-adobe-analytics\":81,\"@segment/analytics.js-integration-adobe-target\":88,\"@segment/analytics.js-integration-adometry\":95,\"@segment/analytics.js-integration-adroll\":102,\"@segment/analytics.js-integration-adwords\":109,\"@segment/analytics.js-integration-alexa\":116,\"@segment/analytics.js-integration-ambassador\":123,\"@segment/analytics.js-integration-amplitude\":130,\"@segment/analytics.js-integration-appboy\":144,\"@segment/analytics.js-integration-appboy-ibm\":137,\"@segment/analytics.js-integration-appcues\":151,\"@segment/analytics.js-integration-appnexus\":160,\"@segment/analytics.js-integration-aptrinsic\":167,\"@segment/analytics.js-integration-atatus\":174,\"@segment/analytics.js-integration-autosend\":183,\"@segment/analytics.js-integration-awesm\":190,\"@segment/analytics.js-integration-bing-ads\":197,\"@segment/analytics.js-integration-blueshift\":204,\"@segment/analytics.js-integration-boomtrain\":211,\"@segment/analytics.js-integration-bronto\":218,\"@segment/analytics.js-integration-bugherd\":225,\"@segment/analytics.js-integration-bugsnag\":232,\"@segment/analytics.js-integration-castle\":241,\"@segment/analytics.js-integration-chameleon\":248,\"@segment/analytics.js-integration-chartbeat\":255,\"@segment/analytics.js-integration-clevertap\":262,\"@segment/analytics.js-integration-clicky\":269,\"@segment/analytics.js-integration-comscore\":278,\"@segment/analytics.js-integration-convertro\":285,\"@segment/analytics.js-integration-crazy-egg\":292,\"@segment/analytics.js-integration-criteo\":299,\"@segment/analytics.js-integration-curebit\":306,\"@segment/analytics.js-integration-customerio\":313,\"@segment/analytics.js-integration-cxense\":320,\"@segment/analytics.js-integration-doubleclick-floodlight\":327,\"@segment/analytics.js-integration-drift\":334,\"@segment/analytics.js-integration-drip\":341,\"@segment/analytics.js-integration-elevio\":350,\"@segment/analytics.js-integration-eloqua\":359,\"@segment/analytics.js-integration-email-aptitude\":366,\"@segment/analytics.js-integration-errorception\":373,\"@segment/analytics.js-integration-evergage\":382,\"@segment/analytics.js-integration-extole\":389,\"@segment/analytics.js-integration-facebook-conversion-tracking\":396,\"@segment/analytics.js-integration-facebook-custom-audiences\":403,\"@segment/analytics.js-integration-facebook-pixel\":410,\"@segment/analytics.js-integration-foxmetrics\":419,\"@segment/analytics.js-integration-friendbuy\":426,\"@segment/analytics.js-integration-fullstory\":435,\"@segment/analytics.js-integration-gauges\":443,\"@segment/analytics.js-integration-get-satisfaction\":450,\"@segment/analytics.js-integration-google-adwords-new\":457,\"@segment/analytics.js-integration-google-analytics\":464,\"@segment/analytics.js-integration-google-tag-manager\":471,\"@segment/analytics.js-integration-gosquared\":478,\"@segment/analytics.js-integration-heap\":485,\"@segment/analytics.js-integration-hellobar\":492,\"@segment/analytics.js-integration-hindsight\":499,\"@segment/analytics.js-integration-hittail\":506,\"@segment/analytics.js-integration-hotjar\":513,\"@segment/analytics.js-integration-hubspot\":520,\"@segment/analytics.js-integration-improvely\":527,\"@segment/analytics.js-integration-inspectlet\":534,\"@segment/analytics.js-integration-intercom\":541,\"@segment/analytics.js-integration-keen-io\":548,\"@segment/analytics.js-integration-kenshoo\":562,\"@segment/analytics.js-integration-kenshoo-infinity\":555,\"@segment/analytics.js-integration-kissmetrics\":569,\"@segment/analytics.js-integration-klaviyo\":576,\"@segment/analytics.js-integration-linkedin-insight-tag\":583,\"@segment/analytics.js-integration-livechat\":590,\"@segment/analytics.js-integration-localytics\":597,\"@segment/analytics.js-integration-lucky-orange\":604,\"@segment/analytics.js-integration-lytics\":611,\"@segment/analytics.js-integration-madkudu\":618,\"@segment/analytics.js-integration-marketo\":632,\"@segment/analytics.js-integration-marketo-v2\":625,\"@segment/analytics.js-integration-mediamath\":639,\"@segment/analytics.js-integration-mixpanel\":646,\"@segment/analytics.js-integration-moengage\":653,\"@segment/analytics.js-integration-mojn\":660,\"@segment/analytics.js-integration-monetate\":667,\"@segment/analytics.js-integration-mouseflow\":674,\"@segment/analytics.js-integration-mousestats\":681,\"@segment/analytics.js-integration-nanigans\":688,\"@segment/analytics.js-integration-navilytics\":697,\"@segment/analytics.js-integration-nielsen-dcr\":704,\"@segment/analytics.js-integration-nielsen-dtvr\":711,\"@segment/analytics.js-integration-nudgespot\":718,\"@segment/analytics.js-integration-olark\":725,\"@segment/analytics.js-integration-omniture\":732,\"@segment/analytics.js-integration-onespot\":739,\"@segment/analytics.js-integration-optimizely\":746,\"@segment/analytics.js-integration-outbound\":755,\"@segment/analytics.js-integration-pardot\":764,\"@segment/analytics.js-integration-parsely\":773,\"@segment/analytics.js-integration-pendo\":782,\"@segment/analytics.js-integration-perfect-audience\":789,\"@segment/analytics.js-integration-perimeterx\":796,\"@segment/analytics.js-integration-personas\":803,\"@segment/analytics.js-integration-pingdom\":810,\"@segment/analytics.js-integration-pinterest-tag\":817,\"@segment/analytics.js-integration-piwik\":824,\"@segment/analytics.js-integration-qualaroo\":831,\"@segment/analytics.js-integration-quantcast\":838,\"@segment/analytics.js-integration-quanticmind\":845,\"@segment/analytics.js-integration-quora-conversion-pixel\":852,\"@segment/analytics.js-integration-ramen\":859,\"@segment/analytics.js-integration-rockerbox\":866,\"@segment/analytics.js-integration-rocket-fuel\":873,\"@segment/analytics.js-integration-rollbar\":880,\"@segment/analytics.js-integration-route\":887,\"@segment/analytics.js-integration-saasquatch\":894,\"@segment/analytics.js-integration-salesforce-dmp\":901,\"@segment/analytics.js-integration-salesforce-live-agent\":908,\"@segment/analytics.js-integration-satismeter\":915,\"@segment/analytics.js-integration-segmentio\":922,\"@segment/analytics.js-integration-sentry\":931,\"@segment/analytics.js-integration-shareasale\":938,\"@segment/analytics.js-integration-simplereach\":945,\"@segment/analytics.js-integration-simplifi\":952,\"@segment/analytics.js-integration-snapengage\":959,\"@segment/analytics.js-integration-spinnakr\":966,\"@segment/analytics.js-integration-steelhouse\":973,\"@segment/analytics.js-integration-stripe-radar\":980,\"@segment/analytics.js-integration-supporthero\":987,\"@segment/analytics.js-integration-tag-injector\":994,\"@segment/analytics.js-integration-taplytics\":1001,\"@segment/analytics.js-integration-tapstream\":1008,\"@segment/analytics.js-integration-tell-apart\":1015,\"@segment/analytics.js-integration-totango\":1022,\"@segment/analytics.js-integration-trackjs\":1029,\"@segment/analytics.js-integration-tvsquared\":1036,\"@segment/analytics.js-integration-twitter-ads\":1043,\"@segment/analytics.js-integration-userlike\":1050,\"@segment/analytics.js-integration-uservoice\":1057,\"@segment/analytics.js-integration-vero\":1064,\"@segment/analytics.js-integration-visual-tagger\":1071,\"@segment/analytics.js-integration-visual-website-optimizer\":1072,\"@segment/analytics.js-integration-webengage\":1079,\"@segment/analytics.js-integration-wigzo\":1086,\"@segment/analytics.js-integration-wishpond\":1093,\"@segment/analytics.js-integration-woopra\":1100,\"@segment/analytics.js-integration-wootric\":1107,\"@segment/analytics.js-integration-yandex-metrica\":1114,\"@segment/analytics.js-integration-yellowhammer\":1121,\"@segment/analytics.js-integration-youbora\":1128,\"@segment/analytics.js-integration-zopim\":1135,\"@segment/mme-e2e-direct-destination\":1172,\"@smartlook/analytics.js-integration-smartlook\":1186,\"@survicate/analytics.js-integration-survicate\":1193,\"@userpilot/analytics.js-integration-userpilot\":1200,\"@walkme/analytics.js-integration-walkme\":1209,\"analytics.js-integration-bouncex-test\":1217,\"analytics.js-integration-crisp\":1224,\"listrak\":1288}],5:[function(e,t,n){\"use strict\";var o={source:[e(\"@segment/analytics.js-middleware-braze-deduplicate\")].map(function(e){return e.__esModule&&e[\"default\"]?e[\"default\"]:e}),integration:[]};;t.exports=o},{\"@segment/ajs-middleware-routing\":58,\"@segment/analytics.js-middleware-braze-deduplicate\":1148}],6:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":7}],7:[function(e,t,n){;\"use strict\";function o(e){function t(n){if(n&&n.addIntegration)return n.addIntegration(t);this.debug=a(\"analytics:integration:\"+u(e));var o={};s(!0,o,n);this.options=r(o||{},this.defaults);this._queue=[];this.once(\"ready\",i(this,this.flush));t.emit(\"construct\",this);this.ready=i(this,this.ready);this._wrapInitialize();this._wrapPage();this._wrapTrack()}t.prototype.defaults={};t.prototype.globals=[];t.prototype.templates={};t.prototype.name=e;s(t,c);s(t.prototype,l);return t}var i=e(\"component-bind\"),a=e(\"debug\"),r=e(\"@ndhoule/defaults\"),s=e(\"extend\"),u=e(\"slug-component\"),l=e(\"./protos\"),c=e(\"./statics\");t.exports=o;},{\"./protos\":8,\"./statics\":9,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":11,\"extend\":10,\"slug-component\":1356}],8:[function(e,t,n){;\"use strict\";function o(e){return m.array(e)?p(i,e)?\"mixed\":\"array\":m.object(e)?\"map\":\"unknown\"}function i(e){return!!m.object(e)&&(!!m.string(e.key)&&!!w.call(e,\"value\"))}function a(e,t){t=t||function(){};var n=new Image;n.onerror=r(t,\"failed to load pixel\",n);n.onload=function(){t()};n.src=e.src;n.width=1;n.height=1;return n}function r(e,t,n){return function(o){o=o||window.event;var i=new Error(t);i.event=o;i.source=n;e(i)}}function s(e,t){return h(function(e,n,o){e[o]=n.replace(/\\{\\{\\ *(\\w+)\\ *\\}\\}/g,function(e,n){return t[n]});return e},{},e.attrs)}var u=e(\"component-emitter\"),l=e(\"@ndhoule/after\"),c=e(\"@ndhoule/each\"),d=e(\"analytics-events\"),p=e(\"@ndhoule/every\"),f=e(\"@segment/fmt\"),h=e(\"@ndhoule/foldl\"),m=e(\"is\"),b=e(\"load-iframe\"),g=e(\"@segment/load-script\"),y=e(\"next-tick\"),v=e(\"to-no-case\"),w=Object.prototype.hasOwnProperty,x=function(){},k=window.onerror;u(n);n.initialize=function(){var e=this.ready;y(e)};n.loaded=function(){return!1};n.page=function(e){};n.track=function(e){};n.map=function(e,t){var n=v(t),i=o(e);return\"unknown\"===i?[]:h(function(e,t,o){var a,r;if(\"map\"===i){a=o;r=t}if(\"array\"===i){a=t;r=t}if(\"mixed\"===i){a=t.key;r=t.value}v(a)===n&&e.push(r);return e},[],e)};n.invoke=function(e){if(this[e]){var t=Array.prototype.slice.call(arguments,1);if(!this._ready)return this.queue(e,t);this.debug(\"%s with %o\",e,t);return this[e].apply(this,t)}};n.queue=function(e,t){this._queue.push({method:e,args:t})};n.flush=function(){this._ready=!0;var e=this;c(function(t){e[t.method].apply(e,t.args)},this._queue);this._queue.length=0};n.reset=function(){for(var e=0;e<this.globals.length;e++)window[this.globals[e]]=undefined;window.onerror=k;window.onload=null};n.load=function(e,t,n){if(\"function\"==typeof e){n=e;t=null;e=null}if(e&&\"object\"==typeof e){n=t;t=e;e=null}if(\"function\"==typeof t){n=t;t=null}e=e||\"library\";t=t||{};t=this.locals(t);var o=this.templates[e];if(!o)throw new Error(f('template \"%s\" not defined.',e));var i=s(o,t);n=n||x;var r,u=this;switch(o.type){case\"img\":i.width=1;i.height=1;r=a(i,n);break;case\"script\":r=g(i,function(e){if(!e)return n();u.debug('error loading \"%s\" error=\"%s\"',u.name,e)});delete i.src;c(function(e,t){r.setAttribute(t,e)},i);break;case\"iframe\":r=b(i,n)}return r};n.locals=function(e){e=e||{};var t=Math.floor((new Date).getTime()/36e5);e.hasOwnProperty(\"cache\")||(e.cache=t);c(function(t,n){e.hasOwnProperty(n)||(e[n]=t)},this.options);return e};n.ready=function(){this.emit(\"ready\")};n._wrapInitialize=function(){var e=this.initialize;this.initialize=function(){this.debug(\"initialize\");this._initialized=!0;var t=e.apply(this,arguments);this.emit(\"initialize\");return t}};n._wrapPage=function(){if(this._assumesPageview)return this.page=l(2,this.page)};n._wrapTrack=function(){var e=this.track;this.track=function(t){var n,o,i=t.event();for(var a in d)if(w.call(d,a)){var r=d[a];if(!this[a])continue;if(!r.test(i))continue;o=this[a].apply(this,arguments);n=!0;break}n||(o=e.apply(this,arguments));return o}};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],9:[function(e,t,n){;\"use strict\";function o(e){e=e.replace(' src=\"',' data-src=\"');var t=a(e),n={};r(function(t){var o=\"data-src\"===t.name?\"src\":t.name;s(t.name+\"=\",e)&&(n[o]=t.value)},t.attributes);return{type:t.tagName.toLowerCase(),attrs:n}}var i=e(\"component-emitter\"),a=e(\"domify\"),r=e(\"@ndhoule/each\"),s=e(\"@ndhoule/includes\");i(n);n.option=function(e,t){this.prototype.defaults[e]=t;return this}\n;n.mapping=function(e){this.option(e,[]);this.prototype[e]=function(t){return this.map(this.options[e],t)};return this};n.global=function(e){this.prototype.globals.push(e);return this};n.assumesPageview=function(){this.prototype._assumesPageview=!0;return this};n.readyOnLoad=function(){this.prototype._readyOnLoad=!0;return this};n.readyOnInitialize=function(){this.prototype._readyOnInitialize=!0;return this};n.tag=function(e,t){if(null==t){t=e;e=\"library\"}this.prototype.templates[e]=o(t);return this};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261}],10:[function(e,t,n){;\"use strict\";var o=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===i.call(e)},r=function(e){if(!e||\"[object Object]\"!==i.call(e))return!1;var t=o.call(e,\"constructor\"),n=e.constructor&&e.constructor.prototype&&o.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!t&&!n)return!1;var a;for(a in e);return void 0===a||o.call(e,a)};t.exports=function s(){var e,t,n,o,i,u,l=arguments[0],c=1,d=arguments.length,p=!1;if(\"boolean\"==typeof l){p=l;l=arguments[1]||{};c=2}(null==l||\"object\"!=typeof l&&\"function\"!=typeof l)&&(l={});for(;c<d;++c){e=arguments[c];if(null!=e)for(t in e){n=l[t];o=e[t];if(l!==o)if(p&&o&&(r(o)||(i=a(o)))){if(i){i=!1;u=n&&a(n)?n:[]}else u=n&&r(n)?n:{};l[t]=s(p,u,o)}else void 0!==o&&(l[t]=o)}}return l};},{}],11:[function(e,t,n){(function(o){function i(){return!(\"undefined\"==typeof window||!window.process||\"renderer\"!==window.process.type)||(\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))}function a(e){var t=this.useColors;e[0]=(t?\"%c\":\"\")+this.namespace+(t?\" %c\":\" \")+e[0]+(t?\"%c \":\" \")+\"+\"+n.humanize(this.diff);if(t){var o=\"color: \"+this.color;e.splice(1,0,o,\"color: inherit\");var i=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){if(\"%%\"!==e){i++;\"%c\"===e&&(a=i)}});e.splice(a,0,o)}}function r(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?n.storage.removeItem(\"debug\"):n.storage.debug=e}catch(t){}}function u(){var e;try{e=n.storage.debug}catch(t){}!e&&void 0!==o&&\"env\"in o&&(e=o.env.DEBUG);return e}n=t.exports=e(\"./debug\");n.log=r;n.formatArgs=a;n.save=s;n.load=u;n.useColors=i;n.storage=\"undefined\"!=typeof chrome&&\"undefined\"!=typeof chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}();n.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"];n.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}};n.enable(u())}).call(this,e(\"_process\"))},{\"./debug\":12,\"_process\":1232}],12:[function(e,t,n){function o(e){var t,o=0;for(t in e){o=(o<<5)-o+e.charCodeAt(t);o|=0}return n.colors[Math.abs(o)%n.colors.length]}function i(e){function t(){if(t.enabled){var e=t,o=+new Date,i=o-(l||o);e.diff=i;e.prev=l;e.curr=o;l=o;for(var a=new Array(arguments.length),r=0;r<a.length;r++)a[r]=arguments[r];a[0]=n.coerce(a[0]);\"string\"!=typeof a[0]&&a.unshift(\"%O\");var s=0;a[0]=a[0].replace(/%([a-zA-Z%])/g,function(t,o){if(\"%%\"===t)return t;s++;var i=n.formatters[o];if(\"function\"==typeof i){var r=a[s];t=i.call(e,r);a.splice(s,1);s--}return t});n.formatArgs.call(e,a);(t.log||n.log||console.log.bind(console)).apply(e,a)}}t.namespace=e;t.enabled=n.enabled(e);t.useColors=n.useColors();t.color=o(e);\"function\"==typeof n.init&&n.init(t);return t}function a(e){n.save(e);n.names=[];n.skips=[];for(var t=(\"string\"==typeof e?e:\"\").split(/[\\s,]+/),o=t.length,i=0;i<o;i++)if(t[i]){e=t[i].replace(/\\*/g,\".*?\");\"-\"===e[0]?n.skips.push(new RegExp(\"^\"+e.substr(1)+\"$\")):n.names.push(new RegExp(\"^\"+e+\"$\"))}}function r(){n.enable(\"\")}function s(e){var t,o;for(t=0,o=n.skips.length;t<o;t++)if(n.skips[t].test(e))return!1;for(t=0,o=n.names.length;t<o;t++)if(n.names[t].test(e))return!0;return!1}function u(e){return e instanceof Error?e.stack||e.message:e}n=t.exports=i.debug=i[\"default\"]=i;n.coerce=u;n.disable=r;n.enable=a;n.enabled=s;n.humanize=e(\"ms\");n.names=[];n.skips=[];n.formatters={};var l},{\"ms\":1313}],13:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":14,\"@segment/to-iso-string\":1177,\"component-each\":1242,\"is\":1280}],14:[function(e,t,n){;\"use strict\";function o(e){function t(n){if(n&&n.addIntegration)return n.addIntegration(t);this.debug=r(\"analytics:integration:\"+l(e));this.options=s(a(n)||{},this.defaults);this._queue=[];this.once(\"ready\",i(this,this.flush));t.emit(\"construct\",this);this.ready=i(this,this.ready);this._wrapInitialize();this._wrapPage();this._wrapTrack()}t.prototype.defaults={};t.prototype.globals=[];t.prototype.templates={};t.prototype.name=e;u(t,d);u(t.prototype,c);return t}var i=e(\"component-bind\"),a=e(\"@ndhoule/clone\"),r=e(\"debug\"),s=e(\"@ndhoule/defaults\"),u=e(\"@ndhoule/extend\"),l=e(\"slug-component\"),c=e(\"./protos\"),d=e(\"./statics\");t.exports=o;},{\"./protos\":15,\"./statics\":16,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":18,\"slug-component\":1356}],15:[function(e,t,n){;\"use strict\";function o(e){return m.array(e)?p(i,e)?\"mixed\":\"array\":m.object(e)?\"map\":\"unknown\"}function i(e){return!!m.object(e)&&(!!m.string(e.key)&&!!w.call(e,\"value\"))}function a(e,t){t=t||function(){};var n=new Image;n.onerror=r(t,\"failed to load pixel\",n);n.onload=function(){t()};n.src=e.src;n.width=1;n.height=1;return n}function r(e,t,n){return function(o){o=o||window.event;var i=new Error(t);i.event=o;i.source=n;e(i)}}function s(e,t){return h(function(e,n,o){e[o]=n.replace(/\\{\\{\\ *(\\w+)\\ *\\}\\}/g,function(e,n){return t[n]});return e},{},e.attrs)}var u=e(\"component-emitter\"),l=e(\"@ndhoule/after\"),c=e(\"@ndhoule/each\"),d=e(\"analytics-events\"),p=e(\"@ndhoule/every\"),f=e(\"@segment/fmt\"),h=e(\"@ndhoule/foldl\"),m=e(\"is\"),b=e(\"load-iframe\"),g=e(\"@segment/load-script\"),y=e(\"next-tick\"),v=e(\"to-no-case\"),w=Object.prototype.hasOwnProperty,x=function(){},k=window.onerror;u(n);n.initialize=function(){var e=this.ready;y(e)};n.loaded=function(){return!1};n.page=function(e){};n.track=function(e){};n.map=function(e,t){var n=v(t),i=o(e);return\"unknown\"===i?[]:h(function(e,t,o){var a,r;if(\"map\"===i){a=o;r=t}if(\"array\"===i){a=t;r=t}if(\"mixed\"===i){a=t.key;r=t.value}v(a)===n&&e.push(r);return e},[],e)};n.invoke=function(e){if(this[e]){var t=Array.prototype.slice.call(arguments,1);if(!this._ready)return this.queue(e,t);this.debug(\"%s with %o\",e,t);return this[e].apply(this,t)}};n.queue=function(e,t){if(\"page\"===e&&this._assumesPageview&&!this._initialized)return this.page.apply(this,t);this._queue.push({method:e,args:t})};n.flush=function(){this._ready=!0;var e=this;c(function(t){e[t.method].apply(e,t.args)},this._queue);this._queue.length=0};n.reset=function(){for(var e=0;e<this.globals.length;e++)window[this.globals[e]]=undefined;window.onerror=k;window.onload=null};n.load=function(e,t,n){if(\"function\"==typeof e){n=e;t=null;e=null}if(e&&\"object\"==typeof e){n=t;t=e;e=null}if(\"function\"==typeof t){n=t;t=null}e=e||\"library\";t=t||{};t=this.locals(t);var o=this.templates[e];if(!o)throw new Error(f('template \"%s\" not defined.',e));var i=s(o,t);n=n||x;var r,u=this;switch(o.type){case\"img\":i.width=1;i.height=1;r=a(i,n);break;case\"script\":r=g(i,function(e){if(!e)return n();u.debug('error loading \"%s\" error=\"%s\"',u.name,e)});delete i.src;c(function(e,t){r.setAttribute(t,e)},i);break;case\"iframe\":r=b(i,n)}return r};n.locals=function(e){e=e||{};var t=Math.floor((new Date).getTime()/36e5);e.hasOwnProperty(\"cache\")||(e.cache=t);c(function(t,n){e.hasOwnProperty(n)||(e[n]=t)},this.options);return e};n.ready=function(){this.emit(\"ready\")};n._wrapInitialize=function(){var e=this.initialize;this.initialize=function(){this.debug(\"initialize\");this._initialized=!0;var t=e.apply(this,arguments);this.emit(\"initialize\");return t};this._assumesPageview&&(this.initialize=l(2,this.initialize))};n._wrapPage=function(){var e=this.page;this.page=function(){return this._assumesPageview&&!this._initialized?this.initialize.apply(this,arguments):e.apply(this,arguments)}};n._wrapTrack=function(){var e=this.track;this.track=function(t){var n,o,i=t.event();for(var a in d)if(w.call(d,a)){var r=d[a];if(!this[a])continue;if(!r.test(i))continue;o=this[a].apply(this,arguments);n=!0;break}n||(o=e.apply(this,arguments));return o}};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":17,\"component-emitter\":1244,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],16:[function(e,t,n){;\"use strict\";function o(e){e=e.replace(' src=\"',' data-src=\"');var t=a(e),n={};r(function(t){var o=\"data-src\"===t.name?\"src\":t.name;s(t.name+\"=\",e)&&(n[o]=t.value)},t.attributes);return{type:t.tagName.toLowerCase(),attrs:n}}var i=e(\"component-emitter\"),a=e(\"domify\"),r=e(\"@ndhoule/each\"),s=e(\"@ndhoule/includes\");i(n);n.option=function(e,t){this.prototype.defaults[e]=t;return this};n.mapping=function(e){this.option(e,[]);this.prototype[e]=function(t){return this.map(this.options[e],t)};return this};n.global=function(e){this.prototype.globals.push(e);return this};n.assumesPageview=function(){this.prototype._assumesPageview=!0;return this};n.readyOnLoad=function(){this.prototype._readyOnLoad=!0;return this};n.readyOnInitialize=function(){this.prototype._readyOnInitialize=!0;return this};n.tag=function(e,t){if(null==t){t=e;e=\"library\"}this.prototype.templates[e]=o(t);return this};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261}],17:[function(e,t,n){;t.exports={promotionViewed:/^[ _]?promotion[ _]?viewed?[ _]?$/i,viewedPromotion:/^[ _]?viewed[ _]?promotion?[ _]?$/i,promotionClicked:/^[ _]?promotion[ _]?clicked?[ _]?$/i,clickedPromotion:/^[ _]?clicked[ _]?promotion?[ _]?$/i,productsSearched:/^[ _]?products[ _]?searched[ _]?$/i,productListViewed:/^[ _]?product[ _]?list[ _]?viewed[ _]?$/i,productListFiltered:/^[ _]?product[ _]?list[ _]?filtered[ _]?$/i,viewedProductCategory:/^[ _]?viewed[ _]?product[ _]?category[ _]?$/i,viewedProductDetails:/^[ _]?viewed[ _]?product[ _]?details?[ _]?$/i,productClicked:/^[ _]?product[ _]?clicked[ _]?$/i,clickedProduct:/^[ _]?clicked[ _]?product[ _]?$/i,productViewed:/^[ _]?product[ _]?viewed[ _]?$/i,viewedProduct:/^[ _]?viewed[ _]?product[ _]?$/i,productAdded:/^[ _]?product[ _]?added[ _]?$/i,addedProduct:/^[ _]?added[ _]?product[ _]?$/i,productRemoved:/^[ _]?product[ _]?removed[ _]?$/i,removedProduct:/^[ _]?removed[ _]?product[ _]?$/i,cartViewed:/^[ _]?cart[ _]?viewed[ _]?$/i,orderStarted:/^[ _]?order[ _]?started[ _]?$/i,startedOrder:/^[ _]?started[ _]?order[ _]?$/i,orderUpdated:/^[ _]?order[ _]?updated[ _]?$/i,updatedOrder:/^[ _]?updated[ _]?order[ _]?$/i,orderCompleted:/^[ _]?order[ _]?completed[ _]?$/i,completedOrder:/^[ _]?completed[ _]?order[ _]?$/i,orderRefunded:/^[ _]?order[ _]?refunded[ _]?$/i,refundedOrder:/^[ _]?refunded[ _]?order[ _]?$/i,orderCancelled:/^[ _]?order[ _]?cancelled[ _]?$/i,paymentInfoAdded:/^[ _]?payment[ _]?info[ _]?added[ _]?$/i,checkoutStarted:/^[ _]?checkout[ _]?started[ _]?$/i,checkoutStepViewed:/^[ _]?checkout[ _]?step[ _]?viewed[ _]?$/i,viewedCheckoutStep:/^[ _]?viewed[ _]?checkout[ _]?step[ _]?$/i,checkoutStepCompleted:/^[ _]?checkout[ _]?step[ _]?completed[ _]?$/i,completedCheckoutStep:/^[ _]?completed[ _]?checkout[ _]?step[ _]?$/i,couponEntered:/^[ _]?coupon[ _]?entered[ _]?$/i,couponApplied:/^[ _]?coupon[ _]?applied[ _]?$/i,couponDenied:/^[ _]?coupon[ _]?denied[ _]?$/i,couponRemoved:/^[ _]?coupon[ _]?removed[ _]?$/i,productAddedToWishlist:/^[ _]?product[ _]?added[ _]?to[ _]?wishlist[ _]?$/i,wishlistProductRemoved:/^[ _]?wishlist[ _]?product[ _]?removed[ _]?$/i,wishlistProductAddedToCart:/^[ _]?wishlist[ _]?product[ _]?added[ _]?to[ _]?cart[ _]?$/i,productShared:/^[ _]?product[ _]?shared[ _]?$/i,cartShared:/^[ _]?cart[ _]?shared[ _]?$/i,productRemoved:/^[ _]?product[ _]?removed[ _]?$/i,applicationInstalled:/^[ _]?application[ _]?installed[ _]?$/i,applicationUpdated:/^[ _]?application[ _]?updated[ _]?$/i,applicationOpened:/^[ _]?application[ _]?opened[ _]?$/i,applicationBackgrounded:/^[ _]?application[ _]?backgrounded[ _]?$/i,applicationUninstalled:/^[ _]?application[ _]?uninstalled[ _]?$/i,installAttributed:/^[ _]?install[ _]?attributed[ _]?$/i,deepLinkOpened:/^[ _]?deep[ _]?link[ _]?opened[ _]?$/i,pushNotificationReceived:/^[ _]?push[ _]?notification[ _]?received[ _]?$/i,pushNotificationTapped:/^[ _]?push[ _]?notification[ _]?received[ _]?$/i,pushNotificationBounced:/^[ _]?push[ _]?notification[ _]?bounced[ _]?$/i};},{}],18:[function(e,t,n){;arguments[4][11][0].apply(n,arguments);},{\"./debug\":19,\"_process\":1232,\"dup\":11}],19:[function(e,t,n){\n;arguments[4][12][0].apply(n,arguments);},{\"dup\":12,\"ms\":1313}],20:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":21}],21:[function(e,t,n){;t.exports=function(){};},{\"./protos\":22,\"./statics\":23,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":25,\"dup\":14,\"slug-component\":1356}],22:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":24,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],23:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],24:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],25:[function(e,t,n){;t.exports=function(){};},{\"./debug\":26,\"_process\":1232,\"dup\":11}],26:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],27:[function(e,t,n){;\"use strict\";var o=e(\"@ndhoule/arity\"),i=Object.prototype.toString,a=function(e){return\"function\"==typeof e},r=function(e){var t=typeof e;return\"number\"===t||\"object\"===t&&\"[object Number]\"===i.call(e)},s=function(e,t){if(!r(e))throw new TypeError(\"Expected a number but received \"+typeof e);if(!a(t))throw new TypeError(\"Expected a function but received \"+typeof t);var n=0;return o(t.length,function(){n+=1;if(!(n<e))return t.apply(this,arguments)})};t.exports=s;},{\"@ndhoule/arity\":28}],28:[function(e,t,n){;\"use strict\";var o=Object.prototype.toString,i=function(e){return\"function\"==typeof e},a=function(e){var t=typeof e;return\"number\"===t||\"object\"===t&&\"[object Number]\"===o.call(e)},r=function(e){for(var t=[],n=1;n<=e;n+=1)t.push(\"arg\"+n);return t},s=function(e){var t=r(e).join(\", \"),n=\"\".concat(\"  return function(\",t,\") {\\n\",\"    return func.apply(this, arguments);\\n\",\"  };\");return new Function(\"func\",n)},u=[function(e){return function(){return e.apply(this,arguments)}},function(e){return function(t){return e.apply(this,arguments)}},function(e){return function(t,n){return e.apply(this,arguments)}},function(e){return function(t,n,o){return e.apply(this,arguments)}},function(e){return function(t,n,o,i){return e.apply(this,arguments)}},function(e){return function(t,n,o,i,a){return e.apply(this,arguments)}}],l=function(e,t){if(!i(t))throw new TypeError(\"Expected a function but got \"+typeof t);e=Math.max(a(e)?e:0,0);u[e]||(u[e]=s(e));return u[e](t)};t.exports=l;},{}],29:[function(e,t,n){\"use strict\";var o=e(\"component-type\"),i=function a(e){var t=o(e);if(\"object\"===t){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=a(e[i]));return n}if(\"array\"===t){for(var n=new Array(e.length),r=0,s=e.length;r<s;r++)n[r]=a(e[r]);return n}if(\"regexp\"===t){var u=\"\";u+=e.multiline?\"m\":\"\";u+=e.global?\"g\":\"\";u+=e.ignoreCase?\"i\":\"\";return new RegExp(e.source,u)}return\"date\"===t?new Date(e.getTime()):e};t.exports=i},{\"component-type\":1250}],30:[function(e,t,n){\"use strict\";var o=e(\"@ndhoule/drop\"),i=e(\"@ndhoule/rest\"),a=Object.prototype.hasOwnProperty,r=Object.prototype.toString,s=function(e){return Boolean(e)&&\"object\"==typeof e},u=function(e){return Boolean(e)&&\"[object Object]\"===r.call(e)},l=function(e,t,n,o){a.call(t,o)&&e[o]===undefined&&(e[o]=n);return t},c=function(e,t,n,o){a.call(t,o)&&(u(e[o])&&u(n)?e[o]=p(e[o],n):e[o]===undefined&&(e[o]=n));return t},d=function(e,t){if(!s(t))return t;e=e||l;for(var n=o(2,arguments),i=0;i<n.length;i+=1)for(var a in n[i])e(t,n[i],n[i][a],a);return t},p=function(e){return d.apply(null,[c,e].concat(i(arguments)))},f=function(e){return d.apply(null,[null,e].concat(i(arguments)))};t.exports=f;t.exports.deep=p},{\"@ndhoule/drop\":31,\"@ndhoule/rest\":41}],31:[function(e,t,n){\"use strict\";var o=Math.max,i=function(e,t){var n=t?t.length:0;if(!n)return[];for(var i=o(Number(e)||0,0),a=o(n-i,0),r=new Array(a),s=0;s<a;s+=1)r[s]=t[s+i];return r};t.exports=i},{}],32:[function(e,t,n){\"use strict\";var o=e(\"@ndhoule/keys\"),i=Object.prototype.toString,a=function(e){var t=typeof e;return\"number\"===t||\"object\"===t&&\"[object Number]\"===i.call(e)},r=\"function\"==typeof Array.isArray?Array.isArray:function(e){return\"[object Array]\"===i.call(e)},s=function(e){return null!=e&&(r(e)||\"function\"!==e&&a(e.length))},u=function(e,t){for(var n=0;n<t.length&&!1!==e(t[n],n,t);n+=1);},l=function(e,t){for(var n=o(t),i=0;i<n.length&&!1!==e(t[n[i]],n[i],t);i+=1);},c=function(e,t){return(s(t)?u:l).call(this,e,t)};t.exports=c},{\"@ndhoule/keys\":38}],33:[function(e,t,n){;t.exports=function(){};},{}],34:[function(e,t,n){;\"use strict\";var o=e(\"@ndhoule/each\"),i=function(e,t){if(\"function\"!=typeof e)throw new TypeError(\"`predicate` must be a function but was a \"+typeof e);var n=!0;o(function(t,o,i){n=!!e(t,o,i);if(!n)return!1},t);return n};t.exports=i;},{\"@ndhoule/each\":32}],35:[function(e,t,n){\"use strict\";var o=Object.prototype.hasOwnProperty,i=function(e){for(var t=Array.prototype.slice.call(arguments,1),n=0;n<t.length;n+=1)for(var i in t[n])o.call(t[n],i)&&(e[i]=t[n][i]);return e};t.exports=i},{}],36:[function(e,t,n){\"use strict\";var o=e(\"@ndhoule/each\"),i=function(e,t,n){if(\"function\"!=typeof e)throw new TypeError(\"Expected a function but received a \"+typeof e);o(function(n,o,i){t=e(t,n,o,i)},n);return t};t.exports=i},{\"@ndhoule/each\":32}],37:[function(e,t,n){\"use strict\";var o=e(\"@ndhoule/each\"),i=String.prototype.indexOf,a=function(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t},r=function(e,t){var n=!1;if(\"string\"==typeof t)return-1!==i.call(t,e);o(function(t){if(a(t,e)){n=!0;return!1}},t);return n};t.exports=r},{\"@ndhoule/each\":32}],38:[function(e,t,n){\"use strict\";var o=Object.prototype.hasOwnProperty,i=String.prototype.charAt,a=Object.prototype.toString,r=function(e,t){return i.call(e,t)},s=function(e,t){return o.call(e,t)},u=function(e){return\"[object String]\"===a.call(e)},l=function(e){return null!=e&&\"function\"!=typeof e&&\"number\"==typeof e.length},c=function(e,t){t=t||s;for(var n=[],o=0,i=e.length;o<i;o+=1)t(e,o)&&n.push(String(o));return n},d=function(e,t){t=t||s;var n=[];for(var o in e)t(e,o)&&n.push(String(o));return n},p=function(e){return null==e?[]:u(e)?c(e,r):l(e)?c(e,s):d(e)};t.exports=p},{}],39:[function(e,t,n){\"use strict\";var o=e(\"@ndhoule/each\"),i=function(e,t){if(\"function\"!=typeof e)throw new TypeError(\"Expected a function but received a \"+typeof e);var n=[];o(function(t,o,i){n.push(e(t,o,i))},t);return n};t.exports=i},{\"@ndhoule/each\":32}],40:[function(e,t,n){\"use strict\";var o=Object.prototype.toString,i=function(e){return null!=e},a=function(e){return\"[object Array]\"===o.call(e)},r=function(e){return\"string\"==typeof e||\"[object String]\"===o.call(e)},s=function(e){return null!=e&&\"object\"==typeof e},u=function(e,t){if(!i(t)||!s(t))return{};r(e)&&(e=[e]);a(e)||(e=[]);for(var n={},o=0;o<e.length;o+=1)r(e[o])&&e[o]in t&&(n[e[o]]=t[e[o]]);return n};t.exports=u},{}],41:[function(e,t,n){\"use strict\";var o=Math.max,i=function(e){if(null==e||!e.length)return[];for(var t=new Array(o(e.length-2,0)),n=1;n<e.length;n+=1)t[n-1]=e[n];return t};t.exports=i},{}],42:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/keys\":38}],43:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":44,\"@segment/load-script\":1160,\"global-queue\":1266}],44:[function(e,t,n){;t.exports=function(){};},{\"./protos\":45,\"./statics\":46,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":48,\"dup\":7,\"extend\":47,\"slug-component\":1356}],45:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],46:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],47:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],48:[function(e,t,n){;t.exports=function(){};},{\"./debug\":49,\"_process\":1232,\"dup\":11}],49:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],50:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":51,\"segmentio-facade\":1348}],51:[function(e,t,n){;t.exports=function(){};},{\"./protos\":52,\"./statics\":53,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":54,\"dup\":7,\"extend\":56,\"slug-component\":1356}],52:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],53:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],54:[function(e,t,n){;t.exports=function(){};},{\"./debug\":55,\"_process\":1232,\"dup\":11}],55:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],56:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],57:[function(e,t,n){;\"use strict\";function o(e){var t=i(e);for(var n in t)if(t.hasOwnProperty(n))for(var o in a)if(a.hasOwnProperty(o)&&n===o)return{id:t[n],type:a[o]}}var i=e(\"component-querystring\").parse,a={btid:\"dataxu\",urid:\"millennial-media\"};t.exports=o;},{\"component-querystring\":1248}],58:[function(e,t,n){;t.exports=function(){};},{\"@segment/tsub\":1181}],59:[function(e,t,n){;t.exports=function(){};},{\"component-clone\":1237,\"component-type\":1250}],60:[function(e,t,n){(function(n){\"use strict\";function o(){this._options({});this.Integrations={};this._sourceMiddlewares=new c;this._integrationMiddlewares=new d;this._integrations={};this._readied=!1;this._timeout=300;this._user=B;this.log=v(\"analytics.js\");h(this);var e=this;this.on(\"initialize\",function(t,n){n.initialPageview&&e.page();e._parseQuery(window.location.search)})}\nvar i=n.analytics,a=e(\"segmentio-facade\").Alias,r=e(\"component-emitter\"),s=e(\"segmentio-facade\"),u=e(\"segmentio-facade\").Group,l=e(\"segmentio-facade\").Identify,c=e(\"./middleware\").SourceMiddlewareChain,d=e(\"./middleware\").IntegrationMiddlewareChain,p=e(\"segmentio-facade\").Page,f=e(\"segmentio-facade\").Track,h=e(\"bind-all\"),m=e(\"@ndhoule/clone\"),b=e(\"extend\"),g=e(\"./cookie\"),y=e(\"./metrics\"),v=e(\"debug\"),w=e(\"@ndhoule/defaults\"),x=e(\"@ndhoule/each\"),k=e(\"@ndhoule/foldl\"),A=e(\"./group\"),_=e(\"is\"),E=e(\"@segment/is-meta\"),C=e(\"@ndhoule/keys\"),I=e(\"./memory\"),S=e(\"next-tick\"),j=e(\"./normalize\"),T=e(\"component-event\").bind,P=e(\"./pageDefaults\"),D=e(\"@ndhoule/pick\"),F=e(\"@segment/prevent-default\"),M=e(\"component-querystring\"),O=e(\"./store\"),B=e(\"./user\"),N=e(\"component-type\");r(o.prototype);o.prototype.use=function(e){e(this);return this};o.prototype.addIntegration=function(e){var t=e.prototype.name;if(!t)throw new TypeError(\"attempted to add an invalid integration\");this.Integrations[t]=e;return this};o.prototype.addSourceMiddleware=function(e){if(this.initialized)throw new Error(\"attempted to add a source middleware after initialization\");this._sourceMiddlewares.add(e);return this};o.prototype.addIntegrationMiddleware=function(e){if(this.initialized)throw new Error(\"attempted to add an integration middleware after initialization\");this._integrationMiddlewares.add(e);return this};o.prototype.init=o.prototype.initialize=function(e,t){e=e||{};t=t||{};this._options(t);this._readied=!1;var n=this;x(function(t,o){n.Integrations[o]||delete e[o]},e);x(function(e,o){if(!t.integrations||!1!==t.integrations[o]&&(!1!==t.integrations.All||t.integrations[o])){var i=n.Integrations[o],a={};b(!0,a,e);var r=new i(a);n.log(\"initialize %o - %o\",o,e);n.add(r)}},e);var o=this._integrations;B.load();A.load();var i=0,a=C(o).length,r=function(){i++;if(i>=a){n._readied=!0;n.emit(\"ready\")}};a<=0&&r();this.failedInitializations=[];var s=!1;x(function(e){if(t.initialPageview&&!1===e.options.initialPageview){var o=e.page;e.page=function(){if(s)return o.apply(this,arguments);s=!0}}e.analytics=n;e.once(\"ready\",r);try{y.increment(\"analytics_js.integration.invoke\",{method:\"initialize\",integration_name:e.name});e.initialize()}catch(a){var i=e.name;y.increment(\"analytics_js.integration.invoke.error\",{method:\"initialize\",integration_name:e.name});n.failedInitializations.push(i);n.log(\"Error initializing %s integration: %o\",i,a);e.ready()}},o);this.initialized=!0;this.emit(\"initialize\",e,t);return this};o.prototype.setAnonymousId=function(e){this.user().anonymousId(e);return this};o.prototype.add=function(e){this._integrations[e.name]=e;return this};o.prototype.identify=function(e,t,n,o){_.fn(n)&&(o=n,n=null);_.fn(t)&&(o=t,n=null,t=null);_.object(e)&&(n=t,t=e,e=B.id());B.identify(e,t);var i=this.normalize({options:n,traits:B.traits(),userId:B.id()});this.options.integrations&&w(i.integrations,this.options.integrations);this._invoke(\"identify\",new l(i));this.emit(\"identify\",e,t,n);this._callback(o);return this};o.prototype.user=function(){return B};o.prototype.group=function(e,t,n,o){if(!arguments.length)return A;_.fn(n)&&(o=n,n=null);_.fn(t)&&(o=t,n=null,t=null);_.object(e)&&(n=t,t=e,e=A.id());A.identify(e,t);var i=this.normalize({options:n,traits:A.traits(),groupId:A.id()});this.options.integrations&&w(i.integrations,this.options.integrations);this._invoke(\"group\",new u(i));this.emit(\"group\",e,t,n);this._callback(o);return this};o.prototype.track=function(e,t,n,o){_.fn(n)&&(o=n,n=null);_.fn(t)&&(o=t,n=null,t=null);var i=this.options.plan||{},a=i.track||{},r={},s=this.normalize({properties:t,options:n,event:e});i=a[e];if(i){this.log(\"plan %o - %o\",e,i);r=!1===i.enabled?{All:!1,\"Segment.io\":!0}:i.integrations||{}}else{(a.__default||{enabled:!0}).enabled||(r={All:!1,\"Segment.io\":!0})}w(s.integrations,this._mergeInitializeAndPlanIntegrations(r));this._invoke(\"track\",new f(s));this.emit(\"track\",e,t,n);this._callback(o);return this};o.prototype.trackClick=o.prototype.trackLink=function(e,t,n){if(!e)return this;\"element\"===N(e)&&(e=[e]);var o=this;x(function(e){if(\"element\"!==N(e))throw new TypeError(\"Must pass HTMLElement to `analytics.trackLink`.\");T(e,\"click\",function(i){var a=_.fn(t)?t(e):t,r=_.fn(n)?n(e):n,s=e.getAttribute(\"href\")||e.getAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\")||e.getAttribute(\"xlink:href\");o.track(a,r);if(s&&\"_blank\"!==e.target&&!E(i)){F(i);o._callback(function(){window.location.href=s})}})},e);return this};o.prototype.trackSubmit=o.prototype.trackForm=function(e,t,n){if(!e)return this;\"element\"===N(e)&&(e=[e]);var o=this;x(function(e){function i(i){F(i);var a=_.fn(t)?t(e):t,r=_.fn(n)?n(e):n;o.track(a,r);o._callback(function(){e.submit()})}if(\"element\"!==N(e))throw new TypeError(\"Must pass HTMLElement to `analytics.trackForm`.\");var a=window.jQuery||window.Zepto;a?a(e).submit(i):T(e,\"submit\",i)},e);return this};o.prototype.page=function(e,t,n,o,i){_.fn(o)&&(i=o,o=null);_.fn(n)&&(i=n,o=n=null);_.fn(t)&&(i=t,o=n=t=null);\"object\"===N(e)&&(o=t,n=e,t=e=null);\"object\"===N(t)&&(o=n,n=t,t=null);\"string\"===N(e)&&\"string\"!==N(t)&&(t=e,e=null);n=m(n)||{};t&&(n.name=t);e&&(n.category=e);var a=P();w(n,a);var r=D(C(a),n);if(!_.empty(r)){o=o||{};o.context=o.context||{};o.context.page=r}var s=this.normalize({properties:n,category:e,options:o,name:t});this.options.integrations&&w(s.integrations,this.options.integrations);this._invoke(\"page\",new p(s));this.emit(\"page\",e,t,n,o);this._callback(i);return this};o.prototype.pageview=function(e){var t={};e&&(t.path=e);this.page(t);return this};o.prototype.alias=function(e,t,n,o){_.fn(n)&&(o=n,n=null);_.fn(t)&&(o=t,n=null,t=null);_.object(t)&&(n=t,t=null);var i=this.normalize({options:n,previousId:t,userId:e});this.options.integrations&&w(i.integrations,this.options.integrations);this._invoke(\"alias\",new a(i));this.emit(\"alias\",e,t,n);this._callback(o);return this};o.prototype.ready=function(e){_.fn(e)&&(this._readied?S(e):this.once(\"ready\",e));return this};o.prototype.timeout=function(e){this._timeout=e};o.prototype.debug=function(e){!arguments.length||e?v.enable(\"analytics:\"+(e||\"*\")):v.disable()};o.prototype._options=function(e){e=e||{};this.options=e;g.options(e.cookie);y.options(e.metrics);O.options(e.localStorage);B.options(e.user);A.options(e.group);return this};o.prototype._callback=function(e){_.fn(e)&&(this._timeout?setTimeout(e,this._timeout):S(e));return this};o.prototype._invoke=function(e,t){function n(t){var n=o.failedInitializations||[];x(function(i,a){var r=b(!0,new s({}),t);if(r.enabled(a))if(n.indexOf(a)>=0)o.log(\"Skipping invocation of .%s method of %s integration. Integration failed to initialize properly.\",e,a);else try{o._integrationMiddlewares.applyMiddlewares(r,i.name,function(t){if(null!==t){t instanceof s||(t=new s(t));y.increment(\"analytics_js.integration.invoke\",{method:e,integration_name:i.name});i.invoke.call(i,e,t)}else o.log('Payload to integration \"%s\" was null and dropped by a middleware.',a)})}catch(u){y.increment(\"analytics_js.integration.invoke.error\",{method:e,integration_name:i.name});o.log(\"Error invoking .%s method of %s integration: %o\",e,a,u)}},o._integrations)}var o=this;try{this._sourceMiddlewares.applyMiddlewares(b(!0,new s({}),t),this._integrations,function(t){if(null!==t){t instanceof s||(t=new s(t));o.emit(\"invoke\",t);y.increment(\"analytics_js.invoke\",{method:e});n(t)}else o.log('Payload with method \"%s\" was null and dropped by source a middleware.',e)})}catch(i){y.increment(\"analytics_js.invoke.error\",{method:e});o.log(\"Error invoking .%s method of %s integration: %o\",e,name,i)}return this};o.prototype.push=function(e){var t=e.shift();this[t]&&this[t].apply(this,e)};o.prototype.reset=function(){this.user().logout();this.group().logout()};o.prototype._parseQuery=function(e){function t(e,t){var n,o=e.length;return k(function(t,i,a){if(a.substr(0,o)===e){n=a.substr(o);t[n]=i}return t},{},t)}var n=M.parse(e),o=t(\"ajs_trait_\",n),i=t(\"ajs_prop_\",n);n.ajs_uid&&this.identify(n.ajs_uid,o);n.ajs_event&&this.track(n.ajs_event,i);n.ajs_aid&&B.anonymousId(n.ajs_aid);return this};o.prototype.normalize=function(e){e=j(e,C(this._integrations));e.anonymousId&&B.anonymousId(e.anonymousId);e.anonymousId=B.anonymousId();e.context.page=w(e.context.page||{},P());return e};o.prototype._mergeInitializeAndPlanIntegrations=function(e){if(!this.options.integrations)return e;var t,n=b({},this.options.integrations);!1===e.All&&(n={All:!1});for(t in e)e.hasOwnProperty(t)&&!1!==this.options.integrations[t]&&(n[t]=e[t]);return n};o.prototype.noConflict=function(){window.analytics=i;return this};t.exports=o;t.exports.cookie=g;t.exports.memory=I;t.exports.store=O;t.exports.metrics=y}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{})},{\"./cookie\":61,\"./group\":63,\"./memory\":65,\"./metrics\":66,\"./middleware\":67,\"./normalize\":68,\"./pageDefaults\":69,\"./store\":70,\"./user\":71,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/each\":32,\"@ndhoule/foldl\":36,\"@ndhoule/keys\":38,\"@ndhoule/pick\":40,\"@segment/is-meta\":1157,\"@segment/prevent-default\":1173,\"bind-all\":1231,\"component-emitter\":1244,\"component-event\":1245,\"component-querystring\":1248,\"component-type\":1250,\"debug\":72,\"extend\":1263,\"is\":1280,\"next-tick\":1318,\"segmentio-facade\":1348}],61:[function(e,t,n){\"use strict\";function o(e){this.options(e)}var i=e(\"bind-all\"),a=e(\"@ndhoule/clone\"),r=e(\"@segment/cookie\"),s=e(\"debug\")(\"analytics.js:cookie\"),u=e(\"@ndhoule/defaults\"),l=e(\"@segment/top-domain\");o.prototype.options=function(e){if(0===arguments.length)return this._options;e=e||{};var t=\".\"+l(window.location.href);\".\"===t&&(t=null);this._options=u(e,{maxage:31536e6,path:\"/\",domain:t,sameSite:\"Lax\"});this.set(\"ajs:test\",!0);if(!this.get(\"ajs:test\")){s(\"fallback to domain=null\");this._options.domain=null}this.remove(\"ajs:test\")};o.prototype.set=function(e,t){try{t=window.JSON.stringify(t);r(e,t,a(this._options));return!0}catch(n){return!1}};o.prototype.get=function(e){try{var t=r(e);t=t?window.JSON.parse(t):null;return t}catch(n){return null}};o.prototype.remove=function(e){try{r(e,null,a(this._options));return!0}catch(t){return!1}};t.exports=i(new o);t.exports.Cookie=o},{\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@segment/cookie\":1153,\"@segment/top-domain\":1178,\"bind-all\":1231,\"debug\":72}],62:[function(e,t,n){\"use strict\";function o(e){this.options(e);this.initialize()}var i=e(\"@ndhoule/clone\"),a=e(\"./cookie\"),r=e(\"debug\")(\"analytics:entity\"),s=e(\"@ndhoule/defaults\"),u=e(\"@ndhoule/extend\"),l=e(\"./memory\"),c=e(\"./store\"),d=e(\"@segment/isodate-traverse\");t.exports=o;o.prototype.initialize=function(){a.set(\"ajs:cookies\",!0);if(a.get(\"ajs:cookies\")){a.remove(\"ajs:cookies\");this._storage=a}else if(c.enabled)this._storage=c;else{r(\"warning using memory store both cookies and localStorage are disabled\");this._storage=l}};o.prototype.storage=function(){return this._storage};o.prototype.options=function(e){if(0===arguments.length)return this._options;this._options=s(e||{},this.defaults||{})};o.prototype.id=function(e){switch(arguments.length){case 0:return this._getId();case 1:return this._setId(e)}};o.prototype._getId=function(){if(!this._options.persist)return this._id===undefined?null:this._id;var e=this._getIdFromCookie();if(e)return e;var t=this._getIdFromLocalStorage();if(t){this._setIdInCookies(t);return t}return null};o.prototype._getIdFromCookie=function(){return this.storage().get(this._options.cookie.key)};o.prototype._getIdFromLocalStorage=function(){return this._options.localStorageFallbackDisabled?null:c.get(this._options.cookie.key)};o.prototype._setId=function(e){if(this._options.persist){this._setIdInCookies(e);this._setIdInLocalStorage(e)}else this._id=e};o.prototype._setIdInCookies=function(e){this.storage().set(this._options.cookie.key,e)};o.prototype._setIdInLocalStorage=function(e){this._options.localStorageFallbackDisabled||c.set(this._options.cookie.key,e)};o.prototype.properties=o.prototype.traits=function(e){switch(arguments.length){case 0:return this._getTraits();case 1:return this._setTraits(e)}};o.prototype._getTraits=function(){var e=this._options.persist?c.get(this._options.localStorage.key):this._traits;return e?d(i(e)):{}};o.prototype._setTraits=function(e){e=e||{};this._options.persist?c.set(this._options.localStorage.key,e):this._traits=e};o.prototype.identify=function(e,t){t=t||{};var n=this.id();null!==n&&n!==e||(t=u(this.traits(),t));e&&this.id(e);this.debug(\"identify %o, %o\",e,t);this.traits(t);this.save()};o.prototype.save=function(){if(!this._options.persist)return!1;this._setId(this.id());this._setTraits(this.traits());return!0};o.prototype.logout=function(){this.id(null);this.traits({});this.storage().remove(this._options.cookie.key);c.remove(this._options.cookie.key);c.remove(this._options.localStorage.key)};o.prototype.reset=function(){this.logout();this.options({})};o.prototype.load=function(){this.id(this.id());this.traits(this.traits())}},{\"./cookie\":61,\"./memory\":65,\"./store\":70,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"@segment/isodate-traverse\":1158,\"debug\":72}],63:[function(e,t,n){\"use strict\";function o(e){this.defaults=o.defaults;this.debug=r;i.call(this,e)}var i=e(\"./entity\"),a=e(\"bind-all\"),r=e(\"debug\")(\"analytics:group\"),s=e(\"inherits\");o.defaults={persist:!0,cookie:{key:\"ajs_group_id\"},localStorage:{key:\"ajs_group_properties\"}};s(o,i);t.exports=a(new o);t.exports.Group=o},{\"./entity\":62,\"bind-all\":1231,\"debug\":72,\"inherits\":1272}],64:[function(e,t,n){\"use strict\";var o=e(\"./analytics\"),i=new o;i.require=e;i.VERSION=e(\"../package.json\").version;t.exports=i},{\"../package.json\":73,\"./analytics\":60}],65:[function(e,t,n){\"use strict\";function o(){this.store={}}var i=e(\"bind-all\"),a=e(\"@ndhoule/clone\"),r=Object.prototype.hasOwnProperty;t.exports=i(new o);o.prototype.set=function(e,t){this.store[e]=a(t);return!0};o.prototype.get=function(e){if(r.call(this.store,e))return a(this.store[e])};o.prototype.remove=function(e){delete this.store[e];return!0}},{\"@ndhoule/clone\":29,\"bind-all\":1231}],66:[function(e,t,n){\"use strict\";function o(e){this.options(e)}var i=e(\"bind-all\"),a=e(\"@segment/send-json\"),r=e(\"debug\")(\"analytics.js:metrics\");o.prototype.options=function(e){e=e||{};this.host=e.host||\"api.segment.io/v1\";this.sampleRate=e.sampleRate||0;this.flushTimer=e.flushTimer||3e4;this.maxQueueSize=e.maxQueueSize||20;this.queue=[];if(this.sampleRate>0){var t=this;setInterval(function(){t._flush()},this.flushTimer)}};o.prototype.increment=function(e,t){if(!(Math.random()>this.sampleRate||this.queue.length>=this.maxQueueSize)){this.queue.push({type:\"Counter\",metric:e,value:1,tags:t});e.indexOf(\"error\")>0&&this._flush()}};o.prototype._flush=function(){var e=this;if(!(e.queue.length<=0)){var t={series:this.queue},n={\"Content-Type\":\"text/plain\"};e.queue=[];\"xhr\"===a.type&&a(\"https://\"+this.host+\"/m\",t,n,function(e,n){r(\"sent %O, received %O\",t,[e,n])})}};t.exports=i(new o);t.exports.Metrics=o},{\"@segment/send-json\":1175,\"bind-all\":1231,\"debug\":72}],67:[function(e,t,n){\"use strict\";function o(e){var t=[];e.getMiddlewares=function(){return t.slice()};e.add=function(e){if(\"function\"!=typeof e)throw new Error(\"attempted to add non-function middleware\");if(-1!==t.indexOf(e))throw new Error(\"middleware is already registered\");t.push(e)};return function(e,n,o){if(\"object\"!=typeof n)throw new Error(\"applyMiddlewares requires a payload object\");if(\"function\"!=typeof o)throw new Error(\"applyMiddlewares requires a function callback\");var a=t.slice();a.push(o);i(e,n,a,0)}}function i(e,t,n,o){if(null!==t){t instanceof a||(t=new a(t));var r=n[o];r&&(n[o+1]?e(r,t,function(t){i(e,t,n,++o)}):r(t))}else n[n.length-1](null)}var a=e(\"segmentio-facade\");t.exports.SourceMiddlewareChain=function(){var e=o(this);this.applyMiddlewares=function(t,n,o){return e(function(e,t,o){e({integrations:n,next:o,payload:t})},t,o)}};t.exports.IntegrationMiddlewareChain=function(){var e=o(this);this.applyMiddlewares=function(t,n,o){return e(function(e,t,o){e(t,n,o)},t,o)}};t.exports.middlewareChain=o},{\"segmentio-facade\":1348}],68:[function(e,t,n){\"use strict\";function o(e,t){function n(e){return!(!s(e,t)&&\"all\"!==e.toLowerCase()&&!s(e.toLowerCase(),o))}var o=u(function(e){return e.toLowerCase()},t),h=e.options||{},m=h.integrations||{},b=h.providers||{},g=h.context||{},y={};i(\"<-\",e);r(function(e,t){if(n(t)){p.call(m,t)||(m[t]=e);delete h[t]}},h);delete h.providers;r(function(e,t){n(t)&&\"object\"!==l(m[t])&&(p.call(m,t)&&\"boolean\"==typeof b[t]||(m[t]=e))},b);r(function(e,t){s(t,f)?y[t]=h[t]:g[t]=h[t]},h);e.messageId=\"ajs-\"+d(window.JSON.stringify(e)+c());delete e.options;y.integrations=m;y.context=g;y=a(y,e);i(\"->\",y);return y}var i=e(\"debug\")(\"analytics.js:normalize\"),a=e(\"@ndhoule/defaults\"),r=e(\"@ndhoule/each\"),s=e(\"@ndhoule/includes\"),u=e(\"@ndhoule/map\"),l=e(\"component-type\"),c=e(\"uuid/v4\"),d=e(\"spark-md5\").hash,p=Object.prototype.hasOwnProperty;t.exports=o;var f=[\"integrations\",\"anonymousId\",\"timestamp\",\"context\"]},{\"@ndhoule/defaults\":30,\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"@ndhoule/map\":39,\"component-type\":1250,\"debug\":72,\"spark-md5\":1358,\"uuid/v4\":1386}],69:[function(e,t,n){\"use strict\";function o(){return{path:i(),referrer:document.referrer,search:location.search,title:document.title,url:a(location.search)}}function i(){var e=r();return e?u.parse(e).pathname:window.location.pathname}function a(e){var t=r();if(t)return s(\"?\",t)?t:t+e;var n=window.location.href,o=n.indexOf(\"#\");return-1===o?n:n.slice(0,o)}var r=e(\"@segment/canonical\"),s=e(\"@ndhoule/includes\"),u=e(\"component-url\");t.exports=o},{\"@ndhoule/includes\":37,\"@segment/canonical\":1151,\"component-url\":1251}],70:[function(e,t,n){\"use strict\";function o(e){this.options(e)}var i=e(\"bind-all\"),a=e(\"@ndhoule/defaults\"),r=e(\"@segment/store\");o.prototype.options=function(e){if(0===arguments.length)return this._options;e=e||{};a(e,{enabled:!0});this.enabled=e.enabled&&r.enabled;this._options=e};o.prototype.set=function(e,t){return!!this.enabled&&r.set(e,t)};o.prototype.get=function(e){return this.enabled?r.get(e):null};o.prototype.remove=function(e){return!!this.enabled&&r.remove(e)};t.exports=i(new o);t.exports.Store=o},{\"@ndhoule/defaults\":30,\"@segment/store\":1176,\"bind-all\":1231}],71:[function(e,t,n){\"use strict\";function o(e){this.defaults=o.defaults;this.debug=s;i.call(this,e)}var i=e(\"./entity\"),a=e(\"bind-all\"),r=e(\"./cookie\"),s=e(\"debug\")(\"analytics:user\"),u=e(\"inherits\"),l=e(\"@segment/cookie\"),c=e(\"uuid\"),d=e(\"./store\");o.defaults={persist:!0,cookie:{key:\"ajs_user_id\",oldKey:\"ajs_user\"},localStorage:{key:\"ajs_user_traits\"}};u(o,i);o.prototype.id=function(e){var t=this._getId(),n=i.prototype.id.apply(this,arguments);if(null==t)return n;t!=e&&e&&this.anonymousId(null);return n};o.prototype.anonymousId=function(e){var t=this.storage();if(arguments.length){t.set(\"ajs_anonymous_id\",e);this._setAnonymousIdInLocalStorage(e);return this}e=t.get(\"ajs_anonymous_id\");if(e){this._setAnonymousIdInLocalStorage(e);t.set(\"ajs_anonymous_id\",e);return e}if(!this._options.localStorageFallbackDisabled){e=d.get(\"ajs_anonymous_id\");if(e){t.set(\"ajs_anonymous_id\",e);return e}}e=l(\"_sio\");if(e){e=e.split(\"----\")[0];t.set(\"ajs_anonymous_id\",e);this._setAnonymousIdInLocalStorage(e);t.remove(\"_sio\");return e}e=c.v4();t.set(\"ajs_anonymous_id\",e);this._setAnonymousIdInLocalStorage(e);return t.get(\"ajs_anonymous_id\")};o.prototype._setAnonymousIdInLocalStorage=function(e){this._options.localStorageFallbackDisabled||d.set(\"ajs_anonymous_id\",e)};o.prototype.logout=function(){i.prototype.logout.call(this);this.anonymousId(null)};o.prototype.load=function(){this._loadOldCookie()||i.prototype.load.call(this)};o.prototype._loadOldCookie=function(){var e=r.get(this._options.cookie.oldKey);if(!e)return!1;this.id(e.id);this.traits(e.traits);r.remove(this._options.cookie.oldKey);return!0};t.exports=a(new o);t.exports.User=o},{\"./cookie\":61,\"./entity\":62,\"./store\":70,\"@segment/cookie\":1153,\"bind-all\":1231,\"debug\":72,\"inherits\":1272,\"uuid\":1382}],72:[function(e,t,n){function o(e){return o.enabled(e)?function(t){t=i(t);var n=new Date,a=n-(o[e]||n);o[e]=n;t=e+\" \"+t+\" +\"+o.humanize(a);window.console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}:function(){}}function i(e){return e instanceof Error?e.stack||e.message:e}t.exports=o;o.names=[];o.skips=[];o.enable=function(e){try{localStorage.debug=e}catch(a){}for(var t=(e||\"\").split(/[\\s,]+/),n=t.length,i=0;i<n;i++){e=t[i].replace(\"*\",\".*?\");\"-\"===e[0]?o.skips.push(new RegExp(\"^\"+e.substr(1)+\"$\")):o.names.push(new RegExp(\"^\"+e+\"$\"))}};o.disable=function(){o.enable(\"\")};o.humanize=function(e){return e>=36e5?(e/36e5).toFixed(1)+\"h\":e>=6e4?(e/6e4).toFixed(1)+\"m\":e>=1e3?(e/1e3|0)+\"s\":e+\"ms\"};o.enabled=function(e){for(var t=0,n=o.skips.length;t<n;t++)if(o.skips[t].test(e))return!1;for(var t=0,n=o.names.length;t<n;t++)if(o.names[t].test(e))return!0;return!1};try{window.localStorage&&o.enable(localStorage.debug)}catch(a){}},{}],73:[function(e,t,n){t.exports={\"name\":\"@segment/analytics.js-core\",\"author\":\"Segment <friends@segment.com>\",\"version\":\"3.11.2\",\"description\":\"The hassle-free way to integrate analytics into any web application.\",\"keywords\":[\"analytics\",\"analytics.js\",\"segment\",\"segment.io\"],\"main\":\"lib/index.js\",\"scripts\":{\"test\":\"make test\",\"lint\":'eslint \"./{lib,test}/**/*.js\"',\"format\":'prettier-eslint --write --list-different \"./{lib,test}/**/*.{js,json,md}\"',\"precommit\":\"lint-staged\",\"np\":\"np --no-publish\",\"cz\":\"git-cz\",\"commitmsg\":\"commitlint -E GIT_PARAMS\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/segmentio/analytics.js-core\"},\"license\":\"SEE LICENSE IN LICENSE\",\"bugs\":{\"url\":\"https://github.com/segmentio/analytics.js-core/issues\"},\"homepage\":\"https://github.com/segmentio/analytics.js-core#readme\",\"dependencies\":{\"@ndhoule/clone\":\"^1.0.0\",\"@ndhoule/defaults\":\"^2.0.1\",\"@ndhoule/each\":\"^2.0.1\",\"@ndhoule/extend\":\"^2.0.0\",\"@ndhoule/foldl\":\"^2.0.1\",\"@ndhoule/includes\":\"^2.0.1\",\"@ndhoule/keys\":\"^2.0.0\",\"@ndhoule/map\":\"^2.0.1\",\"@ndhoule/pick\":\"^2.0.0\",\"@segment/canonical\":\"^1.0.0\",\"@segment/cookie\":\"^1.1.5\",\"@segment/is-meta\":\"^1.0.0\",\"@segment/isodate\":\"^1.0.2\",\"@segment/isodate-traverse\":\"^1.0.1\",\"@segment/prevent-default\":\"^1.0.0\",\"@segment/send-json\":\"^3.0.0\",\"@segment/store\":\"^1.3.20\",\"@segment/top-domain\":\"^3.0.0\",\"bind-all\":\"^1.0.0\",\"component-emitter\":\"^1.2.1\",\"component-event\":\"^0.1.4\",\"component-querystring\":\"^2.0.0\",\"component-type\":\"^1.2.1\",\"component-url\":\"^0.2.1\",\"debug\":\"^0.7.4\",\"extend\":\"3.0.2\",\"inherits\":\"^2.0.1\",\"install\":\"^0.7.3\",\"is\":\"^3.1.0\",\"new-date\":\"^1.0.0\",\"next-tick\":\"^0.2.2\",\"segmentio-facade\":\"^3.0.2\",\"spark-md5\":\"^2.0.2\",\"uuid\":\"^3.4.0\"},\"devDependencies\":{\"@commitlint/cli\":\"^7.0.0\",\"@commitlint/config-conventional\":\"^7.0.1\",\"@segment/analytics.js-integration\":\"^3.2.1\",\"@segment/eslint-config\":\"^4.0.0\",\"browserify\":\"13.0.0\",\"browserify-istanbul\":\"^2.0.0\",\"codecov\":\"^3.0.2\",\"commitizen\":\"^2.10.1\",\"commitlint-circle\":\"^1.0.0\",\"compat-trigger-event\":\"^1.0.0\",\"component-each\":\"^0.2.6\",\"cz-conventional-changelog\":\"^2.1.0\",\"eslint\":\"^4.19.1\",\"eslint-config-prettier\":\"^2.9.0\",\"eslint-plugin-mocha\":\"^5.0.0\",\"eslint-plugin-react\":\"^7.9.1\",\"eslint-plugin-require-path-exists\":\"^1.1.8\",\"husky\":\"^0.14.3\",\"istanbul\":\"^0.4.3\",\"jquery\":\"^3.2.1\",\"karma\":\"1.3.0\",\"karma-browserify\":\"^5.0.4\",\"karma-chrome-launcher\":\"^1.0.1\",\"karma-coverage\":\"^1.0.0\",\"karma-junit-reporter\":\"^1.0.0\",\"karma-mocha\":\"1.0.1\",\"karma-phantomjs-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^1.0.0\",\"karma-spec-reporter\":\"0.0.26\",\"karma-summary-reporter\":\"^1.5.0\",\"lint-staged\":\"^7.2.0\",\"mocha\":\"^2.2.5\",\"np\":\"^3.0.4\",\"phantomjs-prebuilt\":\"^2.1.7\",\"prettier-eslint-cli\":\"^4.7.1\",\"proclaim\":\"^3.4.1\",\"sinon\":\"^1.7.3\",\"snyk\":\"^1.83.0\",\"watchify\":\"^3.7.0\"},\"commitlint\":{\"extends\":[\"@commitlint/config-conventional\"]},\"lint-staged\":{\"linters\":{\"*.{js,json,md}\":[\"prettier-eslint --write\",\"git add\"]}},\"config\":{\"commitizen\":{\"path\":\"cz-conventional-changelog\"}}}},{}],74:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":75}],75:[function(e,t,n){;t.exports=function(){};},{\"./protos\":76,\"./statics\":77,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":79,\"dup\":14,\"slug-component\":1356}],76:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":78,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],77:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],78:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],79:[function(e,t,n){;t.exports=function(){};},{\"./debug\":80,\"_process\":1232,\"dup\":11}],80:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],81:[function(e,t,n){;var N=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=N(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":82,\"@segment/to-iso-string\":1177,\"@segment/trample\":1180,\"obj-case\":1323,\"segmentio-facade\":1348}],82:[function(e,t,n){;t.exports=function(){};},{\"./protos\":83,\"./statics\":84,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":85,\"dup\":7,\"extend\":87,\"slug-component\":1356}],83:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],84:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],85:[function(e,t,n){;t.exports=function(){};},{\"./debug\":86,\"_process\":1232,\"dup\":11}],86:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],87:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],88:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":89}],89:[function(e,t,n){;t.exports=function(){};},{\"./protos\":90,\"./statics\":91,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":93,\"dup\":14,\"slug-component\":1356}],90:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":92,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],91:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],92:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],93:[function(e,t,n){;t.exports=function(){};},{\"./debug\":94,\"_process\":1232,\"dup\":11}],94:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],95:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/entries\":33,\"@ndhoule/extend\":35,\"@ndhoule/map\":39,\"@ndhoule/pick\":40,\"@ndhoule/values\":42,\"@segment/analytics.js-integration\":96}],96:[function(e,t,n){;t.exports=function(){};},{\"./protos\":97,\"./statics\":98,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":100,\"dup\":14,\"slug-component\":1356}],97:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":99,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],98:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],99:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],100:[function(e,t,n){;t.exports=function(){};},{\"./debug\":101,\"_process\":1232,\"dup\":11}],101:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],102:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/foldl\":36,\"@ndhoule/map\":39,\"@segment/analytics.js-integration\":103,\"to-snake-case\":1367,\"use-https\":1377}],103:[function(e,t,n){;t.exports=function(){};},{\"./protos\":104,\"./statics\":105,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":106,\"dup\":7,\"extend\":108,\"slug-component\":1356}],104:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],105:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],106:[function(e,t,n){;t.exports=function(){};},{\"./debug\":107,\"_process\":1232,\"dup\":11}],107:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],108:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],109:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":110,\"do-when\":1260}],110:[function(e,t,n){;t.exports=function(){};},{\"./protos\":111,\"./statics\":112,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":114,\"dup\":14,\"slug-component\":1356}],111:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":113,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],112:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],113:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],114:[function(e,t,n){;t.exports=function(){};},{\"./debug\":115,\"_process\":1232,\"dup\":11}],115:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],116:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":117}],117:[function(e,t,n){;t.exports=function(){};},{\"./protos\":118,\"./statics\":119,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":121,\"dup\":14,\"slug-component\":1356}],118:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":120,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],119:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],120:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],121:[function(e,t,n){;t.exports=function(){};},{\"./debug\":122,\"_process\":1232,\"dup\":11}],122:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],123:[function(e,t,n){;var u=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=u(\"empty\");},{\"@segment/analytics.js-integration\":124}],124:[function(e,t,n){;t.exports=function(){};},{\"./protos\":125,\"./statics\":126,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":128,\"dup\":14,\"slug-component\":1356}],125:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":127,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],126:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],127:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],128:[function(e,t,n){;t.exports=function(){};},{\"./debug\":129,\"_process\":1232,\"dup\":11}],129:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],130:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":131,\"@segment/top-domain\":1178,\"component-bind\":1236,\"do-when\":1260,\"is\":1280,\"segmentio-facade\":1348}],131:[function(e,t,n){;t.exports=function(){};},{\"./protos\":132,\"./statics\":133,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":134,\"dup\":7,\"extend\":136,\"slug-component\":1356}],132:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],133:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],134:[function(e,t,n){;t.exports=function(){};},{\"./debug\":135,\"_process\":1232,\"dup\":11}],135:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],136:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],137:[function(require,module,exports){;var integration=require(\"@segment/analytics.js-integration\");module.exports=function(){};module.exports.Integration=integration(\"empty\");},{\"@ndhoule/clone\":29,\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":138,\"obj-case\":1323,\"segmentio-facade\":1348}],138:[function(e,t,n){;t.exports=function(){};},{\"./protos\":139,\"./statics\":140,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":141,\"dup\":7,\"extend\":143,\"slug-component\":1356}],139:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],140:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],141:[function(e,t,n){;t.exports=function(){};},{\"./debug\":142,\"_process\":1232,\"dup\":11}],142:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],143:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],144:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/clone\":29,\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":145,\"obj-case\":1323,\"segmentio-facade\":1348}],145:[function(e,t,n){;t.exports=function(){};},{\"./protos\":146,\"./statics\":147,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":148,\"dup\":7,\"extend\":150,\"slug-component\":1356}],146:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],147:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],148:[function(e,t,n){;t.exports=function(){};},{\"./debug\":149,\"_process\":1232,\"dup\":11}],149:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],150:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],151:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":152,\"@segment/load-script\":1160,\"isobject\":159}],152:[function(e,t,n){;t.exports=function(){};},{\"./protos\":153,\"./statics\":154,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":156,\"dup\":14,\"slug-component\":1356}],153:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":155,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],154:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],155:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],156:[function(e,t,n){;t.exports=function(){};},{\"./debug\":157,\"_process\":1232,\"dup\":11}],157:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],158:[function(e,t,n){;t.exports=function(){};},{}],159:[function(e,t,n){;t.exports=function(){};},{\"isarray\":158}],160:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":161,\"component-querystring\":1248,\"to-no-case\":1366,\"use-https\":1377}],161:[function(e,t,n){;t.exports=function(){};},{\"./protos\":162,\"./statics\":163,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":165,\"dup\":14,\"slug-component\":1356}],162:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":164,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],163:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],164:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],165:[function(e,t,n){;t.exports=function(){};},{\"./debug\":166,\"_process\":1232,\"dup\":11}],166:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],167:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@segment/analytics.js-integration\":168,\"segmentio-facade\":1348}],168:[function(e,t,n){;t.exports=function(){};},{\"./protos\":169,\"./statics\":170,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":172,\"dup\":14,\"slug-component\":1356}],169:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":171,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],170:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],171:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],172:[function(e,t,n){;t.exports=function(){};},{\"./debug\":173,\"_process\":1232,\"dup\":11}],173:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],174:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":175,\"isobject\":182}],175:[function(e,t,n){;t.exports=function(){};},{\"./protos\":176,\"./statics\":177,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":179,\"dup\":14,\"slug-component\":1356}],176:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":178,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],177:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],178:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],179:[function(e,t,n){;t.exports=function(){};},{\"./debug\":180,\"_process\":1232,\"dup\":11}],180:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],181:[function(e,t,n){;t.exports=function(){};},{\"dup\":158}],182:[function(e,t,n){;t.exports=function(){};},{\"dup\":159,\"isarray\":181}],183:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":184}],184:[function(e,t,n){;t.exports=function(){};},{\"./protos\":185,\"./statics\":186,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":188,\"dup\":14,\"slug-component\":1356}],185:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":187,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],186:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],187:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],188:[function(e,t,n){;t.exports=function(){};},{\"./debug\":189,\"_process\":1232,\"dup\":11}],189:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],190:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":191}],191:[function(e,t,n){;t.exports=function(){};},{\"./protos\":192,\"./statics\":193,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":195,\"dup\":14,\"slug-component\":1356}],192:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":194,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],193:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],194:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],195:[function(e,t,n){;t.exports=function(){};},{\"./debug\":196,\"_process\":1232,\"dup\":11}],196:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],197:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":198}],198:[function(e,t,n){;t.exports=function(){};},{\"./protos\":199,\"./statics\":200,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":202,\"dup\":14,\"slug-component\":1356}],199:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":201,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],200:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],201:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],202:[function(e,t,n){;t.exports=function(){};},{\"./debug\":203,\"_process\":1232,\"dup\":11}],203:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],204:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":205}],205:[function(e,t,n){;t.exports=function(){};},{\"./protos\":206,\"./statics\":207,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":209,\"dup\":14,\"slug-component\":1356}],206:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":208,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],207:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],208:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],209:[function(e,t,n){;t.exports=function(){};},{\"./debug\":210,\"_process\":1232,\"dup\":11}],210:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],211:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@segment/analytics.js-integration\":212,\"@segment/convert-dates\":1152,\"spark-md5\":1358}],212:[function(e,t,n){;t.exports=function(){};},{\"./protos\":213,\"./statics\":214,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":216,\"dup\":14,\"slug-component\":1356}],213:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":215,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],214:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],215:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],216:[function(e,t,n){;t.exports=function(){};},{\"./debug\":217,\"_process\":1232,\"dup\":11}],217:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],218:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":219,\"component-querystring\":1248,\"segmentio-facade\":1348}],219:[function(e,t,n){;t.exports=function(){};},{\"./protos\":220,\"./statics\":221,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":222,\"dup\":7,\"extend\":224,\"slug-component\":1356}],220:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],221:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],222:[function(e,t,n){;t.exports=function(){};},{\"./debug\":223,\"_process\":1232,\"dup\":11}],223:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],224:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],225:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":226,\"next-tick\":1318}],226:[function(e,t,n){;t.exports=function(){};},{\"./protos\":227,\"./statics\":228,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":230,\"dup\":14,\"slug-component\":1356}],227:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":229,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],228:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],229:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],230:[function(e,t,n){;t.exports=function(){};},{\"./debug\":231,\"_process\":1232,\"dup\":11}],231:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],232:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":233,\"isobject\":240}],233:[function(e,t,n){;t.exports=function(){};},{\"./protos\":234,\"./statics\":235,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":237,\"dup\":14,\"slug-component\":1356}],234:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":236,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],235:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],236:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],237:[function(e,t,n){;t.exports=function(){};},{\"./debug\":238,\"_process\":1232,\"dup\":11}],238:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],239:[function(e,t,n){;t.exports=function(){};},{\"dup\":158}],240:[function(e,t,n){;t.exports=function(){};},{\"dup\":159,\"isarray\":239}],241:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":242}],242:[function(e,t,n){;t.exports=function(){};},{\"./protos\":243,\"./statics\":244,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":245,\"dup\":7,\"extend\":247,\"slug-component\":1356}],243:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],244:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],245:[function(e,t,n){;t.exports=function(){};},{\"./debug\":246,\"_process\":1232,\"dup\":11}],246:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],247:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],248:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":249}],249:[function(e,t,n){;t.exports=function(){};},{\"./protos\":250,\"./statics\":251,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":253,\"dup\":14,\"slug-component\":1356}],250:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":252,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],251:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],252:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],253:[function(e,t,n){;t.exports=function(){};},{\"./debug\":254,\"_process\":1232,\"dup\":11}],254:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],255:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/defaults\":30,\"@segment/analytics.js-integration\":256,\"on-body\":1331}],256:[function(e,t,n){;t.exports=function(){};},{\"./protos\":257,\"./statics\":258,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":259,\"dup\":7,\"extend\":261,\"slug-component\":1356}],257:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],258:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],259:[function(e,t,n){;t.exports=function(){};},{\"./debug\":260,\"_process\":1232,\"dup\":11}],260:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],261:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],262:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":263,\"is\":1280,\"use-https\":1377}],263:[function(e,t,n){;t.exports=function(){};},{\"./protos\":264,\"./statics\":265,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":266,\"dup\":7,\"extend\":268,\"slug-component\":1356}],264:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],265:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],266:[function(e,t,n){;t.exports=function(){};},{\"./debug\":267,\"_process\":1232,\"dup\":11}],267:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],268:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],269:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":270,\"isobject\":277,\"segmentio-facade\":1348}],270:[function(e,t,n){;t.exports=function(){};},{\"./protos\":271,\"./statics\":272,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":274,\"dup\":14,\"slug-component\":1356}],271:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":273,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],272:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],273:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],274:[function(e,t,n){;t.exports=function(){};},{\"./debug\":275,\"_process\":1232,\"dup\":11}],275:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],276:[function(e,t,n){;t.exports=function(){};},{\"dup\":158}],277:[function(e,t,n){;t.exports=function(){};},{\"dup\":159,\"isarray\":276}],278:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":279,\"use-https\":1377}],279:[function(e,t,n){;t.exports=function(){};},{\"./protos\":280,\"./statics\":281,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":283,\"dup\":14,\"slug-component\":1356}],280:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":282,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],281:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],282:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],283:[function(e,t,n){;t.exports=function(){};},{\"./debug\":284,\"_process\":1232,\"dup\":11}],284:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],285:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":286,\"global-queue\":1266}],286:[function(e,t,n){;t.exports=function(){};},{\"./protos\":287,\"./statics\":288,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":289,\"dup\":7,\"extend\":291,\"slug-component\":1356}],287:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],288:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],289:[function(e,t,n){;t.exports=function(){};},{\"./debug\":290,\"_process\":1232,\"dup\":11}],290:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],291:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],292:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":293}],293:[function(e,t,n){;t.exports=function(){};},{\"./protos\":294,\"./statics\":295,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":297,\"dup\":14,\"slug-component\":1356}],294:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":296,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],295:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],296:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],297:[function(e,t,n){;t.exports=function(){};},{\"./debug\":298,\"_process\":1232,\"dup\":11}],298:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],299:[function(e,t,n){;var h=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=h(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/extend\":35,\"@ndhoule/pick\":40,\"@ndhoule/values\":42,\"@segment/analytics.js-integration\":300,\"is\":1280,\"is-email\":1276,\"md5\":1312,\"obj-case\":1323,\"use-https\":1377}],300:[function(e,t,n){;t.exports=function(){};},{\"./protos\":301,\"./statics\":302,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":303,\"dup\":7,\"extend\":305,\"slug-component\":1356}],301:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],302:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],303:[function(e,t,n){;t.exports=function(){};},{\"./debug\":304,\"_process\":1232,\"dup\":11}],304:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],305:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],306:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":307,\"@segment/to-iso-string\":1177,\"component-bind\":1236,\"do-when\":1260,\"global-queue\":1266,\"segmentio-facade\":1348,\"throttleit\":1360}],307:[function(e,t,n){;t.exports=function(){};},{\"./protos\":308,\"./statics\":309,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":310,\"dup\":7,\"extend\":312,\"slug-component\":1356}],308:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],309:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],310:[function(e,t,n){;t.exports=function(){};},{\"./debug\":311,\"_process\":1232,\"dup\":11}],311:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],312:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],313:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@segment/alias\":59,\"@segment/analytics.js-integration\":314,\"@segment/convert-dates\":1152,\"segmentio-facade\":1348}],314:[function(e,t,n){;t.exports=function(){};},{\"./protos\":315,\"./statics\":316,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":318,\"dup\":14,\"slug-component\":1356}],315:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":317,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],316:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],317:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],318:[function(e,t,n){;t.exports=function(){};},{\"./debug\":319,\"_process\":1232,\"dup\":11}],319:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],320:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":321,\"is\":1280}],321:[function(e,t,n){;t.exports=function(){};},{\"./protos\":322,\"./statics\":323,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":324,\"dup\":7,\"extend\":326,\"slug-component\":1356}],322:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],323:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],324:[function(e,t,n){;t.exports=function(){};},{\"./debug\":325,\"_process\":1232,\"dup\":11}],325:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],326:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],327:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":328,\"component-querystring\":1248,\"obj-case\":1323,\"to-no-case\":1366}],328:[function(e,t,n){;t.exports=function(){};},{\"./protos\":329,\"./statics\":330,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":331,\"dup\":7,\"extend\":333,\"slug-component\":1356}],329:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],330:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],331:[function(e,t,n){;t.exports=function(){};},{\"./debug\":332,\"_process\":1232,\"dup\":11}],332:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],333:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],334:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":335,\"@segment/convert-dates\":1152}],335:[function(e,t,n){;t.exports=function(){};},{\"./protos\":336,\"./statics\":337,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":339,\"dup\":14,\"slug-component\":1356}],336:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":338,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],337:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],338:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],339:[function(e,t,n){;t.exports=function(){};},{\"./debug\":340,\"_process\":1232,\"dup\":11}],340:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],341:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":342,\"global-queue\":1266,\"isobject\":349,\"obj-case\":1323}],342:[function(e,t,n){;t.exports=function(){};},{\"./protos\":343,\"./statics\":344,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":345,\"dup\":7,\"extend\":347,\"slug-component\":1356}],343:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],344:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],345:[function(e,t,n){;t.exports=function(){};},{\"./debug\":346,\"_process\":1232,\"dup\":11}],346:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],347:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],348:[function(e,t,n){;t.exports=function(){};},{\"dup\":158}],349:[function(e,t,n){;t.exports=function(){};},{\"dup\":159,\"isarray\":348}],350:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/keys\":38,\"@segment/analytics.js-integration\":351,\"next-tick\":358,\"obj-case\":1323}],351:[function(e,t,n){;t.exports=function(){};},{\"./protos\":352,\"./statics\":353,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":355,\"dup\":7,\"extend\":357,\"slug-component\":1356}],352:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":354,\"to-no-case\":1366}],353:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],354:[function(e,t,n){(function(e,n){\"use strict\";var o,i\n;o=function(e){if(\"function\"!=typeof e)throw new TypeError(e+\" is not a function\");return e};i=function(e){var t,n=document.createTextNode(\"\"),i=0;new e(function(){var e;if(t){e=t;t=null;\"function\"!=typeof e?e.forEach(function(e){e()}):e()}}).observe(n,{characterData:!0});return function(e){o(e);if(t)\"function\"==typeof t?t=[t,e]:t.push(e);else{t=e;n.data=i=++i%2}}};t.exports=function(){if(void 0!==e&&e&&\"function\"==typeof e.nextTick)return e.nextTick;if(\"object\"==typeof document&&document){if(\"function\"==typeof MutationObserver)return i(MutationObserver);if(\"function\"==typeof WebKitMutationObserver)return i(WebKitMutationObserver)}return\"function\"==typeof n?function(e){n(o(e))}:\"function\"==typeof setTimeout?function(e){setTimeout(o(e),0)}:null}()}).call(this,e(\"_process\"),e(\"timers\").setImmediate)},{\"_process\":1232,\"timers\":1361}],355:[function(e,t,n){;t.exports=function(){};},{\"./debug\":356,\"_process\":1232,\"dup\":11}],356:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],357:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],358:[function(e,t,n){;t.exports=function(){};},{\"_process\":1232,\"timers\":1361}],359:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":360,\"global-queue\":1266}],360:[function(e,t,n){;t.exports=function(){};},{\"./protos\":361,\"./statics\":362,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":364,\"dup\":14,\"slug-component\":1356}],361:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":363,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],362:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],363:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],364:[function(e,t,n){;t.exports=function(){};},{\"./debug\":365,\"_process\":1232,\"dup\":11}],365:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],366:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":367}],367:[function(e,t,n){;t.exports=function(){};},{\"./protos\":368,\"./statics\":369,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":371,\"dup\":14,\"slug-component\":1356}],368:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":370,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],369:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],370:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],371:[function(e,t,n){;t.exports=function(){};},{\"./debug\":372,\"_process\":1232,\"dup\":11}],372:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],373:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/extend\":374,\"@segment/analytics.js-integration\":375,\"global-queue\":1266}],374:[function(e,t,n){;t.exports=function(){};},{\"dup\":35}],375:[function(e,t,n){;t.exports=function(){};},{\"./protos\":376,\"./statics\":377,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":378,\"component-bind\":1236,\"debug\":380,\"dup\":14,\"slug-component\":1356}],376:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":379,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],377:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],378:[function(e,t,n){;t.exports=function(){};},{\"dup\":35}],379:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],380:[function(e,t,n){;t.exports=function(){};},{\"./debug\":381,\"_process\":1232,\"dup\":11}],381:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],382:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":383,\"global-queue\":1266}],383:[function(e,t,n){;t.exports=function(){};},{\"./protos\":384,\"./statics\":385,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":387,\"dup\":14,\"slug-component\":1356}],384:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":386,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],385:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],386:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],387:[function(e,t,n){;t.exports=function(){};},{\"./debug\":388,\"_process\":1232,\"dup\":11}],388:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],389:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":390,\"domify\":1261,\"json3\":1284}],390:[function(e,t,n){;t.exports=function(){};},{\"./protos\":391,\"./statics\":392,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":394,\"dup\":14,\"slug-component\":1356}],391:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":393,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],392:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],393:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],394:[function(e,t,n){;t.exports=function(){};},{\"./debug\":395,\"_process\":1232,\"dup\":11}],395:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],396:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":397,\"global-queue\":1266}],397:[function(e,t,n){;t.exports=function(){};},{\"./protos\":398,\"./statics\":399,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":401,\"dup\":14,\"slug-component\":1356}],398:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":400,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],399:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],400:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],401:[function(e,t,n){;t.exports=function(){};},{\"./debug\":402,\"_process\":1232,\"dup\":11}],402:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],403:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":404,\"global-queue\":1266,\"segmentio-facade\":1348}],404:[function(e,t,n){;t.exports=function(){};},{\"./protos\":405,\"./statics\":406,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":407,\"dup\":7,\"extend\":409,\"slug-component\":1356}],405:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],406:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],407:[function(e,t,n){;t.exports=function(){};},{\"./debug\":408,\"_process\":1232,\"dup\":11}],408:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],409:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],410:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":411,\"dateformat\":414,\"is\":1280,\"js-sha256\":418,\"reject\":1340,\"segmentio-facade\":1348,\"to-camel-case\":1364}],411:[function(e,t,n){;t.exports=function(){};},{\"./protos\":412,\"./statics\":413,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":415,\"dup\":7,\"extend\":417,\"slug-component\":1356}],412:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],413:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],414:[function(e,t,n){;t.exports=function(){};},{}],415:[function(e,t,n){;t.exports=function(){};},{\"./debug\":416,\"_process\":1232,\"dup\":11}],416:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],417:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],418:[function(require,module,exports){;module.exports=function(){};},{\"_process\":1232}],419:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@segment/analytics.js-integration\":420,\"component-each\":1242,\"global-queue\":1266,\"segmentio-facade\":1348}],420:[function(e,t,n){;t.exports=function(){};},{\"./protos\":421,\"./statics\":422,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":423,\"dup\":7,\"extend\":425,\"slug-component\":1356}],421:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],422:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],423:[function(e,t,n){;t.exports=function(){};},{\"./debug\":424,\"_process\":1232,\"dup\":11}],424:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],425:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],426:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":427,\"is\":1280,\"obj-case\":1323,\"reject\":1340,\"segmentio-facade\":1348,\"to-no-case\":434}],427:[function(e,t,n){;t.exports=function(){};},{\"./protos\":428,\"./statics\":429,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":431,\"dup\":7,\"extend\":433,\"slug-component\":1356}],428:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":430}],429:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],430:[function(e,t,n){;function o(e){return r.test(e)?e.toLowerCase():s.test(e)?(i(e)||e).toLowerCase():a(e).toLowerCase()}function i(e){return e.replace(u,function(e,t){return t?\" \"+t:\"\"})}function a(e){return e.replace(l,function(e,t,n){return t+\" \"+n.toLowerCase().split(\"\").join(\" \")})}t.exports=o;var r=/\\s/,s=/[\\W_]/,u=/[\\W_]+(.|$)/g,l=/(.)([A-Z]+)/g;},{}],431:[function(e,t,n){;t.exports=function(){};},{\"./debug\":432,\"_process\":1232,\"dup\":11}],432:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],433:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],434:[function(e,t,n){;t.exports=function(){};},{}],435:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":436,\"camelcase\":440}],436:[function(e,t,n){;t.exports=function(){};},{\"./protos\":437,\"./statics\":438,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":441,\"dup\":14,\"slug-component\":1356}],437:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":439,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],438:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],439:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],440:[function(e,t,n){;t.exports=function(){};},{}],441:[function(e,t,n){;t.exports=function(){};},{\"./debug\":442,\"_process\":1232,\"dup\":11}],442:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],443:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":444,\"global-queue\":1266}],444:[function(e,t,n){;t.exports=function(){};},{\"./protos\":445,\"./statics\":446,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":448,\"dup\":14,\"slug-component\":1356}],445:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":447,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],446:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],447:[function(e,t,n){\n;t.exports=function(){};},{\"dup\":17}],448:[function(e,t,n){;t.exports=function(){};},{\"./debug\":449,\"_process\":1232,\"dup\":11}],449:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],450:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":451,\"on-body-ready\":1330}],451:[function(e,t,n){;t.exports=function(){};},{\"./protos\":452,\"./statics\":453,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":455,\"dup\":14,\"slug-component\":1356}],452:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":454,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],453:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],454:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],455:[function(e,t,n){;t.exports=function(){};},{\"./debug\":456,\"_process\":1232,\"dup\":11}],456:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],457:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":458,\"extend\":1263,\"obj-case\":1323,\"reject\":1340}],458:[function(e,t,n){;t.exports=function(){};},{\"./protos\":459,\"./statics\":460,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":462,\"dup\":7,\"extend\":461,\"slug-component\":1356}],459:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],460:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],461:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],462:[function(e,t,n){;t.exports=function(){};},{\"./debug\":463,\"_process\":1232,\"dup\":11}],463:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],464:[function(e,t,n){;\"use strict\";function o(e,t){if(e){var n=e.path;t.includeSearch&&e.search&&(n+=e.search);return n}}function i(e,t,n){var o={},i=s(e,t);if(v(i)){if(!t.setAllMappedProps){b(i,function(e,t){o[e]=t});return o}window.ga(n+\"set\",i)}}function a(e){return!e||e<0?0:Math.round(e)}function r(e,t){var n=e.properties().position;return void 0!==n&&!Number.isNaN(Number(n))&&Number(n)>-1?n:t.map(function(e){return e.product_id}).indexOf(e.productId())+1}function s(e,t){var n=t.dimensions,o=t.metrics,i=t.contentGroupings,a={};b([o,n,i],function(t){b(t,function(t,n){var o=m(e,t)||e[t];y.bool(o)&&(o=o.toString());(o||0===o)&&(a[n]=o)})});return a}function u(e,t,n){var o=e.properties(),i={id:e.productId()||e.id()||e.sku(),name:e.name(),category:e.category(),quantity:e.quantity(),price:e.price(),brand:o.brand,variant:o.variant,currency:e.currency()};null!=o.position&&(i.position=Math.round(o.position));var a=e.proxy(\"properties.coupon\");a&&(i.coupon=a);i=A(i,s(o,n));window.ga(t+\"ec:addProduct\",i)}function l(e,t,n,o,i){u(e,o,i);window.ga(o+\"ec:setAction\",t,n||{})}function c(e){var t=[e.paymentMethod,e.shippingMethod],n=x(t);return n.length>0?n.join(\", \"):null}function d(e,t){var n=t||{};n.currency=t.currency||e.currency();return new f({properties:n})}var p,f=e(\"segmentio-facade\").Track,h=e(\"@ndhoule/defaults\"),m=e(\"obj-case\"),b=e(\"component-each\"),g=e(\"@segment/analytics.js-integration\"),y=e(\"is\"),v=e(\"object-component\").length,w=e(\"global-queue\")(\"_gaq\"),x=e(\"reject\"),k=e(\"use-https\"),A=e(\"extend\");t.exports=n=function(e){e.addIntegration(_);p=e.user()};var _=n.Integration=g(\"Google Analytics\").readyOnLoad().global(\"ga\").global(\"gaplugins\").global(\"_gaq\").global(\"GoogleAnalyticsObject\").option(\"anonymizeIp\",!1).option(\"useGoogleAmpClientId\",!1).option(\"classic\",!1).option(\"contentGroupings\",{}).option(\"dimensions\",{}).option(\"domain\",\"auto\").option(\"doubleClick\",!1).option(\"enhancedEcommerce\",!1).option(\"enhancedLinkAttribution\",!1).option(\"ignoredReferrers\",null).option(\"includeSearch\",!1).option(\"setAllMappedProps\",!0).option(\"metrics\",{}).option(\"nonInteraction\",!1).option(\"sendUserId\",!1).option(\"siteSpeedSampleRate\",1).option(\"sampleRate\",100).option(\"trackCategorizedPages\",!0).option(\"trackNamedPages\",!0).option(\"trackingId\",\"\").option(\"optimize\",\"\").option(\"nameTracker\",!1).option(\"resetCustomDimensionsOnPage\",[]).tag(\"library\",'<script src=\"//www.google-analytics.com/analytics.js\">').tag(\"double click\",'<script src=\"//stats.g.doubleclick.net/dc.js\">').tag(\"http\",'<script src=\"http://www.google-analytics.com/ga.js\">').tag(\"https\",'<script src=\"https://ssl.google-analytics.com/ga.js\">');_.on(\"construct\",function(e){if(e.options.classic){e.initialize=e.initializeClassic;e.loaded=e.loadedClassic;e.page=e.pageClassic;e.track=e.trackClassic;e.orderCompleted=e.completedOrderClassic}else if(e.options.enhancedEcommerce){e.productViewed=e.productViewedEnhanced;e.productClicked=e.productClickedEnhanced;e.productAdded=e.productAddedEnhanced;e.productRemoved=e.productRemovedEnhanced;e.checkoutStarted=e.checkoutStartedEnhanced;e.checkoutStepViewed=e.checkoutStepViewedEnhanced;e.checkoutStepCompleted=e.checkoutStepCompletedEnhanced;e.orderUpdated=e.orderUpdatedEnhanced;e.orderCompleted=e.orderCompletedEnhanced;e.orderRefunded=e.orderRefundedEnhanced;e.promotionViewed=e.promotionViewedEnhanced;e.promotionClicked=e.promotionClickedEnhanced;e.productListViewed=e.productListViewedEnhanced;e.productListFiltered=e.productListFilteredEnhanced}});_.prototype.initialize=function(){this.pageCalled=!1;var e=this.options;window.GoogleAnalyticsObject=\"ga\";window.ga=window.ga||function(){window.ga.q=window.ga.q||[];window.ga.q.push(arguments)};window.ga.l=(new Date).getTime();\"localhost\"===window.location.hostname&&(e.domain=\"none\");var t={cookieDomain:e.domain||_.prototype.defaults.domain,siteSpeedSampleRate:e.siteSpeedSampleRate,sampleRate:e.sampleRate,allowLinker:!0,useAmpClientId:e.useGoogleAmpClientId};if(e.nameTracker){t.name=\"segmentGATracker\";this._trackerName=\"segmentGATracker.\"}else this._trackerName=\"\";window.ga(\"create\",e.trackingId,t);e.optimize&&window.ga(this._trackerName+\"require\",e.optimize);e.doubleClick&&window.ga(this._trackerName+\"require\",\"displayfeatures\");e.enhancedLinkAttribution&&window.ga(this._trackerName+\"require\",\"linkid\",\"linkid.js\");e.sendUserId&&p.id()&&window.ga(this._trackerName+\"set\",\"userId\",p.id());e.anonymizeIp&&window.ga(this._trackerName+\"set\",\"anonymizeIp\",!0);var n=p.traits();p.id()&&(n.id=p.id());var o=s(n,e);v(o)&&window.ga(this._trackerName+\"set\",o);this.load(\"library\",this.ready)};_.prototype.loaded=function(){return!!window.gaplugins};_.prototype.page=function(e){var t,n=e.category(),a=e.properties(),r=e.fullName(),s=this.options,u=e.proxy(\"context.campaign\")||{},l={},c=o(a,this.options),d=r||a.title,p=e.referrer()||\"\",f=this;this._category=n;l.page=c;l.title=d;l.location=a.url;u.name&&(l.campaignName=u.name);u.source&&(l.campaignSource=u.source);u.medium&&(l.campaignMedium=u.medium);u.content&&(l.campaignContent=u.content);u.term&&(l.campaignKeyword=u.term);for(var h={page:c,title:d},m={},b=0;b<s.resetCustomDimensionsOnPage.length;b++){var g=s.resetCustomDimensionsOnPage[b];s.dimensions[g]&&(m[s.dimensions[g]]=null)}window.ga(f._trackerName+\"set\",m);l=A(l,i(a,s,f._trackerName));p!==document.referrer&&(h.referrer=p);window.ga(this._trackerName+\"set\",h);this.pageCalled&&delete l.location;window.ga(this._trackerName+\"send\",\"pageview\",l);if(n&&this.options.trackCategorizedPages){t=e.track(n);this.track(t,{nonInteraction:1})}if(r&&this.options.trackNamedPages){t=e.track(r);this.track(t,{nonInteraction:1})}this.pageCalled=!0};_.prototype.identify=function(e){var t=this.options;t.sendUserId&&e.userId()&&window.ga(this._trackerName+\"set\",\"userId\",e.userId());var n=s(e.traits(),t);v(n)&&window.ga(this._trackerName+\"set\",n)};_.prototype.track=function(e,t){var n=e.options(this.name),o=this.options,r=h(t||{},n);r=h(r,o);var s=e.properties(),u=e.proxy(\"context.campaign\")||{},l=this,c={eventAction:e.event(),eventCategory:e.category()||this._category||\"All\",eventLabel:s.label,eventValue:a(s.value||e.revenue()),nonInteraction:s.nonInteraction!==undefined?!!s.nonInteraction:!!r.nonInteraction};u.name&&(c.campaignName=u.name);u.source&&(c.campaignSource=u.source);u.medium&&(c.campaignMedium=u.medium);u.content&&(c.campaignContent=u.content);u.term&&(c.campaignKeyword=u.term);c=A(c,i(s,o,l._trackerName));window.ga(this._trackerName+\"send\",\"event\",c)};_.prototype.orderCompleted=function(e){var t=e.total()||e.revenue()||0,n=e.orderId(),o=e.products(),i=e.properties(),a=this;if(n){if(!this.ecommerce){window.ga(this._trackerName+\"require\",\"ecommerce\");this.ecommerce=!0}window.ga(this._trackerName+\"ecommerce:addTransaction\",{affiliation:i.affiliation,shipping:e.shipping(),revenue:t,tax:e.tax(),id:n,currency:e.currency()});b(o,function(t){var o=d(e,t);window.ga(a._trackerName+\"ecommerce:addItem\",{category:o.category(),quantity:o.quantity(),price:o.price(),name:o.name(),sku:o.sku(),id:n,currency:o.currency()})});window.ga(this._trackerName+\"ecommerce:send\")}};_.prototype.initializeClassic=function(){var e=this.options,t=e.anonymizeIp,n=e.domain,o=e.enhancedLinkAttribution,i=e.ignoredReferrers,a=e.siteSpeedSampleRate;window._gaq=window._gaq||[];w(\"_setAccount\",e.trackingId);w(\"_setAllowLinker\",!0);t&&w(\"_gat._anonymizeIp\");n&&w(\"_setDomainName\",n);a&&w(\"_setSiteSpeedSampleRate\",a);if(o){var r=\"https:\"===document.location.protocol?\"https:\":\"http:\";w(\"_require\",\"inpage_linkid\",r+\"//www.google-analytics.com/plugins/ga/inpage_linkid.js\")}if(i){y.array(i)||(i=[i]);b(i,function(e){w(\"_addIgnoredRef\",e)})}if(this.options.doubleClick)this.load(\"double click\",this.ready);else{var s=k()?\"https\":\"http\";this.load(s,this.ready)}};_.prototype.loadedClassic=function(){return!(!window._gaq||window._gaq.push===Array.prototype.push)};_.prototype.pageClassic=function(e){var t,n=e.category(),i=e.properties(),a=e.fullName();w(\"_trackPageview\",o(i,this.options));if(n&&this.options.trackCategorizedPages){t=e.track(n);this.track(t,{nonInteraction:1})}if(a&&this.options.trackNamedPages){t=e.track(a);this.track(t,{nonInteraction:1})}};_.prototype.trackClassic=function(e,t){var n=t||e.options(this.name),o=e.properties(),i=e.revenue(),r=e.event(),s=this._category||e.category()||\"All\",u=o.label,l=a(i||o.value),c=!(!o.nonInteraction&&!n.nonInteraction);w(\"_trackEvent\",s,r,u,l,c)};_.prototype.completedOrderClassic=function(e){var t=e.total()||e.revenue()||0,n=e.orderId(),o=e.products()||[],i=e.properties(),a=e.currency();if(n){w(\"_addTrans\",n,i.affiliation,t,e.tax(),e.shipping(),e.city(),e.state(),e.country());b(o,function(e){var t=new f({properties:e});w(\"_addItem\",n,t.sku(),t.name(),t.category(),t.price(),t.quantity())});w(\"_set\",\"currencyCode\",a);w(\"_trackTrans\")}};_.prototype.loadEnhancedEcommerce=function(e){var t=this;if(!this.enhancedEcommerceLoaded){window.ga(t._trackerName+\"require\",\"ec\");this.enhancedEcommerceLoaded=!0}window.ga(t._trackerName+\"set\",\"&cu\",e.currency())};_.prototype.pushEnhancedEcommerce=function(e,t,n){var o=this,a=x([o._trackerName+\"send\",\"event\",e.category()||\"EnhancedEcommerce\",e.event()||\"Action not defined\",e.properties().label,A({nonInteraction:1},i(e.properties(),t,n))]);[\"product clicked\",\"product added\",\"product viewed\",\"product removed\"].includes(e.event().toLowerCase())&&(a[2]=\"EnhancedEcommerce\");window.ga.apply(window,a)};_.prototype.checkoutStartedEnhanced=function(e){this.checkoutStepViewed(e)};_.prototype.orderUpdatedEnhanced=function(e){this.checkoutStartedEnhanced(e)};_.prototype.checkoutStepViewedEnhanced=function(e){var t=e.products(),n=e.properties(),o=c(n),i=this,a=this.options;this.loadEnhancedEcommerce(e);b(t,function(t){u(d(e,t),i._trackerName,a)});window.ga(i._trackerName+\"ec:setAction\",\"checkout\",{step:n.step||1,option:o||undefined});this.pushEnhancedEcommerce(e,a,i._trackerName)};_.prototype.checkoutStepCompletedEnhanced=function(e){var t=e.properties(),n=c(t),o=this;if(t.step&&n){this.loadEnhancedEcommerce(e);window.ga(o._trackerName+\"ec:setAction\",\"checkout_option\",{step:t.step||1,option:n});window.ga(o._trackerName+\"send\",\"event\",\"Checkout\",\"Option\")}};_.prototype.orderCompletedEnhanced=function(e){var t=e.total()||e.revenue()||0,n=e.orderId(),o=e.products(),i=e.properties(),a=this.options,r=this;if(n){this.loadEnhancedEcommerce(e);b(o,function(t){u(d(e,t),r._trackerName,a)});window.ga(r._trackerName+\"ec:setAction\",\"purchase\",{id:n,affiliation:i.affiliation,revenue:t,tax:e.tax(),shipping:e.shipping(),coupon:e.coupon()});this.pushEnhancedEcommerce(e,a,r._trackerName)}};_.prototype.orderRefundedEnhanced=function(e){var t=e.orderId(),n=e.products(),o=this,i=this.options;if(t){this.loadEnhancedEcommerce(e);b(n,function(e){var t=new f({properties:e});window.ga(o._trackerName+\"ec:addProduct\",{id:t.productId()||t.id()||t.sku(),quantity:t.quantity()})});window.ga(o._trackerName+\"ec:setAction\",\"refund\",{id:t});this.pushEnhancedEcommerce(e,i,o._trackerName)}};_.prototype.productAddedEnhanced=function(e){var t=this,n=this.options;this.loadEnhancedEcommerce(e);l(e,\"add\",null,t._trackerName,n);this.pushEnhancedEcommerce(e,n,t._trackerName)};_.prototype.productRemovedEnhanced=function(e){var t=this,n=this.options;this.loadEnhancedEcommerce(e);l(e,\"remove\",null,t._trackerName,n);this.pushEnhancedEcommerce(e,n,t._trackerName)};_.prototype.productViewedEnhanced=function(e){var t=e.properties(),n={},o=this,i=this.options;this.loadEnhancedEcommerce(e);t.list&&(n.list=t.list);l(e,\"detail\",n,o._trackerName,i);this.pushEnhancedEcommerce(e,i,o._trackerName)};_.prototype.productClickedEnhanced=function(e){var t=e.properties(),n={},o=this,i=this.options;this.loadEnhancedEcommerce(e);t.list&&(n.list=t.list);l(e,\"click\",n,o._trackerName,i);this.pushEnhancedEcommerce(e,i,o._trackerName)};_.prototype.promotionViewedEnhanced=function(e){var t=e.properties(),n=this,o=this.options;this.loadEnhancedEcommerce(e);window.ga(n._trackerName+\"ec:addPromo\",{id:e.promotionId()||e.id(),name:e.name(),creative:t.creative,position:t.position});this.pushEnhancedEcommerce(e,o,n._trackerName)};_.prototype.promotionClickedEnhanced=function(e){var t=e.properties(),n=this,o=this.options;this.loadEnhancedEcommerce(e);window.ga(n._trackerName+\"ec:addPromo\",{id:e.promotionId()||e.id(),name:e.name(),creative:t.creative,position:t.position});window.ga(n._trackerName+\"ec:setAction\",\"promo_click\",{});this.pushEnhancedEcommerce(e,o,n._trackerName)};_.prototype.productListViewedEnhanced=function(e){var t=e.properties(),n=e.products(),o=this,i=this.options;this.loadEnhancedEcommerce(e);b(n,function(a){var u=new f({properties:a});if(u.productId()||u.sku()||u.name()){var l={id:u.productId()||u.sku(),name:u.name(),category:u.category()||e.category(),list:t.list_id||e.category()||\"products\",brand:u.properties().brand,variant:u.properties().variant,price:u.price(),position:r(u,n)};l=A(l,s(u.properties(),i));for(var c in l)l[c]===undefined&&delete l[c];window.ga(o._trackerName+\"ec:addImpression\",l)}});this.pushEnhancedEcommerce(e,i,o._trackerName)};_.prototype.productListFilteredEnhanced=function(e){var t=e.properties(),n=e.products();t.filters=t.filters||[];t.sorters=t.sorters||[];var o=t.filters.map(function(e){return e.type+\":\"+e.value}).join(),i=t.sorts.map(function(e){return e.type+\":\"+e.value}).join(),a=this,u=this.options;this.loadEnhancedEcommerce(e);b(n,function(l){var c=new f({properties:l});if(c.productId()||c.sku()||c.name()){var d={id:c.productId()||c.sku(),name:c.name(),category:c.category()||e.category(),list:t.list_id||e.category()||\"search results\",brand:c.properties().brand,variant:o+\"::\"+i,price:c.price(),position:r(c,n)};d=A(d,s(c.properties(),u));for(var p in d)d[p]===undefined&&delete d[p];window.ga(a._trackerName+\"ec:addImpression\",d)}});this.pushEnhancedEcommerce(e,u,a._trackerName)};},{\"@ndhoule/defaults\":30,\"@segment/analytics.js-integration\":465,\"component-each\":1242,\"extend\":1263,\"global-queue\":1266,\"is\":1280,\"obj-case\":1323,\"object-component\":1324,\"reject\":1340,\"segmentio-facade\":1348,\"use-https\":1377}],465:[function(e,t,n){;arguments[4][7][0].apply(n,arguments);},{\"./protos\":466,\"./statics\":467,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":469,\"dup\":7,\"extend\":468,\"slug-component\":1356}],466:[function(e,t,n){;arguments[4][8][0].apply(n,arguments);},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],467:[function(e,t,n){;arguments[4][9][0].apply(n,arguments);},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],468:[function(e,t,n){;arguments[4][10][0].apply(n,arguments);},{\"dup\":10}],469:[function(e,t,n){;arguments[4][11][0].apply(n,arguments);},{\"./debug\":470,\"_process\":1232,\"dup\":11}],470:[function(e,t,n){;arguments[4][12][0].apply(n,arguments);},{\"dup\":12,\"ms\":1313}],471:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":472,\"global-queue\":1266}],472:[function(e,t,n){;t.exports=function(){};},{\"./protos\":473,\"./statics\":474,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":475,\"dup\":7,\"extend\":477,\"slug-component\":1356}],473:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],474:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],475:[function(e,t,n){;t.exports=function(){};},{\"./debug\":476,\"_process\":1232,\"dup\":11}],476:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],477:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],478:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@segment/analytics.js-integration\":479,\"component-each\":1242,\"omit\":1329,\"pick\":1335,\"segmentio-facade\":1348}],479:[function(e,t,n){;t.exports=function(){};},{\"./protos\":480,\"./statics\":481,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":482,\"dup\":7,\"extend\":484,\"slug-component\":1356}],480:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],481:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],482:[function(e,t,n){;t.exports=function(){};},{\"./debug\":483,\"_process\":1232,\"dup\":11}],483:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],484:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],485:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":486,\"@segment/to-iso-string\":1177,\"component-each\":1242,\"is\":1280}],486:[function(e,t,n){;t.exports=function(){};},{\"./protos\":487,\"./statics\":488,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":489,\"dup\":7,\"extend\":491,\"slug-component\":1356}],487:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\n\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],488:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],489:[function(e,t,n){;t.exports=function(){};},{\"./debug\":490,\"_process\":1232,\"dup\":11}],490:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],491:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],492:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":493}],493:[function(e,t,n){;t.exports=function(){};},{\"./protos\":494,\"./statics\":495,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":497,\"dup\":14,\"slug-component\":1356}],494:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":496,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],495:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],496:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],497:[function(e,t,n){;t.exports=function(){};},{\"./debug\":498,\"_process\":1232,\"dup\":11}],498:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],499:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":500,\"is\":1280,\"use-https\":1377}],500:[function(e,t,n){;t.exports=function(){};},{\"./protos\":501,\"./statics\":502,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":503,\"dup\":7,\"extend\":505,\"slug-component\":1356}],501:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],502:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],503:[function(e,t,n){;t.exports=function(){};},{\"./debug\":504,\"_process\":1232,\"dup\":11}],504:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],505:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],506:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":507}],507:[function(e,t,n){;t.exports=function(){};},{\"./protos\":508,\"./statics\":509,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":511,\"dup\":14,\"slug-component\":1356}],508:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":510,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],509:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],510:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],511:[function(e,t,n){;t.exports=function(){};},{\"./debug\":512,\"_process\":1232,\"dup\":11}],512:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],513:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":514,\"is\":1280}],514:[function(e,t,n){;t.exports=function(){};},{\"./protos\":515,\"./statics\":516,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":517,\"dup\":7,\"extend\":519,\"slug-component\":1356}],515:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],516:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],517:[function(e,t,n){;t.exports=function(){};},{\"./debug\":518,\"_process\":1232,\"dup\":11}],518:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],519:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],520:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":521,\"@segment/convert-dates\":1152,\"global-queue\":1266,\"segmentio-facade\":1348}],521:[function(e,t,n){;t.exports=function(){};},{\"./protos\":522,\"./statics\":523,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":524,\"dup\":7,\"extend\":526,\"slug-component\":1356}],522:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],523:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],524:[function(e,t,n){;t.exports=function(){};},{\"./debug\":525,\"_process\":1232,\"dup\":11}],525:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],526:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],527:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":528}],528:[function(e,t,n){;t.exports=function(){};},{\"./protos\":529,\"./statics\":530,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":532,\"dup\":14,\"slug-component\":1356}],529:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":531,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],530:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],531:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],532:[function(e,t,n){;t.exports=function(){};},{\"./debug\":533,\"_process\":1232,\"dup\":11}],533:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],534:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":535,\"global-queue\":1266}],535:[function(e,t,n){;t.exports=function(){};},{\"./protos\":536,\"./statics\":537,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":539,\"dup\":14,\"slug-component\":1356}],536:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":538,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],537:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],538:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],539:[function(e,t,n){;t.exports=function(){};},{\"./debug\":540,\"_process\":1232,\"dup\":11}],540:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],541:[function(e,t,n){;var c=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=c(\"empty\");},{\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/each\":32,\"@ndhoule/extend\":35,\"@ndhoule/pick\":40,\"@segment/analytics.js-integration\":542,\"@segment/convert-dates\":1152,\"is\":1280,\"obj-case\":1323}],542:[function(e,t,n){;t.exports=function(){};},{\"./protos\":543,\"./statics\":544,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":546,\"dup\":14,\"slug-component\":1356}],543:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":545,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],544:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],545:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],546:[function(e,t,n){;t.exports=function(){};},{\"./debug\":547,\"_process\":1232,\"dup\":11}],547:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],548:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/clone\":29,\"@segment/analytics.js-integration\":549}],549:[function(e,t,n){;t.exports=function(){};},{\"./protos\":550,\"./statics\":551,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":553,\"dup\":14,\"slug-component\":1356}],550:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":552,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],551:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],552:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],553:[function(e,t,n){;t.exports=function(){};},{\"./debug\":554,\"_process\":1232,\"dup\":11}],554:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],555:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/extend\":35,\"@ndhoule/keys\":38,\"@segment/analytics.js-integration\":556,\"@segment/trample\":1180,\"obj-case\":1323,\"reject\":1340}],556:[function(e,t,n){;t.exports=function(){};},{\"./protos\":557,\"./statics\":558,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":559,\"dup\":7,\"extend\":561,\"slug-component\":1356}],557:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],558:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],559:[function(e,t,n){;t.exports=function(){};},{\"./debug\":560,\"_process\":1232,\"dup\":11}],560:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],561:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],562:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/includes\":37,\"@segment/analytics.js-integration\":563,\"is\":1280}],563:[function(e,t,n){;t.exports=function(){};},{\"./protos\":564,\"./statics\":565,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":567,\"dup\":14,\"slug-component\":1356}],564:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":566,\"component-emitter\":1244,\"dup\":15,\n\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],565:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],566:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],567:[function(e,t,n){;t.exports=function(){};},{\"./debug\":568,\"_process\":1232,\"dup\":11}],568:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],569:[function(e,t,n){;var u=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=u(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":570,\"component-each\":1242,\"global-queue\":1266,\"is\":1280,\"obj-case\":1323}],570:[function(e,t,n){;t.exports=function(){};},{\"./protos\":571,\"./statics\":572,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":574,\"dup\":14,\"slug-component\":1356}],571:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":573,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],572:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],573:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],574:[function(e,t,n){;t.exports=function(){};},{\"./debug\":575,\"_process\":1232,\"dup\":11}],575:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],576:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/extend\":35,\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":577,\"global-queue\":1266,\"next-tick\":1318,\"obj-case\":1323,\"segmentio-facade\":1348}],577:[function(e,t,n){;t.exports=function(){};},{\"./protos\":578,\"./statics\":579,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":580,\"dup\":7,\"extend\":582,\"slug-component\":1356}],578:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],579:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],580:[function(e,t,n){;t.exports=function(){};},{\"./debug\":581,\"_process\":1232,\"dup\":11}],581:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],582:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],583:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":584}],584:[function(e,t,n){;t.exports=function(){};},{\"./protos\":585,\"./statics\":586,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":588,\"dup\":14,\"slug-component\":1356}],585:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":587,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],586:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],587:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],588:[function(e,t,n){;t.exports=function(){};},{\"./debug\":589,\"_process\":1232,\"dup\":11}],589:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],590:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@segment/analytics.js-integration\":591,\"component-clone\":1237,\"component-each\":1242,\"do-when\":1260,\"next-tick\":1318,\"segmentio-facade\":1348}],591:[function(e,t,n){;t.exports=function(){};},{\"./protos\":592,\"./statics\":593,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":595,\"dup\":14,\"slug-component\":1356}],592:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":594,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],593:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],594:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],595:[function(e,t,n){;t.exports=function(){};},{\"./debug\":596,\"_process\":1232,\"dup\":11}],596:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],597:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":598,\"component-each\":1242}],598:[function(e,t,n){;t.exports=function(){};},{\"./protos\":599,\"./statics\":600,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":602,\"dup\":14,\"slug-component\":1356}],599:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":601,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],600:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],601:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],602:[function(e,t,n){;t.exports=function(){};},{\"./debug\":603,\"_process\":1232,\"dup\":11}],603:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],604:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":605,\"segmentio-facade\":1348,\"use-https\":1377}],605:[function(e,t,n){;t.exports=function(){};},{\"./protos\":606,\"./statics\":607,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":608,\"dup\":7,\"extend\":610,\"slug-component\":1356}],606:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],607:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],608:[function(e,t,n){;t.exports=function(){};},{\"./debug\":609,\"_process\":1232,\"dup\":11}],609:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],610:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],611:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/alias\":59,\"@segment/analytics.js-integration\":612}],612:[function(e,t,n){;t.exports=function(){};},{\"./protos\":613,\"./statics\":614,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":616,\"dup\":14,\"slug-component\":1356}],613:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":615,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],614:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],615:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],616:[function(e,t,n){;t.exports=function(){};},{\"./debug\":617,\"_process\":1232,\"dup\":11}],617:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],618:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":619}],619:[function(e,t,n){;t.exports=function(){};},{\"./protos\":620,\"./statics\":621,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":623,\"dup\":14,\"slug-component\":1356}],620:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":622,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],621:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],622:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],623:[function(e,t,n){;t.exports=function(){};},{\"./debug\":624,\"_process\":1232,\"dup\":11}],624:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],625:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":626,\"@segment/fmt\":1156,\"component-url\":1251,\"do-when\":1260,\"is\":1280,\"jsonp\":1285}],626:[function(e,t,n){;t.exports=function(){};},{\"./protos\":627,\"./statics\":628,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":630,\"dup\":14,\"slug-component\":1356}],627:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":629,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],628:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],629:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],630:[function(e,t,n){;t.exports=function(){};},{\"./debug\":631,\"_process\":1232,\"dup\":11}],631:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],632:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":633,\"@segment/fmt\":1156,\"component-url\":1251,\"do-when\":1260,\"is\":1280,\"jsonp\":1285}],633:[function(e,t,n){;t.exports=function(){};},{\"./protos\":634,\"./statics\":635,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":637,\"dup\":14,\"slug-component\":1356}],634:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":636,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],635:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],636:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],637:[function(e,t,n){;t.exports=function(){};},{\"./debug\":638,\"_process\":1232,\"dup\":11}],638:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],639:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":640,\"component-each\":1242,\"component-querystring\":1248,\"to-no-case\":1366}],640:[function(e,t,n){;t.exports=function(){};},{\"./protos\":641,\"./statics\":642,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":644,\"dup\":14,\"slug-component\":1356}],641:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":643,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],642:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],643:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],644:[function(e,t,n){;t.exports=function(){};},{\"./debug\":645,\"_process\":1232,\"dup\":11}],645:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],646:[function(e,t,n){;var h=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=h(\"empty\");},{\"@ndhoule/includes\":37,\"@ndhoule/pick\":40,\"@segment/alias\":59,\"@segment/analytics.js-integration\":647,\"@segment/convert-dates\":1152,\"@segment/to-iso-string\":1177,\"component-indexof\":1246,\"is\":1280,\"obj-case\":1323}],647:[function(e,t,n){;t.exports=function(){};},{\"./protos\":648,\"./statics\":649,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":651,\"dup\":14,\"slug-component\":1356}],648:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":650,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],649:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],650:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],651:[function(e,t,n){;t.exports=function(){};},{\"./debug\":652,\"_process\":1232,\"dup\":11}],652:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],653:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":654,\"do-when\":1260,\"obj-case\":1323,\"reject\":1340}],654:[function(e,t,n){;t.exports=function(){};},{\"./protos\":655,\"./statics\":656,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":657,\"dup\":7,\"extend\":659,\"slug-component\":1356}],655:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],656:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],657:[function(e,t,n){;t.exports=function(){};},{\"./debug\":658,\"_process\":1232,\"dup\":11}],658:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],659:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],660:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":661,\"component-bind\":1236,\"do-when\":1260,\"is\":1280}],661:[function(e,t,n){;t.exports=function(){};},{\"./protos\":662,\"./statics\":663,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":665,\"dup\":14,\"slug-component\":1356}],662:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":664,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],663:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],664:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],665:[function(e,t,n){;t.exports=function(){};},{\"./debug\":666,\"_process\":1232,\"dup\":11}],666:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],667:[function(e,t,n){;var u=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=u(\"empty\");},{\"@segment/analytics.js-integration\":668,\"component-each\":1242,\"global-queue\":1266,\"segmentio-facade\":1348}],668:[function(e,t,n){;t.exports=function(){};},{\"./protos\":669,\"./statics\":670,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":671,\"dup\":7,\"extend\":673,\"slug-component\":1356}],669:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],670:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],671:[function(e,t,n){;t.exports=function(){};},{\"./debug\":672,\"_process\":1232,\"dup\":11}],672:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],673:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],674:[function(e,t,n){;\"use strict\";function o(e){i(e,function(e,t){r(\"setVariable\",e,t)})}var i=e(\"component-each\"),a=e(\"@segment/analytics.js-integration\"),r=e(\"global-queue\")(\"_mfq\"),s=t.exports=a(\"Mouseflow\").assumesPageview().global(\"_mfq\").global(\"mouseflow\").global(\"mouseflowHtmlDelay\").option(\"apiKey\",\"\").option(\"mouseflowHtmlDelay\",0).tag('<script src=\"//cdn.mouseflow.com/projects/{{ apiKey }}.js\">');s.prototype.initialize=function(){window.mouseflowHtmlDelay=this.options.mouseflowHtmlDelay;this.load(this.ready)};s.prototype.loaded=function(){return!!window.mouseflow};s.prototype.page=function(e){r(\"newPageView\",e.path())};s.prototype.identify=function(e){o(e.traits())};s.prototype.track=function(e){var t=e.properties();t.event=e.event();o(t)};},{\"@segment/analytics.js-integration\":675,\"component-each\":1242,\"global-queue\":1266}],675:[function(e,t,n){;arguments[4][7][0].apply(n,arguments);},{\"./protos\":676,\"./statics\":677,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":678,\"dup\":7,\"extend\":680,\"slug-component\":1356}],676:[function(e,t,n){;arguments[4][8][0].apply(n,arguments);},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],677:[function(e,t,n){;arguments[4][9][0].apply(n,arguments);},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],678:[function(e,t,n){;arguments[4][11][0].apply(n,arguments);},{\"./debug\":679,\"_process\":1232,\"dup\":11}],679:[function(e,t,n){;arguments[4][12][0].apply(n,arguments);},{\"dup\":12,\"ms\":1313}],680:[function(e,t,n){;arguments[4][10][0].apply(n,arguments);},{\"dup\":10}],681:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":682,\"component-each\":1242,\"is\":1280,\"use-https\":1377}],682:[function(e,t,n){;t.exports=function(){};},{\"./protos\":683,\"./statics\":684,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":686,\"dup\":14,\"slug-component\":1356}],683:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":685,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],684:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],685:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],686:[function(e,t,n){;t.exports=function(){};},{\"./debug\":687,\"_process\":1232,\"dup\":11}],687:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],688:[function(e,t,n){;var u=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=u(\"empty\");},{\"@segment/analytics.js-integration\":689,\"component-querystring\":1248,\"js-sha256\":1283,\"segmentio-facade\":1348,\"to-no-case\":696}],689:[function(e,t,n){;t.exports=function(){};},{\"./protos\":690,\"./statics\":691,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":694,\"dup\":14,\"slug-component\":1356}],690:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":693,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":692}],691:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],692:[function(e,t,n){;t.exports=function(){};},{\"dup\":430}],693:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],694:[function(e,t,n){;t.exports=function(){};},{\"./debug\":695,\"_process\":1232,\"dup\":11}],695:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],696:[function(e,t,n){;t.exports=function(){};},{\"dup\":434}],697:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":698,\"global-queue\":1266}],698:[function(e,t,n){;t.exports=function(){};},{\"./protos\":699,\"./statics\":700,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":702,\"dup\":14,\"slug-component\":1356}],699:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":701,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],700:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],701:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],702:[function(e,t,n){;t.exports=function(){};},{\"./debug\":703,\"_process\":1232,\"dup\":11}],703:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],704:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@segment/analytics.js-integration\":705,\"dateformat\":1257,\"obj-case\":1323,\"reject\":1340}],705:[function(e,t,n){;t.exports=function(){};},{\"./protos\":706,\"./statics\":707,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":708,\"dup\":7,\"extend\":710,\"slug-component\":1356}],706:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],707:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],708:[function(e,t,n){;t.exports=function(){};},{\"./debug\":709,\"_process\":1232,\"dup\":11}],709:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],710:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],711:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":712}],712:[function(e,t,n){;t.exports=function(){};},{\"./protos\":713,\"./statics\":714,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":715,\"dup\":7,\"extend\":717,\"slug-component\":1356}],713:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],714:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],715:[function(e,t,n){;t.exports=function(){};},{\"./debug\":716,\"_process\":1232,\"dup\":11}],716:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],717:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],718:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/alias\":59,\"@segment/analytics.js-integration\":719}],719:[function(e,t,n){;t.exports=function(){};},{\"./protos\":720,\"./statics\":721,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":723,\"dup\":14,\"slug-component\":1356}],720:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":722,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],721:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],722:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],723:[function(e,t,n){;t.exports=function(){};},{\"./debug\":724,\"_process\":1232,\"dup\":11}],724:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],725:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@segment/analytics.js-integration\":726,\"next-tick\":1318,\"use-https\":1377}],726:[function(e,t,n){;t.exports=function(){};},{\"./protos\":727,\"./statics\":728,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":730,\"dup\":14,\"slug-component\":1356}],727:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":729,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],728:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],729:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],730:[function(e,t,n){;t.exports=function(){};},{\"./debug\":731,\"_process\":1232,\"dup\":11}],731:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],732:[function(e,t,n){;var d=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=d(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/map\":39,\"@segment/analytics.js-integration\":733,\"@segment/to-iso-string\":1177,\"obj-case\":1323,\"type-of\":1373}],733:[function(e,t,n){;t.exports=function(){};},{\"./protos\":734,\"./statics\":735,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":737,\"dup\":14,\"slug-component\":1356}],734:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":736,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],735:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],736:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],737:[function(e,t,n){;t.exports=function(){};},{\"./debug\":738,\"_process\":1232,\"dup\":11}],738:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],739:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":740}],740:[function(e,t,n){;t.exports=function(){};},{\"./protos\":741,\"./statics\":742,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":744,\"dup\":14,\"slug-component\":1356}],741:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":743,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],742:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],743:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],744:[function(e,t,n){;t.exports=function(){};},{\"./debug\":745,\"_process\":1232,\"dup\":11}],745:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],746:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/each\":32,\"@ndhoule/foldl\":36,\"@ndhoule/keys\":38,\"@ndhoule/values\":42,\"@segment/analytics.js-integration\":747,\"global-queue\":1266,\"next-tick\":754}],747:[function(e,t,n){;t.exports=function(){};},{\"./protos\":748,\"./statics\":749,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":751,\"dup\":7,\"extend\":753,\"slug-component\":1356}],748:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":750,\"to-no-case\":1366}],749:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],750:[function(e,t,n){;t.exports=function(){};},{\"_process\":1232,\"dup\":354,\"timers\":1361}],751:[function(e,t,n){;t.exports=function(){};},{\"./debug\":752,\"_process\":1232,\"dup\":11}],752:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],753:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],754:[function(e,t,n){;t.exports=function(){};},{\"_process\":1232,\"dup\":358,\"timers\":1361}],755:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":756,\"segmentio-facade\":1348,\"to-no-case\":763}],756:[function(e,t,n){;t.exports=function(){};},{\"./protos\":757,\"./statics\":758,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":761,\"dup\":14,\"slug-component\":1356}],757:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":760,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":759}],758:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],759:[function(e,t,n){;t.exports=function(){};},{\"dup\":430}],760:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],761:[function(e,t,n){;t.exports=function(){};},{\"./debug\":762,\"_process\":1232,\"dup\":11}],762:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],763:[function(e,t,n){;t.exports=function(){};},{\"dup\":434}],764:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":765,\"@segment/load-script\":1160,\"component-cookie\":1238,\"component-querystring\":769,\"use-https\":1377}],765:[function(e,t,n){;t.exports=function(){};},{\"./protos\":766,\"./statics\":767,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":771,\"dup\":14,\"slug-component\":1356}],766:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":768,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],767:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],768:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],769:[function(e,t,n){;t.exports=function(){};},{\"trim\":1371,\"type\":770}],770:[function(e,t,n){var o=Object.prototype.toString;t.exports=function(e){switch(o.call(e)){case\"[object Date]\":return\"date\";case\"[object RegExp]\":return\"regexp\";case\"[object Arguments]\":return\"arguments\";case\"[object Array]\":return\"array\";case\"[object Error]\":return\"error\"}if(null===e)return\"null\";if(e===undefined)return\"undefined\";if(e!==e)return\"nan\";if(e&&1===e.nodeType)return\"element\";e=e.valueOf?e.valueOf():Object.prototype.valueOf.apply(e);return typeof e}},{}],771:[function(e,t,n){;t.exports=function(){};},{\"./debug\":772,\"_process\":1232,\"dup\":11}],772:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],773:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/defaults\":30,\"@segment/analytics.js-integration\":774,\"do-when\":1260,\"is\":781,\"json3\":1284,\"reject\":1340}],774:[function(e,t,n){;t.exports=function(){};},{\"./protos\":775,\"./statics\":776,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":778,\"dup\":7,\"extend\":780,\"slug-component\":1356}],775:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":777,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],776:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],777:[function(e,t,n){\"use strict\";var o,i=Object.prototype,a=i.hasOwnProperty,r=i.toString;\"function\"==typeof Symbol&&(o=Symbol.prototype.valueOf);var s;\"function\"==typeof BigInt&&(s=BigInt.prototype.valueOf);var u=function(e){return e!==e},l={\"boolean\":1,number:1,string:1,undefined:1},c=/^([A-Za-z0-9+\\/]{4})*([A-Za-z0-9+\\/]{4}|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{2}==)$/,d=/^[A-Fa-f0-9]+$/,p={};p.a=p.type=function(e,t){return typeof e===t};p.defined=function(e){return void 0!==e};p.empty=function(e){var t,n=r.call(e);if(\"[object Array]\"===n||\"[object Arguments]\"===n||\"[object String]\"===n)return 0===e.length;if(\"[object Object]\"===n){for(t in e)if(a.call(e,t))return!1;return!0}return!e};p.equal=function(e,t){if(e===t)return!0;var n,o=r.call(e);if(o!==r.call(t))return!1;if(\"[object Object]\"===o){for(n in e)if(!(p.equal(e[n],t[n])&&n in t))return!1;for(n in t)if(!(p.equal(e[n],t[n])&&n in e))return!1;return!0}if(\"[object Array]\"===o){n=e.length;if(n!==t.length)return!1;for(;n--;)if(!p.equal(e[n],t[n]))return!1;return!0}return\"[object Function]\"===o?e.prototype===t.prototype:\"[object Date]\"===o&&e.getTime()===t.getTime()};p.hosted=function(e,t){var n=typeof t[e];return\"object\"===n?!!t[e]:!l[n]};p.instance=p[\"instanceof\"]=function(e,t){return e instanceof t};p.nil=p[\"null\"]=function(e){return null===e};p.undef=p.undefined=function(e){return void 0===e};p.args=p.arguments=function(e){var t=\"[object Arguments]\"===r.call(e),n=!p.array(e)&&p.arraylike(e)&&p.object(e)&&p.fn(e.callee);return t||n};p.array=Array.isArray||function(e){return\"[object Array]\"===r.call(e)};p.args.empty=function(e){return p.args(e)&&0===e.length};p.array.empty=function(e){return p.array(e)&&0===e.length};p.arraylike=function(e){return!!e&&!p.bool(e)&&a.call(e,\"length\")&&isFinite(e.length)&&p.number(e.length)&&e.length>=0};p.bool=p[\"boolean\"]=function(e){return\"[object Boolean]\"===r.call(e)};p[\"false\"]=function(e){return p.bool(e)&&!1===Boolean(Number(e))};p[\"true\"]=function(e){return p.bool(e)&&!0===Boolean(Number(e))};p.date=function(e){return\"[object Date]\"===r.call(e)};p.date.valid=function(e){return p.date(e)&&!isNaN(Number(e))};p.element=function(e){return e!==undefined&&\"undefined\"!=typeof HTMLElement&&e instanceof HTMLElement&&1===e.nodeType};p.error=function(e){return\"[object Error]\"===r.call(e)};p.fn=p[\"function\"]=function(e){if(\"undefined\"!=typeof window&&e===window.alert)return!0;var t=r.call(e);return\"[object Function]\"===t||\"[object GeneratorFunction]\"===t||\"[object AsyncFunction]\"===t};p.number=function(e){return\"[object Number]\"===r.call(e)};p.infinite=function(e){return e===Infinity||e===-Infinity};p.decimal=function(e){return p.number(e)&&!u(e)&&!p.infinite(e)&&e%1!=0};p.divisibleBy=function(e,t){var n=p.infinite(e),o=p.infinite(t),i=p.number(e)&&!u(e)&&p.number(t)&&!u(t)&&0!==t;return n||o||i&&e%t==0};p.integer=p[\"int\"]=function(e){return p.number(e)&&!u(e)&&e%1==0};p.maximum=function(e,t){if(u(e))throw new TypeError(\"NaN is not a valid value\");if(!p.arraylike(t))throw new TypeError(\"second argument must be array-like\");for(var n=t.length;--n>=0;)if(e<t[n])return!1;return!0};p.minimum=function(e,t){if(u(e))throw new TypeError(\"NaN is not a valid value\");if(!p.arraylike(t))throw new TypeError(\"second argument must be array-like\");for(var n=t.length;--n>=0;)if(e>t[n])return!1;return!0};p.nan=function(e){return!p.number(e)||e!==e};p.even=function(e){return p.infinite(e)||p.number(e)&&e===e&&e%2==0};p.odd=function(e){return p.infinite(e)||p.number(e)&&e===e&&e%2!=0};p.ge=function(e,t){if(u(e)||u(t))throw new TypeError(\"NaN is not a valid value\");return!p.infinite(e)&&!p.infinite(t)&&e>=t};p.gt=function(e,t){if(u(e)||u(t))throw new TypeError(\"NaN is not a valid value\");return!p.infinite(e)&&!p.infinite(t)&&e>t};p.le=function(e,t){if(u(e)||u(t))throw new TypeError(\"NaN is not a valid value\");return!p.infinite(e)&&!p.infinite(t)&&e<=t};p.lt=function(e,t){if(u(e)||u(t))throw new TypeError(\"NaN is not a valid value\");return!p.infinite(e)&&!p.infinite(t)&&e<t};p.within=function(e,t,n){if(u(e)||u(t)||u(n))throw new TypeError(\"NaN is not a valid value\");if(!p.number(e)||!p.number(t)||!p.number(n))throw new TypeError(\"all arguments must be numbers\");return p.infinite(e)||p.infinite(t)||p.infinite(n)||e>=t&&e<=n};p.object=function(e){return\"[object Object]\"===r.call(e)};p.primitive=function(e){return!e||!(\"object\"==typeof e||p.object(e)||p.fn(e)||p.array(e))};p.hash=function(e){return p.object(e)&&e.constructor===Object&&!e.nodeType&&!e.setInterval};p.regexp=function(e){return\"[object RegExp]\"===r.call(e)};p.string=function(e){return\"[object String]\"===r.call(e)};p.base64=function(e){return p.string(e)&&(!e.length||c.test(e))};p.hex=function(e){return p.string(e)&&(!e.length||d.test(e))};p.symbol=function(e){return\"function\"==typeof Symbol&&\"[object Symbol]\"===r.call(e)&&\"symbol\"==typeof o.call(e)};p.bigint=function(e){return\"function\"==typeof BigInt&&\"[object BigInt]\"===r.call(e)&&\"bigint\"==typeof s.call(e)};t.exports=p},{}],778:[function(e,t,n){;t.exports=function(){};},{\"./debug\":779,\"_process\":1232,\"dup\":11}],779:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],780:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],781:[function(e,t,n){;t.exports=function(){};},{}],782:[function(e,t,n){;var l=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=l(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":783,\"obj-case\":1323,\"segmentio-facade\":1348}],783:[function(e,t,n){;t.exports=function(){};},{\"./protos\":784,\"./statics\":785,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":786,\"dup\":7,\"extend\":788,\"slug-component\":1356}],784:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],785:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],786:[function(e,t,n){;t.exports=function(){};},{\"./debug\":787,\"_process\":1232,\"dup\":11}],787:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],788:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],789:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":790,\"global-queue\":1266}],790:[function(e,t,n){;t.exports=function(){};},{\"./protos\":791,\"./statics\":792,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":793,\"dup\":7,\"extend\":795,\"slug-component\":1356}],791:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],792:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],793:[function(e,t,n){;t.exports=function(){};},{\"./debug\":794,\"_process\":1232,\"dup\":11}],794:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],795:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],796:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":797}],797:[function(e,t,n){;t.exports=function(){};},{\"./protos\":798,\"./statics\":799,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":800,\"dup\":7,\"extend\":802,\"slug-component\":1356}],798:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],799:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],800:[function(e,t,n){;t.exports=function(){};},{\"./debug\":801,\"_process\":1232,\"dup\":11}],801:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],802:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],803:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":804,\"json3\":1284}],804:[function(e,t,n){;t.exports=function(){};},{\"./protos\":805,\"./statics\":806,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":808,\"dup\":14,\"slug-component\":1356}],805:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":807,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],806:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],807:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],808:[function(e,t,n){;t.exports=function(){};},{\"./debug\":809,\"_process\":1232,\"dup\":11}],809:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],810:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":811,\"global-queue\":1266}],811:[function(e,t,n){;t.exports=function(){};},{\"./protos\":812,\"./statics\":813,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":815,\"dup\":14,\"slug-component\":1356}],812:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":814,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],813:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],814:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],815:[function(e,t,n){;t.exports=function(){};},{\"./debug\":816,\"_process\":1232,\"dup\":11}],816:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],817:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":818,\"analytics-events\":1216}],818:[function(e,t,n){;t.exports=function(){};},{\"./protos\":819,\"./statics\":820,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":822,\"dup\":14,\"slug-component\":1356}],819:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":821,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],820:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],821:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],822:[function(e,t,n){;t.exports=function(){};},{\"./debug\":823,\"_process\":1232,\"dup\":11}],823:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],824:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":825,\"component-each\":1242,\"global-queue\":1266,\"is\":1280}],825:[function(e,t,n){;t.exports=function(){};},{\"./protos\":826,\"./statics\":827,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":829,\"dup\":14,\"slug-component\":1356}],826:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":828,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],827:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],828:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],829:[function(e,t,n){;t.exports=function(){};},{\"./debug\":830,\"_process\":1232,\"dup\":11}],830:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],831:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":832,\"do-when\":1260,\"global-queue\":1266,\"segmentio-facade\":1348}],832:[function(e,t,n){;t.exports=function(){};},{\"./protos\":833,\"./statics\":834,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":836,\"dup\":14,\"slug-component\":1356}],833:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":835,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],834:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],835:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],836:[function(e,t,n){;t.exports=function(){};},{\"./debug\":837,\"_process\":1232,\"dup\":11}],837:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],838:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@segment/analytics.js-integration\":839,\"global-queue\":1266,\"is\":1280,\"obj-case\":1323,\"use-https\":1377}],839:[function(e,t,n){;t.exports=function(){};},{\"./protos\":840,\"./statics\":841,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":842,\"dup\":7,\"extend\":844,\"slug-component\":1356}],840:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],841:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],842:[function(e,t,n){;t.exports=function(){};},{\"./debug\":843,\"_process\":1232,\"dup\":11}],843:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],844:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],845:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":846,\"component-each\":1242,\"global-queue\":1266}],846:[function(e,t,n){;t.exports=function(){};},{\"./protos\":847,\"./statics\":848,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":850,\"dup\":14,\"slug-component\":1356}],847:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":849,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],848:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],849:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],850:[function(e,t,n){;t.exports=function(){};},{\"./debug\":851,\"_process\":1232,\"dup\":11}],851:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],852:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":853}],853:[function(e,t,n){;t.exports=function(){};},{\"./protos\":854,\"./statics\":855,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":857,\"dup\":14,\"slug-component\":1356}],854:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":856,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],855:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],856:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],857:[function(e,t,n){;t.exports=function(){};},{\"./debug\":858,\"_process\":1232,\"dup\":11}],858:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],859:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/alias\":59,\"@segment/analytics.js-integration\":860,\"@segment/convert-dates\":1152,\"obj-case\":1323}],860:[function(e,t,n){;t.exports=function(){};},{\"./protos\":861,\"./statics\":862,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":864,\"dup\":14,\"slug-component\":1356}],861:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":863,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],862:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],863:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],864:[function(e,t,n){;t.exports=function(){};},{\"./debug\":865,\"_process\":1232,\"dup\":11}],865:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],866:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@segment/analytics.js-integration\":867,\"component-each\":1242,\"segmentio-facade\":1348}],867:[function(e,t,n){;t.exports=function(){};},{\"./protos\":868,\"./statics\":869,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":871,\"dup\":14,\"slug-component\":1356}],868:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":870,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],869:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],870:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],871:[function(e,t,n){;t.exports=function(){};},{\"./debug\":872,\"_process\":1232,\"dup\":11}],872:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],873:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":874,\"component-each\":1242}],874:[function(e,t,n){;t.exports=function(){};},{\"./protos\":875,\"./statics\":876,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":878,\"dup\":14,\"slug-component\":1356}],875:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":877,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],876:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],877:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],878:[function(e,t,n){;t.exports=function(){};},{\"./debug\":879,\"_process\":1232,\"dup\":11}],879:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],880:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":881}],881:[function(e,t,n){;t.exports=function(){};},{\"./protos\":882,\"./statics\":883,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":885,\"dup\":14,\"slug-component\":1356}],882:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":884,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],883:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],884:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],885:[function(e,t,n){;t.exports=function(){};},{\"./debug\":886,\"_process\":1232,\"dup\":11}],886:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],887:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":888}],888:[function(e,t,n){;t.exports=function(){};},{\"./protos\":889,\"./statics\":890,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":892,\"dup\":14,\"slug-component\":1356}],889:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":891,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],890:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],891:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],892:[function(e,t,n){;t.exports=function(){};},{\"./debug\":893,\"_process\":1232,\"dup\":11}],893:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],894:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":895,\"obj-case\":1323}],895:[function(e,t,n){;t.exports=function(){};},{\"./protos\":896,\"./statics\":897,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":899,\"dup\":14,\"slug-component\":1356}],896:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":898,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],897:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],898:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],899:[function(e,t,n){;t.exports=function(){};},{\"./debug\":900,\"_process\":1232,\"dup\":11}],900:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],901:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":902}],902:[function(e,t,n){;t.exports=function(){};},{\"./protos\":903,\"./statics\":904,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":906,\"dup\":14,\"slug-component\":1356}],903:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":905,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],904:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],905:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],906:[function(e,t,n){;t.exports=function(){};},{\"./debug\":907,\"_process\":1232,\"dup\":11}],907:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],908:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":909}],909:[function(e,t,n){;t.exports=function(){};},{\"./protos\":910,\"./statics\":911,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":913,\"dup\":14,\"slug-component\":1356}],910:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":912,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],911:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],912:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],913:[function(e,t,n){;t.exports=function(){};},{\"./debug\":914,\"_process\":1232,\"dup\":11}],914:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],915:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":916,\"do-when\":1260}],916:[function(e,t,n){;t.exports=function(){};},{\"./protos\":917,\"./statics\":918,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":920,\"dup\":14,\"slug-component\":1356}],917:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":919,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],918:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],919:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],920:[function(e,t,n){;t.exports=function(){};},{\"./debug\":921,\"_process\":1232,\"dup\":11}],921:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],922:[function(e,t,n){;\"use strict\";function o(e,t,n){0===e.length&&n(null,null);for(var o=!1,a=0,r=null,s=0;s<e.length;s++){i(e[s],t,function(t,i){a++;if(t)r=t;else if(i&&i.id&&!o){o=!0;n(null,i)}a!==e.length||o||n(r,null)})}}function i(e,t,n){a(\"https://\"+e+\"/v1/id/\"+t,function(t,o){t?n(t,null):n(null,{domain:e,id:o&&o.id||null})})}function a(e,t){var n=new XMLHttpRequest;n.open(\"GET\",e,!0);n.withCredentials=!0;n.onreadystatechange=function(){n.readyState===XMLHttpRequest.DONE&&(n.status>=200&&n.status<300?t(null,n.responseText?f.parse(n.responseText):null):t(n.statusText||\"Unknown Error\",null))};n.send()}function r(e,t){var n=new XMLHttpRequest;n.open(\"GET\",e,!0);n.withCredentials=!0;n.onreadystatechange=function(){n.readyState===XMLHttpRequest.DONE&&(n.status>=200&&n.status<300?t(null,n.responseText):t(n.statusText||n.responseText||\"Unknown Error\",null))};n.send()}function s(e){return e.split(\".\").splice(-2).join(\".\")}var u=e(\"@segment/ad-params\"),l=e(\"component-clone\"),c=e(\"component-cookie\"),d=e(\"@ndhoule/extend\"),p=e(\"@segment/analytics.js-integration\"),f=e(\"json3\"),h=e(\"@ndhoule/keys\"),m=e(\"yields-store\"),b=e(\"@segment/protocol\"),g=e(\"@segment/send-json\"),y=e(\"@segment/top-domain\"),v=e(\"@segment/utm-params\"),w=e(\"uuid\").v4,x=e(\"@segment/localstorage-retry\"),k={maxage:31536e6,secure:!1,path:\"/\"},A={maxRetryDelay:36e4,minRetryDelay:1e3,backoffFactor:2,maxAttempts:10,maxItems:100},_=n=t.exports=p(\"Segment.io\").option(\"apiKey\",\"\").option(\"apiHost\",\"api.segment.io/v1\").option(\"crossDomainIdServers\",[]).option(\"deleteCrossDomainId\",!1).option(\"saveCrossDomainIdInLocalStorage\",!0).option(\"retryQueue\",!0).option(\"addBundledMetadata\",!1).option(\"unbundledIntegrations\",[]);n.storage=function(){return\"file:\"===b()||\"chrome-extension:\"===b()?m:c};n.global=window;n.sendJsonWithTimeout=function(e,t,n,o,i){function a(){4===r.readyState&&(429===r.status||r.status>=500&&r.status<600?i(new Error(\"HTTP Error \"+r.status+\" (\"+r.statusText+\")\")):i(null,r))}if(\"xhr\"===g.type){var r=new XMLHttpRequest;r.onerror=i;r.onreadystatechange=a;r.open(\"POST\",e,!0);r.timeout=o;r.ontimeout=i;for(var s in n)r.setRequestHeader(s,n[s]);r.send(f.stringify(t))}else g(e,t,n,i)};_.prototype.initialize=function(){var e=this;if(this.options.retryQueue){this._lsqueue=new x(\"segmentio\",A,function(t,n){var o=t;o.msg.sentAt=new Date;_.sendJsonWithTimeout(o.url,o.msg,o.headers,1e4,function(t,i){e.debug(\"sent %O, received %O\",o.msg,[t,i]);if(t)return n(t);n(null,i)})});this._lsqueue.start()}this.ready();this.analytics.on(\"invoke\",function(t){var n=t.action(),o=\"on\"+t.action();e.debug(\"%s %o\",n,t);e[o]&&e[o](t);e.ready()});this.deleteCrossDomainIdIfNeeded();this.isCrossDomainAnalyticsEnabled()&&this.retrieveCrossDomainId()};_.prototype.loaded=function(){return!0};_.prototype.onpage=function(e){this.enqueue(\"/p\",e.json())};_.prototype.onidentify=function(e){this.enqueue(\"/i\",e.json())};_.prototype.ongroup=function(e){this.enqueue(\"/g\",e.json())};_.prototype.ontrack=function(e){var t=e.json();delete t.traits;this.enqueue(\"/t\",t)};_.prototype.onalias=function(e){var t=e.json(),n=this.analytics.user();t.previousId=t.previousId||t.from||n.id()||n.anonymousId();t.userId=t.userId||t.to;delete t.from;delete t.to;this.enqueue(\"/a\",t)};_.prototype.normalize=function(e){var t=e;this.debug(\"normalize %o\",t);var o=this.analytics.user(),i=n.global,a=i.location.search,r=t.context=t.context||t.options||{};delete t.options;t.writeKey=this.options.apiKey;r.userAgent=navigator.userAgent;var s=navigator.userLanguage||navigator.language;\"undefined\"==typeof r.locale&&void 0!==s&&(r.locale=s);r.library||(r.library={name:\"analytics.js\",version:this.analytics.VERSION});if(this.isCrossDomainAnalyticsEnabled()){var u=this.getCachedCrossDomainId();u&&(r.traits?r.traits.crossDomainId||(r.traits.crossDomainId=u):r.traits={crossDomainId:u})}a&&!r.campaign&&(r.campaign=v(a));this.referrerId(a,r);t.userId=t.userId||o.id();t.anonymousId=o.anonymousId();t.sentAt=new Date;var l=this.analytics.failedInitializations||[];l.length>0&&(t._metadata={failedInitializations:l});if(this.options.addBundledMetadata){var c=h(this.analytics.Integrations);t._metadata=t._metadata||{};t._metadata.bundled=c;t._metadata.unbundled=this.options.unbundledIntegrations}this.debug(\"normalized %o\",t);this.ampId(r);return t};_.prototype.ampId=function(e){var t=this.cookie(\"segment_amp_id\");t&&(e.amp={id:t})};_.prototype.enqueue=function(e,t,n){var o=\"https://\"+this.options.apiHost+e,i={\"Content-Type\":\"text/plain\"},a=this.normalize(t);f.stringify(a).length>32e3&&this.debug(\"message must be less than 32kb %O\",a);this.debug(\"enqueueing %O\",a);var r=this;this.options.retryQueue?this._lsqueue.addItem({url:o,headers:i,msg:a}):g(o,a,i,function(e,t){r.debug(\"sent %O, received %O\",a,[e,t]);if(n){if(e)return n(e);n(null,t)}})};_.prototype.cookie=function(e,t){var o=_.storage();if(1===arguments.length)return o(e);var i=n.global,a=i.location.href,r=\".\"+y(a);\".\"===r&&(r=\"\");this.debug(\"store domain %s -> %s\",a,r);var s=l(k);s.domain=r;this.debug(\"store %s, %s, %o\",e,t,s);o(e,t,s);if(!o(e)){delete s.domain;this.debug(\"fallback store %s, %s, %o\",e,t,s);o(e,t,s)}};_.prototype.referrerId=function(e,t){var n,o=this.cookie(\"s:context.referrer\");o&&(o=f.parse(o));e&&(n=u(e));n=n||o;if(n){t.referrer=d(t.referrer||{},n);this.cookie(\"s:context.referrer\",f.stringify(n))}};_.prototype.isCrossDomainAnalyticsEnabled=function(){return!!this.options.crossDomainIdServers&&this.options.crossDomainIdServers.length>0};_.prototype.retrieveCrossDomainId=function(e){if(this.isCrossDomainAnalyticsEnabled()){var t=this.getCachedCrossDomainId();if(t)e&&e(null,{crossDomainId:t});else{for(var n=this,i=this.options.apiKey,a=s(window.location.hostname),r=[],u=0;u<this.options.crossDomainIdServers.length;u++){var l=this.options.crossDomainIdServers[u];s(l)!==a&&r.push(l)}o(r,i,function(t,o){if(t)e&&e(t,null);else{var i=null,a=null;if(o){i=o.id;a=o.domain}else{i=w();a=window.location.hostname}n.saveCrossDomainId(i);n.analytics.identify({crossDomainId:i});e&&e(null,{crossDomainId:i,fromDomain:a})}})}}else e&&e(\"crossDomainId not enabled\",null)};_.prototype.getCachedCrossDomainId=function(){return this.options.saveCrossDomainIdInLocalStorage?m(\"seg_xid\"):this.cookie(\"seg_xid\")};_.prototype.saveCrossDomainId=function(e){if(this.options.saveCrossDomainIdInLocalStorage)for(var t=this,n=s(window.location.hostname),o=0;o<this.options.crossDomainIdServers.length;o++){var i=this.options.crossDomainIdServers[o];if(s(i)===n){var a=this.options.apiKey,u=\"https://\"+i+\"/v1/saveId?writeKey=\"+a+\"&xid=\"+e;r(u,function(n,o){n?t.debug(\"could not save id on %O, received %O\",u,[n,o]):m(\"seg_xid\",e)});return}}else this.cookie(\"seg_xid\",e)};_.prototype.deleteCrossDomainIdIfNeeded=function(){if(this.options.deleteCrossDomainId){if(this.cookie(\"seg_xid\")){this.cookie(\"seg_xid\",null);this.cookie(\"seg_xid_fd\",null);this.cookie(\"seg_xid_ts\",null)}m(\"seg_xid\")&&m(\"seg_xid\",null);if(this.analytics.user().traits().crossDomainId){var e=this.analytics.user().traits();delete e.crossDomainId;this.analytics.user()._setTraits(e)}}};},{\"@ndhoule/extend\":35,\"@ndhoule/keys\":38,\"@segment/ad-params\":57,\"@segment/analytics.js-integration\":923,\"@segment/localstorage-retry\":1162,\"@segment/protocol\":1174,\"@segment/send-json\":1175,\"@segment/top-domain\":1178,\"@segment/utm-params\":1185,\"component-clone\":1237,\"component-cookie\":1238,\"json3\":1284,\"uuid\":930,\"yields-store\":1388}],923:[function(e,t,n){;arguments[4][14][0].apply(n,arguments);},{\"./protos\":924,\"./statics\":925,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":927,\"dup\":14,\"slug-component\":1356}],924:[function(e,t,n){;arguments[4][15][0].apply(n,arguments);},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":926,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],925:[function(e,t,n){;arguments[4][16][0].apply(n,arguments);},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],926:[function(e,t,n){;arguments[4][17][0].apply(n,arguments);},{\"dup\":17}],927:[function(e,t,n){;arguments[4][11][0].apply(n,arguments);},{\"./debug\":928,\"_process\":1232,\"dup\":11}],928:[function(e,t,n){;arguments[4][12][0].apply(n,arguments);},{\"dup\":12,\"ms\":1313}],929:[function(e,t,n){;(function(e){var n,o=e.crypto||e.msCrypto;if(o&&o.getRandomValues){var i=new Uint8Array(16);n=function(){o.getRandomValues(i);return i}}if(!n){var a=new Array(16);n=function(){for(var e,t=0;t<16;t++){0==(3&t)&&(e=4294967296*Math.random());a[t]=e>>>((3&t)<<3)&255}return a}}t.exports=n}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{});},{}],930:[function(e,t,n){;function o(e,t,n){var o=t&&n||0,i=0;t=t||[];e.toLowerCase().replace(/[0-9a-f]{2}/g,function(e){i<16&&(t[o+i++]=l[e])});for(;i<16;)t[o+i++]=0;return t}function i(e,t){var n=t||0,o=u;return o[e[n++]]+o[e[n++]]+o[e[n++]]+o[e[n++]]+\"-\"+o[e[n++]]+o[e[n++]]+\"-\"+o[e[n++]]+o[e[n++]]+\"-\"+o[e[n++]]+o[e[n++]]+\"-\"+o[e[n++]]+o[e[n++]]+o[e[n++]]+o[e[n++]]+o[e[n++]]+o[e[n++]]}function a(e,t,n){var o=t&&n||0,a=t||[];e=e||{};var r=e.clockseq!==undefined?e.clockseq:f,s=e.msecs!==undefined?e.msecs:(new Date).getTime(),u=e.nsecs!==undefined?e.nsecs:m+1,l=s-h+(u-m)/1e4;l<0&&e.clockseq===undefined&&(r=r+1&16383);(l<0||s>h)&&e.nsecs===undefined&&(u=0);if(u>=1e4)throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");h=s;m=u;f=r;s+=122192928e5;var c=(1e4*(268435455&s)+u)%4294967296;a[o++]=c>>>24&255;a[o++]=c>>>16&255;a[o++]=c>>>8&255;a[o++]=255&c;var d=s/4294967296*1e4&268435455;a[o++]=d>>>8&255;a[o++]=255&d;a[o++]=d>>>24&15|16;a[o++]=d>>>16&255;a[o++]=r>>>8|128;a[o++]=255&r;for(var b=e.node||p,g=0;g<6;g++)a[o+g]=b[g];return t||i(a)}function r(e,t,n){var o=t&&n||0;if(\"string\"==typeof e){t=\"binary\"==e?new Array(16):null;e=null}e=e||{};var a=e.random||(e.rng||s)();a[6]=15&a[6]|64;a[8]=63&a[8]|128;if(t)for(var r=0;r<16;r++)t[o+r]=a[r];return t||i(a)}for(var s=e(\"./rng\"),u=[],l={},c=0;c<256;c++){u[c]=(c+256).toString(16).substr(1);l[u[c]]=c}var d=s(),p=[1|d[0],d[1],d[2],d[3],d[4],d[5]],f=16383&(d[6]<<8|d[7]),h=0,m=0,b=r;b.v1=a;b.v4=r;b.parse=o;b.unparse=i;t.exports=b;},{\"./rng\":929}],931:[function(e,t,n){;\"use strict\";function o(e){return r(function(e,t,n){var o=e;null===t||\"\"===t||a.array(t)||(o[n]=t);if(a.array(t)){for(var i=[],r=0;r<t.length;r++)null!==t[r]&&\"\"!==t[r]&&i.push(t[r]);a.empty(i)||(o[n]=i)}return o},{},e)}var i=e(\"@segment/analytics.js-integration\"),a=e(\"is\"),r=e(\"@ndhoule/foldl\"),s=t.exports=i(\"Sentry\").global(\"Sentry\").option(\"config\",\"\").option(\"environment\",null).option(\"serverName\",null).option(\"release\",null).option(\"ignoreErrors\",[]).option(\"ignoreUrls\",[]).option(\"whitelistUrls\",[]).option(\"includePaths\",[]).option(\"maxMessageLength\",null).option(\"logger\",null).option(\"customVersionProperty\",null).option(\"debug\",!1).tag(\"sentry\",'<script src=\"https://browser.sentry-cdn.com/5.12.1/bundle.min.js\" integrity=\"sha384-y+an4eARFKvjzOivf/Z7JtMJhaN6b+lLQ5oFbBbUwZNNVir39cYtkjW1r6Xjbxg3\" crossorigin=\"anonymous\"><\\/script>').tag(\"plugin\",'<script src=\"https://browser.sentry-cdn.com/5.12.1/rewriteframes.min.js\" crossorigin=\"anonymous\"><\\/script>');s.prototype.initialize=function(){var e=this.options.customVersionProperty?window[this.options.customVersionProperty]:null,t={dsn:this.options.config,environment:this.options.environment,release:e||this.options.release,serverName:this.options.serverName,whitelistUrls:this.options.whitelistUrls,blacklistUrls:this.options.ignoreUrls,ignoreErrors:this.options.ignoreErrors,integrations:[],debug:this.options.debug},n=this.options.logger,i=[];this.options.includePaths.length>0&&(i=this.options.includePaths.map(function(e){var t;try{t=new RegExp(e)}catch(n){}return t}));var a=this;this.load(\"sentry\",function(){a.load(\"plugin\",function(){i.length>0&&t.integrations.push(new window.Sentry.Integrations.RewriteFrames({iteratee:function(e){for(var t=0;t<i.length;t++)try{if(e.filename.match(i[t])){e.in_app=!0;return e}}catch(n){}e.in_app=!1;return e}}));window.Sentry.init(o(t));n&&window.Sentry.setTag(\"logger\",n);a.ready()})})};s.prototype.loaded=function(){return a.object(window.Sentry)};s.prototype.identify=function(e){window.Sentry.setUser(e.traits())};},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":932,\"is\":1280}],932:[function(e,t,n){;arguments[4][14][0].apply(n,arguments);},{\"./protos\":933,\"./statics\":934,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":936,\"dup\":14,\"slug-component\":1356}],933:[function(e,t,n){;arguments[4][15][0].apply(n,arguments);},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":935,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],934:[function(e,t,n){;arguments[4][16][0].apply(n,arguments);},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],935:[function(e,t,n){;arguments[4][17][0].apply(n,arguments);},{\"dup\":17}],936:[function(e,t,n){;arguments[4][11][0].apply(n,arguments);},{\"./debug\":937,\"_process\":1232,\"dup\":11}],937:[function(e,t,n){;arguments[4][12][0].apply(n,arguments);},{\"dup\":12,\"ms\":1313}],938:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@segment/analytics.js-integration\":939,\"component-each\":1242,\"segmentio-facade\":1348}],939:[function(e,t,n){;t.exports=function(){};},{\"./protos\":940,\"./statics\":941,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":942,\"dup\":7,\"extend\":944,\"slug-component\":1356}],940:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],941:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],942:[function(e,t,n){;t.exports=function(){};},{\"./debug\":943,\"_process\":1232,\"dup\":11}],943:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],944:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],945:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/defaults\":30,\"@segment/analytics.js-integration\":946}],946:[function(e,t,n){;t.exports=function(){};},{\"./protos\":947,\"./statics\":948,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":950,\"dup\":14,\"slug-component\":1356}],947:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":949,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],948:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],949:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],950:[function(e,t,n){;t.exports=function(){};},{\"./debug\":951,\"_process\":1232,\"dup\":11}],951:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],952:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":953,\"component-each\":1242}],953:[function(e,t,n){;t.exports=function(){};},{\"./protos\":954,\"./statics\":955,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":957,\"dup\":14,\"slug-component\":1356}],954:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":956,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],955:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],956:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],957:[function(e,t,n){;t.exports=function(){};},{\"./debug\":958,\"_process\":1232,\"dup\":11}],958:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],959:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":960,\"is\":1280,\"next-tick\":1318}],960:[function(e,t,n){;t.exports=function(){};},{\"./protos\":961,\"./statics\":962,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":964,\"dup\":14,\"slug-component\":1356}],961:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":963,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],962:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],963:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],964:[function(e,t,n){;t.exports=function(){};},{\"./debug\":965,\"_process\":1232,\"dup\":11}],965:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],966:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":967,\"component-bind\":1236,\"do-when\":1260}],967:[function(e,t,n){;t.exports=function(){};},{\"./protos\":968,\"./statics\":969,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":971,\"dup\":14,\"slug-component\":1356}],968:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":970,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],969:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],970:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],971:[function(e,t,n){;t.exports=function(){};},{\"./debug\":972,\"_process\":1232,\"dup\":11}],972:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],973:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":974,\"component-each\":1242,\"segmentio-facade\":1348}],974:[function(e,t,n){;t.exports=function(){};},{\"./protos\":975,\"./statics\":976,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":978,\"dup\":14,\"slug-component\":1356}],975:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":977,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],976:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],977:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],978:[function(e,t,n){;t.exports=function(){};},{\"./debug\":979,\"_process\":1232,\"dup\":11}],979:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],980:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":981,\"do-when\":1260}],981:[function(e,t,n){;t.exports=function(){};},{\"./protos\":982,\"./statics\":983,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":984,\"dup\":7,\"extend\":986,\"slug-component\":1356}],982:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],983:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],984:[function(e,t,n){;t.exports=function(){};},{\"./debug\":985,\"_process\":1232,\"dup\":11}],985:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],986:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],987:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":988}],988:[function(e,t,n){;t.exports=function(){};},{\"./protos\":989,\"./statics\":990,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":992,\"dup\":14,\"slug-component\":1356}],989:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":991,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],990:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],991:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],992:[function(e,t,n){;t.exports=function(){};},{\"./debug\":993,\"_process\":1232,\"dup\":11}],993:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],994:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@segment/analytics.js-integration\":995}],995:[function(e,t,n){;t.exports=function(){};},{\"./protos\":996,\"./statics\":997,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":998,\"dup\":7,\"extend\":1e3,\"slug-component\":1356}],996:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],997:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],998:[function(e,t,n){;t.exports=function(){};},{\"./debug\":999,\"_process\":1232,\"dup\":11}],999:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1e3:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1001:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/keys\":38,\"@segment/analytics.js-integration\":1002,\"global-queue\":1266,\"is\":1280}],1002:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1003,\"./statics\":1004,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1006,\"dup\":14,\"slug-component\":1356}],1003:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1005,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1004:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1005:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1006:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1007,\"_process\":1232,\"dup\":11}],1007:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1008:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1009,\"global-queue\":1266,\"slug-component\":1356}],1009:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1010,\"./statics\":1011,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1013,\"dup\":14,\"slug-component\":1356}],1010:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1012,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1011:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1012:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1013:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1014,\"_process\":1232,\"dup\":11}],1014:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1015:[function(e,t,n){;var s=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=s(\"empty\");},{\"@segment/analytics.js-integration\":1016,\"component-each\":1242,\"segmentio-facade\":1348,\"use-https\":1377}],1016:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1017,\"./statics\":1018,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1019,\"dup\":7,\"extend\":1021,\"slug-component\":1356}],1017:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1018:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1019:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1020,\"_process\":1232,\"dup\":11}],1020:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1021:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1022:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/extend\":35,\"@segment/analytics.js-integration\":1023,\"@segment/convert-dates\":1152,\"@segment/to-iso-string\":1177,\"segmentio-facade\":1348}],1023:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1024,\"./statics\":1025,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1027,\"dup\":14,\"slug-component\":1356}],1024:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1026,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1025:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1026:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1027:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1028,\"_process\":1232,\"dup\":11}],1028:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1029:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/defaults\":30,\"@segment/analytics.js-integration\":1030,\"is\":1280}],1030:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1031,\"./statics\":1032,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1034,\"dup\":14,\"slug-component\":1356}],1031:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1033,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1032:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1033:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1034:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1035,\"_process\":1232,\"dup\":11}],1035:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1036:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":1037,\"json3\":1284,\"use-https\":1377}],1037:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1038,\"./statics\":1039,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1041,\"dup\":14,\"slug-component\":1356}],1038:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1040,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1039:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1040:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1041:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1042,\"_process\":1232,\"dup\":11}],1042:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1043:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":1044,\"component-each\":1242,\"obj-case\":1323,\"segmentio-facade\":1348}],1044:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1045,\"./statics\":1046,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1047,\"dup\":7,\"extend\":1049,\"slug-component\":1356}],1045:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1046:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1047:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1048,\"_process\":1232,\"dup\":11}],1048:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1049:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1050:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@segment/analytics.js-integration\":1051,\"component-clone\":1237,\"segmentio-facade\":1348}],1051:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1052,\"./statics\":1053,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1055,\"dup\":14,\"slug-component\":1356}],1052:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1054,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1053:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1054:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1055:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1056,\"_process\":1232,\"dup\":11}],1056:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1057:[function(e,t,n){;var u=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=u(\"empty\");},{\"@segment/alias\":59,\"@segment/analytics.js-integration\":1058,\"@segment/convert-dates\":1152,\"global-queue\":1266,\"to-unix-timestamp\":1370}],1058:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1059,\"./statics\":1060,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1062,\"dup\":14,\"slug-component\":1356}],1059:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1061,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1060:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1061:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1062:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1063,\"_process\":1232,\"dup\":11}],1063:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1064:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":1065,\"component-cookie\":1238,\"global-queue\":1266}],1065:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1066,\"./statics\":1067,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1069,\"dup\":14,\"slug-component\":1356}],1066:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1068,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1067:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1068:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1069:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1070,\"_process\":1232,\"dup\":11}],1070:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1071:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1142,\"@segment/tracktor\":1179,\"do-when\":1260}],1072:[function(e,t,n){;var l=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=l(\"empty\");},{\"@segment/analytics.js-integration\":1073,\"component-each\":1242,\"next-tick\":1318}],1073:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1074,\"./statics\":1075,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1076,\"dup\":7,\"extend\":1078,\"slug-component\":1356}],1074:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1075:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1076:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1077,\"_process\":1232,\"dup\":11}],1077:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1078:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1079:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@segment/analytics.js-integration\":1080,\"obj-case\":1323,\"use-https\":1377}],1080:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1081,\"./statics\":1082,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1084,\"dup\":14,\"slug-component\":1356}],1081:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1083,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1082:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1083:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1084:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1085,\"_process\":1232,\"dup\":11}],1085:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1086:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1087,\"do-when\":1260,\"reject\":1340}],1087:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1088,\"./statics\":1089,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1090,\"dup\":7,\"extend\":1092,\"slug-component\":1356}],1088:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1089:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1090:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1091,\"_process\":1232,\"dup\":11}],1091:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1092:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1093:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1094}],1094:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1095,\"./statics\":1096,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1098,\"dup\":14,\"slug-component\":1356}],1095:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1097,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1096:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1097:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1098:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1099,\"_process\":1232,\"dup\":11}],1099:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1100:[function(e,t,n){;var r=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=r(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":1101,\"component-each\":1242,\"is\":1280,\"isostring\":1281,\"json3\":1284,\"to-snake-case\":1367,\"unix-time\":1374}],1101:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1102,\"./statics\":1103,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1105,\"dup\":14,\"slug-component\":1356}],1102:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1104,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1103:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1104:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1105:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1106,\"_process\":1232,\"dup\":11}],1106:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1107:[function(e,t,n){;var u=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=u(\"empty\");},{\"@ndhoule/foldl\":36,\"@segment/analytics.js-integration\":1108,\"is\":1280,\"omit\":1329}],1108:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1109,\"./statics\":1110,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1112,\"dup\":14,\"slug-component\":1356}],1109:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1111,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1110:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1111:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1112:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1113,\"_process\":1232,\"dup\":11}],1113:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1114:[function(e,t,n){;var a=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=a(\"empty\");},{\"@segment/analytics.js-integration\":1115,\"component-bind\":1236,\"do-when\":1260,\"next-tick\":1318}],1115:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1116,\"./statics\":1117,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1119,\"dup\":14,\"slug-component\":1356}],1116:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1118,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1117:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1118:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1119:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1120,\"_process\":1232,\"dup\":11}],1120:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1121:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":1122,\"to-no-case\":1366}],1122:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1123,\"./statics\":1124,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1126,\"dup\":14,\"slug-component\":1356}],1123:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1125,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1124:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1125:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1126:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1127,\"_process\":1232,\"dup\":11}],1127:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1128:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1129,\"extend\":1263,\"reject\":1340}],1129:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1130,\"./statics\":1131,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1133,\"dup\":7,\"extend\":1132,\"slug-component\":1356}],1130:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1131:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1132:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1133:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1134,\"_process\":1232,\"dup\":11}],1134:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1135:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":1136,\"@segment/fmt\":1156,\"do-when\":1260,\"reject\":1340}],1136:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1137,\"./statics\":1138,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1140,\"dup\":14,\"slug-component\":1356}],1137:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1139,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1138:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1139:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1140:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1141,\"_process\":1232,\"dup\":11}],1141:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1142:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1143,\"./statics\":1144,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1145,\"dup\":7,\"extend\":1147,\"slug-component\":1356}],1143:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1144:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1145:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1146,\"_process\":1232,\"dup\":11}],1146:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1147:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1148:[function(e,t,n){;t.exports=function(e){e.next(e.payload)};},{\"deep-equal\":1258}],1149:[function(e,t,n){;t.exports={};},{}],1150:[function(e,t,n){function o(e){var t,n,o,r,s,u,l,c=\"\",d=0;e=i(e);for(;d<e.length;){t=e.charCodeAt(d++);n=e.charCodeAt(d++);o=e.charCodeAt(d++);r=t>>2;s=(3&t)<<4|n>>4;u=(15&n)<<2|o>>6;l=63&o;isNaN(n)?u=l=64:isNaN(o)&&(l=64);c=c+a.charAt(r)+a.charAt(s)+a.charAt(u)+a.charAt(l)}return c}var i=e(\"utf8-encode\"),a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";t.exports=o},{\"utf8-encode\":1378}],1151:[function(e,t,n){\"use strict\";function o(){for(var e,t=document.getElementsByTagName(\"link\"),n=0;e=t[n];n++)if(\"canonical\"===e.getAttribute(\"rel\"))return e.getAttribute(\"href\")}t.exports=o},{}],1152:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/clone\":29,\"@ndhoule/each\":32,\"component-type\":1250}],1153:[function(e,t,n){\"use strict\";function o(e,t,n){n=n||{};var o=s(e)+\"=\"+s(t);null==t&&(n.maxage=-1);n.maxage&&(n.expires=new Date(+new Date+n.maxage));n.path&&(o+=\"; path=\"+n.path);n.domain&&(o+=\"; domain=\"+n.domain);n.expires&&(o+=\"; expires=\"+n.expires.toUTCString());n.sameSite&&(o+=\"; SameSite=\"+n.sameSite);n.secure&&(o+=\"; secure\");document.cookie=o}function i(){var e;try{e=document.cookie}catch(t){\"undefined\"!=typeof console&&\"function\"==typeof console.error&&console.error(t.stack||t);return{}}return r(e)}function a(e){return i()[e]}function r(e){var t,n={},o=e.split(/ *; */);if(\"\"==o[0])return n;for(var i=0;i<o.length;++i){t=o[i].split(\"=\");n[u(t[0])]=u(t[1])}return n}function s(e){try{return encodeURIComponent(e)}catch(t){l(\"error `encode(%o)` - %o\",e,t)}}function u(e){try{return decodeURIComponent(e)}catch(t){l(\"error `decode(%o)` - %o\",e,t)}}var l=e(\"debug\")(\"cookie\");t.exports=function(e,t,n){switch(arguments.length){case 3:case 2:return o(e,t,n);case 1:return a(e);default:return i()}}},{\"debug\":1154}],1154:[function(e,t,n){arguments[4][11][0].apply(n,arguments)},{\"./debug\":1155,\"_process\":1232,\"dup\":11}],1155:[function(e,t,n){arguments[4][12][0].apply(n,arguments)},{\"dup\":12,\"ms\":1313}],1156:[function(e,t,n){;(function(e){\"use strict\";function n(e){var t=Array.prototype.slice.call(arguments,1),o=0;return e.replace(/%([a-z])/gi,function(e,i){return n[i]?n[i](t[o++]):e+i})}var o=e.JSON&&\"function\"==typeof JSON.stringify?JSON.stringify:String;n.o=o;n.s=String;n.d=parseInt;t.exports=n}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{});},{}],1157:[function(e,t,n){\"use strict\";function o(e){if(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)return!0;var t=e.which,n=e.button;return t||n===undefined?2===t:1&!n&&2&!n&&4&n}t.exports=o},{}],1158:[function(e,t,n){\"use strict\";function o(e,t){t===undefined&&(t=!0);return\"object\"===r(e)?i(e,t):\"array\"===r(e)?a(e,t):e}function i(e,t){if(e.length&&\"number\"==typeof e.length&&!(e.length-1 in e)){e.lengthNonArray=e.length;delete e.length}s(e,function(n,i){u.is(i,t)?e[n]=u.parse(i):\"object\"!==r(i)&&\"array\"!==r(i)||o(i,t)});if(e.lengthNonArray){e.length=e.lengthNonArray;delete e.lengthNonArray}return e}function a(e,t){s(e,function(n,i){\"object\"===r(n)?o(n,t):u.is(n,t)&&(e[i]=u.parse(n))});return e}var r=e(\"component-type\"),s=e(\"component-each\"),u=e(\"@segment/isodate\");t.exports=o},{\"@segment/isodate\":1159,\"component-each\":1242,\"component-type\":1250}],1159:[function(e,t,n){\"use strict\";var o=/^(\\d{4})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:([ T])(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;n.parse=function(e){var t=[1,5,6,7,11,12],n=o.exec(e),i=0;if(!n)return new Date(e);for(var a,r=0;a=t[r];r++)n[a]=parseInt(n[a],10)||0;n[2]=parseInt(n[2],10)||1;n[3]=parseInt(n[3],10)||1;n[2]--;n[8]=n[8]?(n[8]+\"00\").substring(0,3):0;if(\" \"===n[4])i=(new Date).getTimezoneOffset();else if(\"Z\"!==n[9]&&n[10]){i=60*n[11]+n[12];\"+\"===n[10]&&(i=0-i)}var s=Date.UTC(n[1],n[2],n[3],n[5],n[6]+i,n[7],n[8]);return new Date(s)};n.is=function(e,t){return\"string\"==typeof e&&((!t||!1!==/^\\d{4}-\\d{2}-\\d{2}/.test(e))&&o.test(e))}},{}],1160:[function(e,t,n){;\"use strict\";function o(e,t){if(!e)throw new Error(\"Can't load nothing...\");\"string\"===r(e)&&(e={src:e});var n=\"https:\"===document.location.protocol||\"chrome-extension:\"===document.location.protocol;e.src&&0===e.src.indexOf(\"//\")&&(e.src=(n?\"https:\":\"http:\")+e.src);n&&e.https?e.src=e.https:!n&&e.http&&(e.src=e.http);var o=document.createElement(\"script\");o.type=\"text/javascript\";o.async=!0;o.src=e.src;\"function\"===r(t)&&i(o,t);a(function(){var e=document.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(o,e)});return o}var i=e(\"script-onload\"),a=e(\"next-tick\"),r=e(\"component-type\");t.exports=o;},{\"component-type\":1250,\"next-tick\":1318,\"script-onload\":1341}],1161:[function(e,t,n){;\"use strict\";function o(){try{if(!window.localStorage)return!1;var e=a();window.localStorage.setItem(e,\"test_value\");var t=window.localStorage.getItem(e);window.localStorage.removeItem(e);return\"test_value\"===t}catch(n){return!1}}var i=e(\"@ndhoule/keys\"),a=e(\"uuid\").v4,r={_data:{},length:0,setItem:function(e,t){this._data[e]=t;this.length=i(this._data).length;return t},getItem:function(e){return e in this._data?this._data[e]:null},removeItem:function(e){e in this._data&&delete this._data[e];this.length=i(this._data).length;return null},clear:function(){this._data={};this.length=0},key:function(e){return i(this._data)[e]}};t.exports.defaultEngine=function(){return o()?window.localStorage:r}();t.exports.inMemoryEngine=r;},{\"@ndhoule/keys\":38,\"uuid\":1382}],1162:[function(e,t,n){;\"use strict\";function o(e,t){return function(){return e.apply(t,arguments)}}function i(e,t,n){\"function\"==typeof t&&(n=t);this.name=e;this.id=a();this.fn=n;this.maxItems=t.maxItems||Infinity;this.maxAttempts=t.maxAttempts||Infinity;this.backoff={MIN_RETRY_DELAY:t.minRetryDelay||1e3,MAX_RETRY_DELAY:t.maxRetryDelay||3e4,FACTOR:t.backoffFactor||2,JITTER:t.backoffJitter||0};this.timeouts={ACK_TIMER:1e3,RECLAIM_TIMER:3e3,RECLAIM_TIMEOUT:1e4,RECLAIM_WAIT:500};this.keys={IN_PROGRESS:\"inProgress\",QUEUE:\"queue\",ACK:\"ack\",RECLAIM_START:\"reclaimStart\",RECLAIM_END:\"reclaimEnd\"};this._schedule=new u;this._processId=0;this._store=new r(this.name,this.id,this.keys);this._store.set(this.keys.IN_PROGRESS,{});this._store.set(this.keys.QUEUE,[]);this._ack=o(this._ack,this);this._checkReclaim=o(this._checkReclaim,this);this._processHead=o(this._processHead,this);this._running=!1}var a=e(\"uuid\").v4,r=e(\"./store\"),s=e(\"@ndhoule/each\"),u=e(\"./schedule\"),l=e(\"debug\")(\"localstorage-retry\");e(\"component-emitter\")(i.prototype);i.prototype.start=function(){this._running&&this.stop();this._running=!0;this._ack();this._checkReclaim();this._processHead()};i.prototype.stop=function(){this._schedule.cancelAll();this._running=!1};i.prototype.shouldRetry=function(e,t){return!(t>this.maxAttempts)};i.prototype.getDelay=function(e){var t=this.backoff.MIN_RETRY_DELAY*Math.pow(this.backoff.FACTOR,e);if(this.backoff.JITTER){var n=Math.random(),o=Math.floor(n*this.backoff.JITTER*t);Math.floor(10*n)<5?t-=o:t+=o}return Number(Math.min(t,this.backoff.MAX_RETRY_DELAY).toPrecision(1))};i.prototype.addItem=function(e){this._enqueue({item:e,attemptNumber:0,time:this._schedule.now()})};i.prototype.requeue=function(e,t,n){this.shouldRetry(e,t,n)?this._enqueue({item:e,attemptNumber:t,time:this._schedule.now()+this.getDelay(t)}):this.emit(\"discard\",e,t)};i.prototype._enqueue=function(e){var t=this._store.get(this.keys.QUEUE)||[];t=t.slice(-(this.maxItems-1));t.push(e);t=t.sort(function(e,t){return e.time-t.time});this._store.set(this.keys.QUEUE,t);this._running&&this._processHead()};i.prototype._processHead=function(){var e=this,t=this._store;this._schedule.cancel(this._processId);for(var n=t.get(this.keys.QUEUE)||[],o=t.get(this.keys.IN_PROGRESS)||{},i=this._schedule.now(),r=[],u=Object.keys(o).length;n.length&&n[0].time<=i&&u++<e.maxItems;){var c=n.shift(),d=a();o[d]={item:c.item,attemptNumber:c.attemptNumber,time:e._schedule.now()};!function(n,o){r.push({\nitem:n.item,done:function(i,a){var r=t.get(e.keys.IN_PROGRESS)||{};delete r[o];t.set(e.keys.IN_PROGRESS,r);e.emit(\"processed\",i,a,n.item);i&&e.requeue(n.item,n.attemptNumber+1,i)}})}(c,d)}t.set(this.keys.QUEUE,n);t.set(this.keys.IN_PROGRESS,o);s(function(t){try{e.fn(t.item,t.done)}catch(n){l(\"Process function threw error: \"+n)}},r);n=t.get(this.keys.QUEUE)||[];this._schedule.cancel(this._processId);n.length>0&&(this._processId=this._schedule.run(this._processHead,n[0].time-i))};i.prototype._ack=function(){this._store.set(this.keys.ACK,this._schedule.now());this._store.set(this.keys.RECLAIM_START,null);this._store.set(this.keys.RECLAIM_END,null);this._schedule.run(this._ack,this.timeouts.ACK_TIMER)};i.prototype._checkReclaim=function(){function e(e){e.set(t.keys.RECLAIM_START,t.id);e.set(t.keys.ACK,t._schedule.now());t._schedule.run(function(){if(e.get(t.keys.RECLAIM_START)===t.id){e.set(t.keys.RECLAIM_END,t.id);t._schedule.run(function(){e.get(t.keys.RECLAIM_END)===t.id&&e.get(t.keys.RECLAIM_START)===t.id&&t._reclaim(e.id)},t.timeouts.RECLAIM_WAIT)}},t.timeouts.RECLAIM_WAIT)}var t=this;s(function(n){n.id!==t.id&&(t._schedule.now()-n.get(t.keys.ACK)<t.timeouts.RECLAIM_TIMEOUT||e(n))},function(e){for(var n=[],o=t._store.engine,i=0;i<o.length;i++){var a=o.key(i),s=a.split(\".\");3===s.length&&(s[0]===e&&\"ack\"===s[2]&&n.push(new r(e,s[1],t.keys)))}return n}(this.name));this._schedule.run(this._checkReclaim,this.timeouts.RECLAIM_TIMER)};i.prototype._reclaim=function(e){var t=this,n=new r(this.name,e,this.keys),o={queue:this._store.get(this.keys.QUEUE)||[]},i={inProgress:n.get(this.keys.IN_PROGRESS)||{},queue:n.get(this.keys.QUEUE)||[]};s(function(e){o.queue.push({item:e.item,attemptNumber:e.attemptNumber,time:t._schedule.now()})},i.queue);s(function(e){o.queue.push({item:e.item,attemptNumber:e.attemptNumber+1,time:t._schedule.now()})},i.inProgress);o.queue=o.queue.sort(function(e,t){return e.time-t.time});this._store.set(this.keys.QUEUE,o.queue);n.remove(this.keys.ACK);n.remove(this.keys.RECLAIM_START);n.remove(this.keys.RECLAIM_END);n.remove(this.keys.IN_PROGRESS);n.remove(this.keys.QUEUE);this._processHead()};t.exports=i;},{\"./schedule\":1163,\"./store\":1164,\"@ndhoule/each\":32,\"component-emitter\":1244,\"debug\":1165,\"uuid\":1382}],1163:[function(e,t,n){;\"use strict\";function o(){this.tasks={};this.nextId=1}var i=e(\"@ndhoule/each\"),a={setTimeout:function(e,t){return window.setTimeout(e,t)},clearTimeout:function(e){return window.clearTimeout(e)},Date:window.Date},r=a;o.prototype.now=function(){return+new r.Date};o.prototype.run=function(e,t){var n=this.nextId++;this.tasks[n]=r.setTimeout(this._handle(n,e),t);return n};o.prototype.cancel=function(e){if(this.tasks[e]){r.clearTimeout(this.tasks[e]);delete this.tasks[e]}};o.prototype.cancelAll=function(){i(r.clearTimeout,this.tasks);this.tasks={}};o.prototype._handle=function(e,t){var n=this;return function(){delete n.tasks[e];return t()}};o.setClock=function(e){r=e};o.resetClock=function(){r=a};t.exports=o;},{\"@ndhoule/each\":32}],1164:[function(e,t,n){;\"use strict\";function o(e,t,n,o){this.id=t;this.name=e;this.keys=n||{};this.engine=o||a}function i(e){var t=!1;if(e.code)switch(e.code){case 22:t=!0;break;case 1014:\"NS_ERROR_DOM_QUOTA_REACHED\"===e.name&&(t=!0)}else-2147024882===e.number&&(t=!0);return t}var a=e(\"./engine\").defaultEngine,r=e(\"./engine\").inMemoryEngine,s=e(\"@ndhoule/each\"),u=e(\"@ndhoule/keys\"),l=e(\"json3\");o.prototype.set=function(e,t){var n=this._createValidKey(e);if(n)try{this.engine.setItem(n,l.stringify(t))}catch(o){if(i(o)){this._swapEngine();this.set(e,t)}}};o.prototype.get=function(e){try{var t=this.engine.getItem(this._createValidKey(e));return null===t?null:l.parse(t)}catch(n){return null}};o.prototype.remove=function(e){this.engine.removeItem(this._createValidKey(e))};o.prototype._createValidKey=function(e){var t=this.name,n=this.id;if(!u(this.keys).length)return[t,n,e].join(\".\");var o;s(function(i){i===e&&(o=[t,n,e].join(\".\"))},this.keys);return o};o.prototype._swapEngine=function(){var e=this;s(function(t){var n=e.get(t);r.setItem([e.name,e.id,t].join(\".\"),n);e.remove(t)},this.keys);this.engine=r};t.exports=o;},{\"./engine\":1161,\"@ndhoule/each\":32,\"@ndhoule/keys\":38,\"json3\":1284}],1165:[function(e,t,n){;arguments[4][72][0].apply(n,arguments);},{\"dup\":72}],1166:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1167,\"./statics\":1168,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1170,\"dup\":14,\"slug-component\":1356}],1167:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1169,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1168:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1169:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1170:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1171,\"_process\":1232,\"dup\":11}],1171:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1172:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1166,\"@segment/send-json\":1175}],1173:[function(e,t,n){\"use strict\";function o(e){e=e||window.event;return e.preventDefault?e.preventDefault():e.returnValue=!1}t.exports=o},{}],1174:[function(e,t,n){;\"use strict\";function o(){return a||window.location.protocol}function i(e){try{r(window.location,\"protocol\",{get:function(){return e}})}catch(t){a=e}}var a,r=Object.defineProperty,s=window.location.protocol;t.exports=function(e){return 0===arguments.length?o():i(e)};t.exports.http=function(){i(\"http:\")};t.exports.https=function(){i(\"https:\")};t.exports.reset=function(){i(s)};},{}],1175:[function(e,t,n){\"use strict\";function o(e,t,n,o){function i(){if(4===a.readyState)return o(null,a)}3===arguments.length&&(o=n,n={});var a=new XMLHttpRequest;a.onerror=o;a.onreadystatechange=i;a.open(\"POST\",e,!0);for(var s in n)a.setRequestHeader(s,n[s]);a.send(r.stringify(t))}function i(e,t,o,i){3===arguments.length&&(i=o);var r=n.prefix,s=a(t);e+=\"?\"+r+\"=\"+s;l(e,{param:n.callback},function(t,n){if(t)return i(t);i(null,{url:e,body:n})})}function a(e){var t=\"\";t=r.stringify(e);t=s(t);t=t.replace(/\\+/g,\"-\").replace(/\\//g,\"_\");return encodeURIComponent(t)}var r=e(\"json3\"),s=e(\"@segment/base64-encode\"),u=e(\"has-cors\"),l=e(\"jsonp\");n=t.exports=u?o:i;n.callback=\"callback\";n.prefix=\"data\";n.json=o;n.base64=i;n.type=u?\"xhr\":\"jsonp\"},{\"@segment/base64-encode\":1150,\"has-cors\":1269,\"json3\":1284,\"jsonp\":1285}],1176:[function(e,t,n){(function(n){\"use strict\";var o=e(\"json3\");t.exports=function(){var e,t={},i=\"undefined\"!=typeof window?window:n,a=i.document,r=\"localStorage\";t.disabled=!1;t.version=\"1.3.20\";t.set=function(e,t){};t.get=function(e,t){};t.has=function(e){return t.get(e)!==undefined};t.remove=function(e){};t.clear=function(){};t.transact=function(e,n,o){if(null==o){o=n;n=null}null==n&&(n={});var i=t.get(e,n);o(i);t.set(e,i)};t.getAll=function(){var e={};t.forEach(function(t,n){e[t]=n});return e};t.forEach=function(){};t.serialize=function(e){return o.stringify(e)};t.deserialize=function(e){if(\"string\"!=typeof e)return undefined;try{return o.parse(e)}catch(t){return e||undefined}};if(function(){try{return r in i&&i[r]}catch(e){return!1}}()){e=i[r];t.set=function(n,o){if(o===undefined)return t.remove(n);e.setItem(n,t.serialize(o));return o};t.get=function(n,o){var i=t.deserialize(e.getItem(n));return i===undefined?o:i};t.remove=function(t){e.removeItem(t)};t.clear=function(){e.clear()};t.forEach=function(n){for(var o=0;o<e.length;o++){var i=e.key(o);n(i,t.get(i))}}}else if(a&&a.documentElement.addBehavior){var s,u;try{u=new ActiveXObject(\"htmlfile\");u.open();u.write('<script>document.w=window<\\/script><iframe src=\"/favicon.ico\"></iframe>');u.close();s=u.w.frames[0].document;e=s.createElement(\"div\")}catch(f){e=a.createElement(\"div\");s=a.body}var l=function(n){return function(){var o=Array.prototype.slice.call(arguments,0);o.unshift(e);s.appendChild(e);e.addBehavior(\"#default#userData\");e.load(r);var i=n.apply(t,o);s.removeChild(e);return i}},c=new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\",\"g\"),d=function(e){return e.replace(/^d/,\"___$&\").replace(c,\"___\")};t.set=l(function(e,n,o){n=d(n);if(o===undefined)return t.remove(n);e.setAttribute(n,t.serialize(o));e.save(r);return o});t.get=l(function(e,n,o){n=d(n);var i=t.deserialize(e.getAttribute(n));return i===undefined?o:i});t.remove=l(function(e,t){t=d(t);e.removeAttribute(t);e.save(r)});t.clear=l(function(e){var t=e.XMLDocument.documentElement.attributes;e.load(r);for(var n=t.length-1;n>=0;n--)e.removeAttribute(t[n].name);e.save(r)});t.forEach=l(function(e,n){for(var o,i=e.XMLDocument.documentElement.attributes,a=0;o=i[a];++a)n(o.name,t.deserialize(e.getAttribute(o.name)))})}try{var p=\"__storejs__\";t.set(p,p);t.get(p)!=p&&(t.disabled=!0);t.remove(p)}catch(f){t.disabled=!0}t.enabled=!t.disabled;return t}()}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{})},{\"json3\":1284}],1177:[function(e,t,n){;t.exports=function(){};},{}],1178:[function(e,t,n){\"use strict\";function o(e){for(var t=n.cookie,o=n.levels(e),i=0;i<o.length;++i){var a=o[i],r={domain:\".\"+a};t(\"__tld__\",1,r);if(t(\"__tld__\")){t(\"__tld__\",null,r);return a}}return\"\"}var i=e(\"component-url\").parse,a=e(\"component-cookie\");o.levels=function(e){var t=i(e).hostname,n=t.split(\".\"),o=n[n.length-1],a=[];if(4===n.length&&o===parseInt(o,10))return a;if(n.length<=1)return a;for(var r=n.length-2;r>=0;--r)a.push(n.slice(r).join(\".\"));return a};o.cookie=a;n=t.exports=o},{\"component-cookie\":1238,\"component-url\":1251}],1179:[function(e,t,n){;t.exports=function(){};},{}],1180:[function(e,t,n){;t.exports=function(){};},{}],1181:[function(e,t,n){;t.exports=function(){};},{\"./matchers\":1182,\"./store\":1183,\"./transformers\":1184}],1182:[function(e,t,n){;t.exports=function(){};},{\"lodash.get\":1296}],1183:[function(e,t,n){;t.exports=function(){};},{}],1184:[function(e,t,n){;t.exports=function(){};},{\"js-md5\":1282,\"lodash.get\":1296,\"lodash.set\":1297,\"lodash.unset\":1298,\"math-float64-ldexp\":1308}],1185:[function(e,t,n){;\"use strict\";function o(e){\"?\"===e.charAt(0)&&(e=e.substring(1));e=e.replace(/\\?/g,\"&\");var t,n=r(e),o={};for(var i in n)if(s.call(n,i)&&\"utm_\"===i.substr(0,4)){t=i.substr(4);\"campaign\"===t&&(t=\"name\");o[t]=n[i]}return o}function i(e){return a(function(e,t,n){s.call(u,n)&&(e[n]=t);return e},{},o(e))}var a=e(\"@ndhoule/foldl\"),r=e(\"component-querystring\").parse,s=Object.prototype.hasOwnProperty,u={name:!0,term:!0,source:!0,medium:!0,content:!0};t.exports=o;t.exports.strict=i;},{\"@ndhoule/foldl\":36,\"component-querystring\":1248}],1186:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1187}],1187:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1188,\"./statics\":1189,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1191,\"dup\":14,\"slug-component\":1356}],1188:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1190,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1189:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1190:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1191:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1192,\"_process\":1232,\"dup\":11}],1192:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1193:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@ndhoule/each\":32,\"@segment/analytics.js-integration\":1194,\"change-case\":1234,\"do-when\":1260,\"is\":1280,\"obj-case\":1323}],1194:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1195,\"./statics\":1196,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1198,\"dup\":14,\"slug-component\":1356}],1195:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1197,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1196:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1197:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1198:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1199,\"_process\":1232,\"dup\":11}],1199:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1200:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1201,\"@segment/load-script\":1160,\"isobject\":1208}],1201:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1202,\"./statics\":1203,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1205,\"dup\":14,\"slug-component\":1356}],1202:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1204,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1203:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1204:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1205:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1206,\"_process\":1232,\"dup\":11}],1206:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1207:[function(e,t,n){;t.exports=function(){};},{\"dup\":158}],1208:[function(e,t,n){;t.exports=function(){};},{\"dup\":159,\"isarray\":1207}],1209:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1210}],1210:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1211,\"./statics\":1212,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1213,\"dup\":7,\"extend\":1215,\"slug-component\":1356}],1211:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1212:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1213:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1214,\"_process\":1232,\"dup\":11}],1214:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1215:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1216:[function(e,t,n){;\"use strict\";var o=e(\"@ndhoule/map\"),i=e(\"@ndhoule/foldl\"),a={videoPlaybackStarted:[{object:\"video playback\",action:\"started\"}],videoPlaybackPaused:[{object:\"video playback\",action:\"paused\"}],videoPlaybackInterrupted:[{object:\"video playback\",action:\"interrupted\"}],videoPlaybackResumed:[{object:\"video playback\",action:\"resumed\"}],videoPlaybackCompleted:[{object:\"video playback\",action:\"completed\"}],videoPlaybackBufferStarted:[{object:\"video playback buffer\",action:\"started\"}],videoPlaybackBufferCompleted:[{object:\"video playback buffer\",action:\"completed\"}],videoPlaybackSeekStarted:[{object:\"video playback seek\",action:\"started\"}],videoPlaybackSeekCompleted:[{object:\"video playback seek\",action:\"completed\"}],videoContentStarted:[{object:\"video content\",action:\"started\"}],videoContentPlaying:[{object:\"video content\",action:\"playing\"}],videoContentCompleted:[{object:\"video content\",action:\"completed\"}],videoAdStarted:[{object:\"video ad\",action:\"started\"}],videoAdPlaying:[{object:\"video ad\",action:\"playing\"}],videoAdCompleted:[{object:\"video ad\",action:\"completed\"}],promotionViewed:[{object:\"promotion\",action:\"viewed\"}],promotionClicked:[{object:\"promotion\",action:\"clicked\"}],productsSearched:[{object:\"products\",action:\"searched\"}],productListViewed:[{object:\"product list\",action:\"viewed\"},{object:\"product category\",action:\"viewed\"}],productListFiltered:[{object:\"product list\",action:\"filtered\"}],productClicked:[{object:\"product\",action:\"clicked\"}],productViewed:[{object:\"product\",action:\"viewed\"}],productAdded:[{object:\"product\",action:\"added\"}],productRemoved:[{object:\"product\",action:\"removed\"}],cartViewed:[{object:\"cart\",action:\"viewed\"}],orderUpdated:[{object:\"order\",action:\"updated\"}],orderCompleted:[{object:\"order\",action:\"completed\"}],orderRefunded:[{object:\"order\",action:\"refunded\"}],orderCancelled:[{object:\"order\",action:\"cancelled\"}],paymentInfoEntered:[{object:\"payment info\",action:\"entered\"}],checkoutStarted:[{object:\"checkout\",action:\"started\"}],checkoutStepViewed:[{object:\"checkout step\",action:\"viewed\"}],checkoutStepCompleted:[{object:\"checkout step\",action:\"completed\"}],couponEntered:[{object:\"coupon\",action:\"entered\"}],couponApplied:[{object:\"coupon\",action:\"applied\"}],couponDenied:[{object:\"coupon\",action:\"denied\"}],couponRemoved:[{object:\"coupon\",action:\"removed\"}],productAddedToWishlist:[{object:\"product\",action:\"added to wishlist\"}],productRemovedFromWishlist:[{object:\"product\",action:\"removed from wishlist\"}],productAddedFromWishlistToCart:[{object:\"product\",action:\"added to cart from wishlist\"},{object:\"product\",action:\"added from wishlist to cart\"}],productShared:[{object:\"product\",action:\"shared\"}],cartShared:[{object:\"cart\",action:\"shared\"}],productReviewed:[{object:\"product\",action:\"reviewed\"}],applicationInstalled:[{object:\"application\",action:\"installed\"}],applicationUpdated:[{object:\"application\",action:\"updated\"}],applicationOpened:[{object:\"application\",action:\"opened\"}],applicationBackgrounded:[{object:\"application\",action:\"backgrounded\"}],applicationUninstalled:[{object:\"application\",action:\"uninstalled\"}],applicationCrashed:[{object:\"application\",action:\"crashed\"}],installAttributed:[{object:\"install\",action:\"attributed\"}],deepLinkOpened:[{object:\"deep link\",action:\"opened\"}],pushNotificationReceived:[{object:\"push notification\",action:\"received\"}],pushNotificationTapped:[{object:\"push notification\",action:\"tapped\"}],pushNotificationBounced:[{object:\"push notification\",action:\"bounced\"}],emailBounced:[{object:\"email\",action:\"bounced\"}],emailDelivered:[{object:\"email\",action:\"delivered\"}],emailLinkClicked:[{object:\"email link\",action:\"clicked\"}],emailMarkedAsSpam:[{object:\"email\",action:\"marked as spam\"}],emailOpened:[{object:\"email\",action:\"opened\"}],unsubscribed:[{object:\"\",action:\"unsubscribed\"}]};t.exports=i(function(e,t,n){var i=o(function(e){return o(function(e){return\"^[ _]?\"+[].concat.apply([],o(function(e){return e.split(\" \")},e)).join(\"[ _]?\")+\"[ _]?\"},[[e.action,e.object],[e.object,e.action]]).join(\"|\")},t),a=i.join(\"|\")+\"$\";e[n]=new RegExp(a,\"i\");return e},{},a);},{\"@ndhoule/foldl\":36,\"@ndhoule/map\":39}],1217:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1218}],1218:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1219,\"./statics\":1220,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1222,\"dup\":14,\"slug-component\":1356}],1219:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1221,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1220:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1221:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1222:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1223,\"_process\":1232,\"dup\":11}],1223:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1224:[function(e,t,n){;var o=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=o(\"empty\");},{\"@segment/analytics.js-integration\":1225}],1225:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1226,\"./statics\":1227,\"@ndhoule/clone\":29,\"@ndhoule/defaults\":30,\"@ndhoule/extend\":35,\"component-bind\":1236,\"debug\":1229,\"dup\":14,\"slug-component\":1356}],1226:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1228,\"component-emitter\":1244,\"dup\":15,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1227:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":16}],1228:[function(e,t,n){;t.exports=function(){};},{\"dup\":17}],1229:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1230,\"_process\":1232,\"dup\":11}],1230:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1231:[function(e,t,n){\"use strict\";function o(e){for(var t in e){\"function\"==typeof e[t]&&(e[t]=i(e,e[t]))}return e}var i=e(\"component-bind\");t.exports=o},{\"component-bind\":1236}],1232:[function(e,t,n){function o(){throw new Error(\"setTimeout has not been defined\")}function i(){throw new Error(\"clearTimeout has not been defined\")}function a(e){if(d===setTimeout)return setTimeout(e,0);if((d===o||!d)&&setTimeout){d=setTimeout;return setTimeout(e,0)}try{return d(e,0)}catch(t){try{return d.call(null,e,0)}catch(t){return d.call(this,e,0)}}}function r(e){if(p===clearTimeout)return clearTimeout(e);if((p===i||!p)&&clearTimeout){p=clearTimeout;return clearTimeout(e)}try{return p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}function s(){if(b&&h){b=!1;h.length?m=h.concat(m):g=-1;m.length&&u()}}function u(){if(!b){var e=a(s);b=!0;for(var t=m.length;t;){h=m;m=[];for(;++g<t;)h&&h[g].run();g=-1;t=m.length}h=null;b=!1;r(e)}}function l(e,t){this.fun=e;this.array=t}function c(){}var d,p,f=t.exports={};!function(){try{d=\"function\"==typeof setTimeout?setTimeout:o}catch(e){d=o}try{p=\"function\"==typeof clearTimeout?clearTimeout:i}catch(e){p=i}}();var h,m=[],b=!1,g=-1;f.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];m.push(new l(e,t));1!==m.length||b||a(u)};l.prototype.run=function(){this.fun.apply(null,this.array)};f.title=\"browser\";f.browser=!0;f.env={};f.argv=[];f.version=\"\";f.versions={};f.on=c;f.addListener=c;f.once=c;f.off=c;f.removeListener=c;f.removeAllListeners=c;f.emit=c;f.prependListener=c;f.prependOnceListener=c;f.listeners=function(e){return[]};f.binding=function(e){throw new Error(\"process.binding is not supported\")};f.cwd=function(){return\"/\"};f.chdir=function(e){throw new Error(\"process.chdir is not supported\")};f.umask=function(){return 0}},{}],1233:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319,\"upper-case\":1376}],1234:[function(e,t,n){;t.exports=function(){};},{\"camel-case\":1233,\"constant-case\":1255,\"dot-case\":1262,\"header-case\":1271,\"is-lower-case\":1277,\"is-upper-case\":1279,\"lower-case\":1300,\"lower-case-first\":1299,\"no-case\":1319,\"param-case\":1332,\"pascal-case\":1333,\"path-case\":1334,\"sentence-case\":1355,\"snake-case\":1357,\"swap-case\":1359,\"title-case\":1363,\"upper-case\":1376,\"upper-case-first\":1375}],1235:[function(e,t,n){;t.exports=function(){};},{}],1236:[function(e,t,n){var o=[].slice;t.exports=function(e,t){\"string\"==typeof t&&(t=e[t]);if(\"function\"!=typeof t)throw new Error(\"bind() requires a function\");var n=o.call(arguments,2);return function(){return t.apply(e,n.concat(o.call(arguments)))}}},{}],1237:[function(e,t,n){;function o(e){switch(i(e)){case\"object\":var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=o(e[n]));return t;case\"array\":for(var t=new Array(e.length),a=0,r=e.length;a<r;a++)t[a]=o(e[a]);return t;case\"regexp\":var s=\"\";s+=e.multiline?\"m\":\"\";s+=e.global?\"g\":\"\";s+=e.ignoreCase?\"i\":\"\";return new RegExp(e.source,s);case\"date\":return new Date(e.getTime());default:return e}}var i;try{i=e(\"component-type\")}catch(a){i=e(\"type\")}t.exports=o;},{\"component-type\":1250,\"type\":1250}],1238:[function(e,t,n){function o(e,t,n){n=n||{};var o=s(e)+\"=\"+s(t);null==t&&(n.maxage=-1);n.maxage&&(n.expires=new Date(+new Date+n.maxage));n.path&&(o+=\"; path=\"+n.path);n.domain&&(o+=\"; domain=\"+n.domain);n.expires&&(o+=\"; expires=\"+n.expires.toUTCString());n.secure&&(o+=\"; secure\");document.cookie=o}function i(){var e;try{e=document.cookie}catch(t){\"undefined\"!=typeof console&&\"function\"==typeof console.error&&console.error(t.stack||t);return{}}return r(e)}function a(e){return i()[e]}function r(e){var t,n={},o=e.split(/ *; */);if(\"\"==o[0])return n;for(var i=0;i<o.length;++i){t=o[i].split(\"=\");n[u(t[0])]=u(t[1])}return n}function s(e){try{return encodeURIComponent(e)}catch(t){l(\"error `encode(%o)` - %o\",e,t)}}function u(e){try{return decodeURIComponent(e)}catch(t){l(\"error `decode(%o)` - %o\",e,t)}}var l=e(\"debug\")(\"cookie\");t.exports=function(e,t,n){switch(arguments.length){case 3:case 2:return o(e,t,n);case 1:return a(e);default:return i()}}},{\"debug\":1239}],1239:[function(e,t,n){function o(){return\"WebkitAppearance\"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,t=this.useColors;e[0]=(t?\"%c\":\"\")+this.namespace+(t?\" %c\":\" \")+e[0]+(t?\"%c \":\" \")+\"+\"+n.humanize(this.diff);if(!t)return e;var o=\"color: \"+this.color;e=[e[0],o,\"color: inherit\"].concat(Array.prototype.slice.call(e,1));var i=0,a=0;e[0].replace(/%[a-z%]/g,function(e){if(\"%%\"!==e){i++;\"%c\"===e&&(a=i)}});e.splice(a,0,o);return e}function a(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function r(e){try{null==e?n.storage.removeItem(\"debug\"):n.storage.debug=e}catch(t){}}function s(){var e;try{e=n.storage.debug}catch(t){}return e}n=t.exports=e(\"./debug\");n.log=a;n.formatArgs=i;n.save=r;n.load=s;n.useColors=o;n.storage=\"undefined\"!=typeof chrome&&\"undefined\"!=typeof chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}();n.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"];n.formatters.j=function(e){return JSON.stringify(e)};n.enable(s())},{\"./debug\":1240}],1240:[function(e,t,n){function o(){return n.colors[c++%n.colors.length]}function i(e){function t(){}function i(){var e=i,t=+new Date,a=t-(l||t);e.diff=a;e.prev=l;e.curr=t;l=t;null==e.useColors&&(e.useColors=n.useColors());null==e.color&&e.useColors&&(e.color=o());var r=Array.prototype.slice.call(arguments);r[0]=n.coerce(r[0]);\"string\"!=typeof r[0]&&(r=[\"%o\"].concat(r));var s=0;r[0]=r[0].replace(/%([a-z%])/g,function(t,o){if(\"%%\"===t)return t;s++;var i=n.formatters[o];if(\"function\"==typeof i){var a=r[s];t=i.call(e,a);r.splice(s,1);s--}return t});\"function\"==typeof n.formatArgs&&(r=n.formatArgs.apply(e,r));(i.log||n.log||console.log.bind(console)).apply(e,r)}t.enabled=!1;i.enabled=!0;var a=n.enabled(e)?i:t;a.namespace=e;return a}function a(e){n.save(e);for(var t=(e||\"\").split(/[\\s,]+/),o=t.length,i=0;i<o;i++)if(t[i]){e=t[i].replace(/\\*/g,\".*?\");\"-\"===e[0]?n.skips.push(new RegExp(\"^\"+e.substr(1)+\"$\")):n.names.push(new RegExp(\"^\"+e+\"$\"))}}function r(){n.enable(\"\")}function s(e){var t,o;for(t=0,o=n.skips.length;t<o;t++)if(n.skips[t].test(e))return!1;for(t=0,\no=n.names.length;t<o;t++)if(n.names[t].test(e))return!0;return!1}function u(e){return e instanceof Error?e.stack||e.message:e}n=t.exports=i;n.coerce=u;n.disable=r;n.enable=a;n.enabled=s;n.humanize=e(\"ms\");n.names=[];n.skips=[];n.formatters={};var l,c=0},{\"ms\":1241}],1241:[function(e,t,n){function o(e){e=\"\"+e;if(!(e.length>1e4)){var t=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]);switch((t[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return n*d;case\"days\":case\"day\":case\"d\":return n*c;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return n*l;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return n*u;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return n*s;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return n}}}}function i(e){return e>=c?Math.round(e/c)+\"d\":e>=l?Math.round(e/l)+\"h\":e>=u?Math.round(e/u)+\"m\":e>=s?Math.round(e/s)+\"s\":e+\"ms\"}function a(e){return r(e,c,\"day\")||r(e,l,\"hour\")||r(e,u,\"minute\")||r(e,s,\"second\")||e+\" ms\"}function r(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+\" \"+n:Math.ceil(e/t)+\" \"+n+\"s\"}var s=1e3,u=60*s,l=60*u,c=24*l,d=365.25*c;t.exports=function(e,t){t=t||{};return\"string\"==typeof e?o(e):t[\"long\"]?a(e):i(e)}},{}],1242:[function(e,t,n){function o(e,t,n){for(var o=0;o<e.length;++o)t.call(n,e.charAt(o),o)}function i(e,t,n){for(var o in e)u.call(e,o)&&t.call(n,o,e[o])}function a(e,t,n){for(var o=0;o<e.length;++o)t.call(n,e[o],o)}try{var r=e(\"type\")}catch(l){var r=e(\"component-type\")}var s=e(\"to-function\"),u=Object.prototype.hasOwnProperty;t.exports=function(e,t,n){t=s(t);n=n||this;switch(r(e)){case\"array\":return a(e,t,n);case\"object\":return\"number\"==typeof e.length?a(e,t,n):i(e,t,n);case\"string\":return o(e,t,n)}}},{\"component-type\":1243,\"to-function\":1365,\"type\":1243}],1243:[function(e,t,n){var o=Object.prototype.toString;t.exports=function(e){switch(o.call(e)){case\"[object Function]\":return\"function\";case\"[object Date]\":return\"date\";case\"[object RegExp]\":return\"regexp\";case\"[object Arguments]\":return\"arguments\";case\"[object Array]\":return\"array\";case\"[object String]\":return\"string\"}return null===e?\"null\":e===undefined?\"undefined\":e&&1===e.nodeType?\"element\":e===Object(e)?\"object\":typeof e}},{}],1244:[function(e,t,n){function o(e){if(e)return i(e)}function i(e){for(var t in o.prototype)e[t]=o.prototype[t];return e}void 0!==t&&(t.exports=o);o.prototype.on=o.prototype.addEventListener=function(e,t){this._callbacks=this._callbacks||{};(this._callbacks[\"$\"+e]=this._callbacks[\"$\"+e]||[]).push(t);return this};o.prototype.once=function(e,t){function n(){this.off(e,n);t.apply(this,arguments)}n.fn=t;this.on(e,n);return this};o.prototype.off=o.prototype.removeListener=o.prototype.removeAllListeners=o.prototype.removeEventListener=function(e,t){this._callbacks=this._callbacks||{};if(0==arguments.length){this._callbacks={};return this}var n=this._callbacks[\"$\"+e];if(!n)return this;if(1==arguments.length){delete this._callbacks[\"$\"+e];return this}for(var o,i=0;i<n.length;i++){o=n[i];if(o===t||o.fn===t){n.splice(i,1);break}}0===n.length&&delete this._callbacks[\"$\"+e];return this};o.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),n=this._callbacks[\"$\"+e],o=1;o<arguments.length;o++)t[o-1]=arguments[o];if(n){n=n.slice(0);for(var o=0,i=n.length;o<i;++o)n[o].apply(this,t)}return this};o.prototype.listeners=function(e){this._callbacks=this._callbacks||{};return this._callbacks[\"$\"+e]||[]};o.prototype.hasListeners=function(e){return!!this.listeners(e).length}},{}],1245:[function(e,t,n){var o=window.addEventListener?\"addEventListener\":\"attachEvent\",i=window.removeEventListener?\"removeEventListener\":\"detachEvent\",a=\"addEventListener\"!==o?\"on\":\"\";n.bind=function(e,t,n,i){e[o](a+t,n,i||!1);return n};n.unbind=function(e,t,n,o){e[i](a+t,n,o||!1);return n}},{}],1246:[function(e,t,n){;t.exports=function(){};},{}],1247:[function(e,t,n){function o(e){return e.replace(/\\.\\w+|\\w+ *\\(|\"[^\"]*\"|'[^']*'|\\/([^\\/]+)\\//g,\"\").replace(s,\"\").match(/[a-zA-Z_]\\w*/g)||[]}function i(e,t,n){var o=/\\.\\w+|\\w+ *\\(|\"[^\"]*\"|'[^']*'|\\/([^\\/]+)\\/|[a-zA-Z_]\\w*/g;return e.replace(o,function(e){return\"(\"==e[e.length-1]?n(e):~t.indexOf(e)?n(e):e})}function a(e){for(var t=[],n=0;n<e.length;n++)~t.indexOf(e[n])||t.push(e[n]);return t}function r(e){return function(t){return e+t}}var s=/\\b(Array|Date|Object|Math|JSON)\\b/g;t.exports=function(e,t){var n=a(o(e));t&&\"string\"==typeof t&&(t=r(t));return t?i(e,n,t):n}},{}],1248:[function(e,t,n){var o=e(\"trim\"),i=e(\"type\"),a=/(\\w+)\\[(\\d+)\\]/,r=function(e){try{return encodeURIComponent(e)}catch(t){return e}},s=function(e){try{return decodeURIComponent(e.replace(/\\+/g,\" \"))}catch(t){return e}};n.parse=function(e){if(\"string\"!=typeof e)return{};e=o(e);if(\"\"==e)return{};\"?\"==e.charAt(0)&&(e=e.slice(1));for(var t={},n=e.split(\"&\"),i=0;i<n.length;i++){var r,u=n[i].split(\"=\"),l=s(u[0]);if(r=a.exec(l)){t[r[1]]=t[r[1]]||[];t[r[1]][r[2]]=s(u[1])}else t[u[0]]=null==u[1]?\"\":s(u[1])}return t};n.stringify=function(e){if(!e)return\"\";var t=[];for(var n in e){var o=e[n];if(\"array\"!=i(o))t.push(r(n)+\"=\"+r(e[n]));else for(var a=0;a<o.length;++a)t.push(r(n+\"[\"+a+\"]\")+\"=\"+r(o[a]))}return t.join(\"&\")}},{\"trim\":1371,\"type\":1249}],1249:[function(e,t,n){arguments[4][770][0].apply(n,arguments)},{\"dup\":770}],1250:[function(e,t,n){function o(e){return!(null==e||!(e._isBuffer||e.constructor&&\"function\"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)))}var i=Object.prototype.toString;t.exports=function(e){switch(i.call(e)){case\"[object Date]\":return\"date\";case\"[object RegExp]\":return\"regexp\";case\"[object Arguments]\":return\"arguments\";case\"[object Array]\":return\"array\";case\"[object Error]\":return\"error\"}if(null===e)return\"null\";if(e===undefined)return\"undefined\";if(e!==e)return\"nan\";if(e&&1===e.nodeType)return\"element\";if(o(e))return\"buffer\";e=e.valueOf?e.valueOf():Object.prototype.valueOf.apply(e);return typeof e}},{}],1251:[function(e,t,n){function o(e){switch(e){case\"http:\":return 80;case\"https:\":return 443;default:return location.port}}n.parse=function(e){var t=document.createElement(\"a\");t.href=e;return{href:t.href,host:t.host||location.host,port:\"0\"===t.port||\"\"===t.port?o(t.protocol):t.port,hash:t.hash,hostname:t.hostname||location.hostname,pathname:\"/\"!=t.pathname.charAt(0)?\"/\"+t.pathname:t.pathname,protocol:t.protocol&&\":\"!=t.protocol?t.protocol:location.protocol,search:t.search,query:t.search.slice(1)}};n.isAbsolute=function(e){return 0==e.indexOf(\"//\")||!!~e.indexOf(\"://\")};n.isRelative=function(e){return!n.isAbsolute(e)};n.isCrossDomain=function(e){e=n.parse(e);var t=n.parse(window.location.href);return e.hostname!==t.hostname||e.port!==t.port||e.protocol!==t.protocol}},{}],1252:[function(e,t,n){;t.exports=function(){};},{}],1253:[function(e,t,n){;t.exports=function(){};},{}],1254:[function(e,t,n){;t.exports=function(){};},{\"utils-define-read-only-property\":1379}],1255:[function(e,t,n){;t.exports=function(){};},{\"snake-case\":1357,\"upper-case\":1376}],1256:[function(e,t,n){;t.exports=function(){};},{}],1257:[function(e,t,n){;t.exports=function(){};},{}],1258:[function(e,t,n){function o(e,t,n){var o=n||{};return!(o.strict?!l(e,t):e!==t)||(!e||!t||\"object\"!=typeof e&&\"object\"!=typeof t?o.strict?l(e,t):e==t:r(e,t,o))}function i(e){return null===e||e===undefined}function a(e){return!(!e||\"object\"!=typeof e||\"number\"!=typeof e.length)&&(\"function\"==typeof e.copy&&\"function\"==typeof e.slice&&!(e.length>0&&\"number\"!=typeof e[0]))}function r(e,t,n){var r,l;if(typeof e!=typeof t)return!1;if(i(e)||i(t))return!1;if(e.prototype!==t.prototype)return!1;if(u(e)!==u(t))return!1;var h=c(e),m=c(t);if(h!==m)return!1;if(h||m)return e.source===t.source&&d(e)===d(t);if(p(e)&&p(t))return f.call(e)===f.call(t);var b=a(e),g=a(t);if(b!==g)return!1;if(b||g){if(e.length!==t.length)return!1;for(r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}if(typeof e!=typeof t)return!1;try{var y=s(e),v=s(t)}catch(w){return!1}if(y.length!==v.length)return!1;y.sort();v.sort();for(r=y.length-1;r>=0;r--)if(y[r]!=v[r])return!1;for(r=y.length-1;r>=0;r--){l=y[r];if(!o(e[l],t[l],n))return!1}return!0}var s=e(\"object-keys\"),u=e(\"is-arguments\"),l=e(\"object-is\"),c=e(\"is-regex\"),d=e(\"regexp.prototype.flags\"),p=e(\"is-date-object\"),f=Date.prototype.getTime;t.exports=o},{\"is-arguments\":1273,\"is-date-object\":1275,\"is-regex\":1278,\"object-is\":1325,\"object-keys\":1327,\"regexp.prototype.flags\":1337}],1259:[function(e,t,n){\"use strict\";var o=e(\"object-keys\"),i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol(\"foo\"),a=Object.prototype.toString,r=Array.prototype.concat,s=Object.defineProperty,u=function(e){return\"function\"==typeof e&&\"[object Function]\"===a.call(e)},l=s&&function(){var e={};try{s(e,\"x\",{enumerable:!1,value:e});for(var t in e)return!1;return e.x===e}catch(n){return!1}}(),c=function(e,t,n,o){(!(t in e)||u(o)&&o())&&(l?s(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n)},d=function(e,t){var n=arguments.length>2?arguments[2]:{},a=o(t);i&&(a=r.call(a,Object.getOwnPropertySymbols(t)));for(var s=0;s<a.length;s+=1)c(e,a[s],t[a[s]],n[a[s]])};d.supportsDescriptors=!!l;t.exports=d},{\"object-keys\":1327}],1260:[function(e,t,n){;t.exports=function(){};},{\"next-tick\":1318}],1261:[function(e,t,n){;function o(e,t){if(\"string\"!=typeof e)throw new TypeError(\"String expected\");t||(t=document);var n=/<([\\w:]+)/.exec(e);if(!n)return t.createTextNode(e);e=e.replace(/^\\s+|\\s+$/g,\"\");var o=n[1];if(\"body\"==o){var i=t.createElement(\"html\");i.innerHTML=e;return i.removeChild(i.lastChild)}var a=r[o]||r._default,s=a[0],u=a[1],l=a[2],i=t.createElement(\"div\");i.innerHTML=u+e+l;for(;s--;)i=i.lastChild;if(i.firstChild==i.lastChild)return i.removeChild(i.firstChild);for(var c=t.createDocumentFragment();i.firstChild;)c.appendChild(i.removeChild(i.firstChild));return c}t.exports=o;var i,a=!1;if(\"undefined\"!=typeof document){i=document.createElement(\"div\");i.innerHTML='  <link/><table></table><a href=\"/a\">a</a><input type=\"checkbox\"/>';a=!i.getElementsByTagName(\"link\").length;i=undefined}var r={legend:[1,\"<fieldset>\",\"</fieldset>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],_default:a?[1,\"X<div>\",\"</div>\"]:[0,\"\",\"\"]};r.td=r.th=[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"];r.option=r.optgroup=[1,'<select multiple=\"multiple\">',\"</select>\"];r.thead=r.tbody=r.colgroup=r.caption=r.tfoot=[1,\"<table>\",\"</table>\"];r.polyline=r.ellipse=r.polygon=r.circle=r.text=r.line=r.path=r.rect=r.g=[1,'<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">',\"</svg>\"];},{}],1262:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319}],1263:[function(e,t,n){\"use strict\";var o=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===i.call(e)},u=function(e){if(!e||\"[object Object]\"!==i.call(e))return!1;var t=o.call(e,\"constructor\"),n=e.constructor&&e.constructor.prototype&&o.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!t&&!n)return!1;var a;for(a in e);return void 0===a||o.call(e,a)},l=function(e,t){a&&\"__proto__\"===t.name?a(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},c=function(e,t){if(\"__proto__\"===t){if(!o.call(e,t))return;if(r)return r(e,t).value}return e[t]};t.exports=function d(){var e,t,n,o,i,a,r=arguments[0],p=1,f=arguments.length,h=!1;if(\"boolean\"==typeof r){h=r;r=arguments[1]||{};p=2}(null==r||\"object\"!=typeof r&&\"function\"!=typeof r)&&(r={});for(;p<f;++p){e=arguments[p];if(null!=e)for(t in e){n=c(r,t);o=c(e,t);if(r!==o)if(h&&o&&(u(o)||(i=s(o)))){if(i){i=!1;a=n&&s(n)?n:[]}else a=n&&u(n)?n:{};l(r,{name:t,newValue:d(h,a,o)})}else void 0!==o&&l(r,{name:t,newValue:o})}}return r}},{}],1264:[function(e,t,n){\"use strict\";var o=Array.prototype.slice,i=Object.prototype.toString;t.exports=function(e){var t=this;if(\"function\"!=typeof t||\"[object Function]\"!==i.call(t))throw new TypeError(\"Function.prototype.bind called on incompatible \"+t);for(var n,a=o.call(arguments,1),r=function(){if(this instanceof n){var i=t.apply(this,a.concat(o.call(arguments)));return Object(i)===i?i:this}return t.apply(e,a.concat(o.call(arguments)))},s=Math.max(0,t.length-a.length),u=[],l=0;l<s;l++)u.push(\"$\"+l);n=Function(\"binder\",\"return function (\"+u.join(\",\")+\"){ return binder.apply(this,arguments); }\")(r);if(t.prototype){var c=function(){};c.prototype=t.prototype;n.prototype=new c;c.prototype=null}return n}},{}],1265:[function(e,t,n){\"use strict\";var o=e(\"./implementation\");t.exports=Function.prototype.bind||o},{\"./implementation\":1264}],1266:[function(e,t,n){;function o(e,t){var n=i(\"global-queue:\"+e);t=t||{};return function(o){o=[].slice.call(arguments);window[e]||(window[e]=[]);n(\"%o\",o);!1===t.wrap?window[e].push.apply(window[e],o):window[e].push(o)}}var i=e(\"debug\");t.exports=o;},{\"debug\":1267}],1267:[function(e,t,n){;arguments[4][11][0].apply(n,arguments);},{\"./debug\":1268,\"_process\":1232,\"dup\":11}],1268:[function(e,t,n){;arguments[4][12][0].apply(n,arguments);},{\"dup\":12,\"ms\":1313}],1269:[function(e,t,n){try{t.exports=\"undefined\"!=typeof XMLHttpRequest&&\"withCredentials\"in new XMLHttpRequest}catch(o){t.exports=!1}},{}],1270:[function(e,t,n){\"use strict\";var o=e(\"function-bind\");t.exports=o.call(Function.call,Object.prototype.hasOwnProperty)},{\"function-bind\":1265}],1271:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319,\"upper-case\":1376}],1272:[function(e,t,n){\"function\"==typeof Object.create?t.exports=function(e,t){if(t){e.super_=t;e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}}:t.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype;e.prototype=new n;e.prototype.constructor=e}}},{}],1273:[function(e,t,n){\"use strict\";var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,i=Object.prototype.toString,a=function(e){return!(o&&e&&\"object\"==typeof e&&Symbol.toStringTag in e)&&\"[object Arguments]\"===i.call(e)},r=function(e){return!!a(e)||null!==e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&\"[object Array]\"!==i.call(e)&&\"[object Function]\"===i.call(e.callee)},s=function(){return a(arguments)}();a.isLegacyArguments=r;t.exports=s?a:r},{}],1274:[function(e,t,n){;t.exports=function(){};},{}],1275:[function(e,t,n){\"use strict\";var o=Date.prototype.getDay,i=function(e){try{o.call(e);return!0}catch(t){return!1}},a=Object.prototype.toString,r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag;t.exports=function(e){return\"object\"==typeof e&&null!==e&&(r?i(e):\"[object Date]\"===a.call(e))}},{}],1276:[function(e,t,n){;t.exports=function(){};},{}],1277:[function(e,t,n){;t.exports=function(){};},{\"lower-case\":1300}],1278:[function(e,t,n){\"use strict\";var o=e(\"has\"),i=RegExp.prototype.exec,a=Object.getOwnPropertyDescriptor,r=function(e){try{var t=e.lastIndex;e.lastIndex=0;i.call(e);return!0}catch(n){return!1}finally{e.lastIndex=t}},s=Object.prototype.toString,u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag;t.exports=function(e){if(!e||\"object\"!=typeof e)return!1;if(!u)return\"[object RegExp]\"===s.call(e);var t=a(e,\"lastIndex\");return!(!t||!o(t,\"value\"))&&r(e)}},{\"has\":1270}],1279:[function(e,t,n){;t.exports=function(){};},{\"upper-case\":1376}],1280:[function(e,t,n){arguments[4][777][0].apply(n,arguments)},{\"dup\":777}],1281:[function(e,t,n){;t.exports=function(){};},{}],1282:[function(require,module,exports){;module.exports=function(){};},{\"_process\":1232}],1283:[function(e,t,n){;t.exports=function(){};},{\"_process\":1232}],1284:[function(e,t,n){(function(e){(function(){function o(e,t){function n(e,t){try{e()}catch(n){t&&t()}}function i(e){if(null!=i[e])return i[e];var o;if(\"bug-string-char-index\"==e)o=\"a\"!=\"a\"[0];else if(\"json\"==e)o=i(\"json-stringify\")&&i(\"date-serialization\")&&i(\"json-parse\");else if(\"date-serialization\"==e){o=i(\"json-stringify\")&&w;if(o){var a=t.stringify;n(function(){o='\"-271821-04-20T00:00:00.000Z\"'==a(new d(-864e13))&&'\"+275760-09-13T00:00:00.000Z\"'==a(new d(864e13))&&'\"-000001-01-01T00:00:00.000Z\"'==a(new d(-621987552e5))&&'\"1969-12-31T23:59:59.999Z\"'==a(new d(-1))})}}else{var r,s='{\"a\":[1,true,false,null,\"\\\\u0000\\\\b\\\\n\\\\f\\\\r\\\\t\"]}';if(\"json-stringify\"==e){var a=t.stringify,c=\"function\"==typeof a;if(c){(r=function(){return 1}).toJSON=r;n(function(){c=\"0\"===a(0)&&\"0\"===a(new u)&&'\"\"'==a(new l)&&a(y)===b&&a(b)===b&&a()===b&&\"1\"===a(r)&&\"[1]\"==a([r])&&\"[null]\"==a([b])&&\"null\"==a(null)&&\"[null,null,null]\"==a([b,y,null])&&a({\"a\":[r,!0,!1,null,\"\\0\\b\\n\\f\\r\\t\"]})==s&&\"1\"===a(null,r)&&\"[\\n 1,\\n 2\\n]\"==a([1,2],null,1)},function(){c=!1})}o=c}if(\"json-parse\"==e){var p,f=t.parse;\"function\"==typeof f&&n(function(){if(0===f(\"0\")&&!f(!1)){r=f(s);p=5==r.a.length&&1===r.a[0];if(p){n(function(){p=!f('\"\\t\"')});p&&n(function(){p=1!==f(\"01\")});p&&n(function(){p=1!==f(\"1.\")})}}},function(){p=!1});o=p}}return i[e]=!!o}function r(e){return E(this)}e||(e=s.Object());t||(t=s.Object());var u=e.Number||s.Number,l=e.String||s.String,c=e.Object||s.Object,d=e.Date||s.Date,p=e.SyntaxError||s.SyntaxError,f=e.TypeError||s.TypeError,h=e.Math||s.Math,m=e.JSON||s.JSON;if(\"object\"==typeof m&&m){t.stringify=m.stringify;t.parse=m.parse}var b,g=c.prototype,y=g.toString,v=g.hasOwnProperty,w=new d(-0xc782b5b800cec);n(function(){w=-109252==w.getUTCFullYear()&&0===w.getUTCMonth()&&1===w.getUTCDate()&&10==w.getUTCHours()&&37==w.getUTCMinutes()&&6==w.getUTCSeconds()&&708==w.getUTCMilliseconds()});i[\"bug-string-char-index\"]=i[\"date-serialization\"]=i.json=i[\"json-stringify\"]=i[\"json-parse\"]=null;if(!i(\"json\")){var x=i(\"bug-string-char-index\"),k=function(e,t){var n,o,i,r=0;(n=function(){this.valueOf=0}).prototype.valueOf=0;o=new n;for(i in o)v.call(o,i)&&r++;n=o=null;if(r)k=function(e,t){var n,o,i=\"[object Function]\"==y.call(e);for(n in e)i&&\"prototype\"==n||!v.call(e,n)||(o=\"constructor\"===n)||t(n);(o||v.call(e,n=\"constructor\"))&&t(n)};else{o=[\"valueOf\",\"toString\",\"toLocaleString\",\"propertyIsEnumerable\",\"isPrototypeOf\",\"hasOwnProperty\",\"constructor\"];k=function(e,t){var n,i,r=\"[object Function]\"==y.call(e),s=!r&&\"function\"!=typeof e.constructor&&a[typeof e.hasOwnProperty]&&e.hasOwnProperty||v;for(n in e)r&&\"prototype\"==n||!s.call(e,n)||t(n);for(i=o.length;n=o[--i];)s.call(e,n)&&t(n)}}return k(e,t)};if(!i(\"json-stringify\")&&!i(\"date-serialization\")){var A={92:\"\\\\\\\\\",34:'\\\\\"',8:\"\\\\b\",12:\"\\\\f\",10:\"\\\\n\",13:\"\\\\r\",9:\"\\\\t\"},_=function(e,t){return(\"000000\"+(t||0)).slice(-e)},E=function(e){var t,n,o,i,a,r,s,u,l;if(w)t=function(e){n=e.getUTCFullYear();o=e.getUTCMonth();i=e.getUTCDate();r=e.getUTCHours();s=e.getUTCMinutes();u=e.getUTCSeconds();l=e.getUTCMilliseconds()};else{var c=h.floor,d=[0,31,59,90,120,151,181,212,243,273,304,334],p=function(e,t){return d[t]+365*(e-1970)+c((e-1969+(t=+(t>1)))/4)-c((e-1901+t)/100)+c((e-1601+t)/400)};t=function(e){i=c(e/864e5);for(n=c(i/365.2425)+1970-1;p(n+1,0)<=i;n++);for(o=c((i-p(n,0))/30.42);p(n,o+1)<=i;o++);i=1+i-p(n,o);a=(e%864e5+864e5)%864e5;r=c(a/36e5)%24;s=c(a/6e4)%60;u=c(a/1e3)%60;l=a%1e3}}E=function(e){if(e>-1/0&&e<1/0){t(e);e=(n<=0||n>=1e4?(n<0?\"-\":\"+\")+_(6,n<0?-n:n):_(4,n))+\"-\"+_(2,o+1)+\"-\"+_(2,i)+\"T\"+_(2,r)+\":\"+_(2,s)+\":\"+_(2,u)+\".\"+_(3,l)+\"Z\";n=o=i=r=s=u=l=null}else e=null;return e};return E(e)};if(i(\"json-stringify\")&&!i(\"date-serialization\")){var C=t.stringify;t.stringify=function(e,t,n){var o=d.prototype.toJSON;d.prototype.toJSON=r;var i=C(e,t,n);d.prototype.toJSON=o;return i}}else{var I=function(e){var t=e.charCodeAt(0),n=A[t];return n||\"\\\\u00\"+_(2,t.toString(16))},S=/[\\x00-\\x1f\\x22\\x5c]/g,j=function(e){S.lastIndex=0;return'\"'+(S.test(e)?e.replace(S,I):e)+'\"'},T=function(e,t,o,i,a,r,s){var u,l,c,p,h,m,g,v,w;n(function(){u=t[e]});\"object\"==typeof u&&u&&(u.getUTCFullYear&&\"[object Date]\"==y.call(u)&&u.toJSON===d.prototype.toJSON?u=E(u):\"function\"==typeof u.toJSON&&(u=u.toJSON(e)));o&&(u=o.call(t,e,u));if(u==b)return u===b?u:\"null\";l=typeof u;\"object\"==l&&(c=y.call(u));switch(c||l){case\"boolean\":case\"[object Boolean]\":return\"\"+u;case\"number\":case\"[object Number]\":return u>-1/0&&u<1/0?\"\"+u:\"null\";case\"string\":case\"[object String]\":return j(\"\"+u)}if(\"object\"==typeof u){for(g=s.length;g--;)if(s[g]===u)throw f();s.push(u);p=[];v=r;r+=a;if(\"[object Array]\"==c){for(m=0,g=u.length;m<g;m++){h=T(m,u,o,i,a,r,s);p.push(h===b?\"null\":h)}w=p.length?a?\"[\\n\"+r+p.join(\",\\n\"+r)+\"\\n\"+v+\"]\":\"[\"+p.join(\",\")+\"]\":\"[]\"}else{k(i||u,function(e){var t=T(e,u,o,i,a,r,s);t!==b&&p.push(j(e)+\":\"+(a?\" \":\"\")+t)});w=p.length?a?\"{\\n\"+r+p.join(\",\\n\"+r)+\"\\n\"+v+\"}\":\"{\"+p.join(\",\")+\"}\":\"{}\"}s.pop();return w}};t.stringify=function(e,t,n){var o,i,r,s;if(a[typeof t]&&t){s=y.call(t);if(\"[object Function]\"==s)i=t;else if(\"[object Array]\"==s){r={};for(var u,l=0,c=t.length;l<c;){u=t[l++];s=y.call(u);\"[object String]\"!=s&&\"[object Number]\"!=s||(r[u]=1)}}}if(n){s=y.call(n);if(\"[object Number]\"==s){if((n-=n%1)>0){n>10&&(n=10);for(o=\"\";o.length<n;)o+=\" \"}}else\"[object String]\"==s&&(o=n.length<=10?n:n.slice(0,10))}return T(\"\",(u={},u[\"\"]=e,u),i,r,o,\"\",[])}}}if(!i(\"json-parse\")){var P,D,F=l.fromCharCode,M={92:\"\\\\\",34:'\"',47:\"/\",98:\"\\b\",116:\"\\t\",110:\"\\n\",102:\"\\f\",114:\"\\r\"},O=function(){P=D=null;throw p()},B=function(){for(var e,t,n,o,i,a=D,r=a.length;P<r;){i=a.charCodeAt(P);switch(i){case 9:case 10:case 13:case 32:P++;break;case 123:case 125:case 91:case 93:case 58:case 44:e=x?a.charAt(P):a[P];P++;return e;case 34:for(e=\"@\",P++;P<r;){i=a.charCodeAt(P);if(i<32)O();else if(92==i){i=a.charCodeAt(++P);switch(i){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:e+=M[i];P++;break;case 117:t=++P;for(n=P+4;P<n;P++){i=a.charCodeAt(P);i>=48&&i<=57||i>=97&&i<=102||i>=65&&i<=70||O()}e+=F(\"0x\"+a.slice(t,P));break;default:O()}}else{if(34==i)break;i=a.charCodeAt(P);t=P;for(;i>=32&&92!=i&&34!=i;)i=a.charCodeAt(++P);e+=a.slice(t,P)}}if(34==a.charCodeAt(P)){P++;return e}O();default:t=P;if(45==i){o=!0;i=a.charCodeAt(++P)}if(i>=48&&i<=57){48==i&&(i=a.charCodeAt(P+1),i>=48&&i<=57)&&O();o=!1;for(;P<r&&(i=a.charCodeAt(P),i>=48&&i<=57);P++);if(46==a.charCodeAt(P)){n=++P;for(;n<r;n++){i=a.charCodeAt(n);if(i<48||i>57)break}n==P&&O();P=n}i=a.charCodeAt(P);if(101==i||69==i){i=a.charCodeAt(++P);43!=i&&45!=i||P++;for(n=P;n<r;n++){i=a.charCodeAt(n);if(i<48||i>57)break}n==P&&O();P=n}return+a.slice(t,P)}o&&O();var s=a.slice(P,P+4);if(\"true\"==s){P+=4;return!0}if(\"fals\"==s&&101==a.charCodeAt(P+4)){P+=5;return!1}if(\"null\"==s){P+=4;return null}O()}}return\"$\"},N=function(e){var t,n;\"$\"==e&&O();if(\"string\"==typeof e){if(\"@\"==(x?e.charAt(0):e[0]))return e.slice(1);if(\"[\"==e){t=[];for(;;){e=B();if(\"]\"==e)break;if(n)if(\",\"==e){e=B();\"]\"==e&&O()}else O();else n=!0;\",\"==e&&O();t.push(N(e))}return t}if(\"{\"==e){t={};for(;;){e=B();if(\"}\"==e)break;if(n)if(\",\"==e){e=B();\"}\"==e&&O()}else O();else n=!0;\",\"!=e&&\"string\"==typeof e&&\"@\"==(x?e.charAt(0):e[0])&&\":\"==B()||O();t[e.slice(1)]=N(B())}return t}O()}return e},R=function(e,t,n){var o=q(e,t,n);o===b?delete e[t]:e[t]=o},q=function(e,t,n){var o,i=e[t];if(\"object\"==typeof i&&i)if(\"[object Array]\"==y.call(i))for(o=i.length;o--;)R(y,k,i);else k(i,function(e){R(i,e,n)});return n.call(e,t,i)};t.parse=function(e,t){var n,o;P=0;D=\"\"+e;n=N(B());\"$\"!=B()&&O();P=D=null;return t&&\"[object Function]\"==y.call(t)?q((o={},o[\"\"]=n,o),\"\",t):n}}}t.runInContext=o;return t}var i=\"function\"==typeof define&&define.amd,a={\"function\":!0,\"object\":!0},r=a[typeof n]&&n&&!n.nodeType&&n,s=a[typeof window]&&window||this,u=r&&a[typeof t]&&t&&!t.nodeType&&\"object\"==typeof e&&e;!u||u.global!==u&&u.window!==u&&u.self!==u||(s=u);if(r&&!i)o(s,r);else{var l=s.JSON,c=s.JSON3,d=!1,p=o(s,s.JSON3={\"noConflict\":function(){if(!d){d=!0;s.JSON=l;s.JSON3=c;l=c=null}return p}});s.JSON={\"parse\":p.parse,\"stringify\":p.stringify}}i&&define(function(){return p})}).call(this)}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{})},{}],1285:[function(e,t,n){function o(){}function i(e,t,n){function i(){u.parentNode&&u.parentNode.removeChild(u);window[d]=o;l&&clearTimeout(l)}function s(){window[d]&&i()}if(\"function\"==typeof t){n=t;t={}}t||(t={});var u,l,c=t.prefix||\"__jp\",d=t.name||c+r++,p=t.param||\"callback\",f=null!=t.timeout?t.timeout:6e4,h=encodeURIComponent,m=document.getElementsByTagName(\"script\")[0]||document.head;f&&(l=setTimeout(function(){i();n&&n(new Error(\"Timeout\"))},f));window[d]=function(e){a(\"jsonp got\",e);i();n&&n(null,e)};e+=(~e.indexOf(\"?\")?\"&\":\"?\")+p+\"=\"+h(d);e=e.replace(\"?&\",\"?\");a('jsonp req \"%s\"',e);u=document.createElement(\"script\");u.src=e;m.parentNode.insertBefore(u,m);return s}var a=e(\"debug\")(\"jsonp\");t.exports=i;var r=0},{\"debug\":1286}],1286:[function(e,t,n){arguments[4][11][0].apply(n,arguments)},{\"./debug\":1287,\"_process\":1232,\"dup\":11}],1287:[function(e,t,n){arguments[4][12][0].apply(n,arguments)},{\"dup\":12,\"ms\":1313}],1288:[function(e,t,n){;var i=e(\"@segment/analytics.js-integration\");t.exports=function(){};t.exports.Integration=i(\"empty\");},{\"@segment/analytics.js-integration\":1289}],1289:[function(e,t,n){;t.exports=function(){};},{\"./protos\":1290,\"./statics\":1291,\"@ndhoule/defaults\":30,\"component-bind\":1236,\"debug\":1292,\"dup\":7,\"extend\":1294,\"slug-component\":1356}],1290:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/after\":27,\"@ndhoule/each\":32,\"@ndhoule/every\":34,\"@ndhoule/foldl\":36,\"@segment/fmt\":1156,\"@segment/load-script\":1160,\"analytics-events\":1216,\"component-emitter\":1244,\"dup\":8,\"is\":1280,\"load-iframe\":1295,\"next-tick\":1318,\"to-no-case\":1366}],1291:[function(e,t,n){;t.exports=function(){};},{\"@ndhoule/each\":32,\"@ndhoule/includes\":37,\"component-emitter\":1244,\"domify\":1261,\"dup\":9}],1292:[function(e,t,n){;t.exports=function(){};},{\"./debug\":1293,\"_process\":1232,\"dup\":11}],1293:[function(e,t,n){;t.exports=function(){};},{\"dup\":12,\"ms\":1313}],1294:[function(e,t,n){;t.exports=function(){};},{\"dup\":10}],1295:[function(e,t,n){;var o=e(\"is\"),i=e(\"script-onload\"),a=e(\"next-tick\");t.exports=function(e,t){if(!e)throw new Error(\"Cant load nothing...\");o.string(e)&&(e={src:e});var n=\"https:\"===document.location.protocol||\"chrome-extension:\"===document.location.protocol;e.src&&0===e.src.indexOf(\"//\")&&(e.src=n?\"https:\"+e.src:\"http:\"+e.src);n&&e.https?e.src=e.https:!n&&e.http&&(e.src=e.http);var r=document.createElement(\"iframe\");r.src=e.src;r.width=e.width||1;r.height=e.height||1;r.style.display=\"none\";o.fn(t)&&i(r,t);a(function(){var e=document.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)});return r};},{\"is\":1280,\"next-tick\":1318,\"script-onload\":1341}],1296:[function(e,t,n){(function(e){function n(e,t){return null==e?undefined:e[t]}function o(e){var t=!1;if(null!=e&&\"function\"!=typeof e.toString)try{t=!!(e+\"\")}catch(n){}return t}function i(e){var t=-1,n=e?e.length:0;this.clear();for(;++t<n;){var o=e[t];this.set(o[0],o[1])}}function a(){this.__data__=be?be(null):{}}function r(e){return this.has(e)&&delete this.__data__[e]}function s(e){var t=this.__data__;if(be){var n=t[e];return n===H?undefined:n}return ce.call(t,e)?t[e]:undefined}function u(e){var t=this.__data__;return be?t[e]!==undefined:ce.call(t,e)}function l(e,t){this.__data__[e]=be&&t===undefined?H:t;return this}\nfunction c(e){var t=-1,n=e?e.length:0;this.clear();for(;++t<n;){var o=e[t];this.set(o[0],o[1])}}function d(){this.__data__=[]}function p(e){var t=this.__data__,n=k(t,e);if(n<0)return!1;n==t.length-1?t.pop():he.call(t,n,1);return!0}function f(e){var t=this.__data__,n=k(t,e);return n<0?undefined:t[n][1]}function h(e){return k(this.__data__,e)>-1}function m(e,t){var n=this.__data__,o=k(n,e);o<0?n.push([e,t]):n[o][1]=t;return this}function b(e){var t=-1,n=e?e.length:0;this.clear();for(;++t<n;){var o=e[t];this.set(o[0],o[1])}}function g(){this.__data__={\"hash\":new i,\"map\":new(me||c),\"string\":new i}}function y(e){return I(this,e)[\"delete\"](e)}function v(e){return I(this,e).get(e)}function w(e){return I(this,e).has(e)}function x(e,t){I(this,e).set(e,t);return this}function k(e,t){for(var n=e.length;n--;)if(O(e[n][0],t))return n;return-1}function A(e,t){t=j(t,e)?[t]:C(t);for(var n=0,o=t.length;null!=e&&n<o;)e=e[D(t[n++])];return n&&n==o?e:undefined}function _(e){return!(!N(e)||P(e))&&(B(e)||o(e)?pe:ee).test(F(e))}function E(e){if(\"string\"==typeof e)return e;if(q(e))return ye?ye.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-V?\"-0\":t}function C(e){return we(e)?e:ve(e)}function I(e,t){var n=e.__data__;return T(t)?n[\"string\"==typeof t?\"string\":\"hash\"]:n.map}function S(e,t){var o=n(e,t);return _(o)?o:undefined}function j(e,t){if(we(e))return!1;var n=typeof e;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=e&&!q(e))||(Y.test(e)||!Q.test(e)||null!=t&&e in Object(t))}function T(e){var t=typeof e;return\"string\"==t||\"number\"==t||\"symbol\"==t||\"boolean\"==t?\"__proto__\"!==e:null===e}function P(e){return!!ue&&ue in e}function D(e){if(\"string\"==typeof e||q(e))return e;var t=e+\"\";return\"0\"==t&&1/e==-V?\"-0\":t}function F(e){if(null!=e){try{return le.call(e)}catch(t){}try{return e+\"\"}catch(t){}}return\"\"}function M(e,t){if(\"function\"!=typeof e||t&&\"function\"!=typeof t)throw new TypeError(z);var n=function(){var o=arguments,i=t?t.apply(this,o):o[0],a=n.cache;if(a.has(i))return a.get(i);var r=e.apply(this,o);n.cache=a.set(i,r);return r};n.cache=new(M.Cache||b);return n}function O(e,t){return e===t||e!==e&&t!==t}function B(e){var t=N(e)?de.call(e):\"\";return t==W||t==K}function N(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function R(e){return!!e&&\"object\"==typeof e}function q(e){return\"symbol\"==typeof e||R(e)&&de.call(e)==G}function L(e){return null==e?\"\":E(e)}function U(e,t,n){var o=null==e?undefined:A(e,t);return o===undefined?n:o}var z=\"Expected a function\",H=\"__lodash_hash_undefined__\",V=1/0,W=\"[object Function]\",K=\"[object GeneratorFunction]\",G=\"[object Symbol]\",Q=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Y=/^\\w*$/,$=/^\\./,X=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,J=/[\\\\^$.*+?()[\\]{}|]/g,Z=/\\\\(\\\\)?/g,ee=/^\\[object .+?Constructor\\]$/,te=\"object\"==typeof e&&e&&e.Object===Object&&e,ne=\"object\"==typeof self&&self&&self.Object===Object&&self,oe=te||ne||Function(\"return this\")(),ie=Array.prototype,ae=Function.prototype,re=Object.prototype,se=oe[\"__core-js_shared__\"],ue=function(){var e=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||\"\");return e?\"Symbol(src)_1.\"+e:\"\"}(),le=ae.toString,ce=re.hasOwnProperty,de=re.toString,pe=RegExp(\"^\"+le.call(ce).replace(J,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),fe=oe.Symbol,he=ie.splice,me=S(oe,\"Map\"),be=S(Object,\"create\"),ge=fe?fe.prototype:undefined,ye=ge?ge.toString:undefined;i.prototype.clear=a;i.prototype[\"delete\"]=r;i.prototype.get=s;i.prototype.has=u;i.prototype.set=l;c.prototype.clear=d;c.prototype[\"delete\"]=p;c.prototype.get=f;c.prototype.has=h;c.prototype.set=m;b.prototype.clear=g;b.prototype[\"delete\"]=y;b.prototype.get=v;b.prototype.has=w;b.prototype.set=x;var ve=M(function(e){e=L(e);var t=[];$.test(e)&&t.push(\"\");e.replace(X,function(e,n,o,i){t.push(o?i.replace(Z,\"$1\"):n||e)});return t});M.Cache=b;var we=Array.isArray;t.exports=U}).call(this,\"undefined\"!=typeof window&&window.document&&window.document.implementation?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{})},{}],1297:[function(e,t,n){;t.exports=function(){};},{}],1298:[function(e,t,n){;t.exports=function(){};},{}],1299:[function(e,t,n){;t.exports=function(){};},{\"lower-case\":1300}],1300:[function(e,t,n){;t.exports=function(){};},{}],1301:[function(e,t,n){;t.exports=function(){};},{}],1302:[function(e,t,n){;t.exports=function(){};},{\"math-float64-from-words\":1304,\"math-float64-get-high-word\":1307,\"math-float64-to-words\":1310}],1303:[function(e,t,n){;t.exports=function(){};},{\"math-float64-get-high-word\":1307}],1304:[function(e,t,n){\"use strict\";function o(e,t){r[s]=e;r[u]=t;return a[0]}var i=e(\"./indices.js\"),a=new Float64Array(1),r=new Uint32Array(a.buffer),s=i.HIGH,u=i.LOW;t.exports=o},{\"./indices.js\":1305}],1305:[function(e,t,n){;t.exports=function(){};},{\"utils-is-little-endian\":1381}],1306:[function(e,t,n){;t.exports=function(){};},{\"utils-is-little-endian\":1381}],1307:[function(e,t,n){\"use strict\";function o(e){a[0]=e;return r[i]}var i=e(\"./high.js\"),a=new Float64Array(1),r=new Uint32Array(a.buffer);t.exports=o},{\"./high.js\":1306}],1308:[function(e,t,n){;t.exports=function(){};},{\"const-ninf-float64\":1252,\"const-pinf-float64\":1253,\"math-float64-copysign\":1302,\"math-float64-exponent\":1303,\"math-float64-from-words\":1304,\"math-float64-normalize\":1309,\"math-float64-to-words\":1310}],1309:[function(e,t,n){;t.exports=function(){};},{\"const-smallest-float64\":1254,\"math-abs\":1301,\"validate.io-infinite\":1387}],1310:[function(e,t,n){\"use strict\";function o(e){a[0]=e;return[r[s],r[u]]}var i=e(\"./indices.js\"),a=new Float64Array(1),r=new Uint32Array(a.buffer),s=i.HIGH,u=i.LOW;t.exports=o},{\"./indices.js\":1311}],1311:[function(e,t,n){;t.exports=function(){};},{\"utils-is-little-endian\":1381}],1312:[function(e,t,n){;t.exports=function(){};},{\"charenc\":1235,\"crypt\":1256,\"is-buffer\":1274}],1313:[function(e,t,n){function o(e){e=String(e);if(!(e.length>100)){var t=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]);switch((t[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return n*d;case\"days\":case\"day\":case\"d\":return n*c;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return n*l;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return n*u;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return n*s;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return n;default:return undefined}}}}function i(e){return e>=c?Math.round(e/c)+\"d\":e>=l?Math.round(e/l)+\"h\":e>=u?Math.round(e/u)+\"m\":e>=s?Math.round(e/s)+\"s\":e+\"ms\"}function a(e){return r(e,c,\"day\")||r(e,l,\"hour\")||r(e,u,\"minute\")||r(e,s,\"second\")||e+\" ms\"}function r(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+\" \"+n:Math.ceil(e/t)+\" \"+n+\"s\"}var s=1e3,u=60*s,l=60*u,c=24*l,d=365.25*c;t.exports=function(e,t){t=t||{};var n=typeof e;if(\"string\"===n&&e.length>0)return o(e);if(\"number\"===n&&!1===isNaN(e))return t[\"long\"]?a(e):i(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))}},{}],1314:[function(e,t,n){\"use strict\";function o(e){return e<315576e5?1e3*e:e}var i=e(\"is\"),a=e(\"@segment/isodate\"),r=e(\"./milliseconds\"),s=e(\"./seconds\");t.exports=function(e){return i.date(e)?e:i.number(e)?new Date(o(e)):a.is(e)?a.parse(e):r.is(e)?r.parse(e):s.is(e)?s.parse(e):new Date(e)}},{\"./milliseconds\":1315,\"./seconds\":1316,\"@segment/isodate\":1317,\"is\":1280}],1315:[function(e,t,n){\"use strict\";var o=/\\d{13}/;n.is=function(e){return o.test(e)};n.parse=function(e){e=parseInt(e,10);return new Date(e)}},{}],1316:[function(e,t,n){\"use strict\";var o=/\\d{10}/;n.is=function(e){return o.test(e)};n.parse=function(e){var t=1e3*parseInt(e,10);return new Date(t)}},{}],1317:[function(e,t,n){\"use strict\";var o=/^(\\d{4})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:([ T])(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;n.parse=function(e){var t=[1,5,6,7,11,12],n=o.exec(e),i=0;if(!n)return new Date(e);for(var a,r=0;a=t[r];r++)n[a]=parseInt(n[a],10)||0;n[2]=parseInt(n[2],10)||1;n[3]=parseInt(n[3],10)||1;n[2]--;n[8]=n[8]?(n[8]+\"00\").substring(0,3):0;if(\" \"===n[4])i=(new Date).getTimezoneOffset();else if(\"Z\"!==n[9]&&n[10]){i=60*n[11]+n[12];\"+\"===n[10]&&(i=0-i)}var s=Date.UTC(n[1],n[2],n[3],n[5],n[6]+i,n[7],n[8]);return new Date(s)};n.is=function(e,t){return(!t||!1!==/^\\d{4}-\\d{2}-\\d{2}/.test(e))&&o.test(e)}},{}],1318:[function(e,t,n){arguments[4][354][0].apply(n,arguments)},{\"_process\":1232,\"dup\":354,\"timers\":1361}],1319:[function(e,t,n){;t.exports=function(){};},{\"./vendor/camel-case-regexp\":1320,\"./vendor/camel-case-upper-regexp\":1321,\"./vendor/non-word-regexp\":1322,\"lower-case\":1300}],1320:[function(e,t,n){;t.exports=function(){};},{}],1321:[function(e,t,n){;t.exports=function(){};},{}],1322:[function(e,t,n){;t.exports=function(){};},{}],1323:[function(e,t,n){function o(e){return function(t,n,o,i){normalize=i&&u(i.normalizer)?i.normalizer:s;n=normalize(n);for(var a,r=!1;!r;)!function(){for(a in t){var e=normalize(a);if(0===n.indexOf(e)){var o=n.substr(e.length);if(\".\"===o.charAt(0)||0===o.length){n=o.substr(1);var i=t[a];if(null==i){r=!0;return}if(!n.length){r=!0;return}t=i;return}}}a=undefined;r=!0}();if(a)return null==t?t:e(t,a,o)}}function i(e,t){if(e.hasOwnProperty(t))return e[t]}function a(e,t){e.hasOwnProperty(t)&&delete e[t];return e}function r(e,t,n){e.hasOwnProperty(t)&&(e[t]=n);return e}function s(e){return e.replace(/[^a-zA-Z0-9\\.]+/g,\"\").toLowerCase()}function u(e){return\"function\"==typeof e}t.exports=o(i);t.exports.find=t.exports;t.exports.replace=function(e,t,n,i){o(r).call(this,e,t,n,i);return e};t.exports.del=function(e,t,n){o(a).call(this,e,t,null,n);return e}},{}],1324:[function(e,t,n){;var o=Object.prototype.hasOwnProperty;n.keys=Object.keys||function(e){var t=[];for(var n in e)o.call(e,n)&&t.push(n);return t};n.values=function(e){var t=[];for(var n in e)o.call(e,n)&&t.push(e[n]);return t};n.merge=function(e,t){for(var n in t)o.call(t,n)&&(e[n]=t[n]);return e};n.length=function(e){return n.keys(e).length};n.isEmpty=function(e){return 0==n.length(e)};},{}],1325:[function(e,t,n){\"use strict\";var o=function(e){return e!==e};t.exports=function(e,t){return 0===e&&0===t?1/e==1/t:e===t||!(!o(e)||!o(t))}},{}],1326:[function(e,t,n){\"use strict\";var o;if(!Object.keys){var i=Object.prototype.hasOwnProperty,a=Object.prototype.toString,r=e(\"./isArguments\"),s=Object.prototype.propertyIsEnumerable,u=!s.call({toString:null},\"toString\"),l=s.call(function(){},\"prototype\"),c=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],d=function(e){var t=e.constructor;return t&&t.prototype===e},p={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if(\"undefined\"==typeof window)return!1;for(var e in window)try{if(!p[\"$\"+e]&&i.call(window,e)&&null!==window[e]&&\"object\"==typeof window[e])try{d(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),h=function(e){if(\"undefined\"==typeof window||!f)return d(e);try{return d(e)}catch(t){return!1}};o=function(e){var t=null!==e&&\"object\"==typeof e,n=\"[object Function]\"===a.call(e),o=r(e),s=t&&\"[object String]\"===a.call(e),d=[];if(!t&&!n&&!o)throw new TypeError(\"Object.keys called on a non-object\");var p=l&&n;if(s&&e.length>0&&!i.call(e,0))for(var f=0;f<e.length;++f)d.push(String(f));if(o&&e.length>0)for(var m=0;m<e.length;++m)d.push(String(m));else for(var b in e)p&&\"prototype\"===b||!i.call(e,b)||d.push(String(b));if(u)for(var g=h(e),y=0;y<c.length;++y)g&&\"constructor\"===c[y]||!i.call(e,c[y])||d.push(c[y]);return d}}t.exports=o},{\"./isArguments\":1328}],1327:[function(e,t,n){\"use strict\";var o=Array.prototype.slice,i=e(\"./isArguments\"),a=Object.keys,r=a?function(e){return a(e)}:e(\"./implementation\"),s=Object.keys;r.shim=function(){if(Object.keys){(function(){var e=Object.keys(arguments);return e&&e.length===arguments.length})(1,2)||(Object.keys=function(e){return s(i(e)?o.call(e):e)})}else Object.keys=r;return Object.keys||r};t.exports=r},{\"./implementation\":1326,\"./isArguments\":1328}],1328:[function(e,t,n){\"use strict\";var o=Object.prototype.toString;t.exports=function(e){var t=o.call(e),n=\"[object Arguments]\"===t;n||(n=\"[object Array]\"!==t&&null!==e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&\"[object Function]\"===o.call(e.callee));return n}},{}],1329:[function(e,t,n){;t.exports=function(){};},{}],1330:[function(e,t,n){;t.exports=function(){};},{}],1331:[function(e,t,n){;t.exports=function(){};},{\"each\":1242}],1332:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319}],1333:[function(e,t,n){;t.exports=function(){};},{\"camel-case\":1233,\"upper-case-first\":1375}],1334:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319}],1335:[function(e,t,n){;t.exports=function(){};},{}],1336:[function(e,t,n){\"use strict\";var o=Object,i=TypeError;t.exports=function(){if(null!=this&&this!==o(this))throw new i(\"RegExp.prototype.flags getter called on non-object\");var e=\"\";this.global&&(e+=\"g\");this.ignoreCase&&(e+=\"i\");this.multiline&&(e+=\"m\");this.dotAll&&(e+=\"s\");this.unicode&&(e+=\"u\");this.sticky&&(e+=\"y\");return e}},{}],1337:[function(e,t,n){\"use strict\"\n;var o=e(\"define-properties\"),i=e(\"./implementation\"),a=e(\"./polyfill\"),r=e(\"./shim\"),s=Function.call.bind(i);o(s,{getPolyfill:a,implementation:i,shim:r});t.exports=s},{\"./implementation\":1336,\"./polyfill\":1338,\"./shim\":1339,\"define-properties\":1259}],1338:[function(e,t,n){\"use strict\";var o=e(\"./implementation\"),i=e(\"define-properties\").supportsDescriptors,a=Object.getOwnPropertyDescriptor,r=TypeError;t.exports=function(){if(!i)throw new r(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");if(\"gim\"===/a/gim.flags){var e=a(RegExp.prototype,\"flags\");if(e&&\"function\"==typeof e.get&&\"boolean\"==typeof/a/.dotAll)return e.get}return o}},{\"./implementation\":1336,\"define-properties\":1259}],1339:[function(e,t,n){\"use strict\";var o=e(\"define-properties\").supportsDescriptors,i=e(\"./polyfill\"),a=Object.getOwnPropertyDescriptor,r=Object.defineProperty,s=TypeError,u=Object.getPrototypeOf,l=/a/;t.exports=function(){if(!o||!u)throw new s(\"RegExp.prototype.flags requires a true ES5 environment that supports property descriptors\");var e=i(),t=u(l),n=a(t,\"flags\");n&&n.get===e||r(t,\"flags\",{configurable:!0,enumerable:!1,get:e});return e}},{\"./polyfill\":1338,\"define-properties\":1259}],1340:[function(e,t,n){;function o(e,t){t=t||i;return\"array\"==a(e)?o.array(e,t):o.object(e,t)}function i(e){return null==e}var a=e(\"type-component\");t.exports=o;o.array=function(e,t){for(var n=[],o=0;o<e.length;++o)t(e[o],o)||(n[n.length]=e[o]);return n};o.object=function(e,t){var n={};for(var o in e)e.hasOwnProperty(o)&&!t(e[o],o)&&(n[o]=e[o]);return n};o.types=o.type=function(e,t){Array.isArray(t)||(t=[t]);return o(e,function(e){return-1!=t.indexOf(a(e))})};},{\"type-component\":1372}],1341:[function(e,t,n){;function o(e,t){e.addEventListener(\"load\",function(e,n){t(null,n)},!1);e.addEventListener(\"error\",function(n){var o=new Error('script error \"'+e.src+'\"');o.event=n;t(o)},!1)}function i(e,t){e.attachEvent(\"onreadystatechange\",function(n){/complete|loaded/.test(e.readyState)&&t(null,n)});e.attachEvent(\"onerror\",function(n){var o=new Error('failed to load the script \"'+e.src+'\"');o.event=n||window.event;t(o)})}t.exports=function(e,t){return e.addEventListener?o(e,t):i(e,t)};},{}],1342:[function(e,t,n){\"use strict\";var o=e(\"obj-case\");t.exports=function(e){function t(e,t){return function(){var n=this.traits(),i=this.properties?this.properties():{};return o(n,\"address.\"+e)||o(n,e)||(t?o(n,\"address.\"+t):null)||(t?o(n,t):null)||o(i,\"address.\"+e)||o(i,e)||(t?o(i,\"address.\"+t):null)||(t?o(i,t):null)}}e.zip=t(\"postalCode\",\"zip\");e.country=t(\"country\");e.street=t(\"street\");e.state=t(\"state\");e.city=t(\"city\");e.region=t(\"region\")}},{\"obj-case\":1323}],1343:[function(e,t,n){\"use strict\";function o(e,t){a.call(this,e,t)}var i=e(\"./utils\").inherit,a=e(\"./facade\");i(o,a);o.prototype.action=function(){return\"alias\"};o.prototype.type=o.prototype.action;o.prototype.previousId=function(){return this.field(\"previousId\")||this.field(\"from\")};o.prototype.from=o.prototype.previousId;o.prototype.userId=function(){return this.field(\"userId\")||this.field(\"to\")};o.prototype.to=o.prototype.userId;t.exports=o},{\"./facade\":1345,\"./utils\":1353}],1344:[function(e,t,n){\"use strict\";function o(e,t){a.call(this,e,t)}var i=e(\"./utils\").inherit,a=e(\"./facade\");i(o,a);o.prototype.type=function(){return\"delete\"};t.exports=o},{\"./facade\":1345,\"./utils\":1353}],1345:[function(e,t,n){\"use strict\";function o(e,t){t=t||{};\"clone\"in t||(t.clone=!0);t.clone&&(e=r(e));\"traverse\"in t||(t.traverse=!0);e.timestamp=\"timestamp\"in e?u(e.timestamp):new Date;t.traverse&&c(e);this.opts=t;this.obj=e}function i(e){return r(e)}var a=e(\"./address\"),r=e(\"./utils\").clone,s=e(\"./is-enabled\"),u=e(\"new-date\"),l=e(\"obj-case\"),c=e(\"@segment/isodate-traverse\"),d=e(\"./utils\").type;o.prototype.proxy=function(e){var t=e.split(\".\");e=t.shift();var n=this[e]||this.field(e);if(!n)return n;\"function\"==typeof n&&(n=n.call(this)||{});if(0===t.length)return this.opts.clone?i(n):n;n=l(n,t.join(\".\"));return this.opts.clone?i(n):n};o.prototype.field=function(e){var t=this.obj[e];return this.opts.clone?i(t):t};o.proxy=function(e){return function(){return this.proxy(e)}};o.field=function(e){return function(){return this.field(e)}};o.multi=function(e){return function(){var t=this.proxy(e+\"s\");if(\"array\"===d(t))return t;var n=this.proxy(e);n&&(n=[this.opts.clone?r(n):n]);return n||[]}};o.one=function(e){return function(){var t=this.proxy(e);if(t)return t;var n=this.proxy(e+\"s\");return\"array\"===d(n)?n[0]:void 0}};o.prototype.json=function(){var e=this.opts.clone?r(this.obj):this.obj;this.type&&(e.type=this.type());return e};o.prototype.options=function(e){var t=this.obj.options||this.obj.context||{},n=this.opts.clone?r(t):t;if(!e)return n;if(this.enabled(e)){var o=this.integrations(),i=o[e]||l(o,e);\"object\"!=typeof i&&(i=l(this.options(),e));return\"object\"==typeof i?i:{}}};o.prototype.context=o.prototype.options;o.prototype.enabled=function(e){var t=this.proxy(\"options.providers.all\");\"boolean\"!=typeof t&&(t=this.proxy(\"options.all\"));\"boolean\"!=typeof t&&(t=this.proxy(\"integrations.all\"));\"boolean\"!=typeof t&&(t=!0);var n=t&&s(e),o=this.integrations();o.providers&&o.providers.hasOwnProperty(e)&&(n=o.providers[e]);if(o.hasOwnProperty(e)){var i=o[e];n=\"boolean\"!=typeof i||i}return!!n};o.prototype.integrations=function(){return this.obj.integrations||this.proxy(\"options.providers\")||this.options()};o.prototype.active=function(){var e=this.proxy(\"options.active\");null!==e&&e!==undefined||(e=!0);return e};o.prototype.anonymousId=function(){return this.field(\"anonymousId\")||this.field(\"sessionId\")};o.prototype.sessionId=o.prototype.anonymousId;o.prototype.groupId=o.proxy(\"options.groupId\");o.prototype.traits=function(e){var t=this.proxy(\"options.traits\")||{},n=this.userId();e=e||{};n&&(t.id=n);for(var o in e){var i=null==this[o]?this.proxy(\"options.traits.\"+o):this[o]();if(null!=i){t[e[o]]=i;delete t[o]}}return t};o.prototype.library=function(){var e=this.proxy(\"options.library\");return e?\"string\"==typeof e?{name:e,version:null}:e:{name:\"unknown\",version:null}};o.prototype.device=function(){var e=this.proxy(\"context.device\");\"object\"!==d(e)&&(e={});var t=this.library().name;if(e.type)return e;t.indexOf(\"ios\")>-1&&(e.type=\"ios\");t.indexOf(\"android\")>-1&&(e.type=\"android\");return e};o.prototype.userAgent=o.proxy(\"context.userAgent\");o.prototype.timezone=o.proxy(\"context.timezone\");o.prototype.timestamp=o.field(\"timestamp\");o.prototype.channel=o.field(\"channel\");o.prototype.ip=o.proxy(\"context.ip\");o.prototype.userId=o.field(\"userId\");a(o.prototype);t.exports=o},{\"./address\":1342,\"./is-enabled\":1349,\"./utils\":1353,\"@segment/isodate-traverse\":1158,\"new-date\":1314,\"obj-case\":1323}],1346:[function(e,t,n){\"use strict\";function o(e,t){s.call(this,e,t)}var i=e(\"./utils\").inherit,a=e(\"is-email\"),r=e(\"new-date\"),s=e(\"./facade\");i(o,s);o.prototype.action=function(){return\"group\"};o.prototype.type=o.prototype.action;o.prototype.groupId=s.field(\"groupId\");o.prototype.created=function(){var e=this.proxy(\"traits.createdAt\")||this.proxy(\"traits.created\")||this.proxy(\"properties.createdAt\")||this.proxy(\"properties.created\");if(e)return r(e)};o.prototype.email=function(){var e=this.proxy(\"traits.email\");if(e)return e;var t=this.groupId();return a(t)?t:void 0};o.prototype.traits=function(e){var t=this.properties(),n=this.groupId();e=e||{};n&&(t.id=n);for(var o in e){var i=null==this[o]?this.proxy(\"traits.\"+o):this[o]();if(null!=i){t[e[o]]=i;delete t[o]}}return t};o.prototype.name=s.proxy(\"traits.name\");o.prototype.industry=s.proxy(\"traits.industry\");o.prototype.employees=s.proxy(\"traits.employees\");o.prototype.properties=function(){return this.field(\"traits\")||this.field(\"properties\")||{}};t.exports=o},{\"./facade\":1345,\"./utils\":1353,\"is-email\":1354,\"new-date\":1314}],1347:[function(e,t,n){\"use strict\";function o(e,t){i.call(this,e,t)}var i=e(\"./facade\"),a=e(\"obj-case\"),r=e(\"./utils\").inherit,s=e(\"is-email\"),u=e(\"new-date\"),l=e(\"trim\"),c=e(\"./utils\").type;r(o,i);o.prototype.action=function(){return\"identify\"};o.prototype.type=o.prototype.action;o.prototype.traits=function(e){var t=this.field(\"traits\")||{},n=this.userId();e=e||{};n&&(t.id=n);for(var o in e){var i=null==this[o]?this.proxy(\"traits.\"+o):this[o]();if(null!=i){t[e[o]]=i;o!==e[o]&&delete t[o]}}return t};o.prototype.email=function(){var e=this.proxy(\"traits.email\");if(e)return e;var t=this.userId();return s(t)?t:void 0};o.prototype.created=function(){var e=this.proxy(\"traits.created\")||this.proxy(\"traits.createdAt\");if(e)return u(e)};o.prototype.companyCreated=function(){var e=this.proxy(\"traits.company.created\")||this.proxy(\"traits.company.createdAt\");if(e)return u(e)};o.prototype.companyName=function(){return this.proxy(\"traits.company.name\")};o.prototype.name=function(){var e=this.proxy(\"traits.name\");if(\"string\"==typeof e)return l(e);var t=this.firstName(),n=this.lastName();return t&&n?l(t+\" \"+n):void 0};o.prototype.firstName=function(){var e=this.proxy(\"traits.firstName\");if(\"string\"==typeof e)return l(e);var t=this.proxy(\"traits.name\");return\"string\"==typeof t?l(t).split(\" \")[0]:void 0};o.prototype.lastName=function(){var e=this.proxy(\"traits.lastName\");if(\"string\"==typeof e)return l(e);var t=this.proxy(\"traits.name\");if(\"string\"==typeof t){var n=l(t).indexOf(\" \");if(-1!==n)return l(t.substr(n+1))}};o.prototype.uid=function(){return this.userId()||this.username()||this.email()};o.prototype.description=function(){return this.proxy(\"traits.description\")||this.proxy(\"traits.background\")};o.prototype.age=function(){var e=this.birthday(),t=a(this.traits(),\"age\");if(null!=t)return t;if(\"date\"===c(e)){return(new Date).getFullYear()-e.getFullYear()}};o.prototype.avatar=function(){var e=this.traits();return a(e,\"avatar\")||a(e,\"photoUrl\")||a(e,\"avatarUrl\")};o.prototype.position=function(){var e=this.traits();return a(e,\"position\")||a(e,\"jobTitle\")};o.prototype.username=i.proxy(\"traits.username\");o.prototype.website=i.one(\"traits.website\");o.prototype.websites=i.multi(\"traits.website\");o.prototype.phone=i.one(\"traits.phone\");o.prototype.phones=i.multi(\"traits.phone\");o.prototype.address=i.proxy(\"traits.address\");o.prototype.gender=i.proxy(\"traits.gender\");o.prototype.birthday=i.proxy(\"traits.birthday\");t.exports=o},{\"./facade\":1345,\"./utils\":1353,\"is-email\":1354,\"new-date\":1314,\"obj-case\":1323,\"trim\":1371}],1348:[function(e,t,n){\"use strict\";var o=e(\"./facade\");o.Alias=e(\"./alias\");o.Group=e(\"./group\");o.Identify=e(\"./identify\");o.Track=e(\"./track\");o.Page=e(\"./page\");o.Screen=e(\"./screen\");o.Delete=e(\"./delete\");t.exports=o},{\"./alias\":1343,\"./delete\":1344,\"./facade\":1345,\"./group\":1346,\"./identify\":1347,\"./page\":1350,\"./screen\":1351,\"./track\":1352}],1349:[function(e,t,n){\"use strict\";var o={Salesforce:!0};t.exports=function(e){return!o[e]}},{}],1350:[function(e,t,n){\"use strict\";function o(e,t){a.call(this,e,t)}var i=e(\"./utils\").inherit,a=e(\"./facade\"),r=e(\"./track\"),s=e(\"is-email\");i(o,a);o.prototype.action=function(){return\"page\"};o.prototype.type=o.prototype.action;o.prototype.category=a.field(\"category\");o.prototype.name=a.field(\"name\");o.prototype.title=a.proxy(\"properties.title\");o.prototype.path=a.proxy(\"properties.path\");o.prototype.url=a.proxy(\"properties.url\");o.prototype.referrer=function(){return this.proxy(\"context.referrer.url\")||this.proxy(\"context.page.referrer\")||this.proxy(\"properties.referrer\")};o.prototype.properties=function(e){var t=this.field(\"properties\")||{},n=this.category(),o=this.name();e=e||{};n&&(t.category=n);o&&(t.name=o);for(var i in e){var a=null==this[i]?this.proxy(\"properties.\"+i):this[i]();if(null!=a){t[e[i]]=a;i!==e[i]&&delete t[i]}}return t};o.prototype.email=function(){var e=this.proxy(\"context.traits.email\")||this.proxy(\"properties.email\");if(e)return e;var t=this.userId();return s(t)?t:void 0};o.prototype.fullName=function(){var e=this.category(),t=this.name();return t&&e?e+\" \"+t:t};o.prototype.event=function(e){return e?\"Viewed \"+e+\" Page\":\"Loaded a Page\"};o.prototype.track=function(e){var t=this.json();t.event=this.event(e);t.timestamp=this.timestamp();t.properties=this.properties();return new r(t,this.opts)};t.exports=o},{\"./facade\":1345,\"./track\":1352,\"./utils\":1353,\"is-email\":1354}],1351:[function(e,t,n){\"use strict\";function o(e,t){a.call(this,e,t)}var i=e(\"./utils\").inherit,a=e(\"./page\"),r=e(\"./track\");i(o,a);o.prototype.action=function(){return\"screen\"};o.prototype.type=o.prototype.action;o.prototype.event=function(e){return e?\"Viewed \"+e+\" Screen\":\"Loaded a Screen\"};o.prototype.track=function(e){var t=this.json();t.event=this.event(e);t.timestamp=this.timestamp();t.properties=this.properties();return new r(t,this.opts)};t.exports=o},{\"./page\":1350,\"./track\":1352,\"./utils\":1353}],1352:[function(e,t,n){\"use strict\";function o(e,t){s.call(this,e,t)}function i(e){if(e){if(\"number\"==typeof e)return e;if(\"string\"==typeof e){e=e.replace(/\\$/g,\"\");e=parseFloat(e);return isNaN(e)?void 0:e}}}var a=e(\"./utils\").inherit,r=e(\"./utils\").type,s=e(\"./facade\"),u=e(\"./identify\"),l=e(\"is-email\"),c=e(\"obj-case\");a(o,s);o.prototype.action=function(){return\"track\"};o.prototype.type=o.prototype.action;o.prototype.event=s.field(\"event\");o.prototype.value=s.proxy(\"properties.value\");o.prototype.category=s.proxy(\"properties.category\");o.prototype.id=s.proxy(\"properties.id\");o.prototype.productId=function(){return this.proxy(\"properties.product_id\")||this.proxy(\"properties.productId\")};o.prototype.promotionId=function(){return this.proxy(\"properties.promotion_id\")||this.proxy(\"properties.promotionId\")};o.prototype.cartId=function(){return this.proxy(\"properties.cart_id\")||this.proxy(\"properties.cartId\")};o.prototype.checkoutId=function(){return this.proxy(\"properties.checkout_id\")||this.proxy(\"properties.checkoutId\")};o.prototype.paymentId=function(){return this.proxy(\"properties.payment_id\")||this.proxy(\"properties.paymentId\")};o.prototype.couponId=function(){return this.proxy(\"properties.coupon_id\")||this.proxy(\"properties.couponId\")};o.prototype.wishlistId=function(){return this.proxy(\"properties.wishlist_id\")||this.proxy(\"properties.wishlistId\")};o.prototype.reviewId=function(){return this.proxy(\"properties.review_id\")||this.proxy(\"properties.reviewId\")};o.prototype.orderId=function(){return this.proxy(\"properties.id\")||this.proxy(\"properties.order_id\")||this.proxy(\"properties.orderId\")};o.prototype.sku=s.proxy(\"properties.sku\");o.prototype.tax=s.proxy(\"properties.tax\");o.prototype.name=s.proxy(\"properties.name\");o.prototype.price=s.proxy(\"properties.price\");o.prototype.total=s.proxy(\"properties.total\");o.prototype.repeat=s.proxy(\"properties.repeat\");o.prototype.coupon=s.proxy(\"properties.coupon\");o.prototype.shipping=s.proxy(\"properties.shipping\");o.prototype.discount=s.proxy(\"properties.discount\");o.prototype.shippingMethod=function(){return this.proxy(\"properties.shipping_method\")||this.proxy(\"properties.shippingMethod\")};o.prototype.paymentMethod=function(){return this.proxy(\"properties.payment_method\")||this.proxy(\"properties.paymentMethod\")};o.prototype.description=s.proxy(\"properties.description\");o.prototype.plan=s.proxy(\"properties.plan\");o.prototype.subtotal=function(){var e=c(this.properties(),\"subtotal\"),t=this.total()||this.revenue();if(e)return e;if(!t)return 0;if(this.total()){var n=this.tax();n&&(t-=n);n=this.shipping();n&&(t-=n);n=this.discount();n&&(t+=n)}return t};o.prototype.products=function(){var e=this.properties(),t=c(e,\"products\");return\"array\"===r(t)?t:[]};o.prototype.quantity=function(){return(this.obj.properties||{}).quantity||1};o.prototype.currency=function(){return(this.obj.properties||{}).currency||\"USD\"};o.prototype.referrer=function(){return this.proxy(\"context.referrer.url\")||this.proxy(\"context.page.referrer\")||this.proxy(\"properties.referrer\")};o.prototype.query=s.proxy(\"options.query\");o.prototype.properties=function(e){var t=this.field(\"properties\")||{};e=e||{};for(var n in e){var o=null==this[n]?this.proxy(\"properties.\"+n):this[n]();if(null!=o){t[e[n]]=o;delete t[n]}}return t};o.prototype.username=function(){return this.proxy(\"traits.username\")||this.proxy(\"properties.username\")||this.userId()||this.sessionId()};o.prototype.email=function(){var e=this.proxy(\"traits.email\")||this.proxy(\"properties.email\")||this.proxy(\"options.traits.email\");if(e)return e;var t=this.userId();return l(t)?t:void 0};o.prototype.revenue=function(){var e=this.proxy(\"properties.revenue\"),t=this.event(),n=/^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;!e&&t&&t.match(n)&&(e=this.proxy(\"properties.total\"));return i(e)};o.prototype.cents=function(){var e=this.revenue();return\"number\"!=typeof e?this.value()||0:100*e};o.prototype.identify=function(){var e=this.json();e.traits=this.traits();return new u(e,this.opts)};t.exports=o},{\"./facade\":1345,\"./identify\":1347,\"./utils\":1353,\"is-email\":1354,\"obj-case\":1323}],1353:[function(e,t,n){\"use strict\";n.inherit=e(\"inherits\");n.clone=e(\"@ndhoule/clone\");n.type=e(\"type-component\")},{\"@ndhoule/clone\":29,\"inherits\":1272,\"type-component\":1372}],1354:[function(e,t,n){t.exports=function(e){return/.+\\@.+\\..+/.test(e)}},{}],1355:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319,\"upper-case-first\":1375}],1356:[function(e,t,n){;t.exports=function(e,t){t||(t={});return e.toLowerCase().replace(t.replace||/[^a-z0-9]/g,\" \").replace(/^ +| +$/g,\"\").replace(/ +/g,t.separator||\"-\")};},{}],1357:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319}],1358:[function(e,t,n){!function(e){if(\"object\"==typeof n)t.exports=e();else if(\"function\"==typeof define&&define.amd)define(e);else{var o;try{o=window}catch(i){o=self}o.SparkMD5=e()}}(function(e){\"use strict\";function t(e,t,n,o,i,a){t=v(v(t,e),v(o,a));return v(t<<i|t>>>32-i,n)}function n(e,n,o,i,a,r,s){return t(n&o|~n&i,e,n,a,r,s)}function o(e,n,o,i,a,r,s){return t(n&i|o&~i,e,n,a,r,s)}function i(e,n,o,i,a,r,s){return t(n^o^i,e,n,a,r,s)}function a(e,n,o,i,a,r,s){return t(o^(n|~i),e,n,a,r,s)}function r(e,t){var r=e[0],s=e[1],u=e[2],l=e[3];r=n(r,s,u,l,t[0],7,-680876936);l=n(l,r,s,u,t[1],12,-389564586);u=n(u,l,r,s,t[2],17,606105819);s=n(s,u,l,r,t[3],22,-1044525330);r=n(r,s,u,l,t[4],7,-176418897);l=n(l,r,s,u,t[5],12,1200080426);u=n(u,l,r,s,t[6],17,-1473231341);s=n(s,u,l,r,t[7],22,-45705983);r=n(r,s,u,l,t[8],7,1770035416);l=n(l,r,s,u,t[9],12,-1958414417);u=n(u,l,r,s,t[10],17,-42063);s=n(s,u,l,r,t[11],22,-1990404162);r=n(r,s,u,l,t[12],7,1804603682);l=n(l,r,s,u,t[13],12,-40341101);u=n(u,l,r,s,t[14],17,-1502002290);s=n(s,u,l,r,t[15],22,1236535329);r=o(r,s,u,l,t[1],5,-165796510);l=o(l,r,s,u,t[6],9,-1069501632);u=o(u,l,r,s,t[11],14,643717713);s=o(s,u,l,r,t[0],20,-373897302);r=o(r,s,u,l,t[5],5,-701558691);l=o(l,r,s,u,t[10],9,38016083);u=o(u,l,r,s,t[15],14,-660478335);s=o(s,u,l,r,t[4],20,-405537848);r=o(r,s,u,l,t[9],5,568446438);l=o(l,r,s,u,t[14],9,-1019803690);u=o(u,l,r,s,t[3],14,-187363961);s=o(s,u,l,r,t[8],20,1163531501);r=o(r,s,u,l,t[13],5,-1444681467);l=o(l,r,s,u,t[2],9,-51403784);u=o(u,l,r,s,t[7],14,1735328473);s=o(s,u,l,r,t[12],20,-1926607734);r=i(r,s,u,l,t[5],4,-378558);l=i(l,r,s,u,t[8],11,-2022574463);u=i(u,l,r,s,t[11],16,1839030562);s=i(s,u,l,r,t[14],23,-35309556);r=i(r,s,u,l,t[1],4,-1530992060);l=i(l,r,s,u,t[4],11,1272893353);u=i(u,l,r,s,t[7],16,-155497632);s=i(s,u,l,r,t[10],23,-1094730640);r=i(r,s,u,l,t[13],4,681279174);l=i(l,r,s,u,t[0],11,-358537222);u=i(u,l,r,s,t[3],16,-722521979);s=i(s,u,l,r,t[6],23,76029189);r=i(r,s,u,l,t[9],4,-640364487);l=i(l,r,s,u,t[12],11,-421815835);u=i(u,l,r,s,t[15],16,530742520);s=i(s,u,l,r,t[2],23,-995338651);r=a(r,s,u,l,t[0],6,-198630844);l=a(l,r,s,u,t[7],10,1126891415);u=a(u,l,r,s,t[14],15,-1416354905);s=a(s,u,l,r,t[5],21,-57434055);r=a(r,s,u,l,t[12],6,1700485571);l=a(l,r,s,u,t[3],10,-1894986606);u=a(u,l,r,s,t[10],15,-1051523);s=a(s,u,l,r,t[1],21,-2054922799);r=a(r,s,u,l,t[8],6,1873313359);l=a(l,r,s,u,t[15],10,-30611744);u=a(u,l,r,s,t[6],15,-1560198380);s=a(s,u,l,r,t[13],21,1309151649);r=a(r,s,u,l,t[4],6,-145523070);l=a(l,r,s,u,t[11],10,-1120210379);u=a(u,l,r,s,t[2],15,718787259);s=a(s,u,l,r,t[9],21,-343485551);e[0]=v(r,e[0]);e[1]=v(s,e[1]);e[2]=v(u,e[2]);e[3]=v(l,e[3])}function s(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}function u(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return n}function l(e){var t,n,o,i,a,u,l=e.length,c=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=l;t+=64)r(c,s(e.substring(t-64,t)));e=e.substring(t-64);n=e.length;o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<n;t+=1)o[t>>2]|=e.charCodeAt(t)<<(t%4<<3);o[t>>2]|=128<<(t%4<<3);if(t>55){r(c,o);for(t=0;t<16;t+=1)o[t]=0}i=8*l;i=i.toString(16).match(/(.*?)(.{0,8})$/);a=parseInt(i[2],16);u=parseInt(i[1],16)||0;o[14]=a;o[15]=u;r(c,o);return c}function c(e){var t,n,o,i,a,s,l=e.length,c=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=l;t+=64)r(c,u(e.subarray(t-64,t)));e=t-64<l?e.subarray(t-64):new Uint8Array(0);n=e.length;o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<n;t+=1)o[t>>2]|=e[t]<<(t%4<<3);o[t>>2]|=128<<(t%4<<3);if(t>55){r(c,o);for(t=0;t<16;t+=1)o[t]=0}i=8*l;i=i.toString(16).match(/(.*?)(.{0,8})$/);a=parseInt(i[2],16);s=parseInt(i[1],16)||0;o[14]=a;o[15]=s;r(c,o);return c}function d(e){var t,n=\"\";for(t=0;t<4;t+=1)n+=w[e>>8*t+4&15]+w[e>>8*t&15];return n}function p(e){var t;for(t=0;t<e.length;t+=1)e[t]=d(e[t]);return e.join(\"\")}function f(e){/[\\u0080-\\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e)));return e}function h(e,t){var n,o=e.length,i=new ArrayBuffer(o),a=new Uint8Array(i);for(n=0;n<o;n+=1)a[n]=e.charCodeAt(n);return t?a:i}function m(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function b(e,t,n){var o=new Uint8Array(e.byteLength+t.byteLength);o.set(new Uint8Array(e));o.set(new Uint8Array(t),e.byteLength);return n?o:o.buffer}function g(e){var t,n=[],o=e.length;for(t=0;t<o-1;t+=2)n.push(parseInt(e.substr(t,2),16));return String.fromCharCode.apply(String,n)}function y(){this.reset()}var v=function(e,t){return e+t&4294967295},w=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"];\"5d41402abc4b2a76b9719d911017c592\"!==p(l(\"hello\"))&&(v=function(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n});\"undefined\"==typeof ArrayBuffer||ArrayBuffer.prototype.slice||!function(){function t(e,t){e=0|e||0;return e<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(n,o){var i,a,r,s,u=this.byteLength,l=t(n,u),c=u;o!==e&&(c=t(o,u));if(l>c)return new ArrayBuffer(0);i=c-l;a=new ArrayBuffer(i);r=new Uint8Array(a);s=new Uint8Array(this,l,i);r.set(s);return a}}();y.prototype.append=function(e){this.appendBinary(f(e));return this};y.prototype.appendBinary=function(e){this._buff+=e;this._length+=e.length;var t,n=this._buff.length;for(t=64;t<=n;t+=64)r(this._hash,s(this._buff.substring(t-64,t)));this._buff=this._buff.substring(t-64);return this};y.prototype.end=function(e){var t,n,o=this._buff,i=o.length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<i;t+=1)a[t>>2]|=o.charCodeAt(t)<<(t%4<<3);this._finish(a,i);n=p(this._hash);e&&(n=g(n));this.reset();return n};y.prototype.reset=function(){this._buff=\"\";this._length=0;this._hash=[1732584193,-271733879,-1732584194,271733878];return this};y.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash}}\n;y.prototype.setState=function(e){this._buff=e.buff;this._length=e.length;this._hash=e.hash;return this};y.prototype.destroy=function(){delete this._hash;delete this._buff;delete this._length};y.prototype._finish=function(e,t){var n,o,i,a=t;e[a>>2]|=128<<(a%4<<3);if(a>55){r(this._hash,e);for(a=0;a<16;a+=1)e[a]=0}n=8*this._length;n=n.toString(16).match(/(.*?)(.{0,8})$/);o=parseInt(n[2],16);i=parseInt(n[1],16)||0;e[14]=o;e[15]=i;r(this._hash,e)};y.hash=function(e,t){return y.hashBinary(f(e),t)};y.hashBinary=function(e,t){var n=l(e),o=p(n);return t?g(o):o};y.ArrayBuffer=function(){this.reset()};y.ArrayBuffer.prototype.append=function(e){var t,n=b(this._buff.buffer,e,!0),o=n.length;this._length+=e.byteLength;for(t=64;t<=o;t+=64)r(this._hash,u(n.subarray(t-64,t)));this._buff=t-64<o?new Uint8Array(n.buffer.slice(t-64)):new Uint8Array(0);return this};y.ArrayBuffer.prototype.end=function(e){var t,n,o=this._buff,i=o.length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<i;t+=1)a[t>>2]|=o[t]<<(t%4<<3);this._finish(a,i);n=p(this._hash);e&&(n=g(n));this.reset();return n};y.ArrayBuffer.prototype.reset=function(){this._buff=new Uint8Array(0);this._length=0;this._hash=[1732584193,-271733879,-1732584194,271733878];return this};y.ArrayBuffer.prototype.getState=function(){var e=y.prototype.getState.call(this);e.buff=m(e.buff);return e};y.ArrayBuffer.prototype.setState=function(e){e.buff=h(e.buff,!0);return y.prototype.setState.call(this,e)};y.ArrayBuffer.prototype.destroy=y.prototype.destroy;y.ArrayBuffer.prototype._finish=y.prototype._finish;y.ArrayBuffer.hash=function(e,t){var n=c(new Uint8Array(e)),o=p(n);return t?g(o):o};return y})},{}],1359:[function(e,t,n){;t.exports=function(){};},{\"lower-case\":1300,\"upper-case\":1376}],1360:[function(e,t,n){;t.exports=function(){};},{}],1361:[function(e,t,n){(function(t,o){function i(e,t){this._id=e;this._clearFn=t}var a=e(\"process/browser.js\").nextTick,r=Function.prototype.apply,s=Array.prototype.slice,u={},l=0;n.setTimeout=function(){return new i(r.call(setTimeout,window,arguments),clearTimeout)};n.setInterval=function(){return new i(r.call(setInterval,window,arguments),clearInterval)};n.clearTimeout=n.clearInterval=function(e){e.close()};i.prototype.unref=i.prototype.ref=function(){};i.prototype.close=function(){this._clearFn.call(window,this._id)};n.enroll=function(e,t){clearTimeout(e._idleTimeoutId);e._idleTimeout=t};n.unenroll=function(e){clearTimeout(e._idleTimeoutId);e._idleTimeout=-1};n._unrefActive=n.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))};n.setImmediate=\"function\"==typeof t?t:function(e){var t=l++,o=!(arguments.length<2)&&s.call(arguments,1);u[t]=!0;a(function(){if(u[t]){o?e.apply(null,o):e.call(null);n.clearImmediate(t)}});return t};n.clearImmediate=\"function\"==typeof o?o:function(e){delete u[e]}}).call(this,e(\"timers\").setImmediate,e(\"timers\").clearImmediate)},{\"process/browser.js\":1362,\"timers\":1361}],1362:[function(e,t,n){arguments[4][1232][0].apply(n,arguments)},{\"dup\":1232}],1363:[function(e,t,n){;t.exports=function(){};},{\"no-case\":1319,\"upper-case\":1376}],1364:[function(e,t,n){;t.exports=function(){};},{\"to-space-case\":1368}],1365:[function(e,t,n){function o(e){switch({}.toString.call(e)){case\"[object Object]\":return s(e);case\"[object Function]\":return e;case\"[object String]\":return r(e);case\"[object RegExp]\":return a(e);default:return i(e)}}function i(e){return function(t){return e===t}}function a(e){return function(t){return e.test(t)}}function r(e){return/^ *\\W+/.test(e)?new Function(\"_\",\"return _ \"+e):new Function(\"_\",\"return \"+u(e))}function s(e){var t={};for(var n in e)t[n]=\"string\"==typeof e[n]?i(e[n]):o(e[n]);return function(e){if(\"object\"!=typeof e)return!1;for(var n in t){if(!(n in e))return!1;if(!t[n](e[n]))return!1}return!0}}function u(e){var t=c(e);if(!t.length)return\"_.\"+e;var n,o,i;for(o=0;o<t.length;o++){i=t[o];n=\"_.\"+i;n=\"('function' == typeof \"+n+\" ? \"+n+\"() : \"+n+\")\";e=l(i,e,n)}return e}function l(e,t,n){return t.replace(new RegExp(\"(\\\\.)?\"+e,\"g\"),function(e,t){return t?e:n})}var c;try{c=e(\"props\")}catch(d){c=e(\"component-props\")}t.exports=o},{\"component-props\":1247,\"props\":1247}],1366:[function(e,t,n){;arguments[4][430][0].apply(n,arguments);},{\"dup\":430}],1367:[function(e,t,n){;t.exports=function(){};},{\"to-space-case\":1368}],1368:[function(e,t,n){;t.exports=function(){};},{\"to-no-case\":1369}],1369:[function(e,t,n){;t.exports=function(){};},{\"dup\":434}],1370:[function(e,t,n){;t.exports=function(){};},{}],1371:[function(e,t,n){function o(e){return e.replace(/^\\s*|\\s*$/g,\"\")}n=t.exports=o;n.left=function(e){return e.replace(/^\\s*/,\"\")};n.right=function(e){return e.replace(/\\s*$/,\"\")}},{}],1372:[function(e,t,n){var o=Object.prototype.toString;t.exports=function(e){switch(o.call(e)){case\"[object Function]\":return\"function\";case\"[object Date]\":return\"date\";case\"[object RegExp]\":return\"regexp\";case\"[object Arguments]\":return\"arguments\";case\"[object Array]\":return\"array\"}return null===e?\"null\":e===undefined?\"undefined\":e===Object(e)?\"object\":typeof e}},{}],1373:[function(e,t,n){;t.exports=function(){};},{}],1374:[function(e,t,n){;t.exports=function(){};},{}],1375:[function(e,t,n){;t.exports=function(){};},{\"upper-case\":1376}],1376:[function(e,t,n){;t.exports=function(){};},{}],1377:[function(e,t,n){;function o(e){return i()?\"https:\"+e:\"http:\"+e}function i(){return\"https:\"==location.protocol||\"chrome-extension:\"==location.protocol}t.exports=function(e){switch(arguments.length){case 0:return i();case 1:return o(e)}};},{}],1378:[function(e,t,n){function o(e){e=e.replace(/\\r\\n/g,\"\\n\");for(var t=\"\",n=0;n<e.length;n++){var o=e.charCodeAt(n);if(o<128)t+=String.fromCharCode(o);else if(o>127&&o<2048){t+=String.fromCharCode(o>>6|192);t+=String.fromCharCode(63&o|128)}else{t+=String.fromCharCode(o>>12|224);t+=String.fromCharCode(o>>6&63|128);t+=String.fromCharCode(63&o|128)}}return t}t.exports=o},{}],1379:[function(e,t,n){;t.exports=function(){};},{}],1380:[function(e,t,n){;t.exports=function(){};},{}],1381:[function(e,t,n){\"use strict\";var o=e(\"./ctors.js\");t.exports=function(){var e,t;e=new o.uint16(1);e[0]=4660;t=new o.uint8(e.buffer);return 52===t[0]}()},{\"./ctors.js\":1380}],1382:[function(e,t,n){var o=e(\"./v1\"),i=e(\"./v4\"),a=i;a.v1=o;a.v4=i;t.exports=a},{\"./v1\":1385,\"./v4\":1386}],1383:[function(e,t,n){function o(e,t){var n=t||0,o=i;return[o[e[n++]],o[e[n++]],o[e[n++]],o[e[n++]],\"-\",o[e[n++]],o[e[n++]],\"-\",o[e[n++]],o[e[n++]],\"-\",o[e[n++]],o[e[n++]],\"-\",o[e[n++]],o[e[n++]],o[e[n++]],o[e[n++]],o[e[n++]],o[e[n++]]].join(\"\")}for(var i=[],a=0;a<256;++a)i[a]=(a+256).toString(16).substr(1);t.exports=o},{}],1384:[function(e,t,n){var o=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||\"undefined\"!=typeof msCrypto&&\"function\"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(o){var i=new Uint8Array(16);t.exports=function(){o(i);return i}}else{var a=new Array(16);t.exports=function(){for(var e,t=0;t<16;t++){0==(3&t)&&(e=4294967296*Math.random());a[t]=e>>>((3&t)<<3)&255}return a}}},{}],1385:[function(e,t,n){function o(e,t,n){var o=t&&n||0,c=t||[];e=e||{};var d=e.node||i,p=e.clockseq!==undefined?e.clockseq:a;if(null==d||null==p){var f=r();null==d&&(d=i=[1|f[0],f[1],f[2],f[3],f[4],f[5]]);null==p&&(p=a=16383&(f[6]<<8|f[7]))}var h=e.msecs!==undefined?e.msecs:(new Date).getTime(),m=e.nsecs!==undefined?e.nsecs:l+1,b=h-u+(m-l)/1e4;b<0&&e.clockseq===undefined&&(p=p+1&16383);(b<0||h>u)&&e.nsecs===undefined&&(m=0);if(m>=1e4)throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");u=h;l=m;a=p;h+=122192928e5;var g=(1e4*(268435455&h)+m)%4294967296;c[o++]=g>>>24&255;c[o++]=g>>>16&255;c[o++]=g>>>8&255;c[o++]=255&g;var y=h/4294967296*1e4&268435455;c[o++]=y>>>8&255;c[o++]=255&y;c[o++]=y>>>24&15|16;c[o++]=y>>>16&255;c[o++]=p>>>8|128;c[o++]=255&p;for(var v=0;v<6;++v)c[o+v]=d[v];return t||s(c)}var i,a,r=e(\"./lib/rng\"),s=e(\"./lib/bytesToUuid\"),u=0,l=0;t.exports=o},{\"./lib/bytesToUuid\":1383,\"./lib/rng\":1384}],1386:[function(e,t,n){function o(e,t,n){var o=t&&n||0;if(\"string\"==typeof e){t=\"binary\"===e?new Array(16):null;e=null}e=e||{};var r=e.random||(e.rng||i)();r[6]=15&r[6]|64;r[8]=63&r[8]|128;if(t)for(var s=0;s<16;++s)t[o+s]=r[s];return t||a(r)}var i=e(\"./lib/rng\"),a=e(\"./lib/bytesToUuid\");t.exports=o},{\"./lib/bytesToUuid\":1383,\"./lib/rng\":1384}],1387:[function(e,t,n){;t.exports=function(){};},{}],1388:[function(e,t,n){;function o(e,t){var n=arguments.length;return 0==n?r():2<=n?i(e,t):1==n?null==e?s.clear():\"string\"==typeof e?a(e):\"object\"==typeof e?l(e,i):void 0:void 0}function i(e,t){return null==t?s.removeItem(e):s.setItem(e,JSON.stringify(t))}function a(e){return u(s.getItem(e))}function r(){for(var e,t=s.length,n={};0<=--t;){e=s.key(t);n[e]=a(e)}return n}var s,u=e(\"unserialize\"),l=e(\"each\");try{s=window.localStorage}catch(c){s=null}t.exports=o;o.supported=!!s;},{\"each\":1242,\"unserialize\":1389}],1389:[function(e,t,n){;t.exports=function(e){try{return JSON.parse(e)}catch(t){return e||undefined}};},{}]},{},[3])}(window.define);"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 71718
        },
        "cache": {},
        "timings": {
          "blocked": 1.954000036664307,
          "dns": 148.074,
          "ssl": 119.661,
          "connect": 386.058,
          "send": 0.313000000000045,
          "wait": 130.19800002764163,
          "receive": 174.76199998054653,
          "_blocked_queueing": 0.9680000366643071
        },
        "serverIPAddress": "99.84.124.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "r.key.e.load",
                "scriptId": "115",
                "url": "https://workstation.theorchard.com/js/releases/segment-analytics-1522397179446.min.js",
                "lineNumber": 0,
                "columnNumber": 1358
              },
              {
                "functionName": "",
                "scriptId": "115",
                "url": "https://workstation.theorchard.com/js/releases/segment-analytics-1522397179446.min.js",
                "lineNumber": 0,
                "columnNumber": 1405
              },
              {
                "functionName": "1.jquery",
                "scriptId": "115",
                "url": "https://workstation.theorchard.com/js/releases/segment-analytics-1522397179446.min.js",
                "lineNumber": 0,
                "columnNumber": 1418
              },
              {
                "functionName": "i",
                "scriptId": "115",
                "url": "https://workstation.theorchard.com/js/releases/segment-analytics-1522397179446.min.js",
                "lineNumber": 0,
                "columnNumber": 264
              },
              {
                "functionName": "e",
                "scriptId": "115",
                "url": "https://workstation.theorchard.com/js/releases/segment-analytics-1522397179446.min.js",
                "lineNumber": 0,
                "columnNumber": 430
              },
              {
                "functionName": "",
                "scriptId": "115",
                "url": "https://workstation.theorchard.com/js/releases/segment-analytics-1522397179446.min.js",
                "lineNumber": 0,
                "columnNumber": 458
              }
            ]
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949643",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:17.883Z",
        "time": 644.2479999207333,
        "request": {
          "method": "POST",
          "url": "https://api.segment.io/v1/i",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "POST"
            },
            {
              "name": ":authority",
              "value": "api.segment.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/v1/i"
            },
            {
              "name": "content-length",
              "value": "901"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "content-type",
              "value": "text/plain"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 901,
          "postData": {
            "mimeType": "text/plain",
            "text": "{\"timestamp\":\"2020-03-10T08:31:17.880Z\",\"integrations\":{},\"context\":{\"page\":{\"path\":\"/analytics/engagement\",\"referrer\":\"\",\"search\":\"\",\"title\":\"Engagement | The Orchard\",\"url\":\"https://workstation.theorchard.com/analytics/engagement\"},\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36\",\"locale\":\"en-GB\",\"library\":{\"name\":\"analytics.js\",\"version\":\"3.11.2\"}},\"traits\":{\"businessType\":\"Frontline\",\"subaccountId\":\"Not Applicable\",\"labelId\":6971,\"impersonatorUserId\":\"2138\",\"labelType\":\"vendor\",\"userId\":6918},\"userId\":6918,\"messageId\":\"ajs-76fc58171e7c8e8261d91aad4a1d3547\",\"anonymousId\":\"aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a\",\"type\":\"identify\",\"writeKey\":\"38SQn7092M3aZn4AQWYwksOwBhOa0V2J\",\"sentAt\":\"2020-03-10T08:31:17.882Z\",\"_metadata\":{\"bundled\":[\"Google Analytics\",\"Mouseflow\",\"Segment.io\",\"Sentry\"],\"unbundled\":[]}}"
          }
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "content-type",
              "value": "application/json"
            },
            {
              "name": "content-length",
              "value": "21"
            },
            {
              "name": "access-control-allow-origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "vary",
              "value": "Origin"
            }
          ],
          "cookies": [],
          "content": {
            "size": 21,
            "mimeType": "application/json",
            "text": "{\n  \"success\": true\n}"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 148
        },
        "cache": {},
        "timings": {
          "blocked": 0.8729999510198831,
          "dns": 0.009999999999999995,
          "ssl": 214.93800000000002,
          "connect": 429.11199999999997,
          "send": 0.54200000000003,
          "wait": 213.5099999525994,
          "receive": 0.20100001711398363,
          "_blocked_queueing": 0.7579999510198832
        },
        "serverIPAddress": "54.201.197.201",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "o",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 6180
              },
              {
                "functionName": "_.enqueue",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 64417
              },
              {
                "functionName": "_.onidentify",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 62584
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 62325
              },
              {
                "functionName": "o.emit",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 9,
                "columnNumber": 3463
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 24224
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 7297
              },
              {
                "functionName": "i",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15708
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15693
              },
              {
                "functionName": "t.exports",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 105527
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15887
              },
              {
                "functionName": "i",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15675
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15579
              },
              {
                "functionName": "applyMiddlewares",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15869
              },
              {
                "functionName": "o._invoke",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 7187
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 24224
              },
              {
                "functionName": "o.identify",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 2934
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 24224
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 4488
              },
              {
                "functionName": "3../analytics",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 4523
              },
              {
                "functionName": "i",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 340
              },
              {
                "functionName": "e",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 498
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 526
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 12,
                "columnNumber": 9093
              }
            ]
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949654",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:17.887Z",
        "time": 638.8700000243261,
        "request": {
          "method": "POST",
          "url": "https://api.segment.io/v1/p",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "POST"
            },
            {
              "name": ":authority",
              "value": "api.segment.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/v1/p"
            },
            {
              "name": "content-length",
              "value": "920"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "content-type",
              "value": "text/plain"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 920,
          "postData": {
            "mimeType": "text/plain",
            "text": "{\"timestamp\":\"2020-03-10T08:31:17.885Z\",\"context\":{\"page\":{\"path\":\"/analytics/engagement\",\"referrer\":\"\",\"search\":\"\",\"title\":\"Engagement | The Orchard\",\"url\":\"https://workstation.theorchard.com/analytics/engagement\"},\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36\",\"locale\":\"en-GB\",\"library\":{\"name\":\"analytics.js\",\"version\":\"3.11.2\"}},\"integrations\":{},\"properties\":{\"path\":\"/analytics/engagement\",\"referrer\":\"\",\"search\":\"\",\"title\":\"Engagement | The Orchard\",\"url\":\"https://workstation.theorchard.com/analytics/engagement\"},\"messageId\":\"ajs-b9c09104da6561c8d604302672b34be1\",\"anonymousId\":\"aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a\",\"type\":\"page\",\"writeKey\":\"38SQn7092M3aZn4AQWYwksOwBhOa0V2J\",\"userId\":6918,\"sentAt\":\"2020-03-10T08:31:17.887Z\",\"_metadata\":{\"bundled\":[\"Google Analytics\",\"Mouseflow\",\"Segment.io\",\"Sentry\"],\"unbundled\":[]}}"
          }
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "content-type",
              "value": "application/json"
            },
            {
              "name": "content-length",
              "value": "21"
            },
            {
              "name": "access-control-allow-origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "vary",
              "value": "Origin"
            }
          ],
          "cookies": [],
          "content": {
            "size": 21,
            "mimeType": "application/json",
            "text": "{\n  \"success\": true\n}"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 148
        },
        "cache": {},
        "timings": {
          "blocked": 425.56100006421656,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.20699999999999363,
          "wait": 212.81099995618314,
          "receive": 0.291000003926456,
          "_blocked_queueing": 0.7270000642165542
        },
        "serverIPAddress": "54.201.197.201",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "o",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 6180
              },
              {
                "functionName": "_.enqueue",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 64417
              },
              {
                "functionName": "_.onpage",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 62520
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 62325
              },
              {
                "functionName": "o.emit",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 9,
                "columnNumber": 3463
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 24224
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 7297
              },
              {
                "functionName": "i",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15708
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15693
              },
              {
                "functionName": "t.exports",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 105527
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15887
              },
              {
                "functionName": "i",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15675
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15579
              },
              {
                "functionName": "applyMiddlewares",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 15869
              },
              {
                "functionName": "o._invoke",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 7187
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 24224
              },
              {
                "functionName": "o.page",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 5393
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 24224
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 4488
              },
              {
                "functionName": "3../analytics",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 4523
              },
              {
                "functionName": "i",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 340
              },
              {
                "functionName": "e",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 498
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 0,
                "columnNumber": 526
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 12,
                "columnNumber": 9093
              }
            ]
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949654",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:17.890Z",
        "time": 198.2739999603331,
        "request": {
          "method": "GET",
          "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "browser.sentry-cdn.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/5.12.1/bundle.min.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "expires",
              "value": "Wed, 03 Feb 2021 14:22:11 GMT"
            },
            {
              "name": "last-modified",
              "value": "Tue, 04 Feb 2020 11:19:05 GMT"
            },
            {
              "name": "etag",
              "value": "\"1c5228c89d281d08aa0ce908f582609a\""
            },
            {
              "name": "content-type",
              "value": "application/javascript; charset=utf-8"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "age",
              "value": "3002946"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "server",
              "value": "Fastly"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=31536000; includeSubDomains"
            },
            {
              "name": "content-length",
              "value": "17201"
            }
          ],
          "cookies": [],
          "content": {
            "size": 56268,
            "mimeType": "application/javascript",
            "text": "/*! @sentry/browser 5.12.1 (16de493d) | https://github.com/getsentry/sentry-javascript */\nvar Sentry=function(n){var t=function(n,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r])})(n,r)};function r(n,r){function e(){this.constructor=n}t(n,r),n.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}var e=function(){return(e=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n}).apply(this,arguments)};function i(n){var t=\"function\"==typeof Symbol&&n[Symbol.iterator],r=0;return t?t.call(n):{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}}}function o(n,t){var r=\"function\"==typeof Symbol&&n[Symbol.iterator];if(!r)return n;var e,i,o=r.call(n),u=[];try{for(;(void 0===t||t-- >0)&&!(e=o.next()).done;)u.push(e.value)}catch(n){i={error:n}}finally{try{e&&!e.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}function u(){for(var n=[],t=0;t<arguments.length;t++)n=n.concat(o(arguments[t]));return n}var c,a,s,f;!function(n){n[n.None=0]=\"None\",n[n.Error=1]=\"Error\",n[n.Debug=2]=\"Debug\",n[n.Verbose=3]=\"Verbose\"}(c||(c={})),(a=n.Severity||(n.Severity={})).Fatal=\"fatal\",a.Error=\"error\",a.Warning=\"warning\",a.Log=\"log\",a.Info=\"info\",a.Debug=\"debug\",a.Critical=\"critical\",function(n){n.fromString=function(t){switch(t){case\"debug\":return n.Debug;case\"info\":return n.Info;case\"warn\":case\"warning\":return n.Warning;case\"error\":return n.Error;case\"fatal\":return n.Fatal;case\"critical\":return n.Critical;case\"log\":default:return n.Log}}}(n.Severity||(n.Severity={})),function(n){n.Ok=\"ok\",n.DealineExceeded=\"deadline_exceeded\",n.Unauthenticated=\"unauthenticated\",n.PermissionDenied=\"permission_denied\",n.NotFound=\"not_found\",n.ResourceExhausted=\"resource_exhausted\",n.InvalidArgument=\"invalid_argument\",n.Unimplemented=\"unimplemented\",n.Unavailable=\"unavailable\",n.InternalError=\"internal_error\",n.UnknownError=\"unknown_error\",n.Cancelled=\"cancelled\",n.AlreadyExists=\"already_exists\",n.FailedPrecondition=\"failed_precondition\",n.Aborted=\"aborted\",n.OutOfRange=\"out_of_range\",n.DataLoss=\"data_loss\"}(s||(s={})),function(n){n.fromHttpCode=function(t){if(t<400)return n.Ok;if(t>=400&&t<500)switch(t){case 401:return n.Unauthenticated;case 403:return n.PermissionDenied;case 404:return n.NotFound;case 409:return n.AlreadyExists;case 413:return n.FailedPrecondition;case 429:return n.ResourceExhausted;default:return n.InvalidArgument}if(t>=500&&t<600)switch(t){case 501:return n.Unimplemented;case 503:return n.Unavailable;case 504:return n.DealineExceeded;default:return n.InternalError}return n.UnknownError}}(s||(s={})),(f=n.Status||(n.Status={})).Unknown=\"unknown\",f.Skipped=\"skipped\",f.Success=\"success\",f.RateLimit=\"rate_limit\",f.Invalid=\"invalid\",f.Failed=\"failed\",function(n){n.fromHttpCode=function(t){return t>=200&&t<300?n.Success:429===t?n.RateLimit:t>=400&&t<500?n.Invalid:t>=500?n.Failed:n.Unknown}}(n.Status||(n.Status={}));var h=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(n,t){return n.__proto__=t,n}:function(n,t){for(var r in t)n.hasOwnProperty(r)||(n[r]=t[r]);return n});var v=function(n){function t(t){var r=this.constructor,e=n.call(this,t)||this;return e.message=t,e.name=r.prototype.constructor.name,h(e,r.prototype),e}return r(t,n),t}(Error);function l(n){switch(Object.prototype.toString.call(n)){case\"[object Error]\":case\"[object Exception]\":case\"[object DOMException]\":return!0;default:return x(n,Error)}}function d(n){return\"[object ErrorEvent]\"===Object.prototype.toString.call(n)}function p(n){return\"[object DOMError]\"===Object.prototype.toString.call(n)}function y(n){return\"[object String]\"===Object.prototype.toString.call(n)}function m(n){return null===n||\"object\"!=typeof n&&\"function\"!=typeof n}function b(n){return\"[object Object]\"===Object.prototype.toString.call(n)}function w(n){return\"undefined\"!=typeof Event&&x(n,Event)}function g(n){return\"undefined\"!=typeof Element&&x(n,Element)}function E(n){return Boolean(n&&n.then&&\"function\"==typeof n.then)}function x(n,t){try{return n instanceof t}catch(n){return!1}}function j(n,t){return void 0===t&&(t=0),\"string\"!=typeof n||0===t?n:n.length<=t?n:n.substr(0,t)+\"...\"}function k(n,t){if(!Array.isArray(n))return\"\";for(var r=[],e=0;e<n.length;e++){var i=n[e];try{r.push(String(i))}catch(n){r.push(\"[value cannot be serialized]\")}}return r.join(t)}function S(n,t){return r=t,\"[object RegExp]\"===Object.prototype.toString.call(r)?t.test(n):\"string\"==typeof t&&-1!==n.indexOf(t);var r}function _(){return\"[object process]\"===Object.prototype.toString.call(\"undefined\"!=typeof process?process:0)}var O={};function T(){return _()?global:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:O}function D(){var n=T(),t=n.crypto||n.msCrypto;if(void 0!==t&&t.getRandomValues){var r=new Uint16Array(8);t.getRandomValues(r),r[3]=4095&r[3]|16384,r[4]=16383&r[4]|32768;var e=function(n){for(var t=n.toString(16);t.length<4;)t=\"0\"+t;return t};return e(r[0])+e(r[1])+e(r[2])+e(r[3])+e(r[4])+e(r[5])+e(r[6])+e(r[7])}return\"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx\".replace(/[xy]/g,function(n){var t=16*Math.random()|0;return(\"x\"===n?t:3&t|8).toString(16)})}function R(n){if(!n)return{};var t=n.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);if(!t)return{};var r=t[6]||\"\",e=t[8]||\"\";return{host:t[4],path:t[5],protocol:t[2],relative:t[5]+r+e}}function N(n){if(n.message)return n.message;if(n.exception&&n.exception.values&&n.exception.values[0]){var t=n.exception.values[0];return t.type&&t.value?t.type+\": \"+t.value:t.type||t.value||n.event_id||\"<unknown>\"}return n.event_id||\"<unknown>\"}function I(n){var t=T();if(!(\"console\"in t))return n();var r=t.console,e={};[\"debug\",\"info\",\"warn\",\"error\",\"log\",\"assert\"].forEach(function(n){n in t.console&&r[n].__sentry_original__&&(e[n]=r[n],r[n]=r[n].__sentry_original__)});var i=n();return Object.keys(e).forEach(function(n){r[n]=e[n]}),i}function C(n,t,r){n.exception=n.exception||{},n.exception.values=n.exception.values||[],n.exception.values[0]=n.exception.values[0]||{},n.exception.values[0].value=n.exception.values[0].value||t||\"\",n.exception.values[0].type=n.exception.values[0].type||r||\"Error\"}function M(n,t){void 0===t&&(t={});try{n.exception.values[0].mechanism=n.exception.values[0].mechanism||{},Object.keys(t).forEach(function(r){n.exception.values[0].mechanism[r]=t[r]})}catch(n){}}function A(n){try{for(var t=n,r=[],e=0,i=0,o=\" > \".length,u=void 0;t&&e++<5&&!(\"html\"===(u=U(t))||e>1&&i+r.length*o+u.length>=80);)r.push(u),i+=u.length,t=t.parentNode;return r.reverse().join(\" > \")}catch(n){return\"<unknown>\"}}function U(n){var t,r,e,i,o,u=n,c=[];if(!u||!u.tagName)return\"\";if(c.push(u.tagName.toLowerCase()),u.id&&c.push(\"#\"+u.id),(t=u.className)&&y(t))for(r=t.split(/\\s+/),o=0;o<r.length;o++)c.push(\".\"+r[o]);var a=[\"type\",\"name\",\"title\",\"alt\"];for(o=0;o<a.length;o++)e=a[o],(i=u.getAttribute(e))&&c.push(\"[\"+e+'=\"'+i+'\"]');return c.join(\"\")}function q(){return(new Date).getTime()/1e3}var L=6e4;function H(n,t){if(!t)return L;var r=parseInt(\"\"+t,10);if(!isNaN(r))return 1e3*r;var e=Date.parse(\"\"+t);return isNaN(e)?L:e-n}var P=\"<anonymous>\";function F(n){try{return n&&\"function\"==typeof n&&n.name||P}catch(n){return P}}var W=T(),X=\"Sentry Logger \",B=function(){function n(){this.t=!1}return n.prototype.disable=function(){this.t=!1},n.prototype.enable=function(){this.t=!0},n.prototype.log=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];this.t&&I(function(){W.console.log(X+\"[Log]: \"+n.join(\" \"))})},n.prototype.warn=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];this.t&&I(function(){W.console.warn(X+\"[Warn]: \"+n.join(\" \"))})},n.prototype.error=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];this.t&&I(function(){W.console.error(X+\"[Error]: \"+n.join(\" \"))})},n}();W.__SENTRY__=W.__SENTRY__||{};var $,G=W.__SENTRY__.logger||(W.__SENTRY__.logger=new B),J=function(){function n(){this.i=\"function\"==typeof WeakSet,this.o=this.i?new WeakSet:[]}return n.prototype.memoize=function(n){if(this.i)return!!this.o.has(n)||(this.o.add(n),!1);for(var t=0;t<this.o.length;t++){if(this.o[t]===n)return!0}return this.o.push(n),!1},n.prototype.unmemoize=function(n){if(this.i)this.o.delete(n);else for(var t=0;t<this.o.length;t++)if(this.o[t]===n){this.o.splice(t,1);break}},n}();function z(n,t,r){if(t in n){var e=n[t],i=r(e);if(\"function\"==typeof i)try{i.prototype=i.prototype||{},Object.defineProperties(i,{__sentry_original__:{enumerable:!1,value:e}})}catch(n){}n[t]=i}}function V(n){if(l(n)){var t=n,r={message:t.message,name:t.name,stack:t.stack};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);return r}if(w(n)){var i=n,o={};o.type=i.type;try{o.target=g(i.target)?A(i.target):Object.prototype.toString.call(i.target)}catch(n){o.target=\"<unknown>\"}try{o.currentTarget=g(i.currentTarget)?A(i.currentTarget):Object.prototype.toString.call(i.currentTarget)}catch(n){o.currentTarget=\"<unknown>\"}for(var e in\"undefined\"!=typeof CustomEvent&&x(n,CustomEvent)&&(o.detail=i.detail),i)Object.prototype.hasOwnProperty.call(i,e)&&(o[e]=i);return o}return n}function K(n){return function(n){return~-encodeURI(n).split(/%..|./).length}(JSON.stringify(n))}function Q(n,t,r){void 0===t&&(t=3),void 0===r&&(r=102400);var e=nn(n,t);return K(e)>r?Q(n,t-1,r):e}function Y(n,t){return\"domain\"===t&&n&&\"object\"==typeof n&&n.u?\"[Domain]\":\"domainEmitter\"===t?\"[DomainEmitter]\":\"undefined\"!=typeof global&&n===global?\"[Global]\":\"undefined\"!=typeof window&&n===window?\"[Window]\":\"undefined\"!=typeof document&&n===document?\"[Document]\":b(r=n)&&\"nativeEvent\"in r&&\"preventDefault\"in r&&\"stopPropagation\"in r?\"[SyntheticEvent]\":\"number\"==typeof n&&n!=n?\"[NaN]\":void 0===n?\"[undefined]\":\"function\"==typeof n?\"[Function: \"+F(n)+\"]\":n;var r}function Z(n,t,r,e){if(void 0===r&&(r=1/0),void 0===e&&(e=new J),0===r)return function(n){var t=Object.prototype.toString.call(n);if(\"string\"==typeof n)return n;if(\"[object Object]\"===t)return\"[Object]\";if(\"[object Array]\"===t)return\"[Array]\";var r=Y(n);return m(r)?r:t}(t);if(null!=t&&\"function\"==typeof t.toJSON)return t.toJSON();var i=Y(t,n);if(m(i))return i;var o=V(t),u=Array.isArray(t)?[]:{};if(e.memoize(t))return\"[Circular ~]\";for(var c in o)Object.prototype.hasOwnProperty.call(o,c)&&(u[c]=Z(c,o[c],r-1,e));return e.unmemoize(t),u}function nn(n,t){try{return JSON.parse(JSON.stringify(n,function(n,r){return Z(n,r,t)}))}catch(n){return\"**non-serializable**\"}}function tn(n,t){void 0===t&&(t=40);var r=Object.keys(V(n));if(r.sort(),!r.length)return\"[object has no keys]\";if(r[0].length>=t)return j(r[0],t);for(var e=r.length;e>0;e--){var i=r.slice(0,e).join(\", \");if(!(i.length>t))return e===r.length?i:j(i,t)}return\"\"}!function(n){n.PENDING=\"PENDING\",n.RESOLVED=\"RESOLVED\",n.REJECTED=\"REJECTED\"}($||($={}));var rn=function(){function n(n){var t=this;this.s=$.PENDING,this.h=[],this.v=function(n){t.l($.RESOLVED,n)},this.p=function(n){t.l($.REJECTED,n)},this.l=function(n,r){t.s===$.PENDING&&(E(r)?r.then(t.v,t.p):(t.s=n,t.m=r,t.g()))},this.j=function(n){t.h=t.h.concat(n),t.g()},this.g=function(){t.s!==$.PENDING&&(t.s===$.REJECTED?t.h.forEach(function(n){n.onrejected&&n.onrejected(t.m)}):t.h.forEach(function(n){n.onfulfilled&&n.onfulfilled(t.m)}),t.h=[])};try{n(this.v,this.p)}catch(n){this.p(n)}}return n.prototype.toString=function(){return\"[object SyncPromise]\"},n.resolve=function(t){return new n(function(n){n(t)})},n.reject=function(t){return new n(function(n,r){r(t)})},n.all=function(t){return new n(function(r,e){if(Array.isArray(t))if(0!==t.length){var i=t.length,o=[];t.forEach(function(t,u){n.resolve(t).then(function(n){o[u]=n,0===(i-=1)&&r(o)}).then(null,e)})}else r([]);else e(new TypeError(\"Promise.all requires an array as input.\"))})},n.prototype.then=function(t,r){var e=this;return new n(function(n,i){e.j({onfulfilled:function(r){if(t)try{return void n(t(r))}catch(n){return void i(n)}else n(r)},onrejected:function(t){if(r)try{return void n(r(t))}catch(n){return void i(n)}else i(t)}})})},n.prototype.catch=function(n){return this.then(function(n){return n},n)},n.prototype.finally=function(t){var r=this;return new n(function(n,e){var i,o;return r.then(function(n){o=!1,i=n,t&&t()},function(n){o=!0,i=n,t&&t()}).then(function(){o?e(i):n(i)})})},n}(),en=function(){function n(n){this.k=n,this.S=[]}return n.prototype.isReady=function(){return void 0===this.k||this.length()<this.k},n.prototype.add=function(n){var t=this;return this.isReady()?(-1===this.S.indexOf(n)&&this.S.push(n),n.then(function(){return t.remove(n)}).then(null,function(){return t.remove(n).then(null,function(){})}),n):rn.reject(new v(\"Not adding Promise due to buffer limit reached.\"))},n.prototype.remove=function(n){return this.S.splice(this.S.indexOf(n),1)[0]},n.prototype.length=function(){return this.S.length},n.prototype.drain=function(n){var t=this;return new rn(function(r){var e=setTimeout(function(){n&&n>0&&r(!1)},n);rn.all(t.S).then(function(){clearTimeout(e),r(!0)}).then(null,function(){r(!0)})})},n}();function on(){if(!(\"fetch\"in T()))return!1;try{return new Headers,new Request(\"\"),new Response,!0}catch(n){return!1}}function un(n){return n&&/^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(n.toString())}function cn(){if(!on())return!1;try{return new Request(\"_\",{referrerPolicy:\"origin\"}),!0}catch(n){return!1}}var an,sn=T(),fn={},hn={};function vn(n){if(!hn[n])switch(hn[n]=!0,n){case\"console\":!function(){if(!(\"console\"in sn))return;[\"debug\",\"info\",\"warn\",\"error\",\"log\",\"assert\"].forEach(function(n){n in sn.console&&z(sn.console,n,function(t){return function(){for(var r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];dn(\"console\",{args:r,level:n}),t&&Function.prototype.apply.call(t,sn.console,r)}})})}();break;case\"dom\":!function(){if(!(\"document\"in sn))return;sn.document.addEventListener(\"click\",En(\"click\",dn.bind(null,\"dom\")),!1),sn.document.addEventListener(\"keypress\",xn(dn.bind(null,\"dom\")),!1),[\"EventTarget\",\"Node\"].forEach(function(n){var t=sn[n]&&sn[n].prototype;t&&t.hasOwnProperty&&t.hasOwnProperty(\"addEventListener\")&&(z(t,\"addEventListener\",function(n){return function(t,r,e){return r&&r.handleEvent?(\"click\"===t&&z(r,\"handleEvent\",function(n){return function(t){return En(\"click\",dn.bind(null,\"dom\"))(t),n.call(this,t)}}),\"keypress\"===t&&z(r,\"handleEvent\",function(n){return function(t){return xn(dn.bind(null,\"dom\"))(t),n.call(this,t)}})):(\"click\"===t&&En(\"click\",dn.bind(null,\"dom\"),!0)(this),\"keypress\"===t&&xn(dn.bind(null,\"dom\"))(this)),n.call(this,t,r,e)}}),z(t,\"removeEventListener\",function(n){return function(t,r,e){var i=r;try{i=i&&(i.__sentry_wrapped__||i)}catch(n){}return n.call(this,t,i,e)}}))})}();break;case\"xhr\":!function(){if(!(\"XMLHttpRequest\"in sn))return;var n=XMLHttpRequest.prototype;z(n,\"open\",function(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=t[1];return this.__sentry_xhr__={method:y(t[0])?t[0].toUpperCase():t[0],url:t[1]},y(e)&&\"POST\"===this.__sentry_xhr__.method&&e.match(/sentry_key/)&&(this.__sentry_own_request__=!0),n.apply(this,t)}}),z(n,\"send\",function(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var i=this,o={args:t,startTimestamp:Date.now(),xhr:i};function u(){if(4===i.readyState){try{i.__sentry_xhr__&&(i.__sentry_xhr__.status_code=i.status)}catch(n){}dn(\"xhr\",e({},o,{endTimestamp:Date.now()}))}}return dn(\"xhr\",e({},o)),\"onreadystatechange\"in i&&\"function\"==typeof i.onreadystatechange?z(i,\"onreadystatechange\",function(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return u(),n.apply(i,t)}}):i.onreadystatechange=u,n.apply(this,t)}})}();break;case\"fetch\":!function(){if(!function(){if(!on())return!1;var n=T();if(un(n.fetch))return!0;var t=!1,r=n.document;if(r){var e=r.createElement(\"iframe\");e.hidden=!0;try{r.head.appendChild(e),e.contentWindow&&e.contentWindow.fetch&&(t=un(e.contentWindow.fetch)),r.head.removeChild(e)}catch(n){G.warn(\"Could not create sandbox iframe for pure fetch check, bailing to window.fetch: \",n)}}return t}())return;z(sn,\"fetch\",function(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var i={args:t,fetchData:{method:pn(t),url:yn(t)},startTimestamp:Date.now()};return dn(\"fetch\",e({},i)),n.apply(sn,t).then(function(n){return dn(\"fetch\",e({},i,{endTimestamp:Date.now(),response:n})),n},function(n){throw dn(\"fetch\",e({},i,{endTimestamp:Date.now(),error:n})),n})}})}();break;case\"history\":!function(){if(n=T(),t=n.chrome,r=t&&t.app&&t.app.runtime,e=\"history\"in n&&!!n.history.pushState&&!!n.history.replaceState,r||!e)return;var n,t,r,e;var i=sn.onpopstate;function o(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=t.length>2?t[2]:void 0;if(e){var i=an,o=String(e);an=o,dn(\"history\",{from:i,to:o})}return n.apply(this,t)}}sn.onpopstate=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=sn.location.href,e=an;if(an=r,dn(\"history\",{from:e,to:r}),i)return i.apply(this,n)},z(sn.history,\"pushState\",o),z(sn.history,\"replaceState\",o)}();break;default:G.warn(\"unknown instrumentation type:\",n)}}function ln(n){n&&\"string\"==typeof n.type&&\"function\"==typeof n.callback&&(fn[n.type]=fn[n.type]||[],fn[n.type].push(n.callback),vn(n.type))}function dn(n,t){var r,e;if(n&&fn[n])try{for(var o=i(fn[n]||[]),u=o.next();!u.done;u=o.next()){var c=u.value;try{c(t)}catch(t){G.error(\"Error while triggering instrumentation handler.\\nType: \"+n+\"\\nName: \"+F(c)+\"\\nError: \"+t)}}}catch(n){r={error:n}}finally{try{u&&!u.done&&(e=o.return)&&e.call(o)}finally{if(r)throw r.error}}}function pn(n){return void 0===n&&(n=[]),\"Request\"in sn&&x(n[0],Request)&&n[0].method?String(n[0].method).toUpperCase():n[1]&&n[1].method?String(n[1].method).toUpperCase():\"GET\"}function yn(n){return void 0===n&&(n=[]),\"string\"==typeof n[0]?n[0]:\"Request\"in sn&&x(n[0],Request)?n[0].url:String(n[0])}var mn,bn,wn=1e3,gn=0;function En(n,t,r){return void 0===r&&(r=!1),function(e){mn=void 0,e&&bn!==e&&(bn=e,gn&&clearTimeout(gn),r?gn=setTimeout(function(){t({event:e,name:n})}):t({event:e,name:n}))}}function xn(n){return function(t){var r;try{r=t.target}catch(n){return}var e=r&&r.tagName;e&&(\"INPUT\"===e||\"TEXTAREA\"===e||r.isContentEditable)&&(mn||En(\"input\",n)(t),clearTimeout(mn),mn=setTimeout(function(){mn=void 0},wn))}}var jn=/^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w\\.-]+)(?::(\\d+))?\\/(.+)/,kn=function(){function n(n){\"string\"==typeof n?this._(n):this.O(n),this.T()}return n.prototype.toString=function(n){void 0===n&&(n=!1);var t=this,r=t.host,e=t.path,i=t.pass,o=t.port,u=t.projectId;return t.protocol+\"://\"+t.user+(n&&i?\":\"+i:\"\")+\"@\"+r+(o?\":\"+o:\"\")+\"/\"+(e?e+\"/\":e)+u},n.prototype._=function(n){var t=jn.exec(n);if(!t)throw new v(\"Invalid Dsn\");var r=o(t.slice(1),6),e=r[0],i=r[1],u=r[2],c=void 0===u?\"\":u,a=r[3],s=r[4],f=void 0===s?\"\":s,h=\"\",l=r[5],d=l.split(\"/\");d.length>1&&(h=d.slice(0,-1).join(\"/\"),l=d.pop()),this.O({host:a,pass:c,path:h,projectId:l,port:f,protocol:e,user:i})},n.prototype.O=function(n){this.protocol=n.protocol,this.user=n.user,this.pass=n.pass||\"\",this.host=n.host,this.port=n.port||\"\",this.path=n.path||\"\",this.projectId=n.projectId},n.prototype.T=function(){var n=this;if([\"protocol\",\"user\",\"host\",\"projectId\"].forEach(function(t){if(!n[t])throw new v(\"Invalid Dsn\")}),\"http\"!==this.protocol&&\"https\"!==this.protocol)throw new v(\"Invalid Dsn\");if(this.port&&isNaN(parseInt(this.port,10)))throw new v(\"Invalid Dsn\")},n}(),Sn=function(){function n(){this.D=!1,this.R=[],this.N=[],this.I=[],this.C={},this.M={},this.A={},this.U={}}return n.prototype.addScopeListener=function(n){this.R.push(n)},n.prototype.addEventProcessor=function(n){return this.N.push(n),this},n.prototype.q=function(){var n=this;this.D||(this.D=!0,setTimeout(function(){n.R.forEach(function(t){t(n)}),n.D=!1}))},n.prototype.L=function(n,t,r,i){var o=this;return void 0===i&&(i=0),new rn(function(u,c){var a=n[i];if(null===t||\"function\"!=typeof a)u(t);else{var s=a(e({},t),r);E(s)?s.then(function(t){return o.L(n,t,r,i+1).then(u)}).then(null,c):o.L(n,s,r,i+1).then(u).then(null,c)}})},n.prototype.setUser=function(n){return this.C=n||{},this.q(),this},n.prototype.setTags=function(n){return this.M=e({},this.M,n),this.q(),this},n.prototype.setTag=function(n,t){var r;return this.M=e({},this.M,((r={})[n]=t,r)),this.q(),this},n.prototype.setExtras=function(n){return this.A=e({},this.A,n),this.q(),this},n.prototype.setExtra=function(n,t){var r;return this.A=e({},this.A,((r={})[n]=t,r)),this.q(),this},n.prototype.setFingerprint=function(n){return this.H=n,this.q(),this},n.prototype.setLevel=function(n){return this.P=n,this.q(),this},n.prototype.setTransaction=function(n){return this.F=n,this.W&&(this.W.transaction=n),this.q(),this},n.prototype.setContext=function(n,t){var r;return this.U=e({},this.U,((r={})[n]=t,r)),this.q(),this},n.prototype.setSpan=function(n){return this.W=n,this.q(),this},n.prototype.getSpan=function(){return this.W},n.clone=function(t){var r=new n;return t&&(r.I=u(t.I),r.M=e({},t.M),r.A=e({},t.A),r.U=e({},t.U),r.C=t.C,r.P=t.P,r.W=t.W,r.F=t.F,r.H=t.H,r.N=u(t.N)),r},n.prototype.clear=function(){return this.I=[],this.M={},this.A={},this.C={},this.U={},this.P=void 0,this.F=void 0,this.H=void 0,this.W=void 0,this.q(),this},n.prototype.addBreadcrumb=function(n,t){var r=e({timestamp:q()},n);return this.I=void 0!==t&&t>=0?u(this.I,[r]).slice(-t):u(this.I,[r]),this.q(),this},n.prototype.clearBreadcrumbs=function(){return this.I=[],this.q(),this},n.prototype.X=function(n){n.fingerprint=n.fingerprint?Array.isArray(n.fingerprint)?n.fingerprint:[n.fingerprint]:[],this.H&&(n.fingerprint=n.fingerprint.concat(this.H)),n.fingerprint&&!n.fingerprint.length&&delete n.fingerprint},n.prototype.applyToEvent=function(n,t){return this.A&&Object.keys(this.A).length&&(n.extra=e({},this.A,n.extra)),this.M&&Object.keys(this.M).length&&(n.tags=e({},this.M,n.tags)),this.C&&Object.keys(this.C).length&&(n.user=e({},this.C,n.user)),this.U&&Object.keys(this.U).length&&(n.contexts=e({},this.U,n.contexts)),this.P&&(n.level=this.P),this.F&&(n.transaction=this.F),this.X(n),n.breadcrumbs=u(n.breadcrumbs||[],this.I),n.breadcrumbs=n.breadcrumbs.length>0?n.breadcrumbs:void 0,this.L(u(_n(),this.N),n,t)},n}();function _n(){var n=T();return n.__SENTRY__=n.__SENTRY__||{},n.__SENTRY__.globalEventProcessors=n.__SENTRY__.globalEventProcessors||[],n.__SENTRY__.globalEventProcessors}function On(n){_n().push(n)}var Tn=3,Dn=function(){function n(n,t,r){void 0===t&&(t=new Sn),void 0===r&&(r=Tn),this.B=r,this.$=[],this.$.push({client:n,scope:t})}return n.prototype.G=function(n){for(var t,r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];var i=this.getStackTop();i&&i.client&&i.client[n]&&(t=i.client)[n].apply(t,u(r,[i.scope]))},n.prototype.isOlderThan=function(n){return this.B<n},n.prototype.bindClient=function(n){this.getStackTop().client=n},n.prototype.pushScope=function(){var n=this.getStack(),t=n.length>0?n[n.length-1].scope:void 0,r=Sn.clone(t);return this.getStack().push({client:this.getClient(),scope:r}),r},n.prototype.popScope=function(){return void 0!==this.getStack().pop()},n.prototype.withScope=function(n){var t=this.pushScope();try{n(t)}finally{this.popScope()}},n.prototype.getClient=function(){return this.getStackTop().client},n.prototype.getScope=function(){return this.getStackTop().scope},n.prototype.getStack=function(){return this.$},n.prototype.getStackTop=function(){return this.$[this.$.length-1]},n.prototype.captureException=function(n,t){var r=this.J=D(),i=t;if(!t){var o=void 0;try{throw new Error(\"Sentry syntheticException\")}catch(n){o=n}i={originalException:n,syntheticException:o}}return this.G(\"captureException\",n,e({},i,{event_id:r})),r},n.prototype.captureMessage=function(n,t,r){var i=this.J=D(),o=r;if(!r){var u=void 0;try{throw new Error(n)}catch(n){u=n}o={originalException:n,syntheticException:u}}return this.G(\"captureMessage\",n,t,e({},o,{event_id:i})),i},n.prototype.captureEvent=function(n,t){var r=this.J=D();return this.G(\"captureEvent\",n,e({},t,{event_id:r})),r},n.prototype.lastEventId=function(){return this.J},n.prototype.addBreadcrumb=function(n,t){var r=this.getStackTop();if(r.scope&&r.client){var i=r.client.getOptions&&r.client.getOptions()||{},o=i.beforeBreadcrumb,u=void 0===o?null:o,c=i.maxBreadcrumbs,a=void 0===c?100:c;if(!(a<=0)){var s=q(),f=e({timestamp:s},n),h=u?I(function(){return u(f,t)}):f;null!==h&&r.scope.addBreadcrumb(h,Math.min(a,100))}}},n.prototype.setUser=function(n){var t=this.getStackTop();t.scope&&t.scope.setUser(n)},n.prototype.setTags=function(n){var t=this.getStackTop();t.scope&&t.scope.setTags(n)},n.prototype.setExtras=function(n){var t=this.getStackTop();t.scope&&t.scope.setExtras(n)},n.prototype.setTag=function(n,t){var r=this.getStackTop();r.scope&&r.scope.setTag(n,t)},n.prototype.setExtra=function(n,t){var r=this.getStackTop();r.scope&&r.scope.setExtra(n,t)},n.prototype.setContext=function(n,t){var r=this.getStackTop();r.scope&&r.scope.setContext(n,t)},n.prototype.configureScope=function(n){var t=this.getStackTop();t.scope&&t.client&&n(t.scope)},n.prototype.run=function(n){var t=Nn(this);try{n(this)}finally{Nn(t)}},n.prototype.getIntegration=function(n){var t=this.getClient();if(!t)return null;try{return t.getIntegration(n)}catch(t){return G.warn(\"Cannot retrieve integration \"+n.id+\" from the current Hub\"),null}},n.prototype.startSpan=function(n,t){return void 0===t&&(t=!1),this.V(\"startSpan\",n,t)},n.prototype.traceHeaders=function(){return this.V(\"traceHeaders\")},n.prototype.V=function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=Rn().__SENTRY__;if(e&&e.extensions&&\"function\"==typeof e.extensions[n])return e.extensions[n].apply(this,t);G.warn(\"Extension method \"+n+\" couldn't be found, doing nothing.\")},n}();function Rn(){var n=T();return n.__SENTRY__=n.__SENTRY__||{extensions:{},hub:void 0},n}function Nn(n){var t=Rn(),r=Mn(t);return An(t,n),r}function In(){var n=Rn();return Cn(n)&&!Mn(n).isOlderThan(Tn)||An(n,new Dn),_()?function(n){try{var t=(i=module,o=\"domain\",i.require(o)),r=t.active;if(!r)return Mn(n);if(!Cn(r)||Mn(r).isOlderThan(Tn)){var e=Mn(n).getStackTop();An(r,new Dn(e.client,Sn.clone(e.scope)))}return Mn(r)}catch(t){return Mn(n)}var i,o}(n):Mn(n)}function Cn(n){return!!(n&&n.__SENTRY__&&n.__SENTRY__.hub)}function Mn(n){return n&&n.__SENTRY__&&n.__SENTRY__.hub?n.__SENTRY__.hub:(n.__SENTRY__=n.__SENTRY__||{},n.__SENTRY__.hub=new Dn,n.__SENTRY__.hub)}function An(n,t){return!!n&&(n.__SENTRY__=n.__SENTRY__||{},n.__SENTRY__.hub=t,!0)}function Un(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=In();if(e&&e[n])return e[n].apply(e,u(t));throw new Error(\"No hub defined or \"+n+\" was not found on the hub, please open a bug report.\")}function captureException(n){var t;try{throw new Error(\"Sentry syntheticException\")}catch(n){t=n}return Un(\"captureException\",n,{originalException:n,syntheticException:t})}function qn(n){Un(\"withScope\",n)}var Ln=function(){function n(n){this.dsn=n,this.K=new kn(n)}return n.prototype.getDsn=function(){return this.K},n.prototype.getStoreEndpoint=function(){return\"\"+this.Y()+this.getStoreEndpointPath()},n.prototype.getStoreEndpointWithUrlEncodedAuth=function(){var n,t={sentry_key:this.K.user,sentry_version:\"7\"};return this.getStoreEndpoint()+\"?\"+(n=t,Object.keys(n).map(function(t){return encodeURIComponent(t)+\"=\"+encodeURIComponent(n[t])}).join(\"&\"))},n.prototype.Y=function(){var n=this.K,t=n.protocol?n.protocol+\":\":\"\",r=n.port?\":\"+n.port:\"\";return t+\"//\"+n.host+r},n.prototype.getStoreEndpointPath=function(){var n=this.K;return(n.path?\"/\"+n.path:\"\")+\"/api/\"+n.projectId+\"/store/\"},n.prototype.getRequestHeaders=function(n,t){var r=this.K,e=[\"Sentry sentry_version=7\"];return e.push(\"sentry_timestamp=\"+q()),e.push(\"sentry_client=\"+n+\"/\"+t),e.push(\"sentry_key=\"+r.user),r.pass&&e.push(\"sentry_secret=\"+r.pass),{\"Content-Type\":\"application/json\",\"X-Sentry-Auth\":e.join(\", \")}},n.prototype.getReportDialogEndpoint=function(n){void 0===n&&(n={});var t=this.K,r=this.Y()+(t.path?\"/\"+t.path:\"\")+\"/api/embed/error-page/\",e=[];for(var i in e.push(\"dsn=\"+t.toString()),n)if(\"user\"===i){if(!n.user)continue;n.user.name&&e.push(\"name=\"+encodeURIComponent(n.user.name)),n.user.email&&e.push(\"email=\"+encodeURIComponent(n.user.email))}else e.push(encodeURIComponent(i)+\"=\"+encodeURIComponent(n[i]));return e.length?r+\"?\"+e.join(\"&\"):r},n}(),Hn=[];function Pn(n){var t={};return function(n){var t=n.defaultIntegrations&&u(n.defaultIntegrations)||[],r=n.integrations,e=[];if(Array.isArray(r)){var i=r.map(function(n){return n.name}),o=[];t.forEach(function(n){-1===i.indexOf(n.name)&&-1===o.indexOf(n.name)&&(e.push(n),o.push(n.name))}),r.forEach(function(n){-1===o.indexOf(n.name)&&(e.push(n),o.push(n.name))})}else\"function\"==typeof r?(e=r(t),e=Array.isArray(e)?e:[e]):e=u(t);var c=e.map(function(n){return n.name});return-1!==c.indexOf(\"Debug\")&&e.push.apply(e,u(e.splice(c.indexOf(\"Debug\"),1))),e}(n).forEach(function(n){t[n.name]=n,function(n){-1===Hn.indexOf(n.name)&&(n.setupOnce(On,In),Hn.push(n.name),G.log(\"Integration installed: \"+n.name))}(n)}),t}var Fn,Wn=function(){function n(n,t){this.Z={},this.nn=!1,this.tn=new n(t),this.rn=t,t.dsn&&(this.en=new kn(t.dsn)),this.in()&&(this.Z=Pn(this.rn))}return n.prototype.captureException=function(n,t,r){var e=this,i=t&&t.event_id;return this.nn=!0,this.on().eventFromException(n,t).then(function(n){return e.un(n,t,r)}).then(function(n){i=n&&n.event_id,e.nn=!1}).then(null,function(n){G.error(n),e.nn=!1}),i},n.prototype.captureMessage=function(n,t,r,e){var i=this,o=r&&r.event_id;return this.nn=!0,(m(n)?this.on().eventFromMessage(\"\"+n,t,r):this.on().eventFromException(n,r)).then(function(n){return i.un(n,r,e)}).then(function(n){o=n&&n.event_id,i.nn=!1}).then(null,function(n){G.error(n),i.nn=!1}),o},n.prototype.captureEvent=function(n,t,r){var e=this,i=t&&t.event_id;return this.nn=!0,this.un(n,t,r).then(function(n){i=n&&n.event_id,e.nn=!1}).then(null,function(n){G.error(n),e.nn=!1}),i},n.prototype.getDsn=function(){return this.en},n.prototype.getOptions=function(){return this.rn},n.prototype.flush=function(n){var t=this;return this.cn(n).then(function(r){return clearInterval(r.interval),t.on().getTransport().close(n).then(function(n){return r.ready&&n})})},n.prototype.close=function(n){var t=this;return this.flush(n).then(function(n){return t.getOptions().enabled=!1,n})},n.prototype.getIntegrations=function(){return this.Z||{}},n.prototype.getIntegration=function(n){try{return this.Z[n.id]||null}catch(t){return G.warn(\"Cannot retrieve integration \"+n.id+\" from the current Client\"),null}},n.prototype.cn=function(n){var t=this;return new rn(function(r){var e=0,i=0;clearInterval(i),i=setInterval(function(){t.nn?(e+=1,n&&e>=n&&r({interval:i,ready:!1})):r({interval:i,ready:!0})},1)})},n.prototype.on=function(){return this.tn},n.prototype.in=function(){return!1!==this.getOptions().enabled&&void 0!==this.en},n.prototype.an=function(n,t,r){var i=this,o=this.getOptions(),u=o.environment,c=o.release,a=o.dist,s=o.maxValueLength,f=void 0===s?250:s,h=o.normalizeDepth,v=void 0===h?3:h,l=e({},n);void 0===l.environment&&void 0!==u&&(l.environment=u),void 0===l.release&&void 0!==c&&(l.release=c),void 0===l.dist&&void 0!==a&&(l.dist=a),l.message&&(l.message=j(l.message,f));var d=l.exception&&l.exception.values&&l.exception.values[0];d&&d.value&&(d.value=j(d.value,f));var p=l.request;p&&p.url&&(p.url=j(p.url,f)),void 0===l.event_id&&(l.event_id=r&&r.event_id?r.event_id:D()),this.sn(l.sdk);var y=rn.resolve(l);return t&&(y=t.applyToEvent(l,r)),y.then(function(n){return\"number\"==typeof v&&v>0?i.fn(n,v):n})},n.prototype.fn=function(n,t){return n?e({},n,n.breadcrumbs&&{breadcrumbs:n.breadcrumbs.map(function(n){return e({},n,n.data&&{data:nn(n.data,t)})})},n.user&&{user:nn(n.user,t)},n.contexts&&{contexts:nn(n.contexts,t)},n.extra&&{extra:nn(n.extra,t)}):null},n.prototype.sn=function(n){var t=Object.keys(this.Z);n&&t.length>0&&(n.integrations=t)},n.prototype.un=function(n,t,r){var e=this,i=this.getOptions(),o=i.beforeSend,u=i.sampleRate;return this.in()?\"number\"==typeof u&&Math.random()>u?rn.reject(\"This event has been sampled, will not send event.\"):new rn(function(i,u){e.an(n,r,t).then(function(n){if(null!==n){var r=n;try{if(t&&t.data&&!0===t.data.__sentry__||!o)return e.on().sendEvent(r),void i(r);var c=o(n,t);if(void 0===c)G.error(\"`beforeSend` method has to return `null` or a valid event.\");else if(E(c))e.hn(c,i,u);else{if(null===(r=c))return G.log(\"`beforeSend` returned `null`, will not send event.\"),void i(null);e.on().sendEvent(r),i(r)}}catch(n){e.captureException(n,{data:{__sentry__:!0},originalException:n}),u(\"`beforeSend` threw an error, will not send event.\")}}else u(\"An event processor returned null, will not send event.\")}).then(null,function(){u(\"`beforeSend` threw an error, will not send event.\")})}):rn.reject(\"SDK not enabled, will not send event.\")},n.prototype.hn=function(n,t,r){var e=this;n.then(function(n){null!==n?(e.on().sendEvent(n),t(n)):r(\"`beforeSend` returned `null`, will not send event.\")}).then(null,function(n){r(\"beforeSend rejected with \"+n)})},n}(),Xn=function(){function t(){}return t.prototype.sendEvent=function(t){return rn.resolve({reason:\"NoopTransport: Event has been skipped because no Dsn is configured.\",status:n.Status.Skipped})},t.prototype.close=function(n){return rn.resolve(!0)},t}(),Bn=function(){function n(n){this.rn=n,this.rn.dsn||G.warn(\"No DSN provided, backend will not do anything.\"),this.vn=this.ln()}return n.prototype.ln=function(){return new Xn},n.prototype.eventFromException=function(n,t){throw new v(\"Backend has to implement `eventFromException` method\")},n.prototype.eventFromMessage=function(n,t,r){throw new v(\"Backend has to implement `eventFromMessage` method\")},n.prototype.sendEvent=function(n){this.vn.sendEvent(n).then(null,function(n){G.error(\"Error while sending event: \"+n)})},n.prototype.getTransport=function(){return this.vn},n}();var $n=function(){function n(){this.name=n.id}return n.prototype.setupOnce=function(){Fn=Function.prototype.toString,Function.prototype.toString=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=this.__sentry_original__||this;return Fn.apply(r,n)}},n.id=\"FunctionToString\",n}(),Gn=[/^Script error\\.?$/,/^Javascript error: Script error\\.? on line 0$/],Jn=function(){function n(t){void 0===t&&(t={}),this.rn=t,this.name=n.id}return n.prototype.setupOnce=function(){On(function(t){var r=In();if(!r)return t;var e=r.getIntegration(n);if(e){var i=r.getClient(),o=i?i.getOptions():{},u=e.dn(o);if(e.pn(t,u))return null}return t})},n.prototype.pn=function(n,t){return this.yn(n,t)?(G.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \"+N(n)),!0):this.mn(n,t)?(G.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \"+N(n)),!0):this.bn(n,t)?(G.warn(\"Event dropped due to being matched by `blacklistUrls` option.\\nEvent: \"+N(n)+\".\\nUrl: \"+this.wn(n)),!0):!this.gn(n,t)&&(G.warn(\"Event dropped due to not being matched by `whitelistUrls` option.\\nEvent: \"+N(n)+\".\\nUrl: \"+this.wn(n)),!0)},n.prototype.yn=function(n,t){if(void 0===t&&(t={}),!t.ignoreInternal)return!1;try{return n&&n.exception&&n.exception.values&&n.exception.values[0]&&\"SentryError\"===n.exception.values[0].type||!1}catch(n){return!1}},n.prototype.mn=function(n,t){return void 0===t&&(t={}),!(!t.ignoreErrors||!t.ignoreErrors.length)&&this.En(n).some(function(n){return t.ignoreErrors.some(function(t){return S(n,t)})})},n.prototype.bn=function(n,t){if(void 0===t&&(t={}),!t.blacklistUrls||!t.blacklistUrls.length)return!1;var r=this.wn(n);return!!r&&t.blacklistUrls.some(function(n){return S(r,n)})},n.prototype.gn=function(n,t){if(void 0===t&&(t={}),!t.whitelistUrls||!t.whitelistUrls.length)return!0;var r=this.wn(n);return!r||t.whitelistUrls.some(function(n){return S(r,n)})},n.prototype.dn=function(n){return void 0===n&&(n={}),{blacklistUrls:u(this.rn.blacklistUrls||[],n.blacklistUrls||[]),ignoreErrors:u(this.rn.ignoreErrors||[],n.ignoreErrors||[],Gn),ignoreInternal:void 0===this.rn.ignoreInternal||this.rn.ignoreInternal,whitelistUrls:u(this.rn.whitelistUrls||[],n.whitelistUrls||[])}},n.prototype.En=function(n){if(n.message)return[n.message];if(n.exception)try{var t=n.exception.values&&n.exception.values[0]||{},r=t.type,e=void 0===r?\"\":r,i=t.value,o=void 0===i?\"\":i;return[\"\"+o,e+\": \"+o]}catch(t){return G.error(\"Cannot extract message for event \"+N(n)),[]}return[]},n.prototype.wn=function(n){try{if(n.stacktrace){var t=n.stacktrace.frames;return t&&t[t.length-1].filename||null}if(n.exception){var r=n.exception.values&&n.exception.values[0].stacktrace&&n.exception.values[0].stacktrace.frames;return r&&r[r.length-1].filename||null}return null}catch(t){return G.error(\"Cannot extract url for event \"+N(n)),null}},n.id=\"InboundFilters\",n}(),zn=Object.freeze({FunctionToString:$n,InboundFilters:Jn}),Vn=\"?\",Kn=/^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,Qn=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i,Yn=/^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,Zn=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,nt=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;function tt(n){var t=null,r=n&&n.framesToPop;try{if(t=function(n){if(!n||!n.stacktrace)return null;for(var t,r=n.stacktrace,e=/ line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i,i=/ line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i,o=r.split(\"\\n\"),u=[],c=0;c<o.length;c+=2){var a=null;(t=e.exec(o[c]))?a={url:t[2],func:t[3],args:[],line:+t[1],column:null}:(t=i.exec(o[c]))&&(a={url:t[6],func:t[3]||t[4],args:t[5]?t[5].split(\",\"):[],line:+t[1],column:+t[2]}),a&&(!a.func&&a.line&&(a.func=Vn),u.push(a))}if(!u.length)return null;return{message:et(n),name:n.name,stack:u}}(n))return rt(t,r)}catch(n){}try{if(t=function(n){if(!n||!n.stack)return null;for(var t,r,e,i=[],o=n.stack.split(\"\\n\"),u=0;u<o.length;++u){if(r=Kn.exec(o[u])){var c=r[2]&&0===r[2].indexOf(\"native\");r[2]&&0===r[2].indexOf(\"eval\")&&(t=nt.exec(r[2]))&&(r[2]=t[1],r[3]=t[2],r[4]=t[3]),e={url:r[2]&&0===r[2].indexOf(\"address at \")?r[2].substr(\"address at \".length):r[2],func:r[1]||Vn,args:c?[r[2]]:[],line:r[3]?+r[3]:null,column:r[4]?+r[4]:null}}else if(r=Yn.exec(o[u]))e={url:r[2],func:r[1]||Vn,args:[],line:+r[3],column:r[4]?+r[4]:null};else{if(!(r=Qn.exec(o[u])))continue;r[3]&&r[3].indexOf(\" > eval\")>-1&&(t=Zn.exec(r[3]))?(r[1]=r[1]||\"eval\",r[3]=t[1],r[4]=t[2],r[5]=\"\"):0!==u||r[5]||void 0===n.columnNumber||(i[0].column=n.columnNumber+1),e={url:r[3],func:r[1]||Vn,args:r[2]?r[2].split(\",\"):[],line:r[4]?+r[4]:null,column:r[5]?+r[5]:null}}!e.func&&e.line&&(e.func=Vn),i.push(e)}if(!i.length)return null;return{message:et(n),name:n.name,stack:i}}(n))return rt(t,r)}catch(n){}return{message:et(n),name:n&&n.name,stack:[],failed:!0}}function rt(n,t){try{return e({},n,{stack:n.stack.slice(t)})}catch(t){return n}}function et(n){var t=n&&n.message;return t?t.error&&\"string\"==typeof t.error.message?t.error.message:t:\"No error message\"}var it=50;function ot(n){var t=ct(n.stack),r={type:n.name,value:n.message};return t&&t.length&&(r.stacktrace={frames:t}),void 0===r.type&&\"\"===r.value&&(r.value=\"Unrecoverable error caught\"),r}function ut(n){return{exception:{values:[ot(n)]}}}function ct(n){if(!n||!n.length)return[];var t=n,r=t[0].func||\"\",e=t[t.length-1].func||\"\";return-1===r.indexOf(\"captureMessage\")&&-1===r.indexOf(\"captureException\")||(t=t.slice(1)),-1!==e.indexOf(\"sentryWrapped\")&&(t=t.slice(0,-1)),t.map(function(n){return{colno:null===n.column?void 0:n.column,filename:n.url||t[0].url,function:n.func||\"?\",in_app:!0,lineno:null===n.line?void 0:n.line}}).slice(0,it).reverse()}function at(n,t,r){var e,i;if(void 0===r&&(r={}),d(n)&&n.error)return e=ut(tt(n=n.error));if(p(n)||(i=n,\"[object DOMException]\"===Object.prototype.toString.call(i))){var o=n,u=o.name||(p(o)?\"DOMError\":\"DOMException\"),c=o.message?u+\": \"+o.message:u;return C(e=st(c,t,r),c),e}return l(n)?e=ut(tt(n)):b(n)||w(n)?(M(e=function(n,t,r){var e={exception:{values:[{type:w(n)?n.constructor.name:r?\"UnhandledRejection\":\"Error\",value:\"Non-Error \"+(r?\"promise rejection\":\"exception\")+\" captured with keys: \"+tn(n)}]},extra:{__serialized__:Q(n)}};if(t){var i=ct(tt(t).stack);e.stacktrace={frames:i}}return e}(n,t,r.rejection),{synthetic:!0}),e):(C(e=st(n,t,r),\"\"+n,void 0),M(e,{synthetic:!0}),e)}function st(n,t,r){void 0===r&&(r={});var e={message:n};if(r.attachStacktrace&&t){var i=ct(tt(t).stack);e.stacktrace={frames:i}}return e}var ft=function(){function n(n){this.options=n,this.S=new en(30),this.url=new Ln(this.options.dsn).getStoreEndpointWithUrlEncodedAuth()}return n.prototype.sendEvent=function(n){throw new v(\"Transport Class has to implement `sendEvent` method\")},n.prototype.close=function(n){return this.S.drain(n)},n}(),ht=T(),vt=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.xn=new Date(Date.now()),n}return r(e,t),e.prototype.sendEvent=function(t){var r=this;if(new Date(Date.now())<this.xn)return Promise.reject({event:t,reason:\"Transport locked till \"+this.xn+\" due to too many requests.\",status:429});var e={body:JSON.stringify(t),method:\"POST\",referrerPolicy:cn()?\"origin\":\"\"};return void 0!==this.options.headers&&(e.headers=this.options.headers),this.S.add(new rn(function(t,i){ht.fetch(r.url,e).then(function(e){var o=n.Status.fromHttpCode(e.status);if(o!==n.Status.Success){if(o===n.Status.RateLimit){var u=Date.now();r.xn=new Date(u+H(u,e.headers.get(\"Retry-After\"))),G.warn(\"Too many requests, backing off till: \"+r.xn)}i(e)}else t({status:o})}).catch(i)}))},e}(ft),lt=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.xn=new Date(Date.now()),n}return r(e,t),e.prototype.sendEvent=function(t){var r=this;return new Date(Date.now())<this.xn?Promise.reject({event:t,reason:\"Transport locked till \"+this.xn+\" due to too many requests.\",status:429}):this.S.add(new rn(function(e,i){var o=new XMLHttpRequest;for(var u in o.onreadystatechange=function(){if(4===o.readyState){var t=n.Status.fromHttpCode(o.status);if(t!==n.Status.Success){if(t===n.Status.RateLimit){var u=Date.now();r.xn=new Date(u+H(u,o.getResponseHeader(\"Retry-After\"))),G.warn(\"Too many requests, backing off till: \"+r.xn)}i(o)}else e({status:t})}},o.open(\"POST\",r.url),r.options.headers)r.options.headers.hasOwnProperty(u)&&o.setRequestHeader(u,r.options.headers[u]);o.send(JSON.stringify(t))}))},e}(ft),dt=Object.freeze({BaseTransport:ft,FetchTransport:vt,XHRTransport:lt}),pt=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.ln=function(){if(!this.rn.dsn)return t.prototype.ln.call(this);var n=e({},this.rn.transportOptions,{dsn:this.rn.dsn});return this.rn.transport?new this.rn.transport(n):on()?new vt(n):new lt(n)},i.prototype.eventFromException=function(t,r){var e=at(t,r&&r.syntheticException||void 0,{attachStacktrace:this.rn.attachStacktrace});return M(e,{handled:!0,type:\"generic\"}),e.level=n.Severity.Error,r&&r.event_id&&(e.event_id=r.event_id),rn.resolve(e)},i.prototype.eventFromMessage=function(t,r,e){void 0===r&&(r=n.Severity.Info);var i=st(t,e&&e.syntheticException||void 0,{attachStacktrace:this.rn.attachStacktrace});return i.level=r,e&&e.event_id&&(i.event_id=e.event_id),rn.resolve(i)},i}(Bn),yt=\"sentry.javascript.browser\",mt=function(n){function t(t){return void 0===t&&(t={}),n.call(this,pt,t)||this}return r(t,n),t.prototype.an=function(t,r,i){return t.platform=t.platform||\"javascript\",t.sdk=e({},t.sdk,{name:yt,packages:u(t.sdk&&t.sdk.packages||[],[{name:\"npm:@sentry/browser\",version:\"5.12.1\"}]),version:\"5.12.1\"}),n.prototype.an.call(this,t,r,i)},t.prototype.showReportDialog=function(n){void 0===n&&(n={});var t=T().document;if(t)if(this.in()){var r=n.dsn||this.getDsn();if(n.eventId)if(r){var e=t.createElement(\"script\");e.async=!0,e.src=new Ln(r).getReportDialogEndpoint(n),n.onLoad&&(e.onload=n.onLoad),(t.head||t.body).appendChild(e)}else G.error(\"Missing `Dsn` option in showReportDialog call\");else G.error(\"Missing `eventId` option in showReportDialog call\")}else G.error(\"Trying to call showReportDialog with Sentry Client is disabled\")},t}(Wn),bt=0;function wt(){return bt>0}function gt(n,t,r){if(void 0===t&&(t={}),\"function\"!=typeof n)return n;try{if(n.__sentry__)return n;if(n.__sentry_wrapped__)return n.__sentry_wrapped__}catch(t){return n}var sentryWrapped=function(){var i=Array.prototype.slice.call(arguments);try{r&&\"function\"==typeof r&&r.apply(this,arguments);var o=i.map(function(n){return gt(n,t)});return n.handleEvent?n.handleEvent.apply(this,o):n.apply(this,o)}catch(n){throw bt+=1,setTimeout(function(){bt-=1}),qn(function(r){r.addEventProcessor(function(n){var r=e({},n);return t.mechanism&&(C(r,void 0,void 0),M(r,t.mechanism)),r.extra=e({},r.extra,{arguments:i}),r}),captureException(n)}),n}};try{for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(sentryWrapped[i]=n[i])}catch(n){}n.prototype=n.prototype||{},sentryWrapped.prototype=n.prototype,Object.defineProperty(n,\"__sentry_wrapped__\",{enumerable:!1,value:sentryWrapped}),Object.defineProperties(sentryWrapped,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:n}});try{Object.getOwnPropertyDescriptor(sentryWrapped,\"name\").configurable&&Object.defineProperty(sentryWrapped,\"name\",{get:function(){return n.name}})}catch(n){}return sentryWrapped}var Et=function(){function t(n){this.name=t.id,this.jn=T(),this.kn=null,this.Sn=null,this._n=!1,this.On=!1,this.rn=e({onerror:!0,onunhandledrejection:!0},n)}return t.prototype.setupOnce=function(){Error.stackTraceLimit=50,this.rn.onerror&&(G.log(\"Global Handler attached: onerror\"),this.Tn()),this.rn.onunhandledrejection&&(G.log(\"Global Handler attached: onunhandledrejection\"),this.Dn())},t.prototype.Tn=function(){if(!this._n){var n=this;this.kn=this.jn.onerror,this.jn.onerror=function(r,e,i,o,u){var c=In(),a=c.getIntegration(t),s=u&&!0===u.__sentry_own_request__;if(!a||wt()||s)return!!n.kn&&n.kn.apply(this,arguments);var f=c.getClient(),h=m(u)?n.Rn(r,e,i,o):n.Nn(at(u,void 0,{attachStacktrace:f&&f.getOptions().attachStacktrace,rejection:!1}),e,i,o);return M(h,{handled:!1,type:\"onerror\"}),c.captureEvent(h,{originalException:u}),!!n.kn&&n.kn.apply(this,arguments)},this._n=!0}},t.prototype.Dn=function(){if(!this.On){var r=this;this.Sn=this.jn.onunhandledrejection,this.jn.onunhandledrejection=function(e){var i=e;try{i=e&&\"reason\"in e?e.reason:e}catch(n){}var o=In(),u=o.getIntegration(t),c=i&&!0===i.__sentry_own_request__;if(!u||wt()||c)return!r.Sn||r.Sn.apply(this,arguments);var a=o.getClient(),s=m(i)?r.In(i):at(i,void 0,{attachStacktrace:a&&a.getOptions().attachStacktrace,rejection:!0});return s.level=n.Severity.Error,M(s,{handled:!1,type:\"onunhandledrejection\"}),o.captureEvent(s,{originalException:i}),!r.Sn||r.Sn.apply(this,arguments)},this.On=!0}},t.prototype.Rn=function(n,t,r,e){var i,o=d(n)?n.message:n;if(y(o)){var u=o.match(/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i);u&&(i=u[1],o=u[2])}var c={exception:{values:[{type:i||\"Error\",value:o}]}};return this.Nn(c,t,r,e)},t.prototype.In=function(n){return{exception:{values:[{type:\"UnhandledRejection\",value:\"Non-Error promise rejection captured with value: \"+n}]}}},t.prototype.Nn=function(n,t,r,e){n.exception=n.exception||{},n.exception.values=n.exception.values||[],n.exception.values[0]=n.exception.values[0]||{},n.exception.values[0].stacktrace=n.exception.values[0].stacktrace||{},n.exception.values[0].stacktrace.frames=n.exception.values[0].stacktrace.frames||[];var i=isNaN(parseInt(e,10))?void 0:e,o=isNaN(parseInt(r,10))?void 0:r,u=y(t)&&t.length>0?t:function(){try{return document.location.href}catch(n){return\"\"}}();return 0===n.exception.values[0].stacktrace.frames.length&&n.exception.values[0].stacktrace.frames.push({colno:i,filename:u,function:\"?\",in_app:!0,lineno:o}),n},t.id=\"GlobalHandlers\",t}(),xt=function(){function n(){this.Cn=0,this.name=n.id}return n.prototype.Mn=function(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=t[0];return t[0]=gt(e,{mechanism:{data:{function:F(n)},handled:!0,type:\"instrument\"}}),n.apply(this,t)}},n.prototype.An=function(n){return function(t){return n(gt(t,{mechanism:{data:{function:\"requestAnimationFrame\",handler:F(n)},handled:!0,type:\"instrument\"}}))}},n.prototype.Un=function(n){var t=T(),r=t[n]&&t[n].prototype;r&&r.hasOwnProperty&&r.hasOwnProperty(\"addEventListener\")&&(z(r,\"addEventListener\",function(t){return function(r,e,i){try{\"function\"==typeof e.handleEvent&&(e.handleEvent=gt(e.handleEvent.bind(e),{mechanism:{data:{function:\"handleEvent\",handler:F(e),target:n},handled:!0,type:\"instrument\"}}))}catch(n){}return t.call(this,r,gt(e,{mechanism:{data:{function:\"addEventListener\",handler:F(e),target:n},handled:!0,type:\"instrument\"}}),i)}}),z(r,\"removeEventListener\",function(n){return function(t,r,e){var i=r;try{i=i&&(i.__sentry_wrapped__||i)}catch(n){}return n.call(this,t,i,e)}}))},n.prototype.qn=function(n){return function(){for(var t=this,r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return[\"onload\",\"onerror\",\"onprogress\"].forEach(function(n){n in t&&\"function\"==typeof t[n]&&z(t,n,function(t){return gt(t,{mechanism:{data:{function:n,handler:F(t)},handled:!0,type:\"instrument\"}})})}),\"onreadystatechange\"in this&&\"function\"==typeof this.onreadystatechange&&z(this,\"onreadystatechange\",function(n){var t={mechanism:{data:{function:\"onreadystatechange\",handler:F(n)},handled:!0,type:\"instrument\"}};return n.__sentry_original__&&(t.mechanism.data.handler=F(n.__sentry_original__)),gt(n,t)}),n.apply(this,r)}},n.prototype.setupOnce=function(){this.Cn=this.Cn;var n=T();z(n,\"setTimeout\",this.Mn.bind(this)),z(n,\"setInterval\",this.Mn.bind(this)),z(n,\"requestAnimationFrame\",this.An.bind(this)),\"XMLHttpRequest\"in n&&z(XMLHttpRequest.prototype,\"send\",this.qn.bind(this)),[\"EventTarget\",\"Window\",\"Node\",\"ApplicationCache\",\"AudioTrackList\",\"ChannelMergerNode\",\"CryptoOperation\",\"EventSource\",\"FileReader\",\"HTMLUnknownElement\",\"IDBDatabase\",\"IDBRequest\",\"IDBTransaction\",\"KeyOperation\",\"MediaController\",\"MessagePort\",\"ModalWindow\",\"Notification\",\"SVGElementInstance\",\"Screen\",\"TextTrack\",\"TextTrackCue\",\"TextTrackList\",\"WebSocket\",\"WebSocketWorker\",\"Worker\",\"XMLHttpRequest\",\"XMLHttpRequestEventTarget\",\"XMLHttpRequestUpload\"].forEach(this.Un.bind(this))},n.id=\"TryCatch\",n}(),jt=function(){function t(n){this.name=t.id,this.rn=e({console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0},n)}return t.prototype.Ln=function(t){var r={category:\"console\",data:{arguments:t.args,logger:\"console\"},level:n.Severity.fromString(t.level),message:k(t.args,\" \")};if(\"assert\"===t.level){if(!1!==t.args[0])return;r.message=\"Assertion failed: \"+(k(t.args.slice(1),\" \")||\"console.assert\"),r.data.arguments=t.args.slice(1)}In().addBreadcrumb(r,{input:t.args,level:t.level})},t.prototype.Hn=function(n){var t;try{t=n.event.target?A(n.event.target):A(n.event)}catch(n){t=\"<unknown>\"}0!==t.length&&In().addBreadcrumb({category:\"ui.\"+n.name,message:t},{event:event,name:n.name})},t.prototype.Pn=function(n){if(n.endTimestamp){if(n.xhr.__sentry_own_request__)return;In().addBreadcrumb({category:\"xhr\",data:n.xhr.__sentry_xhr__,type:\"http\"},{xhr:n.xhr})}else n.xhr.__sentry_own_request__&&kt(n.args[0])},t.prototype.Fn=function(t){if(t.endTimestamp){var r=In().getClient(),i=r&&r.getDsn();if(i){var o=new Ln(i).getStoreEndpoint();if(o&&-1!==t.fetchData.url.indexOf(o)&&\"POST\"===t.fetchData.method&&t.args[1]&&t.args[1].body)return void kt(t.args[1].body)}t.error?In().addBreadcrumb({category:\"fetch\",data:e({},t.fetchData,{status_code:t.response.status}),level:n.Severity.Error,type:\"http\"},{data:t.error,input:t.args}):In().addBreadcrumb({category:\"fetch\",data:e({},t.fetchData,{status_code:t.response.status}),type:\"http\"},{input:t.args,response:t.response})}},t.prototype.Wn=function(n){var t=T(),r=n.from,e=n.to,i=R(t.location.href),o=R(r),u=R(e);o.path||(o=i),i.protocol===u.protocol&&i.host===u.host&&(e=u.relative),i.protocol===o.protocol&&i.host===o.host&&(r=o.relative),In().addBreadcrumb({category:\"navigation\",data:{from:r,to:e}})},t.prototype.setupOnce=function(){var n=this;this.rn.console&&ln({callback:function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n.Ln.apply(n,u(t))},type:\"console\"}),this.rn.dom&&ln({callback:function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n.Hn.apply(n,u(t))},type:\"dom\"}),this.rn.xhr&&ln({callback:function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n.Pn.apply(n,u(t))},type:\"xhr\"}),this.rn.fetch&&ln({callback:function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n.Fn.apply(n,u(t))},type:\"fetch\"}),this.rn.history&&ln({callback:function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n.Wn.apply(n,u(t))},type:\"history\"})},t.id=\"Breadcrumbs\",t}();function kt(t){try{var r=JSON.parse(t);In().addBreadcrumb({category:\"sentry\",event_id:r.event_id,level:r.level||n.Severity.fromString(\"error\"),message:N(r)},{event:r})}catch(n){G.error(\"Error while adding sentry type breadcrumb\")}}var St=\"cause\",_t=5,Ot=function(){function n(t){void 0===t&&(t={}),this.name=n.id,this.Xn=t.key||St,this.k=t.limit||_t}return n.prototype.setupOnce=function(){On(function(t,r){var e=In().getIntegration(n);return e?e.Bn(t,r):t})},n.prototype.Bn=function(n,t){if(!(n.exception&&n.exception.values&&t&&x(t.originalException,Error)))return n;var r=this.$n(t.originalException,this.Xn);return n.exception.values=u(r,n.exception.values),n},n.prototype.$n=function(n,t,r){if(void 0===r&&(r=[]),!x(n[t],Error)||r.length+1>=this.k)return r;var e=ot(tt(n[t]));return this.$n(n[t],t,u([e],r))},n.id=\"LinkedErrors\",n}(),Tt=T(),Dt=function(){function n(){this.name=n.id}return n.prototype.setupOnce=function(){On(function(t){if(In().getIntegration(n)){if(!Tt.navigator||!Tt.location)return t;var r=t.request||{};return r.url=r.url||Tt.location.href,r.headers=r.headers||{},r.headers[\"User-Agent\"]=Tt.navigator.userAgent,e({},t,{request:r})}return t})},n.id=\"UserAgent\",n}(),Rt=Object.freeze({GlobalHandlers:Et,TryCatch:xt,Breadcrumbs:jt,LinkedErrors:Ot,UserAgent:Dt}),Nt=[new Jn,new $n,new xt,new jt,new Et,new Ot,new Dt];var It={},Ct=T();Ct.Sentry&&Ct.Sentry.Integrations&&(It=Ct.Sentry.Integrations);var Mt=e({},It,zn,Rt);return n.BrowserClient=mt,n.Hub=Dn,n.Integrations=Mt,n.SDK_NAME=yt,n.SDK_VERSION=\"5.12.1\",n.Scope=Sn,n.Transports=dt,n.addBreadcrumb=function(n){Un(\"addBreadcrumb\",n)},n.addGlobalEventProcessor=On,n.captureEvent=function(n){return Un(\"captureEvent\",n)},n.captureException=captureException,n.captureMessage=function(n,t){var r;try{throw new Error(n)}catch(n){r=n}return Un(\"captureMessage\",n,t,{originalException:n,syntheticException:r})},n.close=function(n){var t=In().getClient();return t?t.close(n):rn.reject(!1)},n.configureScope=function(n){Un(\"configureScope\",n)},n.defaultIntegrations=Nt,n.flush=function(n){var t=In().getClient();return t?t.flush(n):rn.reject(!1)},n.forceLoad=function(){},n.getCurrentHub=In,n.getHubFromCarrier=Mn,n.init=function(n){if(void 0===n&&(n={}),void 0===n.defaultIntegrations&&(n.defaultIntegrations=Nt),void 0===n.release){var t=T();t.SENTRY_RELEASE&&t.SENTRY_RELEASE.id&&(n.release=t.SENTRY_RELEASE.id)}!function(n,t){!0===t.debug&&G.enable(),In().bindClient(new n(t))}(mt,n)},n.lastEventId=function(){return In().lastEventId()},n.onLoad=function(n){n()},n.setContext=function(n,t){Un(\"setContext\",n,t)},n.setExtra=function(n,t){Un(\"setExtra\",n,t)},n.setExtras=function(n){Un(\"setExtras\",n)},n.setTag=function(n,t){Un(\"setTag\",n,t)},n.setTags=function(n){Un(\"setTags\",n)},n.setUser=function(n){Un(\"setUser\",n)},n.showReportDialog=function(n){void 0===n&&(n={}),n.eventId||(n.eventId=In().lastEventId());var t=In().getClient();t&&t.showReportDialog(n)},n.withScope=qn,n.wrap=function(n){return gt(n)()},n}({});\n//# sourceMappingURL=bundle.min.js.map\n"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 17453
        },
        "cache": {},
        "timings": {
          "blocked": 1.8019999357908965,
          "dns": 0.016000000000000014,
          "ssl": 50.448,
          "connect": 95.148,
          "send": 0.25900000000000034,
          "wait": 50.68500000026822,
          "receive": 50.36400002427399,
          "_blocked_queueing": 0.7559999357908964
        },
        "serverIPAddress": "151.101.194.217",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 110109
              },
              {
                "functionName": "l.run",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 23003
              },
              {
                "functionName": "u",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 22507
              }
            ],
            "parent": {
              "description": "setTimeout",
              "callFrames": [
                {
                  "functionName": "a",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 21970
                },
                {
                  "functionName": "f.nextTick",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 22961
                },
                {
                  "functionName": "o",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 110034
                },
                {
                  "functionName": "n.load",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 7854
                },
                {
                  "functionName": "s.initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 71666
                },
                {
                  "functionName": "initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 8384
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 2212
                },
                {
                  "functionName": "l",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 2,
                  "columnNumber": 4485
                },
                {
                  "functionName": "c",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 2,
                  "columnNumber": 4544
                },
                {
                  "functionName": "o.init.o.initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 1940
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 24224
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 3961
                },
                {
                  "functionName": "3../analytics",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 4523
                },
                {
                  "functionName": "i",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 340
                },
                {
                  "functionName": "e",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 498
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 526
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 12,
                  "columnNumber": 9093
                }
              ]
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949668",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:17.891Z",
        "time": 173.4390000347048,
        "request": {
          "method": "GET",
          "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.mouseflow.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "_ga=GA1.2.331787608.1583496342; mf_user=d3b2bed5c1df865d489c85ec092c35bd|; mf_44f25a56-ad10-441b-86a8-109c4c24975c=03e1f8b20320b93fe513b47ec813a34c|0306427866553edde70e189cb4c121670aef90fd.-6320929663.1583496342677|1583496661665||1|||0|17.07|5"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "_ga",
              "value": "GA1.2.331787608.1583496342",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "d3b2bed5c1df865d489c85ec092c35bd|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_44f25a56-ad10-441b-86a8-109c4c24975c",
              "value": "03e1f8b20320b93fe513b47ec813a34c|0306427866553edde70e189cb4c121670aef90fd.-6320929663.1583496342677|1583496661665||1|||0|17.07|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:17 GMT"
            },
            {
              "name": "content-type",
              "value": "application/javascript; charset=utf-8"
            },
            {
              "name": "last-modified",
              "value": "Sun, 08 Mar 2020 08:35:35 GMT"
            },
            {
              "name": "etag",
              "value": "W/\"d7f1978924f5d51:0\""
            },
            {
              "name": "server",
              "value": "NetDNA-cache/2.2"
            },
            {
              "name": "cache-control",
              "value": "max-age=86400"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "x-cache",
              "value": "HIT"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 190161,
            "mimeType": "application/javascript",
            "text": "var mouseflowHtmlDelay = 5000;if(typeof mouseflow==='undefined'&&typeof mouseflowPlayback==='undefined'){(function(){function _687(_1,_108,_14,_7,_157,_16,_314,_127,_368,_189){var _153='https://n2.mouseflow.com/';var _119='https://app.mouseflow.com';var _53='31314d44-ad1b-4756-8b63-9284fb1ec469';var _347=100.00000;var _76=[];var _667=[];var _253=[\"workstation.theorchard.com\",\"www.workstation.theorchard.com\"];var _238=[];var _242=[];var _654=false;var _831=false;var _201='17.08';var _390=false;var _649=false;var _93=false;var _190=false;var _645=/\\[(\\d+)\\]_mf$/;var _9=_1.document;var _97=_1.location;_686();var _12=_710();var _0=_537();var _67={_480:100,_657:250,_676:10000,_505:1336,_394:1800000,_811:3600000,_840:7776000000,_869:100,_841:2000,_587:8000,_351:2048};var _380,_382,_391,_214,_205,_218,_417,_275,_445,_335=[],_336=[];var _5={_271:0,_268:1,_283:2,_270:3,_285:4,_282:5,_281:6,_172:7,_339:8,_280:9,_239:10,_514:11,_511:12,_286:13,_378:14,_88:15,_924:16,_919:17,_81:18,_364:19,_716:20,_341:21,_342:22,_272:23,_343:24,_344:25,_345:26,_346:27,_330:28,_490:29,_328:30,_489:31,_321:32,_274:33,_522:34,_198:35,_509:36,_508:37,_54:38,_334:39,_880:40,_203:41,_61:42};var _90={_530:{_21:'bounce',_3:2,_45:1},_909:{_21:'click-rage',_3:5,_45:2},_486:{_21:'click-error',_3:2,_45:3},_463:{_21:'mobility',_3:3,_45:4},_172:{_21:'mouse-out',_3:1,_45:5},_536:{_21:'speed-browsing',_3:1,_45:6},_198:{_21:'submit-failure',_3:3,_45:7}};function _686(){if(!_1._mfq)_1._mfq=[];for(var _64=0;_64<_1._mfq.length;_64++){var _49=_1._mfq[_64];if(_49&&_49.length&&_49[0]==='config')_14._594.apply(_14,_49.slice(1))}}function _383(_312){if(!_312)_312=[];for(var _64=0;_64<_312.length;_64++)this.push(_312[_64])}_383.prototype.push=function(_49){if(_49){if(typeof _49==='object'&&_49.length){var _465=_49.splice(0,1);if(mouseflow[_465])mouseflow[_465].apply(mouseflow,_49)}else if(typeof _49==='function')_49(mouseflow)}};\n    // Copyright 2011 Google Inc.\n    //\n    // Licensed under the Apache License, Version 2.0 (the \"License\");\n    // you may not use this file except in compliance with the License.\n    // You may obtain a copy of the License at\n    //\n    //     http://www.apache.org/licenses/LICENSE-2.0\n    //\n    // Unless required by applicable law or agreed to in writing, software\n    // distributed under the License is distributed on an \"AS IS\" BASIS,\n    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    // See the License for the specific language governing permissions and\n    // limitations under the License.\n    //\n    // This component contains modifications carried out by Mouseflow ApS.\n    var __extends=this.__extends||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p];function __(){this.constructor=d}__.prototype=b.prototype;d.prototype=new __()};var MutationObserverCtor;if(typeof WebKitMutationObserver!=='undefined')MutationObserverCtor=WebKitMutationObserver;else if(typeof MutationObserver!=='undefined')MutationObserverCtor=MutationObserver;if(MutationObserverCtor===undefined){_8('DOM Mutation Observers not supported.')}var NodeMap=(function(){function NodeMap(){this.nodes=[];this.values=[]}NodeMap.prototype.isIndex=function(s){return+s===s>>>0};NodeMap.prototype.nodeId=function(node){var id=node[NodeMap.ID_PROP];if(!id)id=node[NodeMap.ID_PROP]=NodeMap.nextId_++;return id};NodeMap.prototype.set=function(node,value){var id=this.nodeId(node);this.nodes[id]=node;this.values[id]=value};NodeMap.prototype.get=function(node){var id=this.nodeId(node);return this.values[id]};NodeMap.prototype.has=function(node){return this.nodeId(node)in this.nodes};NodeMap.prototype.deleteNode=function(node){var id=this.nodeId(node);delete this.nodes[id];this.values[id]=undefined};NodeMap.prototype.keys=function(){var nodes=[];for(var id in this.nodes){if(!this.isIndex(id))continue;nodes.push(this.nodes[id])}return nodes};NodeMap.ID_PROP='__mouseflow_node_map_id__';NodeMap.nextId_=1;return NodeMap})();var Movement;(function(Movement){Movement[Movement['STAYED_OUT']=0]='STAYED_OUT';Movement[Movement['ENTERED']=1]='ENTERED';Movement[Movement['STAYED_IN']=2]='STAYED_IN';Movement[Movement['REPARENTED']=3]='REPARENTED';Movement[Movement['REORDERED']=4]='REORDERED';Movement[Movement['EXITED']=5]='EXITED'})(Movement||(Movement={}));function enteredOrExited(changeType){return changeType===Movement.ENTERED||changeType===Movement.EXITED}var NodeChange=(function(){function NodeChange(node,childList,attributes,characterData,oldParentNode,added,attributeOldValues,characterDataOldValue){if(childList===void 0){childList=false}if(attributes===void 0){attributes=false}if(characterData===void 0){characterData=false}if(oldParentNode===void 0){oldParentNode=null}if(added===void 0){added=false}if(attributeOldValues===void 0){attributeOldValues=null}if(characterDataOldValue===void 0){characterDataOldValue=null}this.node=node;this.childList=childList;this.attributes=attributes;this.characterData=characterData;this.oldParentNode=oldParentNode;this.added=added;this.attributeOldValues=attributeOldValues;this.characterDataOldValue=characterDataOldValue;this.isCaseInsensitive=this.node.nodeType===1&&this.node instanceof HTMLElement&&typeof(HTMLDocument)!=='undefined'&&this.node.ownerDocument instanceof HTMLDocument}NodeChange.prototype.getAttributeOldValue=function(name){if(!this.attributeOldValues)return undefined;if(this.isCaseInsensitive)name=name.toLowerCase();return this.attributeOldValues[name]};NodeChange.prototype.getAttributeNamesMutated=function(){var names=[];if(!this.attributeOldValues)return names;for(var name in this.attributeOldValues){names.push(name)}return names};NodeChange.prototype.attributeMutated=function(name,oldValue){this.attributes=true;this.attributeOldValues=this.attributeOldValues||{};if(name in this.attributeOldValues)return;this.attributeOldValues[name]=oldValue};NodeChange.prototype.characterDataMutated=function(oldValue){if(this.characterData)return;this.characterData=true;this.characterDataOldValue=oldValue};NodeChange.prototype.removedFromParent=function(parent){this.childList=true;if(this.added||this.oldParentNode)this.added=false;else this.oldParentNode=parent};NodeChange.prototype.insertedIntoParent=function(){this.childList=true;this.added=true};NodeChange.prototype.getOldParent=function(){if(this.childList){if(this.oldParentNode)return this.oldParentNode;if(this.added)return null}return this.node.parentNode};return NodeChange})();var ChildListChange=(function(){function ChildListChange(){this.added=new NodeMap();this.removed=new NodeMap();this.maybeMoved=new NodeMap();this.oldPrevious=new NodeMap();this.moved=undefined}return ChildListChange})();var TreeChanges=(function(_466){__extends(TreeChanges,_466);function TreeChanges(rootNode,mutations){_466.call(this);this.rootNode=rootNode;this.reachableCache=undefined;this.wasReachableCache=undefined;this.anyParentsChanged=false;this.anyAttributesChanged=false;this.anyCharacterDataChanged=false;for(var m=0;m<mutations.length;m++){var mutation=mutations[m];switch(mutation.type){case'childList':this.anyParentsChanged=true;for(var i=0;i<mutation.removedNodes.length;i++){var node=mutation.removedNodes[i];this.getChange(node).removedFromParent(mutation.target)}for(var i=0;i<mutation.addedNodes.length;i++){var node=mutation.addedNodes[i];this.getChange(node).insertedIntoParent()}break;case'attributes':this.anyAttributesChanged=true;var change=this.getChange(mutation.target);change.attributeMutated(mutation.attributeName,mutation.oldValue);break;case'characterData':this.anyCharacterDataChanged=true;var change=this.getChange(mutation.target);change.characterDataMutated(mutation.oldValue);break}}}TreeChanges.prototype.getChange=function(node){var change=this.get(node);if(!change){change=new NodeChange(node);this.set(node,change)}return change};TreeChanges.prototype.getOldParent=function(node){var change=this.get(node);return change?change.getOldParent():node.parentNode};TreeChanges.prototype.getIsReachable=function(node){if(node===this.rootNode)return true;if(!node)return false;this.reachableCache=this.reachableCache||new NodeMap();var isReachable=this.reachableCache.get(node);if(isReachable===undefined){isReachable=this.getIsReachable(node.parentNode);this.reachableCache.set(node,isReachable)}return isReachable};TreeChanges.prototype.getWasReachable=function(node){if(node===this.rootNode)return true;if(!node)return false;this.wasReachableCache=this.wasReachableCache||new NodeMap();var wasReachable=this.wasReachableCache.get(node);if(wasReachable===undefined){wasReachable=this.getWasReachable(this.getOldParent(node));this.wasReachableCache.set(node,wasReachable)}return wasReachable};TreeChanges.prototype.reachabilityChange=function(node){if(this.getIsReachable(node)){return this.getWasReachable(node)?Movement.STAYED_IN:Movement.ENTERED}return this.getWasReachable(node)?Movement.EXITED:Movement.STAYED_OUT};return TreeChanges})(NodeMap);var MutationProjection=(function(){function MutationProjection(rootNode,mutations,selectors,calcReordered,calcOldPreviousSibling){this.rootNode=rootNode;this.mutations=mutations;this.selectors=selectors;this.calcReordered=calcReordered;this.calcOldPreviousSibling=calcOldPreviousSibling;this.treeChanges=new TreeChanges(rootNode,mutations);this.entered=[];this.exited=[];this.stayedIn=new NodeMap();this.visited=new NodeMap();this.childListChangeMap=undefined;this.characterDataOnly=undefined;this.matchCache=undefined;this.processMutations()}MutationProjection.prototype.processMutations=function(){if(!this.treeChanges.anyParentsChanged&&!this.treeChanges.anyAttributesChanged)return;var changedNodes=this.treeChanges.keys();for(var i=0;i<changedNodes.length;i++){this.visitNode(changedNodes[i],undefined)}};MutationProjection.prototype.visitNode=function(node,parentReachable){if(this.visited.has(node))return;this.visited.set(node,true);var change=this.treeChanges.get(node);var reachable=parentReachable;if((change&&change.childList)||reachable==undefined)reachable=this.treeChanges.reachabilityChange(node);if(reachable===Movement.STAYED_OUT)return;this.matchabilityChange(node);if(reachable===Movement.ENTERED){this.entered.push(node)}else if(reachable===Movement.EXITED){this.exited.push(node);this.ensureHasOldPreviousSiblingIfNeeded(node)}else if(reachable===Movement.STAYED_IN){var movement=Movement.STAYED_IN;if(change&&change.childList){if(change.oldParentNode!==node.parentNode){movement=Movement.REPARENTED;this.ensureHasOldPreviousSiblingIfNeeded(node)}else if(this.calcReordered&&this.wasReordered(node)){movement=Movement.REORDERED}}this.stayedIn.set(node,movement)}if(reachable===Movement.STAYED_IN)return;for(var child=node.firstChild;child;child=child.nextSibling){this.visitNode(child,reachable)}};MutationProjection.prototype.ensureHasOldPreviousSiblingIfNeeded=function(node){if(!this.calcOldPreviousSibling)return;this.processChildlistChanges();var parentNode=node.parentNode;var nodeChange=this.treeChanges.get(node);if(nodeChange&&nodeChange.oldParentNode)parentNode=nodeChange.oldParentNode;var change=this.childListChangeMap.get(parentNode);if(!change){change=new ChildListChange();this.childListChangeMap.set(parentNode,change)}if(!change.oldPrevious.has(node)){change.oldPrevious.set(node,node.previousSibling)}};MutationProjection.prototype.getChanged=function(summary,selectors,characterDataOnly){this.selectors=selectors;this.characterDataOnly=characterDataOnly;for(var i=0;i<this.entered.length;i++){var node=this.entered[i];var matchable=this.matchabilityChange(node);if(matchable===Movement.ENTERED||matchable===Movement.STAYED_IN)summary.added.push(node)}var stayedInNodes=this.stayedIn.keys();for(var i=0;i<stayedInNodes.length;i++){var node=stayedInNodes[i];var matchable=this.matchabilityChange(node);if(matchable===Movement.ENTERED){summary.added.push(node)}else if(matchable===Movement.EXITED){summary.removed.push(node)}else if(matchable===Movement.STAYED_IN&&(summary.reparented||summary.reordered)){var movement=this.stayedIn.get(node);if(summary.reparented&&movement===Movement.REPARENTED)summary.reparented.push(node);else if(summary.reordered&&movement===Movement.REORDERED)summary.reordered.push(node)}}for(var i=0;i<this.exited.length;i++){var node=this.exited[i];var matchable=this.matchabilityChange(node);if(matchable===Movement.EXITED||matchable===Movement.STAYED_IN)summary.removed.push(node)}};MutationProjection.prototype.getOldParentNode=function(node){var change=this.treeChanges.get(node);if(change&&change.childList)return change.oldParentNode?change.oldParentNode:null;var reachabilityChange=this.treeChanges.reachabilityChange(node);if(reachabilityChange===Movement.STAYED_OUT||reachabilityChange===Movement.ENTERED)throw Error('getOldParentNode requested on invalid node.');return node.parentNode};MutationProjection.prototype.getOldPreviousSibling=function(node){var parentNode=node.parentNode;var nodeChange=this.treeChanges.get(node);if(nodeChange&&nodeChange.oldParentNode)parentNode=nodeChange.oldParentNode;var change=this.childListChangeMap.get(parentNode);if(!change)throw Error('getOldPreviousSibling requested on invalid node.');return change.oldPrevious.get(node)};MutationProjection.prototype.getOldAttribute=function(element,attrName){var change=this.treeChanges.get(element);if(!change||!change.attributes)throw Error('getOldAttribute requested on invalid node.');var value=change.getAttributeOldValue(attrName);if(value===undefined)throw Error('getOldAttribute requested for unchanged attribute name.');return value};MutationProjection.prototype.attributeChangedNodes=function(includeAttributes){if(!this.treeChanges.anyAttributesChanged)return{};var attributeFilter;var caseInsensitiveFilter;if(includeAttributes){attributeFilter={};caseInsensitiveFilter={};for(var i=0;i<includeAttributes.length;i++){var attrName=includeAttributes[i];attributeFilter[attrName]=true;caseInsensitiveFilter[attrName.toLowerCase()]=attrName}}var result={};var nodes=this.treeChanges.keys();for(var i=0;i<nodes.length;i++){var node=nodes[i];var change=this.treeChanges.get(node);if(!change.attributes)continue;if(Movement.STAYED_IN!==this.treeChanges.reachabilityChange(node)||Movement.STAYED_IN!==this.matchabilityChange(node)){continue}var element=node;var changedAttrNames=change.getAttributeNamesMutated();for(var j=0;j<changedAttrNames.length;j++){var attrName=changedAttrNames[j];if(attributeFilter&&!attributeFilter[attrName]&&!(change.isCaseInsensitive&&caseInsensitiveFilter[attrName])){continue}var oldValue=change.getAttributeOldValue(attrName);if(oldValue===element.getAttribute(attrName))continue;if(caseInsensitiveFilter&&change.isCaseInsensitive)attrName=caseInsensitiveFilter[attrName];result[attrName]=result[attrName]||[];result[attrName].push(element)}}return result};MutationProjection.prototype.getOldCharacterData=function(node){var change=this.treeChanges.get(node);if(!change||!change.characterData)throw Error('getOldCharacterData requested on invalid node.');return change.characterDataOldValue};MutationProjection.prototype.getCharacterDataChanged=function(){if(!this.treeChanges.anyCharacterDataChanged)return[];var nodes=this.treeChanges.keys();var result=[];for(var i=0;i<nodes.length;i++){var target=nodes[i];if(Movement.STAYED_IN!==this.treeChanges.reachabilityChange(target))continue;var change=this.treeChanges.get(target);if(!change.characterData||target.textContent==change.characterDataOldValue)continue;result.push(target)}return result};MutationProjection.prototype.computeMatchabilityChange=function(selector,el){if(!this.matchCache)this.matchCache=[];if(!this.matchCache[selector.uid])this.matchCache[selector.uid]=new NodeMap();var cache=this.matchCache[selector.uid];var result=cache.get(el);if(result===undefined){result=selector.matchabilityChange(el,this.treeChanges.get(el));cache.set(el,result)}return result};MutationProjection.prototype.matchabilityChange=function(node){var _57=this;if(this.characterDataOnly){switch(node.nodeType){case 8:case 3:return Movement.STAYED_IN;default:return Movement.STAYED_OUT}}if(!this.selectors)return Movement.STAYED_IN;if(node.nodeType!==1)return Movement.STAYED_OUT;var el=node;var matchChanges=this.selectors.map(function(selector){return _57.computeMatchabilityChange(selector,el)});var accum=Movement.STAYED_OUT;var i=0;while(accum!==Movement.STAYED_IN&&i<matchChanges.length){switch(matchChanges[i]){case Movement.STAYED_IN:accum=Movement.STAYED_IN;break;case Movement.ENTERED:if(accum===Movement.EXITED)accum=Movement.STAYED_IN;else accum=Movement.ENTERED;break;case Movement.EXITED:if(accum===Movement.ENTERED)accum=Movement.STAYED_IN;else accum=Movement.EXITED;break}i++}return accum};MutationProjection.prototype.getChildlistChange=function(el){var change=this.childListChangeMap.get(el);if(!change){change=new ChildListChange();this.childListChangeMap.set(el,change)}return change};MutationProjection.prototype.processChildlistChanges=function(){if(this.childListChangeMap)return;this.childListChangeMap=new NodeMap();for(var i=0;i<this.mutations.length;i++){var mutation=this.mutations[i];if(mutation.type!='childList')continue;if(this.treeChanges.reachabilityChange(mutation.target)!==Movement.STAYED_IN&&!this.calcOldPreviousSibling)continue;var change=this.getChildlistChange(mutation.target);var oldPrevious=mutation.previousSibling;function recordOldPrevious(node,previous){if(!node||change.oldPrevious.has(node)||change.added.has(node)||change.maybeMoved.has(node))return;if(previous&&(change.added.has(previous)||change.maybeMoved.has(previous)))return;change.oldPrevious.set(node,previous)}for(var j=0;j<mutation.removedNodes.length;j++){var node=mutation.removedNodes[j];recordOldPrevious(node,oldPrevious);if(change.added.has(node)){change.added.deleteNode(node)}else{change.removed.set(node,true);change.maybeMoved.deleteNode(node)}oldPrevious=node}recordOldPrevious(mutation.nextSibling,oldPrevious);for(var j=0;j<mutation.addedNodes.length;j++){var node=mutation.addedNodes[j];if(change.removed.has(node)){change.removed.deleteNode(node);change.maybeMoved.set(node,true)}else{change.added.set(node,true)}}}};MutationProjection.prototype.wasReordered=function(node){if(!this.treeChanges.anyParentsChanged)return false;this.processChildlistChanges();var parentNode=node.parentNode;var nodeChange=this.treeChanges.get(node);if(nodeChange&&nodeChange.oldParentNode)parentNode=nodeChange.oldParentNode;var change=this.childListChangeMap.get(parentNode);if(!change)return false;if(change.moved)return change.moved.get(node);change.moved=new NodeMap();var pendingMoveDecision=new NodeMap();function isMoved(node){if(!node)return false;if(!change.maybeMoved.has(node))return false;var didMove=change.moved.get(node);if(didMove!==undefined)return didMove;if(pendingMoveDecision.has(node)){didMove=true}else{pendingMoveDecision.set(node,true);didMove=getPrevious(node)!==getOldPrevious(node)}if(pendingMoveDecision.has(node)){pendingMoveDecision.deleteNode(node);change.moved.set(node,didMove)}else{didMove=change.moved.get(node)}return didMove}var oldPreviousCache=new NodeMap();function getOldPrevious(node){var oldPrevious=oldPreviousCache.get(node);if(oldPrevious!==undefined)return oldPrevious;oldPrevious=change.oldPrevious.get(node);while(oldPrevious&&(change.removed.has(oldPrevious)||isMoved(oldPrevious))){oldPrevious=getOldPrevious(oldPrevious)}if(oldPrevious===undefined)oldPrevious=node.previousSibling;oldPreviousCache.set(node,oldPrevious);return oldPrevious}var previousCache=new NodeMap();function getPrevious(node){if(previousCache.has(node))return previousCache.get(node);var previous=node.previousSibling;while(previous&&(change.added.has(previous)||isMoved(previous)))previous=previous.previousSibling;previousCache.set(node,previous);return previous}change.maybeMoved.keys().forEach(isMoved);return change.moved.get(node)};return MutationProjection})();var Summary=(function(){function Summary(projection,query){var _57=this;this.projection=projection;this.added=[];this.removed=[];this.reparented=query.all||query.element||query.characterData?[]:undefined;this.reordered=query.all?[]:undefined;projection.getChanged(this,query.elementFilter,query.characterData);if(query.all||query.attribute||query.attributeList){var filter=query.attribute?[query.attribute]:query.attributeList;var attributeChanged=projection.attributeChangedNodes(filter);if(query.attribute){this.valueChanged=attributeChanged[query.attribute]||[]}else{this.attributeChanged=attributeChanged;if(query.attributeList){query.attributeList.forEach(function(attrName){if(!_57.attributeChanged.hasOwnProperty(attrName))_57.attributeChanged[attrName]=[]})}}}if(query.all||query.characterData){var characterDataChanged=projection.getCharacterDataChanged();if(query.characterData)this.valueChanged=characterDataChanged;else this.characterDataChanged=characterDataChanged}if(this.reordered)this.getOldPreviousSibling=projection.getOldPreviousSibling.bind(projection)}Summary.prototype.getOldParentNode=function(node){return this.projection.getOldParentNode(node)};Summary.prototype.getOldAttribute=function(node,name){return this.projection.getOldAttribute(node,name)};Summary.prototype.getOldCharacterData=function(node){return this.projection.getOldCharacterData(node)};Summary.prototype.getOldPreviousSibling=function(node){return this.projection.getOldPreviousSibling(node)};return Summary})();var validNameInitialChar=/[a-zA-Z_]+/;var validNameNonInitialChar=/[a-zA-Z0-9_\\-]+/;function escapeQuotes(value){return'\"'+value.replace(/\"/,'\\\\\\\"')+'\"'}var Qualifier=(function(){function Qualifier(){}Qualifier.prototype.matches=function(oldValue){if(oldValue===null)return false;if(this.attrValue===undefined)return true;if(!this.contains)return this.attrValue==oldValue;var tokens=oldValue.split(' ');for(var i=0;i<tokens.length;i++){if(this.attrValue===tokens[i])return true}return false};Qualifier.prototype.toString=function(){if(this.attrName==='class'&&this.contains)return'.'+this.attrValue;if(this.attrName==='id'&&!this.contains)return'#'+this.attrValue;if(this.contains)return'['+this.attrName+'~='+escapeQuotes(this.attrValue)+']';if('attrValue'in this)return'['+this.attrName+'='+escapeQuotes(this.attrValue)+']';return'['+this.attrName+']'};return Qualifier})();var Selector=(function(){function Selector(){this.uid=Selector.nextUid++;this.qualifiers=[]}try{Object.defineProperty(Selector.prototype,'caseInsensitiveTagName',{get:function(){return this.tagName.toUpperCase()},enumerable:true,configurable:true});Object.defineProperty(Selector.prototype,'selectorString',{get:function(){return this.tagName+this.qualifiers.join('')},enumerable:true,configurable:true})}catch(e){};Selector.prototype.isMatching=function(el){return el[Selector.matchesSelector](this.selectorString)};Selector.prototype.wasMatching=function(el,change,isMatching){if(!change||!change.attributes)return isMatching;var tagName=change.isCaseInsensitive?this.caseInsensitiveTagName:this.tagName;if(tagName!=='*'&&tagName!==el.tagName)return false;var attributeOldValues=[];var anyChanged=false;for(var i=0;i<this.qualifiers.length;i++){var qualifier=this.qualifiers[i];var oldValue=change.getAttributeOldValue(qualifier.attrName);attributeOldValues.push(oldValue);anyChanged=anyChanged||(oldValue!==undefined)}if(!anyChanged)return isMatching;for(var i=0;i<this.qualifiers.length;i++){var qualifier=this.qualifiers[i];var oldValue=attributeOldValues[i];if(oldValue===undefined)oldValue=el.getAttribute(qualifier.attrName);if(!qualifier.matches(oldValue))return false}return true};Selector.prototype.matchabilityChange=function(el,change){var isMatching=this.isMatching(el);if(isMatching)return this.wasMatching(el,change,isMatching)?Movement.STAYED_IN:Movement.ENTERED;else return this.wasMatching(el,change,isMatching)?Movement.EXITED:Movement.STAYED_OUT};Selector.parseSelectors=function(input){var selectors=[];var currentSelector;var currentQualifier;function newSelector(){if(currentSelector){if(currentQualifier){currentSelector.qualifiers.push(currentQualifier);currentQualifier=undefined}selectors.push(currentSelector)}currentSelector=new Selector()}function newQualifier(){if(currentQualifier)currentSelector.qualifiers.push(currentQualifier);currentQualifier=new Qualifier()}var WHITESPACE=/\\s/;var valueQuoteChar;var SYNTAX_ERROR='Invalid or unsupported selector syntax.';var SELECTOR=1;var TAG_NAME=2;var QUALIFIER=3;var QUALIFIER_NAME_FIRST_CHAR=4;var QUALIFIER_NAME=5;var ATTR_NAME_FIRST_CHAR=6;var ATTR_NAME=7;var EQUIV_OR_ATTR_QUAL_END=8;var EQUAL=9;var ATTR_QUAL_END=10;var VALUE_FIRST_CHAR=11;var VALUE=12;var QUOTED_VALUE=13;var SELECTOR_SEPARATOR=14;var state=SELECTOR;var i=0;while(i<input.length){var c=input[i++];switch(state){case SELECTOR:if(c.match(validNameInitialChar)){newSelector();currentSelector.tagName=c;state=TAG_NAME;break}if(c=='*'){newSelector();currentSelector.tagName='*';state=QUALIFIER;break}if(c=='.'){newSelector();newQualifier();currentSelector.tagName='*';currentQualifier.attrName='class';currentQualifier.contains=true;state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='#'){newSelector();newQualifier();currentSelector.tagName='*';currentQualifier.attrName='id';state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='['){newSelector();newQualifier();currentSelector.tagName='*';currentQualifier.attrName='';state=ATTR_NAME_FIRST_CHAR;break}if(c.match(WHITESPACE))break;throw Error(SYNTAX_ERROR);case TAG_NAME:if(c.match(validNameNonInitialChar)){currentSelector.tagName+=c;break}if(c=='.'){newQualifier();currentQualifier.attrName='class';currentQualifier.contains=true;state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='#'){newQualifier();currentQualifier.attrName='id';state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='['){newQualifier();currentQualifier.attrName='';state=ATTR_NAME_FIRST_CHAR;break}if(c.match(WHITESPACE)){state=SELECTOR_SEPARATOR;break}if(c==','){state=SELECTOR;break}throw Error(SYNTAX_ERROR);case QUALIFIER:if(c=='.'){newQualifier();currentQualifier.attrName='class';currentQualifier.contains=true;state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='#'){newQualifier();currentQualifier.attrName='id';state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='['){newQualifier();currentQualifier.attrName='';state=ATTR_NAME_FIRST_CHAR;break}if(c.match(WHITESPACE)){state=SELECTOR_SEPARATOR;break}if(c==','){state=SELECTOR;break}throw Error(SYNTAX_ERROR);case QUALIFIER_NAME_FIRST_CHAR:if(c.match(validNameInitialChar)){currentQualifier.attrValue=c;state=QUALIFIER_NAME;break}throw Error(SYNTAX_ERROR);case QUALIFIER_NAME:if(c.match(validNameNonInitialChar)){currentQualifier.attrValue+=c;break}if(c=='.'){newQualifier();currentQualifier.attrName='class';currentQualifier.contains=true;state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='#'){newQualifier();currentQualifier.attrName='id';state=QUALIFIER_NAME_FIRST_CHAR;break}if(c=='['){newQualifier();state=ATTR_NAME_FIRST_CHAR;break}if(c.match(WHITESPACE)){state=SELECTOR_SEPARATOR;break}if(c==','){state=SELECTOR;break}throw Error(SYNTAX_ERROR);case ATTR_NAME_FIRST_CHAR:if(c.match(validNameInitialChar)){currentQualifier.attrName=c;state=ATTR_NAME;break}if(c.match(WHITESPACE))break;throw Error(SYNTAX_ERROR);case ATTR_NAME:if(c.match(validNameNonInitialChar)){currentQualifier.attrName+=c;break}if(c.match(WHITESPACE)){state=EQUIV_OR_ATTR_QUAL_END;break}if(c=='~'){currentQualifier.contains=true;state=EQUAL;break}if(c=='='){currentQualifier.attrValue='';state=VALUE_FIRST_CHAR;break}if(c==']'){state=QUALIFIER;break}throw Error(SYNTAX_ERROR);case EQUIV_OR_ATTR_QUAL_END:if(c=='~'){currentQualifier.contains=true;state=EQUAL;break}if(c=='='){currentQualifier.attrValue='';state=VALUE_FIRST_CHAR;break}if(c==']'){state=QUALIFIER;break}if(c.match(WHITESPACE))break;throw Error(SYNTAX_ERROR);case EQUAL:if(c=='='){currentQualifier.attrValue='';state=VALUE_FIRST_CHAR;break}throw Error(SYNTAX_ERROR);case ATTR_QUAL_END:if(c==']'){state=QUALIFIER;break}if(c.match(WHITESPACE))break;throw Error(SYNTAX_ERROR);case VALUE_FIRST_CHAR:if(c.match(WHITESPACE))break;if(c=='\"'||c==\"'\"){valueQuoteChar=c;state=QUOTED_VALUE;break}currentQualifier.attrValue+=c;state=VALUE;break;case VALUE:if(c.match(WHITESPACE)){state=ATTR_QUAL_END;break}if(c==']'){state=QUALIFIER;break}if(c==\"'\"||c=='\"')throw Error(SYNTAX_ERROR);currentQualifier.attrValue+=c;break;case QUOTED_VALUE:if(c==valueQuoteChar){state=ATTR_QUAL_END;break}currentQualifier.attrValue+=c;break;case SELECTOR_SEPARATOR:if(c.match(WHITESPACE))break;if(c==','){state=SELECTOR;break}throw Error(SYNTAX_ERROR)}}switch(state){case SELECTOR:case TAG_NAME:case QUALIFIER:case QUALIFIER_NAME:case SELECTOR_SEPARATOR:newSelector();break;default:throw Error(SYNTAX_ERROR)}if(!selectors.length)throw Error(SYNTAX_ERROR);return selectors};Selector.nextUid=1;Selector.matchesSelector=(function(){var element=_9.createElement('div');if(typeof element['webkitMatchesSelector']==='function')return'webkitMatchesSelector';if(typeof element['mozMatchesSelector']==='function')return'mozMatchesSelector';if(typeof element['msMatchesSelector']==='function')return'msMatchesSelector';return'matchesSelector'})();return Selector})();var attributeFilterPattern=/^([a-zA-Z:_]+[a-zA-Z0-9_\\-:\\.]*)$/;function validateAttribute(attribute){if(typeof attribute!='string')throw Error('Invalid request opion. attribute must be a non-zero length string.');attribute=attribute.trim();if(!attribute)throw Error('Invalid request opion. attribute must be a non-zero length string.');if(!attribute.match(attributeFilterPattern))throw Error('Invalid request option. invalid attribute name: '+attribute);return attribute}function validateElementAttributes(attribs){if(!attribs.trim().length)throw Error('Invalid request option: elementAttributes must contain at least one attribute.');var lowerAttributes={};var attributes={};var tokens=attribs.split(/\\s+/);for(var i=0;i<tokens.length;i++){var name=tokens[i];if(!name)continue;var name=validateAttribute(name);var nameLower=name.toLowerCase();if(lowerAttributes[nameLower])throw Error('Invalid request option: observing multiple case variations of the same attribute is not supported.');attributes[name]=true;lowerAttributes[nameLower]=true}return Object.keys(attributes)}function elementFilterAttributes(selectors){var attributes={};selectors.forEach(function(selector){selector.qualifiers.forEach(function(qualifier){attributes[qualifier.attrName]=true})});return Object.keys(attributes)}var MutationSummary=(function(){function MutationSummary(opts){var _57=this;this.connected=false;this.options=MutationSummary.validateOptions(opts);this.observerOptions=MutationSummary.createObserverOptions(this.options.queries);this.root=this.options.rootNode;this.callback=this.options.callback;this.elementFilter=Array.prototype.concat.apply([],this.options.queries.map(function(query){return query.elementFilter?query.elementFilter:[]}));if(!this.elementFilter.length)this.elementFilter=undefined;this.calcReordered=this.options.queries.some(function(query){return query.all});this.queryValidators=[];if(MutationSummary.createQueryValidator){this.queryValidators=this.options.queries.map(function(query){return MutationSummary.createQueryValidator(_57.root,query)})}this.observer=MutationObserverCtor?new MutationObserverCtor(function(mutations){_57.observerCallback(mutations)}):{observe:function(){}};this.reconnect()}MutationSummary.createObserverOptions=function(queries){var observerOptions={childList:true,subtree:true};var attributeFilter;function observeAttributes(attributes){if(observerOptions.attributes&&!attributeFilter)return;observerOptions.attributes=true;observerOptions.attributeOldValue=true;if(!attributes){attributeFilter=undefined;return}attributeFilter=attributeFilter||{};attributes.forEach(function(attribute){attributeFilter[attribute]=true;attributeFilter[attribute.toLowerCase()]=true})}queries.forEach(function(query){if(query.characterData){observerOptions.characterData=true;observerOptions.characterDataOldValue=true;return}if(query.all){observeAttributes();observerOptions.characterData=true;observerOptions.characterDataOldValue=true;return}if(query.attribute){observeAttributes([query.attribute.trim()]);return}var attributes=elementFilterAttributes(query.elementFilter).concat(query.attributeList||[]);if(attributes.length)observeAttributes(attributes)});if(attributeFilter)observerOptions.attributeFilter=Object.keys(attributeFilter);return observerOptions};MutationSummary.validateOptions=function(options){for(var prop in options){if(!(prop in MutationSummary.optionKeys))throw Error('Invalid option: '+prop)}if(typeof options.callback!=='function')throw Error('Invalid options: callback is required and must be a function');if(!options.queries||!options.queries.length)throw Error('Invalid options: queries must contain at least one query request object.');var opts={callback:options.callback,rootNode:options.rootNode||_9,observeOwnChanges:!!options.observeOwnChanges,oldPreviousSibling:!!options.oldPreviousSibling,queries:[]};for(var i=0;i<options.queries.length;i++){var request=options.queries[i];if(request.all){if(Object.keys(request).length>1)throw Error('Invalid request option. all has no options.');opts.queries.push({all:true});continue}if('attribute'in request){var query={attribute:validateAttribute(request.attribute)};query.elementFilter=Selector.parseSelectors('*['+query.attribute+']');if(Object.keys(request).length>1)throw Error('Invalid request option. attribute has no options.');opts.queries.push(query);continue}if('element'in request){var requestOptionCount=Object.keys(request).length;var query={element:request.element,elementFilter:Selector.parseSelectors(request.element)};if(request.hasOwnProperty('elementAttributes')){query.attributeList=validateElementAttributes(request.elementAttributes);requestOptionCount--}if(requestOptionCount>1)throw Error('Invalid request option. element only allows elementAttributes option.');opts.queries.push(query);continue}if(request.characterData){if(Object.keys(request).length>1)throw Error('Invalid request option. characterData has no options.');opts.queries.push({characterData:true});continue}throw Error('Invalid request option. Unknown query request.')}return opts};MutationSummary.prototype.createSummaries=function(mutations){if(!mutations||!mutations.length)return[];var projection=new MutationProjection(this.root,mutations,this.elementFilter,this.calcReordered,this.options.oldPreviousSibling);var summaries=[];for(var i=0;i<this.options.queries.length;i++){summaries.push(new Summary(projection,this.options.queries[i]))}return summaries};MutationSummary.prototype.checkpointQueryValidators=function(){this.queryValidators.forEach(function(validator){if(validator)validator.recordPreviousState()})};MutationSummary.prototype.runQueryValidators=function(summaries){this.queryValidators.forEach(function(validator,index){if(validator)validator.validate(summaries[index])})};MutationSummary.prototype.changesToReport=function(summaries){return summaries.some(function(summary){var summaryProps=['added','removed','reordered','reparented','valueChanged','characterDataChanged'];if(summaryProps.some(function(prop){return summary[prop]&&summary[prop].length}))return true;if(summary.attributeChanged){var attrNames=Object.keys(summary.attributeChanged);var attrsChanged=attrNames.some(function(attrName){return!!summary.attributeChanged[attrName].length});if(attrsChanged)return true}return false})};MutationSummary.prototype.observerCallback=function(mutations){if(!this.options.observeOwnChanges)this.observer.disconnect();var summaries=this.createSummaries(mutations);this.runQueryValidators(summaries);if(this.options.observeOwnChanges)this.checkpointQueryValidators();if(this.changesToReport(summaries))this.callback(summaries);if(!this.options.observeOwnChanges&&this.connected){this.checkpointQueryValidators();this.observer.observe(this.root,this.observerOptions)}};MutationSummary.prototype.reconnect=function(){if(this.connected)throw Error('Already connected');this.observer.observe(this.root,this.observerOptions);this.connected=true;this.checkpointQueryValidators()};MutationSummary.prototype.takeSummaries=function(){if(!this.connected)throw Error('Not connected');var summaries=this.createSummaries(this.observer.takeRecords());return this.changesToReport(summaries)?summaries:undefined};MutationSummary.prototype.disconnect=function(){var summaries=this.takeSummaries();this.observer.disconnect();this.connected=false;return summaries};MutationSummary.NodeMap=NodeMap;MutationSummary.parseElementFilter=Selector.parseSelectors;MutationSummary.optionKeys={'callback':true,'queries':true,'rootNode':true,'oldPreviousSibling':true,'observeOwnChanges':true};return MutationSummary})();var TreeMirrorClient=(function(){function TreeMirrorClient(target,mirror,testingQueries){var _57=this;this.target=target;this.mirror=mirror;this.nextId=1;this.knownNodes=new MutationSummary.NodeMap();_479();_481();var rootId=this.serializeNode(target).id;var children=[];for(var child=target.firstChild;child;child=child.nextSibling){var serializedChild=this.serializeNode(child,true);if(serializedChild)children.push(serializedChild)}this.mirror.initialize(rootId,children);var self=this;var queries=[{all:true}];if(testingQueries)queries=queries.concat(testingQueries);this.mutationSummary=new MutationSummary({rootNode:target,callback:function(summaries){_57.applyChanged(summaries)},queries:queries})}TreeMirrorClient.prototype.disconnect=function(){if(this.mutationSummary){this.mutationSummary.disconnect();this.mutationSummary=undefined}};TreeMirrorClient.prototype.rememberNode=function(node){var id=this.nextId++;this.knownNodes.set(node,id);return id};TreeMirrorClient.prototype.forgetNode=function(node){this.knownNodes.deleteNode(node)};TreeMirrorClient.prototype.serializeNode=function(node,isInitial){if(node===null||_255(node,'no-mouseflow-dom'))return null;if(_255(node,'blacklisted-css'))return null;var id=this.knownNodes.get(node);if(id!==undefined){if(isInitial)return _8('Found duplicated node during initial DOM: '+id);return{id:id}}var data={nodeType:node.nodeType,id:this.rememberNode(node)};if(_7._155(node,'data-mf-replace')||_7._155(node,'data-mf-replace-inner'))return null;var _469=_510(node),_467=!!_255(node.parentNode,'blacklisted-css');if(_469||_467){_8('CSS Blacklist blocked node. NodeType: '+node.nodeType+'. '+(node.nodeType===1?'Tag: '+node.tagName:''));_184(node,'blacklisted-css',true);if(isInitial&&node.childNodes.length){var _84;for(_84=node.firstChild;_84;_84=_84.nextSibling)this.serializeNode(_84,true)}if(_467)return null}if(isInitial){if(_255(node.parentNode,'no-mouseflow-dom')||_7._129(node,'no-mouseflow-dom'))_184(node,'no-mouseflow-dom','initial')}else if(_255(node.parentNode,'no-mouseflow-dom')){_184(node,'no-mouseflow-dom','inherit');return null}switch(data.nodeType){case 10:data.name=node.name;data.publicId=node.publicId;data.systemId=node.systemId;break;case 8:case 3:if(node.nodeType===8&&node.textContent.indexOf('[if')!==0&&node.textContent.indexOf('<![endif]')!==0)break;data.textContent=_500(node).replace(/[\\x20\\r\\n]+/g,' ');if(node.parentNode&&node.parentNode.tagName==='STYLE'&&/^\\s*$/.test(node.textContent)){data.textContent=_453(node.parentNode)}break;case 1:if(node.tagName==='IFRAME'&&node.parentNode&&node.parentNode.tagName==='HEAD'){data.nodeType=8;data.textContent='';break}data.tagName=node.tagName;if(node.attributes['data-mf-replace']){var _222=node.attributes['data-mf-replace'].value;data=_472.call(this,_222,function(_33){var _13=this.serializeNode(_33,true);_13.id=data.id;this.knownNodes.set(_33,_13.id);return _13})[0];break}if(node.tagName==='SCRIPT')break;data.attributes={};if(_469){var _473=_636(node);if(node.id)data.attributes.id=node.id;if(node.name)data.attributes.name=node.name;data.attributes.style=(node.style?node.style.cssText+'; ':'')+'width: '+_473.width+'px; height: '+_473.height+'px;';data.attributes.class=node.className+' mf-excluded';break}for(var i=0;i<node.attributes.length;i++){var attr=node.attributes[i];if(_740(attr.name.toLowerCase()))continue;if(attr.name.toLowerCase()==='value'&&node.tagName==='INPUT')data.attributes.value=_187(node);else data.attributes[attr.name]=attr.value}if(node.tagName==='IFRAME'&&node.offsetWidth<=1&&node.offsetHeight<=1)data.attributes.src='';if(isInitial&&node.tagName==='INPUT'){if(!data.attributes.value&&node.value)data.attributes.value=_187(node);if(!data.attributes.checked&&node.checked)data.attributes.checked=node.checked}if(isInitial&&node.tagName==='OPTION'&&!data.attributes.selected&&node.selected)data.attributes.selected=node.selected;if(node.tagName==='INPUT'&&node.type==='hidden'&&data.attributes.value)data.attributes.value='';if(node.attributes['data-mf-replace-inner']){var _222=node.attributes['data-mf-replace-inner'].value;data.childNodes=_472.call(this,_222,function(_33){return this.serializeNode(_33,true)});break}if(isInitial){if(node.childNodes.length){data.childNodes=[];var _162=false;for(var child=node.firstChild;child;child=child.nextSibling){if(_448(child))_162=true;else if(_449(child.previousSibling))_162=false;if(_162)continue;var serializedChild=this.serializeNode(child,true);if(serializedChild){data.childNodes.push(serializedChild)}}}var _484=node.tagName==='LINK'&&node.href&&node.href.indexOf('blob:')===0;var _660=node.tagName==='STYLE'&&!node.textContent;if(_484){data.tagName='STYLE';data.href=undefined;data.rel=undefined}if(_484||_660){data.childNodes=[{nodeType:3,textContent:_453(node)}]}}break}return data};TreeMirrorClient.prototype.serializeAddedAndMoved=function(added,reparented,reordered){var _57=this;var all=added.concat(reparented).concat(reordered);var parentMap=new MutationSummary.NodeMap();all.forEach(function(node){var parent=node.parentNode;var children=parentMap.get(parent);if(!children){children=new MutationSummary.NodeMap();parentMap.set(parent,children)}children.set(node,true)});var moved=[];var noMouseflowDom=[];parentMap.keys().forEach(function(parent){var children=parentMap.get(parent);var keys=children.keys();while(keys.length){var node=keys[0];while(node.previousSibling&&children.has(node.previousSibling))node=node.previousSibling;var _162=false;while(node&&children.has(node)){if(_448(node))_162=true;else if(_449(node.previousSibling))_162=false;if(!_162){var data=_57.serializeNode(node);if(data){var _306=node.previousSibling;while(_306&&!data.previousSibling){data.previousSibling=_57.serializeNode(_306);_306=_306.previousSibling}data.parentNode=_57.serializeNode(node.parentNode);if(data.parentNode)moved.push(data)}if(_7._129(node,'no-mouseflow-dom'))noMouseflowDom.push(node)}children.deleteNode(node);node=node.nextSibling}var keys=children.keys()}});noMouseflowDom.forEach(function(node){_184(node,'no-mouseflow-dom','initial',true)});return moved};TreeMirrorClient.prototype.serializeAttributeChanges=function(attributeChanged){var _57=this;var map=new MutationSummary.NodeMap();Object.keys(attributeChanged).forEach(function(attrName){attributeChanged[attrName].forEach(function(element){if(element.hasAttribute('data-mf-replace')||_7._155(element,'data-mf-replace')||_7._155(element,'data-mf-replace-inner')){return}if(_7._129(element,'no-mouseflow-dom'))_184(element,'no-mouseflow-dom','initial',true);var record=map.get(element);if(!record){record=_57.serializeNode(element);if(record){record.attributes={};map.set(element,record)}}if(record){if(attrName.toLowerCase()==='value'&&element.tagName==='INPUT')record.attributes.value=_187(element);else record.attributes[attrName]=element.getAttribute(attrName)}})});return map.keys().map(function(node){return map.get(node)})};TreeMirrorClient.prototype.serializeTextChanges=function(textChanges){var _57=this;return textChanges.map(function(node){var data=_57.serializeNode(node);if(data)data.textContent=_500(node);return data})};TreeMirrorClient.prototype.applyChanged=function(summaries){_479();_481();var summary=summaries[0];var _57=this;var removed=summary.removed.map(function(node){return _57.serializeNode(node)});var moved=this.serializeAddedAndMoved(summary.added,summary.reparented,summary.reordered);var attributes=this.serializeAttributeChanges(summary.attributeChanged);var text=this.serializeTextChanges(summary.characterDataChanged);this.mirror.applyChanged(summary,{removed:_302(removed),addedOrMoved:_302(moved),attributes:_302(attributes),text:_302(text)});summary.removed.forEach(function(node){_57.forgetNode(node)})};return TreeMirrorClient})();function _302(_755){return _755.filter(function(_209){return _209})}function _479(){_335=[];if(!_238.length)return;try{var _221=_9.querySelectorAll(_238.join(','));for(var i=0;i<_221.length;i++){_335.push(_221[i])}}catch(e){}}function _481(){_336=[];if(!_242.length)return;try{var _221=_9.querySelectorAll(_242.join(','));for(var i=0;i<_221.length;i++){_336.push(_221[i])}}catch(e){}}function _472(_222,_761){var _13=[];var _353=_9.createElement('div');_353.innerHTML=_222;for(var i=0;i<_353.childNodes.length;i++){var _762=_353.childNodes[i];var _764=_761.call(this,_762);_13.push(_764)}return _13}function _448(_33){return _33&&_33.nodeType===8&&_33.textContent.trim().toLowerCase().indexOf('mouseflowexcludestart')===0}function _449(_33){return _33&&_33.nodeType===8&&_33.textContent.trim().toLowerCase().indexOf('mouseflowexcludeend')===0}function _740(_405){return/^(onbeforeunload|onblur|onchange|onclick|onfocus|oninput|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmouseenter|onmouseleave|onmousemove|onmouseout|onmouseover|onmouseup|onresize|onsubmit|ontouchcancel|ontouchend|ontouchenter|ontouchleave|ontouchmove|ontouchstart|onunload)$/.test(_405)}function _453(_33){var _257='';if(!_33.sheet)return _257;for(var _2=0;_2<_33.sheet.cssRules.length;_2++){_257+=_33.sheet.cssRules[_2].cssText}return _257}function _832(){_121({_19:_153+'install?websiteId='+_53,_171:function(){_8('Website installed signal sent.')},_88:function(){_8('Error in transmitCrossDomain - could not signal that website was installed.')}})}function _39(){if(_93){_8('Recording script is already started');return}if(!_649){_8('Recording not started - recording script is not initialized');return}_93=true;_698();_8('Recording starting, version '+_201+(_14.gdprEnabled?', GDPR mode enabled.':''));if(_665()){_662();_12._99=_870(_0._529);if(_874()){_12._36=_388();_0._139=[];_12._225=0}_0._327=_785();var _19=_153+'init?v='+_201+'&p='+_53+'&s='+_12._36+'&page='+_12._99+'&ret='+(_12._192?'1':'0')+'&u='+_12._146+'&href='+_80(_14.location.href)+(_14.path?'&path='+_80(_14.path):'')+'&ref={referrer}'+'&title='+_80(_9.title)+'&res='+_1.screen.width+'x'+_1.screen.height+'&tz='+_877()+'&to='+_12._440+'&dnt='+_12._457+'&ori='+(typeof _1.orientation!='undefined'?_1.orientation:'')+'&dw='+_9.documentElement.clientWidth+'&dh='+_9.documentElement.clientHeight+'&time='+_797()+'&pxr='+(typeof _1.devicePixelRatio!='undefined'?_1.devicePixelRatio:1)+(_0._327.length>0?'&fw='+_0._327.join(','):'')+'&gdpr='+(_14.gdprEnabled?1:0);var _169=_9.referrer;if(_19.replace('{referrer}',_80(_169)).length>_67._351){if(_169.indexOf('?')>-1)_169=_169.split('?')[0];if(_19.replace('{referrer}',_80(_169)).length>_67._351)_169=''}_19=_19.replace('{referrer}',_80(_169));_784();var _452=_730(_67._351-_19.length-6);_19+=_736(_452);_121({_19:_19,_171:function(_85){if(_14.crossDomainSupport)_1.name='mf_'+_12._36;if(_85._444==='Recording blocked'){_8('Recording not started - mf_block cookie set to 1');return}_452.forEach(function(_120){_640(_120.key,_120.value)});_190=true;_717();_127._39(_12,_0,_175,_81,_226,_202,_8);_1._mfq=new _383(_1._mfq);_722();_720()},_829:true,_88:function(){_8('Error in transmitCrossDomain - recording not starting.')}});if(_0._220){if(_0._220!==_113(_14.location.pathname))_202();_0._220=null}_879();_0._82={x:_1.pageXOffset,y:_1.pageYOffset};if(_0._82.x!==0&&_0._82.y!==0)_488();_0._231=1;_352();_8('Recording started. Session: '+_12._36+', Page: '+_12._99+', Last page: '+_12._397)}}function _59(){if(!_93)return;_390=false;_532();_1.clearInterval(_380);_1.clearInterval(_382);_1.clearInterval(_391);_1.clearTimeout(_214);if(_218){_1.clearTimeout(_218);_468()}if(_205){_1.clearTimeout(_205);_521()}_656();_25(_5._716,{});_263();_190=false;try{_445.disconnect()}catch(e){}_127._59();_314._59();_189._59();_352();_0=_537();_8('Recording stopped');_93=false}function _782(_31){if(_14.liveHeatmapsEnabled){_189._551({url:_31})}if(!_390){_8('New page view skipped. Current page view is not initialized yet.');return}_59();_14.htmlDelay=_14.newPageViewHtmlDelay;if(typeof _31!='undefined')_14.path=_31;_39();_25(_5._378,{x:0,y:_7._243()})}function _780(){_59();_9.cookie='mf_'+_53+'=; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/; domain='+_269(_97)+';';if(_1.name&&_1.name.length===35&&_1.name.indexOf('mf_')===0)_1.name=''}function _717(){if(_14.htmlFetchMode==='post'){_1.setTimeout(function(){_718()},_14.htmlDelay)}else{_8('Html not sent due to mouseflowHtmlFecthMode setting')}}function _718(){_445=new TreeMirrorClient(_9,{initialize:function(rootId,children){_390=true;_813({data:{f:'initialize',args:[rootId,children]}},_9.documentElement.innerHTML.length)},applyChanged:function(summary,serializedSummary){if(_98()-_0._316<30000){if(serializedSummary.removed.length||serializedSummary.addedOrMoved.length||serializedSummary.attributes.length||serializedSummary.text.length){_817({data:{f:'applyChanged',args:[serializedSummary.removed,serializedSummary.addedOrMoved,serializedSummary.attributes,serializedSummary.text]}})}}}})}function _778(_24,_3,_249,_477){if(!_93||!_24)return;_3=_3||'';if(!_640(_24,_3)){_8('Variable already set to same value, not triggering callback.');return}var _13={key:_24.toString(),value:_3.toString()||'',scope:_249||'session',overwrite:_477===undefined?true:_477};_0._124.push(_13);_1.clearTimeout(_205);_205=_1.setTimeout(_521,1000)}function _730(limit){if(!_1._mfq.length)return[];var _124=[];var _487=0;for(var _64=0;_64<_1._mfq.length;_64++){var _49=_1._mfq[_64];if(!_49||!_49.length||_49[0]!=='setVariable')continue;if((_49.length>3&&_49[3]!=='session')||(_49.length>4&&_49[4]!==true))continue;var _24=_49[1];var _3=_49[2];if(!_24||!_3)continue;if(_618(_24)!==-1)continue;var _734=_80(_24)+'='+_80(_3);_487+=_734.length+1;if(_487-1>=limit)break;_124.push({key:_24,value:_3});_1._mfq.splice(_64,1);_64--}return _124}function _736(_124){var _520=_124.map(function(_120){return _80(_120.key)+'='+_80(_120.value)}).join('&');return _520?'&vars='+_80(_520):''}function _521(){_205=0;for(var _2=0;_2<_0._124.length;_2++){var _120=_0._124[_2];_8('Setting custom variable: '+_120.key+' = '+_120.value+', overwrite: '+(_120.overwrite===undefined?true:_120.overwrite))}_175('variable',_0._124);_0._124=[]}function _81(_731){_25(_5._81,{target:_731})}function _779(){_25(_5._81,{target:'*'})}function _777(_729){if(_14.gdprEnabled)_8('User identification not allowed (script in GDPR mode)');else if(!_93)_175('identify',{userId:_12._146,userName:_729})}function _226(_35){if(!_93)return;_8('Registering form submit attempt on this page');_482(_35)}function _202(_35){if(!_93)return;var _384=_98();if(_0._144||_384>5000){_8('Registering form submit success on this page');if(!_0._144)_25(_5._286,{target:_35});_25(_5._522,{});_0._144=undefined}else{_8('Registering form submit success on previous page');_399([{_15:_5._522}])}}function _776(_35){if(!_93)return;var _384=_98();if(_0._144||_384>5000){_8('Registering form submit failure on this page');if(!_0._144)_25(_5._286,{target:_35});_25(_5._198,{});_150(_90._198);_0._144=undefined}else{_8('Registering form submit failure on previous page');_399([{_15:_5._198},{_15:_5._61,_23:{x:_90._198._3,y:0}},{_15:_5._81,_23:{target:_90._198._21}}])}}function _482(_35){if((+new Date())-_0._540<20)return;_0._540=+new Date();_25(_5._286,{target:_35});if(!_0._326[_35]){_0._326[_35]=_411(_35)}else{_517(_35,_411(_35),_0._326[_35])}_679(_35);_768(_35);_0._144=+new Date()}function _724(_61){if(!_61._45||_61._45!==_90._172._45)return true;if(_0._289.indexOf(_61._45)!==-1)return false;_0._289.push(_61._45);return true}function _150(_61,_43){if(!_93||!_61)return;var _3=+_61._3;if(!_3)return;var _21=_61._21;if(_21){if(_0._542.indexOf(_21)!==-1)return;_0._542.push(_21)}else{_21='custom-friction'+(_61._581?('-'+_61._581):'')}if(!_724(_61))_3=0;var _723={value:_21,target:_43?_43:'',x:_3>0?_3:0,y:_3<0?_3*-1:0};_25(_5._61,_723)}function _722(){if(_12._92.length<2)return;var _194=_12._92[_12._92.length-2];var _247=_12._92[_12._92.length-1];var _166=_113(_14.path||_14.location.pathname);if(_194._166===_166&&_194._166!==_247._166&&_0._89-_247._89<10000){_399([{_15:_5._61,_23:{x:_90._530._3,y:0}},{_15:_5._81,_23:{target:_90._530._21}}])}}function _720(){if(_12._92.length<4)return;var _533=_12._92[_12._92.length-5];var _194=_12._92[_12._92.length-4];if(_0._89-_194._89<30000){if(_533&&_194._89-_533._89<30000)return;_496(_194._45,[{_15:_5._61,_23:{x:_90._536._3,y:0}},{_15:_5._81,_23:{target:_90._536._21}}])}}function _309(){if(!_93)return;_127._309.apply(_127,arguments)}function _710(){return{_36:'',_99:'',_146:'',_192:false,_440:+('ontouchstart'in _1&&_14.touchEvents),_457:(navigator.doNotTrack==='yes'||navigator.doNotTrack==1||window.doNotTrack==1||navigator.msDoNotTrack==1)?1:0,_225:0,_397:'',_92:[],_135:[],_267:_709()}}function _709(){try{_1.sessionStorage.setItem('mf_supportsSessionStorage','1');var _708=_1.sessionStorage.getItem('mf_supportsSessionStorage')==='1';_1.sessionStorage.removeItem('mf_supportsSessionStorage');return _708}catch(e){return false}}function _537(){return{_529:new Date(),_89:+new Date(),_211:+new Date(),_419:0,_13:[],_216:[],_37:[],_208:[],_498:[],_147:[],_116:[],_524:0,_527:0,_173:0,_528:'',_540:0,_212:[],_170:[],_223:[],_542:[],_289:[],_117:{x:0,y:0},_546:{x:0,y:0},_543:{x:0,y:0},_478:-100,_82:{x:0,y:0},_217:{x:0,y:0},_181:{},_348:-100,_322:-100,_152:{x:0,y:0},_365:[],_820:0,_158:[],_124:[],_231:1,_316:0,_493:0,_326:{},_139:[],_516:0,_485:0,_446:0,_327:[],_135:[],_228:0,_251:0,_131:null,_118:_766(),_547:0,_381:false,_459:_201}}function _411(_35){var _140=_307(_35);var _30={};if(!_140){_8('Form not found: '+_35);return _30}for(var i=0;i<_140.elements.length;i++){var _6=_140.elements[i];var _21=_6.name;if(!_21||_21=='')continue;if(_6.tagName&&/input|select|button|textarea/.test(_6.tagName.toLowerCase())&&(!_6.type||!/hidden|submit|reset|image|button/.test(_6.type.toLowerCase()))){var _3=_229(_6);if(!_30[_21])_30[_21]=_3;else if(_3&&_3!='')_30[_21]+=', '+_3}}return _30}function _768(_35){var _140=_307(_35);if(!_140||!_12._267)return;var _2,_56;for(_2=0;_2<_140.elements.length;_2++){var _6=_140.elements[_2];if(_6.tagName&&/input|textarea/.test(_6.tagName.toLowerCase())&&(!_6.type||!/hidden|submit|reset|image|file|button|password/.test(_6.type.toLowerCase()))){var _3=_229(_6);if(!_3||_3.length<=3||_460(_6)||_331(_6))continue;var _96=_491(_3);if(_96.length===0)continue;var _178=[];for(_56=0;_56<_96.length;_56++){_178.push(_96[_56]._163)}var _176=false;for(_56=0;_56<_0._118.length;_56++){var _252=_0._118[_56];_176=_178.length===_252.length&&_495(_252,_178)===0;if(_176)break}if(!_176)_0._118.push(_178)}}if(_0._118.length){_0._118=_0._118.slice(-100);_767(_0._118)}}function _767(_37){try{_1.localStorage.setItem('mf_replaceHashes',_7._79(_37))}catch(e){}}function _766(){try{return _7._149(_1.localStorage.getItem('mf_replaceHashes'))||[]}catch(e){return[]}}function _748(_3){if(_0._118.length===0)return _3;var _96=_491(_3);for(var _2=0;_2<_0._118.length;_2++){var _252=_0._118[_2];var _168;do{var _112=_168!==undefined?_168+1:0;_168=_495(_96,_252,_112);if(_168!==-1){var _39=_96[_168]._39;var _199=_96[_168+_252.length-1]._199;var _760=_789('*',_199-_39);_3=_3.slice(0,_39)+_760+_3.slice(_199)}}while(_168!==-1)}return _3}function _491(_3){var _178=[];var _39;function _494(_199){if(_39===undefined)return;var _492=_3.slice(_39,_199);_178.push({_39:_39,_199:_39+_492.length,_163:_113(_492)});_39=undefined}for(var _2=0;_2<_3.length;_2++){var _338=_3[_2];if(_783(_338)){if(_39===undefined){_39=_2}}else{_494(_2)}}_494();return _178}function _495(_197,_96,_112){for(var _2=_112||0;_2<_197.length;_2++){if(_2+_96.length>_197.length)break;if(_754(_197,_96,_2))return _2}return-1}function _754(_197,_96,_112){var _176=false;for(var _2=_112||0,_56=0;_2<_197.length&&_56<_96.length;_2++,_56++){_176=_197[_2]._163===_96[_56];if(!_176)break}return _176}function _229(_4){var _3='';if(_4.type&&/radio|checkbox/.test(_4.type.toLowerCase()))_3=_4.checked?_4.value:'';else if(_4.tagName&&/select/.test(_4.tagName.toLowerCase())&&_4.options)for(var j=0;j<_4.options.length;j++){var _393=_4.options[j].selected?_4.options[j].value:'';if(_393&&_393!='')_3+=(_3&&_3!=''?',':'')+_393}else _3=_4.value;return _3||''}function _187(_4){if(_4.type==='password')return'*';var _3=_229(_4);if(_503(_4)){_3=_3.replace(/./g,_507(_4.type))}else if(_499(_4)&&!_331(_4)){_3=_3.slice(0,2)+_3.slice(2).replace(/./g,_507(_4.type))}return _3}function _500(_4){var _191=_4.textContent;if(_4.nodeType===3&&_4.parentNode)_4=_4.parentNode;var _504=_748(_191);if(_504!==_191&&_14.replaceLastFormValues)_191=_504;if(_745(_4))_191=_191.replace(/./g,'*');return _191}function _331(_4){return _7._129(_4,'mouseflow')||_336.indexOf(_4)!==-1}function _510(_4){return _335.indexOf(_4)!==-1}function _513(_4){return _7._129(_4,'no-mouseflow')||(!_331(_4)&&!_14.keyLogging)||_510(_4)}function _503(_4){return(_513(_4)||_460(_4)||_743(_4))&&_512(_4)&&!/checkbox|radio|button|submit|file|image|reset/.test(_4.type)}function _745(_4){return _513(_4)&&(_4.isContentEditable||_4.tagName==='TEXTAREA')}function _743(_4){return _14.gdprEnabled&&(_741(_4)||_707(_4))}function _460(_4){return _4.maxLength===16||_412(_4.value)}function _412(_3){return/(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\\d{3})\\d{11})/.test(_3)}function _741(_4){return/email/i.test(_4.type)||/(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@/.test(_4.value)}function _707(_4){return/tel/i.test(_4.type)}function _499(_4){return _512(_4)&&/^\\d{3}[^a-z]*$/i.test(_4.value)}function _512(_4){return _4.tagName==='INPUT'||_4.tagName==='TEXTAREA'}function _507(_674){return/number/i.test(_674)?'0':'*'}function _873(_44){return _503(_44.target)||_499(_44.target)?'191':(_44.which&&_44.which.toString())||''}function _865(_4){var _497=_70(_4);var _293=_0._498[_497];var _305=_187(_4);var _30=_305;if(_293&&_293.length>3&&_305.indexOf(_293)===0)_30='+||'+_305.substring(_293.length);_0._498[_497]=_305;return _30}function _517(_35,_410,_409){try{var _244=[];for(var _40 in _410){if(typeof _409[_40]=='undefined'||_410[_40]!=_409[_40])_244.push(_40)}for(var _40 in _409){if(typeof _410[_40]=='undefined'&&_244.indexOf(_40)===-1)_244.push(_40)}for(var i=0;i<_244.length;i++){_25(_5._508,{target:_35+'||'+_244[i]})}}catch(_47){_8('Error in _517: '+_47.message)}}function _679(_35){try{var _241=_703(_35);for(var i=0;i<_241.length;i++){_25(_5._509,{target:_35+'||'+_241[i]})}}catch(_47){_8('Error in getBlankFields: '+_47.message)}}function _703(_35){var _241=[];var _37=_411(_35);for(var _40 in _37)if(_37[_40]=='')_241.push(_40);return _241}function _307(_35){for(var j=0;j<_9.forms.length;j++)if(_70(_9.forms[j])==_35){return _9.forms[j]}return null}function _698(){_695();_685()}function _352(){_689();_681()}function _695(){var _541=_624('mf_user').split('|');for(var _2=0;_2<_541.length;_2++){var _73=_541[_2];switch(_2){case 0:_12._146=_73;break;case 1:_12._135=_73!==''?_73.split(/[$,]+/):[];break}}_12._192=_12._146!=='';if(_12._146===''||_12._146==='1')_12._146=_388()}function _689(){_371('mf_user',[_12._146,_12._135.join('$')].join('|'),1,_269(_97))}function _685(){var _538=_624('mf_'+_53).split('|');for(var _2=0;_2<_538.length;_2++){var _73=_538[_2];switch(_2){case 0:_12._36=_73;break;case 1:_12._92=_680(_73);break;case 2:_0._419=parseInt(_73,10);break;case 3:_0._139=_73!==''?_73.split('.'):[];break;case 4:_12._225=parseInt(_73,10);break;case 5:_0._220=_73;break;case 6:_0._135=_73!==''?_73.split(/[$,]+/):[];break;case 7:_12._192=_73==='1';break;case 8:_0._459=_73;break;case 9:_0._289=_73!==''?_73.split('$').map(function(id){return parseInt(id,10)}).filter(function(id){return!isNaN(id)}):[];break}}if(_12._36==''&&_14.sessionId)_12._36=_14.sessionId;else if(_12._36==''&&_1.name&&_1.name.length==35&&_1.name.indexOf('mf_')==0)_12._36=_1.name.substring(3);var _247=_12._92[_12._92.length-1];if(_247)_12._397=_247._45}function _681(){_371('mf_'+_53,[_12._36,_677(),+new Date(),_0._139.join('.'),_12._225,_0._220||'',_0._135.join('$'),_12._192?'1':'0',_201,_0._289.join('$')].join('|'),0,_269(_97))}function _680(_3){return _3.split(/[$,]+/).map(function(_254){var _37=_254.split('.');return{_45:_37[0],_166:_37[1],_89:+_37[2]}})}function _677(){return _12._92.concat([{_45:_12._99,_166:_113(_14.path||_14.location.pathname),_89:_0._89}]).slice(-5).map(function(_254){return _254._45+'.'+_254._166+'.'+_254._89}).join('$')}var _308='__mouseflow_properties__';function _255(_33,_24){if(!_33)return null;var _182=_33[_308];return _182?_182[_24]:null}function _184(_33,_24,_3,_699){var _182=_33[_308];if(!_182)_182=_33[_308]={};_182[_24]=_3;if(_699&&_33.childNodes&&_33.childNodes.length){for(var _84=_33.firstChild;_84;_84=_84.nextSibling){_184(_84,_24,_3,true)}}}function _525(_33){delete _33[_308];if(_33.childNodes&&_33.childNodes.length){for(var _84=_33.firstChild;_84;_84=_84.nextSibling){_525(_84)}}}function _656(){_525(_1.document.body)}function _662(){_0._89=+new Date();_0._211=+new Date();_380=_1.setInterval(_488,_67._480);_382=_1.setInterval(_808,_67._657);_391=_1.setInterval(_364,_67._676);_214=_1.setTimeout(_633,_67._394)}function _665(){if(_14.forceStart)return true;if(_867()){_8('Recording not started - session blocked earlier.');return false}if(_868()){_8('Recording not started - Session id is invalid.');return false}if(_774()){_8('Recording not started - Honored \"do not track\" browser setting.');return false}if(!_157._292(_76)){_8('Recording not started - page does not match page rules');return false}var _523=_793();var _670=_157._422(_667,function(_668){return _668._347<_523});if(_670){_8('Recording not started - limited by the page recording rule rate');return false}var _455=_12._36!=''||_347>=_523;if(!_455){_8('Recording not started - recordingRate or blocked');_371('mf_'+_53,'-1',0,_269(_97))}return _455}function _793(){return _108.round(_108.random()*10000000)/100000}function _774(){return _14.honorDoNotTrack&&_12._457}function _867(){return _12._36=='-1'}function _868(){return _12._36!=''&&_12._36.length!=32}function _881(){return(_12._225<_67._869)}function _870(_100){return _290(_100.getMonth()+1,2)+_290(_100.getDate(),2)+_290(_100.getSeconds(),2)+_290(_100.getMilliseconds(),3).slice(1)+_388()}function _290(_872,_299){return(new Array(_299+1).join('0')+_872).slice(-_299)}function _874(){return _12._36==''||_12._36=='-1'||!_881()||_0._459!==_201||(_0._419>0&&(+new Date()-_0._419>_67._394))}function _877(){var _483=new Date();return _108.max(new Date(_483.getFullYear(),0,1).getTimezoneOffset(),new Date(_483.getFullYear(),6,1).getTimezoneOffset())}function _879(){try{_16._22(_9,'scroll','div,section,ul,.mf-scroll-listen',function(_6){if(_6.target===_9){_0._82={x:_1.pageXOffset,y:_1.pageYOffset}}else if(_6.delegatedTarget){_888(_70(_6.delegatedTarget),_6.delegatedTarget.scrollLeft,_6.delegatedTarget.scrollTop)}},{_28:true,_598:true});_16._22(_9,'mousemove',function(_6){_0._117={x:_6.pageX,y:_6.pageY}},{_28:true});_16._22(_9.documentElement,'mouseleave',function(){_25(_5._880,{});_150(_90._172)},{_28:true,_143:true});_16._22(_9,'mousedown',function(_6){_912(_6,_6.target)},{_28:true});_16._22(_9,'mouseup',function(_6){_914(_6,_6.target)},{_28:true});_16._22(_9,'click','a,input,select,button,.mf-listen-click',function(_6){_902(_6,_6.delegatedTarget||_6.target)},{_28:true,_598:true});try{var _414=_896();if(_414){_16._22(_9,'mouseenter',_414,function(_6){_25(_5._281,{x:_6.pageX,y:_6.pageY,target:_70(_6.target)})},{_28:true,_143:true});_16._22(_9,'mouseleave',_414,function(_6){_25(_5._172,{x:_6.pageX,y:_6.pageY,target:_70(_6.target)})},{_28:true,_143:true})}}catch(_47){_8('Error in getHoverSelectors: '+_47.message)}_16._22(_9,'focus','input,textarea,select,button',function(_6){_25(_5._514,{target:_70(_6.target)})},{_28:true});_16._22(_9,'blur','input,textarea,select,button',function(_6){_25(_5._511,{target:_70(_6.target)})},{_28:true});_16._22(_9,'keypress','input,textarea,select',function(_6){if(_6.target&&_6.target.type!=='password'){_25(_5._339,{target:_70(_6.target)})}},{_28:true});_16._22(_9,'keydown','input,textarea,select',function(_6){if(_6.target&&_6.target.type!=='password'){_25(_5._274,{target:_70(_6.target),value:_873(_6)})}},{_28:true});_16._22(_9,'keyup','input,textarea,select',function(_6){if(_6.target&&_6.target.type!=='password'){_25(_5._280,{target:_70(_6.target),value:_865(_6.target)});if(_412(_229(_6.target)))_81('payment')}},{_28:true});_16._22(_9,'change','input,textarea,select',function(_6){_25(_5._239,{target:_70(_6.target),value:_187(_6.target)});if(_6.target&&['password','file'].indexOf(_6.target.type)===-1&&_412(_229(_6.target)))_81('payment')},{_28:true});_16._22(_9,'submit','form',function(_6){_482(_70(_6.target))},{_28:true});if(_12._440){_16._22(_9,'touchstart',function(_6){if(!_6.originalEvent||!_6.originalEvent.touches)return;var _77=_6.originalEvent.touches;if(_77.length>0){_25(_5._341,{x:_77[0].pageX,y:_77[0].pageY})}if(_77.length>1){_25(_5._344,{x:_77[1].pageX,y:_77[1].pageY})}},{_28:true});_16._22(_9,'touchmove',function(_6){if(!_6.originalEvent||!_6.originalEvent.touches)return;var _77=_6.originalEvent.touches;var _313=_98();var _407=_313-_67._480;if(_77.length>0&&_0._478<_407){_25(_5._342,{x:_77[0].pageX,y:_77[0].pageY});if(_77.length>1){_25(_5._345,{x:_77[1].pageX,y:_77[1].pageY})}_0._478=_313;var _853=!_195(_259(),_0._152);if(_853){_0._152=_259();_25(_5._271,_0._152);if(_0._322<_407){_25(_5._271,_0._152);_0._322=_313}var _854=_0._170[_0._170.length-0];if(new Date()-_854<1000){_0._170.push(+new Date());_0._170=_0._170.slice(-5);if(_0._223.length+_0._170.length===5){_150(_90._463)}}}_0._82={x:_1.pageXOffset,y:_1.pageYOffset};if(_0._348<_407&&!_195(_0._82,_0._217)){_0._217=_0._82;_25(_5._268,_0._82);_0._348=_313}}},{_28:true});_16._22(_9,'touchend',function(_6){if(!_6.originalEvent||!_6.originalEvent.touches)return;var _77=_6.originalEvent.touches;if(_77.length===0)_25(_5._272,{x:0,y:0});if(_77.length>1)_25(_5._346,{x:0,y:0})},{_28:true});_16._22(_9,'orientationchange',function(){_25(_5._343,{x:_1.orientation,y:0});_0._223.push(+new Date());_0._223=_0._223.slice(-5);if(_0._223.length+_0._170.length===5){_150(_90._463)}},{_28:true})}_16._22(_1,_845(),function(){if(_0._144){if(+new Date()-_0._144<_14.registerSubmitTimeout){_8('Registering formSubmit');_0._220=_113(_14.location.pathname)}else{_8('Not registering formSubmit. Timeout exceeded.')}}_59()},{_28:true});var _464=_1.onerror;_1.onerror=function(_114,_19,_421,_404,_434){var _859=new Date()-_0._251;if(_859>1000&&_0._228<50){_0._251=+new Date();var _349='Malformed error';if(_114&&_114.message)_349=_114.message;else if(typeof _114==='string')_349=_114;_0._131={_114:_349,_19:typeof _19==='string'?_19:'Malformed URL',_421:''+_421,_404:''+_404,_862:_434&&_434.stack&&_434.stack.substring(0,800)};if(_0._173!==0&&_0._251-_0._173<100){_150(_90._486,_0._528);_127._311('clickError');_531()}}if(_464)_464.apply(this,arguments)};if(_14.keyLogging)_886()}catch(_47){_8('Error in bindDomEvents: '+_47.message)}}function _531(){if(_0._131){_0._228++;var _864='website='+_53+'&session='+_12._36+'&page='+_12._99+'&type=error&data='+_80(_7._79({seq:_0._228,errorMsg:_0._131._114,url:_0._131._19,line:_0._131._421,col:_0._131._404,stack:_0._131._862}));_25(_5._88,{x:_0._228,y:0});_8('JS error '+_0._228+', msg: '+_0._131._114);_121({_19:_153+'data',_13:_864});_0._131=null}}function _532(){_16._337();if(_417)_1.clearInterval(_417)}function _886(){_0._208=_461();_417=_1.setInterval(function(){_911(_917(_461(),_0._208))},200)}function _461(){var _447=_9.querySelectorAll('input,textarea,select');var _454={};for(var i=0;i<_447.length;i++){var _40=_447[i];if(_7._129(_40,'no-mouseflow'))continue;if(!_908(_40,['text','textarea','select-one']))continue;_454[_70(_40)]=_187(_40)}return _454}function _908(_40,_910){return _40.type&&new RegExp(_910.join('|'),'i').test(_40.type)}function _917(_208,_519){var _210=[];for(var _24 in _208){var _3=_208[_24];var _443=_519[_24];if(_443!==undefined&&_443!==_3)_210.push({id:_24,value:_3});_519[_24]=_3}return _210}function _911(_210){if(_98()-_0._493>100){for(var i=0;i<_210.length;i++){var _42=_210[i];_25(_5._239,{target:_42.id,value:_42.value})}}}function _912(_6,_4){if((+new Date())-_0._524<20)return;_0._524=+new Date();_25(_5._270,{x:_6.pageX,y:_6.pageY,target:_70(_4)})}function _914(_6,_4){if((+new Date())-_0._527<20)return;_0._527=+new Date();var _133=_373(_4,_6.pageX,_6.pageY);if(!_133&&_4.firstElementChild)_133=_373(_4.firstElementChild,_6.pageX,_6.pageY);if(_133)_25(_5._285,{x:_133.x,y:_133.y,target:_70(_4)})}function _902(_6,_4){if((+new Date())-_0._173<20)return;var _43=_70(_4);_0._173=+new Date();_0._528=_43;_25(_5._282,{x:_6.pageX,y:_6.pageY,target:_43});_0._212.push(_0._173);_0._212=_0._212.slice(-5);if(_0._212[4]-_0._212[0]<1000){_150(_90._909,_43);_127._311('clickRage')}if(_0._173!==0&&_0._251!==0&&_0._173-_0._251<100){_150(_90._486,_43);_127._311('clickError');_531()}}function _888(_45,_298,_300){_0._181[_45]={x:_298,y:_300};if(_275)return;_275=_1.setTimeout(_539,100);function _539(){_275=null;var _534=true;for(var _43 in _0._181){if(_0._181.hasOwnProperty(_43)){_25(_5._334,{x:_0._181[_43].x,y:_0._181[_43].y,target:_43});_534=false}}if(!_534){_0._181={};_275=_1.setTimeout(_539,100)}}}function _373(_33,_894,_895){var _46=_636(_33);if(_46==null||!_46.height||!_46.width)return null;return{x:parseInt((_894-_0._82.x-_46.x)/parseFloat(_46.width)*65535),y:parseInt((_895-_0._82.y-_46.y)/parseFloat(_46.height)*65535)}}function _896(){var _518={};var _545=/[^(]:hover/;if(_14.useAllHoverSelectors){for(var _2=0;_2<_9.styleSheets.length;_2++){var _245=_9.styleSheets[_2];try{var _257=_245.cssRules?_245.cssRules:_245.rules;for(var _56=0;_56<_257.length;_56++){var _544=_245.cssRules[_56];if(!_545.test(_544.selectorText))continue;var _34=_544.selectorText.split(',');var _10;for(var _413=0;_413<_34.length;_413++){_10=_34[_413].replace(/^\\s+|\\s+$/g,'');if(_545.test(_10)){_10=_10.substring(0,_10.indexOf(':hover'));_10=_907(_10);_518[_10]=true}}}}catch(_47){_8('Cannot inspect external css file, :hover support may fail: '+_245.href)}}}var _34=['a','input','select','button','textarea','li','canvas','.mf-listen'];for(_10 in _518){_10=_10.replace(/^\\s+|\\s+$/g,'');if(_10!=''&&_10!='a'&&!_213(_10,' a')&&!_213(_10,' select')&&!_213(_10,' submit')&&!_213(_10,' textarea')&&!_213(_10,' li'))_34.push(_10)}return _34.slice(0,1000).join(',')}function _907(_42){var _515=[/:active/g,/:visited/g,/::before/g,/:before/g,/::after/g,/:after/g,/::first-letter/g,/::first-line/g,/::selection/g];for(var _2=0;_2<_515.length;_2++)_42=_42.replace(_515[_2],'');return _42}function _80(_903){try{return _1.encodeURIComponent(_903)}catch(_47){_8('Encode error: '+_47.message);return''}}function _25(_15,_23){if(!_93)return;if(_0._13.length===0)_0._211=+new Date();var _41=_501(_15,_23,_0._147,_0._37);if(!_41)return;if(_792(_15)){_1.clearTimeout(_214);_214=_1.setTimeout(_633,_67._394);_0._316=_98()}if(_502(_15))_0._493=_98();var _846=_627(_0._116)+(_41._111?_278.encode(_41._111).length:0),_809=_627(_0._37)+(_41._3?_278.encode(_41._3).length:0);var totalDataSize=_0._13.length+_41._13.length+_846+_809;if(totalDataSize>_67._505){_263();if(_41._3!==undefined)_41._13[_41._13.length-1]=0;_0._13=_41._13;_0._13[0]=0;_0._13[1]=0;if(_41._111!==undefined)_0._116.push(_41._111);if(_41._3!==undefined)_0._37.push(_41._3)}else{_0._13=_0._13.concat(_41._13);if(_41._111!==undefined)_0._116.push(_41._111);if(_41._3!==undefined)_0._37.push(_41._3);if(_15===_5._272){_263()}}}function _399(_420){_496(_12._397,_420)}function _496(_99,_420){var _13=[],_147=[],_116=[],_37=[];_420.forEach(function(_44){if(!_44._23)_44._23={};var _41=_501(_44._15,_44._23,_147,_37);if(!_41)return;_13=_13.concat(_41._13);if(_41._111!==undefined)_116.push(_41._111);if(_41._3!==undefined)_37.push(_41._3)});var _207=0;var _377=_526(_207,_13,_116,_37);_121({_19:_153+'events?w='+_53+'&s='+_12._36+'&p='+_99+'&li=0&lh=0&ls=0&d='+_377})}function _501(_15,_23,_147,_37){var _111;var _3=_23.value;var _424=-1;var _13=[];_13._630=false;if(_798(_15)&&!_799(_23))return null;if(_23.value&&_23.value.length>_67._505){_8('Event, type: '+_15+', skipping due to large value, details: '+_7._79(_23));return null}_122(2,_643(),_13);_122(1,_15,_13);if(_23.x<0)_23.x=0;if(_23.y<0)_23.y=0;if(_23.x>65534)_23.x=65534;if(_23.y>65534)_23.y=65534;if(_23.x!=undefined)_122(2,_23.x,_13);if(_23.y!=undefined)_122(2,_23.y,_13);if(_23.target!=undefined){if(typeof _23.target=='object'&&_23.target.id!=undefined)_23.target=_23.target.id;if(_15!==_5._81&&_23.target&&_23.target.indexOf('||')===-1){var _4=_638(_23.target);if(_4&&_4.form){_23.target=_70(_4.form)+'||'+_23.target}}for(var _2=0;_2<_147.length;_2++){if(_147[_2]===_23.target){_424=_2;break}}}if(_800(_15)){if(!_23.target){_122(2,65535,_13)}else if(_424===-1){var _506=_147.length;_122(2,_506,_13);_111=_506+':'+_23.target;_147.push(_23.target)}else{_122(2,_424,_13)}}if(_15!==_5._283&&_15!==_5._203)_8('Event, type: '+_15+', time: '+_98()+', details: '+_7._79(_23));if(_806(_15)){if(_3 instanceof Array)_3=_3.join(', ');_122(1,_37.length,_13)}if(_13._630){_8('Event, type: '+_15+', skipping due to overflow in temp data, details: '+_7._79(_23));return null}return{_13:_13,_111:_111,_3:_3}}function _643(){return+new Date()-_0._211}function _797(){return _1.performance&&_1.performance.timing.domLoading>0?_0._529-_1.performance.timing.domLoading:0}function _830(){return _1.performance&&_1.performance.timing.loadEventStart>0&&_1.performance.timing.fetchStart>0?_1.performance.timing.loadEventStart-_1.performance.timing.fetchStart:0}function _798(_15){return[_5._271,_5._268,_5._283,_5._270,_5._285,_5._282,_5._281,_5._172,_5._378,_5._88,_5._341,_5._342,_5._272,_5._343,_5._344,_5._345,_5._346,_5._330,_5._490,_5._328,_5._489,_5._321,_5._54,_5._334,_5._203,_5._61].indexOf(_15)!==-1}function _799(_23){return _23.x!==undefined&&_23.y!==undefined&&!isNaN(_23.x)&&!isNaN(_23.y)}function _800(_15){return[_5._270,_5._285,_5._282,_5._281,_5._172,_5._339,_5._280,_5._239,_5._514,_5._511,_5._286,_5._81,_5._330,_5._328,_5._321,_5._274,_5._509,_5._508,_5._334,_5._203,_5._61].indexOf(_15)!==-1}function _806(_15){return[_5._280,_5._239,_5._274,_5._61].indexOf(_15)!==-1}function _792(_15){return _791(_15)||_502(_15)||_775(_15)}function _791(_15){return[_5._283,_5._270,_5._285,_5._282,_5._268,_5._281,_5._172,_5._203].indexOf(_15)!==-1}function _502(_15){return[_5._339,_5._280,_5._239,_5._274].indexOf(_15)!==-1}function _775(_15){return[_5._341,_5._342,_5._272,_5._343,_5._344,_5._345,_5._346,_5._330,_5._490,_5._328,_5._489,_5._321].indexOf(_15)!==-1}function _488(){if(!_195(_259(),_0._152)){_0._152=_259();_25(_5._271,_0._152);_0._322=_98()}if(!_195(_0._117,_0._546)){_0._546=_0._117;_25(_5._283,_0._117)}if(!_195(_0._82,_0._217)){_0._217=_0._82;_25(_5._268,_0._82);_0._348=_98()}}function _808(){if(!_195(_0._117,_0._543)){_0._543=_0._117;var _535=_9.elementFromPoint(_0._117.x-_0._82.x,_0._117.y-_0._82.y);var _133=_373(_535,_0._117.x,_0._117.y);if(_133){_25(_5._203,{x:_133.x,y:_133.y,target:_70(_535)})}}}function _263(){var _207=_0._211-_0._89;var _377=_526(_207,_0._13,_0._116,_0._37);_0._216.push(_377);_0._13=[];_0._37=[];_0._116=[];_0._211=+new Date();if(_98()>_67._811){_8('Pageview over max.time, stopping.');_532();_1.clearInterval(_380);_1.clearInterval(_382);_1.clearInterval(_391);_1.clearTimeout(_214);_190=false}else{_837()}}function _526(_207,_13,_116,_37){var _204=[];_122(3,_207,_204);_122(2,_13.length,_204);_204=_204.concat(_13);return _836.e(_204)+'.'+_628(_116||[])+'.'+_628(_37||[])}function _837(){if(_190&&_0._216.length>0){if(_0._231==1){_12._225++}var _87=_12._267?_359():[];for(var _2=0;_2<_0._216.length;_2++){_87.push({_19:_153+'events?w='+_53+'&s='+_12._36+'&p='+_12._99+'&q='+_0._231+'&li='+_0._516+'&lh='+_0._485+'&ls='+_0._446+'&d='+_0._216[_2]});_0._231++;_0._516=_0._316;_0._485=_0._152.y;_0._446=_0._217.y}_0._216=[];if(_12._267){_451(_87.slice(-10));_456()}else{for(var _2=0;_2<_87.length;_2++){_121(_87[_2])}}if(_0._231>_67._841)_59()}}function _456(){if(_0._381)return;var _17=_359().slice(0,1)[0];if(_17){_0._381=true;_17._171=_17._88=function(){_451(_359().slice(1));_0._381=false;_1.setTimeout(_456,1)};_121(_17)}}function _359(){return _7._149(_1.sessionStorage.getItem('mf_transmitQueue'))||[]}function _451(_87){_1.sessionStorage.setItem('mf_transmitQueue',_7._79(_87))}function _121(_17){if(!_17||!_17._19)return;_352();if(_571()&&_1.XDomainRequest){try{_17._19=_812(_354(_17._19,'0'));var _105=new _1.XDomainRequest();_105.open(_17._13?'POST':'GET',_17._19);_105.onload=function(){if(_17._171)_17._171(_450(_105))};_105.onerror=function(){if(_17._88)_17._88(_450(_105))};_105.onprogress=function(){_8('XDR progress:'+_17._19)};_105.ontimeout=function(){_8('XDR timeout:'+_17._19)};_105.timeout=20000;_1.setTimeout(function(){_105.send(_17._13)},500)}catch(_47){_8('Error in transmitCrossDomain (XDomainRequest): '+_47.message);if(_17._88)_17._88({})}}else if(_1.XMLHttpRequest){try{var _85=new _1.XMLHttpRequest();_85.onreadystatechange=function(){if(_85.readyState!==4||!_85.status)return;if(_818(_85.status)){if(_17._171)_17._171(_458(_85))}else{if(_17._88)_17._88(_458(_85))}};if(_17._13,_17._462){_17._13=pako.gzip(_17._13);_17._19=_354(_17._19,'1')}else{_17._19=_354(_17._19,'0')}_85.open(_17._13?'POST':'GET',_17._19,true);_85.setRequestHeader('Content-type','text/plain');if(_17._829)_85.withCredentials=true;_85.send(_17._13)}catch(_47){_8('Error in transmitCrossDomain (XMLHttpRequest): '+_47.message);if(_17._88)_17._88({})}}}function _450(_105){return{_444:_105.responseText}}function _458(_85){return{_356:_85.status,_444:_85.response}}function _354(_19,_3){return/\\/(html|dom)/.test(_19)?_19+(_19.indexOf('?')===-1?'?':'&')+'gz='+_3:_19}function _175(_15,_13){_121({_19:_153+'data',_13:'website='+_53+'&session='+_12._36+'&page='+_12._99+'&type='+_15+'&data='+_80(_7._79(_13))})}function _818(_356){return _356>=200&&_356<300}function _571(){return _9.all&&!_1.atob;}function _833(){return _9.all&&!_9.addEventListener;}function _812(_19){return _19.replace(/^https?:/i,_14.location.protocol)}function _813(_54,_814){var _357=_80(_7._79(_54.data));var _17={_19:_153+'html'+'?website='+_53+'&session='+_12._36+'&page='+_12._99,_13:'size='+_814+'&html='+_357,_462:_14.compress};if(_12._267){var _87=_475();if(_357!=='')_87.push(_17);else _8('Initial DOM empty, not sending');_474(_87.slice(-10));_476()}else{if(_357!=='')_121(_17);else _8('Initial DOM empty, not sending')}}function _476(){var _87=_475();var _17=_87.splice(0,1)[0];if(_17){_8('Sending initial DOM mutations. Size: '+_17._13.length);_17._171=_17._88=function(){_474(_87);_1.setTimeout(_476,1)};_121(_17)}}function _475(){return _7._149(_1.sessionStorage.getItem('mf_initialDomQueue'))||[]}function _474(_87){try{_1.sessionStorage.setItem('mf_initialDomQueue',_7._79(_87))}catch(_47){_8('InitialDomQueue could not be stored in sessionStorage: '+_47.message)}}function _817(_54){var _177=_54.data.args[1].some(function(_94){return _368._177(_94)});if(_177){_8('DOM mutation is a duplicate and has not been added.');return}var _471=_773(_54,_0._158);if(_471>-1){_0._158[_471].data=_54.data;_8('Deduplicating DOM mutation');return}if(_14.domReuse){var _264=_823(_54);var _470=_821(_264);if(_470>-1){_54.sequence=_470;_8('Reusing already sent DOM mutation, sequence '+_54.sequence);_25(_5._54,{x:_54.sequence,y:0});return}else _0._365.push(_264)}_54.sequence=++_0._820;_25(_5._54,{x:_54.sequence,y:0});_0._158.push(_54);if(!_218)_218=_1.setTimeout(_468,1500)}function _821(_264){for(var i=0;i<_0._365.length;i++)if(_0._365[i]==_264)return i+1;return-1}function _823(_54){return _113(_7._79(_54.data))}function _468(){_218=0;if(_190&&_0._158.length>0){var _433=_0._158.length;var _13='';for(var i=0;i<_433;i++){var _54=_0._158[i];_13+=(_13!==''?'|||':'')+_54.sequence+'.'+_7._79(_54.data)}_0._158=[];if(_13!=''){_13='website='+_53+'&session='+_12._36+'&page='+_12._99+'&data='+_80(_13);_121({_19:_153+'dom',_13:_13,_462:_14.compress});_8('Sending DOM mutations: '+_433+', size: '+_13.length);_0._547+=_433;if(_0._547>_67._587){_8('DOM mutation limit of '+_67._587+' reached. Stopping recording.');_59()}}}}function _773(_74,_651){if(!_14.domDeduplicator)return-1;var _78=_74.data.args;var _646=_653(_78);var _648=_644(_78);if(!_646&&!_648)return-1;for(var i=0;i<_651.length;i++){var _367=_651[i].data.args;if(_646&&_653(_367)&&_822(_78[2],_367[2])){return i}else if(_648&&_644(_367)){return i}}return-1}function _653(_78){return _631(_78)&&_78[2].filter(_825).length===_78[2].length}function _644(_78){return _631(_78)&&_78[2].filter(_824).length===_78[2].length}function _631(_78){return _78[0].length===0&&_78[1].length===0&&_78[2].length>0&&_78[3].length===0}function _825(_219){return _219.attributes.style&&_621(_219.attributes)===1}function _824(_219){return _219.attributes.d&&_621(_219.attributes)===1}function _621(obj){var count=0;for(var prop in obj)if(obj.hasOwnProperty(prop))count++;return count}function _822(_366,_620){if(_366.length!==_620.length)return false;for(var i=0;i<_366.length;i++){var _826=_366[i],_819=_620[i];if(_826.id!==_819.id)return false}return true}function _364(){if(_0._13.length>0&&_643()>=5000){_25(_5._364,{});_263()}}function _633(){_8('Inactivity timeout.');_59()}function _195(_106,_635){return _106.x==_635.x&&_106.y==_635.y}function _259(){return{x:_1.innerWidth,y:_1.innerHeight}}function _636(_362){if(!_362||!_362.getBoundingClientRect)return null;var _261=_362.getBoundingClientRect();var _46={x:_261.left,y:_261.top,width:_261.width,height:_261.height};return _46}function _70(_4){try{return _816(_4)||_637(_4)}catch(_47){_8('Error in getElementPath: '+_47.message)}return''}function _816(_4){if(_4.attributes['name']&&_4.attributes['name'].value&&_4.form!=undefined&&/button|input|select|textarea/.test(_4.tagName.toLowerCase())){var _369=_9.getElementsByName(_4.attributes['name'].value);if(_369.length>1){for(var _2=0;_2<_369.length;_2++)if(_4==_369[_2])return _4.attributes['name'].value+'['+_2+']_mf'}else return _4.attributes['name'].value}return null}function _637(_68){var _31=[];try{while(_68&&_68.nodeType==1){var _10='';if(_68.getAttribute('id')&&!_7._155(_68,'data-mf-ignore-child-ids')){_10+='#'+_68.getAttribute('id');_31.unshift(_10);break}else{_10+=_68.tagName.toLowerCase();var _260='',_360=_68,_183=1;if(_68.parentNode&&_68.parentNode.tagName&&_68.parentNode.tagName.toLowerCase()=='body'){var _179=_7._164(_68);_260=_179.length?'.'+_179.join('.'):''}if(_260!==''&&_9.querySelectorAll&&_9.querySelectorAll('body > '+_10+_260).length==1)_10+=_260;else{while((_360=_360.previousElementSibling)){if(_360.tagName.toLowerCase()===_10)_183++}if(_183!==1)_10+=':['+_183+']'}}_31.unshift(_10);if(!_68.parentNode)return'';_68=_68.parentNode}}catch(_47){_8('Error in _637: '+_47.message)}return _31.join(' > ').replace('html > body > ','> ')}function _638(_45){if(!_45)return null;var _4=_815(_45);if(!_4){try{_4=_9.querySelector(_827(_45))}catch(_47){_8('Error in _638: '+_47.message)}}return _4}function _815(_21){if(!_21)return null;var _200=_645.exec(_21);if(_200&&_200[1]){try{var _64=_1.parseInt(_200[1]);return _9.getElementsByName(_21.replace(_645,''))[_64]}catch(_47){}}var _138=_9.getElementsByName(_21);if(_138&&_138.length===1)return _138[0];return null}function _827(_31){if(!_31)return null;if(_31.substr(0,1)==='>')_31='html > body '+_31;_31=_31.replace(/^#(\\d)/,'#\\\\3$1 ');_31=_31.replace(/^#(-\\d)/,'#\\\\$1');_31=_31.replace(/:([^\\[])/g,'\\\\:$1');_31=_31.replace(/^#[^\\s]+/,function(id){return'#'+id.slice(1).replace(/([^a-zA-Z\\d\\s:\\\\])/g,'\\\\$1')});_31=_31.replace(/:\\[([^\\]]+)\\]/g,':nth-of-type($1)');return _31}function _122(_828,_3,_227){for(var _2=_828-1;_2>0;_2--){var _634=_108.pow(256,_2);_632(_108.floor(_3/_634),_227);_3=_3%_634}_632(_3,_227)}function _632(_629,_227){if(_629>255){_227._630=true;return}_227.push(_629)}function _628(_4){var _30='';for(var _2=0;_2<_4.length;_2++){_30+=(_2>0?',':'')+_278.encode(''+_4[_2])}return _30}function _627(_4){var _284=0;for(var _2=0;_2<_4.length;_2++)_284+=_278.encode(''+_4[_2]).length+1;return _284>0?_284-1:_284}function _269(_42){if(_843(_42.hostname)||!_14.includeSubDomains)return _42.hostname;var _27=_42.href;var _844=/\\.co\\.|\\.com\\.|\\.ac\\.|\\.org\\.|\\.gov\\.|\\.edu\\.|\\.net\\./;_27=_27.replace(/^http(s)?\\:\\/\\/?/i,'').replace(/^([^\\/]+)\\/.*/i,'$1').replace(/:[\\d]*$/,'');if(_844.test(_27))_27=_27.replace(/^([^\\.]+\\.){1,}([^\\.]+\\.[^\\.]+\\.[^\\.]+)$/i,'$2');else _27=_27.replace(/^([^\\.]+\\.){1,}([^\\.]+\\.[^\\.]+)$/i,'$2');return'.'+_27}function _843(ipaddress){if(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipaddress)){return(true)}return(false)}function _371(_21,_3,_842,_27){var _626='';if(_842==1){var _100=new Date();_100.setTime(_100.getTime()+_67._840);_626='; expires='+_100.toGMTString()}var _839=_14.secureCookie?'secure;':'';_9.cookie=_21+'='+_3+_626+'; path=/; domain='+_27+';'+_839}function _624(_21){var _622=_21+'=';var _623=_9.cookie.split(';');for(var i=0;i<_623.length;i++){var c=_623[i];while(c.charAt(0)===' '){c=c.substring(1)}if(c.indexOf(_622)===0){return c.substring(_622.length,c.length)}}return''}function _923(_838){return _838.replace(/<!--[\\s]*MouseflowExcludeStart[\\s]*([\\s\\S]*?)-->([\\s\\S]*?)<!--[\\s]*MouseflowExcludeEnd[\\s]*-->/g,'$1')}var _836=new function(){for(var d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'.split(''),c=64;c;)--c;this.e=function(e){for(var a=[],f=0,b=0,g,c=e.length,h=c%3;f<c;)a[b++]=d[(g=e[f++]<<16|e[f++]<<8|e[f++])>>18&63]+d[g>>12&63]+d[g>>6&63]+d[g&63];if(h)for(a[--b]=a[b].substr(0,a[b].length-(h=3-h));h--;)a[b]+='*';return a.join('')}};var _278={_277:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',encode:function(c){for(var a='',d,b,e,i,h,f,g=0,c=this._835(c);g<c.length;)d=c.charCodeAt(g++),b=c.charCodeAt(g++),e=c.charCodeAt(g++),i=d>>2,d=(d&3)<<4|b>>4,h=(b&15)<<2|e>>6,f=e&63,isNaN(b)?h=f=64:isNaN(e)&&(f=64),a=a+this._277.charAt(i)+this._277.charAt(d)+this._277.charAt(h)+this._277.charAt(f);return a},_835:function(c){for(var c=c.replace(/\\r\\n/g,'\\n'),a='',d=0;d<c.length;d++){var b=c.charCodeAt(d);128>b?a+=String.fromCharCode(b):(127<b&&2048>b?a+=String.fromCharCode(b>>6|192):(a+=String.fromCharCode(b>>12|224),a+=String.fromCharCode(b>>6&63|128)),a+=String.fromCharCode(b&63|128))}return a}};function _388(){var _106=function(){return((1+_108.random())*65536|0).toString(16).substring(1)};return _106()+_106()+_106()+_106()+_106()+_106()+_106()+_106()}var _386=0;function _572(){if(_9.body){_834();return}_386++;if(_386===1){_8('Retrying to initialize recorder - document.body is not set')}else if(_386===25){_8('Failed to initialize recorder');return};_1.setTimeout(_572,200)}function _834(){_8('Initializing recorder');if(!_810(_14.location.hostname))return;if(_833()){_8('Recording not started - browser is IE8 or older');return}if(_654)_832();if(_14.privacyToolEnabled){_8('Starting privacy tool');_314._39(_119,_53,_238,_242,_8);return}if(_14.liveHeatmapsEnabled){_8('Starting live heatmaps');_189._39(_53,_8);_1._mfq=new _383(_1._mfq);return}if(_654||_831)return;_649=true;var _655=false;function _647(){if(!_93&&_14.autoStart&&_9.readyState!=='loading'){_39()}if(!_655&&_9.readyState==='complete'){_25(_5._378,{x:_830(),y:_7._243()});_655=true}}_16._22(_9,'readystatechange',_647);_647()}function _845(){return _14.useUnload?'unload':'beforeunload'}function _213(_548,_650){return _548.indexOf(_650,_548.length-_650.length)!==-1}function _113(_42){var _163=0,_652;for(var _2=0;_2<_42.length;_2++){_652=_42.charCodeAt(_2);_163=((_163<<5)-_163)+_652}return _163.toString()}function _618(_24){for(var _2=0;_2<_0._139.length;_2++)if(_0._139[_2].split('_')[0]===_113(_24)){return _2}return-1}function _640(_24,_3){var _350=_618(_24);var _370=_113(''+_3);if(_350>-1){if(_0._139[_350].split('_')[1]===_370){return false}_0._139[_350]=_113(_24)+'_'+_370}else if(_0._139.length<20){_0._139.push(_113(_24)+'_'+_370)}return true}function _810(_27){var _788=_27;_27=_324(_27);var _600=false;for(var _2=0;_2<_253.length;_2++){if(_27==_324(_253[_2])){_600=true;break}}_27=_787(_27);var _567=false;for(var _2=0;_2<_253.length;_2++){if(_27==_324(_253[_2])){_567=true;break}}var _30=_600||_567;if(!_30)_8('Domain was blocked: '+_788+' - domain list: '+_253);return _30}function _324(_27){if(_27==null)return'';_27=_27.toLowerCase();_27=_27.replace(/^\\s+|\\s+$/g,'');if(_27.substring(0,4)=='www.'){_27=_27.substring(4,_27.length)}return _27}function _787(_27){if(_14.includeSubDomains){_27=_786(_27)}return _27}function _786(_27){var _103=_27.split('.');if(_103.length<=2)return _27;if(_27.indexOf('.co.')>-1||_27.indexOf('.com.')>-1||_27.indexOf('.org.')>-1){_103=_103.slice(_103.length-3,_103.length);return _103.join('.')}_103=_103.slice(_103.length-2,_103.length);return _103.join('.')}function _785(){var _30=[];if(typeof Ember!='undefined')_30.push('em');if(typeof angular!='undefined')_30.push('an');if(typeof Backbone!='undefined')_30.push('bb');return _30}function _784(){if(_14.autoTagging){_8('Autotagging session');var _569=['utm_source','utm_medium','utm_term','utm_content','utm_campaign','gclid'];for(var _2=0;_2<_569.length;_2++){var _323=_569[_2];var _3=_570(_14.location.href,_323);if(!_3)_3=_570(_9.referrer,_323);if(_3)_1._mfq.push(['setVariable',_323,_3])}}}function _570(_19,_21){_21=_21.replace(/[\\[]/,'\\\\[').replace(/[\\]]/,'\\\\]');var regex=new RegExp('[\\\\?&]'+_21+'=([^&#]*)'),results=regex.exec(_19);return results===null?'':decodeURIComponent(results[1].replace(/\\+/g,' '))}function _783(_338){switch(_338){case' ':case'\"':case\"'\":case'.':case',':case'_':case'-':case'+':case'/':case'*':case':':case'=':case'!':case'?':case'@':case'#':case'%':case'&':case'{':case'}':case'[':case']':case'\\\\':case'|':return false;default:return true}}function _789(_3,_333){var _30='';for(var _2=0;_2<_333;_2++){_30+=_3}return _30}function _98(){return+new Date()-_0._89}function _8(_114){if(_14.debug)console.log('MF'+(_14.includeDebugTime?' - '+_98():'')+': '+_114)}if(!_571()){var pako=function(){function t(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}function e(t,e,a,n){for(var r=65535&t|0,i=t>>>16&65535|0,s=0;0!==a;){s=a>2e3?2e3:a,a-=s;do r=r+e[n++]|0,i=i+r|0;while(--s);r%=65521,i%=65521}return r|i<<16|0}var a={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"},n=function(){function t(){for(var t,e=[],a=0;a<256;a++){t=a;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}function e(t,e,n,r){var i=a,s=r+n;t^=-1;for(var h=r;h<s;h++)t=t>>>8^i[255&(t^e[h])];return t^-1}var a=t();return e}(),r={Buf8:Uint8Array,Buf16:Uint16Array,assign:function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var a=e.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(var n in a)a.hasOwnProperty(n)&&(t[n]=a[n])}}return t},shrinkBuf:function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)},arraySet:function(t,e,a,n,r){if(e.subarray&&t.subarray)return void t.set(e.subarray(a,a+n),r);for(var i=0;i<n;i++)t[r+i]=e[a+i]},flattenChunks:function(t){var e,a,n,r,i,s;for(n=0,e=0,a=t.length;e<a;e++)n+=t[e].length;for(s=new Uint8Array(n),r=0,e=0,a=t.length;e<a;e++)i=t[e],s.set(i,r),r+=i.length;return s}},i=function(){function t(t){var e,a,n,i,s,h=t.length,_=0;for(i=0;i<h;i++)a=t.charCodeAt(i),55296===(64512&a)&&i+1<h&&(n=t.charCodeAt(i+1),56320===(64512&n)&&(a=65536+(a-55296<<10)+(n-56320),i++)),_+=a<128?1:a<2048?2:a<65536?3:4;for(e=new r.Buf8(_),s=0,i=0;s<_;i++)a=t.charCodeAt(i),55296===(64512&a)&&i+1<h&&(n=t.charCodeAt(i+1),56320===(64512&n)&&(a=65536+(a-55296<<10)+(n-56320),i++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e}function e(t){var e=t.length;if(e<65537&&(t.subarray&&n||!t.subarray&&a))return String.fromCharCode.apply(null,r.shrinkBuf(t,e));for(var i=\"\",s=0;s<e;s++)i+=String.fromCharCode(t[s]);return i}var a=!0,n=!0;try{String.fromCharCode.apply(null,[0])}catch(t){a=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){n=!1}return{string2buf:t,buf2binstring:e}}(),s=function(){function t(t){for(var e=t.length;--e>=0;)t[e]=0}function e(t,e,a,n,r){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=n,this.max_length=r,this.has_stree=t&&t.length}function a(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function n(t){return t<256?it[t]:it[256+(t>>>7)]}function i(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function s(t,e,a){t.bi_valid>Q-a?(t.bi_buf|=e<<t.bi_valid&65535,i(t,t.bi_buf),t.bi_buf=e>>Q-t.bi_valid,t.bi_valid+=a-Q):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)}function h(t,e,a){s(t,a[2*e],a[2*e+1])}function _(t,e){var a=0;do a|=1&t,t>>>=1,a<<=1;while(--e>0);return a>>>1}function l(t){16===t.bi_valid?(i(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function o(t,e){var a,n,r,i,s,h,_=e.dyn_tree,l=e.max_code,o=e.stat_desc.static_tree,d=e.stat_desc.has_stree,u=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,c=e.stat_desc.max_length,g=0;for(i=0;i<=N;i++)t.bl_count[i]=0;for(_[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<M;a++)n=t.heap[a],i=_[2*_[2*n+1]+1]+1,i>c&&(i=c,g++),_[2*n+1]=i,n>l||(t.bl_count[i]++,s=0,n>=f&&(s=u[n-f]),h=_[2*n],t.opt_len+=h*(i+s),d&&(t.static_len+=h*(o[2*n+1]+s)));if(0!==g){do{for(i=c-1;0===t.bl_count[i];)i--;t.bl_count[i]--,t.bl_count[i+1]+=2,t.bl_count[c]--,g-=2}while(g>0);for(i=c;0!==i;i--)for(n=t.bl_count[i];0!==n;)r=t.heap[--a],r>l||(_[2*r+1]!==i&&(t.opt_len+=(i-_[2*r+1])*_[2*r],_[2*r+1]=i),n--)}}function d(t,e,a){var n,r,i=new Array(N+1),s=0;for(n=1;n<=N;n++)i[n]=s=s+a[n-1]<<1;for(r=0;r<=e;r++){var h=t[2*r+1];0!==h&&(t[2*r]=_(i[h]++,h))}}function u(){var t,a,n,r,i,s=new Array(N+1);for(n=0,r=0;r<q-1;r++)for(ht[r]=n,t=0;t<1<<Z[r];t++)st[n++]=r;for(st[n-1]=r,i=0,r=0;r<16;r++)for(_t[r]=i,t=0;t<1<<$[r];t++)it[i++]=r;for(i>>=7;r<J;r++)for(_t[r]=i<<7,t=0;t<1<<$[r]-7;t++)it[256+i++]=r;for(a=0;a<=N;a++)s[a]=0;for(t=0;t<=143;)nt[2*t+1]=8,t++,s[8]++;for(;t<=255;)nt[2*t+1]=9,t++,s[9]++;for(;t<=279;)nt[2*t+1]=7,t++,s[7]++;for(;t<=287;)nt[2*t+1]=8,t++,s[8]++;for(d(nt,G+1,s),t=0;t<J;t++)rt[2*t+1]=5,rt[2*t]=_(t,5);lt=new e(nt,Z,F+1,G,N),ot=new e(rt,$,0,J,N),dt=new e(new Array(0),tt,0,K,R)}function f(t){var e;for(e=0;e<G;e++)t.dyn_ltree[2*e]=0;for(e=0;e<J;e++)t.dyn_dtree[2*e]=0;for(e=0;e<K;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*V]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function c(t){t.bi_valid>8?i(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function g(t,e,a,n){c(t),n&&(i(t,a),i(t,~a)),r.arraySet(t.pending_buf,t.window,e,a,t.pending),t.pending+=a}function p(t,e,a,n){var r=2*e,i=2*a;return t[r]<t[i]||t[r]===t[i]&&n[e]<=n[a]}function b(t,e,a){for(var n=t.heap[a],r=a<<1;r<=t.heap_len&&(r<t.heap_len&&p(e,t.heap[r+1],t.heap[r],t.depth)&&r++,!p(e,n,t.heap[r],t.depth));)t.heap[a]=t.heap[r],a=r,r<<=1;t.heap[a]=n}function w(t,e,a){var r,i,_,l,o=0;if(0!==t.last_lit)do r=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],i=t.pending_buf[t.l_buf+o],o++,0===r?h(t,i,e):(_=st[i],h(t,_+F+1,e),l=Z[_],0!==l&&(i-=ht[_],s(t,i,l)),r--,_=n(r),h(t,_,a),l=$[_],0!==l&&(r-=_t[_],s(t,r,l)));while(o<t.last_lit);h(t,V,e)}function v(t,e){var a,n,r,i=e.dyn_tree,s=e.stat_desc.static_tree,h=e.stat_desc.has_stree,_=e.stat_desc.elems,l=-1;for(t.heap_len=0,t.heap_max=M,a=0;a<_;a++)0!==i[2*a]?(t.heap[++t.heap_len]=l=a,t.depth[a]=0):i[2*a+1]=0;for(;t.heap_len<2;)r=t.heap[++t.heap_len]=l<2?++l:0,i[2*r]=1,t.depth[r]=0,t.opt_len--,h&&(t.static_len-=s[2*r+1]);for(e.max_code=l,a=t.heap_len>>1;a>=1;a--)b(t,i,a);r=_;do a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],b(t,i,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,i[2*r]=i[2*a]+i[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,i[2*a+1]=i[2*n+1]=r,t.heap[1]=r++,b(t,i,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],o(t,e),d(i,l,t.bl_count)}function m(t,e,a){var n,r,i=-1,s=e[1],h=0,_=7,l=4;for(0===s&&(_=138,l=3),e[2*(a+1)+1]=65535,n=0;n<=a;n++)r=s,s=e[2*(n+1)+1],++h<_&&r===s||(h<l?t.bl_tree[2*r]+=h:0!==r?(r!==i&&t.bl_tree[2*r]++,t.bl_tree[2*W]++):h<=10?t.bl_tree[2*X]++:t.bl_tree[2*Y]++,h=0,i=r,0===s?(_=138,l=3):r===s?(_=6,l=3):(_=7,l=4))}function k(t,e,a){var n,r,i=-1,_=e[1],l=0,o=7,d=4;for(0===_&&(o=138,d=3),n=0;n<=a;n++)if(r=_,_=e[2*(n+1)+1],!(++l<o&&r===_)){if(l<d){do h(t,r,t.bl_tree);while(0!==--l)}else 0!==r?(r!==i&&(h(t,r,t.bl_tree),l--),h(t,W,t.bl_tree),s(t,l-3,2)):l<=10?(h(t,X,t.bl_tree),s(t,l-3,3)):(h(t,Y,t.bl_tree),s(t,l-11,7));l=0,i=r,0===_?(o=138,d=3):r===_?(o=6,d=3):(o=7,d=4)}}function y(t){var e;for(m(t,t.dyn_ltree,t.l_desc.max_code),m(t,t.dyn_dtree,t.d_desc.max_code),v(t,t.bl_desc),e=K-1;e>=3&&0===t.bl_tree[2*et[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function z(t,e,a,n){var r;for(s(t,e-257,5),s(t,a-1,5),s(t,n-4,4),r=0;r<n;r++)s(t,t.bl_tree[2*et[r]+1],3);k(t,t.dyn_ltree,e-1),k(t,t.dyn_dtree,a-1)}function x(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return U;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return D;for(e=32;e<F;e++)if(0!==t.dyn_ltree[2*e])return D;return U}function B(t){ut||(u(),ut=!0),t.l_desc=new a(t.dyn_ltree,lt),t.d_desc=new a(t.dyn_dtree,ot),t.bl_desc=new a(t.bl_tree,dt),t.bi_buf=0,t.bi_valid=0,f(t)}function A(t,e,a,n){s(t,(I<<1)+(n?1:0),3),g(t,e,a,!0)}function S(t){s(t,L<<1,3),h(t,V,nt),l(t)}function C(t,e,a,n){var r,i,h=0;t.level>0?(t.strm.data_type===H&&(t.strm.data_type=x(t)),v(t,t.l_desc),v(t,t.d_desc),h=y(t),r=t.opt_len+3+7>>>3,i=t.static_len+3+7>>>3,i<=r&&(r=i)):r=i=a+5,a+4<=r&&e!==-1?A(t,e,a,n):t.strategy===j||i===r?(s(t,(L<<1)+(n?1:0),3),w(t,nt,rt)):(s(t,(O<<1)+(n?1:0),3),z(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),w(t,t.dyn_ltree,t.dyn_dtree)),f(t),n&&c(t)}function E(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(st[a]+F+1)]++,t.dyn_dtree[2*n(e)]++),t.last_lit===t.lit_bufsize-1}var j=4,U=0,D=1,H=2,I=0,L=1,O=2,P=3,T=258,q=29,F=256,G=F+1+q,J=30,K=19,M=2*G+1,N=15,Q=16,R=7,V=256,W=16,X=17,Y=18,Z=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],$=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],tt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],et=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],at=512,nt=new Array(2*(G+2));t(nt);var rt=new Array(2*J);t(rt);var it=new Array(at);t(it);var st=new Array(T-P+1);t(st);var ht=new Array(q);t(ht);var _t=new Array(J);t(_t);var lt,ot,dt,ut=!1;return{_tr_init:B,_tr_stored_block:A,_tr_align:S,_tr_flush_block:C,_tr_tally:E}}(),h=function(){function t(t,e){return t.msg=a[e],e}function i(t){return(t<<1)-(t>4?9:0)}function h(t){for(var e=t.length;--e>=0;)t[e]=0}function _(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(r.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function l(t,e){s._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,_(t.strm)}function o(t,e){t.pending_buf[t.pending++]=e}function d(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function u(t,a,i,s){var h=t.avail_in;return h>s&&(h=s),0===h?0:(t.avail_in-=h,r.arraySet(a,t.input,t.next_in,h,i),1===t.state.wrap?t.adler=e(t.adler,a,h,i):2===t.state.wrap&&(t.adler=n(t.adler,a,h,i)),t.next_in+=h,t.total_in+=h,h)}function f(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,h=t.nice_match,_=t.strstart>t.w_size-rt?t.strstart-(t.w_size-rt):0,l=t.window,o=t.w_mask,d=t.prev,u=t.strstart+nt,f=l[i+s-1],c=l[i+s];t.prev_length>=t.good_match&&(r>>=2),h>t.lookahead&&(h=t.lookahead);do if(a=e,l[a+s]===c&&l[a+s-1]===f&&l[a]===l[i]&&l[++a]===l[i+1]){i+=2,a++;do;while(l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&i<u);if(n=nt-(u-i),i=u-nt,n>s){if(t.match_start=e,s=n,n>=h)break;f=l[i+s-1],c=l[i+s]}}while((e=d[e&o])>_&&0!==--r);return s<=t.lookahead?s:t.lookahead}function c(t){var e,a,n,i,s,h=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=h+(h-rt)){r.arraySet(t.window,t.window,h,h,0),t.match_start-=h,t.strstart-=h,t.block_start-=h,a=t.hash_size,e=a;do n=t.head[--e],t.head[e]=n>=h?n-h:0;while(--a);a=h,e=a;do n=t.prev[--e],t.prev[e]=n>=h?n-h:0;while(--a);i+=h}if(0===t.strm.avail_in)break;if(a=u(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=at)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+at-1])&t.hash_mask,t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<at)););}while(t.lookahead<rt&&0!==t.strm.avail_in)}function g(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(c(t),0===t.lookahead&&e===U)return ft;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,l(t,!1),0===t.strm.avail_out))return ft;if(t.strstart-t.block_start>=t.w_size-rt&&(l(t,!1),0===t.strm.avail_out))return ft}return t.insert=0,e===I?(l(t,!0),0===t.strm.avail_out?gt:pt):t.strstart>t.block_start&&(l(t,!1),0===t.strm.avail_out)?ft:ft}function p(t,e){for(var a,n;;){if(t.lookahead<rt){if(c(t),t.lookahead<rt&&e===U)return ft;if(0===t.lookahead)break}if(a=0,t.lookahead>=at&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+at-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-rt&&(t.match_length=f(t,a)),t.match_length>=at)if(n=s._tr_tally(t,t.strstart-t.match_start,t.match_length-at),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=at){t.match_length--;do t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+at-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else n=s._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(l(t,!1),0===t.strm.avail_out))return ft}return t.insert=t.strstart<at-1?t.strstart:at-1,e===I?(l(t,!0),0===t.strm.avail_out?gt:pt):t.last_lit&&(l(t,!1),0===t.strm.avail_out)?ft:ct}function b(t,e){for(var a,n,r;;){if(t.lookahead<rt){if(c(t),t.lookahead<rt&&e===U)return ft;if(0===t.lookahead)break}if(a=0,t.lookahead>=at&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+at-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=at-1,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-rt&&(t.match_length=f(t,a),t.match_length<=5&&(t.strategy===J||t.match_length===at&&t.strstart-t.match_start>4096)&&(t.match_length=at-1)),t.prev_length>=at&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-at,n=s._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-at),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=r&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+at-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(0!==--t.prev_length);if(t.match_available=0,t.match_length=at-1,t.strstart++,n&&(l(t,!1),0===t.strm.avail_out))return ft}else if(t.match_available){if(n=s._tr_tally(t,0,t.window[t.strstart-1]),n&&l(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return ft}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=s._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<at-1?t.strstart:at-1,e===I?(l(t,!0),0===t.strm.avail_out?gt:pt):t.last_lit&&(l(t,!1),0===t.strm.avail_out)?ft:ct}function w(t,e){for(var a,n,r,i,h=t.window;;){if(t.lookahead<=nt){if(c(t),t.lookahead<=nt&&e===U)return ft;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=at&&t.strstart>0&&(r=t.strstart-1,n=h[r],n===h[++r]&&n===h[++r]&&n===h[++r])){i=t.strstart+nt;do;while(n===h[++r]&&n===h[++r]&&n===h[++r]&&n===h[++r]&&n===h[++r]&&n===h[++r]&&n===h[++r]&&n===h[++r]&&r<i);t.match_length=nt-(i-r),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=at?(a=s._tr_tally(t,1,t.match_length-at),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=s._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(l(t,!1),0===t.strm.avail_out))return ft}return t.insert=0,e===I?(l(t,!0),0===t.strm.avail_out?gt:pt):t.last_lit&&(l(t,!1),0===t.strm.avail_out)?ft:ct}function v(t,e){for(var a;;){if(0===t.lookahead&&(c(t),0===t.lookahead)){if(e===U)return ft;break}if(t.match_length=0,a=s._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(l(t,!1),0===t.strm.avail_out))return ft}return t.insert=0,e===I?(l(t,!0),0===t.strm.avail_out?gt:pt):t.last_lit&&(l(t,!1),0===t.strm.avail_out)?ft:ct}function m(t,e,a,n,r){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=n,this.func=r}function k(t){t.window_size=2*t.w_size,h(t.head),t.max_lazy_match=j[t.level].max_lazy,t.good_match=j[t.level].good_length,t.nice_match=j[t.level].nice_length,t.max_chain_length=j[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=at-1,t.match_available=0,t.ins_h=0}function y(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=R,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new r.Buf16(2*tt),this.dyn_dtree=new r.Buf16(2*(2*Z+1)),this.bl_tree=new r.Buf16(2*(2*$+1)),h(this.dyn_ltree),h(this.dyn_dtree),h(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r.Buf16(et+1),this.heap=new r.Buf16(2*Y+1),h(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r.Buf16(2*Y+1),h(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function z(e){var a;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=Q,a=e.state,a.pending=0,a.pending_out=0,a.wrap<0&&(a.wrap=-a.wrap),a.status=a.wrap?st:dt,e.adler=2===a.wrap?0:1,a.last_flush=U,s._tr_init(a),O):t(e,T)}function x(t){var e=z(t);return e===O&&k(t.state),e}function B(t,e){return t&&t.state?2!==t.state.wrap?T:(t.state.gzhead=e,O):T}function A(e,a,n,i,s,h){if(!e)return T;var _=1;if(a===G&&(a=6),i<0?(_=0,i=-i):i>15&&(_=2,i-=16),s<1||s>V||n!==R||i<8||i>15||a<0||a>9||h<0||h>N)return t(e,T);8===i&&(i=9);var l=new y;return e.state=l,l.strm=e,l.wrap=_,l.gzhead=null,l.w_bits=i,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=s+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+at-1)/at),l.window=new r.Buf8(2*l.w_size),l.head=new r.Buf16(l.hash_size),l.prev=new r.Buf16(l.w_size),l.lit_bufsize=1<<s+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new r.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=a,l.strategy=h,l.method=n,x(e)}function S(e,a){var r,l,u,f;if(!e||!e.state||a>L||a<0)return e?t(e,T):T;if(l=e.state,!e.output||!e.input&&0!==e.avail_in||l.status===ut&&a!==I)return t(e,0===e.avail_out?F:T);if(l.strm=e,r=l.last_flush,l.last_flush=a,l.status===st)if(2===l.wrap)e.adler=0,o(l,31),o(l,139),o(l,8),l.gzhead?(o(l,(l.gzhead.text?1:0)+(l.gzhead.hcrc?2:0)+(l.gzhead.extra?4:0)+(l.gzhead.name?8:0)+(l.gzhead.comment?16:0)),o(l,255&l.gzhead.time),o(l,l.gzhead.time>>8&255),o(l,l.gzhead.time>>16&255),o(l,l.gzhead.time>>24&255),o(l,9===l.level?2:l.strategy>=K||l.level<2?4:0),o(l,255&l.gzhead.os),l.gzhead.extra&&l.gzhead.extra.length&&(o(l,255&l.gzhead.extra.length),o(l,l.gzhead.extra.length>>8&255)),l.gzhead.hcrc&&(e.adler=n(e.adler,l.pending_buf,l.pending,0)),l.gzindex=0,l.status=ht):(o(l,0),o(l,0),o(l,0),o(l,0),o(l,0),o(l,9===l.level?2:l.strategy>=K||l.level<2?4:0),o(l,bt),l.status=dt);else{var c=R+(l.w_bits-8<<4)<<8,g=-1;g=l.strategy>=K||l.level<2?0:l.level<6?1:6===l.level?2:3,c|=g<<6,0!==l.strstart&&(c|=it),c+=31-c%31,l.status=dt,d(l,c),0!==l.strstart&&(d(l,e.adler>>>16),d(l,65535&e.adler)),e.adler=1}if(l.status===ht)if(l.gzhead.extra){for(u=l.pending;l.gzindex<(65535&l.gzhead.extra.length)&&(l.pending!==l.pending_buf_size||(l.gzhead.hcrc&&l.pending>u&&(e.adler=n(e.adler,l.pending_buf,l.pending-u,u)),_(e),u=l.pending,l.pending!==l.pending_buf_size));)o(l,255&l.gzhead.extra[l.gzindex]),l.gzindex++;l.gzhead.hcrc&&l.pending>u&&(e.adler=n(e.adler,l.pending_buf,l.pending-u,u)),l.gzindex===l.gzhead.extra.length&&(l.gzindex=0,l.status=_t)}else l.status=_t;if(l.status===_t)if(l.gzhead.name){u=l.pending;do{if(l.pending===l.pending_buf_size&&(l.gzhead.hcrc&&l.pending>u&&(e.adler=n(e.adler,l.pending_buf,l.pending-u,u)),_(e),u=l.pending,l.pending===l.pending_buf_size)){f=1;break}f=l.gzindex<l.gzhead.name.length?255&l.gzhead.name.charCodeAt(l.gzindex++):0,o(l,f)}while(0!==f);l.gzhead.hcrc&&l.pending>u&&(e.adler=n(e.adler,l.pending_buf,l.pending-u,u)),0===f&&(l.gzindex=0,l.status=lt)}else l.status=lt;if(l.status===lt)if(l.gzhead.comment){u=l.pending;do{if(l.pending===l.pending_buf_size&&(l.gzhead.hcrc&&l.pending>u&&(e.adler=n(e.adler,l.pending_buf,l.pending-u,u)),_(e),u=l.pending,l.pending===l.pending_buf_size)){f=1;break}f=l.gzindex<l.gzhead.comment.length?255&l.gzhead.comment.charCodeAt(l.gzindex++):0,o(l,f)}while(0!==f);l.gzhead.hcrc&&l.pending>u&&(e.adler=n(e.adler,l.pending_buf,l.pending-u,u)),0===f&&(l.status=ot)}else l.status=ot;if(l.status===ot&&(l.gzhead.hcrc?(l.pending+2>l.pending_buf_size&&_(e),l.pending+2<=l.pending_buf_size&&(o(l,255&e.adler),o(l,e.adler>>8&255),e.adler=0,l.status=dt)):l.status=dt),0!==l.pending){if(_(e),0===e.avail_out)return l.last_flush=-1,O}else if(0===e.avail_in&&i(a)<=i(r)&&a!==I)return t(e,F);if(l.status===ut&&0!==e.avail_in)return t(e,F);if(0!==e.avail_in||0!==l.lookahead||a!==U&&l.status!==ut){var p=l.strategy===K?v(l,a):l.strategy===M?w(l,a):j[l.level].func(l,a);if(p!==gt&&p!==pt||(l.status=ut),p===ft||p===gt)return 0===e.avail_out&&(l.last_flush=-1),O;if(p===ct&&(a===D?s._tr_align(l):a!==L&&(s._tr_stored_block(l,0,0,!1),a===H&&(h(l.head),0===l.lookahead&&(l.strstart=0,l.block_start=0,l.insert=0))),_(e),0===e.avail_out))return l.last_flush=-1,O}return a!==I?O:l.wrap<=0?P:(2===l.wrap?(o(l,255&e.adler),o(l,e.adler>>8&255),o(l,e.adler>>16&255),o(l,e.adler>>24&255),o(l,255&e.total_in),o(l,e.total_in>>8&255),o(l,e.total_in>>16&255),o(l,e.total_in>>24&255)):(d(l,e.adler>>>16),d(l,65535&e.adler)),_(e),l.wrap>0&&(l.wrap=-l.wrap),0!==l.pending?O:P)}function C(e){var a;return e&&e.state?(a=e.state.status,a!==st&&a!==ht&&a!==_t&&a!==lt&&a!==ot&&a!==dt&&a!==ut?t(e,T):(e.state=null,a===dt?t(e,q):O)):T}function E(t,a){var n,i,s,_,l,o,d,u,f=a.length;if(!t||!t.state)return T;if(n=t.state,_=n.wrap,2===_||1===_&&n.status!==st||n.lookahead)return T;for(1===_&&(t.adler=e(t.adler,a,f,0)),n.wrap=0,f>=n.w_size&&(0===_&&(h(n.head),n.strstart=0,n.block_start=0,n.insert=0),u=new r.Buf8(n.w_size),r.arraySet(u,a,f-n.w_size,n.w_size,0),a=u,f=n.w_size),l=t.avail_in,o=t.next_in,d=t.input,t.avail_in=f,t.next_in=0,t.input=a,c(n);n.lookahead>=at;){i=n.strstart,s=n.lookahead-(at-1);do n.ins_h=(n.ins_h<<n.hash_shift^n.window[i+at-1])&n.hash_mask,n.prev[i&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=i,i++;while(--s);n.strstart=i,n.lookahead=at-1,c(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=at-1,n.match_available=0,t.next_in=o,t.input=d,t.avail_in=l,n.wrap=_,O}var j,U=0,D=1,H=3,I=4,L=5,O=0,P=1,T=-2,q=-3,F=-5,G=-1,J=1,K=2,M=3,N=4,Q=2,R=8,V=9,W=29,X=256,Y=X+1+W,Z=30,$=19,tt=2*Y+1,et=15,at=3,nt=258,rt=nt+at+1,it=32,st=42,ht=69,_t=73,lt=91,ot=103,dt=113,ut=666,ft=1,ct=2,gt=3,pt=4,bt=3;return j=[new m(0,0,0,0,g),new m(4,4,8,4,p),new m(4,5,16,8,p),new m(4,6,32,32,p),new m(4,4,16,16,b),new m(8,16,32,32,b),new m(8,16,128,128,b),new m(8,32,128,256,b),new m(32,128,258,1024,b),new m(32,258,258,4096,b)],{deflateInit2:A,deflateSetHeader:B,deflate:S,deflateEnd:C,deflateSetDictionary:E}}(),_=function(){function e(n){if(!(this instanceof e))return new e(n);this.options=r.assign({level:c,method:p,chunkSize:16384,windowBits:15,memLevel:8,strategy:g,to:\"\"},n||{});var s=this.options;s.raw&&s.windowBits>0?s.windowBits=-s.windowBits:s.gzip&&s.windowBits>0&&s.windowBits<16&&(s.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new t,this.strm.avail_out=0;var l=h.deflateInit2(this.strm,s.level,s.method,s.windowBits,s.memLevel,s.strategy);if(l!==d)throw new Error(a[l]);if(s.header&&h.deflateSetHeader(this.strm,s.header),s.dictionary){var o;if(o=\"string\"==typeof s.dictionary?i.string2buf(s.dictionary):\"[object ArrayBuffer]\"===_.call(s.dictionary)?new Uint8Array(s.dictionary):s.dictionary,l=h.deflateSetDictionary(this.strm,o),l!==d)throw new Error(a[l]);this._dict_set=!0}}function n(t,n){var r=new e(n);if(r.push(t,!0),r.err)throw r.msg||a[r.err];return r.result}function s(t,e){return e=e||{},e.gzip=!0,n(t,e)}var _=Object.prototype.toString,l=0,o=4,d=0,u=1,f=2,c=-1,g=0,p=8;return e.prototype.push=function(t,e){var a,n,s=this.strm,c=this.options.chunkSize;if(this.ended)return!1;n=e===~~e?e:e===!0?o:l,\"string\"==typeof t?s.input=i.string2buf(t):\"[object ArrayBuffer]\"===_.call(t)?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new r.Buf8(c),s.next_out=0,s.avail_out=c),a=h.deflate(s,n),a!==u&&a!==d)return this.onEnd(a),this.ended=!0,!1;0!==s.avail_out&&(0!==s.avail_in||n!==o&&n!==f)||(\"string\"===this.options.to?this.onData(i.buf2binstring(r.shrinkBuf(s.output,s.next_out))):this.onData(r.shrinkBuf(s.output,s.next_out)))}while((s.avail_in>0||0===s.avail_out)&&a!==u);return n===o?(a=h.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===d):n!==f||(this.onEnd(d),s.avail_out=0,!0)},e.prototype.onData=function(t){this.chunks.push(t)},e.prototype.onEnd=function(t){t===d&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},{gzip:s}}();return _}();}_572();this.config=function(){_14._594.apply(_14,arguments)};this.start=_39;this.stop=_59;this.newPageView=_782;this.stopSession=_780;this.getSessionId=function(){return _12._36};this.getPageViewId=function(){return _12._99};this.tag=_81;this.star=_779;this.setVariable=_778;this.identify=_777;this.formSubmitAttempt=_226;this.formSubmitSuccess=_202;this.formSubmitFailure=_776;this.addFriction=function(_3,_21){_150({_3:_3,_581:_21})};this.debug=function(){_14.debug=!_14.debug;console.log('MF: Debugging '+(_14.debug?'enabled':'disabled'))};this.isRecording=function(){return _190};this.isReturningUser=function(){return _12._192};this.activateFeedback=_309;this.websiteId=_53;this.recordingRate=_347;this.version=_201;this.gdprEnabled=_14.gdprEnabled;this.updateHeatmap=_189._551}function _690(_14){var _566=[];function _177(_94){if(!_14.domMutationDetectorEnable||!_94||_94.nodeType!==1)return false;var _575=_94.parentNode?_94.parentNode.id:undefined;var _576=_94.previousSibling?_94.previousSibling.id:undefined;var _781=_94.tagName;var _577=_94.attributes?_94.attributes.id:undefined;var _578=_94.attributes?_94.attributes.class:undefined;var _24=_781;if(_14.domMutationUseParentNode&&_575)_24+='_'+_575;if(_14.domMutationUsePreviousSibling&&_576)_24+='_'+_576;if(_577)_24+='_'+_577;if(_578)_24+='_'+_578.replace(/\\s/g,\"_\");var _565=+new Date();var _74=_566[_24];var _332=_74?_74._333:0;var _790=_74?((_565-_74._807)/1000):0;var _579=_332<_14.domMutationCountThreshold;var _580=_790<_14.domMutationTimeThresholdInSeconds;var _177=_74?(_579&&_580):false;if(!_579||!_580)_332=0;_566[_24]={_807:_565,_333:_332+1};return _177}this._177=_177}function _688(_1,_14,_86,_7,_16){var _119,_53,_8,_83,_428='mf_liveHeatmaps',_232=[];function _39(_408,_224){_53=_408;_8=_224;_8('Live heatmaps starting');_83=_86._196();if(!_83){_8('Live heatmaps not initiated - could not create root HTML element');return}if(!_1.opener){_8('Live heatmaps not initiated - window.opener is missing');return}_805()}function _59(){_317()}function _805(){_16._22(_1,'message',function(_44){_794(_44.data);switch(_44.data.message){case'MouseflowLiveHeatmaps_Init_Success':case'MouseflowLiveHeatmaps_Hello':_119=_44.origin;_804(_44.data.minDate,_44.data.filters);_801(_44.data.languageScript,_44.data.initScript,_44.data.scripts);break;case'MouseflowLiveHeatmaps_StreamData_Chunk':_246(_44.data.requestUrl,true)._401(_44.data.dataChunk);break;case'MouseflowLiveHeatmaps_StreamData_Success':_246(_44.data.requestUrl)._126();break;case'MouseflowLiveHeatmaps_StreamData_Error':_246(_44.data.requestUrl)._160();break;case'MouseflowLiveHeatmaps_RequestData_Success':_246(_44.data.requestUrl)._126(_44.data.responseText);break;case'MouseflowLiveHeatmaps_RequestData_Error':_246(_44.data.requestUrl)._160();break}});_406({message:'MouseflowLiveHeatmaps_Init'})}function _804(_802,_376){var _55=_556();var _265=_555();var _258=_14.location.search.match(/mf_liveHeatmaps=([^&]+)/);var _392=typeof _1.name==='string'&&_1.name.indexOf('mf_liveHeatmaps')===0?_1.name.slice(15).split('_'):[];var _803=_258||_392[1]==='init';if(_55&&!_803){_55.filters.url=_265.url;_102(_55);return}_55={isMinimized:false,appUrlBase:_119,websiteId:_53,filters:_265,minDate:_802};if(_376){Object.keys(_376).forEach(function(_24){var _3=_376[_24];if(_3 instanceof Date)_3=_287(_3);_55.filters[_24]=_3})}if(_258&&_258[1]!=='1')_55.filters.maptype=_258[1];else if(_392[2])_55.filters.maptype=_392[2];_102(_55);_1.name='mf_liveHeatmaps'}function _801(_558,_438,_560){var _426=document.createElement('script');_426.src=_119+_558;_426.onload=function(){var _561=0;_560.forEach(function(_266){var _432=document.createElement('script');_432.src=_119+_266;_432.onload=function(){_561++;if(_438&&_561===_560.length){var _559=document.createElement('script');_559.src=_119+_438;_423(_438);_83.appendChild(_559)}};_423(_266);_83.appendChild(_432)})};_423(_558);_83.appendChild(_426)}function _556(){return _7._149(_1.localStorage.getItem(_428))}function _102(_55){if(_8)_8('Live heatmaps saving settings');_55=_55?_7._79(_55):'';_1.localStorage.setItem(_428,_55)}function _317(){if(_8)_8('Live heatmaps removing settings');_1.localStorage.removeItem(_428)}function _246(_19,_795){var _431=_232.filter(function(_796){return _796._19===_19})[0];if(!_795&&_431)_232.splice(_232.indexOf(_431),1);return _431}function _882(_17){if(typeof _17!=='object')return;var _55=_556();var _265=_555();Object.keys(_17).forEach(function(_24){var _3=_17[_24];if(!_3)_3=_265[_24];if(_3 instanceof Date)_3=_287(_3);_55.filters[_24]=_3||undefined});_102(_55)}function _555(){var _437=(_14.path||_14.location.pathname).toLowerCase();var _193=new Date();_193=new Date(_193.getFullYear(),_193.getMonth(),_193.getDate());var _439=new Date(_193);_439.setDate(_439.getDate()-29);return{maptype:'click',device:'desktop',url:_437!=='/'?_7._161(_437,'/'):_437,fromdate:_287(_439),todate:_287(_193)}}function _406(_13){_1.opener.postMessage(_13,'*');_8('Sent '+_13.message+(_13.requestUrl?', request URL: '+_13.requestUrl:''))}function _794(_13){if(_13.message&&_13.message.indexOf('MouseflowLiveHeatmaps_')===0)_8('Received '+_13.message+(_13.requestUrl?', request URL: '+_13.requestUrl:''))}function _423(_266){_8('Live heatmaps loading script: '+_266)}function _287(_100){return _100.getFullYear()+'-'+_554(_100.getMonth()+1,'00')+'-'+_554(_100.getDate(),'00')}function _554(_847,_552){return(_552+_847).slice(-_552.length)}this._39=_39;this._59=_59;this._551=function(_17){_882(_17);_1.postMessage('{\"mfCommand\":\"MouseflowHeatmap_UpdateHeatmap\"}','*');_8('Sent MouseflowHeatmap_UpdateHeatmap')};_1.mouseflowHeatmap={streamData:function(_19,_401,_126,_160){_232.push({_19:_19,_401:_401||function(){},_126:_126||function(){},_160:_160||function(){}});_406({message:'MouseflowLiveHeatmaps_StreamData',requestUrl:_19})},getData:function(_19,_126,_160){_232.push({_19:_19,_126:_126||function(){},_160:_160||function(){}});_406({message:'MouseflowLiveHeatmaps_RequestData',requestUrl:_19})}}}function _659(_1,_86,_7,_16){var _9=_1.document,_119,_53,_8,_18,_83,_32,_592,_599,_130,_101,_310,_134,_610,_174,_279,_233,_137,_107;function _39(_848,_408,_238,_242,_224){_119=_848;_53=_408;_8=_224;_18=_858()||{_52:false,_115:'exclude',_66:_238||[],_65:_242||[]};_83=_86._196();if(!_83){_8('Privacy tool not initiated - could not create root HTML element');return}_905();_1.setTimeout(function(){_916();_102(_18)},1000);}function _59(){_893();_86._297()}function _905(){_16._22(_1,'message',function(event){switch(event.data.message){case'MouseflowPrivacyTool_Hello':_8('Privacy tool API ready');_233=event.source;if(event.data.cssSelectorBlacklist){_18._66=event.data.cssSelectorBlacklist;_18._65=event.data.cssSelectorWhitelist}_584();break;case'MouseflowPrivacyTool_Save_Success':_8('Successfully saved CSS blacklist and whitelist');if(_137)_137();_137=undefined;_107=undefined;break;case'MouseflowPrivacyTool_Save_Failed':_8('Failed saving CSS blacklist and whitelist');if(_107)_107();_137=undefined;_107=undefined;_441('Uh oh! We couldn\\'t save your changes.<br><br>'+'Please refresh the page and try again.');break;case'MouseflowPrivacyTool_Unauthorized':_8('Privacy tool API logged out - cannot save');if(_107)_107();_137=undefined;_107=undefined;_441('Uh oh! We couldn\\'t save your changes.<br><br>'+'Please log into Mouseflow and try again.');break}});if(_1.opener){_8('Loading privacy tool API using window.opener');_1.opener.postMessage({message:'MouseflowPrivacyTool_Hello'},'*')}_1.setTimeout(function(){if(!_233){_8('Loading privacy tool API using iframe');var _256=_9.createElement('iframe');_256.style.width='0px';_256.style.height='0px';_256.style.display='none';_256.src=_119+'/websites/'+_53+'/privacytool';_83.appendChild(_256);_1.setTimeout(function(){if(!_233){_8('Loading privacy tool API timed out');_863('D\\'oh! We\\'re having trouble loading the Privacy Tool on this page<br>'+'Please login to Mouseflow and try again. If you need help, email <a class=\"green\" href=\"mailto:support@mouseflow.com\">support@mouseflow.com</a>')}},5000)}},2000)}function _916(){_32=_852(_18);_592=_32.querySelector('.tool-exclude output');_599=_32.querySelector('.tool-whitelist output');_130=_32.querySelector('.tool-status-text');_101=_32.querySelector('.btn-widget');_310=_32.querySelector('.tool-loading h2');_18._66.forEach(_613);_18._65.forEach(_614);_83.appendChild(_32);_134=_851();_32.appendChild(_134);_7._167(_9.body,'mf-privacy-tool-opened',!_18._52);_918();_584()}function _584(){if(_32&&_233){_7._50(_32,'is-loading');_136();_340()}}function _395(){_317();_59();_1.close()}function _918(){_16._22(_32,'click','.mf-tool-close',_395,{_95:true})}function _340(){_16._22(_32,'click','.mf-tool-toggle',_899,{_95:true});_16._22(_32,'click','.mf-tool-close',_395,{_95:true});_16._22(_32,'click','.mf-tool-exclude',_892,{_95:true});_16._22(_32,'click','.mf-tool-whitelist',_890,{_95:true});_16._22(_32,'click','.highlight-excluded',_889,{_95:true});_16._22(_32,'click','.highlight-whitelisted',_887,{_95:true});_16._22(_32,'click','.mf-remove-excluded',_884,{_95:true});_16._22(_32,'click','.mf-remove-whitelisted',_885,{_95:true});_16._22(_32,'submit',_891,{_95:true});_16._22(_9,'mouseover',_901,{_28:true});_16._22(_9,'mouseleave',_915,{_28:true});_16._22(_9,'mouseup',_913,{_28:true});_16._22(_9,'mouseenter',_145,{_28:true});_16._22(_9,'mousemove',_145,{_28:true});_16._22(_9,'mousedown',_145,{_28:true});_16._22(_9,'click',_145,{_28:true});_16._22(_9,'mouseout',_145,{_28:true});_16._22(_9,'scroll',_136,{_28:true,_143:true});_16._22(_1,'resize',_136,{_28:true,_143:true});var MutationObserver=_1.MutationObserver||_1.WebKitMutationObserver||_1.MozMutationObserver;if(MutationObserver){_279=new MutationObserver(function(_416){_416=_416.filter(function(_74){if(_74.target.nodeType!==1||_7._48(_74.target,'#mouseflow *'))return false;var _900=_74.oldValue&&_74.oldValue.indexOf('mf-highlight')!==-1;var _898=_74.target.className&&_74.target.className.indexOf('mf-highlight')!==-1;var _897=_900||_898;if(_74.type==='attributes'&&_74.attributeName==='class'&&_897)return false;return true});if(_416.length)_136()});_279.observe(_9,{attributes:true,childList:true,characterData:true,subtree:true,attributeOldValue:true})}}function _893(){_16._337();if(_279)_279.disconnect()}function _899(){_18._52=!_18._52;_102(_18);_7._167(_32,'tool-closed',_18._52);_7._167(_9.body,'mf-privacy-tool-opened',!_18._52);var _20=_32.getElementsByClassName('step')[0];var _276=_32.getElementsByClassName('tool-container')[0];if(_18._52){_7._50(_20,'fade-out');_7._51(_20,'fade-in');_7._50(_276,'fade-in');_7._51(_276,'fade-out')}else{_7._50(_20,'fade-in');_7._51(_20,'fade-out');_7._50(_276,'fade-out');_7._51(_276,'fade-in')}}function _892(){_18._115='exclude';_102(_18);_7._50(_32.getElementsByClassName('mf-tool-whitelist')[0],'active');_7._50(_32.getElementsByClassName('tool-whitelist')[0],'active');_7._51(_32.getElementsByClassName('mf-tool-exclude')[0],'active');_7._51(_32.getElementsByClassName('tool-exclude')[0],'active')}function _890(){_18._115='whitelist';_102(_18);_7._50(_32.getElementsByClassName('mf-tool-exclude')[0],'active');_7._50(_32.getElementsByClassName('tool-exclude')[0],'active');_7._51(_32.getElementsByClassName('mf-tool-whitelist')[0],'active');_7._51(_32.getElementsByClassName('tool-whitelist')[0],'active')}function _889(_6){if(_18._115==='exclude'){_615(_6.target.getAttribute('data-target'));_136()}}function _887(_6){if(_18._115==='whitelist'){_609(_6.target.getAttribute('data-target'));_136()}}function _884(_6){_615(_6.target.parentNode.getAttribute('data-target'));_136()}function _885(_6){_609(_6.target.parentNode.getAttribute('data-target'));_136()}function _891(){_857();_906(_18._66,_18._65,function(){_590();_101.innerHTML='Saved';_317();_1.setTimeout(_395,500)},function(){_590()})}function _901(_6){_1.clearTimeout(_610);var _608=_9.getElementsByClassName('mf-highlight');for(var _2=0;_2<_608.length;_2++){_7._50(_608[_2],'mf-highlight')}_7._51(_134,'hidden');if(_145(_6)||_611(_6.target))return;_7._51(_6.target,'mf-highlight');_610=_1.setTimeout(function(){var _46=_6.target.getBoundingClientRect();_134.style.left=_46.left+_1.pageXOffset+'px';_134.style.top=_46.top+_1.pageYOffset+'px';_134.style.width=_46.width+'px';_134.style.height=_46.height+'px';_7._50(_134,'hidden')},75)}function _915(_6){if(_145(_6))return;if(_6.target===_9){_7._51(_134,'hidden')}}function _913(_6){if(_145(_6))return;if(_6.button!==0||_611(_6.target))return;_7._50(_6.target,'mf-highlight');var _10=_883(_6.target);if(_18._115==='exclude'){_613(_10)}else{_614(_10)}_136()}function _145(_6){if(_18._52||_6.target.nodeType!==1||_7._48(_6.target,'#mouseflow *'))return true;_6.preventDefault();_6.stopPropagation();return false}function _611(_4){return _4===_9.body||_7._48(_4,'html')||(_18._115==='whitelist'&&(!/INPUT|TEXTAREA/.test(_4.tagName)||/checkbox|radio|button|submit/.test(_4.type)))}function _613(_10){if(_10&&_18._66.indexOf(_10)===-1){_18._66.unshift(_10);_102(_18)}_288()}function _614(_10){if(_10&&_18._65.indexOf(_10)===-1){_18._65.unshift(_10);_102(_18)}_288()}function _615(_10){if(_10&&_18._66.indexOf(_10)!==-1){_18._66=_18._66.filter(function(_209){return _209!==_10});_102(_18)}_288()}function _609(_10){if(_10&&_18._65.indexOf(_10)!==-1){_18._65=_18._65.filter(function(_209){return _209!==_10});_102(_18)}_288()}function _136(){_1.clearTimeout(_174);if(!_174){_1.setTimeout(function(){if(_174){_1.clearTimeout(_174);_601();_174=undefined}},200)}_174=_1.setTimeout(function(){_601();_174=undefined},100)}function _601(){var _591=_32.querySelectorAll('.highlight-excluded,.highlight-whitelisted'),_2;for(_2=0;_2<_591.length;_2++){_32.removeChild(_591[_2])}_18._66.forEach(function(_10){var _138=_9.querySelectorAll(_10);for(_2=0;_2<_138.length;_2++){_32.appendChild(_850(_10,_138[_2].getBoundingClientRect()))}});_18._65.forEach(function(_10){var _138=_9.querySelectorAll(_10);for(_2=0;_2<_138.length;_2++){_32.appendChild(_849(_10,_138[_2].getBoundingClientRect()))}})}function _906(_66,_65,_126,_904){if(_137){_8('Attempted to save CSS blacklist and whitelist while previous save was in progress');return}_137=_126;_107=_904;_856();_233.postMessage({message:'MouseflowPrivacyTool_Save',blacklist:_66,whitelist:_65},'*');_1.setTimeout(function(){if(_137===_126){_8('Saving CSS blacklist and whitelist timed out');if(_107)_107();_137=undefined;_107=undefined;_441('Uh oh! We couldn\\'t save your changes.<br><br>'+'Please log into Mouseflow and try again.')}},7500)}function _883(_4){if(_4==null)return null;try{return _585(_4);}catch(ex){_8('Could not get element selector: '+ex.message);return null}}function _920(_4){var _234=_861(_4);if(!_234)return null;if(_7._48(_4,_234))return _234;var _86=document.querySelector(_234);var _104=_4;var _63=[];while(_104&&_104!==_86){var _34=_435(_104);if(_34.length===0)_34.push(_586(_104));_63.unshift(_34);_104=_104.parentNode}_63.unshift(_234);return _403(_63)}function _585(_4,_63){if(!_63)_63=[];var _34=_435(_4);_63.unshift(_34);var _10=_403(_63);if(_10)return _10;if(_34.length===0){_34.push(_586(_4));_10=_403(_63);if(_10)return _10}return _585(_4.parentNode,_63)}function _403(_63){var _398=_63.length>1?_860.apply(this,_63):_63[0];for(var _2=0;_2<_398.length;_2++){if(_9.querySelectorAll(_398[_2]).length===1)return _398[_2]}return null}function _861(_4){var _104=_4;while(_104){var _34=_435(_104);for(var _2=0;_2<_34.length;_2++){if(_9.querySelectorAll(_34[_2]).length===1)return _34[_2]}_104=_104.parentNode}return null}function _435(_4){if(_4===_9.body)return['body'];var _34=[];var _429=_4.parentNode;var _2;var _45=_4.getAttribute('id');var _10='#'+_7._154(_45);if(_45&&_9.querySelectorAll(_10).length===1&&!_7._155(_4,'data-mf-ignore-child-ids'))return[_10];var _21=_4.getAttribute('name');_10='[name=\"'+_7._154(_21)+'\"]';if(_21){if(_9.querySelectorAll(_10).length===1)return[_10];if(_429.querySelectorAll(_10).length===1)_34.push(_10)}var _179=_7._164(_4);for(_2=0;_2<_179.length;_2++){_10='.'+_7._154(_179[_2]);if(_9.querySelectorAll(_10).length===1)return[_10];if(_429.querySelectorAll(_10).length===1)_34.push(_10)}for(_2=0;_2<_179.length;_2++){_10=_7._154(_4.tagName.toLowerCase())+'.'+_7._154(_179[_2]);if(_9.querySelectorAll(_10).length===1)return[_10];if(_429.querySelectorAll(_10).length===1)_34.push(_10)}return _34}function _586(_4){var _10=_7._154(_4.tagName.toLowerCase());if(_4.parentNode.querySelectorAll(_10).length===1)return _10;var _183=0;var _262=_4;while(_262){if(_262.tagName===_4.tagName)_183++;_262=_262.previousElementSibling}_10+=':nth-of-type('+_183+')';return _10}function _860(){var _34,_186,_188,_2;var _112=0;var _159=arguments.length-1;var _273=false;var _236=true;while(_112<_159){_186=undefined;for(_2=0;_2<=_112;_2++){_186=_186?_296(_186,arguments[_2],' > '):arguments[_2]}_188=undefined;for(_2=arguments.length-1;_2>=_159;_2--){_188=_188?_296(arguments[_2],_188,' > '):arguments[_2]}var _318=(_112+1)==_159?' > ':' ';_34=_34?_34.concat(_296(_186,_188,_318)):_296(_186,_188,_318);if(_236&&_273){_159--;_273=false;_236=true}else if(_236){_159--;_273=true;_236=false}else{_112++;if(_112!=_159)_159++;_273=true;_236=true}}return _34}function _296(_549,_588,_318){var _34=[];for(var _2=0;_2<_549.length;_2++){for(var _56=0;_56<_588.length;_56++){_34.push(_549[_2]+_318+_588[_56])}}return _34}function _858(){var _3=_1.localStorage.getItem('mf_privacyTool');return _3?_7._149(_3):null}function _102(_55){_55=_55?_7._79(_55):'';_1.localStorage.setItem('mf_privacyTool',_55)}function _317(){_1.localStorage.removeItem('mf_privacyTool')}function _857(){_101.setAttribute('disabled','');_101.setAttribute('original-html',_101.innerHTML);_101.innerHTML='<i>&bull;</i> <i>&bull;</i> <i>&bull;</i> <i>&bull;</i>';_7._51(_101,'loading')}function _590(){_7._50(_101,'loading');_101.innerHTML=_101.getAttribute('original-html');_101.removeAttribute('original-html');_101.removeAttribute('disabled')}function _288(){_592.innerHTML=_876(_18._66);_599.innerHTML=_875(_18._65);_130.innerHTML=_400(_18._66,_18._65);_7._50(_130,'red')}function _863(_436){if(!_310)return;_310.innerHTML=_436;_7._51(_310,'red')}function _441(_436){if(!_130)return;_130.innerHTML=_436;_7._51(_130,'red')}function _856(){if(!_130)return;_130.innerHTML=_400(_18._66,_18._65);_7._50(_130,'red')}function _852(_18){var _29=_9.createElement('div');_29.className='privacy-tool is-loading';_29.innerHTML=_855(_18);if(_18._52)_29.className+=' tool-closed';var _109=_9.createElement('style');_109.type='text/css';_109.innerHTML=_871();_29.appendChild(_109);return _29}function _851(){var _29=_9.createElement('div');_29.className='highlight-box';return _29}function _850(_10,_46){var _29=_9.createElement('div');_29.className='highlight-box highlight-excluded';_29.setAttribute('data-target',_10);_29.style.left=_46.left+_1.pageXOffset+'px';_29.style.top=_46.top+_1.pageYOffset+'px';_29.style.width=_46.width+'px';_29.style.height=_46.height+'px';return _29}function _849(_10,_46){var _29=_9.createElement('div');_29.className='highlight-box highlight-whitelisted';_29.setAttribute('data-target',_10);_29.style.left=_46.left+_1.pageXOffset+'px';_29.style.top=_46.top+_1.pageYOffset+'px';_29.style.width=_46.width+'px';_29.style.height=_46.height+'px';return _29}function _855(_18){return('<form action=\"#\" id=\"mf_privacy_tool\">'+_866(_18)+_878(_18)+'</form>')}function _866(_18){return('<div class=\"step step-block'+(_18._52?' fade-in':'')+'\">'+'<div class=\"widget-header\">'+'<div class=\"widget-text\">Open Privacy Tool</div>'+'<div class=\"widget-toggle\">'+'<a href=\"#\" class=\"btn-arrow btn-arrow--up mf-tool-toggle\"></a>'+'</div>'+'</div>'+'</div>')}function _878(){return('<div class=\"tool-container'+(_18._52?'':' fade-in')+'\">'+'<div class=\"tool-header\">'+'<img class=\"logo\" alt=\"Mouseflow\" src=\"https://mouseflow.com/static/img/logo-light.png\">'+'<div class=\"tool-toggle\">'+'<div class=\"tool-toggle-text\">'+'Hide to navigate'+'</div>'+'<div class=\"tool-toggle-icon\">'+'<a href=\"#\" class=\"btn-arrow btn-arrow--down mf-tool-toggle\"></a>'+'</div>'+'</div>'+'<div class=\"tool-close\">'+'<div class=\"tool-toggle-text\">'+'Close'+'</div>'+'<div class=\"tool-toggle-icon\">'+'<a href=\"#\" class=\"btn-cross mf-tool-close\"></a>'+'</div>'+'</div>'+'</div>'+'<div class=\"tool-content\">'+'<ul class=\"tool-menu\">'+'<li class=\"tool-menu-item mf-tool-exclude'+(_18._115==='exclude'?' active':'')+'\">'+'Excluded content'+'</li>'+'<li class=\"tool-menu-item mf-tool-whitelist'+(_18._115==='whitelist'?' active':'')+'\">'+'Whitelisted fields'+'</li>'+'</ul>'+'<div class=\"tool-exclude'+(_18._115==='exclude'?' active':'')+'\">'+'<h2>Exclude content from appearing in Mouseflow</h2>'+'<p>'+'To get started, just click the element(s) or content you wish to exclude. '+'This will add the necessary CSS selectors to be blocked in the list below.'+'</p>'+'<p>'+'When you\\'re finished, click \"Hide to navigate\" to browse to another page to exclude additional content, or click \"Save and close\" to keep your changes.'+'</p>'+'<p>'+'For more details and best practices, read our <a href=\"http://help.mouseflow.com/knowledge_base/topics/exclude-or-replace-content-on-pages\" class=\"green\" target=\"_389\">Support Guide</a>.'+'</p>'+'<h3>Excluded content:</h3>'+'<div>'+'<output></output>'+'</div>'+'</div>'+'<div class=\"tool-whitelist'+(_18._115==='whitelist'?' active':'')+'\">'+'<h2>Whitelist input fields</h2>'+'<p>'+'You can whitelist any input field or text area, simply by clicking the field(s) on the page. '+'This will let Mouseflow record input in that field.'+'</p>'+'<p>'+'When you\\'re finished, click \"Hide to navigate\" to browse to another page to exclude additional content, or click \"Save and close\" to keep your changes.'+'</p>'+'<p>'+'For more details and best practices, read our <a href=\"http://help.mouseflow.com/knowledge_base/topics/exclude-or-replace-content-on-pages\" class=\"green\" target=\"_389\">Support Guide</a>.'+'</p>'+'<h3>Whitelisted fields:</h3>'+'<div>'+'<output></output>'+'</div>'+'</div>'+'<div class=\"tool-status\">'+'<div class=\"tool-status-text\">'+_400(_18._66,_18._65)+'</div>'+'<div class=\"tool-status-buttons\">'+'<button type=\"submit\" class=\"btn-widget\">Save and close</button>'+'<a href=\"#\" class=\"green bold mf-tool-close\">Close Privacy Tool</a>'+'</div>'+'</div>'+'<div class=\"tool-loading\">'+'<h2 class=\"loading\">Loading the Privacy Tool<i>.</i><i>.</i><i>.</i></h2>'+'</div>'+'<div class=\"tool-message\">'+'<h3>Browser window is to small to load the Privacy Tool</h3>'+'<p>To use Mouseflow\\'s Privacy Tool, you need to view the page in a larger browser window.</p>'+'</div>'+'</div>'+'</div>')}function _876(_63){return _63.map(function(_10){return('<div class=\"tm-tag\" data-target=\"'+_7._60(_10)+'\">'+_7._60(_10)+'<a href=\"#\" class=\"btn-cross mf-remove-excluded\"></a>'+'</div>')}).join('')}function _875(_63){return _63.map(function(_10){return('<div class=\"tm-tag\" data-target=\"'+_7._60(_10)+'\">'+_7._60(_10)+'<a href=\"#\" class=\"btn-cross mf-remove-whitelisted\"></a>'+'</div>')}).join('')}function _400(_66,_65){return'You have excluded <i class=\"green\">'+_66.length+'</i> '+(_66.length===1?'element':'elements')+' and whitelisted <i class=\"green\">'+_65.length+'</i> input '+(_65.length===1?'field':'fields')+'.'}function _871(){return('.mf-highlight {'+'cursor: pointer !important;'+'}'+'.mf-privacy-tool-opened iframe {'+'pointer-events: none;'+'}'+'#mouseflow .highlight-box {'+'background-color: #add8e6;'+'border: 2px dotted #808080;'+'position: absolute;'+'border-radius: 2px;'+'z-index: 2147483646;'+'cursor: pointer;'+'pointer-events: none;'+'opacity: 0.5;'+'-webkit-transition: opacity .075s linear;'+'transition: opacity .075s linear;'+'}'+'#mouseflow .highlight-box.hidden,'+'#mouseflow .tool-closed .highlight-box {'+'opacity: 0;'+'}'+'#mouseflow .highlight-box.highlight-excluded {'+'background-color: #ffb6c1;'+'pointer-events: initial;'+'}'+'#mouseflow .highlight-box.highlight-whitelisted {'+'background-color: #90ee90;'+'pointer-events: initial;'+'}'+'#mouseflow .tool-closed .highlight-box.highlight-excluded,'+'#mouseflow .tool-closed .highlight-box.highlight-whitelisted {'+'pointer-events: none;'+'}'+'#mouseflow .widget-header,'+'#mouseflow .btn-widget {'+'background: #4cb377;'+'}'+'#mouseflow .widget-text,'+'#mouseflow .btn-widget,'+'#mouseflow .btn-arrow,'+'#mouseflow .btn-cross {'+'color: #fff;'+'}'+'#mouseflow .tm-tag {'+'margin: 7px 7px 0 0;'+'padding: 7px;'+'display: inline-block;'+'border-radius: 3px;'+'background-color: #a7a7a7;'+'color: white;'+'font-size: 13px;'+'}'+'#mouseflow .step {'+'visibility: hidden;'+'opacity: 0;'+'position: fixed;'+'bottom: 30px;'+'right: 30px;'+'z-index: 2147483647;'+'width: 300px;'+'border-radius: 10px;'+'box-shadow: 0 0 15px rgba(0, 0, 0, .35);'+'overflow: hidden;'+'}'+'#mouseflow a:hover {'+'text-decoration: underline;'+'}'+'#mouseflow h2 {'+'font-size: 21px;'+'font-weight: 700;'+'line-height: 1.4em;'+'margin-bottom: 6px;'+'}'+'#mouseflow h3 {'+'font-size: 16px;'+'font-weight: 700;'+'line-height: 1.4em;'+'}'+'#mouseflow p {'+'margin-bottom: 8px;'+'line-height: 1.4em;'+'}'+'#mouseflow .green {'+'color: #47b475;'+'}'+'#mouseflow .red {'+'color: #ea1e1e;'+'}'+'#mouseflow .bold {'+'font-weight: 700;'+'}'+'#mouseflow .tool-container {'+'visibility: visible;'+'opacity: 0;'+'position: fixed;'+'bottom: 0;'+'left: 0;'+'width: 100%;'+'height: 350px;'+'max-height: 40%;'+'overflow: hidden;'+'background-color: white;'+'border-top: 2px solid #37312f;'+'z-index: 2147483647;'+'}'+'#mouseflow .tool-header {'+'background-color: #47403e;'+'height: 58px;'+'}'+'#mouseflow .logo {'+'display: inline;'+'height: 40px;'+'margin: 9px 10px;'+'}'+'#mouseflow .tool-toggle,'+'#mouseflow .tool-close {'+'float: right;'+'padding: 18px 24px;'+'}'+'#mouseflow .is-loading .tool-close {'+'display: block;'+'}'+'#mouseflow .is-loading .tool-toggle,'+'#mouseflow .tool-close {'+'display: none;'+'}'+'#mouseflow .tool-toggle-text {'+'display: inline-block;'+'color: white;'+'font-size: 18px;'+'}'+'#mouseflow .tool-toggle-icon {'+'width: 30px;'+'display: inline-block;'+'position: relative;'+'top: 2px;'+'}'+'#mouseflow .tool-close .tool-toggle-icon {'+'top: 4px;'+'}'+'#mouseflow .tool-content {'+'height: calc(100% - 58px);'+'}'+'#mouseflow .tool-menu {'+'width: 15%;'+'height: 100%;'+'float: left;'+'}'+'#mouseflow .tool-menu-item {'+'background-color: #f8f8f8;'+'color: black;'+'cursor: pointer;'+'height: 40px;'+'padding: 12px;'+'}'+'#mouseflow .tool-menu-item.active {'+'position: relative;'+'background-color: #4db378;'+'color: white;'+'cursor: default;'+'}'+'#mouseflow .tool-menu-item.active:after {'+'display: block;'+'border: solid transparent;'+'content: \" \";'+'position: absolute;'+'pointer-events: none;'+'border-left-color: #4db378;'+'border-width: 20px;'+'top: 0;'+'right: -40px;'+'}'+'#mouseflow .tool-menu-item:not(.active):hover {'+'background-color: #e4e4e4'+'}'+'#mouseflow .tool-exclude,'+'#mouseflow .tool-whitelist {'+'display: none;'+'width: 70%;'+'height: 100%;'+'float: left;'+'color: rgb(71, 64, 62);'+'overflow-y: auto;'+'overflow-x: hidden;'+'padding: 10px 40px;'+'}'+'#mouseflow .tool-exclude.active,'+'#mouseflow .tool-whitelist.active {'+'display: block;'+'}'+'#mouseflow .tool-exclude::-webkit-scrollbar,'+'#mouseflow .tool-whitelist::-webkit-scrollbar {'+'width: 8px;'+'}'+'#mouseflow .tool-exclude::-webkit-scrollbar-track,'+'#mouseflow .tool-whitelist::-webkit-scrollbar-track {'+'border-radius: 10px;'+'background-color: #F5F5F5;'+'-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);'+'}'+'#mouseflow .tool-exclude::-webkit-scrollbar-thumb,'+'#mouseflow .tool-whitelist::-webkit-scrollbar-thumb {'+'border-radius: 10px;'+'background-color: #a7a7a7;'+'-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);'+'}'+'#mouseflow .tool-status {'+'width: 15%;'+'background-color: #f8f8f8;'+'height: 100%;'+'float: left;'+'position: relative;'+'}'+'#mouseflow .tool-status-text {'+'font-size: 16px;'+'font-weight: 700;'+'text-align: center;'+'padding: 0 15px;'+'position: absolute;'+'top: 40px;'+'}'+'#mouseflow .tool-status-buttons {'+'width: 100%;'+'text-align: center;'+'position: absolute;'+'padding: 0 30px;'+'bottom: 40px;'+'}'+'#mouseflow .tool-loading {'+'width: 100%;'+'height: calc(100% - 58px);'+'background-color: white;'+'color: rgb(71, 64, 62);'+'position: absolute;'+'top: 58px;'+'z-index: 2;'+'visibility: hidden;'+'opacity: 0;'+'-webkit-animation: fadeOut .3s linear;'+'animation: fadeOut .3s linear;'+'}'+'#mouseflow .is-loading .tool-loading {'+'visibility: visible;'+'opacity: 1;'+'-webkit-animation: fadeIn .3s linear;'+'animation: fadeIn .3s linear;'+'}'+'#mouseflow .tool-loading h2 {'+'position: absolute;'+'left: 50%;'+'top: 50%;'+'-webkit-transform: translate(-50%, -50%);'+'-ms-transform: translate(-50%, -50%);'+'transform: translate(-50%, -50%);'+'}'+'#mouseflow .widget-header {'+'color: #fff;'+'padding: 12px 15px;'+'vertical-align: middle;'+'overflow: hidden;'+'position: relative;'+'z-index: 1;'+'}'+'#mouseflow .widget-header:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: 0;'+'left: 0;'+'right: 0;'+'bottom: 0;'+'background: rgba(0, 0, 0, .3);'+'opacity: 0;'+'z-index: -1;'+'-webkit-transition: opacity .3s linear;'+'transition: opacity .3s linear;'+'}'+'#mouseflow .widget-header:hover:before {'+'opacity: 1;'+'}'+'#mouseflow .widget-text {'+'font-size: 16px;'+'line-height: 20px;'+'width: 245px;'+'display: inline-block;'+'vertical-align: middle;'+'}'+'#mouseflow .widget-toggle {'+'width: 20px;'+'display: inline-block;'+'vertical-align: middle;'+'margin: 0;'+'}'+'#mouseflow .btn-arrow,'+'#mouseflow .btn-cross {'+'float: right;'+'z-index: 10;'+'line-height: .5;'+'}'+'#mouseflow .tool-toggle-icon .btn-arrow,'+'#mouseflow .tool-toggle-icon .btn-cross {'+'font-size: 34px;'+'}'+'#mouseflow .widget-toggle .btn-arrow {'+'font-size: 25px;'+'}'+'#mouseflow .tm-tag .btn-cross {'+'margin: 3px 0 0 7px;'+'font-weight: 700;'+'color: #4e4e4e;'+'font-size: 18px;'+'}'+'#mouseflow .widget-toggle .btn-arrow:hover {'+'text-shadow: -3px 0 2px rgba(0, 0, 0, .5);'+'}'+'#mouseflow .tm-tag .btn-cross:hover {'+'color: #c66;'+'}'+'#mouseflow .btn-arrow--up {'+'-webkit-transform: rotate(-90deg) scale(1.5, 1.5);'+'-ms-transform: rotate(-90deg) scale(1.5, 1.5);'+'transform: rotate(-90deg) scale(1.5, 1.5);'+'}'+'#mouseflow .btn-arrow--down {'+'-webkit-transform: rotate(+90deg) scale(1.5, 1.5);'+'-ms-transform: rotate(+90deg) scale(1.5, 1.5);'+'transform: rotate(+90deg) scale(1.5, 1.5);'+'}'+'#mouseflow .widget-toggle .btn-arrow:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: -185px;'+'left: -15px;'+'right: -15px;'+'bottom: -15px;'+'display: block;'+'}'+'#mouseflow .tool-toggle-icon .btn-arrow:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: -10px;'+'left: -15px;'+'right: -15px;'+'bottom: -100px;'+'display: block;'+'}'+'#mouseflow .tool-toggle-icon .btn-cross:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: -25px;'+'left: -150px;'+'right: -20px;'+'bottom: -20px;'+'display: block;'+'}'+'#mouseflow .btn-arrow:after {'+'content: \"\\\\203a\";'+'display: inline;'+'}'+'#mouseflow .btn-cross:after {'+'content: \"\\\\00d7\";'+'display: inline;'+'}'+'#mouseflow .btn-arrow:hover,'+'#mouseflow .btn-cross:hover {'+'text-decoration: none;'+'}'+'#mouseflow .btn-widget {'+'width: 100%;'+'height: 38px;'+'border: none;'+'border-radius: 6px;'+'overflow: hidden;'+'position: relative;'+'z-index: 1;'+'cursor: pointer;'+'display: block;'+'padding: 10px;'+'font-size: 16px;'+'font-family: inherit;'+'font-weight: bold;'+'text-align: center;'+'outline: none;'+'margin-bottom: 10px;'+'}'+'#mouseflow .btn-widget:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: 0;'+'left: 0;'+'right: 0;'+'bottom: 0;'+'background: rgba(0, 0, 0, .3);'+'opacity: 0;'+'z-index: -1;'+'-webkit-transition: opacity .3s linear;'+'transition: opacity .3s linear;'+'}'+'#mouseflow .btn-widget:hover {'+'text-decoration: none;'+'}'+'#mouseflow .btn-widget:hover:before {'+'opacity: 1;'+'}'+'#mouseflow .privacy-tool {'+'height: 350px;'+'max-height: 40%;'+'-webkit-transition: height .5s ease-out;'+'transition: height .5s ease-out;'+'}'+'#mouseflow .privacy-tool.tool-closed {'+'height: 0;'+'}'+'#mouseflow .tool-closed .step {'+'visibility: visible;'+'}'+'#mouseflow .tool-closed .tool-container {'+'visibility: hidden;'+'}'+'#mouseflow .step.fade-in,'+'#mouseflow .tool-container.fade-in {'+'-webkit-animation: fadeUpIn .8s cubic-bezier(0, 0, 0, 1) both;'+'animation: fadeUpIn .8s cubic-bezier(0, 0, 0, 1) both;'+'}'+'#mouseflow .step.fade-out,'+'#mouseflow .tool-container.fade-out {'+'-webkit-animation: fadeDownOut .8s cubic-bezier(0, 0, 0, 1);'+'animation: fadeDownOut .8s cubic-bezier(0, 0, 0, 1);'+'}'+'#mouseflow .btn-widget.loading {'+'cursor: default;'+'}'+'#mouseflow .btn-widget.loading:before {'+'display: none;'+'}'+'#mouseflow .loading i {'+'animation-name: blink;'+'animation-duration: 1.4s;'+'animation-iteration-count: infinite;'+'animation-fill-mode: both;'+'}'+'#mouseflow .loading i:nth-child(2) {'+'animation-delay: .2s;'+'}'+'#mouseflow .loading i:nth-child(3) {'+'animation-delay: .4s;'+'}'+'#mouseflow .loading i:nth-child(4) {'+'animation-delay: .6s;'+'}'+'#mouseflow .tool-message {'+'width: 100%;'+'height: calc(100% - 58px);'+'background-color: white;'+'color: rgb(71, 64, 62);'+'position: absolute;'+'top: 58px;'+'z-index: 3;'+'padding: 20px;'+'overflow-y: auto;'+'overflow-x: hidden;'+'visibility: hidden;'+'opacity: 0;'+'-webkit-animation: fadeOut .3s linear;'+'animation: fadeOut .3s linear;'+'}'+'#mouseflow .tool-message h3 {'+'margin-bottom: 20px;'+'}'+'@media (max-width: 1300px) {'+'#mouseflow .tool-exclude,'+'#mouseflow .tool-whitelist {'+'width: 60%;'+'}'+'#mouseflow .tool-status {'+'width: 25%;'+'}'+'#mouseflow .tool-status-buttons {'+'bottom: 10px;'+'}'+'}'+'@media (max-width: 850px) {'+'#mouseflow .tool-menu-item {'+'height: 56px;'+'}'+'#mouseflow .tool-menu-item.active:after {'+'border-width: 28px;'+'top: 0px;'+'right: -56px;'+'}'+'#mouseflow .tool-status-text {'+'font-size: 14px;'+'}'+'#mouseflow .btn-widget {'+'font-size: 12px;'+'}'+'#mouseflow a.mf-tool-close {'+'font-size: 12px;'+'}'+'}'+'@media (max-height: 800px) {'+'#mouseflow .tool-status-text {'+'top: 20px;'+'}'+'#mouseflow .tool-status-buttons {'+'bottom: 20px;'+'}'+'}'+'@media (max-height: 650px) {'+'#mouseflow .tool-status-text {'+'font-size: 14px;'+'}'+'}'+'@media (max-width: 650px), (max-height: 600px) {'+'#mouseflow .tool-message {'+'visibility: visible;'+'opacity: 1;'+'-webkit-animation: fadeIn .3s linear;'+'animation: fadeIn .3s linear;'+'}'+'}'+'@-webkit-keyframes fadeUpIn {'+'0% {'+'-webkit-transform: translateY(50px);'+'-ms-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'100% {'+'-webkit-transform: translateY(0);'+'-ms-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'}'+'@keyframes fadeUpIn {'+'0% {'+'-webkit-transform: translateY(50px);'+'-ms-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'100% {'+'-webkit-transform: translateY(0);'+'-ms-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'}'+'@-webkit-keyframes fadeDownOut {'+'0% {'+'visibility: visible;'+'-webkit-transform: translateY(0);'+'-ms-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'100% {'+'visibility: hidden;'+'-webkit-transform: translateY(50px);'+'-ms-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'}'+'@keyframes fadeDownOut {'+'0% {'+'visibility: visible;'+'-webkit-transform: translateY(0);'+'-ms-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'100% {'+'visibility: hidden;'+'-webkit-transform: translateY(50px);'+'-ms-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'}'+'@-webkit-keyframes fadeIn {'+'0% {'+'visibility: visible;'+'opacity: 0;'+'}'+'100% {'+'visibility: visible;'+'opacity: 1;'+'}'+'}'+'@keyframes fadeIn {'+'0% {'+'visibility: visible;'+'opacity: 0;'+'}'+'100% {'+'visibility: visible;'+'opacity: 1;'+'}'+'}'+'@-webkit-keyframes fadeOut {'+'0% {'+'visibility: visible;'+'opacity: 1;'+'}'+'100% {'+'visibility: hidden;'+'opacity: 0;'+'}'+'}'+'@keyframes fadeOut {'+'0% {'+'visibility: visible;'+'opacity: 1;'+'}'+'100% {'+'visibility: hidden;'+'opacity: 0;'+'}'+'}'+'@keyframes blink {'+'0% {'+'opacity: .2;'+'}'+'20% {'+'opacity: 1;'+'}'+'100% {'+'opacity: .2;'+'}'+'}')}this._39=_39;this._59=_59}function _658(_7){var _425=[];function _661(_43,_5,_72,_442,_17){var _28=!!_17._28;var _619=function(_6){if(_72){_6.delegatedTarget=_563(_6.target,_72);if(!_6.delegatedTarget&&!_17._598)return;if(_17._143&&_6.target!==_6.delegatedTarget)return}else if(_17._143&&_6.target!==_43){return}if(_17._95)_6.preventDefault();if(_17._753)_6.stopPropagation();_442.apply(this,arguments)};_43.addEventListener(_5,_619,{capture:_28});_425.push({_43:_43,_5:_5,_442:_619,_28:_28})}function _666(){_425.forEach(function(_16){_16._43.removeEventListener(_16._5,_16._442,{capture:_16._28})});_425=[]}function _563(_43,_72){if(!_72)return null;if(_7._48(_43,_72))return _43;if(!_43.parentNode)return null;return _563(_43.parentNode,_72)}this._22=function(_43,_5,_72,_427,_17){if(typeof _72==='function'){_17=_427;_427=_72;_72=null}_661(_43,_5,_72,_427,_17||{})};this._337=_666}function _664(_14,_7){function _292(_76){if(!_76||!_76.length)return true;_76=_76.filter(function(_71){return _71&&_71._15&&_71._3});var _597=_76.filter(function(_71){return _71._15.indexOf('not')!==0});var _694=_597.length===0||_597.some(function(_71){return _301(_71)});var _596=_76.filter(function(_71){return _71._15.indexOf('not')===0});var _697=_596.length===0||_596.every(function(_71){return _301(_71)});return _697&&_694}function _422(_76,_704){if(!_76||!_76.length)return false;return _76.some(function(_71){if(_301(_71))return _704(_71);return false})}function _301(_71){var _31=_14.path||_14.location.pathname;var _15=_71._15||'';var _3=_71._3||'';switch(_15.toLowerCase()){case'equals':_31=_7._161(_31,'/').toLowerCase();_3=_7._161(_3,'/').toLowerCase();return _31===_3;case'startswith':_31=_31.toLowerCase();_3=_3.toLowerCase();return _31.indexOf(_3)===0;case'endswith':_31=_7._161(_31,'/').toLowerCase();_3=_7._161(_3,'/').toLowerCase();return _31.indexOf(_3)!==-1&&_31.indexOf(_3)===_31.length-_3.length;case'regex':return new RegExp(_3).test(_31);case'notequals':case'notstartswith':case'notendswith':return!_301({_15:_15.slice(3),_3:_3});default:return true}}this._292=_292;this._422=_422}function _693(_1,_361,_363){var _97=_1.location;function _593(_19){var _48=(_19||'').match(/^(([^:]+:)?\\/?\\/?(([^:\\/\\?#]+)?:?(\\d+)?))(\\/.*?)?(\\?.*?)?(#.*)?$/);return{href:_48[0]||'',origin:_48[1]||'',protocol:_48[2]||'',host:_48[3]||'',hostname:_48[4]||'',port:_48[5]||'',pathname:_48[6]||'',search:_48[7]||'',hash:_48[8]||''}}function _595(){try{_1.localStorage.setItem('mf_supportsLocalStorage','1');var _682=_1.localStorage.getItem('mf_supportsLocalStorage')==='1';_1.localStorage.removeItem('mf_supportsLocalStorage');return _682}catch(e){return false}}this.debug=_1.mouseflowDebug||_97.search.indexOf('mf_debug=1')!==-1;this.includeDebugTime=false;this.forceStart=_97.search.indexOf('mf_force=1')!==-1;this.autoStart=_1.mouseflowAutoStart!==false&&_97.search.indexOf('mf_autostart=0')===-1;this.touchEvents=!_1.mouseflowDisableTouch;this.htmlDelay=_1.mouseflowHtmlDelay||1000;this.newPageViewHtmlDelay=_1.mouseflowNewPageViewHtmlDelay||500;this.compress=_1.mouseflowCompress!==false&&_97.search.indexOf('mf_compress=0')===-1;this.autoTagging=_1.mouseflowAutoTagging!==false;this.path=_1.mouseflowPath;this.crossDomainSupport=!!_1.mouseflowCrossDomainSupport;this.location=_593(_1.mouseflowHref||_97.href);this.htmlFetchMode=_1.mouseflowHtmlFetchMode||'post';this.sessionId=_1.mouseflowSessionId;this.honorDoNotTrack=_1.mouseflowHonorDoNotTrack||_363;this.gdprEnabled=_1.mouseflowForceGdpr||_361;this.keyLogging=!_1.mouseflowDisableKeyLogging&&!this.gdprEnabled;this.domReuse=!_1.mouseflowDisableDomReuse;this.domDeduplicator=!_1.mouseflowDisableDomDeduplicator;this.includeSubDomains=!_1.mouseflowExcludeSubDomains;this.registerSubmitTimeout=_1.mouseflowRegisterSubmitTimeout||2000;this.useUnload=!!_1.mouseflowUseUnload;this.replaceLastFormValues=_1.mouseflowReplaceLastFormValues||!this.keyLogging||this.gdprEnabled;this.useAllHoverSelectors=!!_1.mouseflowUseAllHoverSelectors;this.privacyToolEnabled=_1.name==='mf_privacyTool'||_97.search.indexOf('mf_inspect')!==-1||(_595()&&!!_1.localStorage.getItem('mf_privacyTool'));this.secureCookie=!!_1.mouseflowSecureCookie;this.domMutationDetectorEnable=_1.domMutationDetectorEnable!==undefined?_1.domMutationDetectorEnable:false;this.domMutationUseParentNode=_1.domMutationUseParentNode!==undefined?_1.domMutationUseParentNode:true;this.domMutationUsePreviousSibling=_1.domMutationUsePreviousSibling!==undefined?_1.domMutationUsePreviousSibling:false;this.domMutationCountThreshold=_1.domMutationCountThreshold!==undefined?_1.domMutationCountThreshold:20;this.domMutationTimeThresholdInSeconds=_1.domMutationTimeThresholdInSeconds!==undefined?_1.domMutationTimeThresholdInSeconds:10;this.liveHeatmapsEnabled=!!_1.opener&&((typeof _1.name==='string'&&_1.name.indexOf('mf_liveHeatmaps')===0)||_97.search.indexOf('mf_liveHeatmaps')!==-1||(_595()&&!!_1.localStorage.getItem('mf_liveHeatmaps')));this._594=function(_24,_3){switch(_24){case'href':this.location=_593(_3);break;case'keyLogging':this.keyLogging=this.keyLogging&&_3;break;case'gdprEnabled':this.gdprEnabled=this.gdprEnabled||_3;break;default:this[_24]=_3;break}}}function _675(_1){var _9=_1.document,_180;function _196(){if(_9.body&&!_180){_180=_683();_9.body.appendChild(_180)}return _180}function _297(){if(_180){_9.body.removeChild(_180);_180=undefined}}function _683(){var _29=_9.createElement('div');_29.id='mouseflow';var _109=_9.createElement('style');_109.type='text/css';_109.innerHTML=_684();var _418=_9.createElement('div');_418.className='load-font';_418.innerHTML='load font';_29.appendChild(_109);_29.appendChild(_418);return _29}function _684(){return('@font-face {'+'font-family: \"Droid Sans\";'+'font-style: normal;'+'font-weight: 400;'+'src: local(\"Droid Sans Regular\"), local(\"DroidSans-Regular\"), url(https://fonts.gstatic.com/s/droidsans/v8/s-BiyweUPV0v-yRb-cjciPk_vArhqVIZ0nv9q090hN8.woff2) format(\"woff2\");'+'unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2212, U+2215;'+'}'+'#mouseflow :before, #mouseflow :after {'+'display: none;'+'}'+'#mouseflow,'+'#mouseflow * {'+'background: transparent;'+'border: 0;'+'border-image-outset: 0s;'+'border-image-repeat: stretch;'+'border-image-slice: 100%;'+'border-image-source: none;'+'border-image-width: 1;'+'border-color: #000;'+'border-radius: 0;'+'border-width: 0;'+'border-style: none;'+'box-sizing: border-box;'+'clip: auto;'+'float: none;'+'color: inherit;'+'font-family: inherit;'+'font-size: inherit;'+'font-style: inherit;'+'font-weight: inherit;'+'width: auto;'+'height: auto;'+'min-width: auto;'+'min-height: auto;'+'max-width: auto;'+'max-height: auto;'+'letter-spacing: normal;'+'line-height: normal;'+'margin: 0;'+'padding: 0;'+'text-decoration: none;'+'text-indent: 0;'+'text-transform: none;'+'vertical-align: baseline;'+'text-align: left;'+'overflow: visible;'+'top: auto;'+'right: auto;'+'bottom: auto;'+'left: auto;'+'-webkit-transition: none;'+'transition: none;'+'}'+'#mouseflow {'+'font: 400 14px/1.4 \"Droid Sans\", Helvetica, Arial, sans-serif;'+'color: #666;'+'}'+'#mouseflow .load-font {'+'position: absolute;'+'visibility: hidden;'+'width: 0px;'+'height: 0px;'+'overflow: hidden;'+'}')}this._196=_196;this._297=_297}function _673(_1,_108,_415){var _9=_1.document;function _129(_4,_123){var _128=_164(_4);return _128.indexOf(_123)!==-1}function _51(_4,_123){var _128=_164(_4);if(_128.indexOf(_123)===-1)_128.push(_123);_4.className=_128.join(' ')}function _50(_4,_123){var _128=_164(_4);var _64=_128.indexOf(_123);if(_64!==-1)_128.splice(_64,1);_4.className=_128.join(' ')}function _167(_4,_123,_396){if(_396===undefined)_396=!_129(_4,_123);if(_396){_51(_4,_123)}else{_50(_4,_123)}}function _164(_4){var _589=typeof _4.className==='string'?_4.className.replace(/\\s+/g,' ').trim():'';return _589!==''?_589.split(' '):[]}function _243(){return _108.max((_9.body||{}).scrollHeight||0,(_9.body||{}).offsetHeight||0,_9.documentElement.scrollHeight||0,_9.documentElement.offsetHeight||0,_9.documentElement.clientHeight||0)}function _72(_37,_692){var _30=[];if(!_37)return _30;for(var _2=0;_2<_37.length;_2++){if(_692(_37[_2],_2))_30.push(_37[_2])}return _30}function _387(_240){var _291=_240.length;while(_291){var _2=_108.floor(_108.random()*_291--);var _700=_240[_291];_240[_291]=_240[_2];_240[_2]=_700}}function _60(_42){if(!_42)return _42;return _42.replace(/&/g,'&amp;').replace(/\"/g,'&quot;').replace(/'/g,'&#39;').replace(/</g,'&lt;').replace(/>/g,'&gt;')}function _154(_3){if(!_3)return _3;return _3.replace(/([^a-zA-Z\\d-_])/g,'\\\\$1').replace(/^(-)?(\\d)/,'$1\\\\3$2 ')}function _149(_3){return _3?_415.parse(_3):undefined}function _79(_3){var _30;if(typeof Prototype!=='undefined'&&!_402(Prototype.Version,'1.7')){var _701=Array.prototype.toJSON;delete Array.prototype.toJSON;_30=_415.stringify(_3);Array.prototype.toJSON=_701}else if(_3){_30=_415.stringify(_3)}return _30}function _402(_702,_678){var _185=_320(_702);var _42=_320(_678);var _299=_108.max(_185.length,_42.length);if(_42=='NaN'||_185=='NaN'){return false}for(var _2=0;_2<_299;_2++){_185[_2]=_185[_2]||0;_42[_2]=_42[_2]||0;if(_185[_2]==_42[_2]){continue}return _185[_2]>_42[_2]}return true}function _320(_691){var _602=_691.split('.');var _616=[];for(var _2=0;_2<_602.length;_2++){_616.push(parseInt(_602[_2]))}return _616}function _161(_42,_663){var _30=_42;while(_30[_30.length-1]===(_663||' '))_30=_30.slice(0,-1);return _30}function _48(_4,_10){if(_4.nodeType!==1)return false;if(_4.msMatchesSelector)return _4.msMatchesSelector(_10);if(_4.matches)return _4.matches(_10);return false}function _155(_68,_405){return _68.parentNode&&_68.parentNode.hasAttribute&&_68.parentNode.hasAttribute(_405)}this._129=_129;this._51=_51;this._50=_50;this._167=_167;this._164=_164;this._243=_243;this._72=_72;this._387=_387;this._60=_60;this._154=_154;this._149=_149;this._79=_79;this._402=_402;this._320=_320;this._161=_161;this._48=_48;this._155=_155}function _625(_1,_14,_86,_7,_157,_16){var _125=[{_38:\"0g7JjEX67Ue6_PRVvN6K4Q\",_21:\"Conflict Manager Jan 31 19 - \",_612:true,_379:false,_142:\"manual\",_237:null,_374:\"bottomRight\",_230:\"#FF893E\",_372:\"#FFFFFF\",_249:\"user\",_329:false,_375:true,_76:[{_15:\"startsWith\",_3:\"/conflict\"}],_250:[{_15:\"language\",_3:\"en\"}],_165:[{_62:\"n91w\",_15:\"radio\",_91:\"How easy or difficult was it to respond to your conflicts?\",_385:false,_206:[{_69:\"t2xg\",_3:\"Very Easy\"},{_69:\"ehi7\",_3:\"Somewhat Easy\"},{_69:\"xqto\",_3:\"Neither Easy or Difficult\"},{_69:\"jny9\",_3:\"Somewhat Difficult\"},{_69:\"a9cj\",_3:\"Very Difficult\"}]},{_62:\"ao9r\",_15:\"textarea\",_91:\"We'd love to hear more detailed feedback about your experience so we can improve:\",_151:\"SUBMIT\",_215:null},{_62:\"r4bi\",_15:\"success\",_91:\"Thank you for answering our questions!\",_151:\"Close\"}]},{_38:\"NZHWRqvOKEWsF4tFdDs2Mg\",_21:\"Film Transparency Campaign\",_612:true,_379:false,_142:\"delay\",_237:10000,_374:\"bottomRight\",_230:\"#DFEBF5\",_372:\"#000000\",_249:\"user\",_329:false,_375:false,_76:[{_15:\"startsWith\",_3:\"/analytics/filmtransparency\"}],_250:[],_165:[{_62:\"n91w\",_15:\"radio\",_91:\"How valuable did you find this page?\",_385:false,_206:[{_69:\"t2xg\",_3:\"Very\"},{_69:\"ehi7\",_3:\"Somewhat\"},{_69:\"xqto\",_3:\"It's ok\"},{_69:\"jny9\",_3:\"Not much\"},{_69:\"a9cj\",_3:\"Not at all\"}]},{_62:\"ao9r\",_15:\"textarea\",_91:\"We'd love to hear more detailed feedback about your experience so we can improve:\",_151:\"SUBMIT\",_215:null},{_62:\"r4bi\",_15:\"success\",_91:\"Thank you for answering our questions!\",_151:\"Close\"}]},{_38:\"eWeq6ecNqUCluxOJnrb_Sw\",_21:\"VPB\",_612:true,_379:false,_142:\"manual\",_237:null,_374:\"bottomRight\",_230:\"#FF893E\",_372:\"#FFFFFF\",_249:\"user\",_329:false,_375:true,_76:[],_250:[{_15:\"language\",_3:\"en\"}],_165:[{_62:\"n91w\",_15:\"radio\",_91:\"How easy or difficult was it to create this video product?\",_385:false,_206:[{_69:\"t2xg\",_3:\"Very Easy\"},{_69:\"ehi7\",_3:\"Somewhat Easy\"},{_69:\"xqto\",_3:\"Neither Easy or Difficult\"},{_69:\"jny9\",_3:\"Somewhat Difficult\"},{_69:\"a9cj\",_3:\"Very Difficult\"}]},{_62:\"ao9r\",_15:\"textarea\",_91:\"We'd love to hear more detailed feedback about your experience so we can improve:\",_151:\"SUBMIT\",_215:null},{_62:\"r4bi\",_15:\"success\",_91:\"Thank you for answering our questions!\",_151:\"Close\"}]}];var _9=_1.document,_671=_1.navigator,_617=_1.screen,_83,_58,_26,_303={_603:[]},_12,_0,_175,_81,_226,_202,_8;function _752(_11){if(!_11._250||!_11._250.length)return true;var _48={};_11._250.forEach(function(_132){if(_132&&!_48[_132._15]){_48[_132._15]=_669(_132)}});for(var _15 in _48){if(_48.hasOwnProperty(_15)){if(!_48[_15])return false}}return true}function _669(_132){switch(_132._15){case'language':return _671.language.indexOf(_132._3)===0;case'hasViewedPage':return true;case'notViewedPage':return true;case'visitorType':return(_132._3==='returning')===_12._192;case'device':return _132._3===_672();default:return true}}function _672(){var _430='desktop';if(_12._440){if(_617.availWidth<768){_430='phone'}else if(_617.availWidth<1280){_430='tablet'}}return _430}function _758(){_125.filter(function(_11){return _11._142==='pageLoad'}).forEach(function(_11){_156(_11)});_125.filter(function(_11){return _11._142==='delay'}).forEach(function(_11){_303._603.push(_1.setTimeout(function(){_156(_11)},_11._237))});var _606=_125.filter(function(_11){return _11._142==='scroll'});if(_606.length){_16._22(_9,'scroll',function(){var _607=_7._243();if(_1.innerHeight===_607)return;var _742=_607-_1.innerHeight;_606.filter(function(_11){var _744=_11._237/100;return _1.pageYOffset>=_742*_744}).forEach(function(_11){_156(_11)})},{_28:true,_143:true})}var _605=_125.filter(function(_11){return _11._142==='mouseleave'});if(_605.length){_16._22(_9.documentElement,'mouseleave',function(_6){if(_747(_6)){_605.forEach(function(_11){_156(_11)})}},{_28:true,_143:true})}var _604=_125.filter(function(_11){return _11._142==='inactivity'});if(_604.length){_303._746=_1.setInterval(function(){var _706=new Date()-_0._89-_0._316;_604.filter(function(_11){return _706>_11._237}).forEach(function(_11){_156(_11)})},1000)}}function _757(){_303._603.forEach(_1.clearTimeout);_1.clearInterval(_303._746);_16._337()}function _747(_6){var _295=20;var _300=_1.pageYOffset;var _298=_1.pageXOffset;var _749=_300+_1.innerHeight;var _750=_298+_1.innerWidth;return _6.pageY<_300+_295||_6.pageX<_298+_295||_6.pageY>_749-_295||_6.pageX>_750-_295}function _156(_11,_751){if(!_11)return;if(_26){_8('Feedback campaign not started - \"'+_11._21+'\" ('+_11._38+') cannot override active campaign');return}if(!_751){if(_12._135.indexOf(_11._38)!==-1||_0._135.indexOf(_11._38)!==-1){_8('Feedback campaign not started - \"'+_11._21+'\" ('+_11._38+') already completed');return}if(!_157._292(_11._76)){_8('Feedback campaign not started - \"'+_11._21+'\" ('+_11._38+') does not match page rules');return}if(!_752(_11)){_8('Feedback campaign not started - \"'+_11._21+'\" ('+_11._38+') does not match segments');return}}_26=_11;_26._52=_26._329;_26._110=0;_769();_763();_8('Starting feedback campaign \"'+_11._21+'\" ('+_11._38+')');_58=_639(_11);_340(_58);_83.appendChild(_58);_573()}function _340(_58){_16._22(_58,'click','.mf-feedback-toggle',function(_6){_26._52=!_26._52;_325();_7._167(_58,'mf-widget-closed',_26._52)},{_95:true});_16._22(_58,'click','.mf-feedback-close',function(){_550();_582();_1.setTimeout(_355,1000)},{_95:true});_16._22(_58,'focusin','input,button',function(){if(_26._52){_26._52=!_26._52;_325();_7._167(_58,'mf-widget-closed',_26._52)}});_16._22(_58,'change','.mf-feedback-next',function(){_1.setTimeout(function(){if(_553()){_557();_583()}},500)});_16._22(_58,'submit',function(){if(_553()){_557();_583()}},{_95:true,_753:true})}function _355(){if(_58){_83.removeChild(_58);_58=null}if(_26){_26._110=undefined;_26=null}}function _583(){var _75=_315();_582();_26._110++;if(_75){switch(_75._15){case'radio':var _69=_564(_75._62);var _141=_75._206.filter(function(_141){return _141._69===_69})[0];if(_141._756){for(var _2=0;_2<_26._165.length;_2++){var _20=_26._165[_2];if(_20._62===_141._756){_26._110=_2;break}}}break;case'success':_1.setTimeout(_355,1000);break}}_325();_573()}function _582(){var _248=_58.getElementsByClassName('mf-step');_7._51(_248[_26._110],'mf-fade-out');_7._50(_248[_26._110],'mf-fade-in')}function _573(){var _248=_58.getElementsByClassName('mf-step');var _75=_315();if(!_75)return;var _771=_248[_26._110];if(_771){_7._51(_248[_26._110],'mf-fade-in')}if(_75._15==='success'){_550();_226('#mf_feedback_'+_26._38);_202('#mf_feedback_'+_26._38)}}function _550(){if(_26._249==='session'){_0._135.push(_26._38)}else{_12._135.push(_26._38)}}function _553(){var _75=_315();var _294=_7._72(_58.getElementsByClassName('mf-feedback-required'),function(_4){return _4.name===_75._62})[0];if(_294){_7._50(_294,'error');if(!_294.value){_7._51(_294,'error');return false}}if(_75._215){var _304=_7._72(_58.getElementsByClassName('mf-consent-switch'),function(_4){return _4.name===_75._62+'_735'})[0];_7._50(_304,'error');if(_304&&!_304.checked){_7._51(_304,'error');return false}}return true}function _763(){_175('feedback',{campaignId:_26._38})}function _557(){var _75=_315();if(!_75||_75._15==='success')return;_175('feedback',{campaignId:_26._38,stepId:_75._62,answerValue:_564(_75._62)});_81('feedback')}function _769(){var _148=_562();var _319=_148.filter(function(_235){return _235._36===_12._36&&_235._38===_26._38})[0];if(_319){for(var _24 in _319){if(_319.hasOwnProperty(_24)){_26[_24]=_319[_24]}}}}function _325(){var _148=_562();_148=_148.filter(function(_235){return _235._36===_12._36&&_235._38!==_26._38});if(_26._110<_26._165.length-1){_148.push({_36:_12._36,_38:_26._38,_110:_26._110,_52:_26._52})}_772(_148)}function _562(){try{return _7._149(_1.sessionStorage.getItem('mf_feedback'))||[]}catch(e){return[]}}function _772(_148){try{_1.sessionStorage.setItem('mf_feedback',_7._79(_148))}catch(e){}}function _315(){return _26._165[_26._110]}function _564(_21){var _140=_307();var _40=_140[_21];if(_40.value!==undefined)return _40.value;if(_40.length){_40=_7._72(_40,function(_739){return _739.checked})[0];if(_40)return _40.value}return null}function _307(){return _58.getElementsByTagName('form')[0]}function _639(_11){if(!_11)return null;var _29=_9.createElement('div');_29.className='mf-feedback '+_11._374;_29.innerHTML=_738(_11);if(_11._52)_29.className+=' mf-widget-closed';if(_11._375)_29.className+=' mf-widget-discard';var _109=_9.createElement('style');_109.type='text/css';_109.innerHTML=_714()+_721(_11);_29.appendChild(_109);return _29}function _738(_11){return('<form action=\"#\" id=\"mf_feedback_'+_11._38+'\">'+_11._165.map(function(_20){return _711(_11,_20)}).join('')+'</form>')}function _711(_11,_20){return _20._15==='success'?_715(_11,_20):_719(_11,_20)}function _715(_11,_20){return('<div class=\"mf-step mf-step-thanks\">'+'<div class=\"mf-thanks-holder\">'+'<svg class=\"mf-icon-checked\" viewBox=\"0 0 32 32\">'+'<path d=\"M18.272 0h-4.544c-10.304 0-13.728 3.424-13.728 13.728v4.576c0 10.272 3.424 13.696 13.728 13.696h4.576c10.304 0 13.728-3.424 13.728-13.728v-4.544c-0.032-10.304-3.456-13.728-13.76-13.728zM30.848 18.112c0 9.536-3.2 12.736-12.736 12.736h-4.224c-9.536 0-12.736-3.2-12.736-12.736v-4.224c0-9.536 3.2-12.736 12.736-12.736h4.256c9.536 0 12.736 3.2 12.736 12.736v4.224zM23.424 10.848c-0.16 0-0.288 0.064-0.384 0.16l-8.768 8.768-5.312-5.312c-0.096-0.096-0.224-0.16-0.384-0.16-0.32 0-0.576 0.256-0.576 0.576 0 0.16 0.064 0.288 0.16 0.416l5.696 5.696c0.096 0.096 0.256 0.16 0.416 0.16s0.32-0.064 0.416-0.16l9.152-9.152c0.096-0.096 0.16-0.256 0.16-0.416 0-0.32-0.256-0.576-0.576-0.576z\"></path>'+'</svg>'+'<div class=\"mf-widget-content\">'+_7._60(_20._91)+'</div>'+'<div class=\"mf-widget-footer\">'+'<button type=\"submit\" class=\"mf-btn-widget mf-feedback-next\">'+_7._60(_20._151)+'</button>'+'</div>'+_574(_11)+'</div>'+'</div>')}function _719(_11,_20){return('<div class=\"mf-step mf-step-block\">'+'<div class=\"mf-widget-header\">'+'<label class=\"mf-widget-text\">'+_7._60(_20._91)+'</label>'+'<div class=\"mf-widget-toggle\">'+'<a href=\"#\" class=\"mf-btn-cross mf-feedback-close\" aria-label=\"Close feedback widget\"></a>'+'<a href=\"#\" class=\"mf-btn-arrow mf-feedback-toggle\" aria-label=\"Hide/show feedback widget\"></a>'+'</div>'+'</div>'+'<div class=\"mf-widget-container\">'+_725(_20)+_574(_11)+'</div>'+'</div>')}function _574(_11){return _11._379?('<div class=\"mf-widget-powered\">'+'Powered by <a href=\"https://mouseflow.com/?utm_source='+_1.encodeURIComponent(_14.location.hostname)+'&utm_medium=feedback\" target=\"_389\" class=\"mf-link-powered\">Mouseflow</a>'+'</div>'):''}function _725(_20){switch(_20._15){case'radio':return _726(_20);case'text':return _732(_20);case'textarea':return _733(_20);case'nps':return _705(_20)}return''}function _726(_20){if(_20._385){_7._387(_20._206)}return('<div class=\"mf-widget-content\">'+'<ul class=\"mf-radio-list\" role=\"radiogroup\" aria-label=\"'+_7._60(_20._91)+'\">'+_20._206.map(function(_141){return _728(_20,_141)}).join('')+'</ul>'+'</div>')}function _728(_20,_141){return('<li>'+'<label>'+'<input name=\"'+_20._62+'\" value=\"'+_141._69+'\" type=\"radio\" class=\"mf-feedback-next\">'+'<span class=\"mf-fake-input\"></span>'+'<span class=\"mf-fake-label\">'+_7._60(_141._3)+'</span>'+'</label>'+'</li>')}function _732(_20){return('<div class=\"mf-widget-content\">'+'<div class=\"mf-area-block\">'+'<input type=\"text\" class=\"mf-feedback-required\" name=\"'+_20._62+'\" aria-label=\"'+_7._60(_20._91)+'\">'+'</div>'+_568(_20)+'</div>'+'<div class=\"mf-widget-footer\">'+'<button type=\"submit\" class=\"mf-btn-widget mf-feedback-next\">'+_7._60(_20._151)+'</button>'+'</div>')}function _733(_20){return('<div class=\"mf-widget-content\">'+'<div class=\"mf-area-block\">'+'<textarea class=\"mf-feedback-required\" name=\"'+_20._62+'\" aria-label=\"'+_7._60(_20._91)+'\" cols=\"30\" rows=\"10\"></textarea>'+'</div>'+_568(_20)+'</div>'+'<div class=\"mf-widget-footer\">'+'<button type=\"submit\" class=\"mf-btn-widget mf-feedback-next\">'+_7._60(_20._151)+'</button>'+'</div>')}function _568(_20){return _20._215?('<label class=\"mf-checkbox mf-consent-block\">'+'<input type=\"checkbox\" name=\"'+_20._62+'_735\" class=\"mf-consent-switch\">'+'<span class=\"mf-fake-input\"></span>'+'<span class=\"mf-fake-label\">'+_7._60(_20._215)+' '+'<a href=\"https://mouseflow.com/gdpr/\" target=\"_389\">'+'<svg class=\"mf-icon-question\" viewBox=\"648 119 23 23\">'+'<path d=\"M648,130.5 C648,124.148725 653.148725,119 659.5,119 C665.851275,119 671,124.148725 671,130.5 C671,136.851275 665.851275,142 659.5,142 C653.148725,142 648,136.851275 648,130.5 Z M670,130.5 C670,124.70101 665.29899,120 659.5,120 C653.70101,120 649,124.70101 649,130.5 C649,136.29899 653.70101,141 659.5,141 C665.29899,141 670,136.29899 670,130.5 Z M658.668274,134.375 L660.125793,134.375 L660.125793,135.898438 L658.668274,135.898438 L658.668274,134.375 Z M657.093567,125.963135 C657.689273,125.321042 658.507136,125 659.54718,125 C660.509099,125 661.279355,125.274655 661.857971,125.823975 C662.436587,126.373294 662.725891,127.075191 662.725891,127.929688 C662.725891,128.447268 662.619691,128.867186 662.407288,129.189453 C662.194884,129.51172 661.766422,129.985348 661.121887,130.610352 C660.653135,131.064455 660.349183,131.448973 660.210022,131.763916 C660.070861,132.078859 660.001282,132.543942 660.001282,133.15918 L658.697571,133.15918 C658.697571,132.460934 658.780578,131.898195 658.946594,131.470947 C659.112611,131.043699 659.476377,130.554202 660.037903,130.002441 L660.62384,129.423828 C660.799622,129.257812 660.941223,129.084474 661.048645,128.903809 C661.243958,128.586424 661.341614,128.256838 661.341614,127.915039 C661.341614,127.436521 661.198793,127.021486 660.913147,126.669922 C660.627501,126.318358 660.155094,126.142578 659.495911,126.142578 C658.680477,126.142578 658.116518,126.445309 657.804016,127.050781 C657.628234,127.387697 657.528137,127.873532 657.503723,128.508301 L656.200012,128.508301 C656.200012,127.453608 656.497861,126.605228 657.093567,125.963135 C657.093567,125.963135 656.497861,126.605228 657.093567,125.963135 Z\"></path>'+'</svg>'+'</a>'+'</span>'+'</label>'):''}function _705(_20){return('<div class=\"mf-widget-content\">'+'<div class=\"mf-area-block mf-nps-list\" role=\"radiogroup\" aria-label=\"'+_7._60(_20._91)+'\">'+['0','1','2','3','4','5','6','7','8','9','10'].map(function(_3){return _727(_20,_3)}).join('')+'</div>'+'<div class=\"mf-desc-block\">'+'<span>'+_7._60(_20._922)+'</span>'+'<span>'+_7._60(_20._921)+'</span> '+'</div>'+'</div>')}function _727(_20,_3){return('<label>'+'<input name=\"'+_20._62+'\" value=\"'+_3+'\" type=\"radio\" class=\"mf-feedback-next\">'+'<span class=\"mf-fake-label\">'+_3+'</span>'+'</label>')}function _721(_11){return('#mouseflow .mf-widget-header,'+'#mouseflow input[type=\"radio\"] + .mf-fake-input:before,'+'#mouseflow input[type=\"checkbox\"] + .mf-fake-input:before,'+'#mouseflow .mf-btn-widget,'+'#mouseflow .mf-area-block > label > span:hover {'+'background: '+_11._230+';'+'}'+'#mouseflow .mf-widget-text,'+'#mouseflow .mf-btn-widget,'+'#mouseflow .mf-btn-arrow,'+'#mouseflow .mf-btn-cross,'+'#mouseflow .mf-area-block > label > span:hover,'+'#mouseflow input[type=\"checkbox\"] + .mf-fake-input:after {'+'color: '+_11._372+';'+'}'+'#mouseflow .mf-icon-checked,'+'#mouseflow .mf-icon-question {'+'fill: '+_11._230+';'+'}'+'#mouseflow mf-mark {'+'color: '+_11._230+';'+'}'+'#mouseflow .mf-link-powered {'+'color: #4cb377;'+'}')}function _714(){return('#mouseflow .mf-feedback.preview {'+'pointer-events: none;'+'}'+'#mouseflow .mf-step {'+'visibility: hidden;'+'opacity: 0;'+'position: fixed;'+'bottom: 30px;'+'right: 30px;'+'z-index: 2147483647;'+'width: 300px;'+'border-radius: 10px;'+'box-shadow: 0 0 15px rgba(0, 0, 0, .35);'+'overflow: hidden;'+'}'+'#mouseflow .mf-feedback.preview .mf-step {'+'position: absolute;'+'top: auto !important;'+'left: auto !important;'+'bottom: auto !important;'+'right: auto !important;'+'z-index: auto;'+'}'+'#mouseflow .mf-feedback.bottomRight .mf-step {'+'top: auto;'+'left: auto;'+'bottom: 30px;'+'right: 30px;'+'}'+'#mouseflow .mf-feedback.bottomLeft .mf-step {'+'top: auto;'+'left: 30px;'+'bottom: 30px;'+'right: auto;'+'}'+'#mouseflow .mf-feedback.topRight .mf-step {'+'top: 30px;'+'left: auto;'+'bottom: auto;'+'right: 30px;'+'}'+'#mouseflow .mf-feedback.topLeft .mf-step {'+'top: 30px;'+'left: 30px;'+'bottom: auto;'+'right: auto;'+'}'+'#mouseflow .mf-step.mf-fade-in {'+'visibility: visible;'+'-webkit-animation: fadeIn .8s cubic-bezier(0, 0, 0, 1) both;'+'animation: fadeIn .8s cubic-bezier(0, 0, 0, 1) both;'+'}'+'#mouseflow .mf-step.mf-fade-out ~ .mf-fade-in {'+'-webkit-animation: fadeIn .8s cubic-bezier(0, 0, 0, 1) .2s both;'+'animation: fadeIn .8s cubic-bezier(0, 0, 0, 1) .2s both;'+'}'+'#mouseflow .mf-step.mf-fade-out {'+'-webkit-animation: fadeOut .8s cubic-bezier(0, 0, 0, 1);'+'animation: fadeOut .8s cubic-bezier(0, 0, 0, 1);'+'}'+'#mouseflow .mf-step.mf-fade-in.mf-show {'+'opacity: 1;'+'animation: none;'+'}'+'#mouseflow a:hover {'+'text-decoration: underline;'+'}'+'#mouseflow p {'+'margin: 0 0 10px;'+'}'+'#mouseflow .mf-widget-header {'+'color: #fff;'+'padding: 12px 15px;'+'vertical-align: middle;'+'}'+'#mouseflow .mf-widget-text {'+'font-size: 16px;'+'line-height: 20px;'+'width: 245px;'+'display: inline-block;'+'vertical-align: middle;'+'}'+'#mouseflow .mf-widget-toggle {'+'width: 20px;'+'display: inline-block;'+'vertical-align: middle;'+'margin: 2px 0 0 3px;'+'}'+'#mouseflow .mf-btn-arrow,'+'#mouseflow .mf-btn-cross {'+'float: right;'+'z-index: 10;'+'font-size: 25px;'+'line-height: .5;'+'color: #fff;'+'}'+'#mouseflow .mf-btn-arrow {'+'-webkit-transform: rotate(90deg) scale(1.5, 1.5);'+'-ms-transform: rotate(90deg) scale(1.5, 1.5);'+'transform: rotate(90deg) scale(1.5, 1.5);'+'}'+'#mouseflow .mf-btn-arrow:after {'+'content: \"\\\\203a\";'+'display: inline;'+'}'+'#mouseflow .mf-btn-cross:after {'+'content: \"\\\\00d7\";'+'display: inline;'+'}'+'#mouseflow .mf-btn-arrow:hover,'+'#mouseflow .mf-btn-cross:hover {'+'text-decoration: none;'+'text-shadow: 3px 0 2px rgba(0, 0, 0, .5);'+'}'+'#mouseflow .mf-btn-cross {'+'display: none;'+'}'+'#mouseflow .mf-feedback.mf-widget-discard .mf-btn-cross {'+'display: block;'+'}'+'#mouseflow .mf-feedback.mf-widget-discard .mf-btn-arrow {'+'display: none;'+'}'+'#mouseflow .mf-radio-list {'+'margin: 0;'+'padding: 0;'+'list-style: none;'+'}'+'#mouseflow .mf-radio-list li {'+'padding: 12px 10px;'+'border-bottom: 1px solid #e6e6e6;'+'}'+'#mouseflow .mf-radio-list li:hover .mf-fake-input,'+'#mouseflow .mf-checkbox:hover .mf-fake-input {'+'border-color: #ddd;'+'}'+'#mouseflow .mf-radio-list li label,'+'#mouseflow label.mf-checkbox {'+'cursor: pointer;'+'display: block;'+'}'+'#mouseflow .mf-radio-list input[type=\"radio\"],'+'#mouseflow input[type=\"checkbox\"] {'+'position: fixed;'+'left: 0;'+'top: 0;'+'opacity: 0;'+'z-index: -1;'+'}'+'#mouseflow .mf-radio-list .mf-fake-input,'+'#mouseflow .mf-radio-list .mf-fake-label,'+'#mouseflow .mf-checkbox .mf-fake-input,'+'#mouseflow .mf-checkbox .mf-fake-label {'+'display: inline-block;'+'vertical-align: middle;'+'}'+'#mouseflow .mf-radio-list .mf-fake-label,'+'#mouseflow .mf-checkbox .mf-fake-label {'+'width: calc(100% - 35px);'+'line-height: 17px;'+'}'+'#mouseflow .mf-radio-list .mf-fake-input {'+'width: 22px;'+'height: 22px;'+'border: 2px solid #e6e6e6;'+'background: #f8f8f8;'+'position: relative;'+'margin-right: 9px;'+'border-radius: 50%;'+'}'+'#mouseflow .mf-checkbox .mf-fake-input {'+'width: 21px;'+'height: 21px;'+'border: 2px solid #e6e6e6;'+'background: #f8f8f8;'+'position: relative;'+'margin-right: 9px;'+'border-radius:5px;'+'}'+'#mouseflow .mf-radio-list .mf-fake-input:before {'+'top: 3px;'+'right: 3px;'+'bottom: 3px;'+'left: 3px;'+'border-radius: 100%;'+'}'+'#mouseflow .mf-checkbox .mf-fake-input:before {'+'top: 1px;'+'right: 1px;'+'bottom: 1px;'+'left: 1px;'+'border-radius: 4px;'+'}'+'#mouseflow .mf-checkbox input[type=\"checkbox\"] + .mf-fake-input:after {'+'content: \"\\\\2714\";'+'display: inline;'+'position: absolute;'+'bottom: 0;'+'left: 3px;'+'opacity: 0;'+'}'+'#mouseflow .mf-radio-list input[type=\"radio\"] + .mf-fake-input:before,'+'#mouseflow .mf-checkbox input[type=\"checkbox\"] + .mf-fake-input:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'opacity: 0;'+'-webkit-transition: opacity .3s linear;'+'transition: opacity .3s linear;'+'}'+'#mouseflow .mf-radio-list input[type=\"radio\"]:checked + .mf-fake-input:before,'+'#mouseflow .mf-checkbox input[type=\"checkbox\"]:checked + .mf-fake-input:before,'+'#mouseflow .mf-checkbox input[type=\"checkbox\"]:checked + .mf-fake-input:after {'+'opacity: 1;'+'}'+'#mouseflow .mf-checkbox input[type=\"checkbox\"] + .mf-fake-input:hover {'+'border-color: #ddd;'+'}'+'#mouseflow textarea {'+'min-height: 155px;'+'height: 155px;'+'max-height: 280px;'+'line-height: 19.6px;'+'}'+'#mouseflow textarea,'+'#mouseflow input[type=\"text\"] {'+'-webkit-appearance: none;'+'-webkit-border-radius: 0;'+'box-sizing: border-box;'+'width: 100%;'+'border: 1px solid #e6e6e6;'+'border-radius: 6px;'+'background: #fff;'+'resize: none;'+'padding: 6px 10px;'+'outline: none;'+'}'+'#mouseflow textarea.error,'+'#mouseflow input[type=\"text\"].error,'+'#mouseflow input[type=\"checkbox\"].error + .mf-fake-input {'+'border-color: #c66;'+'}'+'#mouseflow input[type=\"checkbox\"].error + .mf-fake-input:hover {'+'border-color: #a66;'+'}'+'#mouseflow .mf-widget-footer {'+'padding: 8px 10px;'+'text-align: center;'+'color: #808080;'+'background: #fff;'+'position: relative;'+'}'+'#mouseflow .mf-widget-powered {'+'padding: 4px 0 4px;'+'color: #999;'+'font-size: 12px;'+'background: #fff;'+'position: relative;'+'text-align: center;'+'}'+'#mouseflow .mf-widget-footer + .mf-widget-powered {'+'padding: 0 0 4px 0;'+'}'+'#mouseflow .mf-btn-widget {'+'width: 100%;'+'height: 38px;'+'color: #fff;'+'background: #4cb377;'+'border: none;'+'border-radius: 6px;'+'overflow: hidden;'+'position: relative;'+'z-index: 1;'+'cursor: pointer;'+'display: block;'+'padding: 10px;'+'font-family: inherit;'+'font-weight: bold;'+'text-align: center;'+'outline: none;'+'}'+'#mouseflow .mf-btn-widget:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: 0;'+'left: 0;'+'right: 0;'+'bottom: 0;'+'background: rgba(0, 0, 0, .3);'+'opacity: 0;'+'z-index: -1;'+'-webkit-transition: opacity .3s linear;'+'transition: opacity .3s linear;'+'}'+'#mouseflow .mf-btn-widget:hover {'+'text-decoration: none;'+'}'+'#mouseflow .mf-btn-widget:hover:before {'+'opacity: 1;'+'}'+'#mouseflow .mf-thanks-holder {'+'text-align: center;'+'padding: 25px 10px 0;'+'background: #fff;'+'}'+'#mouseflow .mf-step-thanks .mf-widget-content {'+'padding: 0 10px 27px;'+'text-align: center;'+'line-height: 17px;'+'max-height: 470px;'+'}'+'#mouseflow .mf-step-thanks .mf-widget-footer {'+'border: none;'+'padding: 0 0 10px;'+'}'+'#mouseflow .mf-icon-checked,'+'#mouseflow .mf-icon-question {'+'display: inline-block;'+'width: 1em;'+'height: 1em;'+'}'+'#mouseflow .mf-icon-checked {'+'font-size: 50px;'+'margin: 0 0 15px;'+'}'+'#mouseflow .mf-icon-question {'+'font-size: 15px;'+'vertical-align: middle;'+'margin-bottom: 2px;'+'}'+'#mouseflow .mf-widget-container {'+'background: #fff;'+'max-height: 500px;'+'-webkit-transition: max-height .5s ease-in-out;'+'transition: max-height .5s ease-in-out;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-widget-header {'+'overflow: hidden;'+'position: relative;'+'z-index: 1;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-widget-header:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: 0;'+'left: 0;'+'right: 0;'+'bottom: 0;'+'background: rgba(0, 0, 0, .3);'+'opacity: 0;'+'z-index: -1;'+'-webkit-transition: opacity .3s linear;'+'transition: opacity .3s linear;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-widget-header:hover:before {'+'opacity: 1;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-widget-toggle {'+'margin: 0;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-btn-cross {'+'display: none;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-btn-arrow {'+'display: block;'+'-webkit-transform: rotate(-90deg) scale(1.5, 1.5);'+'-ms-transform: rotate(-90deg) scale(1.5, 1.5);'+'transform: rotate(-90deg) scale(1.5, 1.5);'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-btn-arrow:before {'+'content: \"\";'+'display: inline;'+'position: absolute;'+'top: -180px;'+'left: -20px;'+'right: -20px;'+'bottom: -12px;'+'display: block;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-btn-arrow:hover {'+'text-shadow: -3px 0 2px rgba(0, 0, 0, .5);'+'}'+'#mouseflow .mf-area-block {'+'padding: 14px 10px 2px;'+'display: flex;'+'justify-content: space-between;'+'}'+'#mouseflow .mf-area-block span {'+'background-color: #ddd;'+'margin: 2px;'+'cursor: pointer;'+'padding: 6px;'+'border-radius: 5px;'+'}'+'#mouseflow .mf-area-block > label > span:hover {'+'background: #4CB377;'+'color: #fff;'+'}'+'#mouseflow .mf-desc-block {'+'padding: 4px 0px 0px;'+'display: flex;'+'justify-content: space-between;'+'}'+'#mouseflow .mf-desc-block span {'+'padding: 5px 13px 12px;'+'font-size: 11px;'+'}'+'#mouseflow .mf-feedback.mf-widget-closed .mf-widget-container {'+'max-height: 0;'+'}'+'#mouseflow .mf-nps-list {'+'padding: 25px 10px 2px;'+'}'+'#mouseflow .mf-nps-list input[type=\"radio\"] {'+'display: none;'+'}'+'#mouseflow .mf-consent-block {'+'padding: 5px 10px 0px 12px;'+'}'+'#mouseflow .mf-consent-block .fake-label {'+'font-size: 12px;'+'}'+'@-webkit-keyframes fadeIn {'+'0% {'+'-webkit-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'100% {'+'-webkit-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'}'+'@keyframes fadeIn {'+'0% {'+'-webkit-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'100% {'+'-webkit-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'}'+'@-webkit-keyframes fadeOut {'+'0% {'+'visibility: visible;'+'-webkit-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'100% {'+'visibility: hidden;'+'-webkit-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'}'+'@keyframes fadeOut {'+'0% {'+'visibility: visible;'+'-webkit-transform: translateY(0);'+'transform: translateY(0);'+'opacity: 1;'+'}'+'100% {'+'visibility: hidden;'+'-webkit-transform: translateY(50px);'+'transform: translateY(50px);'+'opacity: 0;'+'}'+'}')}this._39=function(_713,_712,_737,_770,_765,_759,_224){_12=_713;_0=_712;_175=_737;_81=_770;_226=_765;_202=_759;_8=_224;_83=_86._196();if(!_83){_8('Feedback widget not initiated - could not create root HTML element');return}_1.setTimeout(function(){var _200=_14.location.search.match(/mf_feedback=([^&]+)/);if(_200){var _38=_200[1];var _11=_125.filter(function(_11){return _11._38===_38})[0];if(_11){_156(_11,true);return}else{_8('Feedback campaign not started - campaign ('+_38+') was not found')}}_758()},1000);};this._59=function(){_757();_355();_86._297()};this._309=function(_358){var _11=_125.filter(function(_11){return _11._38===_358||_11._21===_358})[0];if(_11){_156(_11)}else{_8('Feedback campaign not started - campaign ('+_358+') was not found')}};this._696=function(_11){if(!_11&&typeof _125[0]==='object')_11=_125[0];var _641=_639(_11);if(!_641)return null;var _642=_86._196();_642.appendChild(_641);return _642};this._311=function(_5){if(!/clickError|clickRage/.test(_5))return;_125.filter(function(_11){return _11._142===_5}).forEach(function(_11){_156(_11)})}}var _361=false;var _363=false;var _14=new _693(window,_361,_363);var _86=new _675(window);var _7=new _673(window,Math,JSON);var _157=new _664(_14,_7);var _16=new _658(_7);var _314=new _659(window,_86,_7,_16);var _127=(typeof _625==='function')?new _625(window,_14,_86,_7,_157,_16):{_39:function(){},_59:function(){},_309:function(){},_696:function(){},_311:function(){}};var _368=new _690(_14);var _189=new _688(window,_14,_86,_7,_16);window.mouseflow=new _687(window,Math,_14,_7,_157,_16,_314,_127,_368,_189)})()}"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 62282
        },
        "cache": {},
        "timings": {
          "blocked": 2.7329999846965074,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 1.076,
          "wait": 49.933000033549966,
          "receive": 119.69700001645833,
          "_blocked_queueing": 0.7929999846965075
        },
        "serverIPAddress": "23.111.9.38",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 110109
              },
              {
                "functionName": "l.run",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 23003
              },
              {
                "functionName": "u",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 22507
              }
            ],
            "parent": {
              "description": "setTimeout",
              "callFrames": [
                {
                  "functionName": "a",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 21970
                },
                {
                  "functionName": "f.nextTick",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 22961
                },
                {
                  "functionName": "o",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 110034
                },
                {
                  "functionName": "n.load",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 7854
                },
                {
                  "functionName": "s.initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 71666
                },
                {
                  "functionName": "initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 8384
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 2212
                },
                {
                  "functionName": "l",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 2,
                  "columnNumber": 4485
                },
                {
                  "functionName": "c",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 2,
                  "columnNumber": 4544
                },
                {
                  "functionName": "o.init.o.initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 1940
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 24224
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 3961
                },
                {
                  "functionName": "3../analytics",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 4523
                },
                {
                  "functionName": "i",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 340
                },
                {
                  "functionName": "e",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 498
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 526
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 12,
                  "columnNumber": 9093
                }
              ]
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949566",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:17.891Z",
        "time": 471.1260000139847,
        "request": {
          "method": "GET",
          "url": "https://www.google-analytics.com/analytics.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "www.google-analytics.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/analytics.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=10886400; includeSubDomains; preload"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 06:43:14 GMT"
            },
            {
              "name": "expires",
              "value": "Tue, 10 Mar 2020 08:43:14 GMT"
            },
            {
              "name": "last-modified",
              "value": "Thu, 06 Feb 2020 00:21:02 GMT"
            },
            {
              "name": "x-content-type-options",
              "value": "nosniff"
            },
            {
              "name": "content-type",
              "value": "text/javascript"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "server",
              "value": "Golfe2"
            },
            {
              "name": "content-length",
              "value": "18174"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=7200"
            },
            {
              "name": "age",
              "value": "6484"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 45229,
            "mimeType": "text/javascript",
            "text": "(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar m=this||self,n=function(a,b){a=a.split(\".\");var c=m;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}:c[d]=b};var p=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])},q=function(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1};var r=window,t=document,u=function(a,b){t.addEventListener?t.addEventListener(a,b,!1):t.attachEvent&&t.attachEvent(\"on\"+a,b)};var v=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;var w={},x=function(){w.TAGGING=w.TAGGING||[];w.TAGGING[1]=!0};var y=/:[0-9]+$/,A=function(a,b){b&&(b=String(b).toLowerCase());if(\"protocol\"===b||\"port\"===b)a.protocol=z(a.protocol)||z(r.location.protocol);\"port\"===b?a.port=String(Number(a.hostname?a.port:r.location.port)||(\"http\"==a.protocol?80:\"https\"==a.protocol?443:\"\")):\"host\"===b&&(a.hostname=(a.hostname||r.location.hostname).replace(y,\"\").toLowerCase());var c=z(a.protocol);b&&(b=String(b).toLowerCase());switch(b){case \"url_no_fragment\":b=\"\";a&&a.href&&(b=a.href.indexOf(\"#\"),b=0>b?a.href:a.href.substr(0,\nb));a=b;break;case \"protocol\":a=c;break;case \"host\":a=a.hostname.replace(y,\"\").toLowerCase();break;case \"port\":a=String(Number(a.port)||(\"http\"==c?80:\"https\"==c?443:\"\"));break;case \"path\":a.pathname||a.hostname||x();a=\"/\"==a.pathname.substr(0,1)?a.pathname:\"/\"+a.pathname;a=a.split(\"/\");a:if(b=a[a.length-1],c=[],Array.prototype.indexOf)b=c.indexOf(b),b=\"number\"==typeof b?b:-1;else{for(var d=0;d<c.length;d++)if(c[d]===b){b=d;break a}b=-1}0<=b&&(a[a.length-1]=\"\");a=a.join(\"/\");break;case \"query\":a=a.search.replace(\"?\",\n\"\");break;case \"extension\":a=a.pathname.split(\".\");a=1<a.length?a[a.length-1]:\"\";a=a.split(\"/\")[0];break;case \"fragment\":a=a.hash.replace(\"#\",\"\");break;default:a=a&&a.href}return a},z=function(a){return a?a.replace(\":\",\"\").toLowerCase():\"\"},B=function(a){var b=t.createElement(\"a\");a&&(b.href=a);var c=b.pathname;\"/\"!==c[0]&&(a||x(),c=\"/\"+c);a=b.hostname.replace(y,\"\");return{href:b.href,protocol:b.protocol,host:b.host,hostname:a,pathname:c,search:b.search,hash:b.hash,port:b.port}};function C(){for(var a=D,b={},c=0;c<a.length;++c)b[a[c]]=c;return b}function E(){var a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";a+=a.toLowerCase()+\"0123456789-_\";return a+\".\"}var D,F;function G(a){D=D||E();F=F||C();for(var b=[],c=0;c<a.length;c+=3){var d=c+1<a.length,f=c+2<a.length,e=a.charCodeAt(c),g=d?a.charCodeAt(c+1):0,h=f?a.charCodeAt(c+2):0,k=e>>2;e=(e&3)<<4|g>>4;g=(g&15)<<2|h>>6;h&=63;f||(h=64,d||(g=64));b.push(D[k],D[e],D[g],D[h])}return b.join(\"\")}\nfunction H(a){function b(k){for(;d<a.length;){var l=a.charAt(d++),M=F[l];if(null!=M)return M;if(!/^[\\s\\xa0]*$/.test(l))throw Error(\"Unknown base64 encoding at char: \"+l);}return k}D=D||E();F=F||C();for(var c=\"\",d=0;;){var f=b(-1),e=b(0),g=b(64),h=b(64);if(64===h&&-1===f)return c;c+=String.fromCharCode(f<<2|e>>4);64!=g&&(c+=String.fromCharCode(e<<4&240|g>>2),64!=h&&(c+=String.fromCharCode(g<<6&192|h)))}};var I;var N=function(){var a=J,b=K,c=L(),d=function(g){a(g.target||g.srcElement||{})},f=function(g){b(g.target||g.srcElement||{})};if(!c.init){u(\"mousedown\",d);u(\"keyup\",d);u(\"submit\",f);var e=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){b(this);e.call(this)};c.init=!0}},O=function(a,b,c){for(var d=L().decorators,f={},e=0;e<d.length;++e){var g=d[e],h;if(h=!c||g.forms)a:{h=g.domains;var k=a;if(h&&(g.sameHost||k!==t.location.hostname))for(var l=0;l<h.length;l++)if(h[l]instanceof\nRegExp){if(h[l].test(k)){h=!0;break a}}else if(0<=k.indexOf(h[l])){h=!0;break a}h=!1}h&&(h=g.placement,void 0==h&&(h=g.fragment?2:1),h===b&&p(f,g.callback()))}return f},L=function(){var a={};var b=r.google_tag_data;r.google_tag_data=void 0===b?a:b;a=r.google_tag_data;b=a.gl;b&&b.decorators||(b={decorators:[]},a.gl=b);return b};var P=/(.*?)\\*(.*?)\\*(.*)/,aa=/([^?#]+)(\\?[^#]*)?(#.*)?/;function Q(a){return new RegExp(\"(.*?)(^|&)\"+a+\"=([^&]*)&?(.*)\")}\nvar S=function(a){var b=[],c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];void 0!==d&&d===d&&null!==d&&\"[object Object]\"!==d.toString()&&(b.push(c),b.push(G(String(d))))}a=b.join(\"*\");return[\"1\",R(a),a].join(\"*\")},R=function(a,b){a=[window.navigator.userAgent,(new Date).getTimezoneOffset(),window.navigator.userLanguage||window.navigator.language,Math.floor((new Date).getTime()/60/1E3)-(void 0===b?0:b),a].join(\"*\");if(!(b=I)){b=Array(256);for(var c=0;256>c;c++){for(var d=c,f=0;8>f;f++)d=d&1?d>>>1^\n3988292384:d>>>1;b[c]=d}}I=b;b=4294967295;for(c=0;c<a.length;c++)b=b>>>8^I[(b^a.charCodeAt(c))&255];return((b^-1)>>>0).toString(36)},ca=function(a){return function(b){var c=B(r.location.href),d=c.search.replace(\"?\",\"\");a:{var f=d.split(\"&\");for(var e=0;e<f.length;e++){var g=f[e].split(\"=\");if(\"_gl\"===decodeURIComponent(g[0]).replace(/\\+/g,\" \")){f=g.slice(1).join(\"=\");break a}}f=void 0}b.query=T(f||\"\")||{};f=A(c,\"fragment\");e=f.match(Q(\"_gl\"));b.fragment=T(e&&e[3]||\"\")||{};a&&ba(c,d,f)}};\nfunction U(a,b){if(a=Q(a).exec(b)){var c=a[2],d=a[4];b=a[1];d&&(b=b+c+d)}return b}\nvar ba=function(a,b,c){function d(e,g){e=U(\"_gl\",e);e.length&&(e=g+e);return e}if(r.history&&r.history.replaceState){var f=Q(\"_gl\");if(f.test(b)||f.test(c))a=A(a,\"path\"),b=d(b,\"?\"),c=d(c,\"#\"),r.history.replaceState({},void 0,\"\"+a+b+c)}},T=function(a){var b=void 0===b?3:b;try{if(a){a:{for(var c=0;3>c;++c){var d=P.exec(a);if(d){var f=d;break a}a=decodeURIComponent(a)}f=void 0}if(f&&\"1\"===f[1]){var e=f[2],g=f[3];a:{for(f=0;f<b;++f)if(e===R(g,f)){var h=!0;break a}h=!1}if(h){b={};var k=g?g.split(\"*\"):\n[];for(g=0;g<k.length;g+=2)b[k[g]]=H(k[g+1]);return b}}}}catch(l){}};function V(a,b,c,d){function f(k){k=U(a,k);var l=k.charAt(k.length-1);k&&\"&\"!==l&&(k+=\"&\");return k+h}d=void 0===d?!1:d;var e=aa.exec(c);if(!e)return\"\";c=e[1];var g=e[2]||\"\";e=e[3]||\"\";var h=a+\"=\"+b;d?e=\"#\"+f(e.substring(1)):g=\"?\"+f(g.substring(1));return\"\"+c+g+e}\nfunction W(a,b){var c=\"FORM\"===(a.tagName||\"\").toUpperCase(),d=O(b,1,c),f=O(b,2,c);b=O(b,3,c);q(d)&&(d=S(d),c?X(\"_gl\",d,a):Y(\"_gl\",d,a,!1));!c&&q(f)&&(c=S(f),Y(\"_gl\",c,a,!0));for(var e in b)b.hasOwnProperty(e)&&Z(e,b[e],a)}function Z(a,b,c,d){if(c.tagName){if(\"a\"===c.tagName.toLowerCase())return Y(a,b,c,d);if(\"form\"===c.tagName.toLowerCase())return X(a,b,c)}if(\"string\"==typeof c)return V(a,b,c,d)}function Y(a,b,c,d){c.href&&(a=V(a,b,c.href,void 0===d?!1:d),v.test(a)&&(c.href=a))}\nfunction X(a,b,c){if(c&&c.action){var d=(c.method||\"\").toLowerCase();if(\"get\"===d){d=c.childNodes||[];for(var f=!1,e=0;e<d.length;e++){var g=d[e];if(g.name===a){g.setAttribute(\"value\",b);f=!0;break}}f||(d=t.createElement(\"input\"),d.setAttribute(\"type\",\"hidden\"),d.setAttribute(\"name\",a),d.setAttribute(\"value\",b),c.appendChild(d))}else\"post\"===d&&(a=V(a,b,c.action),v.test(a)&&(c.action=a))}}\nvar J=function(a){try{a:{for(var b=100;a&&0<b;){if(a.href&&a.nodeName.match(/^a(?:rea)?$/i)){var c=a;break a}a=a.parentNode;b--}c=null}if(c){var d=c.protocol;\"http:\"!==d&&\"https:\"!==d||W(c,c.hostname)}}catch(f){}},K=function(a){try{if(a.action){var b=A(B(a.action),\"host\");W(a,b)}}catch(c){}};n(\"google_tag_data.glBridge.auto\",function(a,b,c,d){N();c=\"fragment\"===c?2:1;a={callback:a,domains:b,fragment:2===c,placement:c,forms:!!d,sameHost:!1};L().decorators.push(a)});n(\"google_tag_data.glBridge.decorate\",function(a,b,c){a=S(a);return Z(\"_gl\",a,b,!!c)});n(\"google_tag_data.glBridge.generate\",S);n(\"google_tag_data.glBridge.get\",function(a,b){var c=ca(!!b);b=L();b.data||(b.data={query:{},fragment:{}},c(b.data));c={};if(b=b.data)p(c,b.query),a&&p(c,b.fragment);return c});})(window);\n(function(){function La(a){var b=1,c;if(a)for(b=0,c=a.length-1;0<=c;c--){var d=a.charCodeAt(c);b=(b<<6&268435455)+d+(d<<14);d=b&266338304;b=0!=d?b^d>>21:b}return b};/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $c=function(a){this.w=a||[]};$c.prototype.set=function(a){this.w[a]=!0};$c.prototype.encode=function(){for(var a=[],b=0;b<this.w.length;b++)this.w[b]&&(a[Math.floor(b/6)]^=1<<b%6);for(b=0;b<a.length;b++)a[b]=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\".charAt(a[b]||0);return a.join(\"\")+\"~\"};var ha=window.GoogleAnalyticsObject,wa;if(wa=void 0!=ha)wa=-1<(ha.constructor+\"\").indexOf(\"String\");var Qa;if(Qa=wa){var Za=window.GoogleAnalyticsObject;Qa=Za?Za.replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g,\"\"):\"\"}var gb=Qa||\"ga\",jd=/^(?:utma\\.)?\\d+\\.\\d+$/,kd=/^amp-[\\w.-]{22,64}$/,Ba=!1;var vd=new $c;function J(a){vd.set(a)}var Td=function(a){a=Dd(a);a=new $c(a);for(var b=vd.w.slice(),c=0;c<a.w.length;c++)b[c]=b[c]||a.w[c];return(new $c(b)).encode()},Dd=function(a){a=a.get(Gd);ka(a)||(a=[]);return a};var ea=function(a){return\"function\"==typeof a},ka=function(a){return\"[object Array]\"==Object.prototype.toString.call(Object(a))},qa=function(a){return void 0!=a&&-1<(a.constructor+\"\").indexOf(\"String\")},D=function(a,b){return 0==a.indexOf(b)},sa=function(a){return a?a.replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g,\"\"):\"\"},ra=function(){for(var a=O.navigator.userAgent+(M.cookie?M.cookie:\"\")+(M.referrer?M.referrer:\"\"),b=a.length,c=O.history.length;0<c;)a+=c--^b++;return[hd()^La(a)&2147483647,Math.round((new Date).getTime()/\n1E3)].join(\".\")},ta=function(a){var b=M.createElement(\"img\");b.width=1;b.height=1;b.src=a;return b},ua=function(){},K=function(a){if(encodeURIComponent instanceof Function)return encodeURIComponent(a);J(28);return a},L=function(a,b,c,d){try{a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent(\"on\"+b,c)}catch(e){J(27)}},f=/^[\\w\\-:/.?=&%!\\[\\]]+$/,Nd=/^[\\w+/_-]+[=]{0,2}$/,be=function(a,b){return E(M.location[b?\"href\":\"search\"],a)},E=function(a,b){return(a=a.match(\"(?:&|#|\\\\?)\"+\nK(b).replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g,\"\\\\$1\")+\"=([^&#]*)\"))&&2==a.length?a[1]:\"\"},xa=function(){var a=\"\"+M.location.hostname;return 0==a.indexOf(\"www.\")?a.substring(4):a},de=function(a,b){var c=a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),\"/\"==a||\"?\"==a||\"\"==a||\":\"==a)return!0;return!1},ya=function(a,b){var c=M.referrer;if(/^(https?|android-app):\\/\\//i.test(c)){if(a)return c;a=\"//\"+M.location.hostname;if(!de(c,a))return b&&(b=a.replace(/\\./g,\"-\")+\".cdn.ampproject.org\",de(c,b))?void 0:\nc}},za=function(a,b){if(1==b.length&&null!=b[0]&&\"object\"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e<d;e++)if(\"object\"===typeof b[e]){for(var g in b[e])b[e].hasOwnProperty(g)&&(c[g]=b[e][g]);break}else e<a.length&&(c[a[e]]=b[e]);return c};var ee=function(){this.keys=[];this.values={};this.m={}};ee.prototype.set=function(a,b,c){this.keys.push(a);c?this.m[\":\"+a]=b:this.values[\":\"+a]=b};ee.prototype.get=function(a){return this.m.hasOwnProperty(\":\"+a)?this.m[\":\"+a]:this.values[\":\"+a]};ee.prototype.map=function(a){for(var b=0;b<this.keys.length;b++){var c=this.keys[b],d=this.get(c);d&&a(c,d)}};var O=window,M=document,va=function(a,b){return setTimeout(a,b)};var F=window,Ea=document,G=function(a){var b=F._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===F[\"ga-disable-\"+a])return!0;try{var c=F.external;if(c&&c._gaUserPrefs&&\"oo\"==c._gaUserPrefs)return!0}catch(g){}a=[];b=String(Ea.cookie||document.cookie).split(\";\");for(c=0;c<b.length;c++){var d=b[c].split(\"=\"),e=d[0].replace(/^\\s*|\\s*$/g,\"\");e&&\"AMP_TOKEN\"==e&&((d=d.slice(1).join(\"=\").replace(/^\\s*|\\s*$/g,\"\"))&&(d=decodeURIComponent(d)),a.push(d))}for(b=0;b<a.length;b++)if(\"$OPT_OUT\"==a[b])return!0;return Ea.getElementById(\"__gaOptOutExtension\")?\n!0:!1};var Ca=function(a){var b=[],c=M.cookie.split(\";\");a=new RegExp(\"^\\\\s*\"+a+\"=\\\\s*(.*?)\\\\s*$\");for(var d=0;d<c.length;d++){var e=c[d].match(a);e&&b.push(e[1])}return b},zc=function(a,b,c,d,e,g,ca){e=G(e)?!1:eb.test(M.location.hostname)||\"/\"==c&&vc.test(d)?!1:!0;if(!e)return!1;b&&1200<b.length&&(b=b.substring(0,1200));c=a+\"=\"+b+\"; path=\"+c+\"; \";g&&(c+=\"expires=\"+(new Date((new Date).getTime()+g)).toGMTString()+\"; \");d&&\"none\"!==d&&(c+=\"domain=\"+d+\";\");ca&&(c+=ca+\";\");d=M.cookie;M.cookie=c;if(!(d=d!=M.cookie))a:{a=\nCa(a);for(d=0;d<a.length;d++)if(b==a[d]){d=!0;break a}d=!1}return d},Cc=function(a){return encodeURIComponent?encodeURIComponent(a).replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\"):a},vc=/^(www\\.)?google(\\.com?)?(\\.[a-z]{2})?$/,eb=/(^|\\.)doubleclick\\.net$/i;var oc,Id=/^.*Version\\/?(\\d+)[^\\d].*$/i,ne=function(){if(void 0!==O.__ga4__)return O.__ga4__;if(void 0===oc){var a=O.navigator.userAgent;if(a){var b=a;try{b=decodeURIComponent(a)}catch(c){}if(a=!(0<=b.indexOf(\"Chrome\"))&&!(0<=b.indexOf(\"CriOS\"))&&(0<=b.indexOf(\"Safari/\")||0<=b.indexOf(\"Safari,\")))b=Id.exec(b),a=11<=(b?Number(b[1]):-1);oc=a}else oc=!1}return oc};var Fa,Ga,fb,Ab,ja=/^https?:\\/\\/[^/]*cdn\\.ampproject\\.org\\//,Ue=/^(?:www\\.|m\\.|amp\\.)+/,Ub=[],da=function(a){if(ye(a[Kd])){if(void 0===Ab){var b;if(b=(b=De.get())&&b._ga||void 0)Ab=b,J(81)}if(void 0!==Ab)return a[Q]||(a[Q]=Ab),!1}if(a[Kd]){J(67);if(a[ac]&&\"cookie\"!=a[ac])return!1;if(void 0!==Ab)a[Q]||(a[Q]=Ab);else{a:{b=String(a[W]||xa());var c=String(a[Yb]||\"/\"),d=Ca(String(a[U]||\"_ga\"));b=na(d,b,c);if(!b||jd.test(b))b=!0;else if(b=Ca(\"AMP_TOKEN\"),0==b.length)b=!0;else{if(1==b.length&&(b=decodeURIComponent(b[0]),\n\"$RETRIEVING\"==b||\"$OPT_OUT\"==b||\"$ERROR\"==b||\"$NOT_FOUND\"==b)){b=!0;break a}b=!1}}if(b&&tc(ic,String(a[Na])))return!0}}return!1},ic=function(){Z.D([ua])},tc=function(a,b){var c=Ca(\"AMP_TOKEN\");if(1<c.length)return J(55),!1;c=decodeURIComponent(c[0]||\"\");if(\"$OPT_OUT\"==c||\"$ERROR\"==c||G(b))return J(62),!1;if(!ja.test(M.referrer)&&\"$NOT_FOUND\"==c)return J(68),!1;if(void 0!==Ab)return J(56),va(function(){a(Ab)},0),!0;if(Fa)return Ub.push(a),!0;if(\"$RETRIEVING\"==c)return J(57),va(function(){tc(a,b)},\n1E4),!0;Fa=!0;c&&\"$\"!=c[0]||(xc(\"$RETRIEVING\",3E4),setTimeout(Mc,3E4),c=\"\");return Pc(c,b)?(Ub.push(a),!0):!1},Pc=function(a,b,c){if(!window.JSON)return J(58),!1;var d=O.XMLHttpRequest;if(!d)return J(59),!1;var e=new d;if(!(\"withCredentials\"in e))return J(60),!1;e.open(\"POST\",(c||\"https://ampcid.google.com/v1/publisher:getClientId\")+\"?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM\",!0);e.withCredentials=!0;e.setRequestHeader(\"Content-Type\",\"text/plain\");e.onload=function(){Fa=!1;if(4==e.readyState){try{200!=\ne.status&&(J(61),Qc(\"\",\"$ERROR\",3E4));var g=JSON.parse(e.responseText);g.optOut?(J(63),Qc(\"\",\"$OPT_OUT\",31536E6)):g.clientId?Qc(g.clientId,g.securityToken,31536E6):!c&&g.alternateUrl?(Ga&&clearTimeout(Ga),Fa=!0,Pc(a,b,g.alternateUrl)):(J(64),Qc(\"\",\"$NOT_FOUND\",36E5))}catch(ca){J(65),Qc(\"\",\"$ERROR\",3E4)}e=null}};d={originScope:\"AMP_ECID_GOOGLE\"};a&&(d.securityToken=a);e.send(JSON.stringify(d));Ga=va(function(){J(66);Qc(\"\",\"$ERROR\",3E4)},1E4);return!0},Mc=function(){Fa=!1},xc=function(a,b){if(void 0===\nfb){fb=\"\";for(var c=id(),d=0;d<c.length;d++){var e=c[d];if(zc(\"AMP_TOKEN\",encodeURIComponent(a),\"/\",e,\"\",b)){fb=e;return}}}zc(\"AMP_TOKEN\",encodeURIComponent(a),\"/\",fb,\"\",b)},Qc=function(a,b,c){Ga&&clearTimeout(Ga);b&&xc(b,c);Ab=a;b=Ub;Ub=[];for(c=0;c<b.length;c++)b[c](a)},ye=function(a){a:{if(ja.test(M.referrer)){var b=M.location.hostname.replace(Ue,\"\");b:{var c=M.referrer;c=c.replace(/^https?:\\/\\//,\"\");var d=c.replace(/^[^/]+/,\"\").split(\"/\"),e=d[2];d=(d=\"s\"==e?d[3]:e)?decodeURIComponent(d):d;if(!d){if(0==\nc.indexOf(\"xn--\")){c=\"\";break b}(c=c.match(/(.*)\\.cdn\\.ampproject\\.org\\/?$/))&&2==c.length&&(d=c[1].replace(/-/g,\".\").replace(/\\.\\./g,\"-\"))}c=d?d.replace(Ue,\"\"):\"\"}(d=b===c)||(c=\".\"+c,d=b.substring(b.length-c.length,b.length)===c);if(d){b=!0;break a}else J(78)}b=!1}return b&&!1!==a};var bd=function(a){return(a?\"https:\":Ba||\"https:\"==M.location.protocol?\"https:\":\"http:\")+\"//www.google-analytics.com\"},Da=function(a){this.name=\"len\";this.message=a+\"-8192\"},ba=function(a,b,c){c=c||ua;if(2036>=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge(\"len\",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+\"?\"+b,\"\",d,c)},wc=function(a,b,c){var d=ta(a+\"?\"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c,\nd){var e=O.XMLHttpRequest;if(!e)return!1;var g=new e;if(!(\"withCredentials\"in g))return!1;a=a.replace(/^http:/,\"https:\");g.open(\"POST\",a,!0);g.withCredentials=!0;g.setRequestHeader(\"Content-Type\",\"text/plain\");g.onreadystatechange=function(){if(4==g.readyState){if(d)try{var ca=g.responseText;if(1>ca.length)ge(\"xhr\",\"ver\",\"0\"),c();else if(\"1\"!=ca.charAt(0))ge(\"xhr\",\"ver\",String(ca.length)),c();else if(3<d.count++)ge(\"xhr\",\"tmr\",\"\"+d.count),c();else if(1==ca.length)c();else{var l=ca.charAt(1);if(\"d\"==\nl)pe(\"https://stats.g.doubleclick.net/j/collect\",d.U,d,c);else if(\"g\"==l){wc(\"https://www.google.%/ads/ga-audiences\".replace(\"%\",\"com\"),d.google,c);var k=ca.substring(2);k&&(/^[a-z.]{1,6}$/.test(k)?wc(\"https://www.google.%/ads/ga-audiences\".replace(\"%\",k),d.google,ua):ge(\"tld\",\"bcc\",k))}else ge(\"xhr\",\"brc\",l),c()}}catch(w){ge(\"xhr\",\"rsp\"),c()}else c();g=null}};g.send(b);return!0},x=function(a,b,c){return O.navigator.sendBeacon?O.navigator.sendBeacon(a,b)?(c(),!0):!1:!1},ge=function(a,b,c){1<=100*\nMath.random()||G(\"?\")||(a=[\"t=error\",\"_e=\"+a,\"_v=j81\",\"sr=1\"],b&&a.push(\"_f=\"+b),c&&a.push(\"_m=\"+K(c.substring(0,100))),a.push(\"aip=1\"),a.push(\"z=\"+hd()),wc(bd(!0)+\"/u/d\",a.join(\"&\"),ua))};var qc=function(){return O.gaData=O.gaData||{}},h=function(a){var b=qc();return b[a]=b[a]||{}};var Ha=function(){this.M=[]};Ha.prototype.add=function(a){this.M.push(a)};Ha.prototype.D=function(a){try{for(var b=0;b<this.M.length;b++){var c=a.get(this.M[b]);c&&ea(c)&&c.call(O,a)}}catch(d){}b=a.get(Ia);b!=ua&&ea(b)&&(a.set(Ia,ua,!0),setTimeout(b,10))};function Ja(a){if(100!=a.get(Ka)&&La(P(a,Q))%1E4>=100*R(a,Ka))throw\"abort\";}function Ma(a){if(G(P(a,Na)))throw\"abort\";}function Oa(){var a=M.location.protocol;if(\"http:\"!=a&&\"https:\"!=a)throw\"abort\";}\nfunction Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&\"withCredentials\"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];ue.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&(\"boolean\"==typeof c&&(c*=1),b.push(d.F+\"=\"+K(\"\"+c))))});!1===a.get(xe)&&b.push(\"npa=1\");b.push(\"z=\"+Bd());a.set(Ra,b.join(\"&\"),!0)}\nfunction Sa(a){var b=P(a,fa);!b&&a.get(Vd)&&(b=\"beacon\");var c=P(a,gd),d=P(a,oe),e=c||(d?d+\"/3\":bd(!1)+\"/collect\");switch(P(a,ad)){case \"d\":e=c||(d?d+\"/32\":bd(!1)+\"/j/collect\");b=a.get(qe)||void 0;pe(e,P(a,Ra),b,a.Z(Ia));break;case \"b\":e=c||(d?d+\"/31\":bd(!1)+\"/r/collect\");default:b?(c=P(a,Ra),d=(d=a.Z(Ia))||ua,\"image\"==b?wc(e,c,d):\"xhr\"==b&&wd(e,c,d)||\"beacon\"==b&&x(e,c,d)||ba(e,c,d)):ba(e,P(a,Ra),a.Z(Ia))}e=P(a,Na);e=h(e);b=e.hitcount;e.hitcount=b?b+1:1;e=P(a,Na);delete h(e).pending_experiments;\na.set(Ia,ua,!0)}function Hc(a){qc().expId&&a.set(Nc,qc().expId);qc().expVar&&a.set(Oc,qc().expVar);var b=P(a,Na);if(b=h(b).pending_experiments){var c=[];for(d in b)b.hasOwnProperty(d)&&b[d]&&c.push(encodeURIComponent(d)+\".\"+encodeURIComponent(b[d]));var d=c.join(\"!\")}else d=void 0;d&&a.set(m,d,!0)}function cd(){if(O.navigator&&\"preview\"==O.navigator.loadPurpose)throw\"abort\";}function yd(a){var b=O.gaDevIds;ka(b)&&0!=b.length&&a.set(\"&did\",b.join(\",\"),!0)}\nfunction vb(a){if(!a.get(Na))throw\"abort\";};var hd=function(){return Math.round(2147483647*Math.random())},Bd=function(){try{var a=new Uint32Array(1);O.crypto.getRandomValues(a);return a[0]&2147483647}catch(b){return hd()}};function Ta(a){var b=R(a,Ua);500<=b&&J(15);var c=P(a,Va);if(\"transaction\"!=c&&\"item\"!=c){c=R(a,Wa);var d=(new Date).getTime(),e=R(a,Xa);0==e&&a.set(Xa,d);e=Math.round(2*(d-e)/1E3);0<e&&(c=Math.min(c+e,20),a.set(Xa,d));if(0>=c)throw\"abort\";a.set(Wa,--c)}a.set(Ua,++b)};var Ya=function(){this.data=new ee};Ya.prototype.get=function(a){var b=$a(a),c=this.data.get(a);b&&void 0==c&&(c=ea(b.defaultValue)?b.defaultValue():b.defaultValue);return b&&b.Z?b.Z(this,a,c):c};var P=function(a,b){a=a.get(b);return void 0==a?\"\":\"\"+a},R=function(a,b){a=a.get(b);return void 0==a||\"\"===a?0:Number(a)};Ya.prototype.Z=function(a){return(a=this.get(a))&&ea(a)?a:ua};\nYa.prototype.set=function(a,b,c){if(a)if(\"object\"==typeof a)for(var d in a)a.hasOwnProperty(d)&&ab(this,d,a[d],c);else ab(this,a,b,c)};var ab=function(a,b,c,d){if(void 0!=c)switch(b){case Na:wb.test(c)}var e=$a(b);e&&e.o?e.o(a,b,c,d):a.data.set(b,c,d)};var ue=new ee,ve=[],bb=function(a,b,c,d,e){this.name=a;this.F=b;this.Z=d;this.o=e;this.defaultValue=c},$a=function(a){var b=ue.get(a);if(!b)for(var c=0;c<ve.length;c++){var d=ve[c],e=d[0].exec(a);if(e){b=d[1](e);ue.set(b.name,b);break}}return b},yc=function(a){var b;ue.map(function(c,d){d.F==a&&(b=d)});return b&&b.name},S=function(a,b,c,d,e){a=new bb(a,b,c,d,e);ue.set(a.name,a);return a.name},cb=function(a,b){ve.push([new RegExp(\"^\"+a+\"$\"),b])},T=function(a,b,c){return S(a,b,c,void 0,db)},db=function(){};var hb=T(\"apiVersion\",\"v\"),ib=T(\"clientVersion\",\"_v\");S(\"anonymizeIp\",\"aip\");var jb=S(\"adSenseId\",\"a\"),Va=S(\"hitType\",\"t\"),Ia=S(\"hitCallback\"),Ra=S(\"hitPayload\");S(\"nonInteraction\",\"ni\");S(\"currencyCode\",\"cu\");S(\"dataSource\",\"ds\");var Vd=S(\"useBeacon\",void 0,!1),fa=S(\"transport\");S(\"sessionControl\",\"sc\",\"\");S(\"sessionGroup\",\"sg\");S(\"queueTime\",\"qt\");var Ac=S(\"_s\",\"_s\");S(\"screenName\",\"cd\");var kb=S(\"location\",\"dl\",\"\"),lb=S(\"referrer\",\"dr\"),mb=S(\"page\",\"dp\",\"\");S(\"hostname\",\"dh\");\nvar nb=S(\"language\",\"ul\"),ob=S(\"encoding\",\"de\");S(\"title\",\"dt\",function(){return M.title||void 0});cb(\"contentGroup([0-9]+)\",function(a){return new bb(a[0],\"cg\"+a[1])});var pb=S(\"screenColors\",\"sd\"),qb=S(\"screenResolution\",\"sr\"),rb=S(\"viewportSize\",\"vp\"),sb=S(\"javaEnabled\",\"je\"),tb=S(\"flashVersion\",\"fl\");S(\"campaignId\",\"ci\");S(\"campaignName\",\"cn\");S(\"campaignSource\",\"cs\");S(\"campaignMedium\",\"cm\");S(\"campaignKeyword\",\"ck\");S(\"campaignContent\",\"cc\");\nvar ub=S(\"eventCategory\",\"ec\"),xb=S(\"eventAction\",\"ea\"),yb=S(\"eventLabel\",\"el\"),zb=S(\"eventValue\",\"ev\"),Bb=S(\"socialNetwork\",\"sn\"),Cb=S(\"socialAction\",\"sa\"),Db=S(\"socialTarget\",\"st\"),Eb=S(\"l1\",\"plt\"),Fb=S(\"l2\",\"pdt\"),Gb=S(\"l3\",\"dns\"),Hb=S(\"l4\",\"rrt\"),Ib=S(\"l5\",\"srt\"),Jb=S(\"l6\",\"tcp\"),Kb=S(\"l7\",\"dit\"),Lb=S(\"l8\",\"clt\"),Ve=S(\"l9\",\"_gst\"),We=S(\"l10\",\"_gbt\"),Xe=S(\"l11\",\"_cst\"),Ye=S(\"l12\",\"_cbt\"),Mb=S(\"timingCategory\",\"utc\"),Nb=S(\"timingVar\",\"utv\"),Ob=S(\"timingLabel\",\"utl\"),Pb=S(\"timingValue\",\"utt\");\nS(\"appName\",\"an\");S(\"appVersion\",\"av\",\"\");S(\"appId\",\"aid\",\"\");S(\"appInstallerId\",\"aiid\",\"\");S(\"exDescription\",\"exd\");S(\"exFatal\",\"exf\");var Nc=S(\"expId\",\"xid\"),Oc=S(\"expVar\",\"xvar\"),m=S(\"exp\",\"exp\"),Rc=S(\"_utma\",\"_utma\"),Sc=S(\"_utmz\",\"_utmz\"),Tc=S(\"_utmht\",\"_utmht\"),Ua=S(\"_hc\",void 0,0),Xa=S(\"_ti\",void 0,0),Wa=S(\"_to\",void 0,20);cb(\"dimension([0-9]+)\",function(a){return new bb(a[0],\"cd\"+a[1])});cb(\"metric([0-9]+)\",function(a){return new bb(a[0],\"cm\"+a[1])});S(\"linkerParam\",void 0,void 0,Bc,db);\nvar Ze=T(\"_cd2l\",void 0,!1),ld=S(\"usage\",\"_u\"),Gd=S(\"_um\");S(\"forceSSL\",void 0,void 0,function(){return Ba},function(a,b,c){J(34);Ba=!!c});var ed=S(\"_j1\",\"jid\"),ia=S(\"_j2\",\"gjid\");cb(\"\\\\&(.*)\",function(a){var b=new bb(a[0],a[1]),c=yc(a[0].substring(1));c&&(b.Z=function(d){return d.get(c)},b.o=function(d,e,g,ca){d.set(c,g,ca)},b.F=void 0);return b});\nvar Qb=T(\"_oot\"),dd=S(\"previewTask\"),Rb=S(\"checkProtocolTask\"),md=S(\"validationTask\"),Sb=S(\"checkStorageTask\"),Uc=S(\"historyImportTask\"),Tb=S(\"samplerTask\"),Vb=S(\"_rlt\"),Wb=S(\"buildHitTask\"),Xb=S(\"sendHitTask\"),Vc=S(\"ceTask\"),zd=S(\"devIdTask\"),Cd=S(\"timingTask\"),Ld=S(\"displayFeaturesTask\"),oa=S(\"customTask\"),V=T(\"name\"),Q=T(\"clientId\",\"cid\"),n=T(\"clientIdTime\"),xd=T(\"storedClientId\"),Ad=S(\"userId\",\"uid\"),Na=T(\"trackingId\",\"tid\"),U=T(\"cookieName\",void 0,\"_ga\"),W=T(\"cookieDomain\"),Yb=T(\"cookiePath\",\nvoid 0,\"/\"),Zb=T(\"cookieExpires\",void 0,63072E3),Hd=T(\"cookieUpdate\",void 0,!0),Be=T(\"cookieFlags\",void 0,\"\"),$b=T(\"legacyCookieDomain\"),Wc=T(\"legacyHistoryImport\",void 0,!0),ac=T(\"storage\",void 0,\"cookie\"),bc=T(\"allowLinker\",void 0,!1),cc=T(\"allowAnchor\",void 0,!0),Ka=T(\"sampleRate\",\"sf\",100),dc=T(\"siteSpeedSampleRate\",void 0,1),ec=T(\"alwaysSendReferrer\",void 0,!1),I=T(\"_gid\",\"_gid\"),la=T(\"_gcn\"),Kd=T(\"useAmpClientId\"),ce=T(\"_gclid\"),fe=T(\"_gt\"),he=T(\"_ge\",void 0,7776E6),ie=T(\"_gclsrc\"),je=T(\"storeGac\",\nvoid 0,!0),oe=S(\"_x_19\"),gd=S(\"transportUrl\"),Md=S(\"_r\",\"_r\"),qe=S(\"_dp\"),ad=S(\"_jt\",void 0,\"n\"),Ud=S(\"allowAdFeatures\",void 0,!0),xe=S(\"allowAdPersonalizationSignals\",void 0,!0);function X(a,b,c,d){b[a]=function(){try{return d&&J(d),c.apply(this,arguments)}catch(e){throw ge(\"exc\",a,e&&e.name),e;}}};var Od=function(){this.V=100;this.$=this.fa=!1;this.oa=\"detourexp\";this.groups=1},Ed=function(a){var b=new Od,c;if(b.fa&&b.$)return 0;b.$=!0;if(a){if(b.oa&&void 0!==a.get(b.oa))return R(a,b.oa);if(0==a.get(dc))return 0}if(0==b.V)return 0;void 0===c&&(c=Bd());return 0==c%b.V?Math.floor(c/b.V)%b.groups+1:0};function fc(){var a,b;if((b=(b=O.navigator)?b.plugins:null)&&b.length)for(var c=0;c<b.length&&!a;c++){var d=b[c];-1<d.name.indexOf(\"Shockwave Flash\")&&(a=d.description)}if(!a)try{var e=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");a=e.GetVariable(\"$version\")}catch(g){}if(!a)try{e=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.6\"),a=\"WIN 6,0,21,0\",e.AllowScriptAccess=\"always\",a=e.GetVariable(\"$version\")}catch(g){}if(!a)try{e=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\"),a=e.GetVariable(\"$version\")}catch(g){}a&&\n(e=a.match(/[\\d]+/g))&&3<=e.length&&(a=e[0]+\".\"+e[1]+\" r\"+e[2]);return a||void 0};var aa=function(a){var b=Math.min(R(a,dc),100);return La(P(a,Q))%100>=b?!1:!0},gc=function(a){var b={};if(Ec(b)||Fc(b)){var c=b[Eb];void 0==c||Infinity==c||isNaN(c)||(0<c?(Y(b,Gb),Y(b,Jb),Y(b,Ib),Y(b,Fb),Y(b,Hb),Y(b,Kb),Y(b,Lb),Y(b,Ve),Y(b,We),Y(b,Xe),Y(b,Ye),va(function(){a(b)},10)):L(O,\"load\",function(){gc(a)},!1))}},Ec=function(a){var b=O.performance||O.webkitPerformance;b=b&&b.timing;if(!b)return!1;var c=b.navigationStart;if(0==c)return!1;a[Eb]=b.loadEventStart-c;a[Gb]=b.domainLookupEnd-b.domainLookupStart;\na[Jb]=b.connectEnd-b.connectStart;a[Ib]=b.responseStart-b.requestStart;a[Fb]=b.responseEnd-b.responseStart;a[Hb]=b.fetchStart-c;a[Kb]=b.domInteractive-c;a[Lb]=b.domContentLoadedEventStart-c;a[Ve]=N.L-c;a[We]=N.ya-c;O.google_tag_manager&&O.google_tag_manager._li&&(b=O.google_tag_manager._li,a[Xe]=b.cst,a[Ye]=b.cbt);return!0},Fc=function(a){if(O.top!=O)return!1;var b=O.external,c=b&&b.onloadT;b&&!b.isValidLoadTime&&(c=void 0);2147483648<c&&(c=void 0);0<c&&b.setPageReadyTime();if(void 0==c)return!1;\na[Eb]=c;return!0},Y=function(a,b){var c=a[b];if(isNaN(c)||Infinity==c||0>c)a[b]=void 0},Fd=function(a){return function(b){if(\"pageview\"==b.get(Va)&&!a.I){a.I=!0;var c=aa(b),d=0<E(P(b,kb),\"gclid\").length;(c||d)&&gc(function(e){c&&a.send(\"timing\",e);d&&a.send(\"adtiming\",e)})}}};var hc=!1,mc=function(a){if(\"cookie\"==P(a,ac)){if(a.get(Hd)||P(a,xd)!=P(a,Q)){var b=1E3*R(a,Zb);ma(a,Q,U,b)}(a.get(Hd)||uc(a)!=P(a,I))&&ma(a,I,la,864E5);if(a.get(je)){var c=P(a,ce);if(c){var d=Math.min(R(a,he),1E3*R(a,Zb));d=Math.min(d,1E3*R(a,fe)+d-(new Date).getTime());a.data.set(he,d);b={};var e=P(a,fe),g=P(a,ie),ca=kc(P(a,Yb)),l=lc(P(a,W)),k=P(a,Na);a=P(a,Be);g&&\"aw.ds\"!=g?b&&(b.ua=!0):(c=[\"1\",e,Cc(c)].join(\".\"),0<d&&(b&&(b.ta=!0),zc(\"_gac_\"+Cc(k),c,ca,l,k,d,a)));le(b)}}else J(75)}},ma=function(a,\nb,c,d){var e=nd(a,b);if(e){c=P(a,c);var g=kc(P(a,Yb)),ca=lc(P(a,W)),l=P(a,Be),k=P(a,Na);if(\"auto\"!=ca)zc(c,e,g,ca,k,d,l)&&(hc=!0);else{J(32);for(var w=id(),Ce=0;Ce<w.length;Ce++)if(ca=w[Ce],a.data.set(W,ca),e=nd(a,b),zc(c,e,g,ca,k,d,l)){hc=!0;return}a.data.set(W,\"auto\")}}},uc=function(a){var b=Ca(P(a,la));return Xd(a,b)},nc=function(a){if(\"cookie\"==P(a,ac)&&!hc&&(mc(a),!hc))throw\"abort\";},Yc=function(a){if(a.get(Wc)){var b=P(a,W),c=P(a,$b)||xa(),d=Xc(\"__utma\",c,b);d&&(J(19),a.set(Tc,(new Date).getTime(),\n!0),a.set(Rc,d.R),(b=Xc(\"__utmz\",c,b))&&d.hash==b.hash&&a.set(Sc,b.R))}},nd=function(a,b){b=Cc(P(a,b));var c=lc(P(a,W)).split(\".\").length;a=jc(P(a,Yb));1<a&&(c+=\"-\"+a);return b?[\"GA1\",c,b].join(\".\"):\"\"},Xd=function(a,b){return na(b,P(a,W),P(a,Yb))},na=function(a,b,c){if(!a||1>a.length)J(12);else{for(var d=[],e=0;e<a.length;e++){var g=a[e];var ca=g.split(\".\");var l=ca.shift();(\"GA1\"==l||\"1\"==l)&&1<ca.length?(g=ca.shift().split(\"-\"),1==g.length&&(g[1]=\"1\"),g[0]*=1,g[1]*=1,ca={H:g,s:ca.join(\".\")}):ca=\nkd.test(g)?{H:[0,0],s:g}:void 0;ca&&d.push(ca)}if(1==d.length)return J(13),d[0].s;if(0==d.length)J(12);else{J(14);d=Gc(d,lc(b).split(\".\").length,0);if(1==d.length)return d[0].s;d=Gc(d,jc(c),1);1<d.length&&J(41);return d[0]&&d[0].s}}},Gc=function(a,b,c){for(var d=[],e=[],g,ca=0;ca<a.length;ca++){var l=a[ca];l.H[c]==b?d.push(l):void 0==g||l.H[c]<g?(e=[l],g=l.H[c]):l.H[c]==g&&e.push(l)}return 0<d.length?d:e},lc=function(a){return 0==a.indexOf(\".\")?a.substr(1):a},id=function(){var a=[],b=xa().split(\".\");\nif(4==b.length){var c=b[b.length-1];if(parseInt(c,10)==c)return[\"none\"]}for(c=b.length-2;0<=c;c--)a.push(b.slice(c).join(\".\"));b=M.location.hostname;eb.test(b)||vc.test(b)||a.push(\"none\");return a},kc=function(a){if(!a)return\"/\";1<a.length&&a.lastIndexOf(\"/\")==a.length-1&&(a=a.substr(0,a.length-1));0!=a.indexOf(\"/\")&&(a=\"/\"+a);return a},jc=function(a){a=kc(a);return\"/\"==a?1:a.split(\"/\").length},le=function(a){a.ta&&J(77);a.na&&J(74);a.pa&&J(73);a.ua&&J(69)};function Xc(a,b,c){\"none\"==b&&(b=\"\");var d=[],e=Ca(a);a=\"__utma\"==a?6:2;for(var g=0;g<e.length;g++){var ca=(\"\"+e[g]).split(\".\");ca.length>=a&&d.push({hash:ca[0],R:e[g],O:ca})}if(0!=d.length)return 1==d.length?d[0]:Zc(b,d)||Zc(c,d)||Zc(null,d)||d[0]}function Zc(a,b){if(null==a)var c=a=1;else c=La(a),a=La(D(a,\".\")?a.substring(1):\".\"+a);for(var d=0;d<b.length;d++)if(b[d].hash==c||b[d].hash==a)return b[d]};var Jc=new RegExp(/^https?:\\/\\/([^\\/:]+)/),De=O.google_tag_data.glBridge,Kc=/(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/,od=/(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;function Bc(a){if(a.get(Ze))return J(35),De.generate($e(a));var b=P(a,Q),c=P(a,I)||\"\";b=\"_ga=2.\"+K(pa(c+b,0)+\".\"+c+\"-\"+b);(a=af(a))?(J(44),a=\"&_gac=1.\"+K([pa(a.qa,0),a.timestamp,a.qa].join(\".\"))):a=\"\";return b+a}\nfunction Ic(a,b){var c=new Date,d=O.navigator,e=d.plugins||[];a=[a,d.userAgent,c.getTimezoneOffset(),c.getYear(),c.getDate(),c.getHours(),c.getMinutes()+b];for(b=0;b<e.length;++b)a.push(e[b].description);return La(a.join(\".\"))}function pa(a,b){var c=new Date,d=O.navigator,e=c.getHours()+Math.floor((c.getMinutes()+b)/60);return La([a,d.userAgent,d.language||\"\",c.getTimezoneOffset(),c.getYear(),c.getDate()+Math.floor(e/24),(24+e)%24,(60+c.getMinutes()+b)%60].join(\".\"))}\nvar Dc=function(a){J(48);this.target=a;this.T=!1};Dc.prototype.ca=function(a,b){if(a){if(this.target.get(Ze))return De.decorate($e(this.target),a,b);if(a.tagName){if(\"a\"==a.tagName.toLowerCase()){a.href&&(a.href=qd(this,a.href,b));return}if(\"form\"==a.tagName.toLowerCase())return rd(this,a)}if(\"string\"==typeof a)return qd(this,a,b)}};\nvar qd=function(a,b,c){var d=Kc.exec(b);d&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:\"\"));(d=od.exec(b))&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:\"\"));a=a.target.get(\"linkerParam\");var e=b.indexOf(\"?\");d=b.indexOf(\"#\");c?b+=(-1==d?\"#\":\"&\")+a:(c=-1==e?\"?\":\"&\",b=-1==d?b+(c+a):b.substring(0,d)+c+a+b.substring(d));b=b.replace(/&+_ga=/,\"&_ga=\");return b=b.replace(/&+_gac=/,\"&_gac=\")},rd=function(a,b){if(b&&b.action)if(\"get\"==b.method.toLowerCase()){a=a.target.get(\"linkerParam\").split(\"&\");for(var c=0;c<a.length;c++){var d=\na[c].split(\"=\"),e=d[1];d=d[0];for(var g=b.childNodes||[],ca=!1,l=0;l<g.length;l++)if(g[l].name==d){g[l].setAttribute(\"value\",e);ca=!0;break}ca||(g=M.createElement(\"input\"),g.setAttribute(\"type\",\"hidden\"),g.setAttribute(\"name\",d),g.setAttribute(\"value\",e),b.appendChild(g))}}else\"post\"==b.method.toLowerCase()&&(b.action=qd(a,b.action))};\nDc.prototype.S=function(a,b,c){function d(g){try{g=g||O.event;a:{var ca=g.target||g.srcElement;for(g=100;ca&&0<g;){if(ca.href&&ca.nodeName.match(/^a(?:rea)?$/i)){var l=ca;break a}ca=ca.parentNode;g--}l={}}(\"http:\"==l.protocol||\"https:\"==l.protocol)&&sd(a,l.hostname||\"\")&&l.href&&(l.href=qd(e,l.href,b))}catch(k){J(26)}}var e=this;this.target.get(Ze)?De.auto(function(){return $e(e.target)},a,b?\"fragment\":\"\",c):(this.T||(this.T=!0,L(M,\"mousedown\",d,!1),L(M,\"keyup\",d,!1)),c&&L(M,\"submit\",function(g){g=\ng||O.event;if((g=g.target||g.srcElement)&&g.action){var ca=g.action.match(Jc);ca&&sd(a,ca[1])&&rd(e,g)}}))};function sd(a,b){if(b==M.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}function ke(a,b){return b!=Ic(a,0)&&b!=Ic(a,-1)&&b!=Ic(a,-2)&&b!=pa(a,0)&&b!=pa(a,-1)&&b!=pa(a,-2)}function $e(a){var b=af(a);return{_ga:a.get(Q),_gid:a.get(I)||void 0,_gac:b?[b.qa,b.timestamp].join(\".\"):void 0}}\nfunction af(a){function b(e){return void 0==e||\"\"===e?0:Number(e)}var c=a.get(ce);if(c&&a.get(je)){var d=b(a.get(fe));if(1E3*d+b(a.get(he))<=(new Date).getTime())J(76);else return{timestamp:d,qa:c}}};var p=/^(GTM|OPT)-[A-Z0-9]+$/,q=/;_gaexp=[^;]*/g,r=/;((__utma=)|([^;=]+=GAX?\\d+\\.))[^;]*/g,Aa=/^https?:\\/\\/[\\w\\-.]+\\.google.com(:\\d+)?\\/optimize\\/opt-launch\\.html\\?.*$/,t=function(a){function b(d,e){e&&(c+=\"&\"+d+\"=\"+K(e))}var c=\"https://www.google-analytics.com/gtm/js?id=\"+K(a.id);\"dataLayer\"!=a.B&&b(\"l\",a.B);b(\"t\",a.target);b(\"cid\",a.clientId);b(\"cidt\",a.ka);b(\"gac\",a.la);b(\"aip\",a.ia);a.sync&&b(\"m\",\"sync\");b(\"cycle\",a.G);a.qa&&b(\"gclid\",a.qa);Aa.test(M.referrer)&&b(\"cb\",String(hd()));return c};var Jd=function(a,b,c){this.aa=b;(b=c)||(b=(b=P(a,V))&&\"t0\"!=b?Wd.test(b)?\"_gat_\"+Cc(P(a,Na)):\"_gat_\"+Cc(b):\"_gat\");this.Y=b;this.ra=null},Rd=function(a,b){var c=b.get(Wb);b.set(Wb,function(e){Pd(a,e,ed);Pd(a,e,ia);var g=c(e);Qd(a,e);return g});var d=b.get(Xb);b.set(Xb,function(e){var g=d(e);if(se(e)){if(ne()!==H(a,e)){J(80);var ca={U:re(a,e,1),google:re(a,e,2),count:0};pe(\"https://stats.g.doubleclick.net/j/collect\",ca.U,ca)}else ta(re(a,e,0));e.set(ed,\"\",!0)}return g})},Pd=function(a,b,c){!1===b.get(Ud)||\nb.get(c)||(\"1\"==Ca(a.Y)[0]?b.set(c,\"\",!0):b.set(c,\"\"+hd(),!0))},Qd=function(a,b){se(b)&&zc(a.Y,\"1\",P(b,Yb),P(b,W),P(b,Na),6E4,P(b,Be))},se=function(a){return!!a.get(ed)&&!1!==a.get(Ud)},re=function(a,b,c){var d=new ee,e=function(ca){$a(ca).F&&d.set($a(ca).F,b.get(ca))};e(hb);e(ib);e(Na);e(Q);e(ed);if(0==c||1==c)e(Ad),e(ia),e(I);d.set($a(ld).F,Td(b));var g=\"\";d.map(function(ca,l){g+=K(ca)+\"=\";g+=K(\"\"+l)+\"&\"});g+=\"z=\"+hd();0==c?g=a.aa+g:1==c?g=\"t=dc&aip=1&_r=3&\"+g:2==c&&(g=\"t=sr&aip=1&_r=4&slf_rd=1&\"+\ng);return g},H=function(a,b){null===a.ra&&(a.ra=1===Ed(b),a.ra&&J(33));return a.ra},Wd=/^gtm\\d+$/;var fd=function(a,b){a=a.b;if(!a.get(\"dcLoaded\")){var c=new $c(Dd(a));c.set(29);a.set(Gd,c.w);b=b||{};var d;b[U]&&(d=Cc(b[U]));b=new Jd(a,\"https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&\",d);Rd(b,a);a.set(\"dcLoaded\",!0)}};var Sd=function(a){if(!a.get(\"dcLoaded\")&&\"cookie\"==a.get(ac)){var b=new Jd(a);Pd(b,a,ed);Pd(b,a,ia);Qd(b,a);if(se(a)){var c=ne()!==H(b,a);a.set(Md,1,!0);c?(J(79),a.set(ad,\"d\",!0),a.set(qe,{U:re(b,a,1),google:re(b,a,2),count:0},!0)):a.set(ad,\"b\",!0)}}};var Lc=function(){var a=O.gaGlobal=O.gaGlobal||{};return a.hid=a.hid||hd()};var wb=/^(UA|YT|MO|GP)-(\\d+)-(\\d+)$/,pc=function(a){function b(e,g){d.b.data.set(e,g)}function c(e,g){b(e,g);d.filters.add(e)}var d=this;this.b=new Ya;this.filters=new Ha;b(V,a[V]);b(Na,sa(a[Na]));b(U,a[U]);b(W,a[W]||xa());b(Yb,a[Yb]);b(Zb,a[Zb]);b(Hd,a[Hd]);b(Be,a[Be]);b($b,a[$b]);b(Wc,a[Wc]);b(bc,a[bc]);b(cc,a[cc]);b(Ka,a[Ka]);b(dc,a[dc]);b(ec,a[ec]);b(ac,a[ac]);b(Ad,a[Ad]);b(n,a[n]);b(Kd,a[Kd]);b(je,a[je]);b(Ze,a[Ze]);b(oe,a[oe]);b(hb,1);b(ib,\"j81\");c(Qb,Ma);c(oa,ua);c(dd,cd);c(Rb,Oa);c(md,vb);\nc(Sb,nc);c(Uc,Yc);c(Tb,Ja);c(Vb,Ta);c(Vc,Hc);c(zd,yd);c(Ld,Sd);c(Wb,Pa);c(Xb,Sa);c(Cd,Fd(this));pd(this.b);td(this.b,a[Q]);this.b.set(jb,Lc())},td=function(a,b){var c=P(a,U);a.data.set(la,\"_ga\"==c?\"_gid\":c+\"_gid\");if(\"cookie\"==P(a,ac)){hc=!1;c=Ca(P(a,U));c=Xd(a,c);if(!c){c=P(a,W);var d=P(a,$b)||xa();c=Xc(\"__utma\",d,c);void 0!=c?(J(10),c=c.O[1]+\".\"+c.O[2]):c=void 0}c&&(hc=!0);if(d=c&&!a.get(Hd))if(d=c.split(\".\"),2!=d.length)d=!1;else if(d=Number(d[1])){var e=R(a,Zb);d=d+e<(new Date).getTime()/1E3}else d=\n!1;d&&(c=void 0);c&&(a.data.set(xd,c),a.data.set(Q,c),(c=uc(a))&&a.data.set(I,c));if(a.get(je)&&(c=a.get(ce),d=a.get(ie),!c||d&&\"aw.ds\"!=d)){c={};if(M){d=[];e=M.cookie.split(\";\");for(var g=/^\\s*_gac_(UA-\\d+-\\d+)=\\s*(.+?)\\s*$/,ca=0;ca<e.length;ca++){var l=e[ca].match(g);l&&d.push({ja:l[1],value:l[2]})}e={};if(d&&d.length)for(g=0;g<d.length;g++)(ca=d[g].value.split(\".\"),\"1\"!=ca[0]||3!=ca.length)?c&&(c.na=!0):ca[1]&&(e[d[g].ja]?c&&(c.pa=!0):e[d[g].ja]=[],e[d[g].ja].push({timestamp:ca[1],qa:ca[2]}));\nd=e}else d={};d=d[P(a,Na)];le(c);d&&0!=d.length&&(c=d[0],a.data.set(fe,c.timestamp),a.data.set(ce,c.qa))}}if(a.get(Hd)&&(c=be(\"_ga\",!!a.get(cc)),g=be(\"_gl\",!!a.get(cc)),d=De.get(a.get(cc)),e=d._ga,g&&0<g.indexOf(\"_ga*\")&&!e&&J(30),g=d.gclid,ca=d._gac,c||e||g||ca))if(c&&e&&J(36),a.get(bc)||ye(a.get(Kd))){if(e&&(J(38),a.data.set(Q,e),d._gid&&(J(51),a.data.set(I,d._gid))),g?(J(82),a.data.set(ce,g),d.gclsrc&&a.data.set(ie,d.gclsrc)):ca&&(d=ca.split(\".\"))&&2===d.length&&(J(37),a.data.set(ce,d[0]),a.data.set(fe,\nd[1])),c)b:if(d=c.indexOf(\".\"),-1==d)J(22);else{e=c.substring(0,d);g=c.substring(d+1);d=g.indexOf(\".\");c=g.substring(0,d);g=g.substring(d+1);if(\"1\"==e){if(d=g,ke(d,c)){J(23);break b}}else if(\"2\"==e){d=g.indexOf(\"-\");e=\"\";0<d?(e=g.substring(0,d),d=g.substring(d+1)):d=g.substring(1);if(ke(e+d,c)){J(53);break b}e&&(J(2),a.data.set(I,e))}else{J(22);break b}J(11);a.data.set(Q,d);if(c=be(\"_gac\",!!a.get(cc)))c=c.split(\".\"),\"1\"!=c[0]||4!=c.length?J(72):ke(c[3],c[1])?J(71):(a.data.set(ce,c[3]),a.data.set(fe,\nc[2]),J(70))}}else J(21);b&&(J(9),a.data.set(Q,K(b)));a.get(Q)||((b=(b=O.gaGlobal&&O.gaGlobal.vid)&&-1!=b.search(jd)?b:void 0)?(J(17),a.data.set(Q,b)):(J(8),a.data.set(Q,ra())));a.get(I)||(J(3),a.data.set(I,ra()));mc(a)},pd=function(a){var b=O.navigator,c=O.screen,d=M.location;a.set(lb,ya(!!a.get(ec),!!a.get(Kd)));if(d){var e=d.pathname||\"\";\"/\"!=e.charAt(0)&&(J(31),e=\"/\"+e);a.set(kb,d.protocol+\"//\"+d.hostname+e+d.search)}c&&a.set(qb,c.width+\"x\"+c.height);c&&a.set(pb,c.colorDepth+\"-bit\");c=M.documentElement;\nvar g=(e=M.body)&&e.clientWidth&&e.clientHeight,ca=[];c&&c.clientWidth&&c.clientHeight&&(\"CSS1Compat\"===M.compatMode||!g)?ca=[c.clientWidth,c.clientHeight]:g&&(ca=[e.clientWidth,e.clientHeight]);c=0>=ca[0]||0>=ca[1]?\"\":ca.join(\"x\");a.set(rb,c);a.set(tb,fc());a.set(ob,M.characterSet||M.charset);a.set(sb,b&&\"function\"===typeof b.javaEnabled&&b.javaEnabled()||!1);a.set(nb,(b&&(b.language||b.browserLanguage)||\"\").toLowerCase());a.data.set(ce,be(\"gclid\",!0));a.data.set(ie,be(\"gclsrc\",!0));a.data.set(fe,\nMath.round((new Date).getTime()/1E3));if(d&&a.get(cc)&&(b=M.location.hash)){b=b.split(/[?&#]+/);d=[];for(c=0;c<b.length;++c)(D(b[c],\"utm_id\")||D(b[c],\"utm_campaign\")||D(b[c],\"utm_source\")||D(b[c],\"utm_medium\")||D(b[c],\"utm_term\")||D(b[c],\"utm_content\")||D(b[c],\"gclid\")||D(b[c],\"dclid\")||D(b[c],\"gclsrc\"))&&d.push(b[c]);0<d.length&&(b=\"#\"+d.join(\"&\"),a.set(kb,a.get(kb)+b))}};pc.prototype.get=function(a){return this.b.get(a)};pc.prototype.set=function(a,b){this.b.set(a,b)};\nvar me={pageview:[mb],event:[ub,xb,yb,zb],social:[Bb,Cb,Db],timing:[Mb,Nb,Pb,Ob]};pc.prototype.send=function(a){if(!(1>arguments.length)){if(\"string\"===typeof arguments[0]){var b=arguments[0];var c=[].slice.call(arguments,1)}else b=arguments[0]&&arguments[0][Va],c=arguments;b&&(c=za(me[b]||[],c),c[Va]=b,this.b.set(c,void 0,!0),this.filters.D(this.b),this.b.data.m={})}};pc.prototype.ma=function(a,b){var c=this;u(a,c,b)||(v(a,function(){u(a,c,b)}),y(String(c.get(V)),a,void 0,b,!0))};var rc=function(a){if(\"prerender\"==M.visibilityState)return!1;a();return!0},z=function(a){if(!rc(a)){J(16);var b=!1,c=function(){if(!b&&rc(a)){b=!0;var d=c,e=M;e.removeEventListener?e.removeEventListener(\"visibilitychange\",d,!1):e.detachEvent&&e.detachEvent(\"onvisibilitychange\",d)}};L(M,\"visibilitychange\",c)}};var te=/^(?:(\\w+)\\.)?(?:(\\w+):)?(\\w+)$/,sc=function(a){if(ea(a[0]))this.u=a[0];else{var b=te.exec(a[0]);null!=b&&4==b.length&&(this.c=b[1]||\"t0\",this.K=b[2]||\"\",this.methodName=b[3],this.a=[].slice.call(a,1),this.K||(this.A=\"create\"==this.methodName,this.i=\"require\"==this.methodName,this.g=\"provide\"==this.methodName,this.ba=\"remove\"==this.methodName),this.i&&(3<=this.a.length?(this.X=this.a[1],this.W=this.a[2]):this.a[1]&&(qa(this.a[1])?this.X=this.a[1]:this.W=this.a[1])));b=a[1];a=a[2];if(!this.methodName)throw\"abort\";\nif(this.i&&(!qa(b)||\"\"==b))throw\"abort\";if(this.g&&(!qa(b)||\"\"==b||!ea(a)))throw\"abort\";if(ud(this.c)||ud(this.K))throw\"abort\";if(this.g&&\"t0\"!=this.c)throw\"abort\";}};function ud(a){return 0<=a.indexOf(\".\")||0<=a.indexOf(\":\")};var Yd,Zd,$d,A;Yd=new ee;$d=new ee;A=new ee;Zd={ec:45,ecommerce:46,linkid:47};\nvar u=function(a,b,c){b==N||b.get(V);var d=Yd.get(a);if(!ea(d))return!1;b.plugins_=b.plugins_||new ee;if(b.plugins_.get(a))return!0;b.plugins_.set(a,new d(b,c||{}));return!0},y=function(a,b,c,d,e){if(!ea(Yd.get(b))&&!$d.get(b)){Zd.hasOwnProperty(b)&&J(Zd[b]);a=N.j(a);if(p.test(b)){J(52);if(!a)return!0;c=d||{};d={id:b,B:c.dataLayer||\"dataLayer\",ia:!!a.get(\"anonymizeIp\"),sync:e,G:!1};a.get(\"&gtm\")==b&&(d.G=!0);var g=String(a.get(\"name\"));\"t0\"!=g&&(d.target=g);G(String(a.get(\"trackingId\")))||(d.clientId=\nString(a.get(Q)),d.ka=Number(a.get(n)),c=c.palindrome?r:q,c=(c=M.cookie.replace(/^|(; +)/g,\";\").match(c))?c.sort().join(\"\").substring(1):void 0,d.la=c,d.qa=E(a.b.get(kb)||\"\",\"gclid\"));c=d.B;g=(new Date).getTime();O[c]=O[c]||[];g={\"gtm.start\":g};e||(g.event=\"gtm.js\");O[c].push(g);c=t(d)}!c&&Zd.hasOwnProperty(b)?(J(39),c=b+\".js\"):J(43);if(c){if(a){var ca=a.get(oe);qa(ca)||(ca=void 0)}c&&0<=c.indexOf(\"/\")||(c=(ca?ca+\"/34\":bd(!1)+\"/plugins/ua/\")+c);ca=ae(c);a=ca.protocol;d=M.location.protocol;if((\"https:\"==\na||a==d||(\"http:\"!=a?0:\"http:\"==d))&&B(ca)){if(ca=ca.url)a=(a=M.querySelector&&M.querySelector(\"script[nonce]\")||null)?a.nonce||a.getAttribute&&a.getAttribute(\"nonce\")||\"\":\"\",e?(e=\"\",a&&Nd.test(a)&&(e=' nonce=\"'+a+'\"'),f.test(ca)&&M.write(\"<script\"+e+' src=\"'+ca+'\">\\x3c/script>')):(e=M.createElement(\"script\"),e.type=\"text/javascript\",e.async=!0,e.src=ca,a&&e.setAttribute(\"nonce\",a),ca=M.getElementsByTagName(\"script\")[0],ca.parentNode.insertBefore(e,ca));$d.set(b,!0)}}}},v=function(a,b){var c=A.get(a)||\n[];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;c<b.length;c++)b[c]();A.set(a,[])},B=function(a){var b=ae(M.location.href);if(D(a.url,\"https://www.google-analytics.com/gtm/js?id=\"))return!0;if(a.query||0<=a.url.indexOf(\"?\")||0<=a.path.indexOf(\"://\"))return!1;if(a.host==b.host&&a.port==b.port)return!0;b=\"http:\"==a.protocol?80:443;return\"www.google-analytics.com\"==a.host&&(a.port||b)==b&&D(a.path,\"/plugins/\")?!0:!1},ae=function(a){function b(l){var k=l.hostname||\"\",w=\n0<=k.indexOf(\"]\");k=k.split(w?\"]\":\":\")[0].toLowerCase();w&&(k+=\"]\");w=(l.protocol||\"\").toLowerCase();w=1*l.port||(\"http:\"==w?80:\"https:\"==w?443:\"\");l=l.pathname||\"\";D(l,\"/\")||(l=\"/\"+l);return[k,\"\"+w,l]}var c=M.createElement(\"a\");c.href=M.location.href;var d=(c.protocol||\"\").toLowerCase(),e=b(c),g=c.search||\"\",ca=d+\"//\"+e[0]+(e[1]?\":\"+e[1]:\"\");D(a,\"//\")?a=d+a:D(a,\"/\")?a=ca+a:!a||D(a,\"?\")?a=ca+e[2]+(a||g):0>a.split(\"/\")[0].indexOf(\":\")&&(a=ca+e[2].substring(0,e[2].lastIndexOf(\"/\"))+\"/\"+a);c.href=a;\nd=b(c);return{protocol:(c.protocol||\"\").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||\"\",url:a||\"\"}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments);b=Z.f.concat(b);for(Z.f=[];0<b.length&&!Z.v(b[0])&&!(b.shift(),0<Z.f.length););Z.f=Z.f.concat(b)};Z.J=function(a){for(var b=[],c=0;c<arguments.length;c++)try{var d=new sc(arguments[c]);d.g?C(d.a[0],d.a[1]):(d.i&&(d.ha=y(d.c,d.a[0],d.X,d.W)),b.push(d))}catch(e){}return b};\nZ.v=function(a){try{if(a.u)a.u.call(O,N.j(\"t0\"));else{var b=a.c==gb?N:N.j(a.c);if(a.A){if(\"t0\"==a.c&&(b=N.create.apply(N,a.a),null===b))return!0}else if(a.ba)N.remove(a.c);else if(b)if(a.i){if(a.ha&&(a.ha=y(a.c,a.a[0],a.X,a.W)),!u(a.a[0],b,a.W))return!0}else if(a.K){var c=a.methodName,d=a.a,e=b.plugins_.get(a.K);e[c].apply(e,d)}else b[a.methodName].apply(b,a.a)}}catch(g){}};var N=function(a){J(1);Z.D.apply(Z,[arguments])};N.h={};N.P=[];N.L=0;N.ya=0;N.answer=42;var we=[Na,W,V];N.create=function(a){var b=za(we,[].slice.call(arguments));b[V]||(b[V]=\"t0\");var c=\"\"+b[V];if(N.h[c])return N.h[c];if(da(b))return null;b=new pc(b);N.h[c]=b;N.P.push(b);c=qc().tracker_created;if(ea(c))try{c(b)}catch(d){}return b};N.remove=function(a){for(var b=0;b<N.P.length;b++)if(N.P[b].get(V)==a){N.P.splice(b,1);N.h[a]=null;break}};N.j=function(a){return N.h[a]};N.getAll=function(){return N.P.slice(0)};\nN.N=function(){\"ga\"!=gb&&J(49);var a=O[gb];if(!a||42!=a.answer){N.L=a&&a.l;N.ya=1*new Date;N.loaded=!0;var b=O[gb]=N;X(\"create\",b,b.create);X(\"remove\",b,b.remove);X(\"getByName\",b,b.j,5);X(\"getAll\",b,b.getAll,6);b=pc.prototype;X(\"get\",b,b.get,7);X(\"set\",b,b.set,4);X(\"send\",b,b.send);X(\"requireSync\",b,b.ma);b=Ya.prototype;X(\"get\",b,b.get);X(\"set\",b,b.set);if(\"https:\"!=M.location.protocol&&!Ba){a:{b=M.getElementsByTagName(\"script\");for(var c=0;c<b.length&&100>c;c++){var d=b[c].src;if(d&&0==d.indexOf(bd(!0)+\n\"/analytics\")){b=!0;break a}}b=!1}b&&(Ba=!0)}(O.gaplugins=O.gaplugins||{}).Linker=Dc;b=Dc.prototype;C(\"linker\",Dc);X(\"decorate\",b,b.ca,20);X(\"autoLink\",b,b.S,25);C(\"displayfeatures\",fd);C(\"adfeatures\",fd);a=a&&a.q;ka(a)?Z.D.apply(N,a):J(50)}};N.da=function(){for(var a=N.getAll(),b=0;b<a.length;b++)a[b].get(V)};var ze=N.N,Ae=O[gb];Ae&&Ae.r?ze():z(ze);z(function(){Z.D([\"provide\",\"render\",ua])});})(window);\n"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 18548
        },
        "cache": {},
        "timings": {
          "blocked": 3.0309999757483603,
          "dns": 0.0349999999999997,
          "ssl": 190.76100000000002,
          "connect": 315.529,
          "send": 0.25,
          "wait": 126.91999994367359,
          "receive": 25.36100009456277,
          "_blocked_queueing": 0.9599999757483602
        },
        "serverIPAddress": "172.217.10.142",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 110109
              },
              {
                "functionName": "l.run",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 23003
              },
              {
                "functionName": "u",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 22507
              }
            ],
            "parent": {
              "description": "setTimeout",
              "callFrames": [
                {
                  "functionName": "a",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 21970
                },
                {
                  "functionName": "f.nextTick",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 22961
                },
                {
                  "functionName": "o",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 110034
                },
                {
                  "functionName": "n.load",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 7854
                },
                {
                  "functionName": "s.initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 71666
                },
                {
                  "functionName": "initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 8384
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 2212
                },
                {
                  "functionName": "l",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 2,
                  "columnNumber": 4485
                },
                {
                  "functionName": "c",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 2,
                  "columnNumber": 4544
                },
                {
                  "functionName": "o.init.o.initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 1940
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 24224
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 3961
                },
                {
                  "functionName": "3../analytics",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 4523
                },
                {
                  "functionName": "i",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 340
                },
                {
                  "functionName": "e",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 498
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 526
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 12,
                  "columnNumber": 9093
                }
              ]
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949680",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.079Z",
        "time": 607.2580000618473,
        "request": {
          "method": "GET",
          "url": "https://n2.mouseflow.com/init?v=17.08&p=31314d44-ad1b-4756-8b63-9284fb1ec469&s=079b948941ea6e84c24d81748a6c4f00&page=03101872c43b9efb1d3fd1b899e9d48620b2966d&ret=1&u=04eb42e6c8e04ca41d44ea3dc4da2ce8&href=https%3A%2F%2Fworkstation.theorchard.com%2Fanalytics%2Fengagement&ref=&title=Engagement%20%7C%20The%20Orchard&res=1920x1080&tz=-180&to=0&dnt=0&ori=&dw=1920&dh=969&time=2090&pxr=1&gdpr=0",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "n2.mouseflow.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/init?v=17.08&p=31314d44-ad1b-4756-8b63-9284fb1ec469&s=079b948941ea6e84c24d81748a6c4f00&page=03101872c43b9efb1d3fd1b899e9d48620b2966d&ret=1&u=04eb42e6c8e04ca41d44ea3dc4da2ce8&href=https%3A%2F%2Fworkstation.theorchard.com%2Fanalytics%2Fengagement&ref=&title=Engagement%20%7C%20The%20Orchard&res=1920x1080&tz=-180&to=0&dnt=0&ori=&dw=1920&dh=969&time=2090&pxr=1&gdpr=0"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "content-type",
              "value": "text/plain"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "Mouseflow=dd1064c049696956c154f5fe1bb92f47; _ga=GA1.2.331787608.1583496342; mf_user=d3b2bed5c1df865d489c85ec092c35bd|; mf_44f25a56-ad10-441b-86a8-109c4c24975c=03e1f8b20320b93fe513b47ec813a34c|0306427866553edde70e189cb4c121670aef90fd.-6320929663.1583496342677|1583496661665||1|||0|17.07|5"
            }
          ],
          "queryString": [
            {
              "name": "v",
              "value": "17.08"
            },
            {
              "name": "p",
              "value": "31314d44-ad1b-4756-8b63-9284fb1ec469"
            },
            {
              "name": "s",
              "value": "079b948941ea6e84c24d81748a6c4f00"
            },
            {
              "name": "page",
              "value": "03101872c43b9efb1d3fd1b899e9d48620b2966d"
            },
            {
              "name": "ret",
              "value": "1"
            },
            {
              "name": "u",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8"
            },
            {
              "name": "href",
              "value": "https%3A%2F%2Fworkstation.theorchard.com%2Fanalytics%2Fengagement"
            },
            {
              "name": "ref",
              "value": ""
            },
            {
              "name": "title",
              "value": "Engagement%20%7C%20The%20Orchard"
            },
            {
              "name": "res",
              "value": "1920x1080"
            },
            {
              "name": "tz",
              "value": "-180"
            },
            {
              "name": "to",
              "value": "0"
            },
            {
              "name": "dnt",
              "value": "0"
            },
            {
              "name": "ori",
              "value": ""
            },
            {
              "name": "dw",
              "value": "1920"
            },
            {
              "name": "dh",
              "value": "969"
            },
            {
              "name": "time",
              "value": "2090"
            },
            {
              "name": "pxr",
              "value": "1"
            },
            {
              "name": "gdpr",
              "value": "0"
            }
          ],
          "cookies": [
            {
              "name": "Mouseflow",
              "value": "dd1064c049696956c154f5fe1bb92f47",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.331787608.1583496342",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "d3b2bed5c1df865d489c85ec092c35bd|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_44f25a56-ad10-441b-86a8-109c4c24975c",
              "value": "03e1f8b20320b93fe513b47ec813a34c|0306427866553edde70e189cb4c121670aef90fd.-6320929663.1583496342677|1583496661665||1|||0|17.07|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "content-type",
              "value": "text/plain; charset=Windows-1252"
            },
            {
              "name": "content-length",
              "value": "0"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "expires",
              "value": "-1"
            },
            {
              "name": "access-control-allow-credentials",
              "value": "true"
            },
            {
              "name": "access-control-allow-origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "x-recorder",
              "value": "rec-04-us"
            },
            {
              "name": "server",
              "value": "Mouseflow"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=31536000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 0,
            "mimeType": "text/plain",
            "text": ""
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 244
        },
        "cache": {},
        "timings": {
          "blocked": 1.60400005864352,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.31499999999999995,
          "wait": 605.0779999948815,
          "receive": 0.2610000083222985,
          "_blocked_queueing": 0.8180000586435199
        },
        "serverIPAddress": "207.244.84.210",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "_121",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 75334
              },
              {
                "functionName": "_39",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 44625
              },
              {
                "functionName": "_647",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 85208
              },
              {
                "functionName": "_834",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 85335
              },
              {
                "functionName": "_572",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 84538
              },
              {
                "functionName": "_687",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 113320
              },
              {
                "functionName": "",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 187467
              },
              {
                "functionName": "",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 187526
              }
            ]
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949577",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.110Z",
        "time": 428.5739999684766,
        "request": {
          "method": "GET",
          "url": "https://cdn.theorchard.io/frontend-source-of-streams/dml.json?t=4ba2936957dcd53886ec9123aa4af57ec8b4b239",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.theorchard.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/frontend-source-of-streams/dml.json?t=4ba2936957dcd53886ec9123aa4af57ec8b4b239"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [
            {
              "name": "t",
              "value": "4ba2936957dcd53886ec9123aa4af57ec8b4b239"
            }
          ],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "application/json"
            },
            {
              "name": "content-length",
              "value": "778"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:19 GMT"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "access-control-allow-methods",
              "value": "GET"
            },
            {
              "name": "access-control-max-age",
              "value": "3000"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Wed, 04 Mar 2020 09:49:50 GMT"
            },
            {
              "name": "etag",
              "value": "\"3f7a128c9194bbb35b6e9fbf65039e44\""
            },
            {
              "name": "cache-control",
              "value": "no-store"
            },
            {
              "name": "x-amz-version-id",
              "value": "IJdMK9WjGYm7YPHj4b4O8Ooe13e6A4TQ"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "x-cache",
              "value": "Miss from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 831e7b98ff065d26405d36a8a652162c.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C4"
            },
            {
              "name": "x-amz-cf-id",
              "value": "z6rc-9j4pDJ-6HapMglayxXNpCJD9QX1DBf6jWkpY7oNBirgRBy2vQ=="
            }
          ],
          "cookies": [],
          "content": {
            "size": 778,
            "mimeType": "application/json",
            "text": "{\n  \"main.css\": \"https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.b7a49430024851560a59.css\",\n  \"main.js\": \"https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js\",\n  \"vendors.js\": \"https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js\",\n  \"app.scss\": \"https://cdn.theorchard.io/frontend-source-of-streams/f4e4fd6dfdb077ae6fef872c5b651523.png\",\n  \"frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js.LICENSE.txt\": \"https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js.LICENSE.txt\",\n  \"index.html\": \"https://cdn.theorchard.io/frontend-source-of-streams/index.html\"\n}"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 1257
        },
        "cache": {},
        "timings": {
          "blocked": 1.5190000215917827,
          "dns": 0.02200000000000002,
          "ssl": 123.57499999999999,
          "connect": 241.952,
          "send": 0.29300000000000637,
          "wait": 184.4290000072494,
          "receive": 0.358999939635396,
          "_blocked_queueing": 0.8590000215917826
        },
        "serverIPAddress": "99.84.32.49",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "v._end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 51723
              },
              {
                "functionName": "v.end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 50464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562389
              },
              {
                "functionName": "o.then",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562360
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 798112
              },
              {
                "functionName": "value",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 797993
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 796608
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 799437
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1908180
              },
              {
                "functionName": "Cu",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1908329
              },
              {
                "functionName": "ys",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1893191
              },
              {
                "functionName": "ps",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1893116
              },
              {
                "functionName": "as",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1890464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848906
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "Qo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848851
              },
              {
                "functionName": "Go",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848786
              },
              {
                "functionName": "es",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1887253
              },
              {
                "functionName": "Si",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1866162
              },
              {
                "functionName": "s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 145228
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 145360
              }
            ],
            "parent": {
              "description": "Promise.then",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145335
                },
                {
                  "functionName": "hu",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1880954
                },
                {
                  "functionName": "Es",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1905686
                },
                {
                  "functionName": "t.unstable_runWithPriority",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8726
                },
                {
                  "functionName": "Wo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848615
                },
                {
                  "functionName": "_s",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1905449
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1905360
                },
                {
                  "functionName": "B",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8108
                },
                {
                  "functionName": "O.port1.onmessage",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 6852
                }
              ],
              "parentId": {
                "id": "2",
                "debuggerId": "-6680354813689365837.-4924173665645887486"
              }
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949694",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.113Z",
        "time": 785.5389999458566,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/grass/assets/image/vendor/6971/asset/0",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "session",
              "value": "26318db24967a7888b9314f5172426c5"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2427,
          "bodySize": 0
        },
        "response": {
          "status": 404,
          "statusText": "Not Found",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Content-Length",
              "value": "44"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Grass",
              "value": "prod"
            },
            {
              "name": "CF-Cache-Status",
              "value": "DYNAMIC"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badbaa8f68eef-DME"
            }
          ],
          "cookies": [],
          "content": {
            "size": 44,
            "mimeType": "application/json",
            "compression": 0,
            "text": "{\"code\": \"not_found_error\", \"message\": null}"
          },
          "redirectURL": "",
          "headersSize": 328,
          "bodySize": 44,
          "_transferSize": 372
        },
        "cache": {},
        "timings": {
          "blocked": 2.1439999459981918,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.18499999999999994,
          "wait": 782.622999953933,
          "receive": 0.5870000459253788,
          "_blocked_queueing": 1.2159999459981918
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "v._end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 51723
              },
              {
                "functionName": "v.end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 50464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562389
              },
              {
                "functionName": "o.then",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562360
              },
              {
                "functionName": "Ye",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 148045
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 150174
              },
              {
                "functionName": "s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579429
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579182
              },
              {
                "functionName": "forEach.e.<computed>",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1579786
              },
              {
                "functionName": "n",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799494
              },
              {
                "functionName": "u",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799705
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799764
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1799645
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 150439
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 145319
              },
              {
                "functionName": "hu",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1880954
              },
              {
                "functionName": "Es",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905686
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "_s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1905449
              },
              {
                "functionName": "as",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1890387
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848906
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "Qo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848851
              },
              {
                "functionName": "Go",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848786
              },
              {
                "functionName": "es",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1887253
              },
              {
                "functionName": "Si",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1866162
              },
              {
                "functionName": "s",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 145228
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 145360
              }
            ],
            "parent": {
              "description": "Promise.then",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145335
                },
                {
                  "functionName": "hu",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1880954
                },
                {
                  "functionName": "Es",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1905686
                },
                {
                  "functionName": "t.unstable_runWithPriority",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8726
                },
                {
                  "functionName": "Wo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848615
                },
                {
                  "functionName": "_s",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1905449
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1905360
                },
                {
                  "functionName": "B",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8108
                },
                {
                  "functionName": "O.port1.onmessage",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 6852
                }
              ],
              "parentId": {
                "id": "2",
                "debuggerId": "-6680354813689365837.-4924173665645887486"
              }
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949470",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.118Z",
        "time": 453.8359999293536,
        "request": {
          "method": "GET",
          "url": "https://fonts.gstatic.com/s/rubik/v9/iJWHBXyIfDnIV7Eyjmmd8WD07oB-.woff2",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "fonts.gstatic.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/s/rubik/v9/iJWHBXyIfDnIV7Eyjmmd8WD07oB-.woff2"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "x-client-data",
              "value": "CIq2yQEIorbJAQjEtskBCKmdygEInK3KAQjLrsoBCL2wygEI97TKAQiXtcoBCJu1ygEI7bXKAQiOusoBCK+9ygEYq6TKARj2tsoBGLy6ygE="
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://fonts.googleapis.com/css?family=Rubik:400,500"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "content-type",
              "value": "font/woff2"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "timing-allow-origin",
              "value": "*"
            },
            {
              "name": "content-length",
              "value": "16456"
            },
            {
              "name": "date",
              "value": "Mon, 02 Mar 2020 21:47:11 GMT"
            },
            {
              "name": "expires",
              "value": "Tue, 02 Mar 2021 21:47:11 GMT"
            },
            {
              "name": "last-modified",
              "value": "Mon, 22 Jul 2019 19:20:13 GMT"
            },
            {
              "name": "x-content-type-options",
              "value": "nosniff"
            },
            {
              "name": "server",
              "value": "sffe"
            },
            {
              "name": "x-xss-protection",
              "value": "0"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "age",
              "value": "643447"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 16456,
            "mimeType": "font/woff2",
            "text": "d09GMgABAAAAAEBIAA4AAAAAozgAAD/sAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGigb4mIcjGAGYACEZBEICoG0VIGQCwuEHgABNgIkA4g4BCAFgnAHiXwb3o0VbJtWM+gOAsPr6Wo3EiFsHJgM4W9mRnJCerPq/68JVGSwbtd0/QFQIVM87mwsyGhG7DjU2R7OnCvapNzPnGLQfvcn6t/yf58foOW8osnd8sqNT8vd4pYWWrTbo09PtXy53tOMYpmVESUUC2Vll50K6xhXCO3HQ0lkGbhKrCzTp0P8kjOwbeRPukny8vzTftDOffNlRS1pFvW4CyGTCZEQyVSaiDc8VOrOET9nP7vPo8SEEDx4miBB22J3lxpH06Cto7/Qk1xODKiJ0/6kdagqFYeWuhylyhDNWRMh2ZlNsIQkBJMggRAhRhIiSgjBtECREtRaqhSvKHY1P6ucNRU7K3BiNXKm5UT/5O+Ih98ffHPO/XD7SYmsADITvYDTxk1qTlDom/KmfekP8B/gk7k0qWwpsN3IpAUKQYHB0COCX76mILDXnnvd9PHqpb/2yQWNAJ2ZtpQ3nJXY9DA9abPzOvDSO7wWbXXJ8fNdSlGI5681G63LeGn2NhrwEvyvnUULVIHdoF3/dd2/trqyA/RgL5GR4skIS+G2h6myVNNBD3+oyf7vLpRtoQDvirc4JmFrxVSgoNUCjelLN6pw8akf8GLaAPD/35/2tm/7zsvIwblDCtD77LBC9YxDwB1d3Sf5vaPrJxjU8zMOyxqw7GEPSSZZnpkP7JkAsuX5pI+GT+T/Q0j1X6mB6hRNijIpC8C6T1OmKZMy/EM7OcBH+MFSTLtu5+mMxrq/pn7SlW/0x3fpnR2BP6UBdgiu3q78VFbFcmvylVZ3ZflnLV0tKKWiKzSlAhJ2NCwsQSAIxV/+yO7BGtoa2zqsx1jMUuTy83G7vf9fE4V2ZrZCe1/lUkoprogECRLcICLhUO7fXmNaQ9rVkvFiRwFBUNqSiGX+fZ+2vT+jhlFUjLTicK2B+FkhwBIACon0B4I/bUBUoxZyy2cIAhbJMYI4cKG7A5jXSgb9BOG3BrqqQYkE9A4BFkFHH+YaQQp6h0B7PvZpTyBvvvipGvgL47LY5Xxg+C/JNBJMZ4a3583665Al5hXAXhuL2jyOG49BCP512KDasHV2uO5RaGROdlxZlM3ZluaisbzSqrzcNaaW1ZraU4cganVGGGmU0cYYa5zxvLbY7YAjjjrmBAc+9erdp2+//hYFtQTbgR2gTpw8uTyF1YrbyTpIO4l7iXvDfYUZEn5K2VKaKwGr4BpFitJS2Y4bU9neejwlyyF1ZBNRhA4rJefLYyo9tbPuQpFXvO4M9Uq9aX3N+0nxw0MKDCKGzEAmLldV5oFQRqD3Cnz4RAlJsTRfDJV4mEHhJhU2ulJQxamW1gApnzUyprQqaiQyd5LGmXGeGOxIi7NyzxWSSh+zgJRR3Sd8YCKFgghzEOFomzYfFRnFsHKRQTpCrBtQdQqiSj84UBFhggBDQAh4Ko+PAqXKs9Ih0rp2dgxSRxWQIaL0e400X8FkpbDhUgjqJyyTfL6IkwOVHCpwapAg3+UzlgoIiRWtDx0Ws+8afR26BlUhJXwv0v3jLzeMKOOQi/0NyMTBXe7XuPuK+NkQ5WDLTpzz80iErK+Ev5g4ZUG2b0XGELZd2Iz13REyXttst0ODvfbZr8k5511yxVXXXHdDsxaYkJcX40mECFHEDJqfh4UQEiGERAgRIoRIEUKU0A3HmzVTy16RgPmq4yLDOWEEp4zkrFGcZzSnjeFCYzlpHOeM54xtSomFiZnYxfaDKx1QClyuwEVwH5eVDzAx4zPE+Ay5Ym/Apd5yiTYu8/6syeE1G4AEB1aACYkA/VY3Qf/Y8089czAtCsVXOHIzhuWHBnjdZhyy+QNgDu+T/uuecQT0/3BQuy2n3OWvfukxk7iSxAsHvGk8BKnDwwIzGoZQSKDBaLIY0pEkSBGkhLJ/WyIYiyGf3bTW5a8Oac34y5QLBHuQwJO4y5marMu6cm6XzebKzsiLfC7t6b4r2yEN5WSZQ2pZXazrUdhcR8PEkPZH29A01rUzsvbF9nX8OpC0AC1IHvnD0GZx6ocwYJwyesbW8avS2oqmyTKlTbZSmZN9ypkKp/Lpj2nENIsDV0znp/bZMGd6Pedi+F+xcv5tHjfPmBdBCpF2tvAJCIlISMnIKSipaWjp6Pky8BMgUJBwkaJEi2FhFStOvAQ2iZIkS5Gqs+/YdZfje7059OGUJ1+BIlVc3P70l7/949+WKyfywNtlD/my7cqp4aLLtVb6jbfavPcRZstxKfHOXfOksBPJXd18D3ugoKmVdturESeCGJGYQOku7O6sOUqdpPKI5BMpqK6qdBW6GwcK2QLdLlEDF6cMDUrMVMor3FGhjgtxkimbnoMJQQhAEOchIFxTLp8a9lyBeNAATlGIgUBgEEVbxsjyUc1Mdg3I8AYKkkZvK7MmwRwct+HyKXdJbVV5mjvpM9AgQ6NZ3YUoOiuE5uimT8hJI49GPp2qADYIwHKSOuXYeywDIIAMSqhOGXbF3Ll1ieFFIwoaLARm8L2oscPJPHuT9VaNtvD7ZRRHcUxIIZRZ1dnzcEC+axVXw7rK4fE+jMa7c9ZY1RZ6H2J1TU4POLrqkxUROuil5GV6G/C4Zg13QS15dFVvyYEwuYyhXXqXGiIFOBrZKLlk9KbmCOwDPLU85AcWkCpEKUIxKlCV9kq0U6RJIYKMo1Ic905KbRDUjFLtQnxk4C+bQK4avfE40AdO5CE/sAClkEARilGBqvdGDalaGh7+vEg7yTXS2UtpH6WjdI7TOknnEqErhE1KGG6guVQ7o4/EDLKxcsnojeFAHziRh3yjEKsIxahA1Q+6hlgtBQ8pL5WdJBrxs4YKKgHjEtYV4zpOcyjtqnwkJ34KrlJQVSmMFTjrrnx3kTfrQOxo3vHgyaz2BJ+tZItTSY3sUagK0MAcIDV4W1jNTBi2vArDIo+JHpjaIRPDD+Eq62ghy0ZlqGA2lcQYcSrxyYzQmSkR7lVeuKuIYE91CuA8kZs6q/y2BQxcNYA8r2Q3OIeAWr0khgqK974Cn04ovRDp9ey1e9VxIuVRyWdTUOFKd6dzdELo+bMnOel8tJRyUZgzgSAYK9MQCRDzIyEAU12PVERjUE8xTRZqqJTfERr4IWrXtmBSWQECSVhtEkqkZ8JkEEpj8FtoRYYOR//O9aXkJJaHL59BASk8FQl2epS6gi5fKpA4JViOFJAcgVHxyb1bRgqSNAe6qIhu2EZeMfm+STguySo+jrZuEX5LpY8iFgRXVQJBQZmCT7TuNE3C6Fur3wP37S0qWDIdLkOwv+mYoFiuSt2ryEaGiXGOODi82KFavlbHeOnqfNyuWy5vJ7ndAxZmk1WuIhDCJYTHqx8Vq+V82LryeqvqbOXWteCO8S8i4XGPgwXStbWYsl/X7MLG2qt7bCVyDFPXdyed5NUTnUsQFAlfE6Z+nSBV3VcdoR964I8aIm+Win1pF1EALpz3hY+aJbfTRiQqOw4Jhv5hfC6phEqhgBkYIsrzmPYxaUMihcX9yCK1WYw6R1HOKJ8tLweh7DNmjLx88YgErWb6nUrYPJppUfA+KUjWm3JkEJ7YofzZPjkBeSG7j9SqmXXvHi2dawz3U7BhllO7UVSBMBdjr1JR/NR+uHIf3qbSK7ZCVaBCvjbduMZFujROLd6i+sat2ucErubVVmQRaM2dJV8KeVZbkBQ+AzjSIHJK1v5FwC1zT6KnTqYwsovVbyVh0mKMLvapbAFa8+yuvkxDmuMtDVXk9IqAD3YiGcHMTnWkHZkx2h+Gd5f+PHlEjedH+cojJdwDhjCGNQUVteqkbr5V5W/WeYzmYKHPYkNn2b1tdfmsSMF+KMJWibZAXgVdrwR/qfQSEZZYll0kVeFuc2E6E69ztMuZkNBZ9PVl8zwvRCIFV+6mZ/e3tSsYuIvcxJFT94SpYcrp2otwDN0hYWEdvD8pVKStysrLw8U/Wk2BFs1MgzZHqcwup5/UdOvcO/6i40TL4QATp1X2fKs1H5kHMQ0NOH0H3B3K+qbrHNuW1J63CBSElAoEnxXBB4JgGLHdvwSJMgRoTOjYmwVFaE+bsjg8fAIIICekIHLFUOW52/gzgREGVCWQ61woN9nG8u7d8O6uQAvvL4rZ8FjCvVkaQo/D08S2ACNJrHiWUJmQEjJiG3WyBgmpvfpAMtHkfhtOanH/Xgmi0wVwSGfJjNJoARRbR8UCHBO5MxAGA63AnikiAO0F9mE/OMqlgA/yXUWWTIIZp+vgHZdo1QbNcSaeqw0HLLy28B6l+MF0uoTZU0KgEJqV51JNT8Kk5p/Shar9YcbQGIVV1JaSSlcJ4CRew3y0otHhSZjkZtoUBW/cdn/MyQ3r+VtkJbIy5UO0dfuYLiAgPpYZItRPGGrwJbIIi/L731rE/7i/lJyl2IKAvcNazBlkUAo6oUDkABGECsS7B1Z+UTvY5Vze8iOIPa+6zb6+qpvHawpzDvXSs+pQNej0xBjZ8+aleFNrJtwMVlIEpaymdAWjwqJTqYO8fMok4a1egdvyP5rUghmXMWleQm0P2AKS+CZME6kGj29kgtTNLVW+RyvZW0JGQddhIy0gjfeNZxhsgLCQ4ohk1p2bdvncr6F/hl8bULK3RjJldh2D9w21w0fI3uVUdSuZmcXCW0bJXMcsWcQKVVdbooFqS6AgNRcNmzazN6q2es4OmStKXc2q8g6YbXPVgBH6vkzlrpmu97uhfpDHrqLFkgCcM+OxYzNe1UrQocdbX2bvofUSkRvUhkyLxVgako3RqNpLDvX5haYQEx2oS6DAGicsZhRuE+iYlVk3yjCwuASgEWlUgPQUErZlWDI0DBFTXkNgJX/uC6nrrk5TF5gTgaFxK4wcfvYa0tyq8GVLT+F8/O9+NknXMyLvpW7+T4KFsPhSRHqikre15aXsT0c+LmuroGKxVCd98BE9W+S36SONhA6pNjXnfI6kAB+WpZJkhZ9WHGFYmiLAcxuEQrKkIfv3Bilye8QUEQ599QwWWDg9j5OQErkVMkIiIDl7Cj7QVoJCY+cUZkdC22gkHnVA5DVTgZmhMYJFMoth1kkcSxGrBHI2PImwpGokS0FIrUKaLKGyG+0bVnG+E87eJN04xclB9r0IuY3WW7FYBfgK/6MVKcfTVyWJAdZsuxwkKkSrFO5/JIaKVyVadamG6SLkwvALjLtBfjUA+uOEPLcb5AUitcQ8+LwEtrDYVj/b7aC3U4QGeo2P5MnJ3g9+DtA6Sug4lZP10eS8YBcFuCTQZQGuCHSV3rWv8nHKrLx6b8GqndTHNxyeUTb+7z8w3BpOkPADSgMwrapfPETECfWeaf1le5thiMv7ClU8bIrEn5136Tszj6FQla2vtOVCAajfKyI4nXno1OjQ/Z7LkD5XDRp7QntTXH3zIvlWONNRd/7KHj6lSiZNOylWN+HI7KafAWe2Wq+l4uTXio2aNKdU19TIDjemiP4z7Nbhy4RQSY6UzmWHGeIe+1XTmfNq+Gm2xLxSnEz1tfeVRiraS5boxoZ9j1uaToZ0z4Kkg9gvP0OwJR6V1SzNlaxJzzXHXKNGSbJVozxxkAjN0Iv5pmavPD1ynzIjWBaVh5rUarVv6yXCS7ZNaQgN359dplEYmAXA6r5fJjvhUl1eAiD9zbLQHDBy9sW7g9oLJxDm9HNQBq07ne9DPCpTU5ul0EV/JKQY4cvDa8vjOtol1Xtm68lP6KEdXZRCl+fRIx6RWBwRwIAEloDdWI7BGCsAWITFWJpnHLSeEsv33UkUmpMQ/sqaDIqUshJprnMh7ibbWN4reAgyqIjxMdAdo8k52Li3io7mAQXUwFgBbGO+lWlSvsB6XlMPrKUFJVGtlAj8YgKFW+APFjzTiowFRsTU1N97MAjXPulzZpo1R3RXEhT+79SAkA+2CJ0NNKS9gVBMs2+L8PHhdq6IFq7o5s1IxTTIn4xesBok8JZ6LAb0x6P44t7cvXOd/mr2pz3HGQ8yuIUr8EKsqrTtLxLBqjPigXjoOSGYOz4BmZkiS6MoYJgRDIkCxyWPC2oeBEF4oD/o1otCxSTSdvCMwHgk6ZzsXZRXn6EovUWIMIX1E5I2xWJX+GnmGxY8yiIC6OGrUlanBTlqUrSOJ0WTwCi86/iIchYbLMDCaRepbDqEuKFIJyMpLv/0GZht8V76kIpuesjbv4Jnjh0QGNE6mIhBlnoEkxqQMxZ2ZrXUZCfvppNgsoLkpqAGwxmbJkb4P/ciha78vIJFjk9BxYZjiHMb86D9px1GkF94GP0tsctM8rn/H/OBgPzzUbpVUTYQCtsPGzwUygFLBdIh5nxGnW8rBEJkCfitEaKyx+pOfW36ltL6tbq2pjW1j0PkUDwsGu6MPmPPKknzBCHsKZGLhsghYDkEKbpW2qt8Lagtn8oYYfr/Yb1YTv1m7HDZu/gkMtkZkN8yJavSkKbcS1uxWF2miq9MJPxxfUsrCBIsLXUuLpXs2GjI7m/LG7PMNK2QYHg9+yqFbksjdnsbbjjNNEsgkULdukKBzVrBvUDDDi1MMwRBpLBvfQvrV2ONdwMapndgmkhIpBBXmmrHrDUcDhq69TDVDgn617Vm4SxLPbscUv3HTL0GieTrehJRbqnjlZA010w9AYnk546JvTRLT15zccNpyoUgko87KHTUTI1LLOk3cxDk3Ku27YKYNl0mDzG/b7GoADCX8pxw5LsBVkDGATRwWHJoDTvO2xzXL/8kOCuSMqd+QsqYvW+jSzuQUwl9Y7c0FhU7HLhP3XIpOiY4UPvcS/ACExIOHBa45z6GdRP6drvntQRnG/Td0z1vN2QC5AcRPG399SJSSCagVspM5gQzgXfopfOcchrfG3IZKxbuDKzOeP6Vk1VSKoTPsnjV75zFQ4Z7SPyuqJeKx6UXwOQvJDnyDIFRZi2iux4xcDcgNk6AtohAhojzyNuS/GFbvvViDzMGmL7mcbRCs8w2x1zzzLfAQossVo+sDiPQ848ckDnk80Pbm0gQatS+j2aCiSaZbIqpppluhpkEKeTzpSYFSzPAZsN/zCajHjfZzLxDgXq/8gFX96MHuUgUG2CyXtMMxF+U+8fzesINsGsxsbrToH0f6w6AdwE1BzcAOwiAAhqwBgEBa5DNARxlRJICS8VI9I//0JH0roY6UtereYfcqDUajAHGEGOSMdPoMm7YuStAGqDo6ABLGZklWZJOyQ3YXWZUG/WVJaqM5rjzXtMDwasjdESEwV//EPjri2kLKxWtJ245T/HpFUEAB4Er3gH5mJmZd/90CMfV7LTXbre99tY+ct97Hg9sd16DA7bZ75knnmr0BklASExCSUVNw8CPUYBAwaJUrQYL6w8p/rSnOsbruM8OhgdpslnY2GXLkStPiVJlKqxSpUGjJs1atenWo1efQa/46KgXbtrllrta3fPJf2GhTY2LXrrgffjwwXPrbQgFr7yzJTSsU+uSzTb5vz1YFBoPg8MnoiAlI+dLS0fPR5AwIUJFMHkkXMLPQs5pimhV9NJ1YaRjYGLllMkhS/H8WypDpVrVVqtX4xslurTr0KmfywC+Mm9rcs11VyFo6rAckEUA1FKQ+QBb7gHY+Tto/4L61XrzNcl6s54pxNCVyuQ2sk7NqQOk8DUabpkBOGclfKHBy7GBFQxnW05vZrZTDlIqBA5PEfD868xAKT81Md4yg2kVrPlQfzco2JkgFwHTS9cBVUrWnyoJFeS2VS/+BZc40nYf3sMyTK3kTQzwqaGTqZ5oOpsRJiSTYYoSCSMyERJiTtEgzc4MRrLQeQblenMeBTzHk8JMbk5ymuf7bxIyPafTvN6sA/tqGG/IG/YEvKETp3NTfTnZgeit+7mdTqQjr4cQmnckuvuUL4HShITshGGt7KOR3cc4wtXTElqXXCdnlGLTe3t8shFnJyFN8RJPeZ/jxyj1+1/7PpN6D3o9Yh2/ceFcwq37jowgT+6/igOBc32UzSfrvk9wdMKB3GuRk8Pd4AF6QPSq6P2FlBQxIaE0JV30ONej8vAwhQZMfaMECxBfY//UEDdUSXBYiAdwYclWzbvuK+9vJYMOuIMkKjnQGJDyO6FFneDHNFabmPeLA7GPDf38KpIThTtQryNOQg/GdoqOUrwc53NdDPG4TIXwLlft8F8qWUDEOAY3ZppYgE5s20YvlqHmM0wMTRhaoG5GphYZLpu/61jgEIqrzHPzGJBNMfcV3ktVQMLFMQ/UfkGtgTrqOIj7ShPGJQMMj32nEJeLaksCKanQFhHD0Oak77mVlRcDKKhqCQIHo1zYCI4dSPliLVu23ReWGemKJcJsPIVM+pCCIUxGdGGZhlhF8zEmDfVO+oDA6HSAkHffmwnebt/MvXxQe8lJ3+alV+aLUg9a5yLa8jLieyLflr6/SxmBrKXAnhSVWFitY9rTTv5k9K8YfuukOTYDckxuKSJtnMq2zVXdjDfbEfjCSt4NpbGbkwK7Gan23UB8INijsS2jSxDVSyP3/6WeuzKIjFQtSbahsvveqR22bsnqH9ZzCmkzEhNkEWXeYMs0GutxogH9q1hTnRYf1loF0haXo7jx6Fz3jKZtImsgYwbBXzBltYrp62Kza770io9tB2G5hYoj7hDNP3MDGryq1XLvvWwIDGTiV17u/BDJZlZ99pINSHBwvLeI4iAr64mdBIz8wgcWDKaKuvRRCb+jqqh2HJnBRmKKyfKMWnzwCO28TeP6HiD120TWcIOK9uXB5HQPJbiFYSSHH1BmbBTtT8Ba/d0UBjY1oUgjWwjTPsgAVh2r5sPjDtWw9ghb1QqGRi7QgYCsTzclf+C+NRECtXMsDY/zE1FCIzK+nAxDiUcV5MY45QHWFU4B2teW0935kg+O1PEzutrDpjWxqh8ecGsKZWCTaMBqWQW4r9O/DrUBBUDSLz6KiDIvBQRllzZA8N1iWgF/A194q9lmXDR2rN+B9MrvBD2FeXJ9ayg2cj265E/sxap9+IwLnhLPHrFD5/Fgsor+DpCNHf5Aix0upUJ5J2CaeSh5PTFKAJyrnXnorahDbLJdvpkyYD5Z0R7QXNEI4KXhD+y0IyA8zCiH2NphFKQ29CPmd0AYxFXoGHswU66TvCawxTj5rX5lgOzO8zwJo66Sd/5Ft6X4c9jCZ+TJC5eW5XAN/ZEFAXX6UNSq2Gm4qdBg2z+6+tAQH7ECdfPyDbB+ZAuknNHcz/sNAmlauv7IdQXlcClOwTf6AwT8wEnRR/VyQx5l3Ykb0A5RpCGZbstmB33lgEAJfJRzcMzAv+jl64J6e2gUa0FdCv4dValN1xn2Th+eJBDDIy9H89MK/tz50IL/j7+CJhp5dpwjbOQNJOgLPFlRKoZCAp8oqUjY24rTQ17y15+f3R+7dag3bt6sLUaGaLfFasfKeAtgH39mZhDddsCm2kYgddg5UeqrMVov8rZfpY1si89ZnPLHA/sFsagJR3q1KLtzYxa53rPrf2pwV6wBRbMtYGeO6toZox/4tVox2iuus1wiSdMBEbRcHif56zuglxVBtCQ2RoL4Q0iM4Qdmgy/gQLHvfhgTEzDbIxhiUDXqTdUGyI00Qw5G/oYVoYR9o9JVy2+bODYTlkRig+kXSFzwhniJ8CppHqskZ4d/+MSzeWqo9XJX+EBpvVqL7tuhgnqTuRIxtUkPnahebN2RsoqQdPhQXNy+Jq1CqEuK2kJpQof2y7N5mOO+OXjoHkYmotFg6MOYYVqRYScMBsSqXkdGovpxMVHtVtKT+rYQI12rwQGhgFG52zBGuNxOqWKExMaEzkxMk8dv5DVw1J9cRZOaSU+Oqg9/Dnxdu3eGH9NGIE39ncEVsRoWajk+a7RrYnCqrg0xpjbiVMigMcTipXH/8nT9emdmuKs9VgbPzqn2g3EfsPNMV9EnRul9SNmLFABkd5VG8ZGaDWzhSp3dklKiqm72PVZmjyyAQzPGeWIYYZxGcEGeRz9DvvgJ5jVruuq+yMVNZhRNJjT07svQF0DlfJkiG6e90514dkYF6QihsL/YGoMnJ7bStA5CgjIKNBvk6I4BnCfcr2i+wr04MeGrWF/XyAK1BzvXOilYRBP7HT+Bgv6g1D43OiqUrmEYMn8+tQJ173exY8ZXwou6wVHFeOHDqV6qFTN0A/6EoxFqt+3oFxMKfiyANmZyMwm1TUCcam9vynWAaQL3yXChVuqRbQmAta07mzOKc7aX8HxLzwINOx7vr9phb1d87TjWc93fmR1daaxe5J6HkcZOEEtR6mY8sOGGzU3O+glOURgZ4mIYkwCrF2I9xrNfWB9qWMmZHTpb8espu41/CeYt50ZD29SzVGFnTPWOct9XnGJQWAIC6KyBLOlZeiWcBky17I4p9tFFYBGpTc6S8/+KXDGagA5Z22oYjLGjVQMjQfbET5kNioBmNomZTUrRGgO6JI5Uw/XOHUmaHRs2LOs/shHypXIvwPCAi9NQX72QgNQ7z29guI+gi53npoBcQhDodlxYReYBUm7k/gsRruwEt2tkvkpw22bVdVuY4TeduK+mTOIw4QFiMbIpimYckT2ukq5/sXxm+OrmCoPEIWbLzWKHI+YsHexFyPzwnmgikbsE6oaymoa2FBiw3Ok7yWeIQWmWyPKigo/bNdyNhQugTBeJAsuKOv/0zULwEz1GA/JIO8IuM4AV3VEqwsp3cpnYM/wieAt6vDf9KXgbvMreeZlXzuyufDgq6VxaXd9xQEOGyReCG3faf6K+H+trUzU0eKbUVRArj13bk9fDdq4is5zd46wY0PCXRWODT7kOX0VcaIhlb1qWWCxYAJByEqJL3Xtp5wlWna5Ta1V4WL1oKGsUvLZtE2cZBcGNUs3diCMkdjNvZJpNYrlXLYzHumNJPnhjnoztS4tN90kzskHGTxgF0nb+v6eKvxKsMsNa62pB1I7l2+kRXW8CF+DzeRbXh80sQ9ERq8XDYnRWD5w0paapOmk5al1ZblkE0haP+24/n5rjXACOcIQjXaS1vcUpuhw9NuKrWpPzEbJjGTb57aTKW68ChTxS+K1mxImzTtUmDcicw6OLN6s0wYJ8S8riJJxQtTem4iCRsu9iZk3NiqIZ7Rn8eyzPuFlQfBf0z+VjFOg8/QKwUChpH2kjjVzsvKcLYtrJ2s2raGWi/+bT+nSjPtS2j6s9E0ldWvzdNnnC7c5RBf1Qr1PuclDOr+qOVOxYq80p/7k8k7b4WSZb+uwaeSQ0nr2L8U46zzsxY4RJe/GvRT+n1ot/BWblQIj9Ou/HzLwfv1a8NP/faD8KDroZlhqQv/k4F1pCMn6CB3Ez7upIP9HrlvRdO+TpE+cAPUFTTtv7j+vIK///3/Zh5xwdlLegSXzJyJ6u+hKJyBq2W1Egqxjq6Ej0eUJcnZBQIZm/dFwomeHzT4tP3AXn4P4p8iak1uDkDdPbx0u2qKwugo6I3S3VtMvqFZtFvcPrEJLLafh1yQ5VhmhFfZlWDRcKQWd1bVGVANmjNG8vsbfRi/xWz1fv463zRa81sQJ/CQUr07TS+8bJnZQ3zTjJiXo6NtafL8+F9yuP8glkMgJJk9uH9/35djLPZiMUBPn4BhJyHJn5g++BihbEkiAP+wvLD/fw2779E2AYF4pwMLF76/7/vZvMs9hAAV+QjINcuz1v6Pm22oLntF3uwnlJ1VOsz4imiJ7Ljt6sg4u2lZrUXuEvMknw/3i+E0vBe3BmG3k9TaulkdbOT42VD2sM5cHQjVxoWv6eyaoyZ2UQsmhpSjoh25lpthTYM8MGkQeZ+n7EV2/Msw2O6sr2KHcJ0YTXVOHjk4ip4l4Sj8Y3kcg6607hy1Thi059nIEq8AUcFGbUEMzwCqpmF3cZhakafbZNm1cly734grz6sTxD3zpNPnmUnpVvX199ItRjC6EafZKiMqQU6MZcAb7geyqxR2EmWDWbr5Y1erH5khzG0Rt1+7lbxsjGPU7iyxYiD09PUE+wEgJenqA+jZYsxMzMYuwMcV/CxyDsCW2Lk7kz+Py5Gh/G78DpcdIoTa6gkYbnt20dfmIbaTgwOCiQNDozPqbvcjiJuUEB7EBijjNbp3dmE3JoEjGdkJOVbQC/wR21zPqKTjI8A+W0+UsqGBhIGn5i23DzzmpORWvhEBW0uUs40BmCSKPT4+M7HmJae3qafrYFMYdNufdlp5eQQ9DhvC6qJdOoAQvbh8mTIBMcjE/sX/wlDUjd+GcYG9IrMp4T4osaTw01s+s9g8ORScihJSXRCQU2W15PTz1tYLyjpXm8dWDPt/iyVZQO5SupkjOqnQ+HEtUt63YNTrS3tFQmrd3VMuVXxeWNkZbm0t1Uj82oxJRmztZ5dCxbDDpTTQyZiF3GVrWf5V6qBgSl75NElyXmOpxhYUZMWjvR4bKZVn+x899gCi6Uct/Qpg2Px3+0onfafwPnLonFz6sm3wEP4YZUXREDuwLL8AfbU81JGrM5OT5IbOVa/HuCWsoKlemlvWJnXr9CU8itXKCVrA6nIUEk+yYu6JcMrta3mNEgFNrTdOZVG4UF4HcP4r2EPNrxJf/zLPTIX+ShJVcBD9w3PjVt3y2mnRlOkwm28wqPtjR2U3vHR8E/k+9vIlKgG5bQ/89b9V9D52thKbYQznub5kPawPGWno3U7HSU0l/k5t4s9p9hy+j/xhdE5NyMCizF3NCLKGuHCHyM3qHxbfb9zPUHGUHoAiTLPjQ0paZS4EJx+d/a9f7u948ya7BC0Wo+MgQzG06T/80DH89/fFPaAJge9MnnsjhitVgp48KpiNMR0u/w0sJIKNHfHf0EX7YcSJZwC31HUek1p4ibcZ/4SPvNx3wjd38ef1ErWvI3cALmx6WYEowteZXeY4yARHdKRN+YOA3Pggtg3+9GW3ubXIVKtGQe8sCrdMapiitNFiOzxqfTLy1cHwNOwSKewJRobC2o9B71ZyaeEzYfAee/1fmWtUn6dH19SbMjqdcQwMdPD0bQXucH/04PPIcXwsuIlaptEFg2aEt0JaM/J5NpqUYJX6ULIS8+dVJUFAv+glJzDPKY/fE75H58mSJ80Q9nuuq65s1EFx7ApJGamjbWGZsoWyCTCSlbmmQKkx8exMWZMpsCXIKbB0hNVCqpafNAq7NZJslmwhVK8Bn7F4RY8Q6Cjgy8NjXwfnxw5gxeglbiL85uUuQAwhVkArUg8k2L0pJeSK/tJlZQfA6Rs0npvHKc8AHYtJHcBADhat5cVyXXfSjT6diPlsxBHmKk5oZVTVJrDM4Nwv0UJlnTnzidrqNpAk/BLRvbbaqmdoVdyIr5ozwORgZh0+Yv6QOFQ39Dw1s16B/RvnNlUcVDn7tkfCg8SGoPJrZsXt+VWiszYRwoNclkPEIYyJEapeAC3LyB1IMNbd7R3bdxR7+eLqBMjC23ihTqib20Yvh6OHKtS2BuTiOmKc1iscKcRgRjHrSVU0qjVXPiyqqLa0yXq2h5v5kChw4zhraazzscvPuoKinJHoSWKYGvrc5cSlZ1642VNQ0NQ6RmhEiNrk1rUp28XTx8hVzkEXzS9ufAkNgms0RRORxqlG0ob/baQn2iC+QYAMoG/HxlqStv6W8IREsOg3pgKOXaVLFap2Ack8BeLGR7KT05aUMrRl5Xuj+ZKEDkw3OAIHsXKWhhoA+pRsG1VDX1l6BTeBpakptwN+H7YrwY76v9VFq9uorHifSNM1Z44mDE3YuwErkRnFm4ce/9GIbcsNr7lc2V126l0by6Tv4YR/M7Juf1BCNTDWVticV9RSni3DVtTWEOtw473ZLIa9Cwe1n+FE1xgiW2dOX14lUZjeVNfS4l3LJSdIwl4ALc0Ed24Ti5YVN/d5cKa8TDw/FRRMfUI6mV68JgSAgMU+glqZwMo1DO9rpUsAw7rTscxjMMHm3+0t0ABoVcMzTUX9puPbjqJc6+JeYuXQ6NC8PJtYPrBhtr5sbiRO7k5EdnvNYnLhfI8orBBbiekcn2dehSV8S/n+5sN67x0m9Qpm0QmBQlcZ/fKTZpPjCy5ldubToBhxBoEk1QLpDPy25cxgfzPGfjHuIktsa6pvWkRpzDwYkNzRvraiXmz/BFizLDAGE9hczGxLlcmiuZbZ18h1vx6YUlSv4E0i2vrdMaM6wxXhQ/ZcNZ+7M8XldbE9U4iTQlJtevc0ltcfgyObqVz/H8sFoLPxqXi8f0uYpGGnLU4vdULVegSahblVAkGz50nIICgT/yUALcsC6JxkILycWKDEk3guJCQ5gNx5/M98u2qeME5lV8vbE6IZENF2PHi2q/rdTFbOD68/bOXYwctAwWtRrZu/L1Q/eGgZxGqbBIJE4wRTXyNorFq1rUOUraY+X44w5PqVMJUnRqFY+2qJATGJm9gx9/SSg6qHn9YVXwblm/8k+dzjvbedLGYifdOXUv8VGkeZQxxzq54CR09bkC75iG17S2SaJqwQuV5M59Mx5SvDSjDXz3j939JpECF0sec/WW8j3OWvitBLwCKcTLb54OzAQv9G+X4PWYM9F3wyprvSnuMU1MezxeY/q5FusRboeL4eTDT3tM13Mb6hVrFP1cHYhahLDo7GcH3i/ieHTF+Omitr2te8Gb3gXwCoaKDn1w7tPiMSr3fabvQP+BZ3xLwPTVBYwqz3rx+h25F3YF5vl3DptGTLv9c6C7jYi7vZOZDaQepIQtrn8TnqMPUUgcVNl/SYPtMP8ZRyKPCrTkbPATSzkv4Is2h3Ag4YBoRY2tS8kKEDLfrNzV/Yb2+m89SS1R4TnPrCA7+g7PYy6+6CW2DFB+kvOKM7uBqUKWj5GnMHroyg32yNhrltPeN0eMb8NPUJOp+ym0G8fBim/EO7CzmED/MWj7hUDvw8H1l7Q0yPUG3RsMsliEYixypdIsjyGzWOQYg1zNNJixQBotMCw+IczLCzOzwC24eY9XH9LpcXLP1j3Dw0otZcfGBgQmL8JjHlF3q7MJGTSVChGs6py33mLBNvJJGiGDR6YBuAfy/q58SHOdMlNppz566qS3xdOUjrwCpHmQJHjz/JxZlmkuCxEEiEUTrYkITclGxFXVd2gc2W1SWaXakNGcpZ6YClqkxfFlrFO5CQdlqvzgW2eknNUVYG5VG2USyffqNchDIuPu+adCcA+GKj2tw1X73T337LOV1PaaCr25ep0kG2zyoI3qzxIm36dipy1yWiu+6L7SNWK5EdBG7KP4I7QwAc39MnUZc4Z7jivZeY+0YXy51aCSWvXy0MoQ3wfHKKvgYiLyad60/jnEB0KEz5HWCym6Vqm+3mgzNK9V5oLv4Pp0Y5u52OF67s/fH9Ar4ZOQmjp54xduOmhP0zfpjfr2dfq81C6HUa3KNCrk6lOp15eDsSuQFPBDtBc1W/AlX5y9viMD9q2Ely7TKsCPcJ1UV50ulxZ+aQ61CoqHG/v7t7iKBbFWy+9SpyJdVzUkLRKfNYoSEg3iVIlBnGhriSRKbVaaSMTie4lDKRY56HwGT1+BFPPu10mBOkKzJr1Bm65uHTAWFq3Vapp18YEW8oOrn39/QKt6Jt9mVCjJJ5MmlQorjgn01mdZVCA4lJCUaTGZ0CKJTcND+MFYG4IdRzlhCA+BF0KCLwR6c7k+nKMhYPSMG314koGhfoWZCkfrHfvpSciNRHAFgPfbWARjBx8yTKJHXP+RAI7f+tL9GN/fL0T7OFpt1aQIVAaHZLhI4TQGf4LV9RZJBJH6kleE9x/65TVyLtmPeT2ID92IhZ81agY/EUn3cEZD8fJRvey34EixM80I7p5xo/i9yI2iva8PX7rpp14Tl6MWc0fxy2D8qklHC1hb//fjFPLnJBE9Z/i+Qca+GxBwlu1L+bYpRW/gs5f7xs7LLP5rnygZipUZVOIw6k986KzP1ykjj9gKXG/4JmFuDJuXGbTOdIU8z5jOtdLYbDwo6G+V6h8dFKw9B6my+m+2oXMoGrnRI9woDOYQGn+Z9k0BTfV2jUD06E+xKtGQptcb0hIFXvYGrsCuNrHu35b43WKzLvj5H2UH7I1hMskcTgCDEcsGNWvdGNmVKjeAR/XBsnyzJj3foIh4X5a35g3f5KLz/6hUf+t0OJv9jx5GK0bjlqGRm2bFzSK/+BtnIUXyeHzgPi0eXf7BVj6kQdnOrTRKKjBnppVSOzraOSwTm9pBMjiS/Iup2FJscKlQGcVZSV2+JOzVFtvkRZ2qri7DjMoCQiqFtvVcLpVuAf7+UfnR+f7+wCKk5oJNeY95ATVC5lpIUk/7Z2V5rxlqQfdJY2ZKylcT2L5g6AIQlqXsE2T29aAqXKudYBU6wFqYHiUQZcxjgWcrgyqoZ6lecdoTs2wJyIig5Y5bjrbm9UwZ0paSIPdAc16PiyOvB3jyuaLStwrXKtdxFbjqtWjlXespTr5FYkKohYqCfbELmG9TAVpEiYW1Afuq/qzV7tPEccM0CNHz1104eZULV7P2VT5GWh81JOlUr7tIdny9bo2s7dOcOvT1rl+yDnx+xY0FoCyhxe2Hs+VvJlYzqupZRWhJlqayR5md1yhJyeGL+LbrPxmL5FimG6+hXfGgEuShBq2cxbU/kEMft68XydEAyzk54zp+jVaCL3UY1+UBSceeL4eX4ld3wGElVR8gKNHi9fNOz2PcsyE/iUaXfqLM4y0B0XluSGEGGISyfwQ6eDFIjZD3mK4Detvy1mICO8EwJDvoay2sHlpX2GLksKKYRwxe+6Z1gyPMKBYHcD/OXmp6n22sxNcNVT8cjOCzAz27diTP3Nj7wXnvYO/zH5y4MZq8o2dnN6DABXTwCiTfGjFyLarY3Ijw2Pw0CyOXc95roxvq4WK8ADpGbVz6zb33ztND6OfvHX92Jjn0WyIla6WH7o3km897qGNzIiIC2ee12GJ0aGG42YuW8T58mQ9cVIOW7LrdxfNg9k0fVEIPnkGECkhDdC+kPi12r+I5uOnD337TnrFuqzFAqtV27uz69dw5m1kNc+YDYg4+JUu1JsGcb1YzDrNHZ7Vfl3w4CuyvRTMmyPzvaZ6tLLabyEK6ZOgSQMk4/eqtZmm0v+fV/WsgdEOT94bZDWt38Z7wNl22gVDaPzDYC2z4D+U3W+zluf7nIALaL5oplZ33IPnRAmHGfGDgmZCfxOXYHBUL0J4o89AlL5je/j7xgZD9iL6obIbzkHvGNGMvIht70S7wTGVQBVB88RpqelUKT3typuGFSdhBHDJ5Z+yP6eSeNpB/Mdm4EzweA/i5Zhm35dAru4llVKoKE645HV/GYj/t/3SoYy1c+DgrOseqCxHItQQtGRB1GwQ84Rd3wcTm3mjOU2uhNdoaGGhL6hFe547Ra3nuswbVF3xnXOnSpnctYkZhXWqtBZ5WH7NQx4fAQBAbWTSkGwxXRjC8xD+rrVaJ5OuUA3bNMm62UOplkuwQbDGltNd2lpqTNKZNz3HmQbLam6pxE76MRoDj02LlyhQHE7phZUBHpX79c+FnRt1/h/lF65pcDjEMDbj22QLLNa/eqizduLef3q5bIkois2M1SUsdrWPvwKbS38Wdau6/RUo83PrUFqVax+g7gS+q3LwzsWeSD7ElTzB61qlsSZ+qH9KqwUXKn6OMdk74fxu4fujAzmJhqvwwHBmomciDHF9GnhDRPzwxlN2rSF9D0EM3rGL1sVoq5bJMQ7zfuX1Qx/IY1UQa1u3cqWVHGXYFjFHNcA7DBNmZCcmgbUXci85q3IMSrTAaNUqtFOhDR9XrnsGvWerRJZus0JDkdF71C87oK+awyhkXZnxnfS8wyrCFABTuQbevfyWpNl+/ii8zO6m+mm1a8vrtZ5MKONs/g4nzbr1B360kH2zAsIbJicmpc2RMr+Kr9eRkH4R9Y28CIpF5kbGRDf4sm5wPPMc94Fqejcu1zPjRJ4kUK7ZIbvvbsv1adS1wuhTmDA9Jf8Pwz/RAwB5/GWbRrr3205H9dLx2je5AlzF4OvfLv24ncbzffct9OI3AnHTaEt9coPjt/3j10xCeRQ46/gRaFmwHfrrqQdN7cPlq3LMbClP4orv3PKUiyvdM16rPXj04G4qGvAHo7gQqA7VxSWHwwc0cLudDdXc7IzBtDOAlhbwGX3w96Aj2UcDBfg+qTUOyjmAb7uE5tIISZB9d4R1GHlfyWjBkekNSkhaWrRy0qrjJDyflbs21LgNDRVmmtEj9Emq7T82I+6UFCw2lZZfjrwZ6KpqKHUlqy8kj8X4YHhI4gS8PBO0cT2ZZVSA4hES52a7htiqwDfHyoxw/iHB5IBf83w38ve754967AoQiP1haMDWX01Tjp2AHxgSSLE6Hin/k3b+GZfbCpqqqguaM6P9RPvgycfiib02/CAo7EBIS4cOg9m3u2DM4Moi3xklT+ahtoneDxuk7smlkP5QjD14lrp7FiIBJlWoquXBAlqBNBMuwRagqVWkspbqYJ6KtvGSBoyw5XVXMFziS02x5Zt72Kb6vmXoaZkA3Rknt1jY21WPYLFztO1ubY10reD8kPPx+ZMRXEewDkZm5kQfn85NUyUZpCvisphnfJ84XCvPFImF+vlDsizz8iDyo0bKnnafxRVXgwWQNX6wPI8LX44QvWPdPJsZNh7MTCx0ZzCIxzypx2qQV4hRBTqXQYKrhi3RhRPgSzIYv2E4MJsaN4vEsm2xCSs6q09OdM8SK4pqZ72jICezwzND5WpAKj1dVHV+9WoWJtuXFWg7LJod9S1YWC95PlmO3tiOjsriIaCSRSNAQ7VJ7pAkR4d2I0Jy82z/URM4mEPA92xTq362YRSK0EGSyR0qZtNjkciM9whiOpucqNLFRy8rGVAw+ifP9j0ob1Q3IjZK3viZLYs6G6MvAxvNudE4SUAici+eE5NwSCZsnmunGhdOE4n2ma6FC5lCoDta81DgH+sKZxqXm7NpgfpstLsHM50OYaFteLI9wzkZGvpYAOWeX+eH4MnrkIXxp1IO86xwRJUl80fY0l9TD9DsXyMx0OFZVM/s+LkNfnFXXjEG6TwzjlfzYfMlJZgxY+nQB5j8Y8pOogHoWo8Qm9ZZ56DKwecWNMtAVxaK2UOjtzFiAOyv3R62rM1LhHGyh37vMXm3EfH3NoP65L2bMWT3xFb05jlONN87KyBe4GexdoWNj1bXjXyAVen9TVTuG0b3j/HkY+BX/OHD5s+ToaEFMjOBYLTnmDhDS708muPr1mfh7FAT3Fw/hAuoslZ13O4KRkzldZOmhJmPLajXvhgN1Lttp6r7BdNBxI82bbPzX6OX1VvefOOZ/Aow80qnhOU+yo67FxkbygTqXjo1V1c6+j+SDJDm8tE+swAHZSuQvdDEjcq0/8pCHvMV54H7uAO1eR//qPMdOv6cNkjbj/oMWTFvYKdDeQ/pW/zhmA1/9va9h5NNdCOUsOGUx9wbBlxP0wBcGu5BAC+A3uW8P4ay797Vdb68D5+6D0etJBE5zJAWyK7qEBeiSfAMmdaA/yjR3H0B/3B5CNXfva/6a1IGOwVhxDgdf/586gXvCsvRg9pYezLL14Px0+DtwySJYZ93KPtatrJduZd10K1vsJGdij1laAwVzaEUFnioCfT9mBPtBsfLbp4HNnK4Djr0gdnacPU9FfswOOEoCLN/vhQM/9SDwY08CjrYBp+yc8iv/HqteVXFZjV7Fnh5XlacnP5YD/EgEFD3UacvKLo9ry8siP1YBOFIDp0/OzrA+H5bBGXCY1pl+RD+qH9OP6yf0k/op/bR+xjgMAMb0I/pR/Zh+XD+hn9RP6ad7n2FF3gm4Rq13qw8BUOTTzj/OhhkrUu2MvkEvphOoYxzaP+ew6RwCO/yzCzsAzL64MnrMrcdSujX5cO3LmbFv+PFP4qnD+CdYDgZgAWAZqG9aLQqV+PTxvFoW7QlzUK8S+HI+0Z8Ce/Dc3p2u0mXgD/GkbdVwnU9aNenUVsNzUaESH69mRV0OxErgKQFsI55WvtYDFGqB/t+EJhGJ0oY5KNaCq6YD2ZnoErARyF6eVuhN4HNk1DxfR0QZtaOaRE0hKEenUItPMFIRmYNiLbRCO6VXBIbbInD6lJwMRgd+Tz/BIHtBnJBSgQA6AwoCbBQKZIGJJQiXYs4CVx0sKgVNtZ8wWXKvDfQm0uBA6pBSAQXlgHSAjQxAFuTQwSjFXJl+4/cbQlB/GMKpo+8Z6ulr067rPx13MYvpTDsj2JdQX78EgTMfOZppQ+43Kagb5oYOAgrcvPBmc+XylP8xgngE+Pm/VAH4ZcOnGL6+HFxtHjDDAAGvsooPX2e+Q6U/a74wi1AAqv9b3Vv1C9Eux25UN+nZjeJWtNe97GeIO0wWUHjDjeJ7Xc9ElveneJ7ZUhMZ+nuhOgs0MLsHcce3i6+5gG8mxiZHM1jNFrlxXUZf6uGC2g+7J3y7ylxOP8xCymlJ51Li0fUzXlMYE2MM81IGFQWB15XfbhKaLhEZWUzS8kKmmyEcpGFcenlHM55knoq6XyxTSjxo5dc0Rkvvj3f8e0k1P6CZ88dm0XvhljHATcry8rdaIbjlDNnEp9XUq+voTDPi+JWULqZFoJypL0nGDtW6xwLalGGkXGKGSOp0iWki71D2fhVzdVJVeHVN/SeUP99OZWmliPwkKgQI01dwinFSJiBOQSkSmhjyDBSeQixRTkELS6bQvqQKfUI4rKlG0fliw7NLyb/skekcDsK6TkqEriINKfWKESgez1AzvywW42Hg+rFMrqvpfXFe8FdDl0lkhiZDGAxuKgmjnNgqs0XbpTWJfGkN8BHUVdGGPH1FCwx8jCmNwrKd2RfzeT8/LJietNHuJ2gBZUcI6hchbRDdSfz2hEoHeZdQNr+r/CXUJj3tuuQD/8ayNUp606T1d/ohET6+IelZlmYLbnexoxPz6gy1RkSmCPVBpv/gQvazgW4Cr+4rvsKXdDOAtNgrzYHcp4kZOKVt8vkUBE/PSkRi8wWDQBbBBAw3L1i4ZOOBtxcqERCwQKm90QwOwC1gsCeilrMnJlK+JyGaO58U7EnRWkF0qO/5cBCJdVmGNu0GdHJZo0G3cBZmncQxcmhQJ1yuHqu5NAmXo1ObRnVqpNQ1oe4StXHvLoN6FKjWGT1a5NIacptVt7RINPPiC03Wh12RLGkZp09CoSz4Jbm0aRVudE4uj2LX3dopxYjxs5qjo/YmnEouhppN7i+tSdfsxSwT8ZXPsOSev9WyCCAFjBDkuKMGecpgT5siWIgheB4zKdEBcpxhwkWIdMppZ5ylh2BmiPPqlRK9VvgLL/OuqTbZzOq5ToI1L7qk3Ad6CeipqMxjHF6zRq1aHJbFrI3Ft74VeW5Uh6YCsgvd49H26tPDIYszJOTI0S/XgHFkg47423m9fa+9QI0P1PqXRzr/vjTwtJV7bJe+oRCNGNhnv4UWKT/IUw3+PgyLOMRDfCRAQiRCYuQTSaSRRR5FlFFFHU200UUf3xjiF2P8E5DABCU4IQmNKWEavPOfNkKdHTSaL7H1SMvRJAIsQ+ExkEpPeCL0U0WjC5wgkYlKdGJ4efjEbK119tjrsC222ma7Q+lkhEZMLEaaFSuRl17Zwcifn+kGOp5YrECcMUYZb5wJhuvva10Tl/gkxJbEJCU5KSa66apJmmV4qMW1Ga2hl0k+l1k7zEU2P1NEfWUppTP7VwxmDPVpiFx2E/9e6rCfxG2tJb79d/fFKkm937MHEZ/fgsv2HoDLXcAddrl+M7XRZE9MxTPZE7vasqFE+1nVnFLZhxAtu4ERQsxo+CKWx7QrGYElMJZ9jOW0jBEx0zNsspjlKaYpNEWm2JSYqabUlJnyiuJ5s1lviuxClmSmsWkKaJYt1INGOVO+MqzwpzOqyZJiR5czBvEqWzqjmaSQtYhm05FFmLpDnF6xiqQ0ukL7bSyK/pvHYkkrbnDPOtU1v7jshAsiFjpep9s1dIjB0JboDQAAAA==",
            "encoding": "base64"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 16821
        },
        "cache": {},
        "timings": {
          "blocked": 2.39199992095679,
          "dns": 0.017000000000000126,
          "ssl": 176.00199999999998,
          "connect": 301.753,
          "send": 0.30700000000001637,
          "wait": 123.54400000481309,
          "receive": 25.82300000358373,
          "_blocked_queueing": 1.2279999209567904
        },
        "serverIPAddress": "172.217.7.3",
        "_initiator": {
          "type": "other"
        },
        "_priority": "VeryHigh",
        "_resourceType": "font",
        "connection": "1949709",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.128Z",
        "time": 51.223000045865774,
        "request": {
          "method": "GET",
          "url": "https://browser.sentry-cdn.com/5.12.1/rewriteframes.min.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "browser.sentry-cdn.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/5.12.1/rewriteframes.min.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "expires",
              "value": "Fri, 26 Feb 2021 11:59:49 GMT"
            },
            {
              "name": "last-modified",
              "value": "Tue, 04 Feb 2020 11:19:05 GMT"
            },
            {
              "name": "etag",
              "value": "\"4e240097ab71acf709caa48e23cd6411\""
            },
            {
              "name": "content-type",
              "value": "application/javascript; charset=utf-8"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "age",
              "value": "1024288"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "server",
              "value": "Fastly"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=31536000; includeSubDomains"
            },
            {
              "name": "content-length",
              "value": "1807"
            }
          ],
          "cookies": [],
          "content": {
            "size": 4713,
            "mimeType": "application/javascript",
            "text": "!function(t){var e={};Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};var n=function(){return(n=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},o=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(t,e){return t.__proto__=e,t}:function(t,e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r]);return t});!function(t){function e(e){var r=this.constructor,n=t.call(this,e)||this;return n.message=e,n.name=r.prototype.constructor.name,o(n,r.prototype),n}(function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)})(e,t)}(Error);var i={};function c(){return\"[object process]\"===Object.prototype.toString.call(\"undefined\"!=typeof process?process:0)?global:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:i}function a(t){var e=c();if(!(\"console\"in e))return t();var r=e.console,n={};[\"debug\",\"info\",\"warn\",\"error\",\"log\",\"assert\"].forEach(function(t){t in e.console&&r[t].__sentry_original__&&(n[t]=r[t],r[t]=r[t].__sentry_original__)});var o=t();return Object.keys(n).forEach(function(t){r[t]=n[t]}),o}var s=c(),f=\"Sentry Logger \",u=function(){function t(){this._enabled=!1}return t.prototype.disable=function(){this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},t.prototype.log=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this._enabled&&a(function(){s.console.log(f+\"[Log]: \"+t.join(\" \"))})},t.prototype.warn=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this._enabled&&a(function(){s.console.warn(f+\"[Warn]: \"+t.join(\" \"))})},t.prototype.error=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this._enabled&&a(function(){s.console.error(f+\"[Error]: \"+t.join(\" \"))})},t}();s.__SENTRY__=s.__SENTRY__||{};s.__SENTRY__.logger||(s.__SENTRY__.logger=new u);var p,l=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;function _(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var r=\"\",n=!1,o=t.length-1;o>=-1&&!n;o--){var i=o>=0?t[o]:\"/\";i&&(r=i+\"/\"+r,n=\"/\"===i.charAt(0))}return(n?\"/\":\"\")+(r=function(t,e){for(var r=0,n=t.length-1;n>=0;n--){var o=t[n];\".\"===o?t.splice(n,1):\"..\"===o?(t.splice(n,1),r++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift(\"..\");return t}(r.split(\"/\").filter(function(t){return!!t}),!n).join(\"/\"))||\".\"}function h(t){for(var e=0;e<t.length&&\"\"===t[e];e++);for(var r=t.length-1;r>=0&&\"\"===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}function v(t,e){var r,n,o=(r=t,n=l.exec(r),n?n.slice(1):[])[2];return e&&o.substr(-1*e.length)===e&&(o=o.substr(0,o.length-e.length)),o}!function(t){t.PENDING=\"PENDING\",t.RESOLVED=\"RESOLVED\",t.REJECTED=\"REJECTED\"}(p||(p={}));c();var y=function(){function t(e){var r=this;void 0===e&&(e={}),this.name=t.id,this._iteratee=function(t){if(!t.filename)return t;var e=/^[A-Z]:\\\\/.test(t.filename),n=/^\\//.test(t.filename);if(t.filename&&(e||n)){var o=e?t.filename.replace(/^[A-Z]:/,\"\").replace(/\\\\/g,\"/\"):t.filename,i=r._root?function(t,e){t=_(t).substr(1),e=_(e).substr(1);for(var r=h(t.split(\"/\")),n=h(e.split(\"/\")),o=Math.min(r.length,n.length),i=o,c=0;c<o;c++)if(r[c]!==n[c]){i=c;break}var a=[];for(c=i;c<r.length;c++)a.push(\"..\");return(a=a.concat(n.slice(i))).join(\"/\")}(r._root,o):v(o);t.filename=\"app:///\"+i}return t},e.root&&(this._root=e.root),e.iteratee&&(this._iteratee=e.iteratee)}return t.prototype.setupOnce=function(e,r){e(function(e){var n=r().getIntegration(t);return n?n.process(e):e})},t.prototype.process=function(t){return t.exception&&Array.isArray(t.exception.values)?this._processExceptionsEvent(t):t.stacktrace?this._processStacktraceEvent(t):t},t.prototype._processExceptionsEvent=function(t){var e=this;try{return n({},t,{exception:n({},t.exception,{values:t.exception.values.map(function(t){return n({},t,{stacktrace:e._processStacktrace(t.stacktrace)})})})})}catch(e){return t}},t.prototype._processStacktraceEvent=function(t){try{return n({},t,{stacktrace:this._processStacktrace(t.stacktrace)})}catch(e){return t}},t.prototype._processStacktrace=function(t){var e=this;return n({},t,{frames:t&&t.frames&&t.frames.map(function(t){return e._iteratee(t)})})},t.id=\"RewriteFrames\",t}();for(var g in e.RewriteFrames=y,t.Sentry=t.Sentry||{},t.Sentry.Integrations=t.Sentry.Integrations||{},e)Object.prototype.hasOwnProperty.call(e,g)&&(t.Sentry.Integrations[g]=e[g])}(window);\n//# sourceMappingURL=rewriteframes.min.js.map\n"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 1901
        },
        "cache": {},
        "timings": {
          "blocked": 1.3829999921545386,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.138,
          "wait": 49.34900004334748,
          "receive": 0.3530000103637576,
          "_blocked_queueing": 0.9009999921545386
        },
        "serverIPAddress": "151.101.194.217",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 7,
                "columnNumber": 110109
              },
              {
                "functionName": "l.run",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 23003
              },
              {
                "functionName": "u",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 22507
              }
            ],
            "parent": {
              "description": "setTimeout",
              "callFrames": [
                {
                  "functionName": "a",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 21970
                },
                {
                  "functionName": "f.nextTick",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 22961
                },
                {
                  "functionName": "o",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 110034
                },
                {
                  "functionName": "n.load",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 7854
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 7,
                  "columnNumber": 71693
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 1,
                  "columnNumber": 7883
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 11,
                  "columnNumber": 1794
                }
              ],
              "parent": {
                "description": "load",
                "callFrames": [
                  {
                    "functionName": "o",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 11,
                    "columnNumber": 1756
                  },
                  {
                    "functionName": "t.exports",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 11,
                    "columnNumber": 2199
                  },
                  {
                    "functionName": "o",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 7,
                    "columnNumber": 110027
                  },
                  {
                    "functionName": "n.load",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 1,
                    "columnNumber": 7854
                  },
                  {
                    "functionName": "s.initialize",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 7,
                    "columnNumber": 71666
                  },
                  {
                    "functionName": "initialize",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 1,
                    "columnNumber": 8384
                  },
                  {
                    "functionName": "",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 3,
                    "columnNumber": 2212
                  },
                  {
                    "functionName": "l",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 2,
                    "columnNumber": 4485
                  },
                  {
                    "functionName": "c",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 2,
                    "columnNumber": 4544
                  },
                  {
                    "functionName": "o.init.o.initialize",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 3,
                    "columnNumber": 1940
                  },
                  {
                    "functionName": "",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 8,
                    "columnNumber": 24224
                  },
                  {
                    "functionName": "",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 0,
                    "columnNumber": 3961
                  },
                  {
                    "functionName": "3../analytics",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 0,
                    "columnNumber": 4523
                  },
                  {
                    "functionName": "i",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 0,
                    "columnNumber": 340
                  },
                  {
                    "functionName": "e",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 0,
                    "columnNumber": 498
                  },
                  {
                    "functionName": "",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 0,
                    "columnNumber": 526
                  },
                  {
                    "functionName": "",
                    "scriptId": "116",
                    "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                    "lineNumber": 12,
                    "columnNumber": 9093
                  }
                ]
              }
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949668",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.366Z",
        "time": 125.16199995297939,
        "request": {
          "method": "GET",
          "url": "https://www.google-analytics.com/plugins/ua/linkid.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "www.google-analytics.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/plugins/ua/linkid.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "content-type",
              "value": "text/javascript"
            },
            {
              "name": "content-length",
              "value": "859"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:05:11 GMT"
            },
            {
              "name": "expires",
              "value": "Tue, 10 Mar 2020 09:05:11 GMT"
            },
            {
              "name": "last-modified",
              "value": "Tue, 22 Oct 2019 18:15:00 GMT"
            },
            {
              "name": "x-content-type-options",
              "value": "nosniff"
            },
            {
              "name": "server",
              "value": "sffe"
            },
            {
              "name": "x-xss-protection",
              "value": "0"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=3600"
            },
            {
              "name": "age",
              "value": "1567"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 1569,
            "mimeType": "text/javascript",
            "text": "(function(){var e=window,h=document,k=\"replace\";var m=function(a,c,d,b,g){c=encodeURIComponent(c)[k](/\\(/g,\"%28\")[k](/\\)/g,\"%29\");a=a+\"=\"+c+\"; path=\"+(d||\"/\")+\"; \";g&&(a+=\"expires=\"+(new Date((new Date).getTime()+g)).toGMTString()+\"; \");b&&\"none\"!=b&&(a+=\"domain=\"+b+\";\");b=h.cookie;h.cookie=a;return b!=h.cookie},p=function(a){var c=h.body;try{c.addEventListener?c.addEventListener(\"click\",a,!1):c.attachEvent&&c.attachEvent(\"onclick\",a)}catch(d){}};var q=function(a,c,d,b){this.get=function(){for(var b=void 0,c=[],d=h.cookie.split(\";\"),l=new RegExp(\"^\\\\s*\"+a+\"=\\\\s*(.*?)\\\\s*$\"),f=0;f<d.length;f++){var n=d[f].match(l);n&&c.push(decodeURIComponent(n[1][k](/%28/g,\"(\")[k](/%29/g,\")\")))}for(d=0;d<c.length;d++)c[d]&&(b=c[d]);return b};this.set=function(g){return m(a,g,b,c,1E3*d)};this.remove=function(){return m(a,\"\",b,c,-100)}};var t=function(a,c){var d=void 0;if(\"function\"==typeof a.get&&\"function\"==typeof a.set){var b=c||{},g=b.hasOwnProperty(\"cookieName\")?b.cookieName:\"_gali\",r=b.hasOwnProperty(\"cookieTimeout\")?b.cookieTimeout:30,s=b.hasOwnProperty(\"levels\")?b.levels:3,b=a.get(\"cookieDomain\"),l=a.get(\"cookiePath\"),f=new q(g,b,r,l);d||(d=f.get());d&&a.set(\"&linkid\",d);p(function(a){a=a||e.event;a=a.target||a.srcElement;for(var b,c=0;a&&c<=s;c++){if(b=a.getAttribute(\"id\")){a=b;100<a.length?f.remove():a?f.set(a):f.remove();\nreturn}a=a.parentElement}f.remove()})}};(function(){e.gaplugins=e.gaplugins||{};e.gaplugins.LinkId=t;var a=e.GoogleAnalyticsObject||\"ga\";e[a]=e[a]||function(){(e[a].q=e[a].q||[]).push(arguments)};e[a](\"provide\",\"linkid\",t)})();})();\n"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 1013
        },
        "cache": {},
        "timings": {
          "blocked": 1.6619999953731894,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.125,
          "wait": 122.97400004740804,
          "receive": 0.40099991019815207,
          "_blocked_queueing": 0.9319999953731894
        },
        "serverIPAddress": "172.217.10.142",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "y",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 76,
                "columnNumber": 438
              },
              {
                "functionName": "Z.J",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 79,
                "columnNumber": 415
              },
              {
                "functionName": "Z.D",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 79,
                "columnNumber": 178
              },
              {
                "functionName": "N.N",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 82,
                "columnNumber": 224
              },
              {
                "functionName": "rc",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 72,
                "columnNumber": 548
              },
              {
                "functionName": "z",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 72,
                "columnNumber": 580
              },
              {
                "functionName": "",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 82,
                "columnNumber": 346
              },
              {
                "functionName": "",
                "scriptId": "123",
                "url": "https://www.google-analytics.com/analytics.js",
                "lineNumber": 82,
                "columnNumber": 398
              }
            ]
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949680",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.500Z",
        "time": 140.27400000486523,
        "request": {
          "method": "GET",
          "url": "https://www.google-analytics.com/r/collect?v=1&_v=j81&aip=1&a=1427276316&t=pageview&_s=1&dl=https%3A%2F%2Fworkstation.theorchard.com%2Fanalytics%2Fengagement&dp=%2Fanalytics%2Fengagement&ul=en-gb&de=UTF-8&dt=Engagement%20%7C%20The%20Orchard&sd=24-bit&sr=1920x1080&vp=1920x969&je=0&_u=SCCAAEAj~&jid=731059051&gjid=812051869&cid=913915331.1580735344&tid=UA-127165-11&_gid=1587575972.1583828043&_r=1&linkid=reactified_homepage&cd1=6918&cd3=2138&cd2=6971&cd4=vendor&cd6=Frontline&cd5=Not%20Applicable&z=1525777815",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "www.google-analytics.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/r/collect?v=1&_v=j81&aip=1&a=1427276316&t=pageview&_s=1&dl=https%3A%2F%2Fworkstation.theorchard.com%2Fanalytics%2Fengagement&dp=%2Fanalytics%2Fengagement&ul=en-gb&de=UTF-8&dt=Engagement%20%7C%20The%20Orchard&sd=24-bit&sr=1920x1080&vp=1920x969&je=0&_u=SCCAAEAj~&jid=731059051&gjid=812051869&cid=913915331.1580735344&tid=UA-127165-11&_gid=1587575972.1583828043&_r=1&linkid=reactified_homepage&cd1=6918&cd3=2138&cd2=6971&cd4=vendor&cd6=Frontline&cd5=Not%20Applicable&z=1525777815"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "image/webp,image/apng,image/*,*/*;q=0.8"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [
            {
              "name": "v",
              "value": "1"
            },
            {
              "name": "_v",
              "value": "j81"
            },
            {
              "name": "aip",
              "value": "1"
            },
            {
              "name": "a",
              "value": "1427276316"
            },
            {
              "name": "t",
              "value": "pageview"
            },
            {
              "name": "_s",
              "value": "1"
            },
            {
              "name": "dl",
              "value": "https%3A%2F%2Fworkstation.theorchard.com%2Fanalytics%2Fengagement"
            },
            {
              "name": "dp",
              "value": "%2Fanalytics%2Fengagement"
            },
            {
              "name": "ul",
              "value": "en-gb"
            },
            {
              "name": "de",
              "value": "UTF-8"
            },
            {
              "name": "dt",
              "value": "Engagement%20%7C%20The%20Orchard"
            },
            {
              "name": "sd",
              "value": "24-bit"
            },
            {
              "name": "sr",
              "value": "1920x1080"
            },
            {
              "name": "vp",
              "value": "1920x969"
            },
            {
              "name": "je",
              "value": "0"
            },
            {
              "name": "_u",
              "value": "SCCAAEAj~"
            },
            {
              "name": "jid",
              "value": "731059051"
            },
            {
              "name": "gjid",
              "value": "812051869"
            },
            {
              "name": "cid",
              "value": "913915331.1580735344"
            },
            {
              "name": "tid",
              "value": "UA-127165-11"
            },
            {
              "name": "_gid",
              "value": "1587575972.1583828043"
            },
            {
              "name": "_r",
              "value": "1"
            },
            {
              "name": "linkid",
              "value": "reactified_homepage"
            },
            {
              "name": "cd1",
              "value": "6918"
            },
            {
              "name": "cd3",
              "value": "2138"
            },
            {
              "name": "cd2",
              "value": "6971"
            },
            {
              "name": "cd4",
              "value": "vendor"
            },
            {
              "name": "cd6",
              "value": "Frontline"
            },
            {
              "name": "cd5",
              "value": "Not%20Applicable"
            },
            {
              "name": "z",
              "value": "1525777815"
            }
          ],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 302,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "302"
            },
            {
              "name": "location",
              "value": "https://stats.g.doubleclick.net/r/collect?v=1&aip=1&t=dc&_r=3&tid=UA-127165-11&cid=913915331.1580735344&jid=731059051&_gid=1587575972.1583828043&gjid=812051869&_v=j81&z=1525777815"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "expires",
              "value": "Fri, 01 Jan 1990 00:00:00 GMT"
            },
            {
              "name": "cache-control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "last-modified",
              "value": "Sun, 17 May 1998 03:00:00 GMT"
            },
            {
              "name": "content-type",
              "value": "text/html; charset=UTF-8"
            },
            {
              "name": "server",
              "value": "Golfe2"
            },
            {
              "name": "content-length",
              "value": "416"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 0,
            "mimeType": "text/html"
          },
          "redirectURL": "https://stats.g.doubleclick.net/r/collect?v=1&aip=1&t=dc&_r=3&tid=UA-127165-11&cid=913915331.1580735344&jid=731059051&_gid=1587575972.1583828043&gjid=812051869&_v=j81&z=1525777815",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 300
        },
        "cache": {},
        "timings": {
          "blocked": 1.4300000933408739,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.245,
          "wait": 137.462999992609,
          "receive": 1.1359999189153314,
          "_blocked_queueing": 0.8990000933408737
        },
        "serverIPAddress": "172.217.10.142",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [],
            "parent": {
              "description": "Image",
              "callFrames": [
                {
                  "functionName": "ta",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 24,
                  "columnNumber": 87
                },
                {
                  "functionName": "wc",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 33,
                  "columnNumber": 690
                },
                {
                  "functionName": "ba",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 33,
                  "columnNumber": 503
                },
                {
                  "functionName": "Sa",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 38,
                  "columnNumber": 388
                },
                {
                  "functionName": "Ha.D",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 36,
                  "columnNumber": 457
                },
                {
                  "functionName": "pc.send",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 72,
                  "columnNumber": 342
                },
                {
                  "functionName": "X.b.<computed>",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 48,
                  "columnNumber": 236
                },
                {
                  "functionName": "Z.v",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 80,
                  "columnNumber": 351
                },
                {
                  "functionName": "Z.D",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 79,
                  "columnNumber": 239
                },
                {
                  "functionName": "N",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 80,
                  "columnNumber": 404
                },
                {
                  "functionName": "",
                  "scriptId": "124",
                  "url": "https://www.google-analytics.com/plugins/ua/linkid.js",
                  "lineNumber": 1,
                  "columnNumber": 200
                },
                {
                  "functionName": "",
                  "scriptId": "124",
                  "url": "https://www.google-analytics.com/plugins/ua/linkid.js",
                  "lineNumber": 1,
                  "columnNumber": 224
                },
                {
                  "functionName": "",
                  "scriptId": "124",
                  "url": "https://www.google-analytics.com/plugins/ua/linkid.js",
                  "lineNumber": 1,
                  "columnNumber": 229
                }
              ]
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "other",
        "connection": "1949680",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.541Z",
        "time": 218.68500008713454,
        "request": {
          "method": "GET",
          "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.b7a49430024851560a59.css",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.theorchard.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/frontend-source-of-streams/frontend-source-of-streams.main.b7a49430024851560a59.css"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "text/css,*/*;q=0.1"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "_ga=GA1.2.623441365.1582092609"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "_ga",
              "value": "GA1.2.623441365.1582092609",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "text/css"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:19 GMT"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Wed, 04 Mar 2020 09:49:50 GMT"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "x-amz-version-id",
              "value": "lZ8cCEMXF16zoCDLkG.iETIKuagJZIhW"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "x-cache",
              "value": "Miss from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 075ecc80ea8e9352008139ab9fd7a593.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C4"
            },
            {
              "name": "x-amz-cf-id",
              "value": "unuOCQ6KAvDQvskmKeuQR9lCDOFcXZVLCs_HAX10nnDmRscEtY8ZGg=="
            }
          ],
          "cookies": [],
          "content": {
            "size": 20661,
            "mimeType": "text/css",
            "text": ".Orw-thin-grey-border{border:1px solid #bab7b7}.Orw-border-radius{border-radius:3px}.ErrorState{margin:50px;text-align:center}.ErrorState .Message{margin-left:auto;margin-right:auto;width:625px}.ErrorState .SorryImage{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/49055cb26246d258a45c3ce601a74944.png);background-repeat:no-repeat;background-size:contain;display:inline-block;height:150px;width:225px}.DateRangeModal .ReactModal-body{height:600px;width:700px}.DateRangeModal .ReactModal-footer{text-align:right}.DateRangeModal .Start-date{margin-right:10px}.DateRangeModal .Date-field{display:inline-block}.DateRangeModal .Date-field .Date-field-label{color:#9b9b9b;font-size:12px;font-weight:500;margin-bottom:4px;text-transform:uppercase}.DateRangeModal .Cancel-button{margin-right:10px}.DateRangeModal .alert.alert-danger{background-color:#faecea;border:none;border-radius:4px;color:#d54236}.DateRangeModal .alert.alert-danger .invalid-date-range-header{color:#d54236;font-weight:500;margin-top:0}.DateRangeModal .react-date-field{display:inline-block;width:325px}.DateRangeModal .date-error .form-control:focus{border-color:#d54236;box-shadow:inset 0 1px 1px rgba(0,0,0,.07),0 0 8px rgba(213,66,54,.6)}.Filters{background-color:#fff}.Filters-grey-background{background-color:#f2f2f2}.Filters-switcher .ButtonsRow-text{display:inline-block;font-weight:500;text-transform:uppercase}.Filters-fixed{padding:20px 0;position:fixed;top:0;width:inherit;z-index:9999}.Filters,.Filters-fixed{border-bottom:1px solid #d9d2d0}.Filters,.Filters-buttons{padding-bottom:15px}.Filters-buttons-stores,.Filters-stores{width:55%}.Filters-buttons .dropdown,.Filters-date,.Filters .dropdown{display:inline-block}.Filters-date{font-weight:500;padding-right:15px}.Filters-period{display:inline-block;width:auto}.Filters-search-wrapper{display:flex}.Filters-search-row .Filters{background:none;border:none;padding:0}.Filters-period .btn-group .btn{padding:11px 15px 7px}.Filters .ButtonsRow .btn{border:1px solid #d9d2d0;border-radius:3px;display:block;float:left;font-size:12px;line-height:1.33;padding:13px 20px 11px;position:relative}.Filters .ButtonsRow-active[type=button],.Filters .ButtonsRow-active[type=button]:focus{background-color:#ececec;box-shadow:inset 0 0 5px 0 #ccc,inset 0 1px 1px 0 #ccc}.Filters .ButtonsRow .btn:hover{background:linear-gradient(180deg,hsla(0,0%,100%,.5),#e0e0e0),linear-gradient(#fff,#fff);border-color:#a8a0a0;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);color:#4a4a4a;z-index:2}.Filters .ButtonsRow .btn:focus{border-color:#ececec;box-shadow:inset 0 0 5px 0 #ccc,inset 0 1px 1px 0 #ccc;color:#6d6565}.Filters .ButtonsRow .btn+.btn{margin-left:-1px}.Filters .ButtonsRow .btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.Filters .ButtonsRow .btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.Filters .ButtonsRow .btn:not(:first-child):not(:last-child){border-radius:0}.Filters .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0;font-size:12px;height:36px;padding:8px 15px 7px;position:relative;z-index:2}.Filters .dropdown-toggle .caret{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #818081;height:0;transform:none;vertical-align:middle}.Filters .Select-control{font-size:12px}.Filters .Select-placeholder{height:34px;line-height:34px;top:0}.Filters .Select-input{height:34px}.DataUnavailableContainer{background:#fff;height:260px;left:calc(50% - 130px);position:absolute;text-align:center;top:calc(50% - 130px);width:260px}.DataUnavailableContainer-icon{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/cf0050216052bcd72e9d16ad58168bc6.svg);background-size:cover;display:inline-block;height:50px;left:calc(50% - 25px);position:absolute;top:calc(50% - 25px);vertical-align:middle;width:50px}.DataUnavailableContainer-background{background-color:#f2f2f2;border-radius:50%;height:100px;left:calc(50% - 50px);position:absolute;top:calc(50% - 50px);width:100px}.DataUnavailableContainer-text{color:#a8a0a0;position:relative;top:calc(90% - 22px)}.Graph{margin-top:10px;position:relative}.Graph-marker-line{stroke:#4a4a4a;stroke-width:2}.Graph-indicator-container .LoadingIndicator{background:#fff;height:80px;left:calc(50% - 130px);position:absolute;top:calc(50% - 50px);width:260px}.Graph .Svg{border:1px solid #d9d2d0;border-radius:3px;display:block;margin-top:10px;overflow:visible}.Graph .Svg-track-data{border-bottom-left-radius:0;border-bottom-right-radius:0}.Graph .Svg .GridLine{fill:none;stroke:#f2f2f2;stroke-width:1}.Graph .Svg .HoverLine{stroke:#a8a0a0;stroke-width:1}.Graph .Svg .BorderLine{stroke:#d9d2d0}.Graph .Svg .Yaxis-label{transform:translate(10px,3px)}.Graph .Svg .Xaxis-label{transform:translate(-25px,-10px)}.Graph .Svg .Xaxis-hover-date{font-size:10px}.Graph .Svg .GraphLinestreamsFromCollection{stroke:#026ead}.Graph .Svg .CirclestreamsFromCollection{fill:#026ead}.Graph .Svg .GraphLinestreamsFromPassiveDiscovery{stroke:#4b3da3}.Graph .Svg .CirclestreamsFromPassiveDiscovery{fill:#4b3da3}.Graph .Svg .GraphLinestreamsFromActiveDiscovery{stroke:#419b86}.Graph .Svg .CirclestreamsFromActiveDiscovery{fill:#419b86}.Graph .Svg .GraphLinestreamsFromCollectionSas{stroke:#ff893e}.Graph .Svg .CirclestreamsFromCollectionSas{fill:#ff893e}.Graph .Svg .GraphLinestreamsFromPassiveDiscoverySas{stroke:#42c6ff}.Graph .Svg .CirclestreamsFromPassiveDiscoverySas{fill:#42c6ff}.Graph .Svg .GraphLinestreamsFromActiveDiscoverySas{stroke:#577bf2}.Graph .Svg .CirclestreamsFromActiveDiscoverySas{fill:#577bf2}.Graph .Svg .GraphLinesaves{stroke:#577bf2}.Graph .Svg .Circlesaves{fill:#577bf2}.Graph .Svg .GraphLineskips{stroke:#42c6ff}.Graph .Svg .Circleskips{fill:#42c6ff}.Graph .Svg .NoGraphData{color:#6d6565;font-size:14px}.Graph .SvgSas{background-color:#fff}.Graph .IndicatorContainer{border:1px solid #d9d2d0;border-radius:3px;height:100px}.Graph .IndicatorContainer .LoadingIndicator{top:50%}.Graph .HoverSpot{position:absolute;z-index:100}.AxisLabel,.Graph .Svg .Xaxis-label,.Graph .Svg .Yaxis-label{fill:#a8a0a0;font-size:10px;position:relative}.Graph .Svg .GraphLinesaves,.Graph .Svg .GraphLineskips,.Graph .Svg .GraphLinestreamsFromActiveDiscovery,.Graph .Svg .GraphLinestreamsFromActiveDiscoverySas,.Graph .Svg .GraphLinestreamsFromCollection,.Graph .Svg .GraphLinestreamsFromCollectionSas,.Graph .Svg .GraphLinestreamsFromPassiveDiscovery,.Graph .Svg .GraphLinestreamsFromPassiveDiscoverySas,.GraphLine{fill:none;stroke-width:2px}.Marker{border-left:1px solid #f2f2f2;display:inline-block;height:25px;min-height:30px;position:absolute;transform:translateX(-1px);user-select:none;white-space:pre;z-index:2}.Marker.Marker-selected{border-left:2px solid #4a4a4a}.Marker-content{background:#fff;border-bottom-right-radius:4px;border:1px solid #f2f2f2;border-left:none;border-top-right-radius:4px;bottom:0;cursor:pointer;font-size:10px;font-weight:500;min-height:20px;min-width:20px;padding:4px 0 0;position:absolute;text-align:center}.Marker-content-selected{background:#4a4a4a;border:1px solid #4a4a4a;color:#fff}.Marker-content-selected .Icons-close{height:10px;width:10px}.Marker-content-hovered{background:#f2f2f2;border:1px solid #f2f2f2;color:#4a4a4a}.Marker-store{min-height:19px}.Marker-spotify{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/a09b1b498841d7aed406b30c474b0355.svg);background-size:cover;display:inline-block;height:15px;margin-left:4px;width:15px}.Marker-apple-music{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/f4e4fd6dfdb077ae6fef872c5b651523.png);background-size:cover;display:inline-block;height:15px;margin-left:4px;width:15px}.Marker-amazon-music{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/74eeb47a787d5ae8ec8da064750b0921.png);background-size:cover;display:inline-block;height:15px;margin-left:4px;width:15px}.Marker-value{padding:0 4px;vertical-align:top;width:16px}.Marker-size-2{height:49px}.Marker-size-3{height:68px}.MarkersContainer{border-left:1px solid #d9d2d0;border-right:1px solid #d9d2d0;margin-bottom:-5px;padding-bottom:36px;position:relative}.MarkersContainer-size-2{padding-bottom:55px}.MarkersContainer-size-3{padding-bottom:74px}.MarkersContainerSas{background-color:#fff}.PlaylistColumn{display:flex;flex-direction:row;overflow:hidden}.PlaylistColumn-content{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PlaylistColumn-playlist-image,.PlaylistColumn-playlist-image-placeholder{border:none;border-radius:3px;flex-shrink:0;float:left;height:40px;margin-right:10px;width:40px}.PlaylistColumn-spotify,.PlaylistColumn-spotify-small{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/a09b1b498841d7aed406b30c474b0355.svg);background-size:cover;border-radius:3px;display:inline-block;height:25px;width:25px}.PlaylistColumn-spotify-small{height:15px;width:15px}.PlaylistColumn-apple-music-small{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/f4e4fd6dfdb077ae6fef872c5b651523.png);background-size:cover;border-radius:3px;display:inline-block;height:15px;width:15px}.PlaylistColumn-amazon-music-small{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/74eeb47a787d5ae8ec8da064750b0921.png);background-size:cover;border-radius:3px;display:inline-block;height:15px;width:15px}.PlaylistColumn-store-title{color:#a8a0a0;font-weight:500;padding-left:5px;vertical-align:text-bottom}.PlaylistColumn-loader{border-top:1px solid #8b8b8b;display:inline-block;margin:5px 0;width:30px}.PlaylistColumn-loader-playlist{border-top-width:2px;width:80px}.PlaylistColumn-playlist-image-unavailable{flex-shrink:0;float:left;margin-right:10px}.PlaylistColumn-playlist-image-unavailable .Icons-playlist-placeholder{border:none;border-radius:3px;height:40px;width:40px}.PlaylistPlacements{border-bottom:1px solid #d9d2d0;border-bottom-left-radius:3px;border-bottom-right-radius:4px;border-left:1px solid #d9d2d0;border-right:1px solid #d9d2d0;position:relative}.PlaylistPlacements .table tbody tr td{border-bottom:1px solid #f2f2f2;border-top:none;font-size:13px;line-height:20px/14px;padding:8px}.PlaylistPlacements .table thead tr th{border:none;border-bottom:1px solid #d9d2d0;color:#a1a1a1;cursor:default;font-size:12px;font-weight:500;padding:4px 8px;text-transform:uppercase;vertical-align:middle}.PlaylistPlacements table{margin-bottom:20px;margin-top:5px;max-width:100%;width:100%}.PlaylistPlacements table tr{height:25px}.PlaylistPlacements .table>thead:first-child>tr:first-child>th{border-top:1px solid #d9d2d0}.PlaylistPlacements-no-pagination .table{margin-bottom:0}.PlaylistPlacements-no-pagination .table tbody tr:last-child td{border-bottom:none}.PlaylistPlacements-more{align-items:center;background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff 30%);display:flex;height:125px;justify-content:center;margin-top:-70px;position:relative}.PlaylistPlacements-unavailable{color:#a8a0a0;font-weight:400;vertical-align:top}.PlaylistPlacements .ClickableTable{table-layout:fixed}.PlaylistPlacements .ClickableTable-cell{overflow:hidden;vertical-align:middle}.PlaylistPlacements .ClickableTable-cell:nth-child(4),.PlaylistPlacements .ClickableTable-cell:nth-child(5){font-weight:500}.PlaylistPlacements .ClickableTable-cell-capitalize{text-transform:capitalize}.PlaylistPlacements .ClickableTable-column:first-child{width:30%}.PlaylistPlacements .ClickableTable-column:nth-child(2),.PlaylistPlacements .ClickableTable-column:nth-child(3),.PlaylistPlacements .ClickableTable-column:nth-child(4),.PlaylistPlacements .ClickableTable-column:nth-child(5){width:14%}.PlaylistPlacements .ClickableTable-link:hover{cursor:pointer;text-decoration:underline}.PlaylistPlacements .Icons-info{height:12px;vertical-align:middle;width:12px}.PlaylistPlacements .LoadingIndicator{position:absolute;top:47%;width:100%}.PlaylistPlacements .NoPlaylistData{border-bottom:2px solid #e0e0e0;color:#6d6565;font-size:14px;padding:20px 0 40px;text-align:center;width:100%}.PlaylistPlacements .Pagination{margin-right:10px}.PlaylistPlacements .Pagination .pagination{margin-bottom:7px;margin-top:0}.PlaylistPlacements-loader-followers{border-top:1px solid #8b8b8b;display:inline-block;margin:3px 0;width:15px}.PlaylistPlacements-stores{color:#a8a0a0;font-size:10px;margin-left:10px;padding:10px 0;text-transform:uppercase}.PlaylistPlacementsSas{background-color:#fff}.PlaylistTitle-link{cursor:pointer;display:inline-block;max-width:85%;padding-right:20px;position:relative}.PlaylistTitle-link .Icons-external-link{position:absolute;right:0;top:0}.PlaylistTitle-unavailable-link{cursor:default}.PlaylistTitle-title{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PlaylistTitle-amazon{cursor:default;padding-right:0}.PlaylistTitle-unavailable{color:#a8a0a0;vertical-align:top}.LineSegment{fill:\"#000\";height:15px;width:15px}.StreamsDiscovery{display:flex;justify-content:end;margin-top:10px}.StreamsDiscovery-content{margin-left:auto;text-transform:uppercase}.StreamsDiscovery-help{z-index:9999}.StreamsDiscovery-line{margin-right:15px}.StreamsDiscovery-percentage{background-color:#e8e8e8;border:2px solid #e8e8e8;border-radius:10px;font-size:xx-small;font-weight:500;margin-left:10px;text-align:center;width:30px}.StreamsSummary{position:relative}.Filters-fixed+.StreamsSummary{padding-top:140px}.Filters-fixed+.StreamsSummary .SnapshotItem:first-child h2{font-weight:500}.StreamsSummary-value-hint{text-transform:none}.StreamsSummary-heading-hint{font-weight:400;margin-top:0}.StreamsSummary-empty-value{border-bottom:5px solid #4a4a4a;display:inline-block;height:4px;margin-bottom:5px;width:20px}.Filters-fixed.Filters-with-track+.StreamsSummary{padding-top:190px}.StreamsSummary .Snapshot{border-top:none;color:inherit;justify-content:space-around}.StreamsSummary .SnapshotItem{border-right:none;margin:auto;width:25%}.StreamsSummary .SnapshotItem:first-child .SnapshotItem-value{font-weight:500}.StreamsSummary .VerticalBar{background:#d9d2d0;margin:0 3% 0 0;position:relative;width:1px}.StreamsSummarySas .Snapshot{background-color:#fff;border:1px solid #d9d2d0}.StreamsSummary-sns{display:flex;margin:10px -10px 0}.StreamsTile{background-color:#fff;border:1px solid #fff;border-radius:4px;box-shadow:0 0 5px 1px rgba(217,210,208,.6);cursor:pointer;display:flex;flex-basis:0;flex-flow:row wrap;flex-grow:1;margin:0 10px;padding:0 20px 10px}.StreamsTile-active{border-color:#d9d2d0;box-shadow:0 0 5px 1px #d9d2d0;cursor:default}.StreamsTile-hidden{background-color:#fff;border-radius:0;box-shadow:0 0 0 0;cursor:default}.StreamsTile-hidden-text{color:#a8a0a0}.StreamsTile-hidden .StreamsSummary-empty-value{border-bottom:5px solid #a8a0a0}.StreamsTile-content{flex:1 40%}.StreamsTile-value{text-transform:uppercase}.StreamsTile-discovery{align-self:center;flex:1 60%;margin-left:auto}.StreamsTile-discovery-active{flex-grow:2}.StreamsTile-source{color:#a8a0a0;flex:1 100%;font-size:xx-small;text-align:right;text-transform:uppercase}.StreamsTile .Spotify-icon{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/a09b1b498841d7aed406b30c474b0355.svg);background-size:cover;display:inline-block;height:15px;margin-left:4px;vertical-align:middle;width:15px}.StreamsTile .Spotify-icon-gray{filter:grayscale(100%)}.StreamsTile-line{height:15px}.StreamsTile .LoadingIndicator{padding:20px}.PlacementsTile{border:1px solid #d9d2d0;border-radius:4px;height:100%;margin-bottom:15px;padding:15px}.PlacementsTile:hover{background-color:#f2f2f2;cursor:pointer}.PlacementsTile-no-pointer-white:hover{background-color:#fff;cursor:auto}.PlacementsTile-separator{border-top:1px solid #d9d2d0;margin:10px 0}.PlacementsTile-image-column-inner{background-color:#f2f2f2;background-size:cover;border-radius:3px;height:0;padding:100% 0 0}.PlacementsTile .PlacementsTile-image-column{width:30%}.Engagement-container .PlacementsTile-image-column+.PlacementsTile-column{padding-left:0;width:66.6%}.PlacementsTile-image-placeholder-inner{padding-top:100%;position:relative;width:100%}.PlacementsTile-image-placeholder-inner .Icons-playlist-placeholder{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.PlacementsTile-spotify{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/a09b1b498841d7aed406b30c474b0355.svg);background-size:cover;display:inline-block;height:15px;width:15px}.PlacementsTile-apple-music{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/f4e4fd6dfdb077ae6fef872c5b651523.png);background-size:cover;display:inline-block;height:15px;width:15px}.PlacementsTile-amazon-music{background-image:url(https://cdn.theorchard.io/frontend-source-of-streams/74eeb47a787d5ae8ec8da064750b0921.png);background-size:cover;display:inline-block;height:15px;width:15px}.PlacementsTile-store-title{color:#6d6565;font-weight:500;padding-left:5px;text-transform:capitalize}.PlacementsTile-playlist-title{display:inline-block;font-size:18px;font-weight:500;max-width:100%}.PlacementsTile-playlist-title-link:hover{cursor:pointer}.PlacementsTile-playlist-title-available{display:inline-block;max-width:94%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.PlacementsTile-playlist-title-available:hover{text-decoration:underline}.PlacementsTile-playlist-title-available-nolink{cursor:default;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.PlacementsTile-playlist-title-unavailable{color:#6d6565;font-weight:500}.PlacementsTile-track-title-and-artist{font-size:14px;margin-bottom:0;padding-top:2px}.PlacementsTile-track-title{font-weight:500}.PlacementsTile-artist-name:hover,.PlacementsTile-track-title:hover{cursor:pointer;text-decoration:underline}.PlacementsTile-followers-unavailable{color:#a8a0a0}.PlacementsTile-info-column.col-xs-4{padding:0 5px}.PlacementsTile-info-column:first-child.col-xs-4{padding-left:15px}.PlacementsTile-info-heading{color:#a8a0a0;font-weight:500;margin-bottom:0;text-transform:uppercase}.PlacementsTile-info-value{font-size:14px;font-weight:500;text-transform:uppercase}.PlacementsTile-info-value-not-applicable,.PlacementsTile-info-value-unavailable{color:#a8a0a0;font-weight:400}.PlacementsTile-loader{border-top:1px solid #8b8b8b;display:inline-block;margin:6px 0;width:40px}.PlacementsTile-loader-playlist{border-top-width:2px;width:80px}.PlacementsTile-loader-followers{margin:8px 0;width:15px}.PlacementsTileSas,.PlacementsTileSas:hover{background-color:#fff}.TopPlacements{min-height:270px;padding-top:15px}.TopPlacements-lowered{padding-top:33px}.TopPlacements-row{display:flex;flex-wrap:wrap}.TopPlacements-row:after,.TopPlacements-row:before{content:normal}.TopPlacements-column{display:flex;flex-direction:column}.TopPlacements-column:first-child{padding-right:7px}.TopPlacements-column:last-child{padding-left:8px}.TopPlacements-no-data{min-height:320px;padding-top:110px;text-align:center}.TopPlacements-no-data-header{color:#a8a0a0;font-size:18px}.TopPlacements-no-data-paragraph{color:#a8a0a0;font-size:14px;margin:10px auto;max-width:335px}.TopPlacements-heading-paragraph{font-weight:400;margin-bottom:17px!important;margin-top:0}.TopPlacements-separator{border-top:1px solid #d9d2d0}.TopPlacements .Icons-info{vertical-align:middle}.TopPlacements .LoadingIndicator{min-height:450px}.TopPlacements-stores{color:#a8a0a0;font-size:10px;margin-left:10px;padding:10px 0;text-transform:uppercase}.Engagement-container{margin:0 auto;min-width:991px}@media (min-width:768px){.Engagement-container{width:750px}}@media (min-width:992px){.Engagement-container{width:970px}}@media (min-width:1200px){.Engagement-container{width:1170px}}.Engagement-container h1,.Engagement-container h2,.Engagement-container h3{margin:11px 0 0}.Engagement-container h4{margin-bottom:0;margin-top:17px}.Engagement-container .row{margin-left:-15px;margin-right:-15px}.Engagement-container .btn:active:focus{outline:none}.Engagement-container .col-xs-6{width:50%}.Engagement-container .col-xs-4{width:33.3%}.Engagement-container .col-xs-8{width:66.6%}.Engagement-container .col-xs-12{width:100%}.Engagement-container .col-xs-4,.Engagement-container .col-xs-6,.Engagement-container .col-xs-8,.Engagement-container .col-xs-12{float:left;min-height:1px;padding-left:15px;padding-right:15px;position:relative}.Engagement-container .pagination{border-radius:4px;display:inline-block;margin:20px 0;padding-left:0}.Engagement-container .pagination>li{display:inline}.Engagement-container .Pagination-small ul.pagination li>a{padding:5px 10px}"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 4867
        },
        "cache": {},
        "timings": {
          "blocked": 2.758000108100474,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.34999999999999987,
          "wait": 208.75200004776568,
          "receive": 6.824999931268394,
          "_blocked_queueing": 1.2220001081004739
        },
        "serverIPAddress": "99.84.32.49",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 796843
              }
            ],
            "parent": {
              "description": "Promise.then",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 796615
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 799437
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908180
                },
                {
                  "functionName": "Cu",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908329
                },
                {
                  "functionName": "ys",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893191
                },
                {
                  "functionName": "ps",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893116
                },
                {
                  "functionName": "as",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1890464
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848906
                },
                {
                  "functionName": "t.unstable_runWithPriority",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8726
                },
                {
                  "functionName": "Wo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848615
                },
                {
                  "functionName": "Qo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848851
                },
                {
                  "functionName": "Go",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848786
                },
                {
                  "functionName": "es",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1887253
                },
                {
                  "functionName": "Si",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1866162
                },
                {
                  "functionName": "s",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145228
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145360
                }
              ],
              "parent": {
                "description": "Promise.then",
                "callFrames": [
                  {
                    "functionName": "",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 145335
                  },
                  {
                    "functionName": "hu",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1880954
                  },
                  {
                    "functionName": "Es",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905686
                  },
                  {
                    "functionName": "t.unstable_runWithPriority",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 8726
                  },
                  {
                    "functionName": "Wo",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1848615
                  },
                  {
                    "functionName": "_s",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905449
                  },
                  {
                    "functionName": "",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905360
                  },
                  {
                    "functionName": "B",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 8108
                  },
                  {
                    "functionName": "O.port1.onmessage",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 6852
                  }
                ],
                "parentId": {
                  "id": "2",
                  "debuggerId": "-6680354813689365837.-4924173665645887486"
                }
              }
            }
          }
        },
        "_priority": "VeryHigh",
        "_resourceType": "stylesheet",
        "connection": "1949487",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.542Z",
        "time": 300.5350000457838,
        "request": {
          "method": "GET",
          "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.theorchard.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "_ga=GA1.2.623441365.1582092609"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "_ga",
              "value": "GA1.2.623441365.1582092609",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "application/x-javascript"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:19 GMT"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Wed, 04 Mar 2020 09:49:50 GMT"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "x-amz-version-id",
              "value": "1MbZ6DifqAjPRDpJnHE_y8.NhJunywFG"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "x-cache",
              "value": "Miss from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 075ecc80ea8e9352008139ab9fd7a593.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C4"
            },
            {
              "name": "x-amz-cf-id",
              "value": "ZU5F29W7dU2EMCu7Jw2LNM_S9UWoL-YRJ8bsL4Jcb8Kg3WGVCazl4Q=="
            }
          ],
          "cookies": [],
          "content": {
            "size": 146619,
            "mimeType": "application/x-javascript",
            "text": "define(\"frontend-source-of-streams\",[\"@orchard/frontend-localization\",\"react\",\"prop-types\",\"react-redux\",\"lodash\",\"superagent\",\"moment\",\"@orchard/frontend-react-components\",\"lodash/fp\",\"redux\",\"redux-thunk\"],(function(e,a,t,r,n,s,i,o,l,c,u){return function(e){function a(a){for(var r,i,o=a[0],l=a[1],c=a[2],d=0,m=[];d<o.length;d++)i=o[d],Object.prototype.hasOwnProperty.call(n,i)&&n[i]&&m.push(n[i][0]),n[i]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);for(u&&u(a);m.length;)m.shift()();return s.push.apply(s,c||[]),t()}function t(){for(var e,a=0;a<s.length;a++){for(var t=s[a],r=!0,o=1;o<t.length;o++){var l=t[o];0!==n[l]&&(r=!1)}r&&(s.splice(a--,1),e=i(i.s=t[0]))}return e}var r={},n={0:0},s=[];function i(a){if(r[a])return r[a].exports;var t=r[a]={i:a,l:!1,exports:{}};return e[a].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=r,i.d=function(e,a,t){i.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:t})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,a){if(1&a&&(e=i(e)),8&a)return e;if(4&a&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&a&&\"string\"!=typeof e)for(var r in e)i.d(t,r,function(a){return e[a]}.bind(null,r));return t},i.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(a,\"a\",a),a},i.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},i.p=\"https://cdn.theorchard.io/frontend-source-of-streams/\";var o=window[\"webpackJsonpfrontend-source-of-streams\"]=window[\"webpackJsonpfrontend-source-of-streams\"]||[],l=o.push.bind(o);o.push=a,o=o.slice();for(var c=0;c<o.length;c++)a(o[c]);var u=l;return s.push([0,1]),t()}({\"/lV4\":function(e,a,t){\"use strict\";t.r(a);var r=t(\"dx34\"),n=t(\"zUGM\"),s=t(\"I6W0\"),i=t(\"vpzt\"),o=t(\"fvR3\"),l=t(\"y1nA\"),c=t(\"5+Dt\"),u=t(\"ndK5\"),d=t(\"anbA\"),m=t(\"ZSgP\"),p=t(\"VIRs\"),h=t(\"UNJD\"),f=t(\"COci\"),g={en:n,\"zh-CN\":s,\"zh-TW\":i,fr:o,de:l,it:c,ja:u,ko:d,pt:m,ru:p,es:h,tr:f};Object(r.registerTranslations)(g),a.default=g},0:function(e,a,t){t(\"/lV4\"),e.exports=t(\"tjUo\")},\"5+Dt\":function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"home\",\"sorrySomethingWentWrong\":\"Scusa, qualcosa è andato storto.\",\"temporaryError\":\"Il server ha incontrato un errore temporaneo. Non preoccuparti, i tuoi dati sono salvi e il team Orchard è stato notificato\",\"tryAgain\":\"Riprova tra alcuni minuti, o ritorna indietro.\"},\"filters\":{\"allStores\":\"Tutti i negozi\",\"apply\":\"Applica\",\"artists\":\"Artisti\",\"cancel\":\"Annulla\",\"checkSpelling\":\"Assicurati che tutte le parole siano scritte correttamente.\",\"customDateRange\":\"Arco di tempo personalizzato\",\"done\":\"Fatto\",\"from\":\"Da\",\"invalidDateRangeDetail\":\"Per favore seleziona un arco di tempo valido\",\"invalidDateRangeDetailOverAYear\":\"Assicurati che l\\'intervallo di date non superi un anno\",\"invalidDateRangeHeader\":\"Per favore seleziona un arco di tempo valido\",\"lastMonth\":\"Ultimi 30 giorni\",\"lastWeek\":\"Ultimi 7 giorni\",\"lastYear\":\"Ultimi 12 mesi\",\"noMatch\":\"La tua ricerca ‘{query}’ non corrisponde a nessun {searchName}.\",\"oneMonth\":\"1 mese\",\"oneWeek\":\"Una settimana\",\"oneYear\":\"1 anno\",\"releaseDateLabel\":\"Data release\",\"releaseNameLabel\":\"Nome release\",\"searchArtistsPlaceholder\":\"Cerca artisti per nome\",\"searchError\":\"Non è possibile recuperare i risultati della ricerca\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"Cerca tracce per nome, artista, o ISRC\",\"temporaryError\":\"Il server ha incontrato un errore temporaneo. Non preoccuparti, i tuoi dati sono salvi e il team Orchard è stato notificato\",\"to\":\"A\",\"tracks\":\"Tracce\",\"tryAgain\":\"Riprova tra alcuni minuti, o ritorna indietro.\"},\"graph\":{\"dataUnavailable\":\"Dati non disponibili\",\"noData\":\"Non ci sono dati streaming per il periodo selezionato\"},\"placements\":{\"artist\":\"Artista\",\"artistName\":\"Nome Artista\",\"author\":\"Curatore\",\"dateAdded\":\"Data di inserimento\",\"followers\":\"Follower\",\"headingForMonth\":\"Aggiunte alle playlist più popolari dell\\'ultimo mese\",\"headingForWeek\":\"Aggiunte alle playlist più popolari dell\\'ultima settimana\",\"headingTooltip\":\"Mostriamo solo le playlist che hanno generato 100+ stream per le tue canzoni nell\\'arco di tempo selezionato.\",\"headingWithDate\":\"{placements} aggiunte il {date}\",\"noData\":\"Non ci sono dati streaming per il periodo selezionato\",\"notApplicable\":\"Non applicabile\",\"placedOn\":\"Aggiunto a\",\"playlistTitle\":\"Titolo Playlist\",\"store\":\"Negozio\",\"stores\":\"Fonte: {storeNames}\",\"streams\":\"Stream\",\"track\":\"Traccia\",\"trackName\":\"Nome traccia\",\"unavailable\":\"Non disponibile\"},\"streamsSummary\":{\"activeDiscovery\":\"Ricerca attiva\",\"activeDiscoveryTooltip\":\"Stream dalle fonti ricercate più attivamente dagli ascoltatori, come le pagine degli artisti, le pagine degli album e le pagine dei risultati di ricerca.\",\"heading\":\"Modalità degli ascolti\",\"headingHint\":\"nuove aggiunte per questo periodo\",\"listenersCollection\":\"Collezione dell\\'ascoltatore\",\"listenersCollectionTooltip\":\"Stream dalle librerie personali degli ascoltatori, dalle loro raccolte salvate o dalle playlist di loro creazione.\",\"ofTotalStreams\":\"degli stream totali\",\"passiveDiscovery\":\"Ricerca passiva\",\"passiveDiscoveryTooltip\":\"Stream da fonti trovate in maniera passiva come, stazioni radio, playlist editoriali, e altre playlist.\",\"savesToCollection\":\"Salva nella collezione\",\"skipRate\":\"Tasso di skip\",\"streams\":\"Stream\",\"totalStreams\":\"Totale stream\"},\"topPlacements\":{\"dateAdded\":\"Data di inserimento\",\"followers\":\"Follower\",\"heading\":\"Migliori {count} di {amount} aggiunte\",\"headingNoData\":\"Migliori aggiunte\",\"headingParagraph\":\"Queste aggiunte hanno generato il maggior numero di stream per {track} in questo periodo.\",\"headingParagraphNoTrack\":\"Queste aggiunte hanno generato il maggior numero di stream per la tua musica in questo periodo.\",\"headingTooltip\":\"Mostriamo solo le playlist che hanno generato 100+ stream per le tue canzoni nell\\'arco di tempo selezionato.\",\"noDataHeading\":\"Non ci sono migliori aggiunte in questo periodo.\",\"noDataParagraph\":\"Le aggiunte compariranno qui quando avranno generato 100+ stream per le tue tracce nell\\'arco di tempo selezionato.\",\"notApplicable\":\"Non applicabile\",\"stores\":\"Fonte: {storeNames}\",\"streams\":\"Stream\",\"unavailable\":\"Non disponibile\"}}')},\"5psM\":function(e,a){e.exports=l},COci:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"ana sayfa\",\"sorrySomethingWentWrong\":\"Üzgünüz, bir hata oluştu.\",\"temporaryError\":\"Sunucu geçici bir hata ile karşılaştı. Konuyla ilgili gerekli The Orchard birimi bilgilendirilmiştir.\",\"tryAgain\":\"Birkaç dakika içinde tekrar deneyin veya geri dönün\"},\"filters\":{\"allStores\":\"Tüm Mağazalar\",\"apply\":\"Uygula\",\"artists\":\"Sanatçılar\",\"cancel\":\"İptal \",\"checkSpelling\":\"Tüm kelimelerin doğru yazıldığından emin olun.\",\"customDateRange\":\"Özel Tarih Aralığı\",\"done\":\"Bitti\",\"from\":\"Başlangıç\",\"invalidDateRangeDetail\":\"Başlangıç tarihini bitiş tarihinden önceki bir tarih olarak belirlediğinizden emin olun. \",\"invalidDateRangeDetailOverAYear\":\"Lütfen veri aralığının bir yıldan fazla olmadığından emin olun.\",\"invalidDateRangeHeader\":\"Lütfen geçerli bir tarih aralığı seçin.\",\"lastMonth\":\"Son 30 Gün\",\"lastWeek\":\"Son 7 Gün\",\"lastYear\":\"Son 12 Ay\",\"noMatch\":\"‘{query}’ aramanız hiçbir {searchName} ile eşleşmiyor.\",\"oneMonth\":\"1 ay\",\"oneWeek\":\"1 hafta\",\"oneYear\":\"1 yıl\",\"releaseDateLabel\":\"Satış Tarihi\",\"releaseNameLabel\":\"Ürün Adı\",\"searchArtistsPlaceholder\":\"Sanatçı adı ile sanatçı ara\",\"searchError\":\"Arama sonuçlarına ulaşılamıyor.\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"Parça adı, sanatçı adı veya ISRC ile arayın\",\"temporaryError\":\"Sunucu geçici bir hata ile karşılaştı. Konuyla ilgili gerekli The Orchard birimi bilgilendirilmiştir.\",\"to\":\"Bitiş\",\"tracks\":\"Parçalar\",\"tryAgain\":\"Birkaç dakika içinde tekrar deneyin veya geri dönün\"},\"graph\":{\"dataUnavailable\":\"Data Kullanılamıyor\",\"noData\":\"Seçili zaman aralığında oluşmuş bir dinlenme (streaming) verisi yok.\"},\"placements\":{\"artist\":\"Sanatçı\",\"artistName\":\"Sanatçı Adı\",\"author\":\"Küratör\",\"dateAdded\":\"Eklenme Tarihi\",\"followers\":\"Takipçi\",\"headingForMonth\":\"Geçen ay en yüksek performans gösteren çalma listesi konumlandırmaları\",\"headingForWeek\":\"Geçen hafta en yüksek performans gösteren çalma listesi konumlandırmaları\",\"headingTooltip\":\"Yalnızca seçili dönemde parçalarınız için 100+ dinlenme yaratan çalma listeleri görüntülenir.\",\"headingWithDate\":\"{date} tarihinde toplam {placements} konumlandırma\",\"noData\":\"Seçili zaman aralığında oluşmuş bir dinlenme (streaming) verisi yok.\",\"notApplicable\":\"Uygulanamaz\",\"placedOn\":\"Konumlandırıldığı Liste:\",\"playlistTitle\":\"Çalma Listesi Adı\",\"store\":\"Mağaza\",\"stores\":\"Kaynak: {storeNames}\",\"streams\":\"Dinleme\",\"track\":\"Parça\",\"trackName\":\"Parça Adı\",\"unavailable\":\"Erişilebilir değil.\"},\"streamsSummary\":{\"activeDiscovery\":\"Aktif Keşif\",\"activeDiscoveryTooltip\":\"Sanatçı ve albüm sayfaları, arama sonuçları gibi kullanıcıların aktif olarak ulaştığı ortamlardan kaynaklanan dinlemeler.\",\"heading\":\"Nasıl Dinlediler\",\"headingHint\":\"bu dönemdeki yeni konumlandırmalar\",\"listenersCollection\":\"Dinleyicinin Koleksiyonu\",\"listenersCollectionTooltip\":\"Kullanıcıların kendi kütüphanelerinden, kayıtlı koleksiyonlarından ve kişisel çalma listelerinden kaynaklanan dinlemeler.\",\"ofTotalStreams\":\"Toplam Dinlemelerin\",\"passiveDiscovery\":\"Pasif Keşif\",\"passiveDiscoveryTooltip\":\"Dinleyiciler tarafından daha pasif biçimde keşfedilen, radyolar, editöryel çalma listeleri ve başka kullanıcıların çalma listelerinden kaynaklanan dinlemeler.\",\"savesToCollection\":\"Koleksiyon\\'a Kaydedilir\",\"skipRate\":\"Atlama Oranı\",\"streams\":\"Dinleme\",\"totalStreams\":\"Toplam Dinlenmeler\"},\"topPlacements\":{\"dateAdded\":\"Eklenme Tarihi\",\"followers\":\"Takipçi\",\"heading\":\"Toplam {amount} konumlandırmadan en başarılı {count} liste\",\"headingNoData\":\"Top Konumlandırmalar\",\"headingParagraph\":\"{track} için en çok dinlemeyi bu konumlandırmalar üretti.\",\"headingParagraphNoTrack\":\"Müziğiniz için en çok dinleme bu konumlandırmalar yoluyla oluştu.\",\"headingTooltip\":\"Yalnızca seçili dönemde parçalarınız için 100+ dinlenme yaratan çalma listeleri görüntülenir.\",\"noDataHeading\":\"Bu dönemde yeni bir konumlandırma yok\",\"noDataParagraph\":\"Seçili zaman aralığında parçalarınız için 100\\'den fazla dinlenme yaratan konumlandırmalar burada görüntülenir.\",\"notApplicable\":\"Uygulanamaz\",\"stores\":\"Kaynak: {mağazaAdları}\",\"streams\":\"Dinleme\",\"unavailable\":\"Erişilebilir değil.\"}}')},I6W0:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"主页\",\"sorrySomethingWentWrong\":\"抱歉，出错了。\",\"temporaryError\":\"服务器暂时出错。不用担心，您的数据安全且 The Orchard 团队已知悉。\",\"tryAgain\":\"几分钟后重新尝试，或返回此页\"},\"filters\":{\"allStores\":\"所有商店\",\"apply\":\"应用\",\"artists\":\"艺术家\",\"cancel\":\"取消\",\"checkSpelling\":\"确保所有词语拼写准确\",\"customDateRange\":\"自定义时间段\",\"done\":\"完成\",\"from\":\"自\",\"invalidDateRangeDetail\":\"确保起始日期早于结束日期。\",\"invalidDateRangeDetailOverAYear\":\"确保日期范围不超过一年。\",\"invalidDateRangeHeader\":\"请选择有效的时间段。\",\"lastMonth\":\"过去 30 天\",\"lastWeek\":\"过去 7 天\",\"lastYear\":\"过去 12 个月\",\"noMatch\":\"您的搜索\\'{query}\\'不匹配任何{searchName}\",\"oneMonth\":\"一个月\",\"oneWeek\":\"一周\",\"oneYear\":\"1 年\",\"releaseDateLabel\":\"发布日期\",\"releaseNameLabel\":\"发布名称\",\"searchArtistsPlaceholder\":\"按艺术家姓名搜索艺术家\",\"searchError\":\"无法显示搜索结果\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"根据曲目名、艺术家或 ISRC 搜索曲目\",\"temporaryError\":\"服务器暂时出错。不用担心，您的数据安全且 The Orchard 团队已知悉。\",\"to\":\"至\",\"tracks\":\"曲目\",\"tryAgain\":\"几分钟后重新尝试，或返回此页\"},\"graph\":{\"dataUnavailable\":\"日期不可用\",\"noData\":\"选定时段内无播放数据。\"},\"placements\":{\"artist\":\"艺术家\",\"artistName\":\"艺术家姓名\",\"author\":\"策划者\",\"dateAdded\":\"添加日期\",\"followers\":\"关注\",\"headingForMonth\":\"上月表现最佳歌单收录\",\"headingForWeek\":\"上周表现最佳歌单收录\",\"headingTooltip\":\"我们只显示在选定的时间范围内，为您的曲目带来至少 100 次播放的歌单。\",\"headingWithDate\":\"{placements} 收录于{date}\",\"noData\":\"选定时段内无播放数据。\",\"notApplicable\":\"不适用\",\"placedOn\":\"收录在\",\"playlistTitle\":\"歌单标题\",\"store\":\"商店\",\"stores\":\"来源：{storeNames}\",\"streams\":\"播放\",\"track\":\"曲目\",\"trackName\":\"曲目名\",\"unavailable\":\"无法使用\"},\"streamsSummary\":{\"activeDiscovery\":\"主动发现\",\"activeDiscoveryTooltip\":\"从听众主动获取的来源中产生的播放，例如艺术家主页、专辑页和搜索结果页\",\"heading\":\"他们如何收听\",\"headingHint\":\"该时段内的新歌单收录\",\"listenersCollection\":\"听众的收藏\",\"listenersCollectionTooltip\":\"来自听众私人曲库、保存收藏或自建歌单的播放。\",\"ofTotalStreams\":\"占总播放量\",\"passiveDiscovery\":\"被动发现\",\"passiveDiscoveryTooltip\":\"从听众被动发现的来源中产生的播放，例如电台、编辑歌单和其他歌单。\",\"savesToCollection\":\"保存至收藏\",\"skipRate\":\"跳过率\",\"streams\":\"播放\",\"totalStreams\":\"总计播放\"},\"topPlacements\":{\"dateAdded\":\"添加日期\",\"followers\":\"关注\",\"heading\":\"{amount}次歌单收录中的{count}佳\",\"headingNoData\":\"最佳歌单收录\",\"headingParagraph\":\"这些歌单收录在这一时段内为{track}带来最多播放次数。\",\"headingParagraphNoTrack\":\"这些歌单收录在这一时段内为您的音乐带来最多播放次数。\",\"headingTooltip\":\"我们只显示在选定的时间范围内，为您的曲目带来至少 100 次播放的歌单。\",\"noDataHeading\":\"该时段内无表现最佳歌单收录\",\"noDataParagraph\":\"此处将显示在选定的时间段内，为您的曲目带来至少 100 次播放的歌单收录。\",\"notApplicable\":\"不适用\",\"stores\":\"来源：{storeNames}\",\"streams\":\"播放\",\"unavailable\":\"无法使用\"}}')},QdDn:function(e,a,t){},Rjr8:function(e,a){e.exports=o},UNJD:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"inicio\",\"sorrySomethingWentWrong\":\"Lo sentimos, algo no ha ido bien.\",\"temporaryError\":\"El servidor ha encontrado un error temporal. No te preocupes, tus datos están a salvo y el equipo de The Orchard ha sido avisado.\",\"tryAgain\":\"Inténtalo de nuevo en unos minutos\"},\"filters\":{\"allStores\":\"Todas las Tiendas\",\"apply\":\"Aplica\",\"artists\":\"Artistas\",\"cancel\":\"Cancelar\",\"checkSpelling\":\"Asegúrate de que has escrito las palabras correctamente.\",\"customDateRange\":\"Rango Personalizado\",\"done\":\"Listo\",\"from\":\"Del\",\"invalidDateRangeDetail\":\"Asegúrese de que la fecha inicial sea anterior a la fecha final.\",\"invalidDateRangeDetailOverAYear\":\"Asegúrate de que el rango no es mayor a un año.\",\"invalidDateRangeHeader\":\"Por favor, seleccione un rango de fechas válido.\",\"lastMonth\":\"Últimos 30 Días\",\"lastWeek\":\"Últimos 7 Días\",\"lastYear\":\"Últimos 12 Meses\",\"noMatch\":\"Su búsqueda \\'{query}\\' no corresponde a ningún {searchName}.\",\"oneMonth\":\"1 mes\",\"oneWeek\":\"1 semana\",\"oneYear\":\"1 año\",\"releaseDateLabel\":\"Fecha de Lanzamiento\",\"releaseNameLabel\":\"Título del Lanzamiento\",\"searchArtistsPlaceholder\":\"Buscar artistas por nombre de artista\",\"searchError\":\"Imposible recuperar resultados de búsqueda\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"Buscar pistas por nombre de pista, artista o ISRC\",\"temporaryError\":\"El servidor ha encontrado un error temporal. No te preocupes, tus datos están a salvo y el equipo de The Orchard ha sido avisado.\",\"to\":\"Al\",\"tracks\":\"Pistas\",\"tryAgain\":\"Inténtalo de nuevo en unos minutos\"},\"graph\":{\"dataUnavailable\":\"Información no disponible\",\"noData\":\"No hay datos de streaming en el período seleccionado.\"},\"placements\":{\"artist\":\"Artista\",\"artistName\":\"Nombre del Artista\",\"author\":\"Curador\",\"dateAdded\":\"Fecha añadida\",\"followers\":\"Seguidores\",\"headingForMonth\":\"Top posicionamientos en playlists en el último mes\",\"headingForWeek\":\"Top posicionamientos en playlists en la última semana\",\"headingTooltip\":\"Solo se muestran playlists que han generado 100+ streams para tus track(s) en el periodo seleccionado\",\"headingWithDate\":\"{placements} posicionamiento(s) en {date}\\\\n\",\"noData\":\"No hay posicionamientos en playlists en el período seleccionado.\",\"notApplicable\":\"No Relevante\",\"placedOn\":\"Posicionado en\",\"playlistTitle\":\"Título de Playlist\",\"store\":\"Servicio\",\"stores\":\"Fuente: {storeNames}\",\"streams\":\"Streams\",\"track\":\"Pista\",\"trackName\":\"Nombre de Track\",\"unavailable\":\"No disponible\"},\"streamsSummary\":{\"activeDiscovery\":\"Descubrimiento Activo\",\"activeDiscoveryTooltip\":\"Streams que provienen de las fuentes más buscadas por los oyentes, como páginas de artista, páginas de álbum o resultados de búsqueda.\",\"heading\":\"Cómo Han Escuchado\",\"headingHint\":\"nueva(s) ubicación(es) para este período\",\"listenersCollection\":\"Colección del Usuario\",\"listenersCollectionTooltip\":\"Streams de los oyentes de bibliotecas personales, colecciones guardadas o playlist creadas por ellos mismos.\",\"ofTotalStreams\":\"del Total de Streams\",\"passiveDiscovery\":\"Descubrimiento Pasivo\",\"passiveDiscoveryTooltip\":\"Streams que provienen de fuentes descubiertas de forma pasiva por los usuarios, tales como estaciones de radio, playlists editoriales y playlists de otros.\",\"savesToCollection\":\"Guardados en la colección\",\"skipRate\":\"Skip Rate\",\"streams\":\"Streams\",\"totalStreams\":\"Streams Totales\"},\"topPlacements\":{\"dateAdded\":\"Fecha añadida\",\"followers\":\"Seguidores\",\"heading\":\"Top {count} de {amount} Posicionamientos\",\"headingNoData\":\"Mejores posicionamientos\",\"headingParagraph\":\"Estos posicionamienos generaron el mayor número de streams para esta track en este periodo.\",\"headingParagraphNoTrack\":\"Estos son los posicionamientos que mayor número de streams te han generado durante este periodo.\",\"headingTooltip\":\"Solo se muestran playlists que han generado 100+ streams para tus track(s) en el periodo seleccionado\",\"noDataHeading\":\"Ningún posicionamiento top para este periodo\",\"noDataParagraph\":\"Los posiocionamientos aparecerá siempre y cuando se generen más de 100 de la track en el periodo de tiempo seleccionado\",\"notApplicable\":\"No Relevante\",\"stores\":\"Fuente: {storeNames}\",\"streams\":\"Streams\",\"unavailable\":\"No disponible\"}}')},VIRs:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"Главная\",\"sorrySomethingWentWrong\":\"Извините, что-то пошло не так.\",\"temporaryError\":\"На сервере произошла временная ошибка.  Не волнуйтесь, ваши данные в безопасности, и команда The Orchard получила уведомление.\",\"tryAgain\":\"Повторите попытку через несколько минут или вернитесь назад.\"},\"filters\":{\"allStores\":\"Все магазины\",\"apply\":\"Применить\",\"artists\":\"Исполнители\",\"cancel\":\"Отмена\",\"checkSpelling\":\"Убедись, что все слова написаны правильно.\",\"customDateRange\":\"Свой период\",\"done\":\"Готово\",\"from\":\"От\",\"invalidDateRangeDetail\":\"Убедитесь, что дата «От» идет раньше, чем дата «До»\",\"invalidDateRangeDetailOverAYear\":\"Убедитесь, что выбранный период не превышает год\",\"invalidDateRangeHeader\":\"Пожалуйста, укажите правильный интервал дат.\",\"lastMonth\":\"Последние 30 дней\",\"lastWeek\":\"Последние 7 дней\",\"lastYear\":\"Последние 12 месяцев\",\"noMatch\":\"Запрос ‘{query}’ не соотвествует ни одному результату.\",\"oneMonth\":\"1 месяц\",\"oneWeek\":\"1 неделя\",\"oneYear\":\"1 год\",\"releaseDateLabel\":\"Дата релиза\",\"releaseNameLabel\":\"Название Релиза\",\"searchArtistsPlaceholder\":\"Найти исполнителя по имени\",\"searchError\":\"Невозможно получить результаты поиска\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"Искать треки по названиям треков, исполнителям или ISRC\",\"temporaryError\":\"На сервере произошла временная ошибка.  Не волнуйтесь, ваши данные в безопасности, и команда The Orchard получила уведомление.\",\"to\":\"До\",\"tracks\":\"Треки\",\"tryAgain\":\"Повторите попытку через несколько минут или вернитесь назад.\"},\"graph\":{\"dataUnavailable\":\"Данные недоступны\",\"noData\":\"Нет данных по стримингу за указанный период\"},\"placements\":{\"artist\":\"Исполнитель\",\"artistName\":\"Имя Исполнителя\",\"author\":\"Куратор\",\"dateAdded\":\"Дата Добавления\",\"followers\":\"Подписчики\",\"headingForMonth\":\"Лучшие плейлисты по размещениям за последний месяц\",\"headingForWeek\":\"Лучшие плейлисты по размещениям за последнюю неделю\",\"headingTooltip\":\"Отображаются только плейлисты, собравшие 100+ стримов вашего трека за выбранный период\",\"headingWithDate\":\"{placements} размещений {date}\",\"noData\":\"Нет данных по стримингу за указанный период\",\"notApplicable\":\"Неприменимо\",\"placedOn\":\"Размещено в\",\"playlistTitle\":\"Название Плейлиста\",\"store\":\"Магазин\",\"stores\":\"Источник: {storeNames}\",\"streams\":\"Стримы\",\"track\":\"Трек\",\"trackName\":\"Название Трека\",\"unavailable\":\"Недоступен\"},\"streamsSummary\":{\"activeDiscovery\":\"Активное Открытие\",\"activeDiscoveryTooltip\":\"Стримы из источников, которые слушатели находили активно — из таких, как страницы артистов и альбома и поисковой выдачи.\",\"heading\":\"Как их слушали\",\"headingHint\":\"новое(-ые) размещение(-я) за период\",\"listenersCollection\":\"Коллекция Слушателя\",\"listenersCollectionTooltip\":\"Стримы из личных библиотек, сохраненных коллекций или собственных плейлистов слушателей\",\"ofTotalStreams\":\"от всех стримов\",\"passiveDiscovery\":\"Пассивное Открытие\",\"passiveDiscoveryTooltip\":\"Стримы из источников, обнаруженные слушателями в пассивной манере — из таких, как радиостанции, редакционные плейлисты и другие плейлисты.\",\"savesToCollection\":\"Сохраненное в коллекции\",\"skipRate\":\"Процент пропуска\",\"streams\":\"Стримы\",\"totalStreams\":\"Все стримы\"},\"topPlacements\":{\"dateAdded\":\"Дата Добавления\",\"followers\":\"Подписчики\",\"heading\":\"Топ-{count} из {amount} размещений\",\"headingNoData\":\"Топ-размещения\",\"headingParagraph\":\"Эти размещения принесли больше всего стримов для {track} за период\",\"headingParagraphNoTrack\":\"Эти размещения принесли больше всего стримов для вашей музыки за период\",\"headingTooltip\":\"Отображаются только плейлисты, собравшие 100+ стримов вашего трека за выбранный период\",\"noDataHeading\":\"Нет топ-размещений за период\",\"noDataParagraph\":\"Размещения появятся здесь, когда они соберут 100+ стримов вашего трека(-ов) за указанный период\",\"notApplicable\":\"Неприменимо\",\"stores\":\"Источник: {storeNames}\",\"streams\":\"Стримы\",\"unavailable\":\"Недоступен\"}}')},YLtl:function(e,a){e.exports=n},ZSgP:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"home\",\"sorrySomethingWentWrong\":\"Desculpe, houve um erro.\",\"temporaryError\":\"O servidor apresentou um erro temporário. Não se preocupe, seus dados estão seguros e o time The Orchard já foi notificado.\",\"tryAgain\":\"Tente novamente em alguns minutos ou retorne à página anterior.\"},\"filters\":{\"allStores\":\"Todas as lojas\",\"apply\":\"Aplicar\",\"artists\":\"Artistas\",\"cancel\":\"Cancelar\",\"checkSpelling\":\"Assegure-se de que todas as palavras estão corretas.\",\"customDateRange\":\"Período personalizado\",\"done\":\"Concluir\",\"from\":\"De\",\"invalidDateRangeDetail\":\"Verifique se a data inicial é anterior à data final.\",\"invalidDateRangeDetailOverAYear\":\"Certifique-se de que o período não seja maior que um ano.\",\"invalidDateRangeHeader\":\"Por favor, escolha um período válido.\",\"lastMonth\":\"Últimos 30 dias\",\"lastWeek\":\"Últimos 7 dias\",\"lastYear\":\"Últimos 12 meses\",\"noMatch\":\"Sua pesquisa \\'{query}\\' não encontrou nenhum resultado para {searchName}.\",\"oneMonth\":\"1 mês\",\"oneWeek\":\"1 semana\",\"oneYear\":\"1 ano\",\"releaseDateLabel\":\"Release date\",\"releaseNameLabel\":\"Nome do release\",\"searchArtistsPlaceholder\":\"Pesquisar artistas pelo nome\",\"searchError\":\"Não foi possível recuperar resultado da busca\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"Busque faixas por nome da faixa, artista ou ISRC\",\"temporaryError\":\"O servidor apresentou um erro temporário. Não se preocupe, seus dados estão seguros e o time The Orchard já foi notificado.\",\"to\":\"Até\",\"tracks\":\"Faixas\",\"tryAgain\":\"Tente novamente em alguns minutos ou retorne à página anterior.\"},\"graph\":{\"dataUnavailable\":\"Dados indisponíveis\",\"noData\":\"Não há dados de streaming no período selecionado.\"},\"placements\":{\"artist\":\"Artista\",\"artistName\":\"Nome do Artista\",\"author\":\"Curador\",\"dateAdded\":\"Data de inserção\",\"followers\":\"Seguidores\",\"headingForMonth\":\"Top performances de playlists com inserções no último mês\",\"headingForWeek\":\"Top performances de playlists com inserções na última semana\",\"headingTooltip\":\"Nós só mostramos playlists que geraram mais de 100 streams para sua faixa no período selecionado\",\"headingWithDate\":\"{inserções} inserções em {data}\",\"noData\":\"Não há ocorrências em playlists no período selecionado.\",\"notApplicable\":\"Não Aplicável\",\"placedOn\":\"Inserido em \",\"playlistTitle\":\"Título da playlist\",\"store\":\"Loja\",\"stores\":\"Fonte: {storeNames}\",\"streams\":\"Streams\",\"track\":\"Faixa\",\"trackName\":\"Nome da Faixa\",\"unavailable\":\"Indisponível\"},\"streamsSummary\":{\"activeDiscovery\":\"Descoberta ativa\",\"activeDiscoveryTooltip\":\"Streams de fontes mais ativas, como página de artista, página de álbum e resultado de busca.\",\"heading\":\"Como eles ouviram\",\"headingHint\":\"novas inserções para este período\",\"listenersCollection\":\"Coleção do usuário\",\"listenersCollectionTooltip\":\"Streams gerados na biblioteca dos usuários, coleções salvas ou playlists criadas pelo usuário.\",\"ofTotalStreams\":\"do total de streams\",\"passiveDiscovery\":\"Descoberta passiva\",\"passiveDiscoveryTooltip\":\"Streams gerados de forma passiva pelo usuário, como estações de rádio, playlists editoriais e playlists de outros usuários.\",\"savesToCollection\":\"Salva na coleção\",\"skipRate\":\"Taxa de pulo\",\"streams\":\"Streams\",\"totalStreams\":\"Total de streams\"},\"topPlacements\":{\"dateAdded\":\"Data de inserção\",\"followers\":\"Seguidores\",\"heading\":\"Top {count} de {amount} inserções\",\"headingNoData\":\"Top Inserções\",\"headingParagraph\":\"Essas inserções geraram a maior parte dos streams para {track} nesse período.\",\"headingParagraphNoTrack\":\"Essas inserções geraram a maior parte dos streams para sua música nesse período.\",\"headingTooltip\":\"Nós só mostramos playlists que geraram mais de 100 streams para sua faixa no período selecionado\",\"noDataHeading\":\"Não há top inserções para esse período\",\"noDataParagraph\":\"Inserções irão aparecer aqui quando gerarem mais de 100 streams para sua faixa no período selecionado.\",\"notApplicable\":\"Não Aplicável\",\"stores\":\"Fonte: {storeNames}\",\"streams\":\"Streams\",\"unavailable\":\"Indisponível\"}}')},ZSx1:function(e,a){e.exports=u},anbA:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"홈\",\"sorrySomethingWentWrong\":\"죄송합니다. 문제가 발생하였습니다.\",\"temporaryError\":\"서버에 일시적 문제가 발생하였습니다. 오차드 팀에 해당 문제에 대한 안내가 갔으며 데이터는 안전하오니, 걱정하지 않으셔도 됩니다.\",\"tryAgain\":\"몇 분 후에 다시 시도하시거나 이전으로 가세요\"},\"filters\":{\"allStores\":\"모든 판매처\",\"apply\":\"적용하기\",\"artists\":\"아티스트\",\"cancel\":\"취소\",\"checkSpelling\":\"모든 단어의 철자가 맞는지 확인하세요.\",\"customDateRange\":\"범위 설정\",\"done\":\"완료\",\"from\":\"시작\",\"invalidDateRangeDetail\":\"시작 날짜는 종료 날짜보다 반드시 앞서야 합니다.\",\"invalidDateRangeDetailOverAYear\":\"날짜 범위가 1년 이내여야 합니다.\\\\n\",\"invalidDateRangeHeader\":\"유효한 날짜 범위를 선택하세요.\",\"lastMonth\":\"지난 30일\",\"lastWeek\":\"지난 7일\",\"lastYear\":\"지난 12개월\",\"noMatch\":\"‘{query}’ 검색은  {searchName} 결과에 일치하지 않습니다.\",\"oneMonth\":\"한달\",\"oneWeek\":\"일주일\",\"oneYear\":\"1년\",\"releaseDateLabel\":\"발매 일자\",\"releaseNameLabel\":\"발매 이름\",\"searchArtistsPlaceholder\":\"아티스트 이름으로 아티스트 검색\",\"searchError\":\"검색 결과를 불러올 수 없습니다\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"트랙 명, 아티스트, ISRC로 트랙 검색\",\"temporaryError\":\"서버에 일시적 문제가 발생하였습니다. 오차드 팀에 해당 문제에 대한 안내가 갔으며 데이터는 안전하오니, 걱정하지 않으셔도 됩니다.\",\"to\":\"종료\",\"tracks\":\"트랙\",\"tryAgain\":\"몇 분 후에 다시 시도하시거나 이전으로 가세요\"},\"graph\":{\"dataUnavailable\":\"데이터 이용 불가\",\"noData\":\"선택된 기간에 스트리밍 데이터가 없습니다.\"},\"placements\":{\"artist\":\"아티스트\",\"artistName\":\"아티스트 이름\",\"author\":\"큐레이터\",\"dateAdded\":\"추가된 날짜\",\"followers\":\"팔로워\",\"headingForMonth\":\"지난달 성적이 가장 좋았던 플레이리스트 배치\",\"headingForWeek\":\"지난주 성적이 가장 좋았던 플레이리스트 배치\",\"headingTooltip\":\"선택된 기간 내에 당신 트랙의 스트림을 100건 이상 발생시킨 플레이리스트만 표시됩니다\",\"headingWithDate\":\"{placements}에 배치(들) {date}\",\"noData\":\"선택된 기간에 스트리밍 데이터가 없습니다.\",\"notApplicable\":\"해당사항 없음\",\"placedOn\":\"타이틀 노출 채널\",\"playlistTitle\":\"플레이리스트 타이틀\",\"store\":\"서비스\",\"stores\":\"소스: {storeNames}\",\"streams\":\"스트림\",\"track\":\"트랙\",\"trackName\":\"트랙 이름\",\"unavailable\":\"제공할 수 없음\"},\"streamsSummary\":{\"activeDiscovery\":\"능동적인 발견\",\"activeDiscoveryTooltip\":\"아티스트 페이지, 앨범 페이지, 그리고 검색 결과 페이지와 같이 청취자들이 더 능동적으로 찾은 스트림의 소스.\",\"heading\":\"청취 경로\",\"headingHint\":\"이 기간에 대한 신규 배치\",\"listenersCollection\":\"청취자 컬렉션\",\"listenersCollectionTooltip\":\"개인 라이브러리, 저장된 컬렉션, 또는 스스로 만든 플레이스트에서의 스트림.\",\"ofTotalStreams\":\"총 스트림의\",\"passiveDiscovery\":\"수동적인 발견\",\"passiveDiscoveryTooltip\":\"라디오 방송, 에디토리얼 플레이리스 및 다른 사람의 플레이리스트처럼 청취자가 더 수동적으로 발견한 소스의 스트림\",\"savesToCollection\":\"컬렉션에 저장하기\",\"skipRate\":\"생략 비율\",\"streams\":\"스트림\",\"totalStreams\":\"총 스트림\"},\"topPlacements\":{\"dateAdded\":\"추가된 날짜\",\"followers\":\"팔로워\",\"heading\":\"배치 {count}의 Top {amount}\",\"headingNoData\":\"Top 배치\",\"headingParagraph\":\"다음의 배치들이 이 기간에 {track}의 스트림을 가장 많이 발생시켰습니다.\",\"headingParagraphNoTrack\":\"해당 기간 동안 다음의 배치에서 스트림이 가장 많이 발생하였습니다.\",\"headingTooltip\":\"선택된 기간 내에 당신 트랙의 스트림을 100건 이상 발생시킨 플레이리스트만 표시됩니다\",\"noDataHeading\":\"이 기간에 대한 top 배치가 없습니다\",\"noDataParagraph\":\"선택된 기간 내에 당신의 트랙(들)의 스트림을 100건 이상 발생시킨 배치들은 여기에 표시될 것입니다.\",\"notApplicable\":\"해당사항 없음\",\"stores\":\"소스: {storeNames}\",\"streams\":\"스트림\",\"unavailable\":\"제공할 수 없음\"}}')},cDcd:function(e,t){e.exports=a},dx34:function(a,t){a.exports=e},fvR3:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"accueil\",\"sorrySomethingWentWrong\":\"Désolé, quelque chose s\\'est mal passé.\",\"temporaryError\":\"Le serveur a rencontré une erreur temporaire. Ne vous inquiétez pas, vos données sont en sécurité et l\\'équipe The Orchard a été notifiée.\",\"tryAgain\":\"Réessayez dans quelques minutes ou cliquez sur précédent\"},\"filters\":{\"allStores\":\"Tous les magasins\",\"apply\":\"Appliquer\",\"artists\":\"Artistes\",\"cancel\":\"Annuler\",\"checkSpelling\":\"Assurez que tous les mots sont écrits correctement.\",\"customDateRange\":\"Plage personnalisée\",\"done\":\"Terminé\",\"from\":\"De\",\"invalidDateRangeDetail\":\"Assurez-vous que la date de début soit antérieure à la date de fin.\",\"invalidDateRangeDetailOverAYear\":\"Assurez-vous que la plage de dates n\\'est pas supérieure à un an.\",\"invalidDateRangeHeader\":\"Veuillez sélectionner une plage de dates valide.\",\"lastMonth\":\"Les 30 derniers jours\",\"lastWeek\":\"Les 7 derniers jours\",\"lastYear\":\"Les 12 derniers mois\",\"noMatch\":\"Votre recherche ‘{query}’ ne correspond à aucun {searchName}.\",\"oneMonth\":\"1 mois\",\"oneWeek\":\"1 semaine\",\"oneYear\":\"1 an\",\"releaseDateLabel\":\"Date de sortie\",\"releaseNameLabel\":\"Nom de la sortie\",\"searchArtistsPlaceholder\":\"Rechercher des artistes par nom d\\'artiste\",\"searchError\":\"Impossible de récupérer les résultats de la recherche\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"Rechercher des titres par nom de titre, artiste ou ISRC\",\"temporaryError\":\"Le serveur a rencontré une erreur temporaire. Ne vous inquiétez pas, vos données sont en sécurité et l\\'équipe The Orchard a été notifiée.\",\"to\":\"À\",\"tracks\":\"Morceaux\",\"tryAgain\":\"Réessayez dans quelques minutes ou cliquez sur précédent\"},\"graph\":{\"dataUnavailable\":\"Données indisponibles\",\"noData\":\"Pas de données streaming sur la période sélectionnée.\"},\"placements\":{\"artist\":\"Artiste\",\"artistName\":\"Nom d\\'artiste\",\"author\":\"Programmateur\",\"dateAdded\":\"Date d\\'ajout\",\"followers\":\"Suiveurs\",\"headingForMonth\":\"Placements de playlist les plus performants dans le dernier mois\",\"headingForWeek\":\"Placements de playlist les plus performants dans la dernière semaine\",\"headingTooltip\":\"Nous montrons uniquement des playlists qui ont généré plus de 100 streams sur vos titres dans la période sélectionnée\",\"headingWithDate\":\"{placements} placement(s) le {date}\",\"noData\":\"Pas de données streaming sur la période sélectionnée.\",\"notApplicable\":\"Non applicable\",\"placedOn\":\"Placé sur\",\"playlistTitle\":\"Nom de la playlist\",\"store\":\"Magasin\",\"stores\":\"Source : {storeNames}\",\"streams\":\"Streams\",\"track\":\"Titre\",\"trackName\":\"Nom de morceau\",\"unavailable\":\"Indisponible\"},\"streamsSummary\":{\"activeDiscovery\":\"Découverte active\",\"activeDiscoveryTooltip\":\"Streams issus de sources plus activement recherchées par les auditeurs, telles que pages artiste, pages album et résultats de recherches.\",\"heading\":\"Comment ils ont écouté\",\"headingHint\":\"nouveau(x) placement(s) pour cette période\",\"listenersCollection\":\"Bibliothèque de l\\'utilisateur\",\"listenersCollectionTooltip\":\"Streams issus des bibliothèques personnelles des auditeurs, de leurs favoris ou playlists personnelles.\",\"ofTotalStreams\":\"des Streams totaux\",\"passiveDiscovery\":\"Découverte passive\",\"passiveDiscoveryTooltip\":\"Streams provenant de sources plus passivement découvertes par les utilisateurs comme les stations de radio, les playlists éditoriales et les playlists d\\'autres utilisateurs.\",\"savesToCollection\":\"Sauvegarder dans ma collection\",\"skipRate\":\"Taux de skip\",\"streams\":\"Streams\",\"totalStreams\":\"Nombre total de flux\"},\"topPlacements\":{\"dateAdded\":\"Date d\\'ajout\",\"followers\":\"Suiveurs\",\"heading\":\"Top {count} sur {amount} Placements\",\"headingNoData\":\"Principais canais\",\"headingParagraph\":\"Ces placements ont générés le plus de streams pour {track} sur cette période.\",\"headingParagraphNoTrack\":\"Ces placements ont générés le plus de streams pour votre musique sur cette période.\",\"headingTooltip\":\"Nous montrons uniquement des playlists qui ont généré plus de 100 streams sur vos titres dans la période sélectionnée\",\"noDataHeading\":\"Pas de Top Placement pour cette période\",\"noDataParagraph\":\"Les Placements apparaîtront ici quand ils génèrent plus de 100 streams pour vos titres sur la période sélectionnée.\",\"notApplicable\":\"Non applicable\",\"stores\":\"Source : {storeNames}\",\"streams\":\"Streams\",\"unavailable\":\"Indisponible\"}}')},h74D:function(e,a){e.exports=r},iHmL:function(e,a){e.exports=s},ndK5:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"ホーム\",\"sorrySomethingWentWrong\":\"申し訳ございません。不具合が発生しました。\",\"temporaryError\":\"サーバーで一時的なエラーが発生しましたが、ご安心ください。データは安全で、The Orchard のチームも通知されています。\",\"tryAgain\":\"数分経ってから再度お試しいただくか、一度戻ってください\"},\"filters\":{\"allStores\":\"すべてのストア\",\"apply\":\"適用\",\"artists\":\"アーティスト\",\"cancel\":\"キャンセル\",\"checkSpelling\":\"誤字脱字がないかご確認ください\",\"customDateRange\":\"期間の設定\",\"done\":\"完了\",\"from\":\"開始日\",\"invalidDateRangeDetail\":\"開始日は終了日よりも前でなくてはいけません。\",\"invalidDateRangeDetailOverAYear\":\"期間が１年間を超えないようにご確認ください。\",\"invalidDateRangeHeader\":\"有効な日付の範囲を選択してください。\",\"lastMonth\":\"過去30日間\",\"lastWeek\":\"過去7日間\",\"lastYear\":\"過去12カ月間\",\"noMatch\":\"検索 ‘ {query}’ に一致する {searchName} はありません\",\"oneMonth\":\"1 ヶ月間\",\"oneWeek\":\"1 週間\",\"oneYear\":\"1 年間\",\"releaseDateLabel\":\"発売日\",\"releaseNameLabel\":\"リリース名\",\"searchArtistsPlaceholder\":\"アーティスト名でアーティストを検索\",\"searchError\":\"検索結果を取得できませんでした\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"トラック名、アーティスト名、または ISRC でトラックを検索\",\"temporaryError\":\"サーバーで一時的なエラーが発生しました\",\"to\":\"終了日\",\"tracks\":\"トラック\",\"tryAgain\":\"数分経ってから再度お試しください\"},\"graph\":{\"dataUnavailable\":\"データがありません\",\"noData\":\"選択された期間のストリーミングデータはありません。\"},\"placements\":{\"artist\":\"アーティスト\",\"artistName\":\"アーティスト名\",\"author\":\"キュレーター\",\"dateAdded\":\"追加日\",\"followers\":\"フォロワー\",\"headingForMonth\":\"先月最も再生回数が多かったプレイリスティング\",\"headingForWeek\":\"先週最も再生回数が多かったプレイリスティング\",\"headingTooltip\":\"選択された期間中、あなたのトラックを 100 回以上ストリーミングしたすべてのプレイリスト\",\"headingWithDate\":\"{date} における {placements} のプレイリスティング\",\"noData\":\"選択された期間のストリーミングデータはありません。\",\"notApplicable\":\"該当なし\",\"placedOn\":\"プレイスメント\",\"playlistTitle\":\"プレイリスト・タイトル\",\"store\":\"ストア\",\"stores\":\"ソース: {storeNames}\",\"streams\":\"ストリーミング\",\"track\":\"トラック\",\"trackName\":\"トラック名\",\"unavailable\":\"取得できません\"},\"streamsSummary\":{\"activeDiscovery\":\"アクティブディスカバリー\",\"activeDiscoveryTooltip\":\"リスナーが能動的に聴いたストリーミング数。アーティストページ、アルバムページ、検索結果ページなどから聴かれた回数。\",\"heading\":\"彼らが聞いた方法\",\"headingHint\":\"この期間の新規プレイリスティングはありません\",\"listenersCollection\":\"リスナーコレクション\",\"listenersCollectionTooltip\":\"リスナーのパーソナルライブラリ、保存されたコレクション、リスナー自身で作成したプレイリストからストリーミングされた回数。\",\"ofTotalStreams\":\"のストリーミング合計\",\"passiveDiscovery\":\"パッシブディスカバリー\",\"passiveDiscoveryTooltip\":\"リスナーが受動的に聴いたストリーミング数。エディトリアルのプレイリスト、他人のプレイリストなどから聴かれた回数。\",\"savesToCollection\":\"コレクション保存数\",\"skipRate\":\"スキップレート\",\"streams\":\"ストリーミング\",\"totalStreams\":\"ストリーミング合計\"},\"topPlacements\":{\"dateAdded\":\"追加日\",\"followers\":\"フォロワー\",\"heading\":\"{amount} プレイリスティングのトップ {count}\",\"headingNoData\":\"トップ・プレイリスティング\",\"headingParagraph\":\"この期間中、これらのプレイリスティングが {track} を最もストリーミングさせました。\",\"headingParagraphNoTrack\":\"この期間中、これらのプレイリスティングがあなたの音楽を最もストリーミングさせました。\",\"headingTooltip\":\"選択された期間中、あなたのトラックが 100 回以上ストリーミングされたすべてのプレイリスト\",\"noDataHeading\":\"この期間のトップ・プレイリスティングはありません\",\"noDataParagraph\":\"選択された期間中、あなたのトラックが100 回以上ストリーミングされたプレイリスティングがここに表示されます。\",\"notApplicable\":\"該当なし\",\"stores\":\"ソース: {storeNames}\",\"streams\":\"ストリーミング数\",\"unavailable\":\"取得できません\"}}')},rKB8:function(e,a){e.exports=c},rf6O:function(e,a){e.exports=t},tjUo:function(e,a,t){\"use strict\";t.r(a);var r={};t.r(r),t.d(r,\"chartData\",(function(){return nr})),t.d(r,\"playlistPlacementsData\",(function(){return cr})),t.d(r,\"topPlacementsData\",(function(){return pr})),t.d(r,\"search\",(function(){return vr})),t.d(r,\"filters\",(function(){return Ar}));var n=t(\"lwsE\"),s=t.n(n),i=t(\"W8MJ\"),o=t.n(i),l=t(\"a1gu\"),c=t.n(l),u=t(\"Nsbk\"),d=t.n(u),m=t(\"7W2i\"),p=t.n(m),h=t(\"lSNA\"),f=t.n(h),g=t(\"cDcd\"),v=t.n(g),y=t(\"rf6O\"),b=t.n(y),S=t(\"h74D\"),O=t(\"dx34\"),D=function(){return v.a.createElement(\"div\",{className:\"ErrorState\"},v.a.createElement(\"div\",{className:\"SorryImage\"}),v.a.createElement(\"h2\",null,Object(O.formatMessage)(\"errors.sorrySomethingWentWrong\")),v.a.createElement(\"h4\",{className:\"Message\"},Object(O.formatMessage)(\"errors.temporaryError\")),v.a.createElement(\"h4\",null,Object(O.formatMessage)(\"errors.tryAgain\"),\" \",v.a.createElement(\"a\",{href:\"\".concat(\"/\")},Object(O.formatMessage)(\"errors.homeLink\")),\".\"))},E=t(\"PJYZ\"),T=t.n(E),k=t(\"YLtl\"),P=t(\"LFwo\"),A=t(\"LhCv\"),N=Object(A.a)(),R=t(\"oShl\"),C=t.n(R),M=t(\"iHmL\"),j=t.n(M),L=function e(a,t){return Object(k.isArray)(a)?a.map((function(a){return e(a,t)})):Object(k.isPlainObject)(a)?Object(k.reduce)(a,(function(a,r,n){return a[t(n)]=e(r,t),a}),{}):a},I=function(e){return L(e,k.snakeCase)};function _(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}var w=function(e){function a(e){var t;return s()(this,a),t=c()(this,d()(a).call(this,\"API Error\")),Object.assign(T()(t),e),t}return p()(a,e),a}(C()(Error)),x=function(){var e=window.tokenManager;return e?e.token:\"\"},U=function(e){return function(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?_(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):_(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}({},e,{body:(a=e.body,L(a,k.camelCase))});var a},Y=U,q=function(e){throw function(e){return window.tokenManager&&401===e.status}(e)&&function(e){window.tokenManager.fetchToken().then((function(){e.response.req.send().then(Y).catch((function(e){throw new w(U(e.response))}))}))}(e),new w(U(e.response))},F=function(e,a){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{\"Content-Type\":\"application/json\"};return j.a.get(\"/grass/\".concat(e)).query(a).set({session:x()}).set(t).then(Y).catch(q)},H=t(\"RIqP\"),W=t.n(H),z=t(\"wy2R\"),V=t.n(z),G={APPLE_MUSIC:2,SPOTIFY:2,AMAZON_MUSIC:2},Q={YEAR:\"YEAR\",MONTH:\"MONTH\",WEEK:\"WEEK\",CUSTOM:\"CUSTOM\"},K={YEAR:365,MONTH:30,WEEK:7},B=\"artists\",Z=\"tracks\",J={STREAMS_FROM_PASSIVE_DISCOVERY:\"streamsFromPassiveDiscovery\",STREAMS_FROM_ACTIVE_DISCOVERY:\"streamsFromActiveDiscovery\",STREAMS_FROM_COLLECTION:\"streamsFromCollection\"},X=\"enabled\",$=\"deprecate_legacy_image_url\",ee=\"engagement_deep_linking\",ae=\"engagement_skips_saves\",te=200,re={NOT_LOADED:1,LOADED:2,REQUIRE_RELOAD:3},ne=\"storeids\",se=\"artistids\",ie=\"isrcs\",oe=\"tags\",le=\"period\",ce=\"daterange\",ue=\"metric\",de={WEEK:\"last_7_days\",MONTH:\"\",YEAR:\"last_12_months\",CUSTOM:\"\"},me={DISCOVERY:\"discovery\",SAVES:\"saves\",SKIPS:\"skips\"},pe={saves:\"saves\",skips:\"skips\",discovery:\"\"},he={grey_300:\"#a2a2a2\",listenersCollection:\"#ff893e\",activeDiscovery:\"#577bf2\",passiveDiscovery:\"#42c6ff\",savesToCollection:\"#577bf2\",skipRate:\"#42c6ff\"},fe={APPLE_MUSIC:{id:4,storename:\"Apple Music\",storeid:1,name:\"Apple Music\",className:\"apple-music\"},SPOTIFY:{id:1,storename:\"Spotify\",storeid:286,name:\"Spotify Streams\",className:\"spotify\"},AMAZON_MUSIC:{id:37,storename:\"Amazon Music\",storeid:187,name:\"Amazon Music\",className:\"amazon-music\"}},ge=function(){return!1},ve=ge,ye={hasFeatureFlag:function(){return!1}},be=function(e,a){return ve({featuresToCheck:[e]})&&ye.hasFeatureFlag(e,a)},Se=function(){return be(ee,X)},Oe=function(){return be(ae,X)};function De(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function Ee(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?De(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):De(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var Te=function(e){var a=e;return Oe()&&(a=e.reduce((function(e,a){var t=a;return t.skips=t.skips&&0!==t.skips?t.skips/(t.skips+t.overallNumberOfSpotifyStreams)*100:0,[].concat(W()(e),[t])}),[])),a},ke=function(e){return V.a.utc(e.endDate).diff(V.a.utc(e.startDate),\"days\")>=90},Pe=function(e,a,t){var r=function(e){return e.sort((function(e,a){var t=V.a.utc(e.date).format(\"x\"),r=V.a.utc(a.date).format(\"x\");return t<r?-1:r<t?1:0}))}(e.map((function(e){return Ee({},e)})));return function(e){return e===Q.YEAR}(a)?Te(r.reduce((function(e,a){if(5===V()(a.date).day())return[].concat(W()(e),[a]);if(Object(k.isEmpty)(e))return e;var t=e.pop();return t.overallNumberOfStreams+=a.overallNumberOfStreams,t.overallNumberOfSpotifyStreams+=a.overallNumberOfSpotifyStreams,t.streamsFromActiveDiscovery+=a.streamsFromActiveDiscovery,t.streamsFromCollection+=a.streamsFromCollection,t.streamsFromPassiveDiscovery+=a.streamsFromPassiveDiscovery,Oe()&&(t.skips+=a.skips,t.saves+=a.saves),t.lastDate=a.date,[].concat(W()(e),[t])}),[])):ke(t)?Te(function(e){var a=0;return e.reduce((function(e,t){if(0===a)return a++,[].concat(W()(e),[t]);var r=e.pop();return r.overallNumberOfStreams+=t.overallNumberOfStreams,r.overallNumberOfSpotifyStreams+=t.overallNumberOfSpotifyStreams,r.streamsFromActiveDiscovery+=t.streamsFromActiveDiscovery,r.streamsFromCollection+=t.streamsFromCollection,r.streamsFromPassiveDiscovery+=t.streamsFromPassiveDiscovery,Oe()&&(r.skips+=t.skips,r.saves+=t.saves),r.lastDate=t.date,7===++a&&(a=0),[].concat(W()(e),[r])}),[])}(r)):Te(r)},Ae=function(e,a){return Math.max(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=Object(k.keys)(fe),t=Object(k.intersectionWith)(a,e,(function(e,a){return fe[e].storeid===a}));return Math.max.apply(Math,W()((Object(k.isEmpty)(t)?a:t).map((function(e){return G[e]}))))}(a)-V()().startOf(\"day\").diff(V()(e),\"days\"),0)},Ne=function(e,a){var t=e.startDate,r=e.endDate;return V()(t).subtract(Ae(r,a),\"days\").format(\"YYYY-MM-DD\")},Re=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return V()(e).subtract(Ae(e,a),\"days\").format(\"YYYY-MM-DD\")},Ce=function(e){for(var a=e.startDate,t=e.endDate,r=V()(a);5!==r.day();)r=r.add(1,\"day\").startOf(\"day\");for(var n=V()(t);4!==n.day();)n=n.subtract(1,\"day\").startOf(\"day\");return{startDate:r.format(\"YYYY-MM-DD\"),endDate:n.format(\"YYYY-MM-DD\")}},Me=function(e){var a=e.startDate,t=e.endDate,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n={startDate:Ne({startDate:a,endDate:t},r),endDate:Re(t,r)};return ke(n)?Ce(n):n},je=function(e){var a=e.startDate,t=e.endDate,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return{startDate:Ne({startDate:a,endDate:t},r),endDate:Re(t,r)}},Le=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Me({startDate:V()().startOf(\"day\").subtract(K[e],\"days\").format(\"YYYY-MM-DD\"),endDate:V()().startOf(\"day\").format(\"YYYY-MM-DD\")},a)},Ie=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return je({startDate:V()().startOf(\"day\").subtract(K[e],\"days\").format(\"YYYY-MM-DD\"),endDate:V()().startOf(\"day\").format(\"YYYY-MM-DD\")},a)},_e=function(e,a,t){return I(Ee({fromDate:a.startDate,toDate:a.endDate,stores:e.join(\",\")},t))};function we(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function xe(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?we(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):we(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var Ue=function(e,a){return{type:\"HOVER_CHART_DATE\",date:e,lastDate:a}},Ye=function(e,a){return function(t,r){t(Pa());var n=r().filters,s=n.dateRange,i=n.stores,o=n.period;return t({type:\"REQUEST_CHART_IN_PROGRESS\"}),F(e,_e(i,s,a),{\"Content-Type\":\"application/json\"}).then((function(e){var a=e.body,r=Pe(a.items,o,s);t({type:\"REQUEST_CHART_SUCCESS\",payload:xe({},a,{},function(e){if(Object(k.isEmpty)(e))return{};var a=e[0],t=e.slice(-1)[0],r=a.date;return{lastDate:t.lastDate||t.date,firstDate:r,lastGraphPoint:t.date}}(r),{items:r})})})).catch((function(e){return t(function(e){return{type:\"REQUEST_CHART_ERROR\",error:e.message}}(e))}))}},qe=t(\"QILm\"),Fe=t.n(qe),He=t(\"peh1\"),We=Object(k.curry)((function(e,a){var t=0,r=e.length-1;if(e[r]===a)return r;for(;t<=r;){var n=(t+r)/2|0;if(a>=e[n]&&a<e[n+1])return n;a>e[n]?t=n+1:r=n-1}return-1})),ze=Object(k.curry)((function(e,a,t,r,n,s){var i=s.dateAdded;if(!i)return!1;var o=V()(i).valueOf();if(!(o>=e&&o<=a))return!1;var l=n(o);return!(t&&(!~l||r[l]!==t))})),Ve=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=Number(e),r=Object(k.find)(fe,(function(e){return e.storeid===t}));return r||a},Ge=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=Object(k.keys)(fe),r=Object(k.intersectionWith)(t,e,(function(e,a){return fe[e].storeid===a})),n=Object(k.isEmpty)(r)?t:r;return a?n.map((function(e){return a(fe[e])})):n},Qe=function(e,a,t){return t===fe.SPOTIFY.storeid?a:e},Ke=function(e){return{startDate:Ie(Q.YEAR,e).startDate,endDate:Re(V()().format(\"YYYY-MM-DD\"),e)}},Be=function(e,a){if(!e||!e.length)return!0;for(var t=0;t<e.length;t++){if(a===me.DISCOVERY&&e[t].overallNumberOfStreams>0)return!1;if(a===me.SKIPS&&e[t].skips>0)return!1;if(a===me.SAVES&&e[t].saves>0)return!1}return!0},Ze=function(e){return e.filters},Je=Object(He.createSelector)(Ze,(function(e){var a=e.stores;return Ke(a)})),Xe=function(e){return e.playlistPlacementsData},$e=Object(He.createSelector)(Ze,(function(e){var a=e.artistsOrTracks,t=e.artistIds,r=e.isrcs,n=e.filterIdentifier,s=a===B?t:r;return Object(k.isEmpty)(s)?\"all\":n})),ea=Object(He.createSelector)(Xe,$e,(function(e,a){return Object(k.get)(e[a],\"items\",[])})),aa=Object(He.createSelector)(Xe,$e,(function(e,a){return Object(k.get)(e[a],\"total\")}));function ta(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function ra(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?ta(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ta(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var na=function(e){var a=e.items,t=e.total,r=Object(k.map)(a,(function(e){return null===e.dateAdded?Object(k.omit)(e,[\"dateAdded\"]):e})),n=r.reduce((function(e,a){var t,r,n,s,i,o=(r=(t=a).isrc,n=t.playlistLink,r?\"\".concat(n,\"_\").concat(r):n);if(e[o]){var l=e[o],c=l.playlistTitle,u=l.dateAdded;return ra({},e,f()({},o,ra({},a,{playlistTitle:c||a.playlistTitle,dateAdded:(s=u,i=a.dateAdded,s?i?V()(s)<V()(i)?s:i:s:i),streams:a.streams+e[o].streams})))}return ra({},e,f()({},o,a))}),{});return{items:(r=Object(k.values)(n)).sort((function(e,a){return a.streams-e.streams})),total:t}},sa=function(e){return{type:\"REQUEST_PLAYLIST_METADATA_IN_PROGRESS\",caller:e}},ia=function(e,a,t){return{type:\"REQUEST_PLAYLIST_METADATA_ERROR\",caller:e,placementKey:a,playlistLinks:t}},oa=function(e,a,t,r){return{type:\"REQUEST_PLAYLIST_METADATA_SUCCESS\",caller:e,placementKey:a,payload:t,playlistLinks:r}},la=function(e){var a=e.playlistLink,t=e.image,r=e.storeid,n=e.metadataStatus,s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!!a&&(n!==re.LOADED&&(!t&&(n===re.REQUIRE_RELOAD?s:!!Object(k.includes)([fe.APPLE_MUSIC.storeid,fe.SPOTIFY.storeid,fe.AMAZON_MUSIC.storeid],r)||n===re.NOT_LOADED)))},ca=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(n,s){if(!t){var i=Object(k.reduce)(a,(function(e,a){return la(a,r)?[].concat(W()(e),[a.playlistLink]):e}),[]),o=Object(k.map)(i,(function(e){return\"playlist_links=\".concat(e)}));if(!Object(k.isEmpty)(i)){n(sa(e));var l=$e(s());return F(\"analytics/playlist-metadata/?\".concat(o.join(\"&\"))).then((function(a){var t=a.body;return n(oa(e,l,t,i))})).catch((function(){return n(ia(e,l,i))}))}}}},ua=function(e,a){return{type:\"REQUEST_PLAYLIST_PLACEMENTS_SUCCESS\",payload:f()({},e,{items:(t=a.items,Object(k.map)(t,(function(e){var a=e.trackTitle;return ra({},Fe()(e,[\"trackTitle\"]),{trackName:a})}))),total:a.total})};var t},da=function(e){return{type:\"REQUEST_PLAYLIST_PLACEMENTS_ERROR\",error:e.message}},ma=function(e,a){return a.filters.filterIdentifier===e},pa=function(e,a,t){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return function(t,n){var s=n().filters,i=s.stores,o=s.dateRange,l=s.filterIdentifier;return t({type:\"REQUEST_PLAYLIST_PLACEMENTS_IN_PROGRESS\"}),F(e,_e(i,o,a),ra({\"Content-Type\":\"application/json\"},r)).then((function(e){var a=e.body,r=n();if(ma(l,r)){var s=$e(r);t(ua(s,na(a)))}})).catch((function(e){return t(da(e))}))}},ha=function(e){return{type:\"DISPLAY_PLAYLIST_PLACEMENTS_PAGE\",page:e}},fa=t(\"/Lbd\"),ga=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:e,meta:{analytics:{eventType:fa.EventTypes.track,eventPayload:{event:e,properties:a}}}}},va=function(e){var a,t=(a={},f()(a,Q.YEAR,\"ANALYTICS_ONE_YEAR_FILTER\"),f()(a,Q.MONTH,\"ANALYTICS_ONE_MONTH_FILTER\"),f()(a,Q.WEEK,\"ANALYTICS_ONE_WEEK_FILTER\"),f()(a,Q.CUSTOM,\"ANALYTICS_CUSTOM_DATE_FILTER\"),a)[e]||\"ANALYTICS_ONE_MONTH_FILTER\";return ga(t)},ya=function(){return ga(\"ANALYTICS_PLAYLIST_NAME_LINK\")};Object(P.configureUrlQuery)({history:N,addChangeHandlers:!1});var ba=Object(P.urlReplaceInAction)(\"SET_SELECTED_STORES\",ne,P.UrlQueryParamTypes.numericArray),Sa=Object(P.urlReplaceInAction)(\"SET_SELECTED_ARTISTS\",se,P.UrlQueryParamTypes.numericArray),Oa=Object(P.urlReplaceInAction)(\"SET_SELECTED_TRACKS\",ie,P.UrlQueryParamTypes.array),Da=Object(P.urlReplaceInAction)(\"SET_SELECTED_TAGS\",oe,P.UrlQueryParamTypes.array),Ea=Object(P.urlReplaceInAction)(\"SET_SELECTED_PERIOD\",le,(function(e){return de[e]})),Ta=Object(P.urlReplaceInAction)(\"SET_SELECTED_DATERANGE\",ce,P.UrlQueryParamTypes.array),ka=Object(P.urlReplaceInAction)(\"SET_SELECTED_GRAPH\",ue,(function(e){return pe[e]})),Pa=function(e){return{type:\"FILTER_UPDATE\",payload:e}},Aa=function(){return function(e,a){var t=a().filters,r=t.artistsOrTracks,n=t.isrcs,s=t.artistIds;r===B?(e(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=Object(k.isEmpty)(e)?\"\":e.join(\",\");return Ye(\"analytics/stream-charts/\",xe({},a,{artistIds:t}))}(s)),e(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=Object(k.isEmpty)(e)?{artistIds:\"\",limit:40}:{artistIds:e.join(\",\")};return pa(\"analytics/playlist-placements/\",ra({},a,{},t),e)}(s))):(e(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=Object(k.isEmpty)(e)?\"\":e.join(\",\");return Ye(\"analytics/stream-charts/\",xe({},a,{isrcs:t}))}(n)),e(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=Object(k.isEmpty)(e)?{isrcs:\"\",limit:40}:{isrcs:e.join(\",\")};return pa(\"analytics/playlist-placements/\",ra({},a,{},t),e)}(n)))}},Na=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Pa;return function(t){t(a(e)),t(Aa())}},Ra=function(e){return Se()?ka(e):Pa({selectedGraph:e})},Ca=function(){return{type:\"FILTER_INITILIZATION\"}},Ma=function(e){return{type:\"FILTER_ARTIST_TRACK_SELECT\",selected:e}},ja=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Na;return function(t,r){var n=r().filters.artistsOrTracks,s=e.length;n!==Z&&t(Ma(Z));var i=Object(k.compact)(e.map((function(e){return e.isrc})));Se()?(t(Sa([])),t(Oa(i)),t(Da(e.map((function(e){return e.trackName})))),t(Aa())):t(a({isrcs:i,upcs:s?e.map((function(e){return\"\".concat(e.isrc,\"_\").concat(e.upc)})).join(\",\"):null,tags:e}))}},La=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Na;return function(t,r){r().filters.artistsOrTracks!==B&&t(Ma(B));var n=Object(k.compact)(e.map((function(e){return e.artistId})));Se()?(t(Oa([])),t(Sa(n)),t(Da(e.map((function(e){return e.artistName})))),t(Aa())):t(a({artistIds:n,tags:e}))}},Ia=t(\"TSYQ\"),_a=t.n(Ia),wa=function(e){function a(e){var t;return s()(this,a),t=c()(this,d()(a).call(this,e)),f()(T()(t),\"calculateWidth\",(function(){var e=document.querySelector(\".Engagement-container\"),a=window.getComputedStyle(e,null),r=parseInt(a.width,10),n=parseInt(a.paddingLeft,10),s=parseInt(a.paddingRight,10);t._layout&&t.setState({width:Oe()?r:r-n-s})})),t.state={width:889},t}return p()(a,e),o()(a,[{key:\"UNSAFE_componentWillMount\",value:function(){(0,this.props.dispatch)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ca;return function(a){a(e()),a(Aa())}}())}},{key:\"componentDidMount\",value:function(){this.calculateWidth(),window.addEventListener(\"resize\",this.calculateWidth),window.document.title=\"Engagement | The Orchard\"}},{key:\"componentWillUnmount\",value:function(){window.removeEventListener(\"resize\",this.calculateWidth)}},{key:\"render\",value:function(){var e=this,a=this.props,t=a.chartDataError,r=a.placementsError,n=this.state.width;return t||r?v.a.createElement(D,null):v.a.createElement(\"div\",{className:_a()(\"Layout\",\"Engagement-container\"),ref:function(a){e._layout=a}},v.a.createElement($a,{width:n}),v.a.createElement(lt,{width:n}),v.a.createElement(qt,{width:n}),v.a.createElement(Gt,{width:n}),v.a.createElement(Jt,{width:n}))}}]),a}(g.Component);f()(wa,\"propTypes\",{dispatch:b.a.func.isRequired,chartDataError:b.a.string,placementsError:b.a.string});var xa=Object(S.connect)((function(e){var a=e.chartData,t=e.playlistPlacementsData;return{chartDataError:a.error,placementsError:t.error}}))(wa),Ua=t(\"Rjr8\");function Ya(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function qa(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?Ya(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Ya(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var Fa=function(e){return{type:\"REQUEST_SEARCH_ERROR\",error:e.message}},Ha=function(e){return{type:\"SEARCH_STRING_UPDATE\",searchString:e}},Wa=function(e,a,t){return{payload:{isrc:a,path:e,upc:t},type:\"REQUEST_IMAGE_SUCCESS\"}},za=function(e,a){return{payload:{isrc:e,upc:a},type:\"REQUEST_IMAGE_ERROR\"}},Va=function(e){return function(a,t){var r=t().search.tracks;return Object(k.values)(e).map((function(e){var t=e.isrc,n=e.upc;return!r[t].imageUrl&&(be($,X)?F(\"product/product/upc/\".concat(n)).then((function(e){var r=e.body.productId;return function(e,a,t){return function(r){return F(\"assets/image/product/cover/\".concat(t,\"/location\")).then((function(t){var n=t.text;return r(Wa(n,e,a))}),(function(){return r(za(e,a))}))}}(t,n,r)(a)})):function(e,a){return function(t){return F(\"images/image/\".concat(a,\"/location\")).then((function(r){var n=r.body.path;return t(Wa(n,e,a))}),(function(){return t(za(e,a))}))}}(t,n)(a))}))}},Ga=function(e){return function(a){if(!e)return!0;var t=\"search/api/v1/suggest?context=\".concat(\"WORKSTATION_ANALYTICS_ARTIST\")+\"&token=\".concat(\"c2e996c080a4\")+\"&term=\".concat(e,\"&page_size=30\");return F(t).then((function(e){var t=e.body.results;a({payload:t,type:\"REQUEST_SEARCH_ARTISTS_SUCCESS\"})})).catch((function(e){return a(Fa(e))}))}},Qa=function(e){return function(a){if(!e)return!0;var t=\"search/api/v1/suggest?context=\".concat(\"WORKSTATION_ANALYTICS_ISRC\")+\"&token=\".concat(\"c9047afefcd6\")+\"&term=\".concat(e,\"&page_size=30\")+\"&filter.track_type=music\";return F(t).then((function(e){var t,r=e.body.results,n=(t=r,qa({},Object(k.values)(t).reduce((function(e,a){if(e[a.isrc]){var t=e;return parseInt(a.releaseId,10)<parseInt(e[a.isrc].releaseId,10)&&(t[a.isrc]=a),qa({},t)}return qa({},e,f()({},a.isrc,a))}),{})));a(function(e){return{payload:e,type:\"REQUEST_SEARCH_TRACKS_SUCCESS\"}}(n)),a(Va(n))})).catch((function(e){return a(Fa(e))}))}},Ka=function(e){function a(e){var t;s()(this,a);var r=(t=c()(this,d()(a).call(this,e))).props.dateRange,n=r.startDate,i=r.endDate;return t.state={startDate:n,endDate:i},t}return p()(a,e),o()(a,[{key:\"UNSAFE_componentWillReceiveProps\",value:function(e){var a=e.dateRange,t=a.startDate,r=a.endDate;this.setState({startDate:t,endDate:r})}},{key:\"handleDateRangeSelection\",value:function(){var e=this.state,a=e.startDate,t=e.endDate,r=this.props,n=r.onRequestClose,s=r.onDateRangeSelect;n(),s({startDate:a,endDate:t})}},{key:\"isValidDateRange\",value:function(){var e=this.state,a=e.startDate,t=e.endDate;return!!V()(a).isBefore(V()(t))&&!this.isDateRangeOverAYear()}},{key:\"isDateRangeOverAYear\",value:function(){var e=this.state.startDate,a=this.props.validDateRange;return!!(a&&V()(e)<V()(a.startDate))}},{key:\"renderDateRangeAlert\",value:function(){return this.isDateRangeOverAYear()?v.a.createElement(Ua.Alert,{variant:\"danger\"},v.a.createElement(\"h5\",{className:\"invalid-date-range-header\"},Object(O.formatMessage)(\"filters.invalidDateRangeHeader\")),v.a.createElement(\"p\",null,Object(O.formatMessage)(\"filters.invalidDateRangeDetailOverAYear\"))):v.a.createElement(Ua.Alert,{variant:\"danger\"},v.a.createElement(\"h5\",{className:\"invalid-date-range-header\"},Object(O.formatMessage)(\"filters.invalidDateRangeHeader\")),v.a.createElement(\"p\",null,Object(O.formatMessage)(\"filters.invalidDateRangeDetail\")))}},{key:\"render\",value:function(){var e=this,a=this.props,t=a.className,r=a.headerLabel,n=a.isOpen,s=a.onRequestClose,i=a.validDateRange,o=this.state,l=o.startDate,c=o.endDate;return v.a.createElement(Ua.Modal,{className:_a()(\"DateRangeModal\",t),headerLabel:r,isOpen:n,onRequestClose:s,footer:v.a.createElement(\"div\",null,v.a.createElement(Ua.Button,{className:\"Cancel-button\",type:\"button\",onClick:s},Object(O.formatMessage)(\"filters.cancel\")),v.a.createElement(Ua.Button,{className:\"Done-button\",type:\"button\",variant:\"primary\",onClick:function(){return e.handleDateRangeSelection()},disabled:!this.isValidDateRange()},Object(O.formatMessage)(\"filters.done\"))),zIndex:1e4},!this.isValidDateRange()&&this.renderDateRangeAlert(),v.a.createElement(\"div\",{className:_a()(\"Date-field\",\"Start-date\",{\"date-error\":!this.isValidDateRange()})},v.a.createElement(\"div\",{className:\"Date-field-label\"},Object(O.formatMessage)(\"filters.from\")),v.a.createElement(Ua.DayInput,{onChange:function(a){return e.setState({startDate:a})},focus:n,name:\"start\",value:l,minDate:i.startDate,maxDate:i.endDate,renderTodayButton:!1})),v.a.createElement(\"div\",{className:_a()(\"Date-field\",\"End-date\",{\"date-error\":!this.isValidDateRange()})},v.a.createElement(\"div\",{className:\"Date-field-label\"},Object(O.formatMessage)(\"filters.to\")),v.a.createElement(Ua.DayInput,{onChange:function(a){return e.setState({endDate:a})},focus:!1,name:\"end\",value:c,minDate:i.startDate,maxDate:i.endDate,renderTodayButton:!1})))}}]),a}(g.Component);f()(Ka,\"propTypes\",{dateRange:b.a.shape({startDate:b.a.string.isRequired,endDate:b.a.string.isRequired}).isRequired,validDateRange:b.a.shape({startDate:b.a.string.isRequired,endDate:b.a.string.isRequired}).isRequired,className:b.a.string,headerLabel:b.a.string,isOpen:b.a.bool,onRequestClose:b.a.func.isRequired,onDateRangeSelect:b.a.func.isRequired}),f()(Ka,\"defaultProps\",{isOpen:!1});var Ba=function(e){function a(){var e,t;s()(this,a);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return t=c()(this,(e=d()(a)).call.apply(e,[this].concat(n))),f()(T()(t),\"formatStoresConfig\",(function(e){return t.addAllStoresToStoreList(t.sortAndFormatStores(e))})),f()(T()(t),\"sortAndFormatStores\",(function(e){return Object(k.map)(Object(k.sortBy)(Object(k.values)(e),\"storename\"),t.formatStores)})),f()(T()(t),\"formatStores\",(function(e){return{value:[e.storeid],text:e.storename,className:e.className}})),f()(T()(t),\"addAllStoresToStoreList\",(function(e){var a=Object(k.map)(e,(function(e){return e.value[0]}));return[{text:Object(O.formatMessage)(\"filters.allStores\"),value:a,className:\"all-stores\"}].concat(e)})),f()(T()(t),\"determineButtonRowIndex\",(function(e,a){return e.length>1?0:Object(k.findIndex)(a,(function(a){return a.value[0]===e[0]}),1)})),t}return p()(a,e),o()(a,[{key:\"render\",value:function(){var e=this.props,a=e.availableStores,t=e.onStoreSelect,r=e.selectedStores,n=this.formatStoresConfig(a);return v.a.createElement(Ua.ButtonsRow,{childElements:n,onSelect:t,selectedIndex:this.determineButtonRowIndex(r,n),autoSetWidth:!1,className:\"Filters-switcher\"})}}]),a}(g.Component);f()(Ba,\"propTypes\",{availableStores:b.a.object.isRequired,selectedStores:b.a.array.isRequired,onStoreSelect:b.a.func.isRequired});var Za=Ba,Ja=function(e){return e===Z},Xa=function(e){function a(e){var t;return s()(this,a),t=c()(this,d()(a).call(this,e)),f()(T()(t),\"throttledRequest\",Object(k.throttle)((function(e){var a=t.props,r=a.artistsOrTracks,n=a.dispatch;Ja(r)?n(Qa(e)):n(Ga(e))}),400)),f()(T()(t),\"isPeriodSelected\",(function(e){return e===t.props.period})),f()(T()(t),\"handleStoreSelect\",(function(e){var a=e.value;(0,t.props.dispatch)(function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Aa;return function(t,r){var n=r().filters.dateRange;Oe()&&!e.includes(fe.SPOTIFY.storeid)&&t(Ra(me.DISCOVERY)),Se()?(t(ba(e)),t(Pa({dateRange:je(n,e)}))):t(Pa({stores:e,dateRange:je(n,e)})),t(a())}}(a))})),f()(T()(t),\"handlePeriodDropdownSelect\",(function(e){var a=t.props.dispatch;e&&a(function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Aa;return function(t,r){var n=r().filters.stores;t(va(e)),Se()?(Object(P.replaceInUrlQuery)(ce,\"\"),t(Ea(e)),t(Pa({dateRange:Le(e,n)}))):t(Pa({period:e,dateRange:Le(e,n)})),t(a())}}(e))})),f()(T()(t),\"handleDateRangeSelection\",(function(e){var a=e.startDate,r=e.endDate;(0,t.props.dispatch)(function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Aa;return function(t,r){var n=r().filters.stores;if(Se()){var s=je(e,n);t(Ta([s.startDate,s.endDate])),t(Ea(Q.CUSTOM))}else t(Pa({dateRange:je(e,n),period:Q.CUSTOM}));t(va(Q.CUSTOM)),t(a())}}({startDate:a,endDate:r}))})),f()(T()(t),\"handleDateRangeModalOpen\",(function(){t.setState({customDateRangeModalOpen:!0})})),f()(T()(t),\"handleDateRangeModalClose\",(function(){t.setState({customDateRangeModalOpen:!1})})),f()(T()(t),\"handleSearchStringChanging\",(function(e){(0,t.props.dispatch)(Ha(e)),t.throttledRequest(e)})),f()(T()(t),\"handleSearchRowStringChanging\",(function(e){(0,t.props.dispatch)(Ha(e))})),f()(T()(t),\"handleSearchRequest\",(function(e,a){var r=t.props.dispatch;r(a?Qa(e):Ga(e))})),f()(T()(t),\"searchName\",(function(){var e=t.props.artistsOrTracks;return Ja(e)?\"tracks\":\"artists\"})),f()(T()(t),\"handleSelect\",(function(e,a){return a?t.handleTrackSelect(e):t.handleArtistSelect(e)})),f()(T()(t),\"handleArtistSelect\",(function(e){var a,r=t.props,n=r.dispatch,s=r.tags,i=Object(k.uniqBy)(e,\"artistId\");n(La(i)),!s||i.length>s.length?n((a=i.length,ga(\"ANALYTICS_SEARCH_ARTIST_ADD_TAG\",{numberOfTags:a}))):n(function(e){return ga(\"ANALYTICS_SEARCH_ARTIST_REMOVE_TAG\",{numberOfTags:e})}(i.length))})),f()(T()(t),\"handleTrackSelect\",(function(e){var a,r=t.props,n=r.dispatch,s=r.tags,i=Object(k.uniqBy)(e,\"isrc\");n(ja(i)),!s||i.length>s.length?n((a=i.length,ga(\"ANALYTICS_SEARCH_MULTI_TRACK_ADD_TAG\",{numberOfTags:a}))):n(function(e){return ga(\"ANALYTICS_SEARCH_MULTI_TRACK_REMOVE_TAG\",{numberOfTags:e})}(i.length))})),f()(T()(t),\"toggleFixedPosition\",(function(){if(t._panel){var e=window,a=e.scrollY,r=e.pageYOffset,n=t._panel.getBoundingClientRect().top,s=t.state.panelTop,i=void 0===s?n+r:s,o=a>=Math.max(n,i);t.setState({shouldBeFixed:o,panelTop:i})}})),f()(T()(t),\"handleArtistsTracksDropdownSelect\",(function(e){(0,t.props.dispatch)(function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Aa;return function(t,r){var n=r().filters,s=n.filterIdentifier;n.artistsOrTracks!==e&&(Se()&&(t(Da([])),t(e===Z?Sa([]):Oa([]))),t(Ma(e)),s!==r().filters.filterIdentifier&&t(a()))}}(e))})),f()(T()(t),\"renderPeriodFilter\",(function(){var e,a=t.props,r=a.period,n=a.dateRange,s=a.validDateRange,i=t.state.customDateRangeModalOpen,o=(e={},f()(e,Q.WEEK,Object(O.formatMessage)(\"filters.lastWeek\")),f()(e,Q.MONTH,Object(O.formatMessage)(\"filters.lastMonth\")),f()(e,Q.YEAR,Object(O.formatMessage)(\"filters.lastYear\")),e);return v.a.createElement(Ua.Dropdown,{id:\"periodFilter\",onSelect:t.handlePeriodDropdownSelect,title:o[r]||Object(O.formatMessage)(\"filters.customDateRange\"),className:\"Filters-switcher Filters-period\",alignRight:!0},Object.keys(o).map((function(e){return v.a.createElement(Ua.Dropdown.Item,{active:t.isPeriodSelected(e),eventKey:e,key:e},o[e])})),v.a.createElement(Ua.Dropdown.Divider,null),v.a.createElement(Ua.Dropdown.Item,{className:\"Filters-custom-date\",onSelect:t.handleDateRangeModalOpen,active:t.isPeriodSelected(Q.CUSTOM)},\"\".concat(Object(O.formatMessage)(\"filters.customDateRange\"),\"...\")),v.a.createElement(Ka,{dateRange:n,validDateRange:s,headerLabel:\"\".concat(Object(O.formatMessage)(\"filters.customDateRange\"),\"...\"),isOpen:i,onRequestClose:t.handleDateRangeModalClose,onDateRangeSelect:t.handleDateRangeSelection}))})),f()(T()(t),\"renderSearchRow\",(function(){var e=t.props,a=e.results,r=e.allArtists,n=e.allTracks,s=e.currentSearch,i=e.searchError,o=e.isLoading,l=e.tags,c=e.artistsOrTracks;return v.a.createElement(Ua.SearchRow,{results:a,artists:r,tracks:n,currentSearch:s,searchError:i,isLoading:o,tags:l,artistsOrTracks:c,onSearchStringChanging:t.handleSearchRowStringChanging,onSelect:t.handleSelect,onSearchRequest:t.handleSearchRequest,onArtistsTracksDropdownSelect:t.handleArtistsTracksDropdownSelect,formatMessage:O.formatMessage,messages:{artistsLabel:{defaultMessage:\"filters.artists\"},tracksLabel:{defaultMessage:\"filters.tracks\"},searchResultsHeadingLabel:{defaultMessage:\"filters.searchNameLabel\"},noMatchLabel:{defaultMessage:\"filters.noMatch\"},searchPlaceholderLabel:{defaultMessage:\"filters.searchPlaceholder\"},searchArtistsPlaceholderLabel:{defaultMessage:\"filters.searchArtistsPlaceholder\"},tryAgainLabel:{defaultMessage:\"filters.tryAgain\"},temporaryErrorLabel:{defaultMessage:\"filters.temporaryError\"},searchErrorLabel:{defaultMessage:\"filters.searchError\"},checkSpellingLabel:{defaultMessage:\"filters.checkSpelling\"},releasedDateLabel:{defaultMessage:\"filters.releaseDateLabel\"},releaseNameLabel:{defaultMessage:\"filters.releaseNameLabel\"}}})})),t.state={customDateRangeModalOpen:!1},t}return p()(a,e),o()(a,[{key:\"componentDidMount\",value:function(){document.onscroll=this.toggleFixedPosition}},{key:\"componentWillUnmount\",value:function(){document.onscroll=null}},{key:\"render\",value:function(){var e=this,a=this.props,t=a.selectedTrack,r=a.width,n=a.dateRange,s=n.startDate,i=n.endDate,o=a.stores,l=this.state.shouldBeFixed,c=\"\".concat(V()(s).format(\"LL\"),\" - \").concat(V()(i).format(\"LL\"));return v.a.createElement(\"div\",{className:_a()(\"Filters\",{\"Filters-with-track\":t,\"Filters-fixed\":l,\"Filters-grey-background\":Oe()}),ref:function(a){e._panel=a},style:{width:r}},v.a.createElement(\"div\",{className:\"Filters-buttons clearfix\"},v.a.createElement(\"div\",{className:\"Filters-buttons-stores pull-left\"},v.a.createElement(Za,{availableStores:fe,selectedStores:o,onStoreSelect:this.handleStoreSelect})),v.a.createElement(\"div\",{className:\"pull-right\"},v.a.createElement(\"div\",{className:\"Filters-date\"},c),this.renderPeriodFilter())),this.renderSearchRow())}}]),a}(g.Component);f()(Xa,\"propTypes\",{dispatch:b.a.func.isRequired,width:b.a.number,stores:b.a.array.isRequired,period:b.a.oneOf(Object(k.values)(Q)).isRequired,allArtists:b.a.oneOfType([b.a.object,b.a.array]),allTracks:b.a.oneOfType([b.a.object,b.a.array]),selectedTrack:b.a.object,currentSearch:b.a.string,searchError:b.a.string,isLoading:b.a.bool,tags:b.a.array,dateRange:b.a.shape({startDate:b.a.string.isRequired,endDate:b.a.string.isRequired}).isRequired,validDateRange:b.a.shape({startDate:b.a.string.isRequired,endDate:b.a.string.isRequired}).isRequired,artistsOrTracks:b.a.string,results:b.a.object});var $a=Object(S.connect)((function(e){var a=e.filters,t=a.artistsOrTracks,r=a.stores,n=a.period,s=a.track,i=a.tags,o=a.dateRange,l=a.artistIds,c=a.isrcs,u=e.search,d=u.currentSearch,m=u.results,p=u.artists,h=u.tracks,f=u.error,g=u.isLoading,v=i;return Se()&&(v=Ja(t)?Object(k.zip)(c,i).map((function(e){return{isrc:e[0],trackName:e[1]}})):Object(k.zip)(l,i).map((function(e){return{artistId:e[0],artistName:e[1]}}))),{stores:r,period:n,isLoading:g,selectedTrack:s,currentSearch:d,results:m,allArtists:p,allTracks:h,searchError:f,tags:v,dateRange:o,validDateRange:Je(e),artistsOrTracks:t}}))(Xa),et=t(\"ZhIB\"),at=t.n(et),tt=function(e){var a=e.className,t=e.fillColor||\"#000\";return v.a.createElement(\"svg\",{className:_a()(\"LineSegment\",a),fill:t,viewBox:\"0 0 492 492\"},v.a.createElement(\"path\",{d:\"M465.064,207.562H26.908C12.076,207.562,0,219.698,0,234.53v22.804 c0,14.832,12.072,27.104,26.908,27.104h438.156c14.84,0,26.936-12.272, 26.936-27.104V234.53C492,219.698,479.904,207.562,465.064,207.562z\"}))};tt.propTypes={className:b.a.string,fillColor:b.a.string};var rt=tt,nt=function(e){var a=e.title,t=e.value,r=e.tooltip,n=e.percentage,s=e.lineColor;return v.a.createElement(\"div\",{className:\"StreamsDiscovery\"},v.a.createElement(rt,{fillColor:s,className:\"StreamsDiscovery-line\"}),v.a.createElement(\"span\",{className:\"StreamsDiscovery-title\"},a),v.a.createElement(Ua.Help,{id:\"StreamsDiscoveryHelp\",overlayClassName:\"StreamsDiscovery-help\",message:r}),v.a.createElement(\"span\",{className:\"StreamsDiscovery-content\"},t),v.a.createElement(\"span\",{className:\"StreamsDiscovery-percentage\"},n,\"%\"))};nt.propTypes={title:b.a.string.isRequired,value:b.a.any.isRequired,percentage:b.a.number.isRequired,lineColor:b.a.string,tooltip:b.a.string.isRequired},nt.defaultProps={lineColor:\"black\"};var st=nt,it=function(e){function a(){var e,t;s()(this,a);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return t=c()(this,(e=d()(a)).call.apply(e,[this].concat(n))),f()(T()(t),\"handleClick\",(function(){var e=t.props;(0,e.onTileClicked)(e.graph)})),t}return p()(a,e),o()(a,[{key:\"render\",value:function(){var e=this.props,a=e.id,t=e.graph,r=e.title,n=e.children,s=e.value,i=e.isActive,o=e.showDiscovery,l=e.lineColor,c=e.isHidden;if(e.isLoading)return v.a.createElement(\"div\",{className:\"StreamsTile\"},v.a.createElement(\"div\",{className:\"StreamsTile-content\"},v.a.createElement(\"h4\",null,r),v.a.createElement(Ua.LoadingIndicator,{small:!0})));var u=o&&i&&!c?v.a.createElement(\"div\",{className:_a()(\"StreamsTile-discovery\")},n):\"\",d=o?\"\":v.a.createElement(\"div\",{className:\"StreamsTile-source\"},v.a.createElement(\"span\",{className:\"StreamsTile-source-text\"},Object(O.formatMessage)(\"placements.stores\",{storeNames:\"Spotify\"})),c?v.a.createElement(\"span\",{className:\"Spotify-icon Spotify-icon-gray\"}):v.a.createElement(\"span\",{className:\"Spotify-icon\"})),m=!o&&i?v.a.createElement(rt,{fillColor:l,className:\"StreamsTile-line\"}):\"\";return v.a.createElement(\"div\",{id:a,className:_a()(\"StreamsTile\",{\"StreamsTile-active\":i&&!c},{\"StreamsTile-hidden\":c},{\"StreamsTile-discovery-active\":t===me.DISCOVERY&&i&&!c}),onClick:c?null:this.handleClick},v.a.createElement(\"div\",{className:\"StreamsTile-content\"},v.a.createElement(\"h4\",{className:c?\"StreamsTile-hidden-text\":null},r),v.a.createElement(\"div\",{className:\"StreamsTile-line\"},m),v.a.createElement(\"h2\",{className:\"StreamsTile-value\"},s)),u,d)}}]),a}(g.Component);f()(it,\"propTypes\",{id:b.a.string,title:b.a.string.isRequired,value:b.a.oneOfType([b.a.string,b.a.element]).isRequired,graph:b.a.string.isRequired,isActive:b.a.bool.isRequired,onTileClicked:b.a.func,showDiscovery:b.a.bool,lineColor:b.a.string,children:b.a.any,isHidden:b.a.bool,isLoading:b.a.bool});var ot=function(e){function a(){var e,t;s()(this,a);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return t=c()(this,(e=d()(a)).call.apply(e,[this].concat(n))),f()(T()(t),\"getValueHintPercent\",(function(e){var a=t.props.totalStreams;return e?Math.round(100*e/a):0})),f()(T()(t),\"getValueHint\",(function(e){return t.props.isLoading?null:v.a.createElement(\"p\",{className:\"StreamsSummary-value-hint\"},\"(\",v.a.createElement(\"b\",null,\"\".concat(t.getValueHintPercent(e),\"%\")),\" \".concat(Object(O.formatMessage)(\"streamsSummary.ofTotalStreams\"),\")\"))})),f()(T()(t),\"getEmptyValue\",(function(){return v.a.createElement(\"span\",{className:\"StreamsSummary-empty-value\"})})),f()(T()(t),\"formatValue\",(function(e){return t.props.isLoading?t.getEmptyValue():at()(e).format(\"0.[0]a\")})),f()(T()(t),\"formatPercentage\",(function(e){return t.props.isLoading?t.getEmptyValue():\"\".concat(at()(e).format(\"0.[0]a\"),\"%\")})),f()(T()(t),\"handleTileClick\",(function(e){(0,t.props.dispatch)(Ra(e))})),t}return p()(a,e),o()(a,[{key:\"render\",value:function(){var e=this.props,a=e.showTotalPlacements,t=e.totalStreams,r=e.collectionStreams,n=e.activeDiscoveryStreams,s=e.passiveDiscoveryStreams,i=e.totalPlacements,o=e.skips,l=e.saves,c=e.isLoading,u=e.width,d=e.selectedGraph,m=e.showSkipsAndSavesTiles,p=e.noChartData,h=function(e,a){return void 0===e?he.grey_300:a},f=Oe()?v.a.createElement(\"div\",{className:\"StreamsSummary-sns\"},v.a.createElement(it,{id:\"streams-summary-discovery\",graph:me.DISCOVERY,title:Object(O.formatMessage)(\"streamsSummary.streams\"),value:p?this.getEmptyValue():this.formatValue(t),isActive:d===me.DISCOVERY,onTileClicked:this.handleTileClick,showDiscovery:!0,isLoading:c,isHidden:p},v.a.createElement(st,{title:Object(O.formatMessage)(\"streamsSummary.listenersCollection\"),lineColor:h(r,he.listenersCollection),tooltip:Object(O.formatMessage)(\"streamsSummary.listenersCollectionTooltip\"),percentage:this.getValueHintPercent(r),value:this.formatValue(r)}),v.a.createElement(st,{title:Object(O.formatMessage)(\"streamsSummary.activeDiscovery\"),lineColor:h(n,he.activeDiscovery),tooltip:Object(O.formatMessage)(\"streamsSummary.activeDiscoveryTooltip\"),percentage:this.getValueHintPercent(n),value:this.formatValue(n)}),v.a.createElement(st,{title:Object(O.formatMessage)(\"streamsSummary.passiveDiscovery\"),lineColor:h(s,he.passiveDiscovery),tooltip:Object(O.formatMessage)(\"streamsSummary.passiveDiscoveryTooltip\"),percentage:this.getValueHintPercent(s),value:this.formatValue(s)})),v.a.createElement(it,{id:\"streams-summary-saves\",graph:me.SAVES,title:Object(O.formatMessage)(\"streamsSummary.savesToCollection\"),value:m&&!p?this.formatValue(l):this.getEmptyValue(),isActive:d===me.SAVES,onTileClicked:this.handleTileClick,lineColor:h(n,he.savesToCollection),isHidden:!m||p,isLoading:c}),v.a.createElement(it,{id:\"streams-summary-skips\",graph:me.SKIPS,title:Object(O.formatMessage)(\"streamsSummary.skipRate\"),value:m&&!p?this.formatPercentage(o):this.getEmptyValue(),isActive:d===me.SKIPS,onTileClicked:this.handleTileClick,lineColor:h(n,he.skipRate),isHidden:!m||p,isLoading:c})):v.a.createElement(Ua.Snapshot,null,v.a.createElement(Ua.SnapshotItem,{lineStyle:\"solid\",lineColor:\"#fff\",title:Object(O.formatMessage)(\"streamsSummary.totalStreams\")},this.formatValue(t)),v.a.createElement(\"div\",{className:\"VerticalBar\"}),v.a.createElement(Ua.SnapshotItem,{title:Object(O.formatMessage)(\"streamsSummary.listenersCollection\"),valueColor:h(r,he.dark_cyan),tooltip:Object(O.formatMessage)(\"streamsSummary.listenersCollectionTooltip\"),valueHint:this.getValueHint(r)},this.formatValue(r)),v.a.createElement(Ua.SnapshotItem,{title:Object(O.formatMessage)(\"streamsSummary.activeDiscovery\"),valueColor:h(n,he.medium_sea_green),tooltip:Object(O.formatMessage)(\"streamsSummary.activeDiscoveryTooltip\"),valueHint:this.getValueHint(n)},this.formatValue(n)),v.a.createElement(Ua.SnapshotItem,{title:Object(O.formatMessage)(\"streamsSummary.passiveDiscovery\"),valueColor:h(s,he.dark_slate_blue),tooltip:Object(O.formatMessage)(\"streamsSummary.passiveDiscoveryTooltip\"),valueHint:this.getValueHint(s)},this.formatValue(s)));return v.a.createElement(\"div\",{className:_a()(\"StreamsSummary\",{StreamsSummarySas:Oe()}),style:{width:u}},v.a.createElement(\"div\",null,v.a.createElement(\"h2\",null,Object(O.formatMessage)(\"streamsSummary.heading\")),a&&!c?v.a.createElement(\"h4\",{className:\"StreamsSummary-heading-hint\"},v.a.createElement(\"b\",null,at()(i).format(\"0.[0]a\")),\" \",Object(O.formatMessage)(\"streamsSummary.headingHint\")):null),f)}}]),a}(g.Component);f()(ot,\"propTypes\",{dispatch:b.a.func.isRequired,showTotalPlacements:b.a.bool,isLoading:b.a.bool,totalStreams:b.a.number,collectionStreams:b.a.number,activeDiscoveryStreams:b.a.number,passiveDiscoveryStreams:b.a.number,skips:b.a.number,saves:b.a.number,totalPlacements:b.a.number,width:b.a.oneOfType([b.a.string,b.a.number]),selectedGraph:b.a.string,showSkipsAndSavesTiles:b.a.bool,noChartData:b.a.bool}),f()(ot,\"defaultProps\",{width:\"100%\"});ot.displayName=\"StreamsSummary\";var lt=Object(S.connect)((function(e){var a=e.chartData,t=e.filters,r=t.dateRange,n=r.startDate,s=r.endDate,i=t.selectedGraph,o=t.stores,l=e.playlistPlacementsData,c=a.isLoading||l.isLoading,u=a.hoverDate?Object(k.find)(a.items,(function(e){return e.date===a.hoverDate})):a,d=V()(n).startOf(\"day\"),m=V()(s).endOf(\"day\"),p=ea(e).reduce((function(e,a){var t=a.dateAdded,r=V()(t).toDate();return r<d.toDate()||r>m.toDate()?e:e+1}),0),h=p>0&&\"all\"!==$e(e),f=0,g=0;Oe()&&(f=a.hoverDate?u[me.SKIPS]:0===u.skips?0:u.skips/(u.overallNumberOfSpotifyStreams+u.skips)*100,g=u[me.SAVES]);var v=o.includes(fe.SPOTIFY.storeid),y=Be(a.isLoading?[]:a.items,me.DISCOVERY);return{showTotalPlacements:h,isLoading:c,totalStreams:u.overallNumberOfStreams,collectionStreams:u[J.STREAMS_FROM_COLLECTION],activeDiscoveryStreams:u[J.STREAMS_FROM_ACTIVE_DISCOVERY],passiveDiscoveryStreams:u[J.STREAMS_FROM_PASSIVE_DISCOVERY],skips:f,saves:g,totalPlacements:p,selectedGraph:i,noChartData:y,showSkipsAndSavesTiles:v}}))(ot),ct=t(\"pVnL\"),ut=t.n(ct),dt=t(\"R0i0\"),mt=t(\"VIqg\"),pt=t(\"gj+k\"),ht=t(\"5psM\");function ft(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function gt(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?ft(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ft(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var vt=Object(He.createSelector)(Ze,(function(e){var a=e.dateRange;return function(e){var a=e.startDate,t=e.endDate;return W()(Array(Math.abs(V()(t).diff(V()(a),\"days\"))+1)).map((function(e,t){return V()(a).add(t,\"days\").startOf(\"day\").valueOf()}))}({startDate:a.startDate,endDate:a.endDate})})),yt=[{minDayCount:90,axisInterval:30},{minDayCount:10,axisInterval:7}],bt=Object(He.createSelector)(vt,Ze,(function(e,a){var t,r=a.period,n=a.dateRange,s=n.startDate,i=n.endDate,o=(t={},f()(t,Q.MONTH,(function(){return K[Q.WEEK]+1})),f()(t,Q.YEAR,(function(){return Math.trunc(V()(i).diff(V()(s),\"days\")/12)})),f()(t,Q.WEEK,(function(){return 1})),f()(t,Q.CUSTOM,(function(){var e=yt.find((function(e){var a=e.minDayCount;return V()(i).diff(V()(s),\"days\")>=a}));return e?e.axisInterval:1})),t)[r]();return function(e){var a=V()(e[e.length-1]).format(\"YYYY-MM-DD\"),t=ke({startDate:s,endDate:i})?7:1;return V()(i).diff(a,\"days\")<=2*t?e.slice(0,-1):e}(e.filter((function(e,a){return a%o==0})))})),St=Object(He.createSelector)(Ze,vt,(function(e,a){var t=e.period,r=e.dateRange,n=[];if(t===Q.YEAR){for(var s=0;s<a.length;++s)5===V()(a[s]).day()&&n.push(a[s]);return n}if(t===Q.CUSTOM&&ke(r)){for(var i=0,o=0;o<a.length;++o)0===i&&n.push(a[o]),7===++i&&(i=0);return n}return a})),Ot=Object(He.createSelector)(Ze,ea,St,(function(e,a,t){var r=e.dateRange,n=r.startDate,s=r.endDate,i=V()(n).startOf(\"day\").valueOf(),o=V()(s).endOf(\"day\").valueOf(),l=We([].concat(W()(t),[o]));return a?a.reduce((function(e,a){var r=a.dateAdded,n=a.storeid,s=V()(r).valueOf();if(s<i||s>o)return e;var c=l(s),u=t[c],d=e[u];return gt({},e,d?f()({},u,gt({},e[u],f()({},n,Object(k.get)(d,n,0)+1))):f()({},u,f()({},n,1)))}),{}):{}})),Dt=Object(He.createSelector)(ea,Xe,Ze,St,(function(e,a,t,r){var n=a.filterDate,s=t.dateRange,i=s.startDate,o=s.endDate,l=V()(i).startOf(\"day\").valueOf(),c=V()(o).endOf(\"day\").valueOf();return Object(ht.compose)(Object(ht.sortBy)(Object(ht.compose)(V.a,Object(ht.property)(\"dateAdded\"))),Object(ht.filter)(ze(l,c,n,r,We([].concat(W()(r),[c])))))(e)})),Et=Object(He.createSelector)(Dt,Xe,(function(e,a){var t=5*(a.activePage-1);return e.slice(t,t+5)})),Tt=Object(He.createSelector)(Dt,(function(e){return e&&e.length?e.length:0})),kt=Object(He.createSelector)(Tt,(function(e){return Math.ceil(e/5)})),Pt=t(\"8d86\"),At=function(e){function a(){var e,t;s()(this,a);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return t=c()(this,(e=d()(a)).call.apply(e,[this].concat(n))),f()(T()(t),\"getPoints\",(function(){var e=t.props,a=e.data,r=e.type,n=e.xScale,s=e.yScale;return Object(Pt.a)().x((function(e){return n(V()(e.date))})).y((function(e){return s(e[r])}))(a)})),t}return p()(a,e),o()(a,[{key:\"render\",value:function(){var e=this.props.type,a=this.getPoints();return v.a.createElement(\"g\",null,v.a.createElement(\"path\",{stroke:\"#000\",className:\"GraphLine\".concat(Oe()&&[J.STREAMS_FROM_PASSIVE_DISCOVERY,J.STREAMS_FROM_COLLECTION,J.STREAMS_FROM_ACTIVE_DISCOVERY].includes(e)?\"\".concat(e,\"Sas\"):e),d:a}))}}]),a}(g.Component);f()(At,\"propTypes\",{data:b.a.array.isRequired,type:b.a.string.isRequired,xScale:b.a.func.isRequired,yScale:b.a.func.isRequired});var Nt=At,Rt=function(e){function a(){return s()(this,a),c()(this,d()(a).apply(this,arguments))}return p()(a,e),o()(a,[{key:\"render\",value:function(){var e=this;return v.a.createElement(\"div\",{className:\"DataUnavailableContainer\",ref:function(a){e._container=a}},v.a.createElement(\"div\",{className:\"DataUnavailableContainer-background\"}),v.a.createElement(\"div\",{className:\"DataUnavailableContainer-icon\"}),v.a.createElement(\"h4\",{className:\"DataUnavailableContainer-text\"},Object(O.formatMessage)(\"graph.dataUnavailable\")))}}]),a}(g.Component),Ct=function(e){var a,t=e.artistsOrTracksSelected,r=e.isLoading,n=e.xAxisOffset,s=e.yAxisOffset,i=e.height,o=e.markerDates,l=e.xScale,c=e.hoverDate,u=e.hoverLastDate,d=e.hoverPosition,m=e.hoverLabelXOffset,p=e.hoverLabelYOffset,h=e.width,f=e.hoverSpotOffset,g=e.renderMarkerFilterDate,y=e.axisDates,b=e.ticks,S=Math.max(f+2,d-n),O=\"middle\",D=Boolean(u),E=V()(c).format(\"dddd, LL\"),T=V()(u).format(\"dddd, LL\"),k=(a=D?\"\".concat(E,\" - \").concat(T):E).length;(d+n+2*k>=h&&D||d+n>=h&&!D)&&(S=h-n-m,O=\"end\"),d<=n+2*k&&(S=10-n,O=\"beginning\");return v.a.createElement(\"g\",{key:\"x-axis\",transform:\"translate(\".concat(n,\", 0)\")},b.map((function(e,a){var n=i+(t?0:s);return r&&a%Q.WEEK==0?v.a.createElement(\"g\",{key:e},v.a.createElement(\"line\",{className:\"GridLine\",y1:\"0\",y2:n,shapeRendering:\"crispEdges\",x1:Math.ceil(l(e)),x2:Math.ceil(l(e))})):v.a.createElement(\"g\",{key:e},!(a>0)||o[e]&&t?v.a.createElement(\"line\",{className:\"GridLine\",y1:\"0\",y2:n,shapeRendering:\"crispEdges\",x1:Math.ceil(l(e)),x2:Math.ceil(l(e))}):null)})),r?null:v.a.createElement(\"g\",null,y.map((function(e){return c?null:v.a.createElement(\"text\",{key:e,className:\"Xaxis-label\",x:l(e),y:i},V()(e).format(\"ll\"))}))),r?null:v.a.createElement(\"g\",{className:\"Marker-active-vertical-line\",transform:\"translate(\".concat(-n,\", 0)\")},g()),c?v.a.createElement(\"text\",{className:\"Xaxis-hover-date\",x:S,y:i-p,textAnchor:O},a):null)};Ct.propTypes={artistsOrTracksSelected:b.a.bool,isLoading:b.a.bool,markerDates:b.a.object,height:b.a.number.isRequired,width:b.a.number.isRequired,xAxisOffset:b.a.number.isRequired,yAxisOffset:b.a.number.isRequired,xScale:b.a.func.isRequired,hoverDate:b.a.any,hoverLastDate:b.a.any,hoverPosition:b.a.number,hoverLabelXOffset:b.a.number,hoverLabelYOffset:b.a.number,hoverSpotOffset:b.a.number,axisDates:b.a.array,ticks:b.a.array,renderMarkerFilterDate:b.a.func.isRequired},Ct.defaultProps={artistsOrTracksSelected:!1,hoverLabelXOffset:5,hoverLabelYOffset:9},Ct.displayName=\"Xaxis\";var Mt=Object(S.connect)((function(e){return{axisDates:bt(e),ticks:vt(e),artistsOrTracksSelected:\"all\"!==$e(e)}}))(Ct),jt=function(e){var a=e.height,t=e.width,r=e.yAxisOffset,n=e.yScale,s=e.isLoading,i=e.isPercentage,o=n.ticks(5);return v.a.createElement(\"g\",{key:\"y-axis\",transform:\"translate(0, \".concat(r,\")\")},v.a.createElement(\"line\",{className:\"BorderLine\",y1:a,y2:a,x1:\"0\",x2:t}),o.map((function(e){if(!e)return\"\";var a=n(e);return v.a.createElement(\"g\",{key:e},v.a.createElement(\"line\",{className:\"GridLine\",y1:a,y2:a,x1:\"0\",x2:6}),v.a.createElement(\"line\",{className:\"GridLine\",y1:a,y2:a,x1:40,x2:t}),function(e,a){return s||e<10-r?\"\":v.a.createElement(\"text\",{className:\"Yaxis-label\",x:\"0\",y:e},i?at()(a/100).format(\"0%\"):at()(a).format(\"0.[0]a\"))}(a,e))})))};jt.propTypes={height:b.a.number.isRequired,width:b.a.number.isRequired,yAxisOffset:b.a.number.isRequired,yScale:b.a.func.isRequired,isLoading:b.a.bool,isPercentage:b.a.bool},jt.displayName=\"Yaxis\";var Lt=jt,It=function(e){function a(e){var t;return s()(this,a),t=c()(this,d()(a).call(this,e)),f()(T()(t),\"handleMouseHover\",(function(){var e=t.state.isHover;t.setState({isHover:!e})})),f()(T()(t),\"renderValue\",(function(e){return v.a.createElement(\"div\",null,Object(k.keys)(e).sort((function(e,a){return parseInt(a,10)-parseInt(e,10)})).map((function(a){var t=e[a],r=t<2?null:t,n=Ve(a,fe.SPOTIFY);return v.a.createElement(\"div\",{key:a,className:\"Marker-store\"},v.a.createElement(\"span\",{className:\"Marker-\".concat(n.className)}),v.a.createElement(\"span\",{className:\"Marker-value\"},r))})))})),t.state={isHover:!1},t}return p()(a,e),o()(a,[{key:\"render\",value:function(){var e,a=this.state.isHover,t=this.props,r=t.x,n=t.y,s=t.storePlacements,i=t.isSelected,o=t.onClick,l=t.zIndex,c=Object(k.keys)(s).length,u=a?501:l,d=!i&&a;return v.a.createElement(\"div\",{className:_a()(\"Marker\",(e={},f()(e,\"Marker-size-\".concat(c),c>1),f()(e,\"Marker-selected\",i),e)),onClick:o,onMouseEnter:this.handleMouseHover,onMouseLeave:this.handleMouseHover,style:{left:r,top:n,zIndex:u}},v.a.createElement(\"div\",{className:_a()(\"Marker-content\",{\"Marker-content-selected\":i},{\"Marker-content-hovered\":d})},this.renderValue(s)))}}]),a}(g.Component);f()(It,\"propTypes\",{x:b.a.number.isRequired,y:b.a.number,zIndex:b.a.number,storePlacements:b.a.object,isSelected:b.a.bool,onClick:b.a.func});var _t=function(e){var a,t=e.markerDates,r=e.markersFilterDate,n=e.xAxisOffset,s=e.xScale,i=e.onMarkerSelect,o=Object(k.keys)(t).sort(),l=Object(k.max)(o.map((function(e){return Object(k.keys)(t[e]).length})))||1;return o.length?v.a.createElement(\"div\",{className:_a()(\"MarkersContainer\",(a={},f()(a,\"MarkersContainer-size-\".concat(l),l>1),f()(a,\"MarkersContainerSas\",Oe()),a))},o.map((function(e,a){var o=Number(e),l=o===r?500:a+100;return v.a.createElement(It,{key:e,zIndex:l,x:Math.ceil(s(V()(o).toDate())+n),onClick:i(o),isSelected:o===r,storePlacements:t[o]})}))):null};_t.displayName=\"MarkersContainer\",_t.propTypes={markerDates:b.a.object,markersFilterDate:b.a.number,xAxisOffset:b.a.number,xScale:b.a.func,onMarkerSelect:b.a.func};var wt=_t;function xt(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function Ut(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?xt(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):xt(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var Yt=function(e){function a(e){var t;return s()(this,a),t=c()(this,d()(a).call(this,e)),f()(T()(t),\"getStreams\",(function(e){return Object(k.values)(J).reduce((function(a,t){return[].concat(W()(a),W()(e.map((function(e){return e[t]}))))}),[])})),f()(T()(t),\"getSaves\",(function(e){return e.map((function(e){return e[me.SAVES]}))})),f()(T()(t),\"getXScale\",(function(){var e=t.props,a=e.width,r=e.xAxisOffset,n=e.ranges,s=e.dateRange,i=s.startDate,o=s.endDate;return n.lastGraphPoint?Object(dt.a)().domain([V()(n.firstDate),V()(n.lastGraphPoint)]).range([0,a-r-2]):Object(dt.a)().domain([V()(i),V()(o)]).range([0,a-r-2])})),f()(T()(t),\"getYScale\",(function(){var e=t.props,a=e.height,r=e.chartData,n=e.tooltipHeight,s=e.selectedGraph,i=0;return s===me.DISCOVERY?i=1.1*Object(pt.a)(t.getStreams(r||[]))||6:s===me.SKIPS?i=100:s===me.SAVES&&(i=1.1*Object(pt.a)(t.getSaves(r||[]))||6),Object(mt.a)().domain([0,i]).range([a,n])})),f()(T()(t),\"handleMouseMove\",(function(e){var a=e.clientX;if(t._container){var r=t.props,n=r.dispatch,s=r.chartData,i=r.xAxisOffset,o=r.yAxisOffset,l=r.circleYOffset,c=r.selectedGraph;if(!s)return;var u=a-t._container.getBoundingClientRect().left,d=t.getXScale(),m=t.getYScale(),p=d.invert(u-i),h=s.reduce((function(e,a){var t=V()(a.date).toDate(),r=Math.abs(t-p);return void 0===e.diff||e.diff>r?{diff:r,closest:Ut({},a,{parsedDate:t})}:e}),{}).closest;u=d(h.parsedDate)+i;var f=[];f=c===me.DISCOVERY?Object(k.values)(J).map((function(e){var a=h[e];return{x:u,y:m(a)+o-l,type:Oe()?\"\".concat(e,\"Sas\"):e,value:a}})):[c].map((function(e){var a=h[e];return{x:u,y:m(a)+o-l,type:e,value:a}})),n(Ue(h.date,h.lastDate)),t.setState({hoverPosition:u,hoverDate:h.parsedDate,hoverLastDate:h.lastDate,circles:f})}})),f()(T()(t),\"handleMouseOut\",(function(){(0,t.props.dispatch)(Ue(null,null)),t.setState({hoverPosition:null,hoverDate:null,hoverLastDate:null,circles:null})})),f()(T()(t),\"handleMarkerSelect\",(function(e){return function(){(0,t.props.dispatch)(function(e){return{type:\"TOGGLE_PLACEMENTS_SELECTION\",date:e}}(e))}})),f()(T()(t),\"renderCircles\",(function(){var e=t.props.circleRadius;return t.state.circles.map((function(a){if(!a)return null;var t=a.x,r=a.y,n=a.type;return v.a.createElement(\"circle\",{key:\"\".concat(t).concat(r).concat(n),className:\"Circle\".concat(n),cx:t,cy:r,r:e})}))})),f()(T()(t),\"renderHoverPosition\",(function(){var e=t.props,a=e.height,r=e.yAxisOffset,n=t.state.hoverPosition;return n?v.a.createElement(\"g\",{className:\"HoverPosition\"},v.a.createElement(\"line\",{className:\"HoverLine\",x1:n,x2:n,y1:\"0\",y2:a+r}),t.renderCircles()):null})),f()(T()(t),\"renderNoResultsMessage\",(function(e){var a=t.props,r=a.height,n=a.width;return e.length?null:v.a.createElement(\"g\",null,v.a.createElement(\"text\",{className:\"NoGraphData\",x:n/2,y:r/2,textAnchor:\"middle\"},Object(O.formatMessage)(\"graph.noData\")))})),f()(T()(t),\"renderMarkersContainer\",(function(){var e=t.props,a=e.markerDates,r=e.markersFilterDate,n=e.xAxisOffset,s=e.showMarkersContainer,i=t.getXScale();return s?v.a.createElement(wt,{markerDates:a,markersFilterDate:r,xAxisOffset:n,xScale:i,onMarkerSelect:t.handleMarkerSelect}):null})),f()(T()(t),\"renderMarkersFilterDate\",(function(){var e=t.props,a=e.markersFilterDate,r=e.height,n=e.xAxisOffset,s=t.state.hoverDate;if(!a||s===V()(a).format(\"LL\"))return null;var i=t.getXScale()(V()(a).toDate())+n;return v.a.createElement(\"g\",{className:\"MarkersFilterDate\"},v.a.createElement(\"line\",{x1:Math.ceil(i),x2:Math.ceil(i),y1:\"0\",y2:r,className:\"Graph-marker-line\"}))})),t.state={},t}return p()(a,e),o()(a,[{key:\"render\",value:function(){var e=this,a=this.props,t=a.chartData,r=a.isLoading,n=a.markerDates,s=a.height,i=a.width,o=a.xAxisOffset,l=a.yAxisOffset,c=a.hoverSpotOffset,u=a.showMarkersContainer,d=a.selectedGraph,m=this.state,p=m.hoverPosition,h=m.hoverDate,f=m.hoverLastDate,g=[],y=this.getXScale(),b=this.getYScale(),S=d===me.SKIPS;t&&t.length&&(g=d===me.DISCOVERY?Object(k.values)(J).map((function(e){var a={type:e,xScale:y,yScale:b};return v.a.createElement(Nt,ut()({key:e,data:t},a))})):[d].map((function(e){var a={type:e,xScale:y,yScale:b};return v.a.createElement(Nt,ut()({key:e,data:t},a))})));var O,D={isLoading:r,markerDates:n,height:s,xAxisOffset:o,yAxisOffset:l,xScale:y,width:i,hoverSpotOffset:c},E={height:s,isLoading:r,width:i,yAxisOffset:l,yScale:b,isPercentage:S},T=Be(t,d)&&Oe();return O=r?v.a.createElement(\"div\",{className:\"Graph-indicator-container\"},v.a.createElement(Ua.LoadingIndicator,null)):T?v.a.createElement(\"div\",{className:\"Graph-indicator-container\"},v.a.createElement(Rt,null)):v.a.createElement(\"div\",null,this.renderMarkersContainer(),t&&t.length?v.a.createElement(\"div\",{style:{left:o-c,top:-l,width:i-o+c,height:s+l},className:\"HoverSpot\",onMouseMove:this.handleMouseMove,onMouseOut:this.handleMouseOut}):null),v.a.createElement(\"div\",{className:\"Graph\",ref:function(a){e._container=a}},v.a.createElement(\"svg\",{className:_a()(\"Svg\",{SvgSas:Oe()},{\"Svg-track-data\":u}),width:i,height:s},v.a.createElement(Lt,E),v.a.createElement(Mt,ut()({},D,{hoverDate:h,hoverLastDate:f,hoverPosition:p,renderMarkerFilterDate:this.renderMarkersFilterDate})),r||T?null:v.a.createElement(\"g\",null,v.a.createElement(\"g\",{transform:\"translate(\".concat(o,\", \").concat(l,\")\")},g),this.renderHoverPosition(),this.renderNoResultsMessage(g))),O)}}]),a}(g.Component);f()(Yt,\"propTypes\",{chartData:b.a.array,markerDates:b.a.object,isLoading:b.a.bool,dateRange:b.a.shape({startDate:b.a.string.isRequired,endDate:b.a.string.isRequired}).isRequired,markersFilterDate:b.a.oneOfType([b.a.number,b.a.string]),dispatch:b.a.func.isRequired,height:b.a.number,width:b.a.number.isRequired,xAxisOffset:b.a.number,yAxisOffset:b.a.number,circleYOffset:b.a.number,leftTooltipOffset:b.a.number,topTooltipOffset:b.a.number,circleRadius:b.a.number,tooltipHeight:b.a.number,hoverSpotOffset:b.a.number,ranges:b.a.object,showMarkersContainer:b.a.bool,selectedGraph:b.a.string}),f()(Yt,\"defaultProps\",{markerDates:{},height:400,xAxisOffset:50,yAxisOffset:-25,circleYOffset:2,leftTooltipOffset:3,topTooltipOffset:15,circleRadius:6,tooltipHeight:25,hoverSpotOffset:8,showMarkersContainer:!1,selectedGraph:me.DISCOVERY});var qt=Object(S.connect)((function(e){var a=e.filters,t=a.dateRange,r=a.selectedGraph,n=e.chartData,s=n.items,i=n.isLoading,o=n.firstDate,l=n.lastDate,c=n.lastGraphPoint,u=e.playlistPlacementsData,d=Ot(e),m=\"all\"!==$e(e)&&!Object(k.isEmpty)(d);return{chartData:s,markerDates:d,isLoading:i,markersFilterDate:u.filterDate,dateRange:t,selectedGraph:r,showMarkersContainer:m,ranges:{firstDate:o,lastDate:l,lastGraphPoint:c}}}))(Yt),Ft=function(e){var a=e.storeid,t=e.playlistLink,r=e.playlistTitle,n=e.metadataUnavailable,s=e.onPlaylistLinkClick,i=!n&&r,o=a===fe.AMAZON_MUSIC.storeid,l=i&&!o;return v.a.createElement(\"span\",{className:_a()(\"PlaylistTitle-link\",{\"PlaylistTitle-unavailable-link\":!i},{\"PlaylistTitle-amazon\":o}),onClick:function(){o||s(t)}},i?v.a.createElement(\"span\",{className:\"PlaylistTitle-title\"},r):v.a.createElement(\"span\",{className:\"PlaylistTitle-unavailable\"},Object(O.formatMessage)(\"placements.unavailable\")),l&&v.a.createElement(Ua.ExternalLinkIcon,null))};Ft.displayName=\"PlaylistTitle\",Ft.propTypes={storeid:b.a.number,playlistLink:b.a.string,playlistTitle:b.a.string,metadataUnavailable:b.a.bool,onPlaylistLinkClick:b.a.func.isRequired};var Ht=Ft,Wt=function(e){var a=e.storeid,t=e.image,r=e.showLoader,n=e.playlistTitle,s=e.playlistLink,i=e.playlistAuthor,o=e.metadataUnavailable,l=e.onPlaylistLinkClick;if(!a)return null;var c,u=Ve(a,fe.APPLE_MUSIC);return c=o?v.a.createElement(\"div\",{className:\"PlaylistColumn-playlist-image-unavailable\"},v.a.createElement(Ua.PlaylistPlaceholderIcon,null)):t?v.a.createElement(\"img\",{role:\"presentation\",src:t,className:\"PlaylistColumn-playlist-image\",alt:\"\"}):v.a.createElement(\"span\",{className:\"PlaylistColumn-playlist-image-placeholder\"}),v.a.createElement(\"span\",{className:\"PlaylistColumn\"},c,v.a.createElement(\"span\",{className:\"PlaylistColumn-content\"},v.a.createElement(\"span\",{className:\"PlaylistColumn-\".concat(u.className,\"-small\")}),v.a.createElement(\"span\",null,v.a.createElement(\"span\",{className:\"PlaylistColumn-store-title\"},r?v.a.createElement(\"span\",{className:\"PlaylistColumn-loader\"}):i||u.storename),v.a.createElement(\"br\",null),r?v.a.createElement(\"span\",{className:\"PlaylistColumn-loader PlaylistColumn-loader-playlist\"}):v.a.createElement(Ht,{storeid:a,playlistTitle:n,playlistLink:s,metadataUnavailable:o,onPlaylistLinkClick:l}))))};Wt.displayName=\"PlaylistColumn\",Wt.propTypes={storeid:b.a.number,image:b.a.string,showLoader:b.a.bool,playlistTitle:b.a.string,playlistLink:b.a.string,playlistAuthor:b.a.string,metadataUnavailable:b.a.bool,onPlaylistLinkClick:b.a.func.isRequired};var zt=Wt,Vt=function(e){function a(){var e,t;s()(this,a);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return t=c()(this,(e=d()(a)).call.apply(e,[this].concat(n))),f()(T()(t),\"getStreams\",(function(e){var a=e.streams;return void 0===a?a:at()(a).format(\"0.[0]a\")})),f()(T()(t),\"getPlaylistColumn\",(function(e){var a=e.storeid,r=e.image,n=e.displayLink,s=e.playlistTitle,i=e.playlistLink,o=e.playlistAuthor,l=e.metadataStatus;return a?v.a.createElement(zt,{storeid:a,image:r,showLoader:t.showMetadataLoader(),playlistTitle:s,playlistLink:i,playlistAuthor:o,metadataUnavailable:t.isUnavailableStatus(l),onPlaylistLinkClick:t.handlePlaylistClick(n,a)}):null})),f()(T()(t),\"getPlaylistTitle\",(function(e){var a=e.storeid,r=e.playlistTitle,n=e.playlistLink,s=e.metadataStatus,i=e.displayLink;return n?v.a.createElement(Ht,{storeid:a,playlistTitle:r,playlistLink:n,metadataUnavailable:t.isUnavailableStatus(s),onPlaylistLinkClick:t.handlePlaylistClick(i,a)}):null})),f()(T()(t),\"getDateAdded\",(function(e){var a=e.dateAdded;return t.props.isLoading?a:a||t.renderUnavailableMessage()})),f()(T()(t),\"getFollowers\",(function(e){var a=e.storeid,r=e.followers,n=e.metadataStatus;return a===fe.APPLE_MUSIC.storeid||a===fe.AMAZON_MUSIC.storeid?t.renderNotApplicableMessage():t.showMetadataLoader()?v.a.createElement(\"span\",{className:\"PlaylistPlacements-loader-followers\"}):t.isUnavailableStatus(n)?t.renderUnavailableMessage():r?at()(r).format(\"0.[0]a\"):t.renderUnavailableMessage()})),f()(T()(t),\"isUnavailableStatus\",(function(e){return e===re.REQUIRE_RELOAD})),f()(T()(t),\"showMetadataLoader\",(function(){return t.props.playlistMetadataIsLoading})),f()(T()(t),\"fetchPlaylistMetadata\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],a=t.props,r=a.dispatch,n=a.placements,s=a.playlistMetadataIsLoading,i=a.shouldNotRender;i||r(ca(\"PlaylistPlacements\",n,s,e))})),f()(T()(t),\"handlePageChange\",(function(e){(0,t.props.dispatch)(ha(e))})),f()(T()(t),\"handlePlaylistClick\",(function(e,a){return function(r){if(!Object(k.startsWith)(r,\"nohref://\")){(0,t.props.dispatch)(ya());var n=Qe(r,e,a);window.open(n,\"_blank\")}}})),f()(T()(t),\"buildTrackClickHandler\",(function(e){var a=e.artist,r=e.isrc,n=e.trackName,s=e.upc;return function(){return(0,t.props.dispatch)(ja([{artistName:a,isrc:r,trackName:n,upc:s}]))}})),f()(T()(t),\"buildArtistClickHandler\",(function(e){var a=e.artist,r=e.artistId;return function(){return(0,t.props.dispatch)(La([{artistName:a,artistId:r}]))}})),f()(T()(t),\"renderUnavailableMessage\",(function(){return v.a.createElement(\"span\",{className:\"PlaylistPlacements-unavailable\"},Object(O.formatMessage)(\"placements.unavailable\"))})),f()(T()(t),\"renderNotApplicableMessage\",(function(){return v.a.createElement(\"span\",{className:\"PlaylistPlacements-unavailable\"},Object(O.formatMessage)(\"placements.notApplicable\"))})),f()(T()(t),\"renderNoResultsMessage\",(function(e){return e.length?null:v.a.createElement(\"div\",{className:\"NoPlaylistData\"},Object(O.formatMessage)(\"placements.noData\"))})),f()(T()(t),\"renderPlacementsTable\",(function(e){return v.a.createElement(\"table\",{className:\"ClickableTable table\"},v.a.createElement(\"thead\",null,v.a.createElement(\"tr\",null,v.a.createElement(\"th\",{className:\"ClickableTable-column\"},Object(O.formatMessage)(\"placements.placedOn\")),v.a.createElement(\"th\",{className:\"ClickableTable-column\"},Object(O.formatMessage)(\"placements.trackName\")),v.a.createElement(\"th\",{className:\"ClickableTable-column\"},Object(O.formatMessage)(\"placements.artistName\")),v.a.createElement(\"th\",{className:\"ClickableTable-column\"},Object(O.formatMessage)(\"placements.dateAdded\")),v.a.createElement(\"th\",{className:\"ClickableTable-column\"},Object(O.formatMessage)(\"placements.followers\")),v.a.createElement(\"th\",{className:\"ClickableTable-column\"},Object(O.formatMessage)(\"placements.streams\")))),v.a.createElement(\"tbody\",null,e.map((function(e){return v.a.createElement(\"tr\",{key:e},v.a.createElement(\"td\",{className:\"ClickableTable-cell\"},t.getPlaylistColumn(e)),v.a.createElement(\"td\",{className:\"ClickableTable-cell\"},v.a.createElement(\"span\",{onClick:t.buildTrackClickHandler(e),className:\"ClickableTable-link\"},e.trackName)),v.a.createElement(\"td\",{className:_a()(\"ClickableTable-cell\",\"ClickableTable-cell-capitalize\")},v.a.createElement(\"span\",{onClick:t.buildArtistClickHandler(e),className:\"ClickableTable-link\"},e.artist)),v.a.createElement(\"td\",{className:\"ClickableTable-cell\"},e.dateAdded),v.a.createElement(\"td\",{className:\"ClickableTable-cell\"},t.getFollowers(e)),v.a.createElement(\"td\",{className:\"ClickableTable-cell\"},t.getStreams(e)))}))))})),t}return p()(a,e),o()(a,[{key:\"componentDidMount\",value:function(){this.fetchPlaylistMetadata()}},{key:\"componentDidUpdate\",value:function(e){var a=e.activePage,t=this.props.activePage;this.fetchPlaylistMetadata(t!==a)}},{key:\"renderStores\",value:function(){var e=this.props.stores,a=Ge(e,(function(e){return e.storename})).sort().join(\", \");return v.a.createElement(\"div\",{className:\"PlaylistPlacements-stores\"},Object(O.formatMessage)(\"placements.stores\",{storeNames:a}))}},{key:\"render\",value:function(){var e=this.props,a=e.paginationItems,t=e.activePage,r=e.placements;return e.shouldNotRender?Oe()?this.renderStores():null:v.a.createElement(\"div\",{className:_a()(\"PlaylistPlacements\",{\"PlaylistPlacements-no-pagination\":1===a,PlaylistPlacementsSas:Oe()})},r.length?this.renderPlacementsTable(r):null,a>1?v.a.createElement(\"div\",{className:\"clearfix\"},v.a.createElement(\"div\",{className:\"pull-right\"},v.a.createElement(Ua.Pagination,{currentPage:t,totalPages:a,onChange:this.handlePageChange,size:\"sm\"}))):null,r.length?this.renderNoResultsMessage(r):null,Oe()&&this.renderStores())}}]),a}(g.Component);f()(Vt,\"propTypes\",{dispatch:b.a.func.isRequired,placements:b.a.array,paginationItems:b.a.number,activePage:b.a.number,isLoading:b.a.bool,playlistMetadataIsLoading:b.a.bool,shouldNotRender:b.a.bool,stores:b.a.array}),f()(Vt,\"defaultProps\",{isLoading:!1});var Gt=Object(S.connect)((function(e){var a=e.filters.stores,t=Et(e),r=e.playlistPlacementsData,n=r.isLoading,s=r.playlistMetadataLoadingForPlaylistPlacements,i=r.activePage,o=\"all\"===$e(e),l=!t.length,c=n||o||l;return{stores:a,placements:t,paginationItems:kt(e),activePage:i,isLoading:n,playlistMetadataIsLoading:s,shouldNotRender:c}}))(Vt),Qt=function(e){return{type:\"DISPLAY_TOP_PLACEMENTS_PAGE\",page:e}},Kt=function(e){function a(){var e,t;s()(this,a);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return t=c()(this,(e=d()(a)).call.apply(e,[this].concat(n))),f()(T()(t),\"isUnavailableStatus\",(function(){return t.props.metadataStatus===re.REQUIRE_RELOAD})),f()(T()(t),\"fillImage\",(function(){var e=t.props,a=e.image,r=e.isLoading;t._image&&(t._image.style.backgroundImage=a&&!r?\"url(\".concat(a,\")\"):null)})),f()(T()(t),\"handleTileClick\",(function(e){var a=e.target;if(!t.isAmazonUnlimited()){var r=t.props,n=r.playlistLink,s=r.displayLink,i=r.storeid;if(!Object(k.startsWith)(n,\"nohref://\")&&t._playlistTitle.contains(a)){var o=Qe(n,s,i);window.open(o,\"_blank\")}}})),f()(T()(t),\"handleTrackClick\",(function(){var e=t.props,a=e.artist,r=e.isrc,n=e.trackName,s=e.upc;(0,e.onTrackClick)({artist:a,isrc:r,trackName:n,upc:s})})),f()(T()(t),\"handleArtistClick\",(function(){var e=t.props,a=e.artist,r=e.artistId;(0,e.onArtistClick)({artist:a,artistId:r})})),f()(T()(t),\"isSpotify\",(function(){return t.props.storeid===fe.SPOTIFY.storeid})),f()(T()(t),\"isAmazonUnlimited\",(function(){return t.props.storeid===fe.AMAZON_MUSIC.storeid})),f()(T()(t),\"isAppleMusic\",(function(){return t.props.storeid===fe.APPLE_MUSIC.storeid})),f()(T()(t),\"renderImageOrPlaceholder\",(function(){return t.isUnavailableStatus()?v.a.createElement(\"div\",{className:\"PlacementsTile-image-placeholder-inner\"},v.a.createElement(Ua.PlaylistPlaceholderIcon,null)):v.a.createElement(\"div\",{className:\"PlacementsTile-image-column-inner\",ref:function(e){t._image=e}})})),f()(T()(t),\"renderPlaylistTitleForStore\",(function(e){return t.isAmazonUnlimited()?v.a.createElement(\"span\",{className:\"PlacementsTile-playlist-title\"},v.a.createElement(\"span\",{className:\"PlacementsTile-playlist-title-available-nolink\"},e)):v.a.createElement(\"span\",{className:\"PlacementsTile-playlist-title-link\"},v.a.createElement(\"span\",{className:\"PlacementsTile-playlist-title-available\"},e),v.a.createElement(Ua.ExternalLinkIcon,null))})),f()(T()(t),\"renderPlaylistTitleContent\",(function(){var e=t.props,a=e.playlistTitle;return e.isLoading?v.a.createElement(\"span\",{className:\"PlacementsTile-loader PlacementsTile-loader-playlist\"}):!t.isUnavailableStatus()&&a?t.renderPlaylistTitleForStore(a):v.a.createElement(\"i\",{className:\"PlacementsTile-playlist-title-unavailable\"},Object(O.formatMessage)(\"topPlacements.unavailable\"))})),f()(T()(t),\"renderPlaylistTitle\",(function(){return v.a.createElement(\"div\",{className:\"PlacementsTile-playlist-title\",ref:function(e){t._playlistTitle=e}},t.renderPlaylistTitleContent())})),f()(T()(t),\"renderImage\",(function(){return t.isAmazonUnlimited()?null:t.isAppleMusic()||t.isSpotify()?v.a.createElement(\"div\",{className:\"PlacementsTile-image-column col-xs-4\"},t.renderImageOrPlaceholder()):null})),t}return p()(a,e),o()(a,[{key:\"componentDidMount\",value:function(){this.isAmazonUnlimited()||this.fillImage()}},{key:\"componentDidUpdate\",value:function(){this.isAmazonUnlimited()||this.fillImage()}},{key:\"renderStoreLogo\",value:function(){var e=this.props,a=e.storeid,t=e.playlistAuthor,r=e.isLoading,n=Ve(a,fe.APPLE_MUSIC);return v.a.createElement(\"div\",null,v.a.createElement(\"span\",{className:\"PlacementsTile-\".concat(n.className)}),v.a.createElement(\"span\",{className:\"PlacementsTile-store-title\"},r?v.a.createElement(\"span\",{className:\"PlacementsTile-loader\"}):t||n.name))}},{key:\"renderTrackTitleAndArtistWithClick\",value:function(){var e=this.props,a=e.trackName,t=e.artist;return a?v.a.createElement(\"div\",null,v.a.createElement(\"p\",{className:\"PlacementsTile-track-title-and-artist\"},v.a.createElement(\"b\",{className:\"PlacementsTile-track-title\",onClick:this.handleTrackClick},'\"',a,'\"'),\" \",Object(O.formatMessage)(\"by\"),\" \",v.a.createElement(\"span\",{className:\"PlacementsTile-artist-name\",onClick:this.handleArtistClick},t))):null}},{key:\"renderFollowers\",value:function(){var e=this.props.isLoading;if(this.isAppleMusic()||this.isAmazonUnlimited())return a.getNotApplicableMessage();if(e)return v.a.createElement(\"span\",{className:\"PlacementsTile-loader PlacementsTile-loader-followers\"});if(this.isUnavailableStatus())return a.getUnavailableMessage();var t=this.props.followers;return t?at()(t).format(\"0.[0]a\"):this.isSpotify()?v.a.createElement(\"span\",{className:\"PlacementsTile-followers-unavailable\"},\"—\"):a.getUnavailableMessage()}},{key:\"renderDateAdded\",value:function(){var e=this.props.dateAdded;return e?V()(e).format(\"YYYY-MM-DD\"):a.getUnavailableMessage()}},{key:\"render\",value:function(){var e=this.props.streams;return v.a.createElement(\"div\",{className:_a()(\"PlacementsTile\",\"PlacementsTile-no-pointer-white\",{PlacementsTileSas:Oe()}),onClick:this.handleTileClick},v.a.createElement(\"div\",{className:\"row\"},this.renderImage(),v.a.createElement(\"div\",{className:_a()(\"PlacementsTile-column\",{\"col-xs-8\":this.isSpotify(),\"col-xs-12\":!this.isSpotify()})},v.a.createElement(\"div\",{className:\"PlacementsTile-title\"},this.renderStoreLogo(),this.renderPlaylistTitle()),v.a.createElement(\"div\",{className:\"PlacementsTile-info\"},this.renderTrackTitleAndArtistWithClick(),v.a.createElement(\"div\",{className:\"PlacementsTile-separator\"}),v.a.createElement(\"div\",{className:\"PlacementsTile-columns row clearfix\"},v.a.createElement(\"div\",{className:\"PlacementsTile-info-column col-xs-4\"},v.a.createElement(\"p\",{className:\"PlacementsTile-info-heading\"},Object(O.formatMessage)(\"topPlacements.dateAdded\")),v.a.createElement(\"b\",{className:\"PlacementsTile-info-value\"},this.renderDateAdded())),v.a.createElement(\"div\",{className:\"PlacementsTile-info-column col-xs-4\"},v.a.createElement(\"p\",{className:\"PlacementsTile-info-heading\"},Object(O.formatMessage)(\"topPlacements.followers\")),v.a.createElement(\"b\",{className:\"PlacementsTile-info-value\"},this.renderFollowers())),v.a.createElement(\"div\",{className:\"PlacementsTile-info-column col-xs-4\"},v.a.createElement(\"p\",{className:\"PlacementsTile-info-heading\"},Object(O.formatMessage)(\"topPlacements.streams\")),v.a.createElement(\"b\",{className:\"PlacementsTile-info-value\"},at()(e).format(\"0.[0]a\"))))))))}}],[{key:\"getUnavailableMessage\",value:function(){return v.a.createElement(\"span\",{className:\"PlacementsTile-info-value-unavailable\"},Object(O.formatMessage)(\"topPlacements.unavailable\"))}},{key:\"getNotApplicableMessage\",value:function(){return v.a.createElement(\"span\",{className:\"PlacementsTile-info-value-not-applicable\"},Object(O.formatMessage)(\"topPlacements.notApplicable\"))}}]),a}(g.Component);f()(Kt,\"propTypes\",{image:b.a.string,isrc:b.a.string,storeid:b.a.number.isRequired,playlistAuthor:b.a.string,playlistTitle:b.a.string,playlistLink:b.a.string,displayLink:b.a.string,dateAdded:b.a.string,followers:b.a.number,streams:b.a.number.isRequired,trackName:b.a.string,artist:b.a.string,artistId:b.a.number,upc:b.a.oneOfType([b.a.string,b.a.number]),onTrackClick:b.a.func.isRequired,onArtistClick:b.a.func,isLoading:b.a.bool,metadataStatus:b.a.oneOf(Object(k.values)(re))});var Bt=Kt,Zt=function(e){function a(){var e,t;s()(this,a);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return t=c()(this,(e=d()(a)).call.apply(e,[this].concat(n))),f()(T()(t),\"fetchPlaylistMetadata\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],a=t.props,r=a.dispatch,n=a.placements,s=a.playlistMetadataIsLoading;r(ca(\"TopPlacements\",n,s,e))})),f()(T()(t),\"handlePageChange\",(function(e){(0,t.props.dispatch)(Qt(e))})),f()(T()(t),\"handleTrackClick\",(function(e){(0,t.props.dispatch)(ja([{artistName:e.artist,isrc:e.isrc,trackName:e.trackName,upc:e.upc}]))})),f()(T()(t),\"handleArtistClick\",(function(e){(0,t.props.dispatch)(La([{artistName:e.artist,artistId:e.artistId}]))})),f()(T()(t),\"renderHeading\",(function(){var e=t.props,a=e.amount,r=e.total,n=e.selectedTrack,s=void 0!==r?Object(O.formatMessage)(\"topPlacements.heading\",{count:Math.min(r,a),amount:at()(r).format(\"0.[0]a\")}):Object(O.formatMessage)(\"topPlacements.headingNoData\"),i=n?Object(O.formatMessage)(\"topPlacements.headingParagraph\",{track:v.a.createElement(\"b\",null,'\"'.concat(n.trackName,'\"'))}):Object(O.formatMessage)(\"topPlacements.headingParagraphNoTrack\");return v.a.createElement(\"div\",null,v.a.createElement(\"h2\",null,s,v.a.createElement(Ua.Help,{message:Object(O.formatMessage)(\"topPlacements.headingTooltip\"),id:\"heading-tooltip\"})),void 0!==r?v.a.createElement(\"h4\",{className:\"TopPlacements-heading-paragraph\"},i):null)})),f()(T()(t),\"renderNoResultsMessage\",(function(){return v.a.createElement(\"div\",{className:\"TopPlacements-no-data\"},v.a.createElement(\"h4\",{className:\"TopPlacements-no-data-header\"},Object(O.formatMessage)(\"topPlacements.noDataHeading\")),v.a.createElement(\"p\",{className:\"TopPlacements-no-data-paragraph\"},Object(O.formatMessage)(\"topPlacements.noDataParagraph\")))})),t}return p()(a,e),o()(a,[{key:\"componentDidMount\",value:function(){this.fetchPlaylistMetadata()}},{key:\"componentDidUpdate\",value:function(e){var a=e.activePage,t=this.props.activePage;this.fetchPlaylistMetadata(t!==a)}},{key:\"render\",value:function(){var e=this,a=this.props,t=a.placements,r=a.rows,n=a.activePage,s=a.paginationItems,i=a.isLoading,o=a.playlistMetadataIsLoading,l=a.selectedTrack,c=a.width,u=a.stores,d=Ge(u,(function(e){return e.storename})).sort().join(\", \");return v.a.createElement(\"div\",{className:_a()(\"TopPlacements clearfix\"),style:{width:c}},this.renderHeading(),v.a.createElement(Ua.LoadingStateWrapper,{isLoading:i},v.a.createElement(\"div\",null,t.length>0?v.a.createElement(\"div\",null,Object(k.range)(r).map((function(a){var r=t[2*a],n=t[2*a+1];return v.a.createElement(\"div\",{key:a,className:\"TopPlacements-row row\"},v.a.createElement(\"div\",{className:\"TopPlacements-column col-xs-6\"},v.a.createElement(Bt,ut()({},r,{selectedTrack:l,onTrackClick:e.handleTrackClick,onArtistClick:e.handleArtistClick,isLoading:o}))),n?v.a.createElement(\"div\",{className:\"TopPlacements-column col-xs-6\"},v.a.createElement(Bt,ut()({},n,{selectedTrack:l,onTrackClick:e.handleTrackClick,onArtistClick:e.handleArtistClick,isLoading:o}))):null)}))):this.renderNoResultsMessage(),s>1?v.a.createElement(\"div\",{className:\"TopPlacements-separator\"}):null,Oe()&&v.a.createElement(\"div\",{className:\"pull-left\"},v.a.createElement(\"div\",{className:\"TopPlacements-stores\"},Object(O.formatMessage)(\"topPlacements.stores\",{storeNames:d}))),s>1?v.a.createElement(\"div\",{className:\"pull-right\"},v.a.createElement(Ua.Pagination,{currentPage:n,totalPages:s,onChange:this.handlePageChange,size:\"sm\"})):null)))}}]),a}(g.Component);f()(Zt,\"propTypes\",{dispatch:b.a.func.isRequired,selectedTrack:b.a.object,placements:b.a.array,amount:b.a.number,total:b.a.number,rows:b.a.number,paginationItems:b.a.number,activePage:b.a.number,isLoading:b.a.bool,playlistMetadataIsLoading:b.a.bool,width:b.a.oneOfType([b.a.string,b.a.number]),stores:b.a.array}),f()(Zt,\"defaultProps\",{width:\"100%\"});var Jt=Object(S.connect)((function(e){var a=e.playlistPlacementsData,t=a.isLoading,r=a.playlistMetadataLoadingForTopPlacements,n=e.filters,s=n.track,i=n.stores,o=e.topPlacementsData.activePage,l=ea(e),c=aa(e),u=l.slice(0,40),d=4*(o-1),m=u.slice(d,d+4),p=Math.ceil(m.length/2),h=Math.ceil(Math.min(u.length,40)/4);return{stores:i,selectedTrack:s,amount:u.length,total:c,placements:m,rows:p,paginationItems:h,activePage:o,isLoading:t,playlistMetadataIsLoading:r}}))(Zt),Xt=t(\"rKB8\"),$t=t(\"ZSx1\"),er=t.n($t);function ar(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function tr(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?ar(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ar(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var rr={},nr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rr,a=arguments.length>1?arguments[1]:void 0,t=a.type,r=a.payload,n=a.date,s=a.error,i=a.lastDate;switch(t){case\"REQUEST_CHART_IN_PROGRESS\":return tr({},e,{isLoading:!0});case\"REQUEST_CHART_SUCCESS\":return tr({},e,{},r,{isLoading:!1});case\"REQUEST_CHART_ERROR\":return tr({},e,{error:s,isLoading:!1});case\"HOVER_CHART_DATE\":return tr({},e,{hoverDate:n,hoverLastDate:i});default:return e}};function sr(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function ir(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?sr(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):sr(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var or={all:{},activePage:1},lr=function(e,a,t,r){var n=e[a].items;return n?n.map((function(e){var a=e.playlistLink,n=e.metadataStatus,s=Fe()(e,[\"playlistLink\",\"metadataStatus\"]),i=re.LOADED,o=Object(k.findIndex)(t,(function(e){return e.playlistLink===a}));if(o>=0){var l=t[o],c=l.statusCode,u=Fe()(l,[\"statusCode\"]);return Object(k.defaultTo)(c,te)!==te&&(i=re.REQUIRE_RELOAD),ir({},s,{},u,{metadataStatus:i})}return Object(k.includes)(r,a)?ir({playlistLink:a,metadataStatus:i=re.REQUIRE_RELOAD},s):(i=Object(k.defaultTo)(n,re.NOT_LOADED),ir({playlistLink:a,metadataStatus:i},s))})):n},cr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:or,a=arguments.length>1?arguments[1]:void 0,t=a.type,r=a.caller,n=a.placementKey,s=a.payload,i=a.error,o=a.date,l=a.page,c=a.playlistLinks;switch(t){case\"REQUEST_PLAYLIST_PLACEMENTS_IN_PROGRESS\":return ir({},e,{isLoading:!0});case\"REQUEST_PLAYLIST_PLACEMENTS_SUCCESS\":return ir({},e,{},s,{activePage:1,filterDate:null,isLoading:!1});case\"REQUEST_PLAYLIST_PLACEMENTS_ERROR\":return ir({},e,{error:i,isLoading:!1});case\"REQUEST_PLAYLIST_METADATA_IN_PROGRESS\":return ir({},e,f()({},\"playlistMetadataLoadingFor\".concat(r),!0));case\"REQUEST_PLAYLIST_METADATA_SUCCESS\":var u;return ir({},e,(u={},f()(u,\"playlistMetadataLoadingFor\".concat(r),!1),f()(u,n,ir({},e[n],{items:lr(e,n,s,c)})),u));case\"REQUEST_PLAYLIST_METADATA_ERROR\":var d;return ir({},e,(d={},f()(d,\"playlistMetadataLoadingFor\".concat(r),!1),f()(d,n,ir({},e[n],{items:lr(e,n,[],c)})),d));case\"TOGGLE_PLACEMENTS_SELECTION\":return ir({},e,{activePage:1,filterDate:e.filterDate===o?null:o});case\"DISPLAY_PLAYLIST_PLACEMENTS_PAGE\":return ir({},e,{activePage:l});default:return e}};function ur(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function dr(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?ur(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ur(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var mr={activePage:1},pr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:mr,a=arguments.length>1?arguments[1]:void 0,t=a.type,r=a.page;switch(t){case\"REQUEST_PLAYLIST_PLACEMENTS_SUCCESS\":return{activePage:1};case\"DISPLAY_TOP_PLACEMENTS_PAGE\":return dr({},e,{activePage:r});default:return e}};function hr(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function fr(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?hr(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):hr(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var gr={currentSearch:\"\",artists:{},tracks:{},results:{},isLoading:!1},vr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gr,a=arguments.length>1?arguments[1]:void 0,t=a.type,r=a.searchString,n=a.payload,s=void 0===n?{}:n,i=a.error;switch(t){case\"SEARCH_STRING_UPDATE\":return fr({},e,{currentSearch:r,isLoading:!0});case\"REQUEST_SEARCH_ARTISTS_SUCCESS\":return fr({},e,{isLoading:!1,artists:s,results:fr({},e.artistIds,f()({},e.currentSearch,Object(k.values)(s).map((function(e){return e.artistId}))))});case\"REQUEST_SEARCH_TRACKS_SUCCESS\":return fr({},e,{isLoading:!1,tracks:s,results:fr({},e.isrcs,f()({},e.currentSearch,Object(k.values)(s).map((function(e){return e.isrc}))))});case\"REQUEST_SEARCH_ERROR\":return fr({},e,{error:i,isLoading:!1});case\"REQUEST_IMAGE_SUCCESS\":return fr({},e,{tracks:fr({},e.tracks,f()({},s.isrc,fr({},e.tracks[s.isrc],{imageUrl:s.path})))});case\"REQUEST_IMAGE_ERROR\":return fr({},e,{tracks:fr({},e.tracks,f()({},s.isrc,fr({},e.tracks[s.isrc],{imageUrl:Ua.PlaylistPlaceholderIcon.imageUrl})))});case\"REQUEST_RELEASE_DATA_SUCCESS\":var o=s.isrcs;return o&&o[0]?fr({},e,{tracks:fr({},e.tracks,f()({},\"\".concat(o.join(\",\")),fr({},e.tracks[\"\".concat(o.join(\",\"))],{releasedDate:s.payload.releaseDate})))}):e;default:return e}},yr=t(\"cr+I\");Object(P.configureUrlQuery)({history:N,addChangeHandlers:!1});var br=Object(k.map)(fe,(function(e){return e.storeid})),Sr={stores:{type:P.UrlQueryParamTypes.numericArray,queryParam:ne,validate:function(e){return e&&e.every((function(e){return Object(k.includes)(br,e)}))}},artistIds:{type:P.UrlQueryParamTypes.numericArray,queryParam:se,validate:function(e){return e&&e.every((function(e){return/^[0-9]+$/.test(e)}))}},isrcs:{type:P.UrlQueryParamTypes.array,queryParam:ie},tags:{type:P.UrlQueryParamTypes.array,queryParam:oe},period:{type:P.UrlQueryParamTypes.string,queryParam:le,validate:function(e){return e&&Object(k.invert)(de)[e]}},selectedGraph:{type:P.UrlQueryParamTypes.string,queryParam:ue,validate:function(e){return e&&Object(k.invert)(pe)[e]}},dateRange:{type:P.UrlQueryParamTypes.array,queryParam:ce,validate:function(e){return e&&e.every((function(e){return/^20\\d\\d-[01]\\d-[0-3]\\d$/.test(e)}))}}},Or=function(e,a){var t=Object(P.urlQueryDecoder)(Sr)(Object(yr.parse)(a||window.location.search)),r=t.tags,n=t.artistIds,s=t.isrcs,i=t.period,o=t.dateRange,l=t.stores,c={stores:l,tags:r,selectedGraph:t.selectedGraph};if(r&&n?(c.artistsOrTracks=B,c.artistIds=n,delete c.isrcs):r&&s&&(c.artistsOrTracks=Z,c.isrcs=s),i)c.period=Object(k.invert)(de)[i],c.dateRange=Le(c.period,l||e.stores);else if(o){var u=Ke(l||e.stores);V()(o[0]).isSameOrAfter(V()(u.startDate))&&V()(o[1]).isSameOrBefore(V()(u.endDate))&&V()(o[0]).isBefore(V()(o[1]))?(c.period=Q.CUSTOM,c.dateRange={startDate:o[0],endDate:o[1]}):Object(P.replaceInUrlQuery)(ce,\"\")}return Object(k.defaults)(c,Object(k.cloneDeep)(e))};function Dr(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function Er(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?Dr(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Dr(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var Tr=function(e){var a=e.isrcs,t=e.artistIds,r=e.artistsOrTracks,n=e.dateRange,s=e.stores,i=\"artists\"===r?t:a;return[].concat(W()(Object(k.sortBy)(i)),W()(Object(k.sortBy)(s)),[n.startDate,n.endDate]).join(\"_\")},kr={stores:[fe.APPLE_MUSIC.storeid,fe.AMAZON_MUSIC.storeid,fe.SPOTIFY.storeid],period:Q.MONTH,artistsOrTracks:B,dateRange:Le(Q.MONTH,[fe.SPOTIFY.storeid]),selectedGraph:me.DISCOVERY},Pr=Or(kr);Pr.filterIdentifier=Tr({stores:Pr.stores,dateRange:Pr.dateRange,artistsOrTracks:Pr.artistsOrTracks});var Ar=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pr,a=arguments.length>1?arguments[1]:void 0,t=a.type,r=a.selected,n=a.payload;switch(t){case\"FILTER_UPDATE\":var s=Er({},e,{},n);return Er({},s,{filterIdentifier:Tr(s)});case\"FILTER_INITILIZATION\":var i=Er({},e,{},Or(kr));return Object(k.isMatch)(e,i)?e:Er({},i,{filterIdentifier:Tr(i)});case\"FILTER_ARTIST_TRACK_SELECT\":var o=Er({},e,{tags:[],isrcs:[],artistIds:[],artistsOrTracks:r});return Er({},o,{filterIdentifier:Tr(o)});case\"REQUEST_RELEASE_DATA_SUCCESS\":return Er({},e,{track:Er({},e.track,{},n.payload)});case\"REQUEST_IMAGE_SUCCESS\":var l=e.track;return l&&l.isrc===n.isrc?Er({},e,{track:Er({},l,{imageUrl:n.path})}):e;case\"SET_SELECTED_STORES\":if(Object(k.isEqual)(n.decodedValue,e.stores))return e;var c=Er({},e,{stores:n.decodedValue});return Er({},c,{filterIdentifier:Tr(c)});case\"SET_SELECTED_ARTISTS\":var u=n.decodedValue;if(Object(k.isEqual)(u,e.artistIds))return e;var d=Er({},e,{artistIds:u});return Er({},d,{filterIdentifier:Tr(d)});case\"SET_SELECTED_TRACKS\":var m=n.decodedValue;if(Object(k.isEqual)(m,e.isrcs))return e;var p=Er({},e,{isrcs:m});return Er({},p,{filterIdentifier:Tr(p)});case\"SET_SELECTED_TAGS\":var h=n.decodedValue;return Object(k.isEqual)(h,e.tags)?e:Er({},e,{tags:h});case\"SET_SELECTED_PERIOD\":var f=n.decodedValue;return Object(k.isEqual)(f,e.period)?e:Er({},e,{period:f});case\"SET_SELECTED_DATERANGE\":var g={startDate:n.decodedValue[0],endDate:n.decodedValue[1]};if(Object(k.isEqual)(g,e.dateRange))return e;var v=Er({},e,{dateRange:g});return Er({},v,{filterIdentifier:Tr(v)});case\"SET_SELECTED_GRAPH\":var y=n.decodedValue,b=Object(k.invert)(me)[y]?y:me.DISCOVERY;return Object(k.isEqual)(b,e.selectedGraph)?e:Er({},e,{selectedGraph:b});default:return e}};function Nr(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function Rr(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?Nr(Object(t),!0).forEach((function(a){f()(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Nr(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}var Cr,Mr=Object(Xt.applyMiddleware)(er.a,Object(P.urlQueryMiddleware)({shortcircuit:!1}),Object(fa.createTracker)()),jr={},Lr=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||Xt.compose,Ir=function(){return Cr||(Cr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jr;return Object(Xt.createStore)(Object(Xt.combineReducers)(Rr({},r)),e,Lr(Mr))}()),Cr},_r=(t(\"QdDn\"),function(e){function a(){return s()(this,a),c()(this,d()(a).apply(this,arguments))}return p()(a,e),o()(a,[{key:\"componentDidMount\",value:function(){window.scrollTo(0,0)}},{key:\"render\",value:function(){return function(e){var a=e.hasAuthentication;ve=void 0===a?ge:a,ye=e}(this.context.identity),v.a.createElement(S.Provider,{store:Ir()},v.a.createElement(xa,null))}}]),a}(v.a.PureComponent));f()(_r,\"contextTypes\",{identity:b.a.object});a.default=_r},vpzt:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"主頁\",\"sorrySomethingWentWrong\":\"抱歉，出現錯誤。\",\"temporaryError\":\"伺服器出現暫時性錯誤。不用擔心，您的數據是安全的且The Orchard團隊已獲得通知。\",\"tryAgain\":\"過一段時間後再嘗試一次，或返回\"},\"filters\":{\"allStores\":\"所有平臺\",\"apply\":\"應用\",\"artists\":\"藝術家\",\"cancel\":\"取消\",\"checkSpelling\":\"確認所有文字皆拼寫正確。\",\"customDateRange\":\"自訂範圍\",\"done\":\"完成\",\"from\":\"自\",\"invalidDateRangeDetail\":\"確認起始日期早於結束日期\",\"invalidDateRangeDetailOverAYear\":\"確保日期範圍不超過一年。\",\"invalidDateRangeHeader\":\"請選擇一個有效的日期範圍\",\"lastMonth\":\"過去30天\",\"lastWeek\":\"過去7天\",\"lastYear\":\"過去12個月\",\"noMatch\":\"您所檢索的\\'{query}’並無任何{searchName}。\",\"oneMonth\":\"一個月\",\"oneWeek\":\"一周\",\"oneYear\":\"一年\",\"releaseDateLabel\":\"發行日期\",\"releaseNameLabel\":\"發行名稱\",\"searchArtistsPlaceholder\":\"使用藝術家名稱檢索藝術家\",\"searchError\":\"無法讀取搜尋結果\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"透過曲目名稱、藝術家或ISRC檢索曲目\",\"temporaryError\":\"伺服器出現暫時性錯誤。不用擔心，您的數據是安全的且The Orchard團隊已獲得通知。\",\"to\":\"至\",\"tracks\":\"曲目\",\"tryAgain\":\"過一段時間後再嘗試一次，或返回\"},\"graph\":{\"dataUnavailable\":\"無可用數據\",\"noData\":\"於選定的期間內無在線播放數據。\"},\"placements\":{\"artist\":\"藝術家\",\"artistName\":\"藝術家姓名\",\"author\":\"策劃人\",\"dateAdded\":\"新增日期\",\"followers\":\"關注\",\"headingForMonth\":\"上月熱門收錄播放清單\",\"headingForWeek\":\"上周熱門收錄播放清單\",\"headingTooltip\":\"於選定的時限內每一個至少生成100次在線播放的曲目清單\",\"headingWithDate\":\"於{date}{placements}收錄\",\"noData\":\"於選定期間內並無播放清單之設置。\",\"notApplicable\":\"不可應用\",\"placedOn\":\"收錄於\",\"playlistTitle\":\"播放清單名稱\",\"store\":\"平臺\",\"stores\":\"來源：{storeNames}\",\"streams\":\"在線播放\",\"track\":\"曲目\",\"trackName\":\"曲目名稱\",\"unavailable\":\"不可用\"},\"streamsSummary\":{\"activeDiscovery\":\"主動發現\",\"activeDiscoveryTooltip\":\"來自於聽眾的主動發現的在線播放，例如藝術家主頁、專輯主頁與檢索結果主頁。\",\"heading\":\"他們如何聆聽\",\"headingHint\":\"於這段期間的新設置\",\"listenersCollection\":\"聽眾收藏集\",\"listenersCollectionTooltip\":\"來自聽眾個人資料庫、保存收藏集或自行創建播放清單的在線播放。\",\"ofTotalStreams\":\"占總在線播放\",\"passiveDiscovery\":\"被動發現\",\"passiveDiscoveryTooltip\":\"來自於聽眾的被動發現的在線播放，例如廣播電台、編輯播放清單與其他人的播放清單。\",\"savesToCollection\":\"儲存至收藏集中\",\"skipRate\":\"跳轉率\",\"streams\":\"在線播放\",\"totalStreams\":\"總在線播放次數\"},\"topPlacements\":{\"dateAdded\":\"新增日期\",\"followers\":\"關注\",\"heading\":\"熱門{count}的{amount}收錄\",\"headingNoData\":\"熱門收錄\",\"headingParagraph\":\"於這段期間內此些收錄生成最多{track}在線播放。\",\"headingParagraphNoTrack\":\"於這段期間內此些收錄生成您最多音樂在線播放。\",\"headingTooltip\":\"於選定的時限內每一個至少生成100次在線播放的曲目清單\",\"noDataHeading\":\"這段期間內無熱門收錄\",\"noDataParagraph\":\"於選定的時限內，每當您的曲目生成100次以上在線播放時，收錄會出現於此\",\"notApplicable\":\"不可應用\",\"stores\":\"來源：{storeNames}\",\"streams\":\"在線播放\",\"unavailable\":\"不可用\"}}')},wy2R:function(e,a){e.exports=i},y1nA:function(e){e.exports=JSON.parse('{\"errors\":{\"homeLink\":\"home\",\"sorrySomethingWentWrong\":\"Sorry, etwas ist schiefgegangen.\",\"temporaryError\":\"Der Server ist vorübergehend nicht erreichbar. Deine Daten sind aber sicher und das Team von The Orchard wurde informiert.\",\"tryAgain\":\"Versuche es in ein paar Minuten erneut, oder gehe zurück.\"},\"filters\":{\"allStores\":\"Alle Quellen\",\"apply\":\"Anwenden\",\"artists\":\"Künstler\",\"cancel\":\"Abbrechen\",\"checkSpelling\":\"Stelle sicher, dass alle Wörter richtig geschrieben sind.\",\"customDateRange\":\"Eigener Zeitraum\",\"done\":\"Fertig\",\"from\":\"Von\",\"invalidDateRangeDetail\":\"Bitte stelle sicher, dass das \\\\\"Von\\\\\"-Datum vor dem \\\\\"Bis\\\\\"-Datum liegt.\",\"invalidDateRangeDetailOverAYear\":\"Stelle sicher, dass der Zeitraum nicht länger als ein Jahr ist\",\"invalidDateRangeHeader\":\"Bitte wähle einen gültigen Zeitraum.\",\"lastMonth\":\"Letzte 30 Tage\",\"lastWeek\":\"Letzte 7 Tage\",\"lastYear\":\"Letzte 12 Monate\",\"noMatch\":\"Deine Suche ‘{query}’ ergibt keinen Treffer für {searchName}.\",\"oneMonth\":\"1 Monat\",\"oneWeek\":\"1 Woche\",\"oneYear\":\"1 Jahr\",\"releaseDateLabel\":\"Release Datum\",\"releaseNameLabel\":\"Release Name\",\"searchArtistsPlaceholder\":\"Künstler nach Name des Künstlers suchen\",\"searchError\":\"Suchergebnisse können leider nicht abgerufen werden.\",\"searchNameLabel\":\"{searchNameDisplay}\",\"searchPlaceholder\":\"Suche Tracks nach Name, Künstler oder ISRC\",\"temporaryError\":\"Der Server ist vorübergehend nicht erreichbar. Deine Daten sind aber sicher und das Team von The Orchard wurde informiert.\",\"to\":\"Bis\",\"tracks\":\"Tracks\",\"tryAgain\":\"Versuche es in ein paar Minuten erneut, oder gehe zurück.\"},\"graph\":{\"dataUnavailable\":\"Daten nicht verfübar\",\"noData\":\"Keine Streamingdaten im ausgewählten Zeitraum.\"},\"placements\":{\"artist\":\"Artist\",\"artistName\":\"Künstlername\",\"author\":\"Erstellt von\",\"dateAdded\":\"Zugefügt am\",\"followers\":\"Follower\",\"headingForMonth\":\"Top Platzierungen in Playlisten im letzen Monat\",\"headingForWeek\":\"Top Platzierungen in Playlisten in der letzten Woche\",\"headingTooltip\":\"Wir zeigen nur Playlisten, die im ausgewählten Zeitraum mindestens 100 Streams für deine(n) Track(s) generiert haben\",\"headingWithDate\":\"{placements} Platzierung(en) am {date}\",\"noData\":\"Keine Streamingdaten im ausgewählten Zeitraum.\",\"notApplicable\":\"Nicht zutreffend\",\"placedOn\":\"Platziert in\",\"playlistTitle\":\"Playlist-Titel\",\"store\":\"Quelle\",\"stores\":\"Quelle: {storeNames}\",\"streams\":\"Streams\",\"track\":\"Track\",\"trackName\":\"Track Titel\",\"unavailable\":\"Nicht verfügbar\"},\"streamsSummary\":{\"activeDiscovery\":\"Aktive Entdeckungen\",\"activeDiscoveryTooltip\":\"Streams aus Quellen, die aktiv von Hörern besucht werden, wie Künstlerseiten, Abumseiten und Suchergebnisse.\",\"heading\":\"Wie gehört wird\",\"headingHint\":\"neue Platzierung(en) in diesem Zeitraum\",\"listenersCollection\":\"Collection von Zuhörern.\",\"listenersCollectionTooltip\":\"Streams aus perönlichen Bibliotheken von Hörern, gespeicherten Sammlungen oder selbst erstellte Playlists\",\"ofTotalStreams\":\"von allen Streams\",\"passiveDiscovery\":\"Passive Entdeckungen\",\"passiveDiscoveryTooltip\":\"Streams aus Quellen, die eher passiv von Hörern entdeckt werden, wie z.B. Radiostationen, redaktionelle oder von anderen erstellte Playlisten.\",\"savesToCollection\":\"Speicherung in Sammlung\",\"skipRate\":\"Skip-Rate\",\"streams\":\"Streams\",\"totalStreams\":\"Total Streams\"},\"topPlacements\":{\"dateAdded\":\"Zugefügt am\",\"followers\":\"Follower\",\"heading\":\"Top {count} von {amount} Platzierungen\",\"headingNoData\":\"Top Platzierungen\",\"headingParagraph\":\"Diese Platzierungen haben die meisten Streams für {track} in diesem Zeitraum generiert.\",\"headingParagraphNoTrack\":\"Diese Platzierungen haben die meisten Streams für deine Musik in diesem Zeitraum generiert.\",\"headingTooltip\":\"Wir zeigen nur Playlisten, die im ausgewählten Zeitraum mindestens 100 Streams für deine(n) Track(s) generiert haben\",\"noDataHeading\":\"Keine Top Platzierungen für diesen Zeitraum\",\"noDataParagraph\":\"Platzierungen erscheinen hier, wenn sie mehr als 100+ Streams für deine(n) Track(s) im gewählten Zeitraum generiert haben.\",\"notApplicable\":\"Nicht zutreffend\",\"stores\":\"Quelle: {storeNames}\",\"streams\":\"Streams\",\"unavailable\":\"Nicht verfügbar\"}}')},zUGM:function(e){e.exports=JSON.parse('{\"errors\":{\"sorrySomethingWentWrong\":\"Sorry, something went wrong.\",\"temporaryError\":\"The server encountered a temporary error. Don\\'t worry, your data is safe and The Orchard team has been notified.\",\"tryAgain\":\"Try again in a few minutes, or head back\",\"homeLink\":\"home\"},\"topPlacements\":{\"heading\":\"Top {count} of {amount} Placements\",\"headingTooltip\":\"We only show playlists that generated 100+ streams for your track(s) in the selected timeframe\",\"headingNoData\":\"Top Placements\",\"noDataHeading\":\"No top placements for this period\",\"noDataParagraph\":\"Placements will appear here when they generate 100+ streams for your track(s) in the selected time period.\",\"headingParagraph\":\"These placements generated the most streams for {track} this period.\",\"headingParagraphNoTrack\":\"These placements generated the most streams for your music this period.\",\"dateAdded\":\"Date added\",\"followers\":\"Followers\",\"streams\":\"Streams\",\"unavailable\":\"Unavailable\",\"notApplicable\":\"Not Applicable\",\"stores\":\"Source: {storeNames}\"},\"filters\":{\"apply\":\"Apply\",\"allStores\":\"All Stores\",\"oneYear\":\"1 year\",\"oneMonth\":\"1 month\",\"oneWeek\":\"1 week\",\"lastYear\":\"Last 12 Months\",\"lastMonth\":\"Last 30 Days\",\"lastWeek\":\"Last 7 Days\",\"customDateRange\":\"Custom Range\",\"searchPlaceholder\":\"Search tracks by track name, artist or ISRC\",\"searchArtistsPlaceholder\":\"Search artists by artist name\",\"noMatch\":\"Your search ‘{query}’ does not match any {searchName}.\",\"checkSpelling\":\"Make sure all words are spelled correctly.\",\"searchError\":\"Unable to retrieve search results\",\"temporaryError\":\"The server encountered a temporary error.\",\"tryAgain\":\"Please try again in a few minutes.\",\"searchNameLabel\":\"{searchNameDisplay}\",\"releaseDateLabel\":\"Release Date\",\"releaseNameLabel\":\"Release Name\",\"artists\":\"Artists\",\"tracks\":\"Tracks\",\"from\":\"From\",\"to\":\"To\",\"cancel\":\"Cancel\",\"done\":\"Done\",\"invalidDateRangeHeader\":\"Please select a valid date range.\",\"invalidDateRangeDetail\":\"Make sure the from date is earlier than the to date.\",\"invalidDateRangeDetailOverAYear\":\"Make sure the date range is not greater than a year.\"},\"graph\":{\"noData\":\"No streaming data in the selected period.\",\"dataUnavailable\":\"Data Unavailable\"},\"placements\":{\"headingForMonth\":\"Top performing playlist placements in the last month\",\"headingForWeek\":\"Top performing playlist placements in the last week\",\"headingWithDate\":\"{placements} placement(s) on {date}\",\"headingTooltip\":\"Every playlist that generated at least 100 streams for your track(s) in the selected timeframe.\",\"unavailable\":\"Unavailable\",\"notApplicable\":\"Not Applicable\",\"store\":\"Store\",\"playlistTitle\":\"Playlist Title\",\"placedOn\":\"Placed On\",\"author\":\"Curator\",\"artistName\":\"Artist Name\",\"track\":\"Track\",\"artist\":\"Artist\",\"dateAdded\":\"Date added\",\"followers\":\"Followers\",\"streams\":\"Streams\",\"noData\":\"No playlist placements in the selected period.\",\"trackName\":\"Track Name\",\"stores\":\"Source: {storeNames}\"},\"streamsSummary\":{\"heading\":\"How They Listened\",\"headingHint\":\"new placement(s) for this period\",\"totalStreams\":\"Total streams\",\"listenersCollection\":\"Listener\\'s Collection\",\"listenersCollectionTooltip\":\"Streams from listeners’ personal libraries, saved collections or self-created playlists.\",\"activeDiscovery\":\"Active Discovery\",\"activeDiscoveryTooltip\":\"Streams from sources more actively sought out by listeners, such as artist pages, album pages, and search result pages.\",\"passiveDiscovery\":\"Passive Discovery\",\"passiveDiscoveryTooltip\":\"Streams from sources more passively discovered by listeners, such as radio stations, editorial playlists, and others’ playlists.\",\"ofTotalStreams\":\"of Total Streams\",\"streams\":\"Streams\",\"savesToCollection\":\"Saves to Collection\",\"skipRate\":\"Skip Rate\"}}')}})}));"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 38203
        },
        "cache": {},
        "timings": {
          "blocked": 2.5250000299140813,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.367,
          "wait": 275.49200003302843,
          "receive": 22.150999982841313,
          "_blocked_queueing": 1.120000029914081
        },
        "serverIPAddress": "99.84.32.49",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 797216
              }
            ],
            "parent": {
              "description": "Promise.then",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 796615
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 799437
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908180
                },
                {
                  "functionName": "Cu",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908329
                },
                {
                  "functionName": "ys",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893191
                },
                {
                  "functionName": "ps",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893116
                },
                {
                  "functionName": "as",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1890464
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848906
                },
                {
                  "functionName": "t.unstable_runWithPriority",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8726
                },
                {
                  "functionName": "Wo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848615
                },
                {
                  "functionName": "Qo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848851
                },
                {
                  "functionName": "Go",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848786
                },
                {
                  "functionName": "es",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1887253
                },
                {
                  "functionName": "Si",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1866162
                },
                {
                  "functionName": "s",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145228
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145360
                }
              ],
              "parent": {
                "description": "Promise.then",
                "callFrames": [
                  {
                    "functionName": "",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 145335
                  },
                  {
                    "functionName": "hu",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1880954
                  },
                  {
                    "functionName": "Es",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905686
                  },
                  {
                    "functionName": "t.unstable_runWithPriority",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 8726
                  },
                  {
                    "functionName": "Wo",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1848615
                  },
                  {
                    "functionName": "_s",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905449
                  },
                  {
                    "functionName": "",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905360
                  },
                  {
                    "functionName": "B",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 8108
                  },
                  {
                    "functionName": "O.port1.onmessage",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 6852
                  }
                ],
                "parentId": {
                  "id": "2",
                  "debuggerId": "-6680354813689365837.-4924173665645887486"
                }
              }
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949487",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.542Z",
        "time": 223.8770000403747,
        "request": {
          "method": "GET",
          "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.theorchard.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "_ga=GA1.2.623441365.1582092609"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "_ga",
              "value": "GA1.2.623441365.1582092609",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "application/x-javascript"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:19 GMT"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Wed, 04 Mar 2020 09:49:50 GMT"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "x-amz-version-id",
              "value": "C8bsvhHAjFDQwxoE6Qkr8gmKAVADtLKr"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "x-cache",
              "value": "Miss from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 075ecc80ea8e9352008139ab9fd7a593.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C4"
            },
            {
              "name": "x-amz-cf-id",
              "value": "66pC6Hoq__fCsBRE36OZjZYSqDKGyovh0mHJNiAnDSbjslngn3PaIw=="
            }
          ],
          "cookies": [],
          "content": {
            "size": 109432,
            "mimeType": "application/x-javascript",
            "text": "/*! For license information please see frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js.LICENSE.txt */\n(window[\"webpackJsonpfrontend-source-of-streams\"]=window[\"webpackJsonpfrontend-source-of-streams\"]||[]).push([[1],{\"+MfF\":function(t,e,n){\"use strict\";e.__esModule=!0,e.Encoders=e.Decoders=e.encodeNumericObject=e.encodeNumericArray=void 0;var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol?\"symbol\":typeof t},i=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var u,a=t[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}(t,e);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")};e.encodeDate=c,e.decodeDate=s,e.encodeBoolean=l,e.decodeBoolean=f,e.encodeNumber=h,e.decodeNumber=p,e.encodeString=d,e.decodeString=y,e.encodeJson=_,e.decodeJson=g,e.encodeArray=v,e.decodeArray=m,e.decodeNumericArray=x,e.encodeObject=w,e.decodeObject=M,e.decodeNumericObject=O,e.decode=function(t,e,n){var i=void 0;i=\"function\"==typeof t?t(e,n):\"object\"===(void 0===t?\"undefined\":r(t))&&t.decode?t.decode(e,n):void 0===e?n:k[t]?k[t](e):e;return i},e.encode=function(t,e){var n=void 0;n=\"function\"==typeof t?t(e):\"object\"===(void 0===t?\"undefined\":r(t))&&t.encode?t.encode(e):j[t]?j[t](e):e;return n};var o,u=n(\"Lusz\"),a=(o=u)&&o.__esModule?o:{default:o};function c(t){if(null==t)return t;var e=t.getFullYear(),n=t.getMonth()+1,r=t.getDate();return e+\"-\"+(n<10?\"0\"+n:n)+\"-\"+(r<10?\"0\"+r:r)}function s(t){if(null!=t&&t.length){var e=t.split(\"-\");null!=e[1]?e[1]-=1:(e[1]=0,e[2]=1);var n=new(Function.prototype.bind.apply(Date,[null].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}(e))));if(!isNaN(n.getTime()))return n}}function l(t){if(void 0!==t)return t?\"1\":\"0\"}function f(t){return\"1\"===t||\"0\"!==t&&void 0}function h(t){if(null!=t)return String(t)}function p(t){if(null!=t){var e=parseFloat(t);if(!isNaN(e))return e}}function d(t){if(null!=t)return String(t)}function y(t){if(null!=t)return String(t)}function _(t){if(null!=t)return JSON.stringify(t)}function g(t){if(t){var e=void 0;try{e=JSON.parse(t)}catch(t){}return e}}function v(t){var e=arguments.length<=1||void 0===arguments[1]?a.default.entrySeparator:arguments[1];if(t)return t.join(e)}function m(t){var e=arguments.length<=1||void 0===arguments[1]?a.default.entrySeparator:arguments[1];if(t)return t.split(e).map((function(t){return\"\"===t?void 0:t}))}var b=e.encodeNumericArray=v;function x(t){var e=arguments.length<=1||void 0===arguments[1]?a.default.entrySeparator:arguments[1],n=m(t,e);if(n)return n.map((function(t){return null==t?t:+t}))}function w(t){var e=arguments.length<=1||void 0===arguments[1]?a.default.keyValSeparator:arguments[1],n=arguments.length<=2||void 0===arguments[2]?a.default.entrySeparator:arguments[2];if(t&&Object.keys(t).length)return Object.keys(t).map((function(n){return\"\"+n+e+t[n]})).join(n)}function M(t){var e=arguments.length<=1||void 0===arguments[1]?a.default.keyValSeparator:arguments[1],n=arguments.length<=2||void 0===arguments[2]?a.default.entrySeparator:arguments[2];if(t&&t.length){var r={};return t.split(n).forEach((function(t){var n=t.split(e),o=i(n,2),u=o[0],a=o[1];r[u]=a})),r}}var T=e.encodeNumericObject=w;function O(t){var e=arguments.length<=1||void 0===arguments[1]?a.default.keyValSeparator:arguments[1],n=arguments.length<=2||void 0===arguments[2]?a.default.entrySeparator:arguments[2],r=M(t,e,n);if(r)return Object.keys(r).forEach((function(t){r[t]=null==r[t]?r[t]:+r[t]})),r}var k=e.Decoders={number:p,string:y,object:M,array:m,json:g,date:s,boolean:f,numericObject:O,numericArray:x};var j=e.Encoders={number:h,string:d,object:w,array:v,json:_,date:c,boolean:l,numericObject:T,numericArray:b}},\"/Lbd\":function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EventTypes=e.createMetaReducer=e.createTracker=void 0;var r,i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},o=n(\"FTdF\"),u=n(\"ewZ4\"),a=(r=u)&&r.__esModule?r:{default:r},c=n(\"Ms5B\"),s=n(\"CPm+\"),l=n(\"aC/x\"),f=n(\"DbOn\"),h=n(\"laEt\"),p=n(\"840u\");function d(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function y(t,e,n){var r=(0,n.client)();r&&\"function\"==typeof r[t]?r[t].apply(r,function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}(e)):(0,o.warn)(\"The analytics client you provided doesn't support \"+t+\" events. Make sure that the anaytics.js script is loaded.\")}function _(t,e,n,r){var i=n.meta.analytics;return Array.isArray(i)?i.forEach((function(t){return m(t,n,r)})):m(i,n,r),t(e,n)}function g(t,e){return t.meta=i({},t.meta,{analytics:Array.isArray(e)?e:i({},e)}),t}function v(t,e,n,r){return n.meta&&n.meta.analytics?b(e,n,r):\"function\"==typeof r.mapper[n.type]?b(e,g(n,r.mapper[n.type](t,n)),r):\"string\"==typeof r.mapper[n.type]?b(e,g(n,{eventType:r.mapper[n.type]}),r):e(n)}function m(t,e,n){var r=function(t){return\"string\"==typeof t?t:t.eventType}(t);if(r&&r.length){var i=function(t,e,n){var r;return(d(r={},a.default.identify,s.extractIdentifyFields),d(r,a.default.page,l.extractPageFields),d(r,a.default.track,(function(t){return(0,f.extractTrackFields)(t,n)})),d(r,a.default.alias,h.extractAliasFields),d(r,a.default.group,p.extractGroupFields),d(r,a.default.reset,(function(){return[]})),r)[t](e)}(r,t.eventPayload||{},e.type);if(i instanceof Error)return(0,o.warn)(i);y(r,i,n)}}function b(t,e,n){var r=e.meta.analytics;return Array.isArray(r)?r.forEach((function(t){return m(t,e,n)})):m(r,e,n),t(e)}e.createTracker=function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e={mapper:i({},c.defaultMapper.mapper,t.mapper),client:t.client?function(){return t.client}:c.defaultClient};return e.client||(0,o.warn)(\"Could not find an analytics client. Provide a client tocreateTracker or make sure that the anaytics.js scriptis loaded and executed before your application code.\"),function(t){return function(n){return function(r){return v(t.getState.bind(t),n,r,e)}}}},e.createMetaReducer=function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e={mapper:i({},c.defaultMapper.mapper,t.mapper),client:t.client?function(){return t.client}:c.defaultClient};return e.client||(0,o.warn)(\"Could not find an analytics client. Provide a client tocreateTracker or make sure that the anaytics.js scriptis loaded and executed before your application code.\"),function(t){return function(n,r){if(r.meta&&r.meta.analytics)return _(t,n,r,e);if(\"function\"==typeof e.mapper[r.type]){var i=e.mapper[r.type]((function(){return n}),r);return _(t,n,g(r,i),e)}if(\"string\"==typeof e.mapper[r.type]){var o={eventType:e.mapper[r.type]};return _(t,n,g(r,o),e)}return t(n,r)}}},e.EventTypes=a.default},\"1Ix/\":function(t,e,n){\"use strict\";function r(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}n.d(e,\"a\",(function(){return r}))},\"5fYu\":function(t,e,n){\"use strict\";e.__esModule=!0;var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};e.replaceUrlQuery=d,e.pushUrlQuery=y,e.replaceInUrlQuery=_,e.pushInUrlQuery=g,e.multiReplaceInUrlQuery=v,e.multiPushInUrlQuery=m,e.updateUrlQuerySingle=function(){var t=arguments.length<=0||void 0===arguments[0]?u.default.replaceIn:arguments[0],e=arguments[1],n=arguments[2],r=arguments[3];if(t===u.default.replaceIn)return _(e,n,r);if(t===u.default.pushIn)return g(e,n,r);var i=c({},e,n);if(t===u.default.replace)return d(i,r);if(t===u.default.push)return y(i,r);return},e.updateUrlQueryMulti=function(){var t=arguments.length<=0||void 0===arguments[0]?u.default.replaceIn:arguments[0],e=arguments[1],n=arguments[2];if(t===u.default.replaceIn)return v(e,n);if(t===u.default.pushIn)return m(e,n);if(t===u.default.replace)return d(e,n);if(t===u.default.push)return y(e,n);return};var i=n(\"cr+I\"),o=a(n(\"Lusz\")),u=a(n(\"pAdL\"));function a(t){return t&&t.__esModule?t:{default:t}}function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s(t){if(t)return t;var e=o.default.history;return e.location?e.location:window.location}function l(t,e){if(t.query)return r({},t,{query:e,search:void 0});var n=(0,i.stringify)(e);return r({},t,{search:n.length?\"?\"+n:void 0})}function f(t,e){var n=l(e=s(e),Object.keys(t).reduce((function(e,n){var r=t[n];return null!=r&&\"\"!==r&&(e[n]=r),e}),{}));return delete n.key,n}function h(t,e,n){var o=(n=s(n)).query||(0,i.parse)(n.search),u=r({},o,c({},t,e));null!=e&&\"\"!==e||delete u[t];var a=l(n,u);return delete a.key,a}function p(t,e){var n=(e=s(e)).query||(0,i.parse)(e.search),o=r({},n,t);Object.keys(t).forEach((function(e){var n=t[e];null!=n&&\"\"!==n||delete o[e]}));var u=l(e,o);return delete u.key,u}function d(t,e){var n=f(t,e);return o.default.history.replace(n)}function y(t,e){var n=f(t,e);return o.default.history.push(n)}function _(t,e,n){var r=h(t,e,n);return o.default.history.replace(r)}function g(t,e,n){var r=h(t,e,n);return o.default.history.push(r)}function v(t,e){var n=p(t,e);return o.default.history.replace(n)}function m(t,e){var n=p(t,e);return o.default.history.push(n)}},\"6YF4\":function(t,e,n){\"use strict\";var r=n(\"APuy\"),i=n(\"Ki0a\"),o=Object(i.a)(r.a),u=o.right,a=(o.left,u),c=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t};function s(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function l(){}var f=\"\\\\s*([+-]?\\\\d+)\\\\s*\",h=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",p=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",d=/^#([0-9a-f]{3})$/,y=/^#([0-9a-f]{6})$/,_=new RegExp(\"^rgb\\\\(\"+[f,f,f]+\"\\\\)$\"),g=new RegExp(\"^rgb\\\\(\"+[p,p,p]+\"\\\\)$\"),v=new RegExp(\"^rgba\\\\(\"+[f,f,f,h]+\"\\\\)$\"),m=new RegExp(\"^rgba\\\\(\"+[p,p,p,h]+\"\\\\)$\"),b=new RegExp(\"^hsl\\\\(\"+[h,p,p]+\"\\\\)$\"),x=new RegExp(\"^hsla\\\\(\"+[h,p,p,h]+\"\\\\)$\"),w={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function M(){return this.rgb().formatHex()}function T(){return this.rgb().formatRgb()}function O(t){var e;return t=(t+\"\").trim().toLowerCase(),(e=d.exec(t))?new A((e=parseInt(e[1],16))>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=y.exec(t))?k(parseInt(e[1],16)):(e=_.exec(t))?new A(e[1],e[2],e[3],1):(e=g.exec(t))?new A(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=v.exec(t))?j(e[1],e[2],e[3],e[4]):(e=m.exec(t))?j(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=b.exec(t))?C(e[1],e[2]/100,e[3]/100,1):(e=x.exec(t))?C(e[1],e[2]/100,e[3]/100,e[4]):w.hasOwnProperty(t)?k(w[t]):\"transparent\"===t?new A(NaN,NaN,NaN,0):null}function k(t){return new A(t>>16&255,t>>8&255,255&t,1)}function j(t,e,n,r){return r<=0&&(t=e=n=NaN),new A(t,e,n,r)}function S(t){return t instanceof l||(t=O(t)),t?new A((t=t.rgb()).r,t.g,t.b,t.opacity):new A}function N(t,e,n,r){return 1===arguments.length?S(t):new A(t,e,n,null==r?1:r)}function A(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function P(){return\"#\"+F(this.r)+F(this.g)+F(this.b)}function U(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function F(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function C(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Q(t,e,n,r)}function E(t){if(t instanceof Q)return new Q(t.h,t.s,t.l,t.opacity);if(t instanceof l||(t=O(t)),!t)return new Q;if(t instanceof Q)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=e===o?(n-r)/a+6*(n<r):n===o?(r-e)/a+2:(e-n)/a+4,a/=c<.5?o+i:2-o-i,u*=60):a=c>0&&c<1?0:u,new Q(u,a,c,t.opacity)}function I(t,e,n,r){return 1===arguments.length?E(t):new Q(t,e,n,null==r?1:r)}function Q(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function D(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}c(l,O,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:M,formatHex:M,formatHsl:function(){return E(this).formatHsl()},formatRgb:T,toString:T}),c(A,N,s(l,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new A(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new A(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:P,formatHex:P,formatRgb:U,toString:U})),c(Q,I,s(l,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Q(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Q(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new A(D(t>=240?t-240:t+120,i,r),D(t,i,r),D(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var L=Math.PI/180,R=180/Math.PI,q=6/29,Y=3*q*q;function H(t){if(t instanceof z)return new z(t.l,t.a,t.b,t.opacity);if(t instanceof K)return G(t);t instanceof A||(t=S(t));var e,n,r=W(t.r),i=W(t.g),o=W(t.b),u=$((.2225045*r+.7168786*i+.0606169*o)/1);return r===i&&i===o?e=n=u:(e=$((.4360747*r+.3850649*i+.1430804*o)/.96422),n=$((.0139322*r+.0971045*i+.7141733*o)/.82521)),new z(116*u-16,500*(e-u),200*(u-n),t.opacity)}function B(t,e,n,r){return 1===arguments.length?H(t):new z(t,e,n,null==r?1:r)}function z(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function $(t){return t>.008856451679035631?Math.pow(t,1/3):t/Y+4/29}function Z(t){return t>q?t*t*t:Y*(t-4/29)}function V(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function W(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function X(t){if(t instanceof K)return new K(t.h,t.c,t.l,t.opacity);if(t instanceof z||(t=H(t)),0===t.a&&0===t.b)return new K(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*R;return new K(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function J(t,e,n,r){return 1===arguments.length?X(t):new K(t,e,n,null==r?1:r)}function K(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function G(t){if(isNaN(t.h))return new z(t.l,0,0,t.opacity);var e=t.h*L;return new z(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}c(z,B,s(l,{brighter:function(t){return new z(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new z(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new A(V(3.1338561*(e=.96422*Z(e))-1.6168667*(t=1*Z(t))-.4906146*(n=.82521*Z(n))),V(-.9787684*e+1.9161415*t+.033454*n),V(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),c(K,J,s(l,{brighter:function(t){return new K(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new K(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return G(this).rgb()}}));var tt=-.14861,et=1.78277,nt=-.29227,rt=-.90649,it=1.97294,ot=it*rt,ut=it*et,at=et*nt-rt*tt;function ct(t){if(t instanceof lt)return new lt(t.h,t.s,t.l,t.opacity);t instanceof A||(t=S(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(at*r+ot*e-ut*n)/(at+ot-ut),o=r-i,u=(it*(n-i)-nt*o)/rt,a=Math.sqrt(u*u+o*o)/(it*i*(1-i)),c=a?Math.atan2(u,o)*R-120:NaN;return new lt(c<0?c+360:c,a,i,t.opacity)}function st(t,e,n,r){return 1===arguments.length?ct(t):new lt(t,e,n,null==r?1:r)}function lt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function ft(t,e,n,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*e+(4-6*o+3*u)*n+(1+3*t+3*o-3*u)*r+u*i)/6}c(lt,st,s(l,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new lt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new lt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*L,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new A(255*(e+n*(tt*r+et*i)),255*(e+n*(nt*r+rt*i)),255*(e+n*(it*r)),this.opacity)}}));var ht=function(t){return function(){return t}};function pt(t,e){return function(n){return t+n*e}}function dt(t,e){var n=e-t;return n?pt(t,n>180||n<-180?n-360*Math.round(n/360):n):ht(isNaN(t)?e:t)}function yt(t){return 1==(t=+t)?_t:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):ht(isNaN(e)?n:e)}}function _t(t,e){var n=e-t;return n?pt(t,n):ht(isNaN(t)?e:t)}var gt=function t(e){var n=yt(e);function r(t,e){var r=n((t=N(t)).r,(e=N(e)).r),i=n(t.g,e.g),o=n(t.b,e.b),u=_t(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=o(e),t.opacity=u(e),t+\"\"}}return r.gamma=t,r}(1);function vt(t){return function(e){var n,r,i=e.length,o=new Array(i),u=new Array(i),a=new Array(i);for(n=0;n<i;++n)r=N(e[n]),o[n]=r.r||0,u[n]=r.g||0,a[n]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+\"\"}}}vt((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return ft((n-r/e)*e,u,i,o,a)}})),vt((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],u=t[(r+1)%e],a=t[(r+2)%e];return ft((n-r/e)*e,i,o,u,a)}}));var mt=function(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),u=new Array(r);for(n=0;n<i;++n)o[n]=At(t[n],e[n]);for(;n<r;++n)u[n]=e[n];return function(t){for(n=0;n<i;++n)u[n]=o[n](t);return u}},bt=function(t,e){var n=new Date;return e-=t=+t,function(r){return n.setTime(t+e*r),n}},xt=function(t,e){return e-=t=+t,function(n){return t+e*n}},wt=function(t,e){var n,r={},i={};for(n in null!==t&&\"object\"==typeof t||(t={}),null!==e&&\"object\"==typeof e||(e={}),e)n in t?r[n]=At(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}},Mt=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,Tt=new RegExp(Mt.source,\"g\");var Ot,kt,jt,St,Nt=function(t,e){var n,r,i,o=Mt.lastIndex=Tt.lastIndex=0,u=-1,a=[],c=[];for(t+=\"\",e+=\"\";(n=Mt.exec(t))&&(r=Tt.exec(e));)(i=r.index)>o&&(i=e.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(n=n[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:xt(n,r)})),o=Tt.lastIndex;return o<e.length&&(i=e.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?c[0]?function(t){return function(e){return t(e)+\"\"}}(c[0].x):function(t){return function(){return t}}(e):(e=c.length,function(t){for(var n,r=0;r<e;++r)a[(n=c[r]).i]=n.x(t);return a.join(\"\")})},At=function(t,e){var n,r=typeof e;return null==e||\"boolean\"===r?ht(e):(\"number\"===r?xt:\"string\"===r?(n=O(e))?(e=n,gt):Nt:e instanceof O?gt:e instanceof Date?bt:Array.isArray(e)?mt:\"function\"!=typeof e.valueOf&&\"function\"!=typeof e.toString||isNaN(e)?wt:xt)(t,e)},Pt=function(t,e){return e-=t=+t,function(n){return Math.round(t+e*n)}},Ut=180/Math.PI,Ft={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},Ct=function(t,e,n,r,i,o){var u,a,c;return(u=Math.sqrt(t*t+e*e))&&(t/=u,e/=u),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Ut,skewX:Math.atan(c)*Ut,scaleX:u,scaleY:a}};function Et(t,e,n,r){function i(t){return t.length?t.pop()+\" \":\"\"}return function(o,u){var a=[],c=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var c=u.push(\"translate(\",null,e,null,n);a.push({i:c-4,x:xt(t,i)},{i:c-2,x:xt(r,o)})}else(i||o)&&u.push(\"translate(\"+i+e+o+n)}(o.translateX,o.translateY,u.translateX,u.translateY,a,c),function(t,e,n,o){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+\"rotate(\",null,r)-2,x:xt(t,e)})):e&&n.push(i(n)+\"rotate(\"+e+r)}(o.rotate,u.rotate,a,c),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+\"skewX(\",null,r)-2,x:xt(t,e)}):e&&n.push(i(n)+\"skewX(\"+e+r)}(o.skewX,u.skewX,a,c),function(t,e,n,r,o,u){if(t!==n||e!==r){var a=o.push(i(o)+\"scale(\",null,\",\",null,\")\");u.push({i:a-4,x:xt(t,n)},{i:a-2,x:xt(e,r)})}else 1===n&&1===r||o.push(i(o)+\"scale(\"+n+\",\"+r+\")\")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,c),o=u=null,function(t){for(var e,n=-1,r=c.length;++n<r;)a[(e=c[n]).i]=e.x(t);return a.join(\"\")}}}Et((function(t){return\"none\"===t?Ft:(Ot||(Ot=document.createElement(\"DIV\"),kt=document.documentElement,jt=document.defaultView),Ot.style.transform=t,t=jt.getComputedStyle(kt.appendChild(Ot),null).getPropertyValue(\"transform\"),kt.removeChild(Ot),t=t.slice(7,-1).split(\",\"),Ct(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}),\"px, \",\"px)\",\"deg)\"),Et((function(t){return null==t?Ft:(St||(St=document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")),St.setAttribute(\"transform\",t),(t=St.transform.baseVal.consolidate())?(t=t.matrix,Ct(t.a,t.b,t.c,t.d,t.e,t.f)):Ft)}),\", \",\")\",\")\"),Math.SQRT2;function It(t){return function(e,n){var r=t((e=I(e)).h,(n=I(n)).h),i=_t(e.s,n.s),o=_t(e.l,n.l),u=_t(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=o(t),e.opacity=u(t),e+\"\"}}}It(dt),It(_t);function Qt(t){return function(e,n){var r=t((e=J(e)).h,(n=J(n)).h),i=_t(e.c,n.c),o=_t(e.l,n.l),u=_t(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=o(t),e.opacity=u(t),e+\"\"}}}Qt(dt),Qt(_t);function Dt(t){return function e(n){function r(e,r){var i=t((e=st(e)).h,(r=st(r)).h),o=_t(e.s,r.s),u=_t(e.l,r.l),a=_t(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=o(t),e.l=u(Math.pow(t,n)),e.opacity=a(t),e+\"\"}}return n=+n,r.gamma=e,r}(1)}Dt(dt),Dt(_t);var Lt=function(t){return+t};n.d(e,\"a\",(function(){return zt})),n.d(e,\"b\",(function(){return Zt}));var Rt=[0,1];function qt(t){return t}function Yt(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function Ht(t,e,n){var r=t[0],i=t[1],o=e[0],u=e[1];return i<r?(r=Yt(i,r),o=n(u,o)):(r=Yt(r,i),o=n(o,u)),function(t){return o(r(t))}}function Bt(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++u<r;)i[u]=Yt(t[u],t[u+1]),o[u]=n(e[u],e[u+1]);return function(e){var n=a(t,e,1,r)-1;return o[n](i[n](e))}}function zt(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function $t(){var t,e,n,r,i,o,u=Rt,a=Rt,c=At,s=qt;function l(){var t,e,n,c=Math.min(u.length,a.length);return s!==qt&&(t=u[0],e=u[c-1],t>e&&(n=t,t=e,e=n),s=function(n){return Math.max(t,Math.min(e,n))}),r=c>2?Bt:Ht,i=o=null,f}function f(e){return isNaN(e=+e)?n:(i||(i=r(u.map(t),a,c)))(t(s(e)))}return f.invert=function(n){return s(e((o||(o=r(a,u.map(t),xt)))(n)))},f.domain=function(t){return arguments.length?(u=Array.from(t,Lt),l()):u.slice()},f.range=function(t){return arguments.length?(a=Array.from(t),l()):a.slice()},f.rangeRound=function(t){return a=Array.from(t),c=Pt,l()},f.clamp=function(t){return arguments.length?(s=!!t||qt,l()):s!==qt},f.interpolate=function(t){return arguments.length?(c=t,l()):c},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,l()}}function Zt(){return $t()(qt,qt)}},\"7W2i\":function(t,e,n){var r=n(\"SksO\");t.exports=function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&r(t,e)}},\"7ssf\":function(t,e,n){\"use strict\";n.d(e,\"b\",(function(){return u})),n.d(e,\"c\",(function(){return a}));var r=Math.sqrt(50),i=Math.sqrt(10),o=Math.sqrt(2);function u(t,e,n){var u=(e-t)/Math.max(0,n),a=Math.floor(Math.log(u)/Math.LN10),c=u/Math.pow(10,a);return a>=0?(c>=r?10:c>=i?5:c>=o?2:1)*Math.pow(10,a):-Math.pow(10,-a)/(c>=r?10:c>=i?5:c>=o?2:1)}function a(t,e,n){var u=Math.abs(e-t)/Math.max(0,n),a=Math.pow(10,Math.floor(Math.log(u)/Math.LN10)),c=u/a;return c>=r?a*=10:c>=i?a*=5:c>=o&&(a*=2),e<t?-a:a}e.a=function(t,e,n){var r,i,o,a,c=-1;if(n=+n,(t=+t)===(e=+e)&&n>0)return[t];if((r=e<t)&&(i=t,t=e,e=i),0===(a=u(t,e,n))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(i=Math.ceil(e-t+1));++c<i;)o[c]=(t+c)*a;else for(t=Math.floor(t*a),e=Math.ceil(e*a),o=new Array(i=Math.ceil(t-e+1));++c<i;)o[c]=(t-c)/a;return r&&o.reverse(),o}},\"840u\":function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.extractGroupFields=function(t){var e,n=[\"groupId\",\"traits\",\"options\"],r=function(t){return t.groupId?null:new Error(\"missing groupId field for EventTypes.alias\")}(t);return r||(e=t,n.map((function(t){return\"traits\"===t?e[t]||{}:e[t]})))}},\"8OQS\":function(t,e){t.exports=function(t,e){if(null==t)return{};var n,r,i={},o=Object.keys(t);for(r=0;r<o.length;r++)n=o[r],e.indexOf(n)>=0||(i[n]=t[n]);return i}},\"8d86\":function(t,e,n){\"use strict\";var r=Math.PI,i=2*r,o=i-1e-6;function u(){this._x0=this._y0=this._x1=this._y1=null,this._=\"\"}function a(){return new u}u.prototype=a.prototype={constructor:u,moveTo:function(t,e){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+=\"Z\")},lineTo:function(t,e){this._+=\"L\"+(this._x1=+t)+\",\"+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+=\"Q\"+ +t+\",\"+ +e+\",\"+(this._x1=+n)+\",\"+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,o){this._+=\"C\"+ +t+\",\"+ +e+\",\"+ +n+\",\"+ +r+\",\"+(this._x1=+i)+\",\"+(this._y1=+o)},arcTo:function(t,e,n,i,o){t=+t,e=+e,n=+n,i=+i,o=+o;var u=this._x1,a=this._y1,c=n-t,s=i-e,l=u-t,f=a-e,h=l*l+f*f;if(o<0)throw new Error(\"negative radius: \"+o);if(null===this._x1)this._+=\"M\"+(this._x1=t)+\",\"+(this._y1=e);else if(h>1e-6)if(Math.abs(f*c-s*l)>1e-6&&o){var p=n-u,d=i-a,y=c*c+s*s,_=p*p+d*d,g=Math.sqrt(y),v=Math.sqrt(h),m=o*Math.tan((r-Math.acos((y+h-_)/(2*g*v)))/2),b=m/v,x=m/g;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*l)+\",\"+(e+b*f)),this._+=\"A\"+o+\",\"+o+\",0,0,\"+ +(f*p>l*d)+\",\"+(this._x1=t+x*c)+\",\"+(this._y1=e+x*s)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=e);else;},arc:function(t,e,n,u,a,c){t=+t,e=+e,c=!!c;var s=(n=+n)*Math.cos(u),l=n*Math.sin(u),f=t+s,h=e+l,p=1^c,d=c?u-a:a-u;if(n<0)throw new Error(\"negative radius: \"+n);null===this._x1?this._+=\"M\"+f+\",\"+h:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-h)>1e-6)&&(this._+=\"L\"+f+\",\"+h),n&&(d<0&&(d=d%i+i),d>o?this._+=\"A\"+n+\",\"+n+\",0,1,\"+p+\",\"+(t-s)+\",\"+(e-l)+\"A\"+n+\",\"+n+\",0,1,\"+p+\",\"+(this._x1=f)+\",\"+(this._y1=h):d>1e-6&&(this._+=\"A\"+n+\",\"+n+\",0,\"+ +(d>=r)+\",\"+p+\",\"+(this._x1=t+n*Math.cos(a))+\",\"+(this._y1=e+n*Math.sin(a))))},rect:function(t,e,n,r){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)+\"h\"+ +n+\"v\"+ +r+\"h\"+-n+\"Z\"},toString:function(){return this._}};var c=a,s=function(t){return function(){return t}},l=(Math.abs,Math.atan2,Math.cos,Math.max,Math.min,Math.sin,Math.sqrt,Math.PI),f=2*l;function h(t){this._context=t}h.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var p=function(t){return new h(t)};function d(t){return t[0]}function y(t){return t[1]}var _=function(){var t=d,e=y,n=s(!0),r=null,i=p,o=null;function u(u){var a,s,l,f=u.length,h=!1;for(null==r&&(o=i(l=c())),a=0;a<=f;++a)!(a<f&&n(s=u[a],a,u))===h&&((h=!h)?o.lineStart():o.lineEnd()),h&&o.point(+t(s,a,u),+e(s,a,u));if(l)return o=null,l+\"\"||null}return u.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:s(+e),u):t},u.y=function(t){return arguments.length?(e=\"function\"==typeof t?t:s(+t),u):e},u.defined=function(t){return arguments.length?(n=\"function\"==typeof t?t:s(!!t),u):n},u.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),u):i},u.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),u):r},u};v(p);function g(t){this._curve=t}function v(t){function e(e){return new g(t(e))}return e._curve=t,e}g.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};Array.prototype.slice;Math.sqrt(1/3);var m=Math.sin(l/10)/Math.sin(7*l/10),b=(Math.sin(f/10),Math.cos(f/10),Math.sqrt(3),Math.sqrt(3),Math.sqrt(12),function(){});function x(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function w(t){this._context=t}w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:x(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:x(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function M(t){this._context=t}M.prototype={areaStart:b,areaEnd:b,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:x(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function T(t){this._context=t}T.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:x(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function O(t,e){this._basis=new w(t),this._beta=e}O.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],o=e[0],u=t[n]-i,a=e[n]-o,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*u),this._beta*e[c]+(1-this._beta)*(o+r*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};(function t(e){function n(t){return 1===e?new w(t):new O(t,e)}return n.beta=function(e){return t(+e)},n})(.85);function k(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function j(t,e){this._context=t,this._k=(1-e)/6}j.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:k(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:k(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return new j(t,e)}return n.tension=function(e){return t(+e)},n})(0);function S(t,e){this._context=t,this._k=(1-e)/6}S.prototype={areaStart:b,areaEnd:b,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:k(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return new S(t,e)}return n.tension=function(e){return t(+e)},n})(0);function N(t,e){this._context=t,this._k=(1-e)/6}N.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:k(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return new N(t,e)}return n.tension=function(e){return t(+e)},n})(0);function A(t,e,n){var r=t._x1,i=t._y1,o=t._x2,u=t._y2;if(t._l01_a>1e-12){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>1e-12){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*s+t._x1*t._l23_2a-e*t._l12_2a)/l,u=(u*s+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,o,u,t._x2,t._y2)}function P(t,e){this._context=t,this._alpha=e}P.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:A(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return e?new P(t,e):new j(t,0)}return n.alpha=function(e){return t(+e)},n})(.5);function U(t,e){this._context=t,this._alpha=e}U.prototype={areaStart:b,areaEnd:b,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:A(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return e?new U(t,e):new S(t,0)}return n.alpha=function(e){return t(+e)},n})(.5);function F(t,e){this._context=t,this._alpha=e}F.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:A(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return e?new F(t,e):new N(t,0)}return n.alpha=function(e){return t(+e)},n})(.5);function C(t){this._context=t}C.prototype={areaStart:b,areaEnd:b,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function E(t){return t<0?-1:1}function I(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),u=(n-t._y1)/(i||r<0&&-0),a=(o*i+u*r)/(r+i);return(E(o)+E(u))*Math.min(Math.abs(o),Math.abs(u),.5*Math.abs(a))||0}function Q(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function D(t,e,n){var r=t._x0,i=t._y0,o=t._x1,u=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,i+a*e,o-a,u-a*n,o,u)}function L(t){this._context=t}function R(t){this._context=new q(t)}function q(t){this._context=t}function Y(t){this._context=t}function H(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),u=new Array(r);for(i[0]=0,o[0]=2,u[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,o[e]=4,u[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,o[r-1]=7,u[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/o[e-1],o[e]-=n,u[e]-=n*u[e-1];for(i[r-1]=u[r-1]/o[r-1],e=r-2;e>=0;--e)i[e]=(u[e]-i[e+1])/o[e];for(o[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)o[e]=2*t[e+1]-i[e+1];return[i,o]}L.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:D(this,this._t0,Q(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,D(this,Q(this,n=I(this,t,e)),n);break;default:D(this,this._t0,n=I(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(R.prototype=Object.create(L.prototype)).point=function(t,e){L.prototype.point.call(this,e,t)},q.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}},Y.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=H(t),i=H(e),o=0,u=1;u<n;++o,++u)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[u],e[u]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}};function B(t,e){this._context=t,this._t=e}B.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};n.d(e,\"a\",(function(){return _}))},\"8oxB\":function(t,e){var n,r,i=t.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function u(){throw new Error(\"clearTimeout has not been defined\")}function a(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r=\"function\"==typeof clearTimeout?clearTimeout:u}catch(t){r=u}}();var c,s=[],l=!1,f=-1;function h(){l&&c&&(l=!1,c.length?s=c.concat(s):f=-1,s.length&&p())}function p(){if(!l){var t=a(h);l=!0;for(var e=s.length;e;){for(c=s,s=[];++f<e;)c&&c[f].run();f=-1,e=s.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===u||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function y(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];s.push(new d(t,e)),1!==s.length||l||a(p)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title=\"browser\",i.browser=!0,i.env={},i.argv=[],i.version=\"\",i.versions={},i.on=y,i.addListener=y,i.once=y,i.off=y,i.removeListener=y,i.removeAllListeners=y,i.emit=y,i.prependListener=y,i.prependOnceListener=y,i.listeners=function(t){return[]},i.binding=function(t){throw new Error(\"process.binding is not supported\")},i.cwd=function(){return\"/\"},i.chdir=function(t){throw new Error(\"process.chdir is not supported\")},i.umask=function(){return 0}},APuy:function(t,e,n){\"use strict\";e.a=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}},Bnag:function(t,e){t.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},\"CPm+\":function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.extractIdentifyFields=function(t){if(!t)return[];var e,n=function(t){return t.userId?[\"userId\",\"traits\",\"options\"]:[\"traits\",\"options\"]}(t);return e=t,n.map((function(t){return\"traits\"===t?e[t]||{}:e[t]}))}},DbOn:function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.extractTrackFields=function(t,e){var n=function(t){return t.properties?[\"event\",\"properties\",\"options\"]:[\"event\",\"options\"]}(t),r=function(t,e){return\"string\"==typeof e||t.event?null:new Error(\"missing event field for EventTypes.track\")}(t,e);return r||function(t,e,n){return e.map((function(e){return\"event\"===e?t[e]||n:t[e]}))}(t,n,e)}},EbDI:function(t,e){t.exports=function(t){if(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t))return Array.from(t)}},FTdF:function(t,e,n){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0}),e.warn=function(){var e,n=void 0!==t?\"production\":\"development\";\"development\"!==n&&\"test\"!==n||(e=console).warn.apply(e,arguments)}}).call(this,n(\"8oxB\"))},Ijbi:function(t,e){t.exports=function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}},JEiT:function(t,e,n){\"use strict\";e.__esModule=!0,e.default=function(t){if(!t)return t;for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return n.reduce((function(e,n){return e[n]=t[n],e}),{})}},K7Q1:function(t,e,n){\"use strict\";e.__esModule=!0;var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol?\"symbol\":typeof t};e.default=s,e.urlUpdateAction=l,e.urlReplaceAction=function(t,e){return l(t,e,c.default.replace)},e.urlPushAction=function(t,e){return l(t,e,c.default.push)},e.urlUpdateInAction=f,e.urlReplaceInAction=function(t,e,n){return f(t,e,n,c.default.replaceIn)},e.urlPushInAction=function(t,e,n){return f(t,e,n,c.default.pushIn)};var o,u=n(\"+MfF\"),a=n(\"pAdL\"),c=(o=a)&&o.__esModule?o:{default:o};function s(t){var e=arguments.length<=1||void 0===arguments[1]?function(t){return t}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?function(){}:arguments[2];return function(){var o=n.apply(void 0,arguments);return null==o?o={}:\"object\"!==(void 0===o?\"undefined\":i(o))&&(o={value:o}),{type:t,meta:r({},o,{urlQuery:!0}),payload:e.apply(void 0,arguments)}}}function l(t){var e=arguments.length<=1||void 0===arguments[1]?function(t){return t}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?c.default.replace:arguments[2];return s(t,(function(t){return{encodedQuery:e(t),decodedQuery:t}}),(function(){return{updateType:n}}))}function f(t,e,n,r){return s(t,(function(t){return{queryParam:e,encodedValue:(0,u.encode)(n,t),decodedValue:t,type:n}}),(function(){return{updateType:r}}))}},KYhp:function(t,e,n){\"use strict\";e.__esModule=!0;var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(\"cDcd\"),o=c(i),u=c(n(\"rf6O\")),a=c(n(\"q0cm\"));function c(t){return t&&t.__esModule?t:{default:t}}function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function l(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}var f=function(t){function e(){return s(this,e),l(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:\"componentWillMount\",value:function(){var t=this.context.router;var e=void 0;t.history&&t.history.push&&t.history.replace?e=t.history:t.push&&t.replace?e=t:t.transitionTo&&t.replaceWith&&(e={push:t.transitionTo,replace:t.replaceWith}),(0,a.default)({history:e})}},{key:\"render\",value:function(){var t=this.props.children;return o.default.Children.only(t)}}]),e}(i.Component);f.propTypes={children:u.default.node},f.contextTypes={router:u.default.object},e.default=f},Ki0a:function(t,e,n){\"use strict\";var r=n(\"APuy\");e.a=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return Object(r.a)(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)<0?r=o+1:i=o}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)>0?i=o:r=o+1}return r}}}},LFwo:function(t,e,n){\"use strict\";e.__esModule=!0,e.subqueryOmit=e.subquery=e.urlQueryReducer=e.urlQueryMiddleware=e.urlPushInAction=e.urlReplaceInAction=e.urlPushAction=e.urlReplaceAction=e.urlAction=e.pushUrlQueryFromAction=e.pushInUrlQueryFromAction=e.replaceUrlQueryFromAction=e.replaceInUrlQueryFromAction=e.RouterToUrlQuery=e.addUrlProps=e.UrlUpdateTypes=e.UrlQueryParamTypes=e.urlQueryEncoder=e.urlQueryDecoder=e.multiPushInUrlQuery=e.multiReplaceInUrlQuery=e.pushUrlQuery=e.pushInUrlQuery=e.replaceUrlQuery=e.replaceInUrlQuery=e.decode=e.encode=e.Serialize=e.configureUrlQuery=void 0;var r=n(\"+MfF\");Object.defineProperty(e,\"encode\",{enumerable:!0,get:function(){return r.encode}}),Object.defineProperty(e,\"decode\",{enumerable:!0,get:function(){return r.decode}});var i=n(\"5fYu\");Object.defineProperty(e,\"replaceInUrlQuery\",{enumerable:!0,get:function(){return i.replaceInUrlQuery}}),Object.defineProperty(e,\"replaceUrlQuery\",{enumerable:!0,get:function(){return i.replaceUrlQuery}}),Object.defineProperty(e,\"pushInUrlQuery\",{enumerable:!0,get:function(){return i.pushInUrlQuery}}),Object.defineProperty(e,\"pushUrlQuery\",{enumerable:!0,get:function(){return i.pushUrlQuery}}),Object.defineProperty(e,\"multiReplaceInUrlQuery\",{enumerable:!0,get:function(){return i.multiReplaceInUrlQuery}}),Object.defineProperty(e,\"multiPushInUrlQuery\",{enumerable:!0,get:function(){return i.multiPushInUrlQuery}});var o=n(\"Mos3\");Object.defineProperty(e,\"replaceInUrlQueryFromAction\",{enumerable:!0,get:function(){return o.replaceInUrlQueryFromAction}}),Object.defineProperty(e,\"replaceUrlQueryFromAction\",{enumerable:!0,get:function(){return o.replaceUrlQueryFromAction}}),Object.defineProperty(e,\"pushInUrlQueryFromAction\",{enumerable:!0,get:function(){return o.pushInUrlQueryFromAction}}),Object.defineProperty(e,\"pushUrlQueryFromAction\",{enumerable:!0,get:function(){return o.pushUrlQueryFromAction}});var u=n(\"K7Q1\");Object.defineProperty(e,\"urlReplaceAction\",{enumerable:!0,get:function(){return u.urlReplaceAction}}),Object.defineProperty(e,\"urlPushAction\",{enumerable:!0,get:function(){return u.urlPushAction}}),Object.defineProperty(e,\"urlReplaceInAction\",{enumerable:!0,get:function(){return u.urlReplaceInAction}}),Object.defineProperty(e,\"urlPushInAction\",{enumerable:!0,get:function(){return u.urlPushInAction}});var a=b(n(\"q0cm\")),c=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(r),s=b(n(\"qw/J\")),l=b(n(\"a4qL\")),f=b(n(\"tOWm\")),h=b(n(\"pAdL\")),p=b(n(\"pqSw\")),d=b(n(\"KYhp\")),y=b(u),_=b(n(\"QB/3\")),g=b(n(\"rnRR\")),v=b(n(\"JEiT\")),m=b(n(\"Ur2m\"));function b(t){return t&&t.__esModule?t:{default:t}}e.configureUrlQuery=a.default,e.Serialize=c,e.urlQueryDecoder=s.default,e.urlQueryEncoder=l.default,e.UrlQueryParamTypes=f.default,e.UrlUpdateTypes=h.default,e.addUrlProps=p.default,e.RouterToUrlQuery=d.default,e.urlAction=y.default,e.urlQueryMiddleware=_.default,e.urlQueryReducer=g.default,e.subquery=v.default,e.subqueryOmit=m.default},LhCv:function(t,e,n){\"use strict\";function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}function i(t){return\"/\"===t.charAt(0)}function o(t,e){for(var n=e,r=n+1,i=t.length;r<i;n+=1,r+=1)t[n]=t[r];t.pop()}var u=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",n=t&&t.split(\"/\")||[],r=e&&e.split(\"/\")||[],u=t&&i(t),a=e&&i(e),c=u||a;if(t&&i(t)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return\"/\";var s=void 0;if(r.length){var l=r[r.length-1];s=\".\"===l||\"..\"===l||\"\"===l}else s=!1;for(var f=0,h=r.length;h>=0;h--){var p=r[h];\".\"===p?o(r,h):\"..\"===p?(o(r,h),f++):f&&(o(r,h),f--)}if(!c)for(;f--;f)r.unshift(\"..\");!c||\"\"===r[0]||r[0]&&i(r[0])||r.unshift(\"\");var d=r.join(\"/\");return s&&\"/\"!==d.substr(-1)&&(d+=\"/\"),d};\"function\"==typeof Symbol&&Symbol.iterator;var a=function(t,e){if(!t)throw new Error(\"Invariant failed\")};function c(t){return\"/\"===t.charAt(0)?t:\"/\"+t}function s(t,e){return function(t,e){return new RegExp(\"^\"+e+\"(\\\\/|\\\\?|#|$)\",\"i\").test(t)}(t,e)?t.substr(e.length):t}function l(t){return\"/\"===t.charAt(t.length-1)?t.slice(0,-1):t}function f(t){var e=t.pathname,n=t.search,r=t.hash,i=e||\"/\";return n&&\"?\"!==n&&(i+=\"?\"===n.charAt(0)?n:\"?\"+n),r&&\"#\"!==r&&(i+=\"#\"===r.charAt(0)?r:\"#\"+r),i}function h(t,e,n,i){var o;\"string\"==typeof t?(o=function(t){var e=t||\"/\",n=\"\",r=\"\",i=e.indexOf(\"#\");-1!==i&&(r=e.substr(i),e=e.substr(0,i));var o=e.indexOf(\"?\");return-1!==o&&(n=e.substr(o),e=e.substr(0,o)),{pathname:e,search:\"?\"===n?\"\":n,hash:\"#\"===r?\"\":r}}(t)).state=e:(void 0===(o=r({},t)).pathname&&(o.pathname=\"\"),o.search?\"?\"!==o.search.charAt(0)&&(o.search=\"?\"+o.search):o.search=\"\",o.hash?\"#\"!==o.hash.charAt(0)&&(o.hash=\"#\"+o.hash):o.hash=\"\",void 0!==e&&void 0===o.state&&(o.state=e));try{o.pathname=decodeURI(o.pathname)}catch(t){throw t instanceof URIError?new URIError('Pathname \"'+o.pathname+'\" could not be decoded. This is likely caused by an invalid percent-encoding.'):t}return n&&(o.key=n),i?o.pathname?\"/\"!==o.pathname.charAt(0)&&(o.pathname=u(o.pathname,i.pathname)):o.pathname=i.pathname:o.pathname||(o.pathname=\"/\"),o}function p(){var t=null;var e=[];return{setPrompt:function(e){return t=e,function(){t===e&&(t=null)}},confirmTransitionTo:function(e,n,r,i){if(null!=t){var o=\"function\"==typeof t?t(e,n):t;\"string\"==typeof o?\"function\"==typeof r?r(o,i):i(!0):i(!1!==o)}else i(!0)},appendListener:function(t){var n=!0;function r(){n&&t.apply(void 0,arguments)}return e.push(r),function(){n=!1,e=e.filter((function(t){return t!==r}))}},notifyListeners:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];e.forEach((function(t){return t.apply(void 0,n)}))}}}n.d(e,\"a\",(function(){return g}));var d=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);function y(t,e){e(window.confirm(t))}function _(){try{return window.history.state||{}}catch(t){return{}}}function g(t){void 0===t&&(t={}),d||a(!1);var e,n=window.history,i=(-1===(e=window.navigator.userAgent).indexOf(\"Android 2.\")&&-1===e.indexOf(\"Android 4.0\")||-1===e.indexOf(\"Mobile Safari\")||-1!==e.indexOf(\"Chrome\")||-1!==e.indexOf(\"Windows Phone\"))&&window.history&&\"pushState\"in window.history,o=!(-1===window.navigator.userAgent.indexOf(\"Trident\")),u=t,g=u.forceRefresh,v=void 0!==g&&g,m=u.getUserConfirmation,b=void 0===m?y:m,x=u.keyLength,w=void 0===x?6:x,M=t.basename?l(c(t.basename)):\"\";function T(t){var e=t||{},n=e.key,r=e.state,i=window.location,o=i.pathname+i.search+i.hash;return M&&(o=s(o,M)),h(o,r,n)}function O(){return Math.random().toString(36).substr(2,w)}var k=p();function j(t){r(L,t),L.length=n.length,k.notifyListeners(L.location,L.action)}function S(t){(function(t){void 0===t.state&&navigator.userAgent.indexOf(\"CriOS\")})(t)||P(T(t.state))}function N(){P(T(_()))}var A=!1;function P(t){if(A)A=!1,j();else{k.confirmTransitionTo(t,\"POP\",b,(function(e){e?j({action:\"POP\",location:t}):function(t){var e=L.location,n=F.indexOf(e.key);-1===n&&(n=0);var r=F.indexOf(t.key);-1===r&&(r=0);var i=n-r;i&&(A=!0,E(i))}(t)}))}}var U=T(_()),F=[U.key];function C(t){return M+f(t)}function E(t){n.go(t)}var I=0;function Q(t){1===(I+=t)&&1===t?(window.addEventListener(\"popstate\",S),o&&window.addEventListener(\"hashchange\",N)):0===I&&(window.removeEventListener(\"popstate\",S),o&&window.removeEventListener(\"hashchange\",N))}var D=!1;var L={length:n.length,action:\"POP\",location:U,createHref:C,push:function(t,e){var r=h(t,e,O(),L.location);k.confirmTransitionTo(r,\"PUSH\",b,(function(t){if(t){var e=C(r),o=r.key,u=r.state;if(i)if(n.pushState({key:o,state:u},null,e),v)window.location.href=e;else{var a=F.indexOf(L.location.key),c=F.slice(0,-1===a?0:a+1);c.push(r.key),F=c,j({action:\"PUSH\",location:r})}else window.location.href=e}}))},replace:function(t,e){var r=h(t,e,O(),L.location);k.confirmTransitionTo(r,\"REPLACE\",b,(function(t){if(t){var e=C(r),o=r.key,u=r.state;if(i)if(n.replaceState({key:o,state:u},null,e),v)window.location.replace(e);else{var a=F.indexOf(L.location.key);-1!==a&&(F[a]=r.key),j({action:\"REPLACE\",location:r})}else window.location.replace(e)}}))},go:E,goBack:function(){E(-1)},goForward:function(){E(1)},block:function(t){void 0===t&&(t=!1);var e=k.setPrompt(t);return D||(Q(1),D=!0),function(){return D&&(D=!1,Q(-1)),e()}},listen:function(t){var e=k.appendListener(t);return Q(1),function(){Q(-1),e()}}};return L}},Lusz:function(t,e,n){\"use strict\";e.__esModule=!0,e.default={addUrlChangeHandlers:!0,addRouterParams:!0,changeHandlerName:function(t){return\"onChange\"+t[0].toUpperCase()+t.substring(1)},history:{push:function(){console.error(\"No history provided to react-url-query. Please provide one via configureUrlQuery.\")},replace:function(){console.error(\"No history provided to react-url-query. Please provide one via configureUrlQuery.\")}},readLocationFromStore:function(t){if(t&&t.routing)return t.routing.locationBeforeTransitions},entrySeparator:\"_\",keyValSeparator:\"-\"}},MgzW:function(t,e,n){\"use strict\";var r=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function u(t){if(null==t)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",\"5\"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e[\"_\"+String.fromCharCode(n)]=n;if(\"0123456789\"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(\"\"))return!1;var r={};return\"abcdefghijklmnopqrst\".split(\"\").forEach((function(t){r[t]=t})),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},r)).join(\"\")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,a,c=u(t),s=1;s<arguments.length;s++){for(var l in n=Object(arguments[s]))i.call(n,l)&&(c[l]=n[l]);if(r){a=r(n);for(var f=0;f<a.length;f++)o.call(n,a[f])&&(c[a[f]]=n[a[f]])}}return c}},Mos3:function(t,e,n){\"use strict\";e.__esModule=!0,e.replaceUrlQueryFromAction=function(t,e){var n=t.payload.encodedQuery;(0,r.replaceUrlQuery)(n,e)},e.pushUrlQueryFromAction=function(t,e){var n=t.payload.encodedQuery;(0,r.pushUrlQuery)(n,e)},e.replaceInUrlQueryFromAction=function(t,e){var n=t.payload,i=n.queryParam,o=n.encodedValue;(0,r.replaceInUrlQuery)(i,o,e)},e.pushInUrlQueryFromAction=function(t,e){var n=t.payload,i=n.queryParam,o=n.encodedValue;(0,r.pushInUrlQuery)(i,o,e)};var r=n(\"5fYu\")},Ms5B:function(t,e,n){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0}),e.defaultClient=e.defaultMapper=void 0;var r,i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol?\"symbol\":typeof t},o=n(\"ewZ4\");var u=((r=o)&&r.__esModule?r:{default:r}).default.page,a={mapper:{\"@@router/INIT_PATH\":u,\"@@router/UPDATE_PATH\":u,\"@@router/LOCATION_CHANGE\":u,\"@@reduxReactRouter/initRoutes\":u,\"@@reduxReactRouter/routerDidChange\":u,\"@@reduxReactRouter/replaceRoutes\":u}};e.defaultMapper=a,e.defaultClient=function(){return(\"object\"===(\"undefined\"==typeof self?\"undefined\":i(self))&&self.self===self&&self||\"object\"===(void 0===t?\"undefined\":i(t))&&t.global===t&&t||void 0).analytics}}).call(this,n(\"yLpj\"))},Nsbk:function(t,e){function n(e){return t.exports=n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},n(e)}t.exports=n},PJYZ:function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}},\"QB/3\":function(t,e,n){\"use strict\";e.__esModule=!0;var r=o(n(\"rnRR\")),i=o(n(\"Lusz\"));function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return function(e){var n=e.getState;return function(e){return function(o){if(!o.meta||!o.meta.urlQuery)return e(o);var u=t.reducer||i.default.reducer||r.default,a=null==t.readLocationFromStore?i.default.readLocationFromStore:t.readLocationFromStore;a?u(o,a(n())):u(o);return!1===t.shortcircuit?e(o):void 0}}}}},QILm:function(t,e,n){var r=n(\"8OQS\");t.exports=function(t,e){if(null==t)return{};var n,i,o=r(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(i=0;i<u.length;i++)n=u[i],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}},R0i0:function(t,e,n){\"use strict\";var r=n(\"Ki0a\"),i=n(\"7ssf\"),o=new Date,u=new Date;function a(t,e,n,r){function i(e){return t(e=new Date(+e)),e}return i.floor=i,i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,o){var u,a=[];if(n=i.ceil(n),o=null==o?1:Math.floor(o),!(n<r&&o>0))return a;do{a.push(u=new Date(+n)),e(n,o),t(n)}while(u<n&&n<r);return a},i.filter=function(n){return a((function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return o.setTime(+e),u.setTime(+r),t(o),t(u),Math.floor(n(o,u))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var c=a((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));c.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?a((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):c:null};var s=c,l=(c.range,a((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()}))),f=l,h=(l.range,a((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()}))),p=h,d=(h.range,a((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()}))),y=d,_=(d.range,a((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1}))),g=_;_.range;function v(t){return a((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var m=v(0),b=v(1),x=v(2),w=v(3),M=v(4),T=v(5),O=v(6),k=(m.range,b.range,x.range,w.range,M.range,T.range,O.range,a((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}))),j=k,S=(k.range,a((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()})));S.every=function(t){return isFinite(t=Math.floor(t))&&t>0?a((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var N=S,A=(S.range,a((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()}))),P=(A.range,a((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()}))),U=(P.range,a((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1}))),F=U;U.range;function C(t){return a((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var E=C(0),I=C(1),Q=C(2),D=C(3),L=C(4),R=C(5),q=C(6),Y=(E.range,I.range,Q.range,D.range,L.range,R.range,q.range,a((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()}))),H=(Y.range,a((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()})));H.every=function(t){return isFinite(t=Math.floor(t))&&t>0?a((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};var B=H;H.range;function z(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function $(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Z(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}var V,W,X,J,K={\"-\":\"\",_:\" \",0:\"0\"},G=/^\\s*\\d+/,tt=/^%/,et=/[\\\\^$*+?|[\\]().{}]/g;function nt(t,e,n){var r=t<0?\"-\":\"\",i=(r?-t:t)+\"\",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function rt(t){return t.replace(et,\"\\\\$&\")}function it(t){return new RegExp(\"^(?:\"+t.map(rt).join(\"|\")+\")\",\"i\")}function ot(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function ut(t,e,n){var r=G.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function at(t,e,n){var r=G.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function ct(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function st(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function lt(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function ft(t,e,n){var r=G.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function ht(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function pt(t,e,n){var r=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||\"00\")),n+r[0].length):-1}function dt(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function yt(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function _t(t,e,n){var r=G.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function gt(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function vt(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function mt(t,e,n){var r=G.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function bt(t,e,n){var r=G.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function xt(t,e,n){var r=G.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function wt(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Mt(t,e,n){var r=G.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Tt(t,e,n){var r=G.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function Ot(t,e){return nt(t.getDate(),e,2)}function kt(t,e){return nt(t.getHours(),e,2)}function jt(t,e){return nt(t.getHours()%12||12,e,2)}function St(t,e){return nt(1+g.count(N(t),t),e,3)}function Nt(t,e){return nt(t.getMilliseconds(),e,3)}function At(t,e){return Nt(t,e)+\"000\"}function Pt(t,e){return nt(t.getMonth()+1,e,2)}function Ut(t,e){return nt(t.getMinutes(),e,2)}function Ft(t,e){return nt(t.getSeconds(),e,2)}function Ct(t){var e=t.getDay();return 0===e?7:e}function Et(t,e){return nt(m.count(N(t),t),e,2)}function It(t,e){var n=t.getDay();return t=n>=4||0===n?M(t):M.ceil(t),nt(M.count(N(t),t)+(4===N(t).getDay()),e,2)}function Qt(t){return t.getDay()}function Dt(t,e){return nt(b.count(N(t),t),e,2)}function Lt(t,e){return nt(t.getFullYear()%100,e,2)}function Rt(t,e){return nt(t.getFullYear()%1e4,e,4)}function qt(t){var e=t.getTimezoneOffset();return(e>0?\"-\":(e*=-1,\"+\"))+nt(e/60|0,\"0\",2)+nt(e%60,\"0\",2)}function Yt(t,e){return nt(t.getUTCDate(),e,2)}function Ht(t,e){return nt(t.getUTCHours(),e,2)}function Bt(t,e){return nt(t.getUTCHours()%12||12,e,2)}function zt(t,e){return nt(1+F.count(B(t),t),e,3)}function $t(t,e){return nt(t.getUTCMilliseconds(),e,3)}function Zt(t,e){return $t(t,e)+\"000\"}function Vt(t,e){return nt(t.getUTCMonth()+1,e,2)}function Wt(t,e){return nt(t.getUTCMinutes(),e,2)}function Xt(t,e){return nt(t.getUTCSeconds(),e,2)}function Jt(t){var e=t.getUTCDay();return 0===e?7:e}function Kt(t,e){return nt(E.count(B(t),t),e,2)}function Gt(t,e){var n=t.getUTCDay();return t=n>=4||0===n?L(t):L.ceil(t),nt(L.count(B(t),t)+(4===B(t).getUTCDay()),e,2)}function te(t){return t.getUTCDay()}function ee(t,e){return nt(I.count(B(t),t),e,2)}function ne(t,e){return nt(t.getUTCFullYear()%100,e,2)}function re(t,e){return nt(t.getUTCFullYear()%1e4,e,4)}function ie(){return\"+0000\"}function oe(){return\"%\"}function ue(t){return+t}function ae(t){return Math.floor(+t/1e3)}V=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,u=t.shortDays,a=t.months,c=t.shortMonths,s=it(i),l=ot(i),f=it(o),h=ot(o),p=it(u),d=ot(u),y=it(a),_=ot(a),v=it(c),m=ot(c),x={a:function(t){return u[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return a[t.getMonth()]},c:null,d:Ot,e:Ot,f:At,H:kt,I:jt,j:St,L:Nt,m:Pt,M:Ut,p:function(t){return i[+(t.getHours()>=12)]},Q:ue,s:ae,S:Ft,u:Ct,U:Et,V:It,w:Qt,W:Dt,x:null,X:null,y:Lt,Y:Rt,Z:qt,\"%\":oe},w={a:function(t){return u[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return a[t.getUTCMonth()]},c:null,d:Yt,e:Yt,f:Zt,H:Ht,I:Bt,j:zt,L:$t,m:Vt,M:Wt,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:ue,s:ae,S:Xt,u:Jt,U:Kt,V:Gt,w:te,W:ee,x:null,X:null,y:ne,Y:re,Z:ie,\"%\":oe},M={a:function(t,e,n){var r=p.exec(e.slice(n));return r?(t.w=d[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=_[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return k(t,e,n,r)},d:yt,e:yt,f:xt,H:gt,I:gt,j:_t,L:bt,m:dt,M:vt,p:function(t,e,n){var r=s.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},Q:Mt,s:Tt,S:mt,u:at,U:ct,V:st,w:ut,W:lt,x:function(t,e,r){return k(t,n,e,r)},X:function(t,e,n){return k(t,r,e,n)},y:ht,Y:ft,Z:pt,\"%\":wt};function T(t,e){return function(n){var r,i,o,u=[],a=-1,c=0,s=t.length;for(n instanceof Date||(n=new Date(+n));++a<s;)37===t.charCodeAt(a)&&(u.push(t.slice(c,a)),null!=(i=K[r=t.charAt(++a)])?r=t.charAt(++a):i=\"e\"===r?\" \":\"0\",(o=e[r])&&(r=o(n,i)),u.push(r),c=a+1);return u.push(t.slice(c,a)),u.join(\"\")}}function O(t,e){return function(n){var r,i,o=Z(1900);if(k(o,t,n+=\"\",0)!=n.length)return null;if(\"Q\"in o)return new Date(o.Q);if(\"p\"in o&&(o.H=o.H%12+12*o.p),\"V\"in o){if(o.V<1||o.V>53)return null;\"w\"in o||(o.w=1),\"Z\"in o?(i=(r=$(Z(o.y))).getUTCDay(),r=i>4||0===i?I.ceil(r):I(r),r=F.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=e(Z(o.y))).getDay(),r=i>4||0===i?b.ceil(r):b(r),r=g.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else(\"W\"in o||\"U\"in o)&&(\"w\"in o||(o.w=\"u\"in o?o.u%7:\"W\"in o?1:0),i=\"Z\"in o?$(Z(o.y)).getUTCDay():e(Z(o.y)).getDay(),o.m=0,o.d=\"W\"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return\"Z\"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,$(o)):e(o)}}function k(t,e,n,r){for(var i,o,u=0,a=e.length,c=n.length;u<a;){if(r>=c)return-1;if(37===(i=e.charCodeAt(u++))){if(i=e.charAt(u++),!(o=M[i in K?e.charAt(u++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return(x.x=T(n,x),x.X=T(r,x),x.c=T(e,x),w.x=T(n,w),w.X=T(r,w),w.c=T(e,w),{format:function(t){var e=T(t+=\"\",x);return e.toString=function(){return t},e},parse:function(t){var e=O(t+=\"\",z);return e.toString=function(){return t},e},utcFormat:function(t){var e=T(t+=\"\",w);return e.toString=function(){return t},e},utcParse:function(t){var e=O(t,$);return e.toString=function(){return t},e}})}({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]}),W=V.format,V.parse,X=V.utcFormat,J=V.utcParse;Date.prototype.toISOString||X(\"%Y-%m-%dT%H:%M:%S.%LZ\");+new Date(\"2000-01-01T00:00:00.000Z\")||J(\"%Y-%m-%dT%H:%M:%S.%LZ\");var ce=n(\"6YF4\"),se=n(\"1Ix/\");function le(t){return new Date(t)}function fe(t){return t instanceof Date?+t:+new Date(+t)}function he(t,e,n,o,u,a,c,s,l){var f=Object(ce.b)(),h=f.invert,p=f.domain,d=l(\".%L\"),y=l(\":%S\"),_=l(\"%I:%M\"),g=l(\"%I %p\"),v=l(\"%a %d\"),m=l(\"%b %d\"),b=l(\"%B\"),x=l(\"%Y\"),w=[[c,1,1e3],[c,5,5e3],[c,15,15e3],[c,30,3e4],[a,1,6e4],[a,5,3e5],[a,15,9e5],[a,30,18e5],[u,1,36e5],[u,3,108e5],[u,6,216e5],[u,12,432e5],[o,1,864e5],[o,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function M(r){return(c(r)<r?d:a(r)<r?y:u(r)<r?_:o(r)<r?g:e(r)<r?n(r)<r?v:m:t(r)<r?b:x)(r)}function T(e,n,o){if(null==e&&(e=10),\"number\"==typeof e){var u,a=Math.abs(o-n)/e,c=Object(r.a)((function(t){return t[2]})).right(w,a);return c===w.length?(u=Object(i.c)(n/31536e6,o/31536e6,e),e=t):c?(u=(c=w[a/w[c-1][2]<w[c][2]/a?c-1:c])[1],e=c[0]):(u=Math.max(Object(i.c)(n,o,e),1),e=s),e.every(u)}return e}return f.invert=function(t){return new Date(h(t))},f.domain=function(t){return arguments.length?p(Array.from(t,fe)):p().map(le)},f.ticks=function(t){var e,n=p(),r=n[0],i=n[n.length-1],o=i<r;return o&&(e=r,r=i,i=e),e=(e=T(t,r,i))?e.range(r,i+1):[],o?e.reverse():e},f.tickFormat=function(t,e){return null==e?M:l(e)},f.nice=function(t){var e=p();return(t=T(t,e[0],e[e.length-1]))?p(function(t,e){var n,r=0,i=(t=t.slice()).length-1,o=t[r],u=t[i];return u<o&&(n=r,r=i,i=n,n=o,o=u,u=n),t[r]=e.floor(o),t[i]=e.ceil(u),t}(e,t)):f},f.copy=function(){return Object(ce.a)(f,he(t,e,n,o,u,a,c,s,l))},f}e.a=function(){return se.a.apply(he(N,j,m,g,y,p,f,s,W).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}},RIqP:function(t,e,n){var r=n(\"Ijbi\"),i=n(\"EbDI\"),o=n(\"Bnag\");t.exports=function(t){return r(t)||i(t)||o()}},SksO:function(t,e){function n(e,r){return t.exports=n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},n(e,r)}t.exports=n},TSYQ:function(t,e,n){var r;!function(){\"use strict\";var n={}.hasOwnProperty;function i(){for(var t=[],e=0;e<arguments.length;e++){var r=arguments[e];if(r){var o=typeof r;if(\"string\"===o||\"number\"===o)t.push(r);else if(Array.isArray(r)&&r.length){var u=i.apply(null,r);u&&t.push(u)}else if(\"object\"===o)for(var a in r)n.call(r,a)&&r[a]&&t.push(a)}}return t.join(\" \")}t.exports?(i.default=i,t.exports=i):void 0===(r=function(){return i}.apply(e,[]))||(t.exports=r)}()},Ur2m:function(t,e,n){\"use strict\";e.__esModule=!0,e.default=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];if(!t)return t;return Object.keys(t).filter((function(t){return!n.includes(t)})).reduce((function(e,n){return e[n]=t[n],e}),{})}},VIqg:function(t,e,n){\"use strict\";var r=n(\"7ssf\"),i=n(\"6YF4\"),o=n(\"1Ix/\"),u=function(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf(\"e\"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]},a=function(t){return(t=u(Math.abs(t)))?t[1]:NaN},c=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function s(t){return new l(t)}function l(t){if(!(e=c.exec(t)))throw new Error(\"invalid format: \"+t);var e;this.fill=e[1]||\" \",this.align=e[2]||\">\",this.sign=e[3]||\"-\",this.symbol=e[4]||\"\",this.zero=!!e[5],this.width=e[6]&&+e[6],this.comma=!!e[7],this.precision=e[8]&&+e[8].slice(1),this.trim=!!e[9],this.type=e[10]||\"\"}s.prototype=l.prototype,l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(null==this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(null==this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var f,h,p,d,y=function(t,e){var n=u(t,e);if(!n)return t+\"\";var r=n[0],i=n[1];return i<0?\"0.\"+new Array(-i).join(\"0\")+r:r.length>i+1?r.slice(0,i+1)+\".\"+r.slice(i+1):r+new Array(i-r.length+2).join(\"0\")},_={\"%\":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return y(100*t,e)},r:y,s:function(t,e){var n=u(t,e);if(!n)return t+\"\";var r=n[0],i=n[1],o=i-(f=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join(\"0\"):o>0?r.slice(0,o)+\".\"+r.slice(o):\"0.\"+new Array(1-o).join(\"0\")+u(t,Math.max(0,e+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},g=function(t){return t},v=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];h=function(t){var e,n,r=t.grouping&&t.thousands?(e=t.grouping,n=t.thousands,function(t,r){for(var i=t.length,o=[],u=0,a=e[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(t.substring(i-=a,i+a)),!((c+=a+1)>r));)a=e[u=(u+1)%e.length];return o.reverse().join(n)}):g,i=t.currency,o=t.decimal,u=t.numerals?function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(t.numerals):g,c=t.percent||\"%\";function l(t){var e=(t=s(t)).fill,n=t.align,a=t.sign,l=t.symbol,h=t.zero,p=t.width,d=t.comma,y=t.precision,g=t.trim,m=t.type;\"n\"===m?(d=!0,m=\"g\"):_[m]||(null==y&&(y=12),g=!0,m=\"g\"),(h||\"0\"===e&&\"=\"===n)&&(h=!0,e=\"0\",n=\"=\");var b=\"$\"===l?i[0]:\"#\"===l&&/[boxX]/.test(m)?\"0\"+m.toLowerCase():\"\",x=\"$\"===l?i[1]:/[%p]/.test(m)?c:\"\",w=_[m],M=/[defgprs%]/.test(m);function T(t){var i,c,s,l=b,_=x;if(\"c\"===m)_=w(t)+_,t=\"\";else{var T=(t=+t)<0;if(t=w(Math.abs(t),y),g&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case\".\":i=e=r;break;case\"0\":0===i&&(i=r),e=r;break;default:if(i>0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),T&&0==+t&&(T=!1),l=(T?\"(\"===a?a:\"-\":\"-\"===a||\"(\"===a?\"\":a)+l,_=(\"s\"===m?v[8+f/3]:\"\")+_+(T&&\"(\"===a?\")\":\"\"),M)for(i=-1,c=t.length;++i<c;)if(48>(s=t.charCodeAt(i))||s>57){_=(46===s?o+t.slice(i+1):t.slice(i))+_,t=t.slice(0,i);break}}d&&!h&&(t=r(t,1/0));var O=l.length+t.length+_.length,k=O<p?new Array(p-O+1).join(e):\"\";switch(d&&h&&(t=r(k+t,k.length?p-_.length:1/0),k=\"\"),n){case\"<\":t=l+t+_+k;break;case\"=\":t=l+k+t+_;break;case\"^\":t=k.slice(0,O=k.length>>1)+l+t+_+k.slice(O);break;default:t=k+l+t+_}return u(t)}return y=null==y?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),T.toString=function(){return t+\"\"},T}return{format:l,formatPrefix:function(t,e){var n=l(((t=s(t)).type=\"f\",t)),r=3*Math.max(-8,Math.min(8,Math.floor(a(e)/3))),i=Math.pow(10,-r),o=v[8+r/3];return function(t){return n(i*t)+o}}}}({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"]}),p=h.format,d=h.formatPrefix;var m=function(t,e,n,i){var o,u=Object(r.c)(t,e,n);switch((i=s(null==i?\",f\":i)).type){case\"s\":var c=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(o=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(a(e)/3)))-a(Math.abs(t)))}(u,c))||(i.precision=o),d(i,c);case\"\":case\"e\":case\"g\":case\"p\":case\"r\":null!=i.precision||isNaN(o=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,a(e)-a(t))+1}(u,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=o-(\"e\"===i.type));break;case\"f\":case\"%\":null!=i.precision||isNaN(o=function(t){return Math.max(0,-a(Math.abs(t)))}(u))||(i.precision=o-2*(\"%\"===i.type))}return p(i)};function b(t){var e=t.domain;return t.ticks=function(t){var n=e();return Object(r.a)(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return m(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var i,o=e(),u=0,a=o.length-1,c=o[u],s=o[a];return s<c&&(i=c,c=s,s=i,i=u,u=a,a=i),(i=Object(r.b)(c,s,n))>0?(c=Math.floor(c/i)*i,s=Math.ceil(s/i)*i,i=Object(r.b)(c,s,n)):i<0&&(c=Math.ceil(c*i)/i,s=Math.floor(s*i)/i,i=Object(r.b)(c,s,n)),i>0?(o[u]=Math.floor(c/i)*i,o[a]=Math.ceil(s/i)*i,e(o)):i<0&&(o[u]=Math.ceil(c*i)/i,o[a]=Math.floor(s*i)/i,e(o)),t},t}function x(){var t=Object(i.b)();return t.copy=function(){return Object(i.a)(t,x())},o.a.apply(t,arguments),b(t)}n.d(e,\"a\",(function(){return x}))},W8MJ:function(t,e){function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}t.exports=function(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}},ZFOp:function(t,e,n){\"use strict\";t.exports=function(t){return encodeURIComponent(t).replace(/[!'()*]/g,(function(t){return\"%\"+t.charCodeAt(0).toString(16).toUpperCase()}))}},ZhIB:function(t,e,n){var r,i;void 0===(i=\"function\"==typeof(r=function(){var t,e,n,r,i,o={},u={},a={currentLocale:\"en\",zeroFormat:null,nullFormat:null,defaultFormat:\"0,0\",scalePercentBy100:!0},c={currentLocale:a.currentLocale,zeroFormat:a.zeroFormat,nullFormat:a.nullFormat,defaultFormat:a.defaultFormat,scalePercentBy100:a.scalePercentBy100};function s(t,e){this._input=t,this._value=e}return(t=function(n){var r,i,u,a;if(t.isNumeral(n))r=n.value();else if(0===n||void 0===n)r=0;else if(null===n||e.isNaN(n))r=null;else if(\"string\"==typeof n)if(c.zeroFormat&&n===c.zeroFormat)r=0;else if(c.nullFormat&&n===c.nullFormat||!n.replace(/[^0-9]+/g,\"\").length)r=null;else{for(i in o)if((a=\"function\"==typeof o[i].regexps.unformat?o[i].regexps.unformat():o[i].regexps.unformat)&&n.match(a)){u=o[i].unformat;break}r=(u=u||t._.stringToNumber)(n)}else r=Number(n)||null;return new s(n,r)}).version=\"2.0.6\",t.isNumeral=function(t){return t instanceof s},t._=e={numberToFormat:function(e,n,r){var i,o,a,c,s,l,f,h,p=u[t.options.currentLocale],d=!1,y=!1,_=\"\",g=\"\",v=!1;if(e=e||0,a=Math.abs(e),t._.includes(n,\"(\")?(d=!0,n=n.replace(/[\\(|\\)]/g,\"\")):(t._.includes(n,\"+\")||t._.includes(n,\"-\"))&&(l=t._.includes(n,\"+\")?n.indexOf(\"+\"):e<0?n.indexOf(\"-\"):-1,n=n.replace(/[\\+|\\-]/g,\"\")),t._.includes(n,\"a\")&&(o=!!(o=n.match(/a(k|m|b|t)?/))&&o[1],t._.includes(n,\" a\")&&(_=\" \"),n=n.replace(new RegExp(_+\"a[kmbt]?\"),\"\"),a>=1e12&&!o||\"t\"===o?(_+=p.abbreviations.trillion,e/=1e12):a<1e12&&a>=1e9&&!o||\"b\"===o?(_+=p.abbreviations.billion,e/=1e9):a<1e9&&a>=1e6&&!o||\"m\"===o?(_+=p.abbreviations.million,e/=1e6):(a<1e6&&a>=1e3&&!o||\"k\"===o)&&(_+=p.abbreviations.thousand,e/=1e3)),t._.includes(n,\"[.]\")&&(y=!0,n=n.replace(\"[.]\",\".\")),c=e.toString().split(\".\")[0],s=n.split(\".\")[1],f=n.indexOf(\",\"),i=(n.split(\".\")[0].split(\",\")[0].match(/0/g)||[]).length,s?(t._.includes(s,\"[\")?(s=(s=s.replace(\"]\",\"\")).split(\"[\"),g=t._.toFixed(e,s[0].length+s[1].length,r,s[1].length)):g=t._.toFixed(e,s.length,r),c=g.split(\".\")[0],g=t._.includes(g,\".\")?p.delimiters.decimal+g.split(\".\")[1]:\"\",y&&0===Number(g.slice(1))&&(g=\"\")):c=t._.toFixed(e,0,r),_&&!o&&Number(c)>=1e3&&_!==p.abbreviations.trillion)switch(c=String(Number(c)/1e3),_){case p.abbreviations.thousand:_=p.abbreviations.million;break;case p.abbreviations.million:_=p.abbreviations.billion;break;case p.abbreviations.billion:_=p.abbreviations.trillion}if(t._.includes(c,\"-\")&&(c=c.slice(1),v=!0),c.length<i)for(var m=i-c.length;m>0;m--)c=\"0\"+c;return f>-1&&(c=c.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+p.delimiters.thousands)),0===n.indexOf(\".\")&&(c=\"\"),h=c+g+(_||\"\"),d?h=(d&&v?\"(\":\"\")+h+(d&&v?\")\":\"\"):l>=0?h=0===l?(v?\"-\":\"+\")+h:h+(v?\"-\":\"+\"):v&&(h=\"-\"+h),h},stringToNumber:function(t){var e,n,r,i=u[c.currentLocale],o=t,a={thousand:3,million:6,billion:9,trillion:12};if(c.zeroFormat&&t===c.zeroFormat)n=0;else if(c.nullFormat&&t===c.nullFormat||!t.replace(/[^0-9]+/g,\"\").length)n=null;else{for(e in n=1,\".\"!==i.delimiters.decimal&&(t=t.replace(/\\./g,\"\").replace(i.delimiters.decimal,\".\")),a)if(r=new RegExp(\"[^a-zA-Z]\"+i.abbreviations[e]+\"(?:\\\\)|(\\\\\"+i.currency.symbol+\")?(?:\\\\))?)?$\"),o.match(r)){n*=Math.pow(10,a[e]);break}n*=(t.split(\"-\").length+Math.min(t.split(\"(\").length-1,t.split(\")\").length-1))%2?1:-1,t=t.replace(/[^0-9\\.]+/g,\"\"),n*=Number(t)}return n},isNaN:function(t){return\"number\"==typeof t&&isNaN(t)},includes:function(t,e){return-1!==t.indexOf(e)},insert:function(t,e,n){return t.slice(0,n)+e+t.slice(n)},reduce:function(t,e){if(null===this)throw new TypeError(\"Array.prototype.reduce called on null or undefined\");if(\"function\"!=typeof e)throw new TypeError(e+\" is not a function\");var n,r=Object(t),i=r.length>>>0,o=0;if(3===arguments.length)n=arguments[2];else{for(;o<i&&!(o in r);)o++;if(o>=i)throw new TypeError(\"Reduce of empty array with no initial value\");n=r[o++]}for(;o<i;o++)o in r&&(n=e(n,r[o],o,r));return n},multiplier:function(t){var e=t.toString().split(\".\");return e.length<2?1:Math.pow(10,e[1].length)},correctionFactor:function(){var t=Array.prototype.slice.call(arguments);return t.reduce((function(t,n){var r=e.multiplier(n);return t>r?t:r}),1)},toFixed:function(t,e,n,r){var i,o,u,a,c=t.toString().split(\".\"),s=e-(r||0);return i=2===c.length?Math.min(Math.max(c[1].length,s),e):s,u=Math.pow(10,i),a=(n(t+\"e+\"+i)/u).toFixed(i),r>e-i&&(o=new RegExp(\"\\\\.?0{1,\"+(r-(e-i))+\"}$\"),a=a.replace(o,\"\")),a}},t.options=c,t.formats=o,t.locales=u,t.locale=function(t){return t&&(c.currentLocale=t.toLowerCase()),c.currentLocale},t.localeData=function(t){if(!t)return u[c.currentLocale];if(t=t.toLowerCase(),!u[t])throw new Error(\"Unknown locale : \"+t);return u[t]},t.reset=function(){for(var t in a)c[t]=a[t]},t.zeroFormat=function(t){c.zeroFormat=\"string\"==typeof t?t:null},t.nullFormat=function(t){c.nullFormat=\"string\"==typeof t?t:null},t.defaultFormat=function(t){c.defaultFormat=\"string\"==typeof t?t:\"0.0\"},t.register=function(t,e,n){if(e=e.toLowerCase(),this[t+\"s\"][e])throw new TypeError(e+\" \"+t+\" already registered.\");return this[t+\"s\"][e]=n,n},t.validate=function(e,n){var r,i,o,u,a,c,s,l;if(\"string\"!=typeof e&&(e+=\"\",console.warn&&console.warn(\"Numeral.js: Value is not string. It has been co-erced to: \",e)),(e=e.trim()).match(/^\\d+$/))return!0;if(\"\"===e)return!1;try{s=t.localeData(n)}catch(e){s=t.localeData(t.locale())}return o=s.currency.symbol,a=s.abbreviations,r=s.delimiters.decimal,i=\".\"===s.delimiters.thousands?\"\\\\.\":s.delimiters.thousands,!(null!==(l=e.match(/^[^\\d]+/))&&(e=e.substr(1),l[0]!==o)||null!==(l=e.match(/[^\\d]+$/))&&(e=e.slice(0,-1),l[0]!==a.thousand&&l[0]!==a.million&&l[0]!==a.billion&&l[0]!==a.trillion)||(c=new RegExp(i+\"{2}\"),e.match(/[^\\d.,]/g)||(u=e.split(r)).length>2||(u.length<2?!u[0].match(/^\\d+.*\\d$/)||u[0].match(c):1===u[0].length?!u[0].match(/^\\d+$/)||u[0].match(c)||!u[1].match(/^\\d+$/):!u[0].match(/^\\d+.*\\d$/)||u[0].match(c)||!u[1].match(/^\\d+$/))))},t.fn=s.prototype={clone:function(){return t(this)},format:function(e,n){var r,i,u,a=this._value,s=e||c.defaultFormat;if(n=n||Math.round,0===a&&null!==c.zeroFormat)i=c.zeroFormat;else if(null===a&&null!==c.nullFormat)i=c.nullFormat;else{for(r in o)if(s.match(o[r].regexps.format)){u=o[r].format;break}i=(u=u||t._.numberToFormat)(a,s,n)}return i},value:function(){return this._value},input:function(){return this._input},set:function(t){return this._value=Number(t),this},add:function(t){var n=e.correctionFactor.call(null,this._value,t);return this._value=e.reduce([this._value,t],(function(t,e,r,i){return t+Math.round(n*e)}),0)/n,this},subtract:function(t){var n=e.correctionFactor.call(null,this._value,t);return this._value=e.reduce([t],(function(t,e,r,i){return t-Math.round(n*e)}),Math.round(this._value*n))/n,this},multiply:function(t){return this._value=e.reduce([this._value,t],(function(t,n,r,i){var o=e.correctionFactor(t,n);return Math.round(t*o)*Math.round(n*o)/Math.round(o*o)}),1),this},divide:function(t){return this._value=e.reduce([this._value,t],(function(t,n,r,i){var o=e.correctionFactor(t,n);return Math.round(t*o)/Math.round(n*o)})),this},difference:function(e){return Math.abs(t(this._value).subtract(e).value())}},t.register(\"locale\",\"en\",{delimiters:{thousands:\",\",decimal:\".\"},abbreviations:{thousand:\"k\",million:\"m\",billion:\"b\",trillion:\"t\"},ordinal:function(t){var e=t%10;return 1==~~(t%100/10)?\"th\":1===e?\"st\":2===e?\"nd\":3===e?\"rd\":\"th\"},currency:{symbol:\"$\"}}),t.register(\"format\",\"bps\",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(e,n,r){var i,o=t._.includes(n,\" BPS\")?\" \":\"\";return e*=1e4,n=n.replace(/\\s?BPS/,\"\"),i=t._.numberToFormat(e,n,r),t._.includes(i,\")\")?((i=i.split(\"\")).splice(-1,0,o+\"BPS\"),i=i.join(\"\")):i=i+o+\"BPS\",i},unformat:function(e){return+(1e-4*t._.stringToNumber(e)).toFixed(15)}}),r={base:1024,suffixes:[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"]},i=\"(\"+(i=(n={base:1e3,suffixes:[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"]}).suffixes.concat(r.suffixes.filter((function(t){return n.suffixes.indexOf(t)<0}))).join(\"|\")).replace(\"B\",\"B(?!PS)\")+\")\",t.register(\"format\",\"bytes\",{regexps:{format:/([0\\s]i?b)/,unformat:new RegExp(i)},format:function(e,i,o){var u,a,c,s=t._.includes(i,\"ib\")?r:n,l=t._.includes(i,\" b\")||t._.includes(i,\" ib\")?\" \":\"\";for(i=i.replace(/\\s?i?b/,\"\"),u=0;u<=s.suffixes.length;u++)if(a=Math.pow(s.base,u),c=Math.pow(s.base,u+1),null===e||0===e||e>=a&&e<c){l+=s.suffixes[u],a>0&&(e/=a);break}return t._.numberToFormat(e,i,o)+l},unformat:function(e){var i,o,u=t._.stringToNumber(e);if(u){for(i=n.suffixes.length-1;i>=0;i--){if(t._.includes(e,n.suffixes[i])){o=Math.pow(n.base,i);break}if(t._.includes(e,r.suffixes[i])){o=Math.pow(r.base,i);break}}u*=o||1}return u}}),t.register(\"format\",\"currency\",{regexps:{format:/(\\$)/},format:function(e,n,r){var i,o,u=t.locales[t.options.currentLocale],a={before:n.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],after:n.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]};for(n=n.replace(/\\s?\\$\\s?/,\"\"),i=t._.numberToFormat(e,n,r),e>=0?(a.before=a.before.replace(/[\\-\\(]/,\"\"),a.after=a.after.replace(/[\\-\\)]/,\"\")):e<0&&!t._.includes(a.before,\"-\")&&!t._.includes(a.before,\"(\")&&(a.before=\"-\"+a.before),o=0;o<a.before.length;o++)switch(a.before[o]){case\"$\":i=t._.insert(i,u.currency.symbol,o);break;case\" \":i=t._.insert(i,\" \",o+u.currency.symbol.length-1)}for(o=a.after.length-1;o>=0;o--)switch(a.after[o]){case\"$\":i=o===a.after.length-1?i+u.currency.symbol:t._.insert(i,u.currency.symbol,-(a.after.length-(1+o)));break;case\" \":i=o===a.after.length-1?i+\" \":t._.insert(i,\" \",-(a.after.length-(1+o)+u.currency.symbol.length-1))}return i}}),t.register(\"format\",\"exponential\",{regexps:{format:/(e\\+|e-)/,unformat:/(e\\+|e-)/},format:function(e,n,r){var i=(\"number\"!=typeof e||t._.isNaN(e)?\"0e+0\":e.toExponential()).split(\"e\");return n=n.replace(/e[\\+|\\-]{1}0/,\"\"),t._.numberToFormat(Number(i[0]),n,r)+\"e\"+i[1]},unformat:function(e){var n=t._.includes(e,\"e+\")?e.split(\"e+\"):e.split(\"e-\"),r=Number(n[0]),i=Number(n[1]);return i=t._.includes(e,\"e-\")?i*=-1:i,t._.reduce([r,Math.pow(10,i)],(function(e,n,r,i){var o=t._.correctionFactor(e,n);return e*o*(n*o)/(o*o)}),1)}}),t.register(\"format\",\"ordinal\",{regexps:{format:/(o)/},format:function(e,n,r){var i=t.locales[t.options.currentLocale],o=t._.includes(n,\" o\")?\" \":\"\";return n=n.replace(/\\s?o/,\"\"),o+=i.ordinal(e),t._.numberToFormat(e,n,r)+o}}),t.register(\"format\",\"percentage\",{regexps:{format:/(%)/,unformat:/(%)/},format:function(e,n,r){var i,o=t._.includes(n,\" %\")?\" \":\"\";return t.options.scalePercentBy100&&(e*=100),n=n.replace(/\\s?\\%/,\"\"),i=t._.numberToFormat(e,n,r),t._.includes(i,\")\")?((i=i.split(\"\")).splice(-1,0,o+\"%\"),i=i.join(\"\")):i=i+o+\"%\",i},unformat:function(e){var n=t._.stringToNumber(e);return t.options.scalePercentBy100?.01*n:n}}),t.register(\"format\",\"time\",{regexps:{format:/(:)/,unformat:/(:)/},format:function(t,e,n){var r=Math.floor(t/60/60),i=Math.floor((t-60*r*60)/60),o=Math.round(t-60*r*60-60*i);return r+\":\"+(i<10?\"0\"+i:i)+\":\"+(o<10?\"0\"+o:o)},unformat:function(t){var e=t.split(\":\"),n=0;return 3===e.length?(n+=60*Number(e[0])*60,n+=60*Number(e[1]),n+=Number(e[2])):2===e.length&&(n+=60*Number(e[0]),n+=Number(e[1])),Number(n)}}),t})?r.call(e,n,e,t):r)||(t.exports=i)},a1gu:function(t,e,n){var r=n(\"cDf5\"),i=n(\"PJYZ\");t.exports=function(t,e){return!e||\"object\"!==r(e)&&\"function\"!=typeof e?i(t):e}},a4qL:function(t,e,n){\"use strict\";e.__esModule=!0,e.default=function(t){return function(e){return Object.keys(t).reduce((function(n,i){var o=t[i],u=o.queryParam,a=void 0===u?i:u,c=e[i],s=(0,r.encode)(o.type,c);return n[a]=s,n}),{})}};var r=n(\"+MfF\")},\"aC/x\":function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.extractPageFields=function(t){if(!t)return[];var e=function(t){return t.category&&!t.name?new Error(\"missing name field for EventTypes.page\"):null}(t);if(e)return e;var n,r=function(t){return t.category?[\"category\",\"name\",\"properties\",\"options\"]:t.name?[\"name\",\"properties\",\"options\"]:[\"properties\",\"options\"]}(t);return n=t,r.map((function(t){return\"properties\"===t?n[t]||{}:n[t]}))}},cDf5:function(t,e){function n(t){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function r(e){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?t.exports=r=function(t){return n(t)}:t.exports=r=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":n(t)},r(e)}t.exports=r},\"cr+I\":function(t,e,n){\"use strict\";var r=n(\"ZFOp\"),i=n(\"MgzW\");function o(t,e){return e.encode?e.strict?r(t):encodeURIComponent(t):t}e.extract=function(t){return t.split(\"?\")[1]||\"\"},e.parse=function(t,e){var n=function(t){var e;switch(t.arrayFormat){case\"index\":return function(t,n,r){e=/\\[(\\d*)\\]$/.exec(t),t=t.replace(/\\[\\d*\\]$/,\"\"),e?(void 0===r[t]&&(r[t]={}),r[t][e[1]]=n):r[t]=n};case\"bracket\":return function(t,n,r){e=/(\\[\\])$/.exec(t),t=t.replace(/\\[\\]$/,\"\"),e?void 0!==r[t]?r[t]=[].concat(r[t],n):r[t]=[n]:r[t]=n};default:return function(t,e,n){void 0!==n[t]?n[t]=[].concat(n[t],e):n[t]=e}}}(e=i({arrayFormat:\"none\"},e)),r=Object.create(null);return\"string\"!=typeof t?r:(t=t.trim().replace(/^(\\?|#|&)/,\"\"))?(t.split(\"&\").forEach((function(t){var e=t.replace(/\\+/g,\" \").split(\"=\"),i=e.shift(),o=e.length>0?e.join(\"=\"):void 0;o=void 0===o?null:decodeURIComponent(o),n(decodeURIComponent(i),o,r)})),Object.keys(r).sort().reduce((function(t,e){var n=r[e];return Boolean(n)&&\"object\"==typeof n&&!Array.isArray(n)?t[e]=function t(e){return Array.isArray(e)?e.sort():\"object\"==typeof e?t(Object.keys(e)).sort((function(t,e){return Number(t)-Number(e)})).map((function(t){return e[t]})):e}(n):t[e]=n,t}),Object.create(null))):r},e.stringify=function(t,e){var n=function(t){switch(t.arrayFormat){case\"index\":return function(e,n,r){return null===n?[o(e,t),\"[\",r,\"]\"].join(\"\"):[o(e,t),\"[\",o(r,t),\"]=\",o(n,t)].join(\"\")};case\"bracket\":return function(e,n){return null===n?o(e,t):[o(e,t),\"[]=\",o(n,t)].join(\"\")};default:return function(e,n){return null===n?o(e,t):[o(e,t),\"=\",o(n,t)].join(\"\")}}}(e=i({encode:!0,strict:!0,arrayFormat:\"none\"},e));return t?Object.keys(t).sort().map((function(r){var i=t[r];if(void 0===i)return\"\";if(null===i)return o(r,e);if(Array.isArray(i)){var u=[];return i.slice().forEach((function(t){void 0!==t&&u.push(n(r,t,u.length))})),u.join(\"&\")}return o(r,e)+\"=\"+o(i,e)})).filter((function(t){return t.length>0})).join(\"&\"):\"\"}},ewZ4:function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.default={identify:\"identify\",page:\"page\",track:\"track\",alias:\"alias\",group:\"group\",reset:\"reset\"}},\"gj+k\":function(t,e,n){\"use strict\";function r(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}n.d(e,\"a\",(function(){return r}))},lSNA:function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},laEt:function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.extractAliasFields=function(t){var e,n=function(t){return t.previousId?[\"userId\",\"previousId\",\"options\"]:[\"userId\",\"options\"]}(t),r=function(t){return t.userId?null:new Error(\"missing userId field for EventTypes.alias\")}(t);return r||(e=t,n.map((function(t){return e[t]})))}},lwsE:function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}},oShl:function(t,e,n){var r=n(\"Nsbk\"),i=n(\"SksO\"),o=n(\"xfeJ\"),u=n(\"sXyB\");function a(e){var n=\"function\"==typeof Map?new Map:void 0;return t.exports=a=function(t){if(null===t||!o(t))return t;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,e)}function e(){return u(t,arguments,r(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),i(e,t)},a(e)}t.exports=a},pAdL:function(t,e,n){\"use strict\";e.__esModule=!0;e.default={replace:\"replace\",replaceIn:\"replaceIn\",push:\"push\",pushIn:\"pushIn\"}},pVnL:function(t,e){function n(){return t.exports=n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},n.apply(this,arguments)}t.exports=n},peh1:function(t,e,n){\"use strict\";function r(t,e){return t===e}function i(t,e,n){if(null===e||null===n||e.length!==n.length)return!1;for(var r=e.length,i=0;i<r;i++)if(!t(e[i],n[i]))return!1;return!0}function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=null,o=null;return function(){return i(e,n,arguments)||(o=t.apply(null,arguments)),n=arguments,o}}function u(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every((function(t){return\"function\"==typeof t}))){var n=e.map((function(t){return typeof t})).join(\", \");throw new Error(\"Selector creators expect all input-selectors to be functions, instead received the following types: [\"+n+\"]\")}return e}function a(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return function(){for(var e=arguments.length,r=Array(e),i=0;i<e;i++)r[i]=arguments[i];var a=0,c=r.pop(),s=u(r),l=t.apply(void 0,[function(){return a++,c.apply(null,arguments)}].concat(n)),f=o((function(){for(var t=[],e=s.length,n=0;n<e;n++)t.push(s[n].apply(null,arguments));return l.apply(null,t)}));return f.resultFunc=c,f.recomputations=function(){return a},f.resetRecomputations=function(){return a=0},f}}e.__esModule=!0,e.defaultMemoize=o,e.createSelectorCreator=a,e.createStructuredSelector=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c;if(\"object\"!=typeof t)throw new Error(\"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a \"+typeof t);var n=Object.keys(t);return e(n.map((function(e){return t[e]})),(function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];return e.reduce((function(t,e,r){return t[n[r]]=e,t}),{})}))};var c=e.createSelector=a(o)},pqSw:function(t,e,n){\"use strict\";e.__esModule=!0;var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();e.default=function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=t.mapUrlToProps,n=void 0===e?function(t){return t}:e,p=t.mapUrlChangeHandlersToProps,g=t.urlPropsQueryConfig,v=t.addRouterParams,m=t.addUrlChangeHandlers,b=t.changeHandlerName;return function(t){var e=void 0,x=void 0;g&&(x=(0,c.default)(g));var w=t.displayName||t.name||\"Component\",M=function(i){function u(){return d(this,u),y(this,(u.__proto__||Object.getPrototypeOf(u)).apply(this,arguments))}return _(u,i),r(u,[{key:\"getUrlChangeHandlerProps\",value:function(t){var n=this,r=void 0;g&&((m||null==m&&s.default.addUrlChangeHandlers)&&(e?r=e:(b||(b=s.default.changeHandlerName),(r=Object.keys(g).reduce((function(t,e){var r=g[e],i=r.updateType,o=r.queryParam,u=void 0===o?e:o,a=r.type;return t[b(e)]=function(t){var e=s.default.history.location;e||(e=this.props.location);var n=(0,f.encode)(a,t);if(!e||!e.query||e.query[u]!==n)return(0,l.updateUrlQuerySingle)(i,u,n,e)}.bind(n),t}),{}))[b(\"urlQueryParams\")]=function(t){var e=arguments.length<=1||void 0===arguments[1]?h.default.replaceIn:arguments[1],n=s.default.history.location;n||(n=this.props.location);var r=!0,i=Object.keys(t).reduce((function(e,i){var o=g[i],u=o.queryParam,a=void 0===u?i:u,c=o.type,s=t[i],l=(0,f.encode)(c,s);return e[a]=l,n&&n.query&&n.query[a]!==l&&(r=!1),e}),{});if(!(n&&n.query&&r))return(0,l.updateUrlQueryMulti)(e,i,n)}.bind(this),e=r)));return p&&(r=p.call(this,t,r)),r}},{key:\"render\",value:function(){var e,r,i,u,c=(e=this.props,r=void 0,i=(r=s.default.history.location?s.default.history.location:e.location&&(e.location.query||null!=e.location.search)?e.location:window.location).query||(0,a.parse)(r.search)||{},u=void 0,u=x?x(i):i,(v||!1!==v&&s.default.addRouterParams)&&Object.assign(u,e.params,e.match&&e.match.params),u);return this.propsWithUrl=Object.assign({},this.props,n(c,this.props)),Object.assign(this.propsWithUrl,this.getUrlChangeHandlerProps(this.propsWithUrl)),o.default.createElement(t,this.propsWithUrl)}}]),u}(i.Component);return M.displayName=\"AddUrlProps(\"+w+\")\",M.WrappedComponent=t,M.propTypes={location:u.default.any},M}};var i=n(\"cDcd\"),o=p(i),u=p(n(\"rf6O\")),a=n(\"cr+I\"),c=p(n(\"qw/J\")),s=p(n(\"Lusz\")),l=n(\"5fYu\"),f=n(\"+MfF\"),h=p(n(\"pAdL\"));function p(t){return t&&t.__esModule?t:{default:t}}function d(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function y(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function _(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}},q0cm:function(t,e,n){\"use strict\";e.__esModule=!0,e.default=function(t){Object.assign(o.default,t)};var r,i=n(\"Lusz\"),o=(r=i)&&r.__esModule?r:{default:r}},\"qw/J\":function(t,e,n){\"use strict\";e.__esModule=!0,e.default=function(t){var e=void 0,n=void 0;return function(i){var o=Object.keys(t).reduce((function(o,u){var a=t[u],c=a.queryParam,s=void 0===c?u:c,l=i[s],f=void 0;return void 0!==(f=e&&void 0!==e[s]&&e[s]===l?n[u]:(0,r.decode)(a.type,l,a.defaultValue))&&a.validate&&!a.validate(f)&&(f=void 0),o[u]=f,o}),{});return e=i,n=o,o}};var r=n(\"+MfF\")},rnRR:function(t,e,n){\"use strict\";e.__esModule=!0,e.default=function(t,e){switch(t&&t.meta&&t.meta.updateType){case u.default.replaceIn:return(0,i.replaceInUrlQueryFromAction)(t,e);case u.default.replace:return(0,i.replaceUrlQueryFromAction)(t,e);case u.default.pushIn:return(0,i.pushInUrlQueryFromAction)(t,e);case u.default.push:return(0,i.pushUrlQueryFromAction)(t,e)}0;return};var r,i=n(\"Mos3\"),o=n(\"pAdL\"),u=(r=o)&&r.__esModule?r:{default:r}},sXyB:function(t,e,n){var r=n(\"SksO\");function i(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function o(e,n,u){return i()?t.exports=o=Reflect.construct:t.exports=o=function(t,e,n){var i=[null];i.push.apply(i,e);var o=new(Function.bind.apply(t,i));return n&&r(o,n.prototype),o},o.apply(null,arguments)}t.exports=o},tOWm:function(t,e,n){\"use strict\";e.__esModule=!0;e.default={number:\"number\",string:\"string\",object:\"object\",array:\"array\",json:\"json\",date:\"date\",boolean:\"boolean\",numericObject:\"numericObject\",numericArray:\"numericArray\"}},xfeJ:function(t,e){t.exports=function(t){return-1!==Function.toString.call(t).indexOf(\"[native code]\")}},yLpj:function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n}}]);"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 33144
        },
        "cache": {},
        "timings": {
          "blocked": 2.636000043496489,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.258,
          "wait": 199.93600003853442,
          "receive": 21.046999958343804,
          "_blocked_queueing": 1.5040000434964895
        },
        "serverIPAddress": "99.84.32.49",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 797216
              }
            ],
            "parent": {
              "description": "Promise.then",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 796615
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 799437
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908180
                },
                {
                  "functionName": "Cu",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908329
                },
                {
                  "functionName": "ys",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893191
                },
                {
                  "functionName": "ps",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893116
                },
                {
                  "functionName": "as",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1890464
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848906
                },
                {
                  "functionName": "t.unstable_runWithPriority",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8726
                },
                {
                  "functionName": "Wo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848615
                },
                {
                  "functionName": "Qo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848851
                },
                {
                  "functionName": "Go",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848786
                },
                {
                  "functionName": "es",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1887253
                },
                {
                  "functionName": "Si",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1866162
                },
                {
                  "functionName": "s",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145228
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 145360
                }
              ],
              "parent": {
                "description": "Promise.then",
                "callFrames": [
                  {
                    "functionName": "",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 145335
                  },
                  {
                    "functionName": "hu",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1880954
                  },
                  {
                    "functionName": "Es",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905686
                  },
                  {
                    "functionName": "t.unstable_runWithPriority",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 8726
                  },
                  {
                    "functionName": "Wo",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1848615
                  },
                  {
                    "functionName": "_s",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905449
                  },
                  {
                    "functionName": "",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 1905360
                  },
                  {
                    "functionName": "B",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 8108
                  },
                  {
                    "functionName": "O.port1.onmessage",
                    "scriptId": "109",
                    "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                    "lineNumber": 1,
                    "columnNumber": 6852
                  }
                ],
                "parentId": {
                  "id": "2",
                  "debuggerId": "-6680354813689365837.-4924173665645887486"
                }
              }
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "script",
        "connection": "1949487",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.640Z",
        "time": 411.8789999857694,
        "request": {
          "method": "GET",
          "url": "https://stats.g.doubleclick.net/r/collect?v=1&aip=1&t=dc&_r=3&tid=UA-127165-11&cid=913915331.1580735344&jid=731059051&_gid=1587575972.1583828043&gjid=812051869&_v=j81&z=1525777815",
          "httpVersion": "http/2.0+quic/46",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "stats.g.doubleclick.net"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/r/collect?v=1&aip=1&t=dc&_r=3&tid=UA-127165-11&cid=913915331.1580735344&jid=731059051&_gid=1587575972.1583828043&gjid=812051869&_v=j81&z=1525777815"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "image/webp,image/apng,image/*,*/*;q=0.8"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "IDE=AHWqTUkB6U_eUql8P1usgUAAxYsvRPm0WrVXmdPX6JgFWnx2Q5sIywxjpudGjdRW; DSID=AAO-7r7Lis41fThyA7BoqAuyqxXHWvu_fW4ZcAVYo8Q0RWMIgpMJExxQBu98nWVt-vG_1EQdtrvyCCCw7yoro8fTP4Jmr6oq5tYaI4CbRaxg428VqwyIa4U"
            }
          ],
          "queryString": [
            {
              "name": "v",
              "value": "1"
            },
            {
              "name": "aip",
              "value": "1"
            },
            {
              "name": "t",
              "value": "dc"
            },
            {
              "name": "_r",
              "value": "3"
            },
            {
              "name": "tid",
              "value": "UA-127165-11"
            },
            {
              "name": "cid",
              "value": "913915331.1580735344"
            },
            {
              "name": "jid",
              "value": "731059051"
            },
            {
              "name": "_gid",
              "value": "1587575972.1583828043"
            },
            {
              "name": "gjid",
              "value": "812051869"
            },
            {
              "name": "_v",
              "value": "j81"
            },
            {
              "name": "z",
              "value": "1525777815"
            }
          ],
          "cookies": [
            {
              "name": "IDE",
              "value": "AHWqTUkB6U_eUql8P1usgUAAxYsvRPm0WrVXmdPX6JgFWnx2Q5sIywxjpudGjdRW",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "DSID",
              "value": "AAO-7r7Lis41fThyA7BoqAuyqxXHWvu_fW4ZcAVYo8Q0RWMIgpMJExxQBu98nWVt-vG_1EQdtrvyCCCw7yoro8fTP4Jmr6oq5tYaI4CbRaxg428VqwyIa4U",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0+quic/46",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=10886400; includeSubDomains; preload"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:18 GMT"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "expires",
              "value": "Fri, 01 Jan 1990 00:00:00 GMT"
            },
            {
              "name": "cache-control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "last-modified",
              "value": "Sun, 17 May 1998 03:00:00 GMT"
            },
            {
              "name": "x-content-type-options",
              "value": "nosniff"
            },
            {
              "name": "content-type",
              "value": "image/gif"
            },
            {
              "name": "server",
              "value": "Golfe2"
            },
            {
              "name": "content-length",
              "value": "35"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 35,
            "mimeType": "image/gif",
            "text": "R0lGODlhAQABAID/AP///wAAACwAAAAAAQABAAACAkQBADs=",
            "encoding": "base64"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 382
        },
        "cache": {},
        "timings": {
          "blocked": 0.6450000560507179,
          "dns": 135.034,
          "ssl": 139.548,
          "connect": 274.716,
          "send": 0,
          "wait": 1.02400003592669,
          "receive": 0.4599998937919736,
          "_blocked_queueing": 0.35900005605071783
        },
        "serverIPAddress": "172.217.197.154",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [],
            "parent": {
              "description": "Image",
              "callFrames": [
                {
                  "functionName": "ta",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 24,
                  "columnNumber": 87
                },
                {
                  "functionName": "wc",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 33,
                  "columnNumber": 690
                },
                {
                  "functionName": "ba",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 33,
                  "columnNumber": 503
                },
                {
                  "functionName": "Sa",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 38,
                  "columnNumber": 388
                },
                {
                  "functionName": "Ha.D",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 36,
                  "columnNumber": 457
                },
                {
                  "functionName": "pc.send",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 72,
                  "columnNumber": 342
                },
                {
                  "functionName": "X.b.<computed>",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 48,
                  "columnNumber": 236
                },
                {
                  "functionName": "Z.v",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 80,
                  "columnNumber": 351
                },
                {
                  "functionName": "Z.D",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 79,
                  "columnNumber": 239
                },
                {
                  "functionName": "N",
                  "scriptId": "123",
                  "url": "https://www.google-analytics.com/analytics.js",
                  "lineNumber": 80,
                  "columnNumber": 404
                },
                {
                  "functionName": "",
                  "scriptId": "124",
                  "url": "https://www.google-analytics.com/plugins/ua/linkid.js",
                  "lineNumber": 1,
                  "columnNumber": 200
                },
                {
                  "functionName": "",
                  "scriptId": "124",
                  "url": "https://www.google-analytics.com/plugins/ua/linkid.js",
                  "lineNumber": 1,
                  "columnNumber": 224
                },
                {
                  "functionName": "",
                  "scriptId": "124",
                  "url": "https://www.google-analytics.com/plugins/ua/linkid.js",
                  "lineNumber": 1,
                  "columnNumber": 229
                }
              ]
            }
          }
        },
        "_priority": "Low",
        "_resourceType": "image",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.702Z",
        "time": 173.94500004593283,
        "request": {
          "method": "GET",
          "url": "https://fonts.gstatic.com/s/droidsans/v8/s-BiyweUPV0v-yRb-cjciPk_vArhqVIZ0nv9q090hN8.woff2",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "fonts.gstatic.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/s/droidsans/v8/s-BiyweUPV0v-yRb-cjciPk_vArhqVIZ0nv9q090hN8.woff2"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "x-client-data",
              "value": "CIq2yQEIorbJAQjEtskBCKmdygEInK3KAQjLrsoBCL2wygEI97TKAQiXtcoBCJu1ygEI7bXKAQiOusoBCK+9ygEYq6TKARj2tsoBGLy6ygE="
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "accept-ranges",
              "value": "bytes"
            },
            {
              "name": "content-type",
              "value": "font/woff2"
            },
            {
              "name": "access-control-allow-origin",
              "value": "*"
            },
            {
              "name": "timing-allow-origin",
              "value": "*"
            },
            {
              "name": "content-length",
              "value": "21252"
            },
            {
              "name": "date",
              "value": "Tue, 03 Mar 2020 04:15:22 GMT"
            },
            {
              "name": "expires",
              "value": "Wed, 03 Mar 2021 04:15:22 GMT"
            },
            {
              "name": "last-modified",
              "value": "Wed, 11 Oct 2017 18:25:12 GMT"
            },
            {
              "name": "x-content-type-options",
              "value": "nosniff"
            },
            {
              "name": "server",
              "value": "sffe"
            },
            {
              "name": "x-xss-protection",
              "value": "0"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "age",
              "value": "620156"
            },
            {
              "name": "alt-svc",
              "value": "quic=\":443\"; ma=2592000; v=\"46,43\",h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 21252,
            "mimeType": "font/woff2",
            "text": "d09GMgABAAAAAFMEABEAAAAAmWQAAFKjAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbpUAcGgZgAIEMCIN8CY4FEQwKgd4ogcldC4MoAAE2AiQDhkwEIAWDbAeDZwyFbBtKjCXs2IsCGwcA9vSGa8Adho1DggF+OzoQux2Si1/7iuz/PybIMWIbfQeg6SfCFEGlembaOzXlsHb6b2t126nDNLkBlfZdPFNfMOH9UYDgucT2zUa9LC1V0dXx8isijA2kY5lpQ/SiPpmq9CnVVAurpVeM8Vx+Ak9t+xeq+vgSNWERQ1BB/sv/x362MoCLr7cq2MxKPyiJXu1bloaGY4vAuIWPmlOv//23le/c290MkumeYcQ74lSqJxAj+9HE1sxg8+VGjFmHmDZr3rv+BxEfYWIG68DupgfIzWqsMcbSURRUitClWgFpUgUBQbCCBRTEWmNpGE1T0RiNrjHGNE1RknWzaWq2prTNZdO2JFuTbKl3v5/loX6tf0/37ZndR6CCqH99m0RGsSf0qShCG4Uk2YFw5Ig0SZ4+0mntCAykFRnk2JIddDbJ2rsH0ZH0aB1aR7C2ywfKQfnILWFFdFDd++ArrL7XU0dQ/v/pSmd0RJKBZPjyt/YAaLLSyLvREYyCo0NtKlcB3C73ZpOq/wrudS6aVGkBy1xptzdUZ862Tk7mT1oU0C+Y6vGkcz043AC422R2Sz3+LfT/fzHXFUgkgS8yAo/CNrkCF6qA5uy3GvwHqP/968xmBIYZgRXAOtulyxF0Wx59/a+1F9hUhS3PgfRSrf3SAVEFDN2l6O7+npZa733s3/R/z3TPdA/2gMiCHknGyMmMnaw1QSmJLGflnYyqTmsdRtpyFlA6Qvl42XtA3nLs5SQH8hIfcayqLAB6aF61LS7NSa7L4YQ06EUK8SxJyV+kQJRb1gYFCFB/XlVt/R90geUrlFOk61KqvKUMS+mbM971McP4//sAiP8BmgQoOSAoOxQl50i6UUiVlAbxikSl6VqrUItlptFwFdOpa61Ppe6lDstN401j61NuWIZb9uN5nuk7y+2WVDgiK79wsI1BiZ90vqScHGTHkjk9nrVCZz5YtlAoQaVECImwGHSqJrmMZZNDEQ0ennGyO6YVrFQO2GOxRSxpwZxIVj7a/KCDFRPMk5kQgulOVCu596cvFFOM0YKWCSEyY9y3rfnfC5BErBBsDb7o3Pe823B5rDYRrxHwJEB5+dlPs7Rqbk9zy6iJY8F+8IDk77qcAED4sDBolfmcU3XlHlB4TvfcWFcBeHAF/EsUBe6+tebeBPBWXDkbTjvjs6CguVEVVZs/JOzgNxqXTflsR5d/D9UucZwcP+z+XYraX6/q1zliFqzY66T1xV3i5g/7Q/1n8uWbG79vfsR+PRuR2mFzj63etDz5zs2zmx9Wslv9mz9D+gTbiO31Hd3Oi535a/WLXSK2WHeH9vp7T7Xn3P5fCiG5uoLElm3/U/YacxbsQhE6Jr3z2ldLwFkYt0qOq3dw4sufCwQUdxgWPeH/hh2IYnmhoPMRjyUAnwCYiBSEnFw0BRUYDS2kLPnQug0gstmPZswklimzeOadInbOBRrrLstx9RgtcN2HCn1ytREeogceRjyVxNYlMUnOGGFGJ+gNQiPqJP2QiqgptDCyumxBcum6e/SgV59+A6ODfbMbxh577RudpbLUccxxJ5x0yqo1DuddsF5chnF1K1hMChYUtGfjGwldiSqSejBiW2XMjLObMGmqONg1bcahjdlqpU35Kp4qYlpYFLQuvpeESKJJWiEmSZIkp81Hl0+33OERL1FyGDK7FcL3N/4eRFoJmE6bFLRYzHRLj159+g1ksGq3PfY2+0i1c8PkaaNeMHx7in9go0bItSCoNIyw58agoqqq6lbMVrqPMH2qbV9uti0pYrqwKGhsxoyzmzBpavwSpsGIbepup8yDiKmxLfXj21T+NULXdRk5tHb9mTubKrN9MG2cTPCihBsVT6rFeT9tLl42r+OaPhKEv47ACYkiqXeKXqYkKiUjqGlk0nVZvSHb5MiVl25LD3r16TdQtb5394n6YB8oCEZQDCdIiu6GHiMms8Vqz7HOyZxdimvHPZ9Rf3VcEFfylKj2FvqLMuV8V8qLY9JY9m5yKz2hHkVJLklIZcmlHJuIiMjwZfoAQAhG0F5JMEO9VyLMsc7JnV3W5KlabdasqaeDv79zxbI4xuUlmBNKlJgkJA2ZXJmOnklh+HTOgBuEYATFcCLSKTpD3WgyW6z2HOuczNml+OsFhuQloqqVHBtPLO2pUcWIJFmxIUm2JrMhluFuT2PIDwAQgUBM1Wl1VgDALL0NCAAAAAACAICIJAAU21dGnN++myWoSCjdZVfXVJt3O5AIEvJJJ569wdW/5mu96Gp+4lw2FknyjNTrmtRaWOH1tudmcevV1KbKmr0suM6ldcutZ8V5sfEw2dAlwzzphKAVsuR41rv7+OKD+s/DOiVIwZRMTJusOdn82tx+mClzuZ6rvlaiTIZi9OsJ8ll97m5mNyNv3nnfWuKlB15+6sfOe/4xFNO/b+rtfNgm2PmkTa4NsPRlXslxtej7+JKt9SPZ9GvXOlY8B+7iuh59dwF62QxNuodk3ve9HWVSW+TwbSXEVjiv9t6y73cJ/RdX/oUdMXjfwuSDZeDpF5h37vnAggkJcwI+Sb902qgSZrar8UyUe0zeLxRD/PLdMaFfSMWrznYLJbHSJL1wXMzMgz8v7pe5cDWpvJsT/38GzLxY5TYPVzPHetY4dubWk/7W5ZxPPW5J5ZgdcT9urbzW+VzFuDRWC6WLb4q/jcL6QdB/EhJVWSqSiMqoOy13S+QYjjvhpFNWrXE474L1iitbmfm4R/jyG3qat3nZ1qg/HxpOL+kXO+Zjw2/3hwbl01VLiFBtfflcF8RebgD52YkKwBnVN5q/YIpfAbQ1z2NdmfUA4DoQ+ubLd3kAW9RZYXPkEupd1carswCnl/wdpCsnB6CXM2CHmdc0w2nU7Krp6jfx48JTh3/Ry+v5eT45KwgewGN4CgsQXv8bnZjztwfCPXgozZf2r32t9/3/V+2vf++cNMsnEl4kv5cgUDm2g3xyAKnvDz3dAEIq1J7bHoDzDwB/Z/4/XgDVv32aTzhcBIivwcRj9Jgwq91LyyeuxkB6t60GyN/ZGMNnfvzB7YcF1qW9awie8zqL9mh0IxOL8y5QYa9VVxsNEmKuSk3srsw3D2H6/0iCN8UTEBJ/Whv/0aYHLfeoLbwmj1AAn24ss3WPBs0P2Iag+zyyGp4APKzcTnMD+q08SGe85n+Ix9jcjPJH/93j31uPPTGHbV2/N44P9dnDEQ9jnJEcALH3ncWwXF56VOapy1KzdBp1RktiZ3trc2N9LX6zXHoeyTAoviFWV5aXFhfm52ZnpsfHRkeGh/p6C/4zfOo9uXfLsXu6uzra21q/AVWdkhhpoIKmxgKWSsN1C9PzsGlaE7QK0eMMgZ5UgAkWR3S2QCwWJdyGJbYUWwCJQL9YCHX+1rYa6NvbJEBXkfVUY8H0DndZnpdN0LmXhZzkeq6Fog8zI3U4PMRzpz3A4LSdb8Xy9g7eYYZSH77Ied8KP8lafXKhd5m1o/Is1ODL9IS2qESGrucl13Vl6sbw9xQL5O1LIqAWGypmbzWrQT700gzXbXakBztP8CR9R1FD+i3YNEhjviZnkPoxDM6n/8XXrDyloZ0raRDwpHhHx4hY3ZeEE/dtBPMKcY1X//9YmCJBCngviTDSxgwORIbzaf06O1JbttHknZ1mW2ogtqWIx2a+WnMp+iYhW2d8wdGAaCemm9tvK7JUGrL0Qu25VtGbcz0nGb9AW/95GLUE1BxP2/OcLtTqgt2066PqtjpDMIn7HROjgwlZ+s9FL5tu7y+qxpY6Gj17lnhXGWr0yzy5rJCopVQ9Ikg/wCGJ9jDVa9dDc8OB+dFkXjNQg14Zc00Fal7hm+xSY2GwDf5EZ6VPX7nmNu/cgHkUMQqxVqLUovTD7B5Vj+DaTaVB3At7ikQ4d4mUnh6Zj41mW6kuU5UQu/PQKL6gW1ikUkAiZSq7arq65PR0KyCmj1uibBlqzYE0+pV2AKMjVr1kk9dyGrjfT7IploQTS+4EihoKdPXUyRk90e4JgT4D5XokEuJpguo0of7oyP1/wS1tZyYr2FPxLsbbb6k5I2BQZD2sRl/KIMZ0xcTU5FOr3wrKchuSR9w+WRDNDhaXChJHLSTQyIJm4CnpSObe3GUO9f8lfSBPwznsq1+iaOLSqqAExMUeIEiXcb3EdihqbqXioJRmi9aAriz9jighel1G/ECJo7iX7pODwlNMMAMSW8ovCA2LsBoIFm+VptF7X2KBAlEk5sV7bSyQaYoG1fkH9NzX4pJP4DITXjCtGO8ayXHsvIwsv0yMvzkx57jfBS/lKEYpt5mJnMmFKGM7W5DgYPkkkGyxNBOqh/uF+6me0hss5vFesZ0lt9jpHPnFg7ngFw/DVlzajMHFnvrO4lagi0n+LE4iCCJCsqCFTxIACN8BqTWbuJfiWaRqNH5jbe9xnbObRa1yWGAtsnEuaIwI6iAHcvcyjGu3K+GEGs/nSWZ0kt4FdocsX87CCXGFkcVVcm41d5KNp0XqwOJf0uqCVUmgFmKmvMOHhz41tsRX8fCBWIEj3YRB/Pq4hL856d84h4zbykBD+hM9K3d+U28N0qUpcK6MUTCSVJgIGhirqXEKlF8om6OKCUKyEGOje89hqIQ8mOu75RzmyjZl3FprVbla+Xvg5vOPBxxdOBqLqR994pZv7RwICxmrsBml7NAOWc4wJQw112NhzK7PbMr7k1NWejyPFy3LKorCScbs1oVHAsuLHa/tOa495bqhJ0rxh3dJpxbi4mEr9iZdZVvMksxv69R4nu5mK728W2J+6Gs2nViFNNC9yoZm3egWWvY4O9RWwtHOjFVR2JnI9UcrlqtJKVShYsKcC6w+W6qFlqOFrpTjIVYC7ZZdJ3DuO6HVeC596fWcagRKFBYqjHm3N0YoJXN5MNepy51cYVbz+yqjDGRSg5LXo01yOEyjoT2UJD54CdWWor+UEws6e0cypDrgwMMe11qBF9hmvv0xiuVvsxQyNP0I9ZQjrehBWDyXm7ghK9S5TGZkB+33CGYsv791E6+HjoKQSVtGIjT3gp8d6SfukEg2e7pffYq8xWBpliXq/5WunH2eK8C1ccyI0edWCQCUHZk5bS/SufzebeyaIf0cHPw2xlaQuPFuvU2QO4bAT4s+ueWw/APJH+YIk6l4fEhVE12bNBPVtoe+zZYPnkVTSw/kNtfR4eezsIY+mBgz+813WvUPYH60zn5/QSVZmBpyCz4R58ZS0SIr9wRMU6Z0naMK1j/9L4XJdfQt79bi0xCLjvIDNIwnUep4QkHqldeWTw3JIjtA4QJ7ttIhtEMqXUlqiPQYGg/RgVfspKQ73NAiPRZCkBx/G0KA0lUqUwy0D2CLy+cjf/ghKpz0lAX9OUVLgBEItaUGnrz5mbBq+KmoIIyYPDRgwx5IH8MOXvsDYsFW6rTrLsELMx83RWc2uWWessAPVha/sXb+9NM+5ijl3i4KXFktntEwZP/aNZiCsK55/PgtOv3p+vw9RxYEJGAxp+iXh5NDZ3KltDjZ8ejmTcDjjCq849/Sm/20O2GJ+SMJ0U/0HQlZ302ZY+32JlaDhITTVnWXXM5l7EBSaVoivn0q07Shy5NLSg/hOH43SgL7uChQouSHegElkfnG8+R2vscTdaISb/4bH0gIgRVyTujTB3bIk3HOY4DIT3F1hU/PNXa7S21vPrmBQ8JO6HIYoClrDEGV4qTHpQPUElc4tZ/kLW2pgmnzOr4JCiHq0gfiIAtmTvspB8hKb+EnQx2h3yMfEL+8H8ldHCfBipzfRyZkCPbxyKFYjrgSOaWEYSNFHx/YI0oYcR4gvjlnHqtJLV3wCakExoVVikiQVZsFDnqlFwSepbEkHkaAIwqlt6bIhdQYUBTuUJfTTHogxkoP5tvZ+5Of/TnFIS7nUMGBvD0ob0pi70jwfGo1qN3iZpsbG0Ox45DbrWtK2QeFqz3xgVKW9M2EMQuhn3pjwqnJphWMTkCvm4Es7SnLI03XeX9/KFNCqZq86Ub1nhPDbGU94QpSnW4dM1l7sraoBMEdJUSjLubUaQbVMZ/LJWj59IbBg+BGMiVTzvsydkkwm1NSDTZpoY1JU407SVCIXNPo4gc27s88F6QCFQnNqd2sivFSPAYEsAB+1oFAOuWIZmEFZKtaJ/9JmVqZar0alpFXNRaKO5ksaGAPikIUzcBuGZylzep4N88hUYHpVnx+zVlB+VTmah6xJarFVZBtmurhvT1XCR518vtq81uszCXFo+HoJOdNnaebNKuskrISfxgp0s//vqbMsZrY5SMAKhp9eKDkCGHkBRfMi+gW96bvfA30Vor3QUIscSROc8XLNB2emJqpZsMp2flM5u5czHUYeZzF6pjLMs2o7jE8CvsC2FBguTycbYADE87xvtqdJhXuKZWO6y/UJTSGwQfPydh4XeFXu+yUIF2TJb8UI7ngpvPuffa31Bh3otFdLySSjEMFdCDvAMoaptFh507fbvFQjRtNmp0m+WdxtmqNjoEZhm5UseeaKEDxMIROOAHqUs3Qp7ydczxMGhhwAAG/3iAFVgZEgHn1WsymsAiYbakWVBlGDvw66CGQ0i4IL701K7CNF300zQVPIFCGcBCnk22/4FWpSvwbG5WAqMTl4g5zijFVmMDUo/Efmg4HRyu286yAYy891TcZjLepIEOWQFEIFbwkKlxC7gOYM8VabeJrs6W3TwrL6V1g68vjoXfA4zPnOEoUDxG0ucHgASzM2x76GA7GLRYukPV8Sf7WvlG6EPCqpkwvsVnEyKOGltHN1kJZKpMxRe6L42YzbYGWKNEYpDDfqE2G7fTjGzDhguc+DfxJut3+UnjjcTh4so02QvjKVloblJ2zrZVVYDl9wqCpYmVY/PIwLWvTzwJAVu8jzQrIgrvp/ea3GI7V42RIzU49nF4csiu4kVtTNDEBwR/is6w1fSlVyaLi/UXLNiY3D+dLcb8kZMUkRoqY4Xn3gfeDTmMEggDNO3NGeDxkl35VQXZC+aJH4fOhClBKBj6l13T0G2dEn0YlteFpBmpm2PGQbVRn2AxpqqDYszd7LyuagJZ1CpcsPp6N+xeOmX3oJEj81bjVubtSX4thdcH7N1CW4+Yz7vnM3GEoU1o2HvbI2eC0rlXNzPiDudHcBF0aB6M0jorLvlzjr97a32JYY7hzwcD2EpIIojld3+UUu2acCSAdPSkwhA001ZdxftbM1OPpGTU7rUUVgR09Bqm0gTkyYYhGwrL1ok1k58rwqWYTsh4uA68Gb1rAA8+N7OiLqSsvi3Xb0XxJjAg9dNlCKgatY2M11n5AMTahthXjauRtShvJBx0JqNKHn5Bk/+INejzNVa7DfGBHTaws52Fh7DkPYwRX8vVltV61Vxam4OEtrW1fV3cAVZ6fs6Fa0I6Z+vapLJeTjZO1VoaumV9nPkxLTWlJgADTCL3kpl6jEcIFzsCYIxk6a4JARCp0GRaXBtlN8ABjMhHY61KfJY8ONwhqc+2FbD2J/XZREQXgss+NxvVxeeJW+a0s/08uWFC8crhx+U8TY01NgOargspsMwez3IMICD1ss8MeZ98WbllxN1CS+mWvyF615HPoDg6sqvy7fNl/lVUDK1ZF/y9b/jla9e2Co3RZuJbRSrRmtq9+WPvXj4NL5hp/O313+nShneXW6Oktc9k/D86bq/zt/F1oLf7j/K3fYzvmfP6QlSJ4ihB+gLnvkoBcnZvRG5ex45uhpxSjh94/I+znk76ZUfqwYr/YszpIN0ejxpRLeKSKbFUnTe6xOnS6yHUJw4Vy9jbtQovdFrXQfk62imBZEUbHnUxFRtfnemcXvJ5HeHRwkEC18lXpVn0XnI8IFhTTEtG0QjB/fcEKPyGur2GliytZ0nrkCasVdkxUV8WUS7EkrS7m2Im1wSI6HBGjraWw40iCJIc7jqV/nfxc9lPWHIcoW448cPEIzJcdxaZyafMa5s7wVAxi+EdOKDazSOdRp0wqCMlACelvu+2kdFacMFydEAfL5rD18O6f5KjmtKIKjQDzdXIaPjO8MFFKbshT2bC6jG5stiq2QcomWzNyrfJz+tqTJ6J5YNmhCz4cdAWtgK0uDUJ8efSEl15QRmoFy82LtBoTY6xTkxsMqyS1w38Vv6i6K8s9uevK3hu/NyJ+FHxpvsfPOy7Lqroh/gL+EziE1NaTki8SmZzj/Lx1kPBL+I+Nv++5MXzl5Avy6saVvID/GoHpD8IODleEXWkO/z31jH7FOGM8r/8ltSE84kp/BXYQ8V1/j72nz97Xv+e67Bjz628exDQTWyktA0OvInrA3cFtdQnK20s/LwXvr7DQXOnEegfMzXEOFuyAsrufnqGAqq6eMe5sWDbWXE0Ancm7X3HltLGjcaW49koi6NUZO+Q5Z8wikcnKxPxR6BcTdujzIINY1iLmjK5vco754PQ+HFBgGZx1Tk4Hjn7OGW3St3Rg7fSf907ntUkU9X2qnbjOtOTorDeaSLp+Mo2fbGyozWGZCfVgjmGKXlactDdHQzuQO9Y5LlGEYj3OMBhBBjGhUaWtTRDscD8dfH51n4E921P7UcpQ+ZVoNf54JuFjcl5uHypTjC7j8WmGAtYwJKtvok/ZjlKLcUYmDa7kJORAEsrmuWJ6Tlt+Lr0c3QYSWOfp5Yb43jzeL6IHotOiw7OY2ocXbz/oK05wbnGpczU6bS9id86sTOnlsMCuouNxHWXCWXMNb62vfZPbSS3cnh2ghLicdNfBC0CFXtj0VoRGRqhX7lmxL4W/+HaQl5UQt3J2MShm/o9Sb3lVlTnoFu1SzuGRpi1+X+CdF4uuB3HaHbjsQWyRjFuG6Q4cdU73ou6W4vPDkvUHksqqkxYsNcy12o7DPFPxsmznrPiXzwWMQrRQFdOhFURVcGSFGC6vgiiTYPUkHqJXZC7nxofB6X6/Lp7cB1tD4uCaG+oxXJWW06PjocpSM/X81kMV0sx8Wr04lzvWVLIUb6o4Tq8rZuzLleIbpfoS8UEfjYiVhbBytdzuau0Yzqsumx6p47FKYCKBBSZkw3MSaDEZIqEx5c3T9uSdU/5Fakub2ZgIUz7PpKD+UFNZHHhGnLHd3MnmCcxBt2nv5yyMNHK62n5/zXUa/4UOnMozzmEfuDZ4U9ulBL2bbSxHTcdCk/GU9OuKKGHGcfjlj99SzqHzOLkPdUVP0es9UUjq/aWySuH++b2adZYCdtSbxKtLphD85dyzsmccuXuRenx6fD/hlH3anmvc/ZzzvGwuwU0PfvLJQ2eQiT45MemctLC/eVwsP0hOJ0Hkg2poQsY4NTWatVeBeS+pIG+MUqKPH9LywKX0rPSMfAaHm+/NwQesEy3/bxKrNOAxK6ANUZVgkAoN6CSCCEKOYqtcg+gcAUkXTpc1xCuLsSOZxqSjFc0zvEJC1jalN9+vJGTWzdPPw4UexAMtg4ipDGIJaJd8t+bJxMRteesxp4rl61l+8xPy7ydnv1KOMhu8K0BF0LkRDfIhrvtcqPHaNWPouYv1/M9fxw1cnXYrvnTR7MM6g+srbtDEy/BkVViNC9/7n/NpXlhJcSIrL7yxMnJ2M/qdzYvR4xePRx+5OGkePap0Cfdnd1T4cyKcFXuP9nrVO/Z0XovpzuQMl7BiysRKaxzfw5O/owmfJac2Zhazp1usK4mVL3cclvyuroakJkF1yU0HShafm/08dQ0okTCymJkQlSfhtiJyC8njqLJTipYJ7iPbSNLn9eMrsoasWZgsZL5CFqL2NrgnL/xUNr0lDT62mBm4tPXf8nnrBk6OkR38aZSQln7t+3f1IWvrHnlLFYAbPXHgr5xTq/k7Ntf2c+63285z6z9qnPfYAY+59BcQ/dcCcxM0D/JgcrvWm3c1V9ACqIr0teuLGwWV4fUBXdulM7+UHrmmCVk+mR+8ds2z9ETlJzgtRvgOSQXRhuR6E1veU3RMcB7ZuuMeNh58X9OPF7k+tIyt4uIfrB+fOg4YuF46VbrOLA4wnUBPStz0Mn/aiF6q1Gt9LlTmSUBKAq4itXzAjX4PSGJOOlBavJ8UO3/v2rtD1aLlkzxuOrpBubOtrfiDL1sHFMdchMPD14BtF7uIWK5DiZaTt4ODwjaX3MNeLAVNqLuR5tKHdxE4izzCf39bU3wBfML/vu7hluYidWG7jiSGTa77AX5zdZuz1EXs68x15nqDo5aV2oCnxxTBs1uvyg4efhPh3Qs5flwaNLPxk+XwwR8ss5uKIO7PJ2zUzy2TC4qamkCmgeTPbUPkR2b74WOoI4oyO/URjUfzzIk72t55M23Snmj8L2gs/VcT2q3Js2cmu/KGIrMFhCrl7sODy3MCbcDTHtKX+asjPblIbN7g7qzkphGT6OQWpcOpK0B5LqEzJ1fl3+nFnv9/446W1KXILWEWjex+nJ/zYmYhux2m4CNMqSJ0kSqlI0I7183YN1DAn9xpPh9XW3kFxo4+G5kJ1YOMPpS5ycaquIh0EbeZlYvQwbpV6hJ0j1qXYqvNnyMXNL6PF8O4B9kRC1hdS1+VIRGiSuXWJGVEZcMHpTl6Yju3+j2ghPmFtwvv5MseXFit4Wz07vlQOdi5kdY7wrvesvzehZWTl1eydtKVBagB4PVYhsZxHTrueA9a79gKqJ2NyMYs+Yl9xIQlqMFKGXds+WTovo2oDC0NyNPQd2T5FgaY5rx6aj4I+cNx0ffr43fDypYdh+cXD4VWPvCFL1wMRTq2vH9rfj+w0K/AOzuV71MQWBZSceW54V5BS0XLxc3/O/LudSlRRry0cK4LfDfjqw/Dv25PfC92CBz4pPbtyX34up3nFnswVPHOxwkJvHHAv/Hx54C78TzGa/zQgZ8NmWjKqe/WuD31H6MdgUZEnJs2hf82/Y7iWe6zANqXfNWwKoCMeNSEU6rStCzF/4If/4JVEBSx0rSQMMSEhxeHLcPoA1NSa2PUitgW9cI3Kz9uO++eyovIMilAtIzdsZzolEExai2+2DSGNuhibYU/3+5gliCladi69KLd7lkuzZGihEgFNdegUWNe5OcfEFp3J98bHkm+b91zQJSfrA9Lwx6r9EIM9QGSHE1wJ7k/KNij8GAaTh8aaldYKOwS8EGzETzNtpTFKQc6Hn16u+NGgjLQuMLqGhTft89IP+8dPMM0yceiQ+kHzDWXJsEzez68f2/vtTFlN0I3n9sCwdLZox7Kk2kEfRgj74CwXDcul/K+E7h39V7RxLA4v1UHIGk0sTutlMDOgw475WF0/pN4p+NTmj6wYk3cPSK8MzDIedA4tigzFs0IyjuTViuqV12vTK5NUDO3KwKkEQXzNWnhCv/Mbe4uj2t6D3qOveKDqxLStTge+tzVP66ev3pNepVnKMMPqzNaYfLkwpBy4vAPIj80er8+QMUp/aMqZVNSvQk+i7SmphE78/N20fJCTt/d7rGyLTS8qqs+8nTeTqIiHW5l6ti7+gyfUneVzWLM6bQqISMmm8PJxPywn66kM1N0fMw7AhZJAdZTs8i7Cgr2UQuQcs+lCNe3yNlTBrBo/UKNldhsyNrBOQ2X+v6ITnPbMNSWVRYVmyoaW0tri4vMjUdzN7pLu6qU5VSuMWLUkBieX4WOm9v2eA7xWUpMTiDp/IVLd29Qih0SxwaasUUIsX7iCU36Dk/4AMn5kfTaMnYgGx7+LCaATf3d8Z0sukWYaSU6xetnXS2iJq7/GKL03t7PT1TcSf/LqlxcBSStfuwbkF+sqxZwnh+w0V3UZRYbiexsSL8u//weFXpkJVSWEWzRd04yFjbq2cJhyTG6QGLTIS0yz+OQiJeJ1wdTVk5funvD6EJssv+6NhL3LsrGvd+294y0suSUtGOv4L5t8NrTuves5IglQXf/HWAG705N9d+9M+Gba2+SZgKTV0ke/CDbMhY2Wj5P02l4PZjB9W6PwMdpteIup3yWzg9gHC3l7o/RnrLbBZbiLxZ6gEdHAS2OB4GJ4NhoL4b/KYxDj+VDhK5joKOri+CUEookH92rVDgkY8EfegwlpAsYWgSH+gtBkdhoVRxAGcoPwt5Z/EkKzQDpfPCc7ODBKUQkmZ1DFkKF0JrkdDHWwBPEWYvEu5CZBXMYYTRrPztiECs0FXBZ8KL2PGJqhBBSlZwuwehF/+0M2BhHdQ9ttf5NC2OZI9NkuF5j+0HllEz20vxPkC2ovYBVoKgH7486RlfLsRFyCogT5huOjW5zVyU1uBgl1URqBNVJLl4vnIOUQMpC9QnbRCD9THb63JlfjL7Dlf98tIR88cyG7tFr92cfvRNqXjhRdM9/THK5WzgdWOpv8s5muIv9MoMMwfl7z1o2T1i6QnKC8/21DHeMV6Z/SZB1eVC47r8p2ZigGEJu/feAb8CtwpA6yq0d57zP3XoJHJG8/1nxwwhtqNZfSXEXBWvAhog8te8Y4YhH4Qp2pyarlqSgST2P7OP/CSelhiSnf5cwW0z/uj26h/+X7fT+qI1YqPU3X1LbNbZXlT0N6I7KF9DL5fKSbk37wfbOKZHJ9+RM7mZNA8ar2F7X2khp5oaWmkAvmbWh2cKG2oPswICd8EWS5aicdLeY02QtHh8qo0UJ2Xh9IEveYvkCe61s/6F046e9IRFn51oH54vKxiBBVm7o19elr+r2bZovLBt/l2DcP9zsQgt77vOHKAYR9Swc/CyKFoOkRj8Hhz+PhnPiDffLIVKnD203M71skoJe6nXbCO1jw8CQRON10rYgdB6I+oy28cpLYXt+dP/uO5z2nWzMkY8sp/AcGGdP2zBWSlKC16PyuKgmW9M9VoiuErvyavH51LoITeNBDLwH123X+dqkwdL8feT6d+8mwyxvOjsLCjo6fyqDMxgW+PMKqWOhvqvzNcIaCCv36ujQ6zs7nllgx7Jy+C3iu/kKVmZLpiAy2exMJIWqQ3LYyEwKFanjcHRIKkWzszkIXT/lbtZXlzv/3TbCIQK97mfdCefiDy3/WsYlb7yX/Vu7tz3RYxRDDVPdmn4jQaqr1cy4giLeLkRmwTRKGBk/xA7fFSMsMiYlhrfvyjf/B1F4FVsmwxhYNJAazSNd5iOlVrkwqaIsbQplsB6MWjn0RgrJCNF541JzQabCcIgXPo8khYqgNcx0GbrogA556fviOCGEyOjxFsJiZtlJZQlKyMCbXHNzIL02bicatZdO34dCVzfQ/uUDcZN/hDcU8w5Dj1+FMPNwKaqoRqk8opGhzMfyQJm7qgZ7WpxkDrhpglPcTDlWYqQvljZOcotTeqJOMjsSDeG0aG4p/bJh0WZbNFyml5Y6CTJIJrNZ6msfXCy4TNNpQQZgkLWkr/j75eXvi/v6nIioUl/9BrVAayHhyuDC79rgOGEYJSKNahou2+1a6BIp+jCBlBUxHluEqYMz2hvMLdfP2mE8/xEwhBqBhY2dCGXjyXIlmjZTJ3ud85AeQJuyg+kztbJXORD+Z4o+ZWDDIaDxrm32xG/+FdXkwlSJKilLsK+TBJZ8OPCKW07LLMYItu3de+6GXm+Yaf9+aaaLo2T+upqusU1BXsNeAdtW93DINWpNDZnD8aRGM3RObq/WqGtIDkmtJqCFjYLwqakQNFo67+6PQkME/FRoSkJpjOZ9Fvrj1O1mn7YnWcWMqttfjwjVKO4PMA4nJY6aS96S5el72SqGIYrHQmQnUiI0dLU8O2Z0epiNePGtXGHmg7QhWrOcgSpSCdpRmYKW0N19X/Yg6YValVhi4RoKqwtzM+TsKBbhdXiyAY3g669v8sKkPvjU0ujUZJiqIHTs91yilKjAKH55HPw/liJNq1DhmkOK+pOwpIqEhxsF7/eMVe3JKBGZCRg3UACgHmA7Ms7AeEGBaxPgLrrl3/Bm6lWNfopirU++PDzK3mxoPEIupsbvv3uBQ72A+o5OpU5AC4bL7CFbX1m/cvYTpmPJofsffSXKWmlOqAEdWLIlBtIdA9Z9rmE7cCi321pFnkisp6FXyzPQXWk6K5GfYibKdNiujAx0p1RrJfBZFoJMi+vcUjVKmjI10KGxSVKjyTwTMbHQhz61hDbNTIBpU8vrSzWTSUIz0g8jk3yzYxRsKV5w0Hj1OIUPS9mnlBKR6VA2HR9cQstSdMjz5uIC3y0jJx1+cKCfK4hsNAB/Ox9/vLmO/sPx0QJzM2Q+xIMpOnN9dMnauyOtg5jgRuffkJP77N/EaZd4U88ku9PgChd/VcwrvnaH9bwPPNC+Lj6+y2SVljKYHGaJic1mpRiNHAYjyWQaUKYu54xlF+ZFn3cOr+T9XoGsY1CWtddQlI25ZKPtYP4choNM76CNRvYQbsfKENQz/1RHCu2ymePmhpy0dgT85I/VkFTbTeS29Z6BPKqPxSgxH876P6dX0T2HBz4AGSmIV4lYHUskSf7mCDT4timV1FenFTKUUXqWNr69WDEcoykYgnEWZ9lQIUjqg0xQhDJ2ohGeR4WJNd+qeTRucCo2Di1/JqQ/QnPxWO8LqgAqWRvAiY1Rcc46TpeyhqvUBxG5uRPIMmlybXlwoHtCQaA8imPyG1HPETU2l6I+kltScEBQ1pmwWlE953pl/9ooWb1dFiCO4MwXSsLl/upt5KGPqpk1wVJ1flItVCJsiclSUFsuKnMNmnSbJkSCqqii46Dn2EN+WFVcegaubcecwu3/hbh3mbu5j9smzsgrS5c5HR2CC42NrPP17UfZZtOBpBO10PrGy1mKfx8NVv+nu1Ud931qCzuyWXjiK5u46lodl11xUL6Oe/LeSkK0JVVZTpbKrIRUbVS3Ji2qTZBlJaVN9V+vCwwODA4OM/bbp+1sfzj09XAoaPr/ofBo6NsZUOjIG+jj9ZMN3F8N3E+ovYDGs3aL07tZwlQz98ZKqYrYwSvrFqV3MkX82//24QHdquH+KxJ/wlT/Td7t2ZjCkd4vhL6Hz4C7ucGBgWGBITzHZcV8s/gVNuD4eNso1A/+2gkgF6J2cOLCo+boMkNcptkQ3Rw+zZNyFUmKX6780pO5Rr50GEkNPkuFKT7IiCBTlBFHI+VUatCPVkkK6fLG+gwmr6PSfyRTfqTTdyWQf2THvniMlsOk2FRYFOH3p6XSqAIaX4wgYhUwKYYPgxDuvTZLowwskN74dO4SZHDqrwC8+84ZVx88iGkmtFJbBmyvInrCuoNb65BBSMeDz2KaiG2U5gh63ATuKYtmPjw6uGjjMUT5sQuz0o0hgjELf2KV6DO4ue1JUMf4j0J40RtNOIXsbW8RRUJB21sNhEzR36wqCLLsgw/G/3knxG7WwSYlps9BWXPM+P8g6N8826/sudJY2cQdobZ7bWCdC6MktKzG3VMJvvsaOwA/gHYBawVoF7I7KQFUrYC7+c//Ozzub6BndYOa1jsshYUjxTrcI2oNr98PlTYY0Q2RusW9soh+zsDmme3XPsZbt8Q/gCOaGuc9tJnidKN/ySz9B/DKW9aqhm7qYuDr4eF9JDPELlA+edSoDeFcbVjusN2eWRw/JhCYTNQGW7qh+WiBIyMIZJv/mgHeM67UcII2fqGtj8nyAzaPAmnBPYsIJ6SGa2jjh9jyzfGapHeNxQgmCXRjec+zHJSsnL+heuN9NaeGq2jjX9r6ZW+Jc3XGa0ANN9DGOrYkcqlh99vyrvUGXD69/3myn93qv0fGneRmsxSA/PTkgI+hl0Xe+Gz6CPAw0ver2ln6LO5PrtqXoJqcPvEBgD+p9IHrOKzHdIuiwlP8vYPd1XHvXeHcBPLu6oT2fjVVH+Uh9iiKcwE4lcUYN35SKP8JGNNzNN58+jr+CM46oHoJGpWVD4V/WSmPpNqvnwFwu9qWAXSF1afh6/Glnw/4ctLh9HVosgjcC5X2iIovgPcErSjvKO2eH4f8DAOS/7V5CnCrUN4O+ya5L4knqUSi/msZEfbkLTtb2n2G6nV5otCl/3wCjElOccKmzHZI2GKvli71jyqnKFNbakdReDU29CYtUIkKQiSl0OWccsgGB3kD4wRNeu3hIzItlarlZiPNRLGYSgAZ42+JG1q2O5VhKgwNzXdY/i32cIPGFFy1bKNdwb6H3hNuBXPrYN4PGm090AfBMzq7gRvwYj5lc8h4wA3fp1QE8xwnLCjlsy6UC9nABGJKzbOVMNON3tU5fY/zjvCbqtcN5w/TDkxkLWiI7ewknMyaUMt7aZTSm3msraGOyC2BACjhlOcde+xmGJIA3fgdy+kn85bV2bLFXNmYuX38VGOk5YZ+0K/Xm3EDdaPekqzGYfOU5VtCcOvFpGNf1rcgI5xT3UzXGA7MM8gnp9r3JapznodsUhxoC3+XKq6xAz3shC588wFlSvBs9+OT2rbztwrNn9z2e7MsWM1P57a1to7fpU8hf7u9Dbbu13hW15LDbuqOePbssR2N7dON8jv1Drk9cUE3+TsZuPmvoVNamP8nQ4/ebqyu9rrh/fNxZQe7e+rufm7x6KnFa73TePS0n6cqXzjZZ31YhCm8JFlTU20vwv7ZRt80vbbUPHWql9u7VF63NXrx5ILKZu+O9PIsZElQXfFFBE6AvrTfMbHoQ8P9Yww1Usi4Fwj5onrdsHJDzfIc54xvcZJWxLDWpD3NujxP+F9Xha5A8L/Hi+CN9YJFsd/sFK4Xo9J3eanrMv/f1R3VMcCrVe76cZ8tvy5QCADoMiowe3TwE2h9sSmiUFdoHpDCOrwJg4KrM78NTJ6wKjVguRAyDD9ZgvEv+Smfy+6kS1z8Y+HiRnXPhNEwjUaiFK93RfbLAofM/4LM7B5FeK/oB0+FyBJjmU+Y+SrvRvEoFXEQgf1HNyALdBjugg14HBg82fZKTx/467QkfRLFL9fuR0g8GKwIBYM4QrEO0mH+OKOr3NHwtTthAncg3EpttFsXtUwu8gS6SaCRIU+7RjV6OdTo+/DYPjogr0IENJhiD5lATwuIUTf4CrgKrCQA5s85bWW2yuVZPAvNLWxgEHiAaDVN8WJBkubjmJ9MmLi82s9CYLvziwgmkZjkOI2O9xrOnWpsCyJV43hYiQDUQroZlnKYE+nFNzfwUkFOFavRsOnSqSMyupjzk9gzOMUOkOsZ4E8wgyQPpBEtGzqlVgEByGOB68iUIqUl48CL41+NKR5y5ErEjyPnJJCCOAVAnTypFVCroNA4Pwnjso4wHnXu5FNmCcbaMws3tfC5LWy1ftfQNu9AznL6unoRIJo/3RbRRWNbBxUPEJLnM8hnCDI4XXc6e4fbPGVOYXHhTgCDUkTh6JlqNT11cSzBp2Rpsixh2HAKcobuR0IgDDu86ZBbxkLCyeMUE+AiuE/zGdmNebjZYndoe7z/2GW3Lzm9g4NzfZ+5D8cfS+6449/g+FgLT9v/esQ1ryYldu0nj7/6OD33OI4fX12NjtPjv38nRu9cvU668040fSpMNp8CgxwxmEin8NGE2Kf8enu62AHhG6q+U7UT9p3QxQFkj7km9TwpPXymXE4fujgizQtlyTdjPvUgwF+GiuncNxGfSE1INfuPQt7bOV1f68VES30zGFL8Uxm4G5lp39eMN1NNqfhHN7ysRxve4x5Z9vAuQQvPS93LPOJ5pXmYoK/yupxWnolgYL5RVraCN0MHrJ6FPUQkyDkVW7ADpAMIwFKKy3Sb7tIsLVC5SxEoCgrcbF7j83mW87fSxYKYWY4H3i6J6ilkHwD8raC/Qb+CXo5+Ep1GJ642sKt1OeNkhyNww4ngHK7+CWjcQoKQlR/sFiB+6q3gFICVER4sUHCGSGFL7IgfbG8Xkogj5MGNuRfGr5+/ESDMn6nch98KoVPUgAJg+sVjfry3yKCbcOOnnRjkOGAJtBp8d/9u0n2kuD5Wr8DOGBbHbjwzX5QfmE0Rwk/3boGF3gPwwJR7PidzGxWdqxsXcyygAjJXMabCow/T3nO2o4xPgoN7h+Rw4LP43XqIWY7q794l/3+NeX0UzEy/Gx/keWkLfobgmRBJSO+28G5EC8H3KYBJ466My6xk3Lc9FnZfGikLulAv0/KzhWShp6xIysprTowM/dT2+z4PQ5UyyKEuC3xq+CQBEsP65Vkl4gU8iBQJGV8MOsEzb/I7nNoaF/gpcVbQv0f8ddw+dHxb3w0o2Jzdmd2bJTMLcftYcaPjtNZfWkUnRiuOUXtczLXHQDPDGG5rSfPtknbi25klKNaCsrNB167c70Vx5Pvx0ynW0+2UpB6FS9PZD0bAz8cX2g00rDLPHubz+FALssBuQWylA+wYSr3zsJmYGk67Jjbi/FjScF3kBMwkAU7maTTMoGUhg01P2Gu44arhUgq1uCbIEsLmQ0LtIS4BI/GQmW1rP9cj0MGDt1U0xVuMuzROs5SpsfJxGZJSRzuZs+dYjiQFrOGGrYYaOLgrtsQthVmiV6pGvWwiW4AeDsTakwgZ4lOd4mtI6brWJklhYi0km9NmGern3QtTkyOAtjMKWHso81ZqDsLRFSwJailcg+d7NzzsC0oHW2yNb7h0qH1fb9mCciYY/MBFxQYCJFg3z4436ZGXe6/zPvYueNKKh5PegnevR+seEsux1zj5MAV98lYx45l+2XkUE5TaEq0JE44mSQaTflLZ0wYZCZtiXc/YWI+2I5JFoNdcSsE1LpGuR+UQjqtgARyYK4cU9U0T94KLLtiOcRwEMIhIMAj86z6yoxTFIa9HjGP6Vqpzd56OWNwWFHgOusfRqwjxDJieHg74QDrXF0F69+aZvLZpZukabEAvpUNAnkVS/d8+WtvEJi/6lqv7J3z0g7XEa17Z2wn8Egie5yrz/PJSGVNB2racf3Gp1lEHHWKtqY1SDGhUro++QwOXrMLuUq6FgMWI7eVE5y2B1OSjZ04Q9s9RwknblMm5XreRYccfR8RoDZ6fXE+wlwASXJPGXHSpWrM34oJkRNwnDvWk07XLs4UekNaqGIspQ0BaOw6bEzc62Be0/Q3IJkYTJDxvXxhvjTRLhjxfOrRWbi57Kjo+DsdRHyhslj9ZR8/dbRRarlkbJb3eET1BhJDJuqKS20hXk0vxSQwAAprjx2Fz/gbHvqDtb/lsfjRPaufDC3PTo4S1hlznFWQB19yw1axONPmehrYc3deuclG6WDhvyVgSKZWPn/NLPvkjjfM949W6zWdrydqBWk9TTmtgcI1sVF1q1gHQAsDKOqW+X2Z2xBUjPhEgqLKfWA2SwmbZOnCkQShYjBlM8xEcg80j+0ecI7R+BLtH4NCaKl84HCyqY8N2qvjriudhEw+h7QNLKq1nhmb4Oa3wHxWW1CcVGZWqjqLXRF7QLwnYnZRrpEdvUtIULUrPkU3yYkKJybCBSDpkIkMwwhSnwNAuxmGZwjGkjbat5FpCk4G/5mzEwUjkXYGcYKOpJNUNJUoxWMdtvI4FlHA7ckGEQIPoZ/6Ov++z3xOqz/VJEhuTVLEnN3ZVXzEct+9PrQjNAdIznRPpQbMsJKoW3kKve9ZURHFk9JO3it+c1hLRKoc2wqcuFBoPdrVygbN5rYxYaWTyLvl2yZKNhLMzs9ePrIxwWRiZLadpzQMft/1d3/bZVxlIBvvG96e2pnamSDrV7T16Cq16rY1B+VrZywX9gkkpOL0HNVmOjPQBj/A10RHTYK3negOpoiETYiXnKqCj9Uc3xpfnu6u/1w2ryja2Dcfy6FjHOXJCEAC3YZcNDI3DoRcMAk97RlzJjscsKW77CiMUbX3pho0THLOQWEyJxOD6mMJ4xhQ2DKkumB7Nqqk8S/KVHOyecvvWmyVeLaiHykgLWe9ZMyk57hIsASpfETGEAFt7sfqrvIPzkmk2jeRHAQFZTs7kWsMX6JjowZpqwbesADSmcq9hqhSVm452us6Sc9mRLIsxvGBLNuSUWGqU+zIA5tPMYMNBbQUpeYoMviFOOmXR62ifF/m3SFGcxZIjl3zNKH2OIOlyoIuuk5I1aFOQ3Uv56o6FFL6BJ9fFtiBCwbdkiZ5lRYFl/nsF7lnKTG4LsPjSAacXLwiO+DRxVBUSGNogrF0thkAgspwofQyMj79pAgMTi62zh/XhrcNEdPpu6clb2Wpe0C+ZrNsvlQqr80k5rh7aZ0wDz8REFiCywJJJgMkEI+vxOkJwMpS31DTqs+n+/Nzs7PlbO6u3747MbD+30smjnL0Ya7uQxmUwqMuSzU1TWJuER7/xcbXYGDZ2GsQ0oNDnq2l+r22SvVAQz4rJXG91FJX7tbNzhsFM31mdrdtTaDIuGOzFKApQrXastWiL4XgrSszhiZsdbE1gM2h2ajyIy03SlnQTRbNpubFtwh2ZBqCLJWKucY164BtIT4PWq7vVeDVVlerVoDGo0nL5XrNvyBhHWqSSau4ITHaNS5wDNTSlBlSoFFUERb4koQSypMNlD8kQEpOaOvBO0BHQMEjIBKajEAs9vDfHH17cmKPjY9vHdo/xsWwjnY+qz11UL+X706Wco13FHwm6jn7tTZ9Wu42wSqvVcX0d99d7DORN6+iN9VzdHyN8zmMnVx/K2c3nLW2Z2qOLKIvFLfiGpXYZQEN3EvQGPc5MEjWHYJBR70M2OREyABoDrAhWe+QgmPAg9WEm6oPF5GzZ1Mfl3TJr3150VkpGWY5MARyIWFuFsqRWpfH2hMb0TMmFRYYrOfmw1kRTlEV/ylH9NPUlZtqblip60Q0pdVeaxf31elHLZSijbnKpMJuJL6dyJGOEUnEXx5GRirrhyzTaZFiSnlq0V7QDAOZ6Xd2XJk2ppMKOqAYVQimL0ZhKMMno3D+a2jc85QQWcYURaCb8CHYZ3G3lFp9y8EfOew79+hTddF78mnOcAixOnZ356gw+OYN0Jp4hegatJOoXVqZbjqPo5fE6rmiFoaFocB+oBh4gheGHZ8XVnhIW47Ml44xLuyUeXDnRKDwirSbfnmopgnONXuMfW7kW6waKsG+vptVYm2LMWWnlUDsWazNR+dxJ0KhJuYveymwaB7+hJe2WJ2MOBVaFBipE24G3NumpI4ttFmwFv1+4gna9raXOctksoeWgYMX4CKQe5630ECV2MMilaC5LJ1TcqcbxbsyBt+ivFLX2olxaRnRN+JFqL4DB/BocMfuXIIXg3LHuxtGxy8fYHIOpRXW5alWpunp0tBPnp9SmyfodLTLT8H0pZX97YKDQEfw6qY8SGolmljOPvN51B3VSLPfDukENKQcGYw9/aGycxYowJWNQCCsaLDsDFw+xq/4Fq40SfIK+SVhcLJ2tmKlxZbfCetFdKcdFnROXjKj2x8QXoOr/76Ztvx+ANXhAKdTG45zL1UamWXJFcuNmNS/mM2be5OU86nxmDpaMJAhJTo+LCpVGxhG+8kxM9HiaTAwCpQ1bwgZ2UYZVaswzSuhqp/WcW1emAbbR/7hSJTpeGcOxYqJckbT756sYp9MMYyqOs2M0mF5ppDSD81VnzMpKz+t1e5KeRZkL2lYoBMtulqsFeixJJReSFyU0AWNDDyESXYCSqY3Vzu4MEZODoD/5dYVfoRAMvyPoU+jorIx/VkDQzwBAKYLf/aHPoxMfqQR/hr+ck3Mcb+P3cLKBjyN5BPEIPgcJR4WKU0dY+B0Ln7Jw1EJL9gpJJHt+0P+Z9MslOSfxNnmPJNIzXscjl7y0R9pD8V82PmTjaRvKRnvBudch4w5yJ3KIIyPUeLbicRPC22Ph/webTL431vrVVaX4j4HXhd599XXmXgcNBmebWsYCX4+spHF1Nm20bu+3MzP5GV5uIzjZzIB6ZYxgEXJ442lV4qhcEuKIJfWQg4VQkafMk3t29ccU1FJeH11ZEsjJpdN1hs6OQ19twTJdaSptMYL6r9ZFXYIEXE2Uk25fsiWuiVmKxFrCiLtE4PZskA0m5zkR3GATcRx+pKTy76TX/dHya982PnRb+lv/haHNUFmeu+P8kxT5WVFStyo+PODT1NAfcz/RIFSrA8cO7/FtvsslckWb4t5gm8qSkjLAcIM9w1yC18yI127/J8XXSudCvlRFlZW+9ZWak9B/JUiSUvtbrZJ31odNCX1Le8/P/2x7VWx8iLHRLl61dQdhkDGjel29WgGyE3W9JW/L2/MUD96c5msfogGWoNnAXHERnevYSV5L0om9nrDX+gzYJc0BhICjtiQevGGDdPMzkpPPaMbskWg+HMNaH+yO3bP/0ZaEXb6oc7pxkRO+GKKuzunce6mRNIGuZDNpQApulaGwzQc8OS5P2GoiL9hqaV3XRNaHTEKLcS2rst/kT9QRCn98i4t4ERpJ6Pj9JOng1hkva97b3GtazQPNnrbTdDWbqHA6idOeZRB8TVXAJpugivspW2xIy98roFBYeSdS3VjUGrIF2znM5XzsA0vbb+8CoCNvjllh9wGOV+6ro+6KuKYJpiaegGYoe3z+iU+qvKJLKqXSiuuqq7YUVYBjG9ctVogJdn4hmgDrcMlF0/nHjUhAQ893Y9B5t3AlQhQVmIVvJqgTJOTVAJDUWXtNiNBoLv6GC5zG6bmUQ9r+upZa5NbzFPL36j1NnTz8o+B16qbUEz4FnVxkOQifm+NrcUxRdWcA6RU89icHfZ5VJAPaxCwcWKKvAVDYUT21rXaVRMQVKqSRPbkrbSlLySijgqqhYhNGk9F2w+9VV60Hz7RGd53ZcmZiAv/fwJsa6QY1nncjF/efhzNnUPFGy5oFQACDOgiVD1UAYcH50fv4anH1vg7zji3PRKYnh0IZO4Ac+gfIXWNzxjwsZaLoBoYdC9BQqqPh/sq1EOGN1FMgDOrBMjABmv5uMWndux2FEwLYPlt4KXCn72PAner7S6pulvyNO7frvcAtcOMwDp87fTnG8+FIfLiuRnWb2vdGe1EyUiyoY3dc367v1uXYIHe5/6HkER8i+Ko7aS/UlB8VQNmk7+4WL1gXOudAMOHNNQ36JrTihlTNtKxOB9lOdi2T2zfz9cWxg87M9I+aWsKxZ5FyI/+L043MxOm8kvgxjZz2ATGHxoElhSlhwoAw7wv2cLbOCLOZLRxFo/PUUG5faa0va0uz+MJlCiqAetK2OaXocgsh4xQFUEPCgMozLuQElZApg5GBbXIFXUbiHzH8pqCXolV0LzqOckg9Z8au8i1gRgrUkN+HyyvfKmwtHCnz24tHKlQswEORX/QL77crw8gu+QqSq477/ayWQQmg9LmTdVjuMZRYidWf817gJrgxjenlhfe6lfGHkSjUy7aT+XBZlECX6g517i3tlZIlxQIQz7fZkUtlP2gu/BDNv+NDMdOwOBBr/QA8HWhdnY7Y51yPUCbjl+1RE8Do3b/KA+YKTJntCIe0/qnaO/YNlycQXumIHhBI3jdqqslNXdC0pRH0Wy8VWree4Ns3eexDjYRG/l02+kuxLKGuuMDw70N6V91j2B0L7Ckwm6Hp4awDqPcG6U5K0p6w+9UDUDXOtPC9NTNYVedTue7Gr9Clm1RZHSchvpDhSQpJrSRqB0hESSo4nNubo7lKphsbK/WSNPJp8uzAfiNHpWcc2SqVjLnpn5a6jV817zNhUcigWsggEMP1G2LBXY8K4Pv4hi5xF3xcNC2ZjWfrxvXYpYaw2q+s1Ep1eTko5KNKVkMHliU70/DuYoO9BmQ9qi9TnYJzD18DtdgG8IxHPJoDDpCxYALGYFCVNtE33SVjx7gvhHS08CdQ2A0KTdO+N7eXo1wu5f0SNKdKuaeiiPL7UWTmfpuKLKFhSvjOxt+oETYl0DzPktkxxAxfXb5PDuBhukcppR1KKPk/z/0p6AQz+SogGX7AIyLdH5dyPidZ6ctraA0Mb+YuL/6o2tVfNCYHHwnQiSBpPOPegvwCI9sXqaN84GRw0t0epdycFUBt7b+kOIISeZBAAuvMAgyqUlKIZbJfwJ6gbocC9gKEgwbQA4RAHIGUonMEdSEbxiTUpRBCiNeDZ3CEthWipXAUGI5RcjyWyfZxXJYOx/Ht8/hz9EtoAy2jDkq98/o+HASDDDaK1b8yFwjMOuHtGuUs50xljCY3utyvOMWx+eUXj2nxwCRkBpuQiUkPTuITf0s+JbV8lHRB65VrFTmCk0eQ9IQOaURO/tmofKQVOaHj4upDYG2KZD1KaqhTvFk0ASlBlGa/UsIzgpZRD6XIINBL1Rqo24W0/tHHcz4k8ra/hgEayvJ/k0c7v848kKcGMXQxj24/iHILNiPGDdb6U67yQ0GHxhvaSzZq+5pNlrGNLSjzhxxzfGhQVcvEGhNd4JRAPEyNWBI+1d2Pvu99OlQ8eHk9OOxQu+o1q/Ap+vhoeaZDcj6ErssYn4L3uLl8rMiKl4SuR3Dk+hDd9BzSWDrWB/Whn/blsTsmOTs8NDa8reSUgvPWZiNtQVw55hsD/kZaxqNYA2rooi24pgccwoII3mYASGXdzxXHJMgJFyb39xE0sFhRA3GbczDlo2g3shwsiMj1J/KxmetzgA8/1CPjM3k8/pC8M75ZpP0OBbMmLJzI7B3GT+bAuQBKTnHC+ki4qf1ineuDOViQLpKSVCd98gcSxZ3JekWUnFMHcdkN2hHbZoSkgAApWoZt2JUCTl4l4G0aA2hkBVzAWTCCa12AhSadgLsvbXjbhLvYVMpjxzFxfBawqE+0fD7YvnqnuahMN0cJ+g5TpYIyPXRVCAXcXji46nxxIDPIret1P8UGOrhHW60hj9sn9+PaORRRaMtISYxEGi3xVB42xdH+P6G0JNXCRvE4bFYvV2GqEDiBrgGVYCzK647wpjxRwC4wh4rmqel7TD99ZuZIH3RSr9GanPS8fH+4sjVDNNRRhqiVzCCYqcmn2ovBufvx/en9N2S0t3jNgV0z8ggt3BYvwqmoHpcKyC0DpeopvAjKlM2CDJhIagoFJ/KrE6FCU+4GD/XL8+E8nj/B/ALHCy0TJ3fA2ZKTQSab758rBM6l4yfo3M6vRimzdtb67PRpdF9/rnr4ocG+0b5XH+ITfXDyojNeMJ8+rD6ITpvT5HRtGZhhhOl76/cSee+9emNLnE2tK0eevVwMdYz8SEbwHuJyygGDij89gQPdNGGHfXHTbox6qgeMJQV413FVjQL0Il8ej+sUGInxEA4QwHlM2DRJwR2tZUuyCVZ8nNnsRw8NLiNNXnA8FgefMcYjaHnlmlJpVuWt056qyjacW+gt/OPm3GbWCyjm+vbqbWltuqwUG63Gcqxz+po+oKmjsaiLuorHsErFxiKkHXKoeS7NT4tmegYQymSQ3AgOJM1Ovth0eXBH3xq9XJ4KWh5IR7UiLWXj6hgDO+09cXsud5bSxOA95ydvlaS35M5DRp1laF6JG0pXVvkCJeP0OCUU1E/guPL6wMaumlbQgqo5dRX8HvArHOev520za7pkPo+uxhZ4KxJrES4z84TvPcQgxptwYcxdaCrlkagYl+20ZSvLg3NZL/tHmqOsMxTlvrc6M96cd5XJZiztOFJ4IYdJbA1h8otEzi9hKg2TpubgRNZpNBcSeSx4qHPlRh6XW6BVbz1L0AY8sveCsvFR7J+cBQdstiaQ/o7Xs8g+N284jKWuXe9XVuaqqFxfiiNdaMTATeAmwZBmoC9p6kCndQxpPyp/eB0i0D5jcMOS/F1QraFFLI9NvvQlQ9ZrOJg7HT6o9aoswRAYlB7seNAu/hZOUmdXL+mhvqYdVQpd/S0tDznhkImD+8NB4vTIDOMaW7qYVaQiqFQRqQp8z4+YfNTK0hng5/eUCggfxJyhqhMFtrH9ZZ6nSFCkWxZuR8IBnop9ij10YcgXr4uwOPRRaDmUW3JfZqQs3Vej7/WCofsTGAd0yvzgB7S9PI0hbuE+ZlBG8Xog0cFBLGwDV54S2nH/MrJDXwHihwyXzyMfpCc5fwPbLvYvlnFpX4hrPCxvlWleh8NwK9wJ98OM1WO5wrD2nO97NWAZI+3Pg41ZdGFj9YREPmVYgTGolf6vCa0mrkzt00MYh+vhdng9tK3sn83qyqG/5e/7GV/22816aPRsqSjz4vVeRwWrXUlGTiE7/OC34bl6ocx/Xt5aPlLnS2WQtNythzZvQtkdZJLiveTn/ILPWx1JTiGTFHYAfreJo50u/Ov4ZKqm5nD1Wmhn9ijainaiT9p524lcJoKhvWVfti27x87biv2PXrElrvTWNdSG47IrvD8Ps8mB7UOMGUnbdeV/3XzXumxZVo+Vt5wKgUt4KXKEjKIRPhwCoqBD4AvPyHnqcGhyPKFlBcN5y57Y84NeDHfwchPm1gSQJdUOKXLguCgtDot7RSo6cTscHahgn1KqU3cyh1qOQ/SnZCfpOiRMDX6mD8iUncGRw1AIAQDh9C8sHywYaie/ZekWrO+6/UPFYXTcayDM15d++vTt3JK0Wl7VAkQFZz0HgGwvQQO6QRKY+dd7frkGoJLpeM50odERr2/CoVap1nmKaTqkPG7py1Iql5mFVf1NCQBmjs7LI43mP4J4IfgsNmAVBuEeXI2zJQuEUkRKvAZobA1yfqO8ngKkv3xQ97RPzaEnIo831tSX0fQ06aBKXB8177PmP9f8gfSfd6hI4DfoQk+hlNrcgya7C7UL4DoUVAaAdBIgXUWV5RbyHyBqpxYXZkj6nzoUtkqRX6ctj1XVBwWJZs15kEJClsNyBpg7cv0cf18J8goHPvKOhYrl8OQgq21My04eTdiF8QAg/yWoAOCq8T3P8ThVPpDQiu/DoMqoyk4Hv+iYj1sF5PF2jK8116GgzkuKcxF/vJQeZIf7QxXwb3mUa00vIsuIbEf+quWJKZC6JxbAVwEpeQN3vKSeHKdgPI+U4EteFnPKl/1WB9DAhxTOAquw/0b21CwWhoVclRqpQAcfAoBeubpjWfKyTp6PM1dBBD0Z0D/wMj/ZeNUhlRoMCyAJDVGrg88BgF5Q2XkYJ4dzKsqhBzBy7bcOExCzufstEASMLinDmT3lO4B5Cs/l5VzkxQkgvmTmJoMrZ35iZQPoTC+5zN0KprNVG22v+YD9nQQp3d+Zj7b9XcQZ2t8VwpX93eC92N8dLPwm8qEOCj6zEuG65VsYFYuKFqijNrRIpSrNagJwaTrKMUtTkK6DxsOLIlRJN81WRs4bmRpVByDgZhUqEPFvXmlAjTPIXKilYnzD6xsv2GTIiIQ8+dvOkYEXi4gNKxCgPGWlqFE6k7HHa3kkohopRClUv1hmVUzbhaQ2BgLQVqiSJPaJNHLiklc5L9q4RsSW0zKO5ebZMFJwo08cK40YTyq5jJYhoPBIOVs7zlypsCxZ+eWvctH+O5ebDHjYztMOXrz58OXHX4BAQYKFAAkVBixcBAioSFGiwcAhIMVAQcPAwsEjIIpFQkZBRUMXJ16CREmSMTCxpGDj4OLhSyUgJCImIZVGRi6dgpJKBjWNTFo6WbLlyJUnn55BgZMO69XnfXbf6bfbLjOOWQhnQ+Gix6hf/WbEhEEbnvnFIcf94Xd/mnfKRz6wrFCRvYp9wuhDH7vlUzfc9D2Te267Y0WJn+3zmfseKPWj12wszMqUs6owp1K1Kpp4N61Xp0GjHzRp0axVuzYXvGOnDp26vPLGuof+46lHzjrH4bxNq9ZsGXDJZRePRUiuVUsXtLffda972f1zVv6OFeH7lSfa74Z580c0d1G+1vfOJ8/TV6ehT6Hu/BHub5/Wtyf0HfPM+TxSF7rAYzq57HYPYZmdt+ni2Qa9fQem73hkB2CpKWGH6u/7+ybULcMyLR5mTbOWjVbEirw5PxnRoOvrp62n3DrkwFroaxFfm1pL0bWPryV5p/NXYWvd3r5Wx4EO4kACegLJhJWgBxL4ZklfIsh41Xx12KscedWnbs4rSEptTz/VoEceGP4AsRa7PNYeY4rh1K/VswwO+hB1lK5a9uQyGrTsipaipWgpATQoSGlCw5hGv6NLCWXBpd150OcZ8+z2O/XGyNzhc1Nz03Mlcw7UOdYcklOzc7P3aaktfbbi6TtjWkCfPq2fPm34lfr5/fhHH3T0pCcm0YBJ6NNaOoY8WoQGoT5Bij9UPUYGj5FCOoTOUNlki1kdp48zxjGHa1t1dW1fPTfJLi89YgW76Vg+WvH2HTm81Rw+bHieyxHygp5Gc9BYdGdruY88ehr1mU1paXb0Qqh2TBXUMVoIOxBEhn5v6gtl4pYzDV1VoasZlVTVUUlZJh4WlryyBap1kLET8U2jRwUCg3a6nJFxWhk+KY1n0teMWuUjIyamFaxdjJk4afwm4KUJT774ori7dVA6OGp8enrrBMazpQh+5Aq01k114u4J0ejUaGxV4KoF06KdIoqt8WlLxdjn8J7WaKoetUhoq0iMx7J5jKyA+CSiP6JHatgjF5qcZRGwEb3nAST3PCA6mEfPdjwV",
            "encoding": "base64"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 21378
        },
        "cache": {},
        "timings": {
          "blocked": 1.562000019237399,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.127,
          "wait": 124.14600005243719,
          "receive": 48.109999974258244,
          "_blocked_queueing": 0.9810000192373991
        },
        "serverIPAddress": "172.217.7.3",
        "_initiator": {
          "type": "other"
        },
        "_priority": "VeryHigh",
        "_resourceType": "font",
        "connection": "1949709",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.873Z",
        "time": 1292.319000000134,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/grass/analytics/stream-charts/?from_date=2020-02-07&to_date=2020-03-08&stores=1%2C187%2C286&artist_ids=",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "session",
              "value": "26318db24967a7888b9314f5172426c5"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5; _gat=1"
            }
          ],
          "queryString": [
            {
              "name": "from_date",
              "value": "2020-02-07"
            },
            {
              "name": "to_date",
              "value": "2020-03-08"
            },
            {
              "name": "stores",
              "value": "1%2C187%2C286"
            },
            {
              "name": "artist_ids",
              "value": ""
            }
          ],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gat",
              "value": "1",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2500,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:20 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Grass",
              "value": "prod"
            },
            {
              "name": "Etag",
              "value": "W/\"9f52dd23a34584ebde91b7e3b28aa0f6b7f5f4ef\""
            },
            {
              "name": "CF-Cache-Status",
              "value": "DYNAMIC"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badbf6c687b53-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 8239,
            "mimeType": "application/json",
            "compression": 7013,
            "text": "{\"items\": [{\"date\": \"2020-02-07\", \"streams_from_passive_discovery\": 91492, \"streams_from_active_discovery\": 52890, \"streams_from_collection\": 116576, \"overall_number_of_streams\": 260958, \"overall_number_of_spotify_streams\": 206765, \"skips\": 110182, \"saves\": 9079}, {\"date\": \"2020-02-08\", \"streams_from_passive_discovery\": 78384, \"streams_from_active_discovery\": 47339, \"streams_from_collection\": 100194, \"overall_number_of_streams\": 225917, \"overall_number_of_spotify_streams\": 178862, \"skips\": 96086, \"saves\": 7879}, {\"date\": \"2020-02-09\", \"streams_from_passive_discovery\": 74835, \"streams_from_active_discovery\": 45339, \"streams_from_collection\": 95467, \"overall_number_of_streams\": 215641, \"overall_number_of_spotify_streams\": 170961, \"skips\": 90851, \"saves\": 8053}, {\"date\": \"2020-02-10\", \"streams_from_passive_discovery\": 90788, \"streams_from_active_discovery\": 49950, \"streams_from_collection\": 112139, \"overall_number_of_streams\": 252877, \"overall_number_of_spotify_streams\": 202529, \"skips\": 105271, \"saves\": 9990}, {\"date\": \"2020-02-11\", \"streams_from_passive_discovery\": 93567, \"streams_from_active_discovery\": 54238, \"streams_from_collection\": 114747, \"overall_number_of_streams\": 262552, \"overall_number_of_spotify_streams\": 209867, \"skips\": 111308, \"saves\": 9238}, {\"date\": \"2020-02-12\", \"streams_from_passive_discovery\": 94817, \"streams_from_active_discovery\": 55831, \"streams_from_collection\": 116861, \"overall_number_of_streams\": 267509, \"overall_number_of_spotify_streams\": 213496, \"skips\": 111949, \"saves\": 10106}, {\"date\": \"2020-02-13\", \"streams_from_passive_discovery\": 95079, \"streams_from_active_discovery\": 54223, \"streams_from_collection\": 116593, \"overall_number_of_streams\": 265895, \"overall_number_of_spotify_streams\": 212901, \"skips\": 110977, \"saves\": 9315}, {\"date\": \"2020-02-14\", \"streams_from_passive_discovery\": 89717, \"streams_from_active_discovery\": 51459, \"streams_from_collection\": 113748, \"overall_number_of_streams\": 254924, \"overall_number_of_spotify_streams\": 204109, \"skips\": 109244, \"saves\": 8216}, {\"date\": \"2020-02-15\", \"streams_from_passive_discovery\": 77982, \"streams_from_active_discovery\": 44073, \"streams_from_collection\": 98781, \"overall_number_of_streams\": 220836, \"overall_number_of_spotify_streams\": 176199, \"skips\": 91214, \"saves\": 7227}, {\"date\": \"2020-02-16\", \"streams_from_passive_discovery\": 73644, \"streams_from_active_discovery\": 41738, \"streams_from_collection\": 93250, \"overall_number_of_streams\": 208632, \"overall_number_of_spotify_streams\": 166986, \"skips\": 88490, \"saves\": 7780}, {\"date\": \"2020-02-17\", \"streams_from_passive_discovery\": 87382, \"streams_from_active_discovery\": 46825, \"streams_from_collection\": 106098, \"overall_number_of_streams\": 240305, \"overall_number_of_spotify_streams\": 191625, \"skips\": 101479, \"saves\": 10404}, {\"date\": \"2020-02-18\", \"streams_from_passive_discovery\": 92116, \"streams_from_active_discovery\": 52664, \"streams_from_collection\": 115699, \"overall_number_of_streams\": 260479, \"overall_number_of_spotify_streams\": 207262, \"skips\": 109214, \"saves\": 10447}, {\"date\": \"2020-02-19\", \"streams_from_passive_discovery\": 94625, \"streams_from_active_discovery\": 53870, \"streams_from_collection\": 115751, \"overall_number_of_streams\": 264246, \"overall_number_of_spotify_streams\": 211460, \"skips\": 112255, \"saves\": 10776}, {\"date\": \"2020-02-20\", \"streams_from_passive_discovery\": 94076, \"streams_from_active_discovery\": 53878, \"streams_from_collection\": 115629, \"overall_number_of_streams\": 263583, \"overall_number_of_spotify_streams\": 209669, \"skips\": 109513, \"saves\": 9896}, {\"date\": \"2020-02-21\", \"streams_from_passive_discovery\": 88263, \"streams_from_active_discovery\": 54818, \"streams_from_collection\": 118072, \"overall_number_of_streams\": 261153, \"overall_number_of_spotify_streams\": 206520, \"skips\": 111576, \"saves\": 9475}, {\"date\": \"2020-02-22\", \"streams_from_passive_discovery\": 76594, \"streams_from_active_discovery\": 46929, \"streams_from_collection\": 104334, \"overall_number_of_streams\": 227857, \"overall_number_of_spotify_streams\": 178634, \"skips\": 96364, \"saves\": 8000}, {\"date\": \"2020-02-23\", \"streams_from_passive_discovery\": 73642, \"streams_from_active_discovery\": 45480, \"streams_from_collection\": 98294, \"overall_number_of_streams\": 217416, \"overall_number_of_spotify_streams\": 171044, \"skips\": 91949, \"saves\": 8510}, {\"date\": \"2020-02-24\", \"streams_from_passive_discovery\": 91352, \"streams_from_active_discovery\": 52984, \"streams_from_collection\": 115216, \"overall_number_of_streams\": 259552, \"overall_number_of_spotify_streams\": 206696, \"skips\": 109100, \"saves\": 10356}, {\"date\": \"2020-02-25\", \"streams_from_passive_discovery\": 95176, \"streams_from_active_discovery\": 52861, \"streams_from_collection\": 116434, \"overall_number_of_streams\": 264471, \"overall_number_of_spotify_streams\": 210009, \"skips\": 109454, \"saves\": 9702}, {\"date\": \"2020-02-26\", \"streams_from_passive_discovery\": 95604, \"streams_from_active_discovery\": 58028, \"streams_from_collection\": 119445, \"overall_number_of_streams\": 273077, \"overall_number_of_spotify_streams\": 215430, \"skips\": 110844, \"saves\": 11380}, {\"date\": \"2020-02-27\", \"streams_from_passive_discovery\": 97259, \"streams_from_active_discovery\": 62807, \"streams_from_collection\": 123165, \"overall_number_of_streams\": 283231, \"overall_number_of_spotify_streams\": 222471, \"skips\": 112862, \"saves\": 11269}, {\"date\": \"2020-02-28\", \"streams_from_passive_discovery\": 86142, \"streams_from_active_discovery\": 57018, \"streams_from_collection\": 123053, \"overall_number_of_streams\": 266213, \"overall_number_of_spotify_streams\": 216081, \"skips\": 113387, \"saves\": 10446}, {\"date\": \"2020-02-29\", \"streams_from_passive_discovery\": 74047, \"streams_from_active_discovery\": 45024, \"streams_from_collection\": 92434, \"overall_number_of_streams\": 211505, \"overall_number_of_spotify_streams\": 189784, \"skips\": 99988, \"saves\": 8717}, {\"date\": \"2020-03-01\", \"streams_from_passive_discovery\": 72913, \"streams_from_active_discovery\": 46234, \"streams_from_collection\": 103031, \"overall_number_of_streams\": 222178, \"overall_number_of_spotify_streams\": 178169, \"skips\": 93287, \"saves\": 8847}, {\"date\": \"2020-03-02\", \"streams_from_passive_discovery\": 87256, \"streams_from_active_discovery\": 50559, \"streams_from_collection\": 118352, \"overall_number_of_streams\": 256167, \"overall_number_of_spotify_streams\": 210230, \"skips\": 107992, \"saves\": 11145}, {\"date\": \"2020-03-03\", \"streams_from_passive_discovery\": 88707, \"streams_from_active_discovery\": 55627, \"streams_from_collection\": 121108, \"overall_number_of_streams\": 265442, \"overall_number_of_spotify_streams\": 218878, \"skips\": 111388, \"saves\": 10501}, {\"date\": \"2020-03-04\", \"streams_from_passive_discovery\": 88646, \"streams_from_active_discovery\": 54738, \"streams_from_collection\": 120182, \"overall_number_of_streams\": 263566, \"overall_number_of_spotify_streams\": 218085, \"skips\": 111458, \"saves\": 9444}, {\"date\": \"2020-03-05\", \"streams_from_passive_discovery\": 5983, \"streams_from_active_discovery\": 10390, \"streams_from_collection\": 29507, \"overall_number_of_streams\": 45880, \"overall_number_of_spotify_streams\": 0, \"skips\": 0, \"saves\": 0}, {\"date\": \"2020-03-06\", \"streams_from_passive_discovery\": 94669, \"streams_from_active_discovery\": 57781, \"streams_from_collection\": 120325, \"overall_number_of_streams\": 272775, \"overall_number_of_spotify_streams\": 226367, \"skips\": 116240, \"saves\": 11079}, {\"date\": \"2020-03-07\", \"streams_from_passive_discovery\": 78842, \"streams_from_active_discovery\": 48185, \"streams_from_collection\": 106159, \"overall_number_of_streams\": 233186, \"overall_number_of_spotify_streams\": 190707, \"skips\": 98324, \"saves\": 9047}, {\"date\": \"2020-03-08\", \"streams_from_passive_discovery\": 2202, \"streams_from_active_discovery\": 3253, \"streams_from_collection\": 8315, \"overall_number_of_streams\": 13770, \"overall_number_of_spotify_streams\": 0, \"skips\": 0, \"saves\": 0}], \"streams_from_passive_discovery\": 2525801, \"streams_from_active_discovery\": 1507033, \"streams_from_collection\": 3268959, \"overall_number_of_streams\": 7301793, \"overall_number_of_spotify_streams\": 5821796, \"skips\": 3052246, \"saves\": 276324, \"streams_from_passive_discovery_pct\": 35, \"streams_from_active_discovery_pct\": 21, \"streams_from_collection_pct\": 45, \"skips_pct\": 42, \"saves_pct\": 4}"
          },
          "redirectURL": "",
          "headersSize": 405,
          "bodySize": 1226,
          "_transferSize": 1631
        },
        "cache": {},
        "timings": {
          "blocked": 2.4020000466331837,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.33499999999999996,
          "wait": 1288.5009999877213,
          "receive": 1.0809999657794833,
          "_blocked_queueing": 0.847000046633184
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 49900
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 15676
              },
              {
                "functionName": "v._end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 51723
              },
              {
                "functionName": "v.end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 50464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562389
              },
              {
                "functionName": "o.then",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562360
              },
              {
                "functionName": "F",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 37990
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 44089
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354792
              },
              {
                "functionName": "dispatch",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 329935
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 50791
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354792
              },
              {
                "functionName": "dispatch",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 329935
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 53543
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354792
              },
              {
                "functionName": "value",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 53441
              },
              {
                "functionName": "Da",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1855393
              },
              {
                "functionName": "Gi",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1871052
              },
              {
                "functionName": "Cu",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1908848
              },
              {
                "functionName": "ys",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1893191
              },
              {
                "functionName": "ps",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1893116
              },
              {
                "functionName": "as",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1890464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848906
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "Qo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848851
              },
              {
                "functionName": "B",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8108
              },
              {
                "functionName": "O.port1.onmessage",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 6852
              }
            ],
            "parentId": {
              "id": "5",
              "debuggerId": "-6680354813689365837.-4924173665645887486"
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949472",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:18.874Z",
        "time": 1507.81699991785,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/grass/analytics/playlist-placements/?from_date=2020-02-07&to_date=2020-03-08&stores=1%2C187%2C286&artist_ids=&limit=40",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "session",
              "value": "26318db24967a7888b9314f5172426c5"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5; _gat=1"
            }
          ],
          "queryString": [
            {
              "name": "from_date",
              "value": "2020-02-07"
            },
            {
              "name": "to_date",
              "value": "2020-03-08"
            },
            {
              "name": "stores",
              "value": "1%2C187%2C286"
            },
            {
              "name": "artist_ids",
              "value": ""
            },
            {
              "name": "limit",
              "value": "40"
            }
          ],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gat",
              "value": "1",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2515,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:20 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Grass",
              "value": "prod"
            },
            {
              "name": "Etag",
              "value": "W/\"76942b06f9cc7a9d5369452517caadcc3c556e87\""
            },
            {
              "name": "CF-Cache-Status",
              "value": "DYNAMIC"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badbf696d7b77-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 12337,
            "mimeType": "application/json",
            "compression": 10574,
            "text": "{\"items\": [{\"labelid\": 6971, \"storeid\": 286, \"streams\": 70744, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL\", \"track_title\": \"Incomplete\", \"upc\": 192562490839, \"isrc\": \"USJMZ1800057\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2018-09-14\", \"order_number\": \"1\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 55458, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL\", \"track_title\": \"Suddenly\", \"upc\": 192562490839, \"isrc\": \"USJMZ1800050\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2018-08-10\", \"order_number\": \"2\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 48210, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL\", \"track_title\": \"All The Same\", \"upc\": 192562490839, \"isrc\": \"USJMZ1800051\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2018-06-15\", \"order_number\": \"3\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 40973, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL\", \"track_title\": \"Stars\", \"upc\": 190374713054, \"isrc\": \"USJMZ1600037\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2017-04-20\", \"order_number\": \"4\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 40933, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DWT7XSlwvR1ar\", \"track_title\": \"Stars\", \"upc\": 190374713054, \"isrc\": \"USJMZ1600037\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2017-04-20\", \"order_number\": \"5\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 37646, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Wide Eyes\", \"upc\": 884385593612, \"isrc\": \"GBZUZ0900064\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2018-04-25\", \"order_number\": \"6\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 26521, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Money\", \"upc\": 886788106154, \"isrc\": \"GBUM71105426\", \"artist\": \"The Drums\", \"artist_id\": 178408, \"date_added\": \"2018-04-25\", \"order_number\": \"7\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 19888, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX9B1hu73DioC\", \"track_title\": \"Try\", \"upc\": 191773757427, \"isrc\": \"USJMZ1800002\", \"artist\": \"ISLAND\", \"artist_id\": 924649, \"date_added\": \"2018-11-02\", \"order_number\": \"8\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 18201, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DWYzpSJHStHHx\", \"track_title\": \"Days\", \"upc\": 886788106154, \"isrc\": \"GBUM71105434\", \"artist\": \"The Drums\", \"artist_id\": 178408, \"date_added\": \"2017-06-01\", \"order_number\": \"9\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 17510, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DWWbVYL1LBbVy\", \"track_title\": \"Kettering\", \"upc\": 884385757045, \"isrc\": \"USJMZ0900024\", \"artist\": \"The Antlers\", \"artist_id\": 128434, \"date_added\": \"2019-12-05\", \"order_number\": \"10\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 16391, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2J9h4w9E0Xj\", \"track_title\": \"The Day I Die\", \"upc\": 191773757427, \"isrc\": \"USJMZ1800003\", \"artist\": \"ISLAND\", \"artist_id\": 924649, \"date_added\": \"2019-10-30\", \"order_number\": \"11\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 15330, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Days\", \"upc\": 886788106154, \"isrc\": \"GBUM71105434\", \"artist\": \"The Drums\", \"artist_id\": 178408, \"date_added\": \"2018-04-25\", \"order_number\": \"12\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 12766, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Stars\", \"upc\": 190374713054, \"isrc\": \"USJMZ1600037\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2018-04-25\", \"order_number\": \"13\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 11996, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2xhsrO0GW1M\", \"track_title\": \"Denver Haircut\", \"upc\": 193483857190, \"isrc\": \"USJMZ1900022\", \"artist\": \"The Hold Steady\", \"artist_id\": 40188, \"date_added\": \"2019-11-06\", \"order_number\": \"14\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 11835, \"playlist_link\": \"spotify-personalized-playlist:discoverWeekly\", \"track_title\": \"Try\", \"upc\": 191773757427, \"isrc\": \"USJMZ1800002\", \"artist\": \"ISLAND\", \"artist_id\": 924649, \"date_added\": \"2018-04-25\", \"order_number\": \"15\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 11709, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DXcTieYAg7jq1\", \"track_title\": \"Double Date\", \"upc\": 803680316306, \"isrc\": \"USA560311848\", \"artist\": \"Sean Na Na\", \"artist_id\": 38373, \"date_added\": \"2017-04-07\", \"order_number\": \"16\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 11547, \"playlist_link\": \"spotify-personalized-playlist:discoverWeekly\", \"track_title\": \"Beautiful Birds Flying\", \"upc\": 192562701300, \"isrc\": \"USJMZ1800062\", \"artist\": \"Valley Maker\", \"artist_id\": 994375, \"date_added\": \"2018-10-07\", \"order_number\": \"17\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 11127, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Airplanes\", \"upc\": 884385593810, \"isrc\": \"GBZUZ0900065\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2018-04-25\", \"order_number\": \"18\"}, {\"labelid\": 6971, \"storeid\": 187, \"streams\": 10899, \"playlist_link\": \"https://music.amazon.com/playlists/B00JAJO2QA , B07H47NBRJ\", \"track_title\": \"Airplanes\", \"upc\": 884385593810, \"isrc\": \"GBZUZ0900065\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2019-07-22\", \"order_number\": \"19\"}, {\"labelid\": 6971, \"storeid\": 187, \"streams\": 10899, \"playlist_link\": \"https://music.amazon.com/playlists/B00JAJO2QA , B07H47NBRJ\", \"track_title\": \"Airplanes\", \"upc\": 884385593810, \"isrc\": \"GBZUZ0900065\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2019-07-22\", \"order_number\": \"20\"}, {\"labelid\": 6971, \"storeid\": 187, \"streams\": 10899, \"playlist_link\": \"https://music.amazon.com/playlists/B00JAJO2QA , B07H47NBRJ\", \"track_title\": \"Airplanes\", \"upc\": 884385593810, \"isrc\": \"GBZUZ0900065\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2019-04-25\", \"order_number\": \"21\"}, {\"labelid\": 6971, \"storeid\": 1, \"streams\": 10791, \"playlist_link\": \"https://itunes.apple.com/us/station/idra.985500499\", \"track_title\": \"Night Terrors\", \"upc\": 194491338572, \"isrc\": \"USJMZ2000014\", \"artist\": \"Diet Cig\", \"artist_id\": 874087, \"date_added\": \"2020-02-05\", \"order_number\": \"22\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 10744, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Who Knows Who Cares\", \"upc\": 884385593810, \"isrc\": \"GBZUZ0900072\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2018-04-25\", \"order_number\": \"23\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 10569, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"The Day I Die\", \"upc\": 191773757427, \"isrc\": \"USJMZ1800003\", \"artist\": \"ISLAND\", \"artist_id\": 924649, \"date_added\": \"2018-04-25\", \"order_number\": \"24\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 10168, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DXa9xHlDa5fc6\", \"track_title\": \"Horizon\", \"upc\": 191773757427, \"isrc\": \"USJMZ1800006\", \"artist\": \"ISLAND\", \"artist_id\": 924649, \"date_added\": \"2018-03-23\", \"order_number\": \"25\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 9566, \"playlist_link\": \"spotify-personalized-playlist:releaseRadar\", \"track_title\": \"Thriving\", \"upc\": 194491338572, \"isrc\": \"USJMZ2000012\", \"artist\": \"Diet Cig\", \"artist_id\": 874087, \"date_added\": \"2020-03-06\", \"order_number\": \"26\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 9471, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"I Don't Know How To Love\", \"upc\": 886788106154, \"isrc\": \"GBUM71105437\", \"artist\": \"The Drums\", \"artist_id\": 178408, \"date_added\": \"2018-04-25\", \"order_number\": \"27\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 9445, \"playlist_link\": \"https://open.spotify.com/playlist/1f5ZzLDTXHTDR8CYIEddpW\", \"track_title\": \"Mt. Washington\", \"upc\": 887396891937, \"isrc\": \"GBZUZ1200056\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2015-06-07\", \"order_number\": \"28\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 9251, \"playlist_link\": \"spotify-personalized-playlist:releaseRadar\", \"track_title\": \"Night Terrors\", \"upc\": 194491338572, \"isrc\": \"USJMZ2000014\", \"artist\": \"Diet Cig\", \"artist_id\": 874087, \"date_added\": \"2020-01-30\", \"order_number\": \"29\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 9037, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DZ06evO4bOeFW\", \"track_title\": \"Wide Eyes\", \"upc\": 884385593612, \"isrc\": \"GBZUZ0900064\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2016-11-07\", \"order_number\": \"30\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 8971, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX6mvEU1S6INL\", \"track_title\": \"You & I\", \"upc\": 887396891937, \"isrc\": \"GBZUZ1200048\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2017-04-12\", \"order_number\": \"31\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 8817, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Kettering\", \"upc\": 884385757045, \"isrc\": \"USJMZ0900024\", \"artist\": \"The Antlers\", \"artist_id\": 128434, \"date_added\": \"2018-04-25\", \"order_number\": \"32\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 8411, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Mt. Washington\", \"upc\": 887396891937, \"isrc\": \"GBZUZ1200056\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2018-04-25\", \"order_number\": \"33\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 8361, \"playlist_link\": \"spotify-personalized-playlist:discoverWeekly\", \"track_title\": \"Light On The Ground\", \"upc\": 192562701300, \"isrc\": \"USJMZ1800061\", \"artist\": \"Valley Maker\", \"artist_id\": 994375, \"date_added\": \"2018-08-05\", \"order_number\": \"34\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 7422, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX26DKvjp0s9M\", \"track_title\": \"Wide Eyes\", \"upc\": 884385593612, \"isrc\": \"GBZUZ0900064\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2017-04-13\", \"order_number\": \"35\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 7419, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"All The Same\", \"upc\": 192562490839, \"isrc\": \"USJMZ1800051\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2018-06-09\", \"order_number\": \"36\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 7418, \"playlist_link\": \"spotify-personalized-playlist:discoverWeekly\", \"track_title\": \"A Couple Days\", \"upc\": 192562701300, \"isrc\": \"USJMZ1800060\", \"artist\": \"Valley Maker\", \"artist_id\": 994375, \"date_added\": \"2018-09-03\", \"order_number\": \"37\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 7345, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Suddenly\", \"upc\": 192562490839, \"isrc\": \"USJMZ1800050\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2018-08-12\", \"order_number\": \"38\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 7000, \"playlist_link\": \"https://open.spotify.com/playlist/7vFQNWXoblEJXpbnTuyz76\", \"track_title\": \"Night Terrors\", \"upc\": 194491338572, \"isrc\": \"USJMZ2000014\", \"artist\": \"Diet Cig\", \"artist_id\": 874087, \"date_added\": \"2020-02-23\", \"order_number\": \"39\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 6872, \"playlist_link\": \"spotify-personalized-playlist:discoverWeekly\", \"track_title\": \"Kubes\", \"upc\": 194491282172, \"isrc\": \"USJMZ2000001\", \"artist\": \"machinegum\", \"artist_id\": 1661747, \"date_added\": \"2019-12-15\", \"order_number\": \"40\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 6847, \"playlist_link\": \"spotify-personalized-playlist:dailyMix\", \"track_title\": \"Incomplete\", \"upc\": 192562490839, \"isrc\": \"USJMZ1800057\", \"artist\": \"Future Generations\", \"artist_id\": 824680, \"date_added\": \"2018-09-17\", \"order_number\": \"41\"}, {\"labelid\": 6971, \"storeid\": 286, \"streams\": 6370, \"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DZ06evO4bOeFW\", \"track_title\": \"Who Knows Who Cares\", \"upc\": 884385593810, \"isrc\": \"GBZUZ0900072\", \"artist\": \"Local Natives\", \"artist_id\": 138945, \"date_added\": \"2016-11-07\", \"order_number\": \"42\"}], \"total\": 969}"
          },
          "redirectURL": "",
          "headersSize": 405,
          "bodySize": 1763,
          "_transferSize": 2168
        },
        "cache": {},
        "timings": {
          "blocked": 2.3589999269992115,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.19200000000000017,
          "wait": 1504.5779999907688,
          "receive": 0.6880000000819564,
          "_blocked_queueing": 0.8159999269992113
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 49900
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 15676
              },
              {
                "functionName": "v._end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 51723
              },
              {
                "functionName": "v.end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 50464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562389
              },
              {
                "functionName": "o.then",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562360
              },
              {
                "functionName": "F",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 37990
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 49200
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354792
              },
              {
                "functionName": "dispatch",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 329935
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 51032
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354792
              },
              {
                "functionName": "dispatch",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 329935
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 53543
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354792
              },
              {
                "functionName": "value",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 53441
              },
              {
                "functionName": "Da",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1855393
              },
              {
                "functionName": "Gi",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1871052
              },
              {
                "functionName": "Cu",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1908848
              },
              {
                "functionName": "ys",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1893191
              },
              {
                "functionName": "ps",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1893116
              },
              {
                "functionName": "as",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1890464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848906
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "Qo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848851
              },
              {
                "functionName": "B",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8108
              },
              {
                "functionName": "O.port1.onmessage",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 6852
              }
            ],
            "parentId": {
              "id": "5",
              "debuggerId": "-6680354813689365837.-4924173665645887486"
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949633",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:20.417Z",
        "time": 751.0100000072271,
        "request": {
          "method": "GET",
          "url": "https://workstation.theorchard.com/grass/analytics/playlist-metadata/?playlist_links=https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL&playlist_links=https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL&playlist_links=https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL&playlist_links=https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "workstation.theorchard.com"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "session",
              "value": "26318db24967a7888b9314f5172426c5"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "same-origin"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "vendor_logo_path=%2Fimages%2Fredesign%2Flogo-header.svg; ajs_group_id=null; _ga=GA1.2.913915331.1580735344; mf_user=04eb42e6c8e04ca41d44ea3dc4da2ce8|; orchard-go-banner=false; __cfduid=db1a69bd1871b1a9c0854a86b949aeb101583337917; PHPSESSID=ddochjn5b2o2fuobp053oqsui3; csrfp_token=ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b; ajs_user_id=6918; ajs_anonymous_id=%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22; _gid=GA1.2.1587575972.1583828043; AWSELB=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; AWSELBCORS=07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157; mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c=66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5; _gali=reactified_homepage; mf_31314d44-ad1b-4756-8b63-9284fb1ec469=079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5; _gat=1"
            }
          ],
          "queryString": [
            {
              "name": "playlist_links",
              "value": "https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL"
            },
            {
              "name": "playlist_links",
              "value": "https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL"
            },
            {
              "name": "playlist_links",
              "value": "https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL"
            },
            {
              "name": "playlist_links",
              "value": "https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL"
            }
          ],
          "cookies": [
            {
              "name": "vendor_logo_path",
              "value": "%2Fimages%2Fredesign%2Flogo-header.svg",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_group_id",
              "value": "null",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_ga",
              "value": "GA1.2.913915331.1580735344",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_user",
              "value": "04eb42e6c8e04ca41d44ea3dc4da2ce8|",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "orchard-go-banner",
              "value": "false",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__cfduid",
              "value": "db1a69bd1871b1a9c0854a86b949aeb101583337917",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "PHPSESSID",
              "value": "ddochjn5b2o2fuobp053oqsui3",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "csrfp_token",
              "value": "ca7e20fa2bd31e0bc26b34ea48209bfeefdd429b",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_user_id",
              "value": "6918",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "ajs_anonymous_id",
              "value": "%22aa8998ae-eb3d-4aa2-9309-0bfb5f16c72a%22",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gid",
              "value": "GA1.2.1587575972.1583828043",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELB",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "AWSELBCORS",
              "value": "07CB4769142FD1E2760E65FD2A5E05FB31048CF7869E3A16FA3D7DF508C29D38432B6338D4E35C542B7D66A290F1A77FACF52C48D2E6EE49D4742EB9667F1F483C38220157",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_cffa5b88-ca0a-4895-b7ab-1c376f01987c",
              "value": "66d4c322b559ed1b047d692981146c04|03105693069defc9b419fde6a45377f9d9f8ba3f.-2034738698.1583827916796$03101531d0e280747fa82cecd41f3b37fefe3a82.-7122640499.1583827935235$03105369685e01182c1be759e3af671d5f736ad1.-2034738698.1583827973770$03100992bb70f46927de1b8ff190b8da4eefc153.-3859971545.1583827990961$031053589352c37ae0a0bc46c196c35540663ced.1879393188.1583828033059|1583828133063|-672734438_60313270.2559182312_-1233062068.-836030906_1538276.3355_1538276|5|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gali",
              "value": "reactified_homepage",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "mf_31314d44-ad1b-4756-8b63-9284fb1ec469",
              "value": "079b948941ea6e84c24d81748a6c4f00|03062615b6a6e1154ad695ab6e062a1a76d770f8.-6004846313.1583491166016$0306178383f0853186a648f6da506afd83ee1b50.-6004846313.1583493737985$030630194fc47c3ce4aba8e74d669ff0170edd0d.-6004846313.1583496270722$03100295dc4b42b8d08c721280b65c49abedc9d8.-2421239153.1583828042898$03101872c43b9efb1d3fd1b899e9d48620b2966d.-6004846313.1583829078075|1583829078080|-672734438_2132439421.2559182312_-1233062068.-63202513_1665245.352687477_1538276.3687245902_-820075192.-836030906_1665066.3355_1665066|1|||1|17.08|5",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "_gat",
              "value": "1",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 2719,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:21 GMT"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Transfer-Encoding",
              "value": "chunked"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Grass",
              "value": "prod"
            },
            {
              "name": "Etag",
              "value": "W/\"b504ff7c5a97480e9109183a7e1bcac81f8508f5\""
            },
            {
              "name": "CF-Cache-Status",
              "value": "DYNAMIC"
            },
            {
              "name": "Expect-CT",
              "value": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
            },
            {
              "name": "Server",
              "value": "cloudflare"
            },
            {
              "name": "CF-RAY",
              "value": "571badc90e457b77-DME"
            },
            {
              "name": "Content-Encoding",
              "value": "gzip"
            }
          ],
          "cookies": [],
          "content": {
            "size": 346,
            "mimeType": "application/json",
            "compression": 105,
            "text": "[{\"playlist_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL\", \"playlist_title\": \"Feel-Good Indie Rock\", \"playlist_author\": \"Spotify\", \"display_link\": \"https://open.spotify.com/playlist/37i9dQZF1DX2sUQwD7tbmL\", \"image\": \"https://i.scdn.co/image/ab67706f00000002033194582b613753efeb6e71\", \"followers\": 1239336, \"status_code\": 200}]"
          },
          "redirectURL": "",
          "headersSize": 405,
          "bodySize": 241,
          "_transferSize": 646
        },
        "cache": {},
        "timings": {
          "blocked": 1.8140000637471676,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.15400000000000003,
          "wait": 747.8109999996797,
          "receive": 1.2309999438002706,
          "_blocked_queueing": 1.0480000637471676
        },
        "serverIPAddress": "104.17.8.85",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 49900
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 15676
              },
              {
                "functionName": "v._end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 51723
              },
              {
                "functionName": "v.end",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 50464
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562389
              },
              {
                "functionName": "o.then",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1562360
              },
              {
                "functionName": "F",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 37990
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 48451
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354792
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 111182
              },
              {
                "functionName": "value",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 112829
              },
              {
                "functionName": "bs",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1904045
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "gs",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1900301
              },
              {
                "functionName": "as",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1890663
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848906
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "Qo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848851
              },
              {
                "functionName": "Go",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848786
              },
              {
                "functionName": "es",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1887253
              },
              {
                "functionName": "enqueueSetState",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1853567
              },
              {
                "functionName": "w.setState",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1718003
              },
              {
                "functionName": "i.onStateChange",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 323714
              },
              {
                "functionName": "notify",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 320448
              },
              {
                "functionName": "t.notifyNestedSubs",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 320090
              },
              {
                "functionName": "i.onStateChange",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 323733
              },
              {
                "functionName": "d",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 326755
              },
              {
                "functionName": "v",
                "scriptId": "125",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js",
                "lineNumber": 1,
                "columnNumber": 5223
              },
              {
                "functionName": "",
                "scriptId": "125",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js",
                "lineNumber": 1,
                "columnNumber": 6312
              },
              {
                "functionName": "",
                "scriptId": "125",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js",
                "lineNumber": 1,
                "columnNumber": 64333
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354801
              },
              {
                "functionName": "dispatch",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 329935
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 49318
              }
            ],
            "parent": {
              "description": "Promise.then",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 49257
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 354792
                },
                {
                  "functionName": "dispatch",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 329935
                },
                {
                  "functionName": "",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 51032
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 354792
                },
                {
                  "functionName": "dispatch",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 329935
                },
                {
                  "functionName": "",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 53543
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 354792
                },
                {
                  "functionName": "value",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 53441
                },
                {
                  "functionName": "Da",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1855393
                },
                {
                  "functionName": "Gi",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1871052
                },
                {
                  "functionName": "Cu",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908848
                },
                {
                  "functionName": "ys",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893191
                },
                {
                  "functionName": "ps",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893116
                },
                {
                  "functionName": "as",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1890464
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848906
                },
                {
                  "functionName": "t.unstable_runWithPriority",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8726
                },
                {
                  "functionName": "Wo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848615
                },
                {
                  "functionName": "Qo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848851
                },
                {
                  "functionName": "B",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8108
                },
                {
                  "functionName": "O.port1.onmessage",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 6852
                }
              ],
              "parentId": {
                "id": "5",
                "debuggerId": "-6680354813689365837.-4924173665645887486"
              }
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949633",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:20.427Z",
        "time": 362.87699989043176,
        "request": {
          "method": "GET",
          "url": "https://cdn.theorchard.io/frontend-source-of-streams/a09b1b498841d7aed406b30c474b0355.svg",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "cdn.theorchard.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/frontend-source-of-streams/a09b1b498841d7aed406b30c474b0355.svg"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "accept",
              "value": "image/webp,image/apng,image/*,*/*;q=0.8"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "no-cors"
            },
            {
              "name": "referer",
              "value": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.b7a49430024851560a59.css"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            },
            {
              "name": "cookie",
              "value": "_ga=GA1.2.623441365.1582092609"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "_ga",
              "value": "GA1.2.623441365.1582092609",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "content-type",
              "value": "image/svg+xml"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:21 GMT"
            },
            {
              "name": "x-amz-replication-status",
              "value": "COMPLETED"
            },
            {
              "name": "last-modified",
              "value": "Wed, 04 Mar 2020 09:49:50 GMT"
            },
            {
              "name": "cache-control",
              "value": "public, max-age=31536000"
            },
            {
              "name": "x-amz-version-id",
              "value": "MWgqrZMEM1tnHUoSgF93BQs1msBd4TK7"
            },
            {
              "name": "server",
              "value": "AmazonS3"
            },
            {
              "name": "content-encoding",
              "value": "gzip"
            },
            {
              "name": "vary",
              "value": "Accept-Encoding"
            },
            {
              "name": "x-cache",
              "value": "Miss from cloudfront"
            },
            {
              "name": "via",
              "value": "1.1 075ecc80ea8e9352008139ab9fd7a593.cloudfront.net (CloudFront)"
            },
            {
              "name": "x-amz-cf-pop",
              "value": "EWR52-C4"
            },
            {
              "name": "x-amz-cf-id",
              "value": "MMn-_P_Hbeav6Ojt7Q2nUBeJ93MlnpDn_lG0sBI5RhoD_OqFaIrbmg=="
            }
          ],
          "cookies": [],
          "content": {
            "size": 1662,
            "mimeType": "image/svg+xml",
            "text": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxNzAuMDVweCIgaGVpZ2h0PSIxNzAuMDVweCIgdmlld0JveD0iMCAwIDE3MC4wNSAxNzAuMDUiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDE3MC4wNSAxNzAuMDUiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxkZWZzPgoJCTxyZWN0IGlkPSJTVkdJRF8xXyIgd2lkdGg9IjE3MC4wNSIgaGVpZ2h0PSIxNzAuMDUiLz4KCTwvZGVmcz4KCTxjbGlwUGF0aCBpZD0iU1ZHSURfMl8iPgoJCTx1c2UgeGxpbms6aHJlZj0iI1NWR0lEXzFfIiAgb3ZlcmZsb3c9InZpc2libGUiLz4KCTwvY2xpcFBhdGg+Cgk8cGF0aCBjbGlwLXBhdGg9InVybCgjU1ZHSURfMl8pIiBmaWxsPSIjMUVENzYwIiBkPSJNODUuMDI1LDEuMjgxYy00Ni4yNSwwLTgzLjc0NCwzNy40OTMtODMuNzQ0LDgzLjc0MgoJCWMwLDQ2LjI1NCwzNy40OTQsODMuNzQ1LDgzLjc0NCw4My43NDVjNDYuMjUxLDAsODMuNzQzLTM3LjQ5MSw4My43NDMtODMuNzQ1QzE2OC43NjksMzguNzc0LDEzMS4yNzYsMS4yODEsODUuMDI1LDEuMjgxCgkJIE0xMjMuNDMxLDEyMi4wNjhjLTEuNTA1LDIuNDY4LTQuNzE4LDMuMjQxLTcuMTc3LDEuNzM3Yy0xOS42NjUtMTIuMDItNDQuNDE3LTE0LjczMy03My41NjctOC4wNzUKCQljLTIuODA5LDAuNjQ0LTUuNjA5LTEuMTE2LTYuMjQ5LTMuOTI0Yy0wLjY0NC0yLjgxLDEuMTEtNS42MDksMy45MjUtNi4yNWMzMS45LTcuMjkyLDU5LjI2My00LjE1NCw4MS4zMzYsOS4zMzQKCQlDMTI0LjE2LDExNi4zOTQsMTI0LjkzNSwxMTkuNjA4LDEyMy40MzEsMTIyLjA2OCBNMTMzLjY3OCw5OS4yNjZjLTEuODk0LDMuMDczLTUuOTEyLDQuMDM3LTguOTgsMi4xNDkKCQljLTIyLjUwNC0xMy44MzMtNTYuODIyLTE3Ljg0MS04My40NDctOS43NTljLTMuNDUyLDEuMDQzLTcuMDk5LTAuOTAzLTguMTQ4LTQuMzVjLTEuMDQtMy40NTIsMC45MDctNy4wOTIsNC4zNTQtOC4xNDIKCQljMzAuNDE1LTkuMjMsNjguMjI2LTQuNzYsOTQuMDc0LDExLjEyNUMxMzQuNTk5LDkyLjE4LDEzNS41NjQsOTYuMTk5LDEzMy42NzgsOTkuMjY2IE0xMzQuNTYyLDc1LjUyMQoJCWMtMjYuOTkzLTE2LjAzMS03MS41Mi0xNy41MDUtOTcuMjg5LTkuNjg0Yy00LjEzOSwxLjI1Ni04LjUxNS0xLjA4LTkuNzY4LTUuMjE4Yy0xLjI1NC00LjE0MSwxLjA3OS04LjUxNCw1LjIyLTkuNzcyCgkJYzI5LjU4Mi04Ljk3OSw3OC43NTUtNy4yNDUsMTA5LjgzMiwxMS4yMDJjMy43MjQsMi4yMSw0Ljk0Myw3LjAxNywyLjczNywxMC43MzNDMTQzLjA4Niw3Ni41MDQsMTM4LjI3NSw3Ny43MzEsMTM0LjU2Miw3NS41MjEiLz4KPC9nPgo8L3N2Zz4K",
            "encoding": "base64"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 1368
        },
        "cache": {},
        "timings": {
          "blocked": 3.5009999466240407,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.21199999999999974,
          "wait": 358.7539999650791,
          "receive": 0.4099999787285924,
          "_blocked_queueing": 0.7879999466240406
        },
        "serverIPAddress": "99.84.32.49",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "value",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 952185
              },
              {
                "functionName": "value",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 951801
              },
              {
                "functionName": "bs",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1904045
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "gs",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1900301
              },
              {
                "functionName": "as",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1890663
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848906
              },
              {
                "functionName": "t.unstable_runWithPriority",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 8726
              },
              {
                "functionName": "Wo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848615
              },
              {
                "functionName": "Qo",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848851
              },
              {
                "functionName": "Go",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1848786
              },
              {
                "functionName": "es",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1887253
              },
              {
                "functionName": "enqueueSetState",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1853567
              },
              {
                "functionName": "w.setState",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 1718003
              },
              {
                "functionName": "i.onStateChange",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 323714
              },
              {
                "functionName": "notify",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 320448
              },
              {
                "functionName": "t.notifyNestedSubs",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 320090
              },
              {
                "functionName": "i.onStateChange",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 323733
              },
              {
                "functionName": "d",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 326755
              },
              {
                "functionName": "v",
                "scriptId": "125",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js",
                "lineNumber": 1,
                "columnNumber": 5223
              },
              {
                "functionName": "",
                "scriptId": "125",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js",
                "lineNumber": 1,
                "columnNumber": 6312
              },
              {
                "functionName": "",
                "scriptId": "125",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.vendors.abdc2c26e4e4bdc35c23.js",
                "lineNumber": 1,
                "columnNumber": 64333
              },
              {
                "functionName": "",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 354801
              },
              {
                "functionName": "dispatch",
                "scriptId": "109",
                "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                "lineNumber": 1,
                "columnNumber": 329935
              },
              {
                "functionName": "",
                "scriptId": "126",
                "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                "lineNumber": 0,
                "columnNumber": 49318
              }
            ],
            "parent": {
              "description": "Promise.then",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 49257
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 354792
                },
                {
                  "functionName": "dispatch",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 329935
                },
                {
                  "functionName": "",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 51032
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 354792
                },
                {
                  "functionName": "dispatch",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 329935
                },
                {
                  "functionName": "",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 53543
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 354792
                },
                {
                  "functionName": "value",
                  "scriptId": "126",
                  "url": "https://cdn.theorchard.io/frontend-source-of-streams/frontend-source-of-streams.main.be7fff7cf3df42fa3598.js",
                  "lineNumber": 0,
                  "columnNumber": 53441
                },
                {
                  "functionName": "Da",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1855393
                },
                {
                  "functionName": "Gi",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1871052
                },
                {
                  "functionName": "Cu",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1908848
                },
                {
                  "functionName": "ys",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893191
                },
                {
                  "functionName": "ps",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1893116
                },
                {
                  "functionName": "as",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1890464
                },
                {
                  "functionName": "",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848906
                },
                {
                  "functionName": "t.unstable_runWithPriority",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8726
                },
                {
                  "functionName": "Wo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848615
                },
                {
                  "functionName": "Qo",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 1848851
                },
                {
                  "functionName": "B",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 8108
                },
                {
                  "functionName": "O.port1.onmessage",
                  "scriptId": "109",
                  "url": "https://cdn.theorchard.io/frontend-workstation/4ba2936957dcd53886ec9123aa4af57ec8b4b239/main.dml.js",
                  "lineNumber": 1,
                  "columnNumber": 6852
                }
              ],
              "parentId": {
                "id": "5",
                "debuggerId": "-6680354813689365837.-4924173665645887486"
              }
            }
          }
        },
        "_priority": "High",
        "_resourceType": "image",
        "connection": "1949487",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:21.188Z",
        "time": 756.2920000287593,
        "request": {
          "method": "GET",
          "url": "https://i.scdn.co/image/ab67706f00000002033194582b613753efeb6e71",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "i.scdn.co"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "Accept",
              "value": "image/webp,image/apng,image/*,*/*;q=0.8"
            },
            {
              "name": "Sec-Fetch-Site",
              "value": "cross-site"
            },
            {
              "name": "Sec-Fetch-Mode",
              "value": "no-cors"
            },
            {
              "name": "Referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": 530,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Content-Length",
              "value": "29277"
            },
            {
              "name": "Last-Modified",
              "value": "Tue, 27 Aug 2019 09:37:03 GMT"
            },
            {
              "name": "ETag",
              "value": "\"d5f38dfed0fc1a5b20a00ca089dabbf6\""
            },
            {
              "name": "Content-Type",
              "value": "image/jpeg"
            },
            {
              "name": "Accept-Ranges",
              "value": "bytes"
            },
            {
              "name": "Date",
              "value": "Tue, 10 Mar 2020 08:31:21 GMT"
            },
            {
              "name": "Age",
              "value": "4321303"
            },
            {
              "name": "Timing-Allow-Origin",
              "value": "*"
            },
            {
              "name": "X-Served-By",
              "value": "cache-ord1733-ORD, cache-lga21947-LGA"
            },
            {
              "name": "X-Cache",
              "value": "HIT, HIT"
            },
            {
              "name": "X-Cache-Hits",
              "value": "5704, 7059"
            },
            {
              "name": "Access-Control-Allow-Origin",
              "value": "*"
            },
            {
              "name": "Cache-Control",
              "value": "max-age=315360000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 29277,
            "mimeType": "image/jpeg",
            "compression": 0,
            "text": "/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAEsASwDAREAAhEBAxEB/8QAHQAAAAcBAQEAAAAAAAAAAAAAAAECBAUGBwMICf/EAEMQAAEDAwMCBAQCCAUCBgIDAAECAwQABREGEiExQQcTUWEUInGBMpEVI0JSobHB0QgzYuHwFnIkJjRDc4KSslV0wv/EABwBAAIDAQEBAQAAAAAAAAAAAAAEAQIDBQYHCP/EADoRAAICAQMCBAMHBAIBAwUAAAABAhEDBBIhMUEFEyJRYXGxFDKBkaHB0QYj4fBC8RUkM1I0NVNicv/aAAwDAQACEQMRAD8A9lEk+tfm2j6vaCz7VNBaDzmooLBuI96KCw8miiQZNFADNFAHmigBn60URYM1NBYefrUUAM+1FBYM0UAVBIY+lRQBj6UUAf3ooAfeigsAoom2Kx9KKIDFFADmiibDwaKCwc0UFg5qKCwqKCwc0UQCigCI47VNADFFE2JooLYMUUgtgxRRAM0UAR5ooBOcVNADPvRRAdRRJzz7VpRS0LaaU+4lCE7lHtV4Y5Te2PUq5KKtko1ZE7f1jp3eiRxXTjoF/wApCctT7I4S7SthBW2rzEjqMcisc2jlBboOzSGdSdPgYAk96QoaD59aKCg8n2ooKBuqKItAzRRPAM+9FEWgZqKJsGc1NAHRQAyfSiiQyRRQB1BAMCgADFTRIrAx0qAsPFBAKKJsPiigsPHvUBYMe9HAWDHvQFgwPapoLEkUUFhfeigDwKCAY4qCQtuakLYNo9qAthEDHSigsIgYoIARRQCCeamiQE+1FMgInB6UUTyGU5rWjKyStDX6p9YO1f4QrGccZrqaOFxlJcMTzy5SFDeobvNmK/1BGB+VW9T53S/IOF2X5nWK64p0JS+Hk/tJcTtWBWmJzcqUrXe+GUmopcqvoRkxoNSnUJ6BXFcvNBQySihzHPdFNnLHFY0XsLOKKJBmjaAMio2gDNTQAyKKAFFADFRRIYGO9FBYfSooLD/OiiAAUUTbFAVNE2DFRRFsUkYoomw8ZooLBiigthjp3ooLBgZNFBYXeiibQKKIsGM0UFgxRQWEUgmigsLafSigsG32ooLYWKKC2DGaKIsBFFBbEqHNFByJKcVNAEOKABj6VNByHmr0Z2PrVKSy4pCzhK+hPY10NJlWOTjLoxbNDcrRJCEk9Vuk+vmGun5Ee7f5sV8x+y/IBCYiFLccKgOhUBu+me9HGFOU3f1IT3uoogXXS66tauqjmvPzk5ycn3OlFbUkhNUotYNuaKALFFEito+tABACgiw8D2oCw9tAAIoJBjNSAAnmoAUE8UBYMUAGlNDJsVjFRRFgwaKJsMJzRSCw9vtRSCwYqKCw6KCwsVNILCI+lFBYWDntQFgII9KKCwflRSCwflRQWD8qAsLB9aKQWDbRQWEUmikFgIxRRAkpzmpoDnipoAYoCwwM1pRnYMUUFnduW+0kBLqgn0zW0cuSHEZFHCD6oS44t45WorPuapKUpu5Oyy2roIx7VSi1oFFBaBiigtB0USCiiLC6VFAHye1G0AYPpUUSAA5qaAMCooA8UUAYT60UFhgY9qKCwxyfWigDAqKAViigsLr0oomw8GigsABqaCwYookGKKIB9qigsFFEWA0UFhYzRQWDGKKJsIpoCwbaKCwHrRQWJPWiiAFNFAEoVNAc+tTQCVJyaKAArajKw+lFBYY5NFBYeKigsLnmiibDxx70URYWDRtJsPBoogG0+maKJtB4PfmiiLQ9tllm3dTiYccvlvBVggYz06n2p3TaHPrG1gjurr0/cwy6jFgrzJVZIHRN8/8A49f/AOSf70//AOD8Q/8AxP8ANfyL/wDkdL/8/r/BEzYb9ulLjyWy08jG5BIOOM9q5OfT5NPkeLKqkuw5jyQyRU4O0zjisKNBX2ooAZqaJslLZpufeIzj8VpLjTZKVErCecZ7109L4ZqdZjeTDG0vikJ5tZiwSUMj5ZHAiuXQ5bHMG3Sbm95UVhb6+pCB0Hue1MYNNm1U9mGDk/gZZM0MMd2SVIlndD3ltsrMPcAPwocST+Wa60/AfEIx3eXfyasRj4npm63/AKMhFtKZcUhaVIWk4KVDBB+lcKWOUJOMlTXY6akpK10CqtE2HiigsAHFFEWFRRO5gxRRNj+1afmXsOmG0lwNkBW5YTjPTr9K6Wj8N1GvUngjdVfKXUTz6vFpq8x1YxWjy1qSeFJJBHvXOcHFuLXQaUrVoTgVFE2DAFG0iwACiibBtFFBYRAqKCwuCanaRbAcYqdoWzmrpRQHOpoiwsmikTYYR9RWpiKxioomwx1ooLBg1NBYMUUFgxUUFgIx2qaJsLIooiwZooLD6mookvfhZw/cf+1v+aq9z/S69eb5L9zzvjD9MPx/YXcNVajYnyW2YO9lDikoV8Ms5APHPetNR4p4pjzThjxXFNpel9CuLSaOWOMpT5a90QMe13LWl4kPFKGnMjznFJKUoIGAMdc8dK4GPSarxnUzyNJPu6pLt09/gdKWbDoMUYrn2+JIzfDWWxHU5GltSlpHLQSUk+w5PNdHN/TWaEHLFNSa7VQrj8WxylU4tfEhbFpuXf5C22AG0N8OOL6JPp7n2riaHwzP4hNxx8JdW+3+fgdDUavHpopy5b6Im5vhvLYjqcjSm5a0jlsJ2k+w5PNdvP8A03mhByxTUmu3T8hDH4tjlKpxaJjw64sFwBHIdVwf+wV1f6dTWjyp+7+iEvFOc8PkvqZ2kFQAAyTXzqmz1NmnvuM6F0235bSVyFkJ543uEZJPsK+o5JY/AdAtkbk/1k+7+CPHRU/EtS9zpL9EVuF4g3JuUlUjy3mCfmbSjaQPY15nB/UWsjkTy0491Vfk/wDs6+TwvA4VC0/mcdZXi33qS07Ebc81PyrdUnaFjtx1yKx8b1ml12SM9OnuXDdVft8TTw/Bm00XHI1Xt7Dq2+HUyZHS7IeRFKhkNlJUr79MUzpv6a1GaCnlnsvtVv8AEzy+LY4S2wV/EjL9peXp8pU6UusLOEuozjPoR2rleIeE5/DqlPmL7r6P2HNLrseqtR4fsPrNoSXdIyX3HUxG1jKQpJUoj1x2p7Rf0/qNXjWWctifTu/nXFC2o8Tx4ZOEVua/Ib37R8uxNecVJkR84LiBgpz6j+tL+IeC59BHzG90fddvmjXS+IY9TLZVMOxaMmXxjzwtMaOeErWCSr6D+tT4f4Jn18PNT2x933+SI1PiOPTS2VbLnpPTb2nVS0uOoeS6UFKkgg8ZzkfevbeD+GZPDXkjOSalVV8LPP67WR1ai4qqszGUB8S//wDIr+Zr5blX9yXzf1PYwfpXyOWKyovYVFBYMGgLDxxQFhYoCwsc5xRRFhYooLOa+9SkRYjHtRQWHRQWGBj1rejMMCigsGzFFBYe3pRQWDBqKCwEe1FBYWKmgsBT7UUFgxRRNh49qigsvPhb/n3H/tb/AJqr2/8ATC9eX8P3PPeLv0w/H9jpcPEaVCnyY6YTSktOqQFFxQzg4rTUf1Dmw5p41jXpbXV9mVxeFwnCMnJ8r2JHR8hErT01/Yre6+8txDJ+fJ5wD646V0fCJxy6LJkrmUpNpdefb8OgrrouGeEb6JVfQb6cuNphvSDa7fcVubf1qcFXfuCrr/GlvDs+ixTm9Jindc9/q+v6muqx55qPnzj8P9okrA9HftVzdaZdSFyHlLaSNroPpjscV0NBLHPT5pwi+ZStdH/3QrqVKOXHGTXCXPb/AKI3TtwtMV2QbXb7ipW0eanBPf0Kuv8AGuf4dqNFilN6PFNvv3+r6/qN6rHnmo+fOPw/2h7pJ1D8W9uNoU0hctxQQsYKflHBHamvCpKcNTOKpOcuH1XHcx1ialiTd1FfUzFB2lKgMkEGvmKuLTR6188GmaohK1Pp2PIhDzVAh5KB1UCMEfX+1fTfFcD8U0Ucun5f3l8eOV8zyWjyLR6hwy8diP03qCTFiRraizPPPN5SVk7R1Jycp461zfDPEM2LHDSR07bXF9O/e1wNavTQnKWd5Uk/99yW1Ulr4my+YlIQZqd3HHQ/1xXX8WjDfpt/Tevp/IlonLbl29dpF+IZnh2J5JeEXac+VnG/PfHt0rlf1H9pUsfl3s+F9b71+n4jvhXlVLdW74+w+lb1aHR+k8+bsRv8z8X4xjPvinc25+Dr7Z1pXfXrx+NC2Olrn5HTnp8voc9fmWm3RvhC4I+8+Z5OemPlzjt1/hVP6h8/yIeTe2+a/Tp2LeF+X5svMq+1/r+Iu0eedDyf0ju/ynNvm/i2Y+XOeevT7VfR+Y/CJ/ar6S69a7f4Iz7FrY+T7rp79wXnz06Kjfo/f/ltbvK/FsxzjH/OtRrPNXhMPst9I9OtVz/kMGx62Xne76+4nw8M0wZHxJcLO8eUXc5/1Yz26VH9OvUPDPzr22qv9evYnxTyvMWzrXNGeyh/4l//AORX8zXzvKv7kvm/qepg/SvkcsVlRe2DFFBbBtzRRNgxRRFsIp5ooLC2kUURYKKCzkrnipoixJFG0LBg/wDDRtAXj3rejKwAfnRQWKqKJsGPyooA8ZooBKuDRQA6UUFoFFEg60UABjtRQEzp3UrunFvqaYQ95oSDvURjGfT611/D/EZ+HuThFPdXX4CWq0sdUkpOqIyZJMyY/IUkIU64pwpB4GTmudmm82SWRrq2/wAxrHHy4KC7D6w6il6feUuPtW2vG9pfRXv7H3p3Q6/NoJuWPlPqn0YvqNNDUqpdV3J6b4lSXo6kRobcZ1XVwr3Y9wMDn613M39RZZwaxY1F+93+yOdDwuCdzlaIOxakmWKS440Q6hw5cbczhR9c9j71xNF4hn0M3OHKfVPv8fmdDUaXHqIpS4rpROzfEmS9HUiNERGcV1cK92PcDA/jXbzf1FlnBxxY1Fvvd/shDH4XCMrnK17EbY9Wv2SI+whhD/nLK1LWog5Iwa5mi8VyaLFLHGKe53bv2ob1GjhnmpN1RBYrhUdGyasWqZlhyhra8wTksudM+oPauxofFM+g9MOY+z/b2ENTpMep5lw/cm5XiTIdYKWYSGnCPxqWVY98YFdrJ/UmWUWseNJ+93+whDwqKdyla+REXvVL99hR2HmUoLSt3mJUcqOMZx29a4+u8Uya7FDHONbeb9+KHtPo46acpRfUkrb4hyojCW5EdMopGA5u2qP14Oa6em/qHNigoZYbq73T/EVy+F45y3QdfDqRd/1RKv5ShwJZYSchpByM+pPeuV4h4nm8QqM+Irsv39xzTaTHpuY8v3H9m13LtkZLDzQltoGEkq2qA9M96f0fjufSwWOcdyXTmn+9i+fw7Hmk5xe1v8hvf9Xy74z5OxMaOTlSEnJV9T/Sl/EPGM2uj5dbY+3v82aabQ49PLfdsFh1jLsbIj7EyI4OUoUcFP0Pp7UaDxjNoYeXW6Ps+3yYanQY9RLfdMkT4kSy8pQhs7CBhBWcj710X/Umbc2sar5sV/8AFY6rc7Ki8vzXVrIxvUVY9MmvIye6Tl7nbSpJCAnBqlFrAU5ooLDxRRAeO9G1E2JKc0JBYnFFEWAipoLOKhzU0RYWM0UFgwTRQWKCT7VrRlYrHpRQWGAR2qKCwYNFBYeDRQWEoGigsTipokPnFFBYWKjaFh4ooL+I+g2KfcmFPRYy3mknaVJI4OM9zTuHQ6jURc8UG0vkYZNRixPbOVMY4pKjewAUUFh4PvRQDm3W2RdJSY0ZAcdIJCSQOB160zg02TU5FjxK2ZZMscMd83wP2NK3F+4OwksJD7SQpe5YwkHpzTkPC9VPNLAo+pcvnjn4mUtZhjjWRvhkdJjOw5DjDqCh1tRSpJ7GudkxTxTeOaprqMwyKcVKPRnPHNZUXsPmpoLJKHp25T46XmIi3WldFAjB/jT+Lw7VZ4LJjg2n34/kVnqsWOTjOVMOVp25QWi6/CdQ2OqsAgfXFGXw7V4I78mNpf77BDVYcj2xkrI/Fc6hsFTQB4xRQA/hUUFj22WSZeS4IjQdKMbsqCcZ6dfpT+l0OfWX5Mbr4pC+bUY8FeY6sZraUy6ttYwtJKVDryDzScoOEnGXVG8ZKSTQRqlEhEUUAWPpU0Fiinj1qKoAAc0UACmigEY/OiiLEqGKlIizljmrbQsG32o2hbD2e1RtC2L28VvRiHiooLYNtFAGE4oomwwmpoEwlJxUUTYgjipoLBiooiwYoomwYooLNF8PR/5flf8AzK//AFFe88CX/pJ/N/RHnPEf/fj8l9Sr2fR8u9W5Uth1oAKUkNrzkkfwrzmk8Jy6vD52Nrvx8jqZtbDBPZJMkH/DiczFLiH2XXgMloAjPsDTs/AM8IboyTft/kXXiWNypppENZNPy76+tthISlH43F8JT7fX2rk6PQZdbJxx8JdW+w7n1OPTq5dy4af0XJsd3ZlKfbeaCVJVtSUkZHH1r1Wh8IyaPUxyuSa5+Bx9RroZ8Tgk0+A1pnr1ncRb3mWleS2Vh9JKVDAx070Nal+J5fs0knSu+jBPEtLDzU3y+hWDZbheb/Lj5S7IS4fOe6IHOM/2Febei1Os1mTHdyvl9v8AfZHVWfFgwRl0XZdyTkeHMttlSmZTL7gHLeCnPsD/AHro5P6fzRi3Cab9ugrHxKDdSi0iqrbU2tSFpKFpJBSRgg+leZlBxe2XDR11JNWmaLp99yJogPMjLrbbqkcZ5Cjjivf6Cc8XhW/H1SlX5s81qYqes2y6OvodNJ3i4Xf4gTmQGkgbXPLKMk9R71fwrWanV71qI8LvVfNFdZhxYa8t8/OyqK007c79OjwkpSw06oFaj8qBnp/t7V5V+Gz1OryYtOqim+eyOz9qjhwRnk6tD+V4eTGmStmQ2+sD8G0pJ+hp3L/T2aMd2Oak/bp+QvDxPG3Uo0QNus8q6TTGZb/Wpzv38BHODmuJp9Fm1OXyoLnvfb5nRy6iGKG+T4+pPveHUpLJUiW045j8BSUg/eu7L+nsyjcZpv2pr9TmrxTG3zF0O/D1hyLKubTqChxBQlST1B+am/AMcsU80Jqmq/cx8Tkpxxyi+Hf7ENE0vLvk2c40UNNJeWPMczgnceBiuRi8Mza7NklDhKT5fvY9PWY9PCCfLpfQip8IQZS2A+3IKDgrbztz3HPWuTqMCwZHjUlKu66DuLJ5kFOqsbY+9L0aWAJyaKJsVtzRRFg2VFE2FtooixBHNTRIHGVpbS4RhCiQknvjrir+W1FSfQz3K6ONVokBPFFEgNTRJ1Kcdq1oxBtooA9tFEhhPHPWiiLDxUUSJUOvWpoLEFOBRQWDbRQWFjHFFBYNvvRQWaH4fDFglf8AzL//AFFe68D40k/m/ojzviD/AL0fl+4NHrUzo6U4g7VILygfQhPFV8Lbh4dOS6rd9CdWk9TFP4HDw4lvyPjkvPLdA2KG9ROCc56/SsvAcuSayKcm+nUt4jCMdriq6khp0FFjuXwoHxPnv4A/eydv9Ke0Ca02Xyvvbp/n2MNRTzQ39Kj+RCaGeuS704HVvrZ2K87zSSArt175rj+Dz1UtS1Nuqd3fXt17j2uWFYltq+1E9bh/53uv/wDXb/pXYwf/AHPN/wDyv2Ecn/0mP5sXp0N/EXwjJd+MXnb+LGOP61fQbd+oa673/grqb24vaiOssy0xp7qoMa4rk7T5iVAqz65BPWkNJm0ePK3p4Tcu/X9bfUZzwzygvMlGuxVNRPIk3uW8htbSVKBKHE7VA4GcivM6+ccmqnOKat91TOtpk4YYxbsu2nZRgaLTISkLU0hxYSTjOFGvYeH5Xg8MWVK6Tf6s4eph5mr2e9fQdS7o/cNMqm25QQ+UbsEZIx+ID3HNb5dTkz6Hz9M6lV+/zXzM4Yo49R5eXp/tDDSBV/0vJVGO6UVOHPUleOP6Ul4Tf2Cbxfe9X59hjW19pip/d4/IjtEu3Bd3dDqn1M7Feb5pJAV26965/g0tTLUy3t7ad3fX8e41r1hWJbavsWS1pYF2vPlbfNLiN312D+ua9DpljWo1Dh1tX+X8nLyuTxYt3Sn9Sl29++m7uBkvKlndvS7nb9wePpXkNPPxH7TLy7383fT9ePkdzLHS+Ut1bfh1/wB9ywaNMs3K6GeFCUQ2VbgAe+OnFd3wl5nnzPUfe9N/r7HO1vl+XjWL7vP7EtdWlSrPKYtjqUOpynDfr1Un2JzXU1UXl008ellTVrj9V8GxPFJQyxlmXBlZSUqIIwRwR0r5i1XU9dusAFFBYaU5oomzoE4FRQILbzxRQXyEUZoJslLTYjIw9IG1nqEnqr/autpdF5n9zL936/4Ec2o2+mHUjbrL+NmKUjAaSNjaRwAkUpqcnnZG10XC+RrijsjT6jPbStGtg257VNBYNtFBZ221vRlYNvtUUFh4qaCwwmooLBjmiibCKaKCxBTU0FhbTRQAxRRIMdqKIJ2x6rdscFyMiOh1K1FWVKIIyAP6V19H4jLR4nijG7d9RLPpY55qbdBWzU7tts7sBLCFpc35WVEEbhjpUafxCWn0706jad837hl0yy5Flb6fsc9Paic08Xi2yl7zQkHcojGM+n1rPQ66Whctsbuv0L6jTrUVbqgWrUsq0zH32glTb6ipbKj8uSc8H15qdNr8ulySnDpJ20Rl00M0VGXbuTTviLIUpJbhNpSPxBThOf4cV1ZePZG1txqvmJrw6Ku5DFjV7zF3k3ARkFbzaUFBWcDHfP2pKHik4aiWo2K5JKr9hiWjUsSxbug1iajlQrrInMhI89RU40clJGen+9K49flw55Z4L73VdjWemhPGscu3cmX/ABCdUyoMwkNukfjUvcB9sDNdefjs3GoY6fvYlHw+KfqlwVN1xch5briitxaipSldzXl5uU5OcnbZ10lFbY9CZj6ndjWNVsEdJQpKkeZuOeSe33rq4/EZ49K9Ko8U1fzEpaWMs3nXyCw6nfsbDjKWkvtrVuCVqI2nv+dGi8RyaKDgo2mTn0sc7UrpiLXqB+0THnYyEpYdVlUdRJT7YPtWem1+TS5ZTxr0vt2L5dNHNBRm+V3JiX4gPOMkR4qWnCPxqXux9sV1snj2SUaxwp+92Jw8OincpWiAtt5lWyaqU2vc4v8AzAvkL5zzXD0+szabK8sXbfW+/wAzoZMEMsNklwuhYXPEJ1TJDcJKXcfiU5kD7YrvS8dntqOPn58HOXhqT5lx8iKtWp5FskypCkJkuyCCtS1EdM+n1rmaXxLJppzyNbnKrsazaSOWMYp0kFaNRP2qVIdQhK0PqKlNKJABznOappfEMmlyTnFWpctFs2ljmjGLfTuMrpMTcpq5AYTHUvlSUHIJ9aT1OZajK8qjtvrRvhg8UFC7oZlIx60rRsGlPFDQWdQOPeq7S1iCmjaQ2Tlqse0h6SnJ6pbP8z/au3pdElWTKvw/kQy579MDvqCb8NDLSThbvy/RPf8AtTWty+Xj2rq/oY4IbpW+xUimvO7TpWFj2o2hYMZ7UUFgPBo2hZ3CT9a2oysMJ9qKCw9pookPbxRQBYxRQCSMEUUARTk0UFhbeaKAGKKALGOoooLYWKKCwY+9FE2HiiiLABzRRNh9BRRAOpqKANOKKJsVjNFBbDCRRQWDAoolCgmiiRWyigsGwUUFg2faiibBsANFBYWwZooixW0UUFhFNFBYRSOKKCxSEZPFRQWdktKUoJSNyj0AHWhR3OkS2lyyct1oTFw66Ap3sOyf967mm0ixeufX6HOy5t9xj0JIcDngetdIVKldJPxspbn7I4T9BXmc+Tzsjl2OtjiscaI4jisKLtifaiiLAKKIBu9qCbHITmtaMkGE0UTYYH5UUFgA+1FBYMc0URYWMUUFhFNFEp2JxzRtIsG2p2hYRH3qNpN0Ftx2o2kWGBjnFFEhHmigCxRQAA5qKAPGKKCwwmiiRQTRRFhhP2ooBQTU0WsMJ5ooLFBNFEWHt4qKJsAA71NBYNozRQWGpIo2hYW0UbQsGziooLFJbBFFEnVlhbzgQhO5R7CpjjlN7YrkHJRVssEG3ohpyfmdPVXp7Cu7g08cKt9TnZMrn8h1nnFOGJH3mV5Eby0n53OPt3pDWZNkNq6v6DGCNyt9iuOcD61waOg2hoQMmr0VsIiiiAYxRtIsHy96KZPI9Ke9bUZWADNFBYe38qKJD20UARTRQBFNFAFszRRIRRUpEBbKirALYaKAHl+9FEg8oetFECtiMdaKAG1HrU0TYCEVFAc1PNIOCtIPoTUOg5fQPI6gcGpogWkDHSiibFhAooLBjmiibDCevFFEWKCaKJsVt46UURYezIoomwwiigsMt/nRQWF5ftUUFgDRNFEnePEW+va2PqT0FaQxSyOkRKagrZORYiIiNqeVHqrua7WLFHEqQhPI5vk79K2MwbgMk8Ac1Fk1ZW5z5lyVOfs9E/SvP5p+bNy7HQxx2RoZuNZrJI0s4Fir0QJ8mgi2DysVAWF5dTRFjwIz2q5WhYaoJoUEJFHJIeEjtUhaCCU46UURYC2nGelBIktDuaCAeSD0VUEUEY3vigmgfDgn8XNAA+GGfxUEAMUfvUEifhh3VQBV9S62t2nZbkLbIm3FLYdESK2VLweASeiQTxkkVnKai6ZtDDOatdDFNUf4qHYz7ka12ZsONqKVOyX96cjqBs4P1z+dbxxykrfBjKUYulyZRqzxVvesHiZMgsMZyGWCUj7nqavDAo8vlhLNKSpcIldDeOOoNHPsoXJVcbck4VFfVnA/0q6g/wAPaolgX/HghZW/v8o9O6C8VLDryMDCleXKCdy4j3DiPsOv2pe3F7ZKjVxtboO0XdADiQoHKT0Iq65MegsIFTQCw37UUAYRU0FiggVFE2HsoZAoJ7VBZB4zQAOlBJ2jRFSVccJHVXpW2LC8r46Gcp7SZZaQwjYgYH8668IRgqiJSk5O2LJx1rSiohSx61VlkiIvdzTFaDW4BTvv0TXK1mfy47E+X9BzBj3Pd7ESiU2tPyrSr6GkI8m74ApXetKK8nBx9tsHcsD71FAIRKZdBKXEqHsaAsjn9VWiPIVHduMZt4dW1upCh9s0UQ5LoyJn+KulrZILD96ipcAyQHAcflmrbX7BuXuVuLqa54HmXB1xJ7jAIpxY17Crk/clImppvl/+rKj/AKsUeWirk/cMaknuOECUc9uKt5a9iNz9xSr1OCxukrCvTNGxexG5+4lWt7jDVgKQ6P8AWnn+FR5SZdTZze8UZjGNzDXPuc1HlL3J3shrh4t3Rl7cyI609dm0/wA80eUiyk2Q03/EFc4/ypjRwodT81Hkp9w8yiLd/wARl+QNyIcZaOmTuHNHkfEPNY1c/wAR+oNufh4bf13VHk/EnzGHbfHHVt/mpjQW4qlnkkIVhI9Sc8Cscvl4Y75vg0xqeWVROuoPFTUcSb8JHujSnGE/r3A2MFfcJHoP71jp/wC7HzJKk+ny/wAm2SG17Iu66nFHiLqgR/PNzC1EEhOwY4960ltTNI4W115M8154z32f5sD4hptzG1yUwna6ofu7uoGD096nHgjkqcjPJllhTxxZlvxFP7RGxaJGO9G0LFB/vmjaRZLad1LL01d4txhOFt9hYWMHGfas8mJZI0a48jxy3I9W+Hn+IO03ZqKzPJbeluLAcVhO1zOdh9sYwfr0rlXkwtxmrrv+50/Lx50pYnV9i/XfxCj22Mp1qG7KSn/3G8FH51Ec8ZOkUelklbKs14/QEBXxNtfRg8FvChTe2XYVcUuGJt3+Ii0vurS/AktAH5SE7sj7dKnZIjgulq8R7Tcmkry4yFDIC09ain3RFolm9SwHuEOFZPYCiqC0dU3UOg7EHAOOetQwTsNt1aiTu4rM0tEhFjKkjccpbz19aZxYXk5fQylPb8ySSoNp2pBAA6CupGKiqQo3btiRKzgcj61YgBlYSSokDpzQ3wQkcVSkYUSraAMkntWDlXLNUr6FBvlxVOmqd3bQTtRn92vKZ8nnZXM7eKOyG0pup32bQlpf6SkQfPVtUGFpQCf3txBxW+GTfCMpxT5aMYuXjNqi3XCZEjXr4uM24pDb5aRlSQeDnFdeOJNJtCEpU6RV7vr++X3/ANZdZT3ojzClP5DArVY0uiKOSZHxNS3GJuQxMlRwoYUGnlJz+RqdiITGLyypzcslRPJUrkn60IloAeIHGce1TRHJ6zVbY2fkT5Zz26Gq8ojgX8C0T5RWUhQ4o5IpARA2q/Hj3Iq6bKuKHTcZPl7S6CQOTRZXaRL1vT5ygXSCOgot9DRQVWRUyCyCQpXQ9AKjc+hooIrk2LGjPqUvC1A8H2rKUpDMIQqyOks215DilM59SKzuXubbYPsRLke1kfKg57j1oc5LuQoY/YeWXTUa+PFLUbbHB+d5Y4HsPU0jqdYsC5dv2GMWnjN8Lgt7sa1aLsjhjMBrsOMqWs9MnvXn4vLrsyU3/hHQcceCHpRS3dOwnYyJCHkIMgFawpw789cK9j14r0azuLprp09hP7PCSuPcz3W+tWIDblns6vkB/Xyc/iV+6n0HrTeLFLK1kydOy/kRzZlivHi/FmcuPqUoqUck8mugo0ctuxIeqaAUH+aKCxYeI70UFnRDxJ9RUNE2OGZS21pKFlJTzkHFVcU+obmnaLnY/Fe+2qOmKLk8mMlJCUE5x7g9jSU9Hik91cjsNZlSpsvGmde2+8zI0a8RSyVgBUuOQQTjG4owB9cGreS4r0sj7TufqRfJeg2iymdAImwlZAW0nYrjqSg8/esm5o3jOEvgSlrtJhNpbcQ6gY3AOApUfz7VG4pKK6osloujCpDTa1lJ3AAZwCO9FmUo0X1q4RvLQnBBVwlRFS6IRLWuDlwrdGGzylPr/tTGLBfql0MpZK4RNFQSOOg44roJJcGDYlSwBzwfbvVuhUDLgU6UKHzY9KhEhvRkutlJ4oqwXBTtV3ZECMIyMlT3HHXaOv59K5OtlUNi7j2nVu32KJLurzWVqZyjHynNeflE68afBFXa4Q7zbnoktny0OBIWpZHyjPUVeEnF8FnHuYJdDaW5LwQlSmkrUlKwk8gHg11YSn7mM1i7ojvMtSpIZKFpzzux/tWu7JVmNYW6oWY9sbUSHCCKr5k2W8rEu5zP6NUrh8E+mKN0/Yq44n0Yjy4Z/wDeA9sVbzJexXy4+56wYiOLSk44B54pyjlOQ5kMJQ0STlRH51akVtkY+7JQggDcMdRiiiyYz+IeDnBKSfUVWjTsOW1J2b3XAPU4qzRS+xFT5EdEsAqBSode9U7m8baIO/2tawtbIBQQOcZNZyXc3xy7MrP6JkoJIXtT3O2sGkMq/cfWrQkie6l6SpTUXOdoGFOf2FcnVa2OL0Y+ZfQax4HLmXQuCIK4jaW2UBttHCUpTgAV52UnN7pdTo1XCM515epcy6JjMJJYj/LkDIUvuf6V6XQYI4sW+XV/Q5uecpSqPYpOrtUyLRp9TSVnznyUAhI+QdzntT+PGsuWuyMsuSWLDfdmOOSMng8V3FE885CPO3cZqaIsIukdKKCwB2igsWl/nrxRQWdkPe/5UUFjyO2p1aUpPKjWbdFqskBFQl5SSSQnj61S3RNUStuuC4EhPlgEj8JUOlDQI0uzaqcmRizK5BGMgA80tJDUVZoNivl1t7aUmS7Kipd2Bp5e5sp449s+1Y0n1LP09C5MTok5HxMWKlKUfjQSCpsk8fUHsofwNYODTN4zUlyXewKLLKXpiR5nGxGc7fTP9qexYq9UhTJK3SLZCliQnKtpV7GuguUKs7rd2gYwNxwKAG6Xl+dsIKz6gcVUB9GaTkuc7gMcmhccknRawU/i2gc81G5LqW2mY6sbU7OK0upznCU45Cc9K4GeW+TY/jW1UVm6B1KVBxQ8jqcj8P8AtSW1jqkuxmXiXdWVSkJjLWX47WFKTwlQ6jA7/WtUuaNIN7bM7t7km6pMdTe11Ss8jkUy4qPNlFKclTLa3pJd3tzrCUeXI8vay5tGSfzojV2RKUuhWb/pOZZLG848paZKBnBTx9OtbJxcqMm57XRmxmvlWcnPrinVCIlukd0XKSUjASR67ap5cS6nPse8XGBHT1IHXHrTVHMts4yIoeYyVFK8Zzmp7FujIOXGdjJGF+Zg9TVWaJpjVMNx3CgrBz1FQlZe6Od3kKishlC8E/tetDstCm7ZXnHD5mXT06fT1rJoZT44HLV5RIZUgHKuiUEYJPpVXVWyUmpD622lYUl6Tgq6paHQfX3rzOr1u70Yunv/AAdfDha9UyYcfWlPXB+lcRoesgdT6hNmtTjpWkPL+RsY/aPf7U1pNP5+RJ9FyzPLk8uNmRXa9qjt+b56VKz2r1uxdDlubXLZlutdQSrhFKS+38KXlIDOcunac7lDsORjnmmtPijGV1zX4CWpzSlCr49u5RFPEmupRyrCL23gHNFAdG9ziSrOEg4yfX0qHxwSr6h7iMHP2oIsT5mO9TQJjiOVuKACST6CqukSlZOQiIjZdd/GRhKc9KXfq4Rv93lju2uF5zI+/vVmqM7ssEKAqWo/IEqA71Rl4otkWKiLDW2rBe8s89KWlyxuPHBIaKeeBcy66ltwY289CeT/AAqrQXZqcNLmnkMqMtTa04UgtKBIT7/2o+7yjH7xomldRwb6ogpDErb/AJWSEqPtn+X5UxCalwyk04lvbfQ042Aoo7HI6/amugtdk3HUytkZWN46igsdmmCVdeCKCTs9hlrCetUm6XBpBWyBvVx8hjZnCl8/aubnyenau41CPNlNlvG4nKwGinBOa5/U16DZ63KlIJcx5BTkuYyOO1WUSd9dDC/E5HlarTDtcRUltkBLzucYV6Y/KhRjbtjcJ5Nq9ILVa32n23HIoCl9dp5TWbiuzNN7fY0YWZbdoSphCm30YUlajTEYqhB5Hup9DJPEO6zJWUPKCfm2rSOivetIpWaeqK4Rkl9gptu+QC24ys7UbFdD707D1cCk048lfMt7Py7QPrW9Ixtn0QuDaFn5VEOdh61rtEk6GjbQTkKXkjkkUVRNt8lcvMtbco7HduOqT0rNt9hmEVXJCm/ul4LQdmOPLA4PvVVaNdqaI5+9KWSXSQoZx9PrUWaqCRzMhydhEdB85XAHoPXNZ5MsMUd83SLxxyk6iiat9pTC/WLCXJB6qxwn6f3ryWr1s9Q6jxH/AHqdnDgWPl9SUZdTkAjHvXMGqO77oUkJ25A71UtRj+vL2mddVgEGKwChBz1Pc/8APSvWaLB5OLnq+WcvNPfL4Iz83YJuCUlKHG84UhQzkEGnpxbjwZY2lPkzTVkts3aYiOwtDRKUp3kEpOBnp1Jro6eL2JyZytTL+5JRRB/COugeWgrVjJCf+dqZ3JdRVQb6IctQ9m1gsF+Y8pIaCcqBB9AOpyQKo23zdIuo16atsN6MGHUx8uKW2Sl3KcBKu4H0PGfapTtWVkle32FiGHAeoAqbKUMXkFLny8getXRDXJ3bfLSPkXtUeCRVXGyydDhqUpXUlQ9SartLXZO2SUlbgbSefeqNEpmtabtqJ8JK0bNyThR70pLgZiTcmxMFxLizjaOSBWVs2Q8gNx8BDCB5gIBJqCpLNCQ+hcRaUq2K+Rau31NDdE/EsEJP6PjhS21FeEpJz3rOwasvOmtV+RDSh/e62lR+YLyoewB6j24rWObZw+hi8Vu0W+zz2Zzu5mQNpJPlqO1Y+oNb+bCXRkbJR6otEMhpvk5zzmtYvgyfU6Pymm0FTitoHc0SlGuSUmjP9RXpqSh9QdIWOEgDBxXEyS3tyHYpxpFUTdThLOFKPIKs8VhttjKkojK4azucZDTKIyVMIScKCcZ961t1TKOMZO0Uhy5LuF0Wt5kM7z5iykZ3HtWe3mze2o0iz2mMPLWtRCT245xTEYKhSeRjqXffgMMrUpWEZrRKjJ2+TI7lc0Pu3SfOSfKW4UNsnGUgcVbajbc+zMa1IguOSfh0LEQqKk7z1p3HS6i+S5MqZKv3D9qaMOT6Iv3ZtxQKQkq9z0qvJgopEU9qNtkrV+JI9jzVGzZQvoir3zVEd1xADHfhX19qylJDWPGysO3wJkD9W3kKzxxkZos021wPreHrtIbQiPtbBO53HCP7n2pTPqI4I3Lr2RvjxObqJb2oLMFsNN8eqj1VXls+aeolumdXHBY1UQ1Stq9oTkUpRsmjkqV8+zcAfSs2i9kHq7ULlrtS0tKxIeyhBz+Ed1f89a6GiwedluXRcmGabhGl1ZhV/wBSR47ZS9IStR42oGSK9jGDk+EcWc4wVSZV4WpGWphcbSFONDzQHMfNgjAwrgj1z2q2TE9tMzxZo7m12EwoKrnPuLy4CfinMOJS0BsZScHjJ7juPas5S2RjFS4X6m0Me+Um48v9BgWUW58tS2luRClTbiEL2rAIIBB9j2PXkd62tzVwfIs15Tqa4BBmpsLJneeVXX8MXakYbbIIK1Z6KIPHpnPpW2zzHVenuY7/ACluv1dvgvcgEA4J6Z457U01YmuOCRZG+F5g+YDleO3rWT4dGi5VkHKfSHTjpnrWyRk2cgvcOKtRSx1HURxjg1VomyStw2uAFeCrjjrVGiEzb/D23uoaacWtJJTnnjNJTqx6HCL3KejJZIDmF9vSsKNVYysFseM4uMgOrUrIA/pUMu2W5laEOKRLIQ4FfhVxVCjT7EpAkoujTrW5LbgPyJxhKk+lZslKhLU1aXigltnYcBA4z7/WsHIYUKVna43NLEULHzOAZ4POaVd2NRSoKw+J0mEcLuDyGxwGyndz6c1t52SPRlHgjLsTb3iuq4R3G3mkPtfh8xAKVf8A496HqZyjtZX7NFO0VKZqGS6HlhaJEdCSr9Ufm/8AsmsVNdDR4n1RCWbW7siSUeVhhRCkrURit+hi42TFxu7E91vY75ZWMbM9cevtVXyiYLb1IULbkub0oUtSflIHQ1VGrTHjl5dtkVTj7flMNJC8q7p9PrTMRScb4TM3ma1n6tnLbt7b5ZMgqWVpxtQDwk49aa2KPMjFSfZFd1i9dFoHlspZaQSsqVx3960gorqEt/YyeVeJEmQ55yitJWcAnjFOKEa4F9zfUI7nPmStKB6A1WkuxblnrZGoVN71S5KQMZyOePTNWplfSu42kXJM5gralLQs9kjjHrmolE0jJdmVG5SJRlbWvOKkfvHg0u0l1GVulyiT0tpaddpKXpjIZig5Cs/Mr2H965+p1sMPphzL6DGLBKfMlwanCitRmgylKUJQPlCa81OUpy3Sds6UVtVLodZGxKd27FZ0XXBFuzENn51ZPsKjbZbckMpNyQjK0jaMZJI6VG0hzRg2utXOajuj7zbi0xkfq2ucfIO+Pc817TSadafEotcvlnDzZXmluT4KCuSlzeorUEp4xsyTXRqhO0+4zdtnmnzAp5a1c/hxUqfYr5XfkfwrRc3S02wl7ckYTtTz9KylPGrbN44szpRsSi7IsE15DrTFwmlJRh/50MK/e64Uodgcgd89K2hDfT6L6i857G4p2/oQ06W5IeWt1SnHXFFbi1dST1zTPThCqdu2c2pJeeQwhvetRCUgdye1UapW2aLl0j0b4V+CqUPQo12Wkpucd9t1nI/Vr25QPfofviuBm1PmyqPbod7Fp1p43Lm+p5015pqVo/UtxtEpBbfiPKaOe+DwfuMH713sGRZYKSOBnx+XNxISM7wATyBxTDFx/HUtQJHSqtEtknamFiUFLB2g5zVZdOCF1Ne0zeBJieQhWE4x7iufKND+OSaLZDs3x0NTyZRJQSdnas2MWXPQEFbd4YX8Qh1LY3kDrx2/56VRL1Ilv0sv10hM3B1G6H5y3VBO8DCkD1zW3lb+pj5qguCca8PWY3+W+rJ/aKQcVSWmXZmf2hvqhd58PbbKgKcEcofx8roUeD61Wemg1waQ1E0zPLpo66xXHRsElOMHar+lc/Jp5LpydHHni+vBnUpa7bcXFO+ZFdB/yXEYH1pRxfRj6p8ocRbspwhRWACr5jntVGqLFUvGo3I1wWqK+thWSMBRBSPrTUIWuULzdPhnH/rmNcvJZnRd6t/zSIzvkuAjuSMpV9xWiwyjzF/uZSyRlxJDnUOsoaoJFqmhmaSFIbuB8k4xztXyk/cirQxyv1rj4c/p1MpSSXplz8eDrY/EK4x222pkYx5TyQWS40pLbw9Uq6EH1FE8STuPKL45OSqfDJa96nN4ZDBKQ6Bu8vPy57ijG/yInj2kPZNWmOohqMw081uDgWSg/amZQ7iie7h9hlrTUSNTx2oTuyBGaSQ6rBO8+m7PFXitvJTpaMh1Dp+Nb7Yp9DpKkrB5PVJ6U9CbcqMJRSjZVfMj93VA016vYX9PdnqFclpT21oeS3gIG7ofp70nUutj6celEvHvSWZiI6W96FJBDYAyT9amVLkqk3x3HB0rNnzG5dwWMJP6uOg4H/3/ALV5/Va6P3MP5/x/J0cWnlxKbLTFafbACnRjoK4bq7H6a4bH8dWHMlzIPGKqya+J3deaS2UkgjHeq/IvwMg9EBHCl+pqjTLraVbxD1RHttsERpkrekgpABwQjuf6V0/D9M8uTe+i+v8AvIvnzKK2pdTFLvdYbS9otySccknivTxxyf8AyOZLLCL+4V5ep3S8lhiPGQR0BTkmtPJVW2zJaiV7YpC5erZNrQgznUNHqmO02C4sfQ9B7n+NENNGf3F+JM9XPH9918F1K9cfEK5zgtmOtUFlzIPlq/WKHoVensMU7DSY4ctWzn5NblyXFcJkMlYQMZx9K2ZikkP7bAlXklLDZKM4U8rhKfqaxyZI4urN8eGWV+ksmmo7+l56nGGI02dnCHXklaUe4B70jmms0eW0h/DCWCXpSb9zWl3Samw+fKlITISpL2/GMEHIAx0+1cxQipelHUcpONyM88Yn3dXtWy9qYUJigtl53k+clOClRJJyQCU57gCndDLypSxN8dTm6/FvjHJFGVNJSXducEV3Dgk9b2kpUEJwskcc1RgTQaWQPKI3J/EKyZolxRc9INrCgnZvUvgmlZDUEatZw01btyQC4s7SB2rFm5btAsqYnMvbdw88I54yCkj+tZXU0atXFm02hCXvLyzggbelPROdNIsAibGgnqP5VLKJIbz2/NaKcfJ3FYydm8eCjX55+3uoSXR5az1VycVkMJFD8TpzbloTE8pDzrmDvWkEtp9j15NKZ2m1Ebwpr1GIXVwMOKdieaA0nK1NK3A444z71lGCfU3llaKrJuTb4caVuLo53q/aB70wsTXKMXnT4aIx+E045uQ5tScK5OMGtlu7mbcG+o31e9Jfi2ttKQ2whXl7zzk9ck1rgSUpWL6lXGKXQ6fpGbb5phJuLwiuNglgOkoznghPQdO1EYxktzjyROU4PYpcFht/ifDdlv28w7fAlkAFwxEkuEftZJICj9BQtLS3dUQ9VK6Kp4i64uNuK2SIuSUgOst4PA9c9ftTWLTxnyLSzyXpI2yXk6ltc19bjmISUuyWwAAUk4HPck8ADk9hRLA4SSirs0jm8yLuVVyRuoJsqRK2SmXGI6Tt8pSSlWB6g8itI49nHco57+eqIh5mGhwhKgAeQDzirJzaKSjBM9HWyezLdjQkoS48FFO3ufc+1JzexOUnSH402kjTbHYIUN1cjzEGUhOEOY4Rx0H9689qNXPN6Uqj9ToY8MYc3bJCVHypKt+VEZJSa5LHkAKZKtinDjHQVVkjlp5tLgAVkHrntWTNUkdt0crAICgaryTSOD/wbIU4RsSkEknsO9C3N0gaiuTGNXToV5ujsoqdQsja2jOAlI6f8969fp8bwY1BficrIozk5FCuiHfKdCRuSlWVEj8P1Pan4tXyLyi6ddCnXbUUaEA3BQzJmA5+ISMoa+n7yv4D3pzHhlLmfC9jn5M8YcY0m/f2/kq7jr0h5x991brzh3LcWcqUfUmnqSVJcCHMnuk7bDBLacnk9uKq2WSpnVmPI+ISTFW6lB+ZsZGfY+lZSlGutGyUr6WaC3rNSLczDYtimUhONqU4Ca470ycnOUjsrWNRUFAfWu3y5VvkXSa2qFb4xx8QRgOLP4UIH7Rz17AZrCeSEZrFDmT7ey93/vJeO6S3TVJHWRc4dzZC3Ls2txr/ANjOOKYjGUekTOU4Tdua47DqLqO3XizSLaohbSd+3arBQSg44+oFK5cU8U1kY3jy480HBMxVxwIcVng5r00VaPJyfJKWW6rbfHQK9arKJVMskW7FvcpQCt55IHIrJwvgupUWfSWsWWn9inEtE5CVK6UtPG0NQyJ8M1LTWqIrY3lxtwbsHBxg0tKLQ0uUa9oV1t2O28sAKdWVj04IrD/kXne3g3aPCabytsDKu47100vY5TbFuK3fLnBHBrKRpEYPyChewjjPX1pd9RhFY1JBiy3mhIWEoznKjgAVnLjk3g7VGT+I2l2HXy9IuHlR1qykZxtAHA9+K5XmtzujoRjcKMT1MEMzU/AuqLDJACMcqz3p2Cteoxm+eCualuNvjS2GkIQ4/sJUEqwcZpjFjk0/YXy5Ixa45I5u8Q1OBa2ChAHzJCutarHJdzF5YPsd596tVysDiFKCXGvmHIqYwnGdlXkhKNGTyrzJkTyvzCQn5UnuE+ma6yxxUeDnvJJvkVPkOzdjjWN6Rgq6KNVjHb1Lt7uhA3KZJWsIkLWvafwrJyKYhFVwZSbvkcabuKbbdo896IJseOsL8hxW1K1AfKCcdM4JA6jjIzWlcpdxbKvQ/wAjQdRX+FqO32xKp7Lc1cVAdUpRUskE/KSe/wDtXPzSyea5tWhnw7BhxaWOKMqpsiGbTIaRsakR1oB4UpO4n70u8kXzJM6scM4qotUewNLWiHCGxqE0246P1ry0fMfvXlc2TJnlcnwdqChBUkWpUUMIGGUrRjBGOtL7WTuXQj77OiRWG2HWyl1fKdvb1rOUXXBKcW+SvLkMnBb+JTzjOKzafwNOO1ndclLYI3uBZ4GU1WrLN0c0XhuLIbZkTGW3VglCHHUoKgOuMnmpWKc03CLf4ApqLqTITxD1M5b7GpHmx22XSd8gym9qUjt+Lkn0FdHQaSUsm+SfHwMdRnjGNWvzMJleKkSShTcaG47KwCh51e1HfOUjk9u4r1q0UlzJ8HBfiClxCPPxKbd7rcL48TLkrW3nIZR8jafokcUzGOPEvShWcsmZ+t/x+Q0YbO7CUlWeyRk1LkQodkPDaX+C6jyB1+fqaz8xPpybeVJdVQI8xm3ujy2UrkJVkLdP8uwolFyXL4CM1B0lyc2tUPuy3cOhkLOVFPTPvVXp0o+5Zambk+aNi8OvDydfm49xvanI9rA3NRcbXX/c90p/ifbrXmNdroYG8eHmXv2X+TsYITypSm/T9SP8bNVNXq6Naftr3lwbSNrjTSNqS7jkDthI4+ua38K0zxQeoyK5T+n+eplrc3my8qD4iZ5bIT70gGIyuQ8oYAWOtd+UlVS4OXGDv0K2W+x2STbJsZ2ZACJLhHyjBSPcj1rKUYzi/Vwbx345K402UHW9pFsv0tsIKUBZUCRjrz/WncMt0Tn6iOydEFElJ83CT+dMNCtkou7qaQQVbUgdutU2BZwkX4JA8sDPr3o2cltxLaf1G6ZzLYWpSCoFSQeuKyyY1Rvjm0z1t4d6vU81bWnMBtzIz2HFcKaps7KW6KZ6qsdx+Kt7RyCQlOD9hXSi/SceSqVDhxRDh4xWTNF0GEt1I4UM49qyo0TMu8TL223BLfm+WB87hJxhI6fmaTzN/dQ9haTtmVM6jZ1tBTGjpW+qMsFwnqM/zFITxyxu33H8eSL6D3WNiiW6zspY+HTc1tlCHEdDxWMJS3deDaoyttHlPVejL5a5TEpSsyystfDqWC4Mc5x6H1r1GDU42nF9Dz+fSTbuHLKvckXpTnlrYWlwn8Ip+E8L5TEZ4cydNHeJo6+S4y3WkeaEfjQF8j7VSWqwwdNmkdFqMiuKs6xdLTgUl1oIHXkjNW8/G+jD7LmroXPT3h8xdWm1rlFjdkAq7mqzm/8Aia48EWrnwO9S+GNitdtM5+atx7IJRt+Uc4zSvmZrqK4HHgwKO6b5MzvMe3OvMt29alIJJJxxnNdLAslNzODrsmFNLGzu3pB6V5pSN7LY2oeScZ56kdhmlsupUJUx/TaR5MalHle4bVju0VAbbfCUjsXR1qjy4pO2v0GFps0VSf6nuW2rXGC3VgkkZCQeQn3rwyPRMkmrwkPhxtxC/qrp7H0q9sxcV0KzftQpn3FSG1bgngqCQRn2qko9y8Jc12GDiPiXAhJWrOAA31J9AKwprojZpMgtVaqhact0omeG5baD5bSkhbgX2G09eexp7TaXLmyRWzj8hPNqceOLqXP5swLVd7kasur9ylr2JWAPLWAEt/6Ujsn0Fe2w44aeKx40eaySnmk5zf5lfLbKHA2khahyAlOT/CtnJ0VWNXRya0tPkSgoJ+HZzuDiiMgZ9OtQ88FH3ZMdJkcuOEWeNYY8EoLq2pIPBU4cnP0FISyOXRUdOGJQ+80x1NZFvZUpMdlW/jI4I+lZRe91ZvOOxXSIV4Q3kKUn4wvoH7RynNb3KPDqhbZjkrV2QDdjdudxZZjvOyHXFAJZQnKiT2A7mmHmUItyVJdxVYHKVJ2z0D4X+BTenHW7peW2pU78bMNYC0Me6uylfwHua8X4h4w868rC6j793/CO/ptB5T3y5Zd/ELWh0VpeXPDaVyiPKjtgcqdV0/LlR+lcrQ6T7Xmjjvjq/l/vA1qM/kQcq5PL8bUA+LSZMJxa3FHcVfiXnqc+uea+hvTtqoM85HUpS9cS8acn22Cwpe1Lb4zt3KyU/wC9UeDIuXyarUYmnXBYhdbW/GQ6u4JS+n8KWwcihY8idbeCPOwtff5M58SXhdrs7JHJcbQT7nABP3xTWCGz0iWpn5ktyKCInlPYA+br9Kc6nPs6yGfObIUracdKjoSRDq/KVtI46ZrRKwskdOPOsTUuNp3gHpVMiTVF4Pk33RmrxJjMsbFI8j9rkZ5FcLNjrk7unyKR7v0A+1L07bneijHbKs+u0VpCnFCGRNTaZOXFZjslQ6HuT0qsuAj8Sq3K/sQELDj4GE5PtS7lQwoWeb/Ee7MX+VORKuCmcgktpyAE+hpLdJvckdKEI1tZisuEW4UgWmfKYlKAS15eQMg55IplZPUnkVor5UdrWN0x3qXxZvOnGI4jwlS3kthLy3gVDOMZ+9VwaOGaTuVE5tRPDClGyG03p6/+Ld4iXWKg2pIBbnzlcpyDwlsE/MrGPYd601Wp0/h8Hjn6n2X8/AVwwz6qayR9Pu/4I/U95jI1om3Rmnm7PByy09u3LkOftOqUeuVcD2AxW+kwy8jzZv1y5+S7JFcuZrMou9q/NjC72y52S4S0PK+GWTu8zzgMpP8AWnIvHkSa5/Arkx5sUpJ8fiFp2wPagnBSllDTfUhw/NWkns9K7mWPH5rcn2+J6B01oF2Baoa40dooOSkLVnGeSTVljmupaebDFVETedH3fUltfagxW3GA3vU8ohCBjIwkn8WSDjHGepqkko9TKeqxYl62ZZpHSBhSrzebgtmEzaR8zCthDo5BSkk43ffvTDrYlB2eblOWty3FUZXrTVv6ev8AKlQWpUSCoJbYjSF58pschPHuSfvV1BNLdydeP9uO2JGM3l8I+ZuK4rupwEn+dUeKPZtGqyy7pM9nyZryHFqbDhbxyE14dRs9JJuIq0XAkeQlzyyrOd47+tUlFpdC0XH3HNwLNsaKn5aFO552IrFRcnVGspRgr3Fz8JVtsaugvl5t7La/LygHHGQU+iuP50cw5j2KyqSpsLx88OGbne5ri2Fsx56UuLlNpQFKPBICsf6RnPrT+fJLBmWePKav4dBHSwWXG8Mu351Z5m11o21Wi4uNx5Dqg6TIcjZSUNDGEAd+Ofsa62i1WbNC5r4X7+5ln0+OEnT+NfQpsSc9bkPNRmfKaWcrcTyogdK6UoKVOT5FIZZQtRXAycluOJASVLz+I4wTV4xSZScm1SG4ceQ8h1lSm1pPpnArdpNUxZSknujwPkXF+aWUOvISN/BUOPvWMsSgm0hiGaWRpNkhcdJSNQTmIdkU8/KX/mEJ2oCe6irsK5sdTHBFzzcI6mfT76WJuzXPDHwig6AQZKlGfd3Bh2a7+yP3Wx+yn36nv6V5jX+J5Nb6ekF2/djOl0cdP6ur9zQkBaSOM+nNcXhnRpowbxN1FctX65bt0Jpa7VBJYSpPAW5/7i8nsD8o+nvXtvDdNDBp98vvS5/Dsv3OJqMuSeZRS9K/2yasvhu7B2uuyviCoZAU2FceldDzL4Sors2u3KyeZ0Yy/ICzCYIR+IFG0H3qFkcVVlZY1OntRA3XSbLdxCw8I7Oc7Gyk8+mKZ86W2lyKLBHfbdIzzxLiJtl9TbkpKHkNB1w5wSFDKRjtgc/et8LbjuYtqFGMtsSqIgK8pS8hRxkZNMbuwnt7nCdHU42lSeTjkAdKsn7kUV6V8rxQR0rZFbJK1PuxRsbA+Y1WUU+pMZUavoWSH2n2n3G0JUkAnPP2rlZonSwS7HuDw61AzGsVoS26FoMVscnp8opO6NZxcm2XJzUTLwcbcVlH8qiyu0xrxFvUluSGIrClF5e9SVdCkdqSyu+LOnhjXLRkOsJblzS44gJjOoBbebPJHvVcUa68mk5N9ODMrkLxDlIaS43H2YcbfLgAVXQjDFJW0LOWVdPzNE0Lpq43J1N1ucVlq0yGShyMpOVSFHuAfwpPXPU9vWuBrNXDDeLC7ku/t/LOhjhLMlLIqX1OnibqSPoTRaoVq2QZUlJiw2WRgMp/bUAPQH81Cl/DtPLWanfl5S5fx9imqyrT4tsOG+EZ5YNCv6ssTS31strQB1J3Ee9e027JXE5KlvglOi2S/CFhiztlaN6lj/NSrOSPQ0w5XyisYRpxomvCrS8aLd2bZGaLkh7HyvALykc1n6pyT9jRuGnxyXS0bhebXEse1af1UFpJLqWVpSEc9EpIySa3yZeOTy8svlxbszvxA19axp7y4zv6EgR8rWrqVDuNvckkgj3FJvdkklRz5+bqJL3PL3iV4hQNQxo0W1wXEPRHlESGRhmQgj8aged3Tr05pyONJcs7enhLCuFyU9jUEa7Ry1Nj7ZCTy6PlBHpVHglid43wdNZ45VtyLn3OLhRGWUpQVpPIKVjFWVy6mbSjwl+p79f0o9bmVPJ2pZVkEOfiB/tXjNh3Vl7URUKwpUFhyPtcUCQtH9azlLtZtGCSbSO//SLBSnzwHiCeiufyqOSGo+x3hpbsL7bzDi47jagWwk4P2qrg6oFKLZtky3RvFPRTMb4gxJK0AhezcpJ4yMduRTumnDLjeCfFvj8DmaiE8ORZYdV1+KPE2qfDfU7OrbpGm2WewY6lrclOJ2hxGflPXoRjH39K9DGEMWPamJxyvLNNqvch7npsxQpiKlbj+0ZXuyBnms4S3cy6D84KK9HUq9ytM2zSnG5SEBwpBGBgfam47Z8oSblF80M4ipKkFZYBb9VDHNaOMbpMzUp1bXBaNM6bl6pkpEeA0iI38r0x3JSg+gH7SvYffFcrWamGmj6persjoaeDyNOMFXubRpbTdssVtEWIwptROVuFWVuH1Uf6dBXidTny5p75s72KEFGkixCKgoIQtaSP3k8Gkbd8oZ2p9GVnXL9xs+m5BgSAm5SAWY2f2SRyv/6jn64rp6DFDUZ0pr0rl/x+IlqFkhjex89jPdIaS1NKmwoLcdElwjl9Q3ADvuNe6/sSvacCUtTBLzKZ6n014EzTHQt+e3sUgbQGcY/jVPs8ZcpmX22S42ohdW+E8/TbEt9tDlyZQApIQMKIPBAHtVZYnHlGsNSpumjMdSeHF1LDcpbBYcSUPJYWOSknocURnsdM0cVNel9DJPHSIl/XlymNMJQtOxDigQQlQQAUA+3pT2JvbTZzsiW66KbZmDNW229jZjIx6VeXBRK+pKyLU2hBaZjFSxxux/KqpvuS4pFJumllsrL7ySAsnAFNRyLohaUKIlLS4ywThCRyOa24Zn0H0a/PRP1oWU46beCaxljT4Lxm0enfDbWN0/Q2nG28uJLSQcKyrhRByPtXIyRitx2MblJR4s3f9OC2KU/LaV5RRvCj6UmnS6mri31RmOrdasNvvSyC4F9EjPyjtSTi5yOhBxUTJdRTYku4tyI3xjpkqwplrJKj6Y75p3FuSadKhTLGCaavkufh1oGKtSJWoYDbktK98WOtW4Rz23difboPeuLrvEJNPHp5cd37/L4DOm00b35Y89l7GsN2zzRI8whLQQSd3GPfPtXnEr6HZfxPN+r4burtZpkx/wDxsUEsQyThIQnJP3Ucn8q+iaHTPTadRlw3y/n/AIPN55Ry5LXJrugNMtWu2KbXGcbfdAC2ZCc4OO1dBKkKzkr46Frn6alIajRVsbI6t2QP2T/z+dXjG3yLPLSbiS2h48KwQLlMct6Yq21qSmcPlcICR8pUDnb7dK1kljjaZy9VmlJox/xy8Z1W6Mylbyiy8s7VxW8qynAO7PT9nn70rCEszsR8uWSNo8u6u1jMvct95huR+j1fKUOHeCM5yRnrnvTUIJcN8nZjHbFNR6FLuExzJU3lCVd0qOB9qbhBdGUnJ9jrCuc5LZaHkutDrvAP86rPHjbvmy0Mk0qVND+NcdzXLgbOeUpZ4FYyx0/8m0cnH+D6SXSeHkFt1QcU4Cg/PhIrxcntXB28cdzplZas0+T5ykLKG2/mBS/2rC0xymkPrRGfkyUoUrdjnPUGrWkZuLfccXZqMw0oqfBdQem3PP8AShvdxRWMdnNldk+Kt40xcobVokl5iGordik7Uubh+DgZHXP1p7TaFZIuUuL6fD4i+fOua5ZqNq8XLHrq0NWq9So7ki4tBLkNhRStKhjckkHKRz1zV5PPgk9ybiu4p5ePIltdMz7UXgkzc9RzBZJbjJR8xir4SgBICfm/ayetNR1EVH1IxufuVy/+A9+nWwtuhtbP7BSglxteP2sfs9s1pDURTtBN7lTRn+lPBHUMme+i9RHrcxGd2K+U7n/3Qk9kn97vVNb4hDBH+0rf6L/JrpcMs33nX7moxrau0sCImOI7LXCW0DASPpXi5y8yW9u2z0cPQtvY6stqkKSG0YOeVGsHx1NuX0Fz0y4jwYW6FtEAhI461VKL5SKuUl6W+BEzwyf1K0zPfekxmygNtoPuc5x1+b+WK9hodPLBjVrl8s42fVY5SaT6Gr+FvhqiyW/ezFWp8Anc4r5ifp9K60IXycrNn3Ol0NehMlhhtteUqSMcmtVwuRejq8wl7hWDx+VaWmVaMX8YLnD0fEkSXEtqkbdkZC1ZK1nocZBIT1NYSgnKhnFJpHkPVUIXG2ustFPmkFW9X7aupz9f50xHh2Ve5or2hLSytC0rUC7naUq5KaMraZfFVFsdgtwlrLpBbBAST9KyXKLcEDc7VHuDb3kKJURnae1XUmiJRTRQXtNFMo+apKG84AWeTTKnxwKOHPI/i6WiOT0tPJAabG7Pr6VR5JKNotHGnKmaRod7Y/a2WJaoqGg42oJPzEBwn+tK5PuttWdHEnuSUqo1bxGvj0K2W5KVyfK8rJc9cdAfvXK+A/FdaMli63fvsb4duI5KlFZStCgAAPUnsPerZMEccd8pUgjqG5VtL/o+yW63YeUvM5wYL/ZIP7KPQe/U15jV6jJl9K+77fydPFGD5fUnf0WouJ8h9WFHHy8mkVk90bPDXKZ21K5NGnp1tD7z8l5o8IO0hnook+/T867fhWmWXN5rjxH69v5Odrcjx49m7mRV/CLSkbTRU2GBLRPIabjKUCUq65APXg5z6CvfOPmPqeYlLyVaTtHozTVjkLlgvBLcZtPRSATgfXmrygoq0c2WZyJPVMq2W+2lDwQ31KSvjnHNZWisZSu0Y9crtbWNBXyS7cnS268A0ZSfLSpXB+UnqBxzWOStu3uTlbyySSPn1rbU9x1TcXVzZvmtpcIbSg/IBkgEHvx3710cdQjSRt5e3iyAbLzKxtl5RkDYDxV3tfWJZbl0Y5uE1+eG0FtpKEH5dnH51lCEYc2zXJOU6VLgSt5x9xIdQhYGBhJAxUpJLgq23945Liydx8t0JQegUvBqylGuSrjLsz6N3Py1PKdC0tNqUcFato+wNfPrPXqPA8VBjOxAfO2qCd6lZyPXoKomyZJdx2iY2zAKEygt0n9lO049qsop9ikpNMrV+uEmLCdewmOynJKTypZ7CtsWHzZqHuY5MuyLl0Mxm3+Xb0mRLWla1jKtiQNxP0r1ixRSUYnAeeTblIpateXGFPD8JSYrrZyHlNZUM+9XlpoTjUubIWrmnUePwNO0R/iguFrKv02t66vJSER3IzYyVZJO4Z78AYHauRqfDHKvKe1fFjeLWY1fmcv4I2nT3ii1qJqKgPSI0t5QKkr+UoV3yAfTvXn9rxyauzoSSmrSLPfW5Gp4EeGw+4l5LiHdwV85SMjr6Hnmm8dS5fK+ItJvGNr7ody321qazKy0nAfjLaDi3MkAfNn5etY/Y9O21XPz6G61OZcvoOWPDm3w2kEqdbStQcS+ccjI3N47Hrg1o/D8E43z+ZRa/LF1x+ReE+HmmnUpDkFMhxokJU6s5Vnsr1rSOk0sWko8r4/X3KvU55Jty6in7JGjuOFsCOkqAwkdscADsBXVTT6HPprqPtO2ZywtBDcsOoWSrK+eepOasvQ6TJ5kraHd1miHuL7iUNFQ2rz/AANT1bAimNTtqCwg+YM43CqKVMnbaPIXixrI6v8AE+9JW8ny2Xfhoo7BKPlUPuoE05tpbikJc0Uq5RXEhX6vCh83/PWoXJu+BECzsRyZKtjb6jypAxn60OUuhKUbsPUEsuwwAD8g6jvVUnZa0uhTXJEhCw+ErCQefStUl0MpN9RhKZcvcpt5EkMJSeUlPJq6qC6GH3nwPJ8R1lAJV+sQRyO4rNOzdKi66etiY1tiXNZZbQSsFaxyOcml5zpOI9jhbUuDbINj/wCvdHOtF7chbRSXtv4DjjFefy6hYXul19h+ONuXHQoGjtGW/T1set0VxPxa1YUp7lTisnlR/p0FJ5s09TLfP/oYx444ouCZYGLTIiLbbVHcCD8m8tkJCv8Aneue4SfLGVKMeFyWG1tNNqS48lxtLYJU6jlOB1J9qzWKTdRV2XlkilbZLP6WghqVd4s1yQhxDalx1JBG0dPr15r3ukxLS4li79/meQ1Gd6ibl2JLTvh+kakauz7CPkGG0MEgYx6fT+VdmK7s5E86cNiNFuU8WmAt0JwkJ27DwSe1ZZG9ompJmZ+IusbU5p2Suc+GGWUpWpXBUORyM0nKTSocwW5qkePfFvxRHix8DakOJttuhZQymWv5nT++doABPp71Kcsb8yrOnj08eYNpNvuZ7pnwZm6nmPr2rg2mE2qRcLsFbmI7KQSSP3lkA7U9++BXQxahZe5nl0zwpWuv5FBmgqnO/DQ3Y0HzCpDShvKW8/KFK7nGMn1zTdwfKYrtmuKH9ziLXCTOZiJZZbGFqbJIOfrSuOa3eW3bYzkg3BZIxpL2I1MiKn5kvgLI+YKSTzTG2b7GFw62J2tSMrUfLJ7bVGjmPBCSlzdHvyXcJQ+R1S4542uoY8zYfTnnFeGlhjdnpY55L0/rRLxleSGpEidvU4DtT+FI+qfell1caGnVJ2OTq2EoLZw2p5H4lFITuP8AWreW1yZrInwVi9XORc5AU2j/AMLHSSpsIzk/X2rraPGscd8urEs8tz2xXQzC93RqfcnsSCtAIG1RAGfQYrtx4XJyJL1UiNQ5AnPtWqEGnZ+1ReQRjA981hklKEfMl90axrFJ+WqvuWSw6egWJDUgwWH52MGQzlKUE9QAe/vXE1Gpy6i4bmo+38jMMWPF6lFX7otMBbocS60lScnHGQR965E6XUfhbaaRodn8QLtaWGWUOw3fISUl1wjftznaTnmso5XGNKzaWCMpXKjvbvEWc87MivSW5Tboy4kK6A9gR2qmPJPHLe1dl8mHHkWy+hIv6sdVCil1/AjElJRkY9yOnasp5806jfQtHT4otyrqV2X/AIrrk0oph2VbzCUqBlPqCUrwnCSAMkHPOPTivU49JOk5y5ONOk3SpfE1rS/i9pbVUFFwF5SwXmkeay8rYpC8cjnpzWbcsUts0yvlb1ui+Cgak8W5ljmlyFdi/Z9xU3gALKQcH3z796ssbkb0ox5XJVdY+OV41BIsbkR9uOuNuMlZz5b5OMBI7YA69yaajjr7xgo88cIukPxPhGzSrgB5SorSnlJP7WE5/nRW5pFZwePnseS51+TJuSpK/wDOdUXFHPIUTk/zrsKPFHGcuSZiawddbCZCA82BgOJ4V/vWLw94jMc/FSRwl6pQ5JbZacTtJ/a+VVU8tpcmyyRk6TJKZeY7TCMnKiPwnvWaTNLoipt+Q9FCSwEoUD+EdferqPJnKXBA29Hw0n5VEpUchJ7VpLlGMeGTE19iRDw4pKn84z6ViuGNonrLYn9Rw4VvmocZhxpAcaKflL6VAEpx6bkg59zXN1Wp8lNQ6v8AQdwYlOt/Y9T+HzLLul3Y7MRMVDB2gA8dK8hJObcpO2deb2NV0Mu1BbZNgvrymtjjCiVAHhScnt9KaxJOPqKznJ8xLdbZ0m52ZyMFoW6cBsOjqT60SS6IrFyTuQw1iLu1p4MRizI3FDMlhtJKg2epCRgnPf8ArXU8M0vmZHmn0j0+f+BPWahY0safLOtinx35ilKy1ySGknAISQAkeg6V6C1j9TPL5pSUaSJ64eLH/S9gelRYSpcltkuNR0rAS6c/MkK9QOc01jnKa4EsGnlmd3SMW8Pf8RD3izcZNsmPFyXFc6tJCQ5lZKTgnnaBjj0p2OOVXIdnHDB+jn3M6/xD+M8CfbEafs8sypKnlNzDsG5vYfw5PqayljcuWNY5LHe3qzJfDTRF48VtSIhRSuHGjYVLuGz5WEn0/eWeyfueKusKS46FXld2+pq/+IjV0Pww0RbPD+wNqAljz5mFZWWgeCsjqpxYyfZGOlaeTFqlwU82Sdvk82Q72v4glUVxK1/KlQUePrmonhVdSYZnd0PpLUxgr+NbWmKruk+YFfkcCsYuD+4+fyGJRyR/9xcfn9CKlqt7TqlQVFIUAFecM4PtTUfMaqf6Cs/LT/t/qNHVJWsqEzBPUAYGa1VpdDJ03dn1Gn6TecgtlT7S2VcqUhPI9uteEaT7Hooz29yo3WyMNLS4tIkKa6BCsKPPTmsra4QxxKm1ZQ9U3Rmzh2W22ptaDlKSQdx7Anv3prT4nmkoi+eaxLczP9Ya0ulytiM74VtUCkSkOhDaj6cV6DDjhGVLlrscvPOcoW+IvvfBW9MWqRewl9dxea8kcORklQz2KieOajVZo4eFG79yNNic475Spr2/c2O0WGBbrTuYkuJnv4Dsp9Kcuf8Acf6CvJ5c+TLP1LhdEux6GOCEYXF+p9W+49jWN6AseTIU+kDcpxvCgD9+tUeRTXKMvIeOXpdkmILtzywbgonG4IHyAn7UlOahztOhHE8ircQl5tEi0tJP6lxSyR8rmcfWtoTUxTLieP2HGm5saOob2gVkn52jnb/eoyQlLlMrjyQjxQXiLNlJs6bdGcXIlzspSWXNnlo7k/Xp+dPeG6dTy+bJcR+v+8lNTOSh5afL+NGTwrjF0+t8PypzstKiFRfxIB91V7B45ZEtsV8zhRywxSuU38v8kW7r9zz1FltpkHkBfTPpU/ZaVtlPt7uopI7RvENc5xlEiQqApXCnGilbeAfQ9Kxnp9qe1X9RiOqcmlJ7flTRcIt4sE5vaJ7ri0fMCtskqPoPSk1izJ8xHpZ8DVKQz1BdGF6ae+EmKW6tYawoqBAJ546YwKZxY2p+pCWoyxeJ7GZzcLnsDjnmDdnAAroqBw5TCjajcZikhYIx0NDhyQpuiMNyNxfSVrIG7kDtVtu1FN1ss1rbdQ3lMpxQP4dxyB+dLSUX1Q3jnNdxvqGfcWQgNujCR8xCRiohCBeeXIVqXqSQFJUt1XmBPYkZphYl0oWeR3yyQ8Jbuqd4mW5MgecykOvLS4SUgBB6/cildcvL00nHhjeie/URvk9a2mBcJbYuQXb1NJTlTe47+nTHavnc5xbad2e4UJcVVF40ZqadZiGZEVS4ayVLCBnH0qdlq1wVyJNc9Sy6p0ZF1jCVJbfXb1qTnKUgHOOhqYJwYo58bTJ0XiV4eSnG3F/HQkAhx4HKsD29R6CtFF5HS4Zdqo31RKnxEtUK6s5adbkTdqFZyQABkA8e/evZYcPlYlGHY8nmy+ZJuaM18X/G+16InRmbaUGQ5uQ4HtqflCjhaQM4AUMdMnkdqaWN5IbaNIKCVzM7e8eY86M65KjIeQqOptDMdG9CiDnAwBgnJ546fStMcPLi03yMNwTisUePhzZhOn9WT9MTlz7Q58E8VkkY2g5J459iRTXP3ZMT45aRbNDaNvnj34hPPlkxYmUuT7g2ncGk/wD+lq7D7nAoklCFJkpvJPk9swdLWHw70olm1R1wbVAaU6+68OVYTlS1HqpRx1+g9KUhkceJMayY1PmCPA/iJq3/AKy1dcr3PLkVyU6SgJXnY0OG0Af6UgfxpmLlLpyLSUY8PgqsBl24qWhElqUhPRPIVj15rWbWNW1RlBPJaTs7zEPtoCAGkhPGCTk+5HQVSDi+S8k0qIohLr4Q4tKfVTfP8qZtpWkLum6bJFyM02QhLjSkgYBHesVKUuaZs4RXFo+qEm9iLFU06tKFY5wev2rxzpnUjdmZyZsy6T1trKmmweVrAI9vpSk3GPKOliUnxJlL13Ybcbc6y558xbSv8+A4DweoIP8AOuro8koLdwr9xPVYIT9Lt17FU0cG0NlmNHdixFHY/FuKkLS6QeFAFJwfetNTKSd3b91fBGncVHalS7qVfwXpydEbYbbEdqDHSoqV5bqUoJHbGPWuN5cpPc3b/E6EsyilGqXzQyTerfNUltLkdoZKcNq/4Knypw5aswebHkpKkOo91SXFoiqbYIHBWSd317Vk4urlyaRlbqNIfPzprUPziiKlI4K2m8q+xrBYoSlTs2yZskY2kinSbm7cJXmNFaHANpKfwq98GmNigqfQT3ym9y6lgsTUtLKnltxlstgrU4taUgDvWDlFtRV2bxxTa3UqObWn7te5hkOyhBjvKKkthQJSjHygY/5ya9Xp1jwQWOKv+TlZceSVyk6+HwBfvCCO0mKkqkuodbJKVgoOc5znnj+1Nz1E4/dMcWmxTb3srt70VHtMVESFamlOyRhJWgqKuM5Cj0OaWeSf3pyY9HFjS244r/fiQekPCCVqLUxj3Nt6GzgAtLQEjaR+znOfrTLzVFbEJrBcm8j49jVNVeDMXT9sWYSuBj53FAkDHJyOlQsrXEkYSxp8wZ571VAlWRchtD6X2grO5tWRmnsbjPmjn5lPHw3Zn7qpPmKSo59qapCNneG26+SD8oHaqPglcjlthTJOAc9c1XqWLFZ562/1bmSM/h9KVml2Gsb7Me6llJaipPAO3vWcFyaTfBmF1nEqWeD6kV0YquBJu2aZ4Vaech6YF9bSlL0pxSfNUjO1tJwBk9iQT9hXnfE8ylPyPY9B4fhlGHnGx6O1a640mGJmJylkqQwxkFHuTXmcmn5uMePmejx57W2Uufgv5PTegtLNLt8eW8HQpSRnzFlRoUOFuQtlyU3GLNCcgsKikFIIIxgUOItZg3irZ3IsBcCKzn4hzzgQnPQ9D7cfwrp6LTxyXkn+Blk1E8bSgvmVTT70l2UW5rYfcQva4WWwVcjt3GOma7Cwxic/JklPlHkj/EqwLT4iPQFhuZKDSHXJCFqVkLHCcHIB7n3zXVwRqPDFpvpx9TLRcH2myhEl4NpHCE8BPtWzxxk7aKrJJKk2WXw28M7v4s3xqGht1m2M4VJuCs4YSewzwpR7J+54rT047rqZeqdKR7d0XouBoW1w7TYErix2RkBf41qPVa1ftKPc/wBOKXlkUk9yGIwaa2Pkzj/FF4i32x2JnTEG6oblTx8RKyvpHSeE/wD2V/BJ9awrBLrAZUtRF8TPMsC7yI+4ym2XvlylaE/3FZzxxf3G0Xx5pR++kyKuCm5DqlRYwYVvJLjZPSmoXFet2K5NsncVQu1sw33/ADJMmcxwUl1lCXgpQ7bFEZ496jI5xVRin+n6onGoN+uTXyp/ox4dRXK1h9hh6M5HkI8shUENKUn3wOD96y8jHlqUk7X/AO1mz1GTFcYtU+Pu1x+AwYnOrbB+HbdT0SXVJyB6ckHFauCvqLqcmun6r+T6R6ivzHxiFpbW6cYUptOR9q8hK5HWxRUOSq3SYosOqi733nUlKGshO1X+qsoY7mlLoPSn6G49SJtOk5MaAZEwMNOKzhByoKP+o0/lzKXph/vyE4wcFcixWK2y9y1LjxpDJ+XK2knb6ds/nXLntXR0Pwba5imVXUMu2sOlmXa8krKNoGU/XI/lVYLJPmEiZ+VClOF2QDdhaugKYjTVvSk/Ntbzj7ntW/mPH952K+THL9xbfwJS12Bhq4ISq5qdKMZ2J2gfnVJZG192i0MKi7c7LJqeRGiWf4aE4ZL7pwpwqAUkUqkt1sYblJUkVjTdphvSyiVFkPPA5CG5SUkj/txVc05Vw1XyZbDii36k7+a+h21fp15biITLSnob53PsuNkvNo9ikYPP8BT/AIbTl5j6rp7WY6vHS29n1vqWnROl7VY0vqZQ45hGUOuAkJ7kDPQ+1ei3Zpq5I47jp8fEWapGgTL5btgOxoEJDiBklOKv5UX94WedxbcURF00zPafYU6W/IS6E8DCgCOmewzV/Jx9UEdVkqpdyftjESBGabaSxImKWQt5agBz2SfQCtWoJcIWcsk5XJlN8Vn5UeItYgF+In5XHYjm4o9z7UralKk+fiMKMox3NWjyB4jXaDa2i3CeU8rfghxOFeuafwqbfqQjm8uP3GZu3dDKeG7GVc/SnGqEWSEF0okbSAdx5NUkuCUa5oDSEKdAemy43xYWfLaRzhOOpNcXVZ5xajF0d7Q6bHkTlNX7EHqm2t2nULjEdpMdBbQoJBzj1/lW2Cbnjtsw1OJYsu2KroRuo4Lky3gq6gdfWtccqkYTVoz27WoxmDtQpQPNPRluE2qNb0LerVH07aLJNjoZPkIDji1KyVnnPoOvSvK6rHleeeWLvk9Vgy4fIhikqdG6eH+m0Wtt2Y5PC31KSEeQAQUjoM49O1IRlbqMRquLlI9CWbUkaFZUABasgfKSCR6jj0rSUWlyJWnLgib/AOLDNjQUpbL7JTkrzhKfqTScottRXcbxwUufYwrxQ1q5erxag4qNa0FReL6pgSSn0CSefpXex5IYoqCt/gZvTZJJybS/Em7xqfS9usjlzd+IdSlsKW9CWc/h7rT0Sc9+/FNKcl14EY41JvueLtXQ7nr3VlxuSLdJYbfcO0FRcWUDhJKj+I4FNfaceKPMlYfZcuWXpi6OehfCm7a0vhhMlLEGMsfFyljJbHoAeqj0A+54FNxyRmrQpPHLG6fY9h6a0/E0Rp6NbbWwI8VoZ2FQJWT1Uo91HuaoqlKiWpRiPDfXIsZ14hYZaQp1xSRkhIGSfyFXlCC5kykZTk9sFbPJviDPm6vnyr5Lff8A0rMdHw9oeZJdba6IQB7JA6HrmubHKpZWkvT73wdWWCUcKcm9/wD8WuSitJuLLj0OVGdYkDGUPslKhnpwabflupxdr4MTXmpvHJNP4ob3OyNuQEpbmzQ4OSypvLZPTqCMfU1pjzNStxXz7lMmKLx0pO/auBs5ou9wUIecjoUlSdyHG5CFJx6KANarWYZelP8AQylos8UpOP6o6PXptH6i429RXgf5LuEkffOOPShYG/Vil+aKvPHplh+TOLGrHILQYjQI5ZTnaVjco89z3NTLSqb3Sk7LR1TxrbCKr4n0Gnayc+GQIsPzVD8aQoJUB05Hf7V8/wBtv1M9XbjH0RsqD8ubeJ5dkL8pY+VCCEpDf2TTylHFCl3FFCWWXq4JOHrmPZYqUvrEle7alDIJG4e4/rWWyU7pUXco40ubfwIS6+JlycbeLLDUdTvCQFAkDuePaiOCF8uyJ58iXETna48y8R2gtTsfzFAF8JHT0BJ6+9ZzcIO/Y0xrJkjT79ydYtws0x15a3JqwnY0h5OEc8npwaxbeVUlSNlFYm23uZD6juF1uYSqM23ATG/ClEcIA++Oa1xxxw4lzfxF8nnTdwVfhRTZLt1cJclPPqx1WU8Z9jTS8vpFCUllSubZb9HsF+MXyTujp3uZR8/Hoe9YSxucti7mkMqjHd7fA0PQcubJkiY7H8xLp3BpQyWx9fX+1dyGnxYYqK7CGTU5crtm3w7XHmQ21JiJCs7ispHNMVaqxJzp9CRa2RPLbSEIbAxR8CtrqM7+G1xC2g5ITuO3qaiXQvCXJnLjDOAl5l5K20lQXgjOO+ew6UeZNcGrx47tGQ+IfiVa9OvyGC8+8t4EOJbVgD7/ANKIueXobOOPErbZ5Z8Tri3eL6DH3hvaCd4AJUevSutp1KMfV1OPqHF5Ht6FWS0GkgE4WOmK3bsUHtsmLRJBVzjvVJLgEqPVvhq3NGjbcwHW24boLqc4yVK5OTjI9K8hq5x82XHKPaaHHKOCKT4fJStaWNLeoGkugoWlGThRIPzHoT1FdDT5N2O0crVQ25afUib5G2xOBlvHamIPkUkuCiSd6FBBOUKUE8+hNOJdxN9TSjYv0gpj46I3CSoANvLBPTgZIrzbntbcHZ6dY96SyRr2bPT3hFaoFq0skTbmiS2hG9Li0jKEnqMHntSyb3bqo0nj9KSlZwleIdkTcJMaM4kFpW1tKxgq45+lazU5PgwioQVydmK+Keqk6nAiQ0TJHkK8x5oPhKQrrg+w603ptP5X96bXw4Jnm87+1BN/J1+ZkXiZAk3a0RHkuraeaQQ8EpSsYPTrzn3FN4cihk55T6djTNilPHxw117lOkeId/YsTFnkXmV5CSDhpCVOLGMBLhHOB+79KfcI5Xe1HMjKWH/k037UWrw1t+pdcTxF/S0hi3xsLeecaDaEA9Nvqo9h9zxSktLhbuMFz+J0Ia3OlUsj47dD05ZGYdkt7UK3wULjI6FSt5We6lEjlR9a2jjUFV0KzyvI3Jq/1JR5xiQyUptrLLhGQUEpq8XKLtzdFJbZKlBJmC/4kdYizWiLpxpTjMq5frn1NrxtZSeEnuNyh+ST603uclxyKVtfJjlukDUtuREduSoimSfKQp7eoj1x1FczJH7PPeoXfwo6uOX2nH5bnVdOb/yXydJjSIcSM9qRm6RmmEJy9FS08hQ6JLnUn39K48YyjJyjicW37tr8jtuUZQUZZlJJd0k/zOV3vVyukSTZ7LOirgoQkOGUrbvPUp3bOQD34zVsWLHjay54u/h/Fhmy5csXh08lS63/ANclLhWpU+V8LJthS4g/5rMgdDz2611Z5di3Rnx8jiww+ZLZOHPumR9z0dNfUp1iNvZbxlSnfmx9CM5pnFq4R4k+fkLZdFkfMVwvic4umZCGQDAUrPOVtKJP3AqZamLf3jOOlml939D19dXFwIrkttZL6RnccDPbtivI4/XNRfQ9DkWyLmupUXbw+5dGI+G0od2lRCOfpmuosUdrkcqWeW9Q7FtntIEGO2htDaHUBZShAwDz0GK4jb3s78Yry1x1RnNwu8iFfY7TOxCEN5ACeM89uldOGOMoNs4+XLKGVRj7Fht+urokkKLDgKwg7mgMg9Txjn3paemhVo3hqsl06JxzVM6VYVQllryWUKUghsbs/Ws1ijGW5GssjlGmQMdbrgCy86CU5ISsgE1aSS4oiKbfViVyiy4khIJBKeSeee/PNTCNswzScVwaPY2kvsRmeUIdUAvYcbgBnBpvSQj5jk+whqcknBI1zSVsjx0sIQjCR2rrbU+TmuTXBpEZflx07UpHGentVooym6KrqC8PxZ+1IQQT+0n2qjVmsOhB3LUclVqW/saS4EkjaCP61lFOV2xqVQqkUi336TqWBLVM2ZSCj9WCMjPQ80tlbguB7HFTasyHxegQrDHQ5HhR1qC9365O7nIrPTznkntcmh3PCGPHuUU/meZNSylTr/KeUlDZWrOxsbUp46AdhXrcS240jxWaW/JKXTk4NxmykKIycd6s2Lpk/pyIyJsZRbSv9YklKhkH5hxS+Vun8hjH95X8D0ppCUZbz+W22gwlQaS2MBGOmB0ryeojtS+J7PTS3yb9uhXvEMuO3mEXXVuqMNJKlYz+JXoKb0aSg0vc52vbeSLbvj+SMkx23bTtUkEBNOrhnPa4M1ubSUykpHA81I/jT8egg+ptjlojoe43hIKfl3cc+1eOWWVHuHhi2WyM4qDADjKij5fmQTlKh6EHqKpHLKUlFkzwQjFzXVDfW1oi2d2C9GaCVyWUuLzzhRPJFO45yfBzpQi1bR5x1De5ds1LKDC9oWorc3DdvxyAc9smu8/XBJ9hSEY4pvav8mZ3rUkzUE5YlFIWVk+Y3lKh/GnseGOJWhLJnlmdSGtkW+1fosZuU82246gK2kZOSAe3vWs4xnC5IyhOcJpRZ7zhWWPD+FtrYIispwE8ZUe5Ucck+tcmCWGD2Kjr5W8+ReY7JOXBajKAZBaGOiDjpUwm5L1ckTxxj93gQjdHeTtWokqHKjkitOqMa2vg8q+JDjWoteajulyisTJAkLjJS4klCW21FKQBnjgfmTSzyZI1CMmkNRx45J5ZRTYXhPpaGu1O3RlTsWSsrBDKhtAB4GCDxSfiGom5rFLlcD/hungoPNHhuyleImp51vvy/hy20XEgqKUDqR1x0BrqaHTY8mP1djj67WZYZvSVhifIe/XqecDivmOFqxnP1rouEV6UjnrJKT3NjuHqae6tDQc8obhy3kHnrzms56fHFN0aw1OVuk6JN/Vd4hupbbuDxbAxsXhQOfqKWjpsM024oZlqs8OFN0Nrpfp8Wc42iQvanGOcdvatcWDHKCbRnmz5ITcVI//Z",
            "encoding": "base64"
          },
          "redirectURL": "",
          "headersSize": 440,
          "bodySize": 29277,
          "_transferSize": 29717
        },
        "cache": {},
        "timings": {
          "blocked": 3.487000053226948,
          "dns": 141.287,
          "ssl": 175.346,
          "connect": 438.373,
          "send": 0.16899999999998272,
          "wait": 121.89100004914405,
          "receive": 51.084999926388264,
          "_blocked_queueing": 0.8020000532269478
        },
        "serverIPAddress": "199.232.38.248",
        "_initiator": {
          "type": "other"
        },
        "_priority": "Low",
        "_resourceType": "image",
        "connection": "1949814",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:23.777Z",
        "time": 260.04700001794845,
        "request": {
          "method": "POST",
          "url": "https://n2.mouseflow.com/html?website=31314d44-ad1b-4756-8b63-9284fb1ec469&session=079b948941ea6e84c24d81748a6c4f00&page=03101872c43b9efb1d3fd1b899e9d48620b2966d&gz=1",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "POST"
            },
            {
              "name": ":authority",
              "value": "n2.mouseflow.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/html?website=31314d44-ad1b-4756-8b63-9284fb1ec469&session=079b948941ea6e84c24d81748a6c4f00&page=03101872c43b9efb1d3fd1b899e9d48620b2966d&gz=1"
            },
            {
              "name": "content-length",
              "value": "13649"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "content-type",
              "value": "text/plain"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [
            {
              "name": "website",
              "value": "31314d44-ad1b-4756-8b63-9284fb1ec469"
            },
            {
              "name": "session",
              "value": "079b948941ea6e84c24d81748a6c4f00"
            },
            {
              "name": "page",
              "value": "03101872c43b9efb1d3fd1b899e9d48620b2966d"
            },
            {
              "name": "gz",
              "value": "1"
            }
          ],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 20413,
          "postData": {
            "mimeType": "text/plain",
            "text": "\u001f\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003í}ÛrãF²à×hwf#¨+.\u000fçA­¶ìÞíVÛqæ¼8 \u0012\u00121\r\u0012\u001c\u0000ZþúÍ,\\\b(\u0000\n\u00125ã¶%( *+++¯,ú3ü/î»ý¯U¾ÿëÂýpÁØ=ü\\ðKø\u001dm¢<\nb¸\u000b/±+ø\u001d¤\u000fYÙ.?P¼&?\u0014meøõy\u001b\u0016­\u0014÷GËâ{ùø&Xu÷8fÝñvw\u0017GOËºµnÉ³<\\\u001f´¸\u001f±±kàö¸¼ø\u0007\u000f¿4þéëÏ7û9åy\u001aÝíò°\u0019t[ôÏØb\u0015ÅË_`ý¬O\u0018UhFýáò£ÉQy{TY\u001a~Ï¯M\u001enò\u0006ÊÈ\u0010¬9ÝðÿüÃ×Ë^øqMó­\u0015þk\u0017=ÖOý·õÛ¥u¬·A\u001eÝÅ{RZ\u001cÀøé\u000bþ1\\>À\u001dWUÀÀü#-ÁÖB~\u0003×\u0018\u000e¼Ñ8X¬4\u000b÷\u0003ïò{Ë\u001b8\u000fßØ<ªx8O¿ü¿\u0017&q}{¶JÒ|±\u00030H\u0004+W?¹JÃû\u0006h×Ñ:xÀ^®ñ.ü{\u001f<âG\u001b~Õ\u000få5°\b(>\u00017~·ª\u0007àRsbF\u0010µMCÆ&\\äÝ8Â\u001d©×ð°ì,|X\u0003Üv\f<77y\rËuòwÁÚÞ¤Ö2È\u0003{Sl!³7Çï¨áÍ:ûf\u0016\u0010>¬û&|^¢½HÖCq`ßQ\rÃ\u0015\u0007OOOöC<Ä¡\u0015lø9\u0016Ù\u00184cÌ\f»\u001cÅrc§Ác¸ùçÙ3s<½\u0005\u000fÄÙ¯]\u0016ÞÇÉÓùcì-ØàM¾9>ÈÞ\u000f\u0016\u001a¯Â$EÕi9\u0006\u0007æø \u001bÏ\u0007{&y\u000f@e%«\u0003_nóëE\u0006·´âgÐv¿ìî¢oh?\u0010äBzÀ*?Ça¶\nÃ=z[\n\u0015\"¡ì{ \u0016Í±QnÆI°<4h\b©ëûTÍbi=%é·,\u0007\u0003\u0004\u0015Ìkq\u00170;¾t¥äç\u000b2\u001e\u0004\"¸n¸ðîÄ\u001dãëu\u0010mìå:¶ÿíÁÎj\u0010²E\u001am*.Ü\u001c¿æÆøõÛ¢¹«\u0007»$à##ù\u000fE¹9\u0011ÁÇóCë:\\FA\rR\u0010ïý1¯Âp¸9ÑÅ5¢ëë§¯7?ô®Ë4§\u000bï<?l\u001e@´­Õ%ráÂmäë\nº!¿\u0016Ë\\ÎO\u000e@g\u000eaþh:Ö:8^\"S(kì&É]º\b­äÞÊò4\fÖYo£­\u0018û\u001b\b_pBð$\u000e\t¤o@Æî>°»½úòéó×!\"è\t=\r \u0017ÁÑÐ¸R?üúñ\u001f/ÐKÕ\u00052\u001c@ûdù\\?±lÏÛk#Ð\n\u001b{MÜ£BÃìÆÂ/¿îh&N#\u001cý,¾®\"èdQì\u0005Æ\u000e×Û\u001c¯ä°GÈ6Mr¥\u0013°2R¼\u001c<À:d-ñ+\u0010\u0000Dí:\u000e´uu´ëÐFOlk'é\u0003êëeøÝÞ®¶ðù*M²Ìºaÿø\u0012þk\u0017fù\u001f×pW>ÿqÁ$ó®n¿\\ã\u0007¿èø\u0003+&ûàKù\u0018|*\u001e\u0010)\b\u0015:Çûa:Áâ[fÃÇO \u0000I.Ã´Û\u0012eB\ryNvð{½Sý­À ?ÿ7x\fnK5à.\u000eèÄÜ\u0014÷cGOá\u001dü¾K§Lu\u0000I¢\f\u001fÏ[}PDû +\u0000P´ÂEÕ\u001a\u000fÍIZt ßøà2Ìá\u0019ì)¹×\u000f\\<¸JªÎ\u000bx[³°Gp\u0001sÖÐXG¯Aÿ=Ö\t¢§ÒÅI°ÝAZSÿZÆ]ºQëÜßw\u0013Ò®¹Ü[åÖT·zÜX\u0012I-ÔÈ~/·y/Æc+\u0014\u0018}·¢e¾²\u001eÒh¹fthÊ\u001c\u001a94tº)î²Éó2'Y¤F²\f\u0017JX«\u0011[8Á\u001e¡3tîØ\t6ô\u0007PÞ\u0016yt\u001fË?VÉ:,öéàI\u001eB¦ajCQ¹ÝZ]4\u0019,>\u0014¬Â`i\u0002\u001eG£æþr9\fMðx\u0017 )>Xá÷m°Yî¿/\u0003%Qï\u001eÊOáÖ)Õ/\u0019\u0001¸u*p'¥ñÝ¼\u0018b?¸¢>¶?.ÑµöV<$\u0005­8ÚÀ©\u000bg\u000fPú\t£Ä%xÕI4\u0004mè1¼Ì¶ P}A§Å~\u0005ýîh\\8Ùóú._¿Á0^Ýý1\n>$ßë;`Ç \u0013`pf\u0000tx\të`ö&ßö·WxTO\u0014m¼¯ï uó}\u0014ÇÝ\u000fbîâ}¿ác\bàØ\u001c\u001awNÿ<'©\u0011PÛ ÀK\u000fz÷4ñ3c¶'\u001dá©à<#¶ Âu}vO»É±%\u0007¢pQR×ö\u0014*Å©-|B\u0019ú\u0002\b¥¶#}IÅQË´ë9)½X5QßÇè\u0005A\u001dî\u0011Gzû\u001cÐã¦\u0016xí6*læ{T ÙIZcù6ç¾àÂõ+\u0000=ÏS6F«åª9©VK\u000b\u000f­q´Èë¢Å\u000bÆ¯¯=ÿPÛÉ§4â~Ø:SnSÉ8u\u0015¨6e>áÄ/&Nmßó\\ßÇà³ð¸ïb¨\u001e±EàbÐ\"\u0019åB(\n 6\u0003ô\u0010ª\u0016{®K\u0011\r\u0004pÇ8'ð,SM®Ã¨t\u0011ßÄ\u0005¬z¸JK£¶\u0004:ò%Ê\u0015âØ®Oà&\\\u0015b;Ô§b(¾Ò7AëQ)¶\u000eM¾ë8ÜñÊ&ÇçÊ=E`Uës\u0007O\f¨î`U¹PÁ#jSÇåV0\b\u0000\u0005\u0014Ðy\u0014:$R5øÜç\\*¿\f\u0003úáH»\u0002{s\u0001\u001c\u0000R\u0001=ns|^¢Ë\u001dç\nd\u0006G¤\nxÌ÷\u001aÇ\u0005Øº\u0019ñUë\u0000ê\u001cæ\u0014ÝyãÁ°L5ù\u001etæx\bg\u0013\u00064­Î½H\u0011ø\f¤¤\u001a¨ëHªÖ\u000b÷\u0018s\u0001#Ü/\u0016R*<Gé\n#BR4\u0001põ$,³PJ<ÀÃ\\Á9ò0\u0000Ëö`Û0Dðg3&)%¾Â\u001c ÏSñ[Ï©\u0011*\u001dµé=\u001b(\u000bn,w\u0010ºÅÎUq\u001d×Uf8tM¤KxÉ\\ É\u0003Ì)¸±I8BªeU-\u0000\u000f¡e\u000b\u0007ðl\u0016ß÷\u0015·Å\u0016À¡B=t\u0007ê9pAu\u0007Ó\u0013¾£°E¨oKØ¤Ã&©\u0001ã´[B³{]ï¡©Ú½òè÷iûY£'+¾w;WÊ\u0010¿<P©xK°OÍÕ¹ßV÷tGû\f\u001aêÏJé?ÆÉ]\u0010ßAºX}j\fìTDa\u001aòp\rÄòÐñÜÄIi\u0014êq:i¦ «\u001f_+uu*õ\u0018­ô\u0000z^Jò×dà5*õ@L»\u0001¦S!7ê´7Ú ÕGÒ| ñ´{ÜuË&ÇõO\u0015\u001c\u001ed0\u000f^uéV\u001f¼cþ~´\u0012\u0012N¹KàÀ\u000bCRÅþêÛIëÑªSucãquEM ù¨ºPtÊ0Ø\u0003H ·&EôØú\u001føùY_¡\u0002øº\nøÑB©,º*/\u0016ßái!B}àýxgãÉ\nO\nMû[ÔwÞ~ª\roÓxÖ\u0018*ámóÙÓx«Æ\u0016È÷÷[g\u001aç×X0ýy©\u0015ìòdï\u001e?\u0006ö«ÆÖyÉùp$J\u00029äï]Ñ\\\fá\u0006y\u0000uÄ\u0004\u000e\u001cnO$üª5È5Óh\u0012Æ°rpÁBgæcZÓ(°\u0016»4mÎ¦òqvâ³\u000eÂg!S¯'>q¹\u001fs(=Þ1Ôç\u0015,\u0016ÉnG½dÇSäVzg¡\u000b\"·¾Ï/Üÿz2ÁUvÊØÇe\u000b®¸Ôè\u000bsoáu~\u000b\u0011ä1î¬CÜôÄO~®Æi¡f\b\fETLò]ÏT(×ª¤ëÃ\rF)i²]&O|£r\u0015'B<RR(^¶\n²m²Ýmë§òtwÀî\nï¸×\u0002ï8Ó2<®Ù¿ÕÔ­<yxP\u0011óæ\u0006V\u000f¤IÃQ\tàæ&l\u000eÏPè¨\\Ïj\u001a_£¼)×PîûJ¶ñ±:T0y\u0016##MÓFõ5¶±áQ\u000fXßsúöö\u0019ÃP\u001fvü*^6ßø\u001aûsf,jÄÀ`\u000f\u0003\u001eQ·Âèa[`p\"&¶©U%`NÁx\u000f¿\u0006Ug±ú\u0016!\u001cäK¸HÒå\bµÂ×pú\u0017q0qb=ÁñO\u001fÕ_âø.mMh°\u0018ó5\fx[c±\n\u001fÓf~¿¯a'ù5´\u000beÈwqHeÃ5f9\u0011x\rg9Þ6ST\u0012\rË}i:y\u001al²û$]×O¨+q³¨/m¢þ©.åòûßM¬1\u0019\u0006z\u0000Fªî{ÒæL90\u001a¦6aÂNmÂËKê&¼¢<:xÁ¯®¨ÓõûKê9®¢&­Û\n47»*÷£\u001aïFE5TØ±ê\n¯\tY^c¼xÒµ¥\naÀ%*.\u0011Î«'ËkÂö\u0005/o+;\u0013¶ÆÂv\u000bçÕ¨9Á5ÊK8\u001cÛQÎ3\\ÎrPÇ²¸­ü*ú«zÍLmu@å^s³Ç§çÛD\u0016Î>\u001fzRñ=<xqÑì\u000e/Q!ª\u0001ñ«\n²ðàûlß*me25\u001eÇ\u0000L\u000b\u0006TÈQÝr\u0012ÔM,_ë¨¿Óz²jEÉq¢·\u0012ò1Ñ\u0019Öf¤ð\rr¤ÍÚ\u0014°\nãí\u0002$o\u001e¥\u0010^_ðë8\u0000\u0003\f÷\u0012Oï(Øq§F½t9Ìù\u0017(éÑ¯~RÃkÔA+gÈFoÖãG`\u0019²§ëc{Ö:ønQê\u0012\u0013Ài4·¡\u0007ænwwÕ\u0019>òÒá¹\u0018õw\u0013°\u001b2lM:O(\u0019éíóªãs'0ÞÇ4ë5Ï~§=¾Ù¯\tr+`Uù\b;R²5\u0005ÁÉ#Ø\u0017 Æ\u000fÇñÑ¯æ\u001e¿í¯\rÈ¢Ø´Û¶\u0003\r'\u0004\u000bÝ2\u0002Ó{}w¨\u001eùsÙ\u001ef\u0010¢4\u0012Ç$¢¯oHÒ\u001ewÃ\u000f\u0003\rÂ´é`à8LÃm\u0016\u000eÿëíê9\u0016A\\_Æki²Ü-r«±ñ&¡³'ø¹\u001e|ÙC5ÅC©¡Óük@B\u001cZ}y¯û²\u0011u®|ïÉ\u0012XW\u001egè,nçD\u0015\u0013Û\u0013®ÉÔ\tÊ4l(×Q\u0017)å'ë!\r­»`ñí!MvÅY¬\u000eT\u0017Î\u001då\u0001Derûý01­.fÍ´¬\"\fÓ[ÄaÞGßM\u0000©p\u0013\u0004úNR\u001dºÝÅ±\u0015÷&ô\\]ÅmÅ\u0018¶õ\u0003íy|(àÿ¢Ò:«IeOQ\u000eÆ5jòwùÆª:\u001dÐüðÛ×¯¿¾\u0014\u000fheîï#d½Sªå%\t`Qê%93Ë°\u0016Ð2HMÌÎµ×\u0000¿(P0Yô\u0015 ºT9Ã·%jÆÅ²©®,á\rÖÁÉÆZï@üÍ·D¡ùeä}Ç^\u0014jðd]\u000bÉ5ÉôBn· %Ì»ºêCg°¼g\u001d\u00113ÓQ#7\f/c¶Mòèþy¾%4äÖa\t{¬Û\n+\u0006\u001c\\cü\fvl¢R\u001aò¾qCÞ·JÛX\u0006¹\tK¿®\u0019Ô\u0015É\u000fïÒ\"ÊÒíIð?\f\u0007â^+ÔNÅ²e°ª«³3(ka\u001b¦Q²,\u0010£ÙtûsT\u0017RWÐç$6aè\bÕéÜ¦C9­.\u0015hk\u001c2Û´3\tCÂåcu¤J{e,ò «4\r¾à®(5q§ö<º\tT1\u0013ÔuÈÇàyXW\u0006iââ:µAÆP\u0018zfæÇøy»R\u000eõðñcÉ\u0011ÔÃ\u00077ºa\u0015V\"à°å\u001c\u001cuß÷u¼ÙC1Iõ©*ÅôÄË:LL\u001d¸¸.§4\u0015aFr][¥\u0015Rj{î\r³Õ!\u001dÇf.½´¹ëãO9g5o\u0014\u0004\u0017[ìûtA,Ì7´`M}ÉÍ¼Ø\u001eµð\u0017táÙ*Í°Õ­RneÐÙ\n\u001d\u0000\u0010±°]«Ý\u001bÊ\n(1\u0002\u000f\t?\u000f\u0016\u0019$¶\u001d\u0018\u0002F_\u0000t®\u0010\u001c\u0011>\u000ewj\u0015-±%í\"ã\u001aþâ(\u000eþ´o,Çø³ÆïK'zt±Ú®ÓÐ\\äñ}\u0019USç\b¦ÑæaCÌ×\u0000}l\bóye½Ô¨'ç)ëk\u0004Ycã¯%ÜMÕ¬K¸ËY\u000fSÂ½.ÕeÝ¦yýÊÑÐ×éº\u0002YÉt\u001dÂ4JÐ_2ý=Éô\u00137¯!/Æ^*DíÎ\b+\u001d©aL\u001dÖù6Ò©ÅO\u0015\u0010­µÞÅy\u0004ß£ÌR´²jgT\u0011\bîêåS&¥«À6nR*à&c$Ò\u0011`\u001ay>8\t¥LáÓz\fâ]h=¥XÐsï«9¬\u0006X®Å¬â\u0001\u0013Ó1$þËÙlã`\u0011®x\\\u0015¾CéïôHÿÛ2w\u0004\u001a@îë¯ê|ÔzÌY\u001c]Å´\b©yz°\u001d9_F\u0019àëY}!Ñ&6¡u\u0017'of\"èº\u0002j~ùü[õÚï\"Yß%wÉþ\fà)ê¹º\u0007t=FÚMG\u0006@ÇãEÀ\u0015æ½\bA\u001do,¾v7\u0014ªJõ­=l\u001bù0\u001f+þÄÓ.\nÿåA]\u000bçè's\r²y¨átJ\u001a\u001dÂmCºM²H½\u0010AÁ\u0012ÜeI\f\u000f\u0014@æI¡^êÜ\u0005Q\u0005Ú\u001e£,ºâ(/Im\u0015-á¦h+\u0015¾ö\u0003x\u001a\u0011_ÑS\\Î\u0016@\rqUV¶]^4nÓ\u0012\u0012Sá\u000b4ÕuÊªÎTCõÞ\u0017l*^ýÓ'V\u0011»+Þ{Y\\*>[»¨øZTÓ¾\r\u001f\u00122¿}*«k«¶/@yÒ¼ï§0~\fóh\u0011À_B ÆÝ@Qqóæ_ÔÃä6\u0000\u001amÜ\u0005ª$N\u001aÝ7o®BiWI¬*Wÿ°Nþ\u00195\u001f;\u0002ô´{nÔ°£JàºÛcõ©±xø\"ÆB(\nR\r$]\u0007qE\u001cy\u001e¦jýjÂo¶#£µö\u0019Peû&lQÿpMWnp¬Ì\fÒ\u0014Ô¶?÷9{\u0013ÔI]¼wRJêJ½ZJTW4ì¯bJ\u0015S«\u0012Õ½Ò  M)æÅQÙÛÝz]¬Û\u0017n×Mu(H3ëÔÕ~ÙHÖUmû\u001cõÐ©ëvuå«©C_W\u0014BnÀf\t7aå*\u0019A.Î\u000b¶©ÃÊ6u\u0012òM¹l\nà¾FJ\u0015k|Û\u001fÍl^\u0004ûjªìóa¦CCì'É­¬pýi85æd.PW\u0001ì'1çè«¶u[ê\u001fl´ëmMÁ4ã\u0017\u0003M>OÃ´_à2}`uô\u001c!¾ÇâÚ¼*4óx¦\u001c&];×\u0000ªUÂ÷Ñ$hÎnÜ\u0000©Þ\u0016¯Vß³À\u001aÐUïï=7|'\u001a_`yâ÷ôi\u001b9!\u001ci\u0013å­SÕ \u001cØd\rz¢ªî¬Äay\u001d>!ÓaÔ·\u001dU¡E}ãÂü\u0011«°cR9YàEU\u000fX¡÷\u0013¥ÁÖ(Î¾ë++ÁAÛÎ\u0002\u001f\u0011UXíÛ±àaVjo¤¼T<ô{1èÂb\u0003\u001eáúÐ¹hA|4»?÷¼hÐîÔÈ á¦÷!UåUá®©©ç¤e©\u0016¥ÿ;+|!hýGuu\b\u001et\u0015¸\u0006ã¡Qf`Ê\u001eð5\u0012kèÖ¿O\u0017ªð\u0015©ÂÒ¤pCDû×|Ë\bÕÕ\u0003\u001båh\u0001¯uAT¿¦Ã®1H^Z7yY\bõ5Ò6m¾ü\u0004Ë<ßÒ¿Ø},`\\yx, ñ¶îýÒ¸l8}SjDó0A\u0000ÒU5ù!»\u000b©B5H\u001e¶&OÚ\u000e0dåxðüÄÝâ¯z§º\ti©{\u0014VÙ\u0006\u001fÔ#Vu¿Uö\u00047¨\u0017Y\u0010Ë.\u001fÃ\u0016«hÂûñG}\u0007­êÉâ\u0001ïsðàAáØÌáªK0Þð\u0019ash\u0000áPÿ\\Û®«Þj5{~w@6-\u0014°Ôñl,%äâk\f<Søc\u0013èXÂ\u000f´QÂm\u0015ð:ÅJA6çp¯\u0000\u0016ïÑöøÃ(Þï0-\u0007/­Â\u0015%2\\\fÖy¢\u0000\u000f0\"\u001c¼\u0000£â\u0005Â\f Ä!\u0018Þ\t£rD\u0016ãÅ\u0007&¼ß\u0005ÎbeÙ.}´l\u001fVEâ\u0013ÛÂê\u0011a\u001e \u0017}\b=ô¤8\u001a\u001dÄ,s°sà'Ô>vP\u0013zQæ=\u000b'Ò¤F'è\u001cªÚh°¹Ð\u000få¸±\u0017èQ¿'Í\u001f\u0018'N[c¤Nö6L±äÑ¸·ê\u001dÌ\u001e«VÈý\u0000§tEõ]]Ôå³\u0006\u0013\u0010ÓUÍz{3éJe½¦\u0019$]÷î~o¥¿\u0019ÄFÿe\u0006\u00197®¦×ÙA¬.ïÕY;½ôn\u001eîºA(0%AÌX@LWvë]Z@LW¯ë\u001dX@jlã³´®p×{´\u0018ÕHå¿, ¿, 7²®lÛÛZ@jÔ¥3²\u0018í÷R[°\u0018ÕØ£gf\u0001Ñª0EÅï- ¾jeS, SeÉf°tµÆ^Ó\u0002\u0012láÜß×Í¯a\u0001éJýe\u0001·FÓ8\u001f\u000b¨.¦ÖU¥\u0010 n\u0002é* ½\t¤+aö>M ]É²÷`\u00021q|&®BÚ»4t%Òþ2þ2ÞÊ\u0004â\u001a}ìM ]A½s2êJy]À8\u0013¨.qwÞ&P]'¯+ü5,\bÄ{ìÈn\u0013¨\u000fG½÷¸Ç,Ï\u001c§{Y{ãºYð\u0018VgE§\bSS\u0005èf9¥Ëø[Òeuù¹®Sº\u0005ÞI6úL\u0016ÓU{åS»LWííOí²ºôZ\u00177uA©^ÿ0\u000bôÕMëeVGè3{ÀVá¯(õn`ÿèÊ£\u001d\rè\fÿd¢Çuv[à\u0001?®R '®±C \u0005\b¥9^\u0019_÷jÈø\u0016mM\f]ù«ó\u0010\u0019ºSó\fÙ£÷Ý\u0002Þ¿ìK³\u000e!º\u0006Ô\u001b\t]Õ¨3\u0010\u0013²G_ä`U\rq\u001fõý²¶x\"þÌëæä®vÏ\u0019É\tÙsPÞÐ\u0015ÝAN\f\u0019ºÂ;CÉçÇ4ØVYºS(FW9g¨óö\u0016ï'ð»{à+_ÒÇ:ÜpX÷ÁÀd4<vÊÛr«wä2iàå¸LW§\u0015Ó:©~{.Ãô¦ùØ3=Dgqu^þ¾¿»qqoã'3Y§×à\u001fÀduEgú\u0017rêÚh8ûàµù1ºáBØ çqWúêÝÅÇë¤¿é¥U«ªYiÄ8ÓIÑ´z4qò^¹'þà{YqU*´­cûg:Q¬º=¾\u000eFN·¯\u000fÑ¤«21ëNÔU0JÌómÕD\u001cWR¸¢*{î2¾\u0017uE%ÎvÚæv£®°Å+ìÆî©NÝ=PLÙo!\u0018u/ÌÒ%ç¶\u000ff#)\fHÕ;.;èRùíø\u001a¢Ñä´\rnÇ·\u0013ÝS¸\u001dûêu8\u0013¶£®bÇ¬ÛQWÃ(]R×³%pDÉ%á*ñLúoFï5d£¹IÛºÂ$¯°\u0015;g:u'ö\bFoÊN|\u000bÁ¨+\u0001b(\u0019Ç\"r\u0002\f\u0006×\u0007\rÅÙ;ÀT©¿Ëü^|\rÁhrÚ\u0006wãÛ\tÆî©NÜ~`¤dÂ~ÔU\u0006u?ê\nx\u0018%LÇµ=I9'LJÁÔycºÔßd|7ê*é¤ÍíE]\u0011WØ3º\u0015û²nº]86ä(\u0001Ùï\u001b/#ÈpëjCÌË1^Cuúâ¹+ëËÙ*ØV\u001ana\u0015­«{\u0016imX>ûÊKì£±\u0006QF®½üSGàuqùF\u0018+rN\u001fA#_\f0*5h\u0004\r×48æ$Á\u0011Æ*û§0\u0019>ó\u0018\u001caö==.å~Ð\b³ïi]îºÁ\u0011fßÓº¤b#Ì¾§u\u0019Â\u0006G}OÓÙ÷´.û×Ü\bº$^#Ì¾§Ùì{Í¾§uY\u0006G}Oër)\r0ûÖe)\u001a\u001caìfã\r\u001f®Ë\r\u001bl<ÿ÷`ãyÜY/~8tË×áÝEU)àåx\u0003,\"Î5<Ä0À\u0002µ)oü\u000faü%B~4ÆLùcú1&}L7ÝÿsçÃXG¦ÀX)\u0006FcLÃ\u001f\rcÌó\r\u0018©ÿÑù0Ö\u0004òs^Tõ\u001b\u00116\bm£Xò!Î\u0000oaZ¾TÃz\fS|ãZÜ®.Òçü²¼_C§ñ\u0016|_RïNs\u00039#Ëu\tuóâEÃîOÈßÏò4ù¶âqÒ8gÛql\u001býeRÏu¬Ëª u>oó\u0004õrO®EE\u0017Çv¥çzL:B\u0010Ýp·Å\f\u001durzÜ&\bÏóa÷\u000bê97.jiË+ê3Ûs¸ëI\u0013É]WÞP|m4ió\n\u0018Õ³]ârÏ#>\u0018åÞ\r\u0015¾M\u0015Ô\u0006!\u0002\u001d\n\u000f\bÍÇ÷<{Ý\u001aVõ\u0007@K)ïHâø\u0004Ì¦\u001b,­ë4Çeê>,\u0014@\u00006&Ã\\\u0001÷9\u0004@n1ÿ+*©í¸Ô\u0003\\JëÞt\bUÀ°\u00016\u0000Èw\u001cá9:.1§\u0004ÐàØÔÁ\b7 ÀÌñ\u0000«ÌnÍNõ ±Wá¹B\u0002Ì\u000eñÅ\rLÒö\u000f\u0007ÂR\rE»G]îry#\u0004¬RsvÅ\u000bÖ°\bãs\bó\u0005Ü\u0006 ÃÉq\u001f\u0010ãHèU0éJÿF2j»cJiÃ¼8 Ôs(õåTy\u0016Ôsmß\u0007p}íèÁõcéY\"@z> \u0018@çÃy\\Ô¼\\\u001bè\u000f¤\t\u0017@\u0004.\u0010ãÂj\u000b%\u001dX\u0001O\u00100+#n\\âµ\tDÝ&±\u0004\u0018!\u0000H\u0017ßû}8\f'¶ëÃjSâº\u000e¡ß\u0000¹ÛÒoüÃÛ\u001cg\u0013à\u001eÁ¸\u0007´tãQ¿E\u001ajD\u001fÖB\bÏ\u0007äy\u0012útn<é¶h£ \u0000XY»\u0000y\u0003\u0019\u000e©Ö\u001f\bÛá\u0004\u0016û\f¶ÏiN\nrÄUt\u0001å\u000eñ\u0000\u0015Ò½Ui(os¸Ã`w\n\u000f\u000f\u001e\u001bJðEíÐÆaÿ\n\u000eH >qaí\u001dh\u0012¼6`u4\u001c\tF\u0004£°}aÄcâð`\\æz\u001e\u0007%¡¸ËqÙ¸ÏmHâR\u0012õ>1b¬Nî}Uv=¾êðTv]±=[3LM\n`°´À7ÝnvÍ<\\|?\u0003ÛTHÞÉ­\u0019^$Òg\u0007,\u0016(^tsk\u0006;Ã\u0015RÁvF^ÐÉ¬\u0019\\\u0004VÆñÕ\u000eÐ<ïæÕ\f¶¨@>\r¼\u0005Ø\u000f\bn^Ý\u0001ëð$nJxwój`a°m¡3\u0007Ø\u000bl Y\u0003±$!ÄwkI0§æÖ\f$\\\u000eì\u001a\u0007¹k'³fÀ`z\fð@'N^Í`\u00132NA\u0019\u0015.\u0015Ìw»Y5°4\u001bD©Ï\u0000p\u0002<Öq;yµº\rX\u0012È,_z\u0002ðÐÉ¬ÀB0\u001eá\u0000\u0002c/5\fûÜGFì#q:¹5Ò\u0001éK\u0001ÛÙíË;Ù5\u0012\u001fÐ\u0012ó\t J\bAyÍ®\u0015]\u0002\u001f\u0014\u001c·>g¼]3\u0010=À|W\u0000Úp:n'ÃfÌÁÒq\u0014á¡ÌA°»\u00186\u0013X\u001dÈ©J¤8^'Ç\u0006®2\u0002IÁ>w;9vY0\b\u0018\u001f\u0007sáÙN$H`¢\u000eÂÝèdÙ\fÔ*\u0002«\u000f[\u0006Ø\u0019Ü):Y6.\u0000}Å\u0003JAÉä78¶Km`å0\u0010lc\u0006ÐkX6ØYg×\u0011 fà³pD7ÏE·AÔ\n\u0007¨ßw\u0004h'{¦Ml\u0014- b\b\u0001äè6\u000e\fbÛc½Ø¶Æà}\u0005¶½¯ñÑÃ±]×æ@UÜ\u0003±\n2Üá\u001aýákijp¡a1ýnõ\u001a8+\u001dP)<×§¬[{¨Þù U\u0000ý1 \u0002·[Ãâ°#¸\u0007÷\bèvsk\u0017ô0Ø° Ð²\f;Nv3k¬\u0001æ\u0001³\u0006ÝÀ­TtòjOâ¾\réÃÀ©ýn½\u001a¶?Ø\u000fÀÌï\u0011·ÁªÑ\u001e\u0000¶\tª\u0004­ZRâh\u0014kS!®ä -ÁDÜN^íúM°y¡\u0003çd\u001a^\r·ÁÖ\u0002V\u0004¦\u000f\\ÉïdÕX¢RÀ>\u00073\u0004§Q«]nã´$\u0003Ý\ng\u0000¬T«a%\u0019\"Â\u0007\u0005\r¸\u000fâN½~\u0006ÛÔ\u0003Ã\u001eÐÉ§A99ùÐ\u000fôMQÕl\u001aVÉÀBI×\u0007îåwri\u0007´\u000b°\u0001Ðïu2i\t4åïÿ\u0003jìâÑp\u0017pP\u001fD\u0012\nMÐån­Z )\u0005«+Ñ~\u0003¹Éºµj,&J}\u001f\bX\u0019`vòh \b\u0001,#3g\u0002¨E;Â\u0006+\t¸/«\u0000¥¿C;°+á\u0016ÐA¼É\u0006¦\u001eìmWÀ\u00050\u0003AúÊn\u000e\r\u0017²æ\u001bÜ\u0007Â\\£T\u0013´PJ¡LÍ a\u0013\u0002eÁt\bZßêõPFrÇ¹Ð\u0004;æ}é0×Õ]\u0019²þ\u0013êËS_?Õ~Us\u001cÞçê\u0013\u0011¬|O3ÉmqÉêRëÎÌ«.\tåê:¨ÇÍ\u0017=C¶¡â.ãà9²\u001cþ.B,iYY¤Å#\u0013Ý­²çôn³Âå:øSTýyE\u000bõ\f¹ÜnÕû\u001bF\\àºb-Cõ5Ùîñeã0Hï£ï\u001açåÞ\\j|3ï3]Y_îÍëz0\u001d4\u0004Ë»\u0011+i&÷ðËÇ¤iÒ\\¡Ósú¹4õò\u001a3e¹Ôè¢ï²l1×¥y\u0007e¹®jÍY-æR#\u0018ÞcÙb®«óWÙâ¿Ê\u0016¿QÙb®+4[ÙâAÀit\u0017ÊÒõ*: >e´y°¶A\u001a<,ìt(×ëZH]r}\u0015\".É¶©k=à+ª<\\¢Ú½Âæuá\u000b8J'\n|ºGNEA³ÄÖBq{#lÛi,í\u000b62¨¯«4³Òå,û9uXò1Ia¶Òä\tVBý,ætÕ¦A¸HâÝ\u001aµ$ø`}Ï,Ç\u0004¤ìÓ=E%NÒ¾`m\u0012kD°Rëi\u0015åÇwÅ©Ó1dx!\u0003W£ LC®\u0015­ð\u001aÆ¤Ñ\u001d\u0001lÈ\u0014í\u0001\u0018D\t°Êº·¶Mz\u0017,¾=¤Én³,)ÌÓ]\u001aÿíB*E.Ï·º\bBò:²³Årc/\u0012ü¬ng×ÁãºÄ¹¯\u001c¶\u0018NóôØ\u001dP<¼\u000fï\u0010æ©úû{ã4««²4\u0011SêXTi<\u0011Ô±ïü9\u0002ïmdkÊ¢>@KÖò\u0003NO¦T\u001fî2SïgânÏ\u0011Å.\u0007Ø \u001d5$²¶¥\u000bÑ\u001c½z\u001fy/ ÒÆ§CëiDahÇ ;#DV×\u0005ê<9\u001cÆÖIzö§Í2B=âK²hçwFoºJ@C]XË\n`\rÓMq\u0004ö[ýü+ø®tµ}Fù®ºg¡ub9å¯é\u0018¯s\u0014×n¹±6ëÀ)T7ÏéåòF\u001d\u000fh-Ç\u000fÕJÜ\u0018â\u0003ºÃ\u0003IüüPTh>\r°ÏA¾²0+³\"qÔê÷»Áµ%Æ0xó§®cF*qÔÇâFå\u0007uêv_ýnÄüNÜÊ\u001askÜä¤nnN9¡æ\u000fíúEª©6>Ñbbû\u000f²yoóÄùkDçD§Ï\u001170\u0011Õ\u0015\u0001jbì\u001dTS¶?Òb:¬Æîú<\u0005%y\nÖT%Á¢\nÒ<Ê\f¼]ë*\u0005}0\u0004í\b\u0010\u000fuº®OW1meúí\u00079¥»8ß§Í\"Yoã0\u000fuÙWî»\tá\u00175ðºNMW§Wìâ\f±GÝ¿{\u001eÖUß\u001b_ì\u0004gRÂ=bmÊ>§Q¡ =G\f®wù.EõõÇÂu\u001c\u0016ÙZñÁ¬Uèj¸Ld­Y®õ¼\b´\r\u0010ËBWñÅ$«µ­s\u000eÓ8ÐU1 æð×\t]=IrCA[FULl\u001eF÷Q½\u000e\u0004ËeXéÝ\b^£ÔN\u0012DjúÞÊ#H\u000f\u0007\u0005]Ð³oQÑú \u0004Ìã3^5lûèö1í$§0msêÓÖJWç|µ®æÓUDÏfí÷¶\u000eú;c«º@gE¦=lõ¶\n:\u000f'Ò³ç¨´£ºÄvõ¥\u001eû\u001fC\fwöÀ®Ð\u0015;z]¡«¬ô&]¡«Ât®]ÁæQÅÿý\u0002»BWêü\u0002»BWåê<\u0002»BW\"k^_ÐÕÍzÀ®Ð\u0015Ù:«À®`=î]¡+Ñuf]¡«êu]Á5\"è|\u0003»÷Ø\u0017æ\u0002»k8øû\nì\n]E°÷\u0014Ø\u0015|d$ô<\u0003»BWsìí\u0002»\u001b}W`Wèý\u0004v®ÊÙ\u0019\u0006v®8ÚY\u0004v®.ÚÌÊ¨®2ÚY\u0006v®\u001aÑù\u0004vèÄ\u000e\u000fì\nÑçEÛ-á&\u001e\u0014ç\u0014¢/\u0002;2¬+DÏkxXW\u001eeXXWÔÞFÂºBÎ¤\rëÖ\tÛ¯\u0013Ö\u001dQ=WXWj}¾a]9£d¶ø.Ûûâ\u000f²ÑM\fëêÒ±Ï'\b!{8h\u0011Öõ¬:»{ÄïÜ,ôªK>'zuúö°®.§õ|µ/uRXwlÖéé;`«N\u000f[\u001d\u001fÖÕå£\u0011öpT)m96¬;\bKØîlyÅÂTBéüáçy2Iß,ül*ÝÓ\u0010\u0019Ì£Ï\u0017~\u001eãù\u0017~Ö¥¥aøY²z&ág÷M\nþ\t]\u001aë\u001bçÊV5\u001b~özÎ\\N\r?{³H\"óág]>êyui§g\u001c~öz\\Ç\u0006ÃÏºäÏw\u0016~Ö%¾«ð³.1ôuyo\u0018~Ö¥sþ[uÙ ÿ)ág]Zê9uI©ç\u0011~®óQ_W\u0019õ5v×y}ä<£ðsoíððs_í%Ö$_U1ÁÛVàòûÒmÇ¡ýiÁÞîd_vì°0´¬3_¡¥.qõ¬ÂÐ²NV}0´Ôå¾Q\u0018Z9=%Ù\fah©KW=Óx$\u001aíùâ%ô0ºiah©KV= ìKU-ÂÐEekêC\u0010 ËX=Wz¥\u001a¶}NôJûöø0´Ô¥¬\u0011±ö\u001cµ\u0012ºÕ³%ÓwÀVi_>ÐØ0´Ôå¤\u000f²\u001eo\u001e5»XJ+=¼+Ù,Öö[w¥©¤O#á]9S^çlá]96Óó?.¼+uÉ©ç\u0017ÞºÄÕó\bïJ6²\u0012ÃÔaç§\nïÊ¹rVw%ïqÏL\fïJ>$2\u001eÞº¬Ô³\fïJ]òéùw%ï±/Ìw¥.\u0005ô}w¥.mô=w¥.=ô}w¥.ÛóíÂ»RÔùï\u0010ÞºÐÿð®Ô%§axWêRSÏ\"¼+ÅHmê°s$4Ì\u0015Þº÷×OxWö&Ú\u000e\u000eïÊ¾DÛÛ<¨\u001d½'öÖ\u0017~\u001d\u0019Ó}oA\u001e\u0011ÓíK\u001d\u0018Ó­Ó^ÍÄtuY«ç\u0015Óí{¡ð\f1]]¢é[Åtu¯\u0015>ß®.Wõ\\\u000fº×\u0005SðAö0º1]]¦êùD úòTA\rt-\",6:µXêÒUÏ^\u001d\rÛ>'zuúö®._õµç8Ü¤®©\u0017¨¾\u001a¾\u0003¶êô°Õñ1]]Jêù\u0010©ÛÃQ\u0005X<\bSXo;º;Z×2DºÝÅ`ê÷&LDSy¢\u0007(Â`F6\u0002¼#Jê«\u0016ìÒE\u0019y¼\\\u0007¢ÿü\\¼æû\n¯m·*ÀÝ¸45ôa*\u0001S­`\u001a=¬,¡!Î}.¬mð\u0010m¡c\u00020\rþíf\u0018²\u001a0ý\u0017+[Qã\u0001¾ù4\u0014Fà¡yh\u0002$Ý\u000bD/CÔ\u000e¤I3¿ËóÃõÐ­hb\u001a\u001a_ï\tæFµ°\u0018\\ýX\u0012MGPiDÂÐ`Òñóv\u0005ôxµ\n\u001foJV¬\u001e>\bc8{\u0014Õ~?l9!l£îû¾7{\bðú',ì'n')Ìâ\u001aÇ¯Ë)MEFhmb=\u0018Û»ë\u0016¶r¸»¶Ëo|ÛÅ>ap-°¹ëÛê\r¿¤6üØÌ³lÊüM0-R]·©/l\"\u0018´aSl\u0003á\u000fôáÙ\u0018j÷@9ÞxÔd\u0015\r7Me\u0001ïù±°]<$Hà¯À\u000eÄ.\u0015\u0010û±¥v\b\u000blA][½!£9\u0002\u0002È»V³â±%m\u0007\u001aÊÁÃ¡,\u001cèÏ\u001aÁ/\u0005ÁFI3Ý;`\u0007;è²ÔJZe\u001bGË{¯/¤\u001c¥µW|¬F¨Ë±\u001dÏîI°È£G#¬ÉTÝú\u0016ëº =\u000euºïÿé:ÇcÚü\u001eWüß\u0016»4\u000bHqºÎ7T0tg®`\u001c­\u001e×¯^;03h½4Lñ-×KãzoëÕãºªú\u001f±^\u001a®ùë¥±{ÞÛzõx¯F¿@Ñ!\u001aëæíÖËÑ½Åõ}­SçÐv\u0015ô\u001b¿^\u001aýÿ-×KÃ¢Ï|½¦¡aëoj ;ºÙ±\u0006ò¯Û:lþïh\u001f;ºÝaö1SgÐ\u0002üÃ\u001af`a\nò*ë°GÅke;¾ö£õÔæ°L\u001dÝ[vßÎVpH4ü9I«­7ÒLpèùE]2ò³ÙÃë}Çîè°¾CÏO.ê2Ï|Á¦qrQó<Åqü¥xÿQu=L2Rj£cL¹Ñ\u001bìÚÄè^¥.W®\\éu:Q÷~^æ*¡Æ¡\u000eWqå­Õ8r\u000b-ú{­Âá«q\r£¿Ö+ÜÈ\u0016:Ù,\\Þ\u001cÇ¿ìtQKå\u0004÷}­\u0003\u001b\u0001±¥Ç.\u0001>i«×P·».ð/[ØT½\u001c:Ë¥­°£ÏyfÙ­{aó\u001bÊnÚ#»û½Ê3NpL½`ù:IrLÔ%KkFÜ2°äèrãr¼\u0002>+N\u001e\u001aÔ\"\u0017\u000b/Y÷åµ*cöL,§\u001aÊH&V×\u001ctl©mê¨\u001c°\tß\u0013\\\u001d² À\\Ï#¢B®-LØR.P\u0003\u0006¡\u0002\u001cÅ\u0013:t\u0000¼Å.hëB/¶ð©ôg-WÂv|_\bW¥¿¨&+¯¦r\u0006\u0015ýû¬âß\u0007 ¨+Ìvã©ú8¤ÕWL\u001a\u0019/\\µ Ä+­6;Ó¡µ\u0011®\u0018\u00050Kj]%Ûg«r/¾×5ªÙ`YèûDú*Q(\u0010I0a\u0006!¬(ËFm&$0=¿\\\u0016B%ã-cOA(r¸t[xx¨M\u0005 ¬X/À\u0003u]ÇÅ8Ä¥Äç*\u0007Ê±¥`ú\n±Äö@¶\u0011èÄSM@Úp£RÚ¯®À\u0005ÚÄS¡ ËåR8B½a\u000eÛO§Îl\u0011\u001bÀ0;ô\u0019+pð§BÑÄ\u0003d.\u001aÞ(ûà\tê©,\u0003«û ?êx\\*û\u0015Z|âp¨ï\u0015ê\nðµ8õÌléxÐ\u0007+\u000fY\u0003G4úY Ðâ\u000bN¸§,SP%<\u000fØ\bW\u0004\n\u001at8Ð%\u0007B×§®*<\u0006*\u000bõ¤ä*\u0017[ØÌ\u0007@9\u001e[\u0006Î\\\u0015\u001e aK\u0002 ¨ìD=¨\f_¼ï^Ú®ÃËü2åÎç¾ÃÕr9¶\u0003\rhB8! \u000bªë©S±0(s¥§^ä\tt!lÁ\u0000j³*+%SÚ\u0002¨;qÀ\u001e\u000e\u0004:\u000bóTûP\u001f\u0014\u0007@©Z% \u001f\u0017fA\u000ev¥\"/\u0006[\u0007{Õ3OÊ\u0006Ç®J S\r@2TÁ°\u0005v¥#Ê¾\u0004\u0003ì¨¾Í®\u001d¢¼\r°\u000fá9Î\u000b\u001e\u0003\u0005îø~1ÓÎ\r Ù­ìh·\u000eÏ\u001a;db²ÞÀ\u0018\u0001Æ\u0012\u0019vòµÊ¨\u0012ÝDfÄªFßÉül®\u0002êl·Ý&©RÕEþGË\u0018íÅç ÝÛSy>{Eï»80\u0011\u0012wzßÜ^@~G\u0015ðåÚ\u000f]bM¬|4*X\u0007Q<\u0018d\u0019=FËbÓ\"hì2Oàóv\u0015 .H¾\nt±\nÒ¥½HÖ³/D]£c!z`\u001a¸\u0016º×¾\u000f_U\u0018o\r¯A»Î\u000e\u000e°\b±v}8íë\u000b~\rh¸à\u001fÃ½÷æpe²0¾7±0=.·§$ýåÕqNxÌhÔßák\u0002\u0016Óc°xþÄÑâÙðâ\u0000Öãð!\u0000âº\u001cfþ-Ñ\u0018SÃ@¶j¶cð>ò$Â1Þág]n\u0000ä2R\u0011¢ù¯Æ\u001fõ=Ç\u001bJ\bH°Y\u0016¢¡sk\t\u0006-G:\u0000)¯,@m\u001a{<ý\b/=âòj?\u000eQ\u0019Æê\\(Q\u0006ó¯\u0005ûO? G\u0003êÍpdòË?TäÓfa!ah}míé\u0010M¢G\u0015%É÷\b\u0014-ÁO\u001a>D\u0019\u0000$Oe¸\u000eÒo5¡\u001d>ªgóqt´D\u000b¼§|,¹?\u0019ñ¤¨®\\ØØú¥pÛ,Ûkrªoì\b\u001b=\u0019D\u0017u2æi+®+ºq{õåÓç¯ÃºÒÈ1]é\u000eßèJ\u00170\u0019ÑÆ¶\u0018Óî8ë®t.å»:\"¬¾\u000e\u0003\tKûîôá`õUq\u0018\fÖxz?\u0002\u001b\u0004ËP¦*%P|úDzÎ_\u001c$wØcß{)ÆõØW\ne\\}ï¤xaù¼Ã¾üÓÇuzdÙP²q4æ×\bjvzÌÁ`\u0004G`õèìÁÒO¿|þíë\u000bÛ,¯{ßû zk\u0000ÜYz¿ý£hÿc\u0019äÁ\u001fyò­qkD\\N`ØFíËo\u001f\f\u0004\u0015\u0019»4ÎFââ\b~sb¯/\u0013}(Zuùç#\u0004ûøw\u00167Ö`ì²ð>6Q\bÚÑeß~ýÇÍ\u000fCH\u0006\u0011\r¦ç\"ËF@u¸zn\u0018\u0016ä\u001e.Y÷Rä¡»òë:Õ-¤(Uõ1M°Cr\u001bÝY\u0014¯âÅ½Eiguë&I×`3\rOÅÁ\u0013Õ\"\bËYº(¾ÆÉ\"¨=·zFKàa\u0017.\u000b7+áèv¼×êº\u0013kH·½Z\bJf?(§Ñ¢ôfÁ8×Kì'Sc^?zxÑú\u0010=?¿}þ<ZÏ_î¬Å?\u0017Ñço<^¦«ýþéÈæÑÿ\u0017ñÉê\u0017Ï~JîïqH@\u001eÌ8/ASW÷\u0015§wh\u0001\u000bc¥Á¦*qýÛ\u0005ûõª-B®¯\u000bÕ%Zº\tËoYÚSq}ø`Á¯«æ¥+§ùíãeë[ãN<c1â\\7/ûå·Ëæí´$Ôâ\u001b£ío\u0012ki#EòÆÎÅ½¼\u000bïÕAÆ+Å\u0011\u000e[û\"t\u000f\u0014¶2,+[\fØ¿\u001d=^\u001dtñg÷ÃÇÁjÝdÛ\u0000S­ »$Ej!õ÷².y²Ë³°$G\u001d¶¦á6\fÊÖ,OÃ|±:¼%£ª`\u0000ÅH³<º¡QR W«½8¢Ut°o[$qRÂ\fs&MÀÁ$vÙÑ|\u001aý4®¶öa9øw+þÄj$êry#\\ÆE\u001c\u0015Ç¸H°C?ü\u0007@tòù\u0006dÑf\u0015¦Q^mí&8h\u0001Ãî=|\u0007-MF±ojÌ²pÕ¸¯¼´6Öñxµëæà{×Ípµãæ8ÌÑG\u0003Äµ¨\u0011Xó·8Ú­êu>Dýâlå²~\u001e/ \u0017¶á\")*Âµ\u0010®Ú¢ÍRQsë\u0001EçÈlZ÷?)0µ ¶8z(»º\u000b²\u0010Á«l4©¢\u001füC\u0002©]¥.>FY\u0005áö¤M\u0010é\u0011Nî<OÖ\u0007hºoß\u0003«y÷-*!§Ø}¹£\u0014¢h/>`Óíw`ÔÔ\u0016}bI1 Âø1DÜ\u0014_/Ó\b}¹ø\u0011Y¾\u0001Ý·)\u001cGõ±\u000b\u0014\u001bvÆÒRÐ(¸¶Is\u0006Á]Ä Íq=\u0010Q\u001cååÖ(5¿\u0016-í÷\u0003R.®´W¥~RA3ØMiª.KcâÓÕ\u001e#\u001aÇQÒ´\u001e©çúðÿ\u0001£9\u0014\u001eÂ\u0001\u0000"
          }
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:24 GMT"
            },
            {
              "name": "content-type",
              "value": "text/plain; charset=Windows-1252"
            },
            {
              "name": "content-length",
              "value": "0"
            },
            {
              "name": "set-cookie",
              "value": "Mouseflow=a905184aee24173ee44d2ee8160b4362; Path=/; Secure; HttpOnly"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "expires",
              "value": "-1"
            },
            {
              "name": "access-control-allow-credentials",
              "value": "true"
            },
            {
              "name": "access-control-allow-origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "x-recorder",
              "value": "rec-01-us"
            },
            {
              "name": "server",
              "value": "Mouseflow"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=31536000"
            }
          ],
          "cookies": [
            {
              "name": "Mouseflow",
              "value": "a905184aee24173ee44d2ee8160b4362",
              "path": "/",
              "expires": null,
              "httpOnly": true,
              "secure": true
            }
          ],
          "content": {
            "size": 0,
            "mimeType": "text/plain",
            "text": ""
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 303
        },
        "cache": {},
        "timings": {
          "blocked": 0.9719999781027436,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.183,
          "wait": 258.5149999631494,
          "receive": 0.37700007669627666,
          "_blocked_queueing": 0.8379999781027436
        },
        "serverIPAddress": "207.244.84.211",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 49900
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 15676
              },
              {
                "functionName": "_121",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 75334
              },
              {
                "functionName": "_476",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 76585
              },
              {
                "functionName": "_813",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 76321
              },
              {
                "functionName": "initialize",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 46397
              },
              {
                "functionName": "TreeMirrorClient",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 34514
              },
              {
                "functionName": "_718",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 46325
              },
              {
                "functionName": "",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 46217
              },
              {
                "functionName": "sentryWrapped",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 44862
              }
            ],
            "parent": {
              "description": "setTimeout",
              "callFrames": [
                {
                  "functionName": "",
                  "scriptId": "121",
                  "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                  "lineNumber": 1,
                  "columnNumber": 48465
                },
                {
                  "functionName": "_717",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 46195
                },
                {
                  "functionName": "_171",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 44869
                },
                {
                  "functionName": "_85.onreadystatechange",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 75041
                }
              ],
              "parent": {
                "description": "XMLHttpRequest.send",
                "callFrames": [
                  {
                    "functionName": "new_send",
                    "scriptId": "114",
                    "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                    "lineNumber": 303,
                    "columnNumber": 14
                  },
                  {
                    "functionName": "_121",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 75334
                  },
                  {
                    "functionName": "_39",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 44625
                  },
                  {
                    "functionName": "_647",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 85208
                  },
                  {
                    "functionName": "_834",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 85335
                  },
                  {
                    "functionName": "_572",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 84538
                  },
                  {
                    "functionName": "_687",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 113320
                  },
                  {
                    "functionName": "",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 187467
                  },
                  {
                    "functionName": "",
                    "scriptId": "120",
                    "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                    "lineNumber": 16,
                    "columnNumber": 187526
                  }
                ]
              }
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949221",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:28.082Z",
        "time": 130.2979999454692,
        "request": {
          "method": "GET",
          "url": "https://n2.mouseflow.com/events?w=31314d44-ad1b-4756-8b63-9284fb1ec469&s=079b948941ea6e84c24d81748a6c4f00&p=03101872c43b9efb1d3fd1b899e9d48620b2966d&q=1&li=0&lh=0&ls=0&d=AAAFABEAAQ4L3gPJAGEAB4ADyScQEw**..",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "GET"
            },
            {
              "name": ":authority",
              "value": "n2.mouseflow.com"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/events?w=31314d44-ad1b-4756-8b63-9284fb1ec469&s=079b948941ea6e84c24d81748a6c4f00&p=03101872c43b9efb1d3fd1b899e9d48620b2966d&q=1&li=0&lh=0&ls=0&d=AAAFABEAAQ4L3gPJAGEAB4ADyScQEw**.."
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "content-type",
              "value": "text/plain"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [
            {
              "name": "w",
              "value": "31314d44-ad1b-4756-8b63-9284fb1ec469"
            },
            {
              "name": "s",
              "value": "079b948941ea6e84c24d81748a6c4f00"
            },
            {
              "name": "p",
              "value": "03101872c43b9efb1d3fd1b899e9d48620b2966d"
            },
            {
              "name": "q",
              "value": "1"
            },
            {
              "name": "li",
              "value": "0"
            },
            {
              "name": "lh",
              "value": "0"
            },
            {
              "name": "ls",
              "value": "0"
            },
            {
              "name": "d",
              "value": "AAAFABEAAQ4L3gPJAGEAB4ADyScQEw**.."
            }
          ],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:28 GMT"
            },
            {
              "name": "content-type",
              "value": "text/plain; charset=Windows-1252"
            },
            {
              "name": "content-length",
              "value": "0"
            },
            {
              "name": "set-cookie",
              "value": "Mouseflow=07117f7823e85c113496417b61b1061c; Path=/; Secure; HttpOnly"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "expires",
              "value": "-1"
            },
            {
              "name": "access-control-allow-credentials",
              "value": "true"
            },
            {
              "name": "access-control-allow-origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "x-recorder",
              "value": "rec-05-us"
            },
            {
              "name": "server",
              "value": "Mouseflow"
            },
            {
              "name": "strict-transport-security",
              "value": "max-age=31536000"
            }
          ],
          "cookies": [
            {
              "name": "Mouseflow",
              "value": "07117f7823e85c113496417b61b1061c",
              "path": "/",
              "expires": null,
              "httpOnly": true,
              "secure": true
            }
          ],
          "content": {
            "size": 0,
            "mimeType": "text/plain",
            "text": ""
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 303
        },
        "cache": {},
        "timings": {
          "blocked": 1.361999942071736,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.12200000000000005,
          "wait": 128.2739999661073,
          "receive": 0.5400000372901559,
          "_blocked_queueing": 0.9249999420717359
        },
        "serverIPAddress": "207.244.84.211",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 49900
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 15676
              },
              {
                "functionName": "_121",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 75334
              },
              {
                "functionName": "_456",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 74112
              },
              {
                "functionName": "_837",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 73854
              },
              {
                "functionName": "_263",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 73298
              },
              {
                "functionName": "_364",
                "scriptId": "120",
                "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                "lineNumber": 16,
                "columnNumber": 79135
              }
            ],
            "parent": {
              "description": "setInterval",
              "callFrames": [
                {
                  "functionName": "_662",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 58975
                },
                {
                  "functionName": "_39",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 43625
                },
                {
                  "functionName": "_647",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 85208
                },
                {
                  "functionName": "_834",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 85335
                },
                {
                  "functionName": "_572",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 84538
                },
                {
                  "functionName": "_687",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 113320
                },
                {
                  "functionName": "",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 187467
                },
                {
                  "functionName": "",
                  "scriptId": "120",
                  "url": "https://cdn.mouseflow.com/projects/31314d44-ad1b-4756-8b63-9284fb1ec469.js",
                  "lineNumber": 16,
                  "columnNumber": 187526
                }
              ]
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949221",
        "pageref": "page_1"
      },
      {
        "startedDateTime": "2020-03-10T08:31:47.869Z",
        "time": 219.11499998532236,
        "request": {
          "method": "POST",
          "url": "https://api.segment.io/v1/m",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": ":method",
              "value": "POST"
            },
            {
              "name": ":authority",
              "value": "api.segment.io"
            },
            {
              "name": ":scheme",
              "value": "https"
            },
            {
              "name": ":path",
              "value": "/v1/m"
            },
            {
              "name": "content-length",
              "value": "140"
            },
            {
              "name": "pragma",
              "value": "no-cache"
            },
            {
              "name": "cache-control",
              "value": "no-cache"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
            },
            {
              "name": "content-type",
              "value": "text/plain"
            },
            {
              "name": "accept",
              "value": "*/*"
            },
            {
              "name": "origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "sec-fetch-site",
              "value": "cross-site"
            },
            {
              "name": "sec-fetch-mode",
              "value": "cors"
            },
            {
              "name": "referer",
              "value": "https://workstation.theorchard.com/analytics/engagement"
            },
            {
              "name": "accept-encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "accept-language",
              "value": "en-GB,en-US;q=0.9,en;q=0.8"
            }
          ],
          "queryString": [],
          "cookies": [],
          "headersSize": -1,
          "bodySize": 140,
          "postData": {
            "mimeType": "text/plain",
            "text": "{\"series\":[{\"type\":\"Counter\",\"metric\":\"analytics_js.integration.invoke\",\"value\":1,\"tags\":{\"method\":\"page\",\"integration_name\":\"Mouseflow\"}}]}"
          }
        },
        "response": {
          "status": 200,
          "statusText": "",
          "httpVersion": "http/2.0",
          "headers": [
            {
              "name": "status",
              "value": "200"
            },
            {
              "name": "date",
              "value": "Tue, 10 Mar 2020 08:31:48 GMT"
            },
            {
              "name": "content-type",
              "value": "application/json"
            },
            {
              "name": "content-length",
              "value": "21"
            },
            {
              "name": "access-control-allow-origin",
              "value": "https://workstation.theorchard.com"
            },
            {
              "name": "vary",
              "value": "Origin"
            }
          ],
          "cookies": [],
          "content": {
            "size": 21,
            "mimeType": "application/json",
            "text": "{\n  \"success\": true\n}"
          },
          "redirectURL": "",
          "headersSize": -1,
          "bodySize": -1,
          "_transferSize": 148
        },
        "cache": {},
        "timings": {
          "blocked": 0.9999999781027437,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.147,
          "wait": 217.62999999465794,
          "receive": 0.3380000125616789,
          "_blocked_queueing": 0.8379999781027436
        },
        "serverIPAddress": "54.201.197.201",
        "_initiator": {
          "type": "script",
          "stack": {
            "callFrames": [
              {
                "functionName": "new_send",
                "scriptId": "114",
                "url": "https://workstation.theorchard.com/scripts/csrf/csrfprotector.js",
                "lineNumber": 303,
                "columnNumber": 14
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 49900
              },
              {
                "functionName": "",
                "scriptId": "121",
                "url": "https://browser.sentry-cdn.com/5.12.1/bundle.min.js",
                "lineNumber": 1,
                "columnNumber": 15676
              },
              {
                "functionName": "o",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 6180
              },
              {
                "functionName": "o._flush",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 14889
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 8,
                "columnNumber": 24224
              },
              {
                "functionName": "",
                "scriptId": "116",
                "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                "lineNumber": 3,
                "columnNumber": 14502
              }
            ],
            "parent": {
              "description": "setInterval",
              "callFrames": [
                {
                  "functionName": "o.options",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 14477
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 24224
                },
                {
                  "functionName": "o._options",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 6201
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 24224
                },
                {
                  "functionName": "o.init.o.initialize",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 3,
                  "columnNumber": 1471
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 8,
                  "columnNumber": 24224
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 3961
                },
                {
                  "functionName": "3../analytics",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 4523
                },
                {
                  "functionName": "i",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 340
                },
                {
                  "functionName": "e",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 498
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 0,
                  "columnNumber": 526
                },
                {
                  "functionName": "",
                  "scriptId": "116",
                  "url": "https://cdn.segment.com/analytics.js/v1/38SQn7092M3aZn4AQWYwksOwBhOa0V2J/analytics.min.js",
                  "lineNumber": 12,
                  "columnNumber": 9093
                }
              ]
            }
          }
        },
        "_priority": "High",
        "_resourceType": "xhr",
        "connection": "1949654",
        "pageref": "page_1"
      }
    ]
  }
}