{ "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": [ 260 ], "errorMessage": "Bytes has valid prefix" }, { "pc": [ 1225 ], "errorMessage": "app is created" }, { "pc": [ 186 ], "errorMessage": "application exists" }, { "pc": [ 370 ], "errorMessage": "approval pages = 2" }, { "pc": [ 306 ], "errorMessage": "assert target is match for conditions" }, { "pc": [ 1165, 1172 ], "errorMessage": "asset exists" }, { "pc": [ 1156 ], "errorMessage": "asset1_txn is correct" }, { "pc": [ 1161 ], "errorMessage": "asset2_txn is correct" }, { "pc": [ 1229 ], "errorMessage": "asset3_txn is correct" }, { "pc": [ 449 ], "errorMessage": "clear state pages = 1" }, { "pc": [ 986 ], "errorMessage": "correct args used 1" }, { "pc": [ 992, 1028 ], "errorMessage": "correct args used 2" }, { "pc": [ 1169 ], "errorMessage": "created asset 1 is correct" }, { "pc": [ 1176 ], "errorMessage": "created asset 2 is correct" }, { "pc": [ 430 ], "errorMessage": "expected approval page 0" }, { "pc": [ 445 ], "errorMessage": "expected approval page 1" }, { "pc": [ 455 ], "errorMessage": "expected clear state page" }, { "pc": [ 365 ], "errorMessage": "extra pages = 3" }, { "pc": [ 181 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCA2IDUgMyAxMDAwCiAgICBieXRlY2Jsb2NrIDB4MDk4MTAxIDB4MDkzNjFhMDBiMDgxMDEgIjEiICIyIiAiQVNUMiIgInVuaXQiICIzIiAiNSIgIkFTVDEiICJBU1QzIiAibmFtZSIgIjEwIiAiMTEiICIxMiIgIjEzIiAiMTQiICIxNSIgIjE2IiAid2l0aCBhcmdzIHBhcmFtIHNldCIgIjQyIiAiM3JkIgogICAgaW50Y18wIC8vIDAKICAgIGR1cAogICAgcHVzaGJ5dGVzICIiCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxCiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjIDEwIC8vICJuYW1lIgogICAgcHVzaGJ5dGVzIDB4CiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwCiAgICAvLyBleHBvcnQgY2xhc3MgSXR4bkRlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4MjAyNTRmOTEgMHhmMTkwODUyNCAweGRmOTIwZjM3IDB4M2Q0NjM0NWMgMHhkNGM2YThmNSAvLyBtZXRob2QgInRlc3QxKCl2b2lkIiwgbWV0aG9kICJ0ZXN0Migpdm9pZCIsIG1ldGhvZCAidGVzdDMoKXZvaWQiLCBtZXRob2QgInRlc3Q0KCl2b2lkIiwgbWV0aG9kICJ0ZXN0NSh1aW50NjQpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fdGVzdDFfcm91dGVANiBtYWluX3Rlc3QyX3JvdXRlQDcgbWFpbl90ZXN0M19yb3V0ZUA4IG1haW5fdGVzdDRfcm91dGVAOSBtYWluX3Rlc3Q1X3JvdXRlQDEwCiAgICBlcnIKCm1haW5fdGVzdDVfcm91dGVAMTA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwNwogICAgLy8gcHVibGljIHRlc3Q1KGFwcElkOiBBcHBsaWNhdGlvbikgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjA5CiAgICAvLyByZWNlaXZlcjogYXBwSWQuYWRkcmVzcywKICAgIGR1cAogICAgYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGV4aXN0cwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMTgKICAgIC8vIGNvbnN0IFssIGFwcFJlc10gPSBpdHhuLnN1Ym1pdEdyb3VwKHBheSwgYXBwKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMTAKICAgIC8vIGFtb3VudDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIEFtb3VudAogICAgaXR4bl9maWVsZCBSZWNlaXZlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMDgtMjExCiAgICAvLyBjb25zdCBwYXkgPSBpdHhuLnBheW1lbnQoewogICAgLy8gICByZWNlaXZlcjogYXBwSWQuYWRkcmVzcywKICAgIC8vICAgYW1vdW50OiAxMDAwLAogICAgLy8gfSkKICAgIHB1c2hpbnQgMQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxOAogICAgLy8gY29uc3QgWywgYXBwUmVzXSA9IGl0eG4uc3VibWl0R3JvdXAocGF5LCBhcHApCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjE1CiAgICAvLyBhcHBBcmdzOiBbbWV0aG9kU2VsZWN0b3IoSXR4blJlY2VpdmVyLnByb3RvdHlwZS5yZWNlaXZlUGF5KSwgVWludDY0KDEpLCBuZXcgU3RyKCdoZWxsbycpXSwKICAgIHB1c2hieXRlcyAweDE5NzFkMTk3IC8vIG1ldGhvZCAicmVjZWl2ZVBheSh1aW50NjQscGF5LHN0cmluZykodWludDY0LHVpbnQ2NCxzdHJpbmcpIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBwdXNoYnl0ZXMgMHgwMDA1Njg2NTZjNmM2ZgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMTMtMjE2CiAgICAvLyBjb25zdCBhcHAgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcElkLAogICAgLy8gICBhcHBBcmdzOiBbbWV0aG9kU2VsZWN0b3IoSXR4blJlY2VpdmVyLnByb3RvdHlwZS5yZWNlaXZlUGF5KSwgVWludDY0KDEpLCBuZXcgU3RyKCdoZWxsbycpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxOAogICAgLy8gY29uc3QgWywgYXBwUmVzXSA9IGl0eG4uc3VibWl0R3JvdXAocGF5LCBhcHApCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBMYXN0TG9nCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIyMAogICAgLy8gY29uc3QgcmV0dXJuVmFsdWUgPSBkZWNvZGVBcmM0PFt1aW50NjQsIHVpbnQ2NCwgc3RyaW5nXT4oYXBwUmVzLmxhc3RMb2csICdsb2cnKQogICAgZHVwCiAgICBleHRyYWN0IDQgMAogICAgZGlnIDEKICAgIGV4dHJhY3QgMCA0CiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NQogICAgPT0KICAgIGFzc2VydCAvLyBCeXRlcyBoYXMgdmFsaWQgcHJlZml4CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIyMgogICAgLy8gYXNzZXJ0TWF0Y2gocmV0dXJuVmFsdWUsIFsxLCAxMDAwLCAnaGVsbG8nXSkKICAgIGRpZyAxCiAgICBwdXNoaW50IDQKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDEKICAgID09CiAgICBwdXNoaW50IDEKICAgICYmCiAgICB1bmNvdmVyIDIKICAgIHB1c2hpbnQgMTIKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjIDQgLy8gMTAwMAogICAgPT0KICAgICYmCiAgICBkaWcgMQogICAgcHVzaGludCAxNgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZXh0cmFjdCAyIDAKICAgIHB1c2hieXRlcyAiaGVsbG8iCiAgICA9PQogICAgJiYKICAgIGFzc2VydCAvLyBhc3NlcnQgdGFyZ2V0IGlzIG1hdGNoIGZvciBjb25kaXRpb25zCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwNwogICAgLy8gcHVibGljIHRlc3Q1KGFwcElkOiBBcHBsaWNhdGlvbikgewogICAgcHVzaGludCAxCiAgICByZXR1cm4KCm1haW5fdGVzdDRfcm91dGVAOToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg1CiAgICAvLyBjb25zdCBsb3RzT2ZCeXRlcyA9IG9wLmJ6ZXJvKDIwNDQpCiAgICBwdXNoaW50IDIwNDQKICAgIGJ6ZXJvCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4NwogICAgLy8gY29uc3QgYXBwcm92YWwyID0gQnl0ZXMuZnJvbUhleCgnODAnICsgJ0ZDMGYnKQogICAgcHVzaGJ5dGVzIDB4ODBmYzBmCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4Ny0xODgKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIC8vICAgLmNvbmNhdChsb3RzT2ZCeXRlcykKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxODkKICAgIC8vIC5jb25jYXQoQnl0ZXMuZnJvbUhleCgnNDgnKSkKICAgIHB1c2hieXRlcyAweDQ4CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4Ny0xODkKICAgIC8vIGNvbnN0IGFwcHJvdmFsMiA9IEJ5dGVzLmZyb21IZXgoJzgwJyArICdGQzBmJykKICAgIC8vICAgLmNvbmNhdChsb3RzT2ZCeXRlcykKICAgIC8vICAgLmNvbmNhdChCeXRlcy5mcm9tSGV4KCc0OCcpKQogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5OAogICAgLy8gY29uc3QgYXBwMSA9IGFwcFR4bjEuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTk2CiAgICAvLyBleHRyYVByb2dyYW1QYWdlczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIEV4dHJhUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5NQogICAgLy8gYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgYnl0ZWNfMiAvLyAiMSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5NAogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE5MwogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTkyCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IFthcHByb3ZhbDEsIGFwcHJvdmFsMiwgYXBwcm92YWwyLCBhcHByb3ZhbDJdLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGR1cAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOTEtMTk3CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IFthcHByb3ZhbDEsIGFwcHJvdmFsMiwgYXBwcm92YWwyLCBhcHByb3ZhbDJdLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTk4CiAgICAvLyBjb25zdCBhcHAxID0gYXBwVHhuMS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTnVtQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGl0eG4gTnVtQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgaXR4biBFeHRyYVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxOTkKICAgIC8vIGFzc2VydChhcHAxLmV4dHJhUHJvZ3JhbVBhZ2VzID09PSAzLCAnZXh0cmEgcGFnZXMgPSAzJykKICAgIGludGNfMyAvLyAzCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4dHJhIHBhZ2VzID0gMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMDAKICAgIC8vIGFzc2VydChhcHAxLm51bUFwcHJvdmFsUHJvZ3JhbVBhZ2VzID09PSAyLCAnYXBwcm92YWwgcGFnZXMgPSAyJykKICAgIHN3YXAKICAgIHB1c2hpbnQgMgogICAgPT0KICAgIGFzc2VydCAvLyBhcHByb3ZhbCBwYWdlcyA9IDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjAxCiAgICAvLyBhc3NlcnQoYXBwMS5hcHByb3ZhbFByb2dyYW1QYWdlcygwKSA9PT0gYXBwcm92YWwxLmNvbmNhdChhcHByb3ZhbDIpLmNvbmNhdChhcHByb3ZhbDIuc2xpY2UoMCwgLTMpKSwgJ2V4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMCcpCiAgICBpdHhuYSBBcHByb3ZhbFByb2dyYW1QYWdlcyAwCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBkaWcgMwogICAgY29uY2F0CiAgICBkaWcgMwogICAgbGVuCiAgICBpbnRjXzAgLy8gMAogICAgZGlnIDEKICAgID49CiAgICBpbnRjXzAgLy8gMAogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDIKICAgID49CiAgICBpbnRjXzMgLy8gMwogICAgZGlnIDMKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgMgogICAgc3dhcAogICAgLQogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgZGlnIDEKICAgIGRpZyAzCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgZGlnIDcKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFwcHJvdmFsIHBhZ2UgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyMDIKICAgIC8vIGFzc2VydChhcHAxLmFwcHJvdmFsUHJvZ3JhbVBhZ2VzKDEpID09PSBhcHByb3ZhbDIuc2xpY2UoLTMpLmNvbmNhdChhcHByb3ZhbDIpLCAnZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxJykKICAgIGl0eG5hIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzIDEKICAgIGRpZyA0CiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwcm92YWwgcGFnZSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwMwogICAgLy8gYXNzZXJ0KGFwcDEubnVtQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcyA9PT0gMSwgJ2NsZWFyIHN0YXRlIHBhZ2VzID0gMScpCiAgICBwdXNoaW50IDEKICAgID09CiAgICBhc3NlcnQgLy8gY2xlYXIgc3RhdGUgcGFnZXMgPSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIwNAogICAgLy8gYXNzZXJ0KGFwcDEuY2xlYXJTdGF0ZVByb2dyYW1QYWdlcygwKSA9PT0gQVBQUk9WRSwgJ2V4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UnKQogICAgaXR4bmEgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcyAwCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGNsZWFyIHN0YXRlIHBhZ2UKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTg0CiAgICAvLyBwdWJsaWMgdGVzdDQoKSB7CiAgICBwdXNoaW50IDEKICAgIHJldHVybgoKbWFpbl90ZXN0M19yb3V0ZUA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDctMTY0CiAgICAvLyBjb25zdCBbYXBwMSwgYXBwMiwgYXBwMywgYXBwNCwgYXBwNSwgYXBwNiwgYXBwNywgYXBwOCwgYXBwOSwgYXBwMTAsIGFwcDExLCBhcHAxMiwgYXBwMTMsIGFwcDE0LCBhcHAxNSwgYXBwMTZdID0gaXR4bi5zdWJtaXRHcm91cCgKICAgIC8vICAgYXBwVHhuMSwKICAgIC8vICAgYXBwVHhuMiwKICAgIC8vICAgYXBwVHhuMywKICAgIC8vICAgYXBwVHhuNCwKICAgIC8vICAgYXBwVHhuNSwKICAgIC8vICAgYXBwVHhuNiwKICAgIC8vICAgYXBwVHhuNywKICAgIC8vICAgYXBwVHhuOCwKICAgIC8vICAgYXBwVHhuOSwKICAgIC8vICAgYXBwVHhuMTAsCiAgICAvLyAgIGFwcFR4bjExLAogICAgLy8gICBhcHBUeG4xMiwKICAgIC8vICAgYXBwVHhuMTMsCiAgICAvLyAgIGFwcFR4bjE0LAogICAgLy8gICBhcHBUeG4xNSwKICAgIC8vICAgYXBwVHhuMTYsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMwogICAgLy8gYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgYnl0ZWNfMiAvLyAiMSIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOS0xMTQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0OQogICAgLy8gYXBwVHhuMiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTcKICAgIC8vIGFwcFR4bjIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcyJyldIH0pCiAgICBieXRlY18zIC8vICIyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUwCiAgICAvLyBhcHBUeG4zLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExOQogICAgLy8gYXBwVHhuMy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzMnKV0gfSkKICAgIGJ5dGVjIDYgLy8gIjMiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTEKICAgIC8vIGFwcFR4bjQsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTExCiAgICAvLyBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTIxCiAgICAvLyBhcHBUeG40LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnNCcpXSB9KQogICAgcHVzaGJ5dGVzICI0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTUyCiAgICAvLyBhcHBUeG41LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyMwogICAgLy8gYXBwVHhuNS5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzUnKV0gfSkKICAgIGJ5dGVjIDcgLy8gIjUiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTMKICAgIC8vIGFwcFR4bjYsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTExCiAgICAvLyBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTI1CiAgICAvLyBhcHBUeG42LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnNicpXSB9KQogICAgcHVzaGJ5dGVzICI2IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU0CiAgICAvLyBhcHBUeG43LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEyNwogICAgLy8gYXBwVHhuNy5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzcnKV0gfSkKICAgIHB1c2hieXRlcyAiNyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOS0xMTQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1NQogICAgLy8gYXBwVHhuOCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMjkKICAgIC8vIGFwcFR4bjguc2V0KHsgYXBwQXJnczogW0J5dGVzKCc4JyldIH0pCiAgICBwdXNoYnl0ZXMgIjgiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTYKICAgIC8vIGFwcFR4bjksCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTExCiAgICAvLyBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTMxCiAgICAvLyBhcHBUeG45LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnOScpXSB9KQogICAgcHVzaGJ5dGVzICI5IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTU3CiAgICAvLyBhcHBUeG4xMCwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzMKICAgIC8vIGFwcFR4bjEwLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTAnKV0gfSkKICAgIGJ5dGVjIDExIC8vICIxMCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOS0xMTQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE1OAogICAgLy8gYXBwVHhuMTEsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTExCiAgICAvLyBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTM1CiAgICAvLyBhcHBUeG4xMS5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzExJyldIH0pCiAgICBieXRlYyAxMiAvLyAiMTEiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNTkKICAgIC8vIGFwcFR4bjEyLAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEzNwogICAgLy8gYXBwVHhuMTIuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxMicpXSB9KQogICAgYnl0ZWMgMTMgLy8gIjEyIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYwCiAgICAvLyBhcHBUeG4xMywKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMzkKICAgIC8vIGFwcFR4bjEzLnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTMnKV0gfSkKICAgIGJ5dGVjIDE0IC8vICIxMyIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOS0xMTQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2MQogICAgLy8gYXBwVHhuMTQsCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTExCiAgICAvLyBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTAKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICBieXRlY18xIC8vIDB4MDkzNjFhMDBiMDgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTQxCiAgICAvLyBhcHBUeG4xNC5zZXQoeyBhcHBBcmdzOiBbQnl0ZXMoJzE0JyldIH0pCiAgICBieXRlYyAxNSAvLyAiMTQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTIKICAgIC8vIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDktMTE0CiAgICAvLyBjb25zdCBhcHBUeG4xID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICBhcHBBcmdzOiBbQnl0ZXMoJzEnKV0sCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjIKICAgIC8vIGFwcFR4bjE1LAogICAgaXR4bl9uZXh0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEwCiAgICAvLyBhcHByb3ZhbFByb2dyYW06IExPR18xU1RfQVJHX0FORF9BUFBST1ZFLAogICAgYnl0ZWNfMSAvLyAweDA5MzYxYTAwYjA4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0MwogICAgLy8gYXBwVHhuMTUuc2V0KHsgYXBwQXJnczogW0J5dGVzKCcxNScpXSB9KQogICAgYnl0ZWMgMTYgLy8gIjE1IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTEyCiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTA5LTExNAogICAgLy8gY29uc3QgYXBwVHhuMSA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgYXBwQXJnczogW0J5dGVzKCcxJyldLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTYzCiAgICAvLyBhcHBUeG4xNiwKICAgIGl0eG5fbmV4dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMTEKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMAogICAgLy8gYXBwcm92YWxQcm9ncmFtOiBMT0dfMVNUX0FSR19BTkRfQVBQUk9WRSwKICAgIGJ5dGVjXzEgLy8gMHgwOTM2MWEwMGIwODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNDUKICAgIC8vIGFwcFR4bjE2LnNldCh7IGFwcEFyZ3M6IFtCeXRlcygnMTYnKV0gfSkKICAgIGJ5dGVjIDE3IC8vICIxNiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjExMgogICAgLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOS0xMTQKICAgIC8vIGNvbnN0IGFwcFR4bjEgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogTE9HXzFTVF9BUkdfQU5EX0FQUFJPVkUsCiAgICAvLyAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgIGFwcEFyZ3M6IFtCeXRlcygnMScpXSwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE0Ny0xNjQKICAgIC8vIGNvbnN0IFthcHAxLCBhcHAyLCBhcHAzLCBhcHA0LCBhcHA1LCBhcHA2LCBhcHA3LCBhcHA4LCBhcHA5LCBhcHAxMCwgYXBwMTEsIGFwcDEyLCBhcHAxMywgYXBwMTQsIGFwcDE1LCBhcHAxNl0gPSBpdHhuLnN1Ym1pdEdyb3VwKAogICAgLy8gICBhcHBUeG4xLAogICAgLy8gICBhcHBUeG4yLAogICAgLy8gICBhcHBUeG4zLAogICAgLy8gICBhcHBUeG40LAogICAgLy8gICBhcHBUeG41LAogICAgLy8gICBhcHBUeG42LAogICAgLy8gICBhcHBUeG43LAogICAgLy8gICBhcHBUeG44LAogICAgLy8gICBhcHBUeG45LAogICAgLy8gICBhcHBUeG4xMCwKICAgIC8vICAgYXBwVHhuMTEsCiAgICAvLyAgIGFwcFR4bjEyLAogICAgLy8gICBhcHBUeG4xMywKICAgIC8vICAgYXBwVHhuMTQsCiAgICAvLyAgIGFwcFR4bjE1LAogICAgLy8gICBhcHBUeG4xNiwKICAgIC8vICkKICAgIGl0eG5fc3VibWl0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2NgogICAgLy8gYXNzZXJ0KGFwcDEubG9ncygwKSA9PT0gQnl0ZXMoJzEnKSkKICAgIGdpdHhuYSAwIExvZ3MgMAogICAgYnl0ZWNfMiAvLyAiMSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTY3CiAgICAvLyBhc3NlcnQoYXBwMi5sb2dzKDApID09PSBCeXRlcygnMicpKQogICAgZ2l0eG5hIDEgTG9ncyAwCiAgICBieXRlY18zIC8vICIyIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNjgKICAgIC8vIGFzc2VydChhcHAzLmxvZ3MoMCkgPT09IEJ5dGVzKCczJykpCiAgICBnaXR4bmEgMiBMb2dzIDAKICAgIGJ5dGVjIDYgLy8gIjMiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE2OQogICAgLy8gYXNzZXJ0KGFwcDQubG9ncygwKSA9PT0gQnl0ZXMoJzQnKSkKICAgIGdpdHhuYSAzIExvZ3MgMAogICAgcHVzaGJ5dGVzICI0IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzAKICAgIC8vIGFzc2VydChhcHA1LmxvZ3MoMCkgPT09IEJ5dGVzKCc1JykpCiAgICBnaXR4bmEgNCBMb2dzIDAKICAgIGJ5dGVjIDcgLy8gIjUiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3MQogICAgLy8gYXNzZXJ0KGFwcDYubG9ncygwKSA9PT0gQnl0ZXMoJzYnKSkKICAgIGdpdHhuYSA1IExvZ3MgMAogICAgcHVzaGJ5dGVzICI2IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzIKICAgIC8vIGFzc2VydChhcHA3LmxvZ3MoMCkgPT09IEJ5dGVzKCc3JykpCiAgICBnaXR4bmEgNiBMb2dzIDAKICAgIHB1c2hieXRlcyAiNyIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTczCiAgICAvLyBhc3NlcnQoYXBwOC5sb2dzKDApID09PSBCeXRlcygnOCcpKQogICAgZ2l0eG5hIDcgTG9ncyAwCiAgICBwdXNoYnl0ZXMgIjgiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3NAogICAgLy8gYXNzZXJ0KGFwcDkubG9ncygwKSA9PT0gQnl0ZXMoJzknKSkKICAgIGdpdHhuYSA4IExvZ3MgMAogICAgcHVzaGJ5dGVzICI5IgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzUKICAgIC8vIGFzc2VydChhcHAxMC5sb2dzKDApID09PSBCeXRlcygnMTAnKSkKICAgIGdpdHhuYSA5IExvZ3MgMAogICAgYnl0ZWMgMTEgLy8gIjEwIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzYKICAgIC8vIGFzc2VydChhcHAxMS5sb2dzKDApID09PSBCeXRlcygnMTEnKSkKICAgIGdpdHhuYSAxMCBMb2dzIDAKICAgIGJ5dGVjIDEyIC8vICIxMSIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTc3CiAgICAvLyBhc3NlcnQoYXBwMTIubG9ncygwKSA9PT0gQnl0ZXMoJzEyJykpCiAgICBnaXR4bmEgMTEgTG9ncyAwCiAgICBieXRlYyAxMyAvLyAiMTIiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE3OAogICAgLy8gYXNzZXJ0KGFwcDEzLmxvZ3MoMCkgPT09IEJ5dGVzKCcxMycpKQogICAgZ2l0eG5hIDEyIExvZ3MgMAogICAgYnl0ZWMgMTQgLy8gIjEzIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxNzkKICAgIC8vIGFzc2VydChhcHAxNC5sb2dzKDApID09PSBCeXRlcygnMTQnKSkKICAgIGdpdHhuYSAxMyBMb2dzIDAKICAgIGJ5dGVjIDE1IC8vICIxNCIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MTgwCiAgICAvLyBhc3NlcnQoYXBwMTUubG9ncygwKSA9PT0gQnl0ZXMoJzE1JykpCiAgICBnaXR4bmEgMTQgTG9ncyAwCiAgICBieXRlYyAxNiAvLyAiMTUiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjE4MQogICAgLy8gYXNzZXJ0KGFwcDE2LmxvZ3MoMCkgPT09IEJ5dGVzKCcxNicpKQogICAgaXR4bmEgTG9ncyAwCiAgICBieXRlYyAxNyAvLyAiMTYiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwOAogICAgLy8gcHVibGljIHRlc3QzKCkgewogICAgcHVzaGludCAxCiAgICByZXR1cm4KCm1haW5fdGVzdDJfcm91dGVANzoKICAgIGludGNfMCAvLyAwCiAgICBidXJ5IDMKICAgIHB1c2hieXRlcyAiIgogICAgYnVyeSAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjczCiAgICAvLyBpZiAoVHhuLm51bUFwcEFyZ3MpIHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2Vsc2VfYm9keUAyNQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3NAogICAgLy8gY29uc3QgYXJncyA9IFtCeXRlcygnMScpLCBCeXRlcygnMicpXSBhcyBjb25zdAogICAgYnl0ZWNfMiAvLyAiMSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzgKICAgIC8vIGFwcEFyZ3M6IGFyZ3MsCiAgICBwdXNoaW50IDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzQKICAgIC8vIGNvbnN0IGFyZ3MgPSBbQnl0ZXMoJzEnKSwgQnl0ZXMoJzInKV0gYXMgY29uc3QKICAgIGJ5dGVjXzMgLy8gIjIiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uTm9PcCwKICAgIGludGNfMCAvLyAwCiAgICBidXJ5IDQKICAgIHB1c2hpbnQgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4MAogICAgLy8gbm90ZTogJ3dpdGggYXJncyBwYXJhbSBzZXQnLAogICAgYnl0ZWMgMTggLy8gIndpdGggYXJncyBwYXJhbSBzZXQiCgptYWluX2FmdGVyX2lmX2Vsc2VAMjY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjkwCiAgICAvLyBjb25zdCBjcmVhdGVBcHBUeG4gPSBjcmVhdGVBcHBQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGl0eG5fZmllbGQgTm90ZQogICAgYnogbWFpbl9uZXh0X2ZpZWxkQDI4CiAgICBkaWcgMwogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCm1haW5fbmV4dF9maWVsZEAyODoKICAgIHVuY292ZXIgMgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzMgLy8gMwogICAgPj0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTAKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4biA9IGNyZWF0ZUFwcFBhcmFtcy5zdWJtaXQoKQogICAgYnogbWFpbl9uZXh0X2ZpZWxkQDMwCiAgICBkaWcgMgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCm1haW5fbmV4dF9maWVsZEAzMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NzcKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc2CiAgICAvLyBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjc1LTgxCiAgICAvLyBjcmVhdGVBcHBQYXJhbXMgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGFwcEFyZ3M6IGFyZ3MsCiAgICAvLyAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5Ob09wLAogICAgLy8gICBub3RlOiAnd2l0aCBhcmdzIHBhcmFtIHNldCcsCiAgICAvLyB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5MAogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuID0gY3JlYXRlQXBwUGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBOb3RlCiAgICBidXJ5IDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTEKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygwKSA9PT0gQnl0ZXMoJzEnKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDEnKQogICAgaXR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIGJ5dGVjXzIgLy8gIjEiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTIKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4uYXBwQXJncygxKSA9PT0gQnl0ZXMoJzInKSwgJ2NvcnJlY3QgYXJncyB1c2VkIDInKQogICAgaXR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ5dGVjXzMgLy8gIjIiCiAgICA9PQogICAgYXNzZXJ0IC8vIGNvcnJlY3QgYXJncyB1c2VkIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTQKICAgIC8vIGlmIChUeG4ubnVtQXBwQXJncyA+IDEpIHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBwdXNoaW50IDEKICAgID4KICAgIGJ6IG1haW5fYWZ0ZXJfaWZfZWxzZUAzMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5NS0xMDIKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwMAogICAgLy8gYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIGJ5dGVjIDE5IC8vICI0MiIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk5CiAgICAvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6OTgKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk3CiAgICAvLyBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjk1LTEwMQogICAgLy8gY29uc3QgY3JlYXRlQXBwVHhuMiA9IGl0eG4KICAgIC8vICAgLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBhcHBBcmdzOiBbQnl0ZXMoJzQyJyldLAogICAgLy8gICB9KQogICAgaW50Y18xIC8vIDYKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo5NS0xMDIKICAgIC8vIGNvbnN0IGNyZWF0ZUFwcFR4bjIgPSBpdHhuCiAgICAvLyAgIC5hcHBsaWNhdGlvbkNhbGwoewogICAgLy8gICAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgICBvbkNvbXBsZXRpb246IE9uQ29tcGxldGVBY3Rpb24uRGVsZXRlQXBwbGljYXRpb24sCiAgICAvLyAgICAgYXBwQXJnczogW0J5dGVzKCc0MicpXSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoxMDMKICAgIC8vIGFzc2VydChjcmVhdGVBcHBUeG4yLmFwcEFyZ3MoMCkgPT09IEJ5dGVzKCc0MicpLCAnY29ycmVjdCBhcmdzIHVzZWQgMicpCiAgICBpdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgYnl0ZWMgMTkgLy8gIjQyIgogICAgPT0KICAgIGFzc2VydCAvLyBjb3JyZWN0IGFyZ3MgdXNlZCAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjEwNAogICAgLy8gYXNzZXJ0KGNyZWF0ZUFwcFR4bi5ub3RlID09PSBCeXRlcygnd2l0aCBhcmdzIHBhcmFtIHNldCcpKQogICAgZGlnIDEKICAgIGJ5dGVjIDE4IC8vICJ3aXRoIGFyZ3MgcGFyYW0gc2V0IgogICAgPT0KICAgIGFzc2VydAoKbWFpbl9hZnRlcl9pZl9lbHNlQDMyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo3MQogICAgLy8gcHVibGljIHRlc3QyKCkgewogICAgcHVzaGludCAxCiAgICByZXR1cm4KCm1haW5fZWxzZV9ib2R5QDI1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4NgogICAgLy8gYXBwQXJnczogW0J5dGVzKCczJyksIG5ldyBTdHIoJzQnKSwgQnl0ZXMoJzUnKV0sCiAgICBieXRlYyA2IC8vICIzIgogICAgcHVzaGJ5dGVzIDB4MDAwMTM0CiAgICBieXRlYyA3IC8vICI1IgogICAgYnVyeSA1CiAgICBpbnRjXzMgLy8gMwogICAgc3dhcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo4MwogICAgLy8gY3JlYXRlQXBwUGFyYW1zID0gaXR4bi5hcHBsaWNhdGlvbkNhbGwoewogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6ODcKICAgIC8vIG5vdGU6ICdubyBhcmdzIHBhcmFtIHNldCcsCiAgICBwdXNoYnl0ZXMgIm5vIGFyZ3MgcGFyYW0gc2V0IgogICAgYiBtYWluX2FmdGVyX2lmX2Vsc2VAMjYKCm1haW5fdGVzdDFfcm91dGVANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzEKICAgIC8vIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzIKICAgIC8vIHJlc2VydmU6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgZHVwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjIxCiAgICAvLyBuYW1lID0gR2xvYmFsU3RhdGUoeyBpbml0aWFsVmFsdWU6IEJ5dGVzKCkgfSkKICAgIGJ5dGVjIDEwIC8vICJuYW1lIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozNQogICAgLy8gdGhpcy5uYW1lLnZhbHVlID0gQnl0ZXMoJ0FTVDInKQogICAgYnl0ZWMgNCAvLyAiQVNUMiIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM2CiAgICAvLyBjb25zdCBhc3NldDFfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIGR1cAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNAogICAgLy8gdGhpcy5uYW1lLnZhbHVlID0gQnl0ZXMoJ0FTVDEnKQogICAgYnl0ZWMgOCAvLyAiQVNUMSIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjYtMzMKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjM2CiAgICAvLyBjb25zdCBhc3NldDFfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0MAogICAgLy8gY29uc3QgYXNzZXQyX3R4biA9IGFzc2V0UGFyYW1zLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBkaWcgMgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGRpZyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozMAogICAgLy8gZGVjaW1hbHM6IDMsCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI5CiAgICAvLyB1bml0TmFtZTogJ3VuaXQnLAogICAgYnl0ZWMgNSAvLyAidW5pdCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czozNQogICAgLy8gdGhpcy5uYW1lLnZhbHVlID0gQnl0ZXMoJ0FTVDInKQogICAgYnl0ZWMgNCAvLyAiQVNUMiIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjYtMzMKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQwCiAgICAvLyBjb25zdCBhc3NldDJfdHhuID0gYXNzZXRQYXJhbXMuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0MgogICAgLy8gYXNzZXJ0KGFzc2V0MV90eG4uYXNzZXROYW1lID09PSBCeXRlcygnQVNUMScpLCAnYXNzZXQxX3R4biBpcyBjb3JyZWN0JykKICAgIHVuY292ZXIgMwogICAgYnl0ZWMgOCAvLyAiQVNUMSIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQxX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQzCiAgICAvLyBhc3NlcnQoYXNzZXQyX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QyJyksICdhc3NldDJfdHhuIGlzIGNvcnJlY3QnKQogICAgc3dhcAogICAgYnl0ZWMgNCAvLyAiQVNUMiIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQyX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ0CiAgICAvLyBhc3NlcnQoYXNzZXQxX3R4bi5jcmVhdGVkQXNzZXQubmFtZSA9PT0gQnl0ZXMoJ0FTVDEnKSwgJ2NyZWF0ZWQgYXNzZXQgMSBpcyBjb3JyZWN0JykKICAgIHN3YXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXROYW1lCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBieXRlYyA4IC8vICJBU1QxIgogICAgPT0KICAgIGFzc2VydCAvLyBjcmVhdGVkIGFzc2V0IDEgaXMgY29ycmVjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0NQogICAgLy8gYXNzZXJ0KGFzc2V0Ml90eG4uY3JlYXRlZEFzc2V0Lm5hbWUgPT09IEJ5dGVzKCdBU1QyJyksICdjcmVhdGVkIGFzc2V0IDIgaXMgY29ycmVjdCcpCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgYnl0ZWMgNCAvLyAiQVNUMiIKICAgID09CiAgICBhc3NlcnQgLy8gY3JlYXRlZCBhc3NldCAyIGlzIGNvcnJlY3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTcKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo0OQogICAgLy8gY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDgKICAgIC8vIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIGJ5dGVjXzAgLy8gMHgwOTgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDctNTEKICAgIC8vIGNvbnN0IGFwcENyZWF0ZVBhcmFtcyA9IGl0eG4uYXBwbGljYXRpb25DYWxsKHsKICAgIC8vICAgYXBwcm92YWxQcm9ncmFtOiBBUFBST1ZFLAogICAgLy8gICBjbGVhclN0YXRlUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgZmVlOiAwLAogICAgLy8gfSkKICAgIGludGNfMSAvLyA2CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjUwCiAgICAvLyBmZWU6IDAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTcKICAgIC8vIGNvbnN0IFthcHBDcmVhdGVUeG4sIGFzc2V0M190eG5dID0gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9uZXh0CiAgICBkdXAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MzAKICAgIC8vIGRlY2ltYWxzOiAzLAogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyOQogICAgLy8gdW5pdE5hbWU6ICd1bml0JywKICAgIGJ5dGVjIDUgLy8gInVuaXQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VW5pdE5hbWUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NTQKICAgIC8vIGFzc2V0TmFtZTogJ0FTVDMnLAogICAgYnl0ZWMgOSAvLyAiQVNUMyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI3CiAgICAvLyB0b3RhbDogMTAwMCwKICAgIGludGMgNCAvLyAxMDAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjYtMzMKICAgIC8vIGNvbnN0IGFzc2V0UGFyYW1zID0gaXR4bi5hc3NldENvbmZpZyh7CiAgICAvLyAgIHRvdGFsOiAxMDAwLAogICAgLy8gICBhc3NldE5hbWU6IHRoaXMubmFtZS52YWx1ZSwKICAgIC8vICAgdW5pdE5hbWU6ICd1bml0JywKICAgIC8vICAgZGVjaW1hbHM6IDMsCiAgICAvLyAgIG1hbmFnZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vIH0pCiAgICBpbnRjXzMgLy8gMwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU3CiAgICAvLyBjb25zdCBbYXBwQ3JlYXRlVHhuLCBhc3NldDNfdHhuXSA9IGl0eG4uc3VibWl0R3JvdXAoYXBwQ3JlYXRlUGFyYW1zLCBhc3NldFBhcmFtcykKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENvbmZpZ0Fzc2V0TmFtZQogICAgZ2l0eG4gMCBDcmVhdGVkQXBwbGljYXRpb25JRAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1OQogICAgLy8gYXNzZXJ0KGFwcENyZWF0ZVR4bi5jcmVhdGVkQXBwLCAnYXBwIGlzIGNyZWF0ZWQnKQogICAgYXNzZXJ0IC8vIGFwcCBpcyBjcmVhdGVkCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYwCiAgICAvLyBhc3NlcnQoYXNzZXQzX3R4bi5hc3NldE5hbWUgPT09IEJ5dGVzKCdBU1QzJyksICdhc3NldDNfdHhuIGlzIGNvcnJlY3QnKQogICAgYnl0ZWMgOSAvLyAiQVNUMyIKICAgID09CiAgICBhc3NlcnQgLy8gYXNzZXQzX3R4biBpcyBjb3JyZWN0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY4CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjYzCiAgICAvLyBub3RlOiAnM3JkJywKICAgIGJ5dGVjIDIwIC8vICIzcmQiCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NDkKICAgIC8vIGNsZWFyU3RhdGVQcm9ncmFtOiBBUFBST1ZFLAogICAgYnl0ZWNfMCAvLyAweDA5ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ4CiAgICAvLyBhcHByb3ZhbFByb2dyYW06IEFQUFJPVkUsCiAgICBieXRlY18wIC8vIDB4MDk4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjQ3LTUxCiAgICAvLyBjb25zdCBhcHBDcmVhdGVQYXJhbXMgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcHJvdmFsUHJvZ3JhbTogQVBQUk9WRSwKICAgIC8vICAgY2xlYXJTdGF0ZVByb2dyYW06IEFQUFJPVkUsCiAgICAvLyAgIGZlZTogMCwKICAgIC8vIH0pCiAgICBpbnRjXzEgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo1MAogICAgLy8gZmVlOiAwLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjY4CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKGFwcENyZWF0ZVBhcmFtcywgYXNzZXRQYXJhbXMpCiAgICBpdHhuX25leHQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6NjYKICAgIC8vIG5vdGU6ICczcmQnLAogICAgYnl0ZWMgMjAgLy8gIjNyZCIKICAgIGl0eG5fZmllbGQgTm90ZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjMwCiAgICAvLyBkZWNpbWFsczogMywKICAgIGludGNfMyAvLyAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjkKICAgIC8vIHVuaXROYW1lOiAndW5pdCcsCiAgICBieXRlYyA1IC8vICJ1bml0IgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjU0CiAgICAvLyBhc3NldE5hbWU6ICdBU1QzJywKICAgIGJ5dGVjIDkgLy8gIkFTVDMiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czoyNwogICAgLy8gdG90YWw6IDEwMDAsCiAgICBpbnRjIDQgLy8gMTAwMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvaXR4bi5hbGdvLnRzOjI2LTMzCiAgICAvLyBjb25zdCBhc3NldFBhcmFtcyA9IGl0eG4uYXNzZXRDb25maWcoewogICAgLy8gICB0b3RhbDogMTAwMCwKICAgIC8vICAgYXNzZXROYW1lOiB0aGlzLm5hbWUudmFsdWUsCiAgICAvLyAgIHVuaXROYW1lOiAndW5pdCcsCiAgICAvLyAgIGRlY2ltYWxzOiAzLAogICAgLy8gICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDMKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2l0eG4uYWxnby50czo2OAogICAgLy8gaXR4bi5zdWJtaXRHcm91cChhcHBDcmVhdGVQYXJhbXMsIGFzc2V0UGFyYW1zKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjMKICAgIC8vIHB1YmxpYyB0ZXN0MSgpIHsKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9pdHhuLmFsZ28udHM6MjAKICAgIC8vIGV4cG9ydCBjbGFzcyBJdHhuRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEKICAgIHJldHVybgo=" }, "byteCode": { "approval": "CyAFAAYFA+gHJhUDCYEBBwk2GgCwgQEBMQEyBEFTVDIEdW5pdAEzATUEQVNUMQRBU1QzBG5hbWUCMTACMTECMTICMTMCMTQCMTUCMTYTd2l0aCBhcmdzIHBhcmFtIHNldAI0MgMzcmQiSYAAMRhAAAUnCoAAZzEbQQSGMRkURDEYRIIFBCAlT5EE8ZCFJATfkg83BD1GNFwE1Mao9TYaAI4FA4YC6AEfAIoAAQA2GgFJFYEIEkQXSXIIRLEhBLIIsgeBAbIQIrIBtoAEGXHRl7IagAgAAAAAAAAAAbIagAcABWhlbGxvshqyGCOyECKyAbO0PklXBABLAVcABIAEFR98dRJESwGBBFuBARKBARBPAoEMWyEEEhBLAYEQWUsCFU8DTgJSVwIAgAVoZWxsbxIQRIEBQ4H8D6+AA4D8D0xQgAFIULElsjgqshokshkoskIoskBJskBJskBJskAjshAisgGztEG0Q7Q4JRJETIECEkS1QAAoSwNQSwMVIksBDyJLAk8CTSVLAg8lSwNPAk1LAkwJSUsCDEsBSwNPAk1LB08DTwJSTwNMUE8DEkS1QAFLBE8CTwNSTwNQEkSBARJEtUIAKBJEgQFDsSqyGiSyGSiyQimyQCOyECKyAbYoskIpskArshokshkjshAisgG2KLJCKbJAJwayGiSyGSOyECKyAbYoskIpskCAATSyGiSyGSOyECKyAbYoskIpskAnB7IaJLIZI7IQIrIBtiiyQimyQIABNrIaJLIZI7IQIrIBtiiyQimyQIABN7IaJLIZI7IQIrIBtiiyQimyQIABOLIaJLIZI7IQIrIBtiiyQimyQIABObIaJLIZI7IQIrIBtiiyQimyQCcLshokshkjshAisgG2KLJCKbJAJwyyGiSyGSOyECKyAbYoskIpskAnDbIaJLIZI7IQIrIBtiiyQimyQCcOshokshkjshAisgG2KLJCKbJAJw+yGiSyGSOyECKyAbYoskIpskAnELIaJLIZI7IQIrIBtiiyQimyQCcRshokshkjshAisgGzuAA6ACoSRLgBOgArEkS4AjoAJwYSRLgDOgCAATQSRLgEOgAnBxJEuAU6AIABNhJEuAY6AIABNxJEuAc6AIABOBJEuAg6AIABORJEuAk6ACcLEkS4CjoAJwwSRLgLOgAnDRJEuAw6ACcOEkS4DToAJw8SRLgOOgAnEBJEtToAJxESRIEBQyJFA4AARQExG0EAbiqBAisiRQSBAScSsbIFQQAESwOyGU8CshqyGiUPQQAESwKyGiiyQiiyQCOyECKyAbO0BUUCtRoAKhJEtRoBKxJEMRuBAQ1BACKxJxOyGiSyGSiyQiiyQCOyECKyAbO1GgAnExJESwEnEhJEgQFDJwaAAwABNCcHRQUlTCKAEW5vIGFyZ3MgcGFyYW0gc2V0Qv95MgpJJwonBGexSbIqSwGyKSWyIycFsiUnCLImIQSyIiWyECKyAbO0JrQ8sUsCsipLA7IpJbIjJwWyJScEsiYhBLIiJbIQIrIBs7QmtDxPAycIEkRMJwQSRExxBEQnCBJEcQREJwQSRLEoskIoskAjshAisgG2SbIqSwGyKSWyIycFsiUnCbImIQSyIiWyECKyAbO0JrcAPUQnCRJEsScUsgUoskIoskAjshAisgG2JxSyBbIqsiklsiMnBbIlJwmyJiEEsiIlshAisgGzgQFDMRkUMRgUEEM=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }