{ "name": "Reference", "structs": {}, "methods": [ { "name": "noop_with_uint64", "args": [ { "type": "uint64", "name": "a" } ], "returns": { "type": "uint8" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "opt_in", "args": [ { "type": "uint64", "name": "uint" }, { "type": "byte[]", "name": "bites" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "OptIn" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "all_the_things", "args": [ { "type": "uint64", "name": "a" } ], "returns": { "type": "uint8" }, "actions": { "create": [ "NoOp", "OptIn", "DeleteApplication" ], "call": [ "NoOp", "OptIn", "CloseOut", "UpdateApplication", "DeleteApplication" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "mixed_oca", "args": [ { "type": "uint64", "name": "a" } ], "returns": { "type": "uint8" }, "actions": { "create": [], "call": [ "NoOp", "CloseOut", "DeleteApplication" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "opt_into_asset", "args": [ { "type": "asset", "name": "asset" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "with_transactions", "args": [ { "type": "asset", "name": "asset" }, { "type": "uint64", "name": "an_int" }, { "type": "pay", "name": "pay" }, { "type": "uint64", "name": "another_int" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "compare_assets", "args": [ { "type": "asset", "name": "asset_a" }, { "type": "asset", "name": "asset_b" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_address", "args": [], "returns": { "type": "address" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_asset", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_application", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_an_int", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "method_with_default_args", "args": [ { "type": "asset", "name": "asset_from_storage", "defaultValue": { "source": "global", "data": "YXNh", "type": "AVMString" } }, { "type": "asset", "name": "asset_from_function", "defaultValue": { "source": "method", "data": "get_asset()uint64" } }, { "type": "account", "name": "account_from_storage", "defaultValue": { "source": "global", "data": "Y3JlYXRvcg==", "type": "AVMString" } }, { "type": "account", "name": "account_from_function", "defaultValue": { "source": "method", "data": "get_address()address" } }, { "type": "application", "name": "application_from_storage", "defaultValue": { "source": "global", "data": "YXBw", "type": "AVMString" } }, { "type": "application", "name": "application_from_function", "defaultValue": { "source": "method", "data": "get_application()uint64" } }, { "type": "byte[3]", "name": "bytes_from_storage", "defaultValue": { "source": "global", "data": "c29tZV9ieXRlcw==", "type": "AVMString" } }, { "type": "uint64", "name": "int_from_storage", "defaultValue": { "source": "global", "data": "YW5faW50", "type": "AVMString" } }, { "type": "uint64", "name": "int_from_function", "defaultValue": { "source": "method", "data": "get_an_int()uint64" } }, { "type": "uint32", "name": "int_from_const", "defaultValue": { "source": "literal", "data": "AAAAew==", "type": "uint32" } }, { "type": "string", "name": "str_from_const", "defaultValue": { "source": "literal", "data": "AANhYmM=", "type": "string" } }, { "type": "uint64", "name": "int_from_local", "defaultValue": { "source": "local", "data": "bG9jYWxfdWludA==", "type": "AVMString" } }, { "type": "byte[]", "name": "bytes_from_local", "defaultValue": { "source": "local", "data": "bG9jYWxfYnl0ZXM=", "type": "AVMString" } } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "method_with_15_args", "args": [ { "type": "uint64", "name": "one" }, { "type": "uint64", "name": "two" }, { "type": "uint64", "name": "three" }, { "type": "uint64", "name": "four" }, { "type": "uint64", "name": "five" }, { "type": "uint64", "name": "six" }, { "type": "uint64", "name": "seven" }, { "type": "uint64", "name": "eight" }, { "type": "uint64", "name": "nine" }, { "type": "uint64", "name": "ten" }, { "type": "uint64", "name": "eleven" }, { "type": "uint64", "name": "twelve" }, { "type": "uint64", "name": "thirteen" }, { "type": "uint64", "name": "fourteen" }, { "type": "byte[]", "name": "fifteen" } ], "returns": { "type": "byte[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Fifteen args should not encode the last argument as a tuple", "events": [], "recommendations": {} }, { "name": "method_with_more_than_15_args", "args": [ { "type": "uint64", "name": "a" }, { "type": "uint64", "name": "b" }, { "type": "uint64", "name": "c" }, { "type": "uint64", "name": "d" }, { "type": "asset", "name": "asset" }, { "type": "uint64", "name": "e" }, { "type": "uint64", "name": "f" }, { "type": "pay", "name": "pay" }, { "type": "uint64", "name": "g" }, { "type": "uint64", "name": "h" }, { "type": "uint64", "name": "i" }, { "type": "uint64", "name": "j" }, { "type": "uint64", "name": "k" }, { "type": "uint64", "name": "l" }, { "type": "uint64", "name": "m" }, { "type": "uint64", "name": "n" }, { "type": "uint64", "name": "o" }, { "type": "uint64", "name": "p" }, { "type": "uint64", "name": "q" }, { "type": "uint64", "name": "r" }, { "type": "byte[]", "name": "s" }, { "type": "byte[]", "name": "t" }, { "type": "asset", "name": "asset2" }, { "type": "pay", "name": "pay2" }, { "type": "uint64", "name": "u" }, { "type": "uint64", "name": "v" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Application calls only support 16 args, and arc4 calls utilise the first arg for the method\nselector. Args beyond this number are packed into a tuple and placed in the 16th slot.", "events": [], "recommendations": {} }, { "name": "hello_with_algopy_string", "args": [ { "type": "string", "name": "name" } ], "returns": { "type": "string" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 3, "bytes": 2 }, "local": { "ints": 1, "bytes": 1 } }, "keys": { "global": { "asa": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YXNh" }, "an_int": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YW5faW50" }, "some_bytes": { "keyType": "AVMString", "valueType": "byte[3]", "key": "c29tZV9ieXRlcw==" }, "creator": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "Y3JlYXRvcg==" }, "app": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YXBw" } }, "local": { "local_bytes": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "bG9jYWxfYnl0ZXM=" }, "local_uint": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bG9jYWxfdWludA==" } }, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "DeleteApplication", "NoOp", "OptIn" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 907 ], "errorMessage": "ASA already opted in" }, { "pc": [ 324, 330, 342, 348, 402, 408, 1016, 1026, 1036 ], "errorMessage": "Index access is out of bounds" }, { "pc": [ 231, 261, 423, 509, 582, 606, 617, 628, 644, 668, 702, 778 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 756 ], "errorMessage": "OnCompletion is not OptIn" }, { "pc": [ 724 ], "errorMessage": "OnCompletion is not one of NoOp, CloseOut, DeleteApplication" }, { "pc": [ 901 ], "errorMessage": "Only creator can opt in to ASA" }, { "pc": [ 970 ], "errorMessage": "asset a == b" }, { "pc": [ 816 ], "errorMessage": "can only call when creating" }, { "pc": [ 234, 264, 426, 512, 585, 609, 620, 631, 647, 671, 705, 727, 759, 781 ], "errorMessage": "can only call when not creating" }, { "pc": [ 905, 936 ], "errorMessage": "check self.asa exists" }, { "pc": [ 1094 ], "errorMessage": "check self.local_bytes exists for account" }, { "pc": [ 1083 ], "errorMessage": "check self.local_uint exists for account" }, { "pc": [ 940 ], "errorMessage": "is correct asset" }, { "pc": [ 946, 960 ], "errorMessage": "is correct int" }, { "pc": [ 954 ], "errorMessage": "is payment to app" }, { "pc": [ 299, 398, 690 ], "errorMessage": "transaction type is pay" }, { "pc": [ 1023 ], "errorMessage": "wrong 0th byte from storage" }, { "pc": [ 1033 ], "errorMessage": "wrong 1st byte from storage" }, { "pc": [ 1043 ], "errorMessage": "wrong 2nd byte from storage" }, { "pc": [ 1001 ], "errorMessage": "wrong account from function" }, { "pc": [ 995 ], "errorMessage": "wrong account from storage" }, { "pc": [ 1013 ], "errorMessage": "wrong application from function" }, { "pc": [ 1006 ], "errorMessage": "wrong application from storage" }, { "pc": [ 989 ], "errorMessage": "wrong asset from function" }, { "pc": [ 982 ], "errorMessage": "wrong asset from storage" }, { "pc": [ 1056 ], "errorMessage": "wrong int from function" }, { "pc": [ 1049 ], "errorMessage": "wrong int from storage" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyB0ZXN0X2Nhc2VzLmFiaV9yb3V0aW5nLmNvbnRyYWN0LlJlZmVyZW5jZS5fX2FsZ29weV9lbnRyeXBvaW50X3dpdGhfaW5pdCgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgMTIzIDIKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAiYXNhIiAweDE1MWY3Yzc1MDAwMDAwMDAwMDAwMDFjOCAibG9jYWxfdWludCIgImxvY2FsX2J5dGVzIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjYKICAgIC8vIHNlbGYuYXNhID0gQXNzZXQoMTIzKQogICAgYnl0ZWNfMSAvLyAiYXNhIgogICAgaW50Y18yIC8vIDEyMwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3CiAgICAvLyBzZWxmLmFuX2ludCA9IFVJbnQ2NCgyKQogICAgcHVzaGJ5dGVzICJhbl9pbnQiCiAgICBpbnRjXzMgLy8gMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4CiAgICAvLyBzZWxmLnNvbWVfYnl0ZXMgPSBCeXRlczMoYXJjNC5CeXRlKDcpLCBhcmM0LkJ5dGUoOCksIGFyYzQuQnl0ZSg5KSkKICAgIHB1c2hieXRlc3MgInNvbWVfYnl0ZXMiIDB4MDcwODA5IC8vICJzb21lX2J5dGVzIiwgMHgwNzA4MDkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyOQogICAgLy8gc2VsZi5jcmVhdG9yID0gb3AuVHhuLnNlbmRlcgogICAgcHVzaGJ5dGVzICJjcmVhdG9yIgogICAgdHhuIFNlbmRlcgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjMwCiAgICAvLyBzZWxmLmFwcCA9IEFwcGxpY2F0aW9uKDEyMykKICAgIHB1c2hieXRlcyAiYXBwIgogICAgaW50Y18yIC8vIDEyMwogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjQKICAgIC8vIGNsYXNzIFJlZmVyZW5jZShBUkM0Q29udHJhY3QpOgogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYmFyZV9yb3V0aW5nQDIwCiAgICBwdXNoYnl0ZXNzIDB4ZDc4ZGIzNWIgMHgwMTA0MDAyMyAweDNhNTM1M2ZjIDB4ZDJmMmY1M2MgMHgyODI2YjIwMiAweDZmOGU5NGNkIDB4MTdkYzY4ZjAgMHg3ZmFkOTc4MCAweDJmZGY5NWE0IDB4MTM5OTgyNmMgMHhhMTMwMDgyMSAweDY3MGRjMDU1IDB4NTczMjE5NWEgMHhkMTc1NTJmYiAweDkwMjNiYjE5IC8vIG1ldGhvZCAibm9vcF93aXRoX3VpbnQ2NCh1aW50NjQpdWludDgiLCBtZXRob2QgIm9wdF9pbih1aW50NjQsYnl0ZVtdKXZvaWQiLCBtZXRob2QgImFsbF90aGVfdGhpbmdzKHVpbnQ2NCl1aW50OCIsIG1ldGhvZCAibWl4ZWRfb2NhKHVpbnQ2NCl1aW50OCIsIG1ldGhvZCAib3B0X2ludG9fYXNzZXQoYXNzZXQpdm9pZCIsIG1ldGhvZCAid2l0aF90cmFuc2FjdGlvbnMoYXNzZXQsdWludDY0LHBheSx1aW50NjQpdm9pZCIsIG1ldGhvZCAiY29tcGFyZV9hc3NldHMoYXNzZXQsYXNzZXQpdm9pZCIsIG1ldGhvZCAiZ2V0X2FkZHJlc3MoKWFkZHJlc3MiLCBtZXRob2QgImdldF9hc3NldCgpdWludDY0IiwgbWV0aG9kICJnZXRfYXBwbGljYXRpb24oKXVpbnQ2NCIsIG1ldGhvZCAiZ2V0X2FuX2ludCgpdWludDY0IiwgbWV0aG9kICJtZXRob2Rfd2l0aF9kZWZhdWx0X2FyZ3MoYXNzZXQsYXNzZXQsYWNjb3VudCxhY2NvdW50LGFwcGxpY2F0aW9uLGFwcGxpY2F0aW9uLGJ5dGVbM10sdWludDY0LHVpbnQ2NCx1aW50MzIsc3RyaW5nLHVpbnQ2NCxieXRlW10pdm9pZCIsIG1ldGhvZCAibWV0aG9kX3dpdGhfMTVfYXJncyh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LGJ5dGVbXSlieXRlW10iLCBtZXRob2QgIm1ldGhvZF93aXRoX21vcmVfdGhhbl8xNV9hcmdzKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCxhc3NldCx1aW50NjQsdWludDY0LHBheSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCxieXRlW10sYnl0ZVtdLGFzc2V0LHBheSx1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAiaGVsbG9fd2l0aF9hbGdvcHlfc3RyaW5nKHN0cmluZylzdHJpbmciCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX25vb3Bfd2l0aF91aW50NjRfcm91dGVANSBtYWluX29wdF9pbl9yb3V0ZUA2IG1haW5fYWxsX3RoZV90aGluZ3Nfcm91dGVANyBtYWluX21peGVkX29jYV9yb3V0ZUA4IG1haW5fb3B0X2ludG9fYXNzZXRfcm91dGVAOSBtYWluX3dpdGhfdHJhbnNhY3Rpb25zX3JvdXRlQDEwIG1haW5fY29tcGFyZV9hc3NldHNfcm91dGVAMTEgbWFpbl9nZXRfYWRkcmVzc19yb3V0ZUAxMiBtYWluX2dldF9hc3NldF9yb3V0ZUAxMyBtYWluX2dldF9hcHBsaWNhdGlvbl9yb3V0ZUAxNCBtYWluX2dldF9hbl9pbnRfcm91dGVAMTUgbWFpbl9tZXRob2Rfd2l0aF9kZWZhdWx0X2FyZ3Nfcm91dGVAMTYgbWFpbl9tZXRob2Rfd2l0aF8xNV9hcmdzX3JvdXRlQDE3IG1haW5fbWV0aG9kX3dpdGhfbW9yZV90aGFuXzE1X2FyZ3Nfcm91dGVAMTggbWFpbl9oZWxsb193aXRoX2FsZ29weV9zdHJpbmdfcm91dGVAMTkKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyMjoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBSZWZlcmVuY2UoQVJDNENvbnRyYWN0KToKICAgIGludGNfMSAvLyAwCiAgICByZXR1cm4KCm1haW5faGVsbG9fd2l0aF9hbGdvcHlfc3RyaW5nX3JvdXRlQDE5OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjQKICAgIC8vIGNsYXNzIFJlZmVyZW5jZShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBjYWxsc3ViIGhlbGxvX3dpdGhfYWxnb3B5X3N0cmluZwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fbWV0aG9kX3dpdGhfbW9yZV90aGFuXzE1X2FyZ3Nfcm91dGVAMTg6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNAogICAgLy8gY2xhc3MgUmVmZXJlbmNlKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICBidG9pCiAgICB0eG5hcyBBc3NldHMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDYKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDcKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzMgLy8gMgogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgOAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgOQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDExCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgZXh0cmFjdCAwIDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgZXh0cmFjdCA4IDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgcHVzaGludCAxNiAvLyAxNgogICAgZXh0cmFjdF91aW50NjQKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBleHRyYWN0IDI0IDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgZXh0cmFjdCAzMiA4IC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIGR1cAogICAgcHVzaGludCA0MCAvLyA0MAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAxCiAgICBwdXNoaW50IDQyIC8vIDQyCiAgICBleHRyYWN0X3VpbnQxNgogICAgc3Vic3RyaW5nMwogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIHB1c2hpbnQgNDIgLy8gNDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMQogICAgbGVuCiAgICBzdWJzdHJpbmczCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIHB1c2hpbnQgNDQgLy8gNDQKICAgIGdldGJ5dGUKICAgIHR4bmFzIEFzc2V0cwogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgZXh0cmFjdCA0NSA4IC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIGV4dHJhY3QgNTMgOCAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIyOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBjYWxsc3ViIG1ldGhvZF93aXRoX21vcmVfdGhhbl8xNV9hcmdzCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX21ldGhvZF93aXRoXzE1X2FyZ3Nfcm91dGVAMTc6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxOTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNAogICAgLy8gY2xhc3MgUmVmZXJlbmNlKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA5CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEyCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMwogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBleHRyYWN0IDIgMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGNhbGxzdWIgbWV0aG9kX3dpdGhfMTVfYXJncwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fbWV0aG9kX3dpdGhfZGVmYXVsdF9hcmdzX3JvdXRlQDE2OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTQyLTE1OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIGRlZmF1bHRfYXJncz17CiAgICAvLyAgICAgICAgICJhc3NldF9mcm9tX3N0b3JhZ2UiOiAiYXNhIiwKICAgIC8vICAgICAgICAgImFzc2V0X2Zyb21fZnVuY3Rpb24iOiBnZXRfYXNzZXQsCiAgICAvLyAgICAgICAgICJhY2NvdW50X2Zyb21fc3RvcmFnZSI6ICJjcmVhdG9yIiwKICAgIC8vICAgICAgICAgImFjY291bnRfZnJvbV9mdW5jdGlvbiI6ICJnZXRfYWRkcmVzcyIsCiAgICAvLyAgICAgICAgICJhcHBsaWNhdGlvbl9mcm9tX3N0b3JhZ2UiOiAiYXBwIiwKICAgIC8vICAgICAgICAgImFwcGxpY2F0aW9uX2Zyb21fZnVuY3Rpb24iOiBnZXRfYXBwLAogICAgLy8gICAgICAgICAiYnl0ZXNfZnJvbV9zdG9yYWdlIjogInNvbWVfYnl0ZXMiLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fc3RvcmFnZSI6ICJhbl9pbnQiLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fZnVuY3Rpb24iOiAiZ2V0X2FfaW50IiwKICAgIC8vICAgICAgICAgImludF9mcm9tX2NvbnN0IjogYXJjNC5VSW50MzIoMTIzKSwKICAgIC8vICAgICAgICAgInN0cl9mcm9tX2NvbnN0IjogYXJjNC5TdHJpbmcoImFiYyIpLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fbG9jYWwiOiAibG9jYWxfdWludCIsCiAgICAvLyAgICAgICAgICJieXRlc19mcm9tX2xvY2FsIjogImxvY2FsX2J5dGVzIiwKICAgIC8vICAgICB9CiAgICAvLyApCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBSZWZlcmVuY2UoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmFzIEFzc2V0cwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYXMgQXNzZXRzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBidG9pCiAgICB0eG5hcyBBY2NvdW50cwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgYnRvaQogICAgdHhuYXMgQWNjb3VudHMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDUKICAgIGJ0b2kKICAgIHR4bmFzIEFwcGxpY2F0aW9ucwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgogICAgYnRvaQogICAgdHhuYXMgQXBwbGljYXRpb25zCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEyCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMwogICAgZXh0cmFjdCAyIDAKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE0Mi0xNTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgKICAgIC8vICAgICBkZWZhdWx0X2FyZ3M9ewogICAgLy8gICAgICAgICAiYXNzZXRfZnJvbV9zdG9yYWdlIjogImFzYSIsCiAgICAvLyAgICAgICAgICJhc3NldF9mcm9tX2Z1bmN0aW9uIjogZ2V0X2Fzc2V0LAogICAgLy8gICAgICAgICAiYWNjb3VudF9mcm9tX3N0b3JhZ2UiOiAiY3JlYXRvciIsCiAgICAvLyAgICAgICAgICJhY2NvdW50X2Zyb21fZnVuY3Rpb24iOiAiZ2V0X2FkZHJlc3MiLAogICAgLy8gICAgICAgICAiYXBwbGljYXRpb25fZnJvbV9zdG9yYWdlIjogImFwcCIsCiAgICAvLyAgICAgICAgICJhcHBsaWNhdGlvbl9mcm9tX2Z1bmN0aW9uIjogZ2V0X2FwcCwKICAgIC8vICAgICAgICAgImJ5dGVzX2Zyb21fc3RvcmFnZSI6ICJzb21lX2J5dGVzIiwKICAgIC8vICAgICAgICAgImludF9mcm9tX3N0b3JhZ2UiOiAiYW5faW50IiwKICAgIC8vICAgICAgICAgImludF9mcm9tX2Z1bmN0aW9uIjogImdldF9hX2ludCIsCiAgICAvLyAgICAgICAgICJpbnRfZnJvbV9jb25zdCI6IGFyYzQuVUludDMyKDEyMyksCiAgICAvLyAgICAgICAgICJzdHJfZnJvbV9jb25zdCI6IGFyYzQuU3RyaW5nKCJhYmMiKSwKICAgIC8vICAgICAgICAgImludF9mcm9tX2xvY2FsIjogImxvY2FsX3VpbnQiLAogICAgLy8gICAgICAgICAiYnl0ZXNfZnJvbV9sb2NhbCI6ICJsb2NhbF9ieXRlcyIsCiAgICAvLyAgICAgfQogICAgLy8gKQogICAgY2FsbHN1YiBtZXRob2Rfd2l0aF9kZWZhdWx0X2FyZ3MKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fZ2V0X2FuX2ludF9yb3V0ZUAxNToKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEzOAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUsIG5hbWU9ImdldF9hbl9pbnQiKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDAwMDMKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9nZXRfYXBwbGljYXRpb25fcm91dGVAMTQ6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlLCBuYW1lPSJnZXRfYXBwbGljYXRpb24iKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBieXRlY18yIC8vIDB4MTUxZjdjNzUwMDAwMDAwMDAwMDAwMWM4CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fZ2V0X2Fzc2V0X3JvdXRlQDEzOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTMwCiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgYnl0ZWNfMiAvLyAweDE1MWY3Yzc1MDAwMDAwMDAwMDAwMDFjOAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2dldF9hZGRyZXNzX3JvdXRlQDEyOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTI2CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiBnZXRfYWRkcmVzcwogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9jb21wYXJlX2Fzc2V0c19yb3V0ZUAxMToKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEyMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBSZWZlcmVuY2UoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmFzIEFzc2V0cwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYXMgQXNzZXRzCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMjIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgY2FsbHN1YiBjb21wYXJlX2Fzc2V0cwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl93aXRoX3RyYW5zYWN0aW9uc19yb3V0ZUAxMDoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEwOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBSZWZlcmVuY2UoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmFzIEFzc2V0cwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgY2FsbHN1YiB3aXRoX3RyYW5zYWN0aW9ucwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9vcHRfaW50b19hc3NldF9yb3V0ZUA5OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6OTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNAogICAgLy8gY2xhc3MgUmVmZXJlbmNlKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hcyBBc3NldHMKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjkyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGNhbGxzdWIgb3B0X2ludG9fYXNzZXQKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fbWl4ZWRfb2NhX3JvdXRlQDg6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo2Ni03NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIGFsbG93X2FjdGlvbnM9WwogICAgLy8gICAgICAgICAiTm9PcCIsCiAgICAvLyAgICAgICAgICJDbG9zZU91dCIsCiAgICAvLyAgICAgICAgICJEZWxldGVBcHBsaWNhdGlvbiIsCiAgICAvLyAgICAgXSwKICAgIC8vICAgICBjcmVhdGU9ImRpc2FsbG93IiwKICAgIC8vICAgICByZWFkb25seT1UcnVlLAogICAgLy8gKQogICAgaW50Y18wIC8vIDEKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIHNobAogICAgcHVzaGludCAzNyAvLyAzNwogICAgJgogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3Qgb25lIG9mIE5vT3AsIENsb3NlT3V0LCBEZWxldGVBcHBsaWNhdGlvbgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNAogICAgLy8gY2xhc3MgUmVmZXJlbmNlKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo2Ni03NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIGFsbG93X2FjdGlvbnM9WwogICAgLy8gICAgICAgICAiTm9PcCIsCiAgICAvLyAgICAgICAgICJDbG9zZU91dCIsCiAgICAvLyAgICAgICAgICJEZWxldGVBcHBsaWNhdGlvbiIsCiAgICAvLyAgICAgXSwKICAgIC8vICAgICBjcmVhdGU9ImRpc2FsbG93IiwKICAgIC8vICAgICByZWFkb25seT1UcnVlLAogICAgLy8gKQogICAgY2FsbHN1YiBtaXhlZF9vY2EKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fYWxsX3RoZV90aGluZ3Nfcm91dGVANzoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBSZWZlcmVuY2UoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjUwLTYxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoCiAgICAvLyAgICAgYWxsb3dfYWN0aW9ucz1bCiAgICAvLyAgICAgICAgICJOb09wIiwKICAgIC8vICAgICAgICAgT25Db21wbGV0ZUFjdGlvbi5PcHRJbiwKICAgIC8vICAgICAgICAgIkNsb3NlT3V0IiwKICAgIC8vICAgICAgICAgT25Db21wbGV0ZUFjdGlvbi5VcGRhdGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICAgICAgT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBdLAogICAgLy8gICAgIG5hbWU9ImFsbF90aGVfdGhpbmdzIiwKICAgIC8vICAgICBjcmVhdGU9ImFsbG93IiwKICAgIC8vICAgICByZWFkb25seT1UcnVlLAogICAgLy8gKQogICAgY2FsbHN1YiBmdWxsX2FiaV9jb25maWcKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fb3B0X2luX3JvdXRlQDY6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9W09uQ29tcGxldGVBY3Rpb24uT3B0SW5dKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIE9wdEluCiAgICA9PQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgT3B0SW4KICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjQKICAgIC8vIGNsYXNzIFJlZmVyZW5jZShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjQ1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoYWxsb3dfYWN0aW9ucz1bT25Db21wbGV0ZUFjdGlvbi5PcHRJbl0pCiAgICBjYWxsc3ViIG9wdF9pbgogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9ub29wX3dpdGhfdWludDY0X3JvdXRlQDU6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBSZWZlcmVuY2UoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjQwCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGNhbGxzdWIgbm9vcF93aXRoX3VpbnQ2NAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAMjA6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNAogICAgLy8gY2xhc3MgUmVmZXJlbmNlKEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBzd2l0Y2ggbWFpbl9iYXJlX2FiaV9jb25maWdAMjEgbWFpbl9iYXJlX2FiaV9jb25maWdAMjEgbWFpbl9iYXJlX2FiaV9jb25maWdAMjEgbWFpbl9hZnRlcl9pZl9lbHNlQDIyIG1haW5fYmFyZV9hYmlfY29uZmlnQDIxIG1haW5fYmFyZV9hYmlfY29uZmlnQDIxCiAgICBiIG1haW5fYWZ0ZXJfaWZfZWxzZUAyMgoKbWFpbl9iYXJlX2FiaV9jb25maWdAMjE6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo3OS04OAogICAgLy8gQGFyYzQuYmFyZW1ldGhvZCgKICAgIC8vICAgICBhbGxvd19hY3Rpb25zPVsKICAgIC8vICAgICAgICAgIk5vT3AiLAogICAgLy8gICAgICAgICAiT3B0SW4iLAogICAgLy8gICAgICAgICAiQ2xvc2VPdXQiLAogICAgLy8gICAgICAgICAiVXBkYXRlQXBwbGljYXRpb24iLAogICAgLy8gICAgICAgICAiRGVsZXRlQXBwbGljYXRpb24iLAogICAgLy8gICAgIF0sCiAgICAvLyAgICAgY3JlYXRlPSJyZXF1aXJlIiwKICAgIC8vICkKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBjYWxsc3ViIGJhcmVfYWJpX2NvbmZpZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLm5vb3Bfd2l0aF91aW50NjQoYTogYnl0ZXMpIC0+IGJ5dGVzOgpub29wX3dpdGhfdWludDY0OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NDAtNDEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgLy8gZGVmIG5vb3Bfd2l0aF91aW50NjQoc2VsZiwgYTogYXJjNC5VSW50NjQpIC0+IGFyYzQuVUludDg6CiAgICBwcm90byAxIDEKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjQyCiAgICAvLyByZXN1bHQgPSAxICsgYS5uYXRpdmUKICAgIGZyYW1lX2RpZyAtMQogICAgYnRvaQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjQzCiAgICAvLyByZXR1cm4gYXJjNC5VSW50OChyZXN1bHQpCiAgICBpdG9iCiAgICBleHRyYWN0IDcgMQogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hYmlfcm91dGluZy5jb250cmFjdC5SZWZlcmVuY2Uub3B0X2luKHVpbnQ6IHVpbnQ2NCwgYml0ZXM6IGJ5dGVzKSAtPiB2b2lkOgpvcHRfaW46CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0NS00NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9W09uQ29tcGxldGVBY3Rpb24uT3B0SW5dKQogICAgLy8gZGVmIG9wdF9pbihzZWxmLCB1aW50OiBVSW50NjQsIGJpdGVzOiBCeXRlcykgLT4gTm9uZToKICAgIHByb3RvIDIgMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NDcKICAgIC8vIHNlbGYubG9jYWxfdWludFtUeG4uc2VuZGVyXSA9IHVpbnQKICAgIHR4biBTZW5kZXIKICAgIGJ5dGVjXzMgLy8gImxvY2FsX3VpbnQiCiAgICBmcmFtZV9kaWcgLTIKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBzZWxmLmxvY2FsX2J5dGVzW1R4bi5zZW5kZXJdID0gYml0ZXMKICAgIHR4biBTZW5kZXIKICAgIGJ5dGVjIDQgLy8gImxvY2FsX2J5dGVzIgogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfbG9jYWxfcHV0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFiaV9yb3V0aW5nLmNvbnRyYWN0LlJlZmVyZW5jZS5mdWxsX2FiaV9jb25maWcoYTogYnl0ZXMpIC0+IGJ5dGVzOgpmdWxsX2FiaV9jb25maWc6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo1MC02MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIGFsbG93X2FjdGlvbnM9WwogICAgLy8gICAgICAgICAiTm9PcCIsCiAgICAvLyAgICAgICAgIE9uQ29tcGxldGVBY3Rpb24uT3B0SW4sCiAgICAvLyAgICAgICAgICJDbG9zZU91dCIsCiAgICAvLyAgICAgICAgIE9uQ29tcGxldGVBY3Rpb24uVXBkYXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgICAgIE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgXSwKICAgIC8vICAgICBuYW1lPSJhbGxfdGhlX3RoaW5ncyIsCiAgICAvLyAgICAgY3JlYXRlPSJhbGxvdyIsCiAgICAvLyAgICAgcmVhZG9ubHk9VHJ1ZSwKICAgIC8vICkKICAgIC8vIGRlZiBmdWxsX2FiaV9jb25maWcoc2VsZiwgYTogYXJjNC5VSW50NjQpIC0+IGFyYzQuVUludDg6CiAgICBwcm90byAxIDEKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjYzCiAgICAvLyByZXN1bHQgPSBVSW50NjQoMSkgKyBhLm5hdGl2ZQogICAgZnJhbWVfZGlnIC0xCiAgICBidG9pCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NjQKICAgIC8vIHJldHVybiBhcmM0LlVJbnQ4KHJlc3VsdCkKICAgIGl0b2IKICAgIGV4dHJhY3QgNyAxCiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFiaV9yb3V0aW5nLmNvbnRyYWN0LlJlZmVyZW5jZS5taXhlZF9vY2EoYTogYnl0ZXMpIC0+IGJ5dGVzOgptaXhlZF9vY2E6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo2Ni03NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIGFsbG93X2FjdGlvbnM9WwogICAgLy8gICAgICAgICAiTm9PcCIsCiAgICAvLyAgICAgICAgICJDbG9zZU91dCIsCiAgICAvLyAgICAgICAgICJEZWxldGVBcHBsaWNhdGlvbiIsCiAgICAvLyAgICAgXSwKICAgIC8vICAgICBjcmVhdGU9ImRpc2FsbG93IiwKICAgIC8vICAgICByZWFkb25seT1UcnVlLAogICAgLy8gKQogICAgLy8gZGVmIG1peGVkX29jYShzZWxmLCBhOiBhcmM0LlVJbnQ2NCkgLT4gYXJjNC5VSW50ODoKICAgIHByb3RvIDEgMQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NzYKICAgIC8vIHJlc3VsdCA9IFVJbnQ2NCgxKSArIGEubmF0aXZlCiAgICBmcmFtZV9kaWcgLTEKICAgIGJ0b2kKICAgIGludGNfMCAvLyAxCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo3NwogICAgLy8gcmV0dXJuIGFyYzQuVUludDgocmVzdWx0KQogICAgaXRvYgogICAgZXh0cmFjdCA3IDEKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLmJhcmVfYWJpX2NvbmZpZygpIC0+IHZvaWQ6CmJhcmVfYWJpX2NvbmZpZzoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjkwCiAgICAvLyBsb2coIkhlbGxvIFdvcmxkIikKICAgIHB1c2hieXRlcyAiSGVsbG8gV29ybGQiCiAgICBsb2cKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLm9wdF9pbnRvX2Fzc2V0KGFzc2V0OiB1aW50NjQpIC0+IHZvaWQ6Cm9wdF9pbnRvX2Fzc2V0OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6OTItOTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgLy8gZGVmIG9wdF9pbnRvX2Fzc2V0KHNlbGYsIGFzc2V0OiBBc3NldCkgLT4gTm9uZToKICAgIHByb3RvIDEgMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6OTQtOTUKICAgIC8vICMgT25seSBhbGxvdyBhcHAgY3JlYXRvciB0byBvcHQgdGhlIGFwcCBhY2NvdW50IGludG8gYSBBU0EKICAgIC8vIGFzc2VydCBvcC5UeG4uc2VuZGVyID09IG9wLkdsb2JhbC5jcmVhdG9yX2FkZHJlc3MsICJPbmx5IGNyZWF0b3IgY2FuIG9wdCBpbiB0byBBU0EiCiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gT25seSBjcmVhdG9yIGNhbiBvcHQgaW4gdG8gQVNBCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo5Ni05NwogICAgLy8gIyBWZXJpZnkgYSBBU0EgaGFzbid0IGFscmVhZHkgYmVlbiBvcHRlZCBpbnRvCiAgICAvLyBhc3NlcnQgbm90IHNlbGYuYXNhLCAiQVNBIGFscmVhZHkgb3B0ZWQgaW4iCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWNfMSAvLyAiYXNhIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzYSBleGlzdHMKICAgICEKICAgIGFzc2VydCAvLyBBU0EgYWxyZWFkeSBvcHRlZCBpbgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6OTgtOTkKICAgIC8vICMgU2F2ZSBBU0EgSUQgaW4gZ2xvYmFsIHN0YXRlCiAgICAvLyBzZWxmLmFzYSA9IGFzc2V0CiAgICBieXRlY18xIC8vICJhc2EiCiAgICBmcmFtZV9kaWcgLTEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMDEtMTAyCiAgICAvLyAjIFN1Ym1pdCBvcHQtaW4gdHJhbnNhY3Rpb246IDAgYXNzZXQgdHJhbnNmZXIgdG8gc2VsZgogICAgLy8gb3AuSVR4bkNyZWF0ZS5iZWdpbigpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMDMKICAgIC8vIG9wLklUeG5DcmVhdGUuc2V0X3R5cGVfZW51bShUcmFuc2FjdGlvblR5cGUuQXNzZXRUcmFuc2ZlcikKICAgIHB1c2hpbnQgNCAvLyBheGZlcgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA0CiAgICAvLyBvcC5JVHhuQ3JlYXRlLnNldF9mZWUoVUludDY0KDApKSAgIyBjb3ZlciBmZWUgd2l0aCBvdXRlciB0eG4KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA1CiAgICAvLyBvcC5JVHhuQ3JlYXRlLnNldF9hc3NldF9yZWNlaXZlcihvcC5HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzKQogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA2CiAgICAvLyBvcC5JVHhuQ3JlYXRlLnNldF94ZmVyX2Fzc2V0KGFzc2V0KQogICAgZnJhbWVfZGlnIC0xCiAgICBpdHhuX2ZpZWxkIFhmZXJBc3NldAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA3CiAgICAvLyBvcC5JVHhuQ3JlYXRlLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hYmlfcm91dGluZy5jb250cmFjdC5SZWZlcmVuY2Uud2l0aF90cmFuc2FjdGlvbnMoYXNzZXQ6IHVpbnQ2NCwgYW5faW50OiBieXRlcywgcGF5OiB1aW50NjQsIGFub3RoZXJfaW50OiBieXRlcykgLT4gdm9pZDoKd2l0aF90cmFuc2FjdGlvbnM6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMDktMTE2CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIC8vIGRlZiB3aXRoX3RyYW5zYWN0aW9ucygKICAgIC8vICAgICBzZWxmLAogICAgLy8gICAgIGFzc2V0OiBBc3NldCwKICAgIC8vICAgICBhbl9pbnQ6IGFyYzQuVUludDY0LAogICAgLy8gICAgIHBheTogZ3R4bi5QYXltZW50VHJhbnNhY3Rpb24sCiAgICAvLyAgICAgYW5vdGhlcl9pbnQ6IGFyYzQuVUludDY0LAogICAgLy8gKSAtPiBOb25lOgogICAgcHJvdG8gNCAwCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMTcKICAgIC8vIGFzc2VydCBzZWxmLmFzYSA9PSBhc3NldCwgImlzIGNvcnJlY3QgYXNzZXQiCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWNfMSAvLyAiYXNhIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzYSBleGlzdHMKICAgIGZyYW1lX2RpZyAtNAogICAgPT0KICAgIGFzc2VydCAvLyBpcyBjb3JyZWN0IGFzc2V0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMTgKICAgIC8vIGFzc2VydCBhbl9pbnQubmF0aXZlID09IDEsICJpcyBjb3JyZWN0IGludCIKICAgIGZyYW1lX2RpZyAtMwogICAgYnRvaQogICAgaW50Y18wIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaXMgY29ycmVjdCBpbnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjExOQogICAgLy8gYXNzZXJ0IHBheS5yZWNlaXZlciA9PSBvcC5HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLCAiaXMgcGF5bWVudCB0byBhcHAiCiAgICBmcmFtZV9kaWcgLTIKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIGFzc2VydCAvLyBpcyBwYXltZW50IHRvIGFwcAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTIwCiAgICAvLyBhc3NlcnQgYW5vdGhlcl9pbnQubmF0aXZlID09IDIsICJpcyBjb3JyZWN0IGludCIKICAgIGZyYW1lX2RpZyAtMQogICAgYnRvaQogICAgaW50Y18zIC8vIDIKICAgID09CiAgICBhc3NlcnQgLy8gaXMgY29ycmVjdCBpbnQKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLmNvbXBhcmVfYXNzZXRzKGFzc2V0X2E6IHVpbnQ2NCwgYXNzZXRfYjogdWludDY0KSAtPiB2b2lkOgpjb21wYXJlX2Fzc2V0czoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEyMi0xMjMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgLy8gZGVmIGNvbXBhcmVfYXNzZXRzKHNlbGYsIGFzc2V0X2E6IEFzc2V0LCBhc3NldF9iOiBBc3NldCkgLT4gTm9uZToKICAgIHByb3RvIDIgMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTI0CiAgICAvLyBhc3NlcnQgYXNzZXRfYSA9PSBhc3NldF9iLCAiYXNzZXQgYSA9PSBiIgogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQgYSA9PSBiCiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFiaV9yb3V0aW5nLmNvbnRyYWN0LlJlZmVyZW5jZS5nZXRfYWRkcmVzcygpIC0+IGJ5dGVzOgpnZXRfYWRkcmVzczoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEyOAogICAgLy8gcmV0dXJuIGFyYzQuQWRkcmVzcygpCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLm1ldGhvZF93aXRoX2RlZmF1bHRfYXJncyhhc3NldF9mcm9tX3N0b3JhZ2U6IHVpbnQ2NCwgYXNzZXRfZnJvbV9mdW5jdGlvbjogdWludDY0LCBhY2NvdW50X2Zyb21fc3RvcmFnZTogYnl0ZXMsIGFjY291bnRfZnJvbV9mdW5jdGlvbjogYnl0ZXMsIGFwcGxpY2F0aW9uX2Zyb21fc3RvcmFnZTogdWludDY0LCBhcHBsaWNhdGlvbl9mcm9tX2Z1bmN0aW9uOiB1aW50NjQsIGJ5dGVzX2Zyb21fc3RvcmFnZTogYnl0ZXMsIGludF9mcm9tX3N0b3JhZ2U6IGJ5dGVzLCBpbnRfZnJvbV9mdW5jdGlvbjogYnl0ZXMsIGludF9mcm9tX2NvbnN0OiBieXRlcywgc3RyX2Zyb21fY29uc3Q6IGJ5dGVzLCBpbnRfZnJvbV9sb2NhbDogdWludDY0LCBieXRlc19mcm9tX2xvY2FsOiBieXRlcykgLT4gdm9pZDoKbWV0aG9kX3dpdGhfZGVmYXVsdF9hcmdzOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTQyLTE3NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIGRlZmF1bHRfYXJncz17CiAgICAvLyAgICAgICAgICJhc3NldF9mcm9tX3N0b3JhZ2UiOiAiYXNhIiwKICAgIC8vICAgICAgICAgImFzc2V0X2Zyb21fZnVuY3Rpb24iOiBnZXRfYXNzZXQsCiAgICAvLyAgICAgICAgICJhY2NvdW50X2Zyb21fc3RvcmFnZSI6ICJjcmVhdG9yIiwKICAgIC8vICAgICAgICAgImFjY291bnRfZnJvbV9mdW5jdGlvbiI6ICJnZXRfYWRkcmVzcyIsCiAgICAvLyAgICAgICAgICJhcHBsaWNhdGlvbl9mcm9tX3N0b3JhZ2UiOiAiYXBwIiwKICAgIC8vICAgICAgICAgImFwcGxpY2F0aW9uX2Zyb21fZnVuY3Rpb24iOiBnZXRfYXBwLAogICAgLy8gICAgICAgICAiYnl0ZXNfZnJvbV9zdG9yYWdlIjogInNvbWVfYnl0ZXMiLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fc3RvcmFnZSI6ICJhbl9pbnQiLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fZnVuY3Rpb24iOiAiZ2V0X2FfaW50IiwKICAgIC8vICAgICAgICAgImludF9mcm9tX2NvbnN0IjogYXJjNC5VSW50MzIoMTIzKSwKICAgIC8vICAgICAgICAgInN0cl9mcm9tX2NvbnN0IjogYXJjNC5TdHJpbmcoImFiYyIpLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fbG9jYWwiOiAibG9jYWxfdWludCIsCiAgICAvLyAgICAgICAgICJieXRlc19mcm9tX2xvY2FsIjogImxvY2FsX2J5dGVzIiwKICAgIC8vICAgICB9CiAgICAvLyApCiAgICAvLyBkZWYgbWV0aG9kX3dpdGhfZGVmYXVsdF9hcmdzKAogICAgLy8gICAgIHNlbGYsCiAgICAvLyAgICAgYXNzZXRfZnJvbV9zdG9yYWdlOiBBc3NldCwKICAgIC8vICAgICBhc3NldF9mcm9tX2Z1bmN0aW9uOiBBc3NldCwKICAgIC8vICAgICBhY2NvdW50X2Zyb21fc3RvcmFnZTogQWNjb3VudCwKICAgIC8vICAgICBhY2NvdW50X2Zyb21fZnVuY3Rpb246IEFjY291bnQsCiAgICAvLyAgICAgYXBwbGljYXRpb25fZnJvbV9zdG9yYWdlOiBBcHBsaWNhdGlvbiwKICAgIC8vICAgICBhcHBsaWNhdGlvbl9mcm9tX2Z1bmN0aW9uOiBBcHBsaWNhdGlvbiwKICAgIC8vICAgICBieXRlc19mcm9tX3N0b3JhZ2U6IEJ5dGVzMywKICAgIC8vICAgICBpbnRfZnJvbV9zdG9yYWdlOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBpbnRfZnJvbV9mdW5jdGlvbjogYXJjNC5VSW50NjQsCiAgICAvLyAgICAgaW50X2Zyb21fY29uc3Q6IGFyYzQuVUludDMyLAogICAgLy8gICAgIHN0cl9mcm9tX2NvbnN0OiBhcmM0LlN0cmluZywKICAgIC8vICAgICBpbnRfZnJvbV9sb2NhbDogVUludDY0LAogICAgLy8gICAgIGJ5dGVzX2Zyb21fbG9jYWw6IEJ5dGVzLAogICAgLy8gKSAtPiBOb25lOgogICAgcHJvdG8gMTMgMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTc1CiAgICAvLyBhc3NlcnQgYXNzZXRfZnJvbV9zdG9yYWdlID09IEFzc2V0KDEyMyksICJ3cm9uZyBhc3NldCBmcm9tIHN0b3JhZ2UiCiAgICBmcmFtZV9kaWcgLTEzCiAgICBpbnRjXzIgLy8gMTIzCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGFzc2V0IGZyb20gc3RvcmFnZQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTc2CiAgICAvLyBhc3NlcnQgYXNzZXRfZnJvbV9mdW5jdGlvbiA9PSBBc3NldCg0NTYpLCAid3JvbmcgYXNzZXQgZnJvbSBmdW5jdGlvbiIKICAgIGZyYW1lX2RpZyAtMTIKICAgIHB1c2hpbnQgNDU2IC8vIDQ1NgogICAgPT0KICAgIGFzc2VydCAvLyB3cm9uZyBhc3NldCBmcm9tIGZ1bmN0aW9uCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxNzcKICAgIC8vIGFzc2VydCBhY2NvdW50X2Zyb21fc3RvcmFnZSA9PSBvcC5HbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCAid3JvbmcgYWNjb3VudCBmcm9tIHN0b3JhZ2UiCiAgICBmcmFtZV9kaWcgLTExCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gd3JvbmcgYWNjb3VudCBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE3OAogICAgLy8gYXNzZXJ0IGFjY291bnRfZnJvbV9mdW5jdGlvbiA9PSBvcC5HbG9iYWwuemVyb19hZGRyZXNzLCAid3JvbmcgYWNjb3VudCBmcm9tIGZ1bmN0aW9uIgogICAgZnJhbWVfZGlnIC0xMAogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGFjY291bnQgZnJvbSBmdW5jdGlvbgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTc5CiAgICAvLyBhc3NlcnQgYXBwbGljYXRpb25fZnJvbV9zdG9yYWdlID09IEFwcGxpY2F0aW9uKDEyMyksICJ3cm9uZyBhcHBsaWNhdGlvbiBmcm9tIHN0b3JhZ2UiCiAgICBmcmFtZV9kaWcgLTkKICAgIGludGNfMiAvLyAxMjMKICAgID09CiAgICBhc3NlcnQgLy8gd3JvbmcgYXBwbGljYXRpb24gZnJvbSBzdG9yYWdlCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODAKICAgIC8vIGFzc2VydCBhcHBsaWNhdGlvbl9mcm9tX2Z1bmN0aW9uID09IEFwcGxpY2F0aW9uKDQ1NiksICJ3cm9uZyBhcHBsaWNhdGlvbiBmcm9tIGZ1bmN0aW9uIgogICAgZnJhbWVfZGlnIC04CiAgICBwdXNoaW50IDQ1NiAvLyA0NTYKICAgID09CiAgICBhc3NlcnQgLy8gd3JvbmcgYXBwbGljYXRpb24gZnJvbSBmdW5jdGlvbgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTgxCiAgICAvLyBhc3NlcnQgYnl0ZXNfZnJvbV9zdG9yYWdlWzBdID09IGFyYzQuQnl0ZSg3KSwgIndyb25nIDB0aCBieXRlIGZyb20gc3RvcmFnZSIKICAgIGZyYW1lX2RpZyAtNwogICAgZXh0cmFjdCAwIDEgLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBwdXNoYnl0ZXMgMHgwNwogICAgYj09CiAgICBhc3NlcnQgLy8gd3JvbmcgMHRoIGJ5dGUgZnJvbSBzdG9yYWdlCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODIKICAgIC8vIGFzc2VydCBieXRlc19mcm9tX3N0b3JhZ2VbMV0gPT0gYXJjNC5CeXRlKDgpLCAid3JvbmcgMXN0IGJ5dGUgZnJvbSBzdG9yYWdlIgogICAgZnJhbWVfZGlnIC03CiAgICBleHRyYWN0IDEgMSAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHB1c2hieXRlcyAweDA4CiAgICBiPT0KICAgIGFzc2VydCAvLyB3cm9uZyAxc3QgYnl0ZSBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE4MwogICAgLy8gYXNzZXJ0IGJ5dGVzX2Zyb21fc3RvcmFnZVsyXSA9PSBhcmM0LkJ5dGUoOSksICJ3cm9uZyAybmQgYnl0ZSBmcm9tIHN0b3JhZ2UiCiAgICBmcmFtZV9kaWcgLTcKICAgIGV4dHJhY3QgMiAxIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgcHVzaGJ5dGVzIDB4MDkKICAgIGI9PQogICAgYXNzZXJ0IC8vIHdyb25nIDJuZCBieXRlIGZyb20gc3RvcmFnZQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTg0CiAgICAvLyBhc3NlcnQgaW50X2Zyb21fc3RvcmFnZS5uYXRpdmUgPT0gMiwgIndyb25nIGludCBmcm9tIHN0b3JhZ2UiCiAgICBmcmFtZV9kaWcgLTYKICAgIGJ0b2kKICAgIGludGNfMyAvLyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGludCBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE4NQogICAgLy8gYXNzZXJ0IGludF9mcm9tX2Z1bmN0aW9uLm5hdGl2ZSA9PSAzLCAid3JvbmcgaW50IGZyb20gZnVuY3Rpb24iCiAgICBmcmFtZV9kaWcgLTUKICAgIGJ0b2kKICAgIHB1c2hpbnQgMyAvLyAzCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGludCBmcm9tIGZ1bmN0aW9uCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODYKICAgIC8vIGFzc2VydCBpbnRfZnJvbV9jb25zdCA9PSAxMjMKICAgIGZyYW1lX2RpZyAtNAogICAgcHVzaGJ5dGVzIDB4MDAwMDAwN2IKICAgIGI9PQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODcKICAgIC8vIGFzc2VydCBzdHJfZnJvbV9jb25zdCA9PSAiYWJjIgogICAgZnJhbWVfZGlnIC0zCiAgICBwdXNoYnl0ZXMgMHgwMDAzNjE2MjYzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODgKICAgIC8vIGFzc2VydCBpbnRfZnJvbV9sb2NhbCA9PSBzZWxmLmxvY2FsX3VpbnRbVHhuLnNlbmRlcl0KICAgIHR4biBTZW5kZXIKICAgIGludGNfMSAvLyAwCiAgICBieXRlY18zIC8vICJsb2NhbF91aW50IgogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubG9jYWxfdWludCBleGlzdHMgZm9yIGFjY291bnQKICAgIGZyYW1lX2RpZyAtMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTg5CiAgICAvLyBhc3NlcnQgYnl0ZXNfZnJvbV9sb2NhbCA9PSBzZWxmLmxvY2FsX2J5dGVzW1R4bi5zZW5kZXJdCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgNCAvLyAibG9jYWxfYnl0ZXMiCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5sb2NhbF9ieXRlcyBleGlzdHMgZm9yIGFjY291bnQKICAgIGZyYW1lX2RpZyAtMQogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hYmlfcm91dGluZy5jb250cmFjdC5SZWZlcmVuY2UubWV0aG9kX3dpdGhfMTVfYXJncyhvbmU6IHVpbnQ2NCwgdHdvOiB1aW50NjQsIHRocmVlOiB1aW50NjQsIGZvdXI6IHVpbnQ2NCwgZml2ZTogdWludDY0LCBzaXg6IHVpbnQ2NCwgc2V2ZW46IHVpbnQ2NCwgZWlnaHQ6IHVpbnQ2NCwgbmluZTogdWludDY0LCB0ZW46IHVpbnQ2NCwgZWxldmVuOiB1aW50NjQsIHR3ZWx2ZTogdWludDY0LCB0aGlydGVlbjogdWludDY0LCBmb3VydGVlbjogdWludDY0LCBmaWZ0ZWVuOiBieXRlcykgLT4gYnl0ZXM6Cm1ldGhvZF93aXRoXzE1X2FyZ3M6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxOTEtMjA5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIC8vIGRlZiBtZXRob2Rfd2l0aF8xNV9hcmdzKAogICAgLy8gICAgIHNlbGYsCiAgICAvLyAgICAgb25lOiBVSW50NjQsCiAgICAvLyAgICAgdHdvOiBVSW50NjQsCiAgICAvLyAgICAgdGhyZWU6IFVJbnQ2NCwKICAgIC8vICAgICBmb3VyOiBVSW50NjQsCiAgICAvLyAgICAgZml2ZTogVUludDY0LAogICAgLy8gICAgIHNpeDogVUludDY0LAogICAgLy8gICAgIHNldmVuOiBVSW50NjQsCiAgICAvLyAgICAgZWlnaHQ6IFVJbnQ2NCwKICAgIC8vICAgICBuaW5lOiBVSW50NjQsCiAgICAvLyAgICAgdGVuOiBVSW50NjQsCiAgICAvLyAgICAgZWxldmVuOiBVSW50NjQsCiAgICAvLyAgICAgdHdlbHZlOiBVSW50NjQsCiAgICAvLyAgICAgdGhpcnRlZW46IFVJbnQ2NCwKICAgIC8vICAgICBmb3VydGVlbjogVUludDY0LAogICAgLy8gICAgIGZpZnRlZW46IEJ5dGVzLAogICAgLy8gKSAtPiBCeXRlczoKICAgIHByb3RvIDE1IDEKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTMKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIGZyYW1lX2RpZyAtMTUKICAgIGZyYW1lX2RpZyAtMTQKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTQKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIGZyYW1lX2RpZyAtMTMKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTUKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIC8vICsgZm91cgogICAgZnJhbWVfZGlnIC0xMgogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjEyLTIxNgogICAgLy8gb25lCiAgICAvLyArIHR3bwogICAgLy8gKyB0aHJlZQogICAgLy8gKyBmb3VyCiAgICAvLyArIGZpdmUKICAgIGZyYW1lX2RpZyAtMTEKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTcKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIC8vICsgZm91cgogICAgLy8gKyBmaXZlCiAgICAvLyArIHNpeAogICAgZnJhbWVfZGlnIC0xMAogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjEyLTIxOAogICAgLy8gb25lCiAgICAvLyArIHR3bwogICAgLy8gKyB0aHJlZQogICAgLy8gKyBmb3VyCiAgICAvLyArIGZpdmUKICAgIC8vICsgc2l4CiAgICAvLyArIHNldmVuCiAgICBmcmFtZV9kaWcgLTkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTkKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIC8vICsgZm91cgogICAgLy8gKyBmaXZlCiAgICAvLyArIHNpeAogICAgLy8gKyBzZXZlbgogICAgLy8gKyBlaWdodAogICAgZnJhbWVfZGlnIC04CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjIwCiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgZnJhbWVfZGlnIC03CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjIxCiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIGZyYW1lX2RpZyAtNgogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjEyLTIyMgogICAgLy8gb25lCiAgICAvLyArIHR3bwogICAgLy8gKyB0aHJlZQogICAgLy8gKyBmb3VyCiAgICAvLyArIGZpdmUKICAgIC8vICsgc2l4CiAgICAvLyArIHNldmVuCiAgICAvLyArIGVpZ2h0CiAgICAvLyArIG5pbmUKICAgIC8vICsgdGVuCiAgICAvLyArIGVsZXZlbgogICAgZnJhbWVfZGlnIC01CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjIzCiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIC8vICsgZWxldmVuCiAgICAvLyArIHR3ZWx2ZQogICAgZnJhbWVfZGlnIC00CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjI0CiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIC8vICsgZWxldmVuCiAgICAvLyArIHR3ZWx2ZQogICAgLy8gKyB0aGlydGVlbgogICAgZnJhbWVfZGlnIC0zCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjI1CiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIC8vICsgZWxldmVuCiAgICAvLyArIHR3ZWx2ZQogICAgLy8gKyB0aGlydGVlbgogICAgLy8gKyBmb3VydGVlbgogICAgZnJhbWVfZGlnIC0yCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTEtMjI2CiAgICAvLyBhc3NlcnQgKAogICAgLy8gICAgIG9uZQogICAgLy8gICAgICsgdHdvCiAgICAvLyAgICAgKyB0aHJlZQogICAgLy8gICAgICsgZm91cgogICAgLy8gICAgICsgZml2ZQogICAgLy8gICAgICsgc2l4CiAgICAvLyAgICAgKyBzZXZlbgogICAgLy8gICAgICsgZWlnaHQKICAgIC8vICAgICArIG5pbmUKICAgIC8vICAgICArIHRlbgogICAgLy8gICAgICsgZWxldmVuCiAgICAvLyAgICAgKyB0d2VsdmUKICAgIC8vICAgICArIHRoaXJ0ZWVuCiAgICAvLyAgICAgKyBmb3VydGVlbgogICAgLy8gKQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMjcKICAgIC8vIHJldHVybiBmaWZ0ZWVuCiAgICBmcmFtZV9kaWcgLTEKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLm1ldGhvZF93aXRoX21vcmVfdGhhbl8xNV9hcmdzKGE6IGJ5dGVzLCBiOiBieXRlcywgYzogYnl0ZXMsIGQ6IHVpbnQ2NCwgYXNzZXQ6IHVpbnQ2NCwgZTogYnl0ZXMsIGY6IGJ5dGVzLCBwYXk6IHVpbnQ2NCwgZzogYnl0ZXMsIGg6IGJ5dGVzLCBpOiBieXRlcywgajogYnl0ZXMsIGs6IGJ5dGVzLCBsOiBieXRlcywgbTogYnl0ZXMsIG46IGJ5dGVzLCBvOiBieXRlcywgcDogdWludDY0LCBxOiBieXRlcywgcjogYnl0ZXMsIHM6IGJ5dGVzLCB0OiBieXRlcywgYXNzZXQyOiB1aW50NjQsIHBheTI6IHVpbnQ2NCwgdTogYnl0ZXMsIHY6IGJ5dGVzKSAtPiBieXRlczoKbWV0aG9kX3dpdGhfbW9yZV90aGFuXzE1X2FyZ3M6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMjktMjU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIC8vIGRlZiBtZXRob2Rfd2l0aF9tb3JlX3RoYW5fMTVfYXJncygKICAgIC8vICAgICBzZWxmLAogICAgLy8gICAgIGE6IGFyYzQuVUludDY0LAogICAgLy8gICAgIGI6IGFyYzQuVUludDY0LAogICAgLy8gICAgIGM6IGFyYzQuVUludDY0LAogICAgLy8gICAgIGQ6IFVJbnQ2NCwKICAgIC8vICAgICBhc3NldDogQXNzZXQsCiAgICAvLyAgICAgZTogYXJjNC5VSW50NjQsCiAgICAvLyAgICAgZjogYXJjNC5VSW50NjQsCiAgICAvLyAgICAgcGF5OiBndHhuLlBheW1lbnRUcmFuc2FjdGlvbiwKICAgIC8vICAgICBnOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBoOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBpOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBqOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBrOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICAjIHJ1ZmY6IG5vcWE6IEU3NDEKICAgIC8vICAgICBsOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBtOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBuOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBvOiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICBwOiBVSW50NjQsCiAgICAvLyAgICAgcTogYXJjNC5VSW50NjQsCiAgICAvLyAgICAgcjogYXJjNC5VSW50NjQsCiAgICAvLyAgICAgczogQnl0ZXMsCiAgICAvLyAgICAgdDogQnl0ZXMsCiAgICAvLyAgICAgYXNzZXQyOiBBc3NldCwKICAgIC8vICAgICBwYXkyOiBndHhuLlBheW1lbnRUcmFuc2FjdGlvbiwKICAgIC8vICAgICB1OiBhcmM0LlVJbnQ2NCwKICAgIC8vICAgICB2OiBhcmM0LlVJbnQ2NCwKICAgIC8vICkgLT4gYXJjNC5VSW50NjQ6CiAgICBwcm90byAyNiAxCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNjQKICAgIC8vIGFzc2VydCBvcC5UeG4ubnVtX2FwcF9hcmdzID09IDE2CiAgICB0eG4gTnVtQXBwQXJncwogICAgcHVzaGludCAxNiAvLyAxNgogICAgPT0KICAgIGFzc2VydAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjY1CiAgICAvLyBhc3NlcnQgcGF5LmFtb3VudCA9PSAxMDAwMDAKICAgIGZyYW1lX2RpZyAtMTkKICAgIGd0eG5zIEFtb3VudAogICAgcHVzaGludCAxMDAwMDAgLy8gMTAwMDAwCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNjYKICAgIC8vIGFzc2VydCBwYXkyLmFtb3VudCA9PSAyMDAwMDAKICAgIGZyYW1lX2RpZyAtMwogICAgZ3R4bnMgQW1vdW50CiAgICBwdXNoaW50IDIwMDAwMCAvLyAyMDAwMDAKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI2NwogICAgLy8gYXNzZXJ0IGFzc2V0LmlkCiAgICBmcmFtZV9kaWcgLTIyCiAgICBhc3NlcnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI2OAogICAgLy8gYXNzZXJ0IGFzc2V0Mi5pZAogICAgZnJhbWVfZGlnIC00CiAgICBhc3NlcnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3MAogICAgLy8gbG9nKHMgKyB0KQogICAgZnJhbWVfZGlnIC02CiAgICBmcmFtZV9kaWcgLTUKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMKICAgIC8vIGEubmF0aXZlCiAgICBmcmFtZV9kaWcgLTI2CiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzQKICAgIC8vICsgYi5uYXRpdmUKICAgIGZyYW1lX2RpZyAtMjUKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yNzQKICAgIC8vIGEubmF0aXZlCiAgICAvLyArIGIubmF0aXZlCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzUKICAgIC8vICsgYy5uYXRpdmUKICAgIGZyYW1lX2RpZyAtMjQKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yNzUKICAgIC8vIGEubmF0aXZlCiAgICAvLyArIGIubmF0aXZlCiAgICAvLyArIGMubmF0aXZlCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjc2CiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICBmcmFtZV9kaWcgLTIzCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzcKICAgIC8vICsgZS5uYXRpdmUKICAgIGZyYW1lX2RpZyAtMjEKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yNzcKICAgIC8vIGEubmF0aXZlCiAgICAvLyArIGIubmF0aXZlCiAgICAvLyArIGMubmF0aXZlCiAgICAvLyArIGQKICAgIC8vICsgZS5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3OAogICAgLy8gKyBmLm5hdGl2ZQogICAgZnJhbWVfZGlnIC0yMAogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI3OAogICAgLy8gYS5uYXRpdmUKICAgIC8vICsgYi5uYXRpdmUKICAgIC8vICsgYy5uYXRpdmUKICAgIC8vICsgZAogICAgLy8gKyBlLm5hdGl2ZQogICAgLy8gKyBmLm5hdGl2ZQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjc5CiAgICAvLyArIGcubmF0aXZlCiAgICBmcmFtZV9kaWcgLTE4CiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjc5CiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICAvLyArIGUubmF0aXZlCiAgICAvLyArIGYubmF0aXZlCiAgICAvLyArIGcubmF0aXZlCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyODAKICAgIC8vICsgaC5uYXRpdmUKICAgIGZyYW1lX2RpZyAtMTcKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yODAKICAgIC8vIGEubmF0aXZlCiAgICAvLyArIGIubmF0aXZlCiAgICAvLyArIGMubmF0aXZlCiAgICAvLyArIGQKICAgIC8vICsgZS5uYXRpdmUKICAgIC8vICsgZi5uYXRpdmUKICAgIC8vICsgZy5uYXRpdmUKICAgIC8vICsgaC5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4MQogICAgLy8gKyBpLm5hdGl2ZQogICAgZnJhbWVfZGlnIC0xNgogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI4MQogICAgLy8gYS5uYXRpdmUKICAgIC8vICsgYi5uYXRpdmUKICAgIC8vICsgYy5uYXRpdmUKICAgIC8vICsgZAogICAgLy8gKyBlLm5hdGl2ZQogICAgLy8gKyBmLm5hdGl2ZQogICAgLy8gKyBnLm5hdGl2ZQogICAgLy8gKyBoLm5hdGl2ZQogICAgLy8gKyBpLm5hdGl2ZQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjgyCiAgICAvLyArIGoubmF0aXZlCiAgICBmcmFtZV9kaWcgLTE1CiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjgyCiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICAvLyArIGUubmF0aXZlCiAgICAvLyArIGYubmF0aXZlCiAgICAvLyArIGcubmF0aXZlCiAgICAvLyArIGgubmF0aXZlCiAgICAvLyArIGkubmF0aXZlCiAgICAvLyArIGoubmF0aXZlCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyODMKICAgIC8vICsgay5uYXRpdmUKICAgIGZyYW1lX2RpZyAtMTQKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yODMKICAgIC8vIGEubmF0aXZlCiAgICAvLyArIGIubmF0aXZlCiAgICAvLyArIGMubmF0aXZlCiAgICAvLyArIGQKICAgIC8vICsgZS5uYXRpdmUKICAgIC8vICsgZi5uYXRpdmUKICAgIC8vICsgZy5uYXRpdmUKICAgIC8vICsgaC5uYXRpdmUKICAgIC8vICsgaS5uYXRpdmUKICAgIC8vICsgai5uYXRpdmUKICAgIC8vICsgay5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4NAogICAgLy8gKyBsLm5hdGl2ZQogICAgZnJhbWVfZGlnIC0xMwogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI4NAogICAgLy8gYS5uYXRpdmUKICAgIC8vICsgYi5uYXRpdmUKICAgIC8vICsgYy5uYXRpdmUKICAgIC8vICsgZAogICAgLy8gKyBlLm5hdGl2ZQogICAgLy8gKyBmLm5hdGl2ZQogICAgLy8gKyBnLm5hdGl2ZQogICAgLy8gKyBoLm5hdGl2ZQogICAgLy8gKyBpLm5hdGl2ZQogICAgLy8gKyBqLm5hdGl2ZQogICAgLy8gKyBrLm5hdGl2ZQogICAgLy8gKyBsLm5hdGl2ZQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjg1CiAgICAvLyArIG0ubmF0aXZlCiAgICBmcmFtZV9kaWcgLTEyCiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjg1CiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICAvLyArIGUubmF0aXZlCiAgICAvLyArIGYubmF0aXZlCiAgICAvLyArIGcubmF0aXZlCiAgICAvLyArIGgubmF0aXZlCiAgICAvLyArIGkubmF0aXZlCiAgICAvLyArIGoubmF0aXZlCiAgICAvLyArIGsubmF0aXZlCiAgICAvLyArIGwubmF0aXZlCiAgICAvLyArIG0ubmF0aXZlCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyODYKICAgIC8vICsgbi5uYXRpdmUKICAgIGZyYW1lX2RpZyAtMTEKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yODYKICAgIC8vIGEubmF0aXZlCiAgICAvLyArIGIubmF0aXZlCiAgICAvLyArIGMubmF0aXZlCiAgICAvLyArIGQKICAgIC8vICsgZS5uYXRpdmUKICAgIC8vICsgZi5uYXRpdmUKICAgIC8vICsgZy5uYXRpdmUKICAgIC8vICsgaC5uYXRpdmUKICAgIC8vICsgaS5uYXRpdmUKICAgIC8vICsgai5uYXRpdmUKICAgIC8vICsgay5uYXRpdmUKICAgIC8vICsgbC5uYXRpdmUKICAgIC8vICsgbS5uYXRpdmUKICAgIC8vICsgbi5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4NwogICAgLy8gKyBvLm5hdGl2ZQogICAgZnJhbWVfZGlnIC0xMAogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI4NwogICAgLy8gYS5uYXRpdmUKICAgIC8vICsgYi5uYXRpdmUKICAgIC8vICsgYy5uYXRpdmUKICAgIC8vICsgZAogICAgLy8gKyBlLm5hdGl2ZQogICAgLy8gKyBmLm5hdGl2ZQogICAgLy8gKyBnLm5hdGl2ZQogICAgLy8gKyBoLm5hdGl2ZQogICAgLy8gKyBpLm5hdGl2ZQogICAgLy8gKyBqLm5hdGl2ZQogICAgLy8gKyBrLm5hdGl2ZQogICAgLy8gKyBsLm5hdGl2ZQogICAgLy8gKyBtLm5hdGl2ZQogICAgLy8gKyBuLm5hdGl2ZQogICAgLy8gKyBvLm5hdGl2ZQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI4OAogICAgLy8gYS5uYXRpdmUKICAgIC8vICsgYi5uYXRpdmUKICAgIC8vICsgYy5uYXRpdmUKICAgIC8vICsgZAogICAgLy8gKyBlLm5hdGl2ZQogICAgLy8gKyBmLm5hdGl2ZQogICAgLy8gKyBnLm5hdGl2ZQogICAgLy8gKyBoLm5hdGl2ZQogICAgLy8gKyBpLm5hdGl2ZQogICAgLy8gKyBqLm5hdGl2ZQogICAgLy8gKyBrLm5hdGl2ZQogICAgLy8gKyBsLm5hdGl2ZQogICAgLy8gKyBtLm5hdGl2ZQogICAgLy8gKyBuLm5hdGl2ZQogICAgLy8gKyBvLm5hdGl2ZQogICAgLy8gKyBwCiAgICBmcmFtZV9kaWcgLTkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4OQogICAgLy8gKyBxLm5hdGl2ZQogICAgZnJhbWVfZGlnIC04CiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjg5CiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICAvLyArIGUubmF0aXZlCiAgICAvLyArIGYubmF0aXZlCiAgICAvLyArIGcubmF0aXZlCiAgICAvLyArIGgubmF0aXZlCiAgICAvLyArIGkubmF0aXZlCiAgICAvLyArIGoubmF0aXZlCiAgICAvLyArIGsubmF0aXZlCiAgICAvLyArIGwubmF0aXZlCiAgICAvLyArIG0ubmF0aXZlCiAgICAvLyArIG4ubmF0aXZlCiAgICAvLyArIG8ubmF0aXZlCiAgICAvLyArIHAKICAgIC8vICsgcS5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5MAogICAgLy8gKyByLm5hdGl2ZQogICAgZnJhbWVfZGlnIC03CiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjkwCiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICAvLyArIGUubmF0aXZlCiAgICAvLyArIGYubmF0aXZlCiAgICAvLyArIGcubmF0aXZlCiAgICAvLyArIGgubmF0aXZlCiAgICAvLyArIGkubmF0aXZlCiAgICAvLyArIGoubmF0aXZlCiAgICAvLyArIGsubmF0aXZlCiAgICAvLyArIGwubmF0aXZlCiAgICAvLyArIG0ubmF0aXZlCiAgICAvLyArIG4ubmF0aXZlCiAgICAvLyArIG8ubmF0aXZlCiAgICAvLyArIHAKICAgIC8vICsgcS5uYXRpdmUKICAgIC8vICsgci5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5MQogICAgLy8gKyB1Lm5hdGl2ZQogICAgZnJhbWVfZGlnIC0yCiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjkxCiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICAvLyArIGUubmF0aXZlCiAgICAvLyArIGYubmF0aXZlCiAgICAvLyArIGcubmF0aXZlCiAgICAvLyArIGgubmF0aXZlCiAgICAvLyArIGkubmF0aXZlCiAgICAvLyArIGoubmF0aXZlCiAgICAvLyArIGsubmF0aXZlCiAgICAvLyArIGwubmF0aXZlCiAgICAvLyArIG0ubmF0aXZlCiAgICAvLyArIG4ubmF0aXZlCiAgICAvLyArIG8ubmF0aXZlCiAgICAvLyArIHAKICAgIC8vICsgcS5uYXRpdmUKICAgIC8vICsgci5uYXRpdmUKICAgIC8vICsgdS5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5MgogICAgLy8gKyB2Lm5hdGl2ZQogICAgZnJhbWVfZGlnIC0xCiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjkyCiAgICAvLyBhLm5hdGl2ZQogICAgLy8gKyBiLm5hdGl2ZQogICAgLy8gKyBjLm5hdGl2ZQogICAgLy8gKyBkCiAgICAvLyArIGUubmF0aXZlCiAgICAvLyArIGYubmF0aXZlCiAgICAvLyArIGcubmF0aXZlCiAgICAvLyArIGgubmF0aXZlCiAgICAvLyArIGkubmF0aXZlCiAgICAvLyArIGoubmF0aXZlCiAgICAvLyArIGsubmF0aXZlCiAgICAvLyArIGwubmF0aXZlCiAgICAvLyArIG0ubmF0aXZlCiAgICAvLyArIG4ubmF0aXZlCiAgICAvLyArIG8ubmF0aXZlCiAgICAvLyArIHAKICAgIC8vICsgcS5uYXRpdmUKICAgIC8vICsgci5uYXRpdmUKICAgIC8vICsgdS5uYXRpdmUKICAgIC8vICsgdi5uYXRpdmUKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3Mi0yOTMKICAgIC8vIHJldHVybiBhcmM0LlVJbnQ2NCgKICAgIC8vICAgICBhLm5hdGl2ZQogICAgLy8gICAgICsgYi5uYXRpdmUKICAgIC8vICAgICArIGMubmF0aXZlCiAgICAvLyAgICAgKyBkCiAgICAvLyAgICAgKyBlLm5hdGl2ZQogICAgLy8gICAgICsgZi5uYXRpdmUKICAgIC8vICAgICArIGcubmF0aXZlCiAgICAvLyAgICAgKyBoLm5hdGl2ZQogICAgLy8gICAgICsgaS5uYXRpdmUKICAgIC8vICAgICArIGoubmF0aXZlCiAgICAvLyAgICAgKyBrLm5hdGl2ZQogICAgLy8gICAgICsgbC5uYXRpdmUKICAgIC8vICAgICArIG0ubmF0aXZlCiAgICAvLyAgICAgKyBuLm5hdGl2ZQogICAgLy8gICAgICsgby5uYXRpdmUKICAgIC8vICAgICArIHAKICAgIC8vICAgICArIHEubmF0aXZlCiAgICAvLyAgICAgKyByLm5hdGl2ZQogICAgLy8gICAgICsgdS5uYXRpdmUKICAgIC8vICAgICArIHYubmF0aXZlCiAgICAvLyApCiAgICBpdG9iCiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFiaV9yb3V0aW5nLmNvbnRyYWN0LlJlZmVyZW5jZS5oZWxsb193aXRoX2FsZ29weV9zdHJpbmcobmFtZTogYnl0ZXMpIC0+IGJ5dGVzOgpoZWxsb193aXRoX2FsZ29weV9zdHJpbmc6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyOTUtMjk2CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIC8vIGRlZiBoZWxsb193aXRoX2FsZ29weV9zdHJpbmcoc2VsZiwgbmFtZTogU3RyaW5nKSAtPiBTdHJpbmc6CiAgICBwcm90byAxIDEKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5NwogICAgLy8gcmV0dXJuICJIZWxsbyAiICsgbmFtZSArICIhIgogICAgcHVzaGJ5dGVzICJIZWxsbyAiCiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzICIhIgogICAgY29uY2F0CiAgICByZXRzdWIK", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CiAEAQB7AiYFBBUffHUDYXNhDBUffHUAAAAAAAAByApsb2NhbF91aW50C2xvY2FsX2J5dGVzMRhAADIpJGeABmFuX2ludCVnggIKc29tZV9ieXRlcwMHCAlngAdjcmVhdG9yMQBngANhcHAkZzEbQQKogg8E142zWwQBBAAjBDpTU/wE0vL1PAQoJrICBG+OlM0EF9xo8AR/rZeABC/flaQEE5mCbAShMAghBGcNwFUEVzIZWgTRdVL7BJAjuxk2GgCODwIlAg4CAgHrAdkBtwGfAY8BhAF5AWEBGADCACAAAiNDMRkURDEYRDYaAVcCAIgEAEkVFlcGAkxQKExQsCJDMRkURDEYRDYaATYaAjYaAzYaBBc2GgUXwDA2GgY2GgcxFiUJSTgQIhJENhoINhoJNhoKNhoLNhoMNhoNNhoONhoPVwAINhoPVwgINhoPgRBbNhoPVxgINhoPVyAINhoPSYEoWUsBgSpZUlcCADYaD0mBKllLARVSVwIANhoPgSxVwDAxFiIJSTgQIhJENhoPVy0INhoPVzUIiALeKExQsCJDMRkURDEYRDYaARc2GgIXNhoDFzYaBBc2GgUXNhoGFzYaBxc2GggXNhoJFzYaChc2GgsXNhoMFzYaDRc2Gg4XNhoPVwIAiAJgSRUWVwYCTFAoTFCwIkMxGRREMRhENhoBF8AwNhoCF8AwNhoDF8AcNhoEF8AcNhoFF8AyNhoGF8AyNhoHNhoINhoJNhoKNhoLNhoMFzYaDVcCAIgBjiJDMRkURDEYRIAMFR98dQAAAAAAAAADsCJDMRkURDEYRCqwIkMxGRREMRhEKrAiQzEZFEQxGESIAVEoTFCwIkMxGRREMRhENhoBF8AwNhoCF8AwiAErIkMxGRREMRhENhoBF8AwNhoCMRYiCUk4ECISRDYaA4gA6SJDMRkURDEYRDYaARfAMIgAsiJDIjEZkIElGkQxGEQ2GgGIAIMoTFCwIkM2GgGIAGooTFCwIkMxGSISRDEYRDYaARc2GgJXAgCIAD4iQzEZFEQxGEQ2GgGIACIoTFCwIkMxGY0GAAMAAwAD/bgAAwADQv21MRgURIgAOiJDigEBi/8XIggWVwcBiYoCADEAK4v+ZjEAJwSL/2aJigEBi/8XIggWVwcBiYoBAYv/FyIIFlcHAYmAC0hlbGxvIFdvcmxksImKAQAxADIJEkQjKWVEFEQpi/9nsYEEshAjsgEyCrIUi/+yEbOJigQAIyllRIv8EkSL/RciEkSL/jgHMgoSRIv/FyUSRImKAgCL/ov/EkSJMgOJig0Ai/MkEkSL9IHIAxJEi/UyCRJEi/YyAxJEi/ckEkSL+IHIAxJEi/lXAAGAAQeoRIv5VwEBgAEIqESL+VcCAYABCahEi/oXJRJEi/sXgQMSRIv8gAQAAAB7qESL/YAFAANhYmMSRDEAIytjRIv+EkQxACMnBGNEi/8SRImKDwGL8YvyCIvzCIv0CIv1CIv2CIv3CIv4CIv5CIv6CIv7CIv8CIv9CIv+CESL/4mKGgExG4EQEkSL7TgIgaCNBhJEi/04CIHAmgwSRIvqRIv8RIv6i/tQsIvmF4vnFwiL6BcIi+kIi+sXCIvsFwiL7hcIi+8XCIvwFwiL8RcIi/IXCIvzFwiL9BcIi/UXCIv2FwiL9wiL+BcIi/kXCIv+FwiL/xcIFomKAQGABkhlbGxvIIv/UIABIVCJ", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }