tx · 7xAq72iyLa93m8K1oUhDAFFSwDy3aHdtc9Zh99X8cVez

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10700000 Waves

2023.10.09 21:29 [2791451] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "7xAq72iyLa93m8K1oUhDAFFSwDy3aHdtc9Zh99X8cVez", "fee": 10700000, "feeAssetId": null, "timestamp": 1696876239675, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "48KKuFqYjZ6bDHfz5VEXrKExDToC8sSKNTs3sQ9VCGC27hiT62MfoHPxnpeZGUYwpZEsswvngbAiZykKorugP4TV" ], "script": "base64:BgLjAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgUKAwgBCBIECgICAhIECgICAhIAnQIACURBWU1JTExJUwCAuJkpABNERUxJVkVSWV9QVU5JU0hNRU5UAODUAwEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAh4cENhbGxFUwCgjQYADHhwQ3VzdG9tTmFtZQDAhD0ACnhwTmV3U0xhbmQAwJaxAgAOeHBVcGdyYWRlSW5mcmEAkE4AB3hwTWVyZ2UAwIQ9AAl4cE9uYm9hcmQAwIQ9AAZ4cEhlYWwAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAQdsZXZlbFVwAgljdXJyTGV2ZWwFbmV3WFAECG5ld0xldmVsCQEJbGV2ZWxCeVhQAQUFbmV3WFAJAMwIAgUIbmV3TGV2ZWwJAMwIAgkAaAIFEm51bVBvaW50c09uTGV2ZWxVcAkAZQIFCG5ld0xldmVsBQljdXJyTGV2ZWwFA25pbAEMZ2V0RHVja1N0YXRzBA9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQKYnVmZkVmZmVjdApmb3JjZUJ1ZmZzBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8EA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQEJbWF4SGVhbHRoAQUDbHZsBApzdGF0ZUJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzggCCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5CQDMCAIFA2x2bAkAzAgCBQZoZWFsdGgFA25pbAMFCmZvcmNlQnVmZnMJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0BQNuaWwJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRGV4dGVyaXR5BQNuaWwBDmdldFJvYmJlcnlEYXRhAg9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQEC2xhc3RSb2JDb3N0CQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawEFC2R1Y2tBc3NldElkAAAEC2xhc3RSb2JUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3JvYkNvc3QJAJYDAQkAzAgCBQ5yb2JiZXJ5Q29zdE1pbgkAzAgCCQBlAgULbGFzdFJvYkNvc3QJAGgCBRRyb2JiZXJ5Q29vbGRvd25Db2VmZgkAZQIFA25vdwULbGFzdFJvYlRpbWUFA25pbAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAkAlwoFBQdyb2JDb3N0BQtsYXN0Um9iVGltZQUJZHVja1N0YXRlBQpsb2NrZWRMYW5kBQdsYW5kRVRBAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAApBUlRQUkVTQUxFAgdQUkVTQUxFAAZOVU1SRVMABgAYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSABkAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAxXSE1VTFRJUExJRVIAgMivoCUAD0RFRkFVTFRMT0NBVElPTgIPQWZyaWNhX0ZfQWZyaWNhABBSRVNPVVJDRVBSSUNFTUlOANW1AgAKRVNTRUxMQ09FRgAKABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABJURU5fTUlOVVRFU19NSUxMSVMAwM8kAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQZm9ydEFsbG93ZWRQcm9kcwkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATCQDMCAIAFAUDbmlsABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIlOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8xMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzIwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfMzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wLDAsMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNDBfMV8zMCwxLDJfMiwxLDMsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzYwXzFfMzAsMSwzXzUsMiw4LDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAApySWR4RWZmZWN0AAgAEHJJZHhSZXF1aXJlbWVudHMACQAJcklkeFNsb3RzAAoADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICA25vXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIFbGNuYV8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgIDbGFzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIGc3R0YW9fBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIDd2hfBQtsYW5kQXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEXa2V5Rm9ydGlmaWNhdGlvbnNCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICD2ZvcnRpZmljYXRpb25zXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwAPZGVsaXZlcnlGdW5kS2V5AgxkZWxpdmVyeUZ1bmQAEWRlbGl2ZXJ5TG9ja2VkS2V5Ag5kZWxpdmVyeUxvY2tlZAANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIfJXMlZCVzX19iZXN0UmVzdWx0QnlUb3VyQW5kRHVjawkAzAgCCQCkAwEFA3RJZAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsAgJfXwAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC8CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAQ5pc0luVG91cm5hbWVudAIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHAQxpc0luRGVsaXZlcnkBCGxvY2F0aW9uBANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFECQBmAgkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBQNub3cHCQBnAgADBQhkaXN0YW5jZQcBD2lzVXN1YWxMb2NhdGlvbgEIbG9jYXRpb24EB2xvY1R5cGUJAJEDAgkAtQkCBQhsb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQMJAQIhPQIFB2xvY1R5cGUCAVQJAQIhPQIFB2xvY1R5cGUCAUQHAQlvbk1pc3Npb24CDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEB2xvY1R5cGUJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAwkAAAIFB2xvY1R5cGUCAUQGAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQBDGNoZWF0QXR0ZW1wdAMGb2xkTG9jBm5ld0xvYwljaGVhdENhc2UJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWQ2hlYXQgYXR0ZW1wdDogb2xkTG9jPQUGb2xkTG9jAgksIG5ld0xvYz0FBm5ld0xvYwIHLCBjYXNlPQkApAMBBQljaGVhdENhc2UAFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkHABhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UHABFLU19BTExPV19ERUxJVkVSWQYABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgLiZKQMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEQYXNTdHJpbmdJbnRUdXBsZQEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAINKFN0cmluZywgSW50KQQCdDIFByRtYXRjaDAFAnQyCQACAQIfZmFpbCB0byBjYXN0IGludG8gKFN0cmluZywgSW50KQEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJv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d25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlhbCBpZHg9CQCkAwEFA2lkeAILLCB5b3UgaGF2ZSAJAJEDAgUDaGFzBQNpZHgCCywgYnV0IG5lZWQgCQCkAwEJAJEDAgUEbmVlZAUDaWR4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQDBQxzaG91bGRVc2VNYXQKAAIk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ZWVkcyA3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcBCnBsYWNlUHJvZEIGBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlCWR1Y2tTdGF0cwhvY2N1cGllZARmcmVlBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUQZm9ydEFsbG93ZWRQcm9kcwUKcHJvZHVjdElkeAkAAgEJAKwCAgkArAICAglQcm9kdWN0ICcJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AiEnIGNhbm5vdCBiZSB1c2VkIGZvciBsYW5kIGRlZmVuc2UDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlQoDBQVwTGlzdAUIb2NjdXBpZWQFBGZyZWUEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQGbmV3QW10AwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcJAGUCBQRjdXJyBQVjb3VudAkAZAIFBGN1cnIFBWNvdW50BAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIFBm5ld0FtdAUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFBGN1cnIFDlBST0RVQ1RQS0dTSVpFCQCVCgMJAMsBAgkAywECBQRoZWFkCQCaAwEFBm5ld0FtdAUEdGFpbAkAZAIFCG9jY3VwaWVkBQhkZWx0YVZvbAkAZQIFBGZyZWUFCGRlbHRhVm9sAQhhZGRQcm9kQgcGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BHNsb3QJZHVja1N0YXRzBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xBAdtYWluQXV4CQC1CQIFA3NlZwIBOwMJAQIhPQIJAJADAQUHbWFpbkF1eAUKTlVNTUFJTkFVWAkAAgECFFdyb25nIHNlZ21lbnQgZm9ybWF0BAFtCQCRAwIFB21haW5BdXgAAAQBYQkAkQMCBQdtYWluQXV4AAEDAwkAAAIFAW0CAAkAAAIFAWECAAcJAJQKAgkAZAIFAWoAAQgFA2FjYwJfMgQEdG1wTQkBC3Nsb3RzR3JvdXBCBgUBbQgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUBagAABQVzdGF0cwkAlAoCCQBkAgUBagABCQELc2xvdHNHcm91cEIGBQFhBQR0bXBNBQppc1Bvc2l0aXZlBQFqAAEFBXN0YXRzCAoAAiRsBQdzZWdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFBnBCeXRlcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgJfMgEFZm9ydEIGB3NlZ0xpc3QGcEJ5dGVzCG9jY3VwaWVkBGZyZWUKaXNQb3NpdGl2ZQlkdWNrU3RhdHMDCQBmAgADCQCQAwEFB3NlZ0xpc3QJAAIBAjFBdCBsZWFzdCBkdWNrLCBtaW5lcyBhbmQgdHJhcHMgcGFydHMgYXJlIHJlcXVpcmVkCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQMJAAACBQFqAAAJAJYKBAkAZAIFAWoAAQgFA2FjYwJfMggFA2FjYwJfMwgFA2FjYwJfNAQBcAkBCnBsYWNlUHJvZEIGBQNzZWcIBQNhY2MCXzIFCmlzUG9zaXRpdmUFCWR1Y2tTdGF0cwgFA2FjYwJfMwgFA2FjYwJfNAkAlgoECQBkAgUBagABCAUBcAJfMQgFAXACXzIIBQFwAl8zBAF0CgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUGcEJ5dGVzBQhvY2N1cGllZAUEZnJlZQoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlQoDCAUBdAJfMggFAXQCXzMIBQF0Al80ARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAELZHVja0Fzc2V0SWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAZjdXJyRXEJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8ECXRlbXBQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUMRU1QVFlfUFJPRDUwBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUGY3VyckVxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkBAiE9AgkAkAMBBQhwcm9wTGlzdAUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQoBB3VwZGF0ZXICA2FjYwFpBAZyZXN1bHQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcExpc3QFAWkJAGgCCQBoAgUEc2lnbgkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZQYW5pYyEgUGllY2VzIG9mIHR5cGU9CQCkAwEFAWkCBywgc2lnbj0JAKQDAQUEc2lnbgITLCB0ZXJyYWluQ291bnRzW2ldPQkApAMBCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkCECwgbGFuZFNpemVJbmRleD0JAKQDAQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1cGRhdGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARF1cGRhdGVQcm9wb3J0aW9ucwMNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24ECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8JALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQhwcm9wTGlzdAUNdGVycmFpbkNvdW50cwUNbGFuZFNpemVJbmRleAUEc2lnbgIBXwENY291bnRUZXJyYWlucwEIdGVycmFpbnMJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUIAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFDAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRAABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUUAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFGAAEFA25pbAEGYWRkUmVzBQpjdXJyZW50UmVzDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAuQkCBQFyAgFfAQl2aXJ0Q2xhaW0EDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgJAJQKAgkAzQgCCAUDYWNjAl8xBQlyZXNPZlR5cGUJAGQCCAUDYWNjAl8yBQlyZXNPZlR5cGUKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgENZGlzdHJpYnV0ZVJlcwQMY3VycmVudFdoUmVzDmN1cnJlbnRQYWNrUmVzCnJlc1RvQ2xhaW0Ld2hTcGFjZUxlZnQEDnJlc0xpc3RUb0NsYWltCAUKcmVzVG9DbGFpbQJfMQQMcmVzQW1Ub0NsYWltCAUKcmVzVG9DbGFpbQJfMgMJAAACBQxyZXNBbVRvQ2xhaW0AAAkAlAoCCQC5CQIFDGN1cnJlbnRXaFJlcwIBXwkAuQkCBQ5jdXJyZW50UGFja1JlcwIBXwMJAGcCBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCgEIYWRkTGlzdHMCA2FjYwFpCQDNCAIFA2FjYwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIYWRkTGlzdHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJAJQKAgkAuQkCBQFyAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfCgEMYWRkUGFydExpc3RzAgNhY2MBaQQGd2hQYXJ0CQBrAwkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQULd2hTcGFjZUxlZnQFDHJlc0FtVG9DbGFpbQkAlAoCCQDNCAIIBQNhY2MCXzEJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxjdXJyZW50V2hSZXMFAWkFBndoUGFydAkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQZ3aFBhcnQEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxhZGRQYXJ0TGlzdHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJAJQKAgkAuQkCCAUBcgJfMQIBXwkAuQkCCAUBcgJfMgIBXwEDYWJzAQF4AwkAwAICBQF4CQC2AgEAAAUBeAkAvgIBBQF4AARmcmVxCQDMCAIJAMwIAgAGCQDMCAIACQkAzAgCAA4JAMwIAgAPCQDMCAIAEAUDbmlsCQDMCAIJAMwIAgAFCQDMCAIACAkAzAgCAA0JAMwIAgAOCQDMCAIADwUDbmlsCQDMCAIJAMwIAgABCQDMCAIABAkAzAgCAAkJAMwIAgAKCQDMCAIADwUDbmlsCQDMCAIJAMwIAgABCQDMCAIABgkAzAgCAAcJAMwIAgAPCQDMCAIAEwUDbmlsCQDMCAIJAMwIAgAECQDMCAIABwkAzAgCAAgJAMwIAgANCQDMCAIAEgUDbmlsBQNuaWwBB2dlbkNoYXICAW4FZnJlcXMEA3JlbQkAoAMBCQC7AgIFAW4FB1RXRU5UWVgEBmxldHRlcgMJAGYCCQCRAwIFBWZyZXFzAAAF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c2VPY2N1cGllZFZvbAEFAndoBAZ3aExvZnQDCQBmAgAFCQCQAwEFAndoCQC5CQIJAMwIAgIBMAkAzAgCCQCkAwEFCndoT2NjdXBpZWQJAMwIAgkApAMBCQBlAgUHd2hUb3RhbAUKd2hPY2N1cGllZAkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwQEbG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8ECHdoTG9ja2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUJdm9sTG9ja2VkBANvY2MDCQBmAgkAkAMBBQRsb2Z0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUKd2hPY2N1cGllZAkAuQkCCQDMCAIJAKQDAQUId2hMb2NrZWQJAMwIAgkApAMBBQNvY2MJAMwIAgkApAMBCQBlAgkAZQIFB3doVG90YWwFCHdoTG9ja2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hSZXMFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnByAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2hyCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docgIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docgUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnByBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFyCgACJGwFCHJlc1BhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBA212TQIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3dobQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWN1cnJXaE1hdAUBaQQDYnBtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tNYXQFAWkDCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAJEDAgUJY3VycldoTWF0BQFpCQDNCAIIBQNhY2MCXzMJAJEDAgUOY3VycmVudFBhY2tNYXQFAWkIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnBtCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwbQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtAwkAZgIJAQEtAQUCYW0FA3dobQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aG0CCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aG0FAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwbQUCYW0JAGQCCAUDYWNjAl80BQJhbQQBbQoAAiRsBQhtYXRQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAXICXzQKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212TQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBA212UAIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docAMJAGYCCQCQAwEFCmN1cnJXaFByb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyV2hQcm9kBQFpAAAEA2JwcAMJAGYCCQCQAwEFD2N1cnJlbnRQYWNrUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD2N1cnJlbnRQYWNrUHJvZAUBaQAAAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEFA3docAkAzQgCCAUDYWNjAl8zCQCkAwEFA2JwcAgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sAwkAZgIJAQEtAQUCYW0FA3docAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wEAXADCQECIT0CCQCQAwEFCXByb2RQYXJ0cwAACgACJGwFCXByb2RQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAW0CXzQKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALoJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALoJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDMzNzM4MzQyNzcDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzM3MzgzNDI3NwJfMQQGZHVja0lkCAUNJHQwMzM3MzgzNDI3NwJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNjY1MTM3NTIyAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNjY1MTM3NTIyAl8xBAVicFJlcwgFDSR0MDM2NjUxMzc1MjICXzIEBWxvZnRPCAUNJHQwMzY2NTEzNzUyMgJfMwQFbG9mdEYIBQ0kdDAzNjY1MTM3NTIyAl80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQGbHZsS2V5CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQEBXhwS2V5CQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQBAZsdmxLZXkJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyBAV4cEtleQkBCWtleVVzZXJYUAEFBGFkZHIEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENY2hlY2tEZWxpdmVyeQELZHVja0Fzc2V0SWQDCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZBwQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUQHBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAMDCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMJAGYCAAMFCGRpc3RhbmNlBwkAAgECIFlvdXIgZHVjayBpcyBvbiBkZWxpdmVyeSBtaXNzaW9uCQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhRleGl0RGVsaXZlcnlJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBEmV4aXREZWxpdmVyeUNvbW1vbgQLZHVja0Fzc2V0SWQKY2hlY2tOZXdIUAVuZXdIUAZyZWFzb24EC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQCFE5GVCBkdWNrIGlzIG9ycGhhbmVkBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECWN1ckhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BA5vdXRjb21lQWN0aW9ucwMJAGcCBQhkaXN0YW5jZQADBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUFb3duZXIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DAwMFCmNoZWNrTmV3SFAJAGYCBQVuZXdIUAAABwkAZgIFA25vdwkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBwkAAgECJllvdXIgZHVjayBpcyBzdGlsbCBvbiBkZWxpdmVyeSBtaXNzaW9uBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAFCWN1ckhlYWx0aAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlgoEBQ5vdXRjb21lQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5BQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgIOYXV0b2V4aXRSZWFzb24FBnJlYXNvbgUDbmlsBQ1zYXZlZExvY2F0aW9uBQtzYXZlZEhlYWx0aAENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhttZXJnZUludGVybmFsX2NoZWNrRGVsaXZlcnkKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEVY2hlY2tPdXRkYXRlZERlbGl2ZXJ5AQh1c2VyQWRkcgQEZHVjawkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgMDBRFLU19BTExPV19ERUxJVkVSWQkBCWlzRGVmaW5lZAEFBGR1Y2sHBAtkdWNrQXNzZXRJZAkBBXZhbHVlAQUEZHVjawQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEA2xvYwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OAgFfBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAMDCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBRAYJAGYCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTBQNuaWwECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAMJAGcCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAADBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAM0IAgkAzQgCBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQUDbmlsBApwdW5pc2htZW50CQD8BwQFBHRoaXMCC3NhdmVJbnRlZ2VyCQDMCAIJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQJAMwIAgkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsBQNuaWwDCQAAAgUKcHVuaXNobWVudAUKcHVuaXNobWVudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5CQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQNuaWwBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UECHVzZXJBZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkAzQgCCQEVY2hlY2tPdXRkYXRlZERlbGl2ZXJ5AQUIdXNlckFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQBDHByb2xvZ0ZsaWdodAEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsLQFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQELc2F2ZUludGVnZXICA2tleQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAiBzYXZlSW50ZWdlciBpcyBub3QgcHVibGljIG1ldGhvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQZhbW91bnQFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpMQU5EUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIXVW5rbm93biBpc3N1ZXIgb2YgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKTEFORFBSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQEC2xhbmROdW1TaXplCQCwAgIIBQVhc3NldARuYW1lAAQEB2xhbmROdW0DCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQIDWFhMCQCzAgIFC2xhbmROdW1TaXplAAMDCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQICWEwJALMCAgULbGFuZE51bVNpemUAAgkAswICBQtsYW5kTnVtU2l6ZQABAwkBASEBCQEJaXNEZWZpbmVkAQkAtgkBBQdsYW5kTnVtCQACAQkArAICAh5DYW5ub3QgcGFyc2UgbGFuZCBudW1iZXIgZnJvbSAIBQVhc3NldARuYW1lBAtsYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUFbGFuZHMFC2xhbmRBc3NldElkCQACAQkArAICAiJZb3VyIHN0YWtlZCBsYW5kcyBhbHJlYWR5IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAMJAGcCCQCQAwEFBWxhbmRzBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIJAAIBCQCsAgIJAKwCAgIZWW91ciBhbHJlYWR5IHN0YWtlZCBtYXggKAkApAMBBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVICBykgbGFuZHMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQlzdGFrZUR1Y2sABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQUKYXNzZXRJZFN0cgkAAgECGXVuc3Rha2VEdWNrX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUFbWF4SFAFBmhlYWx0aAkAAgEJAKwCAgkArAICAhlQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgdG8gCQCkAwEFBW1heEhQAhNocCBiZWZvcmUgdW5zdGFraW5nCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBBQlrZXlIZWFsdGgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQNuaWwFDXByb2xvZ0FjdGlvbnMBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEMcHJvbG9nRmxpZ2h0AQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAVuZXdIUAgFAWYCXzEEC2R1Y2tBc3NldElkCAUBZgJfMgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAtuZXdMb2NhdGlvbggFAWYCXzQDCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAQHaXNEZWxpdgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFEBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzAzODU3MDQ4MgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3MDM4NTcwNDgyAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3MDM4NTcwNDgyAl8yBA0kdDA3MDQ4NTczNTkxAwkBASEBCQEJb25NaXNzaW9uAgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBD2lzVXN1YWxMb2NhdGlvbgEFC25ld0xvY2F0aW9uCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAUDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgULY3VyTG9jYXRpb24AAAMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABwMJAGYCBQVuZXdIUAAABAlsb2NhbEJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkAAAECHVwZExvY2FsAwkAZgIFBXNjb3JlBQlsb2NhbEJlc3QJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0Ag5zYXZlRHVja1Jlc3VsdAkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUIdXBkTG9jYWwFCHVwZExvY2FsCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULY3VyTG9jYXRpb24ECWxvY0hlYWx0aAkBEGFzU3RyaW5nSW50VHVwbGUBCQD8BwQFBHRoaXMCEGF1dG9FeGl0RGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFbmV3SFAJAMwIAgMFB2lzRGVsaXYCAjEwAgIxMQUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgDBQdpc0RlbGl2BQlsb2NIZWFsdGgDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAggFCWxvY0hlYWx0aAJfMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAwUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAgMxNjwFA25pbAUDbmlsAwkAAAIFCWxvY0hlYWx0aAUJbG9jSGVhbHRoBQlsb2NIZWFsdGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECWxvY1RvU2F2ZQgFDSR0MDcwNDg1NzM1OTECXzEECGhwVG9TYXZlCAUNJHQwNzA0ODU3MzU5MQJfMgkAlAoCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUJbG9jVG9TYXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAUFbmV3SFAFA25pbAUNcHJvbG9nQWN0aW9ucwMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCBQVuZXdIUAAABQ94cFN1Y2Nlc3NGbGlnaHQFDHhwRmFpbEZsaWdodAJfMQgFAWYCXzMBaQEEaGVhbAMKcXVhbnRpdHlMMQpxdWFudGl0eUwyCnF1YW50aXR5TDMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwMDCQBmAgAABQpxdWFudGl0eUwxBgkAZgIAAAUKcXVhbnRpdHlMMgYJAGYCAAAFCnF1YW50aXR5TDMJAAIBAhtRdWFudGl0eSBjYW5ub3QgYmUgbmVnYXRpdmUEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhRoZWFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhJoZWFsX2NoZWNrRGVsaXZlcnkEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjBnJlY2lwZQQBbggFA2FjYwJfMgQBeAMJAGYCCQCQAwEFCHByb2RMaXN0BQFuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QFAW4AAAMJAGYCAAMFAW4EAXEJAJEDAgUDcXRzBQFuAwkAZgIFAXEFAXgJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkApAMBBQF4AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBbgkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFAXgFAXEJAGQCBQFuAAEJAGQCCAUDYWNjAl8zCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUGcmVjaXBlAgFfBQpySWR4RWZmZWN0BQFxCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBBQF4CQBkAgUBbgABCAUDYWNjAl8zBAZyZXN1bHQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELaXRlcmF0ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQJbmV3SGVhbHRoCQCXAwEJAMwIAgUFbWF4SFAJAMwIAgkAZAIFCW9sZEhlYWx0aAgFBnJlc3VsdAJfMwUDbmlsCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAuQkCCAUGcmVzdWx0Al8xAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBoAgUGeHBIZWFsCQBkAgkAZAIFCnF1YW50aXR5TDEFCnF1YW50aXR5TDIFCnF1YW50aXR5TDMCXzEFCW5ld0hlYWx0aAFpAQZoZWFsRVMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIWaGVhbEVTX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhRoZWFsRVNfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFCW9sZEhlYWx0aAAACQACAQIoSFAgc2hvdWxkIGJlIDAgdG8gY2FsbCBFbWVyZ2VuY3kgU2VydmljZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA1tZWRLaXRBbW91bnQxAwkAZgIJAJADAQUIcHJvZExpc3QAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAAAAAQNbWVkS2l0QW1vdW50MgMJAGYCCQCQAwEFCHByb2RMaXN0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAABAAAEDW1lZEtpdEFtb3VudDMDCQBmAgkAkAMBBQhwcm9kTGlzdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAgAAAwMDCQBmAgUNbWVkS2l0QW1vdW50MQAABgkAZgIFDW1lZEtpdEFtb3VudDIAAAYJAGYCBQ1tZWRLaXRBbW91bnQzAAAJAAIBAh9Zb3UgaGF2ZSB0byB1c2Ugb3duIE1lZGljYWwgS2l0BAhleGlzdFN0cgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlFc1dhcmVob3VzZQAEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAvAkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsBAtleGlzdEFtb3VudAMJAGYCCQCQAwEFDGV4aXN0QW1vdW50cwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMZXhpc3RBbW91bnRzAAAAAAMJAGcCAAAFC2V4aXN0QW1vdW50CQACAQI5VGhlcmUgYXJlIG5vIE1lZGljYWwgS2l0cyBMMSBhdCBFbWVyZ2VuY3kgU2VydmljZSBzdG9yYWdlBAluZXdIZWFsdGgJAGQCBQlvbGRIZWFsdGgJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBQpySWR4RWZmZWN0BAVuZXdFUwkAuQkCCQDMCAIJAKQDAQkAZQIFC2V4aXN0QW1vdW50AAEJANEIAgUMZXhpc3RBbW91bnRzAAACAV8EBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXNlbGxQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUKRVNTRUxMQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQMJAQIhPQIIBQNwbXQGYW1vdW50BQlzZWxsUHJpY2UJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQlzZWxsUHJpY2UEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9lY29ub215Q29udHJhY3QCD3VwZGF0ZUVzU3RvcmFnZQkAzAgCBQVuZXdFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUJc2VsbFByaWNlBQNuaWwJAJQKAgkAzggCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQh4cENhbGxFUwJfMQUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sBaQEPY29tbWl0Rm9yUmFuZG9tAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUNcHJvbG9nQWN0aW9ucwULZmluaXNoQmxvY2sBaQEIYnV5U0xhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEKZXhwZWRpdGlvbgIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCAUBZgJfMgQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBgUFbUxpc3QFDEVYUE1BVEVSSUFMUwIBXwQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDgxMDI4ODExMjUJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwODEwMjg4MTEyNQJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwODEwMjg4MTEyNQJfMgQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQCaWQICAUBZQJfMgJfMQQGcmVzdWx0AwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAACQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGmV4cGVkaXRpb25fY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECGGV4cGVkaXRpb25fY2hlY2tEZWxpdmVyeQQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlQoDCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zBQthY3Jlc1Jlc3VsdAFpARBidXlTTGFuZEZvckFjcmVzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQxTX0NPU1RfQUNSRVMJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQxTX0NPU1RfQUNSRVMEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxhY3Jlc0Fzc2V0SWQFA2FtdAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEMdXBncmFkZUluZnJhAQtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCBQRhZGRyBQ5sYW5kQXNzZXRJZE9wdAMJAAACAgdPTkJPQVJEBQckbWF0Y2gwCQESYWN0aXZhdGVPbmJvYXJkQXJ0AQUEYWRkcgkAAgECEFVua25vd24gYXJ0aWZhY3QJAM4IAgUGcmVzdWx0BQ1wcm9sb2dBY3Rpb25zAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUHeHBNZXJnZQJfMQgFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCkAwEFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARdmaXhDb250aW5lbnRQcm9wb3J0aW9ucwEMbGFuZEFzc2V0SWRzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCgEIZ2V0UHJvcHMCA2FjYwRjb250CQDNCAIFA2FjYwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBGNvbnQCCzBfMF8wXzBfMF8wBAFwCgACJGwFCmNvbnRpbmVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGdldFByb3BzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQoBCXByb2Nlc3NvcgIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUFBVNTSVpFBARjb250CQCRAwIFAWQFDHJlY0NvbnRpbmVudAQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAxjb250aW5lbnRJZHgJAQV2YWx1ZQEJAM8IAgUKY29udGluZW50cwUEY29udAQJY29udFByb3BzCQC1CQIJAJEDAgUDYWNjBQxjb250aW5lbnRJZHgCAV8EB3VwZGF0ZWQJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAckbWF0Y2gwBQRjb250AwkAAAICCEFtZXJpY2FzBQckbWF0Y2gwCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBkV1cm9wZQUHJG1hdGNoMAkAzAgCCQCRAwIFA2FjYwAACQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAgkAzAgCCQCRAwIFA2FjYwADCQDMCAIJAJEDAgUDYWNjAAQFA25pbAMJAAACAgRBc2lhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCBQd1cGRhdGVkCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBkFmcmljYQUHJG1hdGNoMAkAzAgCCQCRAwIFA2FjYwAACQDMCAIJAJEDAgUDYWNjAAEJAMwIAgkAkQMCBQNhY2MAAgkAzAgCBQd1cGRhdGVkCQDMCAIJAJEDAgUDYWNjAAQFA25pbAMJAAACAgdPY2VhbmlhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgUHdXBkYXRlZAUDbmlsCQACAQIPd3JvbmcgY29udGluZW50BAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFAXAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXByb2Nlc3NvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECCEFtZXJpY2FzCQCRAwIFAXIAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBkV1cm9wZQkAkQMCBQFyAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgRBc2lhCQCRAwIFAXIAAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBkFmcmljYQkAkQMCBQFyAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgdPY2VhbmlhCQCRAwIFAXIABAUDbmlsAAABaQEPZml4U3Rha2VkUGllY2VzAQdhZGRyZXNzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAxzdGFrZWRQaWVjZXMDCQAAAgUHYWRkcmVzcwIAAAAECGxhbmRzU3RyCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECGxhbmRTaXplCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6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ZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUNcHJvbG9nQWN0aW9ucwAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAt2aXJ0V2xnRGF0YQkBCWFzQW55TGlzdAEJAPwHBAULd2xnQ29udHJhY3QCEmNoZWNrV2xnWHBSRUFET05MWQkAzAgCBQRhZGRyBQNuaWwFA25pbAQNdmlydFdsZ1BvaW50cwkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQABBA0kdDA5NjUxMDk2OTAwAwkAZwIAAAUNdmlydFdsZ1BvaW50cwkAlAoCAAAFA25pbAQHZGVsdGFYUAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIJdGFrZVdsZ1hwCQDMCAIFBGFkZHIFA25pbAUDbmlsAwkAAAIFB2RlbHRhWFAFB2RlbHRhWFAJAJQKAgUNdmlydFdsZ1BvaW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleVVzZXJYUAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAl3bGdQb2ludHMIBQ0kdDA5NjUxMDk2OTAwAl8xBAp3bGdBY3Rpb25zCAUNJHQwOTY1MTA5NjkwMAJfMgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpmcmVlS2V5QWNjAAAFCXdsZ1BvaW50cwQLZnJlZUtleUR1Y2sJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBA5mcmVlUG9pbnRzRHVjawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwUKd2xnQWN0aW9ucwAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIZZXF1aXBEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhdlcXVpcER1Y2tfY2hlY2tEZWxpdmVyeQQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUFbmV3RXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUFbmV3RXEFCXRlbXBQcm9kQgcFBXN0YXRzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA8kdDAxMDM3MzgxMDM4NTMJAQVmb3J0QgYFDGN1cnJlbnRGb3J0cwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQJ3aAUJd2hJZHhQcm9kBQRjdXJPBQRjdXJGBgUDbmlsBAl0ZW1wUHJvZEIIBQ8kdDAxMDM3MzgxMDM4NTMCXzEEBXRlbXBPCAUPJHQwMTAzNzM4MTAzODUzAl8yBAV0ZW1wRggFDyR0MDEwMzczODEwMzg1MwJfMwQPJHQwMTAzODU2MTAzOTUyCQEFZm9ydEIGBQhuZXdGb3J0cwUJdGVtcFByb2RCBQV0ZW1wTwUFdGVtcEYHBQlkdWNrU3RhdHMECG5ld1Byb2RCCAUPJHQwMTAzODU2MTAzOTUyAl8xBARuZXdPCAUPJHQwMTAzODU2MTAzOTUyAl8yBARuZXdGCAUPJHQwMTAzODU2MTAzOTUyAl8zBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUHY3VyTG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUEbmV3TwkAzAgCCQCkAwEFBG5ld0YJAMwIAgkAkQMCBQdjdXJMb2Z0BQh2b2xUb3RhbAUDbmlsAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDHRvdXJMb2NhdGlvbgUDbmlsBQx0b3VyTG9jYXRpb24BaQEMYnJlYWtBdHRlbXB0AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAQIhPQIJAJEDAgkAtQkCBQtjdXJMb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQIBVAkAAgECIllvdXIgZHVjayBpcyBub3QgaW4gdGhlIHRvdXJuYW1lbnQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDXNhdmVkTG9jYXRpb24FC2N1ckxvY2F0aW9uAWkBFmV4aXRUb3VybmFtZW50SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBwFpARRleGl0RGVsaXZlcnlJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQHAAACAAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQMLZHVja0Fzc2V0SWQFbmV3SFAGcmVhc29uAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgQFC2R1Y2tBc3NldElkBgUFbmV3SFAFBnJlYXNvbgkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgF8AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtsYW5kQXNzZXRJZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwAAAWkBDmFjY2VwdERlbGl2ZXJ5AAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24FA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAAyG9uR", "height": 2791451, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3JaEF7XvsGn31zRN5KHg6FiXajhMYboYrLwHdkdsxGNE Next: 3MioT3saug1yh4Amjb6nucFeHzgyPYnF5DNkUSdibZLW Diff:
OldNewDifferences
353353 let cj = parseIntValue(cg[bm])
354354 let ck = parseIntValue(cg[bo])
355355 if (if ((cg[bn] == "D"))
356- then (ay > (cj + aO))
356+ then ((cj + aO) > ay)
357357 else false)
358358 then (3 >= ck)
359359 else false
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 let b = 60000
77
88 func c (d) = ("lastArbTimeUser_" + d)
99
1010
1111 let e = 100000000
1212
1313 let f = 3200
1414
1515 let g = 4000
1616
1717 let h = 3
1818
1919 let i = 100000000
2020
2121 let j = 400
2222
2323 let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2424
2525 let l = 0
2626
2727 let m = 1
2828
2929 let n = 2
3030
3131 let o = 3
3232
3333 let p = 4
3434
3535 let q = 0
3636
3737 let r = 6
3838
3939 let s = 2
4040
4141 let t = 2
4242
4343 let u = 30
4444
4545 let v = [0, 600000, 900000, 43200000, 21600000]
4646
4747 let w = 20000000
4848
4949 let x = 1
5050
5151 let y = 0
5252
5353 let z = 1
5454
5555 func A (B) = ("duckHealth_" + B)
5656
5757
5858 func C (B) = ("duckChars_" + B)
5959
6060
6161 func D (B) = ("duckXP_" + B)
6262
6363
6464 func E (B) = ("duckLevel_" + B)
6565
6666
6767 func F (B) = ("duckFreePoints_" + B)
6868
6969
7070 func G (B) = ("duckEquipment_" + B)
7171
7272
7373 func H (d) = ("userXP_" + d)
7474
7575
7676 func I (d) = ("userLevel_" + d)
7777
7878
7979 func J (d) = ("userFreePoints_" + d)
8080
8181
8282 func K (B) = ("savedHealth_" + B)
8383
8484
8585 func L (B) = ("savedLocation_" + B)
8686
8787
8888 func M (B) = ("duckBuffs_" + B)
8989
9090
9191 func N (B) = ("lastRobberyTime_" + B)
9292
9393
9494 func O (B) = ("lastRobberyCost_" + B)
9595
9696
9797 func P (Q) = ("landRobberyState_" + Q)
9898
9999
100100 func R (Q) = ("landCooldownETA_" + Q)
101101
102102
103103 func S (B) = ("duckRobberyState_" + B)
104104
105105
106106 func T (B) = ("lockedLandByDuck_" + B)
107107
108108
109109 func U (B) = ("deliveryDelayByDuck_" + B)
110110
111111
112112 let V = 10000
113113
114114 let W = 10000
115115
116116 let X = 2000
117117
118118 let Y = 100000
119119
120120 let Z = 1000000
121121
122122 let aa = 5000000
123123
124124 let ab = 10000
125125
126126 let ac = 1000000
127127
128128 let ad = 1000000
129129
130130 let ae = 10000
131131
132132 func af (ag) = fraction(f, pow(ag, 4, g, 4, 4, DOWN), e)
133133
134134
135135 func ah (ai) = (100 + ai)
136136
137137
138138 func aj (ak,al) = {
139139 let am = af(al)
140140 [am, (h * (am - ak))]
141141 }
142142
143143
144144 func an (ao,B,ap,aq) = {
145145 let ar = split(valueOrElse(getString(ao, C(B)), "0_0_0_0_0"), "_")
146146 let as = valueOrElse(getInteger(ao, E(B)), 0)
147147 let at = valueOrElse(getInteger(ao, A(B)), ah(as))
148148 let au = split(valueOrElse(getString(ao, M(B)), "0_0_0_0_0"), "_")
149149 ([parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n]), parseIntValue(ar[o]), parseIntValue(ar[p]), as, at] ++ (if (aq)
150150 then [ap, ap, ap, ap, ap]
151151 else [parseIntValue(au[l]), parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p])]))
152152 }
153153
154154
155155 func av (ao,B) = {
156156 let aw = valueOrElse(getInteger(ao, O(B)), 0)
157157 let ax = valueOrElse(getInteger(ao, N(B)), 0)
158158 let ay = lastBlock.timestamp
159159 let az = max([i, (aw - (j * (ay - ax)))])
160160 let aA = valueOrElse(getInteger(ao, S(B)), 0)
161161 let aB = valueOrElse(getString(ao, T(B)), "")
162162 let aC = valueOrElse(getInteger(ao, R(aB)), 0)
163163 $Tuple5(az, ax, aA, aB, aC)
164164 }
165165
166166
167167 let aD = "LAND"
168168
169169 let aE = "DUCK"
170170
171171 let aF = "PRESALE"
172172
173173 let aG = 6
174174
175175 let aH = 25
176176
177177 let aI = 3456000
178178
179179 let aJ = 10000000000
180180
181181 let aK = "Africa_F_Africa"
182182
183183 let aL = 39637
184184
185185 let aM = 10
186186
187187 let aN = 50000
188188
189189 let aO = 600000
190190
191191 let aP = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
192192
193193 let aQ = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
194194
195195 let aR = 10000000
196196
197197 let aS = [15, 16, 17, 18, 19, 20]
198198
199199 let aT = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
200200
201201 let aU = 6
202202
203203 let aV = 8
204204
205205 let aW = 9
206206
207207 let aX = 10
208208
209209 let aY = 10
210210
211211 let aZ = 0
212212
213213 let ba = 1
214214
215215 let bb = 2
216216
217217 let bc = 3
218218
219219 let bd = 4
220220
221221 let be = 0
222222
223223 let bf = 1
224224
225225 let bg = 2
226226
227227 let bh = 3
228228
229229 let bi = 0
230230
231231 let bj = 1
232232
233233 let bk = 2
234234
235235 let bl = 3
236236
237237 let bm = 0
238238
239239 let bn = 1
240240
241241 let bo = 2
242242
243243 func bp (bq) = ("no_" + bq)
244244
245245
246246 func br (bq) = ("lcna_" + bq)
247247
248248
249249 func bs (bq) = ("st_" + bq)
250250
251251
252252 func bt (bu,bq) = makeString(["las", bu, bq], "_")
253253
254254
255255 func bv (bw,bq,bx) = ((((("sttao_" + bw) + "_") + bq) + "_") + bx)
256256
257257
258258 func by (Q) = ("wh_" + Q)
259259
260260
261261 func bz (bq) = ("infraLevel_" + bq)
262262
263263
264264 func bA (Q) = ("fortifications_" + Q)
265265
266266
267267 func bB (bq) = ("duckCustomNameByAssetId_" + bq)
268268
269269
270270 func bC (d) = ("accountCustomNameByAddr_" + d)
271271
272272
273273 func bD (d) = ("accRefBy_" + d)
274274
275275
276276 func bE (B) = ("onboardArtActivatedOnDuck_" + B)
277277
278278
279279 func bF (d) = ("onboardArtActivatedDuckBy_" + d)
280280
281281
282282 func bG (d) = ("accReferrals_" + d)
283283
284284
285285 func bH (bq) = ("duckOwner_" + bq)
286286
287287
288288 func bI (bx) = ("stakedDuckByOwner_" + bx)
289289
290290
291291 func bJ (B) = ("backPack_" + B)
292292
293293
294294 func bK (B) = ("duckLocation_" + B)
295295
296296
297297 func bL (bM) = ("%s%s__userGwlReleaseTime__" + bM)
298298
299299
300300 func bN () = "emergencyWarehouseProducts"
301301
302302
303303 let bO = "deliveryFund"
304304
305305 let bP = "deliveryLocked"
306306
307307 let bQ = "%s__lastTourId"
308308
309309 func bR (bS) = ("%s%d__tourStaticData__" + toString(bS))
310310
311311
312312 func bT (bS) = ("%s%d__tourDynamicData__" + toString(bS))
313313
314314
315315 func bU (bS,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bS), B], "__")
316316
317317
318318 let bV = 0
319319
320320 let bW = 1
321321
322322 let bX = 6
323323
324324 let bY = 1
325325
326326 func bZ (ca,bS) = {
327327 let cb = split(valueOrErrorMessage(getString(ca, bR(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
328328 let cc = split_4C(valueOrErrorMessage(getString(ca, bT(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
329329 [cb, cc]
330330 }
331331
332332
333333 func cd (ca,ce) = {
334334 let cf = valueOrElse(getInteger(ca, bQ), 0)
335335 let cg = split(ce, "_")
336336 let ay = lastBlock.timestamp
337337 let ch = bZ(ca, cf)
338338 let cb = ch[bV]
339339 let cc = ch[bW]
340340 if (if (if ((cg[bn] == "T"))
341341 then (parseIntValue(cg[bm]) == cf)
342342 else false)
343343 then (cc[bY] == "INPROGRESS")
344344 else false)
345345 then (parseIntValue(cb[bX]) > ay)
346346 else false
347347 }
348348
349349
350350 func ci (ce) = {
351351 let cg = split(ce, "_")
352352 let ay = lastBlock.timestamp
353353 let cj = parseIntValue(cg[bm])
354354 let ck = parseIntValue(cg[bo])
355355 if (if ((cg[bn] == "D"))
356- then (ay > (cj + aO))
356+ then ((cj + aO) > ay)
357357 else false)
358358 then (3 >= ck)
359359 else false
360360 }
361361
362362
363363 func cl (ce) = {
364364 let cm = split(ce, "_")[bn]
365365 if ((cm != "T"))
366366 then (cm != "D")
367367 else false
368368 }
369369
370370
371371 func cn (ca,ce) = {
372372 let cf = valueOrElse(getInteger(ca, bQ), 0)
373373 let cg = split(ce, "_")
374374 let ay = lastBlock.timestamp
375375 let ch = bZ(ca, cf)
376376 let cb = ch[bV]
377377 let cc = ch[bW]
378378 let cm = cg[bn]
379379 if ((cm == "D"))
380380 then true
381381 else if (if (if ((cg[bn] == "T"))
382382 then (parseIntValue(cg[bm]) == cf)
383383 else false)
384384 then (cc[bY] == "INPROGRESS")
385385 else false)
386386 then (parseIntValue(cb[bX]) > ay)
387387 else false
388388 }
389389
390390
391391 func co (cp) = (parseIntValue(cp[aU]) * aR)
392392
393393
394394 func cq (cr,cs,ct) = throw(((((("Cheat attempt: oldLoc=" + cr) + ", newLoc=") + cs) + ", case=") + toString(ct)))
395395
396396
397397 let cu = false
398398
399399 let cv = false
400400
401401 let cw = true
402402
403403 let cx = take(drop(this.bytes, 1), 1)
404404
405405 let cy = {
406406 let cz = cx
407407 if ((base58'2W' == cz))
408408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409409 else if ((base58'2T' == cz))
410410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411411 else throw("Unknown chain")
412412 }
413413
414414 let cA = {
415415 let cz = cx
416416 if ((base58'2W' == cz))
417417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418418 else if ((base58'2T' == cz))
419419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420420 else throw("Unknown chain")
421421 }
422422
423423 let cB = {
424424 let cz = cx
425425 if ((base58'2W' == cz))
426426 then 10000000000
427427 else if ((base58'2T' == cz))
428428 then 100000000
429429 else throw("Unknown chain")
430430 }
431431
432432 let cC = {
433433 let cz = cx
434434 if ((base58'2W' == cz))
435435 then 86400000
436436 else if ((base58'2T' == cz))
437437 then 60000
438438 else throw("Unknown chain")
439439 }
440440
441441 let cD = "__"
442442
443443 let cE = 1000000
444444
445445 let cF = 100000000
446446
447447 let cG = 25
448448
449449 let cH = 100
450450
451451 let cI = 225
452452
453453 let cJ = 400
454454
455455 let cK = 625
456456
457457 let cL = [0, 1, 2, 3, 4, 5]
458458
459459 func cM (cN,cO) = valueOrErrorMessage(getString(cN, cO), makeString(["mandatory ", toString(cN), ".", cO, " is not defined"], ""))
460460
461461
462462 let cP = 1
463463
464464 let cQ = 2
465465
466466 let cR = 3
467467
468468 let cS = 4
469469
470470 let cT = 7
471471
472472 let cU = 8
473473
474474 func cV () = "%s__restConfig"
475475
476476
477477 func cW () = "%s__restAddr"
478478
479479
480480 func cX (cY) = split_4C(cM(cY, cV()), cD)
481481
482482
483483 func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db)))
484484
485485
486486 let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cA))
487487
488488 let da = cX(dc)
489489
490490 let ao = cZ(da, cP)
491491
492492 let dd = cZ(da, cQ)
493493
494494 let de = cZ(da, cR)
495495
496496 let df = cZ(da, cS)
497497
498498 let dg = cZ(da, cT)
499499
500500 let dh = cZ(da, cU)
501501
502502 let di = 0
503503
504504 let dj = 1
505505
506506 let dk = 2
507507
508508 let dl = 3
509509
510510 let dm = "wlg_assetId"
511511
512512 let dn = valueOrErrorMessage(getBinary(df, dm), "WLGOLD is not issued yet")
513513
514514 let do = "acresAssetId"
515515
516516 let dp = valueOrErrorMessage(getBinary(dh, do), "ACRES is not issued yet")
517517
518518 let dq = 2
519519
520520 func dr (cN) = ("finishBlockForAddr_" + cN)
521521
522522
523523 func ds () = "resTypesProportions"
524524
525525
526526 func dt (du) = ("resTypesByContinent_" + du)
527527
528528
529529 func dv (bx) = ("stakedLandsByOwner_" + bx)
530530
531531
532532 func dw (bx) = ("stakedPiecesByOwner_" + bx)
533533
534534
535535 func dx (dy) = {
536536 let cz = dy
537537 if ($isInstanceOf(cz, "String"))
538538 then {
539539 let dz = cz
540540 dz
541541 }
542542 else throw("fail to cast into String")
543543 }
544544
545545
546546 func dA (dy) = {
547547 let cz = dy
548548 if ($isInstanceOf(cz, "Int"))
549549 then {
550550 let dB = cz
551551 dB
552552 }
553553 else throw("fail to cast into Int")
554554 }
555555
556556
557557 func dC (dy) = {
558558 let cz = dy
559559 if ($isInstanceOf(cz, "List[Any]"))
560560 then {
561561 let dD = cz
562562 dD
563563 }
564564 else throw("fail to cast into List[Any]")
565565 }
566566
567567
568568 func dE (dy) = {
569569 let cz = dy
570570 if ($isInstanceOf(cz, "Boolean"))
571571 then {
572572 let dz = cz
573573 dz
574574 }
575575 else throw("fail to cast into Boolean")
576576 }
577577
578578
579579 func dF (dG) = {
580580 let cz = dG
581581 if ($isInstanceOf(cz, "(String, Int)"))
582582 then {
583583 let dH = cz
584584 dH
585585 }
586586 else throw("fail to cast into (String, Int)")
587587 }
588588
589589
590590 func dI (dJ) = {
591591 let cz = dJ
592592 if (("S" == cz))
593593 then cG
594594 else if (("M" == cz))
595595 then cH
596596 else if (("L" == cz))
597597 then cI
598598 else if (("XL" == cz))
599599 then cJ
600600 else if (("XXL" == cz))
601601 then cK
602602 else throw("Unknown land size")
603603 }
604604
605605
606606 func dK (dz) = isDefined(parseInt(dz))
607607
608608
609609 func dL () = "contractsBlocked"
610610
611611
612612 func dM (d) = ("lastTxIdByUser_" + d)
613613
614614
615615 func dN (dG,dO) = {
616616 let dP = pow(10, 0, dO, 0, 0, DOWN)
617617 let dQ = toString((dG % dP))
618618 let dR = drop(toString(dP), (1 + size(dQ)))
619619 (((toString((dG / dP)) + ".") + dR) + dQ)
620620 }
621621
622622
623623 func dS (dT,dU,dV) = {
624624 let dW = value(blockInfoByHeight(dU))
625625 let dX = sha256((value(dW.vrf) + dV))
626626 (toInt(dX) % dT)
627627 }
628628
629629
630630 let dY = {
631631 let cz = cx
632632 if ((base58'2W' == cz))
633633 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
634634 else if ((base58'2T' == cz))
635635 then this
636636 else throw("Unknown chain")
637637 }
638638
639639 let dZ = {
640640 let cz = cx
641641 if ((base58'2W' == cz))
642642 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
643643 else if ((base58'2T' == cz))
644644 then this
645645 else throw("Unknown chain")
646646 }
647647
648648 let ea = {
649649 let cz = cx
650650 if ((base58'2W' == cz))
651651 then if (cu)
652652 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
653653 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654654 else if ((base58'2T' == cz))
655655 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
656656 else throw("Unknown chain")
657657 }
658658
659659 let eb = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660660
661661 let ec = 300000
662662
663663 let ed = 5000000
664664
665665 let ee = 50
666666
667667 let ef = 10000000
668668
669669 let eg = {
670670 let cz = cx
671671 if ((base58'2W' == cz))
672672 then 252289527462
673673 else if ((base58'2T' == cz))
674674 then 2522895274
675675 else throw("Unknown chain")
676676 }
677677
678678 let eh = {
679679 let cz = cx
680680 if ((base58'2W' == cz))
681681 then 250000000
682682 else if ((base58'2T' == cz))
683683 then 250000000
684684 else throw("Unknown chain")
685685 }
686686
687687 let ei = 2500000000
688688
689689 let ej = toBigInt(5)
690690
691691 let ek = toBigInt(20)
692692
693693 let el = toBigInt((20 * 20))
694694
695695 let em = toBigInt(((20 * 20) * 20))
696696
697697 let en = toBigInt((((20 * 20) * 20) * 20))
698698
699699 let eo = toBigInt(((((20 * 20) * 20) * 20) * 20))
700700
701701 let ep = 500
702702
703703 func eq () = "nextLandNum"
704704
705705
706706 func er (es) = ("lcn_" + es)
707707
708708
709709 func et (eu) = ("la_" + eu)
710710
711711
712712 func ev (bq,bx) = ((("ilao_" + bq) + "_") + bx)
713713
714714
715715 func ew (eu) = ("lo_" + eu)
716716
717717
718718 func ex (es) = ("duckByCustomName_" + es)
719719
720720
721721 func ey (es) = ("accountByCustomName_" + es)
722722
723723
724724 func ez () = "oldiesList"
725725
726726
727727 let eA = 0
728728
729729 let eB = 1
730730
731731 let eC = 2
732732
733733 let eD = 0
734734
735735 let eE = 5
736736
737737 let eF = 6
738738
739739 let eG = 7
740740
741741 func eH (eu,dJ) = ((aD + eu) + dJ)
742742
743743
744744 func eI (eJ,eK) = {
745745 let eL = if ((eJ >= 0))
746746 then (((eJ + eK) - 1) / eK)
747747 else -((((-(eJ) + eK) - 1) / eK))
748748 (eL * cF)
749749 }
750750
751751
752752 func eM (eN,eO) = {
753753 let eP = (((((eO[0] + eO[1]) + eO[2]) + eO[3]) + eO[4]) + eO[5])
754754 if ((0 >= eP))
755755 then throw("Zero weights sum")
756756 else {
757757 let eQ = fraction(eN, cE, eP)
758758 func eR (eS,eT) = (eS :+ fraction(eT, eQ, cE))
759759
760760 let eU = eO
761761 let eV = size(eU)
762762 let eW = nil
763763 func eX (eY,eZ) = if ((eZ >= eV))
764764 then eY
765765 else eR(eY, eU[eZ])
766766
767767 func fa (eY,eZ) = if ((eZ >= eV))
768768 then eY
769769 else throw("List size exceeds 6")
770770
771771 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
772772 }
773773 }
774774
775775
776776 func fb (eN) = {
777777 let fc = split(value(getString(ds())), "_")
778778 if ((size(fc) != aG))
779779 then throw("Wrong proportions data")
780780 else {
781781 let fd = [parseIntValue(fc[0]), parseIntValue(fc[1]), parseIntValue(fc[2]), parseIntValue(fc[3]), parseIntValue(fc[4]), parseIntValue(fc[5])]
782782 eM(eN, fd)
783783 }
784784 }
785785
786786
787787 func fe (ff,fg,fh) = {
788788 let fi = fb(fh)
789789 func fj (eS,db) = {
790790 let fk = (parseIntValue(fg[db]) - fi[db])
791791 if ((0 > fk))
792792 then throw(((((("Not enough material idx=" + toString(db)) + ", you have ") + fg[db]) + ", but need ") + toString(fi[db])))
793793 else (eS :+ toString(fk))
794794 }
795795
796796 if (ff)
797797 then {
798798 let eU = cL
799799 let eV = size(eU)
800800 let eW = nil
801801 func eX (eY,eZ) = if ((eZ >= eV))
802802 then eY
803803 else fj(eY, eU[eZ])
804804
805805 func fa (eY,eZ) = if ((eZ >= eV))
806806 then eY
807807 else throw("List size exceeds 6")
808808
809809 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
810810 }
811811 else fg
812812 }
813813
814814
815815 func fl (fm,fn) = if ((fn == ""))
816816 then $Tuple2(fm, false)
817817 else {
818818 func fo (eS,fp) = {
819819 let fq = split(fp, ",")
820820 if ((size(fq) != 2))
821821 then throw("Incorrect format, should be index,amount")
822822 else {
823823 let db = parseIntValue(fq[0])
824824 if (if ((0 > db))
825825 then true
826826 else (db >= size(aT)))
827827 then throw("Unknown product idx")
828828 else {
829829 let fr = parseIntValue(fq[1])
830830 let fs = split(eS._1, (fq[0] + ":"))
831831 if ((size(fs) != 2))
832832 then throw((("You don't have " + aP[db]) + " equipped"))
833833 else {
834834 let ft = fs[1]
835835 let fu = if (dK(take(drop(ft, 1), 1)))
836836 then 2
837837 else 1
838838 let fv = parseIntValue(take(ft, fu))
839839 let fw = drop(ft, fu)
840840 let fx = if ((fv >= fr))
841841 then (fv - fr)
842842 else throw(((((("You equipped " + toString(fv)) + " of ") + aP[db]) + ", but tried to use ") + toString(fr)))
843843 $Tuple2(((((fs[0] + fq[0]) + ":") + toString(fx)) + fw), if (eS._2)
844844 then true
845845 else if (if ((db >= 6))
846846 then (8 >= db)
847847 else false)
848848 then (fx == 0)
849849 else false)
850850 }
851851 }
852852 }
853853 }
854854
855855 let eU = split(fn, "_")
856856 let eV = size(eU)
857857 let eW = $Tuple2(fm, false)
858858 func eX (eY,eZ) = if ((eZ >= eV))
859859 then eY
860860 else fo(eY, eU[eZ])
861861
862862 func fa (eY,eZ) = if ((eZ >= eV))
863863 then eY
864864 else throw("List size exceeds 10")
865865
866866 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
867867 }
868868
869869
870870 func fy (fz) = {
871871 let fA = if ((fz == ""))
872872 then nil
873873 else split_4C(fz, "_")
874874 func fB (eS,cp) = {
875875 let fC = (size(eS) / 8)
876876 let fv = if ((size(fA) > fC))
877877 then parseIntValue(fA[fC])
878878 else 0
879879 (eS + toBytes(fv))
880880 }
881881
882882 let eU = aT
883883 let eV = size(eU)
884884 let eW = base58''
885885 func eX (eY,eZ) = if ((eZ >= eV))
886886 then eY
887887 else fB(eY, eU[eZ])
888888
889889 func fa (eY,eZ) = if ((eZ >= eV))
890890 then eY
891891 else throw("List size exceeds 50")
892892
893893 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
894894 }
895895
896896
897897 func fD (fE) = {
898898 func fF (eS,cp) = {
899899 let fC = size(eS)
900900 let fG = take(drop(fE, (8 * fC)), 8)
901901 (eS :+ toString(toInt(fG)))
902902 }
903903
904904 makeString_2C({
905905 let eU = aT
906906 let eV = size(eU)
907907 let eW = nil
908908 func eX (eY,eZ) = if ((eZ >= eV))
909909 then eY
910910 else fF(eY, eU[eZ])
911911
912912 func fa (eY,eZ) = if ((eZ >= eV))
913913 then eY
914914 else throw("List size exceeds 50")
915915
916916 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
917917 }, "_")
918918 }
919919
920920
921921 func fH (fI,fJ) = {
922922 func fK (eS,fC) = {
923923 let fL = if ((size(fI) > (7 + fC)))
924924 then fI[(7 + fC)]
925925 else 0
926926 if ((parseIntValue(fJ[fC]) > (fI[fC] + fL)))
927927 then throw(("Requirement not satisfied: " + k[fC]))
928928 else true
929929 }
930930
931931 let eU = [0, 1, 2, 3, 4, 5, 6]
932932 let eV = size(eU)
933933 let eW = false
934934 func eX (eY,eZ) = if ((eZ >= eV))
935935 then eY
936936 else fK(eY, eU[eZ])
937937
938938 func fa (eY,eZ) = if ((eZ >= eV))
939939 then eY
940940 else throw("List size exceeds 7")
941941
942942 fa(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7)
943943 }
944944
945945
946946 func fM (fN,fA,fO,fI,fP,fQ) = {
947947 let fq = split(fN, ":")
948948 if ((size(fq) != 2))
949949 then throw("Incorrect format, should be index:amount")
950950 else if (if (!(fO))
951951 then (size(fq[0]) != 2)
952952 else false)
953953 then throw("Product idx should be 2 digits, zero padded")
954954 else {
955955 let fR = parseIntValue(fq[0])
956956 let fS = parseIntValue(fq[1])
957957 if (!(containsElement(aS, fR)))
958958 then throw((("Product '" + aP[fR]) + "' cannot be used for land defense"))
959959 else if ((0 > fS))
960960 then throw("Count can't be negative")
961961 else if ((fS > u))
962962 then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
963963 else if ((fS == 0))
964964 then $Tuple3(fA, fP, fQ)
965965 else {
966966 let fT = take(fA, (8 * fR))
967967 let fv = toInt(take(drop(fA, (8 * fR)), 8))
968968 let fw = drop(fA, (8 * (fR + 1)))
969969 let cp = split(aT[fR], "_")
970970 if (if (!(fO))
971971 then (fS > fv)
972972 else false)
973973 then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
974974 else {
975975 let fx = if (if (!(fO))
976976 then fH(fI, split(cp[aW], ","))
977977 else false)
978978 then (fv - fS)
979979 else (fv + fS)
980980 let fU = (eI(fx, aY) - eI(fv, aY))
981981 $Tuple3(((fT + toBytes(fx)) + fw), (fP + fU), (fQ - fU))
982982 }
983983 }
984984 }
985985 }
986986
987987
988988 func fV (fN,fA,fO,fW,fX,fY,fI) = {
989989 let fq = split(fN, ":")
990990 if ((size(fq) != 2))
991991 then throw("Incorrect format, should be index:amount")
992992 else if (if (!(fO))
993993 then (size(fq[0]) != 2)
994994 else false)
995995 then throw("Product idx should be 2 digits, zero padded")
996996 else {
997997 let fR = parseIntValue(fq[0])
998998 let fS = parseIntValue(fq[1])
999999 if (if ((0 > fR))
10001000 then true
10011001 else (fR >= size(aT)))
10021002 then throw("Unknown product idx")
10031003 else if ((0 > fS))
10041004 then throw("Count can't be negative")
10051005 else if ((fS > u))
10061006 then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
10071007 else if ((fS == 0))
10081008 then $Tuple2(fA, false)
10091009 else {
10101010 let fT = take(fA, (8 * fR))
10111011 let fv = toInt(take(drop(fA, (8 * fR)), 8))
10121012 let fw = drop(fA, (8 * (fR + 1)))
10131013 let cp = split(aT[fR], "_")
10141014 if (if (!(fO))
10151015 then (fS > fv)
10161016 else false)
10171017 then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
10181018 else {
10191019 let fZ = if (if (!(fO))
10201020 then fH(fI, split(cp[aW], ","))
10211021 else false)
10221022 then {
10231023 let ga = cp[aX]
10241024 if ((ga == ""))
10251025 then throw("Item cannot be equipped")
10261026 else {
10271027 let gb = parseIntValue(ga)
10281028 let gc = (gb / 100)
10291029 if ((fW != gc))
10301030 then throw("Segment incompatible")
10311031 else {
10321032 let gd = ((gb % 100) / 10)
10331033 if ((fX != gd))
10341034 then throw("Slot incompatible")
10351035 else {
10361036 let ge = (gb % 10)
10371037 if (if ((fY != 0))
10381038 then (ge > 1)
10391039 else false)
10401040 then throw("Big items should occupy slot 0")
10411041 else (ge > 1)
10421042 }
10431043 }
10441044 }
10451045 }
10461046 else false
10471047 $Tuple2(((fT + toBytes((fv + (if (fO)
10481048 then fS
10491049 else -(fS))))) + fw), fZ)
10501050 }
10511051 }
10521052 }
10531053 }
10541054
10551055
10561056 func gf (gg,gh,fO,fW,fX,gi) = if ((gg != ""))
10571057 then {
10581058 let gj = split(gg, ",")
10591059 if ((size(gj) > t))
10601060 then throw("Wrong slots format")
10611061 else {
10621062 let gk = gj[0]
10631063 let gl = if ((size(gj) > 1))
10641064 then gj[1]
10651065 else ""
10661066 if (if ((gk == ""))
10671067 then (gl == "")
10681068 else false)
10691069 then gh
10701070 else {
10711071 let gm = if ((gk != ""))
10721072 then fV(gk, gh, fO, fW, fX, 0, gi)
10731073 else $Tuple2(gh, false)
10741074 if ((gl != ""))
10751075 then if (gm._2)
10761076 then throw("Big item already occupies slot")
10771077 else fV(gl, gm._1, fO, fW, fX, 1, gi)._1
10781078 else gm._1
10791079 }
10801080 }
10811081 }
10821082 else gh
10831083
10841084
10851085 func gn (go,gp,fO,gi) = {
10861086 func fW (eS,gq) = {
10871087 let fC = eS._1
10881088 let fX = split(gq, ";")
10891089 if ((size(fX) != s))
10901090 then throw("Wrong segment format")
10911091 else {
10921092 let gr = fX[0]
10931093 let gs = fX[1]
10941094 if (if ((gr == ""))
10951095 then (gs == "")
10961096 else false)
10971097 then $Tuple2((fC + 1), eS._2)
10981098 else {
10991099 let gt = gf(gr, eS._2, fO, fC, 0, gi)
11001100 $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi))
11011101 }
11021102 }
11031103 }
11041104
11051105 ( let eU = go
11061106 let eV = size(eU)
11071107 let eW = $Tuple2(0, gp)
11081108 func eX (eY,eZ) = if ((eZ >= eV))
11091109 then eY
11101110 else fW(eY, eU[eZ])
11111111
11121112 func fa (eY,eZ) = if ((eZ >= eV))
11131113 then eY
11141114 else throw("List size exceeds 6")
11151115
11161116 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6))._2
11171117 }
11181118
11191119
11201120 func gu (go,gp,fP,fQ,fO,fI) = if ((3 > size(go)))
11211121 then throw("At least duck, mines and traps parts are required")
11221122 else {
11231123 func fW (eS,gq) = {
11241124 let fC = eS._1
11251125 if ((fC == 0))
11261126 then $Tuple4((fC + 1), eS._2, eS._3, eS._4)
11271127 else {
11281128 let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4)
11291129 $Tuple4((fC + 1), gv._1, gv._2, gv._3)
11301130 }
11311131 }
11321132
11331133 let gw = {
11341134 let eU = go
11351135 let eV = size(eU)
11361136 let eW = $Tuple4(0, gp, fP, fQ)
11371137 func eX (eY,eZ) = if ((eZ >= eV))
11381138 then eY
11391139 else fW(eY, eU[eZ])
11401140
11411141 func fa (eY,eZ) = if ((eZ >= eV))
11421142 then eY
11431143 else throw("List size exceeds 10")
11441144
11451145 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11461146 }
11471147 $Tuple3(gw._2, gw._3, gw._4)
11481148 }
11491149
11501150
11511151 func gx (B) = {
11521152 let gy = G(B)
11531153 let gz = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
11541154 let gA = gn(gz, eb, true, nil)
11551155 let gB = split(gz[q], ";")[1]
11561156 let ap = if ((gB == ""))
11571157 then 0
11581158 else {
11591159 let gC = split(gB, ",")[0]
11601160 if ((gC == ""))
11611161 then 0
11621162 else {
11631163 let fN = split(gC, ":")
11641164 let db = fN[0]
11651165 let gD = fN[1]
11661166 if (if (if (if (if ((db == "06"))
11671167 then true
11681168 else (db == "07"))
11691169 then true
11701170 else (db == "08"))
11711171 then (gD != "")
11721172 else false)
11731173 then (parseIntValue(gD) > 0)
11741174 else false)
11751175 then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
11761176 else 0
11771177 }
11781178 }
11791179 let gi = an(this, B, ap, true)
11801180 let gE = gn(gz, gA, false, gi)
11811181 (gE == gE)
11821182 }
11831183
11841184
11851185 func gF (gG,gH,gI,gJ) = if ((size(gG) != aG))
11861186 then throw("Wrong proportions data")
11871187 else {
11881188 func gK (eS,gL) = {
11891189 let fk = (parseIntValue(gG[gL]) + ((gJ * gH[gL]) * gI))
11901190 if ((0 > fk))
11911191 then throw(((((((("Panic! Pieces of type=" + toString(gL)) + ", sign=") + toString(gJ)) + ", terrainCounts[i]=") + toString(gH[gL])) + ", landSizeIndex=") + toString(gI)))
11921192 else (eS :+ toString(fk))
11931193 }
11941194
11951195 let eU = cL
11961196 let eV = size(eU)
11971197 let eW = nil
11981198 func eX (eY,eZ) = if ((eZ >= eV))
11991199 then eY
12001200 else gK(eY, eU[eZ])
12011201
12021202 func fa (eY,eZ) = if ((eZ >= eV))
12031203 then eY
12041204 else throw("List size exceeds 6")
12051205
12061206 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12071207 }
12081208
12091209
12101210 func gM (gH,gI,gJ) = {
12111211 let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
12121212 makeString(gF(gG, gH, gI, gJ), "_")
12131213 }
12141214
12151215
12161216 func gN (gO) = [(size(split(gO, "A")) - 1), (size(split(gO, "B")) - 1), (size(split(gO, "C")) - 1), (size(split(gO, "D")) - 1), (size(split(gO, "E")) - 1), (size(split(gO, "F")) - 1)]
12171217
12181218
12191219 func gP (gQ,gH,gR,gI,gS) = {
12201220 func gT (eS,gL) = {
12211221 let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
12221222 (eS :+ toString((parseIntValue(gQ[gL]) + gU)))
12231223 }
12241224
12251225 let fd = {
12261226 let eU = cL
12271227 let eV = size(eU)
12281228 let eW = nil
12291229 func eX (eY,eZ) = if ((eZ >= eV))
12301230 then eY
12311231 else gT(eY, eU[eZ])
12321232
12331233 func fa (eY,eZ) = if ((eZ >= eV))
12341234 then eY
12351235 else throw("List size exceeds 6")
12361236
12371237 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12381238 }
12391239 makeString(fd, "_")
12401240 }
12411241
12421242
12431243 func gV (gH,gR,gI,gS) = {
12441244 func gT (eS,gL) = {
12451245 let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
12461246 $Tuple2((eS._1 :+ gU), (eS._2 + gU))
12471247 }
12481248
12491249 let eU = cL
12501250 let eV = size(eU)
12511251 let eW = $Tuple2(nil, 0)
12521252 func eX (eY,eZ) = if ((eZ >= eV))
12531253 then eY
12541254 else gT(eY, eU[eZ])
12551255
12561256 func fa (eY,eZ) = if ((eZ >= eV))
12571257 then eY
12581258 else throw("List size exceeds 6")
12591259
12601260 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12611261 }
12621262
12631263
12641264 func gW (gX,gY,gZ,ha) = {
12651265 let hb = gZ._1
12661266 let hc = gZ._2
12671267 if ((hc == 0))
12681268 then $Tuple2(makeString(gX, "_"), makeString(gY, "_"))
12691269 else if ((ha >= hc))
12701270 then {
12711271 func hd (eS,gL) = (eS :+ toString((parseIntValue(gX[gL]) + hb[gL])))
12721272
12731273 let fd = {
12741274 let eU = cL
12751275 let eV = size(eU)
12761276 let eW = nil
12771277 func eX (eY,eZ) = if ((eZ >= eV))
12781278 then eY
12791279 else hd(eY, eU[eZ])
12801280
12811281 func fa (eY,eZ) = if ((eZ >= eV))
12821282 then eY
12831283 else throw("List size exceeds 6")
12841284
12851285 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12861286 }
12871287 $Tuple2(makeString(fd, "_"), makeString(gY, "_"))
12881288 }
12891289 else {
12901290 func he (eS,gL) = {
12911291 let hf = fraction(hb[gL], ha, hc)
12921292 $Tuple2((eS._1 :+ toString((parseIntValue(gX[gL]) + hf))), (eS._2 :+ toString(((parseIntValue(gY[gL]) + hb[gL]) - hf))))
12931293 }
12941294
12951295 let fd = {
12961296 let eU = cL
12971297 let eV = size(eU)
12981298 let eW = $Tuple2(nil, nil)
12991299 func eX (eY,eZ) = if ((eZ >= eV))
13001300 then eY
13011301 else he(eY, eU[eZ])
13021302
13031303 func fa (eY,eZ) = if ((eZ >= eV))
13041304 then eY
13051305 else throw("List size exceeds 6")
13061306
13071307 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13081308 }
13091309 $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_"))
13101310 }
13111311 }
13121312
13131313
13141314 func hg (hh) = if ((hh >= toBigInt(0)))
13151315 then hh
13161316 else -(hh)
13171317
13181318
13191319 let hi = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
13201320
13211321 func hj (dB,hk) = {
13221322 let hl = toInt((dB % ek))
13231323 let hm = if ((hk[0] > hl))
13241324 then "A"
13251325 else if ((hk[1] > hl))
13261326 then "B"
13271327 else if ((hk[2] > hl))
13281328 then "C"
13291329 else if ((hk[3] > hl))
13301330 then "D"
13311331 else if ((hk[4] > hl))
13321332 then "E"
13331333 else "F"
13341334 hm
13351335 }
13361336
13371337
13381338 func hn (ho,hp) = {
13391339 let hq = hi[hp]
13401340 func hr (eS,eT) = $Tuple2((((((eS._1 + hj(eS._2, hq)) + hj((eS._2 / ek), hq)) + hj((eS._2 / el), hq)) + hj((eS._2 / em), hq)) + hj((eS._2 / en), hq)), (eS._2 / eo))
13411341
13421342 let gw = {
13431343 let eU = [1, 2, 3, 4, 5]
13441344 let eV = size(eU)
13451345 let eW = $Tuple2("", (ho / ej))
13461346 func eX (eY,eZ) = if ((eZ >= eV))
13471347 then eY
13481348 else hr(eY, eU[eZ])
13491349
13501350 func fa (eY,eZ) = if ((eZ >= eV))
13511351 then eY
13521352 else throw("List size exceeds 5")
13531353
13541354 fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
13551355 }
13561356 gw._1
13571357 }
13581358
13591359
13601360 let hs = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
13611361
13621362 let ht = ["A", "B", "C", "D", "E", "F"]
13631363
13641364 func hu (hv,gI) = {
13651365 func hw (eS,dz) = {
13661366 let fC = eS._2
13671367 let hx = parseIntValue(dz)
13681368 let hh = if ((hx == 0))
13691369 then 0
13701370 else if ((hx >= (4 * gI)))
13711371 then (hx / gI)
13721372 else if ((hx > (3 * gI)))
13731373 then 3
13741374 else (((hx - 1) / gI) + 1)
13751375 $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh))
13761376 }
13771377
13781378 let gw = {
13791379 let eU = hv
13801380 let eV = size(eU)
13811381 let eW = $Tuple3(nil, 0, 0)
13821382 func eX (eY,eZ) = if ((eZ >= eV))
13831383 then eY
13841384 else hw(eY, eU[eZ])
13851385
13861386 func fa (eY,eZ) = if ((eZ >= eV))
13871387 then eY
13881388 else throw("List size exceeds 6")
13891389
13901390 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13911391 }
13921392 let hy = gw._1
13931393 let hz = value(indexOf(hy, max(hy)))
13941394 let hA = (gw._3 - 25)
13951395 func hB (eS,db) = {
13961396 let dG = if ((db == hz))
13971397 then (hy[db] - hA)
13981398 else hy[db]
13991399 let dR = if ((dG == 0))
14001400 then nil
14011401 else split(drop(toString(pow(10, 0, dG, 0, 0, DOWN)), 1), "")
14021402 let gb = ht[db]
14031403 func hC (hD,hE) = (hD :+ gb)
14041404
14051405 let hF = {
14061406 let eU = dR
14071407 let eV = size(eU)
14081408 let eW = nil
14091409 func hG (eY,eZ) = if ((eZ >= eV))
14101410 then eY
14111411 else hC(eY, eU[eZ])
14121412
14131413 func hH (eY,eZ) = if ((eZ >= eV))
14141414 then eY
14151415 else throw("List size exceeds 25")
14161416
14171417 hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
14181418 }
14191419 (eS ++ hF)
14201420 }
14211421
14221422 let fd = {
14231423 let eU = cL
14241424 let eV = size(eU)
14251425 let eW = nil
14261426 func hG (eY,eZ) = if ((eZ >= eV))
14271427 then eY
14281428 else hB(eY, eU[eZ])
14291429
14301430 func hH (eY,eZ) = if ((eZ >= eV))
14311431 then eY
14321432 else throw("List size exceeds 6")
14331433
14341434 hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
14351435 }
14361436 func hI (eS,fC) = (eS + fd[fC])
14371437
14381438 let eU = hs
14391439 let eV = size(eU)
14401440 let eW = ""
14411441 func hJ (eY,eZ) = if ((eZ >= eV))
14421442 then eY
14431443 else hI(eY, eU[eZ])
14441444
14451445 func hK (eY,eZ) = if ((eZ >= eV))
14461446 then eY
14471447 else throw("List size exceeds 25")
14481448
14491449 hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
14501450 }
14511451
14521452
14531453 func hL (hM) = {
14541454 let gv = split(valueOrElse(getString(hM), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
14551455 [toString(valueOrElse(parseInt(gv[bi]), 0)), if ((size(split(gv[bj], "_")) == aG))
14561456 then gv[bj]
14571457 else "0_0_0_0_0_0", if ((size(split(gv[bk], "_")) == aG))
14581458 then gv[bk]
14591459 else "0_0_0_0_0_0", gv[bl]]
14601460 }
14611461
14621462
14631463 func hN (hO) = {
14641464 let fq = split(hO, "_")
14651465 ((aJ * (parseIntValue(fq[1]) + 1)) * parseIntValue(fq[0]))
14661466 }
14671467
14681468
14691469 func hP (hQ) = {
14701470 let hR = hQ[bc]
14711471 func hS (eS,hT) = (eS + parseIntValue(hT))
14721472
14731473 func hU (eS,hT) = {
14741474 let db = eS._1
14751475 let eL = (((parseIntValue(hT) + aY) - 1) / aY)
14761476 $Tuple2((db + 1), (eS._2 + (eL * cF)))
14771477 }
14781478
14791479 let hV = {
14801480 let eU = split(hQ[ba], "_")
14811481 let eV = size(eU)
14821482 let eW = 0
14831483 func eX (eY,eZ) = if ((eZ >= eV))
14841484 then eY
14851485 else hS(eY, eU[eZ])
14861486
14871487 func fa (eY,eZ) = if ((eZ >= eV))
14881488 then eY
14891489 else throw("List size exceeds 6")
14901490
14911491 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
14921492 }
14931493 let hW = {
14941494 let eU = split(hQ[bb], "_")
14951495 let eV = size(eU)
14961496 let eW = 0
14971497 func hG (eY,eZ) = if ((eZ >= eV))
14981498 then eY
14991499 else hS(eY, eU[eZ])
15001500
15011501 func hH (eY,eZ) = if ((eZ >= eV))
15021502 then eY
15031503 else throw("List size exceeds 6")
15041504
15051505 hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
15061506 }
15071507 let hX = if ((hR == ""))
15081508 then 0
15091509 else ( let eU = split_4C(hR, "_")
15101510 let eV = size(eU)
15111511 let eW = $Tuple2(0, 0)
15121512 func hJ (eY,eZ) = if ((eZ >= eV))
15131513 then eY
15141514 else hU(eY, eU[eZ])
15151515
15161516 func hK (eY,eZ) = if ((eZ >= eV))
15171517 then eY
15181518 else throw("List size exceeds 50")
15191519
15201520 hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2
15211521 ((hV + hW) + hX)
15221522 }
15231523
15241524
15251525 func hY (hZ,ia,ib) = {
15261526 let hO = ((toString(ia) + "_") + toString(ib))
15271527 let ic = hN(hO)
15281528 let id = valueOrElse(getString(hZ), (hO + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
15291529 let ie = split_4C(id, ":")
15301530 let if = hP(ie)
15311531 let ig = if ((5 > size(ie)))
15321532 then makeString(["0", toString(if), toString((ic - if)), toString(ic)], "_")
15331533 else {
15341534 let ih = split(ie[bd], "_")
15351535 let ii = parseIntValue(ih[be])
15361536 let ij = if ((size(ih) > 1))
15371537 then parseIntValue(ih[bf])
15381538 else if
15391539 makeString([toString(ii), toString(ij), toString(((ic - ii) - ij)), toString(ic)], "_")
15401540 }
15411541 [ie[aZ], if ((size(split(ie[ba], "_")) == aG))
15421542 then ie[ba]
15431543 else "0_0_0_0_0_0", if ((size(split(ie[bb], "_")) == aG))
15441544 then ie[bb]
15451545 else "0_0_0_0_0_0", ie[bc], ig]
15461546 }
15471547
15481548
15491549 func ik (hQ) = {
15501550 let il = hP(hQ)
15511551 let im = parseIntValue(split(hQ[bd], "_")[be])
15521552 ((hN(hQ[aZ]) - il) - im)
15531553 }
15541554
15551555
15561556 func in (io,hQ,ip) = if ((size(io) != 3))
15571557 then throw("cargoListStr should contain exactly 2 ':' separators")
15581558 else {
15591559 let iq = split(io[0], "_")
15601560 let ir = split(io[1], "_")
15611561 let is = if ((io[2] == ""))
15621562 then nil
15631563 else split_4C(io[2], "_")
15641564 if ((size(iq) != aG))
15651565 then throw("All 6 resources should be passed")
15661566 else if ((size(ir) != aG))
15671567 then throw("All 6 materials should be passed")
15681568 else {
15691569 let ha = ik(hQ)
15701570 let it = split(hQ[ba], "_")
15711571 let iu = split(hQ[bb], "_")
15721572 let iv = if ((hQ[bc] == ""))
15731573 then nil
15741574 else split_4C(hQ[bc], "_")
15751575 let gY = split(ip[bj], "_")
15761576 let iw = split(ip[bk], "_")
15771577 let ix = if ((ip[bl] == ""))
15781578 then nil
15791579 else split_4C(ip[bl], "_")
15801580 func iy (eS,hT) = {
15811581 let gL = eS._1
15821582 let iz = parseIntValue(hT)
15831583 let iA = parseIntValue(it[gL])
15841584 let iB = parseIntValue(gY[gL])
15851585 if ((iz == 0))
15861586 then $Tuple4((gL + 1), (eS._2 :+ it[gL]), (eS._3 :+ gY[gL]), eS._4)
15871587 else if ((iz > 0))
15881588 then if ((iz > iB))
15891589 then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iB)) + " available"))
15901590 else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
15911591 else if ((-(iz) > iA))
15921592 then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iA)) + " available"))
15931593 else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
15941594 }
15951595
15961596 let fd = {
15971597 let eU = iq
15981598 let eV = size(eU)
15991599 let eW = $Tuple4(0, nil, nil, 0)
16001600 func eX (eY,eZ) = if ((eZ >= eV))
16011601 then eY
16021602 else iy(eY, eU[eZ])
16031603
16041604 func fa (eY,eZ) = if ((eZ >= eV))
16051605 then eY
16061606 else throw("List size exceeds 6")
16071607
16081608 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
16091609 }
16101610 func iC (eS,hT) = {
16111611 let gL = eS._1
16121612 let iz = parseIntValue(hT)
16131613 let iD = parseIntValue(iu[gL])
16141614 let iE = parseIntValue(iw[gL])
16151615 if ((iz == 0))
16161616 then $Tuple4((gL + 1), (eS._2 :+ iu[gL]), (eS._3 :+ iw[gL]), eS._4)
16171617 else if ((iz > 0))
16181618 then if ((iz > iE))
16191619 then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iE)) + " available"))
16201620 else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
16211621 else if ((-(iz) > iD))
16221622 then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iD)) + " available"))
16231623 else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
16241624 }
16251625
16261626 let gr = {
16271627 let eU = ir
16281628 let eV = size(eU)
16291629 let eW = $Tuple4(0, nil, nil, fd._4)
16301630 func hG (eY,eZ) = if ((eZ >= eV))
16311631 then eY
16321632 else iC(eY, eU[eZ])
16331633
16341634 func hH (eY,eZ) = if ((eZ >= eV))
16351635 then eY
16361636 else throw("List size exceeds 6")
16371637
16381638 hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
16391639 }
16401640 func iF (eS,hT) = {
16411641 let gL = eS._1
16421642 let iz = parseIntValue(hT)
16431643 let iG = if ((size(iv) > gL))
16441644 then parseIntValue(iv[gL])
16451645 else 0
16461646 let iH = if ((size(ix) > gL))
16471647 then parseIntValue(ix[gL])
16481648 else 0
16491649 if ((iz == 0))
16501650 then $Tuple4((gL + 1), (eS._2 :+ toString(iG)), (eS._3 :+ toString(iH)), eS._4)
16511651 else if ((iz > 0))
16521652 then if ((iz > iH))
16531653 then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iH)) + " available"))
16541654 else {
16551655 let fU = (eI((iG + iz), aY) - eI(iG, aY))
16561656 $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16571657 }
16581658 else if ((-(iz) > iG))
16591659 then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available"))
16601660 else {
16611661 let fU = (eI((iG + iz), aY) - eI(iG, aY))
16621662 $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16631663 }
16641664 }
16651665
16661666 let gv = if ((size(is) != 0))
16671667 then {
16681668 let eU = is
16691669 let eV = size(eU)
16701670 let eW = $Tuple4(0, nil, nil, gr._4)
16711671 func hJ (eY,eZ) = if ((eZ >= eV))
16721672 then eY
16731673 else iF(eY, eU[eZ])
16741674
16751675 func hK (eY,eZ) = if ((eZ >= eV))
16761676 then eY
16771677 else throw("List size exceeds 50")
16781678
16791679 hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
16801680 }
16811681 else $Tuple4(0, iv, ix, gr._4)
16821682 let iI = gv._4
16831683 if ((iI > ha))
16841684 then throw((((("Attempt to put total " + toString(iI)) + " stuff, but only ") + toString(ha)) + " warehouse space left"))
16851685 else $Tuple7(makeString(fd._2, "_"), makeString(gr._2, "_"), makeString_2C(gv._2, "_"), makeString(fd._3, "_"), makeString(gr._3, "_"), makeString_2C(gv._3, "_"), iI)
16861686 }
16871687 }
16881688
16891689
16901690 func iJ (iK,iL) = {
16911691 let bM = toString(iK)
16921692 let iM = hg(toBigInt(iL))
16931693 let iN = valueOrElse(getInteger(eq()), (ep + 1))
16941694 let eu = toString(iN)
16951695 let hp = toInt((iM % ej))
16961696 let gO = hn(iM, hp)
16971697 let du = aQ[hp]
16981698 let iO = Issue(eH(eu, "S"), makeString([eu, "S", gO, du], "_"), 1, 0, false)
16991699 let bq = calculateAssetId(iO)
17001700 let iP = toBase58String(bq)
17011701 $Tuple2([IntegerEntry(eq(), (iN + 1)), iO, StringEntry(et(eu), iP), StringEntry(bp(iP), bM), StringEntry(ew(eu), bM), IntegerEntry(bz(iP), 0), IntegerEntry(ev(iP, bM), 0), ScriptTransfer(iK, 1, bq)], $Tuple2(iP, du))
17021702 }
17031703
17041704
17051705 func iQ (bM,iR,iS) = if (!(sigVerify_8Kb(iR, iS, ea)))
17061706 then throw("signature does not match")
17071707 else {
17081708 let fq = split_4C(toUtf8String(iR), ";")
17091709 let iT = split_4C(fq[0], "|")
17101710 let iU = split(iT[eD], "_")
17111711 let iV = parseIntValue(iU[0])
17121712 let iW = parseIntValue(iU[1])
17131713 let iX = split(fq[1], ":")
17141714 let iY = iX[0]
17151715 let iZ = parseIntValue(iT[eE])
17161716 if (if ((iZ > (lastBlock.timestamp + ec)))
17171717 then true
17181718 else ((lastBlock.timestamp - ec) > iZ))
17191719 then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp)))
17201720 else {
17211721 let ja = iX[1]
17221722 let jb = valueOrElse(getString(dM(bM)), "")
17231723 if ((jb != ja))
17241724 then throw(((("Tx ids don't match! In state: " + jb) + ", in msg: ") + ja))
17251725 else {
17261726 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
17271727 let jc = A(B)
17281728 let jd = ah(valueOrElse(getInteger(E(B)), 0))
17291729 let je = valueOrElse(getInteger(jc), jd)
17301730 if ((je != iV))
17311731 then throw(((("oldHealth=" + toString(je)) + " from state does not match one from flight log=") + toString(iV)))
17321732 else if ((0 >= iV))
17331733 then throw("You can't fly with zero health")
17341734 else if (!(gx(B)))
17351735 then throw("Equipment incompatible")
17361736 else {
17371737 let jf = if ((size(iT) > eF))
17381738 then iT[eF]
17391739 else ""
17401740 let jg = if ((size(iT) > eG))
17411741 then iT[eG]
17421742 else ""
17431743 let jh = if (if ((iW > 0))
17441744 then (jf == "$")
17451745 else false)
17461746 then dA(invoke(dc, "sendUsdtPrize", [bM], nil))
17471747 else 0
17481748 $Tuple5(iW, B, jh, iY, jg)
17491749 }
17501750 }
17511751 }
17521752 }
17531753
17541754
17551755 func ji (Q,jj) = {
17561756 let ib = valueOrElse(getInteger(bz(Q)), 0)
17571757 let jk = valueOrElse(getInteger(bt(aF, Q)), 0)
17581758 let jl = (ib / 6)
17591759 let jm = (ib / 7)
17601760 ((aI + fraction(aI, ((ib + jl) + (2 * jm)), 5)) + fraction(aI, jk, (jj * 5)))
17611761 }
17621762
17631763
17641764 func jn (d,jo,jp) = {
17651765 let jq = if ((jo == eA))
17661766 then $Tuple2(jp, valueOrElse(getString(bI(d)), ""))
17671767 else {
17681768 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
17691769 let jr = valueOrElse(getString(bK(B)), aK)
17701770 let cg = split(value(jr), "_")
17711771 if ((cg[bn] != "L"))
17721772 then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
17731773 else $Tuple2(cg[bo], B)
17741774 }
17751775 let Q = jq._1
17761776 let js = jq._2
17771777 let jt = value(assetInfo(fromBase58String(Q)))
17781778 let ju = bs(Q)
17791779 let jv = valueOrErrorMessage(getInteger(ju), (("Land " + jt.name) + " is not staked"))
17801780 let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
17811781 if ((jw != d))
17821782 then throw((aD + " is not yours"))
17831783 else {
17841784 let jx = split(jt.description, "_")
17851785 $Tuple4(js, Q, jx, jv)
17861786 }
17871787 }
17881788
17891789
17901790 func jy (d,eJ,jo,jp) = if ((0 > eJ))
17911791 then throw("Negative amount")
17921792 else {
17931793 let gb = jn(d, jo, jp)
17941794 let dJ = gb._3[dj]
17951795 let gH = gN(gb._3[dk])
17961796 let gR = (lastBlock.timestamp - gb._4)
17971797 if ((0 > gR))
17981798 then throw(((("Saved timestamp is in future, saved = " + toString(gb._4)) + ", current = ") + toString(lastBlock.timestamp)))
17991799 else {
18001800 let jj = dI(dJ)
18011801 let jz = ji(gb._2, jj)
18021802 let jA = fraction(gR, (jz * jj), a)
18031803 if ((eJ > jA))
18041804 then throw(((("Not enough resources, available = " + toString(jA)) + ", requested = ") + toString(eJ)))
18051805 else {
18061806 let jB = fraction((jA - eJ), a, (jz * jj))
18071807 let jC = (lastBlock.timestamp - jB)
18081808 let ia = (jj / cG)
18091809 let gZ = gV(gH, (gR - jB), ia, jz)
18101810 let hZ = by(gb._2)
18111811 let ib = valueOrElse(getInteger(bz(gb._2)), 0)
18121812 let hQ = hY(hZ, ia, ib)
18131813 let ih = split(hQ[bd], "_")
18141814 let ha = parseIntValue(ih[bg])
18151815 if (if ((jo == eA))
18161816 then (eJ > ha)
18171817 else false)
18181818 then throw((("Only " + toString(ha)) + " space left in warehouse"))
18191819 else {
18201820 let hM = bJ(gb._1)
18211821 let ip = hL(hM)
18221822 let gY = split(ip[bj], "_")
18231823 let gX = split(hQ[ba], "_")
18241824 let jD = if ((jo == eA))
18251825 then $Tuple4(gP(gX, gH, (gR - jB), ia, jz), ip[bj], (parseIntValue(ih[bf]) + gZ._2), (parseIntValue(ih[bg]) - gZ._2))
18261826 else if ((jo == eB))
18271827 then $Tuple4(hQ[ba], gP(gY, gH, (gR - jB), ia, jz), parseIntValue(ih[bf]), parseIntValue(ih[bg]))
18281828 else {
18291829 let jE = gW(gX, gY, gZ, ha)
18301830 let jF = min([parseIntValue(ih[bg]), gZ._2])
18311831 $Tuple4(jE._1, jE._2, (parseIntValue(ih[bf]) + jF), (parseIntValue(ih[bg]) - jF))
18321832 }
18331833 let jG = jD._1
18341834 let jH = jD._2
18351835 let jI = jD._3
18361836 let jJ = jD._4
18371837 $Tuple5([IntegerEntry(bs(gb._2), jC), IntegerEntry(bv(aD, gb._2, d), jC)], hM, [ip[bi], jH, ip[bk], ip[bl]], hZ, [hQ[aZ], jG, hQ[bb], hQ[bc], makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")])
18381838 }
18391839 }
18401840 }
18411841 }
18421842
18431843
18441844 func jK (d,Q,jj,jo) = {
18451845 let ju = bs(Q)
18461846 let jv = value(getInteger(ju))
18471847 let jA = (fraction((lastBlock.timestamp - jv), ji(Q, jj), a) * jj)
18481848 jy(d, jA, jo, Q)
18491849 }
18501850
18511851
18521852 func jL (ff,iK,jM,Q) = {
18531853 let d = toString(iK)
18541854 let gb = jn(d, eC, Q)
18551855 let jj = dI(gb._3[dj])
18561856 let jN = bz(gb._2)
18571857 let jO = valueOrElse(getInteger(jN), 0)
18581858 if (if (!(cv))
18591859 then (jO >= 3)
18601860 else false)
18611861 then throw("Currently max infrastructure level = 3")
18621862 else {
18631863 let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2)
18641864 let am = (jO + 1)
18651865 if (if (cv)
18661866 then (am > jP)
18671867 else false)
18681868 then throw(("Currently max infrastructure level = " + toString(jP)))
18691869 else {
18701870 let jQ = fraction(ef, (jj * am), cG)
18711871 if (if (!(ff))
18721872 then (jM != jQ)
18731873 else false)
18741874 then throw(("Payment attached should be " + toString(jQ)))
18751875 else {
18761876 let hM = bJ(gb._1)
18771877 let ip = hL(hM)
18781878 let jR = split(ip[bk], "_")
18791879 let jS = fraction(cB, (jj * am), cG)
18801880 let jT = makeString(fe(ff, jR, jS), "_")
18811881 let jU = jK(d, gb._2, jj, eC)
18821882 let jV = jU._5
18831883 let jW = hN(jV[aZ])
18841884 let jX = makeString([split(jV[aZ], "_")[0], toString(am)], "_")
18851885 let jY = hN(jX)
18861886 let ih = split(jV[bd], "_")
18871887 let jZ = makeString([ih[be], ih[bf], toString(((parseIntValue(ih[bg]) + jY) - jW)), toString(jY)], "_")
18881888 $Tuple3(([IntegerEntry(jN, am), IntegerEntry(ev(gb._2, d), am), StringEntry(hM, makeString([ip[bi], jU._3[bj], jT, ip[bl]], ":")), StringEntry(jU._4, makeString([jX, jV[ba], jV[bb], jV[bc], jZ], ":"))] ++ jU._1), am, jS)
18891889 }
18901890 }
18911891 }
18921892 }
18931893
18941894
18951895 func ka (B,kb) = {
18961896 let kc = E(B)
18971897 let kd = D(B)
18981898 let ag = valueOrElse(getInteger(kd), 0)
18991899 let al = (ag + kb)
19001900 let ke = aj(valueOrElse(getInteger(kc), 0), al)
19011901 let kf = F(B)
19021902 $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
19031903 }
19041904
19051905
19061906 func kg (d,kb) = {
19071907 let kc = I(d)
19081908 let kd = H(d)
19091909 let ag = valueOrElse(getInteger(kd), 0)
19101910 let al = (ag + kb)
19111911 let ke = aj(valueOrElse(getInteger(kc), 0), al)
19121912 let kf = J(d)
19131913 $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
19141914 }
19151915
19161916
19171917 func kh (d) = {
19181918 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
19191919 let ki = bD(d)
19201920 let kj = getString(ki)
19211921 if (!(isDefined(kj)))
19221922 then throw("You are not eligible for ONBOARD artifact")
19231923 else {
19241924 let kk = bF(d)
19251925 let kl = getString(kk)
19261926 if (isDefined(kl))
19271927 then throw(("You already used your ONBOARD artifact on duck " + value(kl)))
19281928 else {
19291929 let km = bE(B)
19301930 let kn = getString(km)
19311931 if (isDefined(kn))
19321932 then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kn)))
19331933 else ([StringEntry(kk, B), StringEntry(km, d)] ++ ka(B, ad)._1)
19341934 }
19351935 }
19361936 }
19371937
19381938
19391939 func ko (d,jp) = {
19401940 let gb = jn(d, eC, jp)
19411941 let Q = gb._2
19421942 let jj = dI(gb._3[dj])
19431943 let kp = bt(aF, Q)
19441944 if ((valueOrElse(getInteger(kp), 0) > 0))
19451945 then throw("Presale artifact is already activated")
19461946 else if ((parseIntValue(gb._3[di]) > ep))
19471947 then throw((((aD + " ") + Q) + " is not eligible for presale artifact"))
19481948 else {
19491949 let jU = jK(d, Q, jj, eC)
19501950 (((jU._1 :+ IntegerEntry(kp, jj)) :+ StringEntry(jU._2, makeString(jU._3, ":"))) :+ StringEntry(jU._4, makeString(jU._5, ":")))
19511951 }
19521952 }
19531953
19541954
19551955 func kq (B) = {
19561956 let cf = valueOrElse(getInteger(dg, bQ), 0)
19571957 let jr = split(valueOrElse(getString(bK(B)), aK), "_")
19581958 let ay = lastBlock.timestamp
19591959 let ch = bZ(dg, cf)
19601960 let cb = ch[bV]
19611961 let cc = ch[bW]
19621962 if ((jr[bn] != "T"))
19631963 then false
19641964 else if (if (if ((parseIntValue(jr[bm]) == cf))
19651965 then (cc[bY] == "INPROGRESS")
19661966 else false)
19671967 then (parseIntValue(cb[bX]) > ay)
19681968 else false)
19691969 then throw("Your duck is taking part in the tournament")
19701970 else dE(invoke(this, "exitTournamentInternal", [B], nil))
19711971 }
19721972
19731973
19741974 func kr (B) = if (!(cw))
19751975 then false
19761976 else {
19771977 let jr = split(valueOrElse(getString(bK(B)), aK), "_")
19781978 let ay = lastBlock.timestamp
19791979 if ((jr[bn] != "D"))
19801980 then false
19811981 else {
19821982 let cj = parseIntValue(jr[bm])
19831983 let ck = parseIntValue(jr[bo])
19841984 if (if ((ay > (cj + aO)))
19851985 then (3 > ck)
19861986 else false)
19871987 then throw("Your duck is on delivery mission")
19881988 else dE(invoke(this, "exitDeliveryInternal", [B], nil))
19891989 }
19901990 }
19911991
19921992
19931993 func ks (B,kt,iW,ku) = {
19941994 let jr = split(valueOrElse(getString(bK(B)), aK), "_")
19951995 let ay = lastBlock.timestamp
19961996 let cj = parseIntValue(jr[bm])
19971997 let ck = parseIntValue(jr[bo])
19981998 let jw = valueOrErrorMessage(getString(bH(B)), "NFT duck is orphaned")
19991999 let kv = A(B)
20002000 let kw = getIntegerValue(kv)
20012001 let kx = if ((ck >= 3))
20022002 then {
20032003 let ky = invoke(dd, "sendDeliveryReward", [jw], nil)
20042004 if ((ky == ky))
20052005 then nil
20062006 else throw("Strict value is not equal to itself.")
20072007 }
20082008 else if (if (if (kt)
20092009 then (iW > 0)
20102010 else false)
20112011 then (ay > (cj + aO))
20122012 else false)
20132013 then throw("Your duck is still on delivery mission")
20142014 else {
20152015 let kz = valueOrElse(getInteger(dd, bP), 0)
20162016 let kA = invoke(dd, "updateDeliveryLocked", [(kz - aN)], nil)
20172017 if ((kA == kA))
20182018 then if ((0 >= kw))
20192019 then nil
20202020 else [IntegerEntry(U(B), (cj + b))]
20212021 else throw("Strict value is not equal to itself.")
20222022 }
20232023 let kB = getIntegerValue(K(B))
20242024 let kC = getStringValue(L(B))
20252025 $Tuple4(kx, [IntegerEntry(kv, kB), StringEntry(bK(B), kC), StringEntry("autoexitReason", ku)], kC, kB)
20262026 }
20272027
20282028
20292029 func kD (kE,am,kF,d,kG,kH) = {
20302030 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
20312031 if (kq(B))
20322032 then throw("mergeInternal_checkTournament")
20332033 else if (kr(B))
20342034 then throw("mergeInternal_checkDelivery")
20352035 else {
20362036 func kI (eS,Q) = {
20372037 let jt = value(assetInfo(fromBase58String(Q)))
20382038 let ju = bs(Q)
20392039 let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked"))
20402040 let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
20412041 if ((jw != d))
20422042 then throw((aD + " is not yours"))
20432043 else {
20442044 let jx = split(jt.description, "_")
20452045 let du = jx[dl]
20462046 if (if ((eS._3 != ""))
20472047 then (eS._3 != du)
20482048 else false)
20492049 then throw("Lands should be on the same continent to merge")
20502050 else {
20512051 let dJ = jx[dj]
20522052 let kJ = eS._1
20532053 let gL = valueOrErrorMessage(indexOf(kJ, dJ), "You haven't passed all the lands needed")
20542054 let kK = (take(kJ, gL) + drop(kJ, (gL + 1)))
20552055 let jj = dI(dJ)
20562056 let kL = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
20572057 let ib = valueOrElse(getInteger(bz(Q)), 0)
20582058 let kM = {
20592059 let cz = dJ
20602060 if (("S" == cz))
20612061 then 3
20622062 else if (("M" == cz))
20632063 then 4
20642064 else if (("L" == cz))
20652065 then 5
20662066 else if (("XL" == cz))
20672067 then 6
20682068 else throw("Only S, M, L, XL can merge")
20692069 }
20702070 if ((ib != kM))
20712071 then throw("All lands should be maxed to merge")
20722072 else {
20732073 let eu = jx[di]
20742074 let gH = gN(jx[dk])
20752075 let gR = (lastBlock.timestamp - jv)
20762076 if ((0 > gR))
20772077 then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp)))
20782078 else {
20792079 let jz = ji(Q, jj)
20802080 let ia = (jj / cG)
20812081 let jH = gP(split(eS._4, "_"), gH, gR, ia, jz)
20822082 let fc = gF(eS._6, gH, ia, -1)
20832083 let kN = gF(eS._10, gH, ia, -1)
20842084 let hv = gF(eS._9, gH, ia, 1)
20852085 let kO = eS._7
20862086 let db = indexOf(kO, Q)
20872087 if (!(isDefined(db)))
20882088 then throw(("Your staked lands don't contain " + Q))
20892089 else {
20902090 let kP = br(Q)
20912091 let kQ = valueOrElse(getString(kP), "")
20922092 $Tuple10(kK, kL, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kP)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kQ != ""))
20932093 then [DeleteEntry(er(kQ))]
20942094 else nil)), fc, removeByIndex(kO, value(db)), (eS._8 + jj), hv, kN)
20952095 }
20962096 }
20972097 }
20982098 }
20992099 }
21002100 }
21012101
21022102 let hM = bJ(B)
21032103 let ip = hL(hM)
21042104 let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
21052105 let kR = dv(d)
21062106 let kS = getString(kR)
21072107 let kT = if (isDefined(kS))
21082108 then split_51C(value(kS), "_")
21092109 else nil
21102110 let kU = split(value(assetInfo(fromBase58String(kG[0]))).description, "_")[dl]
21112111 let kV = split(valueOrElse(getString(dt(kU)), "0_0_0_0_0_0"), "_")
21122112 let fd = {
21132113 let eU = kG
21142114 let eV = size(eU)
21152115 let eW = $Tuple10(kF, 0, "", ip[bj], nil, gG, kT, 0, split("0_0_0_0_0_0", "_"), kV)
21162116 func eX (eY,eZ) = if ((eZ >= eV))
21172117 then eY
21182118 else kI(eY, eU[eZ])
21192119
21202120 func fa (eY,eZ) = if ((eZ >= eV))
21212121 then eY
21222122 else throw("List size exceeds 5")
21232123
21242124 fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
21252125 }
21262126 let du = fd._3
21272127 let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du))
21282128 let gO = hu(fd._9, (dI(kE) / cG))
21292129 let iN = valueOrElse(getInteger(eq()), (ep + 1))
21302130 let kW = toString(iN)
21312131 let iO = Issue(eH(kW, kE), makeString([kW, kE, gO, du], "_"), 1, 0, false)
21322132 let bq = calculateAssetId(iO)
21332133 let kX = toBase58String(bq)
21342134 let jT = makeString(fe((kH > 0), split(ip[bk], "_"), kH), "_")
21352135 let kY = dw(d)
21362136 let kZ = valueOrElse(getInteger(kY), 0)
21372137 $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0))
21382138 then StringEntry(kR, makeString_11C(fd._7, "_"))
21392139 else DeleteEntry(kR))) :+ IntegerEntry(kY, if ((fd._8 > kZ))
21402140 then 0
21412141 else (kZ - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kW), kX)) :+ StringEntry(bp(kX), d)) :+ StringEntry(ew(kW), d)) :+ IntegerEntry(bt(aF, kX), fd._2)) :+ IntegerEntry(bz(kX), am)) :+ IntegerEntry(ev(kX, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kX], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kX)
21422142 }
21432143 }
21442144
21452145
21462146 func la (d,kG) = kD("M", 3, "SSSS", d, kG, 0)
21472147
21482148
21492149 func lb (d,kG) = kD("L", 4, "SMM", d, kG, (cB * 4))
21502150
21512151
21522152 func lc (d,kG) = kD("XL", 5, "SSSML", d, kG, (cB * 47))
21532153
21542154
21552155 func ld (d,kG) = kD("XXL", 6, "LXL", d, kG, (cB * 54))
21562156
21572157
21582158 func le (d,kG) = {
21592159 let cz = size(kG)
21602160 if ((4 == cz))
21612161 then la(d, kG)
21622162 else if ((3 == cz))
21632163 then lb(d, kG)
21642164 else if ((5 == cz))
21652165 then lc(d, kG)
21662166 else if ((2 == cz))
21672167 then ld(d, kG)
21682168 else throw("Unknown merge")
21692169 }
21702170
21712171
21722172 func lf (bM) = {
21732173 let lg = getString(bI(bM))
21742174 if (if (cw)
21752175 then isDefined(lg)
21762176 else false)
21772177 then {
21782178 let B = value(lg)
21792179 let lh = bK(B)
21802180 let cg = split(valueOrElse(getString(lh), aK), "_")
21812181 let cj = parseIntValue(cg[bm])
21822182 if (if ((cg[bn] != "D"))
21832183 then true
21842184 else (lastBlock.timestamp > (cj + aO)))
21852185 then nil
21862186 else {
21872187 let kv = A(B)
21882188 if ((parseIntValue(cg[bo]) >= 3))
21892189 then {
21902190 let ky = invoke(dd, "sendDeliveryReward", [bM], nil)
21912191 if ((ky == ky))
21922192 then nil
21932193 else throw("Strict value is not equal to itself.")
21942194 }
21952195 else (({
21962196 let kz = valueOrElse(getInteger(dd, bP), 0)
21972197 let kA = invoke(dd, "updateDeliveryLocked", [(kz - aN)], nil)
21982198 if ((kA == kA))
21992199 then if ((0 >= getIntegerValue(kv)))
22002200 then nil
22012201 else {
22022202 let li = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
22032203 if ((li == li))
22042204 then nil
22052205 else throw("Strict value is not equal to itself.")
22062206 }
22072207 else throw("Strict value is not equal to itself.")
22082208 } :+ IntegerEntry(kv, getIntegerValue(K(B)))) :+ StringEntry(lh, getStringValue(L(B))))
22092209 }
22102210 }
22112211 else nil
22122212 }
22132213
22142214
22152215 func lj (gL) = if (if ((gL.originCaller != dc))
22162216 then valueOrElse(getBoolean(dL()), false)
22172217 else false)
22182218 then throw("Contracts are under maintenance")
22192219 else {
22202220 let bM = toString(gL.originCaller)
22212221 (lf(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
22222222 }
22232223
22242224
22252225 func lk (gL) = if (if ((gL.originCaller != dc))
22262226 then valueOrElse(getBoolean(dL()), false)
22272227 else false)
22282228 then throw("Contracts are under maintenance")
22292229 else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))]
22302230
22312231
22322232 @Callable(gL)
22332233 func constructorV1 (ll) = if ((gL.caller != this))
22342234 then throw("Permission denied")
22352235 else [StringEntry(cW(), ll)]
22362236
22372237
22382238
22392239 @Callable(gL)
22402240 func saveInteger (cO,eJ) = if ((gL.caller != this))
22412241 then throw("saveInteger is not public method")
22422242 else [IntegerEntry(cO, eJ)]
22432243
22442244
22452245
22462246 @Callable(gL)
22472247 func setBlocked (lm) = if ((gL.caller != this))
22482248 then throw("permission denied")
22492249 else [BooleanEntry(dL(), lm)]
22502250
22512251
22522252
22532253 @Callable(gL)
22542254 func stakeLand () = {
22552255 let ln = lj(gL)
22562256 if ((size(gL.payments) != 1))
22572257 then throw("Exactly one payment required")
22582258 else {
22592259 let lo = value(gL.payments[0])
22602260 let bq = value(lo.assetId)
22612261 let cN = toString(gL.caller)
22622262 if ((lo.amount != 1))
22632263 then throw((("NFT " + aD) + " token should be attached as payment"))
22642264 else {
22652265 let jt = value(assetInfo(bq))
22662266 if ((jt.issuer != this))
22672267 then throw("Unknown issuer of token")
22682268 else if (!(contains(jt.name, aD)))
22692269 then throw((("Only NFT " + aD) + " tokens are accepted"))
22702270 else {
22712271 let lp = drop(jt.name, 4)
22722272 let eu = if (contains(lp, "XXL"))
22732273 then dropRight(lp, 3)
22742274 else if (contains(lp, "XL"))
22752275 then dropRight(lp, 2)
22762276 else dropRight(lp, 1)
22772277 if (!(isDefined(parseInt(eu))))
22782278 then throw(("Cannot parse land number from " + jt.name))
22792279 else {
22802280 let Q = toBase58String(bq)
22812281 let ju = bs(Q)
22822282 if (isDefined(getInteger(ju)))
22832283 then throw((("NFT " + jt.name) + " is already staked"))
22842284 else {
22852285 let jx = split(jt.description, "_")
22862286 let gH = gN(jx[dk])
22872287 let jj = dI(jx[dj])
22882288 let ia = (jj / cG)
22892289 let fc = gM(gH, ia, 1)
22902290 let lq = dt(jx[dl])
22912291 let kV = split(valueOrElse(getString(lq), "0_0_0_0_0_0"), "_")
22922292 let lr = makeString(gF(kV, gH, ia, 1), "_")
22932293 let kR = dv(cN)
22942294 let kS = getString(kR)
22952295 let kO = if (isDefined(kS))
22962296 then split_51C(value(kS), "_")
22972297 else nil
22982298 if (containsElement(kO, Q))
22992299 then throw(("Your staked lands already contain " + Q))
23002300 else if ((size(kO) >= aH))
23012301 then throw((("Your already staked max (" + toString(aH)) + ") lands"))
23022302 else {
23032303 let ib = valueOrElse(getInteger(bz(Q)), 0)
23042304 let kY = dw(cN)
23052305 let ls = valueOrElse(getInteger(kY), 0)
23062306 let lt = invoke(df, "onStakeUnstakeLand", [cN], nil)
23072307 $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kR, makeString_11C((kO :+ Q), "_")), IntegerEntry(kY, (ls + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(lq, lr)] ++ ln), lt)
23082308 }
23092309 }
23102310 }
23112311 }
23122312 }
23132313 }
23142314 }
23152315
23162316
23172317
23182318 @Callable(gL)
23192319 func unstakeLand (jp) = {
23202320 let ln = lj(gL)
23212321 if ((size(gL.payments) != 0))
23222322 then throw("No payments required")
23232323 else {
23242324 let d = toString(gL.caller)
23252325 let gb = jn(d, eB, jp)
23262326 let Q = gb._2
23272327 let jx = gb._3
23282328 let kR = dv(d)
23292329 let gH = gN(jx[dk])
23302330 let jj = dI(jx[dj])
23312331 let ia = (jj / cG)
23322332 let fc = gM(gH, ia, -1)
23332333 let lq = dt(jx[dl])
23342334 let kV = split(valueOrElse(getString(lq), "0_0_0_0_0_0"), "_")
23352335 let lr = makeString(gF(kV, gH, ia, -1), "_")
23362336 let jU = jK(d, Q, jj, eB)
23372337 let kO = split_51C(valueOrElse(getString(kR), ""), "_")
23382338 let db = indexOf(kO, Q)
23392339 if (!(isDefined(db)))
23402340 then throw(("Your staked lands don't contain " + Q))
23412341 else {
23422342 let ay = lastBlock.timestamp
23432343 let lu = valueOrElse(getInteger(de, bL(d)), 0)
23442344 if ((lu >= ay))
23452345 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lu)))
23462346 else {
23472347 let lv = (valueOrElse(getInteger(df, c(d)), 0) + cC)
23482348 if ((lv > ay))
23492349 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lv)))
23502350 else {
23512351 let kY = dw(d)
23522352 let kZ = valueOrElse(getInteger(kY), 0)
23532353 let lw = if ((jj > kZ))
23542354 then 0
23552355 else (kZ - jj)
23562356 let lt = invoke(df, "onStakeUnstakeLand", [d], nil)
23572357 $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(lq, lr), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kO) > 1))
23582358 then StringEntry(kR, makeString_11C(removeByIndex(kO, value(db)), "_"))
23592359 else DeleteEntry(kR), IntegerEntry(kY, lw)] ++ ln), lt)
23602360 }
23612361 }
23622362 }
23632363 }
23642364 }
23652365
23662366
23672367
23682368 @Callable(gL)
23692369 func stakeDuck () = {
23702370 let ln = lj(gL)
23712371 if ((size(gL.payments) != 1))
23722372 then throw("Exactly one payment required")
23732373 else {
23742374 let lo = value(gL.payments[0])
23752375 let bq = value(lo.assetId)
23762376 let cN = toString(gL.caller)
23772377 if ((lo.amount != 1))
23782378 then throw((("NFT " + aE) + " token should be attached as payment"))
23792379 else {
23802380 let jt = value(assetInfo(bq))
23812381 if (if ((jt.issuer != dY))
23822382 then (jt.issuer != dZ)
23832383 else false)
23842384 then throw((("Unknown issuer of " + aE) + " token"))
23852385 else if (!(contains(jt.name, aE)))
23862386 then throw((("Only NFT " + aE) + " tokens are accepted"))
23872387 else {
23882388 let lx = toBase58String(bq)
23892389 let ju = bs(lx)
23902390 if (isDefined(getInteger(ju)))
23912391 then throw((("NFT " + jt.name) + " is already staked"))
23922392 else if (isDefined(getString(bI(cN))))
23932393 then throw(("You already staked one duck: " + jt.name))
23942394 else {
23952395 let lh = bK(lx)
23962396 let ce = getString(lh)
23972397 let hM = bJ(lx)
23982398 let ly = getString(hM)
23992399 let jc = A(lx)
24002400 let jd = ah(valueOrElse(getInteger(E(lx)), 0))
24012401 let kw = valueOrElse(getInteger(jc), jd)
24022402 ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lx), cN), StringEntry(bI(cN), lx)] ++ (if (isDefined(ce))
24032403 then nil
24042404 else ([StringEntry(lh, aK)] ++ (if (isDefined(ly))
24052405 then nil
24062406 else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kw)) ++ ln)))))
24072407 }
24082408 }
24092409 }
24102410 }
24112411 }
24122412
24132413
24142414
24152415 @Callable(gL)
24162416 func unstakeDuck (lx) = {
24172417 let ln = lj(gL)
24182418 if ((size(gL.payments) != 0))
24192419 then throw("No payments required")
24202420 else {
24212421 let bq = fromBase58String(lx)
24222422 let cN = toString(gL.caller)
24232423 let jt = value(assetInfo(bq))
24242424 let ju = bs(lx)
24252425 if (!(isDefined(getInteger(ju))))
24262426 then throw((("NFT " + jt.name) + " is not staked"))
24272427 else if (!(isDefined(getString(bI(cN)))))
24282428 then throw((("The duck " + jt.name) + " is not staked"))
24292429 else {
24302430 let jw = valueOrErrorMessage(getString(bH(lx)), (("NFT " + jt.name) + " is orphaned"))
24312431 if ((jw != cN))
24322432 then throw("Staked NFT is not yours")
24332433 else if (kq(lx))
24342434 then throw("unstakeDuck_checkTournament")
24352435 else if (kr(lx))
24362436 then throw("unstakeDuck_checkDelivery")
24372437 else {
24382438 let jc = A(lx)
24392439 let jd = ah(valueOrElse(getInteger(E(lx)), 0))
24402440 let at = valueOrElse(getInteger(jc), jd)
24412441 if ((jd > at))
24422442 then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking"))
24432443 else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lx)), DeleteEntry(bH(lx)), DeleteEntry(bv(aE, lx, cN)), DeleteEntry(bI(cN))] ++ ln)
24442444 }
24452445 }
24462446 }
24472447 }
24482448
24492449
24502450
24512451 @Callable(gL)
24522452 func claimRes (eJ,lz) = {
24532453 let ln = lj(gL)
24542454 if ((size(gL.payments) != 0))
24552455 then throw("No payments required")
24562456 else {
24572457 let d = toString(gL.originCaller)
24582458 let fk = jy(d, eJ, eB, lz)
24592459 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
24602460 $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ ln), fk._3[bj])
24612461 }
24622462 }
24632463
24642464
24652465
24662466 @Callable(gL)
24672467 func claimResToWH (eJ,lz) = {
24682468 let ln = lj(gL)
24692469 if ((size(gL.payments) != 0))
24702470 then throw("No payments required")
24712471 else {
24722472 let d = toString(gL.originCaller)
24732473 let fk = jy(d, eJ, eA, lz)
24742474 $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ ln), fk._5[ba])
24752475 }
24762476 }
24772477
24782478
24792479
24802480 @Callable(gL)
24812481 func flight (iR,iS) = {
24822482 let ln = lk(gL)
24832483 if ((size(gL.payments) != 0))
24842484 then throw("No payments required")
24852485 else {
24862486 let bM = toString(gL.caller)
24872487 let hq = iQ(bM, iR, iS)
24882488 let iW = hq._1
24892489 let B = hq._2
24902490 let lh = bK(B)
24912491 let jr = valueOrElse(getString(lh), aK)
24922492 let iY = hq._4
24932493 if ((iY == jr))
24942494 then throw("You can't fly to the same location")
24952495 else {
24962496 let cs = split(iY, "_")
24972497 let lA = (cs[bn] == "T")
24982498 let lB = (cs[bn] == "D")
24992499 let gy = G(B)
25002500 let lC = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
25012501 let lD = fl(lC, hq._5)
25022502 let lE = lD._1
25032503 let lF = lD._2
25042504 let lG = if (!(cn(dg, jr)))
25052505 then if (!(cl(iY)))
25062506 then cq(jr, iY, 5)
25072507 else if ((iW > 0))
25082508 then $Tuple2(iY, iW)
25092509 else $Tuple2(jr, 0)
25102510 else if (cd(dg, jr))
25112511 then if (!(cd(dg, iY)))
25122512 then throw("Your duck is taking part in the tournament")
25132513 else {
25142514 let lH = parseIntValue(cs[bo])
25152515 let lI = split(jr, "_")
25162516 let cf = valueOrElse(getInteger(dg, bQ), 0)
25172517 if ((lH != (parseIntValue(lI[bo]) + 1)))
25182518 then cq(jr, iY, 7)
25192519 else if ((iW > 0))
25202520 then {
25212521 let lJ = valueOrElse(getInteger(dg, bU(cf, B)), 0)
25222522 let lK = if ((lH > lJ))
25232523 then invoke(dg, "saveDuckResult", [B, lH], nil)
25242524 else unit
25252525 if ((lK == lK))
25262526 then $Tuple2(iY, iW)
25272527 else throw("Strict value is not equal to itself.")
25282528 }
25292529 else $Tuple2(jr, 0)
25302530 }
25312531 else if (!(ci(jr)))
25322532 then {
25332533 let lL = dF(invoke(this, "autoExitDelivery", [B, iW, if (lB)
25342534 then "10"
25352535 else "11"], nil))
25362536 if ((lL == lL))
25372537 then if (lB)
25382538 then lL
25392539 else if ((iW > 0))
25402540 then $Tuple2(iY, iW)
25412541 else $Tuple2(lL._1, 0)
25422542 else throw("Strict value is not equal to itself.")
25432543 }
25442544 else if (!(lB))
25452545 then throw("Your duck is taking part in delivery")
25462546 else if (!(ci(iY)))
25472547 then cq(jr, iY, 13)
25482548 else {
25492549 let lH = parseIntValue(cs[bo])
25502550 let lI = split(jr, "_")
25512551 if ((lH != (parseIntValue(lI[bo]) + 1)))
25522552 then cq(jr, iY, 14)
25532553 else if (if ((iW > 0))
25542554 then (3 > lH)
25552555 else false)
25562556 then $Tuple2(iY, iW)
25572557 else {
25582558 let lL = dF(invoke(this, "autoExitDelivery", [B, iW, "16<"], nil))
25592559 if ((lL == lL))
25602560 then lL
25612561 else throw("Strict value is not equal to itself.")
25622562 }
25632563 }
25642564 let lM = lG._1
25652565 let lN = lG._2
25662566 $Tuple2(((([StringEntry(lh, lM), StringEntry(gy, lE), IntegerEntry(A(B), iW)] ++ ln) ++ (if (lF)
25672567 then [StringEntry(M(B), "0_0_0_0_0")]
25682568 else nil)) ++ ka(B, if ((iW > 0))
25692569 then W
25702570 else X)._1), hq._3)
25712571 }
25722572 }
25732573 }
25742574
25752575
25762576
25772577 @Callable(gL)
25782578 func heal (lO,lP,lQ) = {
25792579 let ln = lj(gL)
25802580 if (if (if ((0 > lO))
25812581 then true
25822582 else (0 > lP))
25832583 then true
25842584 else (0 > lQ))
25852585 then throw("Quantity cannot be negative")
25862586 else {
25872587 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
25882588 if (kq(B))
25892589 then throw("heal_checkTournament")
25902590 else if (kr(B))
25912591 then throw("heal_checkDelivery")
25922592 else {
25932593 let lR = [lO, lP, lQ]
25942594 let jc = A(B)
25952595 let jd = ah(valueOrElse(getInteger(E(B)), 0))
25962596 let lS = valueOrElse(getInteger(jc), jd)
25972597 if ((lS >= jd))
25982598 then throw((("HP should be < " + toString(jd)) + " to heal"))
25992599 else {
26002600 let hM = bJ(B)
26012601 let ip = hL(hM)
26022602 let lT = if ((ip[bl] == ""))
26032603 then nil
26042604 else split_4C(ip[bl], "_")
26052605 func lU (eS,cp) = {
26062606 let dB = eS._2
26072607 let hh = if ((size(lT) > dB))
26082608 then parseIntValue(lT[dB])
26092609 else 0
26102610 if ((3 > dB))
26112611 then {
26122612 let lV = lR[dB]
26132613 if ((lV > hh))
26142614 then throw(((("You have only " + toString(hh)) + " of ") + aP[dB]))
26152615 else $Tuple3((eS._1 :+ toString((hh - lV))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lV)))
26162616 }
26172617 else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3)
26182618 }
26192619
26202620 let fk = {
26212621 let eU = aT
26222622 let eV = size(eU)
26232623 let eW = $Tuple3(nil, 0, 0)
26242624 func eX (eY,eZ) = if ((eZ >= eV))
26252625 then eY
26262626 else lU(eY, eU[eZ])
26272627
26282628 func fa (eY,eZ) = if ((eZ >= eV))
26292629 then eY
26302630 else throw("List size exceeds 50")
26312631
26322632 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
26332633 }
26342634 let lW = min([jd, (lS + fk._3)])
26352635 $Tuple2((([IntegerEntry(jc, lW), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ ln) ++ ka(B, (ae * ((lO + lP) + lQ)))._1), lW)
26362636 }
26372637 }
26382638 }
26392639 }
26402640
26412641
26422642
26432643 @Callable(gL)
26442644 func healES () = {
26452645 let ln = lj(gL)
26462646 if ((size(gL.payments) != 1))
26472647 then throw("Exactly one payment required")
26482648 else {
26492649 let lo = value(gL.payments[0])
26502650 if ((lo.assetId != cy))
26512651 then throw("Allowed USDT payment only!")
26522652 else {
26532653 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
26542654 if (kq(B))
26552655 then throw("healES_checkTournament")
26562656 else if (kr(B))
26572657 then throw("healES_checkDelivery")
26582658 else {
26592659 let jc = A(B)
26602660 let jd = ah(valueOrElse(getInteger(E(B)), 0))
26612661 let lS = valueOrElse(getInteger(jc), jd)
26622662 if ((lS > 0))
26632663 then throw("HP should be 0 to call Emergency Service")
26642664 else {
26652665 let hM = bJ(B)
26662666 let ip = hL(hM)
26672667 let lT = if ((ip[bl] == ""))
26682668 then nil
26692669 else split_4C(ip[bl], "_")
26702670 let lX = if ((size(lT) > 0))
26712671 then parseIntValue(lT[0])
26722672 else 0
26732673 let lY = if ((size(lT) > 1))
26742674 then parseIntValue(lT[1])
26752675 else 0
26762676 let lZ = if ((size(lT) > 2))
26772677 then parseIntValue(lT[2])
26782678 else 0
26792679 if (if (if ((lX > 0))
26802680 then true
26812681 else (lY > 0))
26822682 then true
26832683 else (lZ > 0))
26842684 then throw("You have to use own Medical Kit")
26852685 else {
26862686 let ma = getString(dd, bN())
26872687 let mb = if (isDefined(ma))
26882688 then split_4C(value(ma), "_")
26892689 else nil
26902690 let mc = if ((size(mb) > 0))
26912691 then parseIntValue(mb[0])
26922692 else 0
26932693 if ((0 >= mc))
26942694 then throw("There are no Medical Kits L1 at Emergency Service storage")
26952695 else {
26962696 let lW = (lS + parseIntValue(split(aT[0], "_")[aV]))
26972697 let md = makeString([toString((mc - 1)), removeByIndex(mb, 0)], "_")
26982698 let cp = split(aT[0], "_")
26992699 let me = co(cp)
27002700 let mf = fraction((me * aM), aL, (cF * aY))
27012701 if ((lo.amount != mf))
27022702 then throw(("Payment attached should be " + toString(mf)))
27032703 else {
27042704 let fk = dx(invoke(dd, "updateEsStorage", [md], [AttachedPayment(cy, mf)]))
27052705 $Tuple2(((ln :+ IntegerEntry(jc, lW)) ++ ka(B, Y)._1), fk)
27062706 }
27072707 }
27082708 }
27092709 }
27102710 }
27112711 }
27122712 }
27132713 }
27142714
27152715
27162716
27172717 @Callable(gL)
27182718 func updateBackpack (B,mg) = if ((gL.caller != dd))
27192719 then throw("permission denied")
27202720 else $Tuple2([StringEntry(bJ(B), mg)], mg)
27212721
27222722
27232723
27242724 @Callable(gL)
27252725 func commitForRandom () = {
27262726 let ln = lj(gL)
27272727 let mh = (height + dq)
27282728 let d = toString(gL.caller)
27292729 $Tuple2(([IntegerEntry(dr(d), mh)] ++ ln), mh)
27302730 }
27312731
27322732
27332733
27342734 @Callable(gL)
27352735 func buySLand () = {
27362736 let ln = lj(gL)
27372737 if ((size(gL.payments) != 1))
27382738 then throw("Exactly one payment required")
27392739 else {
27402740 let lo = value(gL.payments[0])
27412741 if ((lo.assetId != cy))
27422742 then throw("Allowed USDT payment only!")
27432743 else if ((lo.amount != eh))
27442744 then throw(("Payment attached should be " + toString(eh)))
27452745 else {
27462746 let fk = iJ(gL.caller, gL.transactionId)
27472747 let mi = dA(invoke(dh, "burnAcres", [ei], nil))
27482748 $Tuple2((((fk._1 :+ ScriptTransfer(dd, lo.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ ln), $Tuple2(fk._2._1, mi))
27492749 }
27502750 }
27512751 }
27522752
27532753
27542754
27552755 @Callable(gL)
27562756 func expedition (iR,iS) = {
27572757 let ln = lj(gL)
27582758 if ((size(gL.payments) != 0))
27592759 then throw("No payments required")
27602760 else {
27612761 let bM = toString(gL.caller)
27622762 let hq = iQ(bM, iR, iS)
27632763 let B = hq._2
27642764 let jc = A(B)
27652765 let hM = bJ(B)
27662766 let ip = hL(hM)
27672767 let jR = split(ip[bk], "_")
27682768 let jT = makeString(fe(true, jR, eg), "_")
27692769 let gy = G(B)
27702770 let lC = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
27712771 let mj = fl(lC, hq._5)
27722772 let lE = mj._1
27732773 let lF = mj._2
27742774 let mk = iJ(gL.caller, gL.transactionId)
27752775 let iP = mk._2._1
27762776 let fk = if ((0 >= hq._1))
27772777 then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lE)], "", 0)
27782778 else $Tuple3((mk._1 ++ (if (lF)
27792779 then [StringEntry(M(B), "0_0_0_0_0")]
27802780 else ((((nil :+ StringEntry(bK(B), makeString([mk._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lE)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
27812781 if (kq(B))
27822782 then throw("expedition_checkTournament")
27832783 else if (kr(B))
27842784 then throw("expedition_checkDelivery")
27852785 else {
27862786 let mi = dA(invoke(dh, "burnAcres", [ei], nil))
27872787 $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ ln), $Tuple3(fk._2, fk._3, mi))
27882788 }
27892789 }
27902790 }
27912791
27922792
27932793
27942794 @Callable(gL)
27952795 func buySLandForAcres () = {
27962796 let ln = lj(gL)
27972797 if ((size(gL.payments) != 1))
27982798 then throw("exactly 1 payment must be attached")
27992799 else {
28002800 let lo = gL.payments[0]
28012801 let fr = lo.amount
28022802 if (if (!(isDefined(lo.assetId)))
28032803 then true
28042804 else (value(lo.assetId) != dp))
28052805 then throw("ACRES payments only!")
28062806 else if ((fr != ei))
28072807 then throw(("Payment attached should be " + toString(ei)))
28082808 else {
28092809 let fk = iJ(gL.caller, gL.transactionId)
28102810 let mi = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
28112811 $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ ln), $Tuple2(fk._2._1, mi))
28122812 }
28132813 }
28142814 }
28152815
28162816
28172817
28182818 @Callable(gL)
28192819 func upgradeInfra (Q) = {
28202820 let ln = lj(gL)
28212821 if ((size(gL.payments) != 0))
28222822 then throw("No payments required")
28232823 else {
28242824 let fk = jL(true, gL.caller, 0, Q)
28252825 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
28262826 $Tuple2(((fk._1 ++ ln) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
28272827 }
28282828 }
28292829
28302830
28312831
28322832 @Callable(gL)
28332833 func activateArtifact (ml,mm) = {
28342834 let ln = lj(gL)
28352835 if ((size(gL.payments) != 0))
28362836 then throw("No payments required")
28372837 else {
28382838 let d = toString(gL.caller)
28392839 let fk = {
28402840 let cz = ml
28412841 if (("PRESALE" == cz))
28422842 then ko(d, mm)
28432843 else if (("ONBOARD" == cz))
28442844 then kh(d)
28452845 else throw("Unknown artifact")
28462846 }
28472847 (fk ++ ln)
28482848 }
28492849 }
28502850
28512851
28522852
28532853 @Callable(gL)
28542854 func mergeLands (kG) = {
28552855 let ln = lj(gL)
28562856 if ((size(gL.payments) != 0))
28572857 then throw("No payments required")
28582858 else {
28592859 let fk = le(toString(gL.caller), kG)
28602860 $Tuple2(((fk._1 ++ ln) ++ kg(toString(gL.caller), ac)._1), fk._2)
28612861 }
28622862 }
28632863
28642864
28652865
28662866 @Callable(gL)
28672867 func cargoExchange (mn,Q) = {
28682868 let ln = lj(gL)
28692869 if ((size(gL.payments) != 0))
28702870 then throw("No payments required")
28712871 else {
28722872 let io = split_4C(mn, ":")
28732873 let d = toString(gL.originCaller)
28742874 let jt = value(assetInfo(fromBase58String(Q)))
28752875 let ju = bs(Q)
28762876 if (!(isDefined(getInteger(ju))))
28772877 then throw((jt.name + " is not staked"))
28782878 else {
28792879 let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
28802880 if ((jw != d))
28812881 then throw((aD + " is not yours"))
28822882 else {
28832883 let ia = (dI(split(jt.description, "_")[dj]) / cG)
28842884 let ib = valueOrElse(getInteger(bz(Q)), 0)
28852885 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
28862886 let jr = valueOrElse(getString(bK(B)), aK)
28872887 let cg = split(value(jr), "_")
28882888 if ((cg[bn] != "L"))
28892889 then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
28902890 else if ((cg[bo] != Q))
28912891 then throw(("Duck should be on the land " + Q))
28922892 else {
28932893 let hZ = by(Q)
28942894 let hQ = hY(hZ, ia, ib)
28952895 let hM = bJ(B)
28962896 let ip = hL(hM)
28972897 let fk = in(io, hQ, ip)
28982898 let ih = split(hQ[bd], "_")
28992899 let jI = (parseIntValue(ih[bf]) + fk._7)
29002900 let jJ = (parseIntValue(ih[bg]) - fk._7)
29012901 ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ ln)
29022902 }
29032903 }
29042904 }
29052905 }
29062906 }
29072907
29082908
29092909
29102910 @Callable(gL)
29112911 func saveWarehouse (id,Q) = if ((gL.caller != dd))
29122912 then throw("Access denied")
29132913 else {
29142914 let hZ = by(Q)
29152915 let ie = split_4C(id, ":")
29162916 if ((size(ie) != 5))
29172917 then throw("warehouse string should contain 4 ':' separators")
29182918 else {
29192919 let mo = split(ie[bd], "_")[be]
29202920 let jI = hP(ie)
29212921 let mp = hN(ie[aZ])
29222922 let jJ = ((mp - parseIntValue(mo)) - jI)
29232923 let mq = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mo, toString(jI), toString(jJ), toString(mp)], "_")], ":")
29242924 $Tuple2([StringEntry(hZ, mq)], mq)
29252925 }
29262926 }
29272927
29282928
29292929
29302930 @Callable(gL)
29312931 func fixWarehouseFormat (Q) = if ((gL.caller != dc))
29322932 then throw("Access denied")
29332933 else {
29342934 let hZ = by(Q)
29352935 let jt = value(assetInfo(fromBase58String(Q)))
29362936 let ia = (dI(split(jt.description, "_")[dj]) / cG)
29372937 let ib = valueOrElse(getInteger(bz(Q)), 0)
29382938 let ie = hY(hZ, ia, ib)
29392939 let mo = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
29402940 let jI = hP(ie)
29412941 let mp = hN(ie[aZ])
29422942 let jJ = ((mp - mo) - jI)
29432943 let mq = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mo), toString(jI), toString(jJ), toString(mp)], "_")], ":")
29442944 $Tuple2([StringEntry(hZ, mq)], mq)
29452945 }
29462946
29472947
29482948
29492949 @Callable(gL)
29502950 func fixContinentProportions (kG) = if ((gL.caller != dc))
29512951 then throw("Access denied")
29522952 else {
29532953 func mr (eS,ms) = (eS :+ valueOrElse(getString(dt(ms)), "0_0_0_0_0_0"))
29542954
29552955 let gv = {
29562956 let eU = aQ
29572957 let eV = size(eU)
29582958 let eW = nil
29592959 func eX (eY,eZ) = if ((eZ >= eV))
29602960 then eY
29612961 else mr(eY, eU[eZ])
29622962
29632963 func fa (eY,eZ) = if ((eZ >= eV))
29642964 then eY
29652965 else throw("List size exceeds 5")
29662966
29672967 fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
29682968 }
29692969 func mt (eS,Q) = {
29702970 let jt = value(assetInfo(fromBase58String(Q)))
29712971 let jx = split(jt.description, "_")
29722972 let ia = (dI(jx[dj]) / cG)
29732973 let ms = jx[dl]
29742974 let gH = gN(jx[dk])
29752975 let hp = value(indexOf(aQ, ms))
29762976 let kV = split(eS[hp], "_")
29772977 let mu = makeString(gF(kV, gH, ia, 1), "_")
29782978 let cz = ms
29792979 if (("Americas" == cz))
29802980 then [mu, eS[1], eS[2], eS[3], eS[4]]
29812981 else if (("Europe" == cz))
29822982 then [eS[0], mu, eS[2], eS[3], eS[4]]
29832983 else if (("Asia" == cz))
29842984 then [eS[0], eS[1], mu, eS[3], eS[4]]
29852985 else if (("Africa" == cz))
29862986 then [eS[0], eS[1], eS[2], mu, eS[4]]
29872987 else if (("Oceania" == cz))
29882988 then [eS[0], eS[1], eS[2], eS[3], mu]
29892989 else throw("wrong continent")
29902990 }
29912991
29922992 let fd = {
29932993 let eU = kG
29942994 let eV = size(eU)
29952995 let eW = gv
29962996 func hG (eY,eZ) = if ((eZ >= eV))
29972997 then eY
29982998 else mt(eY, eU[eZ])
29992999
30003000 func hH (eY,eZ) = if ((eZ >= eV))
30013001 then eY
30023002 else throw("List size exceeds 100")
30033003
30043004 hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
30053005 }
30063006 $Tuple2([StringEntry(dt("Americas"), fd[0]), StringEntry(dt("Europe"), fd[1]), StringEntry(dt("Asia"), fd[2]), StringEntry(dt("Africa"), fd[3]), StringEntry(dt("Oceania"), fd[4])], 0)
30073007 }
30083008
30093009
30103010
30113011 @Callable(gL)
30123012 func fixStakedPieces (cN) = if ((gL.caller != dc))
30133013 then throw("Access denied")
30143014 else {
30153015 let kZ = if ((cN == ""))
30163016 then 0
30173017 else {
30183018 let kS = getString(ao, dv(cN))
30193019 let kO = if (isDefined(kS))
30203020 then split_51C(value(kS), "_")
30213021 else nil
30223022 func mv (eS,Q) = {
30233023 let jt = value(assetInfo(fromBase58String(Q)))
30243024 let dJ = split(jt.description, "_")[dj]
30253025 (eS + dI(dJ))
30263026 }
30273027
30283028 let eU = kO
30293029 let eV = size(eU)
30303030 let eW = 0
30313031 func eX (eY,eZ) = if ((eZ >= eV))
30323032 then eY
30333033 else mv(eY, eU[eZ])
30343034
30353035 func fa (eY,eZ) = if ((eZ >= eV))
30363036 then eY
30373037 else throw("List size exceeds 100")
30383038
30393039 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
30403040 }
30413041 $Tuple2([IntegerEntry(dw(cN), kZ)], kZ)
30423042 }
30433043
30443044
30453045
30463046 @Callable(gL)
30473047 func setCustomName (bq,kQ,bu) = {
30483048 let ln = lj(gL)
30493049 if ((size(gL.payments) != 1))
30503050 then throw("Exactly one payment required")
30513051 else {
30523052 let lo = value(gL.payments[0])
30533053 if ((lo.assetId != cy))
30543054 then throw("Allowed USDT payment only!")
30553055 else if ((lo.amount != ed))
30563056 then throw(("Payment should be " + toString(ed)))
30573057 else if (contains(kQ, "__"))
30583058 then throw(("Name should not contain '__': " + kQ))
30593059 else if ((size(kQ) > ee))
30603060 then throw(("Name too long, maxLength=" + toString(ee)))
30613061 else {
30623062 let d = toString(gL.originCaller)
30633063 let mw = {
30643064 let cz = bu
30653065 if (("ACCOUNT" == cz))
30663066 then {
30673067 let mx = ey(kQ)
30683068 let my = getString(mx)
30693069 if (isDefined(my))
30703070 then throw(("Name already registered: " + kQ))
30713071 else {
30723072 let mz = bC(d)
30733073 let mA = getString(mz)
30743074 let mB = if (isDefined(mA))
30753075 then [DeleteEntry(ey(value(mA)))]
30763076 else nil
30773077 (((mB :+ StringEntry(mz, kQ)) :+ StringEntry(mx, d)) ++ kg(d, Z)._1)
30783078 }
30793079 }
30803080 else if (("LAND" == cz))
30813081 then {
30823082 let jt = value(assetInfo(fromBase58String(bq)))
30833083 let ju = bs(bq)
30843084 if (!(isDefined(getInteger(ju))))
30853085 then throw((jt.name + " is not staked"))
30863086 else {
30873087 let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned"))
30883088 if ((jw != d))
30893089 then throw((aD + " is not yours"))
30903090 else {
30913091 let mx = er(kQ)
30923092 let my = getString(mx)
30933093 if (isDefined(my))
30943094 then throw(("Name already registered: " + kQ))
30953095 else {
30963096 let mC = br(bq)
30973097 let mA = getString(mC)
30983098 let mB = if (isDefined(mA))
30993099 then [DeleteEntry(er(value(mA)))]
31003100 else nil
31013101 (((mB :+ StringEntry(mC, kQ)) :+ StringEntry(mx, bq)) ++ kg(d, Z)._1)
31023102 }
31033103 }
31043104 }
31053105 }
31063106 else if (("DUCK" == cz))
31073107 then {
31083108 let jt = value(assetInfo(fromBase58String(bq)))
31093109 let ju = bs(bq)
31103110 if (if (!(isDefined(getInteger(ju))))
31113111 then true
31123112 else !(isDefined(getString(bI(d)))))
31133113 then throw((jt.name + " is not staked"))
31143114 else {
31153115 let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned"))
31163116 if ((jw != d))
31173117 then throw((aE + " is not yours"))
31183118 else {
31193119 let mx = ex(kQ)
31203120 let my = getString(mx)
31213121 if (isDefined(my))
31223122 then throw(("Name already registered: " + kQ))
31233123 else {
31243124 let mC = bB(bq)
31253125 let mA = getString(mC)
31263126 let mB = if (isDefined(mA))
31273127 then [DeleteEntry(ex(value(mA)))]
31283128 else nil
31293129 (((mB :+ StringEntry(mC, kQ)) :+ StringEntry(mx, bq)) ++ ka(bq, Z)._1)
31303130 }
31313131 }
31323132 }
31333133 }
31343134 else throw("Unknown entity type")
31353135 }
31363136 $Tuple2(((mw :+ ScriptTransfer(dd, lo.amount, cy)) ++ ln), 0)
31373137 }
31383138 }
31393139 }
31403140
31413141
31423142
31433143 @Callable(gL)
31443144 func setReferrals (mD,mE) = if ((gL.callerPublicKey != ea))
31453145 then throw("Permission denied")
31463146 else {
31473147 let ln = lj(gL)
31483148 if ((size(gL.payments) != 0))
31493149 then throw("No payments required")
31503150 else if (!(isDefined(addressFromString(mD))))
31513151 then throw(("Invalid address: " + mD))
31523152 else if (!(isDefined(addressFromString(mE))))
31533153 then throw(("Invalid address: " + mE))
31543154 else {
31553155 let mF = ez()
31563156 let mG = getString(mF)
31573157 let mH = if (isDefined(mG))
31583158 then split_4C(value(mG), "_")
31593159 else nil
31603160 if (containsElement(mH, mE))
31613161 then throw((mE + " is not newbie (already has referrals)"))
31623162 else {
31633163 let ki = bD(mE)
31643164 let kj = getString(ki)
31653165 if (if (isDefined(kj))
31663166 then isDefined(addressFromString(value(kj)))
31673167 else false)
31683168 then throw(((mE + " already has refBy: ") + value(kj)))
31693169 else {
31703170 let mI = bG(mD)
31713171 let mJ = getString(mI)
31723172 let mK = if (isDefined(mJ))
31733173 then split_4C(value(mJ), "_")
31743174 else nil
31753175 if (containsElement(mK, mE))
31763176 then throw((((mD + " already contains ") + mE) + " within referrals"))
31773177 else {
31783178 let mL = makeString_2C((mK :+ mE), "_")
31793179 let mM = if (containsElement(mH, mD))
31803180 then value(mG)
31813181 else makeString_2C((mH :+ mD), "_")
31823182 $Tuple2(([StringEntry(ki, mD), StringEntry(mI, mL), StringEntry(mF, mM)] ++ ln), 0)
31833183 }
31843184 }
31853185 }
31863186 }
31873187 }
31883188
31893189
31903190
31913191 @Callable(gL)
31923192 func distributePoints (mN,mO,mP,mQ,mR) = {
31933193 let ln = lj(gL)
31943194 if ((size(gL.payments) != 0))
31953195 then throw("No payments required")
31963196 else {
31973197 let d = toString(gL.originCaller)
31983198 let mS = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
31993199 let mT = dA(mS[1])
32003200 let mU = if ((0 >= mT))
32013201 then $Tuple2(0, nil)
32023202 else {
32033203 let kb = dA(invoke(df, "takeWlgXp", [d], nil))
32043204 if ((kb == kb))
32053205 then $Tuple2(mT, [IntegerEntry(I(d), dA(mS[0])), IntegerEntry(H(d), dA(mS[2]))])
32063206 else throw("Strict value is not equal to itself.")
32073207 }
32083208 let mV = mU._1
32093209 let mW = mU._2
32103210 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
32113211 let mX = J(d)
32123212 let mY = (valueOrElse(getInteger(mX), 0) + mV)
32133213 let mZ = F(B)
32143214 let na = valueOrElse(getInteger(mZ), 0)
32153215 let nb = (mY + na)
32163216 let nc = ((((mN + mO) + mP) + mQ) + mR)
32173217 if ((nc > nb))
32183218 then throw((("There are only " + toString(nb)) + " free points to distribute"))
32193219 else {
32203220 let nd = C(B)
32213221 let ar = split(valueOrElse(getString(nd), "0_0_0_0_0"), "_")
32223222 let ne = (mY - nc)
32233223 $Tuple2((([IntegerEntry(mX, if ((0 > ne))
32243224 then 0
32253225 else ne), IntegerEntry(mZ, if ((0 > ne))
32263226 then (na + ne)
32273227 else na), StringEntry(nd, makeString([toString((parseIntValue(ar[l]) + mN)), toString((parseIntValue(ar[m]) + mO)), toString((parseIntValue(ar[n]) + mP)), toString((parseIntValue(ar[o]) + mQ)), toString((parseIntValue(ar[p]) + mR))], "_"))] ++ ln) ++ mW), 0)
32283228 }
32293229 }
32303230 }
32313231
32323232
32333233
32343234 @Callable(gL)
32353235 func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ))
32363236
32373237
32383238
32393239 @Callable(gL)
32403240 func splitByGlobalAndLocalWeightsREADONLY (nf,ng,gO) = {
32413241 let gH = gN(gO)
32423242 $Tuple2(nil, $Tuple2(fb(nf), eM(ng, gH)))
32433243 }
32443244
32453245
32463246
32473247 @Callable(gL)
32483248 func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":"))
32493249
32503250
32513251
32523252 @Callable(gL)
32533253 func getWarehouseREADONLY (Q) = {
32543254 let jt = value(assetInfo(fromBase58String(Q)))
32553255 let ia = (dI(split(jt.description, "_")[dj]) / cG)
32563256 let ib = valueOrElse(getInteger(bz(Q)), 0)
32573257 $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":"))
32583258 }
32593259
32603260
32613261
32623262 @Callable(gL)
32633263 func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller)))
32643264 then throw("Access denied")
32653265 else $Tuple2(lj(gL), 42)
32663266
32673267
32683268
32693269 @Callable(gL)
32703270 func updateDuckStats (B,kb) = if ((gL.caller != dd))
32713271 then throw("Access denied")
32723272 else ka(B, kb)
32733273
32743274
32753275
32763276 @Callable(gL)
32773277 func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller)))
32783278 then throw("Access denied")
32793279 else kg(d, kb)
32803280
32813281
32823282
32833283 @Callable(gL)
32843284 func equipDuck (nh) = {
32853285 let ln = lj(gL)
32863286 if ((size(gL.payments) != 0))
32873287 then throw("No payments required")
32883288 else {
32893289 let d = toString(gL.originCaller)
32903290 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
32913291 if (kq(B))
32923292 then throw("equipDuck_checkTournament")
32933293 else if (kr(B))
32943294 then throw("equipDuck_checkDelivery")
32953295 else {
32963296 let gy = G(B)
32973297 let ni = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32983298 let hM = bJ(B)
32993299 let ip = hL(hM)
33003300 let lE = split(nh, "_")
33013301 if ((size(lE) != r))
33023302 then throw("Wrong equipment string")
33033303 else {
33043304 let gA = gn(ni, fy(ip[bl]), true, nil)
33053305 let gB = split(lE[q], ";")[1]
33063306 let ap = if ((gB == ""))
33073307 then 0
33083308 else {
33093309 let gC = split(gB, ",")[0]
33103310 if ((gC == ""))
33113311 then 0
33123312 else {
33133313 let fN = split(gC, ":")
33143314 let db = fN[0]
33153315 let gD = fN[1]
33163316 if (if (if (if (if ((db == "06"))
33173317 then true
33183318 else (db == "07"))
33193319 then true
33203320 else (db == "08"))
33213321 then (gD != "")
33223322 else false)
33233323 then (parseIntValue(gD) > 0)
33243324 else false)
33253325 then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
33263326 else 0
33273327 }
33283328 }
33293329 let gi = an(this, B, ap, true)
33303330 let gE = gn(lE, gA, false, gi)
33313331 let nj = fD(gE)
33323332 $Tuple2(([StringEntry(gy, nh), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], nj], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ ln), 0)
33333333 }
33343334 }
33353335 }
33363336 }
33373337
33383338
33393339
33403340 @Callable(gL)
33413341 func fortificateLand (Q,nk) = {
33423342 let ln = lj(gL)
33433343 if ((size(gL.payments) != 0))
33443344 then throw("No payments required")
33453345 else {
33463346 let d = toString(gL.originCaller)
33473347 let B = valueOrElse(getString(bI(d)), "")
33483348 let fI = an(this, B, 0, false)
33493349 let nl = bA(Q)
33503350 let nm = split(valueOrElse(getString(nl), ":0_15:0_18:0"), "_")
33513351 let jt = value(assetInfo(fromBase58String(Q)))
33523352 let ia = (dI(split(jt.description, "_")[dj]) / cG)
33533353 let ib = valueOrElse(getInteger(bz(Q)), 0)
33543354 let hZ = by(Q)
33553355 let ie = hY(hZ, ia, ib)
33563356 let nn = split(ie[bd], "_")
33573357 let no = parseIntValue(nn[bf])
33583358 let np = parseIntValue(nn[bg])
33593359 let nq = split(nk, "_")
33603360 let nr = gu(nm, fy(ie[bc]), no, np, true, nil)
33613361 let gA = nr._1
33623362 let ns = nr._2
33633363 let nt = nr._3
33643364 let nu = gu(nq, gA, ns, nt, false, fI)
33653365 let gE = nu._1
33663366 let nv = nu._2
33673367 let nw = nu._3
33683368 let nj = fD(gE)
33693369 let jZ = makeString([nn[be], toString(nv), toString(nw), nn[bh]], "_")
33703370 $Tuple2(([StringEntry(nl, nk), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], nj, jZ], ":"))] ++ ln), 0)
33713371 }
33723372 }
33733373
33743374
33753375
33763376 @Callable(gL)
33773377 func initDuckTourAttempt (B) = if ((gL.caller != dg))
33783378 then throw("Access denied")
33793379 else {
33803380 let jc = A(B)
33813381 let jd = ah(valueOrElse(getInteger(E(B)), 0))
33823382 let kw = valueOrElse(getInteger(jc), jd)
33833383 let nx = bK(B)
33843384 let jr = valueOrElse(getString(nx), aK)
33853385 let cf = valueOrElse(getInteger(dg, bQ), 0)
33863386 let ny = (toString(cf) + "_T_0")
33873387 $Tuple2([IntegerEntry(K(B), kw), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nx, ny)], ny)
33883388 }
33893389
33903390
33913391
33923392 @Callable(gL)
33933393 func breakAttempt () = {
33943394 let ln = lj(gL)
33953395 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
33963396 let nx = bK(B)
33973397 let jr = valueOrElse(getString(nx), aK)
33983398 if ((split(jr, "_")[bn] != "T"))
33993399 then throw("Your duck is not in the tournament")
34003400 else {
34013401 let kB = getIntegerValue(K(B))
34023402 let kC = getStringValue(L(B))
34033403 $Tuple2(((ln :+ IntegerEntry(A(B), kB)) :+ StringEntry(nx, kC)), jr)
34043404 }
34053405 }
34063406
34073407
34083408
34093409 @Callable(gL)
34103410 func exitTournamentInternal (B) = if ((gL.caller != this))
34113411 then throw("Access denied")
34123412 else {
34133413 let kB = getIntegerValue(K(B))
34143414 let kC = getStringValue(L(B))
34153415 $Tuple2([IntegerEntry(A(B), kB), StringEntry(bK(B), kC)], false)
34163416 }
34173417
34183418
34193419
34203420 @Callable(gL)
34213421 func exitDeliveryInternal (B) = if ((gL.caller != this))
34223422 then throw("Access denied")
34233423 else {
34243424 let mk = ks(B, false, 0, "")
34253425 $Tuple2((mk._1 ++ mk._2), false)
34263426 }
34273427
34283428
34293429
34303430 @Callable(gL)
34313431 func autoExitDelivery (B,iW,ku) = if ((gL.caller != this))
34323432 then throw("Access denied")
34333433 else {
34343434 let mk = ks(B, true, iW, ku)
34353435 $Tuple2(mk._1, $Tuple2(mk._3, mk._4))
34363436 }
34373437
34383438
34393439
34403440 @Callable(gL)
34413441 func prepareRobbery (iR,iS) = {
34423442 let ln = lj(gL)
34433443 if (!(sigVerify_8Kb(iR, iS, ea)))
34443444 then throw("signature does not match")
34453445 else if ((size(gL.payments) != 1))
34463446 then throw("exactly 1 payment must be attached")
34473447 else {
34483448 let lo = gL.payments[0]
34493449 let nz = lo.amount
34503450 if (if (!(isDefined(lo.assetId)))
34513451 then true
34523452 else (value(lo.assetId) != dn))
34533453 then throw("WLGOLD payments only!")
34543454 else {
34553455 let fq = split(toUtf8String(iR), "|")
34563456 if ((size(fq) != 2))
34573457 then throw("Wrong message format")
34583458 else {
34593459 let B = fq[0]
34603460 if (kq(B))
34613461 then throw("prepareRobbery_checkTournament")
34623462 else if (kr(B))
34633463 then throw("prepareRobbery_checkDelivery")
34643464 else {
34653465 let az = av(this, B)._1
34663466 if ((az > nz))
34673467 then throw(((("Payment " + toString(nz)) + " < required ") + toString(az)))
34683468 else {
34693469 let nA = split(fq[1], "_")
34703470 let ay = lastBlock.timestamp
34713471 let aA = valueOrElse(getInteger(S(B)), 0)
34723472 let aB = valueOrElse(getString(T(B)), "")
34733473 let aC = valueOrElse(getInteger(R(aB)), 0)
34743474 if (if ((aA != y))
34753475 then (aC > ay)
34763476 else false)
34773477 then throw(("You already started robbing, wait till " + toString(aC)))
34783478 else {
34793479 func nB (eS,Q) = {
34803480 let nC = valueOrElse(getInteger(P(Q)), 0)
34813481 let nD = valueOrElse(getInteger(R(Q)), 0)
34823482 if ((nC > size(v)))
34833483 then throw("Invalid state")
34843484 else if ((ay > nD))
34853485 then {
34863486 let nE = valueOrElse(getInteger(bs(Q)), 0)
34873487 if ((0 >= nE))
34883488 then eS
34893489 else {
34903490 let gs = value(assetInfo(fromBase58String(Q)))
34913491 let jx = split(gs.description, "_")
34923492 let jj = dI(jx[dj])
34933493 let nF = ji(Q, jj)
34943494 let gR = (ay - nE)
34953495 let jA = fraction(gR, (nF * jj), a)
34963496 if ((w > jA))
34973497 then eS
34983498 else (eS :+ Q)
34993499 }
35003500 }
35013501 else eS
35023502 }
35033503
35043504 let nG = {
35053505 let eU = nA
35063506 let eV = size(eU)
35073507 let eW = nil
35083508 func eX (eY,eZ) = if ((eZ >= eV))
35093509 then eY
35103510 else nB(eY, eU[eZ])
35113511
35123512 func fa (eY,eZ) = if ((eZ >= eV))
35133513 then eY
35143514 else throw("List size exceeds 10")
35153515
35163516 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35173517 }
35183518 if ((size(nG) == 0))
35193519 then throw("No candidates for robbery")
35203520 else {
35213521 let nH = dS(size(nG), height, (iS + gL.transactionId))
35223522 let Q = nG[nH]
35233523 $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ ln), Q)
35243524 }
35253525 }
35263526 }
35273527 }
35283528 }
35293529 }
35303530 }
35313531 }
35323532
35333533
35343534
35353535 @Callable(gL)
35363536 func robLand (iR,iS) = {
35373537 let ln = lj(gL)
35383538 if (!(sigVerify_8Kb(iR, iS, ea)))
35393539 then throw("signature does not match")
35403540 else {
35413541 let bM = toString(gL.caller)
35423542 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
35433543 let ay = lastBlock.timestamp
35443544 $Tuple2((ln :+ IntegerEntry(N(B), ay)), 0)
35453545 }
35463546 }
35473547
35483548
35493549
35503550 @Callable(gL)
35513551 func acceptDelivery () = if (!(cw))
35523552 then throw("Delivery feature is turned off!")
35533553 else {
35543554 let ln = lj(gL)
35553555 let bM = toString(gL.caller)
35563556 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
35573557 let nI = valueOrElse(getInteger(dd, bO), 0)
35583558 let kz = valueOrElse(getInteger(dd, bP), 0)
35593559 if ((aN > (nI - kz)))
35603560 then throw(((("Delivery is not available, fund=" + dN(nI, 6)) + ", locked=") + dN(kz, 6)))
35613561 else {
35623562 let ay = lastBlock.timestamp
35633563 let nJ = valueOrElse(getInteger(U(B)), 0)
35643564 if ((nJ > ay))
35653565 then throw(("Delivery is forbidden for your duck until " + toString(nJ)))
35663566 else if (kq(B))
35673567 then throw("acceptDelivery_checkTournament")
35683568 else if (kr(B))
35693569 then throw("acceptDelivery_checkDelivery")
35703570 else {
35713571 let nK = dA(invoke(dd, "updateDeliveryLocked", [(kz + aN)], nil))
35723572 let jc = A(B)
35733573 let jd = ah(valueOrElse(getInteger(E(B)), 0))
35743574 let kw = valueOrElse(getInteger(jc), jd)
35753575 let nx = bK(B)
35763576 let jr = valueOrElse(getString(nx), aK)
35773577 let nL = (toString(ay) + "_D_0")
35783578 $Tuple2(([IntegerEntry(K(B), kw), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nx, nL)] ++ ln), $Tuple2(nL, nK))
35793579 }
35803580 }
35813581 }
35823582
35833583

github/deemru/w8io/169f3d6 
297.11 ms