{ "name": "ItxnDemoContract", "structs": {}, "methods": [ { "name": "test1", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test2", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test3", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test4", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test5", "args": [ { "type": "uint64", "name": "appId" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 1 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "name": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "bmFtZQ==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 1633 ], "errorMessage": "Bytes has valid prefix" }, { "pc": [ 504 ], "errorMessage": "app is created" }, { "pc": [ 1543 ], "errorMessage": "application exists" }, { "pc": [ 1424 ], "errorMessage": "approval pages = 2" }, { "pc": [ 1686 ], "errorMessage": "assert target is match for conditions" }, { "pc": [ 435, 442 ], "errorMessage": "asset exists" }, { "pc": [ 426 ], "errorMessage": "asset1_txn is correct" }, { "pc": [ 430 ], "errorMessage": "asset2_txn is correct" }, { "pc": [ 508 ], "errorMessage": "asset3_txn is correct" }, { "pc": [ 328, 382 ], "errorMessage": "check GlobalState exists" }, { "pc": [ 1525 ], "errorMessage": "clear state pages = 1" }, { "pc": [ 712 ], "errorMessage": "correct args used 1" }, { "pc": [ 719, 761 ], "errorMessage": "correct args used 2" }, { "pc": [ 439 ], "errorMessage": "created asset 1 is correct" }, { "pc": [ 446 ], "errorMessage": "created asset 2 is correct" }, { "pc": [ 1488 ], "errorMessage": "expected approval page 0" }, { "pc": [ 1522 ], "errorMessage": "expected approval page 1" }, { "pc": [ 1531 ], "errorMessage": "expected clear state page" }, { "pc": [ 1420 ], "errorMessage": "extra pages = 3" }, { "pc": [ 306 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDEgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgMHggIm5hbWUiICIxIiAidW5pdCIgIjIiICI0IiAiQVNUMSIgIkFTVDIiICJBU1QzIiAiMyIgIjUiICJoZWxsbyIgIjNyZCIgIndpdGggYXJncyBwYXJhbSBzZXQiICI0MiIgIjEwIiAiMTEiICIxMiIgIjEzIiAiMTQiICIxNSIgIjE2IgogICAgYiBtYWluX2Jsb2NrQDAKCm1haW5fYmxvY2tAMDoKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIGIgbWFpbl9pZl9ib2R5QDEKCm1haW5faWZfYm9keUAxOgogICAgY2FsbHN1YiBjb25zdHJ1Y3RvcgogICAgYiBtYWluX2FmdGVyX2lmX2Vsc2VAMgoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICBiIG1haW5fYmxvY2tAMwoKbWFpbl9ibG9ja0AzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMAogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgaW50Y18wIC8vIDAKICAgICE9CiAgICBieiBtYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNAogICAgYiBtYWluX2FiaV9yb3V0aW5nQDQKCm1haW5fYWJpX3JvdXRpbmdANDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjAKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIE5vT3AKICAgID09CiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBpbnRjXzAgLy8gMAogICAgIT0KICAgIGJ6IG1haW5fY3JlYXRlX05vT3BAMTIKICAgIGIgbWFpbl9jYWxsX05vT3BANQoKbWFpbl9jYWxsX05vT3BANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjAKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgcHVzaGJ5dGVzIDB4MjAyNTRmOTEgLy8gbWV0aG9kICJ0ZXN0MSgpdm9pZCIKICAgIHB1c2hieXRlcyAweGYxOTA4NTI0IC8vIG1ldGhvZCAidGVzdDIoKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHhkZjkyMGYzNyAvLyBtZXRob2QgInRlc3QzKCl2b2lkIgogICAgcHVzaGJ5dGVzIDB4M2Q0NjM0NWMgLy8gbWV0aG9kICJ0ZXN0NCgpdm9pZCIKICAgIHB1c2hieXRlcyAweGQ0YzZhOGY1IC8vIG1ldGhvZCAidGVzdDUodWludDY0KXZvaWQiCiAgICB1bmNvdmVyIDUKICAgIG1hdGNoIG1haW5fdGVzdDFfcm91dGVANiBtYWluX3Rlc3QyX3JvdXRlQDcgbWFpbl90ZXN0M19yb3V0ZUA4IG1haW5fdGVzdDRfcm91dGVAOSBtYWluX3Rlc3Q1X3JvdXRlQDEwCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMQoKbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDExOgogICAgYiBtYWluX2FmdGVyX2lmX2Vsc2VAMTMKCm1haW5fYWZ0ZXJfaWZfZWxzZUAxMzoKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDE1CgptYWluX2FmdGVyX2lmX2Vsc2VAMTU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwCiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIGVycgoKbWFpbl90ZXN0NV9yb3V0ZUAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjA3CiAgICAvLyBwdWJsaWMgdGVzdDUoYXBwSWQ6IEFwcGxpY2F0aW9uKSB7CiAgICBjYWxsc3ViIHRlc3Q1CiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMQoKbWFpbl90ZXN0NF9yb3V0ZUA5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODQKICAgIC8vIHB1YmxpYyB0ZXN0NCgpIHsKICAgIGNhbGxzdWIgdGVzdDQKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDExCgptYWluX3Rlc3QzX3JvdXRlQDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOAogICAgLy8gcHVibGljIHRlc3QzKCkgewogICAgY2FsbHN1YiB0ZXN0MwogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTEKCm1haW5fdGVzdDJfcm91dGVANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzEKICAgIC8vIHB1YmxpYyB0ZXN0MigpIHsKICAgIGNhbGxzdWIgdGVzdDIKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDExCgptYWluX3Rlc3QxX3JvdXRlQDY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIzCiAgICAvLyBwdWJsaWMgdGVzdDEoKSB7CiAgICBjYWxsc3ViIHRlc3QxCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMQoKbWFpbl9jcmVhdGVfTm9PcEAxMjoKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDEzCgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjAKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIE5vT3AKICAgID09CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18wIC8vIDAKICAgID09CiAgICAmJgogICAgYXNzZXJ0CiAgICBjYWxsc3ViIF9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZQogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0MToKICAgIGIgdGVzdDFfYmxvY2tAMAoKdGVzdDFfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjMKICAgIC8vIHB1YmxpYyB0ZXN0MSgpIHsKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MQogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0MjoKICAgIGIgdGVzdDJfYmxvY2tAMAoKdGVzdDJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzEKICAgIC8vIHB1YmxpYyB0ZXN0MigpIHsKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MgogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0MzoKICAgIGIgdGVzdDNfYmxvY2tAMAoKdGVzdDNfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA4CiAgICAvLyBwdWJsaWMgdGVzdDMoKSB7CiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDMKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3Q0W3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdDQ6CiAgICBiIHRlc3Q0X2Jsb2NrQDAKCnRlc3Q0X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NAogICAgLy8gcHVibGljIHRlc3Q0KCkgewogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3Q0CiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3Q1OgogICAgYiB0ZXN0NV9ibG9ja0AwCgp0ZXN0NV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMDcKICAgIC8vIHB1YmxpYyB0ZXN0NShhcHBJZDogQXBwbGljYXRpb24pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDUKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxKCkgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjMKICAgIC8vIHB1YmxpYyB0ZXN0MSgpIHsKICAgIHByb3RvIDAgMAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gIiIKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxCiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzMgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI0CiAgICAvLyB0aGlzLm5hbWUudmFsdWUgPSBCeXRlcygnQVNUMScpCiAgICBieXRlYyA4IC8vICJBU1QxIgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjgKICAgIC8vIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjEKICAgIC8vIG5hbWUgPSBHbG9iYWxTdGF0ZSh7IGluaXRpYWxWYWx1ZTogQnl0ZXMoKSB9KQogICAgYnl0ZWNfMyAvLyAibmFtZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjgKICAgIC8vIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzEKICAgIC8vIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGR1cAogICAgY292ZXIgMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMgogICAgLy8gcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgZHVwCiAgICBjb3ZlciAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxCiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzMgLy8gIm5hbWUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM1CiAgICAvLyB0aGlzLm5hbWUudmFsdWUgPSBCeXRlcygnQVNUMicpCiAgICBieXRlYyA5IC8vICJBU1QyIgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzYKICAgIC8vIGNvbnN0IGFzc2V0MV90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjMwCiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjkKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA1IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNwogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI2LTMzCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxX25leHRfdHhuQDEKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfbmV4dF90eG5AMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzYKICAgIC8vIGNvbnN0IGFzc2V0MV90eG4gPSBhc3NldFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ29uZmlnQXNzZXROYW1lCiAgICBmcmFtZV9idXJ5IDAKICAgIGl0eG4gQ3JlYXRlZEFzc2V0SUQKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozOAogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMQogICAgLy8gbmFtZSA9IEdsb2JhbFN0YXRlKHsgaW5pdGlhbFZhbHVlOiBCeXRlcygpIH0pCiAgICBieXRlY18zIC8vICJuYW1lIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozOAogICAgLy8gYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0MAogICAgLy8gY29uc3QgYXNzZXQyX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBmcmFtZV9kaWcgMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGZyYW1lX2RpZyAyCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjcKICAgIC8vIHRvdGFsOiAxMDAwLAogICAgaW50YyA0IC8vIDEwMDAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRUb3RhbAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNi0zMwogICAgLy8gY29uc3QgYXNzZXRQYXJhbXMgPSBpdHhuLmFzc2V0Q29uZmlnKHsKICAgIC8vICAgdG90YWw6IDEwMDAsCiAgICAvLyAgIGFzc2V0TmFtZTogdGhpcy5uYW1lLnZhbHVlLAogICAgLy8gICB1bml0TmFtZTogJ3VuaXQnLAogICAgLy8gICBkZWNpbWFsczogMywKICAgIC8vICAgbWFuYWdlcjogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgIHJlc2VydmU6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gfSkKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9uZXh0X3R4bkAyCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxX25leHRfdHhuQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQwCiAgICAvLyBjb25zdCBhc3NldDJfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgY292ZXIgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0MgogICAgLy8gYXNzZXJ0KGFzc2V0MV90eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMScpLCAnYXNzZXQxX3R4biBpcyBjb3JyZWN0JykKICAgIGZyYW1lX2RpZyAwCiAgICBieXRlYyA4IC8vICJBU1QxIgogICAgPT0KICAgIGFzc2VydCAvLyBhc3NldDFfdHhuIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDMKICAgIC8vIGFzc2VydChhc3NldDJfdHhuLmFzc2V0TmFtZSA9PT0gQnl0ZXMoJ0FTVDInKSwgJ2Fzc2V0Ml90eG4gaXMgY29ycmVjdCcpCiAgICBieXRlYyA5IC8vICJBU1QyIgogICAgPT0KICAgIGFzc2VydCAvLyBhc3NldDJfdHhuIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDQKICAgIC8vIGFzc2VydChhc3NldDFfdHhuLmNyZWF0ZWRBc3NldC5uYW1lID09PSBCeXRlcygnQVNUMScpLCAnY3JlYXRlZCBhc3NldCAxIGlzIGNvcnJlY3QnKQogICAgZnJhbWVfZGlnIDEKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXROYW1lCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBieXRlYyA4IC8vICJBU1QxIgogICAgPT0KICAgIGFzc2VydCAvLyBjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NQogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QyJyksICdjcmVhdGVkIGFzc2V0IDIgaXMgY29ycmVjdCcpCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgOSAvLyAiQVNUMiIKICAgID09CiAgICBhc3NlcnQgLy8gY3JlYXRlZCBhc3NldCAyIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTcKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0OQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDgKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDctNTEKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUwCiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9uZXh0X3R4bkAzCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxX25leHRfdHhuQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU3CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fbmV4dAogICAgZnJhbWVfZGlnIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBmcmFtZV9kaWcgMgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzAKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyOQogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDUgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTQKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgMTAgLy8gIkFTVDMiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNwogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI2LTMzCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxX25leHRfdHhuQDQKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfbmV4dF90eG5ANDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTcKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9zdWJtaXQKICAgIGdpdHhuIDAgQ3JlYXRlZEFwcGxpY2F0aW9uSUQKICAgIGl0eG4gQ29uZmlnQXNzZXROYW1lCiAgICBjb3ZlciAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU5CiAgICAvLyBhc3NlcnQoYXBwQ3JlYXRlVHhuLmNyZWF0ZWRBcHAsICdhcHAgaXMgY3JlYXRlZCcpCiAgICBhc3NlcnQgLy8gYXBwIGlzIGNyZWF0ZWQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjAKICAgIC8vIGFzc2VydChhc3NldDNfdHhuLmFzc2V0TmFtZSA9PT0gQnl0ZXMoJ0FTVDMnKSwgJ2Fzc2V0M190eG4gaXMgY29ycmVjdCcpCiAgICBieXRlYyAxMCAvLyAiQVNUMyIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQzX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY4CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYzCiAgICAvLyBub3RlOiAnM3JkJywKICAgIGludGNfMiAvLyAxCiAgICBpbnRjXzIgLy8gMQogICAgPj0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjgKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfbmV4dF9maWVsZEA2CiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfc2V0X05vdGVfMF90b18wQDUKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfc2V0X05vdGVfMF90b18wQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYzCiAgICAvLyBub3RlOiAnM3JkJywKICAgIGJ5dGVjIDE0IC8vICIzcmQiCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9uZXh0X2ZpZWxkQDYKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfbmV4dF9maWVsZEA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0OQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDgKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDctNTEKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUwCiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9uZXh0X3R4bkA3Cgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxX25leHRfdHhuQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY4CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjYKICAgIC8vIG5vdGU6ICczcmQnLAogICAgaW50Y18yIC8vIDEKICAgIGludGNfMiAvLyAxCiAgICA+PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2OAogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgYnogdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9uZXh0X2ZpZWxkQDkKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9zZXRfTm90ZV8wX3RvXzBAOAoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9zZXRfTm90ZV8wX3RvXzBAODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjYKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMTQgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QxX25leHRfZmllbGRAOQoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MV9uZXh0X2ZpZWxkQDk6CiAgICBmcmFtZV9kaWcgMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGZyYW1lX2RpZyAyCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1NAogICAgLy8gYXNzZXROYW1lOiAnQVNUMycsCiAgICBieXRlYyAxMCAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjYtMzMKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfbmV4dF90eG5AMTAKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDFfbmV4dF90eG5AMTA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY4CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX3N1Ym1pdAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MigpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjcxCiAgICAvLyBwdWJsaWMgdGVzdDIoKSB7CiAgICBwcm90byAwIDAKICAgIGludGNfMCAvLyAwCiAgICBpbnRjXzAgLy8gMAogICAgaW50Y18wIC8vIDAKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICIiCiAgICBieXRlY18yIC8vICIiCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9ibG9ja0AwOgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gIiIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzMKICAgIC8vIGlmIChUeG4ubnVtQXBwQXJncykgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfZWxzZV9ib2R5QDIKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9pZl9ib2R5QDEKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfaWZfYm9keUAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NAogICAgLy8gY29uc3QgYXJncyA9IFtCeXRlcygnMScpLCBCeXRlcygnMicpXSBhcyBjb25zdAogICAgYnl0ZWMgNCAvLyAiMSIKICAgIGZyYW1lX2J1cnkgMAogICAgYnl0ZWMgNiAvLyAiMiIKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3OAogICAgLy8gYXBwQXJnczogYXJncywKICAgIHB1c2hpbnQgMgogICAgZnJhbWVfYnVyeSA0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uTm9PcCwKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDcKICAgIGludGNfMiAvLyAxCiAgICBmcmFtZV9idXJ5IDUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODAKICAgIC8vIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIGJ5dGVjIDE1IC8vICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IgogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfYWZ0ZXJfaWZfZWxzZUAzCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QyX2FmdGVyX2lmX2Vsc2VAMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTAKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgZnJhbWVfZGlnIDIKICAgIGl0eG5fZmllbGQgTm90ZQogICAgZnJhbWVfZGlnIDUKICAgIGludGNfMiAvLyAxCiAgICA+PQogICAgYnogdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9uZXh0X2ZpZWxkQDUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9zZXRfT25Db21wbGV0aW9uXzBfdG9fMEA0Cgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QyX3NldF9PbkNvbXBsZXRpb25fMF90b18wQDQ6CiAgICBmcmFtZV9kaWcgNwogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9uZXh0X2ZpZWxkQDUKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfbmV4dF9maWVsZEA1OgogICAgZnJhbWVfZGlnIDAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyA0CiAgICBpbnRjXzMgLy8gMwogICAgPj0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTAKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgYnogdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9uZXh0X2ZpZWxkQDcKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9zZXRfQXBwbGljYXRpb25BcmdzXzJfdG9fMkA2Cgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QyX3NldF9BcHBsaWNhdGlvbkFyZ3NfMl90b18yQDY6CiAgICBmcmFtZV9kaWcgNgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9uZXh0X2ZpZWxkQDcKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfbmV4dF9maWVsZEA3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NwogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzYKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzUtODEKICAgIC8vIGNyZWF0ZUFwcFBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgYXBwQXJnczogYXJncywKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLk5vT3AsCiAgICAvLyAgIG5vdGU6ICd3aXRoIGFyZ3MgcGFyYW0gc2V0JywKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfbmV4dF90eG5AOAoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9uZXh0X3R4bkA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5MAogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBOb3RlCiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTEKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygwKSA9PT0gQnl0ZXMoJzEnKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDEnKQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5hcyBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDQgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTIKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygxKSA9PT0gQnl0ZXMoJzInKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDInKQogICAgaW50Y18yIC8vIDEKICAgIGl0eG5hcyBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDYgLy8gIjIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTQKICAgIC8vIGlmIChUeG4ubnVtQXBwQXJncyA+IDEpIHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBpbnRjXzIgLy8gMQogICAgPgogICAgYnogdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9hZnRlcl9pZl9lbHNlQDExCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfaWZfYm9keUA5Cgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QyX2lmX2JvZHlAOToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTUtMTAyCiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDAKICAgIC8vIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICBieXRlYyAxNiAvLyAiNDIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OQogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5OAogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTcKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTUtMTAxCiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4yID0gaXR4bgogICAgLy8gICAuYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgICBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIGFwcEFyZ3M6IFtCeXRlcygnNDInKV0sCiAgICAvLyAgIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfbmV4dF90eG5AMTAKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfbmV4dF90eG5AMTA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1LTEwMgogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuMiA9IGl0eG4KICAgIC8vICAgLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBhcHBBcmdzOiBbQnl0ZXMoJzQyJyldLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwMwogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bjIuYXBwQXJncygwKSA9PT0gQnl0ZXMoJzQyJyksICdjb3JyZWN0IGFyZ3MgdXNlZCAyJykKICAgIGludGNfMCAvLyAwCiAgICBpdHhuYXMgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyAxNiAvLyAiNDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA0CiAgICAvLyBhc3NlcnQoY3JlYXRlQXBwVHhuLm5vdGUgPT09IEJ5dGVzKCd3aXRoIGFyZ3MgcGFyYW0gc2V0JykpCiAgICBmcmFtZV9kaWcgMwogICAgYnl0ZWMgMTUgLy8gIndpdGggYXJncyBwYXJhbSBzZXQiCiAgICA9PQogICAgYXNzZXJ0CiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfYWZ0ZXJfaWZfZWxzZUAxMQoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0Ml9hZnRlcl9pZl9lbHNlQDExOgogICAgcmV0c3ViCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QyX2Vsc2VfYm9keUAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NgogICAgLy8gYXBwQXJnczogW0J5dGVzKCczJyksIG5ldyBTdHIoJzQnKSwgQnl0ZXMoJzUnKV0sCiAgICBieXRlYyA3IC8vICI0IgogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgYnl0ZWMgNyAvLyAiNCIKICAgIGNvbmNhdAogICAgYnl0ZWMgMTEgLy8gIjMiCiAgICBmcmFtZV9idXJ5IDAKICAgIGZyYW1lX2J1cnkgMQogICAgYnl0ZWMgMTIgLy8gIjUiCiAgICBmcmFtZV9idXJ5IDYKICAgIGludGNfMyAvLyAzCiAgICBmcmFtZV9idXJ5IDQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODcKICAgIC8vIG5vdGU6ICdubyBhcmdzIHBhcmFtIHNldCcsCiAgICBwdXNoYnl0ZXMgIm5vIGFyZ3MgcGFyYW0gc2V0IgogICAgZnJhbWVfYnVyeSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjgzCiAgICAvLyBjcmVhdGVBcHBQYXJhbXMgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSA1CiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDJfYWZ0ZXJfaWZfZWxzZUAzCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0MygpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDM6CiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0M19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDctMTY0CiAgICAvLyBjb25zdCBbYXBwMSwgYXBwMiwgYXBwMywgYXBwNCwgYXBwNSwgYXBwNiwgYXBwNywgYXBwOCwgYXBwOSwgYXBwMTAsIGFwcDExLCBhcHAxMiwgYXBwMTMsIGFwcDE0LCBhcHAxNSwgYXBwMTZdID0gaXR4bi5zdWJtaXRHcm91cCgKICAgIC8vICAgYXBwVHhuMSwKICAgIC8vICAgYXBwVHhuMiwKICAgIC8vICAgYXBwVHhuMywKICAgIC8vICAgYXBwVHhuNCwKICAgIC8vICAgYXBwVHhuNSwKICAgIC8vICAgYXBwVHhuNiwKICAgIC8vICAgYXBwVHhuNywKICAgIC8vICAgYXBwVHhuOCwKICAgIC8vICAgYXBwVHhuOSwKICAgIC8vICAgYXBwVHhuMTAsCiAgICAvLyAgIGFwcFR4bjExLAogICAgLy8gICBhcHBUeG4xMiwKICAgIC8vICAgYXBwVHhuMTMsCiAgICAvLyAgIGFwcFR4bjE0LAogICAgLy8gICBhcHBUeG4xNSwKICAgIC8vICAgYXBwVHhuMTYsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMwogICAgLy8gYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgYnl0ZWMgNCAvLyAiMSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDEKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQ5CiAgICAvLyBhcHBUeG4yLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExNwogICAgLy8gYXBwVHhuMi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzInKV0gfSkKICAgIGJ5dGVjIDYgLy8gIjIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIHB1c2hpbnQgNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0M19uZXh0X3R4bkAyCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1MAogICAgLy8gYXBwVHhuMywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTkKICAgIC8vIGFwcFR4bjMuc2V0KHsgYXBwQXJnczogW0J5dGVzKCczJyldIH0pCiAgICBieXRlYyAxMSAvLyAiMyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDMKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUxCiAgICAvLyBhcHBUeG40LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyMQogICAgLy8gYXBwVHhuNC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzQnKV0gfSkKICAgIGJ5dGVjIDcgLy8gIjQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIHB1c2hpbnQgNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0M19uZXh0X3R4bkA0Cgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1MgogICAgLy8gYXBwVHhuNSwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjMKICAgIC8vIGFwcFR4bjUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCc1JyldIH0pCiAgICBieXRlYyAxMiAvLyAiNSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDUKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5ANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUzCiAgICAvLyBhcHBUeG42LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyNQogICAgLy8gYXBwVHhuNi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzYnKV0gfSkKICAgIHB1c2hieXRlcyAiNiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDYKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5ANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU0CiAgICAvLyBhcHBUeG43LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyNwogICAgLy8gYXBwVHhuNy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzcnKV0gfSkKICAgIHB1c2hieXRlcyAiNyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDcKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5ANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU1CiAgICAvLyBhcHBUeG44LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyOQogICAgLy8gYXBwVHhuOC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzgnKV0gfSkKICAgIHB1c2hieXRlcyAiOCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDgKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU2CiAgICAvLyBhcHBUeG45LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzMQogICAgLy8gYXBwVHhuOS5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzknKV0gfSkKICAgIHB1c2hieXRlcyAiOSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDkKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AOToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU3CiAgICAvLyBhcHBUeG4xMCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzMKICAgIC8vIGFwcFR4bjEwLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTAnKV0gfSkKICAgIGJ5dGVjIDE3IC8vICIxMCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDEwCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDEwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTgKICAgIC8vIGFwcFR4bjExLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNQogICAgLy8gYXBwVHhuMTEuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMScpXSB9KQogICAgYnl0ZWMgMTggLy8gIjExIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBwdXNoaW50IDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOS0xMTQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AMTEKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1OQogICAgLy8gYXBwVHhuMTIsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTExCiAgICAvLyBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM3CiAgICAvLyBhcHBUeG4xMi5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzEyJyldIH0pCiAgICBieXRlYyAxOSAvLyAiMTIiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIHB1c2hpbnQgNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0M19uZXh0X3R4bkAxMgoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0M19uZXh0X3R4bkAxMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYwCiAgICAvLyBhcHBUeG4xMywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzkKICAgIC8vIGFwcFR4bjEzLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTMnKV0gfSkKICAgIGJ5dGVjIDIwIC8vICIxMyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDEzCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDEzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjEKICAgIC8vIGFwcFR4bjE0LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MQogICAgLy8gYXBwVHhuMTQuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNCcpXSB9KQogICAgYnl0ZWMgMjEgLy8gIjE0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBwdXNoaW50IDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOS0xMTQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AMTQKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDNfbmV4dF90eG5AMTQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MgogICAgLy8gYXBwVHhuMTUsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTExCiAgICAvLyBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQzCiAgICAvLyBhcHBUeG4xNS5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE1JyldIH0pCiAgICBieXRlYyAyMiAvLyAiMTUiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIHB1c2hpbnQgNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0M19uZXh0X3R4bkAxNQoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0M19uZXh0X3R4bkAxNToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYzCiAgICAvLyBhcHBUeG4xNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDUKICAgIC8vIGFwcFR4bjE2LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTYnKV0gfSkKICAgIGJ5dGVjIDIzIC8vICIxNiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgcHVzaGludCA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDE2Cgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3QzX25leHRfdHhuQDE2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDctMTY0CiAgICAvLyBjb25zdCBbYXBwMSwgYXBwMiwgYXBwMywgYXBwNCwgYXBwNSwgYXBwNiwgYXBwNywgYXBwOCwgYXBwOSwgYXBwMTAsIGFwcDExLCBhcHAxMiwgYXBwMTMsIGFwcDE0LCBhcHAxNSwgYXBwMTZdID0gaXR4bi5zdWJtaXRHcm91cCgKICAgIC8vICAgYXBwVHhuMSwKICAgIC8vICAgYXBwVHhuMiwKICAgIC8vICAgYXBwVHhuMywKICAgIC8vICAgYXBwVHhuNCwKICAgIC8vICAgYXBwVHhuNSwKICAgIC8vICAgYXBwVHhuNiwKICAgIC8vICAgYXBwVHhuNywKICAgIC8vICAgYXBwVHhuOCwKICAgIC8vICAgYXBwVHhuOSwKICAgIC8vICAgYXBwVHhuMTAsCiAgICAvLyAgIGFwcFR4bjExLAogICAgLy8gICBhcHBUeG4xMiwKICAgIC8vICAgYXBwVHhuMTMsCiAgICAvLyAgIGFwcFR4bjE0LAogICAgLy8gICBhcHBUeG4xNSwKICAgIC8vICAgYXBwVHhuMTYsCiAgICAvLyApCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjYKICAgIC8vIGFzc2VydChhcHAxLmxvZ3MoMCkgPT09IEJ5dGVzKCcxJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAwIExvZ3MKICAgIGJ5dGVjIDQgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NwogICAgLy8gYXNzZXJ0KGFwcDIubG9ncygwKSA9PT0gQnl0ZXMoJzInKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDEgTG9ncwogICAgYnl0ZWMgNiAvLyAiMiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY4CiAgICAvLyBhc3NlcnQoYXBwMy5sb2dzKDApID09PSBCeXRlcygnMycpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMiBMb2dzCiAgICBieXRlYyAxMSAvLyAiMyIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY5CiAgICAvLyBhc3NlcnQoYXBwNC5sb2dzKDApID09PSBCeXRlcygnNCcpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMyBMb2dzCiAgICBieXRlYyA3IC8vICI0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzAKICAgIC8vIGFzc2VydChhcHA1LmxvZ3MoMCkgPT09IEJ5dGVzKCc1JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA0IExvZ3MKICAgIGJ5dGVjIDEyIC8vICI1IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzEKICAgIC8vIGFzc2VydChhcHA2LmxvZ3MoMCkgPT09IEJ5dGVzKCc2JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA1IExvZ3MKICAgIHB1c2hieXRlcyAiNiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTcyCiAgICAvLyBhc3NlcnQoYXBwNy5sb2dzKDApID09PSBCeXRlcygnNycpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgNiBMb2dzCiAgICBwdXNoYnl0ZXMgIjciCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MwogICAgLy8gYXNzZXJ0KGFwcDgubG9ncygwKSA9PT0gQnl0ZXMoJzgnKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDcgTG9ncwogICAgcHVzaGJ5dGVzICI4IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzQKICAgIC8vIGFzc2VydChhcHA5LmxvZ3MoMCkgPT09IEJ5dGVzKCc5JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA4IExvZ3MKICAgIHB1c2hieXRlcyAiOSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc1CiAgICAvLyBhc3NlcnQoYXBwMTAubG9ncygwKSA9PT0gQnl0ZXMoJzEwJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyA5IExvZ3MKICAgIGJ5dGVjIDE3IC8vICIxMCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc2CiAgICAvLyBhc3NlcnQoYXBwMTEubG9ncygwKSA9PT0gQnl0ZXMoJzExJykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAxMCBMb2dzCiAgICBieXRlYyAxOCAvLyAiMTEiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NwogICAgLy8gYXNzZXJ0KGFwcDEyLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMicpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMTEgTG9ncwogICAgYnl0ZWMgMTkgLy8gIjEyIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzgKICAgIC8vIGFzc2VydChhcHAxMy5sb2dzKDApID09PSBCeXRlcygnMTMnKSkKICAgIGludGNfMCAvLyAwCiAgICBnaXR4bmFzIDEyIExvZ3MKICAgIGJ5dGVjIDIwIC8vICIxMyIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc5CiAgICAvLyBhc3NlcnQoYXBwMTQubG9ncygwKSA9PT0gQnl0ZXMoJzE0JykpCiAgICBpbnRjXzAgLy8gMAogICAgZ2l0eG5hcyAxMyBMb2dzCiAgICBieXRlYyAyMSAvLyAiMTQiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4MAogICAgLy8gYXNzZXJ0KGFwcDE1LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNScpKQogICAgaW50Y18wIC8vIDAKICAgIGdpdHhuYXMgMTQgTG9ncwogICAgYnl0ZWMgMjIgLy8gIjE1IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODEKICAgIC8vIGFzc2VydChhcHAxNi5sb2dzKDApID09PSBCeXRlcygnMTYnKSkKICAgIGludGNfMCAvLyAwCiAgICBpdHhuYXMgTG9ncwogICAgYnl0ZWMgMjMgLy8gIjE2IgogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NCgpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NAogICAgLy8gcHVibGljIHRlc3Q0KCkgewogICAgcHJvdG8gMCAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDRfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODUKICAgIC8vIGNvbnN0IGxvdHNPZkJ5dGVzID0gb3AuYnplcm8oMjA0NCkKICAgIHB1c2hpbnQgMjA0NAogICAgYnplcm8KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg3CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICBwdXNoYnl0ZXMgMHg4MGZjMGYKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg3LTE4OAogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgLy8gICAuY29uY2F0KGxvdHNPZkJ5dGVzKQogICAgdW5jb3ZlciAxCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg5CiAgICAvLyAuY29uY2F0KEJ5dGVzLmZyb21IZXgoJzQ4JykpCiAgICBwdXNoYnl0ZXMgMHg0OAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODctMTg5CiAgICAvLyBjb25zdCBhcHByb3ZhbDIgPSBCeXRlcy5mcm9tSGV4KCc4MCcgKyAnRkMwZicpCiAgICAvLyAgIC5jb25jYXQobG90c09mQnl0ZXMpCiAgICAvLyAgIC5jb25jYXQoQnl0ZXMuZnJvbUhleCgnNDgnKSkKICAgIGNvbmNhdAogICAgZHVwbiAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MgogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBbYXBwcm92YWwxLCBhcHByb3ZhbDIsIGFwcHJvdmFsMiwgYXBwcm92YWwyXSwKICAgIGNvdmVyIDIKICAgIGNvdmVyIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTk4CiAgICAvLyBjb25zdCBhcHAxID0gYXBwVHhuMS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOTYKICAgIC8vIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTk1CiAgICAvLyBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICBieXRlYyA0IC8vICIxIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTk0CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBwdXNoaW50IDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MwogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkyCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IFthcHByb3ZhbDEsIGFwcHJvdmFsMiwgYXBwcm92YWwyLCBhcHByb3ZhbDJdLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOTEtMTk3CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IFthcHByb3ZhbDEsIGFwcHJvdmFsMiwgYXBwcm92YWwyLCBhcHByb3ZhbDJdLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NF9uZXh0X3R4bkAxCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3Q0X25leHRfdHhuQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5OAogICAgLy8gY29uc3QgYXBwMSA9IGFwcFR4bjEuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIEV4dHJhUHJvZ3JhbVBhZ2VzCiAgICBpdHhuIE51bUFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBjb3ZlciAxCiAgICBpdHhuIE51bUNsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGNvdmVyIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTk5CiAgICAvLyBhc3NlcnQoYXBwMS5leHRyYVByb2dyYW1QYWdlcyA9PT0gMywgJ2V4dHJhIHBhZ2VzID0gMycpCiAgICBpbnRjXzMgLy8gMwogICAgPT0KICAgIGFzc2VydCAvLyBleHRyYSBwYWdlcyA9IDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjAwCiAgICAvLyBhc3NlcnQoYXBwMS5udW1BcHByb3ZhbFByb2dyYW1QYWdlcyA9PT0gMiwgJ2FwcHJvdmFsIHBhZ2VzID0gMicpCiAgICBwdXNoaW50IDIKICAgID09CiAgICBhc3NlcnQgLy8gYXBwcm92YWwgcGFnZXMgPSAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwMQogICAgLy8gYXNzZXJ0KGFwcDEuYXBwcm92YWxQcm9ncmFtUGFnZXMoMCkgPT09IGFwcHJvdmFsMS5jb25jYXQoYXBwcm92YWwyKS5jb25jYXQoYXBwcm92YWwyLnNsaWNlKDAsIC0zKSksICdleHBlY3RlZCBhcHByb3ZhbCBwYWdlIDAnKQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5hcyBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgZnJhbWVfZGlnIDAKICAgIGR1cAogICAgY292ZXIgMgogICAgY29uY2F0CiAgICBjb3ZlciAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDAKICAgIGRpZyAxCiAgICA+PQogICAgaW50Y18wIC8vIDAKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgY292ZXIgMQogICAgaW50Y18zIC8vIDMKICAgIGRpZyAxCiAgICA+PQogICAgaW50Y18zIC8vIDMKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgLQogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgdW5jb3ZlciAxCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDEKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMDIKICAgIC8vIGFzc2VydChhcHAxLmFwcHJvdmFsUHJvZ3JhbVBhZ2VzKDEpID09PSBhcHByb3ZhbDIuc2xpY2UoLTMpLmNvbmNhdChhcHByb3ZhbDIpLCAnZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxJykKICAgIGludGNfMiAvLyAxCiAgICBpdHhuYXMgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGNvdmVyIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDEKICAgID49CiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgMQogICAgdW5jb3ZlciAxCiAgICAtCiAgICBkaWcgMgogICAgdW5jb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMQogICAgY29uY2F0CiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMDMKICAgIC8vIGFzc2VydChhcHAxLm51bUNsZWFyU3RhdGVQcm9ncmFtUGFnZXMgPT09IDEsICdjbGVhciBzdGF0ZSBwYWdlcyA9IDEnKQogICAgaW50Y18yIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gY2xlYXIgc3RhdGUgcGFnZXMgPSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwNAogICAgLy8gYXNzZXJ0KGFwcDEuY2xlYXJTdGF0ZVByb2dyYW1QYWdlcygwKSA9PT0gQVBQUk9WRSwgJ2V4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UnKQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5hcyBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDUoYXBwSWQ6IHVpbnQ2NCkgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjA3CiAgICAvLyBwdWJsaWMgdGVzdDUoYXBwSWQ6IEFwcGxpY2F0aW9uKSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NV9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3Q1X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwOQogICAgLy8gcmVjZWl2ZXI6IGFwcElkLmFkZHJlc3MsCiAgICBmcmFtZV9kaWcgLTEKICAgIGFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKICAgIGFzc2VydCAvLyBhcHBsaWNhdGlvbiBleGlzdHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjE0CiAgICAvLyBhcHBJZCwKICAgIGZyYW1lX2RpZyAtMQogICAgY292ZXIgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMTUKICAgIC8vIGFwcEFyZ3M6IFttZXRob2RTZWxlY3RvcihJdHhuUmVjZWl2ZXIucHJvdG90eXBlLnJlY2VpdmVQYXkpLCBVaW50NjQoMSksIG5ldyBTdHIoJ2hlbGxvJyldLAogICAgYnl0ZWMgMTMgLy8gImhlbGxvIgogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgYnl0ZWMgMTMgLy8gImhlbGxvIgogICAgY29uY2F0CiAgICBjb3ZlciAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxOAogICAgLy8gY29uc3QgWywgYXBwUmVzXSA9IGl0eG4uc3VibWl0R3JvdXAocGF5LCBhcHApCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxMAogICAgLy8gYW1vdW50OiAxMDAwLAogICAgaW50YyA0IC8vIDEwMDAKICAgIGl0eG5fZmllbGQgQW1vdW50CiAgICBpdHhuX2ZpZWxkIFJlY2VpdmVyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwOC0yMTEKICAgIC8vIGNvbnN0IHBheSA9IGl0eG4ucGF5bWVudCh7CiAgICAvLyAgIHJlY2VpdmVyOiBhcHBJZC5hZGRyZXNzLAogICAgLy8gICBhbW91bnQ6IDEwMDAsCiAgICAvLyB9KQogICAgaW50Y18yIC8vIDEKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjpJdHhuRGVtb0NvbnRyYWN0LnRlc3Q1X25leHRfdHhuQDEKCnRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDVfbmV4dF90eG5AMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjE4CiAgICAvLyBjb25zdCBbLCBhcHBSZXNdID0gaXR4bi5zdWJtaXRHcm91cChwYXksIGFwcCkKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMTUKICAgIC8vIGFwcEFyZ3M6IFttZXRob2RTZWxlY3RvcihJdHhuUmVjZWl2ZXIucHJvdG90eXBlLnJlY2VpdmVQYXkpLCBVaW50NjQoMSksIG5ldyBTdHIoJ2hlbGxvJyldLAogICAgcHVzaGJ5dGVzIDB4MTk3MWQxOTcgLy8gbWV0aG9kICJyZWNlaXZlUGF5KHVpbnQ2NCxwYXksc3RyaW5nKSh1aW50NjQsdWludDY0LHN0cmluZykiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgZnJhbWVfZGlnIDAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMTMtMjE2CiAgICAvLyBjb25zdCBhcHAgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcElkLAogICAgLy8gICBhcHBBcmdzOiBbbWV0aG9kU2VsZWN0b3IoSXR4blJlY2VpdmVyLnByb3RvdHlwZS5yZWNlaXZlUGF5KSwgVWludDY0KDEpLCBuZXcgU3RyKCdoZWxsbycpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBiIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QudGVzdDVfbmV4dF90eG5AMgoKdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC50ZXN0NV9uZXh0X3R4bkAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMTgKICAgIC8vIGNvbnN0IFssIGFwcFJlc10gPSBpdHhuLnN1Ym1pdEdyb3VwKHBheSwgYXBwKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTGFzdExvZwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMjAKICAgIC8vIGNvbnN0IHJldHVyblZhbHVlID0gZGVjb2RlQXJjNDxbdWludDY0LCB1aW50NjQsIHN0cmluZ10+KGFwcFJlcy5sYXN0TG9nLCAnbG9nJykKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIGNvdmVyIDEKICAgIGV4dHJhY3QgMCA0CiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NQogICAgPT0KICAgIGFzc2VydCAvLyBCeXRlcyBoYXMgdmFsaWQgcHJlZml4CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIyMgogICAgLy8gYXNzZXJ0TWF0Y2gocmV0dXJuVmFsdWUsIFsxLCAxMDAwLCAnaGVsbG8nXSkKICAgIGludGNfMyAvLyAzCiAgICBpbnRjXzMgLy8gMwogICAgPT0KICAgIGNvdmVyIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIHB1c2hpbnQgOAogICAgZXh0cmFjdDMKICAgIGJ0b2kKICAgIGludGNfMiAvLyAxCiAgICA9PQogICAgdW5jb3ZlciAyCiAgICAmJgogICAgZGlnIDEKICAgIHB1c2hpbnQgOAogICAgcHVzaGludCA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgaW50YyA0IC8vIDEwMDAKICAgID09CiAgICAmJgogICAgY292ZXIgMQogICAgZHVwCiAgICBwdXNoaW50IDE2CiAgICBleHRyYWN0X3VpbnQxNgogICAgY292ZXIgMQogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDEKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBleHRyYWN0IDIgMAogICAgYnl0ZWMgMTMgLy8gImhlbGxvIgogICAgPT0KICAgICYmCiAgICBhc3NlcnQgLy8gYXNzZXJ0IHRhcmdldCBpcyBtYXRjaCBmb3IgY29uZGl0aW9ucwogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo6SXR4bkRlbW9Db250cmFjdC5fX2FsZ290c19fLmRlZmF1bHRDcmVhdGUoKSAtPiB2b2lkOgpfX2FsZ290c19fLmRlZmF1bHRDcmVhdGU6CiAgICBiIF9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZV9ibG9ja0AwCgpfX2FsZ290c19fLmRlZmF1bHRDcmVhdGVfYmxvY2tAMDoKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6Okl0eG5EZW1vQ29udHJhY3QuY29uc3RydWN0b3IoKSAtPiB2b2lkOgpjb25zdHJ1Y3RvcjoKICAgIGIgY29uc3RydWN0b3JfYmxvY2tAMAoKY29uc3RydWN0b3JfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjAKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgYiBjb25zdHJ1Y3Rvcl9ibG9ja0AxCgpjb25zdHJ1Y3Rvcl9ibG9ja0AxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMAogICAgLy8gZXhwb3J0IGNsYXNzIEl0eG5EZW1vQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7CiAgICBiIGNvbnN0cnVjdG9yX2FmdGVyX2lubGluZWRfQGFsZ29yYW5kZm91bmRhdGlvbi9hbGdvcmFuZC10eXBlc2NyaXB0L2Jhc2UtY29udHJhY3QuZC50czo6QmFzZUNvbnRyYWN0LmNvbnN0cnVjdG9yQDIKCmNvbnN0cnVjdG9yX2FmdGVyX2lubGluZWRfQGFsZ29yYW5kZm91bmRhdGlvbi9hbGdvcmFuZC10eXBlc2NyaXB0L2Jhc2UtY29udHJhY3QuZC50czo6QmFzZUNvbnRyYWN0LmNvbnN0cnVjdG9yQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxCiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjXzMgLy8gIm5hbWUiCiAgICBieXRlY18yIC8vIDB4CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBiIG1haW5fYmxvY2tAMAoKbWFpbl9ibG9ja0AwOgogICAgcHVzaGludCAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CyAFAAYBA+gHJhgDCYEBBwk2GgCwgQEABG5hbWUBMQR1bml0ATIBNARBU1QxBEFTVDIEQVNUMwEzATUFaGVsbG8DM3JkE3dpdGggYXJncyBwYXJhbSBzZXQCNDICMTACMTECMTICMTMCMTQCMTUCMTZCAAAxGEAACUIAAIgGHUIAAEIAADEbIhNBAGxCAAAxGSISRDEYIhNBAFpCAAA2GgCABCAlT5GABPGQhSSABN+SDzeABD1GNFyABNTGqPVPBY4FACIAHAAWABAACkIAAEIAAEIAAACIAE1C//OIAD9C/+2IADFC/+eIACNC/+GIABVC/9tC/9sxGSISMRgiEhBEiAWTJENCAACIACwkQ0IAAIgBOyRDQgAAiAIZJENCAACIBB0kQ0IAADYaAUkVgQgSRBeIBMYkQ4oAACIqQgAAKycIZyIrZUQyCklOAjIKSU4DKycJZ7GyKrIpJbIjJwWyJbImIQSyIiWyECKyAUIAALO0JowAtDyMASIrZUSxiwOyKosCsiklsiMnBbIlsiYhBLIiJbIQIrIBQgAAs7QmtDxOAYsAJwgSRCcJEkSLAXEERCcIEkRxBEQnCRJEsSiyQiiyQCOyECKyAUIAALaLA7IqiwKyKSWyIycFsiUnCrImIQSyIiWyECKyAUIAALO3AD20Jk4BRCcKEkSxJCQPQQAKQgAAJw6yBUIAACiyQiiyQCOyECKyAUIAALYkJA9BAApCAAAnDrIFQgAAiwOyKosCsiklsiMnBbIlJwqyJiEEsiIlshAisgFCAACziYoAACIiIiIqKkIAACIqMRtBAKFCAAAnBIwAJwaMAYECjAQijAckjAUnD4wCQgAAsYsCsgWLBSQPQQAKQgAAiweyGUIAAIsAshqLAbIaiwQlD0EACkIAAIsGshpCAAAoskIoskAjshAisgFCAACztAWMAyLFGicEEkQkxRonBhJEMRskDUEALEIAALEnELIagQWyGSiyQiiyQCOyECKyAUIAALMixRonEBJEiwMnDxJEQgAAiScHFRZXBgInB1AnC4wAjAEnDIwGJYwEgBFubyBhcmdzIHBhcmFtIHNldIwCIowFQv9JQgAAsScEshqBBbIZKLJCKbJAI7IQIrIBQgAAtiiyQimyQCcGshqBBbIZI7IQIrIBQgAAtiiyQimyQCcLshqBBbIZI7IQIrIBQgAAtiiyQimyQCcHshqBBbIZI7IQIrIBQgAAtiiyQimyQCcMshqBBbIZI7IQIrIBQgAAtiiyQimyQIABNrIagQWyGSOyECKyAUIAALYoskIpskCAATeyGoEFshkjshAisgFCAAC2KLJCKbJAgAE4shqBBbIZI7IQIrIBQgAAtiiyQimyQIABObIagQWyGSOyECKyAUIAALYoskIpskAnEbIagQWyGSOyECKyAUIAALYoskIpskAnErIagQWyGSOyECKyAUIAALYoskIpskAnE7IagQWyGSOyECKyAUIAALYoskIpskAnFLIagQWyGSOyECKyAUIAALYoskIpskAnFbIagQWyGSOyECKyAUIAALYoskIpskAnFrIagQWyGSOyECKyAUIAALYoskIpskAnF7IagQWyGSOyECKyAUIAALMixgA6JwQSRCLGATonBhJEIsYCOicLEkQixgM6JwcSRCLGBDonDBJEIsYFOoABNhJEIsYGOoABNxJEIsYHOoABOBJEIsYIOoABORJEIsYJOicREkQixgo6JxISRCLGCzonExJEIsYMOicUEkQixg06JxUSRCLGDjonFhJEIsU6JxcSRImKAABCAACB/A+vgAOA/A9PAVCAAUhQRwNOAk4CsSWyOCcEshqBBbIZKLJCKLJAskCyQLJAI7IQIrIBQgAAs7Q4tEFOAbRDTgIlEkSBAhJEIsVAKIsASU4CUE4BSRUiSwEPIksCTwJNTgElSwEPJUsCTwJNCUlLAgxPAUsCTwJNSwJPAk8CUk8CTwFQTwISRCTFQE4BSRUlSwEPJUsCTwJNSwFPAQlLAk8BTwJSTwFQEkQkEkQixUIoEkSJigEAQgAAi/9yCESL/04BJw0VFlcGAicNUE4BsSEEsgiyBySyECKyAUIAALaABBlx0ZeyGoAIAAAAAAAAAAGyGosBshqLALIYI7IQIrIBQgAAs7Q+SVcEAE4BVwAEgAQVH3x1EkQlJRJOAUkigQhYFyQSTwIQSwGBCIEIWBchBBIQTgFJgRBZTgFJFU4BTwJPAlJXAgAnDRIQRIlCAACJQgAAQgAAQgAAKypniQ==", "clear": "C0IAAIEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }