diff --git "a/01-poe-dataset-creation.ipynb" "b/01-poe-dataset-creation.ipynb" --- "a/01-poe-dataset-creation.ipynb" +++ "b/01-poe-dataset-creation.ipynb" @@ -30,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "5d0bd22f-293e-4c15-9dfe-8070553f42b5", "metadata": { "tags": [] @@ -44,14 +44,14 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "a1fc7a29-6b60-446d-b708-012f897de6a9", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "af2fe2013aaf49fa9e05fb75b1ddf89e", + "model_id": "6b7b5851e4944f36a31679d28c6d60e4", "version_major": 2, "version_minor": 0 }, @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "f17edf80-7318-4b65-ae60-7433a12ad8cb", "metadata": {}, "outputs": [], @@ -126,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "7925796f-6b90-4c43-8c22-e3906cfbdf3b", "metadata": { "tags": [] @@ -148,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "d8d7a40a-57af-45b9-bcea-8ac4c3ec0e61", "metadata": { "tags": [] @@ -405,7 +405,7 @@ "[8413 rows x 8 columns]" ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -482,7 +482,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "f42f3c34-f736-4e1c-b904-418caf2b0de1", "metadata": {}, "outputs": [], @@ -561,7 +561,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "eccb2f71-70a9-41fc-8235-d58b8876bdf1", "metadata": {}, "outputs": [], @@ -588,7 +588,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "bb6bf32e-9d2c-40a4-a10c-c1c3df16bf1f", "metadata": { "scrolled": true @@ -616,7 +616,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "c22bae14-d5c2-4ed0-8d52-f98d6a4f24b2", "metadata": {}, "outputs": [ @@ -670,7 +670,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "f6b86fc1-beb0-40c8-9293-0824b7926b7b", "metadata": {}, "outputs": [ @@ -723,12 +723,12 @@ "id": "a1150ae9-cc22-44c6-8a36-0e3d7c16111b", "metadata": {}, "source": [ - "### Final Answer Reasoning Structured Generation" + "### Final Answer Reasoning" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "e5437ce4-f6be-4b0e-88e8-d87f8256945e", "metadata": {}, "outputs": [], @@ -747,7 +747,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "f3393931-e8d8-48d7-8734-a6a8f6afc032", "metadata": { "scrolled": true @@ -783,7 +783,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "24dcc34d-6c78-42bb-b24f-ee715f27f405", "metadata": {}, "outputs": [ @@ -837,7 +837,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "c28f8e7e-bce0-4855-9d25-42a1f5e9b0cd", "metadata": {}, "outputs": [ @@ -882,12 +882,12 @@ "id": "2c9f0619-1467-4b4e-ad69-b5ca2c4e58a7", "metadata": {}, "source": [ - "### Final Answer Structured Generation" + "### Final Answer" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "5a48d4a6-66bd-4941-9227-720fb7cde805", "metadata": {}, "outputs": [], @@ -906,7 +906,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "23498249-1bee-424c-a0a2-db282c4e60b5", "metadata": { "scrolled": true @@ -938,7 +938,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "9b37bcf3-0a6a-41b4-934f-932687181947", "metadata": {}, "outputs": [ @@ -974,7 +974,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "id": "69a687d5-35ab-4abb-8bb8-f975fa7be3f7", "metadata": { "tags": [] @@ -991,7 +991,7 @@ " dtype='object')" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1002,7 +1002,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "id": "6ec3b6b5-a359-4da8-98c8-4dae75b8a2d4", "metadata": { "tags": [] @@ -1017,7 +1017,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "id": "f9f3a5a8-e4ea-4ed9-9fc0-fdd1a19b1c92", "metadata": { "tags": [] @@ -1413,7 +1413,7 @@ "[8413 rows x 14 columns]" ] }, - "execution_count": 21, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -1434,7 +1434,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "id": "3ed415c2-cdc7-4549-8edf-98030cb7c61c", "metadata": {}, "outputs": [], @@ -1443,7 +1443,7 @@ "\n", "def cast_content_keys_to_string(conversation):\n", " user_dict = conversation[2]\n", - " user_dict['content'] = str(user_dict['content'])\n", + " user_dict['content'] = json.dumps(user_dict['content'])\n", " return conversation\n", "\n", "# Apply the function to all columns\n", @@ -1466,7 +1466,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "id": "7903b9e7-36ee-463a-be38-06ee2614be1d", "metadata": {}, "outputs": [ @@ -1486,7 +1486,7 @@ " import pandas as pd\n", " import base64\n", "\n", - " encoded_data = \"eyJjb252ZXJzYXRpb25fUkZBX2dwdDNfNSI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcImEpIFNlY29uZHMgYW5kIG1pbnV0ZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIHRpbWUgaW50ZXJ2YWxzLiBTYXRlbGxpdGUgdGVjaG5vbG9neSBpcyB1c2VkIGZvciB2YXJpb3VzIHB1cnBvc2VzIHN1Y2ggYXMgY29tbXVuaWNhdGlvbiwgbmF2aWdhdGlvbiwgYW5kIHdlYXRoZXIgZm9yZWNhc3RpbmcsIGJ1dCBpdCBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyB0aW1lIGludGVydmFscy5cXG5cXG5iKSBUaGUgc3RyZW5ndGggYW5kIG1hZ25pdHVkZSBvZiBhbiBlYXJ0aHF1YWtlOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyBlYXJ0aHF1YWtlcy4gRWFydGhxdWFrZSBwcmVkaWN0aW9uIGlzIGEgY29tcGxleCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgc2Vpc21vbG9neSBhbmQgb3RoZXIgc2NpZW50aWZpYyBtZXRob2RzLCBidXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IG9uZSBvZiB0aGVtLlxcblxcbmQpIDcwLTc1IGRlZ3JlZXMgRmFocmVuaGVpdDogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IHVzZWQgZm9yIHByZWRpY3Rpbmcgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSB0ZW1wZXJhdHVyZSBkYXRhLCBpdCBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZXMuXFxuXFxuZSkgUmFwaWQgY2hhbmdlcyBvY2N1cjogVGhpcyBvcHRpb24gaXMgdG9vIHZhZ3VlIGFuZCBkb2VzIG5vdCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBjb3JyZWN0IG9yIG5vdC4gU2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgdG8gbW9uaXRvciBjaGFuZ2VzIGluIHZhcmlvdXMgZW52aXJvbm1lbnRhbCBmYWN0b3JzLCBidXQgaXQgaXMgbm90IHVzZWQgc3BlY2lmaWNhbGx5IGZvciBwcmVkaWN0aW5nIHJhcGlkIGNoYW5nZXMuXFxuXFxuZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IG9yIGFueSB0eXBlIG9mIHByZWRpY3Rpb24uXFxuXFxuZykgU25vdywgaWNlLCBhbmQgcm9jazogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgdG9vIHNwZWNpZmljIGFuZCBkb2VzIG5vdCBjb3ZlciB0aGUgYnJvYWQgcmFuZ2Ugb2YgcHJlZGljdGlvbnMgdGhhdCBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCBmb3IuIFdoaWxlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIHRvIG1vbml0b3Igc25vdywgaWNlLCBhbmQgcm9jayBmb3JtYXRpb25zLCBpdCBpcyBub3QgdXNlZCBleGNsdXNpdmVseSBmb3IgdGhpcyBwdXJwb3NlLlxcblxcbmgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgQ2Vsc2l1czogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgdG9vIHNwZWNpZmljIGFuZCBkb2VzIG5vdCBjb3ZlciB0aGUgYnJvYWQgcmFuZ2Ugb2YgdGVtcGVyYXR1cmUgcHJlZGljdGlvbnMgdGhhdCBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCBmb3IuIFdoaWxlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBwcm92aWRlIHRlbXBlcmF0dXJlIGRhdGEsIGl0IGlzIG5vdCB1c2VkIGV4Y2x1c2l2ZWx5IGZvciBwcmVkaWN0aW5nIHRlbXBlcmF0dXJlcyB3aXRoaW4gYSBzcGVjaWZpYyByYW5nZS5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBjKSB3aGF0IGl0J3MgbGlrZSBvdXRzaWRlIGVhY2ggZGF5LCBhcyBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBjb21tb25seSB1c2VkIGZvciB3ZWF0aGVyIGZvcmVjYXN0aW5nIGFuZCBwcmVkaWN0aW5nIGRhaWx5IHdlYXRoZXIgY29uZGl0aW9ucy5cIiwgJ2ZpbmFsX2Fuc3dlcic6ICdjJ30ifV0sICIxIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGlycmFkaWF0aW5nIGZvb2QgZG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFJlbGlldmUgcGFpbiAoYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzIChjKSBJbXByb3ZlcyBmb29kIHNhZmV0eSAoZCkgQWxsb3dzIGdyb3d0aCBvZiBiYWN0ZXJpYSAoZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGUgKGYpIENoZW1pY2FsIGNoYW5nZXMgKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZCAoaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcIihhKSBSZWxpZXZlIHBhaW46IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHJlbGlldmluZyBwYWluLiBJcnJhZGlhdGlvbiBpcyBhIHByb2Nlc3Mgb2YgZXhwb3NpbmcgZm9vZCB0byBpb25pemluZyByYWRpYXRpb24gdG8ga2lsbCBiYWN0ZXJpYSwgdmlydXNlcywgYW5kIG90aGVyIHBhdGhvZ2VucyB0aGF0IG1heSBiZSBwcmVzZW50IGluIHRoZSBmb29kLiBJdCBpcyBub3QgYSBwYWluIHJlbGlldmVyLlxcblxcbihiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBkb2VzIG5vdCBlbmhhbmNlIHRoZSBmb29kJ3MgbnV0cmllbnRzLiBJbiBmYWN0LCBzb21lIHN0dWRpZXMgaGF2ZSBzaG93biB0aGF0IGlycmFkaWF0aW9uIGNhbiBjYXVzZSBhIHNsaWdodCBsb3NzIG9mIGNlcnRhaW4gdml0YW1pbnMgaW4gZm9vZC4gSG93ZXZlciwgdGhlIGxvc3MgaXMgbm90IHNpZ25pZmljYW50IGVub3VnaCB0byBhZmZlY3QgdGhlIG92ZXJhbGwgbnV0cml0aW9uYWwgdmFsdWUgb2YgdGhlIGZvb2QuXFxuXFxuKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWE6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBhY3R1YWxseSBraWxscyBiYWN0ZXJpYSBhbmQgb3RoZXIgcGF0aG9nZW5zIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIGZvb2QuIEl0IGRvZXMgbm90IGFsbG93IHRoZSBncm93dGggb2YgYmFjdGVyaWEuXFxuXFxuKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgY2FuIGFjdHVhbGx5IGhlbHAgcmVkdWNlIGZvb2Qgd2FzdGUuIEJ5IGtpbGxpbmcgYmFjdGVyaWEgYW5kIG90aGVyIHBhdGhvZ2VucywgaXJyYWRpYXRpb24gY2FuIGV4dGVuZCB0aGUgc2hlbGYgbGlmZSBvZiBmb29kLCB3aGljaCBtZWFucyBsZXNzIGZvb2QgaXMgd2FzdGVkLlxcblxcbihmKSBDaGVtaWNhbCBjaGFuZ2VzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgY2FuIGNhdXNlIHNvbWUgY2hlbWljYWwgY2hhbmdlcyBpbiB0aGUgZm9vZCwgYnV0IHRoZXNlIGNoYW5nZXMgYXJlIG5vdCBoYXJtZnVsIHRvIGh1bWFuIGhlYWx0aC4gSW4gZmFjdCwgdGhlIFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb24sIHRoZSBVLlMuIEZvb2QgYW5kIERydWcgQWRtaW5pc3RyYXRpb24sIGFuZCBvdGhlciBvcmdhbml6YXRpb25zIGhhdmUgZGV0ZXJtaW5lZCB0aGF0IGlycmFkaWF0ZWQgZm9vZCBpcyBzYWZlIHRvIGVhdC5cXG5cXG4oZykgR2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgZG9lcyBub3QgZ2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkLiBJdCBpcyBhIHByb2Nlc3Mgb2YgZXhwb3NpbmcgZm9vZCB0byBpb25pemluZyByYWRpYXRpb24gdG8ga2lsbCBiYWN0ZXJpYSwgdmlydXNlcywgYW5kIG90aGVyIHBhdGhvZ2VucyB0aGF0IG1heSBiZSBwcmVzZW50IGluIHRoZSBmb29kLlxcblxcbihoKSBNYWpvciB0aHJlYXQgdG8gaGVhbHRoOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0ZWQgZm9vZCBpcyBub3QgYSBtYWpvciB0aHJlYXQgdG8gaGVhbHRoLiBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb24sIHRoZSBVLlMuIEZvb2QgYW5kIERydWcgQWRtaW5pc3RyYXRpb24sIGFuZCBvdGhlciBvcmdhbml6YXRpb25zIGhhdmUgZGV0ZXJtaW5lZCB0aGF0IGlycmFkaWF0ZWQgZm9vZCBpcyBzYWZlIHRvIGVhdC4gSW4gZmFjdCwgaXJyYWRpYXRpb24gY2FuIGhlbHAgcmVkdWNlIHRoZSByaXNrIG9mIGZvb2Rib3JuZSBpbGxuZXNzIGJ5IGtpbGxpbmcgYmFjdGVyaWEgYW5kIG90aGVyIHBhdGhvZ2VucyB0aGF0IG1heSBiZSBwcmVzZW50IGluIHRoZSBmb29kLlwiLCAnZmluYWxfYW5zd2VyJzogJ2MnfSJ9XSwgIjIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRmliZXIgZm9sbGljbGVzIChiKSBFeGZvbGlhdGlvbiAoYykgUmVzaXN0YW5jZSAoZCkgTGF5ZXJzIG9mIGZhdCAoZSkgRXZhcG9yYXRpb24gKGYpIEEgY3V0aWNsZSAoZykgU2Vuc29yeSBuZXVyb25zIChoKSBGdXIgYW5kIGZhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiAnYikgRXhmb2xpYXRpb246IEV4Zm9saWF0aW9uIGlzIHRoZSBwcm9jZXNzIG9mIHNoZWRkaW5nIGRlYWQgc2tpbiBjZWxscyBmcm9tIHRoZSBzdXJmYWNlIG9mIHRoZSBza2luLiBXaGlsZSB0aGlzIGlzIGFuIGltcG9ydGFudCBwcm9jZXNzIGZvciBtYWludGFpbmluZyBoZWFsdGh5IHNraW4sIGl0IGRvZXMgbm90IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuYykgUmVzaXN0YW5jZTogUmVzaXN0YW5jZSBpcyBhIHZhZ3VlIHRlcm0gYW5kIGRvZXMgbm90IHByb3ZpZGUgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgcHJvdGVjdHMgdGhlIHNraW4uXFxuXFxuZCkgTGF5ZXJzIG9mIGZhdDogV2hpbGUgbGF5ZXJzIG9mIGZhdCBjYW4gcHJvdmlkZSBpbnN1bGF0aW9uIGFuZCBjdXNoaW9uaW5nIGZvciB0aGUgc2tpbiwgdGhleSBkbyBub3QgZGlyZWN0bHkgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG5lKSBFdmFwb3JhdGlvbjogRXZhcG9yYXRpb24gaXMgYSBwcm9jZXNzIGJ5IHdoaWNoIGEgbGlxdWlkIHR1cm5zIGludG8gYSBnYXMuIEl0IGRvZXMgbm90IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuZikgQSBjdXRpY2xlOiBBIGN1dGljbGUgaXMgYSBwcm90ZWN0aXZlIGxheWVyIHRoYXQgY292ZXJzIHRoZSBzdXJmYWNlIG9mIHNvbWUgb3JnYW5pc21zLCBzdWNoIGFzIHBsYW50cyBhbmQgaW5zZWN0cy4gSG93ZXZlciwgbWFtbWFscyBkbyBub3QgaGF2ZSBhIGN1dGljbGUuXFxuXFxuZykgU2Vuc29yeSBuZXVyb25zOiBTZW5zb3J5IG5ldXJvbnMgYXJlIG5lcnZlIGNlbGxzIHRoYXQgdHJhbnNtaXQgc2Vuc29yeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBib2R5IHRvIHRoZSBicmFpbi4gV2hpbGUgdGhleSBwbGF5IGFuIGltcG9ydGFudCByb2xlIGluIHRoZSBuZXJ2b3VzIHN5c3RlbSwgdGhleSBkbyBub3QgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG5oKSBGdXIgYW5kIGZhdDogVGhpcyBpcyBhIGNvcnJlY3QgYW5zd2VyLiBGdXIgYW5kIGZhdCBwcm92aWRlIGluc3VsYXRpb24gYW5kIHByb3RlY3Rpb24gZm9yIHRoZSBza2luLiBIb3dldmVyLCB0aGUgcXVlc3Rpb24gc3BlY2lmaWNhbGx5IGFza3Mgd2hhdCBwcm90ZWN0cyB0aGUgc2tpbiwgYW5kIGZpYmVyIGZvbGxpY2xlcyBhcmUgdGhlIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBza2luIHRoYXQgcHJvdmlkZSB0aGUgbW9zdCBkaXJlY3QgcHJvdGVjdGlvbi4nLCAnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvIGVhcnRod29ybXMgZG8gd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRGllcyAoYikgUmVncm93cyBpdCAoYykgUmVwcm9kdWNlcyAoZCkgU2VkaW1lbnQgKGUpIFJvb3QgZ3Jvd3RoIChmKSBNaWdyYXRlIChnKSBTdG9wcyBncm93aW5nIChoKSBSb290cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiAnYSkgRGllczogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBlYXJ0aHdvcm1zIGRvIG5vdCBkaWUgd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZi4gV2hpbGUgaXQgbWF5IGJlIGEgdHJhdW1hdGljIGV4cGVyaWVuY2UgZm9yIHRoZSBlYXJ0aHdvcm0sIHRoZXkgYXJlIGFibGUgdG8gcmVnZW5lcmF0ZSB0aGUgbG9zdCBzZWdtZW50LlxcblxcbmMpIFJlcHJvZHVjZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgZWFydGh3b3JtcyBkbyBub3QgcmVwcm9kdWNlIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmYuIFJlcHJvZHVjdGlvbiBpbiBlYXJ0aHdvcm1zIGludm9sdmVzIHRoZSBleGNoYW5nZSBvZiBzcGVybSBiZXR3ZWVuIHR3byBpbmRpdmlkdWFscywgYW5kIGRvZXMgbm90IGludm9sdmUgdGhlIGxvc3Mgb2Ygc2VnbWVudHMuXFxuXFxuZCkgU2VkaW1lbnQ6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBTZWRpbWVudCByZWZlcnMgdG8gdGhlIG1hdGVyaWFsIHRoYXQgc2V0dGxlcyBhdCB0aGUgYm90dG9tIG9mIGEgYm9keSBvZiB3YXRlciBvciBvdGhlciBsaXF1aWQuXFxuXFxuZSkgUm9vdCBncm93dGg6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBSb290IGdyb3d0aCByZWZlcnMgdG8gdGhlIGdyb3d0aCBvZiByb290cyBpbiBwbGFudHMsIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGVhcnRod29ybXMuXFxuXFxuZikgTWlncmF0ZTogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIE1pZ3JhdGlvbiByZWZlcnMgdG8gdGhlIG1vdmVtZW50IG9mIGFuaW1hbHMgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlciwgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZWFydGh3b3JtcyByZWdlbmVyYXRpbmcgbG9zdCBzZWdtZW50cy5cXG5cXG5nKSBTdG9wcyBncm93aW5nOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGVhcnRod29ybXMgZG8gbm90IHN0b3AgZ3Jvd2luZyB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLiBXaGlsZSB0aGUgbG9zdCBzZWdtZW50IG1heSB0YWtlIHNvbWUgdGltZSB0byByZWdlbmVyYXRlLCB0aGUgZWFydGh3b3JtIHdpbGwgY29udGludWUgdG8gZ3JvdyBhbmQgbW92ZS5cXG5cXG5oKSBSb290czogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIFJvb3RzIHJlZmVyIHRvIHRoZSBwYXJ0IG9mIGEgcGxhbnQgdGhhdCB0eXBpY2FsbHkgbGllcyBiZWxvdyB0aGUgc3VyZmFjZSBvZiB0aGUgc29pbCwgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZWFydGh3b3JtcyByZWdlbmVyYXRpbmcgbG9zdCBzZWdtZW50cy4nLCAnZmluYWxfYW5zd2VyJzogJ2InfSJ9XSwgIjQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBMaWdodG5pbmcgY2FuIGJlIGJhZCBmb3Igd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVGhlIGVudmlyb25tZW50IChiKSBSYWluc3Rvcm1zIChjKSBEZXN0cnVjdGlvbiAoZCkgVmlzaWJpbGl0eSAoZSkgVGh1bmRlciAoZikgVGhlIHN1biAoZykgVGhlIHdlYXRoZXIuIChoKSBUcmFuc3BvcnRhdGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiAnYikgUmFpbnN0b3JtczogTGlnaHRuaW5nIGlzIGFjdHVhbGx5IGEgbmF0dXJhbCBwaGVub21lbm9uIHRoYXQgb2NjdXJzIGR1cmluZyByYWluc3Rvcm1zLiBJdCBpcyBub3QgYmFkIGZvciByYWluc3Rvcm1zLCBidXQgcmF0aGVyIGEgcGFydCBvZiB0aGUgc3Rvcm0uXFxuXFxuYykgRGVzdHJ1Y3Rpb246IFdoaWxlIGxpZ2h0bmluZyBjYW4gY2F1c2UgZGVzdHJ1Y3Rpb24sIHRoZSBxdWVzdGlvbiBpcyBhc2tpbmcgd2hhdCBsaWdodG5pbmcgY2FuIGJlIGJhZCBmb3IsIG5vdCB3aGF0IGl0IGNhbiBjYXVzZS5cXG5cXG5kKSBWaXNpYmlsaXR5OiBMaWdodG5pbmcgY2FuIGFjdHVhbGx5IGltcHJvdmUgdmlzaWJpbGl0eSBkdXJpbmcgYSBzdG9ybSBieSBpbGx1bWluYXRpbmcgdGhlIHN1cnJvdW5kaW5ncy4gSXQgaXMgbm90IGJhZCBmb3IgdmlzaWJpbGl0eS5cXG5cXG5lKSBUaHVuZGVyOiBUaHVuZGVyIGlzIGFjdHVhbGx5IGNhdXNlZCBieSBsaWdodG5pbmcsIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRodW5kZXIuXFxuXFxuZikgVGhlIHN1bjogTGlnaHRuaW5nIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBzdW4sIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRoZSBzdW4uXFxuXFxuZykgVGhlIHdlYXRoZXI6IExpZ2h0bmluZyBpcyBhIHBhcnQgb2YgdGhlIHdlYXRoZXIsIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRoZSB3ZWF0aGVyLlxcblxcbmgpIFRyYW5zcG9ydGF0aW9uOiBMaWdodG5pbmcgY2FuIGJlIGRhbmdlcm91cyBmb3IgdHJhbnNwb3J0YXRpb24sIGJ1dCB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIHdoYXQgbGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yIGluIGdlbmVyYWwsIG5vdCBzcGVjaWZpY2FsbHkgZm9yIHRyYW5zcG9ydGF0aW9uLlxcblxcblRoZXJlZm9yZSwgdGhlIG9ubHkgbG9naWNhbCBhbnN3ZXIgaXMgYSkgdGhlIGVudmlyb25tZW50LiBMaWdodG5pbmcgY2FuIHN0YXJ0IHdpbGRmaXJlcywgZGFtYWdlIHRyZWVzIGFuZCBvdGhlciB2ZWdldGF0aW9uLCBhbmQgY2F1c2Ugc29pbCBlcm9zaW9uLCB3aGljaCBjYW4gYWxsIGhhdmUgbmVnYXRpdmUgaW1wYWN0cyBvbiB0aGUgZW52aXJvbm1lbnQuJywgJ2ZpbmFsX2Fuc3dlcic6ICdhJ30ifV0sICI1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgd2hhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU291bHMgKGIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXMgKGMpIE9yZ2FuaXNtcyAoZCkgUGxhbnQgb3IgYW5pbWFsIChlKSBNYWxlcyBhbmQgZmVtYWxlcyAoZikgRGVmb3Jlc3RhdGlvbiAoZykgUmVpbmNhcm5hdGlvbiAoaCkgSW1wb3J0YW50IGhhYml0YXRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6ICdhKSBTb3VsczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBzb3VscyBhcmUgbm90IHBoeXNpY2FsIGVudGl0aWVzIHRoYXQgY2FuIGxlYXZlIGV2aWRlbmNlIG9mIHRoZWlyIHByZXNlbmNlIGluIGEgcGxhY2UuIFNvdWxzIGFyZSBiZWxpZXZlZCB0byBiZSBzcGlyaXR1YWwgZW50aXRpZXMgdGhhdCBhcmUgbm90IGJvdW5kIGJ5IHBoeXNpY2FsIGxhd3MuXFxuXFxuYikgQW5pbWFscyB3aXRoIGJhY2tib25lczogVGhpcyBvcHRpb24gaXMgbm90IGNvbXBsZXRlbHkgY29ycmVjdCBiZWNhdXNlIG5vdCBhbGwgYW5pbWFscyBoYXZlIGJhY2tib25lcy4gSW52ZXJ0ZWJyYXRlcywgc3VjaCBhcyBpbnNlY3RzIGFuZCBtb2xsdXNrcywgZG8gbm90IGhhdmUgYmFja2JvbmVzLiBUaGVyZWZvcmUsIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW5ub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgYW5pbWFscyB3aXRoIGJhY2tib25lcyBsaXZlZCBpbiBhIHBsYWNlLlxcblxcbmMpIE9yZ2FuaXNtczogVGhpcyBvcHRpb24gaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbi4gRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgYW55IHR5cGUgb2Ygb3JnYW5pc20gb25jZSBsaXZlZCBpbiBhIHBsYWNlLCBpbmNsdWRpbmcgYmFjdGVyaWEsIGZ1bmdpLCBhbmQgcHJvdGlzdHMuXFxuXFxuZCkgUGxhbnQgb3IgYW5pbWFsOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IGEgcGxhbnQgb3IgYW5pbWFsIG9uY2UgbGl2ZWQgaW4gYSBwbGFjZS4gRm9zc2lscywgZm9yIGV4YW1wbGUsIHByb3ZpZGUgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGFuZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCB0eXBlcyBvZiBwbGFudHMgYW5kIGFuaW1hbHMgbGl2ZWQgaW4gYSBwYXJ0aWN1bGFyIGFyZWEuXFxuXFxuZSkgTWFsZXMgYW5kIGZlbWFsZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbm5vdCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2V4IG9mIHRoZSBvcmdhbmlzbXMgdGhhdCBvbmNlIGxpdmVkIGluIGEgcGxhY2UuIEZvc3NpbHMgZG8gbm90IHR5cGljYWxseSBwcmVzZXJ2ZSBzZXh1YWwgY2hhcmFjdGVyaXN0aWNzLlxcblxcbmYpIERlZm9yZXN0YXRpb246IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZGVmb3Jlc3RhdGlvbiBpcyBhIGh1bWFuIGFjdGl2aXR5IHRoYXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgcGFzdCBsaWZlIGluIGEgcGxhY2UuXFxuXFxuZykgUmVpbmNhcm5hdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSByZWluY2FybmF0aW9uIGlzIGEgcmVsaWdpb3VzIG9yIHBoaWxvc29waGljYWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IHByb3ZpZGUgYW55IHNjaWVudGlmaWMgZXZpZGVuY2UgYWJvdXQgcGFzdCBsaWZlIGluIGEgcGxhY2UuXFxuXFxuaCkgSW1wb3J0YW50IGhhYml0YXRzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGltcG9ydGFudCBoYWJpdGF0cy4gV2hpbGUgY2VydGFpbiBhcmVhcyBtYXkgaGF2ZSBiZWVuIGltcG9ydGFudCBoYWJpdGF0cyBpbiB0aGUgcGFzdCwgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBhbHNvIGJlIGZvdW5kIGluIGFyZWFzIHRoYXQgd2VyZSBub3QgaW1wb3J0YW50IGhhYml0YXRzLicsICdmaW5hbF9hbnN3ZXInOiAnZCd9In1dLCAiNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLCBvciBpbmhlcml0ZWQsIGlzIGZvdW5kIGluIGluZm9ybWF0aW9uIGluIGFuIG9yZ2FuaXNtJ3Mgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU3BlY2llcyAoYikgTWVzc2VuZ2VycyAoYykgSGFpciBmb2xsaWNsZXMgKGQpIEN5Y2xlcyAoZSkgU2tpbiBjZWxscyAoZikgRW5kb2NyaW5lIHN5c3RlbSAoZykgQ2hyb21vc29tZXMgKGgpIFByb3RlaW5zIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiKGEpIFNwZWNpZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNwZWNpZXMgcmVmZXIgdG8gYSBncm91cCBvZiBvcmdhbmlzbXMgdGhhdCBzaGFyZSBzaW1pbGFyIGNoYXJhY3RlcmlzdGljcyBhbmQgY2FuIGludGVyYnJlZWQgdG8gcHJvZHVjZSBmZXJ0aWxlIG9mZnNwcmluZy4gSXQgZG9lcyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oYikgTWVzc2VuZ2VyczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgbWVzc2VuZ2VycyByZWZlciB0byBtb2xlY3VsZXMgc3VjaCBhcyBob3Jtb25lcyBhbmQgbmV1cm90cmFuc21pdHRlcnMgdGhhdCB0cmFuc21pdCBzaWduYWxzIGJldHdlZW4gY2VsbHMuIFdoaWxlIHRoZXkgcGxheSBhIHJvbGUgaW4gdmFyaW91cyBiaW9sb2dpY2FsIHByb2Nlc3NlcywgdGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oYykgSGFpciBmb2xsaWNsZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGhhaXIgZm9sbGljbGVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBza2luIHRoYXQgcHJvZHVjZSBoYWlyLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihkKSBDeWNsZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGN5Y2xlcyByZWZlciB0byByZWN1cnJpbmcgZXZlbnRzIG9yIHByb2Nlc3NlcyBzdWNoIGFzIHRoZSBtZW5zdHJ1YWwgY3ljbGUgb3IgdGhlIHdhdGVyIGN5Y2xlLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihlKSBTa2luIGNlbGxzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBza2luIGNlbGxzIGFyZSBjZWxscyB0aGF0IG1ha2UgdXAgdGhlIG91dGVyIGxheWVyIG9mIHRoZSBza2luLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihmKSBFbmRvY3JpbmUgc3lzdGVtOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSB0aGUgZW5kb2NyaW5lIHN5c3RlbSBpcyBhIHN5c3RlbSBvZiBnbGFuZHMgdGhhdCBwcm9kdWNlIGFuZCBzZWNyZXRlIGhvcm1vbmVzLiBXaGlsZSBob3Jtb25lcyBwbGF5IGEgcm9sZSBpbiB2YXJpb3VzIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzLCB0aGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihnKSBDaHJvbW9zb21lczogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIENocm9tb3NvbWVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBudWNsZXVzIG9mIGEgY2VsbCB0aGF0IGNvbnRhaW4gZ2VuZXRpYyBpbmZvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBETkEuIFRyYWl0cyBhcmUgcGFzc2VkIGRvd24gZnJvbSBvbmUgZ2VuZXJhdGlvbiB0byB0aGUgbmV4dCB0aHJvdWdoIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYW4gb3JnYW5pc20ncyBjaHJvbW9zb21lcy5cXG5cXG4oaCkgUHJvdGVpbnM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHByb3RlaW5zIGFyZSBtb2xlY3VsZXMgbWFkZSB1cCBvZiBhbWlubyBhY2lkcyB0aGF0IHBlcmZvcm0gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIGJvZHkuIFdoaWxlIHRoZXkgcGxheSBhIHJvbGUgaW4gdmFyaW91cyBiaW9sb2dpY2FsIHByb2Nlc3NlcywgdGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cIiwgJ2ZpbmFsX2Fuc3dlcic6ICdnJ30ifV0sICI3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBhcmUgdGhlIG1ham9yIHByb2R1Y2VycyBpbiB0ZW1wZXJhdHVyZSBhbmQgcHJlY2lwaXRhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgR3Jhc3MgKGIpIEFuaW1hbHMgKGMpIEFwcGxlcyAoZCkgUG90YXRvZXMgKGUpIFRyZWVzIChmKSBQbGFudHMgKGcpIEZ1bmdpIChoKSBGaWVsZHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogXCIoYSkgR3Jhc3M6IFdoaWxlIGdyYXNzIGlzIGEgdHlwZSBvZiBwbGFudCwgaXQgaXMgbm90IHRoZSBvbmx5IHR5cGUgb2YgcGxhbnQuIEFkZGl0aW9uYWxseSwgdGhlIHF1ZXN0aW9uIHNwZWNpZmljYWxseSBhc2tzIGFib3V0ICdtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24sJyBhbmQgZ3Jhc3MgaXMgbm90IG5lY2Vzc2FyaWx5IGEgbWFqb3IgcHJvZHVjZXIgaW4gdGhlc2UgYXJlYXMuXFxuXFxuKGIpIEFuaW1hbHM6IEFuaW1hbHMgYXJlIG5vdCBwcm9kdWNlcnMsIHRoZXkgYXJlIGNvbnN1bWVycy4gVGhleSBkbyBub3QgcHJvZHVjZSBlbmVyZ3kgZnJvbSBzdW5saWdodCwgd2F0ZXIsIGFuZCBjYXJib24gZGlveGlkZSBsaWtlIHBsYW50cyBkby5cXG5cXG4oYykgQXBwbGVzOiBBcHBsZXMgYXJlIGEgdHlwZSBvZiBmcnVpdCB0aGF0IGdyb3cgb24gdHJlZXMsIGJ1dCB0aGV5IGFyZSBub3QgcHJvZHVjZXJzIGluIGFuZCBvZiB0aGVtc2VsdmVzLiBUaGUgdHJlZXMgdGhhdCBwcm9kdWNlIGFwcGxlcyBhcmUgdGhlIHByb2R1Y2Vycy5cXG5cXG4oZCkgUG90YXRvZXM6IFBvdGF0b2VzIGFyZSBhIHR5cGUgb2YgdmVnZXRhYmxlIHRoYXQgZ3JvdyB1bmRlcmdyb3VuZCwgYnV0IHRoZXkgYXJlIG5vdCBwcm9kdWNlcnMgaW4gYW5kIG9mIHRoZW1zZWx2ZXMuIFRoZSBwbGFudHMgdGhhdCBwcm9kdWNlIHBvdGF0b2VzIGFyZSB0aGUgcHJvZHVjZXJzLlxcblxcbihlKSBUcmVlczogVHJlZXMgYXJlIGEgdHlwZSBvZiBwbGFudCBhbmQgYXJlIGluZGVlZCBtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24uIFRoZXkgYWJzb3JiIGNhcmJvbiBkaW94aWRlIGFuZCByZWxlYXNlIG94eWdlbiwgYW5kIHRoZXkgYWxzbyBoZWxwIHJlZ3VsYXRlIHRoZSB0ZW1wZXJhdHVyZSBhbmQgbW9pc3R1cmUgbGV2ZWxzIGluIHRoZWlyIGVudmlyb25tZW50LlxcblxcbihnKSBGdW5naTogRnVuZ2kgYXJlIG5vdCBwcm9kdWNlcnMsIHRoZXkgYXJlIGRlY29tcG9zZXJzLiBUaGV5IGJyZWFrIGRvd24gZGVhZCBvcmdhbmljIG1hdHRlciBhbmQgcmVjeWNsZSBudXRyaWVudHMgYmFjayBpbnRvIHRoZSBlY29zeXN0ZW0uXFxuXFxuKGgpIEZpZWxkczogRmllbGRzIGFyZSBub3QgbGl2aW5nIG9yZ2FuaXNtcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBwcm9kdWNlcnMuIFRoZXkgYXJlIHNpbXBseSBhcmVhcyBvZiBsYW5kIHVzZWQgZm9yIGdyb3dpbmcgY3JvcHMgb3IgcmFpc2luZyBsaXZlc3RvY2suXFxuXFxuSW4gc3VtbWFyeSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChmKSBwbGFudHMsIHNwZWNpZmljYWxseSB0aG9zZSB0aGF0IHVzZSBwaG90b3N5bnRoZXNpcyB0byBwcm9kdWNlIGVuZXJneSBmcm9tIHN1bmxpZ2h0LCB3YXRlciwgYW5kIGNhcmJvbiBkaW94aWRlLlwiLCAnZmluYWxfYW5zd2VyJzogJ2YnfSJ9XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogJyhhKSBTY2FyY2UgcmVzb3VyY2VzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNjYXJjZSByZXNvdXJjZXMuIFNjYXJjZSByZXNvdXJjZXMgYXJlIHJlc291cmNlcyB0aGF0IGFyZSBsaW1pdGVkIGluIGF2YWlsYWJpbGl0eSwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgYSBsaW1pdGVkIHJlc291cmNlLlxcblxcbihiKSBIYXJtZnVsIHN1YnN0YW5jZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gaGFybWZ1bCBzdWJzdGFuY2VzLiBIYXJtZnVsIHN1YnN0YW5jZXMgYXJlIHN1YnN0YW5jZXMgdGhhdCBjYW4gY2F1c2UgaGFybSBvciBkYW1hZ2UsIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGhhcm1mdWwuXFxuXFxuKGMpIFNjYXJzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNjYXJzLiBTY2FycyBhcmUgbWFya3MgbGVmdCBvbiB0aGUgc2tpbiBvciBvdGhlciB0aXNzdWUgYWZ0ZXIgYSB3b3VuZCBoYXMgaGVhbGVkLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBhIHdvdW5kLlxcblxcbihlKSBTZWRpbWVudDogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzZWRpbWVudC4gU2VkaW1lbnQgaXMgYSBuYXR1cmFsbHkgb2NjdXJyaW5nIG1hdGVyaWFsIHRoYXQgaXMgYnJva2VuIGRvd24gYnkgd2VhdGhlcmluZyBhbmQgZXJvc2lvbiwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgc2VkaW1lbnQuXFxuXFxuKGYpIFNvbWV0aGluZyB0byBtb3ZlOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNvbWV0aGluZyB0byBtb3ZlLiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvcHRpb25zLlxcblxcbihnKSBNYWdpYzogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBtYWdpYy4gTWFnaWMgaXMgYSBzdXBlcm5hdHVyYWwgZm9yY2UgdGhhdCBpcyBub3QgYmFzZWQgb24gc2NpZW5jZSBvciByZWFzb24sIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIHN1cGVybmF0dXJhbC5cXG5cXG4oaCkgUGljbmljczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBwaWNuaWNzLiBQaWNuaWNzIGFyZSBvdXRkb29yIG1lYWxzIG9yIHNvY2lhbCBnYXRoZXJpbmdzLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBhIHNvY2lhbCBnYXRoZXJpbmcuJywgJ2ZpbmFsX2Fuc3dlcic6ICdkJ30ifV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogJ2EpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIHRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiBBbmltYWxzIGhhdmUgZGlmZmVyZW50IHdheXMgb2YgcmVndWxhdGluZyB0aGVpciBib2R5IHRlbXBlcmF0dXJlLCBzdWNoIGFzIHN3ZWF0aW5nLCBwYW50aW5nLCBvciBoaWJlcm5hdGlvbi4gSG93ZXZlciwgaWYgdGhlIGVudmlyb25tZW50IGJlY29tZXMgdG9vIGV4dHJlbWUsIGFuaW1hbHMgbWF5IG1vdmUgdG8gYSBtb3JlIHN1aXRhYmxlIGFyZWEuXFxuXFxuYikgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgdG8gcmV1c2UgbWF0ZXJpYWxzLiBUaGlzIG9wdGlvbiBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24gYW5kIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYW5pbWFsIG1vdmVtZW50LlxcblxcbmQpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIGlmIHRoZXkgYXJlIGJvcmVkLiBCb3JlZG9tIGlzIGEgaHVtYW4gZW1vdGlvbiBhbmQgYW5pbWFscyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBjYXBhY2l0eSBmb3IgYm9yZWRvbSBhcyBodW1hbnMgZG8uIEFuaW1hbHMgbW92ZSBmb3Igc3Vydml2YWwgcmVhc29ucyBzdWNoIGFzIGZpbmRpbmcgZm9vZCwgd2F0ZXIsIG9yIHNoZWx0ZXIuXFxuXFxuZSkgTWFyc2hlcyBhbmQgc3dhbXBzIGFyZSBub3QgYSByZWFzb24gZm9yIGFuaW1hbCBtb3ZlbWVudC4gTWFyc2hlcyBhbmQgc3dhbXBzIGFyZSB0eXBlcyBvZiBoYWJpdGF0cyB3aGVyZSBhbmltYWxzIG1heSBsaXZlLCBidXQgdGhleSBkbyBub3QgY2F1c2UgYW5pbWFscyB0byBtb3ZlIHRvIGFub3RoZXIgYXJlYS5cXG5cXG5mKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGhhdmUgdG9vIG11Y2ggbW9uZXkuIFRoaXMgb3B0aW9uIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbiBhbmQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBhbmltYWwgbW92ZW1lbnQuXFxuXFxuZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgaXMgYSB3ZWF0aGVyIHBoZW5vbWVub24gYW5kIGRvZXMgbm90IGNhdXNlIGFuaW1hbHMgdG8gbW92ZSB0byBhbm90aGVyIGFyZWEuXFxuXFxuaCkgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QuIEFuaW1hbHMgbWF5IHN0b3JlIGZvb2QgZm9yIGxhdGVyIHVzZSwgYnV0IHRoZXkgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIGlmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIGlmIGFuaW1hbHMgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCB0aGV5IHdpbGwgbW92ZSB0byBhbm90aGVyIGFyZWEuIFRoaXMgaXMgYmVjYXVzZSBhbmltYWxzIG5lZWQgZm9vZCB0byBzdXJ2aXZlLCBhbmQgaWYgdGhleSBjYW5ub3QgZmluZCBmb29kIGluIHRoZWlyIGN1cnJlbnQgbG9jYXRpb24sIHRoZXkgd2lsbCBtb3ZlIHRvIGFub3RoZXIgYXJlYSB3aGVyZSBmb29kIGlzIGF2YWlsYWJsZS4nLCAnZmluYWxfYW5zd2VyJzogJ2MnfSJ9XSwgIjEwIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBLaW5ldGljIGVuZXJneSAoYikgTG91ZCBub2lzZXMgKGMpIFZpYnJhdGluZyB3YXZlcyAoZCkgQW4gb2JqZWN0IGlzIHNlZW4gKGUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgKGYpIERlb3h5cmlib251Y2xlaWMgYWNpZCAoZykgSHlkcm9nZW4gYW5kIG94eWdlbiAoaCkgSGFybWZ1bCBzdWJzdGFuY2VzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6ICdhKSBLaW5ldGljIGVuZXJneTogS2luZXRpYyBlbmVyZ3kgaXMgdGhlIGVuZXJneSBvZiBtb3Rpb24uIFdoaWxlIGEgZmlyZWNyYWNrZXIgZG9lcyBwcm9kdWNlIHNvbWUgbW90aW9uLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpdCBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50by4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYikgTG91ZCBub2lzZXM6IFdoaWxlIGEgZmlyZWNyYWNrZXIgZG9lcyBwcm9kdWNlIGxvdWQgbm9pc2VzLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpdCBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50by4gVGhlIGxvdWQgbm9pc2VzIGFyZSBhIHJlc3VsdCBvZiB0aGUgdmlicmF0aW5nIHdhdmVzIHByb2R1Y2VkIGJ5IHRoZSBmaXJlY3JhY2tlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZCkgQW4gb2JqZWN0IGlzIHNlZW46IEEgZmlyZWNyYWNrZXIgZG9lcyBub3QgY29udmVydCBjaGVtaWNhbCBlbmVyZ3kgaW50byB0aGUgYWJpbGl0eSB0byBzZWUgYW4gb2JqZWN0LiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneTogRWxlY3Ryb21hZ25ldGljIGVuZXJneSBpcyBhIGZvcm0gb2YgZW5lcmd5IHRoYXQgaW5jbHVkZXMgcmFkaW8gd2F2ZXMsIG1pY3Jvd2F2ZXMsIGluZnJhcmVkIHJhZGlhdGlvbiwgdmlzaWJsZSBsaWdodCwgdWx0cmF2aW9sZXQgcmFkaWF0aW9uLCBYLXJheXMsIGFuZCBnYW1tYSByYXlzLiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gZWxlY3Ryb21hZ25ldGljIGVuZXJneS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkOiBEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSkgaXMgYSBtb2xlY3VsZSB0aGF0IGNhcnJpZXMgZ2VuZXRpYyBpbnN0cnVjdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCwgZnVuY3Rpb25pbmcsIGdyb3d0aCwgYW5kIHJlcHJvZHVjdGlvbiBvZiBhbGwgbGl2aW5nIHRoaW5ncy4gQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIEROQS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZykgSHlkcm9nZW4gYW5kIG94eWdlbjogSHlkcm9nZW4gYW5kIG94eWdlbiBhcmUgZWxlbWVudHMgdGhhdCBjYW4gY29tYmluZSB0byBmb3JtIHdhdGVyLiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gaHlkcm9nZW4gYW5kIG94eWdlbi4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuaCkgSGFybWZ1bCBzdWJzdGFuY2VzOiBBIGZpcmVjcmFja2VyIGRvZXMgcHJvZHVjZSBoYXJtZnVsIHN1YnN0YW5jZXMgc3VjaCBhcyBzbW9rZSBhbmQgY2hlbWljYWxzLCBidXQgaXQgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IHRoYXQgaXQgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8uIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmMpIFZpYnJhdGluZyB3YXZlczogQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB2aWJyYXRpbmcgd2F2ZXMuIFdoZW4gdGhlIGNoZW1pY2FscyBpbnNpZGUgYSBmaXJlY3JhY2tlciByZWFjdCwgdGhleSBwcm9kdWNlIGEgcmFwaWQgcmVsZWFzZSBvZiBlbmVyZ3kgaW4gdGhlIGZvcm0gb2YgaGVhdCBhbmQgZ2FzLiBUaGlzIGVuZXJneSBjYXVzZXMgdGhlIGZpcmVjcmFja2VyIHRvIGV4cGxvZGUsIHByb2R1Y2luZyB2aWJyYXRpbmcgd2F2ZXMgdGhhdCB3ZSBoZWFyIGFzIGxvdWQgbm9pc2VzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGNvcnJlY3QuJywgJ2ZpbmFsX2Fuc3dlcic6ICdjJ30ifV0sICIxMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWFqb3IgZWZmZWN0cyAoYikgUmVzcGlyYXRpb24gKGMpIFJvbGV4IChkKSBEZW5zaXR5IChlKSBEaXBodGhlcmlhIChmKSBDYW5pcyBsdXB1cyAoZykgU2tpbiBjb2xvciAoaCkgRGlnZXN0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiYSkgTWFqb3IgZWZmZWN0czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiAnTWFqb3IgZWZmZWN0cycgY291bGQgcmVmZXIgdG8gYSB2YXJpZXR5IG9mIHRoaW5ncywgYnV0IGl0IGlzIG5vdCBzcGVjaWZpYyBlbm91Z2ggdG8gYmUgYSBjb3JyZWN0IGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uLlxcblxcbmIpIFJlc3BpcmF0aW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIFJlc3BpcmF0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGV4Y2hhbmdlIG9mIGdhc2VzLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmMpIFJvbGV4OiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIFJvbGV4IGlzIGEgYnJhbmQgb2YgbHV4dXJ5IHdhdGNoZXMgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZ2VuZXRpY3MuXFxuXFxuZCkgRGVuc2l0eTogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBEZW5zaXR5IGlzIGEgcGh5c2ljYWwgcHJvcGVydHkgdGhhdCBkZXNjcmliZXMgdGhlIGFtb3VudCBvZiBtYXNzIGluIGEgZ2l2ZW4gdm9sdW1lLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmUpIERpcGh0aGVyaWE6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGlwaHRoZXJpYSBpcyBhIGJhY3RlcmlhbCBpbmZlY3Rpb24gdGhhdCBjYW4gY2F1c2Ugc2V2ZXJlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmYpIENhbmlzIGx1cHVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIENhbmlzIGx1cHVzIGlzIHRoZSBzY2llbnRpZmljIG5hbWUgZm9yIHRoZSBncmF5IHdvbGYsIGJ1dCBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3MuXFxuXFxuZykgU2tpbiBjb2xvcjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIgYmVjYXVzZSBza2luIGNvbG9yIGlzIGEgdHJhaXQgdGhhdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBUaGUgZ2VuZXMgdGhhdCBjb250cm9sIHNraW4gY29sb3IgcHJvZHVjZSBkaWZmZXJlbnQgYW1vdW50cyBvZiBtZWxhbmluLCB3aGljaCBpcyBhIHBpZ21lbnQgdGhhdCBnaXZlcyBza2luIGl0cyBjb2xvci4gVGhlIGludGVyYWN0aW9uIG9mIHRoZXNlIGdlbmVzIGNhbiByZXN1bHQgaW4gYSB3aWRlIHJhbmdlIG9mIHNraW4gY29sb3JzLCBmcm9tIHZlcnkgbGlnaHQgdG8gdmVyeSBkYXJrLlxcblxcbmgpIERpZ2VzdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBEaWdlc3Rpb24gaXMgYSBiaW9sb2dpY2FsIHByb2Nlc3MgdGhhdCBpbnZvbHZlcyB0aGUgYnJlYWtkb3duIG9mIGZvb2QgaW50byBzbWFsbGVyIG1vbGVjdWxlcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cIiwgJ2ZpbmFsX2Fuc3dlcic6ICdnJ30ifV0sICIxMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsP1xuQW5zd2VyIENob2ljZXM6IChhKSBTaGVlcCAoYikgU2FsbW9uIChjKSBHcmFzc2VzIChkKSBCYXRzIChlKSBBbmltYWxzIChmKSBTaHJ1YnMgKGcpIEh1bWFucyAoaCkgVHJlZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogJ2IpIFNhbG1vbjogU2FsbW9uIGFyZSBhIHR5cGUgb2YgZmlzaCB0aGF0IGFyZSBzdHJpY3RseSBjYXJuaXZvcm91cyBhbmQgZmVlZCBvbiBvdGhlciBvcmdhbmlzbXMgc3VjaCBhcyBzbWFsbGVyIGZpc2gsIGNydXN0YWNlYW5zLCBhbmQgaW5zZWN0cy4gVGhleSBkbyBub3QgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuYykgR3Jhc3NlczogR3Jhc3NlcyBhcmUgcHJpbWFyeSBwcm9kdWNlcnMgYW5kIGFyZSBhdCB0aGUgYmFzZSBvZiB0aGUgZm9vZCBjaGFpbi4gVGhleSBhcmUgbm90IGNhcGFibGUgb2YgZmVlZGluZyBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuZCkgQmF0czogQmF0cyBhcmUgaW5zZWN0aXZvcmVzIG9yIGZydWdpdm9yZXMgYW5kIGZlZWQgb24gaW5zZWN0cyBvciBmcnVpdHMgcmVzcGVjdGl2ZWx5LiBUaGV5IGRvIG5vdCBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5lKSBBbmltYWxzOiBUaGlzIG9wdGlvbiBpcyB0b28gYnJvYWQgYW5kIGRvZXMgbm90IHByb3ZpZGUgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uLiBJdCBpcyBpbmNvcnJlY3QgYmVjYXVzZSBub3QgYWxsIGFuaW1hbHMgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmYpIFNocnViczogU2hydWJzIGFyZSBhbHNvIHByaW1hcnkgcHJvZHVjZXJzIGFuZCBhcmUgbm90IGNhcGFibGUgb2YgZmVlZGluZyBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuZykgSHVtYW5zOiBIdW1hbnMgYXJlIG9tbml2b3JlcyBhbmQgY2FuIGNvbnN1bWUgYm90aCBwbGFudHMgYW5kIGFuaW1hbHMuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsIGFzIHRoZXkgY29uc3VtZSBlaXRoZXIgcGxhbnRzIG9yIGFuaW1hbHMgYXQgYSB0aW1lLlxcblxcbmgpIFRyZWVzOiBUcmVlcyBhcmUgYWxzbyBwcmltYXJ5IHByb2R1Y2VycyBhbmQgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGEpIHNoZWVwLCBhcyB0aGV5IGFyZSBoZXJiaXZvcmVzIGFuZCBjYW4gY29uc3VtZSBwbGFudHMgYXQgb25lIHRyb3BoaWMgbGV2ZWwgYW5kIHRoZW4gYmUgY29uc3VtZWQgYnkgYSBwcmVkYXRvciBhdCBhIGhpZ2hlciB0cm9waGljIGxldmVsLicsICdmaW5hbF9hbnN3ZXInOiAnYSd9In1dLCAiMTMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaG8gY2FuIHNoaXZlcj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmF0cyAoYikgU2lkZXdhbGtzIChjKSBIdW1hbnMgKGQpIEJlZXMgKGUpIEtvYWxhcyAoZikgTW91bnRhaW5zIChnKSBUcmVlcyAoaCkgUGVvcGxlIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiTGV0J3MgZ28gdGhyb3VnaCBlYWNoIG9wdGlvbiBhbmQgZXhwbGFpbiB3aHkgaXQgaXMgaW5jb3JyZWN0OlxcblxcbmEpIEJhdHM6IFdoaWxlIGJhdHMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5iKSBTaWRld2Fsa3M6IFNpZGV3YWxrcyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3Qgc2hpdmVyLiBUaGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmMpIEh1bWFuczogSHVtYW5zIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgYnV0IHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmUpIEtvYWxhczogS29hbGFzIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgYnV0IHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmYpIE1vdW50YWluczogTW91bnRhaW5zIGFyZSBub3QgbGl2aW5nIG9yZ2FuaXNtcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBzaGl2ZXIuIFRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuZykgVHJlZXM6IFRyZWVzIGFyZSBub3QgY2FwYWJsZSBvZiBzaGl2ZXJpbmcgYXMgdGhleSBkbyBub3QgaGF2ZSBtdXNjbGVzLiBUaGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmgpIFBlb3BsZTogVGhpcyBvcHRpb24gaXMgdGhlIHNhbWUgYXMgb3B0aW9uIGMuIEh1bWFucyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5kKSBIb25leSBiZWVzOiBIb25leSBiZWVzIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZyB0byBnZW5lcmF0ZSBoZWF0IGFuZCBtYWludGFpbiB0aGVpciBib2R5IHRlbXBlcmF0dXJlLiBUaGlzIG9wdGlvbiBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuSW4gY29uY2x1c2lvbiwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGQpIGhvbmV5IGJlZXMgY2FuIHNoaXZlci4gSXQgaXMgaW1wb3J0YW50IHRvIHJlYWQgdGhlIHF1ZXN0aW9uIGFuZCBvcHRpb25zIGNhcmVmdWxseSBhbmQgZWxpbWluYXRlIHRoZSBvcHRpb25zIHRoYXQgYXJlIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbS5cIiwgJ2ZpbmFsX2Fuc3dlcic6ICdkJ30ifV0sICIxNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTGVhcm5pbmcgYmVoYXZpb3IgKGIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzIChjKSBXYXJtLWJsb29kZWQgKGQpIENvbXBldGl0aW9uIChlKSBCYWQgYmVoYXZpb3IgKGYpIExlYXJuaW5nIG5vdGhpbmcgKGcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IgKGgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiAnYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIENvbXBldGluZyBmb3IgcmVzb3VyY2VzIHJlZmVycyB0byBhbmltYWxzIGNvbXBldGluZyBmb3IgbGltaXRlZCByZXNvdXJjZXMgc3VjaCBhcyBmb29kLCB3YXRlciwgb3Igc2hlbHRlci4gSHVudGluZyBiZWhhdmlvciBpcyBub3QgcmVsYXRlZCB0byByZXNvdXJjZSBjb21wZXRpdGlvbi5cXG5cXG5jKSBXYXJtLWJsb29kZWQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gV2FybS1ibG9vZGVkIHJlZmVycyB0byBhbmltYWxzIHRoYXQgY2FuIHJlZ3VsYXRlIHRoZWlyIGJvZHkgdGVtcGVyYXR1cmUgaW50ZXJuYWxseSwgYnV0IGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGVpciBiZWhhdmlvci5cXG5cXG5kKSBDb21wZXRpdGlvbjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gQ29tcGV0aXRpb24gY2FuIHJlZmVyIHRvIG1hbnkgZGlmZmVyZW50IHR5cGVzIG9mIGludGVyYWN0aW9ucyBiZXR3ZWVuIGFuaW1hbHMsIGJ1dCBpdCBkb2VzIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlIHRvIGh1bnRpbmcgYmVoYXZpb3IuXFxuXFxuZSkgQmFkIGJlaGF2aW9yOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBzdWJqZWN0aXZlIGFuZCBkb2VzIG5vdCBwcm92aWRlIGEgY2xlYXIgZXhwbGFuYXRpb24gb2YgdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBIdW50aW5nIGJlaGF2aW9yIGlzIGEgbmF0dXJhbCBiZWhhdmlvciBmb3IgY2F0cyBhbmQgaXMgbm90IGNvbnNpZGVyZWQgYmFkIGJlaGF2aW9yLlxcblxcbmYpIExlYXJuaW5nIG5vdGhpbmc6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCBhY2N1cmF0ZS4gS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgYXJlIGFjdHVhbGx5IGxlYXJuaW5nIGltcG9ydGFudCBza2lsbHMgdGhhdCB0aGV5IHdpbGwgbmVlZCB0byBzdXJ2aXZlIGFzIGFkdWx0IGNhdHMuIEh1bnRpbmcgYmVoYXZpb3IgaXMgYSBsZWFybmVkIGJlaGF2aW9yIHRoYXQgcmVxdWlyZXMgcHJhY3RpY2UgYW5kIHJlZmluZW1lbnQuXFxuXFxuZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvcjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gRXh0aW5ndWlzaGluZyBiZWhhdmlvciByZWZlcnMgdG8gdGhlIHByb2Nlc3Mgb2YgZWxpbWluYXRpbmcgYSBiZWhhdmlvciB0aHJvdWdoIHB1bmlzaG1lbnQgb3IgbmVnYXRpdmUgcmVpbmZvcmNlbWVudCwgYnV0IGl0IGRvZXMgbm90IHJlbGF0ZSB0byBsZWFybmluZyBiZWhhdmlvci5cXG5cXG5oKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIFRoZSBlbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMgcmVmZXJzIHRvIHRoZSBwaHlzaWNzIG9mIG1vdGlvbiBhbmQgZG9lcyBub3QgcmVsYXRlIHRvIGFuaW1hbCBiZWhhdmlvci5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBsZWFybmluZyBiZWhhdmlvciwgYXMga2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgYXJlIGxlYXJuaW5nIGltcG9ydGFudCBza2lsbHMgdGhhdCB0aGV5IHdpbGwgbmVlZCB0byBzdXJ2aXZlIGFzIGFkdWx0IGNhdHMuJywgJ2ZpbmFsX2Fuc3dlcic6ICdhJ30ifV0sICIxNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IERlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IGFmdGVyIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJ1cm5pbmcgKGIpIFdpbnRlciAoYykgTXV0YXRpb25zIChkKSBDb29raW5nIChlKSBDeWNsZXMgKGYpIFN1bW1lciAoZykgRnJlZXppbmcgKGgpIEd1bnNob3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6ICdiKSBXaW50ZXI6IFdpbnRlciBpcyBhIHNlYXNvbiBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYykgTXV0YXRpb25zOiBNdXRhdGlvbnMgYXJlIGNoYW5nZXMgaW4gdGhlIGdlbmV0aWMgbWF0ZXJpYWwgb2YgYW4gb3JnYW5pc20gYW5kIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5kKSBDb29raW5nOiBDb29raW5nIGlzIGEgcHJvY2VzcyBvZiBwcmVwYXJpbmcgZm9vZCBieSBoZWF0aW5nIGl0LCBhbmQgaXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgQ3ljbGVzOiBDeWNsZXMgY2FuIHJlZmVyIHRvIG1hbnkgdGhpbmdzLCBidXQgbm9uZSBvZiB0aGVtIGFyZSByZWxhdGVkIHRvIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5mKSBTdW1tZXI6IFN1bW1lciBpcyBhIHNlYXNvbiBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZykgRnJlZXppbmc6IEZyZWV6aW5nIGlzIGEgcHJvY2VzcyBvZiBsb3dlcmluZyB0aGUgdGVtcGVyYXR1cmUgb2Ygc29tZXRoaW5nIHRvIGJlbG93IGl0cyBmcmVlemluZyBwb2ludCwgYW5kIGl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmgpIEd1bnNob3RzOiBHdW5zaG90cyBhcmUgYSBzdWRkZW4gbG91ZCBub2lzZSBjYXVzZWQgYnkgYSBidWxsZXQgb3Igb3RoZXIgcHJvamVjdGlsZSBhbmQgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGEpIGJ1cm5pbmcuIEJ1cm5pbmcgZGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiBjb21idXN0aW9uLCB3aGljaCByZWxlYXNlcyBlbmVyZ3kgaW4gdGhlIGZvcm0gb2YgaGVhdCBhbmQgbGlnaHQuIFRoaXMgZW5lcmd5IGNhbiBiZSBoYXJuZXNzZWQgdG8gZ2VuZXJhdGUgZWxlY3RyaWNpdHkgb3IgcG93ZXIgZW5naW5lcy4nLCAnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjE2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogVHVybmluZyBvbiB3aGF0IHdpbGwgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBWZWhpY2xlcyAoYikgU2F0ZWxsaXRlcyAoYykgTGlnaHQgYnVsYiAoZCkgQnVzZXMgKGUpIEZpcmVjcmFja2VycyAoZikgU2Vuc29yeSBuZXVyb25zIChnKSBBbiBvYmplY3QgKGgpIEVuZ2luZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogJ2EpIFZlaGljbGVzOiBUdXJuaW5nIG9uIGEgdmVoaWNsZSBkb2VzIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uIFZlaGljbGVzIGVtaXQgdmFyaW91cyB0eXBlcyBvZiByYWRpYXRpb24sIHN1Y2ggYXMgdGhlcm1hbCByYWRpYXRpb24gYW5kIHNvdW5kIHdhdmVzLCBidXQgbm90IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXFxuXFxuYikgU2F0ZWxsaXRlczogU2F0ZWxsaXRlcyBjYW4gZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBidXQgbm90IHNpbXBseSBieSB0dXJuaW5nIHRoZW0gb24uIFNhdGVsbGl0ZXMgYXJlIGRlc2lnbmVkIHRvIHJlY2VpdmUgYW5kIHRyYW5zbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24sIHN1Y2ggYXMgcmFkaW8gd2F2ZXMsIGJ1dCB0aGV5IGRvIG5vdCBlbWl0IHJhZGlhdGlvbiBqdXN0IGJ5IGJlaW5nIHR1cm5lZCBvbi5cXG5cXG5kKSBCdXNlczogU2ltaWxhciB0byB2ZWhpY2xlcywgdHVybmluZyBvbiBhIGJ1cyBkb2VzIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uIEJ1c2VzIGVtaXQgdmFyaW91cyB0eXBlcyBvZiByYWRpYXRpb24sIHN1Y2ggYXMgdGhlcm1hbCByYWRpYXRpb24gYW5kIHNvdW5kIHdhdmVzLCBidXQgbm90IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXFxuXFxuZSkgRmlyZWNyYWNrZXJzOiBGaXJlY3JhY2tlcnMgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiB3aGVuIHRoZXkgYXJlIHR1cm5lZCBvbi4gVGhleSBlbWl0IGxpZ2h0IGFuZCBzb3VuZCwgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbmYpIFNlbnNvcnkgbmV1cm9uczogU2Vuc29yeSBuZXVyb25zIGFyZSBwYXJ0IG9mIHRoZSBuZXJ2b3VzIHN5c3RlbSBhbmQgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5nKSBBbiBvYmplY3Q6IEFuIG9iamVjdCBkb2VzIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24ganVzdCBieSBiZWluZyB0dXJuZWQgb24uIEhvd2V2ZXIsIHNvbWUgb2JqZWN0cyBjYW4gZW1pdCByYWRpYXRpb24gaWYgdGhleSBhcmUgaGVhdGVkIG9yIGVuZXJnaXplZCwgc3VjaCBhcyBhIGxpZ2h0IGJ1bGIuXFxuXFxuaCkgRW5naW5lczogRW5naW5lcyBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIHdoZW4gdGhleSBhcmUgdHVybmVkIG9uLiBUaGV5IGVtaXQgdmFyaW91cyB0eXBlcyBvZiByYWRpYXRpb24sIHN1Y2ggYXMgdGhlcm1hbCByYWRpYXRpb24gYW5kIHNvdW5kIHdhdmVzLCBidXQgbm90IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYykgbGlnaHQgYnVsYiwgYXMgdHVybmluZyBvbiBhIGxpZ2h0IGJ1bGIgZW1pdHMgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBpbiB0aGUgZm9ybSBvZiB2aXNpYmxlIGxpZ2h0LicsICdmaW5hbF9hbnN3ZXInOiAnYyd9In1dLCAiMTciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVyZSBpcyBhIHp5Z290ZSBmb3JtZWQgYnkgc3Blcm0gc3dpbW1pbmcgdG8gYW4gZWdnP1xuQW5zd2VyIENob2ljZXM6IChhKSBDb2xkZXIgYW5kIHdldHRlciAoYikgT2NlYW4gd2F0ZXIgKGMpIEdyYXB0b2xpdGVzIChkKSBSYXBpZCBleHBhbnNpb24gKGUpIEEgZGVsdGEgKGYpIEFuIGFyY2hlZ29uaXVtIChnKSBCYXJuYWNsZXMgKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcImEpIENvbGRlciBhbmQgd2V0dGVyOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgY2xpbWF0ZSBjb25kaXRpb24uXFxuXFxuYikgT2NlYW4gd2F0ZXI6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLiBJdCBpcyBqdXN0IGEgZGVzY3JpcHRpb24gb2YgYSB0eXBlIG9mIHdhdGVyLlxcblxcbmMpIEdyYXB0b2xpdGVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGdyYXB0b2xpdGVzIGFyZSBleHRpbmN0IG1hcmluZSBhbmltYWxzIHRoYXQgbGl2ZWQgZHVyaW5nIHRoZSBQYWxlb3pvaWMgZXJhLiBUaGV5IGhhdmUgbm90aGluZyB0byBkbyB3aXRoIHRoZSBmb3JtYXRpb24gb2YgYSB6eWdvdGUuXFxuXFxuZCkgUmFwaWQgZXhwYW5zaW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgcHJvY2Vzcy5cXG5cXG5lKSBBIGRlbHRhOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGEgZGVsdGEgaXMgYSBsYW5kZm9ybSB0aGF0IGlzIGZvcm1lZCBhdCB0aGUgbW91dGggb2YgYSByaXZlci4gSXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgZm9ybWF0aW9uIG9mIGEgenlnb3RlLlxcblxcbmcpIEJhcm5hY2xlczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBiYXJuYWNsZXMgYXJlIG1hcmluZSBhbmltYWxzIHRoYXQgcmVwcm9kdWNlIHRocm91Z2ggZXh0ZXJuYWwgZmVydGlsaXphdGlvbi4gVGhleSBkbyBub3QgaGF2ZSBhbiBhcmNoZWdvbml1bSB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuXFxuXFxuaCkgQW4gb3JnYW5pc20ncyBib2R5OiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgZ2VuZXJhbCBsb2NhdGlvbi5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBmKSBhbiBhcmNoZWdvbml1bSwgd2hpY2ggaXMgYSBzdHJ1Y3R1cmUgZm91bmQgaW4gc29tZSBwbGFudHMgYW5kIGFsZ2FlIHdoZXJlIHRoZSBlZ2cgaXMgZmVydGlsaXplZCBieSB0aGUgc3Blcm0sIGZvcm1pbmcgYSB6eWdvdGUuXCIsICdmaW5hbF9hbnN3ZXInOiAnZid9In1dLCAiMTgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBjYXVzZSBoYXJtIHRvIHRoZSBleWVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNaWxkZXcgKGIpIE5vcm1hbCB3YXRlciAoYykgSGVycGVzIChkKSBOb3JtYWwgYWlyIChlKSBDb2FsIChmKSBNb2xkIChnKSBBY2lkIChoKSBDb250YWN0IHNvbHV0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6ICdhKSBNaWxkZXc6IFdoaWxlIG1pbGRldyBjYW4gY2F1c2UgcmVzcGlyYXRvcnkgcHJvYmxlbXMsIGl0IGlzIG5vdCBrbm93biB0byBjYXVzZSBoYXJtIHRvIHRoZSBleWVzIGRpcmVjdGx5LiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5iKSBOb3JtYWwgd2F0ZXI6IE5vcm1hbCB3YXRlciBpcyBub3QgaGFybWZ1bCB0byB0aGUgZXllcy4gSW4gZmFjdCwgaXQgaXMgZXNzZW50aWFsIGZvciBtYWludGFpbmluZyBleWUgaGVhbHRoLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5jKSBIZXJwZXM6IEhlcnBlcyBpcyBhIHZpcmFsIGluZmVjdGlvbiB0aGF0IGNhbiBjYXVzZSBjb2xkIHNvcmVzIG9yIGdlbml0YWwgc29yZXMuIFdoaWxlIGl0IGNhbiBjYXVzZSBleWUgaW5mZWN0aW9ucywgaXQgaXMgbm90IGEgZGlyZWN0IGNhdXNlIG9mIGhhcm0gdG8gdGhlIGV5ZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmQpIE5vcm1hbCBhaXI6IE5vcm1hbCBhaXIgaXMgbm90IGhhcm1mdWwgdG8gdGhlIGV5ZXMuIEluIGZhY3QsIGl0IGlzIGVzc2VudGlhbCBmb3IgYnJlYXRoaW5nIGFuZCBtYWludGFpbmluZyBvdmVyYWxsIGhlYWx0aC4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgQ29hbDogQ29hbCBkdXN0IGNhbiBjYXVzZSBoYXJtIHRvIHRoZSBleWVzIGlmIGl0IGdldHMgaW50byB0aGVtLiBIb3dldmVyLCBjb2FsIGl0c2VsZiBpcyBub3QgYSBkaXJlY3QgY2F1c2Ugb2YgaGFybSB0byB0aGUgZXllcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZikgTW9sZDogTW9sZCBjYW4gY2F1c2UgcmVzcGlyYXRvcnkgcHJvYmxlbXMsIGJ1dCBpdCBpcyBub3Qga25vd24gdG8gY2F1c2UgaGFybSB0byB0aGUgZXllcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuaCkgQ29udGFjdCBzb2x1dGlvbjogV2hpbGUgY29udGFjdCBzb2x1dGlvbiBjYW4gY2F1c2UgaXJyaXRhdGlvbiBvciBpbmZlY3Rpb24gaWYgbm90IHVzZWQgcHJvcGVybHksIGl0IGlzIG5vdCBhIGRpcmVjdCBjYXVzZSBvZiBoYXJtIHRvIHRoZSBleWVzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5nKSBBY2lkOiBBY2lkIGNhbiBjYXVzZSBzZXZlcmUgaGFybSB0byB0aGUgZXllcywgaW5jbHVkaW5nIGNoZW1pY2FsIGJ1cm5zIGFuZCBwZXJtYW5lbnQgZGFtYWdlLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGNvcnJlY3QuXFxuXFxuSW4gY29uY2x1c2lvbiwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGcpIGFjaWQsIGFzIGl0IGlzIHRoZSBvbmx5IG9wdGlvbiB0aGF0IGNhbiBjYXVzZSBkaXJlY3QgaGFybSB0byB0aGUgZXllcy4nLCAnZmluYWxfYW5zd2VyJzogJ2cnfSJ9XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6ICdhKSBCYW1ib286IEJhbWJvbyBpcyBhIHR5cGUgb2YgZ3Jhc3MgdGhhdCBncm93cyBpbiB0cm9waWNhbCBhbmQgc3VidHJvcGljYWwgcmVnaW9ucy4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYikgRGVzaWNjYXRpb246IERlc2ljY2F0aW9uIGlzIHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIG1vaXN0dXJlIGZyb20gc29tZXRoaW5nLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5jKSBCdXJyczogQnVycnMgYXJlIHNtYWxsLCBwcmlja2x5IHNlZWRzIHRoYXQgYXR0YWNoIHRoZW1zZWx2ZXMgdG8gY2xvdGhpbmcgb3IgYW5pbWFsIGZ1ci4gVGhleSBkbyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZCkgRWxtczogRWxtcyBhcmUgZGVjaWR1b3VzIHRyZWVzIHRoYXQgZ3JvdyBpbiB0ZW1wZXJhdGUgcmVnaW9ucy4gVGhleSBkbyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZikgQ29hbDogQ29hbCBpcyBhIGZvc3NpbCBmdWVsIHRoYXQgZm9ybXMgZnJvbSB0aGUgcmVtYWlucyBvZiBwbGFudHMgdGhhdCBsaXZlZCBtaWxsaW9ucyBvZiB5ZWFycyBhZ28uIEl0IGZvcm1zIHRocm91Z2ggYSBwcm9jZXNzIG9mIGhlYXQgYW5kIHByZXNzdXJlLCBidXQgaXQgaXMgbm90IGZvcm1lZCBmcm9tIG1vc3MuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmcpIENhbmR5OiBDYW5keSBpcyBhIHN3ZWV0IGZvb2QgbWFkZSBmcm9tIHN1Z2FyIG9yIGNob2NvbGF0ZS4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuaCkgTWVhdDogTWVhdCBpcyB0aGUgZmxlc2ggb2YgYW5pbWFscyB0aGF0IGlzIHVzZWQgYXMgZm9vZC4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgTW9zczogTW9zcyBpcyBhIHNtYWxsLCBub24tdmFzY3VsYXIgcGxhbnQgdGhhdCBncm93cyBpbiBkYW1wIGVudmlyb25tZW50cy4gSXQgY2FuIGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgY29ycmVjdC4nLCAnZmluYWxfYW5zd2VyJzogJ2UnfSJ9XX0sICJjb252ZXJzYXRpb25fUkZBX2ZhbGNvbiI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcIi0gKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXM6IFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIHRvIHByZWRpY3Qgc2Vjb25kcyBhbmQgbWludXRlcy4gVGhpcyBpcyB0b28gc3BlY2lmaWMgYW5kIG5vdCB3aGF0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIGdlbmVyYWxseSB1c2VkIGZvci4gU2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgdXNlZCBmb3IgYnJvYWRlciB0aW1lIHNjYWxlcywgc3VjaCBhcyBkYXlzLCB3ZWVrcywgbW9udGhzLCBhbmQgeWVhcnMuXFxuLSAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZTogV2hpbGUgc29tZSB0eXBlcyBvZiBzYXRlbGxpdGUgZGF0YSBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIG90aGVyIGluZm9ybWF0aW9uIHRvIHN0dWR5IHNlaXNtaWNpdHksIGVhcnRocXVha2VzIHRoZW1zZWx2ZXMgYXJlIHR5cGljYWxseSBwcmVkaWN0ZWQgdXNpbmcgb3RoZXIgbWV0aG9kcywgbGlrZSBzZWlzbW9ncmFwaHMgYW5kIGdlb2xvZ2ljYWwgc3R1ZGllcy5cXG4tIChkKSA3MC03NSBkZWdyZWVzIGZhaHJlbmhlaXQ6IFRoaXMgaXMgYSBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZSwgYW5kIHNhdGVsbGl0ZXMgY2Fubm90IHByZWRpY3QgZXhhY3QgdGVtcGVyYXR1cmUgcmFuZ2VzIGxpa2UgdGhpcy4gV2hpbGUgc2F0ZWxsaXRlcyBkbyBwbGF5IGEgcm9sZSBpbiB3ZWF0aGVyIHByZWRpY3Rpb24sIHdoaWNoIGluY2x1ZGVzIHRlbXBlcmF0dXJlLCBwcmVkaWN0aW5nIHNwZWNpZmljIHJhbmdlcyB3aXRoaW4gYSBkYXkgaXNuJ3QgYSB0eXBpY2FsIGFwcGxpY2F0aW9uLlxcbi0gKGUpIFJhcGlkIGNoYW5nZXMgb2NjdXI6IFdoaWxlIHNhdGVsbGl0ZXMgY2FuIGRldGVjdCByYXBpZCBjaGFuZ2VzIGluIG1hbnkgYXJlYXMsIHN1Y2ggYXMgY2xvdWQgY292ZXIsIHdlYXRoZXIgZnJvbnRzLCBvciB2b2xjYW5pYyBhY3Rpdml0eSwgdGhlIHBocmFzZSAncmFwaWQgY2hhbmdlcyBvY2N1cicgaXMgdG9vIHZhZ3VlLiBJdCBjb3VsZCBhcHBseSB0byB2YXJpb3VzIHBoZW5vbWVuYSwgc28gaXQncyBub3Qgc3BlY2lmaWNhbGx5IGFib3V0IHByZWRpY3Rpb25zIHJlbGF0ZWQgdG8gc2F0ZWxsaXRlIHRlY2hub2xvZ3kgYWxvbmUuXFxuLSAoZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHM6IFRoZXNlIGRlc2NyaXB0aW9ucyByZWxhdGUgdG8gaHVtYW4gYmVoYXZpb3IgYW5kIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzZXMsIG5vdCBwcmVkaWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggc2F0ZWxsaXRlIHRlY2hub2xvZ3kuXFxuLSAoZykgU25vdywgaWNlLCBhbmQgcm9jazogVGhpcyBpcyBhIHZlcnkgc3BlY2lmaWMgY29tYmluYXRpb24gb2Ygd2VhdGhlciBhbmQgZ2VvbG9naWNhbCBmZWF0dXJlcy4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGNlcnRhaW5seSBiZSB1c2VkIHRvIG1vbml0b3Igc25vdywgaWNlLCBhbmQgcm9jayAmIHNvaWwgY2hhbmdlcyAoZm9yIGxhbmRzbGlkZSBkZXRlY3Rpb24sIGZvciBleGFtcGxlKSwgaXQncyBub3Qgc3BlY2lmaWNhbGx5IGFib3V0IHByZWRpY3RpbmcgdGhlc2UgcGhlbm9tZW5hIGluIHRoZSB3YXkgdGhlIHF1ZXN0aW9uIHN1Z2dlc3RzLlxcbi0gKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1czogU2ltaWxhciB0byAoZCksIHRoaXMgaXMgYSBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZSwgYW5kIHNhdGVsbGl0ZXMgYWxvbmUgY2Fubm90IHByZWRpY3Qgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzIHNvIHByZWNpc2VseS5cXG5cXG5UaGUgY29ycmVjdCBhbnN3ZXIsIChjKSBXaGF0IGl0J3MgbGlrZSBvdXRzaWRlIGVhY2ggZGF5LCB0b3VjaGVzIG9uIGEgYnJvYWRlciByYW5nZSBvZiBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMsIHdoaWNoIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBwcm92aWRlIGRhdGEgb24uIFNhdGVsbGl0ZXMgdHJhY2sgd2VhdGhlciBwYXR0ZXJucywgY2xvdWQgY292ZXIsIHN1bmxpZ2h0LCBhbmQgb3RoZXIgaW5kaWNhdG9ycyB0aGF0IGdpdmUgdXMgYW4gaWRlYSBvZiB0aGUgb3V0c2lkZSBjb25kaXRpb25zIGFsbW9zdCBkYWlseS4gXFxuXFxuVGhpcyBicm9hZCwgZGFpbHkgb3ZlcnZpZXcgb2YgZW52aXJvbm1lbnRhbCBjb25kaXRpb25zIGlzIHNvbWV0aGluZyB0aGF0IHNhdGVsbGl0ZXMgY2FuIHByb3ZpZGUsIHVubGlrZSB0aGUgbW9yZSBuYXJyb3cgYW5kIHNwZWNpZmljIHByZWRpY3Rpb25zIG1lbnRpb25lZCBpbiB0aGUgb3RoZXIgb3B0aW9ucy4gQWx0aG91Z2ggaXQncyBub3QgYSB0ZWNobmljYWwgJ3ByZWRpY3Rpb24nIGluIHRoZSBzZW5zZSBvZiBmb3JlY2FzdGluZyBleGFjdCBldmVudHMgYWxsIHRoZSB0aW1lLCBpdCBkb2VzIHByb3ZpZGUgdXAtdG8tZGF0ZSBhbmQgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGl0J3MgbGlrZSBvdXRzaWRlLCB3aGljaCBjYW4gYmUgdXNlZCB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhbmQgaW5mb3JtIG90aGVyIHByZWRpY3Rpb25zIHJlbGF0ZWQgdG8gd2VhdGhlciBhbmQgZW52aXJvbm1lbnQuXCIsICdmaW5hbF9hbnN3ZXInOiAnYyd9In1dLCAiMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBpcnJhZGlhdGluZyBmb29kIGRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBSZWxpZXZlIHBhaW4gKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50cyAoYykgSW1wcm92ZXMgZm9vZCBzYWZldHkgKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWEgKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlIChmKSBDaGVtaWNhbCBjaGFuZ2VzIChnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQgKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGgifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogXCIoYSkgUmVsaWV2ZSBwYWluOiBJcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGhhdmUgYW4gZWZmZWN0IG9uIHBhaW4uIFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGZvb2QgaXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIGZvY3VzZWQgb24gZW5zdXJpbmcgZm9vZCBzYWZldHkgYnkgcmVkdWNpbmcgaGFybWZ1bCBiYWN0ZXJpYSwgbm90IG9uIGFsbGV2aWF0aW5nIHBhaW4uXFxuXFxuKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50czogV2hpbGUgc29tZSBzdHVkaWVzIHN1Z2dlc3QgaXJyYWRpYXRpb24gY291bGQgc2xpZ2h0bHkgZW5oYW5jZSBudXRyaWVudCBsZXZlbHMsIGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBiZW5lZml0IG9mIGZvb2QgaXJyYWRpYXRpb24uIFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHRoZSBtYWluIHB1cnBvc2UgaXMgdG8gZW5zdXJlIGZvb2Qgc2FmZXR5LCBub3QgbmVjZXNzYXJpbHkgdG8gZW5oYW5jZSBudXRyaWVudHMuXFxuXFxuKGMpIEltcHJvdmVzIGZvb2Qgc2FmZXR5OiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gRm9vZCBpcnJhZGlhdGlvbiBpcyBhIHByb2Nlc3Mgd2hlcmUgZm9vZCBpcyBleHBvc2VkIHRvIGEgc3BlY2lmaWMgbGV2ZWwgb2YgaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgb3IgaW5hY3RpdmF0ZSBwYXRob2dlbnMgKGJhY3RlcmlhLCB2aXJ1c2VzLCBwYXJhc2l0ZXMpLCByZWR1Y2luZyB0aGUgcmlzayBvZiBmb29kYm9ybmUgaWxsbmVzc2VzLiBUaGlzIG1ha2VzIGl0IHNhZmVyIGZvciBjb25zdW1lcnMuXFxuXFxuKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWE6IFRoaXMgaXMgaW5jb3JyZWN0LiBGb29kIGlycmFkaWF0aW9uIGlzIGludGVuZGVkIHRvIHJlZHVjZSB0aGUgcG9wdWxhdGlvbiBvZiBoYXJtZnVsIGJhY3RlcmlhIHRoYXQgY2FuIGNhdXNlIGZvb2Rib3JuZSBpbGxuZXNzZXMuIEl0IGRvZXMgbm90IGFsbG93IG9yIHByb21vdGUgYmFjdGVyaWFsIGdyb3d0aC5cXG5cXG4oZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGU6IFRoaXMgaXMgaW5jb3JyZWN0LiBJbiBmYWN0LCBpcnJhZGlhdGlvbiBjYW4gaGVscCByZWR1Y2UgZm9vZCB3YXN0ZSBieSBwcmVzZXJ2aW5nIGZvb2QgZm9yIGxvbmdlciBwZXJpb2RzLCB0aGVyZWJ5IGV4dGVuZGluZyBpdHMgc2hlbGYgbGlmZS5cXG5cXG4oZikgQ2hlbWljYWwgY2hhbmdlczogVGhpcyBtYXkgYmUgc29tZXdoYXQgY29ycmVjdCBpbiB0ZXJtcyBvZiBnZW5lcmFsIGNoZW1pc3RyeSwgYnV0IGl0IGRvZXNuJ3QgZnVsbHkgZXhwbGFpbiB0aGUgcHVycG9zZSBvciB0aGUgcmVzdWx0IG9mIGZvb2QgaXJyYWRpYXRpb24uIFRoZSB0ZXJtICdjaGVtaWNhbCBjaGFuZ2VzJyBpcyB0b28gYnJvYWQgYW5kIGRvZXNuJ3QgY2FwdHVyZSB0aGUgc3BlY2lmaWMgZWZmZWN0IFx1MjAxNCByZWR1Y2luZyB0aGUgcG9wdWxhdGlvbiBvZiBoYXJtZnVsIHBhdGhvZ2Vucy5cXG5cXG4oZykgR2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkOiBTaW1pbGFyIHRvIChmKSwgd2hpbGUgdGhpcyBtaWdodCBvY2N1ciBhcyBhIHNpZGUgZWZmZWN0IG9mIGlycmFkaWF0aW9uIChzaW5jZSBpdCBjYXVzZXMgaW9uaXphdGlvbiksIGl0J3Mgbm90IHdoYXQgZm9vZCBpcnJhZGlhdGlvbiBpcyBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggb3Igd2h5IGl0J3MgZG9uZS5cXG5cXG4oaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aDogVGhpcyBpcyBpbmNvcnJlY3QuIElycmFkaWF0aW5nIGZvb2QgdG8gc3BlY2lmaWMgbGV2ZWxzIGlzIGNvbnNpZGVyZWQgc2FmZSBieSBudW1lcm91cyBpbnRlcm5hdGlvbmFsIGhlYWx0aCBvcmdhbml6YXRpb25zLiBUaGlzIG9wdGlvbiBtaXNyZXByZXNlbnRzIHRoZSBwdXJwb3NlIGFuZCBzYWZldHkgc3RhbmRhcmRzIG9mIGZvb2QgaXJyYWRpYXRpb24uXFxuXFxuVG8gc3VtbWFyaXplLCB0aGUgcHJpbWFyeSBmdW5jdGlvbiBvZiBpcnJhZGlhdGluZyBmb29kIGlzIHRvIGltcHJvdmUgZm9vZCBzYWZldHkgYnkgcmVkdWNpbmcgaGFybWZ1bCBtaWNyb29yZ2FuaXNtcywgbWFraW5nIHRoZSBmb29kIGxlc3MgbGlrZWx5IHRvIGNhdXNlIGZvb2Rib3JuZSBpbGxuZXNzZXMuXCIsICdmaW5hbF9hbnN3ZXInOiAnYyd9In1dLCAiMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgcHJvdGVjdHMgYSBtYW1tYWwncyBza2luP1xuQW5zd2VyIENob2ljZXM6IChhKSBGaWJlciBmb2xsaWNsZXMgKGIpIEV4Zm9saWF0aW9uIChjKSBSZXNpc3RhbmNlIChkKSBMYXllcnMgb2YgZmF0IChlKSBFdmFwb3JhdGlvbiAoZikgQSBjdXRpY2xlIChnKSBTZW5zb3J5IG5ldXJvbnMgKGgpIEZ1ciBhbmQgZmF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiKGEpICoqRmliZXIgZm9sbGljbGVzKio6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBNYW1tYWxzIGhhdmUgYSB1bmlxdWUgc2tpbiBzdHJ1Y3R1cmUgdGhhdCBpbmNsdWRlcyBtdWx0aXBsZSBsYXllcnMsIG9uZSBvZiB3aGljaCBpbnZvbHZlcyBhIG5ldHdvcmsgb2YgZmliZXIgZm9sbGljbGVzLiBUaGVzZSBhcmUgc21hbGwgcG9ja2V0cyB3aXRoaW4gdGhlIHNraW4gdGhhdCBjb250YWluIGhhaXIgZm9sbGljbGVzLCBzZWJhY2VvdXMgZ2xhbmRzLCBhbmQgc3dlYXQgZ2xhbmRzLiBUaGUgbGF5ZXIgb2YgaGFpciAod2hpY2ggY29uc2lzdHMgb2YgZmliZXJzKSBhbmQgdGhlIGFzc29jaWF0ZWQgc3RydWN0dXJlcyB3b3JrIHRvZ2V0aGVyIHRvIHByb3RlY3QgdGhlIG1hbW1hbCdzIHNraW4gZnJvbSB2YXJpb3VzIGVudmlyb25tZW50YWwgdGhyZWF0cyBzdWNoIGFzIG1pY3Jvb3JnYW5pc21zLCBwaHlzaWNhbCBkYW1hZ2UsIGFuZCBleGNlc3NpdmUgaGVhdCBvciBjb2xkLlxcblxcbk5vdyBsZXQncyBkaXNtaXNzIHRoZSBpbmNvcnJlY3Qgb3B0aW9uczpcXG5cXG4oYikgKipFeGZvbGlhdGlvbioqOiBFeGZvbGlhdGlvbiByZWZlcnMgdG8gdGhlIG5hdHVyYWwgcHJvY2VzcyBvZiBkZWFkIHNraW4gY2VsbHMgZHlpbmcgYW5kIHNoZWRkaW5nIG9mZi4gV2hpbGUgaXQgY29udHJpYnV0ZXMgdG8gaGVhbHRoIGFuZCBza2luIGFwcGVhcmFuY2UsIGl0IGRvZXMgbm90IGRpcmVjdGx5IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuKGMpICoqUmVzaXN0YW5jZSoqOiBUaGlzIHRlcm0gaXMgdG9vIGJyb2FkIGFuZCB2YWd1ZSB0byBhY2N1cmF0ZWx5IGRlc2NyaWJlIHdoYXQgcHJvdGVjdHMgYSBtYW1tYWwncyBza2luLiBNYW1tYWwgc2tpbiByZXNpc3RhbmNlIGlzIGEgcmVzdWx0IG9mIGl0cyBzdHJ1Y3R1cmUsIG5vdCB0aGUgdGVybSBpdHNlbGYuXFxuXFxuKGQpICoqTGF5ZXJzIG9mIGZhdCoqOiBNYW1tYWxzIGNlcnRhaW5seSBoYXZlIGxheWVycyBvZiBmYXQsIGVzcGVjaWFsbHkgdW5kZXIgdGhlIHNraW4gKHN1YmN1dGFuZW91cyBmYXQpLiBUaGlzIGxheWVyIGFjdHMgYXMgaW5zdWxhdGlvbiBhZ2FpbnN0IGNvbGQgdGVtcGVyYXR1cmVzIGFuZCBhcyBhbiBlbmVyZ3kgcmVzZXJ2ZSwgYnV0IGl0IGlzIG5vdCB3aGF0IHByaW1hcmlseSBwcm90ZWN0cyBza2luIGluIHRoZSB3YXkgaGFpciBkb2VzLlxcblxcbihlKSAqKkV2YXBvcmF0aW9uKio6IEV2YXBvcmF0aW9uIG9mIHN3ZWF0IGNhbiBjb29sIHRoZSBib2R5IGFuZCBpcyBhIHJlZ3VsYXRvcnkgbWVjaGFuaXNtIGZvciBtYW1tYWxzLCBidXQgaXQgZG9lc24ndCBvZmZlciBwaHlzaWNhbCBwcm90ZWN0aW9uIHRvIHRoZSBza2luLlxcblxcbihmKSAqKkEgY3V0aWNsZSoqOiBUaGUgY3V0aWNsZSByZWZlcnMgdG8gdGhlIG91dGVyIHBhcnQgb2YgYSBwbGFudCBjZWxsIHdhbGwgb3IsIGxvb3NlbHksIHRoZSBvdXRlciBwYXJ0IG9mIHRoZSBza2luIGFzIGluIGh1bWFuIGhhaXIgd2hpY2ggaXMgd2hhdCBwcm90ZWN0cyB0aGF0IGhhaXIgZm9sbGljbGUuIFRoaXMgZG9lc24ndCBhY2N1cmF0ZWx5IGRlc2NyaWJlIHRoZSBwcm90ZWN0aXZlIGxheWVyIG9mIG1hbW1hbCBza2luLlxcblxcbihnKSAqKlNlbnNvcnkgbmV1cm9ucyoqOiBUaGVzZSBhcmUgc3BlY2lhbGl6ZWQgbmVydmUgY2VsbHMgdGhhdCBkZXRlY3QgYW5kIHRyYW5zbWl0IHNlbnNvcnkgaW5mb3JtYXRpb24gdG8gdGhlIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0uIFNlbnNvcnkgbmV1cm9ucyBwbGF5IGEgcm9sZSBpbiBwZXJjZWl2aW5nIHRoZSBlbnZpcm9ubWVudCBidXQgYXJlIG5vdCBwaHlzaWNhbCBiYXJyaWVycyB0aGF0IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuKGgpICoqRnVyIGFuZCBmYXQqKjogVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIGNvcnJlY3QgYW5kIGluY29ycmVjdCBlbGVtZW50cy4gV2hpbGUgZnVyIGRvZXMgcHJvdmlkZSBwcm90ZWN0aW9uIGFzIHBhcnQgb2YgdGhlIGZvbGxpY2xlIG5ldHdvcmssICdmYXQnIGFsb25lIGlzIG5vdCBhIHByb3RlY3RpdmUgc3RydWN0dXJlIGluIHRoZSBza2luIGl0c2VsZi4gQWRkaXRpb25hbGx5LCBzcGVjaWZ5aW5nIGZ1ciBhbmQgZmF0IHRvZ2V0aGVyIG1peGVzIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0aWVzIChmdXIgZm9yIGluc3VsYXRpb24gYW5kIHByb3RlY3Rpb24sIGZhdCBmb3IgaW5zdWxhdGlvbikgcmF0aGVyIHRoYW4gb25lIHNpbmd1bGFyIG1lY2hhbmlzbSBkaXJlY3RseSBhZGRyZXNzaW5nIHNraW4gcHJvdGVjdGlvbi5cXG5cXG5JbiBzdW1tYXJ5LCBtYW1tYWxzJyBza2luIGlzIHJvYnVzdGx5IHByb3RlY3RlZCBwcmltYXJpbHkgYnkgdGhlIG5ldHdvcmsgb2YgZmliZXIgZm9sbGljbGVzLCB3aGljaCBpbmNvcnBvcmF0ZXMgYm90aCB0aGUgaGFpciBzdHJ1Y3R1cmVzIChmdXIpIGFuZCB0aGUgYXNzb2NpYXRlZCBnbGFuZHMgKGxpa2Ugc2ViYWNlb3VzIGdsYW5kcykgdGhhdCBsdWJyaWNhdGUgdGhlIGZ1ci4gVGhpcyBwcm90ZWN0cyB0aGUgdW5kZXJseWluZyBsYXllcnMgb2YgdGhlIHNraW4gYW5kIHBlcm1pdHMgbWFtbWFscyB0byB0aHJpdmUgaW4gdmFyaW91cyBjbGltYXRlcyBhbmQgZW52aXJvbm1lbnRzLlwiLCAnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvIGVhcnRod29ybXMgZG8gd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRGllcyAoYikgUmVncm93cyBpdCAoYykgUmVwcm9kdWNlcyAoZCkgU2VkaW1lbnQgKGUpIFJvb3QgZ3Jvd3RoIChmKSBNaWdyYXRlIChnKSBTdG9wcyBncm93aW5nIChoKSBSb290cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcIjEuICoqT3B0aW9uIChhKTogRGllcyoqXFxuICAgLSBFYXJ0aHdvcm1zIGFyZSBzZWdtZW50ZWQgb3JnYW5pc21zLCB3aXRoIGVhY2ggc2VnbWVudCBjb250YWluaW5nIGJvdGggbmVydmUgY29yZHMgYW5kIG11c2NsZSBmaWJlcnMuIFdoaWxlIGl0IGlzIHRydWUgdGhhdCBlYWNoIHNlZ21lbnQgY2FuIGZ1bmN0aW9uIHNlbWktaW5kZXBlbmRlbnRseSwgdGhlIHNldmVyZWQgc2VnbWVudCBkb2Vzbid0IHNpbXBseSBkaWUuIFRoZSBsb3NzIG9mIGEgc2VnbWVudCBtYXkgYWZmZWN0IHRoZSB3b3JtJ3MgbW9iaWxpdHkgYW5kIG92ZXJhbGwgaGVhbHRoLCBidXQgaXQgZG9lc24ndCBsZWFkIHRvIGluc3RhbnRhbmVvdXMgZGVhdGggb2YgdGhlIHNlZ21lbnQgaXRzZWxmLlxcblxcbjIuICoqT3B0aW9uIChjKTogUmVwcm9kdWNlcyoqXFxuICAgLSBSZXByb2R1Y3Rpb24gaW4gZWFydGh3b3JtcyBpcyBhIHNlcGFyYXRlIGJpb2xvZ2ljYWwgcHJvY2VzcyB0aGF0IGludm9sdmVzIHRoZSBmb3JtYXRpb24gb2YgZWl0aGVyIGVnZ3Mgb3Igd29ybXMgZnJvbSBoZXJtYXBocm9kaXRpYyBwYXJ0bmVycy4gVGhlIGJyZWFraW5nIG9mZiBvZiBhIHNlZ21lbnQgZG9lcyBub3QgaW5pdGlhdGUgdGhpcyByZXByb2R1Y3RpdmUgcHJvY2Vzcy5cXG5cXG4zLiAqKk9wdGlvbiAoZCk6IFNlZGltZW50KipcXG4gICAtIFNlZGltZW50IHJlZmVycyB0byBmaW5lLCBsb29zZSBwYXJ0aWNsZXMgb2Ygb3JnYW5pYyBhbmQgaW5vcmdhbmljIG1hdGVyaWFsIGZvdW5kIGF0IHRoZSBib3R0b20gb2YgYSBib2R5IG9mIHdhdGVyLiBUaGVyZSBpcyBubyBmYWN0dWFsIGNvbm5lY3Rpb24gYmV0d2VlbiBhIHNlZ21lbnRlZCBlYXJ0aHdvcm0gYnJlYWtpbmcgb2ZmIGFuZCB0aGUgY3JlYXRpb24gb2Ygc2VkaW1lbnQuXFxuXFxuNC4gKipPcHRpb24gKGUpOiBSb290IGdyb3d0aCoqXFxuICAgLSBSb290IGdyb3d0aCBpcyBhIHByb2Nlc3MgaW4gcGxhbnRzLCBub3QgZWFydGh3b3Jtcy4gRWFydGh3b3JtcyBkbyBub3QgaGF2ZSByb290cyBub3IgZG8gdGhleSBwZXJmb3JtIHJvb3QgZ3Jvd3RoIGFzIHBhcnQgb2YgdGhlaXIgYmlvbG9naWNhbCBmdW5jdGlvbnMuXFxuXFxuNS4gKipPcHRpb24gKGYpOiBNaWdyYXRlKipcXG4gICAtIE1pZ3JhdGlvbiByZWZlcnMgdG8gdGhlIHJlZ3VsYXIgc2Vhc29uYWwgbW92ZW1lbnRzIG1hZGUgYnkgYW5pbWFscyBpbiBzZWFyY2ggb2YgZm9vZCwgYnJlZWRpbmcsIG9yIG1pbGRlciBjbGltYXRpYyBjb25kaXRpb25zLiBFYXJ0aHdvcm1zIGNhbiBtaWdyYXRlLCBidXQgdGhlIGJyZWFraW5nIG9mZiBvZiBhIHNlZ21lbnQgKHdoaWNoIHR5cGljYWxseSBoYXBwZW5zIGR1ZSB0byBleHRlcm5hbCBwcmVzc3VyZSkgZG9lcyBub3QgaW5pdGlhdGUgYSBtaWdyYXRpb24gcHJvY2Vzcy5cXG5cXG42LiAqKk9wdGlvbiAoZyk6IFN0b3BzIGdyb3dpbmcqKlxcbiAgIC0gR3Jvd3RoIGluIGVhcnRod29ybXMgaXMgaW5kZWVkIGJpb2xvZ2ljYWwsIGJ1dCB0aGUgbG9zcyBvZiBhIHNlZ21lbnQgZG9lc24ndCBjYXVzZSBhIGNlc3NhdGlvbiBvZiBncm93dGguIFNlZ21lbnRzIG9mIGVhcnRod29ybXMgYXJlIGNvbnN0YW50bHkgYmVpbmcgYWRkZWQgYW5kIHNoZWQgZGVwZW5kaW5nIG9uIHRoZSB3b3JtJ3MgZ3Jvd3RoIGFuZCBjb25kaXRpb25zLCBzbyB0aGUgbG9zcyBvZiBhIHNlZ21lbnQgd291bGRuJ3QgdHlwaWNhbGx5IGhhbHQgaXRzIG92ZXJhbGwgZ3Jvd3RoLlxcblxcbjcuICoqT3B0aW9uIChoKTogUm9vdHMqKlxcbiAgIC0gQXMgbWVudGlvbmVkIGVhcmxpZXIsIHJvb3RzIGFyZSBhIGNoYXJhY3RlcmlzdGljIG9mIHBsYW50cywgbm90IGVhcnRod29ybXMuIEVhcnRod29ybSBzZWdtZW50cyBkbyBub3QgdHVybiBpbnRvIHJvb3RzLlxcblxcbioqVGhlIGNvcnJlY3QgYW5zd2VyIGlzIChiKSBSZWdyb3dzIGl0LioqXFxuXFxuRWFydGh3b3JtcyBjYW4gcmVnZW5lcmF0ZSBsb3N0IHNlZ21lbnRzLiBUaGlzIHJlZ2VuZXJhdGl2ZSBhYmlsaXR5IGlzIG9uZSBvZiB0aGUgdW5pcXVlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGVzZSBzZWdtZW50ZWQgd29ybXMuIFdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmYsIHR5cGljYWxseSBkdWUgdG8gZXh0ZXJuYWwgZm9yY2VzLCB0aGUgc2V2ZXJlZCBzZWdtZW50IGNhbiByZWdlbmVyYXRlLCBsZWFkaW5nIHRvIHRoZSBncm93dGggb2YgYSBuZXcgb25lIGlmIHRoZSBjb25kaXRpb25zIHBlcm1pdC5cXG5cXG5SZW1lbWJlciwgZWFjaCBpbmNvcnJlY3QgYW5zd2VyIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgdGhleSBlaXRoZXIgZG9uJ3QgYWRkcmVzcyB0aGUgYmlvbG9naWNhbCBwcm9jZXNzIGF0IGhhbmQgb3IgZG9uJ3QgYWxpZ24gd2l0aCBrbm93biBiaW9sb2dpY2FsIGZ1bmN0aW9ucyBhbmQgY2hhcmFjdGVyaXN0aWNzIG9mIGVhcnRod29ybXMuXCIsICdmaW5hbF9hbnN3ZXInOiAnYid9In1dLCAiNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IExpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBUaGUgZW52aXJvbm1lbnQgKGIpIFJhaW5zdG9ybXMgKGMpIERlc3RydWN0aW9uIChkKSBWaXNpYmlsaXR5IChlKSBUaHVuZGVyIChmKSBUaGUgc3VuIChnKSBUaGUgd2VhdGhlci4gKGgpIFRyYW5zcG9ydGF0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiKGEpIFRoZSBlbnZpcm9ubWVudDogTGlnaHRuaW5nIGNhbiByZWxlYXNlIGxhcmdlIGFtb3VudHMgb2YgZW5lcmd5IGFuZCBoZWF0LCB3aGljaCBjYW4gZGlzcnVwdCBuYXR1cmFsIGVjb3N5c3RlbXMsIGNhdXNlIGZvcmVzdCBmaXJlcywgYW5kIGFmZmVjdCBhaXIgcXVhbGl0eSwgdGh1cyBoYXJtaW5nIHRoZSBlbnZpcm9ubWVudC5cXG5cXG4oYikgUmFpbnN0b3JtczogTGlnaHRuaW5nIGRvZXMgbm90IGRpcmVjdGx5IGhhcm0gcmFpbnN0b3Jtcy4gSW4gZmFjdCwgaXQncyBhIHBhcnQgb2YgdGhlIG5hdHVyYWwgc3Rvcm0gcHJvY2Vzcy4gTGlnaHRuaW5nIGlzIG9mdGVuIGEgcmVzdWx0IG9mIHNldmVyZSB0aHVuZGVyc3Rvcm1zLCBub3QgYSBmYWN0b3IgdGhhdCBjYXVzZXMgdGhlbSB0byBiZSBoYXJtZnVsIHRoZW1zZWx2ZXMuXFxuXFxuKGMpIERlc3RydWN0aW9uOiBUaGlzIG9wdGlvbiBpcyBsZXNzIHNwZWNpZmljIHRoYW4gKGEpIG9yIChiKSwgYnV0IGluIGdlbmVyYWwgdGVybXMsIGl0J3MgdHJ1ZS4gSG93ZXZlciwgJ2Rlc3RydWN0aW9uJyBpcyB0b28gdmFndWUgYW5kIGRvZXNuJ3QgZXhwbGFpbiB0aGUgaGFybSBjYXVzZWQgYnkgbGlnaHRuaW5nIGFjdGl2aXR5LlxcblxcbihkKSBWaXNpYmlsaXR5OiBXaGlsZSBsaWdodG5pbmcgY2FuIHRlbXBvcmFyaWx5IHJlZHVjZSB2aXNpYmlsaXR5IGR1cmluZyBzdG9ybXMsIGl0IGRvZXMgbm90IGluaGVyZW50bHkgJ2JyaW5nJyBvciAnY2F1c2UnIHBvb3IgdmlzaWJpbGl0eS4gVmlzaWJpbGl0eSBpc3N1ZXMgYXJlIGdlbmVyYWxseSBkdWUgdG8gcmFpbiwgZm9nLCBvciB0aGUgc3Rvcm0gY2xvdWRzIHRoZW1zZWx2ZXMsIG5vdCB0aGUgbGlnaHRuaW5nLlxcblxcbihlKSBUaHVuZGVyOiBUaGlzIGlzIG5vdCBhIGhhcm0gYnV0IHJhdGhlciBhbm90aGVyIHBoZW5vbWVub24gY3JlYXRlZCBhbG9uZ3NpZGUgbGlnaHRuaW5nOyB0aGV5IGFyZSBib3RoIG1hbmlmZXN0YXRpb25zIG9mIGVsZWN0cmljYWwgZGlzY2hhcmdlcyBpbiB0aHVuZGVyc3Rvcm1zLlxcblxcbihmKSBUaGUgc3VuOiBMaWdodG5pbmcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgc3VuLCBhcyB0aGV5IGFyZSBkaXN0YW50IGZyb20gZWFjaCBvdGhlciBhbmQgb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIGVhY2ggb3RoZXIuXFxuXFxuKGcpIFRoZSB3ZWF0aGVyOiBXaGlsZSBsaWdodG5pbmcgaXMgYSBwYXJ0IG9mIHNldmVyZSB3ZWF0aGVyLCBpdCBkb2VzIG5vdCBjYXVzZSB3ZWF0aGVyIGNoYW5nZXMgaW5oZXJlbnRseS4gV2VhdGhlciBpcyBhIGNvbXBsZXggc3lzdGVtIGluZmx1ZW5jZWQgYnkgbWFueSBmYWN0b3JzLCBhbmQgbGlnaHRuaW5nIGlzIG9ubHkgb25lIG9mIG1hbnkgaW5kaWNhdG9ycyBvZiBzZXZlcmUgd2VhdGhlci5cXG5cXG4oaCkgVHJhbnNwb3J0YXRpb246IFRoaXMgaXMgYW5vdGhlciBwb3RlbnRpYWwgZWZmZWN0LCBidXQgaXQgaXMgaW5kaXJlY3QuIExpZ2h0bmluZyBzdHJpa2VzIGNhbiBjYXVzZSBkYW1hZ2UgdG8gaW5mcmFzdHJ1Y3R1cmUgbGlrZSBwb3dlciBsaW5lcywgcm9hZHMsIHJhaWxyb2FkcywgZXRjLiwgaW5kaXJlY3RseSBhZmZlY3RpbmcgdHJhbnNwb3J0YXRpb24gc3lzdGVtcy4gSG93ZXZlciwgdGhpcyBzdGF0ZW1lbnQgaXNuJ3QgYXMgZGlyZWN0IG9yIGNsZWFyIGFzIGl0IGNvdWxkIGJlLlxcblxcbkFmdGVyIGdvaW5nIHRocm91Z2ggZWFjaCBhbnN3ZXIgY2hvaWNlLCBpdCdzIGNsZWFyIHRoYXQgKGEpICdUaGUgZW52aXJvbm1lbnQnIGlzIHRoZSBtb3N0IGRpcmVjdCBhbmQgY29tcHJlaGVuc2l2ZSBhbnN3ZXIgdG8gd2h5IGxpZ2h0bmluZyBjYW4gYmUgYmFkIHdpdGhvdXQgZmFsbGluZyBpbnRvIGJyb2FkIG9yIGluZGlyZWN0IGV4cGxhbmF0aW9ucy5cIiwgJ2ZpbmFsX2Fuc3dlcic6ICdhJ30ifV0sICI1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgd2hhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU291bHMgKGIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXMgKGMpIE9yZ2FuaXNtcyAoZCkgUGxhbnQgb3IgYW5pbWFsIChlKSBNYWxlcyBhbmQgZmVtYWxlcyAoZikgRGVmb3Jlc3RhdGlvbiAoZykgUmVpbmNhcm5hdGlvbiAoaCkgSW1wb3J0YW50IGhhYml0YXRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiKGEpIFNvdWxzOiBFdmlkZW5jZSBvZiBwYXN0IGxpZmUgaW4gYmlvbG9neSB0eXBpY2FsbHkgcmVmZXJzIHRvIHBoeXNpY2FsIG9yIG1vbGVjdWxhciByZW1haW5zLCBub3QgYWJzdHJhY3QgY29uY2VwdHMgbGlrZSBzb3Vscy4gQmlvbG9neSBkZWFscyB3aXRoIHBoeXNpY2FsLCB0YW5naWJsZSBhc3BlY3RzIG9mIGxpZmUgZm9ybXMuXFxuXFxuKGIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXM6IFRoaXMgb3B0aW9uIGlzIHRvbyBzcGVjaWZpYy4gV2hpbGUgZXZpZGVuY2UgY291bGQgaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIGFuaW1hbHMgd2l0aCBiYWNrYm9uZXMsIGl0IGRvZXNuJ3QgYWNjb3VudCBmb3Igb3RoZXIgZm9ybXMgb2YgbGlmZSB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgaW4gdGhlIGZvc3NpbCByZWNvcmQuXFxuXFxuKGMpIE9yZ2FuaXNtczogVGhpcyBpcyBhIHN0ZXAgdG93YXJkcyB0aGUgY29ycmVjdCBhbnN3ZXIsIGJ1dCBpdCdzIG5vdCB0aGUgbW9zdCBzcGVjaWZpYy4gRm9zc2lscyBvciBjaGVtaWNhbCBtYXJrZXJzIGNhbiBpbmRlZWQgc2hvdyB3aGVyZSB2YXJpb3VzIG9yZ2FuaXNtcyBvbmNlIGxpdmVkLCBidXQgbm90IGFsbCBwYXN0IGxpZmUgaXMgcmVwcmVzZW50ZWQgYnkgZGlyZWN0IGZvc3NpbCBldmlkZW5jZS5cXG5cXG4oZikgRGVmb3Jlc3RhdGlvbjogVGhpcyByZWZlcnMgdG8gYSBjdXJyZW50IGVudmlyb25tZW50YWwgcHJvY2Vzcywgbm90IHBhc3QgbGlmZS4gSXQgaW5kaWNhdGVzIGNoYW5nZXMgaW4gZWNvc3lzdGVtcyB3aXRoaW4gdGhlIHJlY2VudCBwYXN0IGJ1dCBkb2Vzbid0IHNwZWNpZmljYWxseSBhZGRyZXNzIHdoaWNoIGxpZmUgZm9ybXMgZXhpc3RlZCB0aGVyZSBpbiB0aGUgcGFzdC5cXG5cXG4oZykgUmVpbmNhcm5hdGlvbjogTGlrZSAnc291bHMsJyB0aGlzIGlzIGEgc3Bpcml0dWFsIG9yIG1ldGFwaHlzaWNhbCBjb25jZXB0LCBub3QgZ3JvdW5kZWQgaW4gYmlvbG9naWNhbCBldmlkZW5jZS4gQmlvbG9neSBjb25jZXJucyBpdHNlbGYgd2l0aCBvYnNlcnZhYmxlIGFuZCBzY2llbnRpZmljYWxseSB0ZXN0YWJsZSBwaGVub21lbmEuXFxuXFxuKGgpIEltcG9ydGFudCBoYWJpdGF0czogVGhpcyBpcyB0b28gdmFndWUuIFdoaWxlIGl0IGNvdWxkIGJlIHRpZWQgdG8gdGhlIHR5cGVzIG9mIG9yZ2FuaXNtcyB0aGF0IHVzZWQgdG8gbGl2ZSBpbiBhIHBsYWNlLCB0aGUgcGhyYXNlIGNvdWxkIGltcGx5IGEgdmFyaWV0eSBvZiB1bnJlbGF0ZWQgY29udGV4dHMsIGFuZCBkb2Vzbid0IGRpcmVjdGx5IHN0YXRlIHdoYXQgdHlwZXMgb2YgbGlmZSBleGlzdGVkLlxcblxcblRoZXJlZm9yZSwgdGhlIG1vc3QgYWNjdXJhdGUgYW5kIGNvbXByZWhlbnNpdmUgYW5zd2VyIGlzIChkKSBQbGFudCBvciBhbmltYWwuIEV2aWRlbmNlIGluIHRoZSBmb3JtIG9mIGZvc3NpbHMsIHRyYWNlIGZvc3NpbHMsIGFuZCBpbXByaW50cyBjYW4gaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIHZhcmlvdXMgbGlmZSBmb3JtcywgaW5jbHVkaW5nIGJvdGggcGxhbnRzIGFuZCBhbmltYWxzLCBpbiBhIHBhcnRpY3VsYXIgcGxhY2Ugd2hlcmUgdGhleSBvbmNlIGxpdmVkLiBUaGlzIGNvdmVycyBhIGJyb2FkIHJhbmdlIG9mIHBhc3QgbGlmZSBpbiBhIHNjaWVudGlmaWNhbGx5IGdyb3VuZGVkIG1hbm5lciwgYWNrbm93bGVkZ2luZyBjb250cmlidXRpb25zIGZyb20gYm90aCBwbGFudCBhbmQgYW5pbWFsIGtpbmdkb21zLlwiLCAnZmluYWxfYW5zd2VyJzogJ2QnfSJ9XSwgIjYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBIb3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93biwgb3IgaW5oZXJpdGVkLCBpcyBmb3VuZCBpbiBpbmZvcm1hdGlvbiBpbiBhbiBvcmdhbmlzbSdzIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNwZWNpZXMgKGIpIE1lc3NlbmdlcnMgKGMpIEhhaXIgZm9sbGljbGVzIChkKSBDeWNsZXMgKGUpIFNraW4gY2VsbHMgKGYpIEVuZG9jcmluZSBzeXN0ZW0gKGcpIENocm9tb3NvbWVzIChoKSBQcm90ZWlucyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcIlRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZykgQ2hyb21vc29tZXMuXFxuXFxuTGV0J3MgZXhhbWluZSB3aHkgdGhlIG90aGVyIG9wdGlvbnMgYXJlIGluY29ycmVjdDpcXG5cXG4oYSkgU3BlY2llczogU3BlY2llcyBpcyBhIGNsYXNzaWZpY2F0aW9uIHN5c3RlbSB1c2VkIGJ5IGJpb2xvZ2lzdHMgdG8gZ3JvdXAgdG9nZXRoZXIgc2ltaWxhciBvcmdhbmlzbXMuIFdoaWxlIHNwZWNpZXMgYXJlIHJlbGF0ZWQgaW4gdGVybXMgb2YgdGhlaXIgZ2VuZXRpY3MsIHRoZXkgZG8gbm90IGNvbnRhaW4gdGhlIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGFuIGluZGl2aWR1YWwncyBpbmhlcml0ZWQgdHJhaXRzLlxcblxcbihiKSBNZXNzZW5nZXJzOiBUaGlzIG9wdGlvbiBjb3VsZCByZWZlciB0byBzaWduYWxzIG9yIGNvbW11bmljYXRpb24gc3lzdGVtcyB3aXRoaW4gYW4gb3JnYW5pc20sIGJ1dCBpdCBkb2VzIG5vdCB0eXBpY2FsbHkgcmVsYXRlIHRvIHRoZSBnZW5ldGljIGluZm9ybWF0aW9uIHJlc3BvbnNpYmxlIGZvciBpbmhlcml0ZWQgdHJhaXRzLiBcXG5cXG4oYykgSGFpciBmb2xsaWNsZXM6IEhhaXIgZm9sbGljbGVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBza2luIHRoYXQgcHJvZHVjZSBoYWlyLiBUaGV5IGRvbid0IGNvbnRhaW4gZ2VuZXRpYyBpbmZvcm1hdGlvbiBhYm91dCB0cmFpdHM7IHJhdGhlciwgdGhleSdyZSBhIHJlc3VsdCBvZiBnZW5ldGljIGluc3RydWN0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIGNocm9tb3NvbWVzLlxcblxcbihkKSBDeWNsZXM6IEJpb2xvZ2ljYWwgY3ljbGVzLCBzdWNoIGFzIGNpcmNhZGlhbiByaHl0aG1zLCBhcmUgcmVndWxhciBwYXR0ZXJucyBvZiBiZWhhdmlvciBvciBwaHlzaW9sb2dpY2FsIGNoYW5nZS4gVGhleSBhcmUgcmVndWxhdGVkIGJ5IGludGVybmFsIGFuZCBleHRlcm5hbCBzdGltdWxpLCBidXQgdGhleSBkb24ndCBzdG9yZSBnZW5ldGljIGluZm9ybWF0aW9uLlxcblxcbihlKSBTa2luIGNlbGxzOiBTa2luIGNlbGxzIGFyZSBzb21hdGljIGNlbGxzIHRoYXQgY29uc3RpdHV0ZSB0aGUgb3V0ZXIgbGF5ZXIgb2YgdGhlIHNraW4uIFRoZXkgY29udGFpbiBnZW5ldGljIG1hdGVyaWFsLCBidXQgdGhleSBkbyBub3QgaG9sZCB0aGUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGZvciBob3cgdHJhaXRzIHdpbGwgYmUgZXhwcmVzc2VkIC0gdGhhdCBpbmZvcm1hdGlvbiBpcyBmb3VuZCBpbiB0aGUgRE5BLCBub3RhYmx5IHdpdGhpbiBjaHJvbW9zb21lcy5cXG5cXG4oZikgRW5kb2NyaW5lIHN5c3RlbTogVGhlIGVuZG9jcmluZSBzeXN0ZW0gaXMgYSBncm91cCBvZiBnbGFuZHMgdGhhdCBzZWNyZXRlIGhvcm1vbmVzLCB3aGljaCByZWd1bGF0ZSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgYm9keS4gSXQgY29udHJvbHMgbWFueSBhc3BlY3RzIG9mIG91ciBib2R5IGZ1bmN0aW9ucyBidXQgZG9lc24ndCBzdG9yZSBnZW5ldGljIGluZm9ybWF0aW9uLlxcblxcbihoKSBQcm90ZWluczogUHJvdGVpbnMgYXJlIGVzc2VudGlhbCBtb2xlY3VsZXMgdGhhdCBwbGF5IG1hbnkgcm9sZXMgaW4gdGhlIGJvZHksIGluY2x1ZGluZyBhY3RpbmcgYXMgZW56eW1lcywgc3RydWN0dXJhbCBjb21wb25lbnRzLCBhbmQgc2lnbmFsaW5nIG1vbGVjdWxlcy4gVGhleSdyZSBjcmVhdGVkIGJhc2VkIG9uIGluc3RydWN0aW9ucyBmcm9tIHRoZSBETkEgYnV0IGRvIG5vdCBjb250YWluIHRoZSBnZW5ldGljIGluZm9ybWF0aW9uIGl0c2VsZi5cXG5cXG5JbiBzdW1tYXJ5LCBjaHJvbW9zb21lcyBhcmUgdGhlIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBjZWxsIG51Y2xldXMgdGhhdCBjYXJyeSB0aGUgZ2VuZXRpYyBtYXRlcmlhbCAoRE5BKSwgd2hpY2ggaW5jbHVkZXMgdGhlIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXNtJ3MgdHJhaXRzLiBUaGUgb3RoZXIgb3B0aW9ucyBhcmUgaW5jb3JyZWN0IGJlY2F1c2UgdGhleSByZWZlciB0byBlbnRpdGllcywgcHJvY2Vzc2VzLCBvciBtZWNoYW5pc21zIHRoYXQgZG8gbm90IHN0b3JlIG9yIGRpcmVjdGx5IGNvbnRhaW4gdGhlIGdlbmV0aWMgaW5mb3JtYXRpb24gdGhhdCBkZXRlcm1pbmVzIGluaGVyaXRlZCB0cmFpdHMuXCIsICdmaW5hbF9hbnN3ZXInOiAnZyd9In1dLCAiNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgYXJlIHRoZSBtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEdyYXNzIChiKSBBbmltYWxzIChjKSBBcHBsZXMgKGQpIFBvdGF0b2VzIChlKSBUcmVlcyAoZikgUGxhbnRzIChnKSBGdW5naSAoaCkgRmllbGRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiMS4gKipHcmFzcyAoYSkqKiAtIFdoaWxlIGdyYXNzIGlzIGluZGVlZCBhIHByb2R1Y2VyLCBvciBhdXRvdHJvcGhpYyBvcmdhbmlzbSwgaW4gdGhlIGJpb2xvZ2ljYWwgc2Vuc2UsIGl0IGlzbid0IHR5cGljYWxseSBlbXBoYXNpemVkIGFzIGEgbWFqb3IgcHJvZHVjZXIgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHF1ZXN0aW9uIGJlY2F1c2UgaXQgaXMgbW9yZSBjb21tb24gYW5kIGxlc3MgdmFyaWVkIHRoYW4gb3RoZXIgcGxhbnQgZm9ybXMuXFxuXFxuMi4gKipBbmltYWxzIChiKSoqIC0gQW5pbWFscyBhcmUgY29uc3VtZXJzIChoZXRlcm90cm9waHMpIHRoYXQgY2Fubm90IHByb2R1Y2UgdGhlaXIgb3duIGZvb2QsIHNvIHRoZXkgYXJlIG5vdCBwcm9kdWNlcnMuXFxuXFxuMy4gKipBcHBsZXMgKGMpKiogLSBMaWtlIGdyYXNzLCBhcHBsZXMgYXJlIGEgdHlwZSBvZiBwbGFudCBwcm9kdWN0LCBidXQgdGhleSBhcmUgZGVyaXZlZCBmcm9tIHByb2R1Y2VycyAodHJlZXMgYmVhcmluZyBhcHBsZXMpLCBub3QgcHJvZHVjZXJzIHRoZW1zZWx2ZXMuXFxuXFxuNC4gKipQb3RhdG9lcyAoZCkqKiAtIFBvdGF0b2VzIGFyZSBhbiBhZ3JpY3VsdHVyYWwgY3JvcCwgYW5kIGxpa2UgYXBwbGVzLCB0aGV5IGFyZSBkZXJpdmVkIGZyb20gcGxhbnRzLiBUaGV5J3JlIG5vdCBwcm9kdWNlcnMsIGJ1dCB0aGUgcHJvZHVjZXJzIGFyZSB0aGUgcG90YXRvIHBsYW50cy5cXG5cXG41LiAqKkZpZWxkcyAoaCkqKiAtIEEgZmllbGQgcmVmZXJzIHRvIGFuIGFncmljdWx0dXJhbCBhcmVhIHdoZXJlIGNyb3BzIGFyZSBncm93bi4gSXQncyBub3QgYSBwcm9kdWNlciBpdHNlbGYsIGJ1dCBjYW4gY29udGFpbiBwcm9kdWNlcnMgc3VjaCBhcyBncmFpbnMsIHZlZ2V0YWJsZXMsIG9yIG90aGVyIGNyb3BzLlxcblxcbjYuICoqUGxhbnRzIChmKSoqIC0gVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIFBsYW50cywgaW4gZ2VuZXJhbCwgYXJlIHByb2R1Y2VycyB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIHBob3Rvc3ludGhlc2lzLCB3aGljaCBjb252ZXJ0cyBsaWdodCBlbmVyZ3kgaW50byBjaGVtaWNhbCBlbmVyZ3kgdGhhdCBjYW4gYmUgbGF0ZXIgcmVsZWFzZWQgdG8gZnVlbCB0aGUgb3JnYW5pc20ncyBhY3Rpdml0aWVzLlxcblxcbjcuICoqRnVuZ2kgKGcpKiogLSBBbHRob3VnaCBmdW5naSBhcmUgYXV0b3Ryb3BoaWMsIHRoZSBxdWVzdGlvbiBzcGVjaWZpY2FsbHkgcmVmZXJzIHRvICd0ZW1wZXJhdHVyZSBhbmQgcHJlY2lwaXRhdGlvbicgYXMgbWFqb3IgZmFjdG9ycy4gV2hpbGUgZnVuZ2kgY2FuIGluZGVlZCBwaG90b3N5bnRoZXNpemUgKGxpa2UgYWxnYWUpLCB0aGV5IGFyZSBvZnRlbiBjb25zaWRlcmVkIGRlY29tcG9zZXJzLCBtb3JlIHJlbGV2YW50IHRvIHRlbXBlcmF0dXJlIGFuZCB3YXN0ZSBjeWNsaW5nIGluIGFuIGVjb3N5c3RlbSByYXRoZXIgdGhhbiBwcmltYXJ5IHByb2R1Y2Vycy5cXG5cXG5JbiBjb25jbHVzaW9uLCB0aGUgcHJpbWFyeSBwcm9kdWNlcnMgYXJlICoqcGxhbnRzKiogYmVjYXVzZSB0aGV5IGFyZSB0aGUgbWFpbiBlbnRpdGllcyBjYXBhYmxlIG9mIGNvbnZlcnRpbmcgc3VubGlnaHQsIGNhcmJvbiBkaW94aWRlLCBhbmQgd2F0ZXIgaW50byBjb21wbGV4IHN1Z2FycyB0aHJvdWdoIHBob3Rvc3ludGhlc2lzLCB1c2luZyB0ZW1wZXJhdHVyZSBhbmQgbGlnaHQgKGEgY29tcG9uZW50IG9mIHByZWNpcGl0YXRpb24gZWZmZWN0cyB2aWEgZXZhcG90cmFuc3BpcmF0aW9uKSBhcyBwcmltYXJ5IGZhY3RvcnMuIEFuaW1hbHMsIGZ1bmdpLCBhcHBsZXMsIHBvdGF0b2VzLCBhbmQgZmllbGRzIGRvIG5vdCBkaXJlY3RseSBlbmdhZ2UgaW4gdGhpcyBwcm9jZXNzIGluIHRoZSBzYW1lIHdheSBhcyBwbGFudHMsIGFuZCB0aHVzLCBhcmUgbm90IHByaW1hcnkgcHJvZHVjZXJzLlwiLCAnZmluYWxfYW5zd2VyJzogJ2YnfSJ9XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogXCJhKSBTY2FyY2UgcmVzb3VyY2VzIC0gVGhpcyBvcHRpb24gc3VnZ2VzdHMgdGhhdCBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIG1ha2VzIHZlZ2V0YXRpb24gc2NhcmNlIHJlc291cmNlcy4gVGhpcyBpcyBub3QgY29ycmVjdCBiZWNhdXNlIHNvaWwgYW5kIG11ZCBiZWluZyBhIGJ1cmlhbCBsb2NhdGlvbiBkb2VzIG5vdCBpbXBseSB0aGUgdmVnZXRhdGlvbiBpdCBjb250YWlucyBiZWNvbWVzIHNjYXJjZS4gVGhlIHZlZ2V0YXRpb24gaXRzZWxmIHdvdWxkbid0IGJlY29tZSBzY2FyY2UgZHVlIHRvIGJ1cmlhbDsgcmF0aGVyLCBpdCBtYXkgY29udHJpYnV0ZSB0byB0aGUgZm9ybWF0aW9uIG9mIGZvc3NpbCBmdWVscy5cXG5cXG5iKSBIYXJtZnVsIHN1YnN0YW5jZXMgLSBWZWdldGF0aW9uIGJ1cmllZCBpbiBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiBpbnRvIGhhcm1mdWwgc3Vic3RhbmNlcy4gV2hpbGUgaXQncyB0cnVlIHRoYXQgb3ZlciBnZW9sb2dpY2FsIHRpbWVzY2FsZXMsIGRlY29tcG9zaXRpb24gcHJvY2Vzc2VzIGNhbiBwcm9kdWNlIHZhcmlvdXMgc3Vic3RhbmNlcywgdGhlIGltbWVkaWF0ZSByZXN1bHQgb2YgYnVyaWFsIGlzbid0IHRoZSBjcmVhdGlvbiBvZiBoYXJtZnVsIHN1YnN0YW5jZXMuIFRoZSBjb3JyZWN0IGFuc3dlciBpbnZvbHZlcyBhIHByb2Nlc3MgdGhhdCBsZWFkcyB0byBhIG1vcmUgY29tcGxleCBmb3NzaWwgZnVlbCwgbm90IGp1c3QgaGFybWZ1bCBzdWJzdGFuY2VzLlxcblxcbmMpIFNjYXJzIC0gVGhpcyBhbnN3ZXIgY2hvaWNlIHN1Z2dlc3RzIHRoZSB2ZWdldGF0aW9uIHRyYW5zZm9ybXMgaW50byBzY2Fycy4gU2NhcnMgYXJlIGluanVyaWVzIG9yIHdvdW5kcyBvbiBhbiBvcmdhbmlzbSwgYW5kIHRoZXJlIGlzIG5vIGJpb2xvZ2ljYWwgb3IgZ2VvbG9naWNhbCBwcm9jZXNzIGJ5IHdoaWNoIGJ1cmlhbCB1bmRlciBzb2lsIGFuZCBtdWQgd291bGQgdHVybiB2ZWdldGF0aW9uIGludG8gc2NhcnMuXFxuXFxuZikgU29tZXRoaW5nIHRvIG1vdmUgLSBUaGlzIGFuc3dlciBpbXBsaWVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgYnVyaWFsIHByb2Nlc3MgaXMgc29tZXRoaW5nIHVzZWQgZm9yIG1vdmVtZW50LiBIb3dldmVyLCBmb3NzaWwgZnVlbHMsIGZvcm1lZCBvdmVyIG1pbGxpb25zIG9mIHllYXJzLCBhcmVuJ3QgdXNlZCBkaXJlY3RseSBmb3IgbW92ZW1lbnQgYnV0IGFyZSBzb3VyY2VzIG9mIGVuZXJneSB3aGVuIGNvbWJ1c3RlZC4gVGhleSBkb24ndCBiZWNvbWUnc29tZXRoaW5nIHRvIG1vdmUnIGluIGFueSBpbW1lZGlhdGUgb3IgZGlyZWN0IHNlbnNlLlxcblxcbmcpIE1hZ2ljIC0gVGhpcyBvcHRpb24gaXMgbm90IGEgc2NpZW50aWZpYyBvciBmYWN0dWFsIGFuc3dlci4gVGhlIHByb2Nlc3Mgb2YgaG93IHZlZ2V0YXRpb24gdHJhbnNmb3JtcyBpbnRvIGZvc3NpbCBmdWVscyBpcyBhIG5hdHVyYWwgZ2VvbG9naWNhbCBwcm9jZXNzLCBub3QgYSBtYWdpY2FsIG9uZS5cXG5cXG5oKSBQaWNuaWNzIC0gVGhpcyBvcHRpb24gaXMgY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIGJpb2xvZ2ljYWwgb3IgZ2VvbG9naWNhbCBwcm9jZXNzIGRlc2NyaWJlZCBpbiB0aGUgcXVlc3Rpb24uIFBpY25pYyBpdGVtcyBhcmUgaHVtYW4tbWFkZSBhbmQgZG9uJ3QgcmVzdWx0IGZyb20gdGhlIHRyYW5zZm9ybWF0aW9uIG9mIGRlYWQgcGxhbnQgbWF0ZXJpYWwuXFxuXFxuU28gdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChkKSBGb3NzaWwgZnVlbHMsIGJlY2F1c2UgdGhpcyBpcyB0aGUgbmF0dXJhbCBwcm9jZXNzIGJ5IHdoaWNoIGRlYWQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGJlY29tZXMgcGFydCBvZiB0aGUgZm9zc2lsIGZ1ZWwgZGVwb3NpdHMuIEZvc3NpbCBmdWVscyBmb3JtIGZyb20gdGhlIHJlbWFpbnMgb2YgZGVhZCBwbGFudHMgYW5kIGFuaW1hbHMgdGhhdCBoYXZlIGJlZW4gYnVyaWVkIGFuZCBzdWJqZWN0ZWQgdG8gaW1tZW5zZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIG1pbGxpb25zIG9mIHllYXJzLlwiLCAnZmluYWxfYW5zd2VyJzogJ2QnfSJ9XSwgIjkiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVuIHdpbGwgYW5pbWFscyBtb3ZlIHRvIGFub3RoZXIgYXJlYT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVG8ga2VlcCB0aGVpciBib2R5IGhlYXQuIChiKSBSZXVzaW5nIG1hdGVyaWFscyAoYykgSWYgdGhleSBjYW4gbm8gbG9uZ2VyIGdldCBmb29kIChkKSBJZiB0aGV5IGFyZSBib3JlZCAoZSkgTWFyc2hlcyBhbmQgc3dhbXBzIChmKSBJZiB0aGV5IGhhdmUgdG9vIG11Y2ggbW9uZXkgKGcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIChoKSBJZiB0aGV5IGhhdmUgdG9vIG11Y2ggZm9vZCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcIldoZW4gYW5pbWFscyBtb3ZlIHRvIGFub3RoZXIgYXJlYSwgaXQncyBub3QgZHVlIHRvOlxcblxcbihhKSBLZWVwaW5nIHRoZWlyIGJvZHkgaGVhdCAtIFRoaXMgaXMgdHlwaWNhbGx5IGluZmx1ZW5jZWQgYnkgc2Vhc29uYWwgY2hhbmdlcyBvciB3ZWF0aGVyIGNvbmRpdGlvbnMsIG5vdCB0aGUgcGh5c2ljYWwgYWN0IG9mIG1vdmluZyB0byBhbm90aGVyIGFyZWEuIFdoaWxlIHRlbXBlcmF0dXJlIGNhbiBiZSBhIGZhY3RvciBpbiBtaWdyYXRpb24sIGl0IGRvZXNuJ3QgZHJpdmUgdGhlIGRlY2lzaW9uIGZvciB0aGUgbW92ZW1lbnQgaXRzZWxmLlxcblxcbihiKSBSZXVzaW5nIG1hdGVyaWFscyAtIFRoaXMgb3B0aW9uIHJlZmVycyB0byByZWN5Y2xpbmcgb3IgcmV1c2luZyBwaHlzaWNhbCBvYmplY3RzIGFuZCBoYXMgbm8gZGlyZWN0IGNvcnJlbGF0aW9uIHRvIGFuaW1hbCBtaWdyYXRpb24gb3IgbW92ZW1lbnQuXFxuXFxuKGQpIEJlaW5nIGJvcmVkIC0gQm9yZWRvbSBpcyBhIGh1bWFuIGNvbnN0cnVjdCBhbmQgZG9lc24ndCBkaXJlY3RseSBhcHBseSB0byBhbmltYWxzJyBiZWhhdmlvcmFsIGRlY2lzaW9ucy4gQW5pbWFscyBhcmUgZHJpdmVuIGJ5IGluc3RpbmN0cyBhbmQgYmFzaWMgbmVlZHMgcmF0aGVyIHRoYW4gYm9yZWRvbS5cXG5cXG4oZikgSGF2aW5nIHRvbyBtdWNoIG1vbmV5IC0gVGhpcyBpcyBhbiBlY29ub21pYyBjb25jZXB0IHRoYXQgZG9lc24ndCBhcHBseSB0byBhbmltYWxzLCBhcyB0aGV5IGRvbid0IGhhdmUgY3VycmVuY3kgb3IgZmluYW5jaWFsIHJlc291cmNlcy5cXG5cXG4oZSkgTWFyc2hlcyBhbmQgc3dhbXBzIC0gVGhlc2UgYXJlIHNwZWNpZmljIHR5cGVzIG9mIGVjb3N5c3RlbXMsIGFuZCB3aGlsZSBhbmltYWxzIG1heSBpbmhhYml0IHRoZXNlIGFyZWFzIG9yIG1vdmUgdG8gdGhlbSBmb3IgdmFyaW91cyByZWFzb25zLCBtZXJlbHkgZXhwbGFpbmluZyB3aGVyZSB0aGV5IG1pZ2h0IGdvIGRvZXNuJ3QgYWRkcmVzcyB3aHkgdGhleSBtb3ZlLlxcblxcbihnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAtIFRoaXMgZGVzY3JpYmVzIGF0bW9zcGhlcmljIHBoZW5vbWVuYSBhbmQgZG9lcyBub3QgaW5mbHVlbmNlIHRoZSBtb3ZlbWVudCBvZiBhbmltYWxzLlxcblxcbihoKSBIYXZpbmcgdG9vIG11Y2ggZm9vZCAtIFdoaWxlIGFuaW1hbHMgbWlnaHQgbWlncmF0ZSB0byBhdm9pZCBhcmVhcyBvZiBvdmVyLWNvbXBldGl0aW9uIGZvciBmb29kIHJlc291cmNlcywgdGhlIHBocmFzZSAndG9vIG11Y2ggZm9vZCcgaXMgbm90IGEgbG9naWNhbCBtb3RpdmF0b3IgZm9yIG1vdmluZyB0byBhIG5ldyBhcmVhLiBUb28gbXVjaCBmb29kIHdvdWxkIG1lYW4gdGhleSdyZSBhbHJlYWR5IGluIGEgZ29vZCBsb2NhdGlvbiwgbmVnYXRpbmcgdGhlIG5lZWQgZm9yIG1pZ3JhdGlvbi5cXG5cXG4oYykgSWYgdGhleSBjYW4gbm8gbG9uZ2VyIGdldCBmb29kIC0gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2UgYW5pbWFscyBvZnRlbiBtaWdyYXRlIGluIHJlc3BvbnNlIHRvIHNjYXJjaXR5IGluIHRoZWlyIGN1cnJlbnQgaGFiaXRhdC4gSW5hZGVxdWF0ZSBmb29kIGF2YWlsYWJpbGl0eSBjYW4gbGVhZCB0byBzdGFydmF0aW9uLCBwcm9tcHRpbmcgYSBtb3ZlbWVudCB0byBhcmVhcyB3aGVyZSByZXNvdXJjZXMgYXJlIG1vcmUgYWJ1bmRhbnQuIFRoZXkgYXJlIHNlZWtpbmcgdG8gZW5zdXJlIHRoZWlyIHN1cnZpdmFsIGFuZCByZXByb2R1Y3Rpb24uXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgKGMpIGFzIGl0IGlzIHRoZSBtb3N0IGxvZ2ljYWwgZXhwbGFuYXRpb24gZm9yIGFuaW1hbCBtb3ZlbWVudCB0byBhbm90aGVyIGFyZWEgYmFzZWQgb24gc3Vydml2YWwgbmVlZHMsIHBhcnRpY3VsYXJseSBmb29kIGF2YWlsYWJpbGl0eS5cIiwgJ2ZpbmFsX2Fuc3dlcic6ICdjJ30ifV0sICIxMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgS2luZXRpYyBlbmVyZ3kgKGIpIExvdWQgbm9pc2VzIChjKSBWaWJyYXRpbmcgd2F2ZXMgKGQpIEFuIG9iamVjdCBpcyBzZWVuIChlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IChmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW4gKGgpIEhhcm1mdWwgc3Vic3RhbmNlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcIjEuIFJlYWQgdGhlIHF1ZXN0aW9uOiAnQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB3aGF0PydcXG4gICAgLSBUaGUgcXVlc3Rpb24gYXNrcyBhYm91dCB0aGUgZm9ybSBvZiBlbmVyZ3kgdGhhdCBhIGZpcmVjcmFja2VyIHRyYW5zZm9ybXMgY2hlbWljYWwgZW5lcmd5IGludG8uXFxuXFxuMi4gSWRlbnRpZnkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gb3B0aW9uczpcXG4gICAtIGEpIEtpbmV0aWMgZW5lcmd5XFxuICAgLSBiKSBMb3VkIG5vaXNlc1xcbiAgIC0gYykgVmlicmF0aW5nIHdhdmVzXFxuICAgLSBkKSBBbiBvYmplY3QgaXMgc2VlblxcbiAgIC0gZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneVxcbiAgIC0gZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkXFxuICAgLSBnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuXFxuICAgLSBoKSBIYXJtZnVsIHN1YnN0YW5jZXNcXG5cXG4zLiBEZXRlcm1pbmUgd2hpY2ggb3B0aW9ucyBhcmUgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2U6XFxuICAgLSBLaW5ldGljIGVuZXJneSBjb3VsZCBiZSBhIHJlc3VsdCBvZiB0aGUgZmlyZWNyYWNrZXIncyBleHBsb3Npb24sIGJ1dCBpdCBpcyBub3QgdGhlIG1vc3QgZGlyZWN0IG9yIHNwZWNpZmljIHRyYW5zZm9ybWF0aW9uLlxcbiAgIC0gTG91ZCBub2lzZXMgYXJlIGEgYnlwcm9kdWN0IGJ1dCBkbyBub3QgcmVwcmVzZW50IGVuZXJneS5cXG4gICAtIFZpYnJhdGluZyB3YXZlcyBtYXkgcmVzdWx0IGZyb20gdGhlIGV4cGxvc2lvbiwgYnV0IHRoZXkgYXJlIGFsc28gYSBieXByb2R1Y3QgcmF0aGVyIHRoYW4gdGhlIHByaW1hcnkgY29udmVydGVkIGVuZXJneS5cXG4gICAtIEFuIG9iamVjdCBpcyBzZWVuOiBUaGlzIGlzIG5vdCBhIGZvcm0gb2YgZW5lcmd5LlxcbiAgIC0gRWxlY3Ryb21hZ25ldGljIGVuZXJneSBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgY29udmVyc2lvbiBpbiBhIGZpcmVjcmFja2VyLlxcbiAgIC0gRGVveHlyaWJvbnVjbGVpYyBhY2lkIChETkEpIGlzIG9yZ2FuaWMgbWF0ZXJpYWwgYW5kIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgY29udmVyc2lvbiBhdCBwbGF5LlxcbiAgIC0gSHlkcm9nZW4gYW5kIG94eWdlbiBhcmUgZWxlbWVudHMgcHJvZHVjZWQgaW4gdGhlIGNoZW1pY2FsIHJlYWN0aW9uIGJ1dCBub3QgdGhlIGZvcm0gb2YgZW5lcmd5IGl0c2VsZi5cXG4gICAtIEhhcm1mdWwgc3Vic3RhbmNlcyBhcmUgYnlwcm9kdWN0cyBidXQgbm90IHRoZSBmb3JtIG9mIGVuZXJneS5cXG5cXG40LiBUaGUgY29ycmVjdCBhbnN3ZXIgaXMgKGMpOlxcbiAgIC0gVmlicmF0aW5nIHdhdmVzOiBXaGlsZSBmaXJlY3JhY2tlcnMgZG8gaW5kZWVkIHByb2R1Y2UgdmlicmF0aW9ucyAod2hpY2ggY2FuIGZlbHQgb3IgaGVhcmQgYXMgc291bmQpLCB0aGUgbW9zdCBhY2N1cmF0ZSBhbmQgY29tcGxldGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVuZXJneSB0cmFuc2Zvcm1hdGlvbiBpcyBub3QgbGlzdGVkIGRpcmVjdGx5LlxcblxcbjUuIEV4cGxhbmF0aW9uIG9mIHdoeSBvdGhlciBvcHRpb25zIGFyZSBpbmNvcnJlY3Q6XFxuICAgLSBhKSBLaW5ldGljIGVuZXJneTogV2hpbGUga2luZXRpYyBlbmVyZ3kgaXMgaW52b2x2ZWQgaW4gdGhlIGV4cGxvc2lvbiwgaXQgaXMgbm90IHRoZSBpbW1lZGlhdGUgYW5kIHByaW1hcnkgY29udmVyc2lvbiBmb3JtLlxcbiAgIC0gYikgTG91ZCBub2lzZXM6IFRoaXMgaXMgYSByZXN1bHQgb2YgdGhlIGV4cGxvc2lvbiBidXQgbm90IGEgZm9ybSBvZiBlbmVyZ3kuXFxuICAgLSBkKSBBbiBvYmplY3QgaXMgc2VlbjogVGhpcyBzdGF0ZW1lbnQgaXMgaXJyZWxldmFudCB0byBlbmVyZ3kgY29udmVyc2lvbi5cXG4gICAtIGUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3k6IEFsdGhvdWdoIHJlbGF0ZWQgdG8gdGhlIGVuZXJneSByZWxlYXNlZCBkdXJpbmcgdGhlIGV4cGxvc2lvbiAobGlnaHQgYW5kIHNvdW5kKSwgaXQgaXMgbm90IHRoZSBtb3N0IGRpcmVjdCBkZXNjcmlwdGlvbiBvZiB0aGUgY29udmVyc2lvbiBmcm9tIGNoZW1pY2FsIHRvIGFub3RoZXIgZm9ybS5cXG4gICAtIGYpIERlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKTogTm90IHJlbGF0ZWQgdG8gdGhlIGVuZXJneSB0cmFuc2Zvcm1hdGlvbiBwcm9jZXNzLlxcbiAgIC0gZykgSHlkcm9nZW4gYW5kIG94eWdlbjogUHJvZHVjZWQgZWxlbWVudHMgYnV0IG5vdCBmb3JtcyBvZiBlbmVyZ3kuXFxuICAgLSBoKSBIYXJtZnVsIHN1YnN0YW5jZXM6IEJ5cHJvZHVjdHMgYnV0IG5vdCBmb3JtcyBvZiBlbmVyZ3kuXFxuXFxuSW4gY29uY2x1c2lvbiwgd2hpbGUgYSBmaXJlY3JhY2tlciBwcmltYXJpbHkgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8ga2luZXRpYyBlbmVyZ3kgYW5kIHZpYnJhdGlvbnMgKHNvdW5kIHdhdmVzKSwgdGhlIGNsb3Nlc3Qgb3B0aW9uIHByb3ZpZGVkIGlzIChjKSBWaWJyYXRpbmcgd2F2ZXMsIGluZGljYXRpbmcgdGhlIG1vc3QgZXZpZGVudCBwaHlzaWNhbCBlZmZlY3QgYW5kIGZvcm0gb2YgZW5lcmd5IHRyYW5zZm9ybWF0aW9uIGZyb20gY2hlbWljYWwgZW5lcmd5IGF0IHRoZSBlbGVtZW50YXJ5IGxldmVsLlwiLCAnZmluYWxfYW5zd2VyJzogJ2MnfSJ9XSwgIjExIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNYWpvciBlZmZlY3RzIChiKSBSZXNwaXJhdGlvbiAoYykgUm9sZXggKGQpIERlbnNpdHkgKGUpIERpcGh0aGVyaWEgKGYpIENhbmlzIGx1cHVzIChnKSBTa2luIGNvbG9yIChoKSBEaWdlc3Rpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogXCIoYSkgTWFqb3IgZWZmZWN0czpcXG5UaGlzIHRlcm0gY291bGQgcG90ZW50aWFsbHkgcmVsYXRlIHRvIGdlbmV0aWNzLCBidXQgaXQncyBhIGdlbmVyYWwgdGVybSB0aGF0IGNvdWxkIGRlc2NyaWJlIHRoZSBlZmZlY3RzIG9mIG11bHRpcGxlIGdlbmVzIG9uIGEgcGhlbm90eXBlLCByYXRoZXIgdGhhbiBhIHNwZWNpZmljIHJlc3VsdC4gVGh1cywgaXQncyBub3QgYSBkaXJlY3QgYW5zd2VyIHRvIHRoZSBxdWVzdGlvbiBhc2tpbmcgZm9yIGEgc3BlY2lmaWMgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLlxcblxcbihiKSBSZXNwaXJhdGlvbjpcXG5SZXNwaXJhdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyBpbnZvbHZpbmcgdGhlIGV4Y2hhbmdlIG9mIGdhc2VzIChveHlnZW4gYW5kIGNhcmJvbiBkaW94aWRlKSB0aGF0IG9jY3VycyBpbiBsaXZpbmcgb3JnYW5pc21zLiBXaGlsZSBnZW5lIGludGVyYWN0aW9ucyBjYW4gaW5mbHVlbmNlIG1ldGFib2xpYyBwcm9jZXNzZXMgaW5jbHVkaW5nIHJlc3BpcmF0aW9uLCB0aGUgdGVybSAncmVzcGlyYXRpb24nIGl0c2VsZiBpcyBub3QgYSByZXN1bHQgZGlyZWN0bHkgc3RlbW1pbmcgZnJvbSB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy5cXG5cXG4oYykgUm9sZXg6XFxuQSBSb2xleCBpcyBhIGx1eHVyeSB3cmlzdHdhdGNoLiBUaGlzIG9wdGlvbiBpcyBpcnJlbGV2YW50IHRvIHRoZSBjb250ZXh0IG9mIGdlbmV0aWNzIGFuZCB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy5cXG5cXG4oZCkgRGVuc2l0eTpcXG5EZW5zaXR5IGlzIGEgcGh5c2ljYWwgcHJvcGVydHkgb2YgbWF0dGVyIGFuZCBkb2VzIG5vdCBkaXJlY3RseSByZWxhdGUgdG8gZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIG11bHRpcGxlIGdlbmVzLlxcblxcbihlKSBEaXBodGhlcmlhOlxcbkRpcGh0aGVyaWEgaXMgYSBiYWN0ZXJpYWwgZGlzZWFzZTsgd2hpbGUgZ2VuZXMgY2FuIGluZmx1ZW5jZSBzdXNjZXB0aWJpbGl0eSB0byBjZXJ0YWluIGRpc2Vhc2VzLCAnZGlwaHRoZXJpYScgaXRzZWxmIGlzbid0IGEgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzIGJ1dCByYXRoZXIgYW4gZWZmZWN0IG9mIGEgcGF0aG9nZW5pYyBiYWN0ZXJpdW0gKENvcnluZWJhY3Rlcml1bSBkaXBodGhlcmlhZSkuXFxuXFxuKGYpIENhbmlzIGx1cHVzOlxcbkNhbmlzIGx1cHVzIGlzIHRoZSBzY2llbnRpZmljIG5hbWUgZm9yIHRoZSBncmF5IHdvbGYsIGEgc3BlY2llcy4gVGhpcyBpcyBub3QgYSByZXN1bHQgYXJpc2luZyBmcm9tIHRoZSBpbnRlcmFjdGlvbiBvZiBtdWx0aXBsZSBnZW5lcyBpbiBhIGdlbmV0aWMgY29udGV4dDsgaXQgcmVmZXJzIHRvIGEgdGF4b25vbWljIGNsYXNzaWZpY2F0aW9uLlxcblxcbihnKSBTa2luIGNvbG9yOlxcblNraW4gY29sb3IgaXMgb2Z0ZW4gaW5mbHVlbmNlZCBieSB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcywgaW5jbHVkaW5nIHRob3NlIHJlc3BvbnNpYmxlIGZvciB0aGUgcHJvZHVjdGlvbiBvZiBtZWxhbmluLCB3aGljaCBnaXZlcyBza2luIGl0cyBjb2xvci4gVGhpcyBpcyBhIGRpcmVjdCByZXN1bHQgb2YgZ2VuZXRpYyBmYWN0b3JzLlxcblxcbihoKSBEaWdlc3Rpb246XFxuTGlrZSByZXNwaXJhdGlvbiwgZGlnZXN0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIGludm9sdmluZyBtdWx0aXBsZSBzdGVwcyBhbmQgb3JnYW5zLiBXaGlsZSBnZW5lcyBjZXJ0YWlubHkgcGxheSBhIHJvbGUgaW4gcmVndWxhdGluZyBkaWdlc3RpdmUgcHJvY2Vzc2VzIChlLmcuLCBlbnp5bWVzIGludm9sdmVkIGluIGRpZ2VzdGlvbiksICdkaWdlc3Rpb24nIGFzIGEgcHJvY2VzcyByYXRoZXIgdGhhbiBhIHJlc3VsdCBvZiBnZW5ldGljIGludGVyYWN0aW9uIGlzbid0IGFzIHNwZWNpZmljIGFzIHNraW4gY29sb3IgZm9yIGEgZ2VuZXRpYyB0cmFpdCdzIHJlc3VsdC5cXG5cXG5UaHVzLCAoZykgU2tpbiBjb2xvciBpcyB0aGUgbW9zdCBzcGVjaWZpYyBhbmQgZGlyZWN0IHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gQWx0aG91Z2ggb3RoZXIgcHJvY2Vzc2VzIChyZXNwaXJhdGlvbiwgZGlnZXN0aW9uKSBtaWdodCBiZSBpbmZsdWVuY2VkIGJ5IGdlbmUgaW50ZXJhY3Rpb25zLCB0aGV5IHJlZmVyIHRvIG9uZ29pbmcgZnVuY3Rpb25zIHJhdGhlciB0aGFuIGEgc3BlY2lmaWMsIG9ic2VydmFibGUgb3V0Y29tZSBsaWtlIHNraW4gY29sb3IuXCIsICdmaW5hbF9hbnN3ZXInOiAnZyd9In1dLCAiMTIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2hlZXAgKGIpIFNhbG1vbiAoYykgR3Jhc3NlcyAoZCkgQmF0cyAoZSkgQW5pbWFscyAoZikgU2hydWJzIChnKSBIdW1hbnMgKGgpIFRyZWVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiKGEpICoqU2hlZXAqKjogU2hlZXAgYXJlIGhlcmJpdm9yZXMsIHByaW1hcmlseSBmZWVkaW5nIG9uIGdyYXNzZXMgYW5kIG90aGVyIHBsYW50cy4gVGhleSB0eXBpY2FsbHkgY2Fubm90IGZlZWQgYXQgbXVsdGlwbGUgdHJvcGhpYyBsZXZlbHMuXFxuXFxuKGIpICoqU2FsbW9uKio6IFdoaWxlIHNhbG1vbiBjYW4gdmFyeSBpbiB0aGVpciBkaWV0LCB0aGV5IGFyZSBnZW5lcmFsbHkgY29uc2lkZXJlZCB0byBiZSBwcmltYXJpbHkgcGlzY2l2b3JlcyAoZmlzaC1lYXRpbmcgcHJlZGF0b3JzKSBhbmQgZG8gbm90IGZlZWQgb24gcGxhbnRzLiBUaGVyZWZvcmUsIGFsdGhvdWdoIHRoZWlyIGRpZXQgY2FuIGNoYW5nZSBiYXNlZCBvbiB0aGVpciBsaWZlIHN0YWdlLCB0aGV5IGRvbid0IGdlbmVyYWxseSBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG4oYykgKipHcmFzc2VzKio6IEdyYXNzZXMgYXJlIHBsYW50cywgc3BlY2lmaWNhbGx5IG1vbm9jb3RzIHVzdWFsbHkgZm91bmQgaW4gdGhlIG9yZGVyIFBvYWxlcy4gVGhleSBhcmUgYXV0b3Ryb3BocywgbWVhbmluZyB0aGV5IHByb2R1Y2UgdGhlaXIgb3duIGZvb2QgdGhyb3VnaCBwaG90b3N5bnRoZXNpcy4gVGhleSBkbyBub3QgZmVlZCBhdCBhbnkgdHJvcGhpYyBsZXZlbCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBjb25zdW1lcnMgYnV0IHByb2R1Y2Vycy5cXG5cXG4oZCkgKipCYXRzKio6IEJhdHMgYXJlIHR5cGljYWxseSBjb25zaWRlcmVkIGluc2VjdGl2b3JlcywgZmVlZGluZyBwcmltYXJpbHkgb24gaW5zZWN0cy4gU29tZSBiYXQgc3BlY2llcyBhbHNvIGVhdCBmcnVpdHMgb3IgbmVjdGFyLCBidXQgdGhleSBkb24ndCBjcm9zcyB0cm9waGljIGxldmVscy4gVGhleSBmZWVkIGF0IGEgc2luZ2xlIHRyb3BoaWMgbGV2ZWwsIGVpdGhlciBhcyBjb25zdW1lcnMgb2YgaW5zZWN0cyAocHJpbWFyeSBjb25zdW1lcnMpIG9yIGZydWl0cyAob21uaXZvcmVzKS5cXG5cXG4oZSkgKipBbmltYWxzKio6IFRoaXMgaXMgYSBicm9hZCB0ZXJtIGVuY29tcGFzc2luZyBtYW55IGRpZmZlcmVudCBvcmdhbmlzbXMsIGJ1dCBpdCBkb2Vzbid0IHNwZWNpZmljYWxseSByZWZlciB0byBhIHRyb3BoaWMgbGV2ZWwuIEFsbCBhbmltYWxzIGFyZSBjb25zdW1lcnMgYW5kIHRoZXJlZm9yZSBiZWxvbmcgdG8gYXQgbGVhc3Qgb25lIHRyb3BoaWMgbGV2ZWwsIGJ1dCB0aGV5IG1heSBvY2N1cHkgZGlmZmVyZW50IGxldmVscyBkZXBlbmRpbmcgb24gdGhlaXIgZGlldC4gSG93ZXZlciwgdGhlIHF1ZXN0aW9uIGltcGxpZXMgYSBzaW5nbGUgbGV2ZWwsIHNvIHRoaXMgaXNuJ3QgYSBzYXRpc2ZhY3RvcnkgYW5zd2VyLlxcblxcbihmKSAqKlNocnVicyoqOiBTaW1pbGFyIHRvIGdyYXNzZXMsIHNocnVicyBhcmUgYXV0b3Ryb3BoaWMgb3JnYW5pc21zLiBUaGV5IGFyZSBjb25zdW1lcnMgb2YgYWlyIGFuZCB3YXRlciwgcGFydGljdWxhcmx5IHN1bmxpZ2h0LCB0aHJvdWdoIHBob3Rvc3ludGhlc2lzLiBUaGV5IGRvIG5vdCBmZWVkIGF0IGFueSB0cm9waGljIGxldmVsLlxcblxcbihnKSAqKkh1bWFucyoqOiBIdW1hbnMgYXJlIG9tbml2b3JlcywgbWVhbmluZyB0aGV5IGNhbiBjb25zdW1lIGJvdGggcGxhbnQgYW5kIGFuaW1hbCBtYXR0ZXIuIFdoaWxlIGl0IG1pZ2h0IHNlZW0gbGlrZSB0aGV5IGNyb3NzIHRyb3BoaWMgbGV2ZWxzIGJ5IGNvbnN1bWluZyBmb29kcyBmcm9tIGRpZmZlcmVudCBzb3VyY2VzLCBpbmRpdmlkdWFsIG1lYWxzIGRvIG5vdCBxdWFsaWZ5IGFzIGNyb3NzaW5nIHRyb3BoaWMgbGV2ZWxzLiBDcm9zc2luZyB0cm9waGljIGxldmVscyB3b3VsZCBpbXBseSBhIGNvbnNpc3RlbnQgZGlldCB3aGVyZSBvbmUgaXMgYW4gYW5pbWFsIGNvbnN1bWVyIGFuZCBhbm90aGVyIGEgcGxhbnQgY29uc3VtZXIsIHdoaWNoIGh1bWFucywgYXMgb21uaXZvcmVzLCBkbyBub3Qgc3RyaWN0bHkgYWRoZXJlIHRvLlxcblxcbihoKSAqKlRyZWVzKio6IFRyZWVzIGJlbG9uZyB0byB0aGUgcGxhbnQga2luZ2RvbSwgbW9yZSBzcGVjaWZpY2FsbHkgdG8gdGhlIGRpdmlzaW9uIFRyYWNoZW9waHl0YSwgYW5kIGxpa2Ugc2hydWJzIGFuZCBncmFzc2VzLCB0aGV5IGFyZSBhdXRvdHJvcGhpYyBhbmQgZG8gbm90IGZlZWQgYXQgYW55IHRyb3BoaWMgbGV2ZWwuXFxuXFxuTm9uZSBvZiB0aGUgZ2l2ZW4gb3B0aW9ucyBpbmRpY2F0ZSBhIGxpZmVzdHlsZSB0aGF0IGNvbnNpc3RlbnRseSBpbnZvbHZlcyBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC4gXFxuXFxuVGhlIGNvcnJlY3QgYW5zd2VyIGNob2ljZSBzaG91bGQgYmV0dGVyIHJlZmxlY3QgYW4gb3JnYW5pc20gdGhhdCwgdW5kZXIgZGlmZmVyZW50IGNpcmN1bXN0YW5jZXMgb3Igc3BlY2lmaWMgY29uZGl0aW9ucywgbWlnaHQgY29uc3VtZSBlbnRpdGllcyBmcm9tIG11bHRpcGxlIHRyb3BoaWMgbGV2ZWxzLCBidXQgdGhlIHByb3ZpZGVkIGNob2ljZXMgZG8gbm90IGZpdCB0aGF0IGRlc2NyaXB0aW9uIGRpcmVjdGx5LiBIb3dldmVyLCBzaW5jZSB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIGZvciBhIGJpb2xvZ2ljYWwgZW50aXR5LCBodW1hbnMsIHdpdGggdGhlaXIgZGl2ZXJzZSBkaWV0IGFzcGVjdCwgYXJlIGNvbnNpZGVyZWQgb21uaXZvcmVzIGNhcGFibGUgb2YgY29uc3VtaW5nIHBsYW50cyBhbmQgYW5pbWFscy4gVGhlcmVmb3JlLCBodW1hbnMgY291bGQgYmUgaW5jb3JyZWN0bHkgcGVyY2VpdmVkIGFzIGZpdHRpbmcgdGhlIGRlc2NyaXB0aW9uIG9mICdmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbCwnIGJ1dCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoaXMgbXVsdGlwbGUtY2hvaWNlIGZvcm1hdCBhbmQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMsIG5vbmUgYXBwcm9wcmlhdGVseSBkaXNwbGF5IHRoaXMgY2FwYWJpbGl0eS4gSGVuY2UsIHRoZSBjbG9zZXN0IGFsdGhvdWdoIG1pc2xlYWRpbmcgYW5zd2VyIG1pZ2h0IGJlIChhKSBTaGVlcCwgc2luY2UgdGhlIHF1ZXN0aW9uIGluY29ycmVjdGx5IGFzc3VtZXMgdGhlcmUgZXhpc3RzIGFuIG9wdGlvbiB0aGF0IGZpdHMgdGhlIHRyb3BoaWMgbGV2ZWwgY3Jvc3NpbmcgZGVzY3JpcHRpb24gYW1vbmcgdGhlIHByb3ZpZGVkIGNob2ljZXMuXCIsICdmaW5hbF9hbnN3ZXInOiAnYSd9In1dLCAiMTMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaG8gY2FuIHNoaXZlcj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmF0cyAoYikgU2lkZXdhbGtzIChjKSBIdW1hbnMgKGQpIEJlZXMgKGUpIEtvYWxhcyAoZikgTW91bnRhaW5zIChnKSBUcmVlcyAoaCkgUGVvcGxlIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiTGV0J3MgYW5hbHl6ZSBlYWNoIGFuc3dlciBjaG9pY2U6XFxuXFxuKGEpICoqQmF0cyoqOiBXaGlsZSBiYXRzIGFyZSBpbmRlZWQgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIHRoZXkgYXJlIG5vdCB0aGUgYmVzdCBhbnN3ZXIgZm9yIHRoaXMgcXVlc3Rpb24uIEl0J3MgcG9zc2libGUgdGhleSB3ZXJlIGluY2x1ZGVkIHRvIHRlc3QgaWYgeW91IGNvbnNpZGVyIHNwZWNpYWxpemVkIGhpYmVybmF0aW5nIG1hbW1hbHMuXFxuXFxuKGIpICoqU2lkZXdhbGtzKio6IFNpZGV3YWxrcyBhcmUgaW5hbmltYXRlIG9iamVjdHMgYW5kIGRvIG5vdCBoYXZlIHRoZSBhYmlsaXR5IHRvIHNoaXZlci4gVGhleSBjYW5ub3QgZ2VuZXJhdGUgb3IgY29udHJvbCBib2R5IGhlYXQuXFxuXFxuKGMpICoqSHVtYW5zKio6IEh1bWFucyBjYW4gZGVmaW5pdGVseSBzaGl2ZXIuIFNoaXZlcmluZyBpcyBhIHBoeXNpb2xvZ2ljYWwgcmVzcG9uc2UgaW4gaHVtYW5zIGFuZCBtYW55IGFuaW1hbHMgd2hlcmUgcmh5dGhtaWMgbXVzY2xlIGNvbnRyYWN0aW9ucyBnZW5lcmF0ZSBoZWF0IHRvIGhlbHAgbWFpbnRhaW4gYm9keSB0ZW1wZXJhdHVyZSwgZXNwZWNpYWxseSBkdXJpbmcgY29sZCBjb25kaXRpb25zLlxcblxcbihkKSAqKkJlZXMqKjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIFNoaXZlcmluZywgaW4gdGhpcyBiaW9sb2dpY2FsIGNvbnRleHQsIGlzIGFsc28ga25vd24gYXMgJ3RheGlsbGF0aW9uJyBpbiBiZWVzLiBJdCdzIGEgcmVzcG9uc2UgdG8gY29sZCB0ZW1wZXJhdHVyZXMgd2hlcmUgYmVlcyBjbHVzdGVyIHRoZWlyIGJvZGllcyB0b2dldGhlciBhbmQgc2hpdmVyIHRvIGdlbmVyYXRlIHdhcm10aCBhbmQgY29uc2VydmUgaXQuXFxuXFxuKGUpICoqS29hbGFzKio6IFdoaWxlIGtvYWxhcyBhcmUgbWFtbWFscyBhbmQgY2FwYWJsZSBvZiBzb21lIGZvcm1zIG9mIHNoaXZlcmluZywgdGhlIHRlcm0gJ3NoaXZlcicgaXMgdHlwaWNhbGx5IHVzZWQgaW4gYSBjb250ZXh0IG9mIHJhcGlkIG11c2NsZSBjb250cmFjdGlvbnMgdG8gZ2VuZXJhdGUgaGVhdCBpbiByZXNwb25zZSB0byBjb2xkIHRlbXBlcmF0dXJlcy4gS29hbGFzLCBiZWluZyBlY3RvdGhlcm1pYyAoY29sZC1ibG9vZGVkKSwgZG9uJ3Qgc2hpdmVyIGluIHRoZSBzYW1lIGNvbnRleHQgYXMgbWFtbWFscyBsaWtlIGh1bWFucyBvciBiZWVzLiBUaGV5IG1haW50YWluIHRoZWlyIGJvZHkgdGVtcGVyYXR1cmUgdGhyb3VnaCBleHRlcm5hbCBzb3VyY2VzLCBsaWtlIHN1biBleHBvc3VyZSwgYW5kIGdlbmVyYWxseSBkb24ndCBzaGl2ZXIgaW4gcmVzcG9uc2UgdG8gY29sZCBhcyBtYW1tYWxzIGRvLlxcblxcbihmKSAqKk1vdW50YWlucyoqOiBNb3VudGFpbnMgYXJlIGluYW5pbWF0ZSBnZW9ncmFwaGljYWwgZmVhdHVyZXMgYW5kIGRvIG5vdCBwb3NzZXNzIHRoZSBhYmlsaXR5IHRvIHNoaXZlciBvciByZWd1bGF0ZSBib2R5IHRlbXBlcmF0dXJlIGluIGFueSBtYW5uZXIuXFxuXFxuKGcpICoqVHJlZXMqKjogVHJlZXMsIGJlaW5nIHBsYW50cywgZG8gbm90IGhhdmUgdGhlIGNlbGx1bGFyIGFuZCBwaHlzaW9sb2dpY2FsIGNhcGFjaXR5IHRvIHNoaXZlciBvciBnZW5lcmF0ZSBoZWF0IHRocm91Z2ggbXVzY2xlIGNvbnRyYWN0aW9ucy5cXG5cXG4oaCkgKipQZW9wbGUqKiAocmVwZWF0ZWQgZnJvbSAoYykpOiBUaGlzIGlzIGEgcmVwZWF0IG9mIHRoZSBjb3JyZWN0IGFuc3dlciBmb3IgaHVtYW5zLCBwb3NzaWJseSB0byB0ZXN0IGlmIHlvdSdyZSBwYXlpbmcgYXR0ZW50aW9uIG9yIGlmIHlvdSBtaWdodCB0cnkgdG8gc2VsZWN0IGl0IGFnYWluIHVuaW50ZW50aW9uYWxseS5cXG5cXG5Tbywgd2hpbGUgKGMpICdIdW1hbnMnIGlzIHRlY2huaWNhbGx5IGNvcnJlY3QsIHRoZSBpbnRlbmRlZCBhbnN3ZXIgaXMgKGQpICdCZWVzJywgd2hpY2ggaW5jbHVkZXMgYSBicm9hZGVyIGFuZCBtb3JlIHNwZWNpZmljIGdyb3VwIHRoYXQgY2FuIHNoaXZlciB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYmlvbG9naWNhbCBzaGl2ZXJpbmcgbWVjaGFuaXNtcy4gVGhlIG90aGVyIGNob2ljZXMgZG8gbm90IHJlbGF0ZSB0byBzaGl2ZXJpbmcgYmVjYXVzZSB0aGV5IGFyZSBlaXRoZXIgbm90IGxpdmluZyBiZWluZ3MgKGIsIGYsIGcsIGgpIG9yIG5vdCBjYXBhYmxlIG9mIHNoaXZlcmluZyBhcyBhIG1lY2hhbmlzbSBmb3IgdGhlcm1vcmVndWxhdGlvbiAoYSwgZSkuXCIsICdmaW5hbF9hbnN3ZXInOiAnZCd9In1dLCAiMTQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBLaXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBpcyBhbiBleGFtcGxlIG9mIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIExlYXJuaW5nIGJlaGF2aW9yIChiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlcyAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbiAoZSkgQmFkIGJlaGF2aW9yIChmKSBMZWFybmluZyBub3RoaW5nIChnKSBFeHRpbmd1aXNoaW5nIGJlaGF2aW9yIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogXCJcXG4qKk9wdGlvbiAoYSkgTGVhcm5pbmcgYmVoYXZpb3IqKjogS2l0dGVucyBodW50aW5nIGlzIGEgY2xlYXIgZXhhbXBsZSBvZiB0aGVtIGxlYXJuaW5nIHN1cnZpdmFsIHNraWxscyBhbmQgYmVoYXZpb3JzLiBUaGlzIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGVpciBkZXZlbG9wbWVudCBhcyB0aGV5IGdyb3cgaW50byBhZHVsdCBjYXRzLiBUaGlzIGFsaWducyB3aXRoIHRoZSBjb25jZXB0IG9mIGxlYXJuaW5nIGJlaGF2aW9yLlxcblxcbioqT3B0aW9uIChiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlcyoqOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSB3aGlsZSBjYXRzIG1heSBjb21wZXRlIGZvciByZXNvdXJjZXMgbGlrZSBmb29kIGluIHRoZSB3aWxkLCB0aGUgYmVoYXZpb3Igb2YgaHVudGluZyBraXR0ZW5zIGlzIG1vcmUgYWJvdXQgbGVhcm5pbmcgYSBza2lsbCB0aGFuIGNvbXBldGluZyBmb3IgcmVzb3VyY2VzLiBJdCdzIG5vdCBwcmltYXJpbHkgYWJvdXQgd2hvIGdldHMgd2hhdC5cXG5cXG4qKk9wdGlvbiAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbioqOiBUaGVzZSBvcHRpb25zIGFyZSBub3QgY29ycmVjdCBhcyB0aGV5IGRlc2NyaWJlIGNoYXJhY3RlcmlzdGljcyBvciBicm9hZGVyIGNvbnRleHRzIFx1MjAxMyB3YXJtLWJsb29kZWQgcmVmZXJzIHRvIHRoZSBwaHlzaW9sb2dpY2FsIHRyYWl0IG9mIGJlaW5nIGFibGUgdG8gcmVndWxhdGUgYm9keSB0ZW1wZXJhdHVyZSwgYW5kIGNvbXBldGl0aW9uIGNvdWxkIGFwcGx5IG1vcmUgYnJvYWRseSB0byBzaXR1YXRpb25zIGludm9sdmluZyBjb25mbGljdHMgYmV0d2VlbiBvciBhbW9uZyBpbmRpdmlkdWFscyBvciBncm91cHMgY2hhc2luZyB0aGUgc2FtZSBnb2FsLCB3aGljaCBpcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGV2YW50IHRvIGEga2l0dGVuIHByYWN0aWNpbmcgaHVudGluZy5cXG5cXG4qKk9wdGlvbiAoZSkgQmFkIGJlaGF2aW9yKio6IFRoaXMgb3B0aW9uIGlzIGluYWNjdXJhdGUuIFdoaWxlIGh1bnRpbmcgYmVoYXZpb3IgbWlnaHQgdG8gYSBodW1hbiBvYnNlcnZlciBzZWVtIGhhcm1mdWwgKGUuZy4sIGEga2l0dGVuIHBvdW5jaW5nIG9uIGEgdG95IG1vdXNlKSwgaXQgaXMgZXNzZW50aWFsIGFuZCBpbnN0aW5jdHVhbCBmb3IgdGhlIGtpdHRlbidzIHN1cnZpdmFsIGFuZCBkb2VzIG5vdCBxdWFsaWZ5IGFzICdiYWQnIGluIGFuIGV0aGljYWwgc2Vuc2UuXFxuXFxuKipPcHRpb24gKGYpIExlYXJuaW5nIG5vdGhpbmcqKjogVGhpcyBpcyBpbmNvcnJlY3QgYmVjYXVzZSBraXR0ZW5zIGFyZSBhY3RpdmVseSBpbnZvbHZlZCBpbiBsZWFybmluZyB0aHJvdWdoIHBsYXksIGFuZCBodW50aW5nIG1pbWljcyByZWFsLWxpZmUgc2NlbmFyaW9zIHdoZXJlIHRoZXkgZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIHByZXkuXFxuXFxuKipPcHRpb24gKGcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IqKjogVGhpcyBvcHRpb24gaXMgbm90IGFwcGxpY2FibGUuICdFeHRpbmd1aXNoaW5nIGJlaGF2aW9yJyB1c3VhbGx5IHJlZmVycyB0byBhY3Rpb25zIHRha2VuIHRvIHByZXZlbnQgb3IgZW5kIGEgYmVoYXZpb3IsIHdoaWNoIGlzIG5vdCB3aGF0IGtpdHRlbnMgYXJlIGRvaW5nIHdoaWxlIHByYWN0aWNpbmcgaHVudGluZy4gXFxuXFxuKipPcHRpb24gKGgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyoqOiBUaGlzIGlzIGFsc28gbm90IGNvcnJlY3QgYXMgaXQgaXMgYSBwaHlzaWNhbCBjb25jZXB0IGRlc2NyaWJpbmcga2luZXRpYyBlbmVyZ3kuIFdoaWxlIGh1bnRpbmcgZG9lcyBpbnZvbHZlIHBoeXNpY2FsIGFjdGl2aXR5IHRoYXQgY29uc3VtZXMgZW5lcmd5LCBpdCBkb2Vzbid0IGFjY3VyYXRlbHkgY2FwdHVyZSBvciBkZXNjcmliZSB0aGUga2l0dGVucycgYmVoYXZpb3IgaW4gdGhpcyBjb250ZXh0LlxcblxcbkluIHN1bW1hcnksIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAnTGVhcm5pbmcgYmVoYXZpb3InIChhKSBiZWNhdXNlIGtpdHRlbnMgaHVudGluZyBpcyBhIGZvcm0gb2YgcGxheSB3aGVyZSB0aGV5IGxlYXJuIGNydWNpYWwgc2tpbGxzIG5lZWRlZCBmb3Igc3Vydml2YWwuIFRoZSBvdGhlciBvcHRpb25zIGFyZSBub3QgY29ycmVjdCBhcyB0aGV5IGVpdGhlciBkbyBub3QgZGlyZWN0bHkgZGVzY3JpYmUgdGhlIGJlaGF2aW9yIG9yIG1pc2ludGVycHJldCB0aGUgY29udGV4dCBvciBtZWFuaW5nIG9mIHRoZSBraXR0ZW4ncyBhY3Rpb25zLlwiLCAnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjE1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQnVybmluZyAoYikgV2ludGVyIChjKSBNdXRhdGlvbnMgKGQpIENvb2tpbmcgKGUpIEN5Y2xlcyAoZikgU3VtbWVyIChnKSBGcmVlemluZyAoaCkgR3Vuc2hvdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogXCJBbnN3ZXI6IChhKSBCdXJuaW5nXFxuXFxuRXhwbGFuYXRpb246IFxcbi0gKGIpIFdpbnRlcjogV2ludGVyIGlzIGEgc2Vhc29uIGNoYXJhY3Rlcml6ZWQgYnkgY29sZCB0ZW1wZXJhdHVyZXMgYW5kIHRoZSBhYnNlbmNlIG9mIHN1bmxpZ2h0LiBJdCBoYXMgbm8gZGlyZWN0IHJlbGF0aW9uc2hpcCB3aXRoIGVuZXJneSBwcm9kdWN0aW9uIGFmdGVyIGRlYXRoLlxcblxcbi0gKGMpIE11dGF0aW9uczogTXV0YXRpb25zIGFyZSBjaGFuZ2VzIGluIEROQSB0aGF0IGNhbiBsZWFkIHRvIGdlbmV0aWMgdmFyaWF0aW9ucy4gVGhleSBvY2N1ciBpbiBsaXZpbmcgb3JnYW5pc21zIGFuZCBkb24ndCBhcHBseSB0byBkZWFkIG9yZ2FuaXNtcyBzdGFydGVkIGdlbmVyYXRpbmcgbmV3IGVuZXJneS5cXG5cXG4tIChkKSBDb29raW5nOiBUaGlzIGlzIGEgcHJvY2VzcyBvZiBwcmVwYXJpbmcgZm9vZCB1c2luZyBoZWF0LiBJdCdzIGEgbWV0aG9kIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBlbmVyZ3kgZ2VuZXJhdGlvbiBhZnRlciBhbiBvcmdhbmlzbSdzIGRlYXRoLlxcblxcbi0gKGUpIEN5Y2xlczogV2hpbGUgY2VydGFpbiBiaW9sb2dpY2FsIHByb2Nlc3NlcyBsaWtlIHRoZSBjYXJib24gY3ljbGUgaW52b2x2ZSB0aGUgdHJhbnNmb3JtYXRpb24gb2Ygb3JnYW5pYyBtYXR0ZXIsIHRoZXNlIGN5Y2xlcyB0YWtlIHRpbWUgYW5kIG9jY3VyIG5hdHVyYWxseSB3aXRoaW4gdGhlIGVjb3N5c3RlbS4gVGhleSBkbyBub3QgcmVsYXRlIGRpcmVjdGx5IHRvIHRoZSBpbW1lZGlhdGUgZ2VuZXJhdGlvbiBvZiBlbmVyZ3kgcG9zdC1kZWF0aC5cXG5cXG4tIChmKSBTdW1tZXI6IFNpbWlsYXIgdG8gd2ludGVyLCBzdW1tZXIgaXMganVzdCBhbm90aGVyIHNlYXNvbiB3aXRoIHdhcm0gY29uZGl0aW9ucyBhbmQgbW9yZSBzdW5saWdodC4gSXQgZG9lcyBub3QgZGVzY3JpYmUgYSBwcm9jZXNzIHRoYXQgcHJvZHVjZXMgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuXFxuXFxuLSAoZykgRnJlZXppbmc6IEZyZWV6aW5nIGlzIGEgcHJvY2VzcyB0aGF0IGNhbiBwcmVzZXJ2ZSBiaW9sb2dpY2FsIHRpc3N1ZXMgYnV0IGRvZXMgbm90IGdlbmVyYXRlIGVuZXJneSBvbmNlIGFuIG9yZ2FuaXNtIGlzIGRlYWQuXFxuXFxuLSAoaCkgR3Vuc2hvdHM6IFRoaXMgdW5yZWxhdGVkIG9wdGlvbiByZWZlcnMgdG8gYSBzb3VyY2Ugb2YgcGh5c2ljYWwgaW1wYWN0IG9yIHNvdW5kLCBub3QgZW5lcmd5IHByb2R1Y3Rpb24gYnkgZGVhZCBvcmdhbmlzbXMuXFxuXFxuSW4gcmVhbGl0eSwgZGVhZCBvcmdhbmlzbXMgY2FuIGluZGlyZWN0bHkgY29udHJpYnV0ZSB0byBlbmVyZ3kgY3JlYXRpb24gdGhyb3VnaCBkZWNvbXBvc2l0aW9uLCBhIG5hdHVyYWwgcHJvY2VzcyB3aGVyZSBkZWNvbXBvc2VycyBsaWtlIGJhY3RlcmlhIGFuZCBmdW5naSBicmVhayBkb3duIG9yZ2FuaWMgbWF0ZXJpYWwsIHJlbGVhc2luZyBudXRyaWVudHMgYmFjayBpbnRvIHRoZSBlY29zeXN0ZW0uIEhvd2V2ZXIsIHRoaXMgcHJvY2VzcyBkb2Vzbid0IGZhbGwgdW5kZXIgdGhlIGxpdGVyYWwgaW50ZXJwcmV0YXRpb24gb2YgJ0RlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IGFmdGVyIHdoYXQ/Jy4gVGhlcmVmb3JlLCB0aGUgY2xvc2VzdCBhbmQgY29uY2VwdHVhbGx5IHJlbGV2YW50IGFuc3dlciB3b3VsZCBiZSB0byBidXJuIG9yIGRlY29tcG9zZSwgYnV0IHNpbmNlICdCdXJuaW5nJyBpbiB0aGUgY29udGV4dCBvZiBiaW9sb2dpY2FsIHByb2Nlc3NlcyB1c3VhbGx5IGRvZXNuJ3QgcmVmZXIgdG8gdGhlIG5hdHVyYWwgZGVjb21wb3NpbmcgcHJvY2VzcyBvZiBkZWFkIG9yZ2FuaXNtcywgb3B0aW9uIChhKSBhcyBwcmVzZW50ZWQgaW4gdGhlIGNob2ljZXMgaXMgbm90IHRlY2huaWNhbGx5IGNvcnJlY3QuIFxcblxcblRoZSBsYWlkLW91dCBleHBsYW5hdGlvbiBmb3Igd2h5IHRoZSBvdGhlciBvcHRpb25zIGFyZSBub3QgY29ycmVjdCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aHkgJ0J1cm5pbmcnIGlzbid0IHRoZSBwcmVjaXNlIGFuc3dlciBpbiB0aGUgY29udGV4dCBnaXZlbiwgZGVzcGl0ZSBiZWluZyB0aGUgY2xvc2VzdCB0byB0aGUgYWN0dWFsIG5hdHVyYWwgcHJvY2VzcyBpbnZvbHZpbmcgZGVhZCBvcmdhbmlzbXMgY3JlYXRpbmcgZW5lcmd5LlwiLCAnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjE2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogVHVybmluZyBvbiB3aGF0IHdpbGwgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBWZWhpY2xlcyAoYikgU2F0ZWxsaXRlcyAoYykgTGlnaHQgYnVsYiAoZCkgQnVzZXMgKGUpIEZpcmVjcmFja2VycyAoZikgU2Vuc29yeSBuZXVyb25zIChnKSBBbiBvYmplY3QgKGgpIEVuZ2luZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsncmVhc29uaW5nJzogJyhhKSBWZWhpY2xlczogV2hpbGUgdmVoaWNsZXMsIGluIGdlbmVyYWwsIGNvbnRhaW4gZGV2aWNlcyB0aGF0IG1heSBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gKGxpa2UgZW5naW5lIGlnbml0aW9uIHN5c3RlbXMpLCB0aGV5IGFyZSBub3QgdGhlIHByaW1hcnkgbWVhbnMgb2YgZW1pdHRpbmcgc3VjaCByYWRpYXRpb24gaW50ZW50aW9uYWxseS5cXG5cXG4oYikgU2F0ZWxsaXRlczogU2ltaWxhciB0byB2ZWhpY2xlcywgc2F0ZWxsaXRlcyBtYXkgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIChmb3IgY29tbXVuaWNhdGlvbiwgbmF2aWdhdGlvbiwgZXRjLiksIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG1haW4gdG9vbHMgdXNlZCBmb3IgZW1pdHRpbmcgdGhpcyByYWRpYXRpb24gd2l0aG91dCBzcGVjaWZpYyBwdXJwb3NlLlxcblxcbihjKSBMaWdodCBidWxiOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBhcyBpdCBlbWl0cyBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGZvcm0gb2YgbGlnaHQsIHdoZW4gZWxlY3RyaWNpdHkgcGFzc2VzIHRocm91Z2ggdGhlIGZpbGFtZW50LlxcblxcbioqRXhwbGFuYXRpb24gZm9yIChjKToqKiBBIGxpZ2h0IGJ1bGIgZnVuY3Rpb25zIGJ5IHBhc3NpbmcgYW4gZWxlY3RyaWMgY3VycmVudCB0aHJvdWdoIGEgY29uZHVjdG9yIGNhbGxlZCBhIGZpbGFtZW50LiBUaGUgcmVzaXN0YW5jZSBvZiB0aGUgZmlsYW1lbnQgY2F1c2VzIGl0IHRvIGhlYXQgdXAgYW5kIGdsb3csIGVtaXR0aW5nIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24sIHByaW1hcmlseSBpbiB0aGUgdmlzaWJsZSBzcGVjdHJ1bSAobGlnaHQpLlxcblxcbihkKSBCdXNlczogTGlrZSB2ZWhpY2xlcywgYnVzZXMgbWlnaHQgY29udGFpbiBkZXZpY2VzIHRoYXQgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBidXQgdGhleSBhcmUgbm90IHRoZSBwcmltYXJ5IHRvb2wgZm9yIHRoaXMgZW1pc3Npb24uXFxuXFxuKGUpIEZpcmVjcmFja2VyczogV2hpbGUgdGhleSBkbyBlbWl0IGxpZ2h0IGFuZCBoZWF0ICh3aGljaCBhcmUgdHlwZXMgb2YgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiksIHRoZXkgYXJlIG5vdCBhIGRlbGliZXJhdGUgbWV0aG9kIGZvciBnZW5lcmF0aW5nIGVsZWN0cm9tYWduZXRpYyB3YXZlcy5cXG5cXG4oZikgU2Vuc29yeSBuZXVyb25zOiBOZXVyb25zLCBpbmNsdWRpbmcgc2Vuc29yeSBuZXVyb25zLCBjYXJyeSBlbGVjdHJpY2FsIHNpZ25hbHMgcmVsYXRlZCB0byBzZW5zb3J5IGlucHV0IGFuZCBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGluIHRoZSBicm9hZCBzZW5zZSByZXF1aXJlZCBieSB0aGUgcXVlc3Rpb24uXFxuXFxuKGcpIEFuIG9iamVjdDogVGhpcyBpcyB0b28gdmFndWUgdG8gcHJvdmlkZSBhIGNvcnJlY3QgYW5zd2VyLiBOb3QgYWxsIG9iamVjdHMgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGluIHRoZSB3YXkgdGhlIHF1ZXN0aW9uIGlzIGFza2luZy5cXG5cXG4oaCkgRW5naW5lczogU2ltaWxhciB0byB2ZWhpY2xlcywgZW5naW5lcyBjb250YWluIGRldmljZXMgdGhhdCBtYXkgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGR1cmluZyBvcGVyYXRpb24sIHN1Y2ggYXMgaW4gaWduaXRpb24gc3lzdGVtcywgYnV0IHRoaXMgaXMgbm90IHRoZSBwcmltYXJ5IG1ldGhvZCBvZiBlbWl0dGluZyBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbkluIHN1bW1hcnksIHRoZSBvbmx5IG9wdGlvbiBkaXJlY3RseSBkZXNpZ25lZCB0byBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gYXMgaW50ZW5kZWQgYnkgdGhlIHF1ZXN0aW9uIGlzIChjKSBMaWdodCBidWxiLicsICdmaW5hbF9hbnN3ZXInOiAnYyd9In1dLCAiMTciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVyZSBpcyBhIHp5Z290ZSBmb3JtZWQgYnkgc3Blcm0gc3dpbW1pbmcgdG8gYW4gZWdnP1xuQW5zd2VyIENob2ljZXM6IChhKSBDb2xkZXIgYW5kIHdldHRlciAoYikgT2NlYW4gd2F0ZXIgKGMpIEdyYXB0b2xpdGVzIChkKSBSYXBpZCBleHBhbnNpb24gKGUpIEEgZGVsdGEgKGYpIEFuIGFyY2hlZ29uaXVtIChnKSBCYXJuYWNsZXMgKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydyZWFzb25pbmcnOiBcIkxldCdzIGFuYWx5emUgZWFjaCBvcHRpb246XFxuXFxuKGEpIENvbGRlciBhbmQgd2V0dGVyOiBUaGlzIHBocmFzZSBkZXNjcmliZXMgYW4gZW52aXJvbm1lbnQsIGJ1dCBpdCBkb2Vzbid0IHNwZWNpZnkgd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLiBaeWdvdGVzIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGZvcm1lZCBpbiBjb2xkZXIgYW5kIHdldHRlciBlbnZpcm9ubWVudHM7IHJhdGhlciwgdGhleSBhcmUgZm9ybWVkIGluIHJlcHJvZHVjdGl2ZSBzeXN0ZW1zIG9mIG9yZ2FuaXNtcy5cXG5cXG4oYikgT2NlYW4gd2F0ZXI6IFdoaWxlIGVnZ3MgYW5kIHNwZXJtIGZyb20gY2VydGFpbiBtYXJpbmUgb3JnYW5pc21zIGNhbiBiZSBmb3VuZCBpbiBvY2VhbiB3YXRlciBhbmQgZmVydGlsaXphdGlvbiBjYW4gb2NjdXIgdGhlcmUsIHRoaXMgZG9lc24ndCBhZGRyZXNzIHRoZSBmb3JtYXRpb24gb2YgYSB6eWdvdGUuIFRoZSB6eWdvdGUgaXRzZWxmIGlzIHRoZSByZXN1bHQgb2YgZmVydGlsaXphdGlvbiwgd2hpY2ggb2NjdXJzIHdpdGhpbiB0aGUgcmVwcm9kdWN0aXZlIHN5c3RlbXMgb2YgdGhlIG9yZ2FuaXNtcy5cXG5cXG4oYykgR3JhcHRvbGl0ZXM6IEdyYXB0b2xpdGVzIGFyZSBhbiBleHRpbmN0IGdyb3VwIG9mIGNvbG9uaWFsIGFuaW1hbHMsIHNwZWNpZmljYWxseSwgdGhleSB3ZXJlIGEgdHlwZSBvZiBQYWxlb3pvaWMgbWFyaW5lIGludmVydGVicmF0ZS4gWnlnb3RlIGZvcm1hdGlvbiBpcyBub3QgZGlyZWN0bHkgbGlua2VkIHRvIGdyYXB0b2xpdGVzIGJlY2F1c2UgdGhleSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBpdC4gWnlnb3RlIGZvcm1hdGlvbiBoYXBwZW5zIHdpdGhpbiB0aGUgcmVwcm9kdWN0aXZlIHN5c3RlbXMgb2YgbGl2aW5nIG9yZ2FuaXNtcy5cXG5cXG4oZCkgUmFwaWQgZXhwYW5zaW9uOiBUaGlzIHJlc2VtYmxlcyBhIHBoeXNpY2FsIHByb2Nlc3MgYnV0IGRvZXMgbm90IHBvaW50IHRvIGFueSBzcGVjaWZpYyBsb2NhdGlvbiBmb3Igenlnb3RlIGZvcm1hdGlvbi4gSXQncyBhIGNoYXJhY3RlcmlzdGljIG9mIGdyb3d0aCBvciBleHBhbnNpb24sIG5vdCBhIGxvY2F0aW9uLlxcblxcbihlKSBBIGRlbHRhOiBBIGRlbHRhIGlzIGEgbGFuZGZvcm0gY3JlYXRlZCBieSBzZWRpbWVudGFyeSBkZXBvc2l0cyBhdCB0aGUgbW91dGggb2YgYSByaXZlciB3aGVyZSBpdCBtZWV0cyBhIGxhcmdlciBib2R5IG9mIHdhdGVyLiBUaGlzIGdlb2dyYXBoaWNhbCBmZWF0dXJlIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBsb2NhdGlvbiB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuXFxuXFxuKGcpIEJhcm5hY2xlczogQmFybmFjbGVzIGFyZSBtYXJpbmUgY3J1c3RhY2VhbnMsIGJ1dCB0aGVpciByZXByb2R1Y3Rpb24gbWV0aG9kIChleHRlcm5hbCBmZXJ0aWxpemF0aW9uKSBhbmQgdGhlIHNwZWNpZmljIGxvY2F0aW9uIG9mIHp5Z290ZSBmb3JtYXRpb24gKHdpdGhpbiB0aGUgcmVwcm9kdWN0aXZlIHN5c3RlbSBvZiB0aGUgYmFybmFjbGUpIGFyZSBub3QgdGhlIHNhbWUgYXMgdGhvc2UgZm9yIG1vc3Qgb3RoZXIgYW5pbWFscy4gRnVydGhlcm1vcmUsIHRoZSBxdWVzdGlvbiBkb2Vzbid0IHNwZWNpZnkgdGhlIG9yZ2FuaXNtIHR5cGUsIHRoZXJlYnkgbGVhZGluZyB0aGlzIGFzIGFuIGluY29ycmVjdCBjaG9pY2Ugd2l0aG91dCB0aGF0IGFzc3VtcHRpb24uXFxuXFxuKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keTogVGhpcyBpcyBhIHZhZ3VlIG9wdGlvbiB0aGF0IGNvdmVycyBhIHdpZGUgcmFuZ2Ugb2YgZW52aXJvbm1lbnRzIHdpdGhpbiBhbiBvcmdhbmlzbSdzIGJvZHkuIFdoaWxlIHRoaXMgaXMgYnJvYWRseSBjb3JyZWN0LCBpdCdzIG5vdCBzcGVjaWZpYyBlbm91Z2gsIGFuZCB0aGUgZm9jdXMgc2hvdWxkIGJlIG9uIGEgc3BlY2lmaWMgaW5zdGFuY2UgKGxpa2Ugd2l0aGluIGFuIGVnZykuXFxuXFxuTm93LCBsZXQncyBleGFtaW5lIChmKSBhbiBhcmNoZWdvbml1bS5cXG5cXG5BbiBhcmNoZWdvbml1bSBpcyBhIHR5cGUgb2Ygc3BlY2lhbGl6ZWQgcmVwcm9kdWN0aXZlIHN0cnVjdHVyZSBmb3VuZCBpbiBub24tdmFzY3VsYXIgcGxhbnRzIChzdWNoIGFzIG1vc3NlcykgYW5kIHNvbWUgYWxnYWUuIEluc2lkZSB0aGUgYXJjaGVnb25pdW0sIGEgZmVtYWxlIGdhbWV0ZSAoZWdnKSBpcyBmb3JtZWQsIGFuZCBmZXJ0aWxpemF0aW9uIG9jY3VycyB3aGVuIGEgc3Blcm0gZnJvbSBhbm90aGVyIG1hbGUgZ2FtZXRlIGVudGVycy4gVGhlIHJlc3VsdGluZyBwcm9kdWN0IG9mIHRoaXMgZmVydGlsaXphdGlvbiBpcyBhIHp5Z290ZS4gXFxuXFxuSW4gc3VtbWFyeSwgKGYpIGlzIHRoZSBtb3N0IGFjY3VyYXRlIGFtb25nIHRoZSBvcHRpb25zIHByb3ZpZGVkIGFzIGl0IHNwZWNpZmljYWxseSBkZW5vdGVzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQ6IGluc2lkZSBhbiBhcmNoZWdvbml1bSB3aXRoaW4gYSBmZW1hbGUgcmVwcm9kdWN0aXZlIHRyYWN0IG9mIGNlcnRhaW4gcGxhbnRzLiBJdCBpcyBzcGVjaWZpYywgYmlvbG9naWNhbCwgYW5kIGFuYXRvbWljYWxseSBjb3JyZWN0IHdpdGhpbiB0aGUgY29udGV4dCBvZiBwbGFudCByZXByb2R1Y3Rpb24uXCIsICdmaW5hbF9hbnN3ZXInOiAnZid9In1dLCAiMTgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBjYXVzZSBoYXJtIHRvIHRoZSBleWVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNaWxkZXcgKGIpIE5vcm1hbCB3YXRlciAoYykgSGVycGVzIChkKSBOb3JtYWwgYWlyIChlKSBDb2FsIChmKSBNb2xkIChnKSBBY2lkIChoKSBDb250YWN0IHNvbHV0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiVGhlIGNvcnJlY3QgYW5zd2VyIGlzICdnKSBBY2lkJyBiZWNhdXNlIGl0IGNhbiBjYXVzZSBjaGVtaWNhbCBidXJucywgdGlzc3VlIGRhbWFnZSwgYW5kIG90aGVyIHNlcmlvdXMgaW5qdXJpZXMgdG8gdGhlIGV5ZXMgd2hlbiBpdCBjb21lcyBpbnRvIGNvbnRhY3Qgd2l0aCB0aGUgZXllcy4gXFxuXFxuTGV0J3MgZ28gdGhyb3VnaCB0aGUgaW5jb3JyZWN0IGFuc3dlcnMgYW5kIGV4cGxhaW4gd2h5IHRoZXkncmUgbm90IGNvcnJlY3Q6XFxuXFxuKGEpIE1pbGRldzogTWlsZGV3IGlzIGEgdHlwZSBvZiBmdW5ndXMgdGhhdCB0aHJpdmVzIGluIGRhbXAgZW52aXJvbm1lbnRzLiBXaGlsZSBpdCBjYW4gY2F1c2UgYWxsZXJnaWMgcmVhY3Rpb25zIGluIHNvbWUgcGVvcGxlLCBpdCBkb2VzIG5vdCBkaXJlY3RseSBoYXJtIHRoZSBleWVzLlxcblxcbihiKSBOb3JtYWwgd2F0ZXI6IE5vcm1hbCB3YXRlciBpcyBlc3NlbnRpYWwgZm9yIGxpZmUgYW5kIGRvZXMgbm90IHBvc2UgaGFybSB0byBleWVzLiBJbiBmYWN0LCBpdCdzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIGV5ZSBoZWFsdGggYnkga2VlcGluZyB0aGVtIGNsZWFuIGFuZCBtb2lzdC5cXG5cXG4oYykgSGVycGVzOiBXaGlsZSBpdCBjYW4gYWZmZWN0IHRoZSBza2luIGFyb3VuZCB0aGUgZXllcyBhbmQgY2F1c2UgY29uZGl0aW9ucyBsaWtlIEhlcnBlcyBTaW1wbGV4IFZpcnVzIGtlcmF0aXRpcywgaXQgaXNuJ3QgaW5oZXJlbnRseSBoYXJtZnVsIHRvIHRoZSBleWVzIGluIGEgZGlyZWN0IG1hbm5lciBsaWtlIGFjaWQuIFRoZSBoYXJtIGNvbWVzIGZyb20gY29tcGxpY2F0aW9ucyBvciBzZWNvbmRhcnkgYmFjdGVyaWFsIGluZmVjdGlvbnMgd2hlbiB0aGUgdmlydXMgYWZmZWN0cyB0aGUgZXllcy5cXG5cXG4oZCkgTm9ybWFsIGFpcjogQWlyLCBhcyBsb25nIGFzIGl0J3MgYnJlYXRoYWJsZSBhbmQgZnJlZSBmcm9tIGNvbnRhbWluYW50cywgZG9lcyBub3QgcG9zZSBhbnkgcmlzayB0byB0aGUgZXllcy4gSXQncyBhY3R1YWxseSBuZWNlc3NhcnkgZm9yIHRoZSBleWVzIHRvIGZ1bmN0aW9uIHByb3Blcmx5LlxcblxcbihlKSBDb2FsOiBDb2FsLCBhIGNvbXBvc2l0ZSBvZiBvcmdhbmljIG1hdGVyaWFscywgZG9lc24ndCBkaXJlY3RseSBoYXJtIHRoZSBleWVzLiBIb3dldmVyLCBleHBvc3VyZSB0byBjb2FsIGR1c3QgY2FuIGxlYWQgdG8gcmVzcGlyYXRvcnkgaXNzdWVzLCB3aGljaCBpbmRpcmVjdGx5IGFmZmVjdCBleWUgaGVhbHRoLlxcblxcbihmKSBNb2xkOiBTaW1pbGFyIHRvIG1pbGRldywgbW9sZCBjYW4gY2F1c2UgYWxsZXJnaWVzIGFuZCByZXNwaXJhdG9yeSBwcm9ibGVtcyBidXQgZG9lc24ndCBkaXJlY3RseSBoYXJtIHRoZSBleWVzLiBJdCdzIHRoZSBhaXJib3JuZSBzcG9yZXMgYW5kIHJlYWN0aXZlIGNvbXBvdW5kcyB0aGF0IGNhbiBiZSBwcm9ibGVtYXRpYy5cXG5cXG4oaCkgQ29udGFjdCBzb2x1dGlvbjogVHlwaWNhbGx5LCBhIGNvbnRhY3Qgc29sdXRpb24gaXMgZGVzaWduZWQgdG8gYmUgc2FmZSBmb3IgdXNlIHdpdGggY29udGFjdCBsZW5zZXMgYW5kIGRvZXNuJ3QgaGFybSB0aGUgZXllcyBpZiB1c2VkIGNvcnJlY3RseS4gQW55IHBvdGVudGlhbCBoYXJtIHdvdWxkIGJlIGEgcmVzdWx0IG9mIGltcHJvcGVyIHVzZSBvciBjb250YW1pbmF0aW9uLlxcblxcbkluIHN1bW1hcnksIHdoaWxlIGFsbCB0aGUgb3B0aW9ucyBjYW4gcG90ZW50aWFsbHkgY2F1c2UgaW5kaXJlY3QgaGFybSB1bmRlciBzcGVjaWZpYyBjaXJjdW1zdGFuY2VzLCAnZykgQWNpZCcgZGlyZWN0bHkgYW5kIGFjdXRlbHkgaGFybXMgdGhlIGV5ZXMsIG1ha2luZyBpdCB0aGUgY29ycmVjdCBhbnN3ZXIgdG8gdGhlIHF1ZXN0aW9uLlwiLCAnZmluYWxfYW5zd2VyJzogJ2cnfSJ9XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J3JlYXNvbmluZyc6IFwiMS4gUmVhZGluZyB0aGUgcXVlc3Rpb24gYW5kIG9wdGlvbnM6IFdlIGFyZSBhc2tlZCB3aGF0IGZvcm1zIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLlxcblxcbjIuIElkZW50aWZ5aW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBvcHRpb25zOiBcXG4gICAtIEJhbWJvbywgRGVzaWNjYXRpb24sIEJ1cnJzLCBFbG1zLCBDb2FsLCBDYW5keSwgYW5kIE1lYXQgYXJlIGFsbCBkaWZmZXJlbnQgb3JnYW5pYyBtYXR0ZXIsIGJ1dCBub3QgYWxsIG9mIHRoZW0gZm9ybSBwZWF0IHVuZGVyIHRoZSBtZW50aW9uZWQgY29uZGl0aW9ucy5cXG5cXG4zLiBEZXRlcm1pbmluZyB3aGljaCBvcHRpb25zIGFyZSBub3QgbG9naWNhbDpcXG4gICAtIChhKSBCYW1ib286IFdoaWxlIGJhbWJvbyBpcyBhIHBsYW50LCBpdCB0eXBpY2FsbHkgZ3Jvd3MgaW4gcmVsYXRpdmVseSBtaWxkIGNvbmRpdGlvbnMgYW5kIGRvZXMgbm90IHRyYW5zZm9ybSBpbnRvIHBlYXQgdW5kZXIgZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZS5cXG4gICAtIChiKSBEZXNpY2NhdGlvbjogVGhpcyByZWZlcnMgdG8gdGhlIHByb2Nlc3Mgb2YgZHJ5aW5nIG91dCBhbmQgaXMgbm90IGEgZGlyZWN0IGNvbnRyaWJ1dG9yIHRvIHRoZSBmb3JtYXRpb24gb2YgcGVhdC4gSXQgZG9lc24ndCBpbnZvbHZlIHRoZSBuZWNlc3NhcnkgaGVhdCBhbmQgcHJlc3N1cmUuXFxuICAgLSAoYykgQnVycnM6IEJ1cnJzIGFyZSBzbWFsbCBzZWVkIGJhbGxzIGF0dGFjaGVkIHRvIHBsYW50cywgcHJpbWFyaWx5IHVzZWQgYnkgcGxhbnRzIGZvciBkaXNwZXJzYWwuIFRoZXkgZG9uJ3QgZm9ybSBwZWF0LlxcbiAgIC0gKGQpIEVsbXM6IFRoZXNlIGFyZSB0cmVlcyBjb21tb25seSBmb3VuZCBpbiB0ZW1wZXJhdGUgcmVnaW9ucy4gVGhleSBjYW4gZGVjb21wb3NlIG92ZXIgdGltZSBidXQgZG8gbm90IGZvcm0gcGVhdCB1bmRlciBub3JtYWwgb3IgZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZS5cXG4gICAtIChlKSBNb3NzOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gTW9zcyBpcyBhIHR5cGUgb2Ygbm9uLXZhc2N1bGFyIGxhbmQgcGxhbnQgdGhhdCBncm93cyBpbiBkYW1wIGVudmlyb25tZW50cy4gT3ZlciBsb25nIHBlcmlvZHMsIHVuZGVyIGNvbmRpdGlvbnMgb2YgaGlnaCBwcmVzc3VyZSBhbmQgc2xvd2x5IGRlY29tcG9zaW5nIGluIHdhdGVyLXJpY2ggZW52aXJvbm1lbnRzLCBtb3NzIGNvbnRyaWJ1dGVzIHRvIHRoZSBmb3JtYXRpb24gb2YgcGVhdC5cXG4gICAtIChmKSBDb2FsOiBDb2FsIGZvcm1zIGZyb20gdGhlIHJlbWFpbnMgb2YgcGxhbnRzIHVuZGVyIGludGVuc2UgaGVhdCBhbmQgcHJlc3N1cmUgZGVlcCB3aXRoaW4gdGhlIEVhcnRoJ3MgY3J1c3QsIGJ1dCBpdCBkb2Vzbid0IGZvcm0gcGVhdC4gUGVhdCBhbmQgY29hbCBhcmUgZGlzdGluY3QgZ2VvbG9naWNhbCBmb3JtYXRpb25zLlxcbiAgIC0gKGcpIENhbmR5OiBUaGlzIGlzIG5vdCBvcmdhbmljIG1hdHRlciB0aGF0IGNhbiB0cmFuc2Zvcm0gaW50byBwZWF0LiBJdCdzIGEgcHJvY2Vzc2VkIGZvb2QgcHJvZHVjdC5cXG4gICAtIChoKSBNZWF0OiBNZWF0IGRvZXMgbm90IGZvcm0gcGVhdC4gSXQgZGVjb21wb3NlcyBpbiBhIGRpZmZlcmVudCBtYW5uZXIgYW5kIGRvZXNuJ3QgY29udHJpYnV0ZSBkaXJlY3RseSB0byBwZWF0IGZvcm1hdGlvbi5cXG5cXG40LiBQcm92aWRpbmcgZXhwbGFuYXRpb25zIGZvciBpbmNvcnJlY3QgYW5zd2VyczpcXG4gICAtIEJhbWJvbywgQnVycnMsIEVsbXMsIENhbmR5LCBhbmQgTWVhdCBcdTIwMTMgVGhlc2Ugb3B0aW9ucyBhcmUgZWl0aGVyIG5vdCBwbGFudHMgb3IgZm9ybXMgb2Ygb3JnYW5pYyBtYXR0ZXIgdGhhdCBkb24ndCB1bmRlcmdvIHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIChleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlKSByZXF1aXJlZCB0byBmb3JtIHBlYXQuXFxuICAgLSBEZXNpY2NhdGlvbiBcdTIwMTMgVGhpcyBwcm9jZXNzIGlzIHRoZSByZW1vdmFsIG9mIG1vaXN0dXJlIGZyb20gYSBzdWJzdGFuY2UsIHdoaWNoIGRvZXNuJ3QgYWxpZ24gd2l0aCB0aGUgY29uZGl0aW9ucyByZXF1aXJlZCB0byBmb3JtIHBlYXQgKGhpZ2ggd2F0ZXIgY29udGVudCkuXFxuICAgLSBDb2FsIFx1MjAxMyBXaGlsZSBzaW1pbGFyIHRvIHBlYXQgaW4gdGhhdCBpdCdzIGZvcm1lZCBmcm9tIHBsYW50IGRlYnJpcywgaXQncyBmb3JtZWQgdW5kZXIgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgY29uZGl0aW9ucyBkZWVwIHdpdGhpbiB0aGUgRWFydGgsIG5vdCB0aHJvdWdoIHN1cmZhY2UgcHJvY2Vzc2VzIGludm9sdmluZyBtb3NzLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChlKSBNb3NzIGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkgb3B0aW9uIGFtb25nIHRoZSBjaG9pY2VzIHRoYXQsIHdoZW4gc3ViamVjdGVkIHRvIGNvbmRpdGlvbnMgb2YgZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUsIGNhbiBjb250cmlidXRlIHRvIHRoZSBmb3JtYXRpb24gb2YgcGVhdC5cIiwgJ2ZpbmFsX2Fuc3dlcic6ICdlJ30ifV19LCAiY29udmVyc2F0aW9uX0ZBUl9ncHQzXzUiOiB7IjAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGlzIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IHVzZWQgZm9yIHByZWRpY3Rpbmc/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXMgKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2UgKGMpIFdoYXQgaXQncyBsaWtlIG91dHNpZGUgZWFjaCBkYXkgKGQpIDcwLTc1IGRlZ3JlZXMgZmFocmVuaGVpdCAoZSkgUmFwaWQgY2hhbmdlcyBvY2N1ciAoZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHMuIChnKSBTbm93LCBpY2UsIGFuZCByb2NrIChoKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIGNlbHNpdXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnLCAncmVhc29uaW5nJzogXCJhKSBTZWNvbmRzIGFuZCBtaW51dGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyB0aW1lIGludGVydmFscy4gU2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgdXNlZCBmb3IgdmFyaW91cyBwdXJwb3NlcyBzdWNoIGFzIGNvbW11bmljYXRpb24sIG5hdmlnYXRpb24sIGFuZCB3ZWF0aGVyIGZvcmVjYXN0aW5nLCBidXQgaXQgaXMgbm90IHVzZWQgZm9yIHByZWRpY3RpbmcgdGltZSBpbnRlcnZhbHMuXFxuXFxuYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZTogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IHVzZWQgZm9yIHByZWRpY3RpbmcgZWFydGhxdWFrZXMuIEVhcnRocXVha2UgcHJlZGljdGlvbiBpcyBhIGNvbXBsZXggcHJvY2VzcyB0aGF0IGludm9sdmVzIHNlaXNtb2xvZ3kgYW5kIG90aGVyIHNjaWVudGlmaWMgbWV0aG9kcywgYnV0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCBvbmUgb2YgdGhlbS5cXG5cXG5kKSA3MC03NSBkZWdyZWVzIEZhaHJlbmhlaXQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIHNwZWNpZmljIHRlbXBlcmF0dXJlIHJhbmdlcy4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIHByb3ZpZGUgdGVtcGVyYXR1cmUgZGF0YSwgaXQgaXMgbm90IHVzZWQgZm9yIHByZWRpY3Rpbmcgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzLlxcblxcbmUpIFJhcGlkIGNoYW5nZXMgb2NjdXI6IFRoaXMgb3B0aW9uIGlzIHRvbyB2YWd1ZSBhbmQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgY29ycmVjdCBvciBub3QuIFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIHRvIG1vbml0b3IgY2hhbmdlcyBpbiB2YXJpb3VzIGVudmlyb25tZW50YWwgZmFjdG9ycywgYnV0IGl0IGlzIG5vdCB1c2VkIHNwZWNpZmljYWxseSBmb3IgcHJlZGljdGluZyByYXBpZCBjaGFuZ2VzLlxcblxcbmYpIERlYWQtZW5kcyBhbmQgZmFsc2Ugc3RhcnRzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byBzYXRlbGxpdGUgdGVjaG5vbG9neSBvciBhbnkgdHlwZSBvZiBwcmVkaWN0aW9uLlxcblxcbmcpIFNub3csIGljZSwgYW5kIHJvY2s6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBzcGVjaWZpYyBhbmQgZG9lcyBub3QgY292ZXIgdGhlIGJyb2FkIHJhbmdlIG9mIHByZWRpY3Rpb25zIHRoYXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgZm9yLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCB0byBtb25pdG9yIHNub3csIGljZSwgYW5kIHJvY2sgZm9ybWF0aW9ucywgaXQgaXMgbm90IHVzZWQgZXhjbHVzaXZlbHkgZm9yIHRoaXMgcHVycG9zZS5cXG5cXG5oKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIENlbHNpdXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBzcGVjaWZpYyBhbmQgZG9lcyBub3QgY292ZXIgdGhlIGJyb2FkIHJhbmdlIG9mIHRlbXBlcmF0dXJlIHByZWRpY3Rpb25zIHRoYXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgZm9yLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSB0ZW1wZXJhdHVyZSBkYXRhLCBpdCBpcyBub3QgdXNlZCBleGNsdXNpdmVseSBmb3IgcHJlZGljdGluZyB0ZW1wZXJhdHVyZXMgd2l0aGluIGEgc3BlY2lmaWMgcmFuZ2UuXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYykgd2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSwgYXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgY29tbW9ubHkgdXNlZCBmb3Igd2VhdGhlciBmb3JlY2FzdGluZyBhbmQgcHJlZGljdGluZyBkYWlseSB3ZWF0aGVyIGNvbmRpdGlvbnMuXCJ9In1dLCAiMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBpcnJhZGlhdGluZyBmb29kIGRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBSZWxpZXZlIHBhaW4gKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50cyAoYykgSW1wcm92ZXMgZm9vZCBzYWZldHkgKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWEgKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlIChmKSBDaGVtaWNhbCBjaGFuZ2VzIChnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQgKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGgifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnLCAncmVhc29uaW5nJzogXCIoYSkgUmVsaWV2ZSBwYWluOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCByZWxpZXZpbmcgcGFpbi4gSXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIG9mIGV4cG9zaW5nIGZvb2QgdG8gaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgYmFjdGVyaWEsIHZpcnVzZXMsIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC4gSXQgaXMgbm90IGEgcGFpbiByZWxpZXZlci5cXG5cXG4oYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgZG9lcyBub3QgZW5oYW5jZSB0aGUgZm9vZCdzIG51dHJpZW50cy4gSW4gZmFjdCwgc29tZSBzdHVkaWVzIGhhdmUgc2hvd24gdGhhdCBpcnJhZGlhdGlvbiBjYW4gY2F1c2UgYSBzbGlnaHQgbG9zcyBvZiBjZXJ0YWluIHZpdGFtaW5zIGluIGZvb2QuIEhvd2V2ZXIsIHRoZSBsb3NzIGlzIG5vdCBzaWduaWZpY2FudCBlbm91Z2ggdG8gYWZmZWN0IHRoZSBvdmVyYWxsIG51dHJpdGlvbmFsIHZhbHVlIG9mIHRoZSBmb29kLlxcblxcbihkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgYWN0dWFsbHkga2lsbHMgYmFjdGVyaWEgYW5kIG90aGVyIHBhdGhvZ2VucyB0aGF0IG1heSBiZSBwcmVzZW50IGluIHRoZSBmb29kLiBJdCBkb2VzIG5vdCBhbGxvdyB0aGUgZ3Jvd3RoIG9mIGJhY3RlcmlhLlxcblxcbihlKSBJbmNyZWFzZXMgZm9vZCB3YXN0ZTogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGNhbiBhY3R1YWxseSBoZWxwIHJlZHVjZSBmb29kIHdhc3RlLiBCeSBraWxsaW5nIGJhY3RlcmlhIGFuZCBvdGhlciBwYXRob2dlbnMsIGlycmFkaWF0aW9uIGNhbiBleHRlbmQgdGhlIHNoZWxmIGxpZmUgb2YgZm9vZCwgd2hpY2ggbWVhbnMgbGVzcyBmb29kIGlzIHdhc3RlZC5cXG5cXG4oZikgQ2hlbWljYWwgY2hhbmdlczogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGNhbiBjYXVzZSBzb21lIGNoZW1pY2FsIGNoYW5nZXMgaW4gdGhlIGZvb2QsIGJ1dCB0aGVzZSBjaGFuZ2VzIGFyZSBub3QgaGFybWZ1bCB0byBodW1hbiBoZWFsdGguIEluIGZhY3QsIHRoZSBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uLCB0aGUgVS5TLiBGb29kIGFuZCBEcnVnIEFkbWluaXN0cmF0aW9uLCBhbmQgb3RoZXIgb3JnYW5pemF0aW9ucyBoYXZlIGRldGVybWluZWQgdGhhdCBpcnJhZGlhdGVkIGZvb2QgaXMgc2FmZSB0byBlYXQuXFxuXFxuKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZC4gSXQgaXMgYSBwcm9jZXNzIG9mIGV4cG9zaW5nIGZvb2QgdG8gaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgYmFjdGVyaWEsIHZpcnVzZXMsIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC5cXG5cXG4oaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGVkIGZvb2QgaXMgbm90IGEgbWFqb3IgdGhyZWF0IHRvIGhlYWx0aC4gQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uLCB0aGUgVS5TLiBGb29kIGFuZCBEcnVnIEFkbWluaXN0cmF0aW9uLCBhbmQgb3RoZXIgb3JnYW5pemF0aW9ucyBoYXZlIGRldGVybWluZWQgdGhhdCBpcnJhZGlhdGVkIGZvb2QgaXMgc2FmZSB0byBlYXQuIEluIGZhY3QsIGlycmFkaWF0aW9uIGNhbiBoZWxwIHJlZHVjZSB0aGUgcmlzayBvZiBmb29kYm9ybmUgaWxsbmVzcyBieSBraWxsaW5nIGJhY3RlcmlhIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC5cIn0ifV0sICIyIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBwcm90ZWN0cyBhIG1hbW1hbCdzIHNraW4/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEZpYmVyIGZvbGxpY2xlcyAoYikgRXhmb2xpYXRpb24gKGMpIFJlc2lzdGFuY2UgKGQpIExheWVycyBvZiBmYXQgKGUpIEV2YXBvcmF0aW9uIChmKSBBIGN1dGljbGUgKGcpIFNlbnNvcnkgbmV1cm9ucyAoaCkgRnVyIGFuZCBmYXQifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2EnLCAncmVhc29uaW5nJzogJ2IpIEV4Zm9saWF0aW9uOiBFeGZvbGlhdGlvbiBpcyB0aGUgcHJvY2VzcyBvZiBzaGVkZGluZyBkZWFkIHNraW4gY2VsbHMgZnJvbSB0aGUgc3VyZmFjZSBvZiB0aGUgc2tpbi4gV2hpbGUgdGhpcyBpcyBhbiBpbXBvcnRhbnQgcHJvY2VzcyBmb3IgbWFpbnRhaW5pbmcgaGVhbHRoeSBza2luLCBpdCBkb2VzIG5vdCBwcm90ZWN0IHRoZSBza2luLlxcblxcbmMpIFJlc2lzdGFuY2U6IFJlc2lzdGFuY2UgaXMgYSB2YWd1ZSB0ZXJtIGFuZCBkb2VzIG5vdCBwcm92aWRlIGFueSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHByb3RlY3RzIHRoZSBza2luLlxcblxcbmQpIExheWVycyBvZiBmYXQ6IFdoaWxlIGxheWVycyBvZiBmYXQgY2FuIHByb3ZpZGUgaW5zdWxhdGlvbiBhbmQgY3VzaGlvbmluZyBmb3IgdGhlIHNraW4sIHRoZXkgZG8gbm90IGRpcmVjdGx5IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuZSkgRXZhcG9yYXRpb246IEV2YXBvcmF0aW9uIGlzIGEgcHJvY2VzcyBieSB3aGljaCBhIGxpcXVpZCB0dXJucyBpbnRvIGEgZ2FzLiBJdCBkb2VzIG5vdCBwcm90ZWN0IHRoZSBza2luLlxcblxcbmYpIEEgY3V0aWNsZTogQSBjdXRpY2xlIGlzIGEgcHJvdGVjdGl2ZSBsYXllciB0aGF0IGNvdmVycyB0aGUgc3VyZmFjZSBvZiBzb21lIG9yZ2FuaXNtcywgc3VjaCBhcyBwbGFudHMgYW5kIGluc2VjdHMuIEhvd2V2ZXIsIG1hbW1hbHMgZG8gbm90IGhhdmUgYSBjdXRpY2xlLlxcblxcbmcpIFNlbnNvcnkgbmV1cm9uczogU2Vuc29yeSBuZXVyb25zIGFyZSBuZXJ2ZSBjZWxscyB0aGF0IHRyYW5zbWl0IHNlbnNvcnkgaW5mb3JtYXRpb24gZnJvbSB0aGUgYm9keSB0byB0aGUgYnJhaW4uIFdoaWxlIHRoZXkgcGxheSBhbiBpbXBvcnRhbnQgcm9sZSBpbiB0aGUgbmVydm91cyBzeXN0ZW0sIHRoZXkgZG8gbm90IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuaCkgRnVyIGFuZCBmYXQ6IFRoaXMgaXMgYSBjb3JyZWN0IGFuc3dlci4gRnVyIGFuZCBmYXQgcHJvdmlkZSBpbnN1bGF0aW9uIGFuZCBwcm90ZWN0aW9uIGZvciB0aGUgc2tpbi4gSG93ZXZlciwgdGhlIHF1ZXN0aW9uIHNwZWNpZmljYWxseSBhc2tzIHdoYXQgcHJvdGVjdHMgdGhlIHNraW4sIGFuZCBmaWJlciBmb2xsaWNsZXMgYXJlIHRoZSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgc2tpbiB0aGF0IHByb3ZpZGUgdGhlIG1vc3QgZGlyZWN0IHByb3RlY3Rpb24uJ30ifV0sICIzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkbyBlYXJ0aHdvcm1zIGRvIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmY/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIERpZXMgKGIpIFJlZ3Jvd3MgaXQgKGMpIFJlcHJvZHVjZXMgKGQpIFNlZGltZW50IChlKSBSb290IGdyb3d0aCAoZikgTWlncmF0ZSAoZykgU3RvcHMgZ3Jvd2luZyAoaCkgUm9vdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2InLCAncmVhc29uaW5nJzogJ2EpIERpZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgZWFydGh3b3JtcyBkbyBub3QgZGllIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmYuIFdoaWxlIGl0IG1heSBiZSBhIHRyYXVtYXRpYyBleHBlcmllbmNlIGZvciB0aGUgZWFydGh3b3JtLCB0aGV5IGFyZSBhYmxlIHRvIHJlZ2VuZXJhdGUgdGhlIGxvc3Qgc2VnbWVudC5cXG5cXG5jKSBSZXByb2R1Y2VzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGVhcnRod29ybXMgZG8gbm90IHJlcHJvZHVjZSB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLiBSZXByb2R1Y3Rpb24gaW4gZWFydGh3b3JtcyBpbnZvbHZlcyB0aGUgZXhjaGFuZ2Ugb2Ygc3Blcm0gYmV0d2VlbiB0d28gaW5kaXZpZHVhbHMsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIHRoZSBsb3NzIG9mIHNlZ21lbnRzLlxcblxcbmQpIFNlZGltZW50OiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gU2VkaW1lbnQgcmVmZXJzIHRvIHRoZSBtYXRlcmlhbCB0aGF0IHNldHRsZXMgYXQgdGhlIGJvdHRvbSBvZiBhIGJvZHkgb2Ygd2F0ZXIgb3Igb3RoZXIgbGlxdWlkLlxcblxcbmUpIFJvb3QgZ3Jvd3RoOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gUm9vdCBncm93dGggcmVmZXJzIHRvIHRoZSBncm93dGggb2Ygcm9vdHMgaW4gcGxhbnRzLCBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBlYXJ0aHdvcm1zLlxcblxcbmYpIE1pZ3JhdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBNaWdyYXRpb24gcmVmZXJzIHRvIHRoZSBtb3ZlbWVudCBvZiBhbmltYWxzIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIsIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGVhcnRod29ybXMgcmVnZW5lcmF0aW5nIGxvc3Qgc2VnbWVudHMuXFxuXFxuZykgU3RvcHMgZ3Jvd2luZzogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBlYXJ0aHdvcm1zIGRvIG5vdCBzdG9wIGdyb3dpbmcgd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZi4gV2hpbGUgdGhlIGxvc3Qgc2VnbWVudCBtYXkgdGFrZSBzb21lIHRpbWUgdG8gcmVnZW5lcmF0ZSwgdGhlIGVhcnRod29ybSB3aWxsIGNvbnRpbnVlIHRvIGdyb3cgYW5kIG1vdmUuXFxuXFxuaCkgUm9vdHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBSb290cyByZWZlciB0byB0aGUgcGFydCBvZiBhIHBsYW50IHRoYXQgdHlwaWNhbGx5IGxpZXMgYmVsb3cgdGhlIHN1cmZhY2Ugb2YgdGhlIHNvaWwsIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGVhcnRod29ybXMgcmVnZW5lcmF0aW5nIGxvc3Qgc2VnbWVudHMuJ30ifV0sICI0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogTGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRoZSBlbnZpcm9ubWVudCAoYikgUmFpbnN0b3JtcyAoYykgRGVzdHJ1Y3Rpb24gKGQpIFZpc2liaWxpdHkgKGUpIFRodW5kZXIgKGYpIFRoZSBzdW4gKGcpIFRoZSB3ZWF0aGVyLiAoaCkgVHJhbnNwb3J0YXRpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2EnLCAncmVhc29uaW5nJzogJ2IpIFJhaW5zdG9ybXM6IExpZ2h0bmluZyBpcyBhY3R1YWxseSBhIG5hdHVyYWwgcGhlbm9tZW5vbiB0aGF0IG9jY3VycyBkdXJpbmcgcmFpbnN0b3Jtcy4gSXQgaXMgbm90IGJhZCBmb3IgcmFpbnN0b3JtcywgYnV0IHJhdGhlciBhIHBhcnQgb2YgdGhlIHN0b3JtLlxcblxcbmMpIERlc3RydWN0aW9uOiBXaGlsZSBsaWdodG5pbmcgY2FuIGNhdXNlIGRlc3RydWN0aW9uLCB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIHdoYXQgbGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yLCBub3Qgd2hhdCBpdCBjYW4gY2F1c2UuXFxuXFxuZCkgVmlzaWJpbGl0eTogTGlnaHRuaW5nIGNhbiBhY3R1YWxseSBpbXByb3ZlIHZpc2liaWxpdHkgZHVyaW5nIGEgc3Rvcm0gYnkgaWxsdW1pbmF0aW5nIHRoZSBzdXJyb3VuZGluZ3MuIEl0IGlzIG5vdCBiYWQgZm9yIHZpc2liaWxpdHkuXFxuXFxuZSkgVGh1bmRlcjogVGh1bmRlciBpcyBhY3R1YWxseSBjYXVzZWQgYnkgbGlnaHRuaW5nLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aHVuZGVyLlxcblxcbmYpIFRoZSBzdW46IExpZ2h0bmluZyBpcyBub3QgcmVsYXRlZCB0byB0aGUgc3VuLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aGUgc3VuLlxcblxcbmcpIFRoZSB3ZWF0aGVyOiBMaWdodG5pbmcgaXMgYSBwYXJ0IG9mIHRoZSB3ZWF0aGVyLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aGUgd2VhdGhlci5cXG5cXG5oKSBUcmFuc3BvcnRhdGlvbjogTGlnaHRuaW5nIGNhbiBiZSBkYW5nZXJvdXMgZm9yIHRyYW5zcG9ydGF0aW9uLCBidXQgdGhlIHF1ZXN0aW9uIGlzIGFza2luZyB3aGF0IGxpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciBpbiBnZW5lcmFsLCBub3Qgc3BlY2lmaWNhbGx5IGZvciB0cmFuc3BvcnRhdGlvbi5cXG5cXG5UaGVyZWZvcmUsIHRoZSBvbmx5IGxvZ2ljYWwgYW5zd2VyIGlzIGEpIHRoZSBlbnZpcm9ubWVudC4gTGlnaHRuaW5nIGNhbiBzdGFydCB3aWxkZmlyZXMsIGRhbWFnZSB0cmVlcyBhbmQgb3RoZXIgdmVnZXRhdGlvbiwgYW5kIGNhdXNlIHNvaWwgZXJvc2lvbiwgd2hpY2ggY2FuIGFsbCBoYXZlIG5lZ2F0aXZlIGltcGFjdHMgb24gdGhlIGVudmlyb25tZW50Lid9In1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZCcsICdyZWFzb25pbmcnOiAnYSkgU291bHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2Ugc291bHMgYXJlIG5vdCBwaHlzaWNhbCBlbnRpdGllcyB0aGF0IGNhbiBsZWF2ZSBldmlkZW5jZSBvZiB0aGVpciBwcmVzZW5jZSBpbiBhIHBsYWNlLiBTb3VscyBhcmUgYmVsaWV2ZWQgdG8gYmUgc3Bpcml0dWFsIGVudGl0aWVzIHRoYXQgYXJlIG5vdCBib3VuZCBieSBwaHlzaWNhbCBsYXdzLlxcblxcbmIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb21wbGV0ZWx5IGNvcnJlY3QgYmVjYXVzZSBub3QgYWxsIGFuaW1hbHMgaGF2ZSBiYWNrYm9uZXMuIEludmVydGVicmF0ZXMsIHN1Y2ggYXMgaW5zZWN0cyBhbmQgbW9sbHVza3MsIGRvIG5vdCBoYXZlIGJhY2tib25lcy4gVGhlcmVmb3JlLCBldmlkZW5jZSBvZiBwYXN0IGxpZmUgY2Fubm90IGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFuaW1hbHMgd2l0aCBiYWNrYm9uZXMgbGl2ZWQgaW4gYSBwbGFjZS5cXG5cXG5jKSBPcmdhbmlzbXM6IFRoaXMgb3B0aW9uIGlzIHRvbyBicm9hZCBhbmQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24uIEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IGFueSB0eXBlIG9mIG9yZ2FuaXNtIG9uY2UgbGl2ZWQgaW4gYSBwbGFjZSwgaW5jbHVkaW5nIGJhY3RlcmlhLCBmdW5naSwgYW5kIHByb3Rpc3RzLlxcblxcbmQpIFBsYW50IG9yIGFuaW1hbDogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIgYmVjYXVzZSBldmlkZW5jZSBvZiBwYXN0IGxpZmUgY2FuIHNob3cgdGhhdCBhIHBsYW50IG9yIGFuaW1hbCBvbmNlIGxpdmVkIGluIGEgcGxhY2UuIEZvc3NpbHMsIGZvciBleGFtcGxlLCBwcm92aWRlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBhbmQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgdHlwZXMgb2YgcGxhbnRzIGFuZCBhbmltYWxzIGxpdmVkIGluIGEgcGFydGljdWxhciBhcmVhLlxcblxcbmUpIE1hbGVzIGFuZCBmZW1hbGVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW5ub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNleCBvZiB0aGUgb3JnYW5pc21zIHRoYXQgb25jZSBsaXZlZCBpbiBhIHBsYWNlLiBGb3NzaWxzIGRvIG5vdCB0eXBpY2FsbHkgcHJlc2VydmUgc2V4dWFsIGNoYXJhY3RlcmlzdGljcy5cXG5cXG5mKSBEZWZvcmVzdGF0aW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGRlZm9yZXN0YXRpb24gaXMgYSBodW1hbiBhY3Rpdml0eSB0aGF0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHBhc3QgbGlmZSBpbiBhIHBsYWNlLlxcblxcbmcpIFJlaW5jYXJuYXRpb246IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgcmVpbmNhcm5hdGlvbiBpcyBhIHJlbGlnaW91cyBvciBwaGlsb3NvcGhpY2FsIGNvbmNlcHQgdGhhdCBkb2VzIG5vdCBwcm92aWRlIGFueSBzY2llbnRpZmljIGV2aWRlbmNlIGFib3V0IHBhc3QgbGlmZSBpbiBhIHBsYWNlLlxcblxcbmgpIEltcG9ydGFudCBoYWJpdGF0czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBldmlkZW5jZSBvZiBwYXN0IGxpZmUgZG9lcyBub3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRhbnQgaGFiaXRhdHMuIFdoaWxlIGNlcnRhaW4gYXJlYXMgbWF5IGhhdmUgYmVlbiBpbXBvcnRhbnQgaGFiaXRhdHMgaW4gdGhlIHBhc3QsIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gYWxzbyBiZSBmb3VuZCBpbiBhcmVhcyB0aGF0IHdlcmUgbm90IGltcG9ydGFudCBoYWJpdGF0cy4nfSJ9XSwgIjYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBIb3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93biwgb3IgaW5oZXJpdGVkLCBpcyBmb3VuZCBpbiBpbmZvcm1hdGlvbiBpbiBhbiBvcmdhbmlzbSdzIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNwZWNpZXMgKGIpIE1lc3NlbmdlcnMgKGMpIEhhaXIgZm9sbGljbGVzIChkKSBDeWNsZXMgKGUpIFNraW4gY2VsbHMgKGYpIEVuZG9jcmluZSBzeXN0ZW0gKGcpIENocm9tb3NvbWVzIChoKSBQcm90ZWlucyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZycsICdyZWFzb25pbmcnOiBcIihhKSBTcGVjaWVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzcGVjaWVzIHJlZmVyIHRvIGEgZ3JvdXAgb2Ygb3JnYW5pc21zIHRoYXQgc2hhcmUgc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MgYW5kIGNhbiBpbnRlcmJyZWVkIHRvIHByb2R1Y2UgZmVydGlsZSBvZmZzcHJpbmcuIEl0IGRvZXMgbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXFxuXFxuKGIpIE1lc3NlbmdlcnM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIG1lc3NlbmdlcnMgcmVmZXIgdG8gbW9sZWN1bGVzIHN1Y2ggYXMgaG9ybW9uZXMgYW5kIG5ldXJvdHJhbnNtaXR0ZXJzIHRoYXQgdHJhbnNtaXQgc2lnbmFscyBiZXR3ZWVuIGNlbGxzLiBXaGlsZSB0aGV5IHBsYXkgYSByb2xlIGluIHZhcmlvdXMgYmlvbG9naWNhbCBwcm9jZXNzZXMsIHRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXFxuXFxuKGMpIEhhaXIgZm9sbGljbGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBoYWlyIGZvbGxpY2xlcyBhcmUgc3RydWN0dXJlcyBpbiB0aGUgc2tpbiB0aGF0IHByb2R1Y2UgaGFpci4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZCkgQ3ljbGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBjeWNsZXMgcmVmZXIgdG8gcmVjdXJyaW5nIGV2ZW50cyBvciBwcm9jZXNzZXMgc3VjaCBhcyB0aGUgbWVuc3RydWFsIGN5Y2xlIG9yIHRoZSB3YXRlciBjeWNsZS4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZSkgU2tpbiBjZWxsczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2tpbiBjZWxscyBhcmUgY2VsbHMgdGhhdCBtYWtlIHVwIHRoZSBvdXRlciBsYXllciBvZiB0aGUgc2tpbi4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZikgRW5kb2NyaW5lIHN5c3RlbTogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgdGhlIGVuZG9jcmluZSBzeXN0ZW0gaXMgYSBzeXN0ZW0gb2YgZ2xhbmRzIHRoYXQgcHJvZHVjZSBhbmQgc2VjcmV0ZSBob3Jtb25lcy4gV2hpbGUgaG9ybW9uZXMgcGxheSBhIHJvbGUgaW4gdmFyaW91cyBiaW9sb2dpY2FsIHByb2Nlc3NlcywgdGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZykgQ2hyb21vc29tZXM6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBDaHJvbW9zb21lcyBhcmUgc3RydWN0dXJlcyBpbiB0aGUgbnVjbGV1cyBvZiBhIGNlbGwgdGhhdCBjb250YWluIGdlbmV0aWMgaW5mb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgRE5BLiBUcmFpdHMgYXJlIHBhc3NlZCBkb3duIGZyb20gb25lIGdlbmVyYXRpb24gdG8gdGhlIG5leHQgdGhyb3VnaCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIGFuIG9yZ2FuaXNtJ3MgY2hyb21vc29tZXMuXFxuXFxuKGgpIFByb3RlaW5zOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBwcm90ZWlucyBhcmUgbW9sZWN1bGVzIG1hZGUgdXAgb2YgYW1pbm8gYWNpZHMgdGhhdCBwZXJmb3JtIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBib2R5LiBXaGlsZSB0aGV5IHBsYXkgYSByb2xlIGluIHZhcmlvdXMgYmlvbG9naWNhbCBwcm9jZXNzZXMsIHRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXCJ9In1dLCAiNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgYXJlIHRoZSBtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEdyYXNzIChiKSBBbmltYWxzIChjKSBBcHBsZXMgKGQpIFBvdGF0b2VzIChlKSBUcmVlcyAoZikgUGxhbnRzIChnKSBGdW5naSAoaCkgRmllbGRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdmJywgJ3JlYXNvbmluZyc6IFwiKGEpIEdyYXNzOiBXaGlsZSBncmFzcyBpcyBhIHR5cGUgb2YgcGxhbnQsIGl0IGlzIG5vdCB0aGUgb25seSB0eXBlIG9mIHBsYW50LiBBZGRpdGlvbmFsbHksIHRoZSBxdWVzdGlvbiBzcGVjaWZpY2FsbHkgYXNrcyBhYm91dCAnbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uLCcgYW5kIGdyYXNzIGlzIG5vdCBuZWNlc3NhcmlseSBhIG1ham9yIHByb2R1Y2VyIGluIHRoZXNlIGFyZWFzLlxcblxcbihiKSBBbmltYWxzOiBBbmltYWxzIGFyZSBub3QgcHJvZHVjZXJzLCB0aGV5IGFyZSBjb25zdW1lcnMuIFRoZXkgZG8gbm90IHByb2R1Y2UgZW5lcmd5IGZyb20gc3VubGlnaHQsIHdhdGVyLCBhbmQgY2FyYm9uIGRpb3hpZGUgbGlrZSBwbGFudHMgZG8uXFxuXFxuKGMpIEFwcGxlczogQXBwbGVzIGFyZSBhIHR5cGUgb2YgZnJ1aXQgdGhhdCBncm93IG9uIHRyZWVzLCBidXQgdGhleSBhcmUgbm90IHByb2R1Y2VycyBpbiBhbmQgb2YgdGhlbXNlbHZlcy4gVGhlIHRyZWVzIHRoYXQgcHJvZHVjZSBhcHBsZXMgYXJlIHRoZSBwcm9kdWNlcnMuXFxuXFxuKGQpIFBvdGF0b2VzOiBQb3RhdG9lcyBhcmUgYSB0eXBlIG9mIHZlZ2V0YWJsZSB0aGF0IGdyb3cgdW5kZXJncm91bmQsIGJ1dCB0aGV5IGFyZSBub3QgcHJvZHVjZXJzIGluIGFuZCBvZiB0aGVtc2VsdmVzLiBUaGUgcGxhbnRzIHRoYXQgcHJvZHVjZSBwb3RhdG9lcyBhcmUgdGhlIHByb2R1Y2Vycy5cXG5cXG4oZSkgVHJlZXM6IFRyZWVzIGFyZSBhIHR5cGUgb2YgcGxhbnQgYW5kIGFyZSBpbmRlZWQgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uLiBUaGV5IGFic29yYiBjYXJib24gZGlveGlkZSBhbmQgcmVsZWFzZSBveHlnZW4sIGFuZCB0aGV5IGFsc28gaGVscCByZWd1bGF0ZSB0aGUgdGVtcGVyYXR1cmUgYW5kIG1vaXN0dXJlIGxldmVscyBpbiB0aGVpciBlbnZpcm9ubWVudC5cXG5cXG4oZykgRnVuZ2k6IEZ1bmdpIGFyZSBub3QgcHJvZHVjZXJzLCB0aGV5IGFyZSBkZWNvbXBvc2Vycy4gVGhleSBicmVhayBkb3duIGRlYWQgb3JnYW5pYyBtYXR0ZXIgYW5kIHJlY3ljbGUgbnV0cmllbnRzIGJhY2sgaW50byB0aGUgZWNvc3lzdGVtLlxcblxcbihoKSBGaWVsZHM6IEZpZWxkcyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgcHJvZHVjZXJzLiBUaGV5IGFyZSBzaW1wbHkgYXJlYXMgb2YgbGFuZCB1c2VkIGZvciBncm93aW5nIGNyb3BzIG9yIHJhaXNpbmcgbGl2ZXN0b2NrLlxcblxcbkluIHN1bW1hcnksIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZikgcGxhbnRzLCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCB1c2UgcGhvdG9zeW50aGVzaXMgdG8gcHJvZHVjZSBlbmVyZ3kgZnJvbSBzdW5saWdodCwgd2F0ZXIsIGFuZCBjYXJib24gZGlveGlkZS5cIn0ifV0sICI4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgY2hhbmdlIHZlZ2V0YXRpb24gaW50bz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2NhcmNlIHJlc291cmNlcyAoYikgSGFybWZ1bCBzdWJzdGFuY2VzIChjKSBTY2FycyAoZCkgRm9zc2lsIGZ1ZWxzIChlKSBTZWRpbWVudCAoZikgU29tZXRoaW5nIHRvIG1vdmUgKGcpIE1hZ2ljIChoKSBQaWNuaWNzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdkJywgJ3JlYXNvbmluZyc6ICcoYSkgU2NhcmNlIHJlc291cmNlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2FyY2UgcmVzb3VyY2VzLiBTY2FyY2UgcmVzb3VyY2VzIGFyZSByZXNvdXJjZXMgdGhhdCBhcmUgbGltaXRlZCBpbiBhdmFpbGFiaWxpdHksIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGEgbGltaXRlZCByZXNvdXJjZS5cXG5cXG4oYikgSGFybWZ1bCBzdWJzdGFuY2VzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIGhhcm1mdWwgc3Vic3RhbmNlcy4gSGFybWZ1bCBzdWJzdGFuY2VzIGFyZSBzdWJzdGFuY2VzIHRoYXQgY2FuIGNhdXNlIGhhcm0gb3IgZGFtYWdlLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBoYXJtZnVsLlxcblxcbihjKSBTY2FyczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2Fycy4gU2NhcnMgYXJlIG1hcmtzIGxlZnQgb24gdGhlIHNraW4gb3Igb3RoZXIgdGlzc3VlIGFmdGVyIGEgd291bmQgaGFzIGhlYWxlZCwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgYSB3b3VuZC5cXG5cXG4oZSkgU2VkaW1lbnQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc2VkaW1lbnQuIFNlZGltZW50IGlzIGEgbmF0dXJhbGx5IG9jY3VycmluZyBtYXRlcmlhbCB0aGF0IGlzIGJyb2tlbiBkb3duIGJ5IHdlYXRoZXJpbmcgYW5kIGVyb3Npb24sIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIHNlZGltZW50LlxcblxcbihmKSBTb21ldGhpbmcgdG8gbW92ZTogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzb21ldGhpbmcgdG8gbW92ZS4gVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3B0aW9ucy5cXG5cXG4oZykgTWFnaWM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gbWFnaWMuIE1hZ2ljIGlzIGEgc3VwZXJuYXR1cmFsIGZvcmNlIHRoYXQgaXMgbm90IGJhc2VkIG9uIHNjaWVuY2Ugb3IgcmVhc29uLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBzdXBlcm5hdHVyYWwuXFxuXFxuKGgpIFBpY25pY3M6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gcGljbmljcy4gUGljbmljcyBhcmUgb3V0ZG9vciBtZWFscyBvciBzb2NpYWwgZ2F0aGVyaW5ncywgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgYSBzb2NpYWwgZ2F0aGVyaW5nLid9In1dLCAiOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoZW4gd2lsbCBhbmltYWxzIG1vdmUgdG8gYW5vdGhlciBhcmVhP1xuQW5zd2VyIENob2ljZXM6IChhKSBUbyBrZWVwIHRoZWlyIGJvZHkgaGVhdC4gKGIpIFJldXNpbmcgbWF0ZXJpYWxzIChjKSBJZiB0aGV5IGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgKGQpIElmIHRoZXkgYXJlIGJvcmVkIChlKSBNYXJzaGVzIGFuZCBzd2FtcHMgKGYpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBtb25leSAoZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgKGgpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdjJywgJ3JlYXNvbmluZyc6ICdhKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSB0byBrZWVwIHRoZWlyIGJvZHkgaGVhdC4gQW5pbWFscyBoYXZlIGRpZmZlcmVudCB3YXlzIG9mIHJlZ3VsYXRpbmcgdGhlaXIgYm9keSB0ZW1wZXJhdHVyZSwgc3VjaCBhcyBzd2VhdGluZywgcGFudGluZywgb3IgaGliZXJuYXRpb24uIEhvd2V2ZXIsIGlmIHRoZSBlbnZpcm9ubWVudCBiZWNvbWVzIHRvbyBleHRyZW1lLCBhbmltYWxzIG1heSBtb3ZlIHRvIGEgbW9yZSBzdWl0YWJsZSBhcmVhLlxcblxcbmIpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIHRvIHJldXNlIG1hdGVyaWFscy4gVGhpcyBvcHRpb24gaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uIGFuZCBkb2VzIG5vdCBtYWtlIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGFuaW1hbCBtb3ZlbWVudC5cXG5cXG5kKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGFyZSBib3JlZC4gQm9yZWRvbSBpcyBhIGh1bWFuIGVtb3Rpb24gYW5kIGFuaW1hbHMgZG8gbm90IGhhdmUgdGhlIHNhbWUgY2FwYWNpdHkgZm9yIGJvcmVkb20gYXMgaHVtYW5zIGRvLiBBbmltYWxzIG1vdmUgZm9yIHN1cnZpdmFsIHJlYXNvbnMgc3VjaCBhcyBmaW5kaW5nIGZvb2QsIHdhdGVyLCBvciBzaGVsdGVyLlxcblxcbmUpIE1hcnNoZXMgYW5kIHN3YW1wcyBhcmUgbm90IGEgcmVhc29uIGZvciBhbmltYWwgbW92ZW1lbnQuIE1hcnNoZXMgYW5kIHN3YW1wcyBhcmUgdHlwZXMgb2YgaGFiaXRhdHMgd2hlcmUgYW5pbWFscyBtYXkgbGl2ZSwgYnV0IHRoZXkgZG8gbm90IGNhdXNlIGFuaW1hbHMgdG8gbW92ZSB0byBhbm90aGVyIGFyZWEuXFxuXFxuZikgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5LiBUaGlzIG9wdGlvbiBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24gYW5kIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYW5pbWFsIG1vdmVtZW50LlxcblxcbmcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIGlzIGEgd2VhdGhlciBwaGVub21lbm9uIGFuZCBkb2VzIG5vdCBjYXVzZSBhbmltYWxzIHRvIG1vdmUgdG8gYW5vdGhlciBhcmVhLlxcblxcbmgpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIGlmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kLiBBbmltYWxzIG1heSBzdG9yZSBmb29kIGZvciBsYXRlciB1c2UsIGJ1dCB0aGV5IGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGhhdmUgdG9vIG11Y2ggZm9vZC5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBjKSBpZiBhbmltYWxzIGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgdGhleSB3aWxsIG1vdmUgdG8gYW5vdGhlciBhcmVhLiBUaGlzIGlzIGJlY2F1c2UgYW5pbWFscyBuZWVkIGZvb2QgdG8gc3Vydml2ZSwgYW5kIGlmIHRoZXkgY2Fubm90IGZpbmQgZm9vZCBpbiB0aGVpciBjdXJyZW50IGxvY2F0aW9uLCB0aGV5IHdpbGwgbW92ZSB0byBhbm90aGVyIGFyZWEgd2hlcmUgZm9vZCBpcyBhdmFpbGFibGUuJ30ifV0sICIxMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgS2luZXRpYyBlbmVyZ3kgKGIpIExvdWQgbm9pc2VzIChjKSBWaWJyYXRpbmcgd2F2ZXMgKGQpIEFuIG9iamVjdCBpcyBzZWVuIChlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IChmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW4gKGgpIEhhcm1mdWwgc3Vic3RhbmNlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnYycsICdyZWFzb25pbmcnOiAnYSkgS2luZXRpYyBlbmVyZ3k6IEtpbmV0aWMgZW5lcmd5IGlzIHRoZSBlbmVyZ3kgb2YgbW90aW9uLiBXaGlsZSBhIGZpcmVjcmFja2VyIGRvZXMgcHJvZHVjZSBzb21lIG1vdGlvbiwgaXQgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IHRoYXQgaXQgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8uIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmIpIExvdWQgbm9pc2VzOiBXaGlsZSBhIGZpcmVjcmFja2VyIGRvZXMgcHJvZHVjZSBsb3VkIG5vaXNlcywgaXQgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IHRoYXQgaXQgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8uIFRoZSBsb3VkIG5vaXNlcyBhcmUgYSByZXN1bHQgb2YgdGhlIHZpYnJhdGluZyB3YXZlcyBwcm9kdWNlZCBieSB0aGUgZmlyZWNyYWNrZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmQpIEFuIG9iamVjdCBpcyBzZWVuOiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gdGhlIGFiaWxpdHkgdG8gc2VlIGFuIG9iamVjdC4gVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIG9wdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3k6IEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgaXMgYSBmb3JtIG9mIGVuZXJneSB0aGF0IGluY2x1ZGVzIHJhZGlvIHdhdmVzLCBtaWNyb3dhdmVzLCBpbmZyYXJlZCByYWRpYXRpb24sIHZpc2libGUgbGlnaHQsIHVsdHJhdmlvbGV0IHJhZGlhdGlvbiwgWC1yYXlzLCBhbmQgZ2FtbWEgcmF5cy4gQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIGVsZWN0cm9tYWduZXRpYyBlbmVyZ3kuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmYpIERlb3h5cmlib251Y2xlaWMgYWNpZDogRGVveHlyaWJvbnVjbGVpYyBhY2lkIChETkEpIGlzIGEgbW9sZWN1bGUgdGhhdCBjYXJyaWVzIGdlbmV0aWMgaW5zdHJ1Y3Rpb25zIGZvciB0aGUgZGV2ZWxvcG1lbnQsIGZ1bmN0aW9uaW5nLCBncm93dGgsIGFuZCByZXByb2R1Y3Rpb24gb2YgYWxsIGxpdmluZyB0aGluZ3MuIEEgZmlyZWNyYWNrZXIgZG9lcyBub3QgY29udmVydCBjaGVtaWNhbCBlbmVyZ3kgaW50byBETkEuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmcpIEh5ZHJvZ2VuIGFuZCBveHlnZW46IEh5ZHJvZ2VuIGFuZCBveHlnZW4gYXJlIGVsZW1lbnRzIHRoYXQgY2FuIGNvbWJpbmUgdG8gZm9ybSB3YXRlci4gQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIGh5ZHJvZ2VuIGFuZCBveHlnZW4uIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmgpIEhhcm1mdWwgc3Vic3RhbmNlczogQSBmaXJlY3JhY2tlciBkb2VzIHByb2R1Y2UgaGFybWZ1bCBzdWJzdGFuY2VzIHN1Y2ggYXMgc21va2UgYW5kIGNoZW1pY2FscywgYnV0IGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSB0aGF0IGl0IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5jKSBWaWJyYXRpbmcgd2F2ZXM6IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gdmlicmF0aW5nIHdhdmVzLiBXaGVuIHRoZSBjaGVtaWNhbHMgaW5zaWRlIGEgZmlyZWNyYWNrZXIgcmVhY3QsIHRoZXkgcHJvZHVjZSBhIHJhcGlkIHJlbGVhc2Ugb2YgZW5lcmd5IGluIHRoZSBmb3JtIG9mIGhlYXQgYW5kIGdhcy4gVGhpcyBlbmVyZ3kgY2F1c2VzIHRoZSBmaXJlY3JhY2tlciB0byBleHBsb2RlLCBwcm9kdWNpbmcgdmlicmF0aW5nIHdhdmVzIHRoYXQgd2UgaGVhciBhcyBsb3VkIG5vaXNlcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBjb3JyZWN0Lid9In1dLCAiMTEiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGlzIHRoZSByZXN1bHQgb2YgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXM/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIE1ham9yIGVmZmVjdHMgKGIpIFJlc3BpcmF0aW9uIChjKSBSb2xleCAoZCkgRGVuc2l0eSAoZSkgRGlwaHRoZXJpYSAoZikgQ2FuaXMgbHVwdXMgKGcpIFNraW4gY29sb3IgKGgpIERpZ2VzdGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZycsICdyZWFzb25pbmcnOiBcImEpIE1ham9yIGVmZmVjdHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gJ01ham9yIGVmZmVjdHMnIGNvdWxkIHJlZmVyIHRvIGEgdmFyaWV0eSBvZiB0aGluZ3MsIGJ1dCBpdCBpcyBub3Qgc3BlY2lmaWMgZW5vdWdoIHRvIGJlIGEgY29ycmVjdCBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbi5cXG5cXG5iKSBSZXNwaXJhdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBSZXNwaXJhdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyB0aGF0IGludm9sdmVzIHRoZSBleGNoYW5nZSBvZiBnYXNlcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cXG5cXG5jKSBSb2xleDogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBSb2xleCBpcyBhIGJyYW5kIG9mIGx1eHVyeSB3YXRjaGVzIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGdlbmV0aWNzLlxcblxcbmQpIERlbnNpdHk6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGVuc2l0eSBpcyBhIHBoeXNpY2FsIHByb3BlcnR5IHRoYXQgZGVzY3JpYmVzIHRoZSBhbW91bnQgb2YgbWFzcyBpbiBhIGdpdmVuIHZvbHVtZSwgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cXG5cXG5lKSBEaXBodGhlcmlhOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIERpcGh0aGVyaWEgaXMgYSBiYWN0ZXJpYWwgaW5mZWN0aW9uIHRoYXQgY2FuIGNhdXNlIHNldmVyZSByZXNwaXJhdG9yeSBwcm9ibGVtcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cXG5cXG5mKSBDYW5pcyBsdXB1czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBDYW5pcyBsdXB1cyBpcyB0aGUgc2NpZW50aWZpYyBuYW1lIGZvciB0aGUgZ3JheSB3b2xmLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmcpIFNraW4gY29sb3I6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyIGJlY2F1c2Ugc2tpbiBjb2xvciBpcyBhIHRyYWl0IHRoYXQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gVGhlIGdlbmVzIHRoYXQgY29udHJvbCBza2luIGNvbG9yIHByb2R1Y2UgZGlmZmVyZW50IGFtb3VudHMgb2YgbWVsYW5pbiwgd2hpY2ggaXMgYSBwaWdtZW50IHRoYXQgZ2l2ZXMgc2tpbiBpdHMgY29sb3IuIFRoZSBpbnRlcmFjdGlvbiBvZiB0aGVzZSBnZW5lcyBjYW4gcmVzdWx0IGluIGEgd2lkZSByYW5nZSBvZiBza2luIGNvbG9ycywgZnJvbSB2ZXJ5IGxpZ2h0IHRvIHZlcnkgZGFyay5cXG5cXG5oKSBEaWdlc3Rpb246IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGlnZXN0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGJyZWFrZG93biBvZiBmb29kIGludG8gc21hbGxlciBtb2xlY3VsZXMsIGJ1dCBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3MuXCJ9In1dLCAiMTIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2hlZXAgKGIpIFNhbG1vbiAoYykgR3Jhc3NlcyAoZCkgQmF0cyAoZSkgQW5pbWFscyAoZikgU2hydWJzIChnKSBIdW1hbnMgKGgpIFRyZWVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdhJywgJ3JlYXNvbmluZyc6ICdiKSBTYWxtb246IFNhbG1vbiBhcmUgYSB0eXBlIG9mIGZpc2ggdGhhdCBhcmUgc3RyaWN0bHkgY2Fybml2b3JvdXMgYW5kIGZlZWQgb24gb3RoZXIgb3JnYW5pc21zIHN1Y2ggYXMgc21hbGxlciBmaXNoLCBjcnVzdGFjZWFucywgYW5kIGluc2VjdHMuIFRoZXkgZG8gbm90IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmMpIEdyYXNzZXM6IEdyYXNzZXMgYXJlIHByaW1hcnkgcHJvZHVjZXJzIGFuZCBhcmUgYXQgdGhlIGJhc2Ugb2YgdGhlIGZvb2QgY2hhaW4uIFRoZXkgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmQpIEJhdHM6IEJhdHMgYXJlIGluc2VjdGl2b3JlcyBvciBmcnVnaXZvcmVzIGFuZCBmZWVkIG9uIGluc2VjdHMgb3IgZnJ1aXRzIHJlc3BlY3RpdmVseS4gVGhleSBkbyBub3QgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuZSkgQW5pbWFsczogVGhpcyBvcHRpb24gaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBwcm92aWRlIGFueSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gSXQgaXMgaW5jb3JyZWN0IGJlY2F1c2Ugbm90IGFsbCBhbmltYWxzIGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5mKSBTaHJ1YnM6IFNocnVicyBhcmUgYWxzbyBwcmltYXJ5IHByb2R1Y2VycyBhbmQgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmcpIEh1bWFuczogSHVtYW5zIGFyZSBvbW5pdm9yZXMgYW5kIGNhbiBjb25zdW1lIGJvdGggcGxhbnRzIGFuZCBhbmltYWxzLiBIb3dldmVyLCB0aGV5IGRvIG5vdCBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbCBhcyB0aGV5IGNvbnN1bWUgZWl0aGVyIHBsYW50cyBvciBhbmltYWxzIGF0IGEgdGltZS5cXG5cXG5oKSBUcmVlczogVHJlZXMgYXJlIGFsc28gcHJpbWFyeSBwcm9kdWNlcnMgYW5kIGFyZSBub3QgY2FwYWJsZSBvZiBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBzaGVlcCwgYXMgdGhleSBhcmUgaGVyYml2b3JlcyBhbmQgY2FuIGNvbnN1bWUgcGxhbnRzIGF0IG9uZSB0cm9waGljIGxldmVsIGFuZCB0aGVuIGJlIGNvbnN1bWVkIGJ5IGEgcHJlZGF0b3IgYXQgYSBoaWdoZXIgdHJvcGhpYyBsZXZlbC4nfSJ9XSwgIjEzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hvIGNhbiBzaGl2ZXI/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhdHMgKGIpIFNpZGV3YWxrcyAoYykgSHVtYW5zIChkKSBCZWVzIChlKSBLb2FsYXMgKGYpIE1vdW50YWlucyAoZykgVHJlZXMgKGgpIFBlb3BsZSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZCcsICdyZWFzb25pbmcnOiBcIkxldCdzIGdvIHRocm91Z2ggZWFjaCBvcHRpb24gYW5kIGV4cGxhaW4gd2h5IGl0IGlzIGluY29ycmVjdDpcXG5cXG5hKSBCYXRzOiBXaGlsZSBiYXRzIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgdGhleSBhcmUgbm90IHRoZSBvbmx5IGFuaW1hbHMgdGhhdCBjYW4gc2hpdmVyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuYikgU2lkZXdhbGtzOiBTaWRld2Fsa3MgYXJlIG5vdCBsaXZpbmcgb3JnYW5pc21zIGFuZCB0aGVyZWZvcmUgY2Fubm90IHNoaXZlci4gVGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5jKSBIdW1hbnM6IEh1bWFucyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5lKSBLb2FsYXM6IEtvYWxhcyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5mKSBNb3VudGFpbnM6IE1vdW50YWlucyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3Qgc2hpdmVyLiBUaGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmcpIFRyZWVzOiBUcmVlcyBhcmUgbm90IGNhcGFibGUgb2Ygc2hpdmVyaW5nIGFzIHRoZXkgZG8gbm90IGhhdmUgbXVzY2xlcy4gVGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5oKSBQZW9wbGU6IFRoaXMgb3B0aW9uIGlzIHRoZSBzYW1lIGFzIG9wdGlvbiBjLiBIdW1hbnMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCBidXQgdGhleSBhcmUgbm90IHRoZSBvbmx5IGFuaW1hbHMgdGhhdCBjYW4gc2hpdmVyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuZCkgSG9uZXkgYmVlczogSG9uZXkgYmVlcyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcgdG8gZ2VuZXJhdGUgaGVhdCBhbmQgbWFpbnRhaW4gdGhlaXIgYm9keSB0ZW1wZXJhdHVyZS4gVGhpcyBvcHRpb24gaXMgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbkluIGNvbmNsdXNpb24sIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBkKSBob25leSBiZWVzIGNhbiBzaGl2ZXIuIEl0IGlzIGltcG9ydGFudCB0byByZWFkIHRoZSBxdWVzdGlvbiBhbmQgb3B0aW9ucyBjYXJlZnVsbHkgYW5kIGVsaW1pbmF0ZSB0aGUgb3B0aW9ucyB0aGF0IGFyZSBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0uXCJ9In1dLCAiMTQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBLaXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBpcyBhbiBleGFtcGxlIG9mIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIExlYXJuaW5nIGJlaGF2aW9yIChiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlcyAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbiAoZSkgQmFkIGJlaGF2aW9yIChmKSBMZWFybmluZyBub3RoaW5nIChnKSBFeHRpbmd1aXNoaW5nIGJlaGF2aW9yIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2EnLCAncmVhc29uaW5nJzogJ2IpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBDb21wZXRpbmcgZm9yIHJlc291cmNlcyByZWZlcnMgdG8gYW5pbWFscyBjb21wZXRpbmcgZm9yIGxpbWl0ZWQgcmVzb3VyY2VzIHN1Y2ggYXMgZm9vZCwgd2F0ZXIsIG9yIHNoZWx0ZXIuIEh1bnRpbmcgYmVoYXZpb3IgaXMgbm90IHJlbGF0ZWQgdG8gcmVzb3VyY2UgY29tcGV0aXRpb24uXFxuXFxuYykgV2FybS1ibG9vZGVkOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIFdhcm0tYmxvb2RlZCByZWZlcnMgdG8gYW5pbWFscyB0aGF0IGNhbiByZWd1bGF0ZSB0aGVpciBib2R5IHRlbXBlcmF0dXJlIGludGVybmFsbHksIGJ1dCBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlaXIgYmVoYXZpb3IuXFxuXFxuZCkgQ29tcGV0aXRpb246IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBicm9hZCBhbmQgZG9lcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIENvbXBldGl0aW9uIGNhbiByZWZlciB0byBtYW55IGRpZmZlcmVudCB0eXBlcyBvZiBpbnRlcmFjdGlvbnMgYmV0d2VlbiBhbmltYWxzLCBidXQgaXQgZG9lcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGF0ZSB0byBodW50aW5nIGJlaGF2aW9yLlxcblxcbmUpIEJhZCBiZWhhdmlvcjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgc3ViamVjdGl2ZSBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGNsZWFyIGV4cGxhbmF0aW9uIG9mIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gSHVudGluZyBiZWhhdmlvciBpcyBhIG5hdHVyYWwgYmVoYXZpb3IgZm9yIGNhdHMgYW5kIGlzIG5vdCBjb25zaWRlcmVkIGJhZCBiZWhhdmlvci5cXG5cXG5mKSBMZWFybmluZyBub3RoaW5nOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgYWNjdXJhdGUuIEtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGFyZSBhY3R1YWxseSBsZWFybmluZyBpbXBvcnRhbnQgc2tpbGxzIHRoYXQgdGhleSB3aWxsIG5lZWQgdG8gc3Vydml2ZSBhcyBhZHVsdCBjYXRzLiBIdW50aW5nIGJlaGF2aW9yIGlzIGEgbGVhcm5lZCBiZWhhdmlvciB0aGF0IHJlcXVpcmVzIHByYWN0aWNlIGFuZCByZWZpbmVtZW50LlxcblxcbmcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3I6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IgcmVmZXJzIHRvIHRoZSBwcm9jZXNzIG9mIGVsaW1pbmF0aW5nIGEgYmVoYXZpb3IgdGhyb3VnaCBwdW5pc2htZW50IG9yIG5lZ2F0aXZlIHJlaW5mb3JjZW1lbnQsIGJ1dCBpdCBkb2VzIG5vdCByZWxhdGUgdG8gbGVhcm5pbmcgYmVoYXZpb3IuXFxuXFxuaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBUaGUgZW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIHJlZmVycyB0byB0aGUgcGh5c2ljcyBvZiBtb3Rpb24gYW5kIGRvZXMgbm90IHJlbGF0ZSB0byBhbmltYWwgYmVoYXZpb3IuXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYSkgbGVhcm5pbmcgYmVoYXZpb3IsIGFzIGtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGFyZSBsZWFybmluZyBpbXBvcnRhbnQgc2tpbGxzIHRoYXQgdGhleSB3aWxsIG5lZWQgdG8gc3Vydml2ZSBhcyBhZHVsdCBjYXRzLid9In1dLCAiMTUiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBEZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSBhZnRlciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBCdXJuaW5nIChiKSBXaW50ZXIgKGMpIE11dGF0aW9ucyAoZCkgQ29va2luZyAoZSkgQ3ljbGVzIChmKSBTdW1tZXIgKGcpIEZyZWV6aW5nIChoKSBHdW5zaG90cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnYScsICdyZWFzb25pbmcnOiAnYikgV2ludGVyOiBXaW50ZXIgaXMgYSBzZWFzb24gYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmMpIE11dGF0aW9uczogTXV0YXRpb25zIGFyZSBjaGFuZ2VzIGluIHRoZSBnZW5ldGljIG1hdGVyaWFsIG9mIGFuIG9yZ2FuaXNtIGFuZCBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZCkgQ29va2luZzogQ29va2luZyBpcyBhIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIGZvb2QgYnkgaGVhdGluZyBpdCwgYW5kIGl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmUpIEN5Y2xlczogQ3ljbGVzIGNhbiByZWZlciB0byBtYW55IHRoaW5ncywgYnV0IG5vbmUgb2YgdGhlbSBhcmUgcmVsYXRlZCB0byBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZikgU3VtbWVyOiBTdW1tZXIgaXMgYSBzZWFzb24gYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmcpIEZyZWV6aW5nOiBGcmVlemluZyBpcyBhIHByb2Nlc3Mgb2YgbG93ZXJpbmcgdGhlIHRlbXBlcmF0dXJlIG9mIHNvbWV0aGluZyB0byBiZWxvdyBpdHMgZnJlZXppbmcgcG9pbnQsIGFuZCBpdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5oKSBHdW5zaG90czogR3Vuc2hvdHMgYXJlIGEgc3VkZGVuIGxvdWQgbm9pc2UgY2F1c2VkIGJ5IGEgYnVsbGV0IG9yIG90aGVyIHByb2plY3RpbGUgYW5kIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBidXJuaW5nLiBCdXJuaW5nIGRlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgY29tYnVzdGlvbiwgd2hpY2ggcmVsZWFzZXMgZW5lcmd5IGluIHRoZSBmb3JtIG9mIGhlYXQgYW5kIGxpZ2h0LiBUaGlzIGVuZXJneSBjYW4gYmUgaGFybmVzc2VkIHRvIGdlbmVyYXRlIGVsZWN0cmljaXR5IG9yIHBvd2VyIGVuZ2luZXMuJ30ifV0sICIxNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFR1cm5pbmcgb24gd2hhdCB3aWxsIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVmVoaWNsZXMgKGIpIFNhdGVsbGl0ZXMgKGMpIExpZ2h0IGJ1bGIgKGQpIEJ1c2VzIChlKSBGaXJlY3JhY2tlcnMgKGYpIFNlbnNvcnkgbmV1cm9ucyAoZykgQW4gb2JqZWN0IChoKSBFbmdpbmVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdjJywgJ3JlYXNvbmluZyc6ICdhKSBWZWhpY2xlczogVHVybmluZyBvbiBhIHZlaGljbGUgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLiBWZWhpY2xlcyBlbWl0IHZhcmlvdXMgdHlwZXMgb2YgcmFkaWF0aW9uLCBzdWNoIGFzIHRoZXJtYWwgcmFkaWF0aW9uIGFuZCBzb3VuZCB3YXZlcywgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbmIpIFNhdGVsbGl0ZXM6IFNhdGVsbGl0ZXMgY2FuIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgYnV0IG5vdCBzaW1wbHkgYnkgdHVybmluZyB0aGVtIG9uLiBTYXRlbGxpdGVzIGFyZSBkZXNpZ25lZCB0byByZWNlaXZlIGFuZCB0cmFuc21pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBzdWNoIGFzIHJhZGlvIHdhdmVzLCBidXQgdGhleSBkbyBub3QgZW1pdCByYWRpYXRpb24ganVzdCBieSBiZWluZyB0dXJuZWQgb24uXFxuXFxuZCkgQnVzZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIHR1cm5pbmcgb24gYSBidXMgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLiBCdXNlcyBlbWl0IHZhcmlvdXMgdHlwZXMgb2YgcmFkaWF0aW9uLCBzdWNoIGFzIHRoZXJtYWwgcmFkaWF0aW9uIGFuZCBzb3VuZCB3YXZlcywgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbmUpIEZpcmVjcmFja2VyczogRmlyZWNyYWNrZXJzIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gd2hlbiB0aGV5IGFyZSB0dXJuZWQgb24uIFRoZXkgZW1pdCBsaWdodCBhbmQgc291bmQsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5mKSBTZW5zb3J5IG5ldXJvbnM6IFNlbnNvcnkgbmV1cm9ucyBhcmUgcGFydCBvZiB0aGUgbmVydm91cyBzeXN0ZW0gYW5kIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXFxuXFxuZykgQW4gb2JqZWN0OiBBbiBvYmplY3QgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGp1c3QgYnkgYmVpbmcgdHVybmVkIG9uLiBIb3dldmVyLCBzb21lIG9iamVjdHMgY2FuIGVtaXQgcmFkaWF0aW9uIGlmIHRoZXkgYXJlIGhlYXRlZCBvciBlbmVyZ2l6ZWQsIHN1Y2ggYXMgYSBsaWdodCBidWxiLlxcblxcbmgpIEVuZ2luZXM6IEVuZ2luZXMgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiB3aGVuIHRoZXkgYXJlIHR1cm5lZCBvbi4gVGhleSBlbWl0IHZhcmlvdXMgdHlwZXMgb2YgcmFkaWF0aW9uLCBzdWNoIGFzIHRoZXJtYWwgcmFkaWF0aW9uIGFuZCBzb3VuZCB3YXZlcywgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIGxpZ2h0IGJ1bGIsIGFzIHR1cm5pbmcgb24gYSBsaWdodCBidWxiIGVtaXRzIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gaW4gdGhlIGZvcm0gb2YgdmlzaWJsZSBsaWdodC4nfSJ9XSwgIjE3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlcmUgaXMgYSB6eWdvdGUgZm9ybWVkIGJ5IHNwZXJtIHN3aW1taW5nIHRvIGFuIGVnZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQ29sZGVyIGFuZCB3ZXR0ZXIgKGIpIE9jZWFuIHdhdGVyIChjKSBHcmFwdG9saXRlcyAoZCkgUmFwaWQgZXhwYW5zaW9uIChlKSBBIGRlbHRhIChmKSBBbiBhcmNoZWdvbml1bSAoZykgQmFybmFjbGVzIChoKSBBbiBvcmdhbmlzbSdzIGJvZHkifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2YnLCAncmVhc29uaW5nJzogXCJhKSBDb2xkZXIgYW5kIHdldHRlcjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIGNsaW1hdGUgY29uZGl0aW9uLlxcblxcbmIpIE9jZWFuIHdhdGVyOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgdHlwZSBvZiB3YXRlci5cXG5cXG5jKSBHcmFwdG9saXRlczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBncmFwdG9saXRlcyBhcmUgZXh0aW5jdCBtYXJpbmUgYW5pbWFscyB0aGF0IGxpdmVkIGR1cmluZyB0aGUgUGFsZW96b2ljIGVyYS4gVGhleSBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgZm9ybWF0aW9uIG9mIGEgenlnb3RlLlxcblxcbmQpIFJhcGlkIGV4cGFuc2lvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIHByb2Nlc3MuXFxuXFxuZSkgQSBkZWx0YTogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBhIGRlbHRhIGlzIGEgbGFuZGZvcm0gdGhhdCBpcyBmb3JtZWQgYXQgdGhlIG1vdXRoIG9mIGEgcml2ZXIuIEl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIGZvcm1hdGlvbiBvZiBhIHp5Z290ZS5cXG5cXG5nKSBCYXJuYWNsZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgYmFybmFjbGVzIGFyZSBtYXJpbmUgYW5pbWFscyB0aGF0IHJlcHJvZHVjZSB0aHJvdWdoIGV4dGVybmFsIGZlcnRpbGl6YXRpb24uIFRoZXkgZG8gbm90IGhhdmUgYW4gYXJjaGVnb25pdW0gd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLlxcblxcbmgpIEFuIG9yZ2FuaXNtJ3MgYm9keTogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIGdlbmVyYWwgbG9jYXRpb24uXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgZikgYW4gYXJjaGVnb25pdW0sIHdoaWNoIGlzIGEgc3RydWN0dXJlIGZvdW5kIGluIHNvbWUgcGxhbnRzIGFuZCBhbGdhZSB3aGVyZSB0aGUgZWdnIGlzIGZlcnRpbGl6ZWQgYnkgdGhlIHNwZXJtLCBmb3JtaW5nIGEgenlnb3RlLlwifSJ9XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZycsICdyZWFzb25pbmcnOiAnYSkgTWlsZGV3OiBXaGlsZSBtaWxkZXcgY2FuIGNhdXNlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBpdCBpcyBub3Qga25vd24gdG8gY2F1c2UgaGFybSB0byB0aGUgZXllcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYikgTm9ybWFsIHdhdGVyOiBOb3JtYWwgd2F0ZXIgaXMgbm90IGhhcm1mdWwgdG8gdGhlIGV5ZXMuIEluIGZhY3QsIGl0IGlzIGVzc2VudGlhbCBmb3IgbWFpbnRhaW5pbmcgZXllIGhlYWx0aC4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYykgSGVycGVzOiBIZXJwZXMgaXMgYSB2aXJhbCBpbmZlY3Rpb24gdGhhdCBjYW4gY2F1c2UgY29sZCBzb3JlcyBvciBnZW5pdGFsIHNvcmVzLiBXaGlsZSBpdCBjYW4gY2F1c2UgZXllIGluZmVjdGlvbnMsIGl0IGlzIG5vdCBhIGRpcmVjdCBjYXVzZSBvZiBoYXJtIHRvIHRoZSBleWVzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5kKSBOb3JtYWwgYWlyOiBOb3JtYWwgYWlyIGlzIG5vdCBoYXJtZnVsIHRvIHRoZSBleWVzLiBJbiBmYWN0LCBpdCBpcyBlc3NlbnRpYWwgZm9yIGJyZWF0aGluZyBhbmQgbWFpbnRhaW5pbmcgb3ZlcmFsbCBoZWFsdGguIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmUpIENvYWw6IENvYWwgZHVzdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcyBpZiBpdCBnZXRzIGludG8gdGhlbS4gSG93ZXZlciwgY29hbCBpdHNlbGYgaXMgbm90IGEgZGlyZWN0IGNhdXNlIG9mIGhhcm0gdG8gdGhlIGV5ZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmYpIE1vbGQ6IE1vbGQgY2FuIGNhdXNlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBidXQgaXQgaXMgbm90IGtub3duIHRvIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmgpIENvbnRhY3Qgc29sdXRpb246IFdoaWxlIGNvbnRhY3Qgc29sdXRpb24gY2FuIGNhdXNlIGlycml0YXRpb24gb3IgaW5mZWN0aW9uIGlmIG5vdCB1c2VkIHByb3Blcmx5LCBpdCBpcyBub3QgYSBkaXJlY3QgY2F1c2Ugb2YgaGFybSB0byB0aGUgZXllcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZykgQWNpZDogQWNpZCBjYW4gY2F1c2Ugc2V2ZXJlIGhhcm0gdG8gdGhlIGV5ZXMsIGluY2x1ZGluZyBjaGVtaWNhbCBidXJucyBhbmQgcGVybWFuZW50IGRhbWFnZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBjb3JyZWN0LlxcblxcbkluIGNvbmNsdXNpb24sIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBnKSBhY2lkLCBhcyBpdCBpcyB0aGUgb25seSBvcHRpb24gdGhhdCBjYW4gY2F1c2UgZGlyZWN0IGhhcm0gdG8gdGhlIGV5ZXMuJ30ifV0sICIxOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZm9ybXMgaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWU/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhbWJvbyAoYikgRGVzaWNjYXRpb24gKGMpIEJ1cnJzIChkKSBFbG1zIChlKSBNb3NzIChmKSBDb2FsIChnKSBDYW5keSAoaCkgTWVhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZScsICdyZWFzb25pbmcnOiAnYSkgQmFtYm9vOiBCYW1ib28gaXMgYSB0eXBlIG9mIGdyYXNzIHRoYXQgZ3Jvd3MgaW4gdHJvcGljYWwgYW5kIHN1YnRyb3BpY2FsIHJlZ2lvbnMuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmIpIERlc2ljY2F0aW9uOiBEZXNpY2NhdGlvbiBpcyB0aGUgcHJvY2VzcyBvZiByZW1vdmluZyBtb2lzdHVyZSBmcm9tIHNvbWV0aGluZy4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYykgQnVycnM6IEJ1cnJzIGFyZSBzbWFsbCwgcHJpY2tseSBzZWVkcyB0aGF0IGF0dGFjaCB0aGVtc2VsdmVzIHRvIGNsb3RoaW5nIG9yIGFuaW1hbCBmdXIuIFRoZXkgZG8gbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmQpIEVsbXM6IEVsbXMgYXJlIGRlY2lkdW91cyB0cmVlcyB0aGF0IGdyb3cgaW4gdGVtcGVyYXRlIHJlZ2lvbnMuIFRoZXkgZG8gbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmYpIENvYWw6IENvYWwgaXMgYSBmb3NzaWwgZnVlbCB0aGF0IGZvcm1zIGZyb20gdGhlIHJlbWFpbnMgb2YgcGxhbnRzIHRoYXQgbGl2ZWQgbWlsbGlvbnMgb2YgeWVhcnMgYWdvLiBJdCBmb3JtcyB0aHJvdWdoIGEgcHJvY2VzcyBvZiBoZWF0IGFuZCBwcmVzc3VyZSwgYnV0IGl0IGlzIG5vdCBmb3JtZWQgZnJvbSBtb3NzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5nKSBDYW5keTogQ2FuZHkgaXMgYSBzd2VldCBmb29kIG1hZGUgZnJvbSBzdWdhciBvciBjaG9jb2xhdGUuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmgpIE1lYXQ6IE1lYXQgaXMgdGhlIGZsZXNoIG9mIGFuaW1hbHMgdGhhdCBpcyB1c2VkIGFzIGZvb2QuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmUpIE1vc3M6IE1vc3MgaXMgYSBzbWFsbCwgbm9uLXZhc2N1bGFyIHBsYW50IHRoYXQgZ3Jvd3MgaW4gZGFtcCBlbnZpcm9ubWVudHMuIEl0IGNhbiBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGNvcnJlY3QuJ30ifV19LCAiY29udmVyc2F0aW9uX0ZBUl9mYWxjb24iOiB7IjAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGlzIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IHVzZWQgZm9yIHByZWRpY3Rpbmc/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXMgKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2UgKGMpIFdoYXQgaXQncyBsaWtlIG91dHNpZGUgZWFjaCBkYXkgKGQpIDcwLTc1IGRlZ3JlZXMgZmFocmVuaGVpdCAoZSkgUmFwaWQgY2hhbmdlcyBvY2N1ciAoZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHMuIChnKSBTbm93LCBpY2UsIGFuZCByb2NrIChoKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIGNlbHNpdXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnLCAncmVhc29uaW5nJzogXCItIChhKSBTZWNvbmRzIGFuZCBtaW51dGVzOiBTYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCB0byBwcmVkaWN0IHNlY29uZHMgYW5kIG1pbnV0ZXMuIFRoaXMgaXMgdG9vIHNwZWNpZmljIGFuZCBub3Qgd2hhdCBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBnZW5lcmFsbHkgdXNlZCBmb3IuIFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIHVzZWQgZm9yIGJyb2FkZXIgdGltZSBzY2FsZXMsIHN1Y2ggYXMgZGF5cywgd2Vla3MsIG1vbnRocywgYW5kIHllYXJzLlxcbi0gKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2U6IFdoaWxlIHNvbWUgdHlwZXMgb2Ygc2F0ZWxsaXRlIGRhdGEgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBpbmZvcm1hdGlvbiB0byBzdHVkeSBzZWlzbWljaXR5LCBlYXJ0aHF1YWtlcyB0aGVtc2VsdmVzIGFyZSB0eXBpY2FsbHkgcHJlZGljdGVkIHVzaW5nIG90aGVyIG1ldGhvZHMsIGxpa2Ugc2Vpc21vZ3JhcGhzIGFuZCBnZW9sb2dpY2FsIHN0dWRpZXMuXFxuLSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0OiBUaGlzIGlzIGEgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2UsIGFuZCBzYXRlbGxpdGVzIGNhbm5vdCBwcmVkaWN0IGV4YWN0IHRlbXBlcmF0dXJlIHJhbmdlcyBsaWtlIHRoaXMuIFdoaWxlIHNhdGVsbGl0ZXMgZG8gcGxheSBhIHJvbGUgaW4gd2VhdGhlciBwcmVkaWN0aW9uLCB3aGljaCBpbmNsdWRlcyB0ZW1wZXJhdHVyZSwgcHJlZGljdGluZyBzcGVjaWZpYyByYW5nZXMgd2l0aGluIGEgZGF5IGlzbid0IGEgdHlwaWNhbCBhcHBsaWNhdGlvbi5cXG4tIChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyOiBXaGlsZSBzYXRlbGxpdGVzIGNhbiBkZXRlY3QgcmFwaWQgY2hhbmdlcyBpbiBtYW55IGFyZWFzLCBzdWNoIGFzIGNsb3VkIGNvdmVyLCB3ZWF0aGVyIGZyb250cywgb3Igdm9sY2FuaWMgYWN0aXZpdHksIHRoZSBwaHJhc2UgJ3JhcGlkIGNoYW5nZXMgb2NjdXInIGlzIHRvbyB2YWd1ZS4gSXQgY291bGQgYXBwbHkgdG8gdmFyaW91cyBwaGVub21lbmEsIHNvIGl0J3Mgbm90IHNwZWNpZmljYWxseSBhYm91dCBwcmVkaWN0aW9ucyByZWxhdGVkIHRvIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGFsb25lLlxcbi0gKGYpIERlYWQtZW5kcyBhbmQgZmFsc2Ugc3RhcnRzOiBUaGVzZSBkZXNjcmlwdGlvbnMgcmVsYXRlIHRvIGh1bWFuIGJlaGF2aW9yIGFuZCBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzc2VzLCBub3QgcHJlZGljdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHNhdGVsbGl0ZSB0ZWNobm9sb2d5Llxcbi0gKGcpIFNub3csIGljZSwgYW5kIHJvY2s6IFRoaXMgaXMgYSB2ZXJ5IHNwZWNpZmljIGNvbWJpbmF0aW9uIG9mIHdlYXRoZXIgYW5kIGdlb2xvZ2ljYWwgZmVhdHVyZXMuIFdoaWxlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBjZXJ0YWlubHkgYmUgdXNlZCB0byBtb25pdG9yIHNub3csIGljZSwgYW5kIHJvY2sgJiBzb2lsIGNoYW5nZXMgKGZvciBsYW5kc2xpZGUgZGV0ZWN0aW9uLCBmb3IgZXhhbXBsZSksIGl0J3Mgbm90IHNwZWNpZmljYWxseSBhYm91dCBwcmVkaWN0aW5nIHRoZXNlIHBoZW5vbWVuYSBpbiB0aGUgd2F5IHRoZSBxdWVzdGlvbiBzdWdnZXN0cy5cXG4tIChoKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIGNlbHNpdXM6IFNpbWlsYXIgdG8gKGQpLCB0aGlzIGlzIGEgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2UsIGFuZCBzYXRlbGxpdGVzIGFsb25lIGNhbm5vdCBwcmVkaWN0IHNwZWNpZmljIHRlbXBlcmF0dXJlIHJhbmdlcyBzbyBwcmVjaXNlbHkuXFxuXFxuVGhlIGNvcnJlY3QgYW5zd2VyLCAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSwgdG91Y2hlcyBvbiBhIGJyb2FkZXIgcmFuZ2Ugb2YgZW52aXJvbm1lbnRhbCBjb25kaXRpb25zLCB3aGljaCBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSBkYXRhIG9uLiBTYXRlbGxpdGVzIHRyYWNrIHdlYXRoZXIgcGF0dGVybnMsIGNsb3VkIGNvdmVyLCBzdW5saWdodCwgYW5kIG90aGVyIGluZGljYXRvcnMgdGhhdCBnaXZlIHVzIGFuIGlkZWEgb2YgdGhlIG91dHNpZGUgY29uZGl0aW9ucyBhbG1vc3QgZGFpbHkuIFxcblxcblRoaXMgYnJvYWQsIGRhaWx5IG92ZXJ2aWV3IG9mIGVudmlyb25tZW50YWwgY29uZGl0aW9ucyBpcyBzb21ldGhpbmcgdGhhdCBzYXRlbGxpdGVzIGNhbiBwcm92aWRlLCB1bmxpa2UgdGhlIG1vcmUgbmFycm93IGFuZCBzcGVjaWZpYyBwcmVkaWN0aW9ucyBtZW50aW9uZWQgaW4gdGhlIG90aGVyIG9wdGlvbnMuIEFsdGhvdWdoIGl0J3Mgbm90IGEgdGVjaG5pY2FsICdwcmVkaWN0aW9uJyBpbiB0aGUgc2Vuc2Ugb2YgZm9yZWNhc3RpbmcgZXhhY3QgZXZlbnRzIGFsbCB0aGUgdGltZSwgaXQgZG9lcyBwcm92aWRlIHVwLXRvLWRhdGUgYW5kIGN1cnJlbnQgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYW5kIGluZm9ybSBvdGhlciBwcmVkaWN0aW9ucyByZWxhdGVkIHRvIHdlYXRoZXIgYW5kIGVudmlyb25tZW50LlwifSJ9XSwgIjEiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgaXJyYWRpYXRpbmcgZm9vZCBkbz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgUmVsaWV2ZSBwYWluIChiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHMgKGMpIEltcHJvdmVzIGZvb2Qgc2FmZXR5IChkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhIChlKSBJbmNyZWFzZXMgZm9vZCB3YXN0ZSAoZikgQ2hlbWljYWwgY2hhbmdlcyAoZykgR2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkIChoKSBNYWpvciB0aHJlYXQgdG8gaGVhbHRoIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdjJywgJ3JlYXNvbmluZyc6IFwiKGEpIFJlbGlldmUgcGFpbjogSXJyYWRpYXRpbmcgZm9vZCBkb2VzIG5vdCBoYXZlIGFuIGVmZmVjdCBvbiBwYWluLiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBmb29kIGlycmFkaWF0aW9uIGlzIGEgcHJvY2VzcyBmb2N1c2VkIG9uIGVuc3VyaW5nIGZvb2Qgc2FmZXR5IGJ5IHJlZHVjaW5nIGhhcm1mdWwgYmFjdGVyaWEsIG5vdCBvbiBhbGxldmlhdGluZyBwYWluLlxcblxcbihiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHM6IFdoaWxlIHNvbWUgc3R1ZGllcyBzdWdnZXN0IGlycmFkaWF0aW9uIGNvdWxkIHNsaWdodGx5IGVuaGFuY2UgbnV0cmllbnQgbGV2ZWxzLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgYmVuZWZpdCBvZiBmb29kIGlycmFkaWF0aW9uLiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSB0aGUgbWFpbiBwdXJwb3NlIGlzIHRvIGVuc3VyZSBmb29kIHNhZmV0eSwgbm90IG5lY2Vzc2FyaWx5IHRvIGVuaGFuY2UgbnV0cmllbnRzLlxcblxcbihjKSBJbXByb3ZlcyBmb29kIHNhZmV0eTogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIEZvb2QgaXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIHdoZXJlIGZvb2QgaXMgZXhwb3NlZCB0byBhIHNwZWNpZmljIGxldmVsIG9mIGlvbml6aW5nIHJhZGlhdGlvbiB0byBraWxsIG9yIGluYWN0aXZhdGUgcGF0aG9nZW5zIChiYWN0ZXJpYSwgdmlydXNlcywgcGFyYXNpdGVzKSwgcmVkdWNpbmcgdGhlIHJpc2sgb2YgZm9vZGJvcm5lIGlsbG5lc3Nlcy4gVGhpcyBtYWtlcyBpdCBzYWZlciBmb3IgY29uc3VtZXJzLlxcblxcbihkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhOiBUaGlzIGlzIGluY29ycmVjdC4gRm9vZCBpcnJhZGlhdGlvbiBpcyBpbnRlbmRlZCB0byByZWR1Y2UgdGhlIHBvcHVsYXRpb24gb2YgaGFybWZ1bCBiYWN0ZXJpYSB0aGF0IGNhbiBjYXVzZSBmb29kYm9ybmUgaWxsbmVzc2VzLiBJdCBkb2VzIG5vdCBhbGxvdyBvciBwcm9tb3RlIGJhY3RlcmlhbCBncm93dGguXFxuXFxuKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlOiBUaGlzIGlzIGluY29ycmVjdC4gSW4gZmFjdCwgaXJyYWRpYXRpb24gY2FuIGhlbHAgcmVkdWNlIGZvb2Qgd2FzdGUgYnkgcHJlc2VydmluZyBmb29kIGZvciBsb25nZXIgcGVyaW9kcywgdGhlcmVieSBleHRlbmRpbmcgaXRzIHNoZWxmIGxpZmUuXFxuXFxuKGYpIENoZW1pY2FsIGNoYW5nZXM6IFRoaXMgbWF5IGJlIHNvbWV3aGF0IGNvcnJlY3QgaW4gdGVybXMgb2YgZ2VuZXJhbCBjaGVtaXN0cnksIGJ1dCBpdCBkb2Vzbid0IGZ1bGx5IGV4cGxhaW4gdGhlIHB1cnBvc2Ugb3IgdGhlIHJlc3VsdCBvZiBmb29kIGlycmFkaWF0aW9uLiBUaGUgdGVybSAnY2hlbWljYWwgY2hhbmdlcycgaXMgdG9vIGJyb2FkIGFuZCBkb2Vzbid0IGNhcHR1cmUgdGhlIHNwZWNpZmljIGVmZmVjdCBcdTIwMTQgcmVkdWNpbmcgdGhlIHBvcHVsYXRpb24gb2YgaGFybWZ1bCBwYXRob2dlbnMuXFxuXFxuKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZDogU2ltaWxhciB0byAoZiksIHdoaWxlIHRoaXMgbWlnaHQgb2NjdXIgYXMgYSBzaWRlIGVmZmVjdCBvZiBpcnJhZGlhdGlvbiAoc2luY2UgaXQgY2F1c2VzIGlvbml6YXRpb24pLCBpdCdzIG5vdCB3aGF0IGZvb2QgaXJyYWRpYXRpb24gaXMgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIG9yIHdoeSBpdCdzIGRvbmUuXFxuXFxuKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGg6IFRoaXMgaXMgaW5jb3JyZWN0LiBJcnJhZGlhdGluZyBmb29kIHRvIHNwZWNpZmljIGxldmVscyBpcyBjb25zaWRlcmVkIHNhZmUgYnkgbnVtZXJvdXMgaW50ZXJuYXRpb25hbCBoZWFsdGggb3JnYW5pemF0aW9ucy4gVGhpcyBvcHRpb24gbWlzcmVwcmVzZW50cyB0aGUgcHVycG9zZSBhbmQgc2FmZXR5IHN0YW5kYXJkcyBvZiBmb29kIGlycmFkaWF0aW9uLlxcblxcblRvIHN1bW1hcml6ZSwgdGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgaXJyYWRpYXRpbmcgZm9vZCBpcyB0byBpbXByb3ZlIGZvb2Qgc2FmZXR5IGJ5IHJlZHVjaW5nIGhhcm1mdWwgbWljcm9vcmdhbmlzbXMsIG1ha2luZyB0aGUgZm9vZCBsZXNzIGxpa2VseSB0byBjYXVzZSBmb29kYm9ybmUgaWxsbmVzc2VzLlwifSJ9XSwgIjIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRmliZXIgZm9sbGljbGVzIChiKSBFeGZvbGlhdGlvbiAoYykgUmVzaXN0YW5jZSAoZCkgTGF5ZXJzIG9mIGZhdCAoZSkgRXZhcG9yYXRpb24gKGYpIEEgY3V0aWNsZSAoZykgU2Vuc29yeSBuZXVyb25zIChoKSBGdXIgYW5kIGZhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnYScsICdyZWFzb25pbmcnOiBcIihhKSAqKkZpYmVyIGZvbGxpY2xlcyoqOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gTWFtbWFscyBoYXZlIGEgdW5pcXVlIHNraW4gc3RydWN0dXJlIHRoYXQgaW5jbHVkZXMgbXVsdGlwbGUgbGF5ZXJzLCBvbmUgb2Ygd2hpY2ggaW52b2x2ZXMgYSBuZXR3b3JrIG9mIGZpYmVyIGZvbGxpY2xlcy4gVGhlc2UgYXJlIHNtYWxsIHBvY2tldHMgd2l0aGluIHRoZSBza2luIHRoYXQgY29udGFpbiBoYWlyIGZvbGxpY2xlcywgc2ViYWNlb3VzIGdsYW5kcywgYW5kIHN3ZWF0IGdsYW5kcy4gVGhlIGxheWVyIG9mIGhhaXIgKHdoaWNoIGNvbnNpc3RzIG9mIGZpYmVycykgYW5kIHRoZSBhc3NvY2lhdGVkIHN0cnVjdHVyZXMgd29yayB0b2dldGhlciB0byBwcm90ZWN0IHRoZSBtYW1tYWwncyBza2luIGZyb20gdmFyaW91cyBlbnZpcm9ubWVudGFsIHRocmVhdHMgc3VjaCBhcyBtaWNyb29yZ2FuaXNtcywgcGh5c2ljYWwgZGFtYWdlLCBhbmQgZXhjZXNzaXZlIGhlYXQgb3IgY29sZC5cXG5cXG5Ob3cgbGV0J3MgZGlzbWlzcyB0aGUgaW5jb3JyZWN0IG9wdGlvbnM6XFxuXFxuKGIpICoqRXhmb2xpYXRpb24qKjogRXhmb2xpYXRpb24gcmVmZXJzIHRvIHRoZSBuYXR1cmFsIHByb2Nlc3Mgb2YgZGVhZCBza2luIGNlbGxzIGR5aW5nIGFuZCBzaGVkZGluZyBvZmYuIFdoaWxlIGl0IGNvbnRyaWJ1dGVzIHRvIGhlYWx0aCBhbmQgc2tpbiBhcHBlYXJhbmNlLCBpdCBkb2VzIG5vdCBkaXJlY3RseSBwcm90ZWN0IHRoZSBza2luLlxcblxcbihjKSAqKlJlc2lzdGFuY2UqKjogVGhpcyB0ZXJtIGlzIHRvbyBicm9hZCBhbmQgdmFndWUgdG8gYWNjdXJhdGVseSBkZXNjcmliZSB3aGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbi4gTWFtbWFsIHNraW4gcmVzaXN0YW5jZSBpcyBhIHJlc3VsdCBvZiBpdHMgc3RydWN0dXJlLCBub3QgdGhlIHRlcm0gaXRzZWxmLlxcblxcbihkKSAqKkxheWVycyBvZiBmYXQqKjogTWFtbWFscyBjZXJ0YWlubHkgaGF2ZSBsYXllcnMgb2YgZmF0LCBlc3BlY2lhbGx5IHVuZGVyIHRoZSBza2luIChzdWJjdXRhbmVvdXMgZmF0KS4gVGhpcyBsYXllciBhY3RzIGFzIGluc3VsYXRpb24gYWdhaW5zdCBjb2xkIHRlbXBlcmF0dXJlcyBhbmQgYXMgYW4gZW5lcmd5IHJlc2VydmUsIGJ1dCBpdCBpcyBub3Qgd2hhdCBwcmltYXJpbHkgcHJvdGVjdHMgc2tpbiBpbiB0aGUgd2F5IGhhaXIgZG9lcy5cXG5cXG4oZSkgKipFdmFwb3JhdGlvbioqOiBFdmFwb3JhdGlvbiBvZiBzd2VhdCBjYW4gY29vbCB0aGUgYm9keSBhbmQgaXMgYSByZWd1bGF0b3J5IG1lY2hhbmlzbSBmb3IgbWFtbWFscywgYnV0IGl0IGRvZXNuJ3Qgb2ZmZXIgcGh5c2ljYWwgcHJvdGVjdGlvbiB0byB0aGUgc2tpbi5cXG5cXG4oZikgKipBIGN1dGljbGUqKjogVGhlIGN1dGljbGUgcmVmZXJzIHRvIHRoZSBvdXRlciBwYXJ0IG9mIGEgcGxhbnQgY2VsbCB3YWxsIG9yLCBsb29zZWx5LCB0aGUgb3V0ZXIgcGFydCBvZiB0aGUgc2tpbiBhcyBpbiBodW1hbiBoYWlyIHdoaWNoIGlzIHdoYXQgcHJvdGVjdHMgdGhhdCBoYWlyIGZvbGxpY2xlLiBUaGlzIGRvZXNuJ3QgYWNjdXJhdGVseSBkZXNjcmliZSB0aGUgcHJvdGVjdGl2ZSBsYXllciBvZiBtYW1tYWwgc2tpbi5cXG5cXG4oZykgKipTZW5zb3J5IG5ldXJvbnMqKjogVGhlc2UgYXJlIHNwZWNpYWxpemVkIG5lcnZlIGNlbGxzIHRoYXQgZGV0ZWN0IGFuZCB0cmFuc21pdCBzZW5zb3J5IGluZm9ybWF0aW9uIHRvIHRoZSBjZW50cmFsIG5lcnZvdXMgc3lzdGVtLiBTZW5zb3J5IG5ldXJvbnMgcGxheSBhIHJvbGUgaW4gcGVyY2VpdmluZyB0aGUgZW52aXJvbm1lbnQgYnV0IGFyZSBub3QgcGh5c2ljYWwgYmFycmllcnMgdGhhdCBwcm90ZWN0IHRoZSBza2luLlxcblxcbihoKSAqKkZ1ciBhbmQgZmF0Kio6IFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiBjb3JyZWN0IGFuZCBpbmNvcnJlY3QgZWxlbWVudHMuIFdoaWxlIGZ1ciBkb2VzIHByb3ZpZGUgcHJvdGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBmb2xsaWNsZSBuZXR3b3JrLCAnZmF0JyBhbG9uZSBpcyBub3QgYSBwcm90ZWN0aXZlIHN0cnVjdHVyZSBpbiB0aGUgc2tpbiBpdHNlbGYuIEFkZGl0aW9uYWxseSwgc3BlY2lmeWluZyBmdXIgYW5kIGZhdCB0b2dldGhlciBtaXhlcyB0d28gZGlmZmVyZW50IGZ1bmN0aW9uYWxpdGllcyAoZnVyIGZvciBpbnN1bGF0aW9uIGFuZCBwcm90ZWN0aW9uLCBmYXQgZm9yIGluc3VsYXRpb24pIHJhdGhlciB0aGFuIG9uZSBzaW5ndWxhciBtZWNoYW5pc20gZGlyZWN0bHkgYWRkcmVzc2luZyBza2luIHByb3RlY3Rpb24uXFxuXFxuSW4gc3VtbWFyeSwgbWFtbWFscycgc2tpbiBpcyByb2J1c3RseSBwcm90ZWN0ZWQgcHJpbWFyaWx5IGJ5IHRoZSBuZXR3b3JrIG9mIGZpYmVyIGZvbGxpY2xlcywgd2hpY2ggaW5jb3Jwb3JhdGVzIGJvdGggdGhlIGhhaXIgc3RydWN0dXJlcyAoZnVyKSBhbmQgdGhlIGFzc29jaWF0ZWQgZ2xhbmRzIChsaWtlIHNlYmFjZW91cyBnbGFuZHMpIHRoYXQgbHVicmljYXRlIHRoZSBmdXIuIFRoaXMgcHJvdGVjdHMgdGhlIHVuZGVybHlpbmcgbGF5ZXJzIG9mIHRoZSBza2luIGFuZCBwZXJtaXRzIG1hbW1hbHMgdG8gdGhyaXZlIGluIHZhcmlvdXMgY2xpbWF0ZXMgYW5kIGVudmlyb25tZW50cy5cIn0ifV0sICIzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkbyBlYXJ0aHdvcm1zIGRvIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmY/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIERpZXMgKGIpIFJlZ3Jvd3MgaXQgKGMpIFJlcHJvZHVjZXMgKGQpIFNlZGltZW50IChlKSBSb290IGdyb3d0aCAoZikgTWlncmF0ZSAoZykgU3RvcHMgZ3Jvd2luZyAoaCkgUm9vdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2InLCAncmVhc29uaW5nJzogXCIxLiAqKk9wdGlvbiAoYSk6IERpZXMqKlxcbiAgIC0gRWFydGh3b3JtcyBhcmUgc2VnbWVudGVkIG9yZ2FuaXNtcywgd2l0aCBlYWNoIHNlZ21lbnQgY29udGFpbmluZyBib3RoIG5lcnZlIGNvcmRzIGFuZCBtdXNjbGUgZmliZXJzLiBXaGlsZSBpdCBpcyB0cnVlIHRoYXQgZWFjaCBzZWdtZW50IGNhbiBmdW5jdGlvbiBzZW1pLWluZGVwZW5kZW50bHksIHRoZSBzZXZlcmVkIHNlZ21lbnQgZG9lc24ndCBzaW1wbHkgZGllLiBUaGUgbG9zcyBvZiBhIHNlZ21lbnQgbWF5IGFmZmVjdCB0aGUgd29ybSdzIG1vYmlsaXR5IGFuZCBvdmVyYWxsIGhlYWx0aCwgYnV0IGl0IGRvZXNuJ3QgbGVhZCB0byBpbnN0YW50YW5lb3VzIGRlYXRoIG9mIHRoZSBzZWdtZW50IGl0c2VsZi5cXG5cXG4yLiAqKk9wdGlvbiAoYyk6IFJlcHJvZHVjZXMqKlxcbiAgIC0gUmVwcm9kdWN0aW9uIGluIGVhcnRod29ybXMgaXMgYSBzZXBhcmF0ZSBiaW9sb2dpY2FsIHByb2Nlc3MgdGhhdCBpbnZvbHZlcyB0aGUgZm9ybWF0aW9uIG9mIGVpdGhlciBlZ2dzIG9yIHdvcm1zIGZyb20gaGVybWFwaHJvZGl0aWMgcGFydG5lcnMuIFRoZSBicmVha2luZyBvZmYgb2YgYSBzZWdtZW50IGRvZXMgbm90IGluaXRpYXRlIHRoaXMgcmVwcm9kdWN0aXZlIHByb2Nlc3MuXFxuXFxuMy4gKipPcHRpb24gKGQpOiBTZWRpbWVudCoqXFxuICAgLSBTZWRpbWVudCByZWZlcnMgdG8gZmluZSwgbG9vc2UgcGFydGljbGVzIG9mIG9yZ2FuaWMgYW5kIGlub3JnYW5pYyBtYXRlcmlhbCBmb3VuZCBhdCB0aGUgYm90dG9tIG9mIGEgYm9keSBvZiB3YXRlci4gVGhlcmUgaXMgbm8gZmFjdHVhbCBjb25uZWN0aW9uIGJldHdlZW4gYSBzZWdtZW50ZWQgZWFydGh3b3JtIGJyZWFraW5nIG9mZiBhbmQgdGhlIGNyZWF0aW9uIG9mIHNlZGltZW50LlxcblxcbjQuICoqT3B0aW9uIChlKTogUm9vdCBncm93dGgqKlxcbiAgIC0gUm9vdCBncm93dGggaXMgYSBwcm9jZXNzIGluIHBsYW50cywgbm90IGVhcnRod29ybXMuIEVhcnRod29ybXMgZG8gbm90IGhhdmUgcm9vdHMgbm9yIGRvIHRoZXkgcGVyZm9ybSByb290IGdyb3d0aCBhcyBwYXJ0IG9mIHRoZWlyIGJpb2xvZ2ljYWwgZnVuY3Rpb25zLlxcblxcbjUuICoqT3B0aW9uIChmKTogTWlncmF0ZSoqXFxuICAgLSBNaWdyYXRpb24gcmVmZXJzIHRvIHRoZSByZWd1bGFyIHNlYXNvbmFsIG1vdmVtZW50cyBtYWRlIGJ5IGFuaW1hbHMgaW4gc2VhcmNoIG9mIGZvb2QsIGJyZWVkaW5nLCBvciBtaWxkZXIgY2xpbWF0aWMgY29uZGl0aW9ucy4gRWFydGh3b3JtcyBjYW4gbWlncmF0ZSwgYnV0IHRoZSBicmVha2luZyBvZmYgb2YgYSBzZWdtZW50ICh3aGljaCB0eXBpY2FsbHkgaGFwcGVucyBkdWUgdG8gZXh0ZXJuYWwgcHJlc3N1cmUpIGRvZXMgbm90IGluaXRpYXRlIGEgbWlncmF0aW9uIHByb2Nlc3MuXFxuXFxuNi4gKipPcHRpb24gKGcpOiBTdG9wcyBncm93aW5nKipcXG4gICAtIEdyb3d0aCBpbiBlYXJ0aHdvcm1zIGlzIGluZGVlZCBiaW9sb2dpY2FsLCBidXQgdGhlIGxvc3Mgb2YgYSBzZWdtZW50IGRvZXNuJ3QgY2F1c2UgYSBjZXNzYXRpb24gb2YgZ3Jvd3RoLiBTZWdtZW50cyBvZiBlYXJ0aHdvcm1zIGFyZSBjb25zdGFudGx5IGJlaW5nIGFkZGVkIGFuZCBzaGVkIGRlcGVuZGluZyBvbiB0aGUgd29ybSdzIGdyb3d0aCBhbmQgY29uZGl0aW9ucywgc28gdGhlIGxvc3Mgb2YgYSBzZWdtZW50IHdvdWxkbid0IHR5cGljYWxseSBoYWx0IGl0cyBvdmVyYWxsIGdyb3d0aC5cXG5cXG43LiAqKk9wdGlvbiAoaCk6IFJvb3RzKipcXG4gICAtIEFzIG1lbnRpb25lZCBlYXJsaWVyLCByb290cyBhcmUgYSBjaGFyYWN0ZXJpc3RpYyBvZiBwbGFudHMsIG5vdCBlYXJ0aHdvcm1zLiBFYXJ0aHdvcm0gc2VnbWVudHMgZG8gbm90IHR1cm4gaW50byByb290cy5cXG5cXG4qKlRoZSBjb3JyZWN0IGFuc3dlciBpcyAoYikgUmVncm93cyBpdC4qKlxcblxcbkVhcnRod29ybXMgY2FuIHJlZ2VuZXJhdGUgbG9zdCBzZWdtZW50cy4gVGhpcyByZWdlbmVyYXRpdmUgYWJpbGl0eSBpcyBvbmUgb2YgdGhlIHVuaXF1ZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlc2Ugc2VnbWVudGVkIHdvcm1zLiBXaGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLCB0eXBpY2FsbHkgZHVlIHRvIGV4dGVybmFsIGZvcmNlcywgdGhlIHNldmVyZWQgc2VnbWVudCBjYW4gcmVnZW5lcmF0ZSwgbGVhZGluZyB0byB0aGUgZ3Jvd3RoIG9mIGEgbmV3IG9uZSBpZiB0aGUgY29uZGl0aW9ucyBwZXJtaXQuXFxuXFxuUmVtZW1iZXIsIGVhY2ggaW5jb3JyZWN0IGFuc3dlciBpcyBub3QgY29ycmVjdCBiZWNhdXNlIHRoZXkgZWl0aGVyIGRvbid0IGFkZHJlc3MgdGhlIGJpb2xvZ2ljYWwgcHJvY2VzcyBhdCBoYW5kIG9yIGRvbid0IGFsaWduIHdpdGgga25vd24gYmlvbG9naWNhbCBmdW5jdGlvbnMgYW5kIGNoYXJhY3RlcmlzdGljcyBvZiBlYXJ0aHdvcm1zLlwifSJ9XSwgIjQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBMaWdodG5pbmcgY2FuIGJlIGJhZCBmb3Igd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVGhlIGVudmlyb25tZW50IChiKSBSYWluc3Rvcm1zIChjKSBEZXN0cnVjdGlvbiAoZCkgVmlzaWJpbGl0eSAoZSkgVGh1bmRlciAoZikgVGhlIHN1biAoZykgVGhlIHdlYXRoZXIuIChoKSBUcmFuc3BvcnRhdGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnYScsICdyZWFzb25pbmcnOiBcIihhKSBUaGUgZW52aXJvbm1lbnQ6IExpZ2h0bmluZyBjYW4gcmVsZWFzZSBsYXJnZSBhbW91bnRzIG9mIGVuZXJneSBhbmQgaGVhdCwgd2hpY2ggY2FuIGRpc3J1cHQgbmF0dXJhbCBlY29zeXN0ZW1zLCBjYXVzZSBmb3Jlc3QgZmlyZXMsIGFuZCBhZmZlY3QgYWlyIHF1YWxpdHksIHRodXMgaGFybWluZyB0aGUgZW52aXJvbm1lbnQuXFxuXFxuKGIpIFJhaW5zdG9ybXM6IExpZ2h0bmluZyBkb2VzIG5vdCBkaXJlY3RseSBoYXJtIHJhaW5zdG9ybXMuIEluIGZhY3QsIGl0J3MgYSBwYXJ0IG9mIHRoZSBuYXR1cmFsIHN0b3JtIHByb2Nlc3MuIExpZ2h0bmluZyBpcyBvZnRlbiBhIHJlc3VsdCBvZiBzZXZlcmUgdGh1bmRlcnN0b3Jtcywgbm90IGEgZmFjdG9yIHRoYXQgY2F1c2VzIHRoZW0gdG8gYmUgaGFybWZ1bCB0aGVtc2VsdmVzLlxcblxcbihjKSBEZXN0cnVjdGlvbjogVGhpcyBvcHRpb24gaXMgbGVzcyBzcGVjaWZpYyB0aGFuIChhKSBvciAoYiksIGJ1dCBpbiBnZW5lcmFsIHRlcm1zLCBpdCdzIHRydWUuIEhvd2V2ZXIsICdkZXN0cnVjdGlvbicgaXMgdG9vIHZhZ3VlIGFuZCBkb2Vzbid0IGV4cGxhaW4gdGhlIGhhcm0gY2F1c2VkIGJ5IGxpZ2h0bmluZyBhY3Rpdml0eS5cXG5cXG4oZCkgVmlzaWJpbGl0eTogV2hpbGUgbGlnaHRuaW5nIGNhbiB0ZW1wb3JhcmlseSByZWR1Y2UgdmlzaWJpbGl0eSBkdXJpbmcgc3Rvcm1zLCBpdCBkb2VzIG5vdCBpbmhlcmVudGx5ICdicmluZycgb3IgJ2NhdXNlJyBwb29yIHZpc2liaWxpdHkuIFZpc2liaWxpdHkgaXNzdWVzIGFyZSBnZW5lcmFsbHkgZHVlIHRvIHJhaW4sIGZvZywgb3IgdGhlIHN0b3JtIGNsb3VkcyB0aGVtc2VsdmVzLCBub3QgdGhlIGxpZ2h0bmluZy5cXG5cXG4oZSkgVGh1bmRlcjogVGhpcyBpcyBub3QgYSBoYXJtIGJ1dCByYXRoZXIgYW5vdGhlciBwaGVub21lbm9uIGNyZWF0ZWQgYWxvbmdzaWRlIGxpZ2h0bmluZzsgdGhleSBhcmUgYm90aCBtYW5pZmVzdGF0aW9ucyBvZiBlbGVjdHJpY2FsIGRpc2NoYXJnZXMgaW4gdGh1bmRlcnN0b3Jtcy5cXG5cXG4oZikgVGhlIHN1bjogTGlnaHRuaW5nIGhhcyBubyBlZmZlY3Qgb24gdGhlIHN1biwgYXMgdGhleSBhcmUgZGlzdGFudCBmcm9tIGVhY2ggb3RoZXIgYW5kIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiBlYWNoIG90aGVyLlxcblxcbihnKSBUaGUgd2VhdGhlcjogV2hpbGUgbGlnaHRuaW5nIGlzIGEgcGFydCBvZiBzZXZlcmUgd2VhdGhlciwgaXQgZG9lcyBub3QgY2F1c2Ugd2VhdGhlciBjaGFuZ2VzIGluaGVyZW50bHkuIFdlYXRoZXIgaXMgYSBjb21wbGV4IHN5c3RlbSBpbmZsdWVuY2VkIGJ5IG1hbnkgZmFjdG9ycywgYW5kIGxpZ2h0bmluZyBpcyBvbmx5IG9uZSBvZiBtYW55IGluZGljYXRvcnMgb2Ygc2V2ZXJlIHdlYXRoZXIuXFxuXFxuKGgpIFRyYW5zcG9ydGF0aW9uOiBUaGlzIGlzIGFub3RoZXIgcG90ZW50aWFsIGVmZmVjdCwgYnV0IGl0IGlzIGluZGlyZWN0LiBMaWdodG5pbmcgc3RyaWtlcyBjYW4gY2F1c2UgZGFtYWdlIHRvIGluZnJhc3RydWN0dXJlIGxpa2UgcG93ZXIgbGluZXMsIHJvYWRzLCByYWlscm9hZHMsIGV0Yy4sIGluZGlyZWN0bHkgYWZmZWN0aW5nIHRyYW5zcG9ydGF0aW9uIHN5c3RlbXMuIEhvd2V2ZXIsIHRoaXMgc3RhdGVtZW50IGlzbid0IGFzIGRpcmVjdCBvciBjbGVhciBhcyBpdCBjb3VsZCBiZS5cXG5cXG5BZnRlciBnb2luZyB0aHJvdWdoIGVhY2ggYW5zd2VyIGNob2ljZSwgaXQncyBjbGVhciB0aGF0IChhKSAnVGhlIGVudmlyb25tZW50JyBpcyB0aGUgbW9zdCBkaXJlY3QgYW5kIGNvbXByZWhlbnNpdmUgYW5zd2VyIHRvIHdoeSBsaWdodG5pbmcgY2FuIGJlIGJhZCB3aXRob3V0IGZhbGxpbmcgaW50byBicm9hZCBvciBpbmRpcmVjdCBleHBsYW5hdGlvbnMuXCJ9In1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZCcsICdyZWFzb25pbmcnOiBcIihhKSBTb3VsczogRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGluIGJpb2xvZ3kgdHlwaWNhbGx5IHJlZmVycyB0byBwaHlzaWNhbCBvciBtb2xlY3VsYXIgcmVtYWlucywgbm90IGFic3RyYWN0IGNvbmNlcHRzIGxpa2Ugc291bHMuIEJpb2xvZ3kgZGVhbHMgd2l0aCBwaHlzaWNhbCwgdGFuZ2libGUgYXNwZWN0cyBvZiBsaWZlIGZvcm1zLlxcblxcbihiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzOiBUaGlzIG9wdGlvbiBpcyB0b28gc3BlY2lmaWMuIFdoaWxlIGV2aWRlbmNlIGNvdWxkIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiBhbmltYWxzIHdpdGggYmFja2JvbmVzLCBpdCBkb2Vzbid0IGFjY291bnQgZm9yIG90aGVyIGZvcm1zIG9mIGxpZmUgdGhhdCBtaWdodCBiZSBwcmVzZW50IGluIHRoZSBmb3NzaWwgcmVjb3JkLlxcblxcbihjKSBPcmdhbmlzbXM6IFRoaXMgaXMgYSBzdGVwIHRvd2FyZHMgdGhlIGNvcnJlY3QgYW5zd2VyLCBidXQgaXQncyBub3QgdGhlIG1vc3Qgc3BlY2lmaWMuIEZvc3NpbHMgb3IgY2hlbWljYWwgbWFya2VycyBjYW4gaW5kZWVkIHNob3cgd2hlcmUgdmFyaW91cyBvcmdhbmlzbXMgb25jZSBsaXZlZCwgYnV0IG5vdCBhbGwgcGFzdCBsaWZlIGlzIHJlcHJlc2VudGVkIGJ5IGRpcmVjdCBmb3NzaWwgZXZpZGVuY2UuXFxuXFxuKGYpIERlZm9yZXN0YXRpb246IFRoaXMgcmVmZXJzIHRvIGEgY3VycmVudCBlbnZpcm9ubWVudGFsIHByb2Nlc3MsIG5vdCBwYXN0IGxpZmUuIEl0IGluZGljYXRlcyBjaGFuZ2VzIGluIGVjb3N5c3RlbXMgd2l0aGluIHRoZSByZWNlbnQgcGFzdCBidXQgZG9lc24ndCBzcGVjaWZpY2FsbHkgYWRkcmVzcyB3aGljaCBsaWZlIGZvcm1zIGV4aXN0ZWQgdGhlcmUgaW4gdGhlIHBhc3QuXFxuXFxuKGcpIFJlaW5jYXJuYXRpb246IExpa2UgJ3NvdWxzLCcgdGhpcyBpcyBhIHNwaXJpdHVhbCBvciBtZXRhcGh5c2ljYWwgY29uY2VwdCwgbm90IGdyb3VuZGVkIGluIGJpb2xvZ2ljYWwgZXZpZGVuY2UuIEJpb2xvZ3kgY29uY2VybnMgaXRzZWxmIHdpdGggb2JzZXJ2YWJsZSBhbmQgc2NpZW50aWZpY2FsbHkgdGVzdGFibGUgcGhlbm9tZW5hLlxcblxcbihoKSBJbXBvcnRhbnQgaGFiaXRhdHM6IFRoaXMgaXMgdG9vIHZhZ3VlLiBXaGlsZSBpdCBjb3VsZCBiZSB0aWVkIHRvIHRoZSB0eXBlcyBvZiBvcmdhbmlzbXMgdGhhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZSwgdGhlIHBocmFzZSBjb3VsZCBpbXBseSBhIHZhcmlldHkgb2YgdW5yZWxhdGVkIGNvbnRleHRzLCBhbmQgZG9lc24ndCBkaXJlY3RseSBzdGF0ZSB3aGF0IHR5cGVzIG9mIGxpZmUgZXhpc3RlZC5cXG5cXG5UaGVyZWZvcmUsIHRoZSBtb3N0IGFjY3VyYXRlIGFuZCBjb21wcmVoZW5zaXZlIGFuc3dlciBpcyAoZCkgUGxhbnQgb3IgYW5pbWFsLiBFdmlkZW5jZSBpbiB0aGUgZm9ybSBvZiBmb3NzaWxzLCB0cmFjZSBmb3NzaWxzLCBhbmQgaW1wcmludHMgY2FuIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiB2YXJpb3VzIGxpZmUgZm9ybXMsIGluY2x1ZGluZyBib3RoIHBsYW50cyBhbmQgYW5pbWFscywgaW4gYSBwYXJ0aWN1bGFyIHBsYWNlIHdoZXJlIHRoZXkgb25jZSBsaXZlZC4gVGhpcyBjb3ZlcnMgYSBicm9hZCByYW5nZSBvZiBwYXN0IGxpZmUgaW4gYSBzY2llbnRpZmljYWxseSBncm91bmRlZCBtYW5uZXIsIGFja25vd2xlZGdpbmcgY29udHJpYnV0aW9ucyBmcm9tIGJvdGggcGxhbnQgYW5kIGFuaW1hbCBraW5nZG9tcy5cIn0ifV0sICI2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogSG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24sIG9yIGluaGVyaXRlZCwgaXMgZm91bmQgaW4gaW5mb3JtYXRpb24gaW4gYW4gb3JnYW5pc20ncyB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBTcGVjaWVzIChiKSBNZXNzZW5nZXJzIChjKSBIYWlyIGZvbGxpY2xlcyAoZCkgQ3ljbGVzIChlKSBTa2luIGNlbGxzIChmKSBFbmRvY3JpbmUgc3lzdGVtIChnKSBDaHJvbW9zb21lcyAoaCkgUHJvdGVpbnMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2cnLCAncmVhc29uaW5nJzogXCJUaGUgY29ycmVjdCBhbnN3ZXIgaXMgKGcpIENocm9tb3NvbWVzLlxcblxcbkxldCdzIGV4YW1pbmUgd2h5IHRoZSBvdGhlciBvcHRpb25zIGFyZSBpbmNvcnJlY3Q6XFxuXFxuKGEpIFNwZWNpZXM6IFNwZWNpZXMgaXMgYSBjbGFzc2lmaWNhdGlvbiBzeXN0ZW0gdXNlZCBieSBiaW9sb2dpc3RzIHRvIGdyb3VwIHRvZ2V0aGVyIHNpbWlsYXIgb3JnYW5pc21zLiBXaGlsZSBzcGVjaWVzIGFyZSByZWxhdGVkIGluIHRlcm1zIG9mIHRoZWlyIGdlbmV0aWNzLCB0aGV5IGRvIG5vdCBjb250YWluIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCBhbiBpbmRpdmlkdWFsJ3MgaW5oZXJpdGVkIHRyYWl0cy5cXG5cXG4oYikgTWVzc2VuZ2VyczogVGhpcyBvcHRpb24gY291bGQgcmVmZXIgdG8gc2lnbmFscyBvciBjb21tdW5pY2F0aW9uIHN5c3RlbXMgd2l0aGluIGFuIG9yZ2FuaXNtLCBidXQgaXQgZG9lcyBub3QgdHlwaWNhbGx5IHJlbGF0ZSB0byB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiByZXNwb25zaWJsZSBmb3IgaW5oZXJpdGVkIHRyYWl0cy4gXFxuXFxuKGMpIEhhaXIgZm9sbGljbGVzOiBIYWlyIGZvbGxpY2xlcyBhcmUgc3RydWN0dXJlcyBpbiB0aGUgc2tpbiB0aGF0IHByb2R1Y2UgaGFpci4gVGhleSBkb24ndCBjb250YWluIGdlbmV0aWMgaW5mb3JtYXRpb24gYWJvdXQgdHJhaXRzOyByYXRoZXIsIHRoZXkncmUgYSByZXN1bHQgb2YgZ2VuZXRpYyBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgYWxyZWFkeSBlbmNvZGVkIGluIHRoZSBjaHJvbW9zb21lcy5cXG5cXG4oZCkgQ3ljbGVzOiBCaW9sb2dpY2FsIGN5Y2xlcywgc3VjaCBhcyBjaXJjYWRpYW4gcmh5dGhtcywgYXJlIHJlZ3VsYXIgcGF0dGVybnMgb2YgYmVoYXZpb3Igb3IgcGh5c2lvbG9naWNhbCBjaGFuZ2UuIFRoZXkgYXJlIHJlZ3VsYXRlZCBieSBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgc3RpbXVsaSwgYnV0IHRoZXkgZG9uJ3Qgc3RvcmUgZ2VuZXRpYyBpbmZvcm1hdGlvbi5cXG5cXG4oZSkgU2tpbiBjZWxsczogU2tpbiBjZWxscyBhcmUgc29tYXRpYyBjZWxscyB0aGF0IGNvbnN0aXR1dGUgdGhlIG91dGVyIGxheWVyIG9mIHRoZSBza2luLiBUaGV5IGNvbnRhaW4gZ2VuZXRpYyBtYXRlcmlhbCwgYnV0IHRoZXkgZG8gbm90IGhvbGQgdGhlIHNwZWNpZmljIGluc3RydWN0aW9ucyBmb3IgaG93IHRyYWl0cyB3aWxsIGJlIGV4cHJlc3NlZCAtIHRoYXQgaW5mb3JtYXRpb24gaXMgZm91bmQgaW4gdGhlIEROQSwgbm90YWJseSB3aXRoaW4gY2hyb21vc29tZXMuXFxuXFxuKGYpIEVuZG9jcmluZSBzeXN0ZW06IFRoZSBlbmRvY3JpbmUgc3lzdGVtIGlzIGEgZ3JvdXAgb2YgZ2xhbmRzIHRoYXQgc2VjcmV0ZSBob3Jtb25lcywgd2hpY2ggcmVndWxhdGUgdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIGJvZHkuIEl0IGNvbnRyb2xzIG1hbnkgYXNwZWN0cyBvZiBvdXIgYm9keSBmdW5jdGlvbnMgYnV0IGRvZXNuJ3Qgc3RvcmUgZ2VuZXRpYyBpbmZvcm1hdGlvbi5cXG5cXG4oaCkgUHJvdGVpbnM6IFByb3RlaW5zIGFyZSBlc3NlbnRpYWwgbW9sZWN1bGVzIHRoYXQgcGxheSBtYW55IHJvbGVzIGluIHRoZSBib2R5LCBpbmNsdWRpbmcgYWN0aW5nIGFzIGVuenltZXMsIHN0cnVjdHVyYWwgY29tcG9uZW50cywgYW5kIHNpZ25hbGluZyBtb2xlY3VsZXMuIFRoZXkncmUgY3JlYXRlZCBiYXNlZCBvbiBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgRE5BIGJ1dCBkbyBub3QgY29udGFpbiB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiBpdHNlbGYuXFxuXFxuSW4gc3VtbWFyeSwgY2hyb21vc29tZXMgYXJlIHRoZSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgY2VsbCBudWNsZXVzIHRoYXQgY2FycnkgdGhlIGdlbmV0aWMgbWF0ZXJpYWwgKEROQSksIHdoaWNoIGluY2x1ZGVzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbmlzbSdzIHRyYWl0cy4gVGhlIG90aGVyIG9wdGlvbnMgYXJlIGluY29ycmVjdCBiZWNhdXNlIHRoZXkgcmVmZXIgdG8gZW50aXRpZXMsIHByb2Nlc3Nlcywgb3IgbWVjaGFuaXNtcyB0aGF0IGRvIG5vdCBzdG9yZSBvciBkaXJlY3RseSBjb250YWluIHRoZSBnZW5ldGljIGluZm9ybWF0aW9uIHRoYXQgZGV0ZXJtaW5lcyBpbmhlcml0ZWQgdHJhaXRzLlwifSJ9XSwgIjciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGFyZSB0aGUgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBHcmFzcyAoYikgQW5pbWFscyAoYykgQXBwbGVzIChkKSBQb3RhdG9lcyAoZSkgVHJlZXMgKGYpIFBsYW50cyAoZykgRnVuZ2kgKGgpIEZpZWxkcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZicsICdyZWFzb25pbmcnOiBcIjEuICoqR3Jhc3MgKGEpKiogLSBXaGlsZSBncmFzcyBpcyBpbmRlZWQgYSBwcm9kdWNlciwgb3IgYXV0b3Ryb3BoaWMgb3JnYW5pc20sIGluIHRoZSBiaW9sb2dpY2FsIHNlbnNlLCBpdCBpc24ndCB0eXBpY2FsbHkgZW1waGFzaXplZCBhcyBhIG1ham9yIHByb2R1Y2VyIGluIHRoZSBjb250ZXh0IG9mIHRoZSBxdWVzdGlvbiBiZWNhdXNlIGl0IGlzIG1vcmUgY29tbW9uIGFuZCBsZXNzIHZhcmllZCB0aGFuIG90aGVyIHBsYW50IGZvcm1zLlxcblxcbjIuICoqQW5pbWFscyAoYikqKiAtIEFuaW1hbHMgYXJlIGNvbnN1bWVycyAoaGV0ZXJvdHJvcGhzKSB0aGF0IGNhbm5vdCBwcm9kdWNlIHRoZWlyIG93biBmb29kLCBzbyB0aGV5IGFyZSBub3QgcHJvZHVjZXJzLlxcblxcbjMuICoqQXBwbGVzIChjKSoqIC0gTGlrZSBncmFzcywgYXBwbGVzIGFyZSBhIHR5cGUgb2YgcGxhbnQgcHJvZHVjdCwgYnV0IHRoZXkgYXJlIGRlcml2ZWQgZnJvbSBwcm9kdWNlcnMgKHRyZWVzIGJlYXJpbmcgYXBwbGVzKSwgbm90IHByb2R1Y2VycyB0aGVtc2VsdmVzLlxcblxcbjQuICoqUG90YXRvZXMgKGQpKiogLSBQb3RhdG9lcyBhcmUgYW4gYWdyaWN1bHR1cmFsIGNyb3AsIGFuZCBsaWtlIGFwcGxlcywgdGhleSBhcmUgZGVyaXZlZCBmcm9tIHBsYW50cy4gVGhleSdyZSBub3QgcHJvZHVjZXJzLCBidXQgdGhlIHByb2R1Y2VycyBhcmUgdGhlIHBvdGF0byBwbGFudHMuXFxuXFxuNS4gKipGaWVsZHMgKGgpKiogLSBBIGZpZWxkIHJlZmVycyB0byBhbiBhZ3JpY3VsdHVyYWwgYXJlYSB3aGVyZSBjcm9wcyBhcmUgZ3Jvd24uIEl0J3Mgbm90IGEgcHJvZHVjZXIgaXRzZWxmLCBidXQgY2FuIGNvbnRhaW4gcHJvZHVjZXJzIHN1Y2ggYXMgZ3JhaW5zLCB2ZWdldGFibGVzLCBvciBvdGhlciBjcm9wcy5cXG5cXG42LiAqKlBsYW50cyAoZikqKiAtIFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBQbGFudHMsIGluIGdlbmVyYWwsIGFyZSBwcm9kdWNlcnMgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiBwaG90b3N5bnRoZXNpcywgd2hpY2ggY29udmVydHMgbGlnaHQgZW5lcmd5IGludG8gY2hlbWljYWwgZW5lcmd5IHRoYXQgY2FuIGJlIGxhdGVyIHJlbGVhc2VkIHRvIGZ1ZWwgdGhlIG9yZ2FuaXNtJ3MgYWN0aXZpdGllcy5cXG5cXG43LiAqKkZ1bmdpIChnKSoqIC0gQWx0aG91Z2ggZnVuZ2kgYXJlIGF1dG90cm9waGljLCB0aGUgcXVlc3Rpb24gc3BlY2lmaWNhbGx5IHJlZmVycyB0byAndGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24nIGFzIG1ham9yIGZhY3RvcnMuIFdoaWxlIGZ1bmdpIGNhbiBpbmRlZWQgcGhvdG9zeW50aGVzaXplIChsaWtlIGFsZ2FlKSwgdGhleSBhcmUgb2Z0ZW4gY29uc2lkZXJlZCBkZWNvbXBvc2VycywgbW9yZSByZWxldmFudCB0byB0ZW1wZXJhdHVyZSBhbmQgd2FzdGUgY3ljbGluZyBpbiBhbiBlY29zeXN0ZW0gcmF0aGVyIHRoYW4gcHJpbWFyeSBwcm9kdWNlcnMuXFxuXFxuSW4gY29uY2x1c2lvbiwgdGhlIHByaW1hcnkgcHJvZHVjZXJzIGFyZSAqKnBsYW50cyoqIGJlY2F1c2UgdGhleSBhcmUgdGhlIG1haW4gZW50aXRpZXMgY2FwYWJsZSBvZiBjb252ZXJ0aW5nIHN1bmxpZ2h0LCBjYXJib24gZGlveGlkZSwgYW5kIHdhdGVyIGludG8gY29tcGxleCBzdWdhcnMgdGhyb3VnaCBwaG90b3N5bnRoZXNpcywgdXNpbmcgdGVtcGVyYXR1cmUgYW5kIGxpZ2h0IChhIGNvbXBvbmVudCBvZiBwcmVjaXBpdGF0aW9uIGVmZmVjdHMgdmlhIGV2YXBvdHJhbnNwaXJhdGlvbikgYXMgcHJpbWFyeSBmYWN0b3JzLiBBbmltYWxzLCBmdW5naSwgYXBwbGVzLCBwb3RhdG9lcywgYW5kIGZpZWxkcyBkbyBub3QgZGlyZWN0bHkgZW5nYWdlIGluIHRoaXMgcHJvY2VzcyBpbiB0aGUgc2FtZSB3YXkgYXMgcGxhbnRzLCBhbmQgdGh1cywgYXJlIG5vdCBwcmltYXJ5IHByb2R1Y2Vycy5cIn0ifV0sICI4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgY2hhbmdlIHZlZ2V0YXRpb24gaW50bz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2NhcmNlIHJlc291cmNlcyAoYikgSGFybWZ1bCBzdWJzdGFuY2VzIChjKSBTY2FycyAoZCkgRm9zc2lsIGZ1ZWxzIChlKSBTZWRpbWVudCAoZikgU29tZXRoaW5nIHRvIG1vdmUgKGcpIE1hZ2ljIChoKSBQaWNuaWNzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdkJywgJ3JlYXNvbmluZyc6IFwiYSkgU2NhcmNlIHJlc291cmNlcyAtIFRoaXMgb3B0aW9uIHN1Z2dlc3RzIHRoYXQgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBtYWtlcyB2ZWdldGF0aW9uIHNjYXJjZSByZXNvdXJjZXMuIFRoaXMgaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBzb2lsIGFuZCBtdWQgYmVpbmcgYSBidXJpYWwgbG9jYXRpb24gZG9lcyBub3QgaW1wbHkgdGhlIHZlZ2V0YXRpb24gaXQgY29udGFpbnMgYmVjb21lcyBzY2FyY2UuIFRoZSB2ZWdldGF0aW9uIGl0c2VsZiB3b3VsZG4ndCBiZWNvbWUgc2NhcmNlIGR1ZSB0byBidXJpYWw7IHJhdGhlciwgaXQgbWF5IGNvbnRyaWJ1dGUgdG8gdGhlIGZvcm1hdGlvbiBvZiBmb3NzaWwgZnVlbHMuXFxuXFxuYikgSGFybWZ1bCBzdWJzdGFuY2VzIC0gVmVnZXRhdGlvbiBidXJpZWQgaW4gc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gaW50byBoYXJtZnVsIHN1YnN0YW5jZXMuIFdoaWxlIGl0J3MgdHJ1ZSB0aGF0IG92ZXIgZ2VvbG9naWNhbCB0aW1lc2NhbGVzLCBkZWNvbXBvc2l0aW9uIHByb2Nlc3NlcyBjYW4gcHJvZHVjZSB2YXJpb3VzIHN1YnN0YW5jZXMsIHRoZSBpbW1lZGlhdGUgcmVzdWx0IG9mIGJ1cmlhbCBpc24ndCB0aGUgY3JlYXRpb24gb2YgaGFybWZ1bCBzdWJzdGFuY2VzLiBUaGUgY29ycmVjdCBhbnN3ZXIgaW52b2x2ZXMgYSBwcm9jZXNzIHRoYXQgbGVhZHMgdG8gYSBtb3JlIGNvbXBsZXggZm9zc2lsIGZ1ZWwsIG5vdCBqdXN0IGhhcm1mdWwgc3Vic3RhbmNlcy5cXG5cXG5jKSBTY2FycyAtIFRoaXMgYW5zd2VyIGNob2ljZSBzdWdnZXN0cyB0aGUgdmVnZXRhdGlvbiB0cmFuc2Zvcm1zIGludG8gc2NhcnMuIFNjYXJzIGFyZSBpbmp1cmllcyBvciB3b3VuZHMgb24gYW4gb3JnYW5pc20sIGFuZCB0aGVyZSBpcyBubyBiaW9sb2dpY2FsIG9yIGdlb2xvZ2ljYWwgcHJvY2VzcyBieSB3aGljaCBidXJpYWwgdW5kZXIgc29pbCBhbmQgbXVkIHdvdWxkIHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNjYXJzLlxcblxcbmYpIFNvbWV0aGluZyB0byBtb3ZlIC0gVGhpcyBhbnN3ZXIgaW1wbGllcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIGJ1cmlhbCBwcm9jZXNzIGlzIHNvbWV0aGluZyB1c2VkIGZvciBtb3ZlbWVudC4gSG93ZXZlciwgZm9zc2lsIGZ1ZWxzLCBmb3JtZWQgb3ZlciBtaWxsaW9ucyBvZiB5ZWFycywgYXJlbid0IHVzZWQgZGlyZWN0bHkgZm9yIG1vdmVtZW50IGJ1dCBhcmUgc291cmNlcyBvZiBlbmVyZ3kgd2hlbiBjb21idXN0ZWQuIFRoZXkgZG9uJ3QgYmVjb21lJ3NvbWV0aGluZyB0byBtb3ZlJyBpbiBhbnkgaW1tZWRpYXRlIG9yIGRpcmVjdCBzZW5zZS5cXG5cXG5nKSBNYWdpYyAtIFRoaXMgb3B0aW9uIGlzIG5vdCBhIHNjaWVudGlmaWMgb3IgZmFjdHVhbCBhbnN3ZXIuIFRoZSBwcm9jZXNzIG9mIGhvdyB2ZWdldGF0aW9uIHRyYW5zZm9ybXMgaW50byBmb3NzaWwgZnVlbHMgaXMgYSBuYXR1cmFsIGdlb2xvZ2ljYWwgcHJvY2Vzcywgbm90IGEgbWFnaWNhbCBvbmUuXFxuXFxuaCkgUGljbmljcyAtIFRoaXMgb3B0aW9uIGlzIGNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSBiaW9sb2dpY2FsIG9yIGdlb2xvZ2ljYWwgcHJvY2VzcyBkZXNjcmliZWQgaW4gdGhlIHF1ZXN0aW9uLiBQaWNuaWMgaXRlbXMgYXJlIGh1bWFuLW1hZGUgYW5kIGRvbid0IHJlc3VsdCBmcm9tIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiBkZWFkIHBsYW50IG1hdGVyaWFsLlxcblxcblNvIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZCkgRm9zc2lsIGZ1ZWxzLCBiZWNhdXNlIHRoaXMgaXMgdGhlIG5hdHVyYWwgcHJvY2VzcyBieSB3aGljaCBkZWFkIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGZvc3NpbCBmdWVsIGRlcG9zaXRzLiBGb3NzaWwgZnVlbHMgZm9ybSBmcm9tIHRoZSByZW1haW5zIG9mIGRlYWQgcGxhbnRzIGFuZCBhbmltYWxzIHRoYXQgaGF2ZSBiZWVuIGJ1cmllZCBhbmQgc3ViamVjdGVkIHRvIGltbWVuc2UgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciBtaWxsaW9ucyBvZiB5ZWFycy5cIn0ifV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnLCAncmVhc29uaW5nJzogXCJXaGVuIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWEsIGl0J3Mgbm90IGR1ZSB0bzpcXG5cXG4oYSkgS2VlcGluZyB0aGVpciBib2R5IGhlYXQgLSBUaGlzIGlzIHR5cGljYWxseSBpbmZsdWVuY2VkIGJ5IHNlYXNvbmFsIGNoYW5nZXMgb3Igd2VhdGhlciBjb25kaXRpb25zLCBub3QgdGhlIHBoeXNpY2FsIGFjdCBvZiBtb3ZpbmcgdG8gYW5vdGhlciBhcmVhLiBXaGlsZSB0ZW1wZXJhdHVyZSBjYW4gYmUgYSBmYWN0b3IgaW4gbWlncmF0aW9uLCBpdCBkb2Vzbid0IGRyaXZlIHRoZSBkZWNpc2lvbiBmb3IgdGhlIG1vdmVtZW50IGl0c2VsZi5cXG5cXG4oYikgUmV1c2luZyBtYXRlcmlhbHMgLSBUaGlzIG9wdGlvbiByZWZlcnMgdG8gcmVjeWNsaW5nIG9yIHJldXNpbmcgcGh5c2ljYWwgb2JqZWN0cyBhbmQgaGFzIG5vIGRpcmVjdCBjb3JyZWxhdGlvbiB0byBhbmltYWwgbWlncmF0aW9uIG9yIG1vdmVtZW50LlxcblxcbihkKSBCZWluZyBib3JlZCAtIEJvcmVkb20gaXMgYSBodW1hbiBjb25zdHJ1Y3QgYW5kIGRvZXNuJ3QgZGlyZWN0bHkgYXBwbHkgdG8gYW5pbWFscycgYmVoYXZpb3JhbCBkZWNpc2lvbnMuIEFuaW1hbHMgYXJlIGRyaXZlbiBieSBpbnN0aW5jdHMgYW5kIGJhc2ljIG5lZWRzIHJhdGhlciB0aGFuIGJvcmVkb20uXFxuXFxuKGYpIEhhdmluZyB0b28gbXVjaCBtb25leSAtIFRoaXMgaXMgYW4gZWNvbm9taWMgY29uY2VwdCB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gYW5pbWFscywgYXMgdGhleSBkb24ndCBoYXZlIGN1cnJlbmN5IG9yIGZpbmFuY2lhbCByZXNvdXJjZXMuXFxuXFxuKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAtIFRoZXNlIGFyZSBzcGVjaWZpYyB0eXBlcyBvZiBlY29zeXN0ZW1zLCBhbmQgd2hpbGUgYW5pbWFscyBtYXkgaW5oYWJpdCB0aGVzZSBhcmVhcyBvciBtb3ZlIHRvIHRoZW0gZm9yIHZhcmlvdXMgcmVhc29ucywgbWVyZWx5IGV4cGxhaW5pbmcgd2hlcmUgdGhleSBtaWdodCBnbyBkb2Vzbid0IGFkZHJlc3Mgd2h5IHRoZXkgbW92ZS5cXG5cXG4oZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgLSBUaGlzIGRlc2NyaWJlcyBhdG1vc3BoZXJpYyBwaGVub21lbmEgYW5kIGRvZXMgbm90IGluZmx1ZW5jZSB0aGUgbW92ZW1lbnQgb2YgYW5pbWFscy5cXG5cXG4oaCkgSGF2aW5nIHRvbyBtdWNoIGZvb2QgLSBXaGlsZSBhbmltYWxzIG1pZ2h0IG1pZ3JhdGUgdG8gYXZvaWQgYXJlYXMgb2Ygb3Zlci1jb21wZXRpdGlvbiBmb3IgZm9vZCByZXNvdXJjZXMsIHRoZSBwaHJhc2UgJ3RvbyBtdWNoIGZvb2QnIGlzIG5vdCBhIGxvZ2ljYWwgbW90aXZhdG9yIGZvciBtb3ZpbmcgdG8gYSBuZXcgYXJlYS4gVG9vIG11Y2ggZm9vZCB3b3VsZCBtZWFuIHRoZXkncmUgYWxyZWFkeSBpbiBhIGdvb2QgbG9jYXRpb24sIG5lZ2F0aW5nIHRoZSBuZWVkIGZvciBtaWdyYXRpb24uXFxuXFxuKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAtIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIGFuaW1hbHMgb2Z0ZW4gbWlncmF0ZSBpbiByZXNwb25zZSB0byBzY2FyY2l0eSBpbiB0aGVpciBjdXJyZW50IGhhYml0YXQuIEluYWRlcXVhdGUgZm9vZCBhdmFpbGFiaWxpdHkgY2FuIGxlYWQgdG8gc3RhcnZhdGlvbiwgcHJvbXB0aW5nIGEgbW92ZW1lbnQgdG8gYXJlYXMgd2hlcmUgcmVzb3VyY2VzIGFyZSBtb3JlIGFidW5kYW50LiBUaGV5IGFyZSBzZWVraW5nIHRvIGVuc3VyZSB0aGVpciBzdXJ2aXZhbCBhbmQgcmVwcm9kdWN0aW9uLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChjKSBhcyBpdCBpcyB0aGUgbW9zdCBsb2dpY2FsIGV4cGxhbmF0aW9uIGZvciBhbmltYWwgbW92ZW1lbnQgdG8gYW5vdGhlciBhcmVhIGJhc2VkIG9uIHN1cnZpdmFsIG5lZWRzLCBwYXJ0aWN1bGFybHkgZm9vZCBhdmFpbGFiaWxpdHkuXCJ9In1dLCAiMTAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEtpbmV0aWMgZW5lcmd5IChiKSBMb3VkIG5vaXNlcyAoYykgVmlicmF0aW5nIHdhdmVzIChkKSBBbiBvYmplY3QgaXMgc2VlbiAoZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneSAoZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkIChnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuIChoKSBIYXJtZnVsIHN1YnN0YW5jZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnLCAncmVhc29uaW5nJzogXCIxLiBSZWFkIHRoZSBxdWVzdGlvbjogJ0EgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD8nXFxuICAgIC0gVGhlIHF1ZXN0aW9uIGFza3MgYWJvdXQgdGhlIGZvcm0gb2YgZW5lcmd5IHRoYXQgYSBmaXJlY3JhY2tlciB0cmFuc2Zvcm1zIGNoZW1pY2FsIGVuZXJneSBpbnRvLlxcblxcbjIuIElkZW50aWZ5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIG9wdGlvbnM6XFxuICAgLSBhKSBLaW5ldGljIGVuZXJneVxcbiAgIC0gYikgTG91ZCBub2lzZXNcXG4gICAtIGMpIFZpYnJhdGluZyB3YXZlc1xcbiAgIC0gZCkgQW4gb2JqZWN0IGlzIHNlZW5cXG4gICAtIGUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3lcXG4gICAtIGYpIERlb3h5cmlib251Y2xlaWMgYWNpZFxcbiAgIC0gZykgSHlkcm9nZW4gYW5kIG94eWdlblxcbiAgIC0gaCkgSGFybWZ1bCBzdWJzdGFuY2VzXFxuXFxuMy4gRGV0ZXJtaW5lIHdoaWNoIG9wdGlvbnMgYXJlIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlOlxcbiAgIC0gS2luZXRpYyBlbmVyZ3kgY291bGQgYmUgYSByZXN1bHQgb2YgdGhlIGZpcmVjcmFja2VyJ3MgZXhwbG9zaW9uLCBidXQgaXQgaXMgbm90IHRoZSBtb3N0IGRpcmVjdCBvciBzcGVjaWZpYyB0cmFuc2Zvcm1hdGlvbi5cXG4gICAtIExvdWQgbm9pc2VzIGFyZSBhIGJ5cHJvZHVjdCBidXQgZG8gbm90IHJlcHJlc2VudCBlbmVyZ3kuXFxuICAgLSBWaWJyYXRpbmcgd2F2ZXMgbWF5IHJlc3VsdCBmcm9tIHRoZSBleHBsb3Npb24sIGJ1dCB0aGV5IGFyZSBhbHNvIGEgYnlwcm9kdWN0IHJhdGhlciB0aGFuIHRoZSBwcmltYXJ5IGNvbnZlcnRlZCBlbmVyZ3kuXFxuICAgLSBBbiBvYmplY3QgaXMgc2VlbjogVGhpcyBpcyBub3QgYSBmb3JtIG9mIGVuZXJneS5cXG4gICAtIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IGNvbnZlcnNpb24gaW4gYSBmaXJlY3JhY2tlci5cXG4gICAtIERlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKSBpcyBvcmdhbmljIG1hdGVyaWFsIGFuZCBpcyBub3QgcmVsYXRlZCB0byB0aGUgZW5lcmd5IGNvbnZlcnNpb24gYXQgcGxheS5cXG4gICAtIEh5ZHJvZ2VuIGFuZCBveHlnZW4gYXJlIGVsZW1lbnRzIHByb2R1Y2VkIGluIHRoZSBjaGVtaWNhbCByZWFjdGlvbiBidXQgbm90IHRoZSBmb3JtIG9mIGVuZXJneSBpdHNlbGYuXFxuICAgLSBIYXJtZnVsIHN1YnN0YW5jZXMgYXJlIGJ5cHJvZHVjdHMgYnV0IG5vdCB0aGUgZm9ybSBvZiBlbmVyZ3kuXFxuXFxuNC4gVGhlIGNvcnJlY3QgYW5zd2VyIGlzIChjKTpcXG4gICAtIFZpYnJhdGluZyB3YXZlczogV2hpbGUgZmlyZWNyYWNrZXJzIGRvIGluZGVlZCBwcm9kdWNlIHZpYnJhdGlvbnMgKHdoaWNoIGNhbiBmZWx0IG9yIGhlYXJkIGFzIHNvdW5kKSwgdGhlIG1vc3QgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gaXMgbm90IGxpc3RlZCBkaXJlY3RseS5cXG5cXG41LiBFeHBsYW5hdGlvbiBvZiB3aHkgb3RoZXIgb3B0aW9ucyBhcmUgaW5jb3JyZWN0OlxcbiAgIC0gYSkgS2luZXRpYyBlbmVyZ3k6IFdoaWxlIGtpbmV0aWMgZW5lcmd5IGlzIGludm9sdmVkIGluIHRoZSBleHBsb3Npb24sIGl0IGlzIG5vdCB0aGUgaW1tZWRpYXRlIGFuZCBwcmltYXJ5IGNvbnZlcnNpb24gZm9ybS5cXG4gICAtIGIpIExvdWQgbm9pc2VzOiBUaGlzIGlzIGEgcmVzdWx0IG9mIHRoZSBleHBsb3Npb24gYnV0IG5vdCBhIGZvcm0gb2YgZW5lcmd5LlxcbiAgIC0gZCkgQW4gb2JqZWN0IGlzIHNlZW46IFRoaXMgc3RhdGVtZW50IGlzIGlycmVsZXZhbnQgdG8gZW5lcmd5IGNvbnZlcnNpb24uXFxuICAgLSBlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5OiBBbHRob3VnaCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgcmVsZWFzZWQgZHVyaW5nIHRoZSBleHBsb3Npb24gKGxpZ2h0IGFuZCBzb3VuZCksIGl0IGlzIG5vdCB0aGUgbW9zdCBkaXJlY3QgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnZlcnNpb24gZnJvbSBjaGVtaWNhbCB0byBhbm90aGVyIGZvcm0uXFxuICAgLSBmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSk6IE5vdCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gcHJvY2Vzcy5cXG4gICAtIGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW46IFByb2R1Y2VkIGVsZW1lbnRzIGJ1dCBub3QgZm9ybXMgb2YgZW5lcmd5LlxcbiAgIC0gaCkgSGFybWZ1bCBzdWJzdGFuY2VzOiBCeXByb2R1Y3RzIGJ1dCBub3QgZm9ybXMgb2YgZW5lcmd5LlxcblxcbkluIGNvbmNsdXNpb24sIHdoaWxlIGEgZmlyZWNyYWNrZXIgcHJpbWFyaWx5IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIGtpbmV0aWMgZW5lcmd5IGFuZCB2aWJyYXRpb25zIChzb3VuZCB3YXZlcyksIHRoZSBjbG9zZXN0IG9wdGlvbiBwcm92aWRlZCBpcyAoYykgVmlicmF0aW5nIHdhdmVzLCBpbmRpY2F0aW5nIHRoZSBtb3N0IGV2aWRlbnQgcGh5c2ljYWwgZWZmZWN0IGFuZCBmb3JtIG9mIGVuZXJneSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGNoZW1pY2FsIGVuZXJneSBhdCB0aGUgZWxlbWVudGFyeSBsZXZlbC5cIn0ifV0sICIxMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWFqb3IgZWZmZWN0cyAoYikgUmVzcGlyYXRpb24gKGMpIFJvbGV4IChkKSBEZW5zaXR5IChlKSBEaXBodGhlcmlhIChmKSBDYW5pcyBsdXB1cyAoZykgU2tpbiBjb2xvciAoaCkgRGlnZXN0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdnJywgJ3JlYXNvbmluZyc6IFwiKGEpIE1ham9yIGVmZmVjdHM6XFxuVGhpcyB0ZXJtIGNvdWxkIHBvdGVudGlhbGx5IHJlbGF0ZSB0byBnZW5ldGljcywgYnV0IGl0J3MgYSBnZW5lcmFsIHRlcm0gdGhhdCBjb3VsZCBkZXNjcmliZSB0aGUgZWZmZWN0cyBvZiBtdWx0aXBsZSBnZW5lcyBvbiBhIHBoZW5vdHlwZSwgcmF0aGVyIHRoYW4gYSBzcGVjaWZpYyByZXN1bHQuIFRodXMsIGl0J3Mgbm90IGEgZGlyZWN0IGFuc3dlciB0byB0aGUgcXVlc3Rpb24gYXNraW5nIGZvciBhIHNwZWNpZmljIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy5cXG5cXG4oYikgUmVzcGlyYXRpb246XFxuUmVzcGlyYXRpb24gaXMgYSBiaW9sb2dpY2FsIHByb2Nlc3MgaW52b2x2aW5nIHRoZSBleGNoYW5nZSBvZiBnYXNlcyAob3h5Z2VuIGFuZCBjYXJib24gZGlveGlkZSkgdGhhdCBvY2N1cnMgaW4gbGl2aW5nIG9yZ2FuaXNtcy4gV2hpbGUgZ2VuZSBpbnRlcmFjdGlvbnMgY2FuIGluZmx1ZW5jZSBtZXRhYm9saWMgcHJvY2Vzc2VzIGluY2x1ZGluZyByZXNwaXJhdGlvbiwgdGhlIHRlcm0gJ3Jlc3BpcmF0aW9uJyBpdHNlbGYgaXMgbm90IGEgcmVzdWx0IGRpcmVjdGx5IHN0ZW1taW5nIGZyb20gdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuXFxuXFxuKGMpIFJvbGV4OlxcbkEgUm9sZXggaXMgYSBsdXh1cnkgd3Jpc3R3YXRjaC4gVGhpcyBvcHRpb24gaXMgaXJyZWxldmFudCB0byB0aGUgY29udGV4dCBvZiBnZW5ldGljcyBhbmQgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuXFxuXFxuKGQpIERlbnNpdHk6XFxuRGVuc2l0eSBpcyBhIHBoeXNpY2FsIHByb3BlcnR5IG9mIG1hdHRlciBhbmQgZG9lcyBub3QgZGlyZWN0bHkgcmVsYXRlIHRvIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBtdWx0aXBsZSBnZW5lcy5cXG5cXG4oZSkgRGlwaHRoZXJpYTpcXG5EaXBodGhlcmlhIGlzIGEgYmFjdGVyaWFsIGRpc2Vhc2U7IHdoaWxlIGdlbmVzIGNhbiBpbmZsdWVuY2Ugc3VzY2VwdGliaWxpdHkgdG8gY2VydGFpbiBkaXNlYXNlcywgJ2RpcGh0aGVyaWEnIGl0c2VsZiBpc24ndCBhIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcyBidXQgcmF0aGVyIGFuIGVmZmVjdCBvZiBhIHBhdGhvZ2VuaWMgYmFjdGVyaXVtIChDb3J5bmViYWN0ZXJpdW0gZGlwaHRoZXJpYWUpLlxcblxcbihmKSBDYW5pcyBsdXB1czpcXG5DYW5pcyBsdXB1cyBpcyB0aGUgc2NpZW50aWZpYyBuYW1lIGZvciB0aGUgZ3JheSB3b2xmLCBhIHNwZWNpZXMuIFRoaXMgaXMgbm90IGEgcmVzdWx0IGFyaXNpbmcgZnJvbSB0aGUgaW50ZXJhY3Rpb24gb2YgbXVsdGlwbGUgZ2VuZXMgaW4gYSBnZW5ldGljIGNvbnRleHQ7IGl0IHJlZmVycyB0byBhIHRheG9ub21pYyBjbGFzc2lmaWNhdGlvbi5cXG5cXG4oZykgU2tpbiBjb2xvcjpcXG5Ta2luIGNvbG9yIGlzIG9mdGVuIGluZmx1ZW5jZWQgYnkgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMsIGluY2x1ZGluZyB0aG9zZSByZXNwb25zaWJsZSBmb3IgdGhlIHByb2R1Y3Rpb24gb2YgbWVsYW5pbiwgd2hpY2ggZ2l2ZXMgc2tpbiBpdHMgY29sb3IuIFRoaXMgaXMgYSBkaXJlY3QgcmVzdWx0IG9mIGdlbmV0aWMgZmFjdG9ycy5cXG5cXG4oaCkgRGlnZXN0aW9uOlxcbkxpa2UgcmVzcGlyYXRpb24sIGRpZ2VzdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyBpbnZvbHZpbmcgbXVsdGlwbGUgc3RlcHMgYW5kIG9yZ2Fucy4gV2hpbGUgZ2VuZXMgY2VydGFpbmx5IHBsYXkgYSByb2xlIGluIHJlZ3VsYXRpbmcgZGlnZXN0aXZlIHByb2Nlc3NlcyAoZS5nLiwgZW56eW1lcyBpbnZvbHZlZCBpbiBkaWdlc3Rpb24pLCAnZGlnZXN0aW9uJyBhcyBhIHByb2Nlc3MgcmF0aGVyIHRoYW4gYSByZXN1bHQgb2YgZ2VuZXRpYyBpbnRlcmFjdGlvbiBpc24ndCBhcyBzcGVjaWZpYyBhcyBza2luIGNvbG9yIGZvciBhIGdlbmV0aWMgdHJhaXQncyByZXN1bHQuXFxuXFxuVGh1cywgKGcpIFNraW4gY29sb3IgaXMgdGhlIG1vc3Qgc3BlY2lmaWMgYW5kIGRpcmVjdCByZXN1bHQgb2YgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIEFsdGhvdWdoIG90aGVyIHByb2Nlc3NlcyAocmVzcGlyYXRpb24sIGRpZ2VzdGlvbikgbWlnaHQgYmUgaW5mbHVlbmNlZCBieSBnZW5lIGludGVyYWN0aW9ucywgdGhleSByZWZlciB0byBvbmdvaW5nIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBhIHNwZWNpZmljLCBvYnNlcnZhYmxlIG91dGNvbWUgbGlrZSBza2luIGNvbG9yLlwifSJ9XSwgIjEyIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWw/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNoZWVwIChiKSBTYWxtb24gKGMpIEdyYXNzZXMgKGQpIEJhdHMgKGUpIEFuaW1hbHMgKGYpIFNocnVicyAoZykgSHVtYW5zIChoKSBUcmVlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnYScsICdyZWFzb25pbmcnOiBcIihhKSAqKlNoZWVwKio6IFNoZWVwIGFyZSBoZXJiaXZvcmVzLCBwcmltYXJpbHkgZmVlZGluZyBvbiBncmFzc2VzIGFuZCBvdGhlciBwbGFudHMuIFRoZXkgdHlwaWNhbGx5IGNhbm5vdCBmZWVkIGF0IG11bHRpcGxlIHRyb3BoaWMgbGV2ZWxzLlxcblxcbihiKSAqKlNhbG1vbioqOiBXaGlsZSBzYWxtb24gY2FuIHZhcnkgaW4gdGhlaXIgZGlldCwgdGhleSBhcmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdG8gYmUgcHJpbWFyaWx5IHBpc2Npdm9yZXMgKGZpc2gtZWF0aW5nIHByZWRhdG9ycykgYW5kIGRvIG5vdCBmZWVkIG9uIHBsYW50cy4gVGhlcmVmb3JlLCBhbHRob3VnaCB0aGVpciBkaWV0IGNhbiBjaGFuZ2UgYmFzZWQgb24gdGhlaXIgbGlmZSBzdGFnZSwgdGhleSBkb24ndCBnZW5lcmFsbHkgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuKGMpICoqR3Jhc3NlcyoqOiBHcmFzc2VzIGFyZSBwbGFudHMsIHNwZWNpZmljYWxseSBtb25vY290cyB1c3VhbGx5IGZvdW5kIGluIHRoZSBvcmRlciBQb2FsZXMuIFRoZXkgYXJlIGF1dG90cm9waHMsIG1lYW5pbmcgdGhleSBwcm9kdWNlIHRoZWlyIG93biBmb29kIHRocm91Z2ggcGhvdG9zeW50aGVzaXMuIFRoZXkgZG8gbm90IGZlZWQgYXQgYW55IHRyb3BoaWMgbGV2ZWwgYmVjYXVzZSB0aGV5IGFyZSBub3QgY29uc3VtZXJzIGJ1dCBwcm9kdWNlcnMuXFxuXFxuKGQpICoqQmF0cyoqOiBCYXRzIGFyZSB0eXBpY2FsbHkgY29uc2lkZXJlZCBpbnNlY3Rpdm9yZXMsIGZlZWRpbmcgcHJpbWFyaWx5IG9uIGluc2VjdHMuIFNvbWUgYmF0IHNwZWNpZXMgYWxzbyBlYXQgZnJ1aXRzIG9yIG5lY3RhciwgYnV0IHRoZXkgZG9uJ3QgY3Jvc3MgdHJvcGhpYyBsZXZlbHMuIFRoZXkgZmVlZCBhdCBhIHNpbmdsZSB0cm9waGljIGxldmVsLCBlaXRoZXIgYXMgY29uc3VtZXJzIG9mIGluc2VjdHMgKHByaW1hcnkgY29uc3VtZXJzKSBvciBmcnVpdHMgKG9tbml2b3JlcykuXFxuXFxuKGUpICoqQW5pbWFscyoqOiBUaGlzIGlzIGEgYnJvYWQgdGVybSBlbmNvbXBhc3NpbmcgbWFueSBkaWZmZXJlbnQgb3JnYW5pc21zLCBidXQgaXQgZG9lc24ndCBzcGVjaWZpY2FsbHkgcmVmZXIgdG8gYSB0cm9waGljIGxldmVsLiBBbGwgYW5pbWFscyBhcmUgY29uc3VtZXJzIGFuZCB0aGVyZWZvcmUgYmVsb25nIHRvIGF0IGxlYXN0IG9uZSB0cm9waGljIGxldmVsLCBidXQgdGhleSBtYXkgb2NjdXB5IGRpZmZlcmVudCBsZXZlbHMgZGVwZW5kaW5nIG9uIHRoZWlyIGRpZXQuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpbXBsaWVzIGEgc2luZ2xlIGxldmVsLCBzbyB0aGlzIGlzbid0IGEgc2F0aXNmYWN0b3J5IGFuc3dlci5cXG5cXG4oZikgKipTaHJ1YnMqKjogU2ltaWxhciB0byBncmFzc2VzLCBzaHJ1YnMgYXJlIGF1dG90cm9waGljIG9yZ2FuaXNtcy4gVGhleSBhcmUgY29uc3VtZXJzIG9mIGFpciBhbmQgd2F0ZXIsIHBhcnRpY3VsYXJseSBzdW5saWdodCwgdGhyb3VnaCBwaG90b3N5bnRoZXNpcy4gVGhleSBkbyBub3QgZmVlZCBhdCBhbnkgdHJvcGhpYyBsZXZlbC5cXG5cXG4oZykgKipIdW1hbnMqKjogSHVtYW5zIGFyZSBvbW5pdm9yZXMsIG1lYW5pbmcgdGhleSBjYW4gY29uc3VtZSBib3RoIHBsYW50IGFuZCBhbmltYWwgbWF0dGVyLiBXaGlsZSBpdCBtaWdodCBzZWVtIGxpa2UgdGhleSBjcm9zcyB0cm9waGljIGxldmVscyBieSBjb25zdW1pbmcgZm9vZHMgZnJvbSBkaWZmZXJlbnQgc291cmNlcywgaW5kaXZpZHVhbCBtZWFscyBkbyBub3QgcXVhbGlmeSBhcyBjcm9zc2luZyB0cm9waGljIGxldmVscy4gQ3Jvc3NpbmcgdHJvcGhpYyBsZXZlbHMgd291bGQgaW1wbHkgYSBjb25zaXN0ZW50IGRpZXQgd2hlcmUgb25lIGlzIGFuIGFuaW1hbCBjb25zdW1lciBhbmQgYW5vdGhlciBhIHBsYW50IGNvbnN1bWVyLCB3aGljaCBodW1hbnMsIGFzIG9tbml2b3JlcywgZG8gbm90IHN0cmljdGx5IGFkaGVyZSB0by5cXG5cXG4oaCkgKipUcmVlcyoqOiBUcmVlcyBiZWxvbmcgdG8gdGhlIHBsYW50IGtpbmdkb20sIG1vcmUgc3BlY2lmaWNhbGx5IHRvIHRoZSBkaXZpc2lvbiBUcmFjaGVvcGh5dGEsIGFuZCBsaWtlIHNocnVicyBhbmQgZ3Jhc3NlcywgdGhleSBhcmUgYXV0b3Ryb3BoaWMgYW5kIGRvIG5vdCBmZWVkIGF0IGFueSB0cm9waGljIGxldmVsLlxcblxcbk5vbmUgb2YgdGhlIGdpdmVuIG9wdGlvbnMgaW5kaWNhdGUgYSBsaWZlc3R5bGUgdGhhdCBjb25zaXN0ZW50bHkgaW52b2x2ZXMgZmVlZGluZyBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuIFxcblxcblRoZSBjb3JyZWN0IGFuc3dlciBjaG9pY2Ugc2hvdWxkIGJldHRlciByZWZsZWN0IGFuIG9yZ2FuaXNtIHRoYXQsIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzIG9yIHNwZWNpZmljIGNvbmRpdGlvbnMsIG1pZ2h0IGNvbnN1bWUgZW50aXRpZXMgZnJvbSBtdWx0aXBsZSB0cm9waGljIGxldmVscywgYnV0IHRoZSBwcm92aWRlZCBjaG9pY2VzIGRvIG5vdCBmaXQgdGhhdCBkZXNjcmlwdGlvbiBkaXJlY3RseS4gSG93ZXZlciwgc2luY2UgdGhlIHF1ZXN0aW9uIGlzIGFza2luZyBmb3IgYSBiaW9sb2dpY2FsIGVudGl0eSwgaHVtYW5zLCB3aXRoIHRoZWlyIGRpdmVyc2UgZGlldCBhc3BlY3QsIGFyZSBjb25zaWRlcmVkIG9tbml2b3JlcyBjYXBhYmxlIG9mIGNvbnN1bWluZyBwbGFudHMgYW5kIGFuaW1hbHMuIFRoZXJlZm9yZSwgaHVtYW5zIGNvdWxkIGJlIGluY29ycmVjdGx5IHBlcmNlaXZlZCBhcyBmaXR0aW5nIHRoZSBkZXNjcmlwdGlvbiBvZiAnZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwsJyBidXQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIG11bHRpcGxlLWNob2ljZSBmb3JtYXQgYW5kIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLCBub25lIGFwcHJvcHJpYXRlbHkgZGlzcGxheSB0aGlzIGNhcGFiaWxpdHkuIEhlbmNlLCB0aGUgY2xvc2VzdCBhbHRob3VnaCBtaXNsZWFkaW5nIGFuc3dlciBtaWdodCBiZSAoYSkgU2hlZXAsIHNpbmNlIHRoZSBxdWVzdGlvbiBpbmNvcnJlY3RseSBhc3N1bWVzIHRoZXJlIGV4aXN0cyBhbiBvcHRpb24gdGhhdCBmaXRzIHRoZSB0cm9waGljIGxldmVsIGNyb3NzaW5nIGRlc2NyaXB0aW9uIGFtb25nIHRoZSBwcm92aWRlZCBjaG9pY2VzLlwifSJ9XSwgIjEzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hvIGNhbiBzaGl2ZXI/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhdHMgKGIpIFNpZGV3YWxrcyAoYykgSHVtYW5zIChkKSBCZWVzIChlKSBLb2FsYXMgKGYpIE1vdW50YWlucyAoZykgVHJlZXMgKGgpIFBlb3BsZSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZCcsICdyZWFzb25pbmcnOiBcIkxldCdzIGFuYWx5emUgZWFjaCBhbnN3ZXIgY2hvaWNlOlxcblxcbihhKSAqKkJhdHMqKjogV2hpbGUgYmF0cyBhcmUgaW5kZWVkIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCB0aGV5IGFyZSBub3QgdGhlIGJlc3QgYW5zd2VyIGZvciB0aGlzIHF1ZXN0aW9uLiBJdCdzIHBvc3NpYmxlIHRoZXkgd2VyZSBpbmNsdWRlZCB0byB0ZXN0IGlmIHlvdSBjb25zaWRlciBzcGVjaWFsaXplZCBoaWJlcm5hdGluZyBtYW1tYWxzLlxcblxcbihiKSAqKlNpZGV3YWxrcyoqOiBTaWRld2Fsa3MgYXJlIGluYW5pbWF0ZSBvYmplY3RzIGFuZCBkbyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBzaGl2ZXIuIFRoZXkgY2Fubm90IGdlbmVyYXRlIG9yIGNvbnRyb2wgYm9keSBoZWF0LlxcblxcbihjKSAqKkh1bWFucyoqOiBIdW1hbnMgY2FuIGRlZmluaXRlbHkgc2hpdmVyLiBTaGl2ZXJpbmcgaXMgYSBwaHlzaW9sb2dpY2FsIHJlc3BvbnNlIGluIGh1bWFucyBhbmQgbWFueSBhbmltYWxzIHdoZXJlIHJoeXRobWljIG11c2NsZSBjb250cmFjdGlvbnMgZ2VuZXJhdGUgaGVhdCB0byBoZWxwIG1haW50YWluIGJvZHkgdGVtcGVyYXR1cmUsIGVzcGVjaWFsbHkgZHVyaW5nIGNvbGQgY29uZGl0aW9ucy5cXG5cXG4oZCkgKipCZWVzKio6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBTaGl2ZXJpbmcsIGluIHRoaXMgYmlvbG9naWNhbCBjb250ZXh0LCBpcyBhbHNvIGtub3duIGFzICd0YXhpbGxhdGlvbicgaW4gYmVlcy4gSXQncyBhIHJlc3BvbnNlIHRvIGNvbGQgdGVtcGVyYXR1cmVzIHdoZXJlIGJlZXMgY2x1c3RlciB0aGVpciBib2RpZXMgdG9nZXRoZXIgYW5kIHNoaXZlciB0byBnZW5lcmF0ZSB3YXJtdGggYW5kIGNvbnNlcnZlIGl0LlxcblxcbihlKSAqKktvYWxhcyoqOiBXaGlsZSBrb2FsYXMgYXJlIG1hbW1hbHMgYW5kIGNhcGFibGUgb2Ygc29tZSBmb3JtcyBvZiBzaGl2ZXJpbmcsIHRoZSB0ZXJtICdzaGl2ZXInIGlzIHR5cGljYWxseSB1c2VkIGluIGEgY29udGV4dCBvZiByYXBpZCBtdXNjbGUgY29udHJhY3Rpb25zIHRvIGdlbmVyYXRlIGhlYXQgaW4gcmVzcG9uc2UgdG8gY29sZCB0ZW1wZXJhdHVyZXMuIEtvYWxhcywgYmVpbmcgZWN0b3RoZXJtaWMgKGNvbGQtYmxvb2RlZCksIGRvbid0IHNoaXZlciBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIG1hbW1hbHMgbGlrZSBodW1hbnMgb3IgYmVlcy4gVGhleSBtYWludGFpbiB0aGVpciBib2R5IHRlbXBlcmF0dXJlIHRocm91Z2ggZXh0ZXJuYWwgc291cmNlcywgbGlrZSBzdW4gZXhwb3N1cmUsIGFuZCBnZW5lcmFsbHkgZG9uJ3Qgc2hpdmVyIGluIHJlc3BvbnNlIHRvIGNvbGQgYXMgbWFtbWFscyBkby5cXG5cXG4oZikgKipNb3VudGFpbnMqKjogTW91bnRhaW5zIGFyZSBpbmFuaW1hdGUgZ2VvZ3JhcGhpY2FsIGZlYXR1cmVzIGFuZCBkbyBub3QgcG9zc2VzcyB0aGUgYWJpbGl0eSB0byBzaGl2ZXIgb3IgcmVndWxhdGUgYm9keSB0ZW1wZXJhdHVyZSBpbiBhbnkgbWFubmVyLlxcblxcbihnKSAqKlRyZWVzKio6IFRyZWVzLCBiZWluZyBwbGFudHMsIGRvIG5vdCBoYXZlIHRoZSBjZWxsdWxhciBhbmQgcGh5c2lvbG9naWNhbCBjYXBhY2l0eSB0byBzaGl2ZXIgb3IgZ2VuZXJhdGUgaGVhdCB0aHJvdWdoIG11c2NsZSBjb250cmFjdGlvbnMuXFxuXFxuKGgpICoqUGVvcGxlKiogKHJlcGVhdGVkIGZyb20gKGMpKTogVGhpcyBpcyBhIHJlcGVhdCBvZiB0aGUgY29ycmVjdCBhbnN3ZXIgZm9yIGh1bWFucywgcG9zc2libHkgdG8gdGVzdCBpZiB5b3UncmUgcGF5aW5nIGF0dGVudGlvbiBvciBpZiB5b3UgbWlnaHQgdHJ5IHRvIHNlbGVjdCBpdCBhZ2FpbiB1bmludGVudGlvbmFsbHkuXFxuXFxuU28sIHdoaWxlIChjKSAnSHVtYW5zJyBpcyB0ZWNobmljYWxseSBjb3JyZWN0LCB0aGUgaW50ZW5kZWQgYW5zd2VyIGlzIChkKSAnQmVlcycsIHdoaWNoIGluY2x1ZGVzIGEgYnJvYWRlciBhbmQgbW9yZSBzcGVjaWZpYyBncm91cCB0aGF0IGNhbiBzaGl2ZXIgd2l0aGluIHRoZSBjb250ZXh0IG9mIGJpb2xvZ2ljYWwgc2hpdmVyaW5nIG1lY2hhbmlzbXMuIFRoZSBvdGhlciBjaG9pY2VzIGRvIG5vdCByZWxhdGUgdG8gc2hpdmVyaW5nIGJlY2F1c2UgdGhleSBhcmUgZWl0aGVyIG5vdCBsaXZpbmcgYmVpbmdzIChiLCBmLCBnLCBoKSBvciBub3QgY2FwYWJsZSBvZiBzaGl2ZXJpbmcgYXMgYSBtZWNoYW5pc20gZm9yIHRoZXJtb3JlZ3VsYXRpb24gKGEsIGUpLlwifSJ9XSwgIjE0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgaXMgYW4gZXhhbXBsZSBvZiB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBMZWFybmluZyBiZWhhdmlvciAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMgKGMpIFdhcm0tYmxvb2RlZCAoZCkgQ29tcGV0aXRpb24gKGUpIEJhZCBiZWhhdmlvciAoZikgTGVhcm5pbmcgbm90aGluZyAoZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvciAoaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdhJywgJ3JlYXNvbmluZyc6IFwiXFxuKipPcHRpb24gKGEpIExlYXJuaW5nIGJlaGF2aW9yKio6IEtpdHRlbnMgaHVudGluZyBpcyBhIGNsZWFyIGV4YW1wbGUgb2YgdGhlbSBsZWFybmluZyBzdXJ2aXZhbCBza2lsbHMgYW5kIGJlaGF2aW9ycy4gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlaXIgZGV2ZWxvcG1lbnQgYXMgdGhleSBncm93IGludG8gYWR1bHQgY2F0cy4gVGhpcyBhbGlnbnMgd2l0aCB0aGUgY29uY2VwdCBvZiBsZWFybmluZyBiZWhhdmlvci5cXG5cXG4qKk9wdGlvbiAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMqKjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugd2hpbGUgY2F0cyBtYXkgY29tcGV0ZSBmb3IgcmVzb3VyY2VzIGxpa2UgZm9vZCBpbiB0aGUgd2lsZCwgdGhlIGJlaGF2aW9yIG9mIGh1bnRpbmcga2l0dGVucyBpcyBtb3JlIGFib3V0IGxlYXJuaW5nIGEgc2tpbGwgdGhhbiBjb21wZXRpbmcgZm9yIHJlc291cmNlcy4gSXQncyBub3QgcHJpbWFyaWx5IGFib3V0IHdobyBnZXRzIHdoYXQuXFxuXFxuKipPcHRpb24gKGMpIFdhcm0tYmxvb2RlZCAoZCkgQ29tcGV0aXRpb24qKjogVGhlc2Ugb3B0aW9ucyBhcmUgbm90IGNvcnJlY3QgYXMgdGhleSBkZXNjcmliZSBjaGFyYWN0ZXJpc3RpY3Mgb3IgYnJvYWRlciBjb250ZXh0cyBcdTIwMTMgd2FybS1ibG9vZGVkIHJlZmVycyB0byB0aGUgcGh5c2lvbG9naWNhbCB0cmFpdCBvZiBiZWluZyBhYmxlIHRvIHJlZ3VsYXRlIGJvZHkgdGVtcGVyYXR1cmUsIGFuZCBjb21wZXRpdGlvbiBjb3VsZCBhcHBseSBtb3JlIGJyb2FkbHkgdG8gc2l0dWF0aW9ucyBpbnZvbHZpbmcgY29uZmxpY3RzIGJldHdlZW4gb3IgYW1vbmcgaW5kaXZpZHVhbHMgb3IgZ3JvdXBzIGNoYXNpbmcgdGhlIHNhbWUgZ29hbCwgd2hpY2ggaXMgbm90IHNwZWNpZmljYWxseSByZWxldmFudCB0byBhIGtpdHRlbiBwcmFjdGljaW5nIGh1bnRpbmcuXFxuXFxuKipPcHRpb24gKGUpIEJhZCBiZWhhdmlvcioqOiBUaGlzIG9wdGlvbiBpcyBpbmFjY3VyYXRlLiBXaGlsZSBodW50aW5nIGJlaGF2aW9yIG1pZ2h0IHRvIGEgaHVtYW4gb2JzZXJ2ZXIgc2VlbSBoYXJtZnVsIChlLmcuLCBhIGtpdHRlbiBwb3VuY2luZyBvbiBhIHRveSBtb3VzZSksIGl0IGlzIGVzc2VudGlhbCBhbmQgaW5zdGluY3R1YWwgZm9yIHRoZSBraXR0ZW4ncyBzdXJ2aXZhbCBhbmQgZG9lcyBub3QgcXVhbGlmeSBhcyAnYmFkJyBpbiBhbiBldGhpY2FsIHNlbnNlLlxcblxcbioqT3B0aW9uIChmKSBMZWFybmluZyBub3RoaW5nKio6IFRoaXMgaXMgaW5jb3JyZWN0IGJlY2F1c2Uga2l0dGVucyBhcmUgYWN0aXZlbHkgaW52b2x2ZWQgaW4gbGVhcm5pbmcgdGhyb3VnaCBwbGF5LCBhbmQgaHVudGluZyBtaW1pY3MgcmVhbC1saWZlIHNjZW5hcmlvcyB3aGVyZSB0aGV5IGdhdGhlciBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBwcmV5LlxcblxcbioqT3B0aW9uIChnKSBFeHRpbmd1aXNoaW5nIGJlaGF2aW9yKio6IFRoaXMgb3B0aW9uIGlzIG5vdCBhcHBsaWNhYmxlLiAnRXh0aW5ndWlzaGluZyBiZWhhdmlvcicgdXN1YWxseSByZWZlcnMgdG8gYWN0aW9ucyB0YWtlbiB0byBwcmV2ZW50IG9yIGVuZCBhIGJlaGF2aW9yLCB3aGljaCBpcyBub3Qgd2hhdCBraXR0ZW5zIGFyZSBkb2luZyB3aGlsZSBwcmFjdGljaW5nIGh1bnRpbmcuIFxcblxcbioqT3B0aW9uIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMqKjogVGhpcyBpcyBhbHNvIG5vdCBjb3JyZWN0IGFzIGl0IGlzIGEgcGh5c2ljYWwgY29uY2VwdCBkZXNjcmliaW5nIGtpbmV0aWMgZW5lcmd5LiBXaGlsZSBodW50aW5nIGRvZXMgaW52b2x2ZSBwaHlzaWNhbCBhY3Rpdml0eSB0aGF0IGNvbnN1bWVzIGVuZXJneSwgaXQgZG9lc24ndCBhY2N1cmF0ZWx5IGNhcHR1cmUgb3IgZGVzY3JpYmUgdGhlIGtpdHRlbnMnIGJlaGF2aW9yIGluIHRoaXMgY29udGV4dC5cXG5cXG5JbiBzdW1tYXJ5LCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgJ0xlYXJuaW5nIGJlaGF2aW9yJyAoYSkgYmVjYXVzZSBraXR0ZW5zIGh1bnRpbmcgaXMgYSBmb3JtIG9mIHBsYXkgd2hlcmUgdGhleSBsZWFybiBjcnVjaWFsIHNraWxscyBuZWVkZWQgZm9yIHN1cnZpdmFsLiBUaGUgb3RoZXIgb3B0aW9ucyBhcmUgbm90IGNvcnJlY3QgYXMgdGhleSBlaXRoZXIgZG8gbm90IGRpcmVjdGx5IGRlc2NyaWJlIHRoZSBiZWhhdmlvciBvciBtaXNpbnRlcnByZXQgdGhlIGNvbnRleHQgb3IgbWVhbmluZyBvZiB0aGUga2l0dGVuJ3MgYWN0aW9ucy5cIn0ifV0sICIxNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IERlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IGFmdGVyIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJ1cm5pbmcgKGIpIFdpbnRlciAoYykgTXV0YXRpb25zIChkKSBDb29raW5nIChlKSBDeWNsZXMgKGYpIFN1bW1lciAoZykgRnJlZXppbmcgKGgpIEd1bnNob3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdhJywgJ3JlYXNvbmluZyc6IFwiQW5zd2VyOiAoYSkgQnVybmluZ1xcblxcbkV4cGxhbmF0aW9uOiBcXG4tIChiKSBXaW50ZXI6IFdpbnRlciBpcyBhIHNlYXNvbiBjaGFyYWN0ZXJpemVkIGJ5IGNvbGQgdGVtcGVyYXR1cmVzIGFuZCB0aGUgYWJzZW5jZSBvZiBzdW5saWdodC4gSXQgaGFzIG5vIGRpcmVjdCByZWxhdGlvbnNoaXAgd2l0aCBlbmVyZ3kgcHJvZHVjdGlvbiBhZnRlciBkZWF0aC5cXG5cXG4tIChjKSBNdXRhdGlvbnM6IE11dGF0aW9ucyBhcmUgY2hhbmdlcyBpbiBETkEgdGhhdCBjYW4gbGVhZCB0byBnZW5ldGljIHZhcmlhdGlvbnMuIFRoZXkgb2NjdXIgaW4gbGl2aW5nIG9yZ2FuaXNtcyBhbmQgZG9uJ3QgYXBwbHkgdG8gZGVhZCBvcmdhbmlzbXMgc3RhcnRlZCBnZW5lcmF0aW5nIG5ldyBlbmVyZ3kuXFxuXFxuLSAoZCkgQ29va2luZzogVGhpcyBpcyBhIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIGZvb2QgdXNpbmcgaGVhdC4gSXQncyBhIG1ldGhvZCBub3Qgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gZW5lcmd5IGdlbmVyYXRpb24gYWZ0ZXIgYW4gb3JnYW5pc20ncyBkZWF0aC5cXG5cXG4tIChlKSBDeWNsZXM6IFdoaWxlIGNlcnRhaW4gYmlvbG9naWNhbCBwcm9jZXNzZXMgbGlrZSB0aGUgY2FyYm9uIGN5Y2xlIGludm9sdmUgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIG9yZ2FuaWMgbWF0dGVyLCB0aGVzZSBjeWNsZXMgdGFrZSB0aW1lIGFuZCBvY2N1ciBuYXR1cmFsbHkgd2l0aGluIHRoZSBlY29zeXN0ZW0uIFRoZXkgZG8gbm90IHJlbGF0ZSBkaXJlY3RseSB0byB0aGUgaW1tZWRpYXRlIGdlbmVyYXRpb24gb2YgZW5lcmd5IHBvc3QtZGVhdGguXFxuXFxuLSAoZikgU3VtbWVyOiBTaW1pbGFyIHRvIHdpbnRlciwgc3VtbWVyIGlzIGp1c3QgYW5vdGhlciBzZWFzb24gd2l0aCB3YXJtIGNvbmRpdGlvbnMgYW5kIG1vcmUgc3VubGlnaHQuIEl0IGRvZXMgbm90IGRlc2NyaWJlIGEgcHJvY2VzcyB0aGF0IHByb2R1Y2VzIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLlxcblxcbi0gKGcpIEZyZWV6aW5nOiBGcmVlemluZyBpcyBhIHByb2Nlc3MgdGhhdCBjYW4gcHJlc2VydmUgYmlvbG9naWNhbCB0aXNzdWVzIGJ1dCBkb2VzIG5vdCBnZW5lcmF0ZSBlbmVyZ3kgb25jZSBhbiBvcmdhbmlzbSBpcyBkZWFkLlxcblxcbi0gKGgpIEd1bnNob3RzOiBUaGlzIHVucmVsYXRlZCBvcHRpb24gcmVmZXJzIHRvIGEgc291cmNlIG9mIHBoeXNpY2FsIGltcGFjdCBvciBzb3VuZCwgbm90IGVuZXJneSBwcm9kdWN0aW9uIGJ5IGRlYWQgb3JnYW5pc21zLlxcblxcbkluIHJlYWxpdHksIGRlYWQgb3JnYW5pc21zIGNhbiBpbmRpcmVjdGx5IGNvbnRyaWJ1dGUgdG8gZW5lcmd5IGNyZWF0aW9uIHRocm91Z2ggZGVjb21wb3NpdGlvbiwgYSBuYXR1cmFsIHByb2Nlc3Mgd2hlcmUgZGVjb21wb3NlcnMgbGlrZSBiYWN0ZXJpYSBhbmQgZnVuZ2kgYnJlYWsgZG93biBvcmdhbmljIG1hdGVyaWFsLCByZWxlYXNpbmcgbnV0cmllbnRzIGJhY2sgaW50byB0aGUgZWNvc3lzdGVtLiBIb3dldmVyLCB0aGlzIHByb2Nlc3MgZG9lc24ndCBmYWxsIHVuZGVyIHRoZSBsaXRlcmFsIGludGVycHJldGF0aW9uIG9mICdEZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSBhZnRlciB3aGF0PycuIFRoZXJlZm9yZSwgdGhlIGNsb3Nlc3QgYW5kIGNvbmNlcHR1YWxseSByZWxldmFudCBhbnN3ZXIgd291bGQgYmUgdG8gYnVybiBvciBkZWNvbXBvc2UsIGJ1dCBzaW5jZSAnQnVybmluZycgaW4gdGhlIGNvbnRleHQgb2YgYmlvbG9naWNhbCBwcm9jZXNzZXMgdXN1YWxseSBkb2Vzbid0IHJlZmVyIHRvIHRoZSBuYXR1cmFsIGRlY29tcG9zaW5nIHByb2Nlc3Mgb2YgZGVhZCBvcmdhbmlzbXMsIG9wdGlvbiAoYSkgYXMgcHJlc2VudGVkIGluIHRoZSBjaG9pY2VzIGlzIG5vdCB0ZWNobmljYWxseSBjb3JyZWN0LiBcXG5cXG5UaGUgbGFpZC1vdXQgZXhwbGFuYXRpb24gZm9yIHdoeSB0aGUgb3RoZXIgb3B0aW9ucyBhcmUgbm90IGNvcnJlY3QgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2Ygd2h5ICdCdXJuaW5nJyBpc24ndCB0aGUgcHJlY2lzZSBhbnN3ZXIgaW4gdGhlIGNvbnRleHQgZ2l2ZW4sIGRlc3BpdGUgYmVpbmcgdGhlIGNsb3Nlc3QgdG8gdGhlIGFjdHVhbCBuYXR1cmFsIHByb2Nlc3MgaW52b2x2aW5nIGRlYWQgb3JnYW5pc21zIGNyZWF0aW5nIGVuZXJneS5cIn0ifV0sICIxNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFR1cm5pbmcgb24gd2hhdCB3aWxsIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVmVoaWNsZXMgKGIpIFNhdGVsbGl0ZXMgKGMpIExpZ2h0IGJ1bGIgKGQpIEJ1c2VzIChlKSBGaXJlY3JhY2tlcnMgKGYpIFNlbnNvcnkgbmV1cm9ucyAoZykgQW4gb2JqZWN0IChoKSBFbmdpbmVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdjJywgJ3JlYXNvbmluZyc6ICcoYSkgVmVoaWNsZXM6IFdoaWxlIHZlaGljbGVzLCBpbiBnZW5lcmFsLCBjb250YWluIGRldmljZXMgdGhhdCBtYXkgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIChsaWtlIGVuZ2luZSBpZ25pdGlvbiBzeXN0ZW1zKSwgdGhleSBhcmUgbm90IHRoZSBwcmltYXJ5IG1lYW5zIG9mIGVtaXR0aW5nIHN1Y2ggcmFkaWF0aW9uIGludGVudGlvbmFsbHkuXFxuXFxuKGIpIFNhdGVsbGl0ZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIHNhdGVsbGl0ZXMgbWF5IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiAoZm9yIGNvbW11bmljYXRpb24sIG5hdmlnYXRpb24sIGV0Yy4pLCBidXQgdGhleSBhcmUgbm90IHRoZSBtYWluIHRvb2xzIHVzZWQgZm9yIGVtaXR0aW5nIHRoaXMgcmFkaWF0aW9uIHdpdGhvdXQgc3BlY2lmaWMgcHVycG9zZS5cXG5cXG4oYykgTGlnaHQgYnVsYjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIgYXMgaXQgZW1pdHMgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgc3BlY2lmaWNhbGx5IGluIHRoZSBmb3JtIG9mIGxpZ2h0LCB3aGVuIGVsZWN0cmljaXR5IHBhc3NlcyB0aHJvdWdoIHRoZSBmaWxhbWVudC5cXG5cXG4qKkV4cGxhbmF0aW9uIGZvciAoYyk6KiogQSBsaWdodCBidWxiIGZ1bmN0aW9ucyBieSBwYXNzaW5nIGFuIGVsZWN0cmljIGN1cnJlbnQgdGhyb3VnaCBhIGNvbmR1Y3RvciBjYWxsZWQgYSBmaWxhbWVudC4gVGhlIHJlc2lzdGFuY2Ugb2YgdGhlIGZpbGFtZW50IGNhdXNlcyBpdCB0byBoZWF0IHVwIGFuZCBnbG93LCBlbWl0dGluZyBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBwcmltYXJpbHkgaW4gdGhlIHZpc2libGUgc3BlY3RydW0gKGxpZ2h0KS5cXG5cXG4oZCkgQnVzZXM6IExpa2UgdmVoaWNsZXMsIGJ1c2VzIG1pZ2h0IGNvbnRhaW4gZGV2aWNlcyB0aGF0IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgYnV0IHRoZXkgYXJlIG5vdCB0aGUgcHJpbWFyeSB0b29sIGZvciB0aGlzIGVtaXNzaW9uLlxcblxcbihlKSBGaXJlY3JhY2tlcnM6IFdoaWxlIHRoZXkgZG8gZW1pdCBsaWdodCBhbmQgaGVhdCAod2hpY2ggYXJlIHR5cGVzIG9mIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24pLCB0aGV5IGFyZSBub3QgYSBkZWxpYmVyYXRlIG1ldGhvZCBmb3IgZ2VuZXJhdGluZyBlbGVjdHJvbWFnbmV0aWMgd2F2ZXMuXFxuXFxuKGYpIFNlbnNvcnkgbmV1cm9uczogTmV1cm9ucywgaW5jbHVkaW5nIHNlbnNvcnkgbmV1cm9ucywgY2FycnkgZWxlY3RyaWNhbCBzaWduYWxzIHJlbGF0ZWQgdG8gc2Vuc29yeSBpbnB1dCBhbmQgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBpbiB0aGUgYnJvYWQgc2Vuc2UgcmVxdWlyZWQgYnkgdGhlIHF1ZXN0aW9uLlxcblxcbihnKSBBbiBvYmplY3Q6IFRoaXMgaXMgdG9vIHZhZ3VlIHRvIHByb3ZpZGUgYSBjb3JyZWN0IGFuc3dlci4gTm90IGFsbCBvYmplY3RzIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBpbiB0aGUgd2F5IHRoZSBxdWVzdGlvbiBpcyBhc2tpbmcuXFxuXFxuKGgpIEVuZ2luZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIGVuZ2luZXMgY29udGFpbiBkZXZpY2VzIHRoYXQgbWF5IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBkdXJpbmcgb3BlcmF0aW9uLCBzdWNoIGFzIGluIGlnbml0aW9uIHN5c3RlbXMsIGJ1dCB0aGlzIGlzIG5vdCB0aGUgcHJpbWFyeSBtZXRob2Qgb2YgZW1pdHRpbmcgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5JbiBzdW1tYXJ5LCB0aGUgb25seSBvcHRpb24gZGlyZWN0bHkgZGVzaWduZWQgdG8gZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGFzIGludGVuZGVkIGJ5IHRoZSBxdWVzdGlvbiBpcyAoYykgTGlnaHQgYnVsYi4nfSJ9XSwgIjE3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlcmUgaXMgYSB6eWdvdGUgZm9ybWVkIGJ5IHNwZXJtIHN3aW1taW5nIHRvIGFuIGVnZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQ29sZGVyIGFuZCB3ZXR0ZXIgKGIpIE9jZWFuIHdhdGVyIChjKSBHcmFwdG9saXRlcyAoZCkgUmFwaWQgZXhwYW5zaW9uIChlKSBBIGRlbHRhIChmKSBBbiBhcmNoZWdvbml1bSAoZykgQmFybmFjbGVzIChoKSBBbiBvcmdhbmlzbSdzIGJvZHkifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2YnLCAncmVhc29uaW5nJzogXCJMZXQncyBhbmFseXplIGVhY2ggb3B0aW9uOlxcblxcbihhKSBDb2xkZXIgYW5kIHdldHRlcjogVGhpcyBwaHJhc2UgZGVzY3JpYmVzIGFuIGVudmlyb25tZW50LCBidXQgaXQgZG9lc24ndCBzcGVjaWZ5IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gWnlnb3RlcyBhcmUgbm90IHNwZWNpZmljYWxseSBmb3JtZWQgaW4gY29sZGVyIGFuZCB3ZXR0ZXIgZW52aXJvbm1lbnRzOyByYXRoZXIsIHRoZXkgYXJlIGZvcm1lZCBpbiByZXByb2R1Y3RpdmUgc3lzdGVtcyBvZiBvcmdhbmlzbXMuXFxuXFxuKGIpIE9jZWFuIHdhdGVyOiBXaGlsZSBlZ2dzIGFuZCBzcGVybSBmcm9tIGNlcnRhaW4gbWFyaW5lIG9yZ2FuaXNtcyBjYW4gYmUgZm91bmQgaW4gb2NlYW4gd2F0ZXIgYW5kIGZlcnRpbGl6YXRpb24gY2FuIG9jY3VyIHRoZXJlLCB0aGlzIGRvZXNuJ3QgYWRkcmVzcyB0aGUgZm9ybWF0aW9uIG9mIGEgenlnb3RlLiBUaGUgenlnb3RlIGl0c2VsZiBpcyB0aGUgcmVzdWx0IG9mIGZlcnRpbGl6YXRpb24sIHdoaWNoIG9jY3VycyB3aXRoaW4gdGhlIHJlcHJvZHVjdGl2ZSBzeXN0ZW1zIG9mIHRoZSBvcmdhbmlzbXMuXFxuXFxuKGMpIEdyYXB0b2xpdGVzOiBHcmFwdG9saXRlcyBhcmUgYW4gZXh0aW5jdCBncm91cCBvZiBjb2xvbmlhbCBhbmltYWxzLCBzcGVjaWZpY2FsbHksIHRoZXkgd2VyZSBhIHR5cGUgb2YgUGFsZW96b2ljIG1hcmluZSBpbnZlcnRlYnJhdGUuIFp5Z290ZSBmb3JtYXRpb24gaXMgbm90IGRpcmVjdGx5IGxpbmtlZCB0byBncmFwdG9saXRlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgaXQuIFp5Z290ZSBmb3JtYXRpb24gaGFwcGVucyB3aXRoaW4gdGhlIHJlcHJvZHVjdGl2ZSBzeXN0ZW1zIG9mIGxpdmluZyBvcmdhbmlzbXMuXFxuXFxuKGQpIFJhcGlkIGV4cGFuc2lvbjogVGhpcyByZXNlbWJsZXMgYSBwaHlzaWNhbCBwcm9jZXNzIGJ1dCBkb2VzIG5vdCBwb2ludCB0byBhbnkgc3BlY2lmaWMgbG9jYXRpb24gZm9yIHp5Z290ZSBmb3JtYXRpb24uIEl0J3MgYSBjaGFyYWN0ZXJpc3RpYyBvZiBncm93dGggb3IgZXhwYW5zaW9uLCBub3QgYSBsb2NhdGlvbi5cXG5cXG4oZSkgQSBkZWx0YTogQSBkZWx0YSBpcyBhIGxhbmRmb3JtIGNyZWF0ZWQgYnkgc2VkaW1lbnRhcnkgZGVwb3NpdHMgYXQgdGhlIG1vdXRoIG9mIGEgcml2ZXIgd2hlcmUgaXQgbWVldHMgYSBsYXJnZXIgYm9keSBvZiB3YXRlci4gVGhpcyBnZW9ncmFwaGljYWwgZmVhdHVyZSBpcyBub3QgcmVsYXRlZCB0byB0aGUgbG9jYXRpb24gd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLlxcblxcbihnKSBCYXJuYWNsZXM6IEJhcm5hY2xlcyBhcmUgbWFyaW5lIGNydXN0YWNlYW5zLCBidXQgdGhlaXIgcmVwcm9kdWN0aW9uIG1ldGhvZCAoZXh0ZXJuYWwgZmVydGlsaXphdGlvbikgYW5kIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiBvZiB6eWdvdGUgZm9ybWF0aW9uICh3aXRoaW4gdGhlIHJlcHJvZHVjdGl2ZSBzeXN0ZW0gb2YgdGhlIGJhcm5hY2xlKSBhcmUgbm90IHRoZSBzYW1lIGFzIHRob3NlIGZvciBtb3N0IG90aGVyIGFuaW1hbHMuIEZ1cnRoZXJtb3JlLCB0aGUgcXVlc3Rpb24gZG9lc24ndCBzcGVjaWZ5IHRoZSBvcmdhbmlzbSB0eXBlLCB0aGVyZWJ5IGxlYWRpbmcgdGhpcyBhcyBhbiBpbmNvcnJlY3QgY2hvaWNlIHdpdGhvdXQgdGhhdCBhc3N1bXB0aW9uLlxcblxcbihoKSBBbiBvcmdhbmlzbSdzIGJvZHk6IFRoaXMgaXMgYSB2YWd1ZSBvcHRpb24gdGhhdCBjb3ZlcnMgYSB3aWRlIHJhbmdlIG9mIGVudmlyb25tZW50cyB3aXRoaW4gYW4gb3JnYW5pc20ncyBib2R5LiBXaGlsZSB0aGlzIGlzIGJyb2FkbHkgY29ycmVjdCwgaXQncyBub3Qgc3BlY2lmaWMgZW5vdWdoLCBhbmQgdGhlIGZvY3VzIHNob3VsZCBiZSBvbiBhIHNwZWNpZmljIGluc3RhbmNlIChsaWtlIHdpdGhpbiBhbiBlZ2cpLlxcblxcbk5vdywgbGV0J3MgZXhhbWluZSAoZikgYW4gYXJjaGVnb25pdW0uXFxuXFxuQW4gYXJjaGVnb25pdW0gaXMgYSB0eXBlIG9mIHNwZWNpYWxpemVkIHJlcHJvZHVjdGl2ZSBzdHJ1Y3R1cmUgZm91bmQgaW4gbm9uLXZhc2N1bGFyIHBsYW50cyAoc3VjaCBhcyBtb3NzZXMpIGFuZCBzb21lIGFsZ2FlLiBJbnNpZGUgdGhlIGFyY2hlZ29uaXVtLCBhIGZlbWFsZSBnYW1ldGUgKGVnZykgaXMgZm9ybWVkLCBhbmQgZmVydGlsaXphdGlvbiBvY2N1cnMgd2hlbiBhIHNwZXJtIGZyb20gYW5vdGhlciBtYWxlIGdhbWV0ZSBlbnRlcnMuIFRoZSByZXN1bHRpbmcgcHJvZHVjdCBvZiB0aGlzIGZlcnRpbGl6YXRpb24gaXMgYSB6eWdvdGUuIFxcblxcbkluIHN1bW1hcnksIChmKSBpcyB0aGUgbW9zdCBhY2N1cmF0ZSBhbW9uZyB0aGUgb3B0aW9ucyBwcm92aWRlZCBhcyBpdCBzcGVjaWZpY2FsbHkgZGVub3RlcyB0aGUgbG9jYXRpb24gd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkOiBpbnNpZGUgYW4gYXJjaGVnb25pdW0gd2l0aGluIGEgZmVtYWxlIHJlcHJvZHVjdGl2ZSB0cmFjdCBvZiBjZXJ0YWluIHBsYW50cy4gSXQgaXMgc3BlY2lmaWMsIGJpb2xvZ2ljYWwsIGFuZCBhbmF0b21pY2FsbHkgY29ycmVjdCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgcGxhbnQgcmVwcm9kdWN0aW9uLlwifSJ9XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZycsICdyZWFzb25pbmcnOiBcIlRoZSBjb3JyZWN0IGFuc3dlciBpcyAnZykgQWNpZCcgYmVjYXVzZSBpdCBjYW4gY2F1c2UgY2hlbWljYWwgYnVybnMsIHRpc3N1ZSBkYW1hZ2UsIGFuZCBvdGhlciBzZXJpb3VzIGluanVyaWVzIHRvIHRoZSBleWVzIHdoZW4gaXQgY29tZXMgaW50byBjb250YWN0IHdpdGggdGhlIGV5ZXMuIFxcblxcbkxldCdzIGdvIHRocm91Z2ggdGhlIGluY29ycmVjdCBhbnN3ZXJzIGFuZCBleHBsYWluIHdoeSB0aGV5J3JlIG5vdCBjb3JyZWN0OlxcblxcbihhKSBNaWxkZXc6IE1pbGRldyBpcyBhIHR5cGUgb2YgZnVuZ3VzIHRoYXQgdGhyaXZlcyBpbiBkYW1wIGVudmlyb25tZW50cy4gV2hpbGUgaXQgY2FuIGNhdXNlIGFsbGVyZ2ljIHJlYWN0aW9ucyBpbiBzb21lIHBlb3BsZSwgaXQgZG9lcyBub3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy5cXG5cXG4oYikgTm9ybWFsIHdhdGVyOiBOb3JtYWwgd2F0ZXIgaXMgZXNzZW50aWFsIGZvciBsaWZlIGFuZCBkb2VzIG5vdCBwb3NlIGhhcm0gdG8gZXllcy4gSW4gZmFjdCwgaXQncyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBleWUgaGVhbHRoIGJ5IGtlZXBpbmcgdGhlbSBjbGVhbiBhbmQgbW9pc3QuXFxuXFxuKGMpIEhlcnBlczogV2hpbGUgaXQgY2FuIGFmZmVjdCB0aGUgc2tpbiBhcm91bmQgdGhlIGV5ZXMgYW5kIGNhdXNlIGNvbmRpdGlvbnMgbGlrZSBIZXJwZXMgU2ltcGxleCBWaXJ1cyBrZXJhdGl0aXMsIGl0IGlzbid0IGluaGVyZW50bHkgaGFybWZ1bCB0byB0aGUgZXllcyBpbiBhIGRpcmVjdCBtYW5uZXIgbGlrZSBhY2lkLiBUaGUgaGFybSBjb21lcyBmcm9tIGNvbXBsaWNhdGlvbnMgb3Igc2Vjb25kYXJ5IGJhY3RlcmlhbCBpbmZlY3Rpb25zIHdoZW4gdGhlIHZpcnVzIGFmZmVjdHMgdGhlIGV5ZXMuXFxuXFxuKGQpIE5vcm1hbCBhaXI6IEFpciwgYXMgbG9uZyBhcyBpdCdzIGJyZWF0aGFibGUgYW5kIGZyZWUgZnJvbSBjb250YW1pbmFudHMsIGRvZXMgbm90IHBvc2UgYW55IHJpc2sgdG8gdGhlIGV5ZXMuIEl0J3MgYWN0dWFsbHkgbmVjZXNzYXJ5IGZvciB0aGUgZXllcyB0byBmdW5jdGlvbiBwcm9wZXJseS5cXG5cXG4oZSkgQ29hbDogQ29hbCwgYSBjb21wb3NpdGUgb2Ygb3JnYW5pYyBtYXRlcmlhbHMsIGRvZXNuJ3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy4gSG93ZXZlciwgZXhwb3N1cmUgdG8gY29hbCBkdXN0IGNhbiBsZWFkIHRvIHJlc3BpcmF0b3J5IGlzc3Vlcywgd2hpY2ggaW5kaXJlY3RseSBhZmZlY3QgZXllIGhlYWx0aC5cXG5cXG4oZikgTW9sZDogU2ltaWxhciB0byBtaWxkZXcsIG1vbGQgY2FuIGNhdXNlIGFsbGVyZ2llcyBhbmQgcmVzcGlyYXRvcnkgcHJvYmxlbXMgYnV0IGRvZXNuJ3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy4gSXQncyB0aGUgYWlyYm9ybmUgc3BvcmVzIGFuZCByZWFjdGl2ZSBjb21wb3VuZHMgdGhhdCBjYW4gYmUgcHJvYmxlbWF0aWMuXFxuXFxuKGgpIENvbnRhY3Qgc29sdXRpb246IFR5cGljYWxseSwgYSBjb250YWN0IHNvbHV0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIHNhZmUgZm9yIHVzZSB3aXRoIGNvbnRhY3QgbGVuc2VzIGFuZCBkb2Vzbid0IGhhcm0gdGhlIGV5ZXMgaWYgdXNlZCBjb3JyZWN0bHkuIEFueSBwb3RlbnRpYWwgaGFybSB3b3VsZCBiZSBhIHJlc3VsdCBvZiBpbXByb3BlciB1c2Ugb3IgY29udGFtaW5hdGlvbi5cXG5cXG5JbiBzdW1tYXJ5LCB3aGlsZSBhbGwgdGhlIG9wdGlvbnMgY2FuIHBvdGVudGlhbGx5IGNhdXNlIGluZGlyZWN0IGhhcm0gdW5kZXIgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlcywgJ2cpIEFjaWQnIGRpcmVjdGx5IGFuZCBhY3V0ZWx5IGhhcm1zIHRoZSBleWVzLCBtYWtpbmcgaXQgdGhlIGNvcnJlY3QgYW5zd2VyIHRvIHRoZSBxdWVzdGlvbi5cIn0ifV0sICIxOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZm9ybXMgaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWU/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhbWJvbyAoYikgRGVzaWNjYXRpb24gKGMpIEJ1cnJzIChkKSBFbG1zIChlKSBNb3NzIChmKSBDb2FsIChnKSBDYW5keSAoaCkgTWVhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZScsICdyZWFzb25pbmcnOiBcIjEuIFJlYWRpbmcgdGhlIHF1ZXN0aW9uIGFuZCBvcHRpb25zOiBXZSBhcmUgYXNrZWQgd2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS5cXG5cXG4yLiBJZGVudGlmeWluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgb3B0aW9uczogXFxuICAgLSBCYW1ib28sIERlc2ljY2F0aW9uLCBCdXJycywgRWxtcywgQ29hbCwgQ2FuZHksIGFuZCBNZWF0IGFyZSBhbGwgZGlmZmVyZW50IG9yZ2FuaWMgbWF0dGVyLCBidXQgbm90IGFsbCBvZiB0aGVtIGZvcm0gcGVhdCB1bmRlciB0aGUgbWVudGlvbmVkIGNvbmRpdGlvbnMuXFxuXFxuMy4gRGV0ZXJtaW5pbmcgd2hpY2ggb3B0aW9ucyBhcmUgbm90IGxvZ2ljYWw6XFxuICAgLSAoYSkgQmFtYm9vOiBXaGlsZSBiYW1ib28gaXMgYSBwbGFudCwgaXQgdHlwaWNhbGx5IGdyb3dzIGluIHJlbGF0aXZlbHkgbWlsZCBjb25kaXRpb25zIGFuZCBkb2VzIG5vdCB0cmFuc2Zvcm0gaW50byBwZWF0IHVuZGVyIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUuXFxuICAgLSAoYikgRGVzaWNjYXRpb246IFRoaXMgcmVmZXJzIHRvIHRoZSBwcm9jZXNzIG9mIGRyeWluZyBvdXQgYW5kIGlzIG5vdCBhIGRpcmVjdCBjb250cmlidXRvciB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuIEl0IGRvZXNuJ3QgaW52b2x2ZSB0aGUgbmVjZXNzYXJ5IGhlYXQgYW5kIHByZXNzdXJlLlxcbiAgIC0gKGMpIEJ1cnJzOiBCdXJycyBhcmUgc21hbGwgc2VlZCBiYWxscyBhdHRhY2hlZCB0byBwbGFudHMsIHByaW1hcmlseSB1c2VkIGJ5IHBsYW50cyBmb3IgZGlzcGVyc2FsLiBUaGV5IGRvbid0IGZvcm0gcGVhdC5cXG4gICAtIChkKSBFbG1zOiBUaGVzZSBhcmUgdHJlZXMgY29tbW9ubHkgZm91bmQgaW4gdGVtcGVyYXRlIHJlZ2lvbnMuIFRoZXkgY2FuIGRlY29tcG9zZSBvdmVyIHRpbWUgYnV0IGRvIG5vdCBmb3JtIHBlYXQgdW5kZXIgbm9ybWFsIG9yIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUuXFxuICAgLSAoZSkgTW9zczogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIE1vc3MgaXMgYSB0eXBlIG9mIG5vbi12YXNjdWxhciBsYW5kIHBsYW50IHRoYXQgZ3Jvd3MgaW4gZGFtcCBlbnZpcm9ubWVudHMuIE92ZXIgbG9uZyBwZXJpb2RzLCB1bmRlciBjb25kaXRpb25zIG9mIGhpZ2ggcHJlc3N1cmUgYW5kIHNsb3dseSBkZWNvbXBvc2luZyBpbiB3YXRlci1yaWNoIGVudmlyb25tZW50cywgbW9zcyBjb250cmlidXRlcyB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuXFxuICAgLSAoZikgQ29hbDogQ29hbCBmb3JtcyBmcm9tIHRoZSByZW1haW5zIG9mIHBsYW50cyB1bmRlciBpbnRlbnNlIGhlYXQgYW5kIHByZXNzdXJlIGRlZXAgd2l0aGluIHRoZSBFYXJ0aCdzIGNydXN0LCBidXQgaXQgZG9lc24ndCBmb3JtIHBlYXQuIFBlYXQgYW5kIGNvYWwgYXJlIGRpc3RpbmN0IGdlb2xvZ2ljYWwgZm9ybWF0aW9ucy5cXG4gICAtIChnKSBDYW5keTogVGhpcyBpcyBub3Qgb3JnYW5pYyBtYXR0ZXIgdGhhdCBjYW4gdHJhbnNmb3JtIGludG8gcGVhdC4gSXQncyBhIHByb2Nlc3NlZCBmb29kIHByb2R1Y3QuXFxuICAgLSAoaCkgTWVhdDogTWVhdCBkb2VzIG5vdCBmb3JtIHBlYXQuIEl0IGRlY29tcG9zZXMgaW4gYSBkaWZmZXJlbnQgbWFubmVyIGFuZCBkb2Vzbid0IGNvbnRyaWJ1dGUgZGlyZWN0bHkgdG8gcGVhdCBmb3JtYXRpb24uXFxuXFxuNC4gUHJvdmlkaW5nIGV4cGxhbmF0aW9ucyBmb3IgaW5jb3JyZWN0IGFuc3dlcnM6XFxuICAgLSBCYW1ib28sIEJ1cnJzLCBFbG1zLCBDYW5keSwgYW5kIE1lYXQgXHUyMDEzIFRoZXNlIG9wdGlvbnMgYXJlIGVpdGhlciBub3QgcGxhbnRzIG9yIGZvcm1zIG9mIG9yZ2FuaWMgbWF0dGVyIHRoYXQgZG9uJ3QgdW5kZXJnbyB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyAoZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSkgcmVxdWlyZWQgdG8gZm9ybSBwZWF0LlxcbiAgIC0gRGVzaWNjYXRpb24gXHUyMDEzIFRoaXMgcHJvY2VzcyBpcyB0aGUgcmVtb3ZhbCBvZiBtb2lzdHVyZSBmcm9tIGEgc3Vic3RhbmNlLCB3aGljaCBkb2Vzbid0IGFsaWduIHdpdGggdGhlIGNvbmRpdGlvbnMgcmVxdWlyZWQgdG8gZm9ybSBwZWF0IChoaWdoIHdhdGVyIGNvbnRlbnQpLlxcbiAgIC0gQ29hbCBcdTIwMTMgV2hpbGUgc2ltaWxhciB0byBwZWF0IGluIHRoYXQgaXQncyBmb3JtZWQgZnJvbSBwbGFudCBkZWJyaXMsIGl0J3MgZm9ybWVkIHVuZGVyIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGNvbmRpdGlvbnMgZGVlcCB3aXRoaW4gdGhlIEVhcnRoLCBub3QgdGhyb3VnaCBzdXJmYWNlIHByb2Nlc3NlcyBpbnZvbHZpbmcgbW9zcy5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZSkgTW9zcyBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IG9wdGlvbiBhbW9uZyB0aGUgY2hvaWNlcyB0aGF0LCB3aGVuIHN1YmplY3RlZCB0byBjb25kaXRpb25zIG9mIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLCBjYW4gY29udHJpYnV0ZSB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuXCJ9In1dfSwgImNvbnZlcnNhdGlvbl9GQSI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnYyd9In1dLCAiMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBpcnJhZGlhdGluZyBmb29kIGRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBSZWxpZXZlIHBhaW4gKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50cyAoYykgSW1wcm92ZXMgZm9vZCBzYWZldHkgKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWEgKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlIChmKSBDaGVtaWNhbCBjaGFuZ2VzIChnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQgKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGgifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnfSJ9XSwgIjIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRmliZXIgZm9sbGljbGVzIChiKSBFeGZvbGlhdGlvbiAoYykgUmVzaXN0YW5jZSAoZCkgTGF5ZXJzIG9mIGZhdCAoZSkgRXZhcG9yYXRpb24gKGYpIEEgY3V0aWNsZSAoZykgU2Vuc29yeSBuZXVyb25zIChoKSBGdXIgYW5kIGZhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnYSd9In1dLCAiMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG8gZWFydGh3b3JtcyBkbyB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmP1xuQW5zd2VyIENob2ljZXM6IChhKSBEaWVzIChiKSBSZWdyb3dzIGl0IChjKSBSZXByb2R1Y2VzIChkKSBTZWRpbWVudCAoZSkgUm9vdCBncm93dGggKGYpIE1pZ3JhdGUgKGcpIFN0b3BzIGdyb3dpbmcgKGgpIFJvb3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdiJ30ifV0sICI0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogTGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRoZSBlbnZpcm9ubWVudCAoYikgUmFpbnN0b3JtcyAoYykgRGVzdHJ1Y3Rpb24gKGQpIFZpc2liaWxpdHkgKGUpIFRodW5kZXIgKGYpIFRoZSBzdW4gKGcpIFRoZSB3ZWF0aGVyLiAoaCkgVHJhbnNwb3J0YXRpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjUiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBFdmlkZW5jZSBvZiBwYXN0IGxpZmUgY2FuIHNob3cgdGhhdCB3aGF0IHVzZWQgdG8gbGl2ZSBpbiBhIHBsYWNlP1xuQW5zd2VyIENob2ljZXM6IChhKSBTb3VscyAoYikgQW5pbWFscyB3aXRoIGJhY2tib25lcyAoYykgT3JnYW5pc21zIChkKSBQbGFudCBvciBhbmltYWwgKGUpIE1hbGVzIGFuZCBmZW1hbGVzIChmKSBEZWZvcmVzdGF0aW9uIChnKSBSZWluY2FybmF0aW9uIChoKSBJbXBvcnRhbnQgaGFiaXRhdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2QnfSJ9XSwgIjYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBIb3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93biwgb3IgaW5oZXJpdGVkLCBpcyBmb3VuZCBpbiBpbmZvcm1hdGlvbiBpbiBhbiBvcmdhbmlzbSdzIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNwZWNpZXMgKGIpIE1lc3NlbmdlcnMgKGMpIEhhaXIgZm9sbGljbGVzIChkKSBDeWNsZXMgKGUpIFNraW4gY2VsbHMgKGYpIEVuZG9jcmluZSBzeXN0ZW0gKGcpIENocm9tb3NvbWVzIChoKSBQcm90ZWlucyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZyd9In1dLCAiNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgYXJlIHRoZSBtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEdyYXNzIChiKSBBbmltYWxzIChjKSBBcHBsZXMgKGQpIFBvdGF0b2VzIChlKSBUcmVlcyAoZikgUGxhbnRzIChnKSBGdW5naSAoaCkgRmllbGRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdmJ30ifV0sICI4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgY2hhbmdlIHZlZ2V0YXRpb24gaW50bz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2NhcmNlIHJlc291cmNlcyAoYikgSGFybWZ1bCBzdWJzdGFuY2VzIChjKSBTY2FycyAoZCkgRm9zc2lsIGZ1ZWxzIChlKSBTZWRpbWVudCAoZikgU29tZXRoaW5nIHRvIG1vdmUgKGcpIE1hZ2ljIChoKSBQaWNuaWNzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdkJ30ifV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnfSJ9XSwgIjEwIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBLaW5ldGljIGVuZXJneSAoYikgTG91ZCBub2lzZXMgKGMpIFZpYnJhdGluZyB3YXZlcyAoZCkgQW4gb2JqZWN0IGlzIHNlZW4gKGUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgKGYpIERlb3h5cmlib251Y2xlaWMgYWNpZCAoZykgSHlkcm9nZW4gYW5kIG94eWdlbiAoaCkgSGFybWZ1bCBzdWJzdGFuY2VzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdjJ30ifV0sICIxMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWFqb3IgZWZmZWN0cyAoYikgUmVzcGlyYXRpb24gKGMpIFJvbGV4IChkKSBEZW5zaXR5IChlKSBEaXBodGhlcmlhIChmKSBDYW5pcyBsdXB1cyAoZykgU2tpbiBjb2xvciAoaCkgRGlnZXN0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7J2ZpbmFsX2Fuc3dlcic6ICdnJ30ifV0sICIxMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsP1xuQW5zd2VyIENob2ljZXM6IChhKSBTaGVlcCAoYikgU2FsbW9uIChjKSBHcmFzc2VzIChkKSBCYXRzIChlKSBBbmltYWxzIChmKSBTaHJ1YnMgKGcpIEh1bWFucyAoaCkgVHJlZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjEzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hvIGNhbiBzaGl2ZXI/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhdHMgKGIpIFNpZGV3YWxrcyAoYykgSHVtYW5zIChkKSBCZWVzIChlKSBLb2FsYXMgKGYpIE1vdW50YWlucyAoZykgVHJlZXMgKGgpIFBlb3BsZSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZCd9In1dLCAiMTQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBLaXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBpcyBhbiBleGFtcGxlIG9mIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIExlYXJuaW5nIGJlaGF2aW9yIChiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlcyAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbiAoZSkgQmFkIGJlaGF2aW9yIChmKSBMZWFybmluZyBub3RoaW5nIChnKSBFeHRpbmd1aXNoaW5nIGJlaGF2aW9yIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjE1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQnVybmluZyAoYikgV2ludGVyIChjKSBNdXRhdGlvbnMgKGQpIENvb2tpbmcgKGUpIEN5Y2xlcyAoZikgU3VtbWVyIChnKSBGcmVlemluZyAoaCkgR3Vuc2hvdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2EnfSJ9XSwgIjE2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogVHVybmluZyBvbiB3aGF0IHdpbGwgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBWZWhpY2xlcyAoYikgU2F0ZWxsaXRlcyAoYykgTGlnaHQgYnVsYiAoZCkgQnVzZXMgKGUpIEZpcmVjcmFja2VycyAoZikgU2Vuc29yeSBuZXVyb25zIChnKSBBbiBvYmplY3QgKGgpIEVuZ2luZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2MnfSJ9XSwgIjE3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlcmUgaXMgYSB6eWdvdGUgZm9ybWVkIGJ5IHNwZXJtIHN3aW1taW5nIHRvIGFuIGVnZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQ29sZGVyIGFuZCB3ZXR0ZXIgKGIpIE9jZWFuIHdhdGVyIChjKSBHcmFwdG9saXRlcyAoZCkgUmFwaWQgZXhwYW5zaW9uIChlKSBBIGRlbHRhIChmKSBBbiBhcmNoZWdvbml1bSAoZykgQmFybmFjbGVzIChoKSBBbiBvcmdhbmlzbSdzIGJvZHkifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2YnfSJ9XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAieydmaW5hbF9hbnN3ZXInOiAnZyd9In1dLCAiMTkiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGZvcm1zIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lP1xuQW5zd2VyIENob2ljZXM6IChhKSBCYW1ib28gKGIpIERlc2ljY2F0aW9uIChjKSBCdXJycyAoZCkgRWxtcyAoZSkgTW9zcyAoZikgQ29hbCAoZykgQ2FuZHkgKGgpIE1lYXQifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogInsnZmluYWxfYW5zd2VyJzogJ2UnfSJ9XX19\"\n", + " encoded_data = \"eyJjb252ZXJzYXRpb25fUkZBX2dwdDNfNSI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiYSkgU2Vjb25kcyBhbmQgbWludXRlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IHVzZWQgZm9yIHByZWRpY3RpbmcgdGltZSBpbnRlcnZhbHMuIFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIHVzZWQgZm9yIHZhcmlvdXMgcHVycG9zZXMgc3VjaCBhcyBjb21tdW5pY2F0aW9uLCBuYXZpZ2F0aW9uLCBhbmQgd2VhdGhlciBmb3JlY2FzdGluZywgYnV0IGl0IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIHRpbWUgaW50ZXJ2YWxzLlxcblxcbmIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2U6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIGVhcnRocXVha2VzLiBFYXJ0aHF1YWtlIHByZWRpY3Rpb24gaXMgYSBjb21wbGV4IHByb2Nlc3MgdGhhdCBpbnZvbHZlcyBzZWlzbW9sb2d5IGFuZCBvdGhlciBzY2llbnRpZmljIG1ldGhvZHMsIGJ1dCBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3Qgb25lIG9mIHRoZW0uXFxuXFxuZCkgNzAtNzUgZGVncmVlcyBGYWhyZW5oZWl0OiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZXMuIFdoaWxlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBwcm92aWRlIHRlbXBlcmF0dXJlIGRhdGEsIGl0IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIHNwZWNpZmljIHRlbXBlcmF0dXJlIHJhbmdlcy5cXG5cXG5lKSBSYXBpZCBjaGFuZ2VzIG9jY3VyOiBUaGlzIG9wdGlvbiBpcyB0b28gdmFndWUgYW5kIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGNvcnJlY3Qgb3Igbm90LiBTYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCB0byBtb25pdG9yIGNoYW5nZXMgaW4gdmFyaW91cyBlbnZpcm9ubWVudGFsIGZhY3RvcnMsIGJ1dCBpdCBpcyBub3QgdXNlZCBzcGVjaWZpY2FsbHkgZm9yIHByZWRpY3RpbmcgcmFwaWQgY2hhbmdlcy5cXG5cXG5mKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0czogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gc2F0ZWxsaXRlIHRlY2hub2xvZ3kgb3IgYW55IHR5cGUgb2YgcHJlZGljdGlvbi5cXG5cXG5nKSBTbm93LCBpY2UsIGFuZCByb2NrOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyB0b28gc3BlY2lmaWMgYW5kIGRvZXMgbm90IGNvdmVyIHRoZSBicm9hZCByYW5nZSBvZiBwcmVkaWN0aW9ucyB0aGF0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIGZvci4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgdG8gbW9uaXRvciBzbm93LCBpY2UsIGFuZCByb2NrIGZvcm1hdGlvbnMsIGl0IGlzIG5vdCB1c2VkIGV4Y2x1c2l2ZWx5IGZvciB0aGlzIHB1cnBvc2UuXFxuXFxuaCkgQXJvdW5kIDUgdG8gMjcgZGVncmVlcyBDZWxzaXVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyB0b28gc3BlY2lmaWMgYW5kIGRvZXMgbm90IGNvdmVyIHRoZSBicm9hZCByYW5nZSBvZiB0ZW1wZXJhdHVyZSBwcmVkaWN0aW9ucyB0aGF0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIGZvci4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIHByb3ZpZGUgdGVtcGVyYXR1cmUgZGF0YSwgaXQgaXMgbm90IHVzZWQgZXhjbHVzaXZlbHkgZm9yIHByZWRpY3RpbmcgdGVtcGVyYXR1cmVzIHdpdGhpbiBhIHNwZWNpZmljIHJhbmdlLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIHdoYXQgaXQncyBsaWtlIG91dHNpZGUgZWFjaCBkYXksIGFzIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIGNvbW1vbmx5IHVzZWQgZm9yIHdlYXRoZXIgZm9yZWNhc3RpbmcgYW5kIHByZWRpY3RpbmcgZGFpbHkgd2VhdGhlciBjb25kaXRpb25zLlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImNcIn0ifV0sICIxIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGlycmFkaWF0aW5nIGZvb2QgZG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFJlbGlldmUgcGFpbiAoYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzIChjKSBJbXByb3ZlcyBmb29kIHNhZmV0eSAoZCkgQWxsb3dzIGdyb3d0aCBvZiBiYWN0ZXJpYSAoZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGUgKGYpIENoZW1pY2FsIGNoYW5nZXMgKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZCAoaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiKGEpIFJlbGlldmUgcGFpbjogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggcmVsaWV2aW5nIHBhaW4uIElycmFkaWF0aW9uIGlzIGEgcHJvY2VzcyBvZiBleHBvc2luZyBmb29kIHRvIGlvbml6aW5nIHJhZGlhdGlvbiB0byBraWxsIGJhY3RlcmlhLCB2aXJ1c2VzLCBhbmQgb3RoZXIgcGF0aG9nZW5zIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIGZvb2QuIEl0IGlzIG5vdCBhIHBhaW4gcmVsaWV2ZXIuXFxuXFxuKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50czogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGVuaGFuY2UgdGhlIGZvb2QncyBudXRyaWVudHMuIEluIGZhY3QsIHNvbWUgc3R1ZGllcyBoYXZlIHNob3duIHRoYXQgaXJyYWRpYXRpb24gY2FuIGNhdXNlIGEgc2xpZ2h0IGxvc3Mgb2YgY2VydGFpbiB2aXRhbWlucyBpbiBmb29kLiBIb3dldmVyLCB0aGUgbG9zcyBpcyBub3Qgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIGFmZmVjdCB0aGUgb3ZlcmFsbCBudXRyaXRpb25hbCB2YWx1ZSBvZiB0aGUgZm9vZC5cXG5cXG4oZCkgQWxsb3dzIGdyb3d0aCBvZiBiYWN0ZXJpYTogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGFjdHVhbGx5IGtpbGxzIGJhY3RlcmlhIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC4gSXQgZG9lcyBub3QgYWxsb3cgdGhlIGdyb3d0aCBvZiBiYWN0ZXJpYS5cXG5cXG4oZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBjYW4gYWN0dWFsbHkgaGVscCByZWR1Y2UgZm9vZCB3YXN0ZS4gQnkga2lsbGluZyBiYWN0ZXJpYSBhbmQgb3RoZXIgcGF0aG9nZW5zLCBpcnJhZGlhdGlvbiBjYW4gZXh0ZW5kIHRoZSBzaGVsZiBsaWZlIG9mIGZvb2QsIHdoaWNoIG1lYW5zIGxlc3MgZm9vZCBpcyB3YXN0ZWQuXFxuXFxuKGYpIENoZW1pY2FsIGNoYW5nZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBjYW4gY2F1c2Ugc29tZSBjaGVtaWNhbCBjaGFuZ2VzIGluIHRoZSBmb29kLCBidXQgdGhlc2UgY2hhbmdlcyBhcmUgbm90IGhhcm1mdWwgdG8gaHVtYW4gaGVhbHRoLiBJbiBmYWN0LCB0aGUgV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbiwgdGhlIFUuUy4gRm9vZCBhbmQgRHJ1ZyBBZG1pbmlzdHJhdGlvbiwgYW5kIG90aGVyIG9yZ2FuaXphdGlvbnMgaGF2ZSBkZXRlcm1pbmVkIHRoYXQgaXJyYWRpYXRlZCBmb29kIGlzIHNhZmUgdG8gZWF0LlxcblxcbihnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQ6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBkb2VzIG5vdCBnZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQuIEl0IGlzIGEgcHJvY2VzcyBvZiBleHBvc2luZyBmb29kIHRvIGlvbml6aW5nIHJhZGlhdGlvbiB0byBraWxsIGJhY3RlcmlhLCB2aXJ1c2VzLCBhbmQgb3RoZXIgcGF0aG9nZW5zIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIGZvb2QuXFxuXFxuKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGg6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRlZCBmb29kIGlzIG5vdCBhIG1ham9yIHRocmVhdCB0byBoZWFsdGguIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbiwgdGhlIFUuUy4gRm9vZCBhbmQgRHJ1ZyBBZG1pbmlzdHJhdGlvbiwgYW5kIG90aGVyIG9yZ2FuaXphdGlvbnMgaGF2ZSBkZXRlcm1pbmVkIHRoYXQgaXJyYWRpYXRlZCBmb29kIGlzIHNhZmUgdG8gZWF0LiBJbiBmYWN0LCBpcnJhZGlhdGlvbiBjYW4gaGVscCByZWR1Y2UgdGhlIHJpc2sgb2YgZm9vZGJvcm5lIGlsbG5lc3MgYnkga2lsbGluZyBiYWN0ZXJpYSBhbmQgb3RoZXIgcGF0aG9nZW5zIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIGZvb2QuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiY1wifSJ9XSwgIjIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRmliZXIgZm9sbGljbGVzIChiKSBFeGZvbGlhdGlvbiAoYykgUmVzaXN0YW5jZSAoZCkgTGF5ZXJzIG9mIGZhdCAoZSkgRXZhcG9yYXRpb24gKGYpIEEgY3V0aWNsZSAoZykgU2Vuc29yeSBuZXVyb25zIChoKSBGdXIgYW5kIGZhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiYikgRXhmb2xpYXRpb246IEV4Zm9saWF0aW9uIGlzIHRoZSBwcm9jZXNzIG9mIHNoZWRkaW5nIGRlYWQgc2tpbiBjZWxscyBmcm9tIHRoZSBzdXJmYWNlIG9mIHRoZSBza2luLiBXaGlsZSB0aGlzIGlzIGFuIGltcG9ydGFudCBwcm9jZXNzIGZvciBtYWludGFpbmluZyBoZWFsdGh5IHNraW4sIGl0IGRvZXMgbm90IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuYykgUmVzaXN0YW5jZTogUmVzaXN0YW5jZSBpcyBhIHZhZ3VlIHRlcm0gYW5kIGRvZXMgbm90IHByb3ZpZGUgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgcHJvdGVjdHMgdGhlIHNraW4uXFxuXFxuZCkgTGF5ZXJzIG9mIGZhdDogV2hpbGUgbGF5ZXJzIG9mIGZhdCBjYW4gcHJvdmlkZSBpbnN1bGF0aW9uIGFuZCBjdXNoaW9uaW5nIGZvciB0aGUgc2tpbiwgdGhleSBkbyBub3QgZGlyZWN0bHkgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG5lKSBFdmFwb3JhdGlvbjogRXZhcG9yYXRpb24gaXMgYSBwcm9jZXNzIGJ5IHdoaWNoIGEgbGlxdWlkIHR1cm5zIGludG8gYSBnYXMuIEl0IGRvZXMgbm90IHByb3RlY3QgdGhlIHNraW4uXFxuXFxuZikgQSBjdXRpY2xlOiBBIGN1dGljbGUgaXMgYSBwcm90ZWN0aXZlIGxheWVyIHRoYXQgY292ZXJzIHRoZSBzdXJmYWNlIG9mIHNvbWUgb3JnYW5pc21zLCBzdWNoIGFzIHBsYW50cyBhbmQgaW5zZWN0cy4gSG93ZXZlciwgbWFtbWFscyBkbyBub3QgaGF2ZSBhIGN1dGljbGUuXFxuXFxuZykgU2Vuc29yeSBuZXVyb25zOiBTZW5zb3J5IG5ldXJvbnMgYXJlIG5lcnZlIGNlbGxzIHRoYXQgdHJhbnNtaXQgc2Vuc29yeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBib2R5IHRvIHRoZSBicmFpbi4gV2hpbGUgdGhleSBwbGF5IGFuIGltcG9ydGFudCByb2xlIGluIHRoZSBuZXJ2b3VzIHN5c3RlbSwgdGhleSBkbyBub3QgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG5oKSBGdXIgYW5kIGZhdDogVGhpcyBpcyBhIGNvcnJlY3QgYW5zd2VyLiBGdXIgYW5kIGZhdCBwcm92aWRlIGluc3VsYXRpb24gYW5kIHByb3RlY3Rpb24gZm9yIHRoZSBza2luLiBIb3dldmVyLCB0aGUgcXVlc3Rpb24gc3BlY2lmaWNhbGx5IGFza3Mgd2hhdCBwcm90ZWN0cyB0aGUgc2tpbiwgYW5kIGZpYmVyIGZvbGxpY2xlcyBhcmUgdGhlIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBza2luIHRoYXQgcHJvdmlkZSB0aGUgbW9zdCBkaXJlY3QgcHJvdGVjdGlvbi5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJhXCJ9In1dLCAiMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG8gZWFydGh3b3JtcyBkbyB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmP1xuQW5zd2VyIENob2ljZXM6IChhKSBEaWVzIChiKSBSZWdyb3dzIGl0IChjKSBSZXByb2R1Y2VzIChkKSBTZWRpbWVudCAoZSkgUm9vdCBncm93dGggKGYpIE1pZ3JhdGUgKGcpIFN0b3BzIGdyb3dpbmcgKGgpIFJvb3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJhKSBEaWVzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGVhcnRod29ybXMgZG8gbm90IGRpZSB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLiBXaGlsZSBpdCBtYXkgYmUgYSB0cmF1bWF0aWMgZXhwZXJpZW5jZSBmb3IgdGhlIGVhcnRod29ybSwgdGhleSBhcmUgYWJsZSB0byByZWdlbmVyYXRlIHRoZSBsb3N0IHNlZ21lbnQuXFxuXFxuYykgUmVwcm9kdWNlczogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBlYXJ0aHdvcm1zIGRvIG5vdCByZXByb2R1Y2Ugd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZi4gUmVwcm9kdWN0aW9uIGluIGVhcnRod29ybXMgaW52b2x2ZXMgdGhlIGV4Y2hhbmdlIG9mIHNwZXJtIGJldHdlZW4gdHdvIGluZGl2aWR1YWxzLCBhbmQgZG9lcyBub3QgaW52b2x2ZSB0aGUgbG9zcyBvZiBzZWdtZW50cy5cXG5cXG5kKSBTZWRpbWVudDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIFNlZGltZW50IHJlZmVycyB0byB0aGUgbWF0ZXJpYWwgdGhhdCBzZXR0bGVzIGF0IHRoZSBib3R0b20gb2YgYSBib2R5IG9mIHdhdGVyIG9yIG90aGVyIGxpcXVpZC5cXG5cXG5lKSBSb290IGdyb3d0aDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIFJvb3QgZ3Jvd3RoIHJlZmVycyB0byB0aGUgZ3Jvd3RoIG9mIHJvb3RzIGluIHBsYW50cywgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZWFydGh3b3Jtcy5cXG5cXG5mKSBNaWdyYXRlOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gTWlncmF0aW9uIHJlZmVycyB0byB0aGUgbW92ZW1lbnQgb2YgYW5pbWFscyBmcm9tIG9uZSBwbGFjZSB0byBhbm90aGVyLCBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBlYXJ0aHdvcm1zIHJlZ2VuZXJhdGluZyBsb3N0IHNlZ21lbnRzLlxcblxcbmcpIFN0b3BzIGdyb3dpbmc6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgZWFydGh3b3JtcyBkbyBub3Qgc3RvcCBncm93aW5nIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmYuIFdoaWxlIHRoZSBsb3N0IHNlZ21lbnQgbWF5IHRha2Ugc29tZSB0aW1lIHRvIHJlZ2VuZXJhdGUsIHRoZSBlYXJ0aHdvcm0gd2lsbCBjb250aW51ZSB0byBncm93IGFuZCBtb3ZlLlxcblxcbmgpIFJvb3RzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gUm9vdHMgcmVmZXIgdG8gdGhlIHBhcnQgb2YgYSBwbGFudCB0aGF0IHR5cGljYWxseSBsaWVzIGJlbG93IHRoZSBzdXJmYWNlIG9mIHRoZSBzb2lsLCBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBlYXJ0aHdvcm1zIHJlZ2VuZXJhdGluZyBsb3N0IHNlZ21lbnRzLlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImJcIn0ifV0sICI0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogTGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRoZSBlbnZpcm9ubWVudCAoYikgUmFpbnN0b3JtcyAoYykgRGVzdHJ1Y3Rpb24gKGQpIFZpc2liaWxpdHkgKGUpIFRodW5kZXIgKGYpIFRoZSBzdW4gKGcpIFRoZSB3ZWF0aGVyLiAoaCkgVHJhbnNwb3J0YXRpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcImIpIFJhaW5zdG9ybXM6IExpZ2h0bmluZyBpcyBhY3R1YWxseSBhIG5hdHVyYWwgcGhlbm9tZW5vbiB0aGF0IG9jY3VycyBkdXJpbmcgcmFpbnN0b3Jtcy4gSXQgaXMgbm90IGJhZCBmb3IgcmFpbnN0b3JtcywgYnV0IHJhdGhlciBhIHBhcnQgb2YgdGhlIHN0b3JtLlxcblxcbmMpIERlc3RydWN0aW9uOiBXaGlsZSBsaWdodG5pbmcgY2FuIGNhdXNlIGRlc3RydWN0aW9uLCB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIHdoYXQgbGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yLCBub3Qgd2hhdCBpdCBjYW4gY2F1c2UuXFxuXFxuZCkgVmlzaWJpbGl0eTogTGlnaHRuaW5nIGNhbiBhY3R1YWxseSBpbXByb3ZlIHZpc2liaWxpdHkgZHVyaW5nIGEgc3Rvcm0gYnkgaWxsdW1pbmF0aW5nIHRoZSBzdXJyb3VuZGluZ3MuIEl0IGlzIG5vdCBiYWQgZm9yIHZpc2liaWxpdHkuXFxuXFxuZSkgVGh1bmRlcjogVGh1bmRlciBpcyBhY3R1YWxseSBjYXVzZWQgYnkgbGlnaHRuaW5nLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aHVuZGVyLlxcblxcbmYpIFRoZSBzdW46IExpZ2h0bmluZyBpcyBub3QgcmVsYXRlZCB0byB0aGUgc3VuLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aGUgc3VuLlxcblxcbmcpIFRoZSB3ZWF0aGVyOiBMaWdodG5pbmcgaXMgYSBwYXJ0IG9mIHRoZSB3ZWF0aGVyLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aGUgd2VhdGhlci5cXG5cXG5oKSBUcmFuc3BvcnRhdGlvbjogTGlnaHRuaW5nIGNhbiBiZSBkYW5nZXJvdXMgZm9yIHRyYW5zcG9ydGF0aW9uLCBidXQgdGhlIHF1ZXN0aW9uIGlzIGFza2luZyB3aGF0IGxpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciBpbiBnZW5lcmFsLCBub3Qgc3BlY2lmaWNhbGx5IGZvciB0cmFuc3BvcnRhdGlvbi5cXG5cXG5UaGVyZWZvcmUsIHRoZSBvbmx5IGxvZ2ljYWwgYW5zd2VyIGlzIGEpIHRoZSBlbnZpcm9ubWVudC4gTGlnaHRuaW5nIGNhbiBzdGFydCB3aWxkZmlyZXMsIGRhbWFnZSB0cmVlcyBhbmQgb3RoZXIgdmVnZXRhdGlvbiwgYW5kIGNhdXNlIHNvaWwgZXJvc2lvbiwgd2hpY2ggY2FuIGFsbCBoYXZlIG5lZ2F0aXZlIGltcGFjdHMgb24gdGhlIGVudmlyb25tZW50LlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImFcIn0ifV0sICI1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgd2hhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU291bHMgKGIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXMgKGMpIE9yZ2FuaXNtcyAoZCkgUGxhbnQgb3IgYW5pbWFsIChlKSBNYWxlcyBhbmQgZmVtYWxlcyAoZikgRGVmb3Jlc3RhdGlvbiAoZykgUmVpbmNhcm5hdGlvbiAoaCkgSW1wb3J0YW50IGhhYml0YXRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJhKSBTb3VsczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBzb3VscyBhcmUgbm90IHBoeXNpY2FsIGVudGl0aWVzIHRoYXQgY2FuIGxlYXZlIGV2aWRlbmNlIG9mIHRoZWlyIHByZXNlbmNlIGluIGEgcGxhY2UuIFNvdWxzIGFyZSBiZWxpZXZlZCB0byBiZSBzcGlyaXR1YWwgZW50aXRpZXMgdGhhdCBhcmUgbm90IGJvdW5kIGJ5IHBoeXNpY2FsIGxhd3MuXFxuXFxuYikgQW5pbWFscyB3aXRoIGJhY2tib25lczogVGhpcyBvcHRpb24gaXMgbm90IGNvbXBsZXRlbHkgY29ycmVjdCBiZWNhdXNlIG5vdCBhbGwgYW5pbWFscyBoYXZlIGJhY2tib25lcy4gSW52ZXJ0ZWJyYXRlcywgc3VjaCBhcyBpbnNlY3RzIGFuZCBtb2xsdXNrcywgZG8gbm90IGhhdmUgYmFja2JvbmVzLiBUaGVyZWZvcmUsIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW5ub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgYW5pbWFscyB3aXRoIGJhY2tib25lcyBsaXZlZCBpbiBhIHBsYWNlLlxcblxcbmMpIE9yZ2FuaXNtczogVGhpcyBvcHRpb24gaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbi4gRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgYW55IHR5cGUgb2Ygb3JnYW5pc20gb25jZSBsaXZlZCBpbiBhIHBsYWNlLCBpbmNsdWRpbmcgYmFjdGVyaWEsIGZ1bmdpLCBhbmQgcHJvdGlzdHMuXFxuXFxuZCkgUGxhbnQgb3IgYW5pbWFsOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IGEgcGxhbnQgb3IgYW5pbWFsIG9uY2UgbGl2ZWQgaW4gYSBwbGFjZS4gRm9zc2lscywgZm9yIGV4YW1wbGUsIHByb3ZpZGUgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGFuZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCB0eXBlcyBvZiBwbGFudHMgYW5kIGFuaW1hbHMgbGl2ZWQgaW4gYSBwYXJ0aWN1bGFyIGFyZWEuXFxuXFxuZSkgTWFsZXMgYW5kIGZlbWFsZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbm5vdCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2V4IG9mIHRoZSBvcmdhbmlzbXMgdGhhdCBvbmNlIGxpdmVkIGluIGEgcGxhY2UuIEZvc3NpbHMgZG8gbm90IHR5cGljYWxseSBwcmVzZXJ2ZSBzZXh1YWwgY2hhcmFjdGVyaXN0aWNzLlxcblxcbmYpIERlZm9yZXN0YXRpb246IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZGVmb3Jlc3RhdGlvbiBpcyBhIGh1bWFuIGFjdGl2aXR5IHRoYXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgcGFzdCBsaWZlIGluIGEgcGxhY2UuXFxuXFxuZykgUmVpbmNhcm5hdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSByZWluY2FybmF0aW9uIGlzIGEgcmVsaWdpb3VzIG9yIHBoaWxvc29waGljYWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IHByb3ZpZGUgYW55IHNjaWVudGlmaWMgZXZpZGVuY2UgYWJvdXQgcGFzdCBsaWZlIGluIGEgcGxhY2UuXFxuXFxuaCkgSW1wb3J0YW50IGhhYml0YXRzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGltcG9ydGFudCBoYWJpdGF0cy4gV2hpbGUgY2VydGFpbiBhcmVhcyBtYXkgaGF2ZSBiZWVuIGltcG9ydGFudCBoYWJpdGF0cyBpbiB0aGUgcGFzdCwgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBhbHNvIGJlIGZvdW5kIGluIGFyZWFzIHRoYXQgd2VyZSBub3QgaW1wb3J0YW50IGhhYml0YXRzLlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImRcIn0ifV0sICI2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogSG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24sIG9yIGluaGVyaXRlZCwgaXMgZm91bmQgaW4gaW5mb3JtYXRpb24gaW4gYW4gb3JnYW5pc20ncyB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBTcGVjaWVzIChiKSBNZXNzZW5nZXJzIChjKSBIYWlyIGZvbGxpY2xlcyAoZCkgQ3ljbGVzIChlKSBTa2luIGNlbGxzIChmKSBFbmRvY3JpbmUgc3lzdGVtIChnKSBDaHJvbW9zb21lcyAoaCkgUHJvdGVpbnMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcIihhKSBTcGVjaWVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzcGVjaWVzIHJlZmVyIHRvIGEgZ3JvdXAgb2Ygb3JnYW5pc21zIHRoYXQgc2hhcmUgc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MgYW5kIGNhbiBpbnRlcmJyZWVkIHRvIHByb2R1Y2UgZmVydGlsZSBvZmZzcHJpbmcuIEl0IGRvZXMgbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXFxuXFxuKGIpIE1lc3NlbmdlcnM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIG1lc3NlbmdlcnMgcmVmZXIgdG8gbW9sZWN1bGVzIHN1Y2ggYXMgaG9ybW9uZXMgYW5kIG5ldXJvdHJhbnNtaXR0ZXJzIHRoYXQgdHJhbnNtaXQgc2lnbmFscyBiZXR3ZWVuIGNlbGxzLiBXaGlsZSB0aGV5IHBsYXkgYSByb2xlIGluIHZhcmlvdXMgYmlvbG9naWNhbCBwcm9jZXNzZXMsIHRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXFxuXFxuKGMpIEhhaXIgZm9sbGljbGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBoYWlyIGZvbGxpY2xlcyBhcmUgc3RydWN0dXJlcyBpbiB0aGUgc2tpbiB0aGF0IHByb2R1Y2UgaGFpci4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZCkgQ3ljbGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBjeWNsZXMgcmVmZXIgdG8gcmVjdXJyaW5nIGV2ZW50cyBvciBwcm9jZXNzZXMgc3VjaCBhcyB0aGUgbWVuc3RydWFsIGN5Y2xlIG9yIHRoZSB3YXRlciBjeWNsZS4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZSkgU2tpbiBjZWxsczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2tpbiBjZWxscyBhcmUgY2VsbHMgdGhhdCBtYWtlIHVwIHRoZSBvdXRlciBsYXllciBvZiB0aGUgc2tpbi4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZikgRW5kb2NyaW5lIHN5c3RlbTogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgdGhlIGVuZG9jcmluZSBzeXN0ZW0gaXMgYSBzeXN0ZW0gb2YgZ2xhbmRzIHRoYXQgcHJvZHVjZSBhbmQgc2VjcmV0ZSBob3Jtb25lcy4gV2hpbGUgaG9ybW9uZXMgcGxheSBhIHJvbGUgaW4gdmFyaW91cyBiaW9sb2dpY2FsIHByb2Nlc3NlcywgdGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oZykgQ2hyb21vc29tZXM6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBDaHJvbW9zb21lcyBhcmUgc3RydWN0dXJlcyBpbiB0aGUgbnVjbGV1cyBvZiBhIGNlbGwgdGhhdCBjb250YWluIGdlbmV0aWMgaW5mb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgRE5BLiBUcmFpdHMgYXJlIHBhc3NlZCBkb3duIGZyb20gb25lIGdlbmVyYXRpb24gdG8gdGhlIG5leHQgdGhyb3VnaCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIGFuIG9yZ2FuaXNtJ3MgY2hyb21vc29tZXMuXFxuXFxuKGgpIFByb3RlaW5zOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBwcm90ZWlucyBhcmUgbW9sZWN1bGVzIG1hZGUgdXAgb2YgYW1pbm8gYWNpZHMgdGhhdCBwZXJmb3JtIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBib2R5LiBXaGlsZSB0aGV5IHBsYXkgYSByb2xlIGluIHZhcmlvdXMgYmlvbG9naWNhbCBwcm9jZXNzZXMsIHRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZ1wifSJ9XSwgIjciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGFyZSB0aGUgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBHcmFzcyAoYikgQW5pbWFscyAoYykgQXBwbGVzIChkKSBQb3RhdG9lcyAoZSkgVHJlZXMgKGYpIFBsYW50cyAoZykgRnVuZ2kgKGgpIEZpZWxkcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiKGEpIEdyYXNzOiBXaGlsZSBncmFzcyBpcyBhIHR5cGUgb2YgcGxhbnQsIGl0IGlzIG5vdCB0aGUgb25seSB0eXBlIG9mIHBsYW50LiBBZGRpdGlvbmFsbHksIHRoZSBxdWVzdGlvbiBzcGVjaWZpY2FsbHkgYXNrcyBhYm91dCAnbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uLCcgYW5kIGdyYXNzIGlzIG5vdCBuZWNlc3NhcmlseSBhIG1ham9yIHByb2R1Y2VyIGluIHRoZXNlIGFyZWFzLlxcblxcbihiKSBBbmltYWxzOiBBbmltYWxzIGFyZSBub3QgcHJvZHVjZXJzLCB0aGV5IGFyZSBjb25zdW1lcnMuIFRoZXkgZG8gbm90IHByb2R1Y2UgZW5lcmd5IGZyb20gc3VubGlnaHQsIHdhdGVyLCBhbmQgY2FyYm9uIGRpb3hpZGUgbGlrZSBwbGFudHMgZG8uXFxuXFxuKGMpIEFwcGxlczogQXBwbGVzIGFyZSBhIHR5cGUgb2YgZnJ1aXQgdGhhdCBncm93IG9uIHRyZWVzLCBidXQgdGhleSBhcmUgbm90IHByb2R1Y2VycyBpbiBhbmQgb2YgdGhlbXNlbHZlcy4gVGhlIHRyZWVzIHRoYXQgcHJvZHVjZSBhcHBsZXMgYXJlIHRoZSBwcm9kdWNlcnMuXFxuXFxuKGQpIFBvdGF0b2VzOiBQb3RhdG9lcyBhcmUgYSB0eXBlIG9mIHZlZ2V0YWJsZSB0aGF0IGdyb3cgdW5kZXJncm91bmQsIGJ1dCB0aGV5IGFyZSBub3QgcHJvZHVjZXJzIGluIGFuZCBvZiB0aGVtc2VsdmVzLiBUaGUgcGxhbnRzIHRoYXQgcHJvZHVjZSBwb3RhdG9lcyBhcmUgdGhlIHByb2R1Y2Vycy5cXG5cXG4oZSkgVHJlZXM6IFRyZWVzIGFyZSBhIHR5cGUgb2YgcGxhbnQgYW5kIGFyZSBpbmRlZWQgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uLiBUaGV5IGFic29yYiBjYXJib24gZGlveGlkZSBhbmQgcmVsZWFzZSBveHlnZW4sIGFuZCB0aGV5IGFsc28gaGVscCByZWd1bGF0ZSB0aGUgdGVtcGVyYXR1cmUgYW5kIG1vaXN0dXJlIGxldmVscyBpbiB0aGVpciBlbnZpcm9ubWVudC5cXG5cXG4oZykgRnVuZ2k6IEZ1bmdpIGFyZSBub3QgcHJvZHVjZXJzLCB0aGV5IGFyZSBkZWNvbXBvc2Vycy4gVGhleSBicmVhayBkb3duIGRlYWQgb3JnYW5pYyBtYXR0ZXIgYW5kIHJlY3ljbGUgbnV0cmllbnRzIGJhY2sgaW50byB0aGUgZWNvc3lzdGVtLlxcblxcbihoKSBGaWVsZHM6IEZpZWxkcyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgcHJvZHVjZXJzLiBUaGV5IGFyZSBzaW1wbHkgYXJlYXMgb2YgbGFuZCB1c2VkIGZvciBncm93aW5nIGNyb3BzIG9yIHJhaXNpbmcgbGl2ZXN0b2NrLlxcblxcbkluIHN1bW1hcnksIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZikgcGxhbnRzLCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCB1c2UgcGhvdG9zeW50aGVzaXMgdG8gcHJvZHVjZSBlbmVyZ3kgZnJvbSBzdW5saWdodCwgd2F0ZXIsIGFuZCBjYXJib24gZGlveGlkZS5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJmXCJ9In1dLCAiOCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGNoYW5nZSB2ZWdldGF0aW9uIGludG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNjYXJjZSByZXNvdXJjZXMgKGIpIEhhcm1mdWwgc3Vic3RhbmNlcyAoYykgU2NhcnMgKGQpIEZvc3NpbCBmdWVscyAoZSkgU2VkaW1lbnQgKGYpIFNvbWV0aGluZyB0byBtb3ZlIChnKSBNYWdpYyAoaCkgUGljbmljcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiKGEpIFNjYXJjZSByZXNvdXJjZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc2NhcmNlIHJlc291cmNlcy4gU2NhcmNlIHJlc291cmNlcyBhcmUgcmVzb3VyY2VzIHRoYXQgYXJlIGxpbWl0ZWQgaW4gYXZhaWxhYmlsaXR5LCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBhIGxpbWl0ZWQgcmVzb3VyY2UuXFxuXFxuKGIpIEhhcm1mdWwgc3Vic3RhbmNlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBoYXJtZnVsIHN1YnN0YW5jZXMuIEhhcm1mdWwgc3Vic3RhbmNlcyBhcmUgc3Vic3RhbmNlcyB0aGF0IGNhbiBjYXVzZSBoYXJtIG9yIGRhbWFnZSwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgaGFybWZ1bC5cXG5cXG4oYykgU2NhcnM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc2NhcnMuIFNjYXJzIGFyZSBtYXJrcyBsZWZ0IG9uIHRoZSBza2luIG9yIG90aGVyIHRpc3N1ZSBhZnRlciBhIHdvdW5kIGhhcyBoZWFsZWQsIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGEgd291bmQuXFxuXFxuKGUpIFNlZGltZW50OiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNlZGltZW50LiBTZWRpbWVudCBpcyBhIG5hdHVyYWxseSBvY2N1cnJpbmcgbWF0ZXJpYWwgdGhhdCBpcyBicm9rZW4gZG93biBieSB3ZWF0aGVyaW5nIGFuZCBlcm9zaW9uLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBzZWRpbWVudC5cXG5cXG4oZikgU29tZXRoaW5nIHRvIG1vdmU6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc29tZXRoaW5nIHRvIG1vdmUuIFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9wdGlvbnMuXFxuXFxuKGcpIE1hZ2ljOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIG1hZ2ljLiBNYWdpYyBpcyBhIHN1cGVybmF0dXJhbCBmb3JjZSB0aGF0IGlzIG5vdCBiYXNlZCBvbiBzY2llbmNlIG9yIHJlYXNvbiwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgc3VwZXJuYXR1cmFsLlxcblxcbihoKSBQaWNuaWNzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHBpY25pY3MuIFBpY25pY3MgYXJlIG91dGRvb3IgbWVhbHMgb3Igc29jaWFsIGdhdGhlcmluZ3MsIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGEgc29jaWFsIGdhdGhlcmluZy5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJkXCJ9In1dLCAiOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoZW4gd2lsbCBhbmltYWxzIG1vdmUgdG8gYW5vdGhlciBhcmVhP1xuQW5zd2VyIENob2ljZXM6IChhKSBUbyBrZWVwIHRoZWlyIGJvZHkgaGVhdC4gKGIpIFJldXNpbmcgbWF0ZXJpYWxzIChjKSBJZiB0aGV5IGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgKGQpIElmIHRoZXkgYXJlIGJvcmVkIChlKSBNYXJzaGVzIGFuZCBzd2FtcHMgKGYpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBtb25leSAoZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgKGgpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJhKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSB0byBrZWVwIHRoZWlyIGJvZHkgaGVhdC4gQW5pbWFscyBoYXZlIGRpZmZlcmVudCB3YXlzIG9mIHJlZ3VsYXRpbmcgdGhlaXIgYm9keSB0ZW1wZXJhdHVyZSwgc3VjaCBhcyBzd2VhdGluZywgcGFudGluZywgb3IgaGliZXJuYXRpb24uIEhvd2V2ZXIsIGlmIHRoZSBlbnZpcm9ubWVudCBiZWNvbWVzIHRvbyBleHRyZW1lLCBhbmltYWxzIG1heSBtb3ZlIHRvIGEgbW9yZSBzdWl0YWJsZSBhcmVhLlxcblxcbmIpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIHRvIHJldXNlIG1hdGVyaWFscy4gVGhpcyBvcHRpb24gaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uIGFuZCBkb2VzIG5vdCBtYWtlIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGFuaW1hbCBtb3ZlbWVudC5cXG5cXG5kKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGFyZSBib3JlZC4gQm9yZWRvbSBpcyBhIGh1bWFuIGVtb3Rpb24gYW5kIGFuaW1hbHMgZG8gbm90IGhhdmUgdGhlIHNhbWUgY2FwYWNpdHkgZm9yIGJvcmVkb20gYXMgaHVtYW5zIGRvLiBBbmltYWxzIG1vdmUgZm9yIHN1cnZpdmFsIHJlYXNvbnMgc3VjaCBhcyBmaW5kaW5nIGZvb2QsIHdhdGVyLCBvciBzaGVsdGVyLlxcblxcbmUpIE1hcnNoZXMgYW5kIHN3YW1wcyBhcmUgbm90IGEgcmVhc29uIGZvciBhbmltYWwgbW92ZW1lbnQuIE1hcnNoZXMgYW5kIHN3YW1wcyBhcmUgdHlwZXMgb2YgaGFiaXRhdHMgd2hlcmUgYW5pbWFscyBtYXkgbGl2ZSwgYnV0IHRoZXkgZG8gbm90IGNhdXNlIGFuaW1hbHMgdG8gbW92ZSB0byBhbm90aGVyIGFyZWEuXFxuXFxuZikgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5LiBUaGlzIG9wdGlvbiBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24gYW5kIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYW5pbWFsIG1vdmVtZW50LlxcblxcbmcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIGlzIGEgd2VhdGhlciBwaGVub21lbm9uIGFuZCBkb2VzIG5vdCBjYXVzZSBhbmltYWxzIHRvIG1vdmUgdG8gYW5vdGhlciBhcmVhLlxcblxcbmgpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIGlmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kLiBBbmltYWxzIG1heSBzdG9yZSBmb29kIGZvciBsYXRlciB1c2UsIGJ1dCB0aGV5IGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGhhdmUgdG9vIG11Y2ggZm9vZC5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBjKSBpZiBhbmltYWxzIGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgdGhleSB3aWxsIG1vdmUgdG8gYW5vdGhlciBhcmVhLiBUaGlzIGlzIGJlY2F1c2UgYW5pbWFscyBuZWVkIGZvb2QgdG8gc3Vydml2ZSwgYW5kIGlmIHRoZXkgY2Fubm90IGZpbmQgZm9vZCBpbiB0aGVpciBjdXJyZW50IGxvY2F0aW9uLCB0aGV5IHdpbGwgbW92ZSB0byBhbm90aGVyIGFyZWEgd2hlcmUgZm9vZCBpcyBhdmFpbGFibGUuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiY1wifSJ9XSwgIjEwIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBLaW5ldGljIGVuZXJneSAoYikgTG91ZCBub2lzZXMgKGMpIFZpYnJhdGluZyB3YXZlcyAoZCkgQW4gb2JqZWN0IGlzIHNlZW4gKGUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgKGYpIERlb3h5cmlib251Y2xlaWMgYWNpZCAoZykgSHlkcm9nZW4gYW5kIG94eWdlbiAoaCkgSGFybWZ1bCBzdWJzdGFuY2VzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJhKSBLaW5ldGljIGVuZXJneTogS2luZXRpYyBlbmVyZ3kgaXMgdGhlIGVuZXJneSBvZiBtb3Rpb24uIFdoaWxlIGEgZmlyZWNyYWNrZXIgZG9lcyBwcm9kdWNlIHNvbWUgbW90aW9uLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpdCBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50by4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYikgTG91ZCBub2lzZXM6IFdoaWxlIGEgZmlyZWNyYWNrZXIgZG9lcyBwcm9kdWNlIGxvdWQgbm9pc2VzLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpdCBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50by4gVGhlIGxvdWQgbm9pc2VzIGFyZSBhIHJlc3VsdCBvZiB0aGUgdmlicmF0aW5nIHdhdmVzIHByb2R1Y2VkIGJ5IHRoZSBmaXJlY3JhY2tlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZCkgQW4gb2JqZWN0IGlzIHNlZW46IEEgZmlyZWNyYWNrZXIgZG9lcyBub3QgY29udmVydCBjaGVtaWNhbCBlbmVyZ3kgaW50byB0aGUgYWJpbGl0eSB0byBzZWUgYW4gb2JqZWN0LiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneTogRWxlY3Ryb21hZ25ldGljIGVuZXJneSBpcyBhIGZvcm0gb2YgZW5lcmd5IHRoYXQgaW5jbHVkZXMgcmFkaW8gd2F2ZXMsIG1pY3Jvd2F2ZXMsIGluZnJhcmVkIHJhZGlhdGlvbiwgdmlzaWJsZSBsaWdodCwgdWx0cmF2aW9sZXQgcmFkaWF0aW9uLCBYLXJheXMsIGFuZCBnYW1tYSByYXlzLiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gZWxlY3Ryb21hZ25ldGljIGVuZXJneS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkOiBEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSkgaXMgYSBtb2xlY3VsZSB0aGF0IGNhcnJpZXMgZ2VuZXRpYyBpbnN0cnVjdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCwgZnVuY3Rpb25pbmcsIGdyb3d0aCwgYW5kIHJlcHJvZHVjdGlvbiBvZiBhbGwgbGl2aW5nIHRoaW5ncy4gQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIEROQS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZykgSHlkcm9nZW4gYW5kIG94eWdlbjogSHlkcm9nZW4gYW5kIG94eWdlbiBhcmUgZWxlbWVudHMgdGhhdCBjYW4gY29tYmluZSB0byBmb3JtIHdhdGVyLiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gaHlkcm9nZW4gYW5kIG94eWdlbi4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuaCkgSGFybWZ1bCBzdWJzdGFuY2VzOiBBIGZpcmVjcmFja2VyIGRvZXMgcHJvZHVjZSBoYXJtZnVsIHN1YnN0YW5jZXMgc3VjaCBhcyBzbW9rZSBhbmQgY2hlbWljYWxzLCBidXQgaXQgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IHRoYXQgaXQgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8uIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmMpIFZpYnJhdGluZyB3YXZlczogQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB2aWJyYXRpbmcgd2F2ZXMuIFdoZW4gdGhlIGNoZW1pY2FscyBpbnNpZGUgYSBmaXJlY3JhY2tlciByZWFjdCwgdGhleSBwcm9kdWNlIGEgcmFwaWQgcmVsZWFzZSBvZiBlbmVyZ3kgaW4gdGhlIGZvcm0gb2YgaGVhdCBhbmQgZ2FzLiBUaGlzIGVuZXJneSBjYXVzZXMgdGhlIGZpcmVjcmFja2VyIHRvIGV4cGxvZGUsIHByb2R1Y2luZyB2aWJyYXRpbmcgd2F2ZXMgdGhhdCB3ZSBoZWFyIGFzIGxvdWQgbm9pc2VzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGNvcnJlY3QuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiY1wifSJ9XSwgIjExIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNYWpvciBlZmZlY3RzIChiKSBSZXNwaXJhdGlvbiAoYykgUm9sZXggKGQpIERlbnNpdHkgKGUpIERpcGh0aGVyaWEgKGYpIENhbmlzIGx1cHVzIChnKSBTa2luIGNvbG9yIChoKSBEaWdlc3Rpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcImEpIE1ham9yIGVmZmVjdHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gJ01ham9yIGVmZmVjdHMnIGNvdWxkIHJlZmVyIHRvIGEgdmFyaWV0eSBvZiB0aGluZ3MsIGJ1dCBpdCBpcyBub3Qgc3BlY2lmaWMgZW5vdWdoIHRvIGJlIGEgY29ycmVjdCBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbi5cXG5cXG5iKSBSZXNwaXJhdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBSZXNwaXJhdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyB0aGF0IGludm9sdmVzIHRoZSBleGNoYW5nZSBvZiBnYXNlcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cXG5cXG5jKSBSb2xleDogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBSb2xleCBpcyBhIGJyYW5kIG9mIGx1eHVyeSB3YXRjaGVzIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGdlbmV0aWNzLlxcblxcbmQpIERlbnNpdHk6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGVuc2l0eSBpcyBhIHBoeXNpY2FsIHByb3BlcnR5IHRoYXQgZGVzY3JpYmVzIHRoZSBhbW91bnQgb2YgbWFzcyBpbiBhIGdpdmVuIHZvbHVtZSwgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cXG5cXG5lKSBEaXBodGhlcmlhOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIERpcGh0aGVyaWEgaXMgYSBiYWN0ZXJpYWwgaW5mZWN0aW9uIHRoYXQgY2FuIGNhdXNlIHNldmVyZSByZXNwaXJhdG9yeSBwcm9ibGVtcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cXG5cXG5mKSBDYW5pcyBsdXB1czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBDYW5pcyBsdXB1cyBpcyB0aGUgc2NpZW50aWZpYyBuYW1lIGZvciB0aGUgZ3JheSB3b2xmLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmcpIFNraW4gY29sb3I6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyIGJlY2F1c2Ugc2tpbiBjb2xvciBpcyBhIHRyYWl0IHRoYXQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gVGhlIGdlbmVzIHRoYXQgY29udHJvbCBza2luIGNvbG9yIHByb2R1Y2UgZGlmZmVyZW50IGFtb3VudHMgb2YgbWVsYW5pbiwgd2hpY2ggaXMgYSBwaWdtZW50IHRoYXQgZ2l2ZXMgc2tpbiBpdHMgY29sb3IuIFRoZSBpbnRlcmFjdGlvbiBvZiB0aGVzZSBnZW5lcyBjYW4gcmVzdWx0IGluIGEgd2lkZSByYW5nZSBvZiBza2luIGNvbG9ycywgZnJvbSB2ZXJ5IGxpZ2h0IHRvIHZlcnkgZGFyay5cXG5cXG5oKSBEaWdlc3Rpb246IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGlnZXN0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGJyZWFrZG93biBvZiBmb29kIGludG8gc21hbGxlciBtb2xlY3VsZXMsIGJ1dCBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3MuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZ1wifSJ9XSwgIjEyIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWw/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNoZWVwIChiKSBTYWxtb24gKGMpIEdyYXNzZXMgKGQpIEJhdHMgKGUpIEFuaW1hbHMgKGYpIFNocnVicyAoZykgSHVtYW5zIChoKSBUcmVlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiYikgU2FsbW9uOiBTYWxtb24gYXJlIGEgdHlwZSBvZiBmaXNoIHRoYXQgYXJlIHN0cmljdGx5IGNhcm5pdm9yb3VzIGFuZCBmZWVkIG9uIG90aGVyIG9yZ2FuaXNtcyBzdWNoIGFzIHNtYWxsZXIgZmlzaCwgY3J1c3RhY2VhbnMsIGFuZCBpbnNlY3RzLiBUaGV5IGRvIG5vdCBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5jKSBHcmFzc2VzOiBHcmFzc2VzIGFyZSBwcmltYXJ5IHByb2R1Y2VycyBhbmQgYXJlIGF0IHRoZSBiYXNlIG9mIHRoZSBmb29kIGNoYWluLiBUaGV5IGFyZSBub3QgY2FwYWJsZSBvZiBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5kKSBCYXRzOiBCYXRzIGFyZSBpbnNlY3Rpdm9yZXMgb3IgZnJ1Z2l2b3JlcyBhbmQgZmVlZCBvbiBpbnNlY3RzIG9yIGZydWl0cyByZXNwZWN0aXZlbHkuIFRoZXkgZG8gbm90IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmUpIEFuaW1hbHM6IFRoaXMgb3B0aW9uIGlzIHRvbyBicm9hZCBhbmQgZG9lcyBub3QgcHJvdmlkZSBhbnkgc3BlY2lmaWMgaW5mb3JtYXRpb24uIEl0IGlzIGluY29ycmVjdCBiZWNhdXNlIG5vdCBhbGwgYW5pbWFscyBjYW4gZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuZikgU2hydWJzOiBTaHJ1YnMgYXJlIGFsc28gcHJpbWFyeSBwcm9kdWNlcnMgYW5kIGFyZSBub3QgY2FwYWJsZSBvZiBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5nKSBIdW1hbnM6IEh1bWFucyBhcmUgb21uaXZvcmVzIGFuZCBjYW4gY29uc3VtZSBib3RoIHBsYW50cyBhbmQgYW5pbWFscy4gSG93ZXZlciwgdGhleSBkbyBub3QgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwgYXMgdGhleSBjb25zdW1lIGVpdGhlciBwbGFudHMgb3IgYW5pbWFscyBhdCBhIHRpbWUuXFxuXFxuaCkgVHJlZXM6IFRyZWVzIGFyZSBhbHNvIHByaW1hcnkgcHJvZHVjZXJzIGFuZCBhcmUgbm90IGNhcGFibGUgb2YgZmVlZGluZyBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYSkgc2hlZXAsIGFzIHRoZXkgYXJlIGhlcmJpdm9yZXMgYW5kIGNhbiBjb25zdW1lIHBsYW50cyBhdCBvbmUgdHJvcGhpYyBsZXZlbCBhbmQgdGhlbiBiZSBjb25zdW1lZCBieSBhIHByZWRhdG9yIGF0IGEgaGlnaGVyIHRyb3BoaWMgbGV2ZWwuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiYVwifSJ9XSwgIjEzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hvIGNhbiBzaGl2ZXI/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhdHMgKGIpIFNpZGV3YWxrcyAoYykgSHVtYW5zIChkKSBCZWVzIChlKSBLb2FsYXMgKGYpIE1vdW50YWlucyAoZykgVHJlZXMgKGgpIFBlb3BsZSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiTGV0J3MgZ28gdGhyb3VnaCBlYWNoIG9wdGlvbiBhbmQgZXhwbGFpbiB3aHkgaXQgaXMgaW5jb3JyZWN0OlxcblxcbmEpIEJhdHM6IFdoaWxlIGJhdHMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5iKSBTaWRld2Fsa3M6IFNpZGV3YWxrcyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3Qgc2hpdmVyLiBUaGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmMpIEh1bWFuczogSHVtYW5zIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgYnV0IHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmUpIEtvYWxhczogS29hbGFzIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgYnV0IHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmYpIE1vdW50YWluczogTW91bnRhaW5zIGFyZSBub3QgbGl2aW5nIG9yZ2FuaXNtcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBzaGl2ZXIuIFRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuZykgVHJlZXM6IFRyZWVzIGFyZSBub3QgY2FwYWJsZSBvZiBzaGl2ZXJpbmcgYXMgdGhleSBkbyBub3QgaGF2ZSBtdXNjbGVzLiBUaGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmgpIFBlb3BsZTogVGhpcyBvcHRpb24gaXMgdGhlIHNhbWUgYXMgb3B0aW9uIGMuIEh1bWFucyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5kKSBIb25leSBiZWVzOiBIb25leSBiZWVzIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZyB0byBnZW5lcmF0ZSBoZWF0IGFuZCBtYWludGFpbiB0aGVpciBib2R5IHRlbXBlcmF0dXJlLiBUaGlzIG9wdGlvbiBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuSW4gY29uY2x1c2lvbiwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGQpIGhvbmV5IGJlZXMgY2FuIHNoaXZlci4gSXQgaXMgaW1wb3J0YW50IHRvIHJlYWQgdGhlIHF1ZXN0aW9uIGFuZCBvcHRpb25zIGNhcmVmdWxseSBhbmQgZWxpbWluYXRlIHRoZSBvcHRpb25zIHRoYXQgYXJlIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbS5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJkXCJ9In1dLCAiMTQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBLaXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBpcyBhbiBleGFtcGxlIG9mIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIExlYXJuaW5nIGJlaGF2aW9yIChiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlcyAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbiAoZSkgQmFkIGJlaGF2aW9yIChmKSBMZWFybmluZyBub3RoaW5nIChnKSBFeHRpbmd1aXNoaW5nIGJlaGF2aW9yIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcImIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBDb21wZXRpbmcgZm9yIHJlc291cmNlcyByZWZlcnMgdG8gYW5pbWFscyBjb21wZXRpbmcgZm9yIGxpbWl0ZWQgcmVzb3VyY2VzIHN1Y2ggYXMgZm9vZCwgd2F0ZXIsIG9yIHNoZWx0ZXIuIEh1bnRpbmcgYmVoYXZpb3IgaXMgbm90IHJlbGF0ZWQgdG8gcmVzb3VyY2UgY29tcGV0aXRpb24uXFxuXFxuYykgV2FybS1ibG9vZGVkOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIFdhcm0tYmxvb2RlZCByZWZlcnMgdG8gYW5pbWFscyB0aGF0IGNhbiByZWd1bGF0ZSB0aGVpciBib2R5IHRlbXBlcmF0dXJlIGludGVybmFsbHksIGJ1dCBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlaXIgYmVoYXZpb3IuXFxuXFxuZCkgQ29tcGV0aXRpb246IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBicm9hZCBhbmQgZG9lcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIENvbXBldGl0aW9uIGNhbiByZWZlciB0byBtYW55IGRpZmZlcmVudCB0eXBlcyBvZiBpbnRlcmFjdGlvbnMgYmV0d2VlbiBhbmltYWxzLCBidXQgaXQgZG9lcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGF0ZSB0byBodW50aW5nIGJlaGF2aW9yLlxcblxcbmUpIEJhZCBiZWhhdmlvcjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgc3ViamVjdGl2ZSBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGNsZWFyIGV4cGxhbmF0aW9uIG9mIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gSHVudGluZyBiZWhhdmlvciBpcyBhIG5hdHVyYWwgYmVoYXZpb3IgZm9yIGNhdHMgYW5kIGlzIG5vdCBjb25zaWRlcmVkIGJhZCBiZWhhdmlvci5cXG5cXG5mKSBMZWFybmluZyBub3RoaW5nOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgYWNjdXJhdGUuIEtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGFyZSBhY3R1YWxseSBsZWFybmluZyBpbXBvcnRhbnQgc2tpbGxzIHRoYXQgdGhleSB3aWxsIG5lZWQgdG8gc3Vydml2ZSBhcyBhZHVsdCBjYXRzLiBIdW50aW5nIGJlaGF2aW9yIGlzIGEgbGVhcm5lZCBiZWhhdmlvciB0aGF0IHJlcXVpcmVzIHByYWN0aWNlIGFuZCByZWZpbmVtZW50LlxcblxcbmcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3I6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IgcmVmZXJzIHRvIHRoZSBwcm9jZXNzIG9mIGVsaW1pbmF0aW5nIGEgYmVoYXZpb3IgdGhyb3VnaCBwdW5pc2htZW50IG9yIG5lZ2F0aXZlIHJlaW5mb3JjZW1lbnQsIGJ1dCBpdCBkb2VzIG5vdCByZWxhdGUgdG8gbGVhcm5pbmcgYmVoYXZpb3IuXFxuXFxuaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBUaGUgZW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIHJlZmVycyB0byB0aGUgcGh5c2ljcyBvZiBtb3Rpb24gYW5kIGRvZXMgbm90IHJlbGF0ZSB0byBhbmltYWwgYmVoYXZpb3IuXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYSkgbGVhcm5pbmcgYmVoYXZpb3IsIGFzIGtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGFyZSBsZWFybmluZyBpbXBvcnRhbnQgc2tpbGxzIHRoYXQgdGhleSB3aWxsIG5lZWQgdG8gc3Vydml2ZSBhcyBhZHVsdCBjYXRzLlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImFcIn0ifV0sICIxNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IERlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IGFmdGVyIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJ1cm5pbmcgKGIpIFdpbnRlciAoYykgTXV0YXRpb25zIChkKSBDb29raW5nIChlKSBDeWNsZXMgKGYpIFN1bW1lciAoZykgRnJlZXppbmcgKGgpIEd1bnNob3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJiKSBXaW50ZXI6IFdpbnRlciBpcyBhIHNlYXNvbiBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYykgTXV0YXRpb25zOiBNdXRhdGlvbnMgYXJlIGNoYW5nZXMgaW4gdGhlIGdlbmV0aWMgbWF0ZXJpYWwgb2YgYW4gb3JnYW5pc20gYW5kIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5kKSBDb29raW5nOiBDb29raW5nIGlzIGEgcHJvY2VzcyBvZiBwcmVwYXJpbmcgZm9vZCBieSBoZWF0aW5nIGl0LCBhbmQgaXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgQ3ljbGVzOiBDeWNsZXMgY2FuIHJlZmVyIHRvIG1hbnkgdGhpbmdzLCBidXQgbm9uZSBvZiB0aGVtIGFyZSByZWxhdGVkIHRvIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5mKSBTdW1tZXI6IFN1bW1lciBpcyBhIHNlYXNvbiBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZykgRnJlZXppbmc6IEZyZWV6aW5nIGlzIGEgcHJvY2VzcyBvZiBsb3dlcmluZyB0aGUgdGVtcGVyYXR1cmUgb2Ygc29tZXRoaW5nIHRvIGJlbG93IGl0cyBmcmVlemluZyBwb2ludCwgYW5kIGl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmgpIEd1bnNob3RzOiBHdW5zaG90cyBhcmUgYSBzdWRkZW4gbG91ZCBub2lzZSBjYXVzZWQgYnkgYSBidWxsZXQgb3Igb3RoZXIgcHJvamVjdGlsZSBhbmQgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGEpIGJ1cm5pbmcuIEJ1cm5pbmcgZGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiBjb21idXN0aW9uLCB3aGljaCByZWxlYXNlcyBlbmVyZ3kgaW4gdGhlIGZvcm0gb2YgaGVhdCBhbmQgbGlnaHQuIFRoaXMgZW5lcmd5IGNhbiBiZSBoYXJuZXNzZWQgdG8gZ2VuZXJhdGUgZWxlY3RyaWNpdHkgb3IgcG93ZXIgZW5naW5lcy5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJhXCJ9In1dLCAiMTYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBUdXJuaW5nIG9uIHdoYXQgd2lsbCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFZlaGljbGVzIChiKSBTYXRlbGxpdGVzIChjKSBMaWdodCBidWxiIChkKSBCdXNlcyAoZSkgRmlyZWNyYWNrZXJzIChmKSBTZW5zb3J5IG5ldXJvbnMgKGcpIEFuIG9iamVjdCAoaCkgRW5naW5lcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiYSkgVmVoaWNsZXM6IFR1cm5pbmcgb24gYSB2ZWhpY2xlIGRvZXMgbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi4gVmVoaWNsZXMgZW1pdCB2YXJpb3VzIHR5cGVzIG9mIHJhZGlhdGlvbiwgc3VjaCBhcyB0aGVybWFsIHJhZGlhdGlvbiBhbmQgc291bmQgd2F2ZXMsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5iKSBTYXRlbGxpdGVzOiBTYXRlbGxpdGVzIGNhbiBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24sIGJ1dCBub3Qgc2ltcGx5IGJ5IHR1cm5pbmcgdGhlbSBvbi4gU2F0ZWxsaXRlcyBhcmUgZGVzaWduZWQgdG8gcmVjZWl2ZSBhbmQgdHJhbnNtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgc3VjaCBhcyByYWRpbyB3YXZlcywgYnV0IHRoZXkgZG8gbm90IGVtaXQgcmFkaWF0aW9uIGp1c3QgYnkgYmVpbmcgdHVybmVkIG9uLlxcblxcbmQpIEJ1c2VzOiBTaW1pbGFyIHRvIHZlaGljbGVzLCB0dXJuaW5nIG9uIGEgYnVzIGRvZXMgbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi4gQnVzZXMgZW1pdCB2YXJpb3VzIHR5cGVzIG9mIHJhZGlhdGlvbiwgc3VjaCBhcyB0aGVybWFsIHJhZGlhdGlvbiBhbmQgc291bmQgd2F2ZXMsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5lKSBGaXJlY3JhY2tlcnM6IEZpcmVjcmFja2VycyBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIHdoZW4gdGhleSBhcmUgdHVybmVkIG9uLiBUaGV5IGVtaXQgbGlnaHQgYW5kIHNvdW5kLCBidXQgbm90IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXFxuXFxuZikgU2Vuc29yeSBuZXVyb25zOiBTZW5zb3J5IG5ldXJvbnMgYXJlIHBhcnQgb2YgdGhlIG5lcnZvdXMgc3lzdGVtIGFuZCBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbmcpIEFuIG9iamVjdDogQW4gb2JqZWN0IGRvZXMgbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBqdXN0IGJ5IGJlaW5nIHR1cm5lZCBvbi4gSG93ZXZlciwgc29tZSBvYmplY3RzIGNhbiBlbWl0IHJhZGlhdGlvbiBpZiB0aGV5IGFyZSBoZWF0ZWQgb3IgZW5lcmdpemVkLCBzdWNoIGFzIGEgbGlnaHQgYnVsYi5cXG5cXG5oKSBFbmdpbmVzOiBFbmdpbmVzIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gd2hlbiB0aGV5IGFyZSB0dXJuZWQgb24uIFRoZXkgZW1pdCB2YXJpb3VzIHR5cGVzIG9mIHJhZGlhdGlvbiwgc3VjaCBhcyB0aGVybWFsIHJhZGlhdGlvbiBhbmQgc291bmQgd2F2ZXMsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBjKSBsaWdodCBidWxiLCBhcyB0dXJuaW5nIG9uIGEgbGlnaHQgYnVsYiBlbWl0cyBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGluIHRoZSBmb3JtIG9mIHZpc2libGUgbGlnaHQuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiY1wifSJ9XSwgIjE3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlcmUgaXMgYSB6eWdvdGUgZm9ybWVkIGJ5IHNwZXJtIHN3aW1taW5nIHRvIGFuIGVnZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQ29sZGVyIGFuZCB3ZXR0ZXIgKGIpIE9jZWFuIHdhdGVyIChjKSBHcmFwdG9saXRlcyAoZCkgUmFwaWQgZXhwYW5zaW9uIChlKSBBIGRlbHRhIChmKSBBbiBhcmNoZWdvbml1bSAoZykgQmFybmFjbGVzIChoKSBBbiBvcmdhbmlzbSdzIGJvZHkifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcImEpIENvbGRlciBhbmQgd2V0dGVyOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgY2xpbWF0ZSBjb25kaXRpb24uXFxuXFxuYikgT2NlYW4gd2F0ZXI6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLiBJdCBpcyBqdXN0IGEgZGVzY3JpcHRpb24gb2YgYSB0eXBlIG9mIHdhdGVyLlxcblxcbmMpIEdyYXB0b2xpdGVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGdyYXB0b2xpdGVzIGFyZSBleHRpbmN0IG1hcmluZSBhbmltYWxzIHRoYXQgbGl2ZWQgZHVyaW5nIHRoZSBQYWxlb3pvaWMgZXJhLiBUaGV5IGhhdmUgbm90aGluZyB0byBkbyB3aXRoIHRoZSBmb3JtYXRpb24gb2YgYSB6eWdvdGUuXFxuXFxuZCkgUmFwaWQgZXhwYW5zaW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgcHJvY2Vzcy5cXG5cXG5lKSBBIGRlbHRhOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGEgZGVsdGEgaXMgYSBsYW5kZm9ybSB0aGF0IGlzIGZvcm1lZCBhdCB0aGUgbW91dGggb2YgYSByaXZlci4gSXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgZm9ybWF0aW9uIG9mIGEgenlnb3RlLlxcblxcbmcpIEJhcm5hY2xlczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBiYXJuYWNsZXMgYXJlIG1hcmluZSBhbmltYWxzIHRoYXQgcmVwcm9kdWNlIHRocm91Z2ggZXh0ZXJuYWwgZmVydGlsaXphdGlvbi4gVGhleSBkbyBub3QgaGF2ZSBhbiBhcmNoZWdvbml1bSB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuXFxuXFxuaCkgQW4gb3JnYW5pc20ncyBib2R5OiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgZ2VuZXJhbCBsb2NhdGlvbi5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBmKSBhbiBhcmNoZWdvbml1bSwgd2hpY2ggaXMgYSBzdHJ1Y3R1cmUgZm91bmQgaW4gc29tZSBwbGFudHMgYW5kIGFsZ2FlIHdoZXJlIHRoZSBlZ2cgaXMgZmVydGlsaXplZCBieSB0aGUgc3Blcm0sIGZvcm1pbmcgYSB6eWdvdGUuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZlwifSJ9XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiYSkgTWlsZGV3OiBXaGlsZSBtaWxkZXcgY2FuIGNhdXNlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBpdCBpcyBub3Qga25vd24gdG8gY2F1c2UgaGFybSB0byB0aGUgZXllcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYikgTm9ybWFsIHdhdGVyOiBOb3JtYWwgd2F0ZXIgaXMgbm90IGhhcm1mdWwgdG8gdGhlIGV5ZXMuIEluIGZhY3QsIGl0IGlzIGVzc2VudGlhbCBmb3IgbWFpbnRhaW5pbmcgZXllIGhlYWx0aC4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYykgSGVycGVzOiBIZXJwZXMgaXMgYSB2aXJhbCBpbmZlY3Rpb24gdGhhdCBjYW4gY2F1c2UgY29sZCBzb3JlcyBvciBnZW5pdGFsIHNvcmVzLiBXaGlsZSBpdCBjYW4gY2F1c2UgZXllIGluZmVjdGlvbnMsIGl0IGlzIG5vdCBhIGRpcmVjdCBjYXVzZSBvZiBoYXJtIHRvIHRoZSBleWVzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5kKSBOb3JtYWwgYWlyOiBOb3JtYWwgYWlyIGlzIG5vdCBoYXJtZnVsIHRvIHRoZSBleWVzLiBJbiBmYWN0LCBpdCBpcyBlc3NlbnRpYWwgZm9yIGJyZWF0aGluZyBhbmQgbWFpbnRhaW5pbmcgb3ZlcmFsbCBoZWFsdGguIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmUpIENvYWw6IENvYWwgZHVzdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcyBpZiBpdCBnZXRzIGludG8gdGhlbS4gSG93ZXZlciwgY29hbCBpdHNlbGYgaXMgbm90IGEgZGlyZWN0IGNhdXNlIG9mIGhhcm0gdG8gdGhlIGV5ZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmYpIE1vbGQ6IE1vbGQgY2FuIGNhdXNlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBidXQgaXQgaXMgbm90IGtub3duIHRvIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmgpIENvbnRhY3Qgc29sdXRpb246IFdoaWxlIGNvbnRhY3Qgc29sdXRpb24gY2FuIGNhdXNlIGlycml0YXRpb24gb3IgaW5mZWN0aW9uIGlmIG5vdCB1c2VkIHByb3Blcmx5LCBpdCBpcyBub3QgYSBkaXJlY3QgY2F1c2Ugb2YgaGFybSB0byB0aGUgZXllcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZykgQWNpZDogQWNpZCBjYW4gY2F1c2Ugc2V2ZXJlIGhhcm0gdG8gdGhlIGV5ZXMsIGluY2x1ZGluZyBjaGVtaWNhbCBidXJucyBhbmQgcGVybWFuZW50IGRhbWFnZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBjb3JyZWN0LlxcblxcbkluIGNvbmNsdXNpb24sIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBnKSBhY2lkLCBhcyBpdCBpcyB0aGUgb25seSBvcHRpb24gdGhhdCBjYW4gY2F1c2UgZGlyZWN0IGhhcm0gdG8gdGhlIGV5ZXMuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZ1wifSJ9XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJhKSBCYW1ib286IEJhbWJvbyBpcyBhIHR5cGUgb2YgZ3Jhc3MgdGhhdCBncm93cyBpbiB0cm9waWNhbCBhbmQgc3VidHJvcGljYWwgcmVnaW9ucy4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYikgRGVzaWNjYXRpb246IERlc2ljY2F0aW9uIGlzIHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIG1vaXN0dXJlIGZyb20gc29tZXRoaW5nLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5jKSBCdXJyczogQnVycnMgYXJlIHNtYWxsLCBwcmlja2x5IHNlZWRzIHRoYXQgYXR0YWNoIHRoZW1zZWx2ZXMgdG8gY2xvdGhpbmcgb3IgYW5pbWFsIGZ1ci4gVGhleSBkbyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZCkgRWxtczogRWxtcyBhcmUgZGVjaWR1b3VzIHRyZWVzIHRoYXQgZ3JvdyBpbiB0ZW1wZXJhdGUgcmVnaW9ucy4gVGhleSBkbyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZikgQ29hbDogQ29hbCBpcyBhIGZvc3NpbCBmdWVsIHRoYXQgZm9ybXMgZnJvbSB0aGUgcmVtYWlucyBvZiBwbGFudHMgdGhhdCBsaXZlZCBtaWxsaW9ucyBvZiB5ZWFycyBhZ28uIEl0IGZvcm1zIHRocm91Z2ggYSBwcm9jZXNzIG9mIGhlYXQgYW5kIHByZXNzdXJlLCBidXQgaXQgaXMgbm90IGZvcm1lZCBmcm9tIG1vc3MuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmcpIENhbmR5OiBDYW5keSBpcyBhIHN3ZWV0IGZvb2QgbWFkZSBmcm9tIHN1Z2FyIG9yIGNob2NvbGF0ZS4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuaCkgTWVhdDogTWVhdCBpcyB0aGUgZmxlc2ggb2YgYW5pbWFscyB0aGF0IGlzIHVzZWQgYXMgZm9vZC4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgTW9zczogTW9zcyBpcyBhIHNtYWxsLCBub24tdmFzY3VsYXIgcGxhbnQgdGhhdCBncm93cyBpbiBkYW1wIGVudmlyb25tZW50cy4gSXQgY2FuIGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgY29ycmVjdC5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJlXCJ9In1dfSwgImNvbnZlcnNhdGlvbl9SRkFfZmFsY29uIjogeyIwIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyBzYXRlbGxpdGUgdGVjaG5vbG9neSB1c2VkIGZvciBwcmVkaWN0aW5nP1xuQW5zd2VyIENob2ljZXM6IChhKSBTZWNvbmRzIGFuZCBtaW51dGVzIChiKSBUaGUgc3RyZW5ndGggYW5kIG1hZ25pdHVkZSBvZiBhbiBlYXJ0aHF1YWtlIChjKSBXaGF0IGl0J3MgbGlrZSBvdXRzaWRlIGVhY2ggZGF5IChkKSA3MC03NSBkZWdyZWVzIGZhaHJlbmhlaXQgKGUpIFJhcGlkIGNoYW5nZXMgb2NjdXIgKGYpIERlYWQtZW5kcyBhbmQgZmFsc2Ugc3RhcnRzLiAoZykgU25vdywgaWNlLCBhbmQgcm9jayAoaCkgQXJvdW5kIDUgdG8gMjcgZGVncmVlcyBjZWxzaXVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCItIChhKSBTZWNvbmRzIGFuZCBtaW51dGVzOiBTYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCB0byBwcmVkaWN0IHNlY29uZHMgYW5kIG1pbnV0ZXMuIFRoaXMgaXMgdG9vIHNwZWNpZmljIGFuZCBub3Qgd2hhdCBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBnZW5lcmFsbHkgdXNlZCBmb3IuIFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIHVzZWQgZm9yIGJyb2FkZXIgdGltZSBzY2FsZXMsIHN1Y2ggYXMgZGF5cywgd2Vla3MsIG1vbnRocywgYW5kIHllYXJzLlxcbi0gKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2U6IFdoaWxlIHNvbWUgdHlwZXMgb2Ygc2F0ZWxsaXRlIGRhdGEgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBpbmZvcm1hdGlvbiB0byBzdHVkeSBzZWlzbWljaXR5LCBlYXJ0aHF1YWtlcyB0aGVtc2VsdmVzIGFyZSB0eXBpY2FsbHkgcHJlZGljdGVkIHVzaW5nIG90aGVyIG1ldGhvZHMsIGxpa2Ugc2Vpc21vZ3JhcGhzIGFuZCBnZW9sb2dpY2FsIHN0dWRpZXMuXFxuLSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0OiBUaGlzIGlzIGEgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2UsIGFuZCBzYXRlbGxpdGVzIGNhbm5vdCBwcmVkaWN0IGV4YWN0IHRlbXBlcmF0dXJlIHJhbmdlcyBsaWtlIHRoaXMuIFdoaWxlIHNhdGVsbGl0ZXMgZG8gcGxheSBhIHJvbGUgaW4gd2VhdGhlciBwcmVkaWN0aW9uLCB3aGljaCBpbmNsdWRlcyB0ZW1wZXJhdHVyZSwgcHJlZGljdGluZyBzcGVjaWZpYyByYW5nZXMgd2l0aGluIGEgZGF5IGlzbid0IGEgdHlwaWNhbCBhcHBsaWNhdGlvbi5cXG4tIChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyOiBXaGlsZSBzYXRlbGxpdGVzIGNhbiBkZXRlY3QgcmFwaWQgY2hhbmdlcyBpbiBtYW55IGFyZWFzLCBzdWNoIGFzIGNsb3VkIGNvdmVyLCB3ZWF0aGVyIGZyb250cywgb3Igdm9sY2FuaWMgYWN0aXZpdHksIHRoZSBwaHJhc2UgJ3JhcGlkIGNoYW5nZXMgb2NjdXInIGlzIHRvbyB2YWd1ZS4gSXQgY291bGQgYXBwbHkgdG8gdmFyaW91cyBwaGVub21lbmEsIHNvIGl0J3Mgbm90IHNwZWNpZmljYWxseSBhYm91dCBwcmVkaWN0aW9ucyByZWxhdGVkIHRvIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGFsb25lLlxcbi0gKGYpIERlYWQtZW5kcyBhbmQgZmFsc2Ugc3RhcnRzOiBUaGVzZSBkZXNjcmlwdGlvbnMgcmVsYXRlIHRvIGh1bWFuIGJlaGF2aW9yIGFuZCBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzc2VzLCBub3QgcHJlZGljdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHNhdGVsbGl0ZSB0ZWNobm9sb2d5Llxcbi0gKGcpIFNub3csIGljZSwgYW5kIHJvY2s6IFRoaXMgaXMgYSB2ZXJ5IHNwZWNpZmljIGNvbWJpbmF0aW9uIG9mIHdlYXRoZXIgYW5kIGdlb2xvZ2ljYWwgZmVhdHVyZXMuIFdoaWxlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBjZXJ0YWlubHkgYmUgdXNlZCB0byBtb25pdG9yIHNub3csIGljZSwgYW5kIHJvY2sgJiBzb2lsIGNoYW5nZXMgKGZvciBsYW5kc2xpZGUgZGV0ZWN0aW9uLCBmb3IgZXhhbXBsZSksIGl0J3Mgbm90IHNwZWNpZmljYWxseSBhYm91dCBwcmVkaWN0aW5nIHRoZXNlIHBoZW5vbWVuYSBpbiB0aGUgd2F5IHRoZSBxdWVzdGlvbiBzdWdnZXN0cy5cXG4tIChoKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIGNlbHNpdXM6IFNpbWlsYXIgdG8gKGQpLCB0aGlzIGlzIGEgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2UsIGFuZCBzYXRlbGxpdGVzIGFsb25lIGNhbm5vdCBwcmVkaWN0IHNwZWNpZmljIHRlbXBlcmF0dXJlIHJhbmdlcyBzbyBwcmVjaXNlbHkuXFxuXFxuVGhlIGNvcnJlY3QgYW5zd2VyLCAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSwgdG91Y2hlcyBvbiBhIGJyb2FkZXIgcmFuZ2Ugb2YgZW52aXJvbm1lbnRhbCBjb25kaXRpb25zLCB3aGljaCBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSBkYXRhIG9uLiBTYXRlbGxpdGVzIHRyYWNrIHdlYXRoZXIgcGF0dGVybnMsIGNsb3VkIGNvdmVyLCBzdW5saWdodCwgYW5kIG90aGVyIGluZGljYXRvcnMgdGhhdCBnaXZlIHVzIGFuIGlkZWEgb2YgdGhlIG91dHNpZGUgY29uZGl0aW9ucyBhbG1vc3QgZGFpbHkuIFxcblxcblRoaXMgYnJvYWQsIGRhaWx5IG92ZXJ2aWV3IG9mIGVudmlyb25tZW50YWwgY29uZGl0aW9ucyBpcyBzb21ldGhpbmcgdGhhdCBzYXRlbGxpdGVzIGNhbiBwcm92aWRlLCB1bmxpa2UgdGhlIG1vcmUgbmFycm93IGFuZCBzcGVjaWZpYyBwcmVkaWN0aW9ucyBtZW50aW9uZWQgaW4gdGhlIG90aGVyIG9wdGlvbnMuIEFsdGhvdWdoIGl0J3Mgbm90IGEgdGVjaG5pY2FsICdwcmVkaWN0aW9uJyBpbiB0aGUgc2Vuc2Ugb2YgZm9yZWNhc3RpbmcgZXhhY3QgZXZlbnRzIGFsbCB0aGUgdGltZSwgaXQgZG9lcyBwcm92aWRlIHVwLXRvLWRhdGUgYW5kIGN1cnJlbnQgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYW5kIGluZm9ybSBvdGhlciBwcmVkaWN0aW9ucyByZWxhdGVkIHRvIHdlYXRoZXIgYW5kIGVudmlyb25tZW50LlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImNcIn0ifV0sICIxIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGlycmFkaWF0aW5nIGZvb2QgZG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFJlbGlldmUgcGFpbiAoYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzIChjKSBJbXByb3ZlcyBmb29kIHNhZmV0eSAoZCkgQWxsb3dzIGdyb3d0aCBvZiBiYWN0ZXJpYSAoZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGUgKGYpIENoZW1pY2FsIGNoYW5nZXMgKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZCAoaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiKGEpIFJlbGlldmUgcGFpbjogSXJyYWRpYXRpbmcgZm9vZCBkb2VzIG5vdCBoYXZlIGFuIGVmZmVjdCBvbiBwYWluLiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBmb29kIGlycmFkaWF0aW9uIGlzIGEgcHJvY2VzcyBmb2N1c2VkIG9uIGVuc3VyaW5nIGZvb2Qgc2FmZXR5IGJ5IHJlZHVjaW5nIGhhcm1mdWwgYmFjdGVyaWEsIG5vdCBvbiBhbGxldmlhdGluZyBwYWluLlxcblxcbihiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHM6IFdoaWxlIHNvbWUgc3R1ZGllcyBzdWdnZXN0IGlycmFkaWF0aW9uIGNvdWxkIHNsaWdodGx5IGVuaGFuY2UgbnV0cmllbnQgbGV2ZWxzLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgYmVuZWZpdCBvZiBmb29kIGlycmFkaWF0aW9uLiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSB0aGUgbWFpbiBwdXJwb3NlIGlzIHRvIGVuc3VyZSBmb29kIHNhZmV0eSwgbm90IG5lY2Vzc2FyaWx5IHRvIGVuaGFuY2UgbnV0cmllbnRzLlxcblxcbihjKSBJbXByb3ZlcyBmb29kIHNhZmV0eTogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIEZvb2QgaXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIHdoZXJlIGZvb2QgaXMgZXhwb3NlZCB0byBhIHNwZWNpZmljIGxldmVsIG9mIGlvbml6aW5nIHJhZGlhdGlvbiB0byBraWxsIG9yIGluYWN0aXZhdGUgcGF0aG9nZW5zIChiYWN0ZXJpYSwgdmlydXNlcywgcGFyYXNpdGVzKSwgcmVkdWNpbmcgdGhlIHJpc2sgb2YgZm9vZGJvcm5lIGlsbG5lc3Nlcy4gVGhpcyBtYWtlcyBpdCBzYWZlciBmb3IgY29uc3VtZXJzLlxcblxcbihkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhOiBUaGlzIGlzIGluY29ycmVjdC4gRm9vZCBpcnJhZGlhdGlvbiBpcyBpbnRlbmRlZCB0byByZWR1Y2UgdGhlIHBvcHVsYXRpb24gb2YgaGFybWZ1bCBiYWN0ZXJpYSB0aGF0IGNhbiBjYXVzZSBmb29kYm9ybmUgaWxsbmVzc2VzLiBJdCBkb2VzIG5vdCBhbGxvdyBvciBwcm9tb3RlIGJhY3RlcmlhbCBncm93dGguXFxuXFxuKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlOiBUaGlzIGlzIGluY29ycmVjdC4gSW4gZmFjdCwgaXJyYWRpYXRpb24gY2FuIGhlbHAgcmVkdWNlIGZvb2Qgd2FzdGUgYnkgcHJlc2VydmluZyBmb29kIGZvciBsb25nZXIgcGVyaW9kcywgdGhlcmVieSBleHRlbmRpbmcgaXRzIHNoZWxmIGxpZmUuXFxuXFxuKGYpIENoZW1pY2FsIGNoYW5nZXM6IFRoaXMgbWF5IGJlIHNvbWV3aGF0IGNvcnJlY3QgaW4gdGVybXMgb2YgZ2VuZXJhbCBjaGVtaXN0cnksIGJ1dCBpdCBkb2Vzbid0IGZ1bGx5IGV4cGxhaW4gdGhlIHB1cnBvc2Ugb3IgdGhlIHJlc3VsdCBvZiBmb29kIGlycmFkaWF0aW9uLiBUaGUgdGVybSAnY2hlbWljYWwgY2hhbmdlcycgaXMgdG9vIGJyb2FkIGFuZCBkb2Vzbid0IGNhcHR1cmUgdGhlIHNwZWNpZmljIGVmZmVjdCBcXHUyMDE0IHJlZHVjaW5nIHRoZSBwb3B1bGF0aW9uIG9mIGhhcm1mdWwgcGF0aG9nZW5zLlxcblxcbihnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQ6IFNpbWlsYXIgdG8gKGYpLCB3aGlsZSB0aGlzIG1pZ2h0IG9jY3VyIGFzIGEgc2lkZSBlZmZlY3Qgb2YgaXJyYWRpYXRpb24gKHNpbmNlIGl0IGNhdXNlcyBpb25pemF0aW9uKSwgaXQncyBub3Qgd2hhdCBmb29kIGlycmFkaWF0aW9uIGlzIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCBvciB3aHkgaXQncyBkb25lLlxcblxcbihoKSBNYWpvciB0aHJlYXQgdG8gaGVhbHRoOiBUaGlzIGlzIGluY29ycmVjdC4gSXJyYWRpYXRpbmcgZm9vZCB0byBzcGVjaWZpYyBsZXZlbHMgaXMgY29uc2lkZXJlZCBzYWZlIGJ5IG51bWVyb3VzIGludGVybmF0aW9uYWwgaGVhbHRoIG9yZ2FuaXphdGlvbnMuIFRoaXMgb3B0aW9uIG1pc3JlcHJlc2VudHMgdGhlIHB1cnBvc2UgYW5kIHNhZmV0eSBzdGFuZGFyZHMgb2YgZm9vZCBpcnJhZGlhdGlvbi5cXG5cXG5UbyBzdW1tYXJpemUsIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIG9mIGlycmFkaWF0aW5nIGZvb2QgaXMgdG8gaW1wcm92ZSBmb29kIHNhZmV0eSBieSByZWR1Y2luZyBoYXJtZnVsIG1pY3Jvb3JnYW5pc21zLCBtYWtpbmcgdGhlIGZvb2QgbGVzcyBsaWtlbHkgdG8gY2F1c2UgZm9vZGJvcm5lIGlsbG5lc3Nlcy5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJjXCJ9In1dLCAiMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgcHJvdGVjdHMgYSBtYW1tYWwncyBza2luP1xuQW5zd2VyIENob2ljZXM6IChhKSBGaWJlciBmb2xsaWNsZXMgKGIpIEV4Zm9saWF0aW9uIChjKSBSZXNpc3RhbmNlIChkKSBMYXllcnMgb2YgZmF0IChlKSBFdmFwb3JhdGlvbiAoZikgQSBjdXRpY2xlIChnKSBTZW5zb3J5IG5ldXJvbnMgKGgpIEZ1ciBhbmQgZmF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCIoYSkgKipGaWJlciBmb2xsaWNsZXMqKjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIE1hbW1hbHMgaGF2ZSBhIHVuaXF1ZSBza2luIHN0cnVjdHVyZSB0aGF0IGluY2x1ZGVzIG11bHRpcGxlIGxheWVycywgb25lIG9mIHdoaWNoIGludm9sdmVzIGEgbmV0d29yayBvZiBmaWJlciBmb2xsaWNsZXMuIFRoZXNlIGFyZSBzbWFsbCBwb2NrZXRzIHdpdGhpbiB0aGUgc2tpbiB0aGF0IGNvbnRhaW4gaGFpciBmb2xsaWNsZXMsIHNlYmFjZW91cyBnbGFuZHMsIGFuZCBzd2VhdCBnbGFuZHMuIFRoZSBsYXllciBvZiBoYWlyICh3aGljaCBjb25zaXN0cyBvZiBmaWJlcnMpIGFuZCB0aGUgYXNzb2NpYXRlZCBzdHJ1Y3R1cmVzIHdvcmsgdG9nZXRoZXIgdG8gcHJvdGVjdCB0aGUgbWFtbWFsJ3Mgc2tpbiBmcm9tIHZhcmlvdXMgZW52aXJvbm1lbnRhbCB0aHJlYXRzIHN1Y2ggYXMgbWljcm9vcmdhbmlzbXMsIHBoeXNpY2FsIGRhbWFnZSwgYW5kIGV4Y2Vzc2l2ZSBoZWF0IG9yIGNvbGQuXFxuXFxuTm93IGxldCdzIGRpc21pc3MgdGhlIGluY29ycmVjdCBvcHRpb25zOlxcblxcbihiKSAqKkV4Zm9saWF0aW9uKio6IEV4Zm9saWF0aW9uIHJlZmVycyB0byB0aGUgbmF0dXJhbCBwcm9jZXNzIG9mIGRlYWQgc2tpbiBjZWxscyBkeWluZyBhbmQgc2hlZGRpbmcgb2ZmLiBXaGlsZSBpdCBjb250cmlidXRlcyB0byBoZWFsdGggYW5kIHNraW4gYXBwZWFyYW5jZSwgaXQgZG9lcyBub3QgZGlyZWN0bHkgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG4oYykgKipSZXNpc3RhbmNlKio6IFRoaXMgdGVybSBpcyB0b28gYnJvYWQgYW5kIHZhZ3VlIHRvIGFjY3VyYXRlbHkgZGVzY3JpYmUgd2hhdCBwcm90ZWN0cyBhIG1hbW1hbCdzIHNraW4uIE1hbW1hbCBza2luIHJlc2lzdGFuY2UgaXMgYSByZXN1bHQgb2YgaXRzIHN0cnVjdHVyZSwgbm90IHRoZSB0ZXJtIGl0c2VsZi5cXG5cXG4oZCkgKipMYXllcnMgb2YgZmF0Kio6IE1hbW1hbHMgY2VydGFpbmx5IGhhdmUgbGF5ZXJzIG9mIGZhdCwgZXNwZWNpYWxseSB1bmRlciB0aGUgc2tpbiAoc3ViY3V0YW5lb3VzIGZhdCkuIFRoaXMgbGF5ZXIgYWN0cyBhcyBpbnN1bGF0aW9uIGFnYWluc3QgY29sZCB0ZW1wZXJhdHVyZXMgYW5kIGFzIGFuIGVuZXJneSByZXNlcnZlLCBidXQgaXQgaXMgbm90IHdoYXQgcHJpbWFyaWx5IHByb3RlY3RzIHNraW4gaW4gdGhlIHdheSBoYWlyIGRvZXMuXFxuXFxuKGUpICoqRXZhcG9yYXRpb24qKjogRXZhcG9yYXRpb24gb2Ygc3dlYXQgY2FuIGNvb2wgdGhlIGJvZHkgYW5kIGlzIGEgcmVndWxhdG9yeSBtZWNoYW5pc20gZm9yIG1hbW1hbHMsIGJ1dCBpdCBkb2Vzbid0IG9mZmVyIHBoeXNpY2FsIHByb3RlY3Rpb24gdG8gdGhlIHNraW4uXFxuXFxuKGYpICoqQSBjdXRpY2xlKio6IFRoZSBjdXRpY2xlIHJlZmVycyB0byB0aGUgb3V0ZXIgcGFydCBvZiBhIHBsYW50IGNlbGwgd2FsbCBvciwgbG9vc2VseSwgdGhlIG91dGVyIHBhcnQgb2YgdGhlIHNraW4gYXMgaW4gaHVtYW4gaGFpciB3aGljaCBpcyB3aGF0IHByb3RlY3RzIHRoYXQgaGFpciBmb2xsaWNsZS4gVGhpcyBkb2Vzbid0IGFjY3VyYXRlbHkgZGVzY3JpYmUgdGhlIHByb3RlY3RpdmUgbGF5ZXIgb2YgbWFtbWFsIHNraW4uXFxuXFxuKGcpICoqU2Vuc29yeSBuZXVyb25zKio6IFRoZXNlIGFyZSBzcGVjaWFsaXplZCBuZXJ2ZSBjZWxscyB0aGF0IGRldGVjdCBhbmQgdHJhbnNtaXQgc2Vuc29yeSBpbmZvcm1hdGlvbiB0byB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbS4gU2Vuc29yeSBuZXVyb25zIHBsYXkgYSByb2xlIGluIHBlcmNlaXZpbmcgdGhlIGVudmlyb25tZW50IGJ1dCBhcmUgbm90IHBoeXNpY2FsIGJhcnJpZXJzIHRoYXQgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG4oaCkgKipGdXIgYW5kIGZhdCoqOiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgY29ycmVjdCBhbmQgaW5jb3JyZWN0IGVsZW1lbnRzLiBXaGlsZSBmdXIgZG9lcyBwcm92aWRlIHByb3RlY3Rpb24gYXMgcGFydCBvZiB0aGUgZm9sbGljbGUgbmV0d29yaywgJ2ZhdCcgYWxvbmUgaXMgbm90IGEgcHJvdGVjdGl2ZSBzdHJ1Y3R1cmUgaW4gdGhlIHNraW4gaXRzZWxmLiBBZGRpdGlvbmFsbHksIHNwZWNpZnlpbmcgZnVyIGFuZCBmYXQgdG9nZXRoZXIgbWl4ZXMgdHdvIGRpZmZlcmVudCBmdW5jdGlvbmFsaXRpZXMgKGZ1ciBmb3IgaW5zdWxhdGlvbiBhbmQgcHJvdGVjdGlvbiwgZmF0IGZvciBpbnN1bGF0aW9uKSByYXRoZXIgdGhhbiBvbmUgc2luZ3VsYXIgbWVjaGFuaXNtIGRpcmVjdGx5IGFkZHJlc3Npbmcgc2tpbiBwcm90ZWN0aW9uLlxcblxcbkluIHN1bW1hcnksIG1hbW1hbHMnIHNraW4gaXMgcm9idXN0bHkgcHJvdGVjdGVkIHByaW1hcmlseSBieSB0aGUgbmV0d29yayBvZiBmaWJlciBmb2xsaWNsZXMsIHdoaWNoIGluY29ycG9yYXRlcyBib3RoIHRoZSBoYWlyIHN0cnVjdHVyZXMgKGZ1cikgYW5kIHRoZSBhc3NvY2lhdGVkIGdsYW5kcyAobGlrZSBzZWJhY2VvdXMgZ2xhbmRzKSB0aGF0IGx1YnJpY2F0ZSB0aGUgZnVyLiBUaGlzIHByb3RlY3RzIHRoZSB1bmRlcmx5aW5nIGxheWVycyBvZiB0aGUgc2tpbiBhbmQgcGVybWl0cyBtYW1tYWxzIHRvIHRocml2ZSBpbiB2YXJpb3VzIGNsaW1hdGVzIGFuZCBlbnZpcm9ubWVudHMuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiYVwifSJ9XSwgIjMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvIGVhcnRod29ybXMgZG8gd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRGllcyAoYikgUmVncm93cyBpdCAoYykgUmVwcm9kdWNlcyAoZCkgU2VkaW1lbnQgKGUpIFJvb3QgZ3Jvd3RoIChmKSBNaWdyYXRlIChnKSBTdG9wcyBncm93aW5nIChoKSBSb290cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiMS4gKipPcHRpb24gKGEpOiBEaWVzKipcXG4gICAtIEVhcnRod29ybXMgYXJlIHNlZ21lbnRlZCBvcmdhbmlzbXMsIHdpdGggZWFjaCBzZWdtZW50IGNvbnRhaW5pbmcgYm90aCBuZXJ2ZSBjb3JkcyBhbmQgbXVzY2xlIGZpYmVycy4gV2hpbGUgaXQgaXMgdHJ1ZSB0aGF0IGVhY2ggc2VnbWVudCBjYW4gZnVuY3Rpb24gc2VtaS1pbmRlcGVuZGVudGx5LCB0aGUgc2V2ZXJlZCBzZWdtZW50IGRvZXNuJ3Qgc2ltcGx5IGRpZS4gVGhlIGxvc3Mgb2YgYSBzZWdtZW50IG1heSBhZmZlY3QgdGhlIHdvcm0ncyBtb2JpbGl0eSBhbmQgb3ZlcmFsbCBoZWFsdGgsIGJ1dCBpdCBkb2Vzbid0IGxlYWQgdG8gaW5zdGFudGFuZW91cyBkZWF0aCBvZiB0aGUgc2VnbWVudCBpdHNlbGYuXFxuXFxuMi4gKipPcHRpb24gKGMpOiBSZXByb2R1Y2VzKipcXG4gICAtIFJlcHJvZHVjdGlvbiBpbiBlYXJ0aHdvcm1zIGlzIGEgc2VwYXJhdGUgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGZvcm1hdGlvbiBvZiBlaXRoZXIgZWdncyBvciB3b3JtcyBmcm9tIGhlcm1hcGhyb2RpdGljIHBhcnRuZXJzLiBUaGUgYnJlYWtpbmcgb2ZmIG9mIGEgc2VnbWVudCBkb2VzIG5vdCBpbml0aWF0ZSB0aGlzIHJlcHJvZHVjdGl2ZSBwcm9jZXNzLlxcblxcbjMuICoqT3B0aW9uIChkKTogU2VkaW1lbnQqKlxcbiAgIC0gU2VkaW1lbnQgcmVmZXJzIHRvIGZpbmUsIGxvb3NlIHBhcnRpY2xlcyBvZiBvcmdhbmljIGFuZCBpbm9yZ2FuaWMgbWF0ZXJpYWwgZm91bmQgYXQgdGhlIGJvdHRvbSBvZiBhIGJvZHkgb2Ygd2F0ZXIuIFRoZXJlIGlzIG5vIGZhY3R1YWwgY29ubmVjdGlvbiBiZXR3ZWVuIGEgc2VnbWVudGVkIGVhcnRod29ybSBicmVha2luZyBvZmYgYW5kIHRoZSBjcmVhdGlvbiBvZiBzZWRpbWVudC5cXG5cXG40LiAqKk9wdGlvbiAoZSk6IFJvb3QgZ3Jvd3RoKipcXG4gICAtIFJvb3QgZ3Jvd3RoIGlzIGEgcHJvY2VzcyBpbiBwbGFudHMsIG5vdCBlYXJ0aHdvcm1zLiBFYXJ0aHdvcm1zIGRvIG5vdCBoYXZlIHJvb3RzIG5vciBkbyB0aGV5IHBlcmZvcm0gcm9vdCBncm93dGggYXMgcGFydCBvZiB0aGVpciBiaW9sb2dpY2FsIGZ1bmN0aW9ucy5cXG5cXG41LiAqKk9wdGlvbiAoZik6IE1pZ3JhdGUqKlxcbiAgIC0gTWlncmF0aW9uIHJlZmVycyB0byB0aGUgcmVndWxhciBzZWFzb25hbCBtb3ZlbWVudHMgbWFkZSBieSBhbmltYWxzIGluIHNlYXJjaCBvZiBmb29kLCBicmVlZGluZywgb3IgbWlsZGVyIGNsaW1hdGljIGNvbmRpdGlvbnMuIEVhcnRod29ybXMgY2FuIG1pZ3JhdGUsIGJ1dCB0aGUgYnJlYWtpbmcgb2ZmIG9mIGEgc2VnbWVudCAod2hpY2ggdHlwaWNhbGx5IGhhcHBlbnMgZHVlIHRvIGV4dGVybmFsIHByZXNzdXJlKSBkb2VzIG5vdCBpbml0aWF0ZSBhIG1pZ3JhdGlvbiBwcm9jZXNzLlxcblxcbjYuICoqT3B0aW9uIChnKTogU3RvcHMgZ3Jvd2luZyoqXFxuICAgLSBHcm93dGggaW4gZWFydGh3b3JtcyBpcyBpbmRlZWQgYmlvbG9naWNhbCwgYnV0IHRoZSBsb3NzIG9mIGEgc2VnbWVudCBkb2Vzbid0IGNhdXNlIGEgY2Vzc2F0aW9uIG9mIGdyb3d0aC4gU2VnbWVudHMgb2YgZWFydGh3b3JtcyBhcmUgY29uc3RhbnRseSBiZWluZyBhZGRlZCBhbmQgc2hlZCBkZXBlbmRpbmcgb24gdGhlIHdvcm0ncyBncm93dGggYW5kIGNvbmRpdGlvbnMsIHNvIHRoZSBsb3NzIG9mIGEgc2VnbWVudCB3b3VsZG4ndCB0eXBpY2FsbHkgaGFsdCBpdHMgb3ZlcmFsbCBncm93dGguXFxuXFxuNy4gKipPcHRpb24gKGgpOiBSb290cyoqXFxuICAgLSBBcyBtZW50aW9uZWQgZWFybGllciwgcm9vdHMgYXJlIGEgY2hhcmFjdGVyaXN0aWMgb2YgcGxhbnRzLCBub3QgZWFydGh3b3Jtcy4gRWFydGh3b3JtIHNlZ21lbnRzIGRvIG5vdCB0dXJuIGludG8gcm9vdHMuXFxuXFxuKipUaGUgY29ycmVjdCBhbnN3ZXIgaXMgKGIpIFJlZ3Jvd3MgaXQuKipcXG5cXG5FYXJ0aHdvcm1zIGNhbiByZWdlbmVyYXRlIGxvc3Qgc2VnbWVudHMuIFRoaXMgcmVnZW5lcmF0aXZlIGFiaWxpdHkgaXMgb25lIG9mIHRoZSB1bmlxdWUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZXNlIHNlZ21lbnRlZCB3b3Jtcy4gV2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZiwgdHlwaWNhbGx5IGR1ZSB0byBleHRlcm5hbCBmb3JjZXMsIHRoZSBzZXZlcmVkIHNlZ21lbnQgY2FuIHJlZ2VuZXJhdGUsIGxlYWRpbmcgdG8gdGhlIGdyb3d0aCBvZiBhIG5ldyBvbmUgaWYgdGhlIGNvbmRpdGlvbnMgcGVybWl0LlxcblxcblJlbWVtYmVyLCBlYWNoIGluY29ycmVjdCBhbnN3ZXIgaXMgbm90IGNvcnJlY3QgYmVjYXVzZSB0aGV5IGVpdGhlciBkb24ndCBhZGRyZXNzIHRoZSBiaW9sb2dpY2FsIHByb2Nlc3MgYXQgaGFuZCBvciBkb24ndCBhbGlnbiB3aXRoIGtub3duIGJpb2xvZ2ljYWwgZnVuY3Rpb25zIGFuZCBjaGFyYWN0ZXJpc3RpY3Mgb2YgZWFydGh3b3Jtcy5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJiXCJ9In1dLCAiNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IExpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBUaGUgZW52aXJvbm1lbnQgKGIpIFJhaW5zdG9ybXMgKGMpIERlc3RydWN0aW9uIChkKSBWaXNpYmlsaXR5IChlKSBUaHVuZGVyIChmKSBUaGUgc3VuIChnKSBUaGUgd2VhdGhlci4gKGgpIFRyYW5zcG9ydGF0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCIoYSkgVGhlIGVudmlyb25tZW50OiBMaWdodG5pbmcgY2FuIHJlbGVhc2UgbGFyZ2UgYW1vdW50cyBvZiBlbmVyZ3kgYW5kIGhlYXQsIHdoaWNoIGNhbiBkaXNydXB0IG5hdHVyYWwgZWNvc3lzdGVtcywgY2F1c2UgZm9yZXN0IGZpcmVzLCBhbmQgYWZmZWN0IGFpciBxdWFsaXR5LCB0aHVzIGhhcm1pbmcgdGhlIGVudmlyb25tZW50LlxcblxcbihiKSBSYWluc3Rvcm1zOiBMaWdodG5pbmcgZG9lcyBub3QgZGlyZWN0bHkgaGFybSByYWluc3Rvcm1zLiBJbiBmYWN0LCBpdCdzIGEgcGFydCBvZiB0aGUgbmF0dXJhbCBzdG9ybSBwcm9jZXNzLiBMaWdodG5pbmcgaXMgb2Z0ZW4gYSByZXN1bHQgb2Ygc2V2ZXJlIHRodW5kZXJzdG9ybXMsIG5vdCBhIGZhY3RvciB0aGF0IGNhdXNlcyB0aGVtIHRvIGJlIGhhcm1mdWwgdGhlbXNlbHZlcy5cXG5cXG4oYykgRGVzdHJ1Y3Rpb246IFRoaXMgb3B0aW9uIGlzIGxlc3Mgc3BlY2lmaWMgdGhhbiAoYSkgb3IgKGIpLCBidXQgaW4gZ2VuZXJhbCB0ZXJtcywgaXQncyB0cnVlLiBIb3dldmVyLCAnZGVzdHJ1Y3Rpb24nIGlzIHRvbyB2YWd1ZSBhbmQgZG9lc24ndCBleHBsYWluIHRoZSBoYXJtIGNhdXNlZCBieSBsaWdodG5pbmcgYWN0aXZpdHkuXFxuXFxuKGQpIFZpc2liaWxpdHk6IFdoaWxlIGxpZ2h0bmluZyBjYW4gdGVtcG9yYXJpbHkgcmVkdWNlIHZpc2liaWxpdHkgZHVyaW5nIHN0b3JtcywgaXQgZG9lcyBub3QgaW5oZXJlbnRseSAnYnJpbmcnIG9yICdjYXVzZScgcG9vciB2aXNpYmlsaXR5LiBWaXNpYmlsaXR5IGlzc3VlcyBhcmUgZ2VuZXJhbGx5IGR1ZSB0byByYWluLCBmb2csIG9yIHRoZSBzdG9ybSBjbG91ZHMgdGhlbXNlbHZlcywgbm90IHRoZSBsaWdodG5pbmcuXFxuXFxuKGUpIFRodW5kZXI6IFRoaXMgaXMgbm90IGEgaGFybSBidXQgcmF0aGVyIGFub3RoZXIgcGhlbm9tZW5vbiBjcmVhdGVkIGFsb25nc2lkZSBsaWdodG5pbmc7IHRoZXkgYXJlIGJvdGggbWFuaWZlc3RhdGlvbnMgb2YgZWxlY3RyaWNhbCBkaXNjaGFyZ2VzIGluIHRodW5kZXJzdG9ybXMuXFxuXFxuKGYpIFRoZSBzdW46IExpZ2h0bmluZyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBzdW4sIGFzIHRoZXkgYXJlIGRpc3RhbnQgZnJvbSBlYWNoIG90aGVyIGFuZCBvcGVyYXRlIGluZGVwZW5kZW50bHkgb2YgZWFjaCBvdGhlci5cXG5cXG4oZykgVGhlIHdlYXRoZXI6IFdoaWxlIGxpZ2h0bmluZyBpcyBhIHBhcnQgb2Ygc2V2ZXJlIHdlYXRoZXIsIGl0IGRvZXMgbm90IGNhdXNlIHdlYXRoZXIgY2hhbmdlcyBpbmhlcmVudGx5LiBXZWF0aGVyIGlzIGEgY29tcGxleCBzeXN0ZW0gaW5mbHVlbmNlZCBieSBtYW55IGZhY3RvcnMsIGFuZCBsaWdodG5pbmcgaXMgb25seSBvbmUgb2YgbWFueSBpbmRpY2F0b3JzIG9mIHNldmVyZSB3ZWF0aGVyLlxcblxcbihoKSBUcmFuc3BvcnRhdGlvbjogVGhpcyBpcyBhbm90aGVyIHBvdGVudGlhbCBlZmZlY3QsIGJ1dCBpdCBpcyBpbmRpcmVjdC4gTGlnaHRuaW5nIHN0cmlrZXMgY2FuIGNhdXNlIGRhbWFnZSB0byBpbmZyYXN0cnVjdHVyZSBsaWtlIHBvd2VyIGxpbmVzLCByb2FkcywgcmFpbHJvYWRzLCBldGMuLCBpbmRpcmVjdGx5IGFmZmVjdGluZyB0cmFuc3BvcnRhdGlvbiBzeXN0ZW1zLiBIb3dldmVyLCB0aGlzIHN0YXRlbWVudCBpc24ndCBhcyBkaXJlY3Qgb3IgY2xlYXIgYXMgaXQgY291bGQgYmUuXFxuXFxuQWZ0ZXIgZ29pbmcgdGhyb3VnaCBlYWNoIGFuc3dlciBjaG9pY2UsIGl0J3MgY2xlYXIgdGhhdCAoYSkgJ1RoZSBlbnZpcm9ubWVudCcgaXMgdGhlIG1vc3QgZGlyZWN0IGFuZCBjb21wcmVoZW5zaXZlIGFuc3dlciB0byB3aHkgbGlnaHRuaW5nIGNhbiBiZSBiYWQgd2l0aG91dCBmYWxsaW5nIGludG8gYnJvYWQgb3IgaW5kaXJlY3QgZXhwbGFuYXRpb25zLlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImFcIn0ifV0sICI1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgd2hhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU291bHMgKGIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXMgKGMpIE9yZ2FuaXNtcyAoZCkgUGxhbnQgb3IgYW5pbWFsIChlKSBNYWxlcyBhbmQgZmVtYWxlcyAoZikgRGVmb3Jlc3RhdGlvbiAoZykgUmVpbmNhcm5hdGlvbiAoaCkgSW1wb3J0YW50IGhhYml0YXRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCIoYSkgU291bHM6IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBpbiBiaW9sb2d5IHR5cGljYWxseSByZWZlcnMgdG8gcGh5c2ljYWwgb3IgbW9sZWN1bGFyIHJlbWFpbnMsIG5vdCBhYnN0cmFjdCBjb25jZXB0cyBsaWtlIHNvdWxzLiBCaW9sb2d5IGRlYWxzIHdpdGggcGh5c2ljYWwsIHRhbmdpYmxlIGFzcGVjdHMgb2YgbGlmZSBmb3Jtcy5cXG5cXG4oYikgQW5pbWFscyB3aXRoIGJhY2tib25lczogVGhpcyBvcHRpb24gaXMgdG9vIHNwZWNpZmljLiBXaGlsZSBldmlkZW5jZSBjb3VsZCBpbmRpY2F0ZSB0aGUgcHJlc2VuY2Ugb2YgYW5pbWFscyB3aXRoIGJhY2tib25lcywgaXQgZG9lc24ndCBhY2NvdW50IGZvciBvdGhlciBmb3JtcyBvZiBsaWZlIHRoYXQgbWlnaHQgYmUgcHJlc2VudCBpbiB0aGUgZm9zc2lsIHJlY29yZC5cXG5cXG4oYykgT3JnYW5pc21zOiBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIHRoZSBjb3JyZWN0IGFuc3dlciwgYnV0IGl0J3Mgbm90IHRoZSBtb3N0IHNwZWNpZmljLiBGb3NzaWxzIG9yIGNoZW1pY2FsIG1hcmtlcnMgY2FuIGluZGVlZCBzaG93IHdoZXJlIHZhcmlvdXMgb3JnYW5pc21zIG9uY2UgbGl2ZWQsIGJ1dCBub3QgYWxsIHBhc3QgbGlmZSBpcyByZXByZXNlbnRlZCBieSBkaXJlY3QgZm9zc2lsIGV2aWRlbmNlLlxcblxcbihmKSBEZWZvcmVzdGF0aW9uOiBUaGlzIHJlZmVycyB0byBhIGN1cnJlbnQgZW52aXJvbm1lbnRhbCBwcm9jZXNzLCBub3QgcGFzdCBsaWZlLiBJdCBpbmRpY2F0ZXMgY2hhbmdlcyBpbiBlY29zeXN0ZW1zIHdpdGhpbiB0aGUgcmVjZW50IHBhc3QgYnV0IGRvZXNuJ3Qgc3BlY2lmaWNhbGx5IGFkZHJlc3Mgd2hpY2ggbGlmZSBmb3JtcyBleGlzdGVkIHRoZXJlIGluIHRoZSBwYXN0LlxcblxcbihnKSBSZWluY2FybmF0aW9uOiBMaWtlICdzb3VscywnIHRoaXMgaXMgYSBzcGlyaXR1YWwgb3IgbWV0YXBoeXNpY2FsIGNvbmNlcHQsIG5vdCBncm91bmRlZCBpbiBiaW9sb2dpY2FsIGV2aWRlbmNlLiBCaW9sb2d5IGNvbmNlcm5zIGl0c2VsZiB3aXRoIG9ic2VydmFibGUgYW5kIHNjaWVudGlmaWNhbGx5IHRlc3RhYmxlIHBoZW5vbWVuYS5cXG5cXG4oaCkgSW1wb3J0YW50IGhhYml0YXRzOiBUaGlzIGlzIHRvbyB2YWd1ZS4gV2hpbGUgaXQgY291bGQgYmUgdGllZCB0byB0aGUgdHlwZXMgb2Ygb3JnYW5pc21zIHRoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2UsIHRoZSBwaHJhc2UgY291bGQgaW1wbHkgYSB2YXJpZXR5IG9mIHVucmVsYXRlZCBjb250ZXh0cywgYW5kIGRvZXNuJ3QgZGlyZWN0bHkgc3RhdGUgd2hhdCB0eXBlcyBvZiBsaWZlIGV4aXN0ZWQuXFxuXFxuVGhlcmVmb3JlLCB0aGUgbW9zdCBhY2N1cmF0ZSBhbmQgY29tcHJlaGVuc2l2ZSBhbnN3ZXIgaXMgKGQpIFBsYW50IG9yIGFuaW1hbC4gRXZpZGVuY2UgaW4gdGhlIGZvcm0gb2YgZm9zc2lscywgdHJhY2UgZm9zc2lscywgYW5kIGltcHJpbnRzIGNhbiBpbmRpY2F0ZSB0aGUgcHJlc2VuY2Ugb2YgdmFyaW91cyBsaWZlIGZvcm1zLCBpbmNsdWRpbmcgYm90aCBwbGFudHMgYW5kIGFuaW1hbHMsIGluIGEgcGFydGljdWxhciBwbGFjZSB3aGVyZSB0aGV5IG9uY2UgbGl2ZWQuIFRoaXMgY292ZXJzIGEgYnJvYWQgcmFuZ2Ugb2YgcGFzdCBsaWZlIGluIGEgc2NpZW50aWZpY2FsbHkgZ3JvdW5kZWQgbWFubmVyLCBhY2tub3dsZWRnaW5nIGNvbnRyaWJ1dGlvbnMgZnJvbSBib3RoIHBsYW50IGFuZCBhbmltYWwga2luZ2RvbXMuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZFwifSJ9XSwgIjYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBIb3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93biwgb3IgaW5oZXJpdGVkLCBpcyBmb3VuZCBpbiBpbmZvcm1hdGlvbiBpbiBhbiBvcmdhbmlzbSdzIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNwZWNpZXMgKGIpIE1lc3NlbmdlcnMgKGMpIEhhaXIgZm9sbGljbGVzIChkKSBDeWNsZXMgKGUpIFNraW4gY2VsbHMgKGYpIEVuZG9jcmluZSBzeXN0ZW0gKGcpIENocm9tb3NvbWVzIChoKSBQcm90ZWlucyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiVGhlIGNvcnJlY3QgYW5zd2VyIGlzIChnKSBDaHJvbW9zb21lcy5cXG5cXG5MZXQncyBleGFtaW5lIHdoeSB0aGUgb3RoZXIgb3B0aW9ucyBhcmUgaW5jb3JyZWN0OlxcblxcbihhKSBTcGVjaWVzOiBTcGVjaWVzIGlzIGEgY2xhc3NpZmljYXRpb24gc3lzdGVtIHVzZWQgYnkgYmlvbG9naXN0cyB0byBncm91cCB0b2dldGhlciBzaW1pbGFyIG9yZ2FuaXNtcy4gV2hpbGUgc3BlY2llcyBhcmUgcmVsYXRlZCBpbiB0ZXJtcyBvZiB0aGVpciBnZW5ldGljcywgdGhleSBkbyBub3QgY29udGFpbiB0aGUgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgYW4gaW5kaXZpZHVhbCdzIGluaGVyaXRlZCB0cmFpdHMuXFxuXFxuKGIpIE1lc3NlbmdlcnM6IFRoaXMgb3B0aW9uIGNvdWxkIHJlZmVyIHRvIHNpZ25hbHMgb3IgY29tbXVuaWNhdGlvbiBzeXN0ZW1zIHdpdGhpbiBhbiBvcmdhbmlzbSwgYnV0IGl0IGRvZXMgbm90IHR5cGljYWxseSByZWxhdGUgdG8gdGhlIGdlbmV0aWMgaW5mb3JtYXRpb24gcmVzcG9uc2libGUgZm9yIGluaGVyaXRlZCB0cmFpdHMuIFxcblxcbihjKSBIYWlyIGZvbGxpY2xlczogSGFpciBmb2xsaWNsZXMgYXJlIHN0cnVjdHVyZXMgaW4gdGhlIHNraW4gdGhhdCBwcm9kdWNlIGhhaXIuIFRoZXkgZG9uJ3QgY29udGFpbiBnZW5ldGljIGluZm9ybWF0aW9uIGFib3V0IHRyYWl0czsgcmF0aGVyLCB0aGV5J3JlIGEgcmVzdWx0IG9mIGdlbmV0aWMgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgY2hyb21vc29tZXMuXFxuXFxuKGQpIEN5Y2xlczogQmlvbG9naWNhbCBjeWNsZXMsIHN1Y2ggYXMgY2lyY2FkaWFuIHJoeXRobXMsIGFyZSByZWd1bGFyIHBhdHRlcm5zIG9mIGJlaGF2aW9yIG9yIHBoeXNpb2xvZ2ljYWwgY2hhbmdlLiBUaGV5IGFyZSByZWd1bGF0ZWQgYnkgaW50ZXJuYWwgYW5kIGV4dGVybmFsIHN0aW11bGksIGJ1dCB0aGV5IGRvbid0IHN0b3JlIGdlbmV0aWMgaW5mb3JtYXRpb24uXFxuXFxuKGUpIFNraW4gY2VsbHM6IFNraW4gY2VsbHMgYXJlIHNvbWF0aWMgY2VsbHMgdGhhdCBjb25zdGl0dXRlIHRoZSBvdXRlciBsYXllciBvZiB0aGUgc2tpbi4gVGhleSBjb250YWluIGdlbmV0aWMgbWF0ZXJpYWwsIGJ1dCB0aGV5IGRvIG5vdCBob2xkIHRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgZm9yIGhvdyB0cmFpdHMgd2lsbCBiZSBleHByZXNzZWQgLSB0aGF0IGluZm9ybWF0aW9uIGlzIGZvdW5kIGluIHRoZSBETkEsIG5vdGFibHkgd2l0aGluIGNocm9tb3NvbWVzLlxcblxcbihmKSBFbmRvY3JpbmUgc3lzdGVtOiBUaGUgZW5kb2NyaW5lIHN5c3RlbSBpcyBhIGdyb3VwIG9mIGdsYW5kcyB0aGF0IHNlY3JldGUgaG9ybW9uZXMsIHdoaWNoIHJlZ3VsYXRlIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBib2R5LiBJdCBjb250cm9scyBtYW55IGFzcGVjdHMgb2Ygb3VyIGJvZHkgZnVuY3Rpb25zIGJ1dCBkb2Vzbid0IHN0b3JlIGdlbmV0aWMgaW5mb3JtYXRpb24uXFxuXFxuKGgpIFByb3RlaW5zOiBQcm90ZWlucyBhcmUgZXNzZW50aWFsIG1vbGVjdWxlcyB0aGF0IHBsYXkgbWFueSByb2xlcyBpbiB0aGUgYm9keSwgaW5jbHVkaW5nIGFjdGluZyBhcyBlbnp5bWVzLCBzdHJ1Y3R1cmFsIGNvbXBvbmVudHMsIGFuZCBzaWduYWxpbmcgbW9sZWN1bGVzLiBUaGV5J3JlIGNyZWF0ZWQgYmFzZWQgb24gaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIEROQSBidXQgZG8gbm90IGNvbnRhaW4gdGhlIGdlbmV0aWMgaW5mb3JtYXRpb24gaXRzZWxmLlxcblxcbkluIHN1bW1hcnksIGNocm9tb3NvbWVzIGFyZSB0aGUgc3RydWN0dXJlcyB3aXRoaW4gdGhlIGNlbGwgbnVjbGV1cyB0aGF0IGNhcnJ5IHRoZSBnZW5ldGljIG1hdGVyaWFsIChETkEpLCB3aGljaCBpbmNsdWRlcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pc20ncyB0cmFpdHMuIFRoZSBvdGhlciBvcHRpb25zIGFyZSBpbmNvcnJlY3QgYmVjYXVzZSB0aGV5IHJlZmVyIHRvIGVudGl0aWVzLCBwcm9jZXNzZXMsIG9yIG1lY2hhbmlzbXMgdGhhdCBkbyBub3Qgc3RvcmUgb3IgZGlyZWN0bHkgY29udGFpbiB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiB0aGF0IGRldGVybWluZXMgaW5oZXJpdGVkIHRyYWl0cy5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJnXCJ9In1dLCAiNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgYXJlIHRoZSBtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEdyYXNzIChiKSBBbmltYWxzIChjKSBBcHBsZXMgKGQpIFBvdGF0b2VzIChlKSBUcmVlcyAoZikgUGxhbnRzIChnKSBGdW5naSAoaCkgRmllbGRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCIxLiAqKkdyYXNzIChhKSoqIC0gV2hpbGUgZ3Jhc3MgaXMgaW5kZWVkIGEgcHJvZHVjZXIsIG9yIGF1dG90cm9waGljIG9yZ2FuaXNtLCBpbiB0aGUgYmlvbG9naWNhbCBzZW5zZSwgaXQgaXNuJ3QgdHlwaWNhbGx5IGVtcGhhc2l6ZWQgYXMgYSBtYWpvciBwcm9kdWNlciBpbiB0aGUgY29udGV4dCBvZiB0aGUgcXVlc3Rpb24gYmVjYXVzZSBpdCBpcyBtb3JlIGNvbW1vbiBhbmQgbGVzcyB2YXJpZWQgdGhhbiBvdGhlciBwbGFudCBmb3Jtcy5cXG5cXG4yLiAqKkFuaW1hbHMgKGIpKiogLSBBbmltYWxzIGFyZSBjb25zdW1lcnMgKGhldGVyb3Ryb3BocykgdGhhdCBjYW5ub3QgcHJvZHVjZSB0aGVpciBvd24gZm9vZCwgc28gdGhleSBhcmUgbm90IHByb2R1Y2Vycy5cXG5cXG4zLiAqKkFwcGxlcyAoYykqKiAtIExpa2UgZ3Jhc3MsIGFwcGxlcyBhcmUgYSB0eXBlIG9mIHBsYW50IHByb2R1Y3QsIGJ1dCB0aGV5IGFyZSBkZXJpdmVkIGZyb20gcHJvZHVjZXJzICh0cmVlcyBiZWFyaW5nIGFwcGxlcyksIG5vdCBwcm9kdWNlcnMgdGhlbXNlbHZlcy5cXG5cXG40LiAqKlBvdGF0b2VzIChkKSoqIC0gUG90YXRvZXMgYXJlIGFuIGFncmljdWx0dXJhbCBjcm9wLCBhbmQgbGlrZSBhcHBsZXMsIHRoZXkgYXJlIGRlcml2ZWQgZnJvbSBwbGFudHMuIFRoZXkncmUgbm90IHByb2R1Y2VycywgYnV0IHRoZSBwcm9kdWNlcnMgYXJlIHRoZSBwb3RhdG8gcGxhbnRzLlxcblxcbjUuICoqRmllbGRzIChoKSoqIC0gQSBmaWVsZCByZWZlcnMgdG8gYW4gYWdyaWN1bHR1cmFsIGFyZWEgd2hlcmUgY3JvcHMgYXJlIGdyb3duLiBJdCdzIG5vdCBhIHByb2R1Y2VyIGl0c2VsZiwgYnV0IGNhbiBjb250YWluIHByb2R1Y2VycyBzdWNoIGFzIGdyYWlucywgdmVnZXRhYmxlcywgb3Igb3RoZXIgY3JvcHMuXFxuXFxuNi4gKipQbGFudHMgKGYpKiogLSBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gUGxhbnRzLCBpbiBnZW5lcmFsLCBhcmUgcHJvZHVjZXJzIHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgcGhvdG9zeW50aGVzaXMsIHdoaWNoIGNvbnZlcnRzIGxpZ2h0IGVuZXJneSBpbnRvIGNoZW1pY2FsIGVuZXJneSB0aGF0IGNhbiBiZSBsYXRlciByZWxlYXNlZCB0byBmdWVsIHRoZSBvcmdhbmlzbSdzIGFjdGl2aXRpZXMuXFxuXFxuNy4gKipGdW5naSAoZykqKiAtIEFsdGhvdWdoIGZ1bmdpIGFyZSBhdXRvdHJvcGhpYywgdGhlIHF1ZXN0aW9uIHNwZWNpZmljYWxseSByZWZlcnMgdG8gJ3RlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uJyBhcyBtYWpvciBmYWN0b3JzLiBXaGlsZSBmdW5naSBjYW4gaW5kZWVkIHBob3Rvc3ludGhlc2l6ZSAobGlrZSBhbGdhZSksIHRoZXkgYXJlIG9mdGVuIGNvbnNpZGVyZWQgZGVjb21wb3NlcnMsIG1vcmUgcmVsZXZhbnQgdG8gdGVtcGVyYXR1cmUgYW5kIHdhc3RlIGN5Y2xpbmcgaW4gYW4gZWNvc3lzdGVtIHJhdGhlciB0aGFuIHByaW1hcnkgcHJvZHVjZXJzLlxcblxcbkluIGNvbmNsdXNpb24sIHRoZSBwcmltYXJ5IHByb2R1Y2VycyBhcmUgKipwbGFudHMqKiBiZWNhdXNlIHRoZXkgYXJlIHRoZSBtYWluIGVudGl0aWVzIGNhcGFibGUgb2YgY29udmVydGluZyBzdW5saWdodCwgY2FyYm9uIGRpb3hpZGUsIGFuZCB3YXRlciBpbnRvIGNvbXBsZXggc3VnYXJzIHRocm91Z2ggcGhvdG9zeW50aGVzaXMsIHVzaW5nIHRlbXBlcmF0dXJlIGFuZCBsaWdodCAoYSBjb21wb25lbnQgb2YgcHJlY2lwaXRhdGlvbiBlZmZlY3RzIHZpYSBldmFwb3RyYW5zcGlyYXRpb24pIGFzIHByaW1hcnkgZmFjdG9ycy4gQW5pbWFscywgZnVuZ2ksIGFwcGxlcywgcG90YXRvZXMsIGFuZCBmaWVsZHMgZG8gbm90IGRpcmVjdGx5IGVuZ2FnZSBpbiB0aGlzIHByb2Nlc3MgaW4gdGhlIHNhbWUgd2F5IGFzIHBsYW50cywgYW5kIHRodXMsIGFyZSBub3QgcHJpbWFyeSBwcm9kdWNlcnMuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZlwifSJ9XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcImEpIFNjYXJjZSByZXNvdXJjZXMgLSBUaGlzIG9wdGlvbiBzdWdnZXN0cyB0aGF0IGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgbWFrZXMgdmVnZXRhdGlvbiBzY2FyY2UgcmVzb3VyY2VzLiBUaGlzIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2Ugc29pbCBhbmQgbXVkIGJlaW5nIGEgYnVyaWFsIGxvY2F0aW9uIGRvZXMgbm90IGltcGx5IHRoZSB2ZWdldGF0aW9uIGl0IGNvbnRhaW5zIGJlY29tZXMgc2NhcmNlLiBUaGUgdmVnZXRhdGlvbiBpdHNlbGYgd291bGRuJ3QgYmVjb21lIHNjYXJjZSBkdWUgdG8gYnVyaWFsOyByYXRoZXIsIGl0IG1heSBjb250cmlidXRlIHRvIHRoZSBmb3JtYXRpb24gb2YgZm9zc2lsIGZ1ZWxzLlxcblxcbmIpIEhhcm1mdWwgc3Vic3RhbmNlcyAtIFZlZ2V0YXRpb24gYnVyaWVkIGluIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIGludG8gaGFybWZ1bCBzdWJzdGFuY2VzLiBXaGlsZSBpdCdzIHRydWUgdGhhdCBvdmVyIGdlb2xvZ2ljYWwgdGltZXNjYWxlcywgZGVjb21wb3NpdGlvbiBwcm9jZXNzZXMgY2FuIHByb2R1Y2UgdmFyaW91cyBzdWJzdGFuY2VzLCB0aGUgaW1tZWRpYXRlIHJlc3VsdCBvZiBidXJpYWwgaXNuJ3QgdGhlIGNyZWF0aW9uIG9mIGhhcm1mdWwgc3Vic3RhbmNlcy4gVGhlIGNvcnJlY3QgYW5zd2VyIGludm9sdmVzIGEgcHJvY2VzcyB0aGF0IGxlYWRzIHRvIGEgbW9yZSBjb21wbGV4IGZvc3NpbCBmdWVsLCBub3QganVzdCBoYXJtZnVsIHN1YnN0YW5jZXMuXFxuXFxuYykgU2NhcnMgLSBUaGlzIGFuc3dlciBjaG9pY2Ugc3VnZ2VzdHMgdGhlIHZlZ2V0YXRpb24gdHJhbnNmb3JtcyBpbnRvIHNjYXJzLiBTY2FycyBhcmUgaW5qdXJpZXMgb3Igd291bmRzIG9uIGFuIG9yZ2FuaXNtLCBhbmQgdGhlcmUgaXMgbm8gYmlvbG9naWNhbCBvciBnZW9sb2dpY2FsIHByb2Nlc3MgYnkgd2hpY2ggYnVyaWFsIHVuZGVyIHNvaWwgYW5kIG11ZCB3b3VsZCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2Fycy5cXG5cXG5mKSBTb21ldGhpbmcgdG8gbW92ZSAtIFRoaXMgYW5zd2VyIGltcGxpZXMgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBidXJpYWwgcHJvY2VzcyBpcyBzb21ldGhpbmcgdXNlZCBmb3IgbW92ZW1lbnQuIEhvd2V2ZXIsIGZvc3NpbCBmdWVscywgZm9ybWVkIG92ZXIgbWlsbGlvbnMgb2YgeWVhcnMsIGFyZW4ndCB1c2VkIGRpcmVjdGx5IGZvciBtb3ZlbWVudCBidXQgYXJlIHNvdXJjZXMgb2YgZW5lcmd5IHdoZW4gY29tYnVzdGVkLiBUaGV5IGRvbid0IGJlY29tZSdzb21ldGhpbmcgdG8gbW92ZScgaW4gYW55IGltbWVkaWF0ZSBvciBkaXJlY3Qgc2Vuc2UuXFxuXFxuZykgTWFnaWMgLSBUaGlzIG9wdGlvbiBpcyBub3QgYSBzY2llbnRpZmljIG9yIGZhY3R1YWwgYW5zd2VyLiBUaGUgcHJvY2VzcyBvZiBob3cgdmVnZXRhdGlvbiB0cmFuc2Zvcm1zIGludG8gZm9zc2lsIGZ1ZWxzIGlzIGEgbmF0dXJhbCBnZW9sb2dpY2FsIHByb2Nlc3MsIG5vdCBhIG1hZ2ljYWwgb25lLlxcblxcbmgpIFBpY25pY3MgLSBUaGlzIG9wdGlvbiBpcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgYmlvbG9naWNhbCBvciBnZW9sb2dpY2FsIHByb2Nlc3MgZGVzY3JpYmVkIGluIHRoZSBxdWVzdGlvbi4gUGljbmljIGl0ZW1zIGFyZSBodW1hbi1tYWRlIGFuZCBkb24ndCByZXN1bHQgZnJvbSB0aGUgdHJhbnNmb3JtYXRpb24gb2YgZGVhZCBwbGFudCBtYXRlcmlhbC5cXG5cXG5TbyB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgKGQpIEZvc3NpbCBmdWVscywgYmVjYXVzZSB0aGlzIGlzIHRoZSBuYXR1cmFsIHByb2Nlc3MgYnkgd2hpY2ggZGVhZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgYmVjb21lcyBwYXJ0IG9mIHRoZSBmb3NzaWwgZnVlbCBkZXBvc2l0cy4gRm9zc2lsIGZ1ZWxzIGZvcm0gZnJvbSB0aGUgcmVtYWlucyBvZiBkZWFkIHBsYW50cyBhbmQgYW5pbWFscyB0aGF0IGhhdmUgYmVlbiBidXJpZWQgYW5kIHN1YmplY3RlZCB0byBpbW1lbnNlIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgbWlsbGlvbnMgb2YgeWVhcnMuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZFwifSJ9XSwgIjkiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVuIHdpbGwgYW5pbWFscyBtb3ZlIHRvIGFub3RoZXIgYXJlYT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVG8ga2VlcCB0aGVpciBib2R5IGhlYXQuIChiKSBSZXVzaW5nIG1hdGVyaWFscyAoYykgSWYgdGhleSBjYW4gbm8gbG9uZ2VyIGdldCBmb29kIChkKSBJZiB0aGV5IGFyZSBib3JlZCAoZSkgTWFyc2hlcyBhbmQgc3dhbXBzIChmKSBJZiB0aGV5IGhhdmUgdG9vIG11Y2ggbW9uZXkgKGcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIChoKSBJZiB0aGV5IGhhdmUgdG9vIG11Y2ggZm9vZCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiV2hlbiBhbmltYWxzIG1vdmUgdG8gYW5vdGhlciBhcmVhLCBpdCdzIG5vdCBkdWUgdG86XFxuXFxuKGEpIEtlZXBpbmcgdGhlaXIgYm9keSBoZWF0IC0gVGhpcyBpcyB0eXBpY2FsbHkgaW5mbHVlbmNlZCBieSBzZWFzb25hbCBjaGFuZ2VzIG9yIHdlYXRoZXIgY29uZGl0aW9ucywgbm90IHRoZSBwaHlzaWNhbCBhY3Qgb2YgbW92aW5nIHRvIGFub3RoZXIgYXJlYS4gV2hpbGUgdGVtcGVyYXR1cmUgY2FuIGJlIGEgZmFjdG9yIGluIG1pZ3JhdGlvbiwgaXQgZG9lc24ndCBkcml2ZSB0aGUgZGVjaXNpb24gZm9yIHRoZSBtb3ZlbWVudCBpdHNlbGYuXFxuXFxuKGIpIFJldXNpbmcgbWF0ZXJpYWxzIC0gVGhpcyBvcHRpb24gcmVmZXJzIHRvIHJlY3ljbGluZyBvciByZXVzaW5nIHBoeXNpY2FsIG9iamVjdHMgYW5kIGhhcyBubyBkaXJlY3QgY29ycmVsYXRpb24gdG8gYW5pbWFsIG1pZ3JhdGlvbiBvciBtb3ZlbWVudC5cXG5cXG4oZCkgQmVpbmcgYm9yZWQgLSBCb3JlZG9tIGlzIGEgaHVtYW4gY29uc3RydWN0IGFuZCBkb2Vzbid0IGRpcmVjdGx5IGFwcGx5IHRvIGFuaW1hbHMnIGJlaGF2aW9yYWwgZGVjaXNpb25zLiBBbmltYWxzIGFyZSBkcml2ZW4gYnkgaW5zdGluY3RzIGFuZCBiYXNpYyBuZWVkcyByYXRoZXIgdGhhbiBib3JlZG9tLlxcblxcbihmKSBIYXZpbmcgdG9vIG11Y2ggbW9uZXkgLSBUaGlzIGlzIGFuIGVjb25vbWljIGNvbmNlcHQgdGhhdCBkb2Vzbid0IGFwcGx5IHRvIGFuaW1hbHMsIGFzIHRoZXkgZG9uJ3QgaGF2ZSBjdXJyZW5jeSBvciBmaW5hbmNpYWwgcmVzb3VyY2VzLlxcblxcbihlKSBNYXJzaGVzIGFuZCBzd2FtcHMgLSBUaGVzZSBhcmUgc3BlY2lmaWMgdHlwZXMgb2YgZWNvc3lzdGVtcywgYW5kIHdoaWxlIGFuaW1hbHMgbWF5IGluaGFiaXQgdGhlc2UgYXJlYXMgb3IgbW92ZSB0byB0aGVtIGZvciB2YXJpb3VzIHJlYXNvbnMsIG1lcmVseSBleHBsYWluaW5nIHdoZXJlIHRoZXkgbWlnaHQgZ28gZG9lc24ndCBhZGRyZXNzIHdoeSB0aGV5IG1vdmUuXFxuXFxuKGcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIC0gVGhpcyBkZXNjcmliZXMgYXRtb3NwaGVyaWMgcGhlbm9tZW5hIGFuZCBkb2VzIG5vdCBpbmZsdWVuY2UgdGhlIG1vdmVtZW50IG9mIGFuaW1hbHMuXFxuXFxuKGgpIEhhdmluZyB0b28gbXVjaCBmb29kIC0gV2hpbGUgYW5pbWFscyBtaWdodCBtaWdyYXRlIHRvIGF2b2lkIGFyZWFzIG9mIG92ZXItY29tcGV0aXRpb24gZm9yIGZvb2QgcmVzb3VyY2VzLCB0aGUgcGhyYXNlICd0b28gbXVjaCBmb29kJyBpcyBub3QgYSBsb2dpY2FsIG1vdGl2YXRvciBmb3IgbW92aW5nIHRvIGEgbmV3IGFyZWEuIFRvbyBtdWNoIGZvb2Qgd291bGQgbWVhbiB0aGV5J3JlIGFscmVhZHkgaW4gYSBnb29kIGxvY2F0aW9uLCBuZWdhdGluZyB0aGUgbmVlZCBmb3IgbWlncmF0aW9uLlxcblxcbihjKSBJZiB0aGV5IGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgLSBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSBhbmltYWxzIG9mdGVuIG1pZ3JhdGUgaW4gcmVzcG9uc2UgdG8gc2NhcmNpdHkgaW4gdGhlaXIgY3VycmVudCBoYWJpdGF0LiBJbmFkZXF1YXRlIGZvb2QgYXZhaWxhYmlsaXR5IGNhbiBsZWFkIHRvIHN0YXJ2YXRpb24sIHByb21wdGluZyBhIG1vdmVtZW50IHRvIGFyZWFzIHdoZXJlIHJlc291cmNlcyBhcmUgbW9yZSBhYnVuZGFudC4gVGhleSBhcmUgc2Vla2luZyB0byBlbnN1cmUgdGhlaXIgc3Vydml2YWwgYW5kIHJlcHJvZHVjdGlvbi5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoYykgYXMgaXQgaXMgdGhlIG1vc3QgbG9naWNhbCBleHBsYW5hdGlvbiBmb3IgYW5pbWFsIG1vdmVtZW50IHRvIGFub3RoZXIgYXJlYSBiYXNlZCBvbiBzdXJ2aXZhbCBuZWVkcywgcGFydGljdWxhcmx5IGZvb2QgYXZhaWxhYmlsaXR5LlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImNcIn0ifV0sICIxMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgS2luZXRpYyBlbmVyZ3kgKGIpIExvdWQgbm9pc2VzIChjKSBWaWJyYXRpbmcgd2F2ZXMgKGQpIEFuIG9iamVjdCBpcyBzZWVuIChlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IChmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW4gKGgpIEhhcm1mdWwgc3Vic3RhbmNlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiMS4gUmVhZCB0aGUgcXVlc3Rpb246ICdBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHdoYXQ/J1xcbiAgICAtIFRoZSBxdWVzdGlvbiBhc2tzIGFib3V0IHRoZSBmb3JtIG9mIGVuZXJneSB0aGF0IGEgZmlyZWNyYWNrZXIgdHJhbnNmb3JtcyBjaGVtaWNhbCBlbmVyZ3kgaW50by5cXG5cXG4yLiBJZGVudGlmeSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBvcHRpb25zOlxcbiAgIC0gYSkgS2luZXRpYyBlbmVyZ3lcXG4gICAtIGIpIExvdWQgbm9pc2VzXFxuICAgLSBjKSBWaWJyYXRpbmcgd2F2ZXNcXG4gICAtIGQpIEFuIG9iamVjdCBpcyBzZWVuXFxuICAgLSBlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5XFxuICAgLSBmKSBEZW94eXJpYm9udWNsZWljIGFjaWRcXG4gICAtIGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW5cXG4gICAtIGgpIEhhcm1mdWwgc3Vic3RhbmNlc1xcblxcbjMuIERldGVybWluZSB3aGljaCBvcHRpb25zIGFyZSBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZTpcXG4gICAtIEtpbmV0aWMgZW5lcmd5IGNvdWxkIGJlIGEgcmVzdWx0IG9mIHRoZSBmaXJlY3JhY2tlcidzIGV4cGxvc2lvbiwgYnV0IGl0IGlzIG5vdCB0aGUgbW9zdCBkaXJlY3Qgb3Igc3BlY2lmaWMgdHJhbnNmb3JtYXRpb24uXFxuICAgLSBMb3VkIG5vaXNlcyBhcmUgYSBieXByb2R1Y3QgYnV0IGRvIG5vdCByZXByZXNlbnQgZW5lcmd5LlxcbiAgIC0gVmlicmF0aW5nIHdhdmVzIG1heSByZXN1bHQgZnJvbSB0aGUgZXhwbG9zaW9uLCBidXQgdGhleSBhcmUgYWxzbyBhIGJ5cHJvZHVjdCByYXRoZXIgdGhhbiB0aGUgcHJpbWFyeSBjb252ZXJ0ZWQgZW5lcmd5LlxcbiAgIC0gQW4gb2JqZWN0IGlzIHNlZW46IFRoaXMgaXMgbm90IGEgZm9ybSBvZiBlbmVyZ3kuXFxuICAgLSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSBjb252ZXJzaW9uIGluIGEgZmlyZWNyYWNrZXIuXFxuICAgLSBEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSkgaXMgb3JnYW5pYyBtYXRlcmlhbCBhbmQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIGVuZXJneSBjb252ZXJzaW9uIGF0IHBsYXkuXFxuICAgLSBIeWRyb2dlbiBhbmQgb3h5Z2VuIGFyZSBlbGVtZW50cyBwcm9kdWNlZCBpbiB0aGUgY2hlbWljYWwgcmVhY3Rpb24gYnV0IG5vdCB0aGUgZm9ybSBvZiBlbmVyZ3kgaXRzZWxmLlxcbiAgIC0gSGFybWZ1bCBzdWJzdGFuY2VzIGFyZSBieXByb2R1Y3RzIGJ1dCBub3QgdGhlIGZvcm0gb2YgZW5lcmd5LlxcblxcbjQuIFRoZSBjb3JyZWN0IGFuc3dlciBpcyAoYyk6XFxuICAgLSBWaWJyYXRpbmcgd2F2ZXM6IFdoaWxlIGZpcmVjcmFja2VycyBkbyBpbmRlZWQgcHJvZHVjZSB2aWJyYXRpb25zICh3aGljaCBjYW4gZmVsdCBvciBoZWFyZCBhcyBzb3VuZCksIHRoZSBtb3N0IGFjY3VyYXRlIGFuZCBjb21wbGV0ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW5lcmd5IHRyYW5zZm9ybWF0aW9uIGlzIG5vdCBsaXN0ZWQgZGlyZWN0bHkuXFxuXFxuNS4gRXhwbGFuYXRpb24gb2Ygd2h5IG90aGVyIG9wdGlvbnMgYXJlIGluY29ycmVjdDpcXG4gICAtIGEpIEtpbmV0aWMgZW5lcmd5OiBXaGlsZSBraW5ldGljIGVuZXJneSBpcyBpbnZvbHZlZCBpbiB0aGUgZXhwbG9zaW9uLCBpdCBpcyBub3QgdGhlIGltbWVkaWF0ZSBhbmQgcHJpbWFyeSBjb252ZXJzaW9uIGZvcm0uXFxuICAgLSBiKSBMb3VkIG5vaXNlczogVGhpcyBpcyBhIHJlc3VsdCBvZiB0aGUgZXhwbG9zaW9uIGJ1dCBub3QgYSBmb3JtIG9mIGVuZXJneS5cXG4gICAtIGQpIEFuIG9iamVjdCBpcyBzZWVuOiBUaGlzIHN0YXRlbWVudCBpcyBpcnJlbGV2YW50IHRvIGVuZXJneSBjb252ZXJzaW9uLlxcbiAgIC0gZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneTogQWx0aG91Z2ggcmVsYXRlZCB0byB0aGUgZW5lcmd5IHJlbGVhc2VkIGR1cmluZyB0aGUgZXhwbG9zaW9uIChsaWdodCBhbmQgc291bmQpLCBpdCBpcyBub3QgdGhlIG1vc3QgZGlyZWN0IGRlc2NyaXB0aW9uIG9mIHRoZSBjb252ZXJzaW9uIGZyb20gY2hlbWljYWwgdG8gYW5vdGhlciBmb3JtLlxcbiAgIC0gZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkIChETkEpOiBOb3QgcmVsYXRlZCB0byB0aGUgZW5lcmd5IHRyYW5zZm9ybWF0aW9uIHByb2Nlc3MuXFxuICAgLSBnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuOiBQcm9kdWNlZCBlbGVtZW50cyBidXQgbm90IGZvcm1zIG9mIGVuZXJneS5cXG4gICAtIGgpIEhhcm1mdWwgc3Vic3RhbmNlczogQnlwcm9kdWN0cyBidXQgbm90IGZvcm1zIG9mIGVuZXJneS5cXG5cXG5JbiBjb25jbHVzaW9uLCB3aGlsZSBhIGZpcmVjcmFja2VyIHByaW1hcmlseSBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byBraW5ldGljIGVuZXJneSBhbmQgdmlicmF0aW9ucyAoc291bmQgd2F2ZXMpLCB0aGUgY2xvc2VzdCBvcHRpb24gcHJvdmlkZWQgaXMgKGMpIFZpYnJhdGluZyB3YXZlcywgaW5kaWNhdGluZyB0aGUgbW9zdCBldmlkZW50IHBoeXNpY2FsIGVmZmVjdCBhbmQgZm9ybSBvZiBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gZnJvbSBjaGVtaWNhbCBlbmVyZ3kgYXQgdGhlIGVsZW1lbnRhcnkgbGV2ZWwuXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiY1wifSJ9XSwgIjExIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNYWpvciBlZmZlY3RzIChiKSBSZXNwaXJhdGlvbiAoYykgUm9sZXggKGQpIERlbnNpdHkgKGUpIERpcGh0aGVyaWEgKGYpIENhbmlzIGx1cHVzIChnKSBTa2luIGNvbG9yIChoKSBEaWdlc3Rpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcIihhKSBNYWpvciBlZmZlY3RzOlxcblRoaXMgdGVybSBjb3VsZCBwb3RlbnRpYWxseSByZWxhdGUgdG8gZ2VuZXRpY3MsIGJ1dCBpdCdzIGEgZ2VuZXJhbCB0ZXJtIHRoYXQgY291bGQgZGVzY3JpYmUgdGhlIGVmZmVjdHMgb2YgbXVsdGlwbGUgZ2VuZXMgb24gYSBwaGVub3R5cGUsIHJhdGhlciB0aGFuIGEgc3BlY2lmaWMgcmVzdWx0LiBUaHVzLCBpdCdzIG5vdCBhIGRpcmVjdCBhbnN3ZXIgdG8gdGhlIHF1ZXN0aW9uIGFza2luZyBmb3IgYSBzcGVjaWZpYyByZXN1bHQgb2YgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuXFxuXFxuKGIpIFJlc3BpcmF0aW9uOlxcblJlc3BpcmF0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIGludm9sdmluZyB0aGUgZXhjaGFuZ2Ugb2YgZ2FzZXMgKG94eWdlbiBhbmQgY2FyYm9uIGRpb3hpZGUpIHRoYXQgb2NjdXJzIGluIGxpdmluZyBvcmdhbmlzbXMuIFdoaWxlIGdlbmUgaW50ZXJhY3Rpb25zIGNhbiBpbmZsdWVuY2UgbWV0YWJvbGljIHByb2Nlc3NlcyBpbmNsdWRpbmcgcmVzcGlyYXRpb24sIHRoZSB0ZXJtICdyZXNwaXJhdGlvbicgaXRzZWxmIGlzIG5vdCBhIHJlc3VsdCBkaXJlY3RseSBzdGVtbWluZyBmcm9tIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLlxcblxcbihjKSBSb2xleDpcXG5BIFJvbGV4IGlzIGEgbHV4dXJ5IHdyaXN0d2F0Y2guIFRoaXMgb3B0aW9uIGlzIGlycmVsZXZhbnQgdG8gdGhlIGNvbnRleHQgb2YgZ2VuZXRpY3MgYW5kIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLlxcblxcbihkKSBEZW5zaXR5OlxcbkRlbnNpdHkgaXMgYSBwaHlzaWNhbCBwcm9wZXJ0eSBvZiBtYXR0ZXIgYW5kIGRvZXMgbm90IGRpcmVjdGx5IHJlbGF0ZSB0byBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2YgbXVsdGlwbGUgZ2VuZXMuXFxuXFxuKGUpIERpcGh0aGVyaWE6XFxuRGlwaHRoZXJpYSBpcyBhIGJhY3RlcmlhbCBkaXNlYXNlOyB3aGlsZSBnZW5lcyBjYW4gaW5mbHVlbmNlIHN1c2NlcHRpYmlsaXR5IHRvIGNlcnRhaW4gZGlzZWFzZXMsICdkaXBodGhlcmlhJyBpdHNlbGYgaXNuJ3QgYSByZXN1bHQgb2YgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMgYnV0IHJhdGhlciBhbiBlZmZlY3Qgb2YgYSBwYXRob2dlbmljIGJhY3Rlcml1bSAoQ29yeW5lYmFjdGVyaXVtIGRpcGh0aGVyaWFlKS5cXG5cXG4oZikgQ2FuaXMgbHVwdXM6XFxuQ2FuaXMgbHVwdXMgaXMgdGhlIHNjaWVudGlmaWMgbmFtZSBmb3IgdGhlIGdyYXkgd29sZiwgYSBzcGVjaWVzLiBUaGlzIGlzIG5vdCBhIHJlc3VsdCBhcmlzaW5nIGZyb20gdGhlIGludGVyYWN0aW9uIG9mIG11bHRpcGxlIGdlbmVzIGluIGEgZ2VuZXRpYyBjb250ZXh0OyBpdCByZWZlcnMgdG8gYSB0YXhvbm9taWMgY2xhc3NpZmljYXRpb24uXFxuXFxuKGcpIFNraW4gY29sb3I6XFxuU2tpbiBjb2xvciBpcyBvZnRlbiBpbmZsdWVuY2VkIGJ5IHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLCBpbmNsdWRpbmcgdGhvc2UgcmVzcG9uc2libGUgZm9yIHRoZSBwcm9kdWN0aW9uIG9mIG1lbGFuaW4sIHdoaWNoIGdpdmVzIHNraW4gaXRzIGNvbG9yLiBUaGlzIGlzIGEgZGlyZWN0IHJlc3VsdCBvZiBnZW5ldGljIGZhY3RvcnMuXFxuXFxuKGgpIERpZ2VzdGlvbjpcXG5MaWtlIHJlc3BpcmF0aW9uLCBkaWdlc3Rpb24gaXMgYSBiaW9sb2dpY2FsIHByb2Nlc3MgaW52b2x2aW5nIG11bHRpcGxlIHN0ZXBzIGFuZCBvcmdhbnMuIFdoaWxlIGdlbmVzIGNlcnRhaW5seSBwbGF5IGEgcm9sZSBpbiByZWd1bGF0aW5nIGRpZ2VzdGl2ZSBwcm9jZXNzZXMgKGUuZy4sIGVuenltZXMgaW52b2x2ZWQgaW4gZGlnZXN0aW9uKSwgJ2RpZ2VzdGlvbicgYXMgYSBwcm9jZXNzIHJhdGhlciB0aGFuIGEgcmVzdWx0IG9mIGdlbmV0aWMgaW50ZXJhY3Rpb24gaXNuJ3QgYXMgc3BlY2lmaWMgYXMgc2tpbiBjb2xvciBmb3IgYSBnZW5ldGljIHRyYWl0J3MgcmVzdWx0LlxcblxcblRodXMsIChnKSBTa2luIGNvbG9yIGlzIHRoZSBtb3N0IHNwZWNpZmljIGFuZCBkaXJlY3QgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBBbHRob3VnaCBvdGhlciBwcm9jZXNzZXMgKHJlc3BpcmF0aW9uLCBkaWdlc3Rpb24pIG1pZ2h0IGJlIGluZmx1ZW5jZWQgYnkgZ2VuZSBpbnRlcmFjdGlvbnMsIHRoZXkgcmVmZXIgdG8gb25nb2luZyBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gYSBzcGVjaWZpYywgb2JzZXJ2YWJsZSBvdXRjb21lIGxpa2Ugc2tpbiBjb2xvci5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJnXCJ9In1dLCAiMTIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2hlZXAgKGIpIFNhbG1vbiAoYykgR3Jhc3NlcyAoZCkgQmF0cyAoZSkgQW5pbWFscyAoZikgU2hydWJzIChnKSBIdW1hbnMgKGgpIFRyZWVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCIoYSkgKipTaGVlcCoqOiBTaGVlcCBhcmUgaGVyYml2b3JlcywgcHJpbWFyaWx5IGZlZWRpbmcgb24gZ3Jhc3NlcyBhbmQgb3RoZXIgcGxhbnRzLiBUaGV5IHR5cGljYWxseSBjYW5ub3QgZmVlZCBhdCBtdWx0aXBsZSB0cm9waGljIGxldmVscy5cXG5cXG4oYikgKipTYWxtb24qKjogV2hpbGUgc2FsbW9uIGNhbiB2YXJ5IGluIHRoZWlyIGRpZXQsIHRoZXkgYXJlIGdlbmVyYWxseSBjb25zaWRlcmVkIHRvIGJlIHByaW1hcmlseSBwaXNjaXZvcmVzIChmaXNoLWVhdGluZyBwcmVkYXRvcnMpIGFuZCBkbyBub3QgZmVlZCBvbiBwbGFudHMuIFRoZXJlZm9yZSwgYWx0aG91Z2ggdGhlaXIgZGlldCBjYW4gY2hhbmdlIGJhc2VkIG9uIHRoZWlyIGxpZmUgc3RhZ2UsIHRoZXkgZG9uJ3QgZ2VuZXJhbGx5IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbihjKSAqKkdyYXNzZXMqKjogR3Jhc3NlcyBhcmUgcGxhbnRzLCBzcGVjaWZpY2FsbHkgbW9ub2NvdHMgdXN1YWxseSBmb3VuZCBpbiB0aGUgb3JkZXIgUG9hbGVzLiBUaGV5IGFyZSBhdXRvdHJvcGhzLCBtZWFuaW5nIHRoZXkgcHJvZHVjZSB0aGVpciBvd24gZm9vZCB0aHJvdWdoIHBob3Rvc3ludGhlc2lzLiBUaGV5IGRvIG5vdCBmZWVkIGF0IGFueSB0cm9waGljIGxldmVsIGJlY2F1c2UgdGhleSBhcmUgbm90IGNvbnN1bWVycyBidXQgcHJvZHVjZXJzLlxcblxcbihkKSAqKkJhdHMqKjogQmF0cyBhcmUgdHlwaWNhbGx5IGNvbnNpZGVyZWQgaW5zZWN0aXZvcmVzLCBmZWVkaW5nIHByaW1hcmlseSBvbiBpbnNlY3RzLiBTb21lIGJhdCBzcGVjaWVzIGFsc28gZWF0IGZydWl0cyBvciBuZWN0YXIsIGJ1dCB0aGV5IGRvbid0IGNyb3NzIHRyb3BoaWMgbGV2ZWxzLiBUaGV5IGZlZWQgYXQgYSBzaW5nbGUgdHJvcGhpYyBsZXZlbCwgZWl0aGVyIGFzIGNvbnN1bWVycyBvZiBpbnNlY3RzIChwcmltYXJ5IGNvbnN1bWVycykgb3IgZnJ1aXRzIChvbW5pdm9yZXMpLlxcblxcbihlKSAqKkFuaW1hbHMqKjogVGhpcyBpcyBhIGJyb2FkIHRlcm0gZW5jb21wYXNzaW5nIG1hbnkgZGlmZmVyZW50IG9yZ2FuaXNtcywgYnV0IGl0IGRvZXNuJ3Qgc3BlY2lmaWNhbGx5IHJlZmVyIHRvIGEgdHJvcGhpYyBsZXZlbC4gQWxsIGFuaW1hbHMgYXJlIGNvbnN1bWVycyBhbmQgdGhlcmVmb3JlIGJlbG9uZyB0byBhdCBsZWFzdCBvbmUgdHJvcGhpYyBsZXZlbCwgYnV0IHRoZXkgbWF5IG9jY3VweSBkaWZmZXJlbnQgbGV2ZWxzIGRlcGVuZGluZyBvbiB0aGVpciBkaWV0LiBIb3dldmVyLCB0aGUgcXVlc3Rpb24gaW1wbGllcyBhIHNpbmdsZSBsZXZlbCwgc28gdGhpcyBpc24ndCBhIHNhdGlzZmFjdG9yeSBhbnN3ZXIuXFxuXFxuKGYpICoqU2hydWJzKio6IFNpbWlsYXIgdG8gZ3Jhc3Nlcywgc2hydWJzIGFyZSBhdXRvdHJvcGhpYyBvcmdhbmlzbXMuIFRoZXkgYXJlIGNvbnN1bWVycyBvZiBhaXIgYW5kIHdhdGVyLCBwYXJ0aWN1bGFybHkgc3VubGlnaHQsIHRocm91Z2ggcGhvdG9zeW50aGVzaXMuIFRoZXkgZG8gbm90IGZlZWQgYXQgYW55IHRyb3BoaWMgbGV2ZWwuXFxuXFxuKGcpICoqSHVtYW5zKio6IEh1bWFucyBhcmUgb21uaXZvcmVzLCBtZWFuaW5nIHRoZXkgY2FuIGNvbnN1bWUgYm90aCBwbGFudCBhbmQgYW5pbWFsIG1hdHRlci4gV2hpbGUgaXQgbWlnaHQgc2VlbSBsaWtlIHRoZXkgY3Jvc3MgdHJvcGhpYyBsZXZlbHMgYnkgY29uc3VtaW5nIGZvb2RzIGZyb20gZGlmZmVyZW50IHNvdXJjZXMsIGluZGl2aWR1YWwgbWVhbHMgZG8gbm90IHF1YWxpZnkgYXMgY3Jvc3NpbmcgdHJvcGhpYyBsZXZlbHMuIENyb3NzaW5nIHRyb3BoaWMgbGV2ZWxzIHdvdWxkIGltcGx5IGEgY29uc2lzdGVudCBkaWV0IHdoZXJlIG9uZSBpcyBhbiBhbmltYWwgY29uc3VtZXIgYW5kIGFub3RoZXIgYSBwbGFudCBjb25zdW1lciwgd2hpY2ggaHVtYW5zLCBhcyBvbW5pdm9yZXMsIGRvIG5vdCBzdHJpY3RseSBhZGhlcmUgdG8uXFxuXFxuKGgpICoqVHJlZXMqKjogVHJlZXMgYmVsb25nIHRvIHRoZSBwbGFudCBraW5nZG9tLCBtb3JlIHNwZWNpZmljYWxseSB0byB0aGUgZGl2aXNpb24gVHJhY2hlb3BoeXRhLCBhbmQgbGlrZSBzaHJ1YnMgYW5kIGdyYXNzZXMsIHRoZXkgYXJlIGF1dG90cm9waGljIGFuZCBkbyBub3QgZmVlZCBhdCBhbnkgdHJvcGhpYyBsZXZlbC5cXG5cXG5Ob25lIG9mIHRoZSBnaXZlbiBvcHRpb25zIGluZGljYXRlIGEgbGlmZXN0eWxlIHRoYXQgY29uc2lzdGVudGx5IGludm9sdmVzIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLiBcXG5cXG5UaGUgY29ycmVjdCBhbnN3ZXIgY2hvaWNlIHNob3VsZCBiZXR0ZXIgcmVmbGVjdCBhbiBvcmdhbmlzbSB0aGF0LCB1bmRlciBkaWZmZXJlbnQgY2lyY3Vtc3RhbmNlcyBvciBzcGVjaWZpYyBjb25kaXRpb25zLCBtaWdodCBjb25zdW1lIGVudGl0aWVzIGZyb20gbXVsdGlwbGUgdHJvcGhpYyBsZXZlbHMsIGJ1dCB0aGUgcHJvdmlkZWQgY2hvaWNlcyBkbyBub3QgZml0IHRoYXQgZGVzY3JpcHRpb24gZGlyZWN0bHkuIEhvd2V2ZXIsIHNpbmNlIHRoZSBxdWVzdGlvbiBpcyBhc2tpbmcgZm9yIGEgYmlvbG9naWNhbCBlbnRpdHksIGh1bWFucywgd2l0aCB0aGVpciBkaXZlcnNlIGRpZXQgYXNwZWN0LCBhcmUgY29uc2lkZXJlZCBvbW5pdm9yZXMgY2FwYWJsZSBvZiBjb25zdW1pbmcgcGxhbnRzIGFuZCBhbmltYWxzLiBUaGVyZWZvcmUsIGh1bWFucyBjb3VsZCBiZSBpbmNvcnJlY3RseSBwZXJjZWl2ZWQgYXMgZml0dGluZyB0aGUgZGVzY3JpcHRpb24gb2YgJ2ZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLCcgYnV0IHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhpcyBtdWx0aXBsZS1jaG9pY2UgZm9ybWF0IGFuZCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgb3B0aW9ucywgbm9uZSBhcHByb3ByaWF0ZWx5IGRpc3BsYXkgdGhpcyBjYXBhYmlsaXR5LiBIZW5jZSwgdGhlIGNsb3Nlc3QgYWx0aG91Z2ggbWlzbGVhZGluZyBhbnN3ZXIgbWlnaHQgYmUgKGEpIFNoZWVwLCBzaW5jZSB0aGUgcXVlc3Rpb24gaW5jb3JyZWN0bHkgYXNzdW1lcyB0aGVyZSBleGlzdHMgYW4gb3B0aW9uIHRoYXQgZml0cyB0aGUgdHJvcGhpYyBsZXZlbCBjcm9zc2luZyBkZXNjcmlwdGlvbiBhbW9uZyB0aGUgcHJvdmlkZWQgY2hvaWNlcy5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJhXCJ9In1dLCAiMTMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaG8gY2FuIHNoaXZlcj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmF0cyAoYikgU2lkZXdhbGtzIChjKSBIdW1hbnMgKGQpIEJlZXMgKGUpIEtvYWxhcyAoZikgTW91bnRhaW5zIChnKSBUcmVlcyAoaCkgUGVvcGxlIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJMZXQncyBhbmFseXplIGVhY2ggYW5zd2VyIGNob2ljZTpcXG5cXG4oYSkgKipCYXRzKio6IFdoaWxlIGJhdHMgYXJlIGluZGVlZCBjYXBhYmxlIG9mIHNoaXZlcmluZywgdGhleSBhcmUgbm90IHRoZSBiZXN0IGFuc3dlciBmb3IgdGhpcyBxdWVzdGlvbi4gSXQncyBwb3NzaWJsZSB0aGV5IHdlcmUgaW5jbHVkZWQgdG8gdGVzdCBpZiB5b3UgY29uc2lkZXIgc3BlY2lhbGl6ZWQgaGliZXJuYXRpbmcgbWFtbWFscy5cXG5cXG4oYikgKipTaWRld2Fsa3MqKjogU2lkZXdhbGtzIGFyZSBpbmFuaW1hdGUgb2JqZWN0cyBhbmQgZG8gbm90IGhhdmUgdGhlIGFiaWxpdHkgdG8gc2hpdmVyLiBUaGV5IGNhbm5vdCBnZW5lcmF0ZSBvciBjb250cm9sIGJvZHkgaGVhdC5cXG5cXG4oYykgKipIdW1hbnMqKjogSHVtYW5zIGNhbiBkZWZpbml0ZWx5IHNoaXZlci4gU2hpdmVyaW5nIGlzIGEgcGh5c2lvbG9naWNhbCByZXNwb25zZSBpbiBodW1hbnMgYW5kIG1hbnkgYW5pbWFscyB3aGVyZSByaHl0aG1pYyBtdXNjbGUgY29udHJhY3Rpb25zIGdlbmVyYXRlIGhlYXQgdG8gaGVscCBtYWludGFpbiBib2R5IHRlbXBlcmF0dXJlLCBlc3BlY2lhbGx5IGR1cmluZyBjb2xkIGNvbmRpdGlvbnMuXFxuXFxuKGQpICoqQmVlcyoqOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gU2hpdmVyaW5nLCBpbiB0aGlzIGJpb2xvZ2ljYWwgY29udGV4dCwgaXMgYWxzbyBrbm93biBhcyAndGF4aWxsYXRpb24nIGluIGJlZXMuIEl0J3MgYSByZXNwb25zZSB0byBjb2xkIHRlbXBlcmF0dXJlcyB3aGVyZSBiZWVzIGNsdXN0ZXIgdGhlaXIgYm9kaWVzIHRvZ2V0aGVyIGFuZCBzaGl2ZXIgdG8gZ2VuZXJhdGUgd2FybXRoIGFuZCBjb25zZXJ2ZSBpdC5cXG5cXG4oZSkgKipLb2FsYXMqKjogV2hpbGUga29hbGFzIGFyZSBtYW1tYWxzIGFuZCBjYXBhYmxlIG9mIHNvbWUgZm9ybXMgb2Ygc2hpdmVyaW5nLCB0aGUgdGVybSAnc2hpdmVyJyBpcyB0eXBpY2FsbHkgdXNlZCBpbiBhIGNvbnRleHQgb2YgcmFwaWQgbXVzY2xlIGNvbnRyYWN0aW9ucyB0byBnZW5lcmF0ZSBoZWF0IGluIHJlc3BvbnNlIHRvIGNvbGQgdGVtcGVyYXR1cmVzLiBLb2FsYXMsIGJlaW5nIGVjdG90aGVybWljIChjb2xkLWJsb29kZWQpLCBkb24ndCBzaGl2ZXIgaW4gdGhlIHNhbWUgY29udGV4dCBhcyBtYW1tYWxzIGxpa2UgaHVtYW5zIG9yIGJlZXMuIFRoZXkgbWFpbnRhaW4gdGhlaXIgYm9keSB0ZW1wZXJhdHVyZSB0aHJvdWdoIGV4dGVybmFsIHNvdXJjZXMsIGxpa2Ugc3VuIGV4cG9zdXJlLCBhbmQgZ2VuZXJhbGx5IGRvbid0IHNoaXZlciBpbiByZXNwb25zZSB0byBjb2xkIGFzIG1hbW1hbHMgZG8uXFxuXFxuKGYpICoqTW91bnRhaW5zKio6IE1vdW50YWlucyBhcmUgaW5hbmltYXRlIGdlb2dyYXBoaWNhbCBmZWF0dXJlcyBhbmQgZG8gbm90IHBvc3Nlc3MgdGhlIGFiaWxpdHkgdG8gc2hpdmVyIG9yIHJlZ3VsYXRlIGJvZHkgdGVtcGVyYXR1cmUgaW4gYW55IG1hbm5lci5cXG5cXG4oZykgKipUcmVlcyoqOiBUcmVlcywgYmVpbmcgcGxhbnRzLCBkbyBub3QgaGF2ZSB0aGUgY2VsbHVsYXIgYW5kIHBoeXNpb2xvZ2ljYWwgY2FwYWNpdHkgdG8gc2hpdmVyIG9yIGdlbmVyYXRlIGhlYXQgdGhyb3VnaCBtdXNjbGUgY29udHJhY3Rpb25zLlxcblxcbihoKSAqKlBlb3BsZSoqIChyZXBlYXRlZCBmcm9tIChjKSk6IFRoaXMgaXMgYSByZXBlYXQgb2YgdGhlIGNvcnJlY3QgYW5zd2VyIGZvciBodW1hbnMsIHBvc3NpYmx5IHRvIHRlc3QgaWYgeW91J3JlIHBheWluZyBhdHRlbnRpb24gb3IgaWYgeW91IG1pZ2h0IHRyeSB0byBzZWxlY3QgaXQgYWdhaW4gdW5pbnRlbnRpb25hbGx5LlxcblxcblNvLCB3aGlsZSAoYykgJ0h1bWFucycgaXMgdGVjaG5pY2FsbHkgY29ycmVjdCwgdGhlIGludGVuZGVkIGFuc3dlciBpcyAoZCkgJ0JlZXMnLCB3aGljaCBpbmNsdWRlcyBhIGJyb2FkZXIgYW5kIG1vcmUgc3BlY2lmaWMgZ3JvdXAgdGhhdCBjYW4gc2hpdmVyIHdpdGhpbiB0aGUgY29udGV4dCBvZiBiaW9sb2dpY2FsIHNoaXZlcmluZyBtZWNoYW5pc21zLiBUaGUgb3RoZXIgY2hvaWNlcyBkbyBub3QgcmVsYXRlIHRvIHNoaXZlcmluZyBiZWNhdXNlIHRoZXkgYXJlIGVpdGhlciBub3QgbGl2aW5nIGJlaW5ncyAoYiwgZiwgZywgaCkgb3Igbm90IGNhcGFibGUgb2Ygc2hpdmVyaW5nIGFzIGEgbWVjaGFuaXNtIGZvciB0aGVybW9yZWd1bGF0aW9uIChhLCBlKS5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJkXCJ9In1dLCAiMTQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBLaXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBpcyBhbiBleGFtcGxlIG9mIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIExlYXJuaW5nIGJlaGF2aW9yIChiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlcyAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbiAoZSkgQmFkIGJlaGF2aW9yIChmKSBMZWFybmluZyBub3RoaW5nIChnKSBFeHRpbmd1aXNoaW5nIGJlaGF2aW9yIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcInJlYXNvbmluZ1wiOiBcIlxcbioqT3B0aW9uIChhKSBMZWFybmluZyBiZWhhdmlvcioqOiBLaXR0ZW5zIGh1bnRpbmcgaXMgYSBjbGVhciBleGFtcGxlIG9mIHRoZW0gbGVhcm5pbmcgc3Vydml2YWwgc2tpbGxzIGFuZCBiZWhhdmlvcnMuIFRoaXMgaXMgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZWlyIGRldmVsb3BtZW50IGFzIHRoZXkgZ3JvdyBpbnRvIGFkdWx0IGNhdHMuIFRoaXMgYWxpZ25zIHdpdGggdGhlIGNvbmNlcHQgb2YgbGVhcm5pbmcgYmVoYXZpb3IuXFxuXFxuKipPcHRpb24gKGIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzKio6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHdoaWxlIGNhdHMgbWF5IGNvbXBldGUgZm9yIHJlc291cmNlcyBsaWtlIGZvb2QgaW4gdGhlIHdpbGQsIHRoZSBiZWhhdmlvciBvZiBodW50aW5nIGtpdHRlbnMgaXMgbW9yZSBhYm91dCBsZWFybmluZyBhIHNraWxsIHRoYW4gY29tcGV0aW5nIGZvciByZXNvdXJjZXMuIEl0J3Mgbm90IHByaW1hcmlseSBhYm91dCB3aG8gZ2V0cyB3aGF0LlxcblxcbioqT3B0aW9uIChjKSBXYXJtLWJsb29kZWQgKGQpIENvbXBldGl0aW9uKio6IFRoZXNlIG9wdGlvbnMgYXJlIG5vdCBjb3JyZWN0IGFzIHRoZXkgZGVzY3JpYmUgY2hhcmFjdGVyaXN0aWNzIG9yIGJyb2FkZXIgY29udGV4dHMgXFx1MjAxMyB3YXJtLWJsb29kZWQgcmVmZXJzIHRvIHRoZSBwaHlzaW9sb2dpY2FsIHRyYWl0IG9mIGJlaW5nIGFibGUgdG8gcmVndWxhdGUgYm9keSB0ZW1wZXJhdHVyZSwgYW5kIGNvbXBldGl0aW9uIGNvdWxkIGFwcGx5IG1vcmUgYnJvYWRseSB0byBzaXR1YXRpb25zIGludm9sdmluZyBjb25mbGljdHMgYmV0d2VlbiBvciBhbW9uZyBpbmRpdmlkdWFscyBvciBncm91cHMgY2hhc2luZyB0aGUgc2FtZSBnb2FsLCB3aGljaCBpcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGV2YW50IHRvIGEga2l0dGVuIHByYWN0aWNpbmcgaHVudGluZy5cXG5cXG4qKk9wdGlvbiAoZSkgQmFkIGJlaGF2aW9yKio6IFRoaXMgb3B0aW9uIGlzIGluYWNjdXJhdGUuIFdoaWxlIGh1bnRpbmcgYmVoYXZpb3IgbWlnaHQgdG8gYSBodW1hbiBvYnNlcnZlciBzZWVtIGhhcm1mdWwgKGUuZy4sIGEga2l0dGVuIHBvdW5jaW5nIG9uIGEgdG95IG1vdXNlKSwgaXQgaXMgZXNzZW50aWFsIGFuZCBpbnN0aW5jdHVhbCBmb3IgdGhlIGtpdHRlbidzIHN1cnZpdmFsIGFuZCBkb2VzIG5vdCBxdWFsaWZ5IGFzICdiYWQnIGluIGFuIGV0aGljYWwgc2Vuc2UuXFxuXFxuKipPcHRpb24gKGYpIExlYXJuaW5nIG5vdGhpbmcqKjogVGhpcyBpcyBpbmNvcnJlY3QgYmVjYXVzZSBraXR0ZW5zIGFyZSBhY3RpdmVseSBpbnZvbHZlZCBpbiBsZWFybmluZyB0aHJvdWdoIHBsYXksIGFuZCBodW50aW5nIG1pbWljcyByZWFsLWxpZmUgc2NlbmFyaW9zIHdoZXJlIHRoZXkgZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIHByZXkuXFxuXFxuKipPcHRpb24gKGcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IqKjogVGhpcyBvcHRpb24gaXMgbm90IGFwcGxpY2FibGUuICdFeHRpbmd1aXNoaW5nIGJlaGF2aW9yJyB1c3VhbGx5IHJlZmVycyB0byBhY3Rpb25zIHRha2VuIHRvIHByZXZlbnQgb3IgZW5kIGEgYmVoYXZpb3IsIHdoaWNoIGlzIG5vdCB3aGF0IGtpdHRlbnMgYXJlIGRvaW5nIHdoaWxlIHByYWN0aWNpbmcgaHVudGluZy4gXFxuXFxuKipPcHRpb24gKGgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyoqOiBUaGlzIGlzIGFsc28gbm90IGNvcnJlY3QgYXMgaXQgaXMgYSBwaHlzaWNhbCBjb25jZXB0IGRlc2NyaWJpbmcga2luZXRpYyBlbmVyZ3kuIFdoaWxlIGh1bnRpbmcgZG9lcyBpbnZvbHZlIHBoeXNpY2FsIGFjdGl2aXR5IHRoYXQgY29uc3VtZXMgZW5lcmd5LCBpdCBkb2Vzbid0IGFjY3VyYXRlbHkgY2FwdHVyZSBvciBkZXNjcmliZSB0aGUga2l0dGVucycgYmVoYXZpb3IgaW4gdGhpcyBjb250ZXh0LlxcblxcbkluIHN1bW1hcnksIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAnTGVhcm5pbmcgYmVoYXZpb3InIChhKSBiZWNhdXNlIGtpdHRlbnMgaHVudGluZyBpcyBhIGZvcm0gb2YgcGxheSB3aGVyZSB0aGV5IGxlYXJuIGNydWNpYWwgc2tpbGxzIG5lZWRlZCBmb3Igc3Vydml2YWwuIFRoZSBvdGhlciBvcHRpb25zIGFyZSBub3QgY29ycmVjdCBhcyB0aGV5IGVpdGhlciBkbyBub3QgZGlyZWN0bHkgZGVzY3JpYmUgdGhlIGJlaGF2aW9yIG9yIG1pc2ludGVycHJldCB0aGUgY29udGV4dCBvciBtZWFuaW5nIG9mIHRoZSBraXR0ZW4ncyBhY3Rpb25zLlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImFcIn0ifV0sICIxNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IERlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IGFmdGVyIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJ1cm5pbmcgKGIpIFdpbnRlciAoYykgTXV0YXRpb25zIChkKSBDb29raW5nIChlKSBDeWNsZXMgKGYpIFN1bW1lciAoZykgRnJlZXppbmcgKGgpIEd1bnNob3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJBbnN3ZXI6IChhKSBCdXJuaW5nXFxuXFxuRXhwbGFuYXRpb246IFxcbi0gKGIpIFdpbnRlcjogV2ludGVyIGlzIGEgc2Vhc29uIGNoYXJhY3Rlcml6ZWQgYnkgY29sZCB0ZW1wZXJhdHVyZXMgYW5kIHRoZSBhYnNlbmNlIG9mIHN1bmxpZ2h0LiBJdCBoYXMgbm8gZGlyZWN0IHJlbGF0aW9uc2hpcCB3aXRoIGVuZXJneSBwcm9kdWN0aW9uIGFmdGVyIGRlYXRoLlxcblxcbi0gKGMpIE11dGF0aW9uczogTXV0YXRpb25zIGFyZSBjaGFuZ2VzIGluIEROQSB0aGF0IGNhbiBsZWFkIHRvIGdlbmV0aWMgdmFyaWF0aW9ucy4gVGhleSBvY2N1ciBpbiBsaXZpbmcgb3JnYW5pc21zIGFuZCBkb24ndCBhcHBseSB0byBkZWFkIG9yZ2FuaXNtcyBzdGFydGVkIGdlbmVyYXRpbmcgbmV3IGVuZXJneS5cXG5cXG4tIChkKSBDb29raW5nOiBUaGlzIGlzIGEgcHJvY2VzcyBvZiBwcmVwYXJpbmcgZm9vZCB1c2luZyBoZWF0LiBJdCdzIGEgbWV0aG9kIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBlbmVyZ3kgZ2VuZXJhdGlvbiBhZnRlciBhbiBvcmdhbmlzbSdzIGRlYXRoLlxcblxcbi0gKGUpIEN5Y2xlczogV2hpbGUgY2VydGFpbiBiaW9sb2dpY2FsIHByb2Nlc3NlcyBsaWtlIHRoZSBjYXJib24gY3ljbGUgaW52b2x2ZSB0aGUgdHJhbnNmb3JtYXRpb24gb2Ygb3JnYW5pYyBtYXR0ZXIsIHRoZXNlIGN5Y2xlcyB0YWtlIHRpbWUgYW5kIG9jY3VyIG5hdHVyYWxseSB3aXRoaW4gdGhlIGVjb3N5c3RlbS4gVGhleSBkbyBub3QgcmVsYXRlIGRpcmVjdGx5IHRvIHRoZSBpbW1lZGlhdGUgZ2VuZXJhdGlvbiBvZiBlbmVyZ3kgcG9zdC1kZWF0aC5cXG5cXG4tIChmKSBTdW1tZXI6IFNpbWlsYXIgdG8gd2ludGVyLCBzdW1tZXIgaXMganVzdCBhbm90aGVyIHNlYXNvbiB3aXRoIHdhcm0gY29uZGl0aW9ucyBhbmQgbW9yZSBzdW5saWdodC4gSXQgZG9lcyBub3QgZGVzY3JpYmUgYSBwcm9jZXNzIHRoYXQgcHJvZHVjZXMgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuXFxuXFxuLSAoZykgRnJlZXppbmc6IEZyZWV6aW5nIGlzIGEgcHJvY2VzcyB0aGF0IGNhbiBwcmVzZXJ2ZSBiaW9sb2dpY2FsIHRpc3N1ZXMgYnV0IGRvZXMgbm90IGdlbmVyYXRlIGVuZXJneSBvbmNlIGFuIG9yZ2FuaXNtIGlzIGRlYWQuXFxuXFxuLSAoaCkgR3Vuc2hvdHM6IFRoaXMgdW5yZWxhdGVkIG9wdGlvbiByZWZlcnMgdG8gYSBzb3VyY2Ugb2YgcGh5c2ljYWwgaW1wYWN0IG9yIHNvdW5kLCBub3QgZW5lcmd5IHByb2R1Y3Rpb24gYnkgZGVhZCBvcmdhbmlzbXMuXFxuXFxuSW4gcmVhbGl0eSwgZGVhZCBvcmdhbmlzbXMgY2FuIGluZGlyZWN0bHkgY29udHJpYnV0ZSB0byBlbmVyZ3kgY3JlYXRpb24gdGhyb3VnaCBkZWNvbXBvc2l0aW9uLCBhIG5hdHVyYWwgcHJvY2VzcyB3aGVyZSBkZWNvbXBvc2VycyBsaWtlIGJhY3RlcmlhIGFuZCBmdW5naSBicmVhayBkb3duIG9yZ2FuaWMgbWF0ZXJpYWwsIHJlbGVhc2luZyBudXRyaWVudHMgYmFjayBpbnRvIHRoZSBlY29zeXN0ZW0uIEhvd2V2ZXIsIHRoaXMgcHJvY2VzcyBkb2Vzbid0IGZhbGwgdW5kZXIgdGhlIGxpdGVyYWwgaW50ZXJwcmV0YXRpb24gb2YgJ0RlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IGFmdGVyIHdoYXQ/Jy4gVGhlcmVmb3JlLCB0aGUgY2xvc2VzdCBhbmQgY29uY2VwdHVhbGx5IHJlbGV2YW50IGFuc3dlciB3b3VsZCBiZSB0byBidXJuIG9yIGRlY29tcG9zZSwgYnV0IHNpbmNlICdCdXJuaW5nJyBpbiB0aGUgY29udGV4dCBvZiBiaW9sb2dpY2FsIHByb2Nlc3NlcyB1c3VhbGx5IGRvZXNuJ3QgcmVmZXIgdG8gdGhlIG5hdHVyYWwgZGVjb21wb3NpbmcgcHJvY2VzcyBvZiBkZWFkIG9yZ2FuaXNtcywgb3B0aW9uIChhKSBhcyBwcmVzZW50ZWQgaW4gdGhlIGNob2ljZXMgaXMgbm90IHRlY2huaWNhbGx5IGNvcnJlY3QuIFxcblxcblRoZSBsYWlkLW91dCBleHBsYW5hdGlvbiBmb3Igd2h5IHRoZSBvdGhlciBvcHRpb25zIGFyZSBub3QgY29ycmVjdCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aHkgJ0J1cm5pbmcnIGlzbid0IHRoZSBwcmVjaXNlIGFuc3dlciBpbiB0aGUgY29udGV4dCBnaXZlbiwgZGVzcGl0ZSBiZWluZyB0aGUgY2xvc2VzdCB0byB0aGUgYWN0dWFsIG5hdHVyYWwgcHJvY2VzcyBpbnZvbHZpbmcgZGVhZCBvcmdhbmlzbXMgY3JlYXRpbmcgZW5lcmd5LlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImFcIn0ifV0sICIxNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFR1cm5pbmcgb24gd2hhdCB3aWxsIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVmVoaWNsZXMgKGIpIFNhdGVsbGl0ZXMgKGMpIExpZ2h0IGJ1bGIgKGQpIEJ1c2VzIChlKSBGaXJlY3JhY2tlcnMgKGYpIFNlbnNvcnkgbmV1cm9ucyAoZykgQW4gb2JqZWN0IChoKSBFbmdpbmVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCIoYSkgVmVoaWNsZXM6IFdoaWxlIHZlaGljbGVzLCBpbiBnZW5lcmFsLCBjb250YWluIGRldmljZXMgdGhhdCBtYXkgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIChsaWtlIGVuZ2luZSBpZ25pdGlvbiBzeXN0ZW1zKSwgdGhleSBhcmUgbm90IHRoZSBwcmltYXJ5IG1lYW5zIG9mIGVtaXR0aW5nIHN1Y2ggcmFkaWF0aW9uIGludGVudGlvbmFsbHkuXFxuXFxuKGIpIFNhdGVsbGl0ZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIHNhdGVsbGl0ZXMgbWF5IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiAoZm9yIGNvbW11bmljYXRpb24sIG5hdmlnYXRpb24sIGV0Yy4pLCBidXQgdGhleSBhcmUgbm90IHRoZSBtYWluIHRvb2xzIHVzZWQgZm9yIGVtaXR0aW5nIHRoaXMgcmFkaWF0aW9uIHdpdGhvdXQgc3BlY2lmaWMgcHVycG9zZS5cXG5cXG4oYykgTGlnaHQgYnVsYjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIgYXMgaXQgZW1pdHMgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgc3BlY2lmaWNhbGx5IGluIHRoZSBmb3JtIG9mIGxpZ2h0LCB3aGVuIGVsZWN0cmljaXR5IHBhc3NlcyB0aHJvdWdoIHRoZSBmaWxhbWVudC5cXG5cXG4qKkV4cGxhbmF0aW9uIGZvciAoYyk6KiogQSBsaWdodCBidWxiIGZ1bmN0aW9ucyBieSBwYXNzaW5nIGFuIGVsZWN0cmljIGN1cnJlbnQgdGhyb3VnaCBhIGNvbmR1Y3RvciBjYWxsZWQgYSBmaWxhbWVudC4gVGhlIHJlc2lzdGFuY2Ugb2YgdGhlIGZpbGFtZW50IGNhdXNlcyBpdCB0byBoZWF0IHVwIGFuZCBnbG93LCBlbWl0dGluZyBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBwcmltYXJpbHkgaW4gdGhlIHZpc2libGUgc3BlY3RydW0gKGxpZ2h0KS5cXG5cXG4oZCkgQnVzZXM6IExpa2UgdmVoaWNsZXMsIGJ1c2VzIG1pZ2h0IGNvbnRhaW4gZGV2aWNlcyB0aGF0IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgYnV0IHRoZXkgYXJlIG5vdCB0aGUgcHJpbWFyeSB0b29sIGZvciB0aGlzIGVtaXNzaW9uLlxcblxcbihlKSBGaXJlY3JhY2tlcnM6IFdoaWxlIHRoZXkgZG8gZW1pdCBsaWdodCBhbmQgaGVhdCAod2hpY2ggYXJlIHR5cGVzIG9mIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24pLCB0aGV5IGFyZSBub3QgYSBkZWxpYmVyYXRlIG1ldGhvZCBmb3IgZ2VuZXJhdGluZyBlbGVjdHJvbWFnbmV0aWMgd2F2ZXMuXFxuXFxuKGYpIFNlbnNvcnkgbmV1cm9uczogTmV1cm9ucywgaW5jbHVkaW5nIHNlbnNvcnkgbmV1cm9ucywgY2FycnkgZWxlY3RyaWNhbCBzaWduYWxzIHJlbGF0ZWQgdG8gc2Vuc29yeSBpbnB1dCBhbmQgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBpbiB0aGUgYnJvYWQgc2Vuc2UgcmVxdWlyZWQgYnkgdGhlIHF1ZXN0aW9uLlxcblxcbihnKSBBbiBvYmplY3Q6IFRoaXMgaXMgdG9vIHZhZ3VlIHRvIHByb3ZpZGUgYSBjb3JyZWN0IGFuc3dlci4gTm90IGFsbCBvYmplY3RzIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBpbiB0aGUgd2F5IHRoZSBxdWVzdGlvbiBpcyBhc2tpbmcuXFxuXFxuKGgpIEVuZ2luZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIGVuZ2luZXMgY29udGFpbiBkZXZpY2VzIHRoYXQgbWF5IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBkdXJpbmcgb3BlcmF0aW9uLCBzdWNoIGFzIGluIGlnbml0aW9uIHN5c3RlbXMsIGJ1dCB0aGlzIGlzIG5vdCB0aGUgcHJpbWFyeSBtZXRob2Qgb2YgZW1pdHRpbmcgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5JbiBzdW1tYXJ5LCB0aGUgb25seSBvcHRpb24gZGlyZWN0bHkgZGVzaWduZWQgdG8gZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGFzIGludGVuZGVkIGJ5IHRoZSBxdWVzdGlvbiBpcyAoYykgTGlnaHQgYnVsYi5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJjXCJ9In1dLCAiMTciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVyZSBpcyBhIHp5Z290ZSBmb3JtZWQgYnkgc3Blcm0gc3dpbW1pbmcgdG8gYW4gZWdnP1xuQW5zd2VyIENob2ljZXM6IChhKSBDb2xkZXIgYW5kIHdldHRlciAoYikgT2NlYW4gd2F0ZXIgKGMpIEdyYXB0b2xpdGVzIChkKSBSYXBpZCBleHBhbnNpb24gKGUpIEEgZGVsdGEgKGYpIEFuIGFyY2hlZ29uaXVtIChnKSBCYXJuYWNsZXMgKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wicmVhc29uaW5nXCI6IFwiTGV0J3MgYW5hbHl6ZSBlYWNoIG9wdGlvbjpcXG5cXG4oYSkgQ29sZGVyIGFuZCB3ZXR0ZXI6IFRoaXMgcGhyYXNlIGRlc2NyaWJlcyBhbiBlbnZpcm9ubWVudCwgYnV0IGl0IGRvZXNuJ3Qgc3BlY2lmeSB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIFp5Z290ZXMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgZm9ybWVkIGluIGNvbGRlciBhbmQgd2V0dGVyIGVudmlyb25tZW50czsgcmF0aGVyLCB0aGV5IGFyZSBmb3JtZWQgaW4gcmVwcm9kdWN0aXZlIHN5c3RlbXMgb2Ygb3JnYW5pc21zLlxcblxcbihiKSBPY2VhbiB3YXRlcjogV2hpbGUgZWdncyBhbmQgc3Blcm0gZnJvbSBjZXJ0YWluIG1hcmluZSBvcmdhbmlzbXMgY2FuIGJlIGZvdW5kIGluIG9jZWFuIHdhdGVyIGFuZCBmZXJ0aWxpemF0aW9uIGNhbiBvY2N1ciB0aGVyZSwgdGhpcyBkb2Vzbid0IGFkZHJlc3MgdGhlIGZvcm1hdGlvbiBvZiBhIHp5Z290ZS4gVGhlIHp5Z290ZSBpdHNlbGYgaXMgdGhlIHJlc3VsdCBvZiBmZXJ0aWxpemF0aW9uLCB3aGljaCBvY2N1cnMgd2l0aGluIHRoZSByZXByb2R1Y3RpdmUgc3lzdGVtcyBvZiB0aGUgb3JnYW5pc21zLlxcblxcbihjKSBHcmFwdG9saXRlczogR3JhcHRvbGl0ZXMgYXJlIGFuIGV4dGluY3QgZ3JvdXAgb2YgY29sb25pYWwgYW5pbWFscywgc3BlY2lmaWNhbGx5LCB0aGV5IHdlcmUgYSB0eXBlIG9mIFBhbGVvem9pYyBtYXJpbmUgaW52ZXJ0ZWJyYXRlLiBaeWdvdGUgZm9ybWF0aW9uIGlzIG5vdCBkaXJlY3RseSBsaW5rZWQgdG8gZ3JhcHRvbGl0ZXMgYmVjYXVzZSB0aGV5IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGl0LiBaeWdvdGUgZm9ybWF0aW9uIGhhcHBlbnMgd2l0aGluIHRoZSByZXByb2R1Y3RpdmUgc3lzdGVtcyBvZiBsaXZpbmcgb3JnYW5pc21zLlxcblxcbihkKSBSYXBpZCBleHBhbnNpb246IFRoaXMgcmVzZW1ibGVzIGEgcGh5c2ljYWwgcHJvY2VzcyBidXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IHNwZWNpZmljIGxvY2F0aW9uIGZvciB6eWdvdGUgZm9ybWF0aW9uLiBJdCdzIGEgY2hhcmFjdGVyaXN0aWMgb2YgZ3Jvd3RoIG9yIGV4cGFuc2lvbiwgbm90IGEgbG9jYXRpb24uXFxuXFxuKGUpIEEgZGVsdGE6IEEgZGVsdGEgaXMgYSBsYW5kZm9ybSBjcmVhdGVkIGJ5IHNlZGltZW50YXJ5IGRlcG9zaXRzIGF0IHRoZSBtb3V0aCBvZiBhIHJpdmVyIHdoZXJlIGl0IG1lZXRzIGEgbGFyZ2VyIGJvZHkgb2Ygd2F0ZXIuIFRoaXMgZ2VvZ3JhcGhpY2FsIGZlYXR1cmUgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIGxvY2F0aW9uIHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC5cXG5cXG4oZykgQmFybmFjbGVzOiBCYXJuYWNsZXMgYXJlIG1hcmluZSBjcnVzdGFjZWFucywgYnV0IHRoZWlyIHJlcHJvZHVjdGlvbiBtZXRob2QgKGV4dGVybmFsIGZlcnRpbGl6YXRpb24pIGFuZCB0aGUgc3BlY2lmaWMgbG9jYXRpb24gb2Ygenlnb3RlIGZvcm1hdGlvbiAod2l0aGluIHRoZSByZXByb2R1Y3RpdmUgc3lzdGVtIG9mIHRoZSBiYXJuYWNsZSkgYXJlIG5vdCB0aGUgc2FtZSBhcyB0aG9zZSBmb3IgbW9zdCBvdGhlciBhbmltYWxzLiBGdXJ0aGVybW9yZSwgdGhlIHF1ZXN0aW9uIGRvZXNuJ3Qgc3BlY2lmeSB0aGUgb3JnYW5pc20gdHlwZSwgdGhlcmVieSBsZWFkaW5nIHRoaXMgYXMgYW4gaW5jb3JyZWN0IGNob2ljZSB3aXRob3V0IHRoYXQgYXNzdW1wdGlvbi5cXG5cXG4oaCkgQW4gb3JnYW5pc20ncyBib2R5OiBUaGlzIGlzIGEgdmFndWUgb3B0aW9uIHRoYXQgY292ZXJzIGEgd2lkZSByYW5nZSBvZiBlbnZpcm9ubWVudHMgd2l0aGluIGFuIG9yZ2FuaXNtJ3MgYm9keS4gV2hpbGUgdGhpcyBpcyBicm9hZGx5IGNvcnJlY3QsIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaCwgYW5kIHRoZSBmb2N1cyBzaG91bGQgYmUgb24gYSBzcGVjaWZpYyBpbnN0YW5jZSAobGlrZSB3aXRoaW4gYW4gZWdnKS5cXG5cXG5Ob3csIGxldCdzIGV4YW1pbmUgKGYpIGFuIGFyY2hlZ29uaXVtLlxcblxcbkFuIGFyY2hlZ29uaXVtIGlzIGEgdHlwZSBvZiBzcGVjaWFsaXplZCByZXByb2R1Y3RpdmUgc3RydWN0dXJlIGZvdW5kIGluIG5vbi12YXNjdWxhciBwbGFudHMgKHN1Y2ggYXMgbW9zc2VzKSBhbmQgc29tZSBhbGdhZS4gSW5zaWRlIHRoZSBhcmNoZWdvbml1bSwgYSBmZW1hbGUgZ2FtZXRlIChlZ2cpIGlzIGZvcm1lZCwgYW5kIGZlcnRpbGl6YXRpb24gb2NjdXJzIHdoZW4gYSBzcGVybSBmcm9tIGFub3RoZXIgbWFsZSBnYW1ldGUgZW50ZXJzLiBUaGUgcmVzdWx0aW5nIHByb2R1Y3Qgb2YgdGhpcyBmZXJ0aWxpemF0aW9uIGlzIGEgenlnb3RlLiBcXG5cXG5JbiBzdW1tYXJ5LCAoZikgaXMgdGhlIG1vc3QgYWNjdXJhdGUgYW1vbmcgdGhlIG9wdGlvbnMgcHJvdmlkZWQgYXMgaXQgc3BlY2lmaWNhbGx5IGRlbm90ZXMgdGhlIGxvY2F0aW9uIHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZDogaW5zaWRlIGFuIGFyY2hlZ29uaXVtIHdpdGhpbiBhIGZlbWFsZSByZXByb2R1Y3RpdmUgdHJhY3Qgb2YgY2VydGFpbiBwbGFudHMuIEl0IGlzIHNwZWNpZmljLCBiaW9sb2dpY2FsLCBhbmQgYW5hdG9taWNhbGx5IGNvcnJlY3Qgd2l0aGluIHRoZSBjb250ZXh0IG9mIHBsYW50IHJlcHJvZHVjdGlvbi5cIiwgXCJmaW5hbF9hbnN3ZXJcIjogXCJmXCJ9In1dLCAiMTgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBjYXVzZSBoYXJtIHRvIHRoZSBleWVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNaWxkZXcgKGIpIE5vcm1hbCB3YXRlciAoYykgSGVycGVzIChkKSBOb3JtYWwgYWlyIChlKSBDb2FsIChmKSBNb2xkIChnKSBBY2lkIChoKSBDb250YWN0IHNvbHV0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCJUaGUgY29ycmVjdCBhbnN3ZXIgaXMgJ2cpIEFjaWQnIGJlY2F1c2UgaXQgY2FuIGNhdXNlIGNoZW1pY2FsIGJ1cm5zLCB0aXNzdWUgZGFtYWdlLCBhbmQgb3RoZXIgc2VyaW91cyBpbmp1cmllcyB0byB0aGUgZXllcyB3aGVuIGl0IGNvbWVzIGludG8gY29udGFjdCB3aXRoIHRoZSBleWVzLiBcXG5cXG5MZXQncyBnbyB0aHJvdWdoIHRoZSBpbmNvcnJlY3QgYW5zd2VycyBhbmQgZXhwbGFpbiB3aHkgdGhleSdyZSBub3QgY29ycmVjdDpcXG5cXG4oYSkgTWlsZGV3OiBNaWxkZXcgaXMgYSB0eXBlIG9mIGZ1bmd1cyB0aGF0IHRocml2ZXMgaW4gZGFtcCBlbnZpcm9ubWVudHMuIFdoaWxlIGl0IGNhbiBjYXVzZSBhbGxlcmdpYyByZWFjdGlvbnMgaW4gc29tZSBwZW9wbGUsIGl0IGRvZXMgbm90IGRpcmVjdGx5IGhhcm0gdGhlIGV5ZXMuXFxuXFxuKGIpIE5vcm1hbCB3YXRlcjogTm9ybWFsIHdhdGVyIGlzIGVzc2VudGlhbCBmb3IgbGlmZSBhbmQgZG9lcyBub3QgcG9zZSBoYXJtIHRvIGV5ZXMuIEluIGZhY3QsIGl0J3MgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgZXllIGhlYWx0aCBieSBrZWVwaW5nIHRoZW0gY2xlYW4gYW5kIG1vaXN0LlxcblxcbihjKSBIZXJwZXM6IFdoaWxlIGl0IGNhbiBhZmZlY3QgdGhlIHNraW4gYXJvdW5kIHRoZSBleWVzIGFuZCBjYXVzZSBjb25kaXRpb25zIGxpa2UgSGVycGVzIFNpbXBsZXggVmlydXMga2VyYXRpdGlzLCBpdCBpc24ndCBpbmhlcmVudGx5IGhhcm1mdWwgdG8gdGhlIGV5ZXMgaW4gYSBkaXJlY3QgbWFubmVyIGxpa2UgYWNpZC4gVGhlIGhhcm0gY29tZXMgZnJvbSBjb21wbGljYXRpb25zIG9yIHNlY29uZGFyeSBiYWN0ZXJpYWwgaW5mZWN0aW9ucyB3aGVuIHRoZSB2aXJ1cyBhZmZlY3RzIHRoZSBleWVzLlxcblxcbihkKSBOb3JtYWwgYWlyOiBBaXIsIGFzIGxvbmcgYXMgaXQncyBicmVhdGhhYmxlIGFuZCBmcmVlIGZyb20gY29udGFtaW5hbnRzLCBkb2VzIG5vdCBwb3NlIGFueSByaXNrIHRvIHRoZSBleWVzLiBJdCdzIGFjdHVhbGx5IG5lY2Vzc2FyeSBmb3IgdGhlIGV5ZXMgdG8gZnVuY3Rpb24gcHJvcGVybHkuXFxuXFxuKGUpIENvYWw6IENvYWwsIGEgY29tcG9zaXRlIG9mIG9yZ2FuaWMgbWF0ZXJpYWxzLCBkb2Vzbid0IGRpcmVjdGx5IGhhcm0gdGhlIGV5ZXMuIEhvd2V2ZXIsIGV4cG9zdXJlIHRvIGNvYWwgZHVzdCBjYW4gbGVhZCB0byByZXNwaXJhdG9yeSBpc3N1ZXMsIHdoaWNoIGluZGlyZWN0bHkgYWZmZWN0IGV5ZSBoZWFsdGguXFxuXFxuKGYpIE1vbGQ6IFNpbWlsYXIgdG8gbWlsZGV3LCBtb2xkIGNhbiBjYXVzZSBhbGxlcmdpZXMgYW5kIHJlc3BpcmF0b3J5IHByb2JsZW1zIGJ1dCBkb2Vzbid0IGRpcmVjdGx5IGhhcm0gdGhlIGV5ZXMuIEl0J3MgdGhlIGFpcmJvcm5lIHNwb3JlcyBhbmQgcmVhY3RpdmUgY29tcG91bmRzIHRoYXQgY2FuIGJlIHByb2JsZW1hdGljLlxcblxcbihoKSBDb250YWN0IHNvbHV0aW9uOiBUeXBpY2FsbHksIGEgY29udGFjdCBzb2x1dGlvbiBpcyBkZXNpZ25lZCB0byBiZSBzYWZlIGZvciB1c2Ugd2l0aCBjb250YWN0IGxlbnNlcyBhbmQgZG9lc24ndCBoYXJtIHRoZSBleWVzIGlmIHVzZWQgY29ycmVjdGx5LiBBbnkgcG90ZW50aWFsIGhhcm0gd291bGQgYmUgYSByZXN1bHQgb2YgaW1wcm9wZXIgdXNlIG9yIGNvbnRhbWluYXRpb24uXFxuXFxuSW4gc3VtbWFyeSwgd2hpbGUgYWxsIHRoZSBvcHRpb25zIGNhbiBwb3RlbnRpYWxseSBjYXVzZSBpbmRpcmVjdCBoYXJtIHVuZGVyIHNwZWNpZmljIGNpcmN1bXN0YW5jZXMsICdnKSBBY2lkJyBkaXJlY3RseSBhbmQgYWN1dGVseSBoYXJtcyB0aGUgZXllcywgbWFraW5nIGl0IHRoZSBjb3JyZWN0IGFuc3dlciB0byB0aGUgcXVlc3Rpb24uXCIsIFwiZmluYWxfYW5zd2VyXCI6IFwiZ1wifSJ9XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJyZWFzb25pbmdcIjogXCIxLiBSZWFkaW5nIHRoZSBxdWVzdGlvbiBhbmQgb3B0aW9uczogV2UgYXJlIGFza2VkIHdoYXQgZm9ybXMgaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuXFxuXFxuMi4gSWRlbnRpZnlpbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIG9wdGlvbnM6IFxcbiAgIC0gQmFtYm9vLCBEZXNpY2NhdGlvbiwgQnVycnMsIEVsbXMsIENvYWwsIENhbmR5LCBhbmQgTWVhdCBhcmUgYWxsIGRpZmZlcmVudCBvcmdhbmljIG1hdHRlciwgYnV0IG5vdCBhbGwgb2YgdGhlbSBmb3JtIHBlYXQgdW5kZXIgdGhlIG1lbnRpb25lZCBjb25kaXRpb25zLlxcblxcbjMuIERldGVybWluaW5nIHdoaWNoIG9wdGlvbnMgYXJlIG5vdCBsb2dpY2FsOlxcbiAgIC0gKGEpIEJhbWJvbzogV2hpbGUgYmFtYm9vIGlzIGEgcGxhbnQsIGl0IHR5cGljYWxseSBncm93cyBpbiByZWxhdGl2ZWx5IG1pbGQgY29uZGl0aW9ucyBhbmQgZG9lcyBub3QgdHJhbnNmb3JtIGludG8gcGVhdCB1bmRlciBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlLlxcbiAgIC0gKGIpIERlc2ljY2F0aW9uOiBUaGlzIHJlZmVycyB0byB0aGUgcHJvY2VzcyBvZiBkcnlpbmcgb3V0IGFuZCBpcyBub3QgYSBkaXJlY3QgY29udHJpYnV0b3IgdG8gdGhlIGZvcm1hdGlvbiBvZiBwZWF0LiBJdCBkb2Vzbid0IGludm9sdmUgdGhlIG5lY2Vzc2FyeSBoZWF0IGFuZCBwcmVzc3VyZS5cXG4gICAtIChjKSBCdXJyczogQnVycnMgYXJlIHNtYWxsIHNlZWQgYmFsbHMgYXR0YWNoZWQgdG8gcGxhbnRzLCBwcmltYXJpbHkgdXNlZCBieSBwbGFudHMgZm9yIGRpc3BlcnNhbC4gVGhleSBkb24ndCBmb3JtIHBlYXQuXFxuICAgLSAoZCkgRWxtczogVGhlc2UgYXJlIHRyZWVzIGNvbW1vbmx5IGZvdW5kIGluIHRlbXBlcmF0ZSByZWdpb25zLiBUaGV5IGNhbiBkZWNvbXBvc2Ugb3ZlciB0aW1lIGJ1dCBkbyBub3QgZm9ybSBwZWF0IHVuZGVyIG5vcm1hbCBvciBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlLlxcbiAgIC0gKGUpIE1vc3M6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBNb3NzIGlzIGEgdHlwZSBvZiBub24tdmFzY3VsYXIgbGFuZCBwbGFudCB0aGF0IGdyb3dzIGluIGRhbXAgZW52aXJvbm1lbnRzLiBPdmVyIGxvbmcgcGVyaW9kcywgdW5kZXIgY29uZGl0aW9ucyBvZiBoaWdoIHByZXNzdXJlIGFuZCBzbG93bHkgZGVjb21wb3NpbmcgaW4gd2F0ZXItcmljaCBlbnZpcm9ubWVudHMsIG1vc3MgY29udHJpYnV0ZXMgdG8gdGhlIGZvcm1hdGlvbiBvZiBwZWF0LlxcbiAgIC0gKGYpIENvYWw6IENvYWwgZm9ybXMgZnJvbSB0aGUgcmVtYWlucyBvZiBwbGFudHMgdW5kZXIgaW50ZW5zZSBoZWF0IGFuZCBwcmVzc3VyZSBkZWVwIHdpdGhpbiB0aGUgRWFydGgncyBjcnVzdCwgYnV0IGl0IGRvZXNuJ3QgZm9ybSBwZWF0LiBQZWF0IGFuZCBjb2FsIGFyZSBkaXN0aW5jdCBnZW9sb2dpY2FsIGZvcm1hdGlvbnMuXFxuICAgLSAoZykgQ2FuZHk6IFRoaXMgaXMgbm90IG9yZ2FuaWMgbWF0dGVyIHRoYXQgY2FuIHRyYW5zZm9ybSBpbnRvIHBlYXQuIEl0J3MgYSBwcm9jZXNzZWQgZm9vZCBwcm9kdWN0LlxcbiAgIC0gKGgpIE1lYXQ6IE1lYXQgZG9lcyBub3QgZm9ybSBwZWF0LiBJdCBkZWNvbXBvc2VzIGluIGEgZGlmZmVyZW50IG1hbm5lciBhbmQgZG9lc24ndCBjb250cmlidXRlIGRpcmVjdGx5IHRvIHBlYXQgZm9ybWF0aW9uLlxcblxcbjQuIFByb3ZpZGluZyBleHBsYW5hdGlvbnMgZm9yIGluY29ycmVjdCBhbnN3ZXJzOlxcbiAgIC0gQmFtYm9vLCBCdXJycywgRWxtcywgQ2FuZHksIGFuZCBNZWF0IFxcdTIwMTMgVGhlc2Ugb3B0aW9ucyBhcmUgZWl0aGVyIG5vdCBwbGFudHMgb3IgZm9ybXMgb2Ygb3JnYW5pYyBtYXR0ZXIgdGhhdCBkb24ndCB1bmRlcmdvIHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIChleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlKSByZXF1aXJlZCB0byBmb3JtIHBlYXQuXFxuICAgLSBEZXNpY2NhdGlvbiBcXHUyMDEzIFRoaXMgcHJvY2VzcyBpcyB0aGUgcmVtb3ZhbCBvZiBtb2lzdHVyZSBmcm9tIGEgc3Vic3RhbmNlLCB3aGljaCBkb2Vzbid0IGFsaWduIHdpdGggdGhlIGNvbmRpdGlvbnMgcmVxdWlyZWQgdG8gZm9ybSBwZWF0IChoaWdoIHdhdGVyIGNvbnRlbnQpLlxcbiAgIC0gQ29hbCBcXHUyMDEzIFdoaWxlIHNpbWlsYXIgdG8gcGVhdCBpbiB0aGF0IGl0J3MgZm9ybWVkIGZyb20gcGxhbnQgZGVicmlzLCBpdCdzIGZvcm1lZCB1bmRlciBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBjb25kaXRpb25zIGRlZXAgd2l0aGluIHRoZSBFYXJ0aCwgbm90IHRocm91Z2ggc3VyZmFjZSBwcm9jZXNzZXMgaW52b2x2aW5nIG1vc3MuXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgKGUpIE1vc3MgYmVjYXVzZSBpdCBpcyB0aGUgb25seSBvcHRpb24gYW1vbmcgdGhlIGNob2ljZXMgdGhhdCwgd2hlbiBzdWJqZWN0ZWQgdG8gY29uZGl0aW9ucyBvZiBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZSwgY2FuIGNvbnRyaWJ1dGUgdG8gdGhlIGZvcm1hdGlvbiBvZiBwZWF0LlwiLCBcImZpbmFsX2Fuc3dlclwiOiBcImVcIn0ifV19LCAiY29udmVyc2F0aW9uX0ZBUl9ncHQzXzUiOiB7IjAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGlzIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IHVzZWQgZm9yIHByZWRpY3Rpbmc/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXMgKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2UgKGMpIFdoYXQgaXQncyBsaWtlIG91dHNpZGUgZWFjaCBkYXkgKGQpIDcwLTc1IGRlZ3JlZXMgZmFocmVuaGVpdCAoZSkgUmFwaWQgY2hhbmdlcyBvY2N1ciAoZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHMuIChnKSBTbm93LCBpY2UsIGFuZCByb2NrIChoKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIGNlbHNpdXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImNcIiwgXCJyZWFzb25pbmdcIjogXCJhKSBTZWNvbmRzIGFuZCBtaW51dGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyB0aW1lIGludGVydmFscy4gU2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgdXNlZCBmb3IgdmFyaW91cyBwdXJwb3NlcyBzdWNoIGFzIGNvbW11bmljYXRpb24sIG5hdmlnYXRpb24sIGFuZCB3ZWF0aGVyIGZvcmVjYXN0aW5nLCBidXQgaXQgaXMgbm90IHVzZWQgZm9yIHByZWRpY3RpbmcgdGltZSBpbnRlcnZhbHMuXFxuXFxuYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZTogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IHVzZWQgZm9yIHByZWRpY3RpbmcgZWFydGhxdWFrZXMuIEVhcnRocXVha2UgcHJlZGljdGlvbiBpcyBhIGNvbXBsZXggcHJvY2VzcyB0aGF0IGludm9sdmVzIHNlaXNtb2xvZ3kgYW5kIG90aGVyIHNjaWVudGlmaWMgbWV0aG9kcywgYnV0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCBvbmUgb2YgdGhlbS5cXG5cXG5kKSA3MC03NSBkZWdyZWVzIEZhaHJlbmhlaXQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIHNwZWNpZmljIHRlbXBlcmF0dXJlIHJhbmdlcy4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIHByb3ZpZGUgdGVtcGVyYXR1cmUgZGF0YSwgaXQgaXMgbm90IHVzZWQgZm9yIHByZWRpY3Rpbmcgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzLlxcblxcbmUpIFJhcGlkIGNoYW5nZXMgb2NjdXI6IFRoaXMgb3B0aW9uIGlzIHRvbyB2YWd1ZSBhbmQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgY29ycmVjdCBvciBub3QuIFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIHRvIG1vbml0b3IgY2hhbmdlcyBpbiB2YXJpb3VzIGVudmlyb25tZW50YWwgZmFjdG9ycywgYnV0IGl0IGlzIG5vdCB1c2VkIHNwZWNpZmljYWxseSBmb3IgcHJlZGljdGluZyByYXBpZCBjaGFuZ2VzLlxcblxcbmYpIERlYWQtZW5kcyBhbmQgZmFsc2Ugc3RhcnRzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byBzYXRlbGxpdGUgdGVjaG5vbG9neSBvciBhbnkgdHlwZSBvZiBwcmVkaWN0aW9uLlxcblxcbmcpIFNub3csIGljZSwgYW5kIHJvY2s6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBzcGVjaWZpYyBhbmQgZG9lcyBub3QgY292ZXIgdGhlIGJyb2FkIHJhbmdlIG9mIHByZWRpY3Rpb25zIHRoYXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgZm9yLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCB0byBtb25pdG9yIHNub3csIGljZSwgYW5kIHJvY2sgZm9ybWF0aW9ucywgaXQgaXMgbm90IHVzZWQgZXhjbHVzaXZlbHkgZm9yIHRoaXMgcHVycG9zZS5cXG5cXG5oKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIENlbHNpdXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBzcGVjaWZpYyBhbmQgZG9lcyBub3QgY292ZXIgdGhlIGJyb2FkIHJhbmdlIG9mIHRlbXBlcmF0dXJlIHByZWRpY3Rpb25zIHRoYXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgZm9yLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSB0ZW1wZXJhdHVyZSBkYXRhLCBpdCBpcyBub3QgdXNlZCBleGNsdXNpdmVseSBmb3IgcHJlZGljdGluZyB0ZW1wZXJhdHVyZXMgd2l0aGluIGEgc3BlY2lmaWMgcmFuZ2UuXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYykgd2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSwgYXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgY29tbW9ubHkgdXNlZCBmb3Igd2VhdGhlciBmb3JlY2FzdGluZyBhbmQgcHJlZGljdGluZyBkYWlseSB3ZWF0aGVyIGNvbmRpdGlvbnMuXCJ9In1dLCAiMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBpcnJhZGlhdGluZyBmb29kIGRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBSZWxpZXZlIHBhaW4gKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50cyAoYykgSW1wcm92ZXMgZm9vZCBzYWZldHkgKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWEgKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlIChmKSBDaGVtaWNhbCBjaGFuZ2VzIChnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQgKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGgifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImNcIiwgXCJyZWFzb25pbmdcIjogXCIoYSkgUmVsaWV2ZSBwYWluOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCByZWxpZXZpbmcgcGFpbi4gSXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIG9mIGV4cG9zaW5nIGZvb2QgdG8gaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgYmFjdGVyaWEsIHZpcnVzZXMsIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC4gSXQgaXMgbm90IGEgcGFpbiByZWxpZXZlci5cXG5cXG4oYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgZG9lcyBub3QgZW5oYW5jZSB0aGUgZm9vZCdzIG51dHJpZW50cy4gSW4gZmFjdCwgc29tZSBzdHVkaWVzIGhhdmUgc2hvd24gdGhhdCBpcnJhZGlhdGlvbiBjYW4gY2F1c2UgYSBzbGlnaHQgbG9zcyBvZiBjZXJ0YWluIHZpdGFtaW5zIGluIGZvb2QuIEhvd2V2ZXIsIHRoZSBsb3NzIGlzIG5vdCBzaWduaWZpY2FudCBlbm91Z2ggdG8gYWZmZWN0IHRoZSBvdmVyYWxsIG51dHJpdGlvbmFsIHZhbHVlIG9mIHRoZSBmb29kLlxcblxcbihkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgYWN0dWFsbHkga2lsbHMgYmFjdGVyaWEgYW5kIG90aGVyIHBhdGhvZ2VucyB0aGF0IG1heSBiZSBwcmVzZW50IGluIHRoZSBmb29kLiBJdCBkb2VzIG5vdCBhbGxvdyB0aGUgZ3Jvd3RoIG9mIGJhY3RlcmlhLlxcblxcbihlKSBJbmNyZWFzZXMgZm9vZCB3YXN0ZTogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGNhbiBhY3R1YWxseSBoZWxwIHJlZHVjZSBmb29kIHdhc3RlLiBCeSBraWxsaW5nIGJhY3RlcmlhIGFuZCBvdGhlciBwYXRob2dlbnMsIGlycmFkaWF0aW9uIGNhbiBleHRlbmQgdGhlIHNoZWxmIGxpZmUgb2YgZm9vZCwgd2hpY2ggbWVhbnMgbGVzcyBmb29kIGlzIHdhc3RlZC5cXG5cXG4oZikgQ2hlbWljYWwgY2hhbmdlczogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGNhbiBjYXVzZSBzb21lIGNoZW1pY2FsIGNoYW5nZXMgaW4gdGhlIGZvb2QsIGJ1dCB0aGVzZSBjaGFuZ2VzIGFyZSBub3QgaGFybWZ1bCB0byBodW1hbiBoZWFsdGguIEluIGZhY3QsIHRoZSBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uLCB0aGUgVS5TLiBGb29kIGFuZCBEcnVnIEFkbWluaXN0cmF0aW9uLCBhbmQgb3RoZXIgb3JnYW5pemF0aW9ucyBoYXZlIGRldGVybWluZWQgdGhhdCBpcnJhZGlhdGVkIGZvb2QgaXMgc2FmZSB0byBlYXQuXFxuXFxuKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZC4gSXQgaXMgYSBwcm9jZXNzIG9mIGV4cG9zaW5nIGZvb2QgdG8gaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgYmFjdGVyaWEsIHZpcnVzZXMsIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC5cXG5cXG4oaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGVkIGZvb2QgaXMgbm90IGEgbWFqb3IgdGhyZWF0IHRvIGhlYWx0aC4gQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uLCB0aGUgVS5TLiBGb29kIGFuZCBEcnVnIEFkbWluaXN0cmF0aW9uLCBhbmQgb3RoZXIgb3JnYW5pemF0aW9ucyBoYXZlIGRldGVybWluZWQgdGhhdCBpcnJhZGlhdGVkIGZvb2QgaXMgc2FmZSB0byBlYXQuIEluIGZhY3QsIGlycmFkaWF0aW9uIGNhbiBoZWxwIHJlZHVjZSB0aGUgcmlzayBvZiBmb29kYm9ybmUgaWxsbmVzcyBieSBraWxsaW5nIGJhY3RlcmlhIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC5cIn0ifV0sICIyIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBwcm90ZWN0cyBhIG1hbW1hbCdzIHNraW4/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEZpYmVyIGZvbGxpY2xlcyAoYikgRXhmb2xpYXRpb24gKGMpIFJlc2lzdGFuY2UgKGQpIExheWVycyBvZiBmYXQgKGUpIEV2YXBvcmF0aW9uIChmKSBBIGN1dGljbGUgKGcpIFNlbnNvcnkgbmV1cm9ucyAoaCkgRnVyIGFuZCBmYXQifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImFcIiwgXCJyZWFzb25pbmdcIjogXCJiKSBFeGZvbGlhdGlvbjogRXhmb2xpYXRpb24gaXMgdGhlIHByb2Nlc3Mgb2Ygc2hlZGRpbmcgZGVhZCBza2luIGNlbGxzIGZyb20gdGhlIHN1cmZhY2Ugb2YgdGhlIHNraW4uIFdoaWxlIHRoaXMgaXMgYW4gaW1wb3J0YW50IHByb2Nlc3MgZm9yIG1haW50YWluaW5nIGhlYWx0aHkgc2tpbiwgaXQgZG9lcyBub3QgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG5jKSBSZXNpc3RhbmNlOiBSZXNpc3RhbmNlIGlzIGEgdmFndWUgdGVybSBhbmQgZG9lcyBub3QgcHJvdmlkZSBhbnkgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBwcm90ZWN0cyB0aGUgc2tpbi5cXG5cXG5kKSBMYXllcnMgb2YgZmF0OiBXaGlsZSBsYXllcnMgb2YgZmF0IGNhbiBwcm92aWRlIGluc3VsYXRpb24gYW5kIGN1c2hpb25pbmcgZm9yIHRoZSBza2luLCB0aGV5IGRvIG5vdCBkaXJlY3RseSBwcm90ZWN0IHRoZSBza2luLlxcblxcbmUpIEV2YXBvcmF0aW9uOiBFdmFwb3JhdGlvbiBpcyBhIHByb2Nlc3MgYnkgd2hpY2ggYSBsaXF1aWQgdHVybnMgaW50byBhIGdhcy4gSXQgZG9lcyBub3QgcHJvdGVjdCB0aGUgc2tpbi5cXG5cXG5mKSBBIGN1dGljbGU6IEEgY3V0aWNsZSBpcyBhIHByb3RlY3RpdmUgbGF5ZXIgdGhhdCBjb3ZlcnMgdGhlIHN1cmZhY2Ugb2Ygc29tZSBvcmdhbmlzbXMsIHN1Y2ggYXMgcGxhbnRzIGFuZCBpbnNlY3RzLiBIb3dldmVyLCBtYW1tYWxzIGRvIG5vdCBoYXZlIGEgY3V0aWNsZS5cXG5cXG5nKSBTZW5zb3J5IG5ldXJvbnM6IFNlbnNvcnkgbmV1cm9ucyBhcmUgbmVydmUgY2VsbHMgdGhhdCB0cmFuc21pdCBzZW5zb3J5IGluZm9ybWF0aW9uIGZyb20gdGhlIGJvZHkgdG8gdGhlIGJyYWluLiBXaGlsZSB0aGV5IHBsYXkgYW4gaW1wb3J0YW50IHJvbGUgaW4gdGhlIG5lcnZvdXMgc3lzdGVtLCB0aGV5IGRvIG5vdCBwcm90ZWN0IHRoZSBza2luLlxcblxcbmgpIEZ1ciBhbmQgZmF0OiBUaGlzIGlzIGEgY29ycmVjdCBhbnN3ZXIuIEZ1ciBhbmQgZmF0IHByb3ZpZGUgaW5zdWxhdGlvbiBhbmQgcHJvdGVjdGlvbiBmb3IgdGhlIHNraW4uIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBzcGVjaWZpY2FsbHkgYXNrcyB3aGF0IHByb3RlY3RzIHRoZSBza2luLCBhbmQgZmliZXIgZm9sbGljbGVzIGFyZSB0aGUgc3RydWN0dXJlcyB3aXRoaW4gdGhlIHNraW4gdGhhdCBwcm92aWRlIHRoZSBtb3N0IGRpcmVjdCBwcm90ZWN0aW9uLlwifSJ9XSwgIjMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvIGVhcnRod29ybXMgZG8gd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRGllcyAoYikgUmVncm93cyBpdCAoYykgUmVwcm9kdWNlcyAoZCkgU2VkaW1lbnQgKGUpIFJvb3QgZ3Jvd3RoIChmKSBNaWdyYXRlIChnKSBTdG9wcyBncm93aW5nIChoKSBSb290cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiYlwiLCBcInJlYXNvbmluZ1wiOiBcImEpIERpZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgZWFydGh3b3JtcyBkbyBub3QgZGllIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmYuIFdoaWxlIGl0IG1heSBiZSBhIHRyYXVtYXRpYyBleHBlcmllbmNlIGZvciB0aGUgZWFydGh3b3JtLCB0aGV5IGFyZSBhYmxlIHRvIHJlZ2VuZXJhdGUgdGhlIGxvc3Qgc2VnbWVudC5cXG5cXG5jKSBSZXByb2R1Y2VzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGVhcnRod29ybXMgZG8gbm90IHJlcHJvZHVjZSB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLiBSZXByb2R1Y3Rpb24gaW4gZWFydGh3b3JtcyBpbnZvbHZlcyB0aGUgZXhjaGFuZ2Ugb2Ygc3Blcm0gYmV0d2VlbiB0d28gaW5kaXZpZHVhbHMsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIHRoZSBsb3NzIG9mIHNlZ21lbnRzLlxcblxcbmQpIFNlZGltZW50OiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gU2VkaW1lbnQgcmVmZXJzIHRvIHRoZSBtYXRlcmlhbCB0aGF0IHNldHRsZXMgYXQgdGhlIGJvdHRvbSBvZiBhIGJvZHkgb2Ygd2F0ZXIgb3Igb3RoZXIgbGlxdWlkLlxcblxcbmUpIFJvb3QgZ3Jvd3RoOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gUm9vdCBncm93dGggcmVmZXJzIHRvIHRoZSBncm93dGggb2Ygcm9vdHMgaW4gcGxhbnRzLCBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBlYXJ0aHdvcm1zLlxcblxcbmYpIE1pZ3JhdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBNaWdyYXRpb24gcmVmZXJzIHRvIHRoZSBtb3ZlbWVudCBvZiBhbmltYWxzIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIsIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGVhcnRod29ybXMgcmVnZW5lcmF0aW5nIGxvc3Qgc2VnbWVudHMuXFxuXFxuZykgU3RvcHMgZ3Jvd2luZzogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBlYXJ0aHdvcm1zIGRvIG5vdCBzdG9wIGdyb3dpbmcgd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZi4gV2hpbGUgdGhlIGxvc3Qgc2VnbWVudCBtYXkgdGFrZSBzb21lIHRpbWUgdG8gcmVnZW5lcmF0ZSwgdGhlIGVhcnRod29ybSB3aWxsIGNvbnRpbnVlIHRvIGdyb3cgYW5kIG1vdmUuXFxuXFxuaCkgUm9vdHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBSb290cyByZWZlciB0byB0aGUgcGFydCBvZiBhIHBsYW50IHRoYXQgdHlwaWNhbGx5IGxpZXMgYmVsb3cgdGhlIHN1cmZhY2Ugb2YgdGhlIHNvaWwsIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGVhcnRod29ybXMgcmVnZW5lcmF0aW5nIGxvc3Qgc2VnbWVudHMuXCJ9In1dLCAiNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IExpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBUaGUgZW52aXJvbm1lbnQgKGIpIFJhaW5zdG9ybXMgKGMpIERlc3RydWN0aW9uIChkKSBWaXNpYmlsaXR5IChlKSBUaHVuZGVyIChmKSBUaGUgc3VuIChnKSBUaGUgd2VhdGhlci4gKGgpIFRyYW5zcG9ydGF0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJhXCIsIFwicmVhc29uaW5nXCI6IFwiYikgUmFpbnN0b3JtczogTGlnaHRuaW5nIGlzIGFjdHVhbGx5IGEgbmF0dXJhbCBwaGVub21lbm9uIHRoYXQgb2NjdXJzIGR1cmluZyByYWluc3Rvcm1zLiBJdCBpcyBub3QgYmFkIGZvciByYWluc3Rvcm1zLCBidXQgcmF0aGVyIGEgcGFydCBvZiB0aGUgc3Rvcm0uXFxuXFxuYykgRGVzdHJ1Y3Rpb246IFdoaWxlIGxpZ2h0bmluZyBjYW4gY2F1c2UgZGVzdHJ1Y3Rpb24sIHRoZSBxdWVzdGlvbiBpcyBhc2tpbmcgd2hhdCBsaWdodG5pbmcgY2FuIGJlIGJhZCBmb3IsIG5vdCB3aGF0IGl0IGNhbiBjYXVzZS5cXG5cXG5kKSBWaXNpYmlsaXR5OiBMaWdodG5pbmcgY2FuIGFjdHVhbGx5IGltcHJvdmUgdmlzaWJpbGl0eSBkdXJpbmcgYSBzdG9ybSBieSBpbGx1bWluYXRpbmcgdGhlIHN1cnJvdW5kaW5ncy4gSXQgaXMgbm90IGJhZCBmb3IgdmlzaWJpbGl0eS5cXG5cXG5lKSBUaHVuZGVyOiBUaHVuZGVyIGlzIGFjdHVhbGx5IGNhdXNlZCBieSBsaWdodG5pbmcsIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRodW5kZXIuXFxuXFxuZikgVGhlIHN1bjogTGlnaHRuaW5nIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBzdW4sIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRoZSBzdW4uXFxuXFxuZykgVGhlIHdlYXRoZXI6IExpZ2h0bmluZyBpcyBhIHBhcnQgb2YgdGhlIHdlYXRoZXIsIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRoZSB3ZWF0aGVyLlxcblxcbmgpIFRyYW5zcG9ydGF0aW9uOiBMaWdodG5pbmcgY2FuIGJlIGRhbmdlcm91cyBmb3IgdHJhbnNwb3J0YXRpb24sIGJ1dCB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIHdoYXQgbGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yIGluIGdlbmVyYWwsIG5vdCBzcGVjaWZpY2FsbHkgZm9yIHRyYW5zcG9ydGF0aW9uLlxcblxcblRoZXJlZm9yZSwgdGhlIG9ubHkgbG9naWNhbCBhbnN3ZXIgaXMgYSkgdGhlIGVudmlyb25tZW50LiBMaWdodG5pbmcgY2FuIHN0YXJ0IHdpbGRmaXJlcywgZGFtYWdlIHRyZWVzIGFuZCBvdGhlciB2ZWdldGF0aW9uLCBhbmQgY2F1c2Ugc29pbCBlcm9zaW9uLCB3aGljaCBjYW4gYWxsIGhhdmUgbmVnYXRpdmUgaW1wYWN0cyBvbiB0aGUgZW52aXJvbm1lbnQuXCJ9In1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZFwiLCBcInJlYXNvbmluZ1wiOiBcImEpIFNvdWxzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIHNvdWxzIGFyZSBub3QgcGh5c2ljYWwgZW50aXRpZXMgdGhhdCBjYW4gbGVhdmUgZXZpZGVuY2Ugb2YgdGhlaXIgcHJlc2VuY2UgaW4gYSBwbGFjZS4gU291bHMgYXJlIGJlbGlldmVkIHRvIGJlIHNwaXJpdHVhbCBlbnRpdGllcyB0aGF0IGFyZSBub3QgYm91bmQgYnkgcGh5c2ljYWwgbGF3cy5cXG5cXG5iKSBBbmltYWxzIHdpdGggYmFja2JvbmVzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29tcGxldGVseSBjb3JyZWN0IGJlY2F1c2Ugbm90IGFsbCBhbmltYWxzIGhhdmUgYmFja2JvbmVzLiBJbnZlcnRlYnJhdGVzLCBzdWNoIGFzIGluc2VjdHMgYW5kIG1vbGx1c2tzLCBkbyBub3QgaGF2ZSBiYWNrYm9uZXMuIFRoZXJlZm9yZSwgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbm5vdCBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBhbmltYWxzIHdpdGggYmFja2JvbmVzIGxpdmVkIGluIGEgcGxhY2UuXFxuXFxuYykgT3JnYW5pc21zOiBUaGlzIG9wdGlvbiBpcyB0b28gYnJvYWQgYW5kIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uLiBFdmlkZW5jZSBvZiBwYXN0IGxpZmUgY2FuIHNob3cgdGhhdCBhbnkgdHlwZSBvZiBvcmdhbmlzbSBvbmNlIGxpdmVkIGluIGEgcGxhY2UsIGluY2x1ZGluZyBiYWN0ZXJpYSwgZnVuZ2ksIGFuZCBwcm90aXN0cy5cXG5cXG5kKSBQbGFudCBvciBhbmltYWw6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyIGJlY2F1c2UgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgYSBwbGFudCBvciBhbmltYWwgb25jZSBsaXZlZCBpbiBhIHBsYWNlLiBGb3NzaWxzLCBmb3IgZXhhbXBsZSwgcHJvdmlkZSBldmlkZW5jZSBvZiBwYXN0IGxpZmUgYW5kIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IHR5cGVzIG9mIHBsYW50cyBhbmQgYW5pbWFscyBsaXZlZCBpbiBhIHBhcnRpY3VsYXIgYXJlYS5cXG5cXG5lKSBNYWxlcyBhbmQgZmVtYWxlczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBldmlkZW5jZSBvZiBwYXN0IGxpZmUgY2Fubm90IGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZXggb2YgdGhlIG9yZ2FuaXNtcyB0aGF0IG9uY2UgbGl2ZWQgaW4gYSBwbGFjZS4gRm9zc2lscyBkbyBub3QgdHlwaWNhbGx5IHByZXNlcnZlIHNleHVhbCBjaGFyYWN0ZXJpc3RpY3MuXFxuXFxuZikgRGVmb3Jlc3RhdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBkZWZvcmVzdGF0aW9uIGlzIGEgaHVtYW4gYWN0aXZpdHkgdGhhdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCBwYXN0IGxpZmUgaW4gYSBwbGFjZS5cXG5cXG5nKSBSZWluY2FybmF0aW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIHJlaW5jYXJuYXRpb24gaXMgYSByZWxpZ2lvdXMgb3IgcGhpbG9zb3BoaWNhbCBjb25jZXB0IHRoYXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgc2NpZW50aWZpYyBldmlkZW5jZSBhYm91dCBwYXN0IGxpZmUgaW4gYSBwbGFjZS5cXG5cXG5oKSBJbXBvcnRhbnQgaGFiaXRhdHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGRvZXMgbm90IG5lY2Vzc2FyaWx5IHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgaW1wb3J0YW50IGhhYml0YXRzLiBXaGlsZSBjZXJ0YWluIGFyZWFzIG1heSBoYXZlIGJlZW4gaW1wb3J0YW50IGhhYml0YXRzIGluIHRoZSBwYXN0LCBldmlkZW5jZSBvZiBwYXN0IGxpZmUgY2FuIGFsc28gYmUgZm91bmQgaW4gYXJlYXMgdGhhdCB3ZXJlIG5vdCBpbXBvcnRhbnQgaGFiaXRhdHMuXCJ9In1dLCAiNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLCBvciBpbmhlcml0ZWQsIGlzIGZvdW5kIGluIGluZm9ybWF0aW9uIGluIGFuIG9yZ2FuaXNtJ3Mgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU3BlY2llcyAoYikgTWVzc2VuZ2VycyAoYykgSGFpciBmb2xsaWNsZXMgKGQpIEN5Y2xlcyAoZSkgU2tpbiBjZWxscyAoZikgRW5kb2NyaW5lIHN5c3RlbSAoZykgQ2hyb21vc29tZXMgKGgpIFByb3RlaW5zIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJnXCIsIFwicmVhc29uaW5nXCI6IFwiKGEpIFNwZWNpZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNwZWNpZXMgcmVmZXIgdG8gYSBncm91cCBvZiBvcmdhbmlzbXMgdGhhdCBzaGFyZSBzaW1pbGFyIGNoYXJhY3RlcmlzdGljcyBhbmQgY2FuIGludGVyYnJlZWQgdG8gcHJvZHVjZSBmZXJ0aWxlIG9mZnNwcmluZy4gSXQgZG9lcyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oYikgTWVzc2VuZ2VyczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgbWVzc2VuZ2VycyByZWZlciB0byBtb2xlY3VsZXMgc3VjaCBhcyBob3Jtb25lcyBhbmQgbmV1cm90cmFuc21pdHRlcnMgdGhhdCB0cmFuc21pdCBzaWduYWxzIGJldHdlZW4gY2VsbHMuIFdoaWxlIHRoZXkgcGxheSBhIHJvbGUgaW4gdmFyaW91cyBiaW9sb2dpY2FsIHByb2Nlc3NlcywgdGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cXG5cXG4oYykgSGFpciBmb2xsaWNsZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGhhaXIgZm9sbGljbGVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBza2luIHRoYXQgcHJvZHVjZSBoYWlyLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihkKSBDeWNsZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGN5Y2xlcyByZWZlciB0byByZWN1cnJpbmcgZXZlbnRzIG9yIHByb2Nlc3NlcyBzdWNoIGFzIHRoZSBtZW5zdHJ1YWwgY3ljbGUgb3IgdGhlIHdhdGVyIGN5Y2xlLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihlKSBTa2luIGNlbGxzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBza2luIGNlbGxzIGFyZSBjZWxscyB0aGF0IG1ha2UgdXAgdGhlIG91dGVyIGxheWVyIG9mIHRoZSBza2luLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihmKSBFbmRvY3JpbmUgc3lzdGVtOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSB0aGUgZW5kb2NyaW5lIHN5c3RlbSBpcyBhIHN5c3RlbSBvZiBnbGFuZHMgdGhhdCBwcm9kdWNlIGFuZCBzZWNyZXRlIGhvcm1vbmVzLiBXaGlsZSBob3Jtb25lcyBwbGF5IGEgcm9sZSBpbiB2YXJpb3VzIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzLCB0aGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxcblxcbihnKSBDaHJvbW9zb21lczogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIENocm9tb3NvbWVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBudWNsZXVzIG9mIGEgY2VsbCB0aGF0IGNvbnRhaW4gZ2VuZXRpYyBpbmZvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBETkEuIFRyYWl0cyBhcmUgcGFzc2VkIGRvd24gZnJvbSBvbmUgZ2VuZXJhdGlvbiB0byB0aGUgbmV4dCB0aHJvdWdoIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYW4gb3JnYW5pc20ncyBjaHJvbW9zb21lcy5cXG5cXG4oaCkgUHJvdGVpbnM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHByb3RlaW5zIGFyZSBtb2xlY3VsZXMgbWFkZSB1cCBvZiBhbWlubyBhY2lkcyB0aGF0IHBlcmZvcm0gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIGJvZHkuIFdoaWxlIHRoZXkgcGxheSBhIHJvbGUgaW4gdmFyaW91cyBiaW9sb2dpY2FsIHByb2Nlc3NlcywgdGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cIn0ifV0sICI3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBhcmUgdGhlIG1ham9yIHByb2R1Y2VycyBpbiB0ZW1wZXJhdHVyZSBhbmQgcHJlY2lwaXRhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgR3Jhc3MgKGIpIEFuaW1hbHMgKGMpIEFwcGxlcyAoZCkgUG90YXRvZXMgKGUpIFRyZWVzIChmKSBQbGFudHMgKGcpIEZ1bmdpIChoKSBGaWVsZHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImZcIiwgXCJyZWFzb25pbmdcIjogXCIoYSkgR3Jhc3M6IFdoaWxlIGdyYXNzIGlzIGEgdHlwZSBvZiBwbGFudCwgaXQgaXMgbm90IHRoZSBvbmx5IHR5cGUgb2YgcGxhbnQuIEFkZGl0aW9uYWxseSwgdGhlIHF1ZXN0aW9uIHNwZWNpZmljYWxseSBhc2tzIGFib3V0ICdtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24sJyBhbmQgZ3Jhc3MgaXMgbm90IG5lY2Vzc2FyaWx5IGEgbWFqb3IgcHJvZHVjZXIgaW4gdGhlc2UgYXJlYXMuXFxuXFxuKGIpIEFuaW1hbHM6IEFuaW1hbHMgYXJlIG5vdCBwcm9kdWNlcnMsIHRoZXkgYXJlIGNvbnN1bWVycy4gVGhleSBkbyBub3QgcHJvZHVjZSBlbmVyZ3kgZnJvbSBzdW5saWdodCwgd2F0ZXIsIGFuZCBjYXJib24gZGlveGlkZSBsaWtlIHBsYW50cyBkby5cXG5cXG4oYykgQXBwbGVzOiBBcHBsZXMgYXJlIGEgdHlwZSBvZiBmcnVpdCB0aGF0IGdyb3cgb24gdHJlZXMsIGJ1dCB0aGV5IGFyZSBub3QgcHJvZHVjZXJzIGluIGFuZCBvZiB0aGVtc2VsdmVzLiBUaGUgdHJlZXMgdGhhdCBwcm9kdWNlIGFwcGxlcyBhcmUgdGhlIHByb2R1Y2Vycy5cXG5cXG4oZCkgUG90YXRvZXM6IFBvdGF0b2VzIGFyZSBhIHR5cGUgb2YgdmVnZXRhYmxlIHRoYXQgZ3JvdyB1bmRlcmdyb3VuZCwgYnV0IHRoZXkgYXJlIG5vdCBwcm9kdWNlcnMgaW4gYW5kIG9mIHRoZW1zZWx2ZXMuIFRoZSBwbGFudHMgdGhhdCBwcm9kdWNlIHBvdGF0b2VzIGFyZSB0aGUgcHJvZHVjZXJzLlxcblxcbihlKSBUcmVlczogVHJlZXMgYXJlIGEgdHlwZSBvZiBwbGFudCBhbmQgYXJlIGluZGVlZCBtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24uIFRoZXkgYWJzb3JiIGNhcmJvbiBkaW94aWRlIGFuZCByZWxlYXNlIG94eWdlbiwgYW5kIHRoZXkgYWxzbyBoZWxwIHJlZ3VsYXRlIHRoZSB0ZW1wZXJhdHVyZSBhbmQgbW9pc3R1cmUgbGV2ZWxzIGluIHRoZWlyIGVudmlyb25tZW50LlxcblxcbihnKSBGdW5naTogRnVuZ2kgYXJlIG5vdCBwcm9kdWNlcnMsIHRoZXkgYXJlIGRlY29tcG9zZXJzLiBUaGV5IGJyZWFrIGRvd24gZGVhZCBvcmdhbmljIG1hdHRlciBhbmQgcmVjeWNsZSBudXRyaWVudHMgYmFjayBpbnRvIHRoZSBlY29zeXN0ZW0uXFxuXFxuKGgpIEZpZWxkczogRmllbGRzIGFyZSBub3QgbGl2aW5nIG9yZ2FuaXNtcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBwcm9kdWNlcnMuIFRoZXkgYXJlIHNpbXBseSBhcmVhcyBvZiBsYW5kIHVzZWQgZm9yIGdyb3dpbmcgY3JvcHMgb3IgcmFpc2luZyBsaXZlc3RvY2suXFxuXFxuSW4gc3VtbWFyeSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChmKSBwbGFudHMsIHNwZWNpZmljYWxseSB0aG9zZSB0aGF0IHVzZSBwaG90b3N5bnRoZXNpcyB0byBwcm9kdWNlIGVuZXJneSBmcm9tIHN1bmxpZ2h0LCB3YXRlciwgYW5kIGNhcmJvbiBkaW94aWRlLlwifSJ9XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImRcIiwgXCJyZWFzb25pbmdcIjogXCIoYSkgU2NhcmNlIHJlc291cmNlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2FyY2UgcmVzb3VyY2VzLiBTY2FyY2UgcmVzb3VyY2VzIGFyZSByZXNvdXJjZXMgdGhhdCBhcmUgbGltaXRlZCBpbiBhdmFpbGFiaWxpdHksIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGEgbGltaXRlZCByZXNvdXJjZS5cXG5cXG4oYikgSGFybWZ1bCBzdWJzdGFuY2VzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIGhhcm1mdWwgc3Vic3RhbmNlcy4gSGFybWZ1bCBzdWJzdGFuY2VzIGFyZSBzdWJzdGFuY2VzIHRoYXQgY2FuIGNhdXNlIGhhcm0gb3IgZGFtYWdlLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBoYXJtZnVsLlxcblxcbihjKSBTY2FyczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2Fycy4gU2NhcnMgYXJlIG1hcmtzIGxlZnQgb24gdGhlIHNraW4gb3Igb3RoZXIgdGlzc3VlIGFmdGVyIGEgd291bmQgaGFzIGhlYWxlZCwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgYSB3b3VuZC5cXG5cXG4oZSkgU2VkaW1lbnQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc2VkaW1lbnQuIFNlZGltZW50IGlzIGEgbmF0dXJhbGx5IG9jY3VycmluZyBtYXRlcmlhbCB0aGF0IGlzIGJyb2tlbiBkb3duIGJ5IHdlYXRoZXJpbmcgYW5kIGVyb3Npb24sIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIHNlZGltZW50LlxcblxcbihmKSBTb21ldGhpbmcgdG8gbW92ZTogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzb21ldGhpbmcgdG8gbW92ZS4gVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3B0aW9ucy5cXG5cXG4oZykgTWFnaWM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gbWFnaWMuIE1hZ2ljIGlzIGEgc3VwZXJuYXR1cmFsIGZvcmNlIHRoYXQgaXMgbm90IGJhc2VkIG9uIHNjaWVuY2Ugb3IgcmVhc29uLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBzdXBlcm5hdHVyYWwuXFxuXFxuKGgpIFBpY25pY3M6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gcGljbmljcy4gUGljbmljcyBhcmUgb3V0ZG9vciBtZWFscyBvciBzb2NpYWwgZ2F0aGVyaW5ncywgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgYSBzb2NpYWwgZ2F0aGVyaW5nLlwifSJ9XSwgIjkiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVuIHdpbGwgYW5pbWFscyBtb3ZlIHRvIGFub3RoZXIgYXJlYT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVG8ga2VlcCB0aGVpciBib2R5IGhlYXQuIChiKSBSZXVzaW5nIG1hdGVyaWFscyAoYykgSWYgdGhleSBjYW4gbm8gbG9uZ2VyIGdldCBmb29kIChkKSBJZiB0aGV5IGFyZSBib3JlZCAoZSkgTWFyc2hlcyBhbmQgc3dhbXBzIChmKSBJZiB0aGV5IGhhdmUgdG9vIG11Y2ggbW9uZXkgKGcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIChoKSBJZiB0aGV5IGhhdmUgdG9vIG11Y2ggZm9vZCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiY1wiLCBcInJlYXNvbmluZ1wiOiBcImEpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIHRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiBBbmltYWxzIGhhdmUgZGlmZmVyZW50IHdheXMgb2YgcmVndWxhdGluZyB0aGVpciBib2R5IHRlbXBlcmF0dXJlLCBzdWNoIGFzIHN3ZWF0aW5nLCBwYW50aW5nLCBvciBoaWJlcm5hdGlvbi4gSG93ZXZlciwgaWYgdGhlIGVudmlyb25tZW50IGJlY29tZXMgdG9vIGV4dHJlbWUsIGFuaW1hbHMgbWF5IG1vdmUgdG8gYSBtb3JlIHN1aXRhYmxlIGFyZWEuXFxuXFxuYikgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgdG8gcmV1c2UgbWF0ZXJpYWxzLiBUaGlzIG9wdGlvbiBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24gYW5kIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYW5pbWFsIG1vdmVtZW50LlxcblxcbmQpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIGlmIHRoZXkgYXJlIGJvcmVkLiBCb3JlZG9tIGlzIGEgaHVtYW4gZW1vdGlvbiBhbmQgYW5pbWFscyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBjYXBhY2l0eSBmb3IgYm9yZWRvbSBhcyBodW1hbnMgZG8uIEFuaW1hbHMgbW92ZSBmb3Igc3Vydml2YWwgcmVhc29ucyBzdWNoIGFzIGZpbmRpbmcgZm9vZCwgd2F0ZXIsIG9yIHNoZWx0ZXIuXFxuXFxuZSkgTWFyc2hlcyBhbmQgc3dhbXBzIGFyZSBub3QgYSByZWFzb24gZm9yIGFuaW1hbCBtb3ZlbWVudC4gTWFyc2hlcyBhbmQgc3dhbXBzIGFyZSB0eXBlcyBvZiBoYWJpdGF0cyB3aGVyZSBhbmltYWxzIG1heSBsaXZlLCBidXQgdGhleSBkbyBub3QgY2F1c2UgYW5pbWFscyB0byBtb3ZlIHRvIGFub3RoZXIgYXJlYS5cXG5cXG5mKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGhhdmUgdG9vIG11Y2ggbW9uZXkuIFRoaXMgb3B0aW9uIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbiBhbmQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBhbmltYWwgbW92ZW1lbnQuXFxuXFxuZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgaXMgYSB3ZWF0aGVyIHBoZW5vbWVub24gYW5kIGRvZXMgbm90IGNhdXNlIGFuaW1hbHMgdG8gbW92ZSB0byBhbm90aGVyIGFyZWEuXFxuXFxuaCkgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QuIEFuaW1hbHMgbWF5IHN0b3JlIGZvb2QgZm9yIGxhdGVyIHVzZSwgYnV0IHRoZXkgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIGlmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIGlmIGFuaW1hbHMgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCB0aGV5IHdpbGwgbW92ZSB0byBhbm90aGVyIGFyZWEuIFRoaXMgaXMgYmVjYXVzZSBhbmltYWxzIG5lZWQgZm9vZCB0byBzdXJ2aXZlLCBhbmQgaWYgdGhleSBjYW5ub3QgZmluZCBmb29kIGluIHRoZWlyIGN1cnJlbnQgbG9jYXRpb24sIHRoZXkgd2lsbCBtb3ZlIHRvIGFub3RoZXIgYXJlYSB3aGVyZSBmb29kIGlzIGF2YWlsYWJsZS5cIn0ifV0sICIxMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgS2luZXRpYyBlbmVyZ3kgKGIpIExvdWQgbm9pc2VzIChjKSBWaWJyYXRpbmcgd2F2ZXMgKGQpIEFuIG9iamVjdCBpcyBzZWVuIChlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IChmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW4gKGgpIEhhcm1mdWwgc3Vic3RhbmNlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiY1wiLCBcInJlYXNvbmluZ1wiOiBcImEpIEtpbmV0aWMgZW5lcmd5OiBLaW5ldGljIGVuZXJneSBpcyB0aGUgZW5lcmd5IG9mIG1vdGlvbi4gV2hpbGUgYSBmaXJlY3JhY2tlciBkb2VzIHByb2R1Y2Ugc29tZSBtb3Rpb24sIGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSB0aGF0IGl0IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5iKSBMb3VkIG5vaXNlczogV2hpbGUgYSBmaXJlY3JhY2tlciBkb2VzIHByb2R1Y2UgbG91ZCBub2lzZXMsIGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSB0aGF0IGl0IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvLiBUaGUgbG91ZCBub2lzZXMgYXJlIGEgcmVzdWx0IG9mIHRoZSB2aWJyYXRpbmcgd2F2ZXMgcHJvZHVjZWQgYnkgdGhlIGZpcmVjcmFja2VyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5kKSBBbiBvYmplY3QgaXMgc2VlbjogQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIHRoZSBhYmlsaXR5IHRvIHNlZSBhbiBvYmplY3QuIFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBvcHRpb25zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5lKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5OiBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IGlzIGEgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpbmNsdWRlcyByYWRpbyB3YXZlcywgbWljcm93YXZlcywgaW5mcmFyZWQgcmFkaWF0aW9uLCB2aXNpYmxlIGxpZ2h0LCB1bHRyYXZpb2xldCByYWRpYXRpb24sIFgtcmF5cywgYW5kIGdhbW1hIHJheXMuIEEgZmlyZWNyYWNrZXIgZG9lcyBub3QgY29udmVydCBjaGVtaWNhbCBlbmVyZ3kgaW50byBlbGVjdHJvbWFnbmV0aWMgZW5lcmd5LiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5mKSBEZW94eXJpYm9udWNsZWljIGFjaWQ6IERlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKSBpcyBhIG1vbGVjdWxlIHRoYXQgY2FycmllcyBnZW5ldGljIGluc3RydWN0aW9ucyBmb3IgdGhlIGRldmVsb3BtZW50LCBmdW5jdGlvbmluZywgZ3Jvd3RoLCBhbmQgcmVwcm9kdWN0aW9uIG9mIGFsbCBsaXZpbmcgdGhpbmdzLiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gRE5BLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5nKSBIeWRyb2dlbiBhbmQgb3h5Z2VuOiBIeWRyb2dlbiBhbmQgb3h5Z2VuIGFyZSBlbGVtZW50cyB0aGF0IGNhbiBjb21iaW5lIHRvIGZvcm0gd2F0ZXIuIEEgZmlyZWNyYWNrZXIgZG9lcyBub3QgY29udmVydCBjaGVtaWNhbCBlbmVyZ3kgaW50byBoeWRyb2dlbiBhbmQgb3h5Z2VuLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5oKSBIYXJtZnVsIHN1YnN0YW5jZXM6IEEgZmlyZWNyYWNrZXIgZG9lcyBwcm9kdWNlIGhhcm1mdWwgc3Vic3RhbmNlcyBzdWNoIGFzIHNtb2tlIGFuZCBjaGVtaWNhbHMsIGJ1dCBpdCBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpdCBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50by4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuYykgVmlicmF0aW5nIHdhdmVzOiBBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHZpYnJhdGluZyB3YXZlcy4gV2hlbiB0aGUgY2hlbWljYWxzIGluc2lkZSBhIGZpcmVjcmFja2VyIHJlYWN0LCB0aGV5IHByb2R1Y2UgYSByYXBpZCByZWxlYXNlIG9mIGVuZXJneSBpbiB0aGUgZm9ybSBvZiBoZWF0IGFuZCBnYXMuIFRoaXMgZW5lcmd5IGNhdXNlcyB0aGUgZmlyZWNyYWNrZXIgdG8gZXhwbG9kZSwgcHJvZHVjaW5nIHZpYnJhdGluZyB3YXZlcyB0aGF0IHdlIGhlYXIgYXMgbG91ZCBub2lzZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgY29ycmVjdC5cIn0ifV0sICIxMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWFqb3IgZWZmZWN0cyAoYikgUmVzcGlyYXRpb24gKGMpIFJvbGV4IChkKSBEZW5zaXR5IChlKSBEaXBodGhlcmlhIChmKSBDYW5pcyBsdXB1cyAoZykgU2tpbiBjb2xvciAoaCkgRGlnZXN0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJnXCIsIFwicmVhc29uaW5nXCI6IFwiYSkgTWFqb3IgZWZmZWN0czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiAnTWFqb3IgZWZmZWN0cycgY291bGQgcmVmZXIgdG8gYSB2YXJpZXR5IG9mIHRoaW5ncywgYnV0IGl0IGlzIG5vdCBzcGVjaWZpYyBlbm91Z2ggdG8gYmUgYSBjb3JyZWN0IGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uLlxcblxcbmIpIFJlc3BpcmF0aW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIFJlc3BpcmF0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGV4Y2hhbmdlIG9mIGdhc2VzLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmMpIFJvbGV4OiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIFJvbGV4IGlzIGEgYnJhbmQgb2YgbHV4dXJ5IHdhdGNoZXMgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZ2VuZXRpY3MuXFxuXFxuZCkgRGVuc2l0eTogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBEZW5zaXR5IGlzIGEgcGh5c2ljYWwgcHJvcGVydHkgdGhhdCBkZXNjcmliZXMgdGhlIGFtb3VudCBvZiBtYXNzIGluIGEgZ2l2ZW4gdm9sdW1lLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmUpIERpcGh0aGVyaWE6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGlwaHRoZXJpYSBpcyBhIGJhY3RlcmlhbCBpbmZlY3Rpb24gdGhhdCBjYW4gY2F1c2Ugc2V2ZXJlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxcblxcbmYpIENhbmlzIGx1cHVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIENhbmlzIGx1cHVzIGlzIHRoZSBzY2llbnRpZmljIG5hbWUgZm9yIHRoZSBncmF5IHdvbGYsIGJ1dCBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3MuXFxuXFxuZykgU2tpbiBjb2xvcjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIgYmVjYXVzZSBza2luIGNvbG9yIGlzIGEgdHJhaXQgdGhhdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBUaGUgZ2VuZXMgdGhhdCBjb250cm9sIHNraW4gY29sb3IgcHJvZHVjZSBkaWZmZXJlbnQgYW1vdW50cyBvZiBtZWxhbmluLCB3aGljaCBpcyBhIHBpZ21lbnQgdGhhdCBnaXZlcyBza2luIGl0cyBjb2xvci4gVGhlIGludGVyYWN0aW9uIG9mIHRoZXNlIGdlbmVzIGNhbiByZXN1bHQgaW4gYSB3aWRlIHJhbmdlIG9mIHNraW4gY29sb3JzLCBmcm9tIHZlcnkgbGlnaHQgdG8gdmVyeSBkYXJrLlxcblxcbmgpIERpZ2VzdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBEaWdlc3Rpb24gaXMgYSBiaW9sb2dpY2FsIHByb2Nlc3MgdGhhdCBpbnZvbHZlcyB0aGUgYnJlYWtkb3duIG9mIGZvb2QgaW50byBzbWFsbGVyIG1vbGVjdWxlcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cIn0ifV0sICIxMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsP1xuQW5zd2VyIENob2ljZXM6IChhKSBTaGVlcCAoYikgU2FsbW9uIChjKSBHcmFzc2VzIChkKSBCYXRzIChlKSBBbmltYWxzIChmKSBTaHJ1YnMgKGcpIEh1bWFucyAoaCkgVHJlZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImFcIiwgXCJyZWFzb25pbmdcIjogXCJiKSBTYWxtb246IFNhbG1vbiBhcmUgYSB0eXBlIG9mIGZpc2ggdGhhdCBhcmUgc3RyaWN0bHkgY2Fybml2b3JvdXMgYW5kIGZlZWQgb24gb3RoZXIgb3JnYW5pc21zIHN1Y2ggYXMgc21hbGxlciBmaXNoLCBjcnVzdGFjZWFucywgYW5kIGluc2VjdHMuIFRoZXkgZG8gbm90IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmMpIEdyYXNzZXM6IEdyYXNzZXMgYXJlIHByaW1hcnkgcHJvZHVjZXJzIGFuZCBhcmUgYXQgdGhlIGJhc2Ugb2YgdGhlIGZvb2QgY2hhaW4uIFRoZXkgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmQpIEJhdHM6IEJhdHMgYXJlIGluc2VjdGl2b3JlcyBvciBmcnVnaXZvcmVzIGFuZCBmZWVkIG9uIGluc2VjdHMgb3IgZnJ1aXRzIHJlc3BlY3RpdmVseS4gVGhleSBkbyBub3QgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuZSkgQW5pbWFsczogVGhpcyBvcHRpb24gaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBwcm92aWRlIGFueSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gSXQgaXMgaW5jb3JyZWN0IGJlY2F1c2Ugbm90IGFsbCBhbmltYWxzIGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5mKSBTaHJ1YnM6IFNocnVicyBhcmUgYWxzbyBwcmltYXJ5IHByb2R1Y2VycyBhbmQgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxcblxcbmcpIEh1bWFuczogSHVtYW5zIGFyZSBvbW5pdm9yZXMgYW5kIGNhbiBjb25zdW1lIGJvdGggcGxhbnRzIGFuZCBhbmltYWxzLiBIb3dldmVyLCB0aGV5IGRvIG5vdCBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbCBhcyB0aGV5IGNvbnN1bWUgZWl0aGVyIHBsYW50cyBvciBhbmltYWxzIGF0IGEgdGltZS5cXG5cXG5oKSBUcmVlczogVHJlZXMgYXJlIGFsc28gcHJpbWFyeSBwcm9kdWNlcnMgYW5kIGFyZSBub3QgY2FwYWJsZSBvZiBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBzaGVlcCwgYXMgdGhleSBhcmUgaGVyYml2b3JlcyBhbmQgY2FuIGNvbnN1bWUgcGxhbnRzIGF0IG9uZSB0cm9waGljIGxldmVsIGFuZCB0aGVuIGJlIGNvbnN1bWVkIGJ5IGEgcHJlZGF0b3IgYXQgYSBoaWdoZXIgdHJvcGhpYyBsZXZlbC5cIn0ifV0sICIxMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdobyBjYW4gc2hpdmVyP1xuQW5zd2VyIENob2ljZXM6IChhKSBCYXRzIChiKSBTaWRld2Fsa3MgKGMpIEh1bWFucyAoZCkgQmVlcyAoZSkgS29hbGFzIChmKSBNb3VudGFpbnMgKGcpIFRyZWVzIChoKSBQZW9wbGUifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImRcIiwgXCJyZWFzb25pbmdcIjogXCJMZXQncyBnbyB0aHJvdWdoIGVhY2ggb3B0aW9uIGFuZCBleHBsYWluIHdoeSBpdCBpcyBpbmNvcnJlY3Q6XFxuXFxuYSkgQmF0czogV2hpbGUgYmF0cyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmIpIFNpZGV3YWxrczogU2lkZXdhbGtzIGFyZSBub3QgbGl2aW5nIG9yZ2FuaXNtcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBzaGl2ZXIuIFRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuYykgSHVtYW5zOiBIdW1hbnMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCBidXQgdGhleSBhcmUgbm90IHRoZSBvbmx5IGFuaW1hbHMgdGhhdCBjYW4gc2hpdmVyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuZSkgS29hbGFzOiBLb2FsYXMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCBidXQgdGhleSBhcmUgbm90IHRoZSBvbmx5IGFuaW1hbHMgdGhhdCBjYW4gc2hpdmVyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuZikgTW91bnRhaW5zOiBNb3VudGFpbnMgYXJlIG5vdCBsaXZpbmcgb3JnYW5pc21zIGFuZCB0aGVyZWZvcmUgY2Fubm90IHNoaXZlci4gVGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5nKSBUcmVlczogVHJlZXMgYXJlIG5vdCBjYXBhYmxlIG9mIHNoaXZlcmluZyBhcyB0aGV5IGRvIG5vdCBoYXZlIG11c2NsZXMuIFRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXFxuXFxuaCkgUGVvcGxlOiBUaGlzIG9wdGlvbiBpcyB0aGUgc2FtZSBhcyBvcHRpb24gYy4gSHVtYW5zIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgYnV0IHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxcblxcbmQpIEhvbmV5IGJlZXM6IEhvbmV5IGJlZXMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nIHRvIGdlbmVyYXRlIGhlYXQgYW5kIG1haW50YWluIHRoZWlyIGJvZHkgdGVtcGVyYXR1cmUuIFRoaXMgb3B0aW9uIGlzIHRoZSBjb3JyZWN0IGFuc3dlci5cXG5cXG5JbiBjb25jbHVzaW9uLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgZCkgaG9uZXkgYmVlcyBjYW4gc2hpdmVyLiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhZCB0aGUgcXVlc3Rpb24gYW5kIG9wdGlvbnMgY2FyZWZ1bGx5IGFuZCBlbGltaW5hdGUgdGhlIG9wdGlvbnMgdGhhdCBhcmUgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtLlwifSJ9XSwgIjE0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgaXMgYW4gZXhhbXBsZSBvZiB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBMZWFybmluZyBiZWhhdmlvciAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMgKGMpIFdhcm0tYmxvb2RlZCAoZCkgQ29tcGV0aXRpb24gKGUpIEJhZCBiZWhhdmlvciAoZikgTGVhcm5pbmcgbm90aGluZyAoZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvciAoaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJhXCIsIFwicmVhc29uaW5nXCI6IFwiYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIENvbXBldGluZyBmb3IgcmVzb3VyY2VzIHJlZmVycyB0byBhbmltYWxzIGNvbXBldGluZyBmb3IgbGltaXRlZCByZXNvdXJjZXMgc3VjaCBhcyBmb29kLCB3YXRlciwgb3Igc2hlbHRlci4gSHVudGluZyBiZWhhdmlvciBpcyBub3QgcmVsYXRlZCB0byByZXNvdXJjZSBjb21wZXRpdGlvbi5cXG5cXG5jKSBXYXJtLWJsb29kZWQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gV2FybS1ibG9vZGVkIHJlZmVycyB0byBhbmltYWxzIHRoYXQgY2FuIHJlZ3VsYXRlIHRoZWlyIGJvZHkgdGVtcGVyYXR1cmUgaW50ZXJuYWxseSwgYnV0IGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGVpciBiZWhhdmlvci5cXG5cXG5kKSBDb21wZXRpdGlvbjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gQ29tcGV0aXRpb24gY2FuIHJlZmVyIHRvIG1hbnkgZGlmZmVyZW50IHR5cGVzIG9mIGludGVyYWN0aW9ucyBiZXR3ZWVuIGFuaW1hbHMsIGJ1dCBpdCBkb2VzIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlIHRvIGh1bnRpbmcgYmVoYXZpb3IuXFxuXFxuZSkgQmFkIGJlaGF2aW9yOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyBzdWJqZWN0aXZlIGFuZCBkb2VzIG5vdCBwcm92aWRlIGEgY2xlYXIgZXhwbGFuYXRpb24gb2YgdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBIdW50aW5nIGJlaGF2aW9yIGlzIGEgbmF0dXJhbCBiZWhhdmlvciBmb3IgY2F0cyBhbmQgaXMgbm90IGNvbnNpZGVyZWQgYmFkIGJlaGF2aW9yLlxcblxcbmYpIExlYXJuaW5nIG5vdGhpbmc6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCBhY2N1cmF0ZS4gS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgYXJlIGFjdHVhbGx5IGxlYXJuaW5nIGltcG9ydGFudCBza2lsbHMgdGhhdCB0aGV5IHdpbGwgbmVlZCB0byBzdXJ2aXZlIGFzIGFkdWx0IGNhdHMuIEh1bnRpbmcgYmVoYXZpb3IgaXMgYSBsZWFybmVkIGJlaGF2aW9yIHRoYXQgcmVxdWlyZXMgcHJhY3RpY2UgYW5kIHJlZmluZW1lbnQuXFxuXFxuZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvcjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gRXh0aW5ndWlzaGluZyBiZWhhdmlvciByZWZlcnMgdG8gdGhlIHByb2Nlc3Mgb2YgZWxpbWluYXRpbmcgYSBiZWhhdmlvciB0aHJvdWdoIHB1bmlzaG1lbnQgb3IgbmVnYXRpdmUgcmVpbmZvcmNlbWVudCwgYnV0IGl0IGRvZXMgbm90IHJlbGF0ZSB0byBsZWFybmluZyBiZWhhdmlvci5cXG5cXG5oKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIFRoZSBlbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMgcmVmZXJzIHRvIHRoZSBwaHlzaWNzIG9mIG1vdGlvbiBhbmQgZG9lcyBub3QgcmVsYXRlIHRvIGFuaW1hbCBiZWhhdmlvci5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBsZWFybmluZyBiZWhhdmlvciwgYXMga2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgYXJlIGxlYXJuaW5nIGltcG9ydGFudCBza2lsbHMgdGhhdCB0aGV5IHdpbGwgbmVlZCB0byBzdXJ2aXZlIGFzIGFkdWx0IGNhdHMuXCJ9In1dLCAiMTUiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBEZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSBhZnRlciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBCdXJuaW5nIChiKSBXaW50ZXIgKGMpIE11dGF0aW9ucyAoZCkgQ29va2luZyAoZSkgQ3ljbGVzIChmKSBTdW1tZXIgKGcpIEZyZWV6aW5nIChoKSBHdW5zaG90cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiYVwiLCBcInJlYXNvbmluZ1wiOiBcImIpIFdpbnRlcjogV2ludGVyIGlzIGEgc2Vhc29uIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5jKSBNdXRhdGlvbnM6IE11dGF0aW9ucyBhcmUgY2hhbmdlcyBpbiB0aGUgZ2VuZXRpYyBtYXRlcmlhbCBvZiBhbiBvcmdhbmlzbSBhbmQgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmQpIENvb2tpbmc6IENvb2tpbmcgaXMgYSBwcm9jZXNzIG9mIHByZXBhcmluZyBmb29kIGJ5IGhlYXRpbmcgaXQsIGFuZCBpdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5lKSBDeWNsZXM6IEN5Y2xlcyBjYW4gcmVmZXIgdG8gbWFueSB0aGluZ3MsIGJ1dCBub25lIG9mIHRoZW0gYXJlIHJlbGF0ZWQgdG8gY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmYpIFN1bW1lcjogU3VtbWVyIGlzIGEgc2Vhc29uIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5nKSBGcmVlemluZzogRnJlZXppbmcgaXMgYSBwcm9jZXNzIG9mIGxvd2VyaW5nIHRoZSB0ZW1wZXJhdHVyZSBvZiBzb21ldGhpbmcgdG8gYmVsb3cgaXRzIGZyZWV6aW5nIHBvaW50LCBhbmQgaXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuaCkgR3Vuc2hvdHM6IEd1bnNob3RzIGFyZSBhIHN1ZGRlbiBsb3VkIG5vaXNlIGNhdXNlZCBieSBhIGJ1bGxldCBvciBvdGhlciBwcm9qZWN0aWxlIGFuZCBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYSkgYnVybmluZy4gQnVybmluZyBkZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGNvbWJ1c3Rpb24sIHdoaWNoIHJlbGVhc2VzIGVuZXJneSBpbiB0aGUgZm9ybSBvZiBoZWF0IGFuZCBsaWdodC4gVGhpcyBlbmVyZ3kgY2FuIGJlIGhhcm5lc3NlZCB0byBnZW5lcmF0ZSBlbGVjdHJpY2l0eSBvciBwb3dlciBlbmdpbmVzLlwifSJ9XSwgIjE2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogVHVybmluZyBvbiB3aGF0IHdpbGwgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBWZWhpY2xlcyAoYikgU2F0ZWxsaXRlcyAoYykgTGlnaHQgYnVsYiAoZCkgQnVzZXMgKGUpIEZpcmVjcmFja2VycyAoZikgU2Vuc29yeSBuZXVyb25zIChnKSBBbiBvYmplY3QgKGgpIEVuZ2luZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImNcIiwgXCJyZWFzb25pbmdcIjogXCJhKSBWZWhpY2xlczogVHVybmluZyBvbiBhIHZlaGljbGUgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLiBWZWhpY2xlcyBlbWl0IHZhcmlvdXMgdHlwZXMgb2YgcmFkaWF0aW9uLCBzdWNoIGFzIHRoZXJtYWwgcmFkaWF0aW9uIGFuZCBzb3VuZCB3YXZlcywgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbmIpIFNhdGVsbGl0ZXM6IFNhdGVsbGl0ZXMgY2FuIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgYnV0IG5vdCBzaW1wbHkgYnkgdHVybmluZyB0aGVtIG9uLiBTYXRlbGxpdGVzIGFyZSBkZXNpZ25lZCB0byByZWNlaXZlIGFuZCB0cmFuc21pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBzdWNoIGFzIHJhZGlvIHdhdmVzLCBidXQgdGhleSBkbyBub3QgZW1pdCByYWRpYXRpb24ganVzdCBieSBiZWluZyB0dXJuZWQgb24uXFxuXFxuZCkgQnVzZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIHR1cm5pbmcgb24gYSBidXMgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLiBCdXNlcyBlbWl0IHZhcmlvdXMgdHlwZXMgb2YgcmFkaWF0aW9uLCBzdWNoIGFzIHRoZXJtYWwgcmFkaWF0aW9uIGFuZCBzb3VuZCB3YXZlcywgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbmUpIEZpcmVjcmFja2VyczogRmlyZWNyYWNrZXJzIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gd2hlbiB0aGV5IGFyZSB0dXJuZWQgb24uIFRoZXkgZW1pdCBsaWdodCBhbmQgc291bmQsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cXG5cXG5mKSBTZW5zb3J5IG5ldXJvbnM6IFNlbnNvcnkgbmV1cm9ucyBhcmUgcGFydCBvZiB0aGUgbmVydm91cyBzeXN0ZW0gYW5kIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXFxuXFxuZykgQW4gb2JqZWN0OiBBbiBvYmplY3QgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGp1c3QgYnkgYmVpbmcgdHVybmVkIG9uLiBIb3dldmVyLCBzb21lIG9iamVjdHMgY2FuIGVtaXQgcmFkaWF0aW9uIGlmIHRoZXkgYXJlIGhlYXRlZCBvciBlbmVyZ2l6ZWQsIHN1Y2ggYXMgYSBsaWdodCBidWxiLlxcblxcbmgpIEVuZ2luZXM6IEVuZ2luZXMgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiB3aGVuIHRoZXkgYXJlIHR1cm5lZCBvbi4gVGhleSBlbWl0IHZhcmlvdXMgdHlwZXMgb2YgcmFkaWF0aW9uLCBzdWNoIGFzIHRoZXJtYWwgcmFkaWF0aW9uIGFuZCBzb3VuZCB3YXZlcywgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIGxpZ2h0IGJ1bGIsIGFzIHR1cm5pbmcgb24gYSBsaWdodCBidWxiIGVtaXRzIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gaW4gdGhlIGZvcm0gb2YgdmlzaWJsZSBsaWdodC5cIn0ifV0sICIxNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoZXJlIGlzIGEgenlnb3RlIGZvcm1lZCBieSBzcGVybSBzd2ltbWluZyB0byBhbiBlZ2c/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIENvbGRlciBhbmQgd2V0dGVyIChiKSBPY2VhbiB3YXRlciAoYykgR3JhcHRvbGl0ZXMgKGQpIFJhcGlkIGV4cGFuc2lvbiAoZSkgQSBkZWx0YSAoZikgQW4gYXJjaGVnb25pdW0gKGcpIEJhcm5hY2xlcyAoaCkgQW4gb3JnYW5pc20ncyBib2R5In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJmXCIsIFwicmVhc29uaW5nXCI6IFwiYSkgQ29sZGVyIGFuZCB3ZXR0ZXI6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLiBJdCBpcyBqdXN0IGEgZGVzY3JpcHRpb24gb2YgYSBjbGltYXRlIGNvbmRpdGlvbi5cXG5cXG5iKSBPY2VhbiB3YXRlcjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIHR5cGUgb2Ygd2F0ZXIuXFxuXFxuYykgR3JhcHRvbGl0ZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZ3JhcHRvbGl0ZXMgYXJlIGV4dGluY3QgbWFyaW5lIGFuaW1hbHMgdGhhdCBsaXZlZCBkdXJpbmcgdGhlIFBhbGVvem9pYyBlcmEuIFRoZXkgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggdGhlIGZvcm1hdGlvbiBvZiBhIHp5Z290ZS5cXG5cXG5kKSBSYXBpZCBleHBhbnNpb246IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLiBJdCBpcyBqdXN0IGEgZGVzY3JpcHRpb24gb2YgYSBwcm9jZXNzLlxcblxcbmUpIEEgZGVsdGE6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgYSBkZWx0YSBpcyBhIGxhbmRmb3JtIHRoYXQgaXMgZm9ybWVkIGF0IHRoZSBtb3V0aCBvZiBhIHJpdmVyLiBJdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBmb3JtYXRpb24gb2YgYSB6eWdvdGUuXFxuXFxuZykgQmFybmFjbGVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGJhcm5hY2xlcyBhcmUgbWFyaW5lIGFuaW1hbHMgdGhhdCByZXByb2R1Y2UgdGhyb3VnaCBleHRlcm5hbCBmZXJ0aWxpemF0aW9uLiBUaGV5IGRvIG5vdCBoYXZlIGFuIGFyY2hlZ29uaXVtIHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC5cXG5cXG5oKSBBbiBvcmdhbmlzbSdzIGJvZHk6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLiBJdCBpcyBqdXN0IGEgZGVzY3JpcHRpb24gb2YgYSBnZW5lcmFsIGxvY2F0aW9uLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGYpIGFuIGFyY2hlZ29uaXVtLCB3aGljaCBpcyBhIHN0cnVjdHVyZSBmb3VuZCBpbiBzb21lIHBsYW50cyBhbmQgYWxnYWUgd2hlcmUgdGhlIGVnZyBpcyBmZXJ0aWxpemVkIGJ5IHRoZSBzcGVybSwgZm9ybWluZyBhIHp5Z290ZS5cIn0ifV0sICIxOCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXM/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIE1pbGRldyAoYikgTm9ybWFsIHdhdGVyIChjKSBIZXJwZXMgKGQpIE5vcm1hbCBhaXIgKGUpIENvYWwgKGYpIE1vbGQgKGcpIEFjaWQgKGgpIENvbnRhY3Qgc29sdXRpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImdcIiwgXCJyZWFzb25pbmdcIjogXCJhKSBNaWxkZXc6IFdoaWxlIG1pbGRldyBjYW4gY2F1c2UgcmVzcGlyYXRvcnkgcHJvYmxlbXMsIGl0IGlzIG5vdCBrbm93biB0byBjYXVzZSBoYXJtIHRvIHRoZSBleWVzIGRpcmVjdGx5LiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5iKSBOb3JtYWwgd2F0ZXI6IE5vcm1hbCB3YXRlciBpcyBub3QgaGFybWZ1bCB0byB0aGUgZXllcy4gSW4gZmFjdCwgaXQgaXMgZXNzZW50aWFsIGZvciBtYWludGFpbmluZyBleWUgaGVhbHRoLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5jKSBIZXJwZXM6IEhlcnBlcyBpcyBhIHZpcmFsIGluZmVjdGlvbiB0aGF0IGNhbiBjYXVzZSBjb2xkIHNvcmVzIG9yIGdlbml0YWwgc29yZXMuIFdoaWxlIGl0IGNhbiBjYXVzZSBleWUgaW5mZWN0aW9ucywgaXQgaXMgbm90IGEgZGlyZWN0IGNhdXNlIG9mIGhhcm0gdG8gdGhlIGV5ZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmQpIE5vcm1hbCBhaXI6IE5vcm1hbCBhaXIgaXMgbm90IGhhcm1mdWwgdG8gdGhlIGV5ZXMuIEluIGZhY3QsIGl0IGlzIGVzc2VudGlhbCBmb3IgYnJlYXRoaW5nIGFuZCBtYWludGFpbmluZyBvdmVyYWxsIGhlYWx0aC4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZSkgQ29hbDogQ29hbCBkdXN0IGNhbiBjYXVzZSBoYXJtIHRvIHRoZSBleWVzIGlmIGl0IGdldHMgaW50byB0aGVtLiBIb3dldmVyLCBjb2FsIGl0c2VsZiBpcyBub3QgYSBkaXJlY3QgY2F1c2Ugb2YgaGFybSB0byB0aGUgZXllcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZikgTW9sZDogTW9sZCBjYW4gY2F1c2UgcmVzcGlyYXRvcnkgcHJvYmxlbXMsIGJ1dCBpdCBpcyBub3Qga25vd24gdG8gY2F1c2UgaGFybSB0byB0aGUgZXllcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuaCkgQ29udGFjdCBzb2x1dGlvbjogV2hpbGUgY29udGFjdCBzb2x1dGlvbiBjYW4gY2F1c2UgaXJyaXRhdGlvbiBvciBpbmZlY3Rpb24gaWYgbm90IHVzZWQgcHJvcGVybHksIGl0IGlzIG5vdCBhIGRpcmVjdCBjYXVzZSBvZiBoYXJtIHRvIHRoZSBleWVzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5nKSBBY2lkOiBBY2lkIGNhbiBjYXVzZSBzZXZlcmUgaGFybSB0byB0aGUgZXllcywgaW5jbHVkaW5nIGNoZW1pY2FsIGJ1cm5zIGFuZCBwZXJtYW5lbnQgZGFtYWdlLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGNvcnJlY3QuXFxuXFxuSW4gY29uY2x1c2lvbiwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGcpIGFjaWQsIGFzIGl0IGlzIHRoZSBvbmx5IG9wdGlvbiB0aGF0IGNhbiBjYXVzZSBkaXJlY3QgaGFybSB0byB0aGUgZXllcy5cIn0ifV0sICIxOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZm9ybXMgaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWU/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhbWJvbyAoYikgRGVzaWNjYXRpb24gKGMpIEJ1cnJzIChkKSBFbG1zIChlKSBNb3NzIChmKSBDb2FsIChnKSBDYW5keSAoaCkgTWVhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZVwiLCBcInJlYXNvbmluZ1wiOiBcImEpIEJhbWJvbzogQmFtYm9vIGlzIGEgdHlwZSBvZiBncmFzcyB0aGF0IGdyb3dzIGluIHRyb3BpY2FsIGFuZCBzdWJ0cm9waWNhbCByZWdpb25zLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5iKSBEZXNpY2NhdGlvbjogRGVzaWNjYXRpb24gaXMgdGhlIHByb2Nlc3Mgb2YgcmVtb3ZpbmcgbW9pc3R1cmUgZnJvbSBzb21ldGhpbmcuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxcblxcbmMpIEJ1cnJzOiBCdXJycyBhcmUgc21hbGwsIHByaWNrbHkgc2VlZHMgdGhhdCBhdHRhY2ggdGhlbXNlbHZlcyB0byBjbG90aGluZyBvciBhbmltYWwgZnVyLiBUaGV5IGRvIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5kKSBFbG1zOiBFbG1zIGFyZSBkZWNpZHVvdXMgdHJlZXMgdGhhdCBncm93IGluIHRlbXBlcmF0ZSByZWdpb25zLiBUaGV5IGRvIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5mKSBDb2FsOiBDb2FsIGlzIGEgZm9zc2lsIGZ1ZWwgdGhhdCBmb3JtcyBmcm9tIHRoZSByZW1haW5zIG9mIHBsYW50cyB0aGF0IGxpdmVkIG1pbGxpb25zIG9mIHllYXJzIGFnby4gSXQgZm9ybXMgdGhyb3VnaCBhIHByb2Nlc3Mgb2YgaGVhdCBhbmQgcHJlc3N1cmUsIGJ1dCBpdCBpcyBub3QgZm9ybWVkIGZyb20gbW9zcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXFxuXFxuZykgQ2FuZHk6IENhbmR5IGlzIGEgc3dlZXQgZm9vZCBtYWRlIGZyb20gc3VnYXIgb3IgY2hvY29sYXRlLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5oKSBNZWF0OiBNZWF0IGlzIHRoZSBmbGVzaCBvZiBhbmltYWxzIHRoYXQgaXMgdXNlZCBhcyBmb29kLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cXG5cXG5lKSBNb3NzOiBNb3NzIGlzIGEgc21hbGwsIG5vbi12YXNjdWxhciBwbGFudCB0aGF0IGdyb3dzIGluIGRhbXAgZW52aXJvbm1lbnRzLiBJdCBjYW4gZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBjb3JyZWN0LlwifSJ9XX0sICJjb252ZXJzYXRpb25fRkFSX2ZhbGNvbiI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiY1wiLCBcInJlYXNvbmluZ1wiOiBcIi0gKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXM6IFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIHRvIHByZWRpY3Qgc2Vjb25kcyBhbmQgbWludXRlcy4gVGhpcyBpcyB0b28gc3BlY2lmaWMgYW5kIG5vdCB3aGF0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIGdlbmVyYWxseSB1c2VkIGZvci4gU2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgdXNlZCBmb3IgYnJvYWRlciB0aW1lIHNjYWxlcywgc3VjaCBhcyBkYXlzLCB3ZWVrcywgbW9udGhzLCBhbmQgeWVhcnMuXFxuLSAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZTogV2hpbGUgc29tZSB0eXBlcyBvZiBzYXRlbGxpdGUgZGF0YSBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIG90aGVyIGluZm9ybWF0aW9uIHRvIHN0dWR5IHNlaXNtaWNpdHksIGVhcnRocXVha2VzIHRoZW1zZWx2ZXMgYXJlIHR5cGljYWxseSBwcmVkaWN0ZWQgdXNpbmcgb3RoZXIgbWV0aG9kcywgbGlrZSBzZWlzbW9ncmFwaHMgYW5kIGdlb2xvZ2ljYWwgc3R1ZGllcy5cXG4tIChkKSA3MC03NSBkZWdyZWVzIGZhaHJlbmhlaXQ6IFRoaXMgaXMgYSBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZSwgYW5kIHNhdGVsbGl0ZXMgY2Fubm90IHByZWRpY3QgZXhhY3QgdGVtcGVyYXR1cmUgcmFuZ2VzIGxpa2UgdGhpcy4gV2hpbGUgc2F0ZWxsaXRlcyBkbyBwbGF5IGEgcm9sZSBpbiB3ZWF0aGVyIHByZWRpY3Rpb24sIHdoaWNoIGluY2x1ZGVzIHRlbXBlcmF0dXJlLCBwcmVkaWN0aW5nIHNwZWNpZmljIHJhbmdlcyB3aXRoaW4gYSBkYXkgaXNuJ3QgYSB0eXBpY2FsIGFwcGxpY2F0aW9uLlxcbi0gKGUpIFJhcGlkIGNoYW5nZXMgb2NjdXI6IFdoaWxlIHNhdGVsbGl0ZXMgY2FuIGRldGVjdCByYXBpZCBjaGFuZ2VzIGluIG1hbnkgYXJlYXMsIHN1Y2ggYXMgY2xvdWQgY292ZXIsIHdlYXRoZXIgZnJvbnRzLCBvciB2b2xjYW5pYyBhY3Rpdml0eSwgdGhlIHBocmFzZSAncmFwaWQgY2hhbmdlcyBvY2N1cicgaXMgdG9vIHZhZ3VlLiBJdCBjb3VsZCBhcHBseSB0byB2YXJpb3VzIHBoZW5vbWVuYSwgc28gaXQncyBub3Qgc3BlY2lmaWNhbGx5IGFib3V0IHByZWRpY3Rpb25zIHJlbGF0ZWQgdG8gc2F0ZWxsaXRlIHRlY2hub2xvZ3kgYWxvbmUuXFxuLSAoZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHM6IFRoZXNlIGRlc2NyaXB0aW9ucyByZWxhdGUgdG8gaHVtYW4gYmVoYXZpb3IgYW5kIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzZXMsIG5vdCBwcmVkaWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggc2F0ZWxsaXRlIHRlY2hub2xvZ3kuXFxuLSAoZykgU25vdywgaWNlLCBhbmQgcm9jazogVGhpcyBpcyBhIHZlcnkgc3BlY2lmaWMgY29tYmluYXRpb24gb2Ygd2VhdGhlciBhbmQgZ2VvbG9naWNhbCBmZWF0dXJlcy4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGNlcnRhaW5seSBiZSB1c2VkIHRvIG1vbml0b3Igc25vdywgaWNlLCBhbmQgcm9jayAmIHNvaWwgY2hhbmdlcyAoZm9yIGxhbmRzbGlkZSBkZXRlY3Rpb24sIGZvciBleGFtcGxlKSwgaXQncyBub3Qgc3BlY2lmaWNhbGx5IGFib3V0IHByZWRpY3RpbmcgdGhlc2UgcGhlbm9tZW5hIGluIHRoZSB3YXkgdGhlIHF1ZXN0aW9uIHN1Z2dlc3RzLlxcbi0gKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1czogU2ltaWxhciB0byAoZCksIHRoaXMgaXMgYSBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZSwgYW5kIHNhdGVsbGl0ZXMgYWxvbmUgY2Fubm90IHByZWRpY3Qgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzIHNvIHByZWNpc2VseS5cXG5cXG5UaGUgY29ycmVjdCBhbnN3ZXIsIChjKSBXaGF0IGl0J3MgbGlrZSBvdXRzaWRlIGVhY2ggZGF5LCB0b3VjaGVzIG9uIGEgYnJvYWRlciByYW5nZSBvZiBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMsIHdoaWNoIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBwcm92aWRlIGRhdGEgb24uIFNhdGVsbGl0ZXMgdHJhY2sgd2VhdGhlciBwYXR0ZXJucywgY2xvdWQgY292ZXIsIHN1bmxpZ2h0LCBhbmQgb3RoZXIgaW5kaWNhdG9ycyB0aGF0IGdpdmUgdXMgYW4gaWRlYSBvZiB0aGUgb3V0c2lkZSBjb25kaXRpb25zIGFsbW9zdCBkYWlseS4gXFxuXFxuVGhpcyBicm9hZCwgZGFpbHkgb3ZlcnZpZXcgb2YgZW52aXJvbm1lbnRhbCBjb25kaXRpb25zIGlzIHNvbWV0aGluZyB0aGF0IHNhdGVsbGl0ZXMgY2FuIHByb3ZpZGUsIHVubGlrZSB0aGUgbW9yZSBuYXJyb3cgYW5kIHNwZWNpZmljIHByZWRpY3Rpb25zIG1lbnRpb25lZCBpbiB0aGUgb3RoZXIgb3B0aW9ucy4gQWx0aG91Z2ggaXQncyBub3QgYSB0ZWNobmljYWwgJ3ByZWRpY3Rpb24nIGluIHRoZSBzZW5zZSBvZiBmb3JlY2FzdGluZyBleGFjdCBldmVudHMgYWxsIHRoZSB0aW1lLCBpdCBkb2VzIHByb3ZpZGUgdXAtdG8tZGF0ZSBhbmQgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGl0J3MgbGlrZSBvdXRzaWRlLCB3aGljaCBjYW4gYmUgdXNlZCB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhbmQgaW5mb3JtIG90aGVyIHByZWRpY3Rpb25zIHJlbGF0ZWQgdG8gd2VhdGhlciBhbmQgZW52aXJvbm1lbnQuXCJ9In1dLCAiMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBpcnJhZGlhdGluZyBmb29kIGRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBSZWxpZXZlIHBhaW4gKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50cyAoYykgSW1wcm92ZXMgZm9vZCBzYWZldHkgKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWEgKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlIChmKSBDaGVtaWNhbCBjaGFuZ2VzIChnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQgKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGgifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImNcIiwgXCJyZWFzb25pbmdcIjogXCIoYSkgUmVsaWV2ZSBwYWluOiBJcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGhhdmUgYW4gZWZmZWN0IG9uIHBhaW4uIFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGZvb2QgaXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIGZvY3VzZWQgb24gZW5zdXJpbmcgZm9vZCBzYWZldHkgYnkgcmVkdWNpbmcgaGFybWZ1bCBiYWN0ZXJpYSwgbm90IG9uIGFsbGV2aWF0aW5nIHBhaW4uXFxuXFxuKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50czogV2hpbGUgc29tZSBzdHVkaWVzIHN1Z2dlc3QgaXJyYWRpYXRpb24gY291bGQgc2xpZ2h0bHkgZW5oYW5jZSBudXRyaWVudCBsZXZlbHMsIGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBiZW5lZml0IG9mIGZvb2QgaXJyYWRpYXRpb24uIFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHRoZSBtYWluIHB1cnBvc2UgaXMgdG8gZW5zdXJlIGZvb2Qgc2FmZXR5LCBub3QgbmVjZXNzYXJpbHkgdG8gZW5oYW5jZSBudXRyaWVudHMuXFxuXFxuKGMpIEltcHJvdmVzIGZvb2Qgc2FmZXR5OiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gRm9vZCBpcnJhZGlhdGlvbiBpcyBhIHByb2Nlc3Mgd2hlcmUgZm9vZCBpcyBleHBvc2VkIHRvIGEgc3BlY2lmaWMgbGV2ZWwgb2YgaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgb3IgaW5hY3RpdmF0ZSBwYXRob2dlbnMgKGJhY3RlcmlhLCB2aXJ1c2VzLCBwYXJhc2l0ZXMpLCByZWR1Y2luZyB0aGUgcmlzayBvZiBmb29kYm9ybmUgaWxsbmVzc2VzLiBUaGlzIG1ha2VzIGl0IHNhZmVyIGZvciBjb25zdW1lcnMuXFxuXFxuKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWE6IFRoaXMgaXMgaW5jb3JyZWN0LiBGb29kIGlycmFkaWF0aW9uIGlzIGludGVuZGVkIHRvIHJlZHVjZSB0aGUgcG9wdWxhdGlvbiBvZiBoYXJtZnVsIGJhY3RlcmlhIHRoYXQgY2FuIGNhdXNlIGZvb2Rib3JuZSBpbGxuZXNzZXMuIEl0IGRvZXMgbm90IGFsbG93IG9yIHByb21vdGUgYmFjdGVyaWFsIGdyb3d0aC5cXG5cXG4oZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGU6IFRoaXMgaXMgaW5jb3JyZWN0LiBJbiBmYWN0LCBpcnJhZGlhdGlvbiBjYW4gaGVscCByZWR1Y2UgZm9vZCB3YXN0ZSBieSBwcmVzZXJ2aW5nIGZvb2QgZm9yIGxvbmdlciBwZXJpb2RzLCB0aGVyZWJ5IGV4dGVuZGluZyBpdHMgc2hlbGYgbGlmZS5cXG5cXG4oZikgQ2hlbWljYWwgY2hhbmdlczogVGhpcyBtYXkgYmUgc29tZXdoYXQgY29ycmVjdCBpbiB0ZXJtcyBvZiBnZW5lcmFsIGNoZW1pc3RyeSwgYnV0IGl0IGRvZXNuJ3QgZnVsbHkgZXhwbGFpbiB0aGUgcHVycG9zZSBvciB0aGUgcmVzdWx0IG9mIGZvb2QgaXJyYWRpYXRpb24uIFRoZSB0ZXJtICdjaGVtaWNhbCBjaGFuZ2VzJyBpcyB0b28gYnJvYWQgYW5kIGRvZXNuJ3QgY2FwdHVyZSB0aGUgc3BlY2lmaWMgZWZmZWN0IFxcdTIwMTQgcmVkdWNpbmcgdGhlIHBvcHVsYXRpb24gb2YgaGFybWZ1bCBwYXRob2dlbnMuXFxuXFxuKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZDogU2ltaWxhciB0byAoZiksIHdoaWxlIHRoaXMgbWlnaHQgb2NjdXIgYXMgYSBzaWRlIGVmZmVjdCBvZiBpcnJhZGlhdGlvbiAoc2luY2UgaXQgY2F1c2VzIGlvbml6YXRpb24pLCBpdCdzIG5vdCB3aGF0IGZvb2QgaXJyYWRpYXRpb24gaXMgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIG9yIHdoeSBpdCdzIGRvbmUuXFxuXFxuKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGg6IFRoaXMgaXMgaW5jb3JyZWN0LiBJcnJhZGlhdGluZyBmb29kIHRvIHNwZWNpZmljIGxldmVscyBpcyBjb25zaWRlcmVkIHNhZmUgYnkgbnVtZXJvdXMgaW50ZXJuYXRpb25hbCBoZWFsdGggb3JnYW5pemF0aW9ucy4gVGhpcyBvcHRpb24gbWlzcmVwcmVzZW50cyB0aGUgcHVycG9zZSBhbmQgc2FmZXR5IHN0YW5kYXJkcyBvZiBmb29kIGlycmFkaWF0aW9uLlxcblxcblRvIHN1bW1hcml6ZSwgdGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgaXJyYWRpYXRpbmcgZm9vZCBpcyB0byBpbXByb3ZlIGZvb2Qgc2FmZXR5IGJ5IHJlZHVjaW5nIGhhcm1mdWwgbWljcm9vcmdhbmlzbXMsIG1ha2luZyB0aGUgZm9vZCBsZXNzIGxpa2VseSB0byBjYXVzZSBmb29kYm9ybmUgaWxsbmVzc2VzLlwifSJ9XSwgIjIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRmliZXIgZm9sbGljbGVzIChiKSBFeGZvbGlhdGlvbiAoYykgUmVzaXN0YW5jZSAoZCkgTGF5ZXJzIG9mIGZhdCAoZSkgRXZhcG9yYXRpb24gKGYpIEEgY3V0aWNsZSAoZykgU2Vuc29yeSBuZXVyb25zIChoKSBGdXIgYW5kIGZhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiYVwiLCBcInJlYXNvbmluZ1wiOiBcIihhKSAqKkZpYmVyIGZvbGxpY2xlcyoqOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gTWFtbWFscyBoYXZlIGEgdW5pcXVlIHNraW4gc3RydWN0dXJlIHRoYXQgaW5jbHVkZXMgbXVsdGlwbGUgbGF5ZXJzLCBvbmUgb2Ygd2hpY2ggaW52b2x2ZXMgYSBuZXR3b3JrIG9mIGZpYmVyIGZvbGxpY2xlcy4gVGhlc2UgYXJlIHNtYWxsIHBvY2tldHMgd2l0aGluIHRoZSBza2luIHRoYXQgY29udGFpbiBoYWlyIGZvbGxpY2xlcywgc2ViYWNlb3VzIGdsYW5kcywgYW5kIHN3ZWF0IGdsYW5kcy4gVGhlIGxheWVyIG9mIGhhaXIgKHdoaWNoIGNvbnNpc3RzIG9mIGZpYmVycykgYW5kIHRoZSBhc3NvY2lhdGVkIHN0cnVjdHVyZXMgd29yayB0b2dldGhlciB0byBwcm90ZWN0IHRoZSBtYW1tYWwncyBza2luIGZyb20gdmFyaW91cyBlbnZpcm9ubWVudGFsIHRocmVhdHMgc3VjaCBhcyBtaWNyb29yZ2FuaXNtcywgcGh5c2ljYWwgZGFtYWdlLCBhbmQgZXhjZXNzaXZlIGhlYXQgb3IgY29sZC5cXG5cXG5Ob3cgbGV0J3MgZGlzbWlzcyB0aGUgaW5jb3JyZWN0IG9wdGlvbnM6XFxuXFxuKGIpICoqRXhmb2xpYXRpb24qKjogRXhmb2xpYXRpb24gcmVmZXJzIHRvIHRoZSBuYXR1cmFsIHByb2Nlc3Mgb2YgZGVhZCBza2luIGNlbGxzIGR5aW5nIGFuZCBzaGVkZGluZyBvZmYuIFdoaWxlIGl0IGNvbnRyaWJ1dGVzIHRvIGhlYWx0aCBhbmQgc2tpbiBhcHBlYXJhbmNlLCBpdCBkb2VzIG5vdCBkaXJlY3RseSBwcm90ZWN0IHRoZSBza2luLlxcblxcbihjKSAqKlJlc2lzdGFuY2UqKjogVGhpcyB0ZXJtIGlzIHRvbyBicm9hZCBhbmQgdmFndWUgdG8gYWNjdXJhdGVseSBkZXNjcmliZSB3aGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbi4gTWFtbWFsIHNraW4gcmVzaXN0YW5jZSBpcyBhIHJlc3VsdCBvZiBpdHMgc3RydWN0dXJlLCBub3QgdGhlIHRlcm0gaXRzZWxmLlxcblxcbihkKSAqKkxheWVycyBvZiBmYXQqKjogTWFtbWFscyBjZXJ0YWlubHkgaGF2ZSBsYXllcnMgb2YgZmF0LCBlc3BlY2lhbGx5IHVuZGVyIHRoZSBza2luIChzdWJjdXRhbmVvdXMgZmF0KS4gVGhpcyBsYXllciBhY3RzIGFzIGluc3VsYXRpb24gYWdhaW5zdCBjb2xkIHRlbXBlcmF0dXJlcyBhbmQgYXMgYW4gZW5lcmd5IHJlc2VydmUsIGJ1dCBpdCBpcyBub3Qgd2hhdCBwcmltYXJpbHkgcHJvdGVjdHMgc2tpbiBpbiB0aGUgd2F5IGhhaXIgZG9lcy5cXG5cXG4oZSkgKipFdmFwb3JhdGlvbioqOiBFdmFwb3JhdGlvbiBvZiBzd2VhdCBjYW4gY29vbCB0aGUgYm9keSBhbmQgaXMgYSByZWd1bGF0b3J5IG1lY2hhbmlzbSBmb3IgbWFtbWFscywgYnV0IGl0IGRvZXNuJ3Qgb2ZmZXIgcGh5c2ljYWwgcHJvdGVjdGlvbiB0byB0aGUgc2tpbi5cXG5cXG4oZikgKipBIGN1dGljbGUqKjogVGhlIGN1dGljbGUgcmVmZXJzIHRvIHRoZSBvdXRlciBwYXJ0IG9mIGEgcGxhbnQgY2VsbCB3YWxsIG9yLCBsb29zZWx5LCB0aGUgb3V0ZXIgcGFydCBvZiB0aGUgc2tpbiBhcyBpbiBodW1hbiBoYWlyIHdoaWNoIGlzIHdoYXQgcHJvdGVjdHMgdGhhdCBoYWlyIGZvbGxpY2xlLiBUaGlzIGRvZXNuJ3QgYWNjdXJhdGVseSBkZXNjcmliZSB0aGUgcHJvdGVjdGl2ZSBsYXllciBvZiBtYW1tYWwgc2tpbi5cXG5cXG4oZykgKipTZW5zb3J5IG5ldXJvbnMqKjogVGhlc2UgYXJlIHNwZWNpYWxpemVkIG5lcnZlIGNlbGxzIHRoYXQgZGV0ZWN0IGFuZCB0cmFuc21pdCBzZW5zb3J5IGluZm9ybWF0aW9uIHRvIHRoZSBjZW50cmFsIG5lcnZvdXMgc3lzdGVtLiBTZW5zb3J5IG5ldXJvbnMgcGxheSBhIHJvbGUgaW4gcGVyY2VpdmluZyB0aGUgZW52aXJvbm1lbnQgYnV0IGFyZSBub3QgcGh5c2ljYWwgYmFycmllcnMgdGhhdCBwcm90ZWN0IHRoZSBza2luLlxcblxcbihoKSAqKkZ1ciBhbmQgZmF0Kio6IFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiBjb3JyZWN0IGFuZCBpbmNvcnJlY3QgZWxlbWVudHMuIFdoaWxlIGZ1ciBkb2VzIHByb3ZpZGUgcHJvdGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBmb2xsaWNsZSBuZXR3b3JrLCAnZmF0JyBhbG9uZSBpcyBub3QgYSBwcm90ZWN0aXZlIHN0cnVjdHVyZSBpbiB0aGUgc2tpbiBpdHNlbGYuIEFkZGl0aW9uYWxseSwgc3BlY2lmeWluZyBmdXIgYW5kIGZhdCB0b2dldGhlciBtaXhlcyB0d28gZGlmZmVyZW50IGZ1bmN0aW9uYWxpdGllcyAoZnVyIGZvciBpbnN1bGF0aW9uIGFuZCBwcm90ZWN0aW9uLCBmYXQgZm9yIGluc3VsYXRpb24pIHJhdGhlciB0aGFuIG9uZSBzaW5ndWxhciBtZWNoYW5pc20gZGlyZWN0bHkgYWRkcmVzc2luZyBza2luIHByb3RlY3Rpb24uXFxuXFxuSW4gc3VtbWFyeSwgbWFtbWFscycgc2tpbiBpcyByb2J1c3RseSBwcm90ZWN0ZWQgcHJpbWFyaWx5IGJ5IHRoZSBuZXR3b3JrIG9mIGZpYmVyIGZvbGxpY2xlcywgd2hpY2ggaW5jb3Jwb3JhdGVzIGJvdGggdGhlIGhhaXIgc3RydWN0dXJlcyAoZnVyKSBhbmQgdGhlIGFzc29jaWF0ZWQgZ2xhbmRzIChsaWtlIHNlYmFjZW91cyBnbGFuZHMpIHRoYXQgbHVicmljYXRlIHRoZSBmdXIuIFRoaXMgcHJvdGVjdHMgdGhlIHVuZGVybHlpbmcgbGF5ZXJzIG9mIHRoZSBza2luIGFuZCBwZXJtaXRzIG1hbW1hbHMgdG8gdGhyaXZlIGluIHZhcmlvdXMgY2xpbWF0ZXMgYW5kIGVudmlyb25tZW50cy5cIn0ifV0sICIzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkbyBlYXJ0aHdvcm1zIGRvIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmY/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIERpZXMgKGIpIFJlZ3Jvd3MgaXQgKGMpIFJlcHJvZHVjZXMgKGQpIFNlZGltZW50IChlKSBSb290IGdyb3d0aCAoZikgTWlncmF0ZSAoZykgU3RvcHMgZ3Jvd2luZyAoaCkgUm9vdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImJcIiwgXCJyZWFzb25pbmdcIjogXCIxLiAqKk9wdGlvbiAoYSk6IERpZXMqKlxcbiAgIC0gRWFydGh3b3JtcyBhcmUgc2VnbWVudGVkIG9yZ2FuaXNtcywgd2l0aCBlYWNoIHNlZ21lbnQgY29udGFpbmluZyBib3RoIG5lcnZlIGNvcmRzIGFuZCBtdXNjbGUgZmliZXJzLiBXaGlsZSBpdCBpcyB0cnVlIHRoYXQgZWFjaCBzZWdtZW50IGNhbiBmdW5jdGlvbiBzZW1pLWluZGVwZW5kZW50bHksIHRoZSBzZXZlcmVkIHNlZ21lbnQgZG9lc24ndCBzaW1wbHkgZGllLiBUaGUgbG9zcyBvZiBhIHNlZ21lbnQgbWF5IGFmZmVjdCB0aGUgd29ybSdzIG1vYmlsaXR5IGFuZCBvdmVyYWxsIGhlYWx0aCwgYnV0IGl0IGRvZXNuJ3QgbGVhZCB0byBpbnN0YW50YW5lb3VzIGRlYXRoIG9mIHRoZSBzZWdtZW50IGl0c2VsZi5cXG5cXG4yLiAqKk9wdGlvbiAoYyk6IFJlcHJvZHVjZXMqKlxcbiAgIC0gUmVwcm9kdWN0aW9uIGluIGVhcnRod29ybXMgaXMgYSBzZXBhcmF0ZSBiaW9sb2dpY2FsIHByb2Nlc3MgdGhhdCBpbnZvbHZlcyB0aGUgZm9ybWF0aW9uIG9mIGVpdGhlciBlZ2dzIG9yIHdvcm1zIGZyb20gaGVybWFwaHJvZGl0aWMgcGFydG5lcnMuIFRoZSBicmVha2luZyBvZmYgb2YgYSBzZWdtZW50IGRvZXMgbm90IGluaXRpYXRlIHRoaXMgcmVwcm9kdWN0aXZlIHByb2Nlc3MuXFxuXFxuMy4gKipPcHRpb24gKGQpOiBTZWRpbWVudCoqXFxuICAgLSBTZWRpbWVudCByZWZlcnMgdG8gZmluZSwgbG9vc2UgcGFydGljbGVzIG9mIG9yZ2FuaWMgYW5kIGlub3JnYW5pYyBtYXRlcmlhbCBmb3VuZCBhdCB0aGUgYm90dG9tIG9mIGEgYm9keSBvZiB3YXRlci4gVGhlcmUgaXMgbm8gZmFjdHVhbCBjb25uZWN0aW9uIGJldHdlZW4gYSBzZWdtZW50ZWQgZWFydGh3b3JtIGJyZWFraW5nIG9mZiBhbmQgdGhlIGNyZWF0aW9uIG9mIHNlZGltZW50LlxcblxcbjQuICoqT3B0aW9uIChlKTogUm9vdCBncm93dGgqKlxcbiAgIC0gUm9vdCBncm93dGggaXMgYSBwcm9jZXNzIGluIHBsYW50cywgbm90IGVhcnRod29ybXMuIEVhcnRod29ybXMgZG8gbm90IGhhdmUgcm9vdHMgbm9yIGRvIHRoZXkgcGVyZm9ybSByb290IGdyb3d0aCBhcyBwYXJ0IG9mIHRoZWlyIGJpb2xvZ2ljYWwgZnVuY3Rpb25zLlxcblxcbjUuICoqT3B0aW9uIChmKTogTWlncmF0ZSoqXFxuICAgLSBNaWdyYXRpb24gcmVmZXJzIHRvIHRoZSByZWd1bGFyIHNlYXNvbmFsIG1vdmVtZW50cyBtYWRlIGJ5IGFuaW1hbHMgaW4gc2VhcmNoIG9mIGZvb2QsIGJyZWVkaW5nLCBvciBtaWxkZXIgY2xpbWF0aWMgY29uZGl0aW9ucy4gRWFydGh3b3JtcyBjYW4gbWlncmF0ZSwgYnV0IHRoZSBicmVha2luZyBvZmYgb2YgYSBzZWdtZW50ICh3aGljaCB0eXBpY2FsbHkgaGFwcGVucyBkdWUgdG8gZXh0ZXJuYWwgcHJlc3N1cmUpIGRvZXMgbm90IGluaXRpYXRlIGEgbWlncmF0aW9uIHByb2Nlc3MuXFxuXFxuNi4gKipPcHRpb24gKGcpOiBTdG9wcyBncm93aW5nKipcXG4gICAtIEdyb3d0aCBpbiBlYXJ0aHdvcm1zIGlzIGluZGVlZCBiaW9sb2dpY2FsLCBidXQgdGhlIGxvc3Mgb2YgYSBzZWdtZW50IGRvZXNuJ3QgY2F1c2UgYSBjZXNzYXRpb24gb2YgZ3Jvd3RoLiBTZWdtZW50cyBvZiBlYXJ0aHdvcm1zIGFyZSBjb25zdGFudGx5IGJlaW5nIGFkZGVkIGFuZCBzaGVkIGRlcGVuZGluZyBvbiB0aGUgd29ybSdzIGdyb3d0aCBhbmQgY29uZGl0aW9ucywgc28gdGhlIGxvc3Mgb2YgYSBzZWdtZW50IHdvdWxkbid0IHR5cGljYWxseSBoYWx0IGl0cyBvdmVyYWxsIGdyb3d0aC5cXG5cXG43LiAqKk9wdGlvbiAoaCk6IFJvb3RzKipcXG4gICAtIEFzIG1lbnRpb25lZCBlYXJsaWVyLCByb290cyBhcmUgYSBjaGFyYWN0ZXJpc3RpYyBvZiBwbGFudHMsIG5vdCBlYXJ0aHdvcm1zLiBFYXJ0aHdvcm0gc2VnbWVudHMgZG8gbm90IHR1cm4gaW50byByb290cy5cXG5cXG4qKlRoZSBjb3JyZWN0IGFuc3dlciBpcyAoYikgUmVncm93cyBpdC4qKlxcblxcbkVhcnRod29ybXMgY2FuIHJlZ2VuZXJhdGUgbG9zdCBzZWdtZW50cy4gVGhpcyByZWdlbmVyYXRpdmUgYWJpbGl0eSBpcyBvbmUgb2YgdGhlIHVuaXF1ZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlc2Ugc2VnbWVudGVkIHdvcm1zLiBXaGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLCB0eXBpY2FsbHkgZHVlIHRvIGV4dGVybmFsIGZvcmNlcywgdGhlIHNldmVyZWQgc2VnbWVudCBjYW4gcmVnZW5lcmF0ZSwgbGVhZGluZyB0byB0aGUgZ3Jvd3RoIG9mIGEgbmV3IG9uZSBpZiB0aGUgY29uZGl0aW9ucyBwZXJtaXQuXFxuXFxuUmVtZW1iZXIsIGVhY2ggaW5jb3JyZWN0IGFuc3dlciBpcyBub3QgY29ycmVjdCBiZWNhdXNlIHRoZXkgZWl0aGVyIGRvbid0IGFkZHJlc3MgdGhlIGJpb2xvZ2ljYWwgcHJvY2VzcyBhdCBoYW5kIG9yIGRvbid0IGFsaWduIHdpdGgga25vd24gYmlvbG9naWNhbCBmdW5jdGlvbnMgYW5kIGNoYXJhY3RlcmlzdGljcyBvZiBlYXJ0aHdvcm1zLlwifSJ9XSwgIjQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBMaWdodG5pbmcgY2FuIGJlIGJhZCBmb3Igd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVGhlIGVudmlyb25tZW50IChiKSBSYWluc3Rvcm1zIChjKSBEZXN0cnVjdGlvbiAoZCkgVmlzaWJpbGl0eSAoZSkgVGh1bmRlciAoZikgVGhlIHN1biAoZykgVGhlIHdlYXRoZXIuIChoKSBUcmFuc3BvcnRhdGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiYVwiLCBcInJlYXNvbmluZ1wiOiBcIihhKSBUaGUgZW52aXJvbm1lbnQ6IExpZ2h0bmluZyBjYW4gcmVsZWFzZSBsYXJnZSBhbW91bnRzIG9mIGVuZXJneSBhbmQgaGVhdCwgd2hpY2ggY2FuIGRpc3J1cHQgbmF0dXJhbCBlY29zeXN0ZW1zLCBjYXVzZSBmb3Jlc3QgZmlyZXMsIGFuZCBhZmZlY3QgYWlyIHF1YWxpdHksIHRodXMgaGFybWluZyB0aGUgZW52aXJvbm1lbnQuXFxuXFxuKGIpIFJhaW5zdG9ybXM6IExpZ2h0bmluZyBkb2VzIG5vdCBkaXJlY3RseSBoYXJtIHJhaW5zdG9ybXMuIEluIGZhY3QsIGl0J3MgYSBwYXJ0IG9mIHRoZSBuYXR1cmFsIHN0b3JtIHByb2Nlc3MuIExpZ2h0bmluZyBpcyBvZnRlbiBhIHJlc3VsdCBvZiBzZXZlcmUgdGh1bmRlcnN0b3Jtcywgbm90IGEgZmFjdG9yIHRoYXQgY2F1c2VzIHRoZW0gdG8gYmUgaGFybWZ1bCB0aGVtc2VsdmVzLlxcblxcbihjKSBEZXN0cnVjdGlvbjogVGhpcyBvcHRpb24gaXMgbGVzcyBzcGVjaWZpYyB0aGFuIChhKSBvciAoYiksIGJ1dCBpbiBnZW5lcmFsIHRlcm1zLCBpdCdzIHRydWUuIEhvd2V2ZXIsICdkZXN0cnVjdGlvbicgaXMgdG9vIHZhZ3VlIGFuZCBkb2Vzbid0IGV4cGxhaW4gdGhlIGhhcm0gY2F1c2VkIGJ5IGxpZ2h0bmluZyBhY3Rpdml0eS5cXG5cXG4oZCkgVmlzaWJpbGl0eTogV2hpbGUgbGlnaHRuaW5nIGNhbiB0ZW1wb3JhcmlseSByZWR1Y2UgdmlzaWJpbGl0eSBkdXJpbmcgc3Rvcm1zLCBpdCBkb2VzIG5vdCBpbmhlcmVudGx5ICdicmluZycgb3IgJ2NhdXNlJyBwb29yIHZpc2liaWxpdHkuIFZpc2liaWxpdHkgaXNzdWVzIGFyZSBnZW5lcmFsbHkgZHVlIHRvIHJhaW4sIGZvZywgb3IgdGhlIHN0b3JtIGNsb3VkcyB0aGVtc2VsdmVzLCBub3QgdGhlIGxpZ2h0bmluZy5cXG5cXG4oZSkgVGh1bmRlcjogVGhpcyBpcyBub3QgYSBoYXJtIGJ1dCByYXRoZXIgYW5vdGhlciBwaGVub21lbm9uIGNyZWF0ZWQgYWxvbmdzaWRlIGxpZ2h0bmluZzsgdGhleSBhcmUgYm90aCBtYW5pZmVzdGF0aW9ucyBvZiBlbGVjdHJpY2FsIGRpc2NoYXJnZXMgaW4gdGh1bmRlcnN0b3Jtcy5cXG5cXG4oZikgVGhlIHN1bjogTGlnaHRuaW5nIGhhcyBubyBlZmZlY3Qgb24gdGhlIHN1biwgYXMgdGhleSBhcmUgZGlzdGFudCBmcm9tIGVhY2ggb3RoZXIgYW5kIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiBlYWNoIG90aGVyLlxcblxcbihnKSBUaGUgd2VhdGhlcjogV2hpbGUgbGlnaHRuaW5nIGlzIGEgcGFydCBvZiBzZXZlcmUgd2VhdGhlciwgaXQgZG9lcyBub3QgY2F1c2Ugd2VhdGhlciBjaGFuZ2VzIGluaGVyZW50bHkuIFdlYXRoZXIgaXMgYSBjb21wbGV4IHN5c3RlbSBpbmZsdWVuY2VkIGJ5IG1hbnkgZmFjdG9ycywgYW5kIGxpZ2h0bmluZyBpcyBvbmx5IG9uZSBvZiBtYW55IGluZGljYXRvcnMgb2Ygc2V2ZXJlIHdlYXRoZXIuXFxuXFxuKGgpIFRyYW5zcG9ydGF0aW9uOiBUaGlzIGlzIGFub3RoZXIgcG90ZW50aWFsIGVmZmVjdCwgYnV0IGl0IGlzIGluZGlyZWN0LiBMaWdodG5pbmcgc3RyaWtlcyBjYW4gY2F1c2UgZGFtYWdlIHRvIGluZnJhc3RydWN0dXJlIGxpa2UgcG93ZXIgbGluZXMsIHJvYWRzLCByYWlscm9hZHMsIGV0Yy4sIGluZGlyZWN0bHkgYWZmZWN0aW5nIHRyYW5zcG9ydGF0aW9uIHN5c3RlbXMuIEhvd2V2ZXIsIHRoaXMgc3RhdGVtZW50IGlzbid0IGFzIGRpcmVjdCBvciBjbGVhciBhcyBpdCBjb3VsZCBiZS5cXG5cXG5BZnRlciBnb2luZyB0aHJvdWdoIGVhY2ggYW5zd2VyIGNob2ljZSwgaXQncyBjbGVhciB0aGF0IChhKSAnVGhlIGVudmlyb25tZW50JyBpcyB0aGUgbW9zdCBkaXJlY3QgYW5kIGNvbXByZWhlbnNpdmUgYW5zd2VyIHRvIHdoeSBsaWdodG5pbmcgY2FuIGJlIGJhZCB3aXRob3V0IGZhbGxpbmcgaW50byBicm9hZCBvciBpbmRpcmVjdCBleHBsYW5hdGlvbnMuXCJ9In1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZFwiLCBcInJlYXNvbmluZ1wiOiBcIihhKSBTb3VsczogRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGluIGJpb2xvZ3kgdHlwaWNhbGx5IHJlZmVycyB0byBwaHlzaWNhbCBvciBtb2xlY3VsYXIgcmVtYWlucywgbm90IGFic3RyYWN0IGNvbmNlcHRzIGxpa2Ugc291bHMuIEJpb2xvZ3kgZGVhbHMgd2l0aCBwaHlzaWNhbCwgdGFuZ2libGUgYXNwZWN0cyBvZiBsaWZlIGZvcm1zLlxcblxcbihiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzOiBUaGlzIG9wdGlvbiBpcyB0b28gc3BlY2lmaWMuIFdoaWxlIGV2aWRlbmNlIGNvdWxkIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiBhbmltYWxzIHdpdGggYmFja2JvbmVzLCBpdCBkb2Vzbid0IGFjY291bnQgZm9yIG90aGVyIGZvcm1zIG9mIGxpZmUgdGhhdCBtaWdodCBiZSBwcmVzZW50IGluIHRoZSBmb3NzaWwgcmVjb3JkLlxcblxcbihjKSBPcmdhbmlzbXM6IFRoaXMgaXMgYSBzdGVwIHRvd2FyZHMgdGhlIGNvcnJlY3QgYW5zd2VyLCBidXQgaXQncyBub3QgdGhlIG1vc3Qgc3BlY2lmaWMuIEZvc3NpbHMgb3IgY2hlbWljYWwgbWFya2VycyBjYW4gaW5kZWVkIHNob3cgd2hlcmUgdmFyaW91cyBvcmdhbmlzbXMgb25jZSBsaXZlZCwgYnV0IG5vdCBhbGwgcGFzdCBsaWZlIGlzIHJlcHJlc2VudGVkIGJ5IGRpcmVjdCBmb3NzaWwgZXZpZGVuY2UuXFxuXFxuKGYpIERlZm9yZXN0YXRpb246IFRoaXMgcmVmZXJzIHRvIGEgY3VycmVudCBlbnZpcm9ubWVudGFsIHByb2Nlc3MsIG5vdCBwYXN0IGxpZmUuIEl0IGluZGljYXRlcyBjaGFuZ2VzIGluIGVjb3N5c3RlbXMgd2l0aGluIHRoZSByZWNlbnQgcGFzdCBidXQgZG9lc24ndCBzcGVjaWZpY2FsbHkgYWRkcmVzcyB3aGljaCBsaWZlIGZvcm1zIGV4aXN0ZWQgdGhlcmUgaW4gdGhlIHBhc3QuXFxuXFxuKGcpIFJlaW5jYXJuYXRpb246IExpa2UgJ3NvdWxzLCcgdGhpcyBpcyBhIHNwaXJpdHVhbCBvciBtZXRhcGh5c2ljYWwgY29uY2VwdCwgbm90IGdyb3VuZGVkIGluIGJpb2xvZ2ljYWwgZXZpZGVuY2UuIEJpb2xvZ3kgY29uY2VybnMgaXRzZWxmIHdpdGggb2JzZXJ2YWJsZSBhbmQgc2NpZW50aWZpY2FsbHkgdGVzdGFibGUgcGhlbm9tZW5hLlxcblxcbihoKSBJbXBvcnRhbnQgaGFiaXRhdHM6IFRoaXMgaXMgdG9vIHZhZ3VlLiBXaGlsZSBpdCBjb3VsZCBiZSB0aWVkIHRvIHRoZSB0eXBlcyBvZiBvcmdhbmlzbXMgdGhhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZSwgdGhlIHBocmFzZSBjb3VsZCBpbXBseSBhIHZhcmlldHkgb2YgdW5yZWxhdGVkIGNvbnRleHRzLCBhbmQgZG9lc24ndCBkaXJlY3RseSBzdGF0ZSB3aGF0IHR5cGVzIG9mIGxpZmUgZXhpc3RlZC5cXG5cXG5UaGVyZWZvcmUsIHRoZSBtb3N0IGFjY3VyYXRlIGFuZCBjb21wcmVoZW5zaXZlIGFuc3dlciBpcyAoZCkgUGxhbnQgb3IgYW5pbWFsLiBFdmlkZW5jZSBpbiB0aGUgZm9ybSBvZiBmb3NzaWxzLCB0cmFjZSBmb3NzaWxzLCBhbmQgaW1wcmludHMgY2FuIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiB2YXJpb3VzIGxpZmUgZm9ybXMsIGluY2x1ZGluZyBib3RoIHBsYW50cyBhbmQgYW5pbWFscywgaW4gYSBwYXJ0aWN1bGFyIHBsYWNlIHdoZXJlIHRoZXkgb25jZSBsaXZlZC4gVGhpcyBjb3ZlcnMgYSBicm9hZCByYW5nZSBvZiBwYXN0IGxpZmUgaW4gYSBzY2llbnRpZmljYWxseSBncm91bmRlZCBtYW5uZXIsIGFja25vd2xlZGdpbmcgY29udHJpYnV0aW9ucyBmcm9tIGJvdGggcGxhbnQgYW5kIGFuaW1hbCBraW5nZG9tcy5cIn0ifV0sICI2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogSG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24sIG9yIGluaGVyaXRlZCwgaXMgZm91bmQgaW4gaW5mb3JtYXRpb24gaW4gYW4gb3JnYW5pc20ncyB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBTcGVjaWVzIChiKSBNZXNzZW5nZXJzIChjKSBIYWlyIGZvbGxpY2xlcyAoZCkgQ3ljbGVzIChlKSBTa2luIGNlbGxzIChmKSBFbmRvY3JpbmUgc3lzdGVtIChnKSBDaHJvbW9zb21lcyAoaCkgUHJvdGVpbnMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImdcIiwgXCJyZWFzb25pbmdcIjogXCJUaGUgY29ycmVjdCBhbnN3ZXIgaXMgKGcpIENocm9tb3NvbWVzLlxcblxcbkxldCdzIGV4YW1pbmUgd2h5IHRoZSBvdGhlciBvcHRpb25zIGFyZSBpbmNvcnJlY3Q6XFxuXFxuKGEpIFNwZWNpZXM6IFNwZWNpZXMgaXMgYSBjbGFzc2lmaWNhdGlvbiBzeXN0ZW0gdXNlZCBieSBiaW9sb2dpc3RzIHRvIGdyb3VwIHRvZ2V0aGVyIHNpbWlsYXIgb3JnYW5pc21zLiBXaGlsZSBzcGVjaWVzIGFyZSByZWxhdGVkIGluIHRlcm1zIG9mIHRoZWlyIGdlbmV0aWNzLCB0aGV5IGRvIG5vdCBjb250YWluIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCBhbiBpbmRpdmlkdWFsJ3MgaW5oZXJpdGVkIHRyYWl0cy5cXG5cXG4oYikgTWVzc2VuZ2VyczogVGhpcyBvcHRpb24gY291bGQgcmVmZXIgdG8gc2lnbmFscyBvciBjb21tdW5pY2F0aW9uIHN5c3RlbXMgd2l0aGluIGFuIG9yZ2FuaXNtLCBidXQgaXQgZG9lcyBub3QgdHlwaWNhbGx5IHJlbGF0ZSB0byB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiByZXNwb25zaWJsZSBmb3IgaW5oZXJpdGVkIHRyYWl0cy4gXFxuXFxuKGMpIEhhaXIgZm9sbGljbGVzOiBIYWlyIGZvbGxpY2xlcyBhcmUgc3RydWN0dXJlcyBpbiB0aGUgc2tpbiB0aGF0IHByb2R1Y2UgaGFpci4gVGhleSBkb24ndCBjb250YWluIGdlbmV0aWMgaW5mb3JtYXRpb24gYWJvdXQgdHJhaXRzOyByYXRoZXIsIHRoZXkncmUgYSByZXN1bHQgb2YgZ2VuZXRpYyBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgYWxyZWFkeSBlbmNvZGVkIGluIHRoZSBjaHJvbW9zb21lcy5cXG5cXG4oZCkgQ3ljbGVzOiBCaW9sb2dpY2FsIGN5Y2xlcywgc3VjaCBhcyBjaXJjYWRpYW4gcmh5dGhtcywgYXJlIHJlZ3VsYXIgcGF0dGVybnMgb2YgYmVoYXZpb3Igb3IgcGh5c2lvbG9naWNhbCBjaGFuZ2UuIFRoZXkgYXJlIHJlZ3VsYXRlZCBieSBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgc3RpbXVsaSwgYnV0IHRoZXkgZG9uJ3Qgc3RvcmUgZ2VuZXRpYyBpbmZvcm1hdGlvbi5cXG5cXG4oZSkgU2tpbiBjZWxsczogU2tpbiBjZWxscyBhcmUgc29tYXRpYyBjZWxscyB0aGF0IGNvbnN0aXR1dGUgdGhlIG91dGVyIGxheWVyIG9mIHRoZSBza2luLiBUaGV5IGNvbnRhaW4gZ2VuZXRpYyBtYXRlcmlhbCwgYnV0IHRoZXkgZG8gbm90IGhvbGQgdGhlIHNwZWNpZmljIGluc3RydWN0aW9ucyBmb3IgaG93IHRyYWl0cyB3aWxsIGJlIGV4cHJlc3NlZCAtIHRoYXQgaW5mb3JtYXRpb24gaXMgZm91bmQgaW4gdGhlIEROQSwgbm90YWJseSB3aXRoaW4gY2hyb21vc29tZXMuXFxuXFxuKGYpIEVuZG9jcmluZSBzeXN0ZW06IFRoZSBlbmRvY3JpbmUgc3lzdGVtIGlzIGEgZ3JvdXAgb2YgZ2xhbmRzIHRoYXQgc2VjcmV0ZSBob3Jtb25lcywgd2hpY2ggcmVndWxhdGUgdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIGJvZHkuIEl0IGNvbnRyb2xzIG1hbnkgYXNwZWN0cyBvZiBvdXIgYm9keSBmdW5jdGlvbnMgYnV0IGRvZXNuJ3Qgc3RvcmUgZ2VuZXRpYyBpbmZvcm1hdGlvbi5cXG5cXG4oaCkgUHJvdGVpbnM6IFByb3RlaW5zIGFyZSBlc3NlbnRpYWwgbW9sZWN1bGVzIHRoYXQgcGxheSBtYW55IHJvbGVzIGluIHRoZSBib2R5LCBpbmNsdWRpbmcgYWN0aW5nIGFzIGVuenltZXMsIHN0cnVjdHVyYWwgY29tcG9uZW50cywgYW5kIHNpZ25hbGluZyBtb2xlY3VsZXMuIFRoZXkncmUgY3JlYXRlZCBiYXNlZCBvbiBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgRE5BIGJ1dCBkbyBub3QgY29udGFpbiB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiBpdHNlbGYuXFxuXFxuSW4gc3VtbWFyeSwgY2hyb21vc29tZXMgYXJlIHRoZSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgY2VsbCBudWNsZXVzIHRoYXQgY2FycnkgdGhlIGdlbmV0aWMgbWF0ZXJpYWwgKEROQSksIHdoaWNoIGluY2x1ZGVzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbmlzbSdzIHRyYWl0cy4gVGhlIG90aGVyIG9wdGlvbnMgYXJlIGluY29ycmVjdCBiZWNhdXNlIHRoZXkgcmVmZXIgdG8gZW50aXRpZXMsIHByb2Nlc3Nlcywgb3IgbWVjaGFuaXNtcyB0aGF0IGRvIG5vdCBzdG9yZSBvciBkaXJlY3RseSBjb250YWluIHRoZSBnZW5ldGljIGluZm9ybWF0aW9uIHRoYXQgZGV0ZXJtaW5lcyBpbmhlcml0ZWQgdHJhaXRzLlwifSJ9XSwgIjciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGFyZSB0aGUgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBHcmFzcyAoYikgQW5pbWFscyAoYykgQXBwbGVzIChkKSBQb3RhdG9lcyAoZSkgVHJlZXMgKGYpIFBsYW50cyAoZykgRnVuZ2kgKGgpIEZpZWxkcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZlwiLCBcInJlYXNvbmluZ1wiOiBcIjEuICoqR3Jhc3MgKGEpKiogLSBXaGlsZSBncmFzcyBpcyBpbmRlZWQgYSBwcm9kdWNlciwgb3IgYXV0b3Ryb3BoaWMgb3JnYW5pc20sIGluIHRoZSBiaW9sb2dpY2FsIHNlbnNlLCBpdCBpc24ndCB0eXBpY2FsbHkgZW1waGFzaXplZCBhcyBhIG1ham9yIHByb2R1Y2VyIGluIHRoZSBjb250ZXh0IG9mIHRoZSBxdWVzdGlvbiBiZWNhdXNlIGl0IGlzIG1vcmUgY29tbW9uIGFuZCBsZXNzIHZhcmllZCB0aGFuIG90aGVyIHBsYW50IGZvcm1zLlxcblxcbjIuICoqQW5pbWFscyAoYikqKiAtIEFuaW1hbHMgYXJlIGNvbnN1bWVycyAoaGV0ZXJvdHJvcGhzKSB0aGF0IGNhbm5vdCBwcm9kdWNlIHRoZWlyIG93biBmb29kLCBzbyB0aGV5IGFyZSBub3QgcHJvZHVjZXJzLlxcblxcbjMuICoqQXBwbGVzIChjKSoqIC0gTGlrZSBncmFzcywgYXBwbGVzIGFyZSBhIHR5cGUgb2YgcGxhbnQgcHJvZHVjdCwgYnV0IHRoZXkgYXJlIGRlcml2ZWQgZnJvbSBwcm9kdWNlcnMgKHRyZWVzIGJlYXJpbmcgYXBwbGVzKSwgbm90IHByb2R1Y2VycyB0aGVtc2VsdmVzLlxcblxcbjQuICoqUG90YXRvZXMgKGQpKiogLSBQb3RhdG9lcyBhcmUgYW4gYWdyaWN1bHR1cmFsIGNyb3AsIGFuZCBsaWtlIGFwcGxlcywgdGhleSBhcmUgZGVyaXZlZCBmcm9tIHBsYW50cy4gVGhleSdyZSBub3QgcHJvZHVjZXJzLCBidXQgdGhlIHByb2R1Y2VycyBhcmUgdGhlIHBvdGF0byBwbGFudHMuXFxuXFxuNS4gKipGaWVsZHMgKGgpKiogLSBBIGZpZWxkIHJlZmVycyB0byBhbiBhZ3JpY3VsdHVyYWwgYXJlYSB3aGVyZSBjcm9wcyBhcmUgZ3Jvd24uIEl0J3Mgbm90IGEgcHJvZHVjZXIgaXRzZWxmLCBidXQgY2FuIGNvbnRhaW4gcHJvZHVjZXJzIHN1Y2ggYXMgZ3JhaW5zLCB2ZWdldGFibGVzLCBvciBvdGhlciBjcm9wcy5cXG5cXG42LiAqKlBsYW50cyAoZikqKiAtIFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBQbGFudHMsIGluIGdlbmVyYWwsIGFyZSBwcm9kdWNlcnMgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiBwaG90b3N5bnRoZXNpcywgd2hpY2ggY29udmVydHMgbGlnaHQgZW5lcmd5IGludG8gY2hlbWljYWwgZW5lcmd5IHRoYXQgY2FuIGJlIGxhdGVyIHJlbGVhc2VkIHRvIGZ1ZWwgdGhlIG9yZ2FuaXNtJ3MgYWN0aXZpdGllcy5cXG5cXG43LiAqKkZ1bmdpIChnKSoqIC0gQWx0aG91Z2ggZnVuZ2kgYXJlIGF1dG90cm9waGljLCB0aGUgcXVlc3Rpb24gc3BlY2lmaWNhbGx5IHJlZmVycyB0byAndGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24nIGFzIG1ham9yIGZhY3RvcnMuIFdoaWxlIGZ1bmdpIGNhbiBpbmRlZWQgcGhvdG9zeW50aGVzaXplIChsaWtlIGFsZ2FlKSwgdGhleSBhcmUgb2Z0ZW4gY29uc2lkZXJlZCBkZWNvbXBvc2VycywgbW9yZSByZWxldmFudCB0byB0ZW1wZXJhdHVyZSBhbmQgd2FzdGUgY3ljbGluZyBpbiBhbiBlY29zeXN0ZW0gcmF0aGVyIHRoYW4gcHJpbWFyeSBwcm9kdWNlcnMuXFxuXFxuSW4gY29uY2x1c2lvbiwgdGhlIHByaW1hcnkgcHJvZHVjZXJzIGFyZSAqKnBsYW50cyoqIGJlY2F1c2UgdGhleSBhcmUgdGhlIG1haW4gZW50aXRpZXMgY2FwYWJsZSBvZiBjb252ZXJ0aW5nIHN1bmxpZ2h0LCBjYXJib24gZGlveGlkZSwgYW5kIHdhdGVyIGludG8gY29tcGxleCBzdWdhcnMgdGhyb3VnaCBwaG90b3N5bnRoZXNpcywgdXNpbmcgdGVtcGVyYXR1cmUgYW5kIGxpZ2h0IChhIGNvbXBvbmVudCBvZiBwcmVjaXBpdGF0aW9uIGVmZmVjdHMgdmlhIGV2YXBvdHJhbnNwaXJhdGlvbikgYXMgcHJpbWFyeSBmYWN0b3JzLiBBbmltYWxzLCBmdW5naSwgYXBwbGVzLCBwb3RhdG9lcywgYW5kIGZpZWxkcyBkbyBub3QgZGlyZWN0bHkgZW5nYWdlIGluIHRoaXMgcHJvY2VzcyBpbiB0aGUgc2FtZSB3YXkgYXMgcGxhbnRzLCBhbmQgdGh1cywgYXJlIG5vdCBwcmltYXJ5IHByb2R1Y2Vycy5cIn0ifV0sICI4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgY2hhbmdlIHZlZ2V0YXRpb24gaW50bz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2NhcmNlIHJlc291cmNlcyAoYikgSGFybWZ1bCBzdWJzdGFuY2VzIChjKSBTY2FycyAoZCkgRm9zc2lsIGZ1ZWxzIChlKSBTZWRpbWVudCAoZikgU29tZXRoaW5nIHRvIG1vdmUgKGcpIE1hZ2ljIChoKSBQaWNuaWNzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJkXCIsIFwicmVhc29uaW5nXCI6IFwiYSkgU2NhcmNlIHJlc291cmNlcyAtIFRoaXMgb3B0aW9uIHN1Z2dlc3RzIHRoYXQgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBtYWtlcyB2ZWdldGF0aW9uIHNjYXJjZSByZXNvdXJjZXMuIFRoaXMgaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBzb2lsIGFuZCBtdWQgYmVpbmcgYSBidXJpYWwgbG9jYXRpb24gZG9lcyBub3QgaW1wbHkgdGhlIHZlZ2V0YXRpb24gaXQgY29udGFpbnMgYmVjb21lcyBzY2FyY2UuIFRoZSB2ZWdldGF0aW9uIGl0c2VsZiB3b3VsZG4ndCBiZWNvbWUgc2NhcmNlIGR1ZSB0byBidXJpYWw7IHJhdGhlciwgaXQgbWF5IGNvbnRyaWJ1dGUgdG8gdGhlIGZvcm1hdGlvbiBvZiBmb3NzaWwgZnVlbHMuXFxuXFxuYikgSGFybWZ1bCBzdWJzdGFuY2VzIC0gVmVnZXRhdGlvbiBidXJpZWQgaW4gc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gaW50byBoYXJtZnVsIHN1YnN0YW5jZXMuIFdoaWxlIGl0J3MgdHJ1ZSB0aGF0IG92ZXIgZ2VvbG9naWNhbCB0aW1lc2NhbGVzLCBkZWNvbXBvc2l0aW9uIHByb2Nlc3NlcyBjYW4gcHJvZHVjZSB2YXJpb3VzIHN1YnN0YW5jZXMsIHRoZSBpbW1lZGlhdGUgcmVzdWx0IG9mIGJ1cmlhbCBpc24ndCB0aGUgY3JlYXRpb24gb2YgaGFybWZ1bCBzdWJzdGFuY2VzLiBUaGUgY29ycmVjdCBhbnN3ZXIgaW52b2x2ZXMgYSBwcm9jZXNzIHRoYXQgbGVhZHMgdG8gYSBtb3JlIGNvbXBsZXggZm9zc2lsIGZ1ZWwsIG5vdCBqdXN0IGhhcm1mdWwgc3Vic3RhbmNlcy5cXG5cXG5jKSBTY2FycyAtIFRoaXMgYW5zd2VyIGNob2ljZSBzdWdnZXN0cyB0aGUgdmVnZXRhdGlvbiB0cmFuc2Zvcm1zIGludG8gc2NhcnMuIFNjYXJzIGFyZSBpbmp1cmllcyBvciB3b3VuZHMgb24gYW4gb3JnYW5pc20sIGFuZCB0aGVyZSBpcyBubyBiaW9sb2dpY2FsIG9yIGdlb2xvZ2ljYWwgcHJvY2VzcyBieSB3aGljaCBidXJpYWwgdW5kZXIgc29pbCBhbmQgbXVkIHdvdWxkIHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNjYXJzLlxcblxcbmYpIFNvbWV0aGluZyB0byBtb3ZlIC0gVGhpcyBhbnN3ZXIgaW1wbGllcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIGJ1cmlhbCBwcm9jZXNzIGlzIHNvbWV0aGluZyB1c2VkIGZvciBtb3ZlbWVudC4gSG93ZXZlciwgZm9zc2lsIGZ1ZWxzLCBmb3JtZWQgb3ZlciBtaWxsaW9ucyBvZiB5ZWFycywgYXJlbid0IHVzZWQgZGlyZWN0bHkgZm9yIG1vdmVtZW50IGJ1dCBhcmUgc291cmNlcyBvZiBlbmVyZ3kgd2hlbiBjb21idXN0ZWQuIFRoZXkgZG9uJ3QgYmVjb21lJ3NvbWV0aGluZyB0byBtb3ZlJyBpbiBhbnkgaW1tZWRpYXRlIG9yIGRpcmVjdCBzZW5zZS5cXG5cXG5nKSBNYWdpYyAtIFRoaXMgb3B0aW9uIGlzIG5vdCBhIHNjaWVudGlmaWMgb3IgZmFjdHVhbCBhbnN3ZXIuIFRoZSBwcm9jZXNzIG9mIGhvdyB2ZWdldGF0aW9uIHRyYW5zZm9ybXMgaW50byBmb3NzaWwgZnVlbHMgaXMgYSBuYXR1cmFsIGdlb2xvZ2ljYWwgcHJvY2Vzcywgbm90IGEgbWFnaWNhbCBvbmUuXFxuXFxuaCkgUGljbmljcyAtIFRoaXMgb3B0aW9uIGlzIGNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSBiaW9sb2dpY2FsIG9yIGdlb2xvZ2ljYWwgcHJvY2VzcyBkZXNjcmliZWQgaW4gdGhlIHF1ZXN0aW9uLiBQaWNuaWMgaXRlbXMgYXJlIGh1bWFuLW1hZGUgYW5kIGRvbid0IHJlc3VsdCBmcm9tIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiBkZWFkIHBsYW50IG1hdGVyaWFsLlxcblxcblNvIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZCkgRm9zc2lsIGZ1ZWxzLCBiZWNhdXNlIHRoaXMgaXMgdGhlIG5hdHVyYWwgcHJvY2VzcyBieSB3aGljaCBkZWFkIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGZvc3NpbCBmdWVsIGRlcG9zaXRzLiBGb3NzaWwgZnVlbHMgZm9ybSBmcm9tIHRoZSByZW1haW5zIG9mIGRlYWQgcGxhbnRzIGFuZCBhbmltYWxzIHRoYXQgaGF2ZSBiZWVuIGJ1cmllZCBhbmQgc3ViamVjdGVkIHRvIGltbWVuc2UgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciBtaWxsaW9ucyBvZiB5ZWFycy5cIn0ifV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImNcIiwgXCJyZWFzb25pbmdcIjogXCJXaGVuIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWEsIGl0J3Mgbm90IGR1ZSB0bzpcXG5cXG4oYSkgS2VlcGluZyB0aGVpciBib2R5IGhlYXQgLSBUaGlzIGlzIHR5cGljYWxseSBpbmZsdWVuY2VkIGJ5IHNlYXNvbmFsIGNoYW5nZXMgb3Igd2VhdGhlciBjb25kaXRpb25zLCBub3QgdGhlIHBoeXNpY2FsIGFjdCBvZiBtb3ZpbmcgdG8gYW5vdGhlciBhcmVhLiBXaGlsZSB0ZW1wZXJhdHVyZSBjYW4gYmUgYSBmYWN0b3IgaW4gbWlncmF0aW9uLCBpdCBkb2Vzbid0IGRyaXZlIHRoZSBkZWNpc2lvbiBmb3IgdGhlIG1vdmVtZW50IGl0c2VsZi5cXG5cXG4oYikgUmV1c2luZyBtYXRlcmlhbHMgLSBUaGlzIG9wdGlvbiByZWZlcnMgdG8gcmVjeWNsaW5nIG9yIHJldXNpbmcgcGh5c2ljYWwgb2JqZWN0cyBhbmQgaGFzIG5vIGRpcmVjdCBjb3JyZWxhdGlvbiB0byBhbmltYWwgbWlncmF0aW9uIG9yIG1vdmVtZW50LlxcblxcbihkKSBCZWluZyBib3JlZCAtIEJvcmVkb20gaXMgYSBodW1hbiBjb25zdHJ1Y3QgYW5kIGRvZXNuJ3QgZGlyZWN0bHkgYXBwbHkgdG8gYW5pbWFscycgYmVoYXZpb3JhbCBkZWNpc2lvbnMuIEFuaW1hbHMgYXJlIGRyaXZlbiBieSBpbnN0aW5jdHMgYW5kIGJhc2ljIG5lZWRzIHJhdGhlciB0aGFuIGJvcmVkb20uXFxuXFxuKGYpIEhhdmluZyB0b28gbXVjaCBtb25leSAtIFRoaXMgaXMgYW4gZWNvbm9taWMgY29uY2VwdCB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gYW5pbWFscywgYXMgdGhleSBkb24ndCBoYXZlIGN1cnJlbmN5IG9yIGZpbmFuY2lhbCByZXNvdXJjZXMuXFxuXFxuKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAtIFRoZXNlIGFyZSBzcGVjaWZpYyB0eXBlcyBvZiBlY29zeXN0ZW1zLCBhbmQgd2hpbGUgYW5pbWFscyBtYXkgaW5oYWJpdCB0aGVzZSBhcmVhcyBvciBtb3ZlIHRvIHRoZW0gZm9yIHZhcmlvdXMgcmVhc29ucywgbWVyZWx5IGV4cGxhaW5pbmcgd2hlcmUgdGhleSBtaWdodCBnbyBkb2Vzbid0IGFkZHJlc3Mgd2h5IHRoZXkgbW92ZS5cXG5cXG4oZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgLSBUaGlzIGRlc2NyaWJlcyBhdG1vc3BoZXJpYyBwaGVub21lbmEgYW5kIGRvZXMgbm90IGluZmx1ZW5jZSB0aGUgbW92ZW1lbnQgb2YgYW5pbWFscy5cXG5cXG4oaCkgSGF2aW5nIHRvbyBtdWNoIGZvb2QgLSBXaGlsZSBhbmltYWxzIG1pZ2h0IG1pZ3JhdGUgdG8gYXZvaWQgYXJlYXMgb2Ygb3Zlci1jb21wZXRpdGlvbiBmb3IgZm9vZCByZXNvdXJjZXMsIHRoZSBwaHJhc2UgJ3RvbyBtdWNoIGZvb2QnIGlzIG5vdCBhIGxvZ2ljYWwgbW90aXZhdG9yIGZvciBtb3ZpbmcgdG8gYSBuZXcgYXJlYS4gVG9vIG11Y2ggZm9vZCB3b3VsZCBtZWFuIHRoZXkncmUgYWxyZWFkeSBpbiBhIGdvb2QgbG9jYXRpb24sIG5lZ2F0aW5nIHRoZSBuZWVkIGZvciBtaWdyYXRpb24uXFxuXFxuKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAtIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIGFuaW1hbHMgb2Z0ZW4gbWlncmF0ZSBpbiByZXNwb25zZSB0byBzY2FyY2l0eSBpbiB0aGVpciBjdXJyZW50IGhhYml0YXQuIEluYWRlcXVhdGUgZm9vZCBhdmFpbGFiaWxpdHkgY2FuIGxlYWQgdG8gc3RhcnZhdGlvbiwgcHJvbXB0aW5nIGEgbW92ZW1lbnQgdG8gYXJlYXMgd2hlcmUgcmVzb3VyY2VzIGFyZSBtb3JlIGFidW5kYW50LiBUaGV5IGFyZSBzZWVraW5nIHRvIGVuc3VyZSB0aGVpciBzdXJ2aXZhbCBhbmQgcmVwcm9kdWN0aW9uLlxcblxcblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChjKSBhcyBpdCBpcyB0aGUgbW9zdCBsb2dpY2FsIGV4cGxhbmF0aW9uIGZvciBhbmltYWwgbW92ZW1lbnQgdG8gYW5vdGhlciBhcmVhIGJhc2VkIG9uIHN1cnZpdmFsIG5lZWRzLCBwYXJ0aWN1bGFybHkgZm9vZCBhdmFpbGFiaWxpdHkuXCJ9In1dLCAiMTAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEtpbmV0aWMgZW5lcmd5IChiKSBMb3VkIG5vaXNlcyAoYykgVmlicmF0aW5nIHdhdmVzIChkKSBBbiBvYmplY3QgaXMgc2VlbiAoZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneSAoZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkIChnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuIChoKSBIYXJtZnVsIHN1YnN0YW5jZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImNcIiwgXCJyZWFzb25pbmdcIjogXCIxLiBSZWFkIHRoZSBxdWVzdGlvbjogJ0EgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD8nXFxuICAgIC0gVGhlIHF1ZXN0aW9uIGFza3MgYWJvdXQgdGhlIGZvcm0gb2YgZW5lcmd5IHRoYXQgYSBmaXJlY3JhY2tlciB0cmFuc2Zvcm1zIGNoZW1pY2FsIGVuZXJneSBpbnRvLlxcblxcbjIuIElkZW50aWZ5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIG9wdGlvbnM6XFxuICAgLSBhKSBLaW5ldGljIGVuZXJneVxcbiAgIC0gYikgTG91ZCBub2lzZXNcXG4gICAtIGMpIFZpYnJhdGluZyB3YXZlc1xcbiAgIC0gZCkgQW4gb2JqZWN0IGlzIHNlZW5cXG4gICAtIGUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3lcXG4gICAtIGYpIERlb3h5cmlib251Y2xlaWMgYWNpZFxcbiAgIC0gZykgSHlkcm9nZW4gYW5kIG94eWdlblxcbiAgIC0gaCkgSGFybWZ1bCBzdWJzdGFuY2VzXFxuXFxuMy4gRGV0ZXJtaW5lIHdoaWNoIG9wdGlvbnMgYXJlIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlOlxcbiAgIC0gS2luZXRpYyBlbmVyZ3kgY291bGQgYmUgYSByZXN1bHQgb2YgdGhlIGZpcmVjcmFja2VyJ3MgZXhwbG9zaW9uLCBidXQgaXQgaXMgbm90IHRoZSBtb3N0IGRpcmVjdCBvciBzcGVjaWZpYyB0cmFuc2Zvcm1hdGlvbi5cXG4gICAtIExvdWQgbm9pc2VzIGFyZSBhIGJ5cHJvZHVjdCBidXQgZG8gbm90IHJlcHJlc2VudCBlbmVyZ3kuXFxuICAgLSBWaWJyYXRpbmcgd2F2ZXMgbWF5IHJlc3VsdCBmcm9tIHRoZSBleHBsb3Npb24sIGJ1dCB0aGV5IGFyZSBhbHNvIGEgYnlwcm9kdWN0IHJhdGhlciB0aGFuIHRoZSBwcmltYXJ5IGNvbnZlcnRlZCBlbmVyZ3kuXFxuICAgLSBBbiBvYmplY3QgaXMgc2VlbjogVGhpcyBpcyBub3QgYSBmb3JtIG9mIGVuZXJneS5cXG4gICAtIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IGNvbnZlcnNpb24gaW4gYSBmaXJlY3JhY2tlci5cXG4gICAtIERlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKSBpcyBvcmdhbmljIG1hdGVyaWFsIGFuZCBpcyBub3QgcmVsYXRlZCB0byB0aGUgZW5lcmd5IGNvbnZlcnNpb24gYXQgcGxheS5cXG4gICAtIEh5ZHJvZ2VuIGFuZCBveHlnZW4gYXJlIGVsZW1lbnRzIHByb2R1Y2VkIGluIHRoZSBjaGVtaWNhbCByZWFjdGlvbiBidXQgbm90IHRoZSBmb3JtIG9mIGVuZXJneSBpdHNlbGYuXFxuICAgLSBIYXJtZnVsIHN1YnN0YW5jZXMgYXJlIGJ5cHJvZHVjdHMgYnV0IG5vdCB0aGUgZm9ybSBvZiBlbmVyZ3kuXFxuXFxuNC4gVGhlIGNvcnJlY3QgYW5zd2VyIGlzIChjKTpcXG4gICAtIFZpYnJhdGluZyB3YXZlczogV2hpbGUgZmlyZWNyYWNrZXJzIGRvIGluZGVlZCBwcm9kdWNlIHZpYnJhdGlvbnMgKHdoaWNoIGNhbiBmZWx0IG9yIGhlYXJkIGFzIHNvdW5kKSwgdGhlIG1vc3QgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gaXMgbm90IGxpc3RlZCBkaXJlY3RseS5cXG5cXG41LiBFeHBsYW5hdGlvbiBvZiB3aHkgb3RoZXIgb3B0aW9ucyBhcmUgaW5jb3JyZWN0OlxcbiAgIC0gYSkgS2luZXRpYyBlbmVyZ3k6IFdoaWxlIGtpbmV0aWMgZW5lcmd5IGlzIGludm9sdmVkIGluIHRoZSBleHBsb3Npb24sIGl0IGlzIG5vdCB0aGUgaW1tZWRpYXRlIGFuZCBwcmltYXJ5IGNvbnZlcnNpb24gZm9ybS5cXG4gICAtIGIpIExvdWQgbm9pc2VzOiBUaGlzIGlzIGEgcmVzdWx0IG9mIHRoZSBleHBsb3Npb24gYnV0IG5vdCBhIGZvcm0gb2YgZW5lcmd5LlxcbiAgIC0gZCkgQW4gb2JqZWN0IGlzIHNlZW46IFRoaXMgc3RhdGVtZW50IGlzIGlycmVsZXZhbnQgdG8gZW5lcmd5IGNvbnZlcnNpb24uXFxuICAgLSBlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5OiBBbHRob3VnaCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgcmVsZWFzZWQgZHVyaW5nIHRoZSBleHBsb3Npb24gKGxpZ2h0IGFuZCBzb3VuZCksIGl0IGlzIG5vdCB0aGUgbW9zdCBkaXJlY3QgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnZlcnNpb24gZnJvbSBjaGVtaWNhbCB0byBhbm90aGVyIGZvcm0uXFxuICAgLSBmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSk6IE5vdCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gcHJvY2Vzcy5cXG4gICAtIGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW46IFByb2R1Y2VkIGVsZW1lbnRzIGJ1dCBub3QgZm9ybXMgb2YgZW5lcmd5LlxcbiAgIC0gaCkgSGFybWZ1bCBzdWJzdGFuY2VzOiBCeXByb2R1Y3RzIGJ1dCBub3QgZm9ybXMgb2YgZW5lcmd5LlxcblxcbkluIGNvbmNsdXNpb24sIHdoaWxlIGEgZmlyZWNyYWNrZXIgcHJpbWFyaWx5IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIGtpbmV0aWMgZW5lcmd5IGFuZCB2aWJyYXRpb25zIChzb3VuZCB3YXZlcyksIHRoZSBjbG9zZXN0IG9wdGlvbiBwcm92aWRlZCBpcyAoYykgVmlicmF0aW5nIHdhdmVzLCBpbmRpY2F0aW5nIHRoZSBtb3N0IGV2aWRlbnQgcGh5c2ljYWwgZWZmZWN0IGFuZCBmb3JtIG9mIGVuZXJneSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGNoZW1pY2FsIGVuZXJneSBhdCB0aGUgZWxlbWVudGFyeSBsZXZlbC5cIn0ifV0sICIxMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWFqb3IgZWZmZWN0cyAoYikgUmVzcGlyYXRpb24gKGMpIFJvbGV4IChkKSBEZW5zaXR5IChlKSBEaXBodGhlcmlhIChmKSBDYW5pcyBsdXB1cyAoZykgU2tpbiBjb2xvciAoaCkgRGlnZXN0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJnXCIsIFwicmVhc29uaW5nXCI6IFwiKGEpIE1ham9yIGVmZmVjdHM6XFxuVGhpcyB0ZXJtIGNvdWxkIHBvdGVudGlhbGx5IHJlbGF0ZSB0byBnZW5ldGljcywgYnV0IGl0J3MgYSBnZW5lcmFsIHRlcm0gdGhhdCBjb3VsZCBkZXNjcmliZSB0aGUgZWZmZWN0cyBvZiBtdWx0aXBsZSBnZW5lcyBvbiBhIHBoZW5vdHlwZSwgcmF0aGVyIHRoYW4gYSBzcGVjaWZpYyByZXN1bHQuIFRodXMsIGl0J3Mgbm90IGEgZGlyZWN0IGFuc3dlciB0byB0aGUgcXVlc3Rpb24gYXNraW5nIGZvciBhIHNwZWNpZmljIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy5cXG5cXG4oYikgUmVzcGlyYXRpb246XFxuUmVzcGlyYXRpb24gaXMgYSBiaW9sb2dpY2FsIHByb2Nlc3MgaW52b2x2aW5nIHRoZSBleGNoYW5nZSBvZiBnYXNlcyAob3h5Z2VuIGFuZCBjYXJib24gZGlveGlkZSkgdGhhdCBvY2N1cnMgaW4gbGl2aW5nIG9yZ2FuaXNtcy4gV2hpbGUgZ2VuZSBpbnRlcmFjdGlvbnMgY2FuIGluZmx1ZW5jZSBtZXRhYm9saWMgcHJvY2Vzc2VzIGluY2x1ZGluZyByZXNwaXJhdGlvbiwgdGhlIHRlcm0gJ3Jlc3BpcmF0aW9uJyBpdHNlbGYgaXMgbm90IGEgcmVzdWx0IGRpcmVjdGx5IHN0ZW1taW5nIGZyb20gdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuXFxuXFxuKGMpIFJvbGV4OlxcbkEgUm9sZXggaXMgYSBsdXh1cnkgd3Jpc3R3YXRjaC4gVGhpcyBvcHRpb24gaXMgaXJyZWxldmFudCB0byB0aGUgY29udGV4dCBvZiBnZW5ldGljcyBhbmQgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuXFxuXFxuKGQpIERlbnNpdHk6XFxuRGVuc2l0eSBpcyBhIHBoeXNpY2FsIHByb3BlcnR5IG9mIG1hdHRlciBhbmQgZG9lcyBub3QgZGlyZWN0bHkgcmVsYXRlIHRvIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBtdWx0aXBsZSBnZW5lcy5cXG5cXG4oZSkgRGlwaHRoZXJpYTpcXG5EaXBodGhlcmlhIGlzIGEgYmFjdGVyaWFsIGRpc2Vhc2U7IHdoaWxlIGdlbmVzIGNhbiBpbmZsdWVuY2Ugc3VzY2VwdGliaWxpdHkgdG8gY2VydGFpbiBkaXNlYXNlcywgJ2RpcGh0aGVyaWEnIGl0c2VsZiBpc24ndCBhIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcyBidXQgcmF0aGVyIGFuIGVmZmVjdCBvZiBhIHBhdGhvZ2VuaWMgYmFjdGVyaXVtIChDb3J5bmViYWN0ZXJpdW0gZGlwaHRoZXJpYWUpLlxcblxcbihmKSBDYW5pcyBsdXB1czpcXG5DYW5pcyBsdXB1cyBpcyB0aGUgc2NpZW50aWZpYyBuYW1lIGZvciB0aGUgZ3JheSB3b2xmLCBhIHNwZWNpZXMuIFRoaXMgaXMgbm90IGEgcmVzdWx0IGFyaXNpbmcgZnJvbSB0aGUgaW50ZXJhY3Rpb24gb2YgbXVsdGlwbGUgZ2VuZXMgaW4gYSBnZW5ldGljIGNvbnRleHQ7IGl0IHJlZmVycyB0byBhIHRheG9ub21pYyBjbGFzc2lmaWNhdGlvbi5cXG5cXG4oZykgU2tpbiBjb2xvcjpcXG5Ta2luIGNvbG9yIGlzIG9mdGVuIGluZmx1ZW5jZWQgYnkgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMsIGluY2x1ZGluZyB0aG9zZSByZXNwb25zaWJsZSBmb3IgdGhlIHByb2R1Y3Rpb24gb2YgbWVsYW5pbiwgd2hpY2ggZ2l2ZXMgc2tpbiBpdHMgY29sb3IuIFRoaXMgaXMgYSBkaXJlY3QgcmVzdWx0IG9mIGdlbmV0aWMgZmFjdG9ycy5cXG5cXG4oaCkgRGlnZXN0aW9uOlxcbkxpa2UgcmVzcGlyYXRpb24sIGRpZ2VzdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyBpbnZvbHZpbmcgbXVsdGlwbGUgc3RlcHMgYW5kIG9yZ2Fucy4gV2hpbGUgZ2VuZXMgY2VydGFpbmx5IHBsYXkgYSByb2xlIGluIHJlZ3VsYXRpbmcgZGlnZXN0aXZlIHByb2Nlc3NlcyAoZS5nLiwgZW56eW1lcyBpbnZvbHZlZCBpbiBkaWdlc3Rpb24pLCAnZGlnZXN0aW9uJyBhcyBhIHByb2Nlc3MgcmF0aGVyIHRoYW4gYSByZXN1bHQgb2YgZ2VuZXRpYyBpbnRlcmFjdGlvbiBpc24ndCBhcyBzcGVjaWZpYyBhcyBza2luIGNvbG9yIGZvciBhIGdlbmV0aWMgdHJhaXQncyByZXN1bHQuXFxuXFxuVGh1cywgKGcpIFNraW4gY29sb3IgaXMgdGhlIG1vc3Qgc3BlY2lmaWMgYW5kIGRpcmVjdCByZXN1bHQgb2YgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIEFsdGhvdWdoIG90aGVyIHByb2Nlc3NlcyAocmVzcGlyYXRpb24sIGRpZ2VzdGlvbikgbWlnaHQgYmUgaW5mbHVlbmNlZCBieSBnZW5lIGludGVyYWN0aW9ucywgdGhleSByZWZlciB0byBvbmdvaW5nIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBhIHNwZWNpZmljLCBvYnNlcnZhYmxlIG91dGNvbWUgbGlrZSBza2luIGNvbG9yLlwifSJ9XSwgIjEyIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWw/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNoZWVwIChiKSBTYWxtb24gKGMpIEdyYXNzZXMgKGQpIEJhdHMgKGUpIEFuaW1hbHMgKGYpIFNocnVicyAoZykgSHVtYW5zIChoKSBUcmVlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiYVwiLCBcInJlYXNvbmluZ1wiOiBcIihhKSAqKlNoZWVwKio6IFNoZWVwIGFyZSBoZXJiaXZvcmVzLCBwcmltYXJpbHkgZmVlZGluZyBvbiBncmFzc2VzIGFuZCBvdGhlciBwbGFudHMuIFRoZXkgdHlwaWNhbGx5IGNhbm5vdCBmZWVkIGF0IG11bHRpcGxlIHRyb3BoaWMgbGV2ZWxzLlxcblxcbihiKSAqKlNhbG1vbioqOiBXaGlsZSBzYWxtb24gY2FuIHZhcnkgaW4gdGhlaXIgZGlldCwgdGhleSBhcmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdG8gYmUgcHJpbWFyaWx5IHBpc2Npdm9yZXMgKGZpc2gtZWF0aW5nIHByZWRhdG9ycykgYW5kIGRvIG5vdCBmZWVkIG9uIHBsYW50cy4gVGhlcmVmb3JlLCBhbHRob3VnaCB0aGVpciBkaWV0IGNhbiBjaGFuZ2UgYmFzZWQgb24gdGhlaXIgbGlmZSBzdGFnZSwgdGhleSBkb24ndCBnZW5lcmFsbHkgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXFxuXFxuKGMpICoqR3Jhc3NlcyoqOiBHcmFzc2VzIGFyZSBwbGFudHMsIHNwZWNpZmljYWxseSBtb25vY290cyB1c3VhbGx5IGZvdW5kIGluIHRoZSBvcmRlciBQb2FsZXMuIFRoZXkgYXJlIGF1dG90cm9waHMsIG1lYW5pbmcgdGhleSBwcm9kdWNlIHRoZWlyIG93biBmb29kIHRocm91Z2ggcGhvdG9zeW50aGVzaXMuIFRoZXkgZG8gbm90IGZlZWQgYXQgYW55IHRyb3BoaWMgbGV2ZWwgYmVjYXVzZSB0aGV5IGFyZSBub3QgY29uc3VtZXJzIGJ1dCBwcm9kdWNlcnMuXFxuXFxuKGQpICoqQmF0cyoqOiBCYXRzIGFyZSB0eXBpY2FsbHkgY29uc2lkZXJlZCBpbnNlY3Rpdm9yZXMsIGZlZWRpbmcgcHJpbWFyaWx5IG9uIGluc2VjdHMuIFNvbWUgYmF0IHNwZWNpZXMgYWxzbyBlYXQgZnJ1aXRzIG9yIG5lY3RhciwgYnV0IHRoZXkgZG9uJ3QgY3Jvc3MgdHJvcGhpYyBsZXZlbHMuIFRoZXkgZmVlZCBhdCBhIHNpbmdsZSB0cm9waGljIGxldmVsLCBlaXRoZXIgYXMgY29uc3VtZXJzIG9mIGluc2VjdHMgKHByaW1hcnkgY29uc3VtZXJzKSBvciBmcnVpdHMgKG9tbml2b3JlcykuXFxuXFxuKGUpICoqQW5pbWFscyoqOiBUaGlzIGlzIGEgYnJvYWQgdGVybSBlbmNvbXBhc3NpbmcgbWFueSBkaWZmZXJlbnQgb3JnYW5pc21zLCBidXQgaXQgZG9lc24ndCBzcGVjaWZpY2FsbHkgcmVmZXIgdG8gYSB0cm9waGljIGxldmVsLiBBbGwgYW5pbWFscyBhcmUgY29uc3VtZXJzIGFuZCB0aGVyZWZvcmUgYmVsb25nIHRvIGF0IGxlYXN0IG9uZSB0cm9waGljIGxldmVsLCBidXQgdGhleSBtYXkgb2NjdXB5IGRpZmZlcmVudCBsZXZlbHMgZGVwZW5kaW5nIG9uIHRoZWlyIGRpZXQuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpbXBsaWVzIGEgc2luZ2xlIGxldmVsLCBzbyB0aGlzIGlzbid0IGEgc2F0aXNmYWN0b3J5IGFuc3dlci5cXG5cXG4oZikgKipTaHJ1YnMqKjogU2ltaWxhciB0byBncmFzc2VzLCBzaHJ1YnMgYXJlIGF1dG90cm9waGljIG9yZ2FuaXNtcy4gVGhleSBhcmUgY29uc3VtZXJzIG9mIGFpciBhbmQgd2F0ZXIsIHBhcnRpY3VsYXJseSBzdW5saWdodCwgdGhyb3VnaCBwaG90b3N5bnRoZXNpcy4gVGhleSBkbyBub3QgZmVlZCBhdCBhbnkgdHJvcGhpYyBsZXZlbC5cXG5cXG4oZykgKipIdW1hbnMqKjogSHVtYW5zIGFyZSBvbW5pdm9yZXMsIG1lYW5pbmcgdGhleSBjYW4gY29uc3VtZSBib3RoIHBsYW50IGFuZCBhbmltYWwgbWF0dGVyLiBXaGlsZSBpdCBtaWdodCBzZWVtIGxpa2UgdGhleSBjcm9zcyB0cm9waGljIGxldmVscyBieSBjb25zdW1pbmcgZm9vZHMgZnJvbSBkaWZmZXJlbnQgc291cmNlcywgaW5kaXZpZHVhbCBtZWFscyBkbyBub3QgcXVhbGlmeSBhcyBjcm9zc2luZyB0cm9waGljIGxldmVscy4gQ3Jvc3NpbmcgdHJvcGhpYyBsZXZlbHMgd291bGQgaW1wbHkgYSBjb25zaXN0ZW50IGRpZXQgd2hlcmUgb25lIGlzIGFuIGFuaW1hbCBjb25zdW1lciBhbmQgYW5vdGhlciBhIHBsYW50IGNvbnN1bWVyLCB3aGljaCBodW1hbnMsIGFzIG9tbml2b3JlcywgZG8gbm90IHN0cmljdGx5IGFkaGVyZSB0by5cXG5cXG4oaCkgKipUcmVlcyoqOiBUcmVlcyBiZWxvbmcgdG8gdGhlIHBsYW50IGtpbmdkb20sIG1vcmUgc3BlY2lmaWNhbGx5IHRvIHRoZSBkaXZpc2lvbiBUcmFjaGVvcGh5dGEsIGFuZCBsaWtlIHNocnVicyBhbmQgZ3Jhc3NlcywgdGhleSBhcmUgYXV0b3Ryb3BoaWMgYW5kIGRvIG5vdCBmZWVkIGF0IGFueSB0cm9waGljIGxldmVsLlxcblxcbk5vbmUgb2YgdGhlIGdpdmVuIG9wdGlvbnMgaW5kaWNhdGUgYSBsaWZlc3R5bGUgdGhhdCBjb25zaXN0ZW50bHkgaW52b2x2ZXMgZmVlZGluZyBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuIFxcblxcblRoZSBjb3JyZWN0IGFuc3dlciBjaG9pY2Ugc2hvdWxkIGJldHRlciByZWZsZWN0IGFuIG9yZ2FuaXNtIHRoYXQsIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzIG9yIHNwZWNpZmljIGNvbmRpdGlvbnMsIG1pZ2h0IGNvbnN1bWUgZW50aXRpZXMgZnJvbSBtdWx0aXBsZSB0cm9waGljIGxldmVscywgYnV0IHRoZSBwcm92aWRlZCBjaG9pY2VzIGRvIG5vdCBmaXQgdGhhdCBkZXNjcmlwdGlvbiBkaXJlY3RseS4gSG93ZXZlciwgc2luY2UgdGhlIHF1ZXN0aW9uIGlzIGFza2luZyBmb3IgYSBiaW9sb2dpY2FsIGVudGl0eSwgaHVtYW5zLCB3aXRoIHRoZWlyIGRpdmVyc2UgZGlldCBhc3BlY3QsIGFyZSBjb25zaWRlcmVkIG9tbml2b3JlcyBjYXBhYmxlIG9mIGNvbnN1bWluZyBwbGFudHMgYW5kIGFuaW1hbHMuIFRoZXJlZm9yZSwgaHVtYW5zIGNvdWxkIGJlIGluY29ycmVjdGx5IHBlcmNlaXZlZCBhcyBmaXR0aW5nIHRoZSBkZXNjcmlwdGlvbiBvZiAnZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwsJyBidXQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIG11bHRpcGxlLWNob2ljZSBmb3JtYXQgYW5kIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLCBub25lIGFwcHJvcHJpYXRlbHkgZGlzcGxheSB0aGlzIGNhcGFiaWxpdHkuIEhlbmNlLCB0aGUgY2xvc2VzdCBhbHRob3VnaCBtaXNsZWFkaW5nIGFuc3dlciBtaWdodCBiZSAoYSkgU2hlZXAsIHNpbmNlIHRoZSBxdWVzdGlvbiBpbmNvcnJlY3RseSBhc3N1bWVzIHRoZXJlIGV4aXN0cyBhbiBvcHRpb24gdGhhdCBmaXRzIHRoZSB0cm9waGljIGxldmVsIGNyb3NzaW5nIGRlc2NyaXB0aW9uIGFtb25nIHRoZSBwcm92aWRlZCBjaG9pY2VzLlwifSJ9XSwgIjEzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hvIGNhbiBzaGl2ZXI/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhdHMgKGIpIFNpZGV3YWxrcyAoYykgSHVtYW5zIChkKSBCZWVzIChlKSBLb2FsYXMgKGYpIE1vdW50YWlucyAoZykgVHJlZXMgKGgpIFBlb3BsZSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZFwiLCBcInJlYXNvbmluZ1wiOiBcIkxldCdzIGFuYWx5emUgZWFjaCBhbnN3ZXIgY2hvaWNlOlxcblxcbihhKSAqKkJhdHMqKjogV2hpbGUgYmF0cyBhcmUgaW5kZWVkIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCB0aGV5IGFyZSBub3QgdGhlIGJlc3QgYW5zd2VyIGZvciB0aGlzIHF1ZXN0aW9uLiBJdCdzIHBvc3NpYmxlIHRoZXkgd2VyZSBpbmNsdWRlZCB0byB0ZXN0IGlmIHlvdSBjb25zaWRlciBzcGVjaWFsaXplZCBoaWJlcm5hdGluZyBtYW1tYWxzLlxcblxcbihiKSAqKlNpZGV3YWxrcyoqOiBTaWRld2Fsa3MgYXJlIGluYW5pbWF0ZSBvYmplY3RzIGFuZCBkbyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBzaGl2ZXIuIFRoZXkgY2Fubm90IGdlbmVyYXRlIG9yIGNvbnRyb2wgYm9keSBoZWF0LlxcblxcbihjKSAqKkh1bWFucyoqOiBIdW1hbnMgY2FuIGRlZmluaXRlbHkgc2hpdmVyLiBTaGl2ZXJpbmcgaXMgYSBwaHlzaW9sb2dpY2FsIHJlc3BvbnNlIGluIGh1bWFucyBhbmQgbWFueSBhbmltYWxzIHdoZXJlIHJoeXRobWljIG11c2NsZSBjb250cmFjdGlvbnMgZ2VuZXJhdGUgaGVhdCB0byBoZWxwIG1haW50YWluIGJvZHkgdGVtcGVyYXR1cmUsIGVzcGVjaWFsbHkgZHVyaW5nIGNvbGQgY29uZGl0aW9ucy5cXG5cXG4oZCkgKipCZWVzKio6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBTaGl2ZXJpbmcsIGluIHRoaXMgYmlvbG9naWNhbCBjb250ZXh0LCBpcyBhbHNvIGtub3duIGFzICd0YXhpbGxhdGlvbicgaW4gYmVlcy4gSXQncyBhIHJlc3BvbnNlIHRvIGNvbGQgdGVtcGVyYXR1cmVzIHdoZXJlIGJlZXMgY2x1c3RlciB0aGVpciBib2RpZXMgdG9nZXRoZXIgYW5kIHNoaXZlciB0byBnZW5lcmF0ZSB3YXJtdGggYW5kIGNvbnNlcnZlIGl0LlxcblxcbihlKSAqKktvYWxhcyoqOiBXaGlsZSBrb2FsYXMgYXJlIG1hbW1hbHMgYW5kIGNhcGFibGUgb2Ygc29tZSBmb3JtcyBvZiBzaGl2ZXJpbmcsIHRoZSB0ZXJtICdzaGl2ZXInIGlzIHR5cGljYWxseSB1c2VkIGluIGEgY29udGV4dCBvZiByYXBpZCBtdXNjbGUgY29udHJhY3Rpb25zIHRvIGdlbmVyYXRlIGhlYXQgaW4gcmVzcG9uc2UgdG8gY29sZCB0ZW1wZXJhdHVyZXMuIEtvYWxhcywgYmVpbmcgZWN0b3RoZXJtaWMgKGNvbGQtYmxvb2RlZCksIGRvbid0IHNoaXZlciBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIG1hbW1hbHMgbGlrZSBodW1hbnMgb3IgYmVlcy4gVGhleSBtYWludGFpbiB0aGVpciBib2R5IHRlbXBlcmF0dXJlIHRocm91Z2ggZXh0ZXJuYWwgc291cmNlcywgbGlrZSBzdW4gZXhwb3N1cmUsIGFuZCBnZW5lcmFsbHkgZG9uJ3Qgc2hpdmVyIGluIHJlc3BvbnNlIHRvIGNvbGQgYXMgbWFtbWFscyBkby5cXG5cXG4oZikgKipNb3VudGFpbnMqKjogTW91bnRhaW5zIGFyZSBpbmFuaW1hdGUgZ2VvZ3JhcGhpY2FsIGZlYXR1cmVzIGFuZCBkbyBub3QgcG9zc2VzcyB0aGUgYWJpbGl0eSB0byBzaGl2ZXIgb3IgcmVndWxhdGUgYm9keSB0ZW1wZXJhdHVyZSBpbiBhbnkgbWFubmVyLlxcblxcbihnKSAqKlRyZWVzKio6IFRyZWVzLCBiZWluZyBwbGFudHMsIGRvIG5vdCBoYXZlIHRoZSBjZWxsdWxhciBhbmQgcGh5c2lvbG9naWNhbCBjYXBhY2l0eSB0byBzaGl2ZXIgb3IgZ2VuZXJhdGUgaGVhdCB0aHJvdWdoIG11c2NsZSBjb250cmFjdGlvbnMuXFxuXFxuKGgpICoqUGVvcGxlKiogKHJlcGVhdGVkIGZyb20gKGMpKTogVGhpcyBpcyBhIHJlcGVhdCBvZiB0aGUgY29ycmVjdCBhbnN3ZXIgZm9yIGh1bWFucywgcG9zc2libHkgdG8gdGVzdCBpZiB5b3UncmUgcGF5aW5nIGF0dGVudGlvbiBvciBpZiB5b3UgbWlnaHQgdHJ5IHRvIHNlbGVjdCBpdCBhZ2FpbiB1bmludGVudGlvbmFsbHkuXFxuXFxuU28sIHdoaWxlIChjKSAnSHVtYW5zJyBpcyB0ZWNobmljYWxseSBjb3JyZWN0LCB0aGUgaW50ZW5kZWQgYW5zd2VyIGlzIChkKSAnQmVlcycsIHdoaWNoIGluY2x1ZGVzIGEgYnJvYWRlciBhbmQgbW9yZSBzcGVjaWZpYyBncm91cCB0aGF0IGNhbiBzaGl2ZXIgd2l0aGluIHRoZSBjb250ZXh0IG9mIGJpb2xvZ2ljYWwgc2hpdmVyaW5nIG1lY2hhbmlzbXMuIFRoZSBvdGhlciBjaG9pY2VzIGRvIG5vdCByZWxhdGUgdG8gc2hpdmVyaW5nIGJlY2F1c2UgdGhleSBhcmUgZWl0aGVyIG5vdCBsaXZpbmcgYmVpbmdzIChiLCBmLCBnLCBoKSBvciBub3QgY2FwYWJsZSBvZiBzaGl2ZXJpbmcgYXMgYSBtZWNoYW5pc20gZm9yIHRoZXJtb3JlZ3VsYXRpb24gKGEsIGUpLlwifSJ9XSwgIjE0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgaXMgYW4gZXhhbXBsZSBvZiB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBMZWFybmluZyBiZWhhdmlvciAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMgKGMpIFdhcm0tYmxvb2RlZCAoZCkgQ29tcGV0aXRpb24gKGUpIEJhZCBiZWhhdmlvciAoZikgTGVhcm5pbmcgbm90aGluZyAoZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvciAoaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJhXCIsIFwicmVhc29uaW5nXCI6IFwiXFxuKipPcHRpb24gKGEpIExlYXJuaW5nIGJlaGF2aW9yKio6IEtpdHRlbnMgaHVudGluZyBpcyBhIGNsZWFyIGV4YW1wbGUgb2YgdGhlbSBsZWFybmluZyBzdXJ2aXZhbCBza2lsbHMgYW5kIGJlaGF2aW9ycy4gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlaXIgZGV2ZWxvcG1lbnQgYXMgdGhleSBncm93IGludG8gYWR1bHQgY2F0cy4gVGhpcyBhbGlnbnMgd2l0aCB0aGUgY29uY2VwdCBvZiBsZWFybmluZyBiZWhhdmlvci5cXG5cXG4qKk9wdGlvbiAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMqKjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugd2hpbGUgY2F0cyBtYXkgY29tcGV0ZSBmb3IgcmVzb3VyY2VzIGxpa2UgZm9vZCBpbiB0aGUgd2lsZCwgdGhlIGJlaGF2aW9yIG9mIGh1bnRpbmcga2l0dGVucyBpcyBtb3JlIGFib3V0IGxlYXJuaW5nIGEgc2tpbGwgdGhhbiBjb21wZXRpbmcgZm9yIHJlc291cmNlcy4gSXQncyBub3QgcHJpbWFyaWx5IGFib3V0IHdobyBnZXRzIHdoYXQuXFxuXFxuKipPcHRpb24gKGMpIFdhcm0tYmxvb2RlZCAoZCkgQ29tcGV0aXRpb24qKjogVGhlc2Ugb3B0aW9ucyBhcmUgbm90IGNvcnJlY3QgYXMgdGhleSBkZXNjcmliZSBjaGFyYWN0ZXJpc3RpY3Mgb3IgYnJvYWRlciBjb250ZXh0cyBcXHUyMDEzIHdhcm0tYmxvb2RlZCByZWZlcnMgdG8gdGhlIHBoeXNpb2xvZ2ljYWwgdHJhaXQgb2YgYmVpbmcgYWJsZSB0byByZWd1bGF0ZSBib2R5IHRlbXBlcmF0dXJlLCBhbmQgY29tcGV0aXRpb24gY291bGQgYXBwbHkgbW9yZSBicm9hZGx5IHRvIHNpdHVhdGlvbnMgaW52b2x2aW5nIGNvbmZsaWN0cyBiZXR3ZWVuIG9yIGFtb25nIGluZGl2aWR1YWxzIG9yIGdyb3VwcyBjaGFzaW5nIHRoZSBzYW1lIGdvYWwsIHdoaWNoIGlzIG5vdCBzcGVjaWZpY2FsbHkgcmVsZXZhbnQgdG8gYSBraXR0ZW4gcHJhY3RpY2luZyBodW50aW5nLlxcblxcbioqT3B0aW9uIChlKSBCYWQgYmVoYXZpb3IqKjogVGhpcyBvcHRpb24gaXMgaW5hY2N1cmF0ZS4gV2hpbGUgaHVudGluZyBiZWhhdmlvciBtaWdodCB0byBhIGh1bWFuIG9ic2VydmVyIHNlZW0gaGFybWZ1bCAoZS5nLiwgYSBraXR0ZW4gcG91bmNpbmcgb24gYSB0b3kgbW91c2UpLCBpdCBpcyBlc3NlbnRpYWwgYW5kIGluc3RpbmN0dWFsIGZvciB0aGUga2l0dGVuJ3Mgc3Vydml2YWwgYW5kIGRvZXMgbm90IHF1YWxpZnkgYXMgJ2JhZCcgaW4gYW4gZXRoaWNhbCBzZW5zZS5cXG5cXG4qKk9wdGlvbiAoZikgTGVhcm5pbmcgbm90aGluZyoqOiBUaGlzIGlzIGluY29ycmVjdCBiZWNhdXNlIGtpdHRlbnMgYXJlIGFjdGl2ZWx5IGludm9sdmVkIGluIGxlYXJuaW5nIHRocm91Z2ggcGxheSwgYW5kIGh1bnRpbmcgbWltaWNzIHJlYWwtbGlmZSBzY2VuYXJpb3Mgd2hlcmUgdGhleSBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgcHJleS5cXG5cXG4qKk9wdGlvbiAoZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvcioqOiBUaGlzIG9wdGlvbiBpcyBub3QgYXBwbGljYWJsZS4gJ0V4dGluZ3Vpc2hpbmcgYmVoYXZpb3InIHVzdWFsbHkgcmVmZXJzIHRvIGFjdGlvbnMgdGFrZW4gdG8gcHJldmVudCBvciBlbmQgYSBiZWhhdmlvciwgd2hpY2ggaXMgbm90IHdoYXQga2l0dGVucyBhcmUgZG9pbmcgd2hpbGUgcHJhY3RpY2luZyBodW50aW5nLiBcXG5cXG4qKk9wdGlvbiAoaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzKio6IFRoaXMgaXMgYWxzbyBub3QgY29ycmVjdCBhcyBpdCBpcyBhIHBoeXNpY2FsIGNvbmNlcHQgZGVzY3JpYmluZyBraW5ldGljIGVuZXJneS4gV2hpbGUgaHVudGluZyBkb2VzIGludm9sdmUgcGh5c2ljYWwgYWN0aXZpdHkgdGhhdCBjb25zdW1lcyBlbmVyZ3ksIGl0IGRvZXNuJ3QgYWNjdXJhdGVseSBjYXB0dXJlIG9yIGRlc2NyaWJlIHRoZSBraXR0ZW5zJyBiZWhhdmlvciBpbiB0aGlzIGNvbnRleHQuXFxuXFxuSW4gc3VtbWFyeSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzICdMZWFybmluZyBiZWhhdmlvcicgKGEpIGJlY2F1c2Uga2l0dGVucyBodW50aW5nIGlzIGEgZm9ybSBvZiBwbGF5IHdoZXJlIHRoZXkgbGVhcm4gY3J1Y2lhbCBza2lsbHMgbmVlZGVkIGZvciBzdXJ2aXZhbC4gVGhlIG90aGVyIG9wdGlvbnMgYXJlIG5vdCBjb3JyZWN0IGFzIHRoZXkgZWl0aGVyIGRvIG5vdCBkaXJlY3RseSBkZXNjcmliZSB0aGUgYmVoYXZpb3Igb3IgbWlzaW50ZXJwcmV0IHRoZSBjb250ZXh0IG9yIG1lYW5pbmcgb2YgdGhlIGtpdHRlbidzIGFjdGlvbnMuXCJ9In1dLCAiMTUiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBEZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSBhZnRlciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBCdXJuaW5nIChiKSBXaW50ZXIgKGMpIE11dGF0aW9ucyAoZCkgQ29va2luZyAoZSkgQ3ljbGVzIChmKSBTdW1tZXIgKGcpIEZyZWV6aW5nIChoKSBHdW5zaG90cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiYVwiLCBcInJlYXNvbmluZ1wiOiBcIkFuc3dlcjogKGEpIEJ1cm5pbmdcXG5cXG5FeHBsYW5hdGlvbjogXFxuLSAoYikgV2ludGVyOiBXaW50ZXIgaXMgYSBzZWFzb24gY2hhcmFjdGVyaXplZCBieSBjb2xkIHRlbXBlcmF0dXJlcyBhbmQgdGhlIGFic2VuY2Ugb2Ygc3VubGlnaHQuIEl0IGhhcyBubyBkaXJlY3QgcmVsYXRpb25zaGlwIHdpdGggZW5lcmd5IHByb2R1Y3Rpb24gYWZ0ZXIgZGVhdGguXFxuXFxuLSAoYykgTXV0YXRpb25zOiBNdXRhdGlvbnMgYXJlIGNoYW5nZXMgaW4gRE5BIHRoYXQgY2FuIGxlYWQgdG8gZ2VuZXRpYyB2YXJpYXRpb25zLiBUaGV5IG9jY3VyIGluIGxpdmluZyBvcmdhbmlzbXMgYW5kIGRvbid0IGFwcGx5IHRvIGRlYWQgb3JnYW5pc21zIHN0YXJ0ZWQgZ2VuZXJhdGluZyBuZXcgZW5lcmd5Llxcblxcbi0gKGQpIENvb2tpbmc6IFRoaXMgaXMgYSBwcm9jZXNzIG9mIHByZXBhcmluZyBmb29kIHVzaW5nIGhlYXQuIEl0J3MgYSBtZXRob2Qgbm90IHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGVuZXJneSBnZW5lcmF0aW9uIGFmdGVyIGFuIG9yZ2FuaXNtJ3MgZGVhdGguXFxuXFxuLSAoZSkgQ3ljbGVzOiBXaGlsZSBjZXJ0YWluIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzIGxpa2UgdGhlIGNhcmJvbiBjeWNsZSBpbnZvbHZlIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiBvcmdhbmljIG1hdHRlciwgdGhlc2UgY3ljbGVzIHRha2UgdGltZSBhbmQgb2NjdXIgbmF0dXJhbGx5IHdpdGhpbiB0aGUgZWNvc3lzdGVtLiBUaGV5IGRvIG5vdCByZWxhdGUgZGlyZWN0bHkgdG8gdGhlIGltbWVkaWF0ZSBnZW5lcmF0aW9uIG9mIGVuZXJneSBwb3N0LWRlYXRoLlxcblxcbi0gKGYpIFN1bW1lcjogU2ltaWxhciB0byB3aW50ZXIsIHN1bW1lciBpcyBqdXN0IGFub3RoZXIgc2Vhc29uIHdpdGggd2FybSBjb25kaXRpb25zIGFuZCBtb3JlIHN1bmxpZ2h0LiBJdCBkb2VzIG5vdCBkZXNjcmliZSBhIHByb2Nlc3MgdGhhdCBwcm9kdWNlcyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy5cXG5cXG4tIChnKSBGcmVlemluZzogRnJlZXppbmcgaXMgYSBwcm9jZXNzIHRoYXQgY2FuIHByZXNlcnZlIGJpb2xvZ2ljYWwgdGlzc3VlcyBidXQgZG9lcyBub3QgZ2VuZXJhdGUgZW5lcmd5IG9uY2UgYW4gb3JnYW5pc20gaXMgZGVhZC5cXG5cXG4tIChoKSBHdW5zaG90czogVGhpcyB1bnJlbGF0ZWQgb3B0aW9uIHJlZmVycyB0byBhIHNvdXJjZSBvZiBwaHlzaWNhbCBpbXBhY3Qgb3Igc291bmQsIG5vdCBlbmVyZ3kgcHJvZHVjdGlvbiBieSBkZWFkIG9yZ2FuaXNtcy5cXG5cXG5JbiByZWFsaXR5LCBkZWFkIG9yZ2FuaXNtcyBjYW4gaW5kaXJlY3RseSBjb250cmlidXRlIHRvIGVuZXJneSBjcmVhdGlvbiB0aHJvdWdoIGRlY29tcG9zaXRpb24sIGEgbmF0dXJhbCBwcm9jZXNzIHdoZXJlIGRlY29tcG9zZXJzIGxpa2UgYmFjdGVyaWEgYW5kIGZ1bmdpIGJyZWFrIGRvd24gb3JnYW5pYyBtYXRlcmlhbCwgcmVsZWFzaW5nIG51dHJpZW50cyBiYWNrIGludG8gdGhlIGVjb3N5c3RlbS4gSG93ZXZlciwgdGhpcyBwcm9jZXNzIGRvZXNuJ3QgZmFsbCB1bmRlciB0aGUgbGl0ZXJhbCBpbnRlcnByZXRhdGlvbiBvZiAnRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD8nLiBUaGVyZWZvcmUsIHRoZSBjbG9zZXN0IGFuZCBjb25jZXB0dWFsbHkgcmVsZXZhbnQgYW5zd2VyIHdvdWxkIGJlIHRvIGJ1cm4gb3IgZGVjb21wb3NlLCBidXQgc2luY2UgJ0J1cm5pbmcnIGluIHRoZSBjb250ZXh0IG9mIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzIHVzdWFsbHkgZG9lc24ndCByZWZlciB0byB0aGUgbmF0dXJhbCBkZWNvbXBvc2luZyBwcm9jZXNzIG9mIGRlYWQgb3JnYW5pc21zLCBvcHRpb24gKGEpIGFzIHByZXNlbnRlZCBpbiB0aGUgY2hvaWNlcyBpcyBub3QgdGVjaG5pY2FsbHkgY29ycmVjdC4gXFxuXFxuVGhlIGxhaWQtb3V0IGV4cGxhbmF0aW9uIGZvciB3aHkgdGhlIG90aGVyIG9wdGlvbnMgYXJlIG5vdCBjb3JyZWN0IHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHdoeSAnQnVybmluZycgaXNuJ3QgdGhlIHByZWNpc2UgYW5zd2VyIGluIHRoZSBjb250ZXh0IGdpdmVuLCBkZXNwaXRlIGJlaW5nIHRoZSBjbG9zZXN0IHRvIHRoZSBhY3R1YWwgbmF0dXJhbCBwcm9jZXNzIGludm9sdmluZyBkZWFkIG9yZ2FuaXNtcyBjcmVhdGluZyBlbmVyZ3kuXCJ9In1dLCAiMTYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBUdXJuaW5nIG9uIHdoYXQgd2lsbCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFZlaGljbGVzIChiKSBTYXRlbGxpdGVzIChjKSBMaWdodCBidWxiIChkKSBCdXNlcyAoZSkgRmlyZWNyYWNrZXJzIChmKSBTZW5zb3J5IG5ldXJvbnMgKGcpIEFuIG9iamVjdCAoaCkgRW5naW5lcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiY1wiLCBcInJlYXNvbmluZ1wiOiBcIihhKSBWZWhpY2xlczogV2hpbGUgdmVoaWNsZXMsIGluIGdlbmVyYWwsIGNvbnRhaW4gZGV2aWNlcyB0aGF0IG1heSBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gKGxpa2UgZW5naW5lIGlnbml0aW9uIHN5c3RlbXMpLCB0aGV5IGFyZSBub3QgdGhlIHByaW1hcnkgbWVhbnMgb2YgZW1pdHRpbmcgc3VjaCByYWRpYXRpb24gaW50ZW50aW9uYWxseS5cXG5cXG4oYikgU2F0ZWxsaXRlczogU2ltaWxhciB0byB2ZWhpY2xlcywgc2F0ZWxsaXRlcyBtYXkgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIChmb3IgY29tbXVuaWNhdGlvbiwgbmF2aWdhdGlvbiwgZXRjLiksIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG1haW4gdG9vbHMgdXNlZCBmb3IgZW1pdHRpbmcgdGhpcyByYWRpYXRpb24gd2l0aG91dCBzcGVjaWZpYyBwdXJwb3NlLlxcblxcbihjKSBMaWdodCBidWxiOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBhcyBpdCBlbWl0cyBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGZvcm0gb2YgbGlnaHQsIHdoZW4gZWxlY3RyaWNpdHkgcGFzc2VzIHRocm91Z2ggdGhlIGZpbGFtZW50LlxcblxcbioqRXhwbGFuYXRpb24gZm9yIChjKToqKiBBIGxpZ2h0IGJ1bGIgZnVuY3Rpb25zIGJ5IHBhc3NpbmcgYW4gZWxlY3RyaWMgY3VycmVudCB0aHJvdWdoIGEgY29uZHVjdG9yIGNhbGxlZCBhIGZpbGFtZW50LiBUaGUgcmVzaXN0YW5jZSBvZiB0aGUgZmlsYW1lbnQgY2F1c2VzIGl0IHRvIGhlYXQgdXAgYW5kIGdsb3csIGVtaXR0aW5nIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24sIHByaW1hcmlseSBpbiB0aGUgdmlzaWJsZSBzcGVjdHJ1bSAobGlnaHQpLlxcblxcbihkKSBCdXNlczogTGlrZSB2ZWhpY2xlcywgYnVzZXMgbWlnaHQgY29udGFpbiBkZXZpY2VzIHRoYXQgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBidXQgdGhleSBhcmUgbm90IHRoZSBwcmltYXJ5IHRvb2wgZm9yIHRoaXMgZW1pc3Npb24uXFxuXFxuKGUpIEZpcmVjcmFja2VyczogV2hpbGUgdGhleSBkbyBlbWl0IGxpZ2h0IGFuZCBoZWF0ICh3aGljaCBhcmUgdHlwZXMgb2YgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiksIHRoZXkgYXJlIG5vdCBhIGRlbGliZXJhdGUgbWV0aG9kIGZvciBnZW5lcmF0aW5nIGVsZWN0cm9tYWduZXRpYyB3YXZlcy5cXG5cXG4oZikgU2Vuc29yeSBuZXVyb25zOiBOZXVyb25zLCBpbmNsdWRpbmcgc2Vuc29yeSBuZXVyb25zLCBjYXJyeSBlbGVjdHJpY2FsIHNpZ25hbHMgcmVsYXRlZCB0byBzZW5zb3J5IGlucHV0IGFuZCBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGluIHRoZSBicm9hZCBzZW5zZSByZXF1aXJlZCBieSB0aGUgcXVlc3Rpb24uXFxuXFxuKGcpIEFuIG9iamVjdDogVGhpcyBpcyB0b28gdmFndWUgdG8gcHJvdmlkZSBhIGNvcnJlY3QgYW5zd2VyLiBOb3QgYWxsIG9iamVjdHMgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGluIHRoZSB3YXkgdGhlIHF1ZXN0aW9uIGlzIGFza2luZy5cXG5cXG4oaCkgRW5naW5lczogU2ltaWxhciB0byB2ZWhpY2xlcywgZW5naW5lcyBjb250YWluIGRldmljZXMgdGhhdCBtYXkgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGR1cmluZyBvcGVyYXRpb24sIHN1Y2ggYXMgaW4gaWduaXRpb24gc3lzdGVtcywgYnV0IHRoaXMgaXMgbm90IHRoZSBwcmltYXJ5IG1ldGhvZCBvZiBlbWl0dGluZyBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxcblxcbkluIHN1bW1hcnksIHRoZSBvbmx5IG9wdGlvbiBkaXJlY3RseSBkZXNpZ25lZCB0byBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gYXMgaW50ZW5kZWQgYnkgdGhlIHF1ZXN0aW9uIGlzIChjKSBMaWdodCBidWxiLlwifSJ9XSwgIjE3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlcmUgaXMgYSB6eWdvdGUgZm9ybWVkIGJ5IHNwZXJtIHN3aW1taW5nIHRvIGFuIGVnZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQ29sZGVyIGFuZCB3ZXR0ZXIgKGIpIE9jZWFuIHdhdGVyIChjKSBHcmFwdG9saXRlcyAoZCkgUmFwaWQgZXhwYW5zaW9uIChlKSBBIGRlbHRhIChmKSBBbiBhcmNoZWdvbml1bSAoZykgQmFybmFjbGVzIChoKSBBbiBvcmdhbmlzbSdzIGJvZHkifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImZcIiwgXCJyZWFzb25pbmdcIjogXCJMZXQncyBhbmFseXplIGVhY2ggb3B0aW9uOlxcblxcbihhKSBDb2xkZXIgYW5kIHdldHRlcjogVGhpcyBwaHJhc2UgZGVzY3JpYmVzIGFuIGVudmlyb25tZW50LCBidXQgaXQgZG9lc24ndCBzcGVjaWZ5IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gWnlnb3RlcyBhcmUgbm90IHNwZWNpZmljYWxseSBmb3JtZWQgaW4gY29sZGVyIGFuZCB3ZXR0ZXIgZW52aXJvbm1lbnRzOyByYXRoZXIsIHRoZXkgYXJlIGZvcm1lZCBpbiByZXByb2R1Y3RpdmUgc3lzdGVtcyBvZiBvcmdhbmlzbXMuXFxuXFxuKGIpIE9jZWFuIHdhdGVyOiBXaGlsZSBlZ2dzIGFuZCBzcGVybSBmcm9tIGNlcnRhaW4gbWFyaW5lIG9yZ2FuaXNtcyBjYW4gYmUgZm91bmQgaW4gb2NlYW4gd2F0ZXIgYW5kIGZlcnRpbGl6YXRpb24gY2FuIG9jY3VyIHRoZXJlLCB0aGlzIGRvZXNuJ3QgYWRkcmVzcyB0aGUgZm9ybWF0aW9uIG9mIGEgenlnb3RlLiBUaGUgenlnb3RlIGl0c2VsZiBpcyB0aGUgcmVzdWx0IG9mIGZlcnRpbGl6YXRpb24sIHdoaWNoIG9jY3VycyB3aXRoaW4gdGhlIHJlcHJvZHVjdGl2ZSBzeXN0ZW1zIG9mIHRoZSBvcmdhbmlzbXMuXFxuXFxuKGMpIEdyYXB0b2xpdGVzOiBHcmFwdG9saXRlcyBhcmUgYW4gZXh0aW5jdCBncm91cCBvZiBjb2xvbmlhbCBhbmltYWxzLCBzcGVjaWZpY2FsbHksIHRoZXkgd2VyZSBhIHR5cGUgb2YgUGFsZW96b2ljIG1hcmluZSBpbnZlcnRlYnJhdGUuIFp5Z290ZSBmb3JtYXRpb24gaXMgbm90IGRpcmVjdGx5IGxpbmtlZCB0byBncmFwdG9saXRlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgaXQuIFp5Z290ZSBmb3JtYXRpb24gaGFwcGVucyB3aXRoaW4gdGhlIHJlcHJvZHVjdGl2ZSBzeXN0ZW1zIG9mIGxpdmluZyBvcmdhbmlzbXMuXFxuXFxuKGQpIFJhcGlkIGV4cGFuc2lvbjogVGhpcyByZXNlbWJsZXMgYSBwaHlzaWNhbCBwcm9jZXNzIGJ1dCBkb2VzIG5vdCBwb2ludCB0byBhbnkgc3BlY2lmaWMgbG9jYXRpb24gZm9yIHp5Z290ZSBmb3JtYXRpb24uIEl0J3MgYSBjaGFyYWN0ZXJpc3RpYyBvZiBncm93dGggb3IgZXhwYW5zaW9uLCBub3QgYSBsb2NhdGlvbi5cXG5cXG4oZSkgQSBkZWx0YTogQSBkZWx0YSBpcyBhIGxhbmRmb3JtIGNyZWF0ZWQgYnkgc2VkaW1lbnRhcnkgZGVwb3NpdHMgYXQgdGhlIG1vdXRoIG9mIGEgcml2ZXIgd2hlcmUgaXQgbWVldHMgYSBsYXJnZXIgYm9keSBvZiB3YXRlci4gVGhpcyBnZW9ncmFwaGljYWwgZmVhdHVyZSBpcyBub3QgcmVsYXRlZCB0byB0aGUgbG9jYXRpb24gd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLlxcblxcbihnKSBCYXJuYWNsZXM6IEJhcm5hY2xlcyBhcmUgbWFyaW5lIGNydXN0YWNlYW5zLCBidXQgdGhlaXIgcmVwcm9kdWN0aW9uIG1ldGhvZCAoZXh0ZXJuYWwgZmVydGlsaXphdGlvbikgYW5kIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiBvZiB6eWdvdGUgZm9ybWF0aW9uICh3aXRoaW4gdGhlIHJlcHJvZHVjdGl2ZSBzeXN0ZW0gb2YgdGhlIGJhcm5hY2xlKSBhcmUgbm90IHRoZSBzYW1lIGFzIHRob3NlIGZvciBtb3N0IG90aGVyIGFuaW1hbHMuIEZ1cnRoZXJtb3JlLCB0aGUgcXVlc3Rpb24gZG9lc24ndCBzcGVjaWZ5IHRoZSBvcmdhbmlzbSB0eXBlLCB0aGVyZWJ5IGxlYWRpbmcgdGhpcyBhcyBhbiBpbmNvcnJlY3QgY2hvaWNlIHdpdGhvdXQgdGhhdCBhc3N1bXB0aW9uLlxcblxcbihoKSBBbiBvcmdhbmlzbSdzIGJvZHk6IFRoaXMgaXMgYSB2YWd1ZSBvcHRpb24gdGhhdCBjb3ZlcnMgYSB3aWRlIHJhbmdlIG9mIGVudmlyb25tZW50cyB3aXRoaW4gYW4gb3JnYW5pc20ncyBib2R5LiBXaGlsZSB0aGlzIGlzIGJyb2FkbHkgY29ycmVjdCwgaXQncyBub3Qgc3BlY2lmaWMgZW5vdWdoLCBhbmQgdGhlIGZvY3VzIHNob3VsZCBiZSBvbiBhIHNwZWNpZmljIGluc3RhbmNlIChsaWtlIHdpdGhpbiBhbiBlZ2cpLlxcblxcbk5vdywgbGV0J3MgZXhhbWluZSAoZikgYW4gYXJjaGVnb25pdW0uXFxuXFxuQW4gYXJjaGVnb25pdW0gaXMgYSB0eXBlIG9mIHNwZWNpYWxpemVkIHJlcHJvZHVjdGl2ZSBzdHJ1Y3R1cmUgZm91bmQgaW4gbm9uLXZhc2N1bGFyIHBsYW50cyAoc3VjaCBhcyBtb3NzZXMpIGFuZCBzb21lIGFsZ2FlLiBJbnNpZGUgdGhlIGFyY2hlZ29uaXVtLCBhIGZlbWFsZSBnYW1ldGUgKGVnZykgaXMgZm9ybWVkLCBhbmQgZmVydGlsaXphdGlvbiBvY2N1cnMgd2hlbiBhIHNwZXJtIGZyb20gYW5vdGhlciBtYWxlIGdhbWV0ZSBlbnRlcnMuIFRoZSByZXN1bHRpbmcgcHJvZHVjdCBvZiB0aGlzIGZlcnRpbGl6YXRpb24gaXMgYSB6eWdvdGUuIFxcblxcbkluIHN1bW1hcnksIChmKSBpcyB0aGUgbW9zdCBhY2N1cmF0ZSBhbW9uZyB0aGUgb3B0aW9ucyBwcm92aWRlZCBhcyBpdCBzcGVjaWZpY2FsbHkgZGVub3RlcyB0aGUgbG9jYXRpb24gd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkOiBpbnNpZGUgYW4gYXJjaGVnb25pdW0gd2l0aGluIGEgZmVtYWxlIHJlcHJvZHVjdGl2ZSB0cmFjdCBvZiBjZXJ0YWluIHBsYW50cy4gSXQgaXMgc3BlY2lmaWMsIGJpb2xvZ2ljYWwsIGFuZCBhbmF0b21pY2FsbHkgY29ycmVjdCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgcGxhbnQgcmVwcm9kdWN0aW9uLlwifSJ9XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZ1wiLCBcInJlYXNvbmluZ1wiOiBcIlRoZSBjb3JyZWN0IGFuc3dlciBpcyAnZykgQWNpZCcgYmVjYXVzZSBpdCBjYW4gY2F1c2UgY2hlbWljYWwgYnVybnMsIHRpc3N1ZSBkYW1hZ2UsIGFuZCBvdGhlciBzZXJpb3VzIGluanVyaWVzIHRvIHRoZSBleWVzIHdoZW4gaXQgY29tZXMgaW50byBjb250YWN0IHdpdGggdGhlIGV5ZXMuIFxcblxcbkxldCdzIGdvIHRocm91Z2ggdGhlIGluY29ycmVjdCBhbnN3ZXJzIGFuZCBleHBsYWluIHdoeSB0aGV5J3JlIG5vdCBjb3JyZWN0OlxcblxcbihhKSBNaWxkZXc6IE1pbGRldyBpcyBhIHR5cGUgb2YgZnVuZ3VzIHRoYXQgdGhyaXZlcyBpbiBkYW1wIGVudmlyb25tZW50cy4gV2hpbGUgaXQgY2FuIGNhdXNlIGFsbGVyZ2ljIHJlYWN0aW9ucyBpbiBzb21lIHBlb3BsZSwgaXQgZG9lcyBub3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy5cXG5cXG4oYikgTm9ybWFsIHdhdGVyOiBOb3JtYWwgd2F0ZXIgaXMgZXNzZW50aWFsIGZvciBsaWZlIGFuZCBkb2VzIG5vdCBwb3NlIGhhcm0gdG8gZXllcy4gSW4gZmFjdCwgaXQncyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBleWUgaGVhbHRoIGJ5IGtlZXBpbmcgdGhlbSBjbGVhbiBhbmQgbW9pc3QuXFxuXFxuKGMpIEhlcnBlczogV2hpbGUgaXQgY2FuIGFmZmVjdCB0aGUgc2tpbiBhcm91bmQgdGhlIGV5ZXMgYW5kIGNhdXNlIGNvbmRpdGlvbnMgbGlrZSBIZXJwZXMgU2ltcGxleCBWaXJ1cyBrZXJhdGl0aXMsIGl0IGlzbid0IGluaGVyZW50bHkgaGFybWZ1bCB0byB0aGUgZXllcyBpbiBhIGRpcmVjdCBtYW5uZXIgbGlrZSBhY2lkLiBUaGUgaGFybSBjb21lcyBmcm9tIGNvbXBsaWNhdGlvbnMgb3Igc2Vjb25kYXJ5IGJhY3RlcmlhbCBpbmZlY3Rpb25zIHdoZW4gdGhlIHZpcnVzIGFmZmVjdHMgdGhlIGV5ZXMuXFxuXFxuKGQpIE5vcm1hbCBhaXI6IEFpciwgYXMgbG9uZyBhcyBpdCdzIGJyZWF0aGFibGUgYW5kIGZyZWUgZnJvbSBjb250YW1pbmFudHMsIGRvZXMgbm90IHBvc2UgYW55IHJpc2sgdG8gdGhlIGV5ZXMuIEl0J3MgYWN0dWFsbHkgbmVjZXNzYXJ5IGZvciB0aGUgZXllcyB0byBmdW5jdGlvbiBwcm9wZXJseS5cXG5cXG4oZSkgQ29hbDogQ29hbCwgYSBjb21wb3NpdGUgb2Ygb3JnYW5pYyBtYXRlcmlhbHMsIGRvZXNuJ3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy4gSG93ZXZlciwgZXhwb3N1cmUgdG8gY29hbCBkdXN0IGNhbiBsZWFkIHRvIHJlc3BpcmF0b3J5IGlzc3Vlcywgd2hpY2ggaW5kaXJlY3RseSBhZmZlY3QgZXllIGhlYWx0aC5cXG5cXG4oZikgTW9sZDogU2ltaWxhciB0byBtaWxkZXcsIG1vbGQgY2FuIGNhdXNlIGFsbGVyZ2llcyBhbmQgcmVzcGlyYXRvcnkgcHJvYmxlbXMgYnV0IGRvZXNuJ3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy4gSXQncyB0aGUgYWlyYm9ybmUgc3BvcmVzIGFuZCByZWFjdGl2ZSBjb21wb3VuZHMgdGhhdCBjYW4gYmUgcHJvYmxlbWF0aWMuXFxuXFxuKGgpIENvbnRhY3Qgc29sdXRpb246IFR5cGljYWxseSwgYSBjb250YWN0IHNvbHV0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIHNhZmUgZm9yIHVzZSB3aXRoIGNvbnRhY3QgbGVuc2VzIGFuZCBkb2Vzbid0IGhhcm0gdGhlIGV5ZXMgaWYgdXNlZCBjb3JyZWN0bHkuIEFueSBwb3RlbnRpYWwgaGFybSB3b3VsZCBiZSBhIHJlc3VsdCBvZiBpbXByb3BlciB1c2Ugb3IgY29udGFtaW5hdGlvbi5cXG5cXG5JbiBzdW1tYXJ5LCB3aGlsZSBhbGwgdGhlIG9wdGlvbnMgY2FuIHBvdGVudGlhbGx5IGNhdXNlIGluZGlyZWN0IGhhcm0gdW5kZXIgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlcywgJ2cpIEFjaWQnIGRpcmVjdGx5IGFuZCBhY3V0ZWx5IGhhcm1zIHRoZSBleWVzLCBtYWtpbmcgaXQgdGhlIGNvcnJlY3QgYW5zd2VyIHRvIHRoZSBxdWVzdGlvbi5cIn0ifV0sICIxOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZm9ybXMgaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWU/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhbWJvbyAoYikgRGVzaWNjYXRpb24gKGMpIEJ1cnJzIChkKSBFbG1zIChlKSBNb3NzIChmKSBDb2FsIChnKSBDYW5keSAoaCkgTWVhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZVwiLCBcInJlYXNvbmluZ1wiOiBcIjEuIFJlYWRpbmcgdGhlIHF1ZXN0aW9uIGFuZCBvcHRpb25zOiBXZSBhcmUgYXNrZWQgd2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS5cXG5cXG4yLiBJZGVudGlmeWluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgb3B0aW9uczogXFxuICAgLSBCYW1ib28sIERlc2ljY2F0aW9uLCBCdXJycywgRWxtcywgQ29hbCwgQ2FuZHksIGFuZCBNZWF0IGFyZSBhbGwgZGlmZmVyZW50IG9yZ2FuaWMgbWF0dGVyLCBidXQgbm90IGFsbCBvZiB0aGVtIGZvcm0gcGVhdCB1bmRlciB0aGUgbWVudGlvbmVkIGNvbmRpdGlvbnMuXFxuXFxuMy4gRGV0ZXJtaW5pbmcgd2hpY2ggb3B0aW9ucyBhcmUgbm90IGxvZ2ljYWw6XFxuICAgLSAoYSkgQmFtYm9vOiBXaGlsZSBiYW1ib28gaXMgYSBwbGFudCwgaXQgdHlwaWNhbGx5IGdyb3dzIGluIHJlbGF0aXZlbHkgbWlsZCBjb25kaXRpb25zIGFuZCBkb2VzIG5vdCB0cmFuc2Zvcm0gaW50byBwZWF0IHVuZGVyIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUuXFxuICAgLSAoYikgRGVzaWNjYXRpb246IFRoaXMgcmVmZXJzIHRvIHRoZSBwcm9jZXNzIG9mIGRyeWluZyBvdXQgYW5kIGlzIG5vdCBhIGRpcmVjdCBjb250cmlidXRvciB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuIEl0IGRvZXNuJ3QgaW52b2x2ZSB0aGUgbmVjZXNzYXJ5IGhlYXQgYW5kIHByZXNzdXJlLlxcbiAgIC0gKGMpIEJ1cnJzOiBCdXJycyBhcmUgc21hbGwgc2VlZCBiYWxscyBhdHRhY2hlZCB0byBwbGFudHMsIHByaW1hcmlseSB1c2VkIGJ5IHBsYW50cyBmb3IgZGlzcGVyc2FsLiBUaGV5IGRvbid0IGZvcm0gcGVhdC5cXG4gICAtIChkKSBFbG1zOiBUaGVzZSBhcmUgdHJlZXMgY29tbW9ubHkgZm91bmQgaW4gdGVtcGVyYXRlIHJlZ2lvbnMuIFRoZXkgY2FuIGRlY29tcG9zZSBvdmVyIHRpbWUgYnV0IGRvIG5vdCBmb3JtIHBlYXQgdW5kZXIgbm9ybWFsIG9yIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUuXFxuICAgLSAoZSkgTW9zczogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIE1vc3MgaXMgYSB0eXBlIG9mIG5vbi12YXNjdWxhciBsYW5kIHBsYW50IHRoYXQgZ3Jvd3MgaW4gZGFtcCBlbnZpcm9ubWVudHMuIE92ZXIgbG9uZyBwZXJpb2RzLCB1bmRlciBjb25kaXRpb25zIG9mIGhpZ2ggcHJlc3N1cmUgYW5kIHNsb3dseSBkZWNvbXBvc2luZyBpbiB3YXRlci1yaWNoIGVudmlyb25tZW50cywgbW9zcyBjb250cmlidXRlcyB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuXFxuICAgLSAoZikgQ29hbDogQ29hbCBmb3JtcyBmcm9tIHRoZSByZW1haW5zIG9mIHBsYW50cyB1bmRlciBpbnRlbnNlIGhlYXQgYW5kIHByZXNzdXJlIGRlZXAgd2l0aGluIHRoZSBFYXJ0aCdzIGNydXN0LCBidXQgaXQgZG9lc24ndCBmb3JtIHBlYXQuIFBlYXQgYW5kIGNvYWwgYXJlIGRpc3RpbmN0IGdlb2xvZ2ljYWwgZm9ybWF0aW9ucy5cXG4gICAtIChnKSBDYW5keTogVGhpcyBpcyBub3Qgb3JnYW5pYyBtYXR0ZXIgdGhhdCBjYW4gdHJhbnNmb3JtIGludG8gcGVhdC4gSXQncyBhIHByb2Nlc3NlZCBmb29kIHByb2R1Y3QuXFxuICAgLSAoaCkgTWVhdDogTWVhdCBkb2VzIG5vdCBmb3JtIHBlYXQuIEl0IGRlY29tcG9zZXMgaW4gYSBkaWZmZXJlbnQgbWFubmVyIGFuZCBkb2Vzbid0IGNvbnRyaWJ1dGUgZGlyZWN0bHkgdG8gcGVhdCBmb3JtYXRpb24uXFxuXFxuNC4gUHJvdmlkaW5nIGV4cGxhbmF0aW9ucyBmb3IgaW5jb3JyZWN0IGFuc3dlcnM6XFxuICAgLSBCYW1ib28sIEJ1cnJzLCBFbG1zLCBDYW5keSwgYW5kIE1lYXQgXFx1MjAxMyBUaGVzZSBvcHRpb25zIGFyZSBlaXRoZXIgbm90IHBsYW50cyBvciBmb3JtcyBvZiBvcmdhbmljIG1hdHRlciB0aGF0IGRvbid0IHVuZGVyZ28gdGhlIHNwZWNpZmljIGNvbmRpdGlvbnMgKGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUpIHJlcXVpcmVkIHRvIGZvcm0gcGVhdC5cXG4gICAtIERlc2ljY2F0aW9uIFxcdTIwMTMgVGhpcyBwcm9jZXNzIGlzIHRoZSByZW1vdmFsIG9mIG1vaXN0dXJlIGZyb20gYSBzdWJzdGFuY2UsIHdoaWNoIGRvZXNuJ3QgYWxpZ24gd2l0aCB0aGUgY29uZGl0aW9ucyByZXF1aXJlZCB0byBmb3JtIHBlYXQgKGhpZ2ggd2F0ZXIgY29udGVudCkuXFxuICAgLSBDb2FsIFxcdTIwMTMgV2hpbGUgc2ltaWxhciB0byBwZWF0IGluIHRoYXQgaXQncyBmb3JtZWQgZnJvbSBwbGFudCBkZWJyaXMsIGl0J3MgZm9ybWVkIHVuZGVyIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGNvbmRpdGlvbnMgZGVlcCB3aXRoaW4gdGhlIEVhcnRoLCBub3QgdGhyb3VnaCBzdXJmYWNlIHByb2Nlc3NlcyBpbnZvbHZpbmcgbW9zcy5cXG5cXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZSkgTW9zcyBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IG9wdGlvbiBhbW9uZyB0aGUgY2hvaWNlcyB0aGF0LCB3aGVuIHN1YmplY3RlZCB0byBjb25kaXRpb25zIG9mIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLCBjYW4gY29udHJpYnV0ZSB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuXCJ9In1dfSwgImNvbnZlcnNhdGlvbl9GQSI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiY1wifSJ9XSwgIjEiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgaXJyYWRpYXRpbmcgZm9vZCBkbz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgUmVsaWV2ZSBwYWluIChiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHMgKGMpIEltcHJvdmVzIGZvb2Qgc2FmZXR5IChkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhIChlKSBJbmNyZWFzZXMgZm9vZCB3YXN0ZSAoZikgQ2hlbWljYWwgY2hhbmdlcyAoZykgR2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkIChoKSBNYWpvciB0aHJlYXQgdG8gaGVhbHRoIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJjXCJ9In1dLCAiMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgcHJvdGVjdHMgYSBtYW1tYWwncyBza2luP1xuQW5zd2VyIENob2ljZXM6IChhKSBGaWJlciBmb2xsaWNsZXMgKGIpIEV4Zm9saWF0aW9uIChjKSBSZXNpc3RhbmNlIChkKSBMYXllcnMgb2YgZmF0IChlKSBFdmFwb3JhdGlvbiAoZikgQSBjdXRpY2xlIChnKSBTZW5zb3J5IG5ldXJvbnMgKGgpIEZ1ciBhbmQgZmF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJhXCJ9In1dLCAiMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG8gZWFydGh3b3JtcyBkbyB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmP1xuQW5zd2VyIENob2ljZXM6IChhKSBEaWVzIChiKSBSZWdyb3dzIGl0IChjKSBSZXByb2R1Y2VzIChkKSBTZWRpbWVudCAoZSkgUm9vdCBncm93dGggKGYpIE1pZ3JhdGUgKGcpIFN0b3BzIGdyb3dpbmcgKGgpIFJvb3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJiXCJ9In1dLCAiNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IExpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBUaGUgZW52aXJvbm1lbnQgKGIpIFJhaW5zdG9ybXMgKGMpIERlc3RydWN0aW9uIChkKSBWaXNpYmlsaXR5IChlKSBUaHVuZGVyIChmKSBUaGUgc3VuIChnKSBUaGUgd2VhdGhlci4gKGgpIFRyYW5zcG9ydGF0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJhXCJ9In1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZFwifSJ9XSwgIjYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBIb3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93biwgb3IgaW5oZXJpdGVkLCBpcyBmb3VuZCBpbiBpbmZvcm1hdGlvbiBpbiBhbiBvcmdhbmlzbSdzIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNwZWNpZXMgKGIpIE1lc3NlbmdlcnMgKGMpIEhhaXIgZm9sbGljbGVzIChkKSBDeWNsZXMgKGUpIFNraW4gY2VsbHMgKGYpIEVuZG9jcmluZSBzeXN0ZW0gKGcpIENocm9tb3NvbWVzIChoKSBQcm90ZWlucyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZ1wifSJ9XSwgIjciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGFyZSB0aGUgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBHcmFzcyAoYikgQW5pbWFscyAoYykgQXBwbGVzIChkKSBQb3RhdG9lcyAoZSkgVHJlZXMgKGYpIFBsYW50cyAoZykgRnVuZ2kgKGgpIEZpZWxkcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZlwifSJ9XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImRcIn0ifV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImNcIn0ifV0sICIxMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgS2luZXRpYyBlbmVyZ3kgKGIpIExvdWQgbm9pc2VzIChjKSBWaWJyYXRpbmcgd2F2ZXMgKGQpIEFuIG9iamVjdCBpcyBzZWVuIChlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IChmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW4gKGgpIEhhcm1mdWwgc3Vic3RhbmNlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiY1wifSJ9XSwgIjExIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNYWpvciBlZmZlY3RzIChiKSBSZXNwaXJhdGlvbiAoYykgUm9sZXggKGQpIERlbnNpdHkgKGUpIERpcGh0aGVyaWEgKGYpIENhbmlzIGx1cHVzIChnKSBTa2luIGNvbG9yIChoKSBEaWdlc3Rpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImdcIn0ifV0sICIxMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsP1xuQW5zd2VyIENob2ljZXM6IChhKSBTaGVlcCAoYikgU2FsbW9uIChjKSBHcmFzc2VzIChkKSBCYXRzIChlKSBBbmltYWxzIChmKSBTaHJ1YnMgKGcpIEh1bWFucyAoaCkgVHJlZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImFcIn0ifV0sICIxMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdobyBjYW4gc2hpdmVyP1xuQW5zd2VyIENob2ljZXM6IChhKSBCYXRzIChiKSBTaWRld2Fsa3MgKGMpIEh1bWFucyAoZCkgQmVlcyAoZSkgS29hbGFzIChmKSBNb3VudGFpbnMgKGcpIFRyZWVzIChoKSBQZW9wbGUifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImRcIn0ifV0sICIxNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTGVhcm5pbmcgYmVoYXZpb3IgKGIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzIChjKSBXYXJtLWJsb29kZWQgKGQpIENvbXBldGl0aW9uIChlKSBCYWQgYmVoYXZpb3IgKGYpIExlYXJuaW5nIG5vdGhpbmcgKGcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IgKGgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiYVwifSJ9XSwgIjE1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQnVybmluZyAoYikgV2ludGVyIChjKSBNdXRhdGlvbnMgKGQpIENvb2tpbmcgKGUpIEN5Y2xlcyAoZikgU3VtbWVyIChnKSBGcmVlemluZyAoaCkgR3Vuc2hvdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogIntcImZpbmFsX2Fuc3dlclwiOiBcImFcIn0ifV0sICIxNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFR1cm5pbmcgb24gd2hhdCB3aWxsIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVmVoaWNsZXMgKGIpIFNhdGVsbGl0ZXMgKGMpIExpZ2h0IGJ1bGIgKGQpIEJ1c2VzIChlKSBGaXJlY3JhY2tlcnMgKGYpIFNlbnNvcnkgbmV1cm9ucyAoZykgQW4gb2JqZWN0IChoKSBFbmdpbmVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJjXCJ9In1dLCAiMTciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVyZSBpcyBhIHp5Z290ZSBmb3JtZWQgYnkgc3Blcm0gc3dpbW1pbmcgdG8gYW4gZWdnP1xuQW5zd2VyIENob2ljZXM6IChhKSBDb2xkZXIgYW5kIHdldHRlciAoYikgT2NlYW4gd2F0ZXIgKGMpIEdyYXB0b2xpdGVzIChkKSBSYXBpZCBleHBhbnNpb24gKGUpIEEgZGVsdGEgKGYpIEFuIGFyY2hlZ29uaXVtIChnKSBCYXJuYWNsZXMgKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZlwifSJ9XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiAie1wiZmluYWxfYW5zd2VyXCI6IFwiZ1wifSJ9XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6ICJ7XCJmaW5hbF9hbnN3ZXJcIjogXCJlXCJ9In1dfX0=\"\n", " decoded_data = json.loads(base64.b64decode(encoded_data).decode())\n", " \n", " df = pd.DataFrame(decoded_data)\n", @@ -1687,7 +1687,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "id": "25f62e9b-09f8-4912-94fd-0ded680614b2", "metadata": { "tags": [] @@ -1717,7 +1717,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "id": "18a206c5-0e40-46b3-8dfb-20000789b6b5", "metadata": { "tags": [] @@ -1726,7 +1726,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "016b6648672b4207828a47249e9b7d30", + "model_id": "c2178fd737a84de8934d40b4cd7d1e6d", "version_major": 2, "version_minor": 0 }, @@ -1740,7 +1740,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0a8d0736b3cd4567bb4eb599b590a8e5", + "model_id": "8adbb8a081bf4d1687a40c30c44a7bdc", "version_major": 2, "version_minor": 0 }, @@ -1754,7 +1754,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f2757e676ced40ddb0b13830d1b4ca13", + "model_id": "c3d0251109cc44849523f265f7c8b68b", "version_major": 2, "version_minor": 0 }, @@ -1768,7 +1768,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "801d94ae80e944b19ba3c2cc18d57d70", + "model_id": "7c13d64a867c497e9ca97f516ee725cf", "version_major": 2, "version_minor": 0 }, @@ -1779,20 +1779,13 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "No files have been modified since last commit. Skipping to prevent empty commit.\n" - ] - }, { "data": { "text/plain": [ - "CommitInfo(commit_url='https://huggingface.co/datasets/derek-thomas/labeled-multiple-choice-explained-falcon-tokenized/commit/73649fd5fac5c07d88e770f16655c8fb9860020a', commit_message='Upload dataset', commit_description='', oid='73649fd5fac5c07d88e770f16655c8fb9860020a', pr_url=None, repo_url=RepoUrl('https://huggingface.co/datasets/derek-thomas/labeled-multiple-choice-explained-falcon-tokenized', endpoint='https://huggingface.co', repo_type='dataset', repo_id='derek-thomas/labeled-multiple-choice-explained-falcon-tokenized'), pr_revision=None, pr_num=None)" + "CommitInfo(commit_url='https://huggingface.co/datasets/derek-thomas/labeled-multiple-choice-explained-falcon-tokenized/commit/c29e666182bfae43500a88a115df2554216e0012', commit_message='Upload dataset', commit_description='', oid='c29e666182bfae43500a88a115df2554216e0012', pr_url=None, repo_url=RepoUrl('https://huggingface.co/datasets/derek-thomas/labeled-multiple-choice-explained-falcon-tokenized', endpoint='https://huggingface.co', repo_type='dataset', repo_id='derek-thomas/labeled-multiple-choice-explained-falcon-tokenized'), pr_revision=None, pr_num=None)" ] }, - "execution_count": 25, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" }