tx · BTNXGq8VV5w26RP2yi6n5jycwoB3NRtnbp2nrXCbB1Tb

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10600000 Waves

2023.09.29 22:10 [2777110] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "BTNXGq8VV5w26RP2yi6n5jycwoB3NRtnbp2nrXCbB1Tb", "fee": 10600000, "feeAssetId": null, "timestamp": 1696014650427, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "SpEFY61y8eyHpg6Rn2ZyWegLhS5n675o8jLQ3uGJJojTcbVVuoy6Ancs2uroyWe8DuBTTgEk6n4E2hE38xpijWQ" ], "script": "base64:BgLhAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgMKAQgSBAoCAgISBAoCAgISAJoCAAlEQVlNSUxMSVMAgLiZKQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAh4cENhbGxFUwCgjQYADHhwQ3VzdG9tTmFtZQDAhD0ACnhwTmV3U0xhbmQAwJaxAgAOeHBVcGdyYWRlSW5mcmEAkE4AB3hwTWVyZ2UAwIQ9AAl4cE9uYm9hcmQAwIQ9AAZ4cEhlYWwAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAQdsZXZlbFVwAgljdXJyTGV2ZWwFbmV3WFAECG5ld0xldmVsCQEJbGV2ZWxCeVhQAQUFbmV3WFAJAMwIAgUIbmV3TGV2ZWwJAMwIAgkAaAIFEm51bVBvaW50c09uTGV2ZWxVcAkAZQIFCG5ld0xldmVsBQljdXJyTGV2ZWwFA25pbAEMZ2V0RHVja1N0YXRzBA9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQKYnVmZkVmZmVjdApmb3JjZUJ1ZmZzBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8EA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQEJbWF4SGVhbHRoAQUDbHZsBApzdGF0ZUJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzggCCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5CQDMCAIFA2x2bAkAzAgCBQZoZWFsdGgFA25pbAMFCmZvcmNlQnVmZnMJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0BQNuaWwJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRGV4dGVyaXR5BQNuaWwBDmdldFJvYmJlcnlEYXRhAg9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQEC2xhc3RSb2JDb3N0CQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawEFC2R1Y2tBc3NldElkAAAEC2xhc3RSb2JUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3JvYkNvc3QJAJYDAQkAzAgCBQ5yb2JiZXJ5Q29zdE1pbgkAzAgCCQBlAgULbGFzdFJvYkNvc3QJAGgCBRRyb2JiZXJ5Q29vbGRvd25Db2VmZgkAZQIFA25vdwULbGFzdFJvYlRpbWUFA25pbAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAkAlwoFBQdyb2JDb3N0BQtsYXN0Um9iVGltZQUJZHVja1N0YXRlBQpsb2NrZWRMYW5kBQdsYW5kRVRBAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAApBUlRQUkVTQUxFAgdQUkVTQUxFAAZOVU1SRVMABgAYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSABkAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAxXSE1VTFRJUExJRVIAgMivoCUAD0RFRkFVTFRMT0NBVElPTgIPQWZyaWNhX0ZfQWZyaWNhABBSRVNPVVJDRVBSSUNFTUlOANW1AgAKRVNTRUxMQ09FRgAKABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABJURU5fTUlOVVRFU19NSUxMSVMAwM8kAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQZm9ydEFsbG93ZWRQcm9kcwkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATCQDMCAIAFAUDbmlsABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIlOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8xMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzIwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfMzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wLDAsMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNDBfMV8zMCwxLDJfMiwxLDMsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzYwXzFfMzAsMSwzXzUsMiw4LDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAApySWR4RWZmZWN0AAgAEHJJZHhSZXF1aXJlbWVudHMACQAJcklkeFNsb3RzAAoADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICA25vXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIFbGNuYV8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgIDbGFzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIGc3R0YW9fBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIDd2hfBQtsYW5kQXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEXa2V5Rm9ydGlmaWNhdGlvbnNCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICD2ZvcnRpZmljYXRpb25zXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwAPZGVsaXZlcnlGdW5kS2V5AgxkZWxpdmVyeUZ1bmQAEWRlbGl2ZXJ5TG9ja2VkS2V5Ag5kZWxpdmVyeUxvY2tlZAANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIfJXMlZCVzX19iZXN0UmVzdWx0QnlUb3VyQW5kRHVjawkAzAgCCQCkAwEFA3RJZAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsAgJfXwAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC8CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAQ5pc0luVG91cm5hbWVudAIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHAQxpc0luRGVsaXZlcnkBCGxvY2F0aW9uBANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFECQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMHCQBnAgADBQhkaXN0YW5jZQcBD2lzVXN1YWxMb2NhdGlvbgEIbG9jYXRpb24EB2xvY1R5cGUJAJEDAgkAtQkCBQhsb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQMJAQIhPQIFB2xvY1R5cGUCAVQJAQIhPQIFB2xvY1R5cGUCAUQHAQxub3RPbk1pc3Npb24CDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEB2xvY1R5cGUJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAwMJAQIhPQIFB2xvY1R5cGUCAVQJAQIhPQIFB2xvY1R5cGUCAUQHBgkBASEBAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQBDGNoZWF0QXR0ZW1wdAIGb2xkTG9jBm5ld0xvYwkAAgEJAKwCAgkArAICCQCsAgICFkNoZWF0IGF0dGVtcHQ6IG9sZExvYz0FBm9sZExvYwIJLCBuZXdMb2M9BQZuZXdMb2MAFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkHABhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UHABFLU19BTExPV19ERUxJVkVSWQYABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgLiZKQMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEQYXNTdHJpbmdJbnRUdXBsZQEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAINKFN0cmluZywgSW50KQQCdDIFByRtYXRjaDAFAnQyCQACAQIfZmFpbCB0byBjYXN0IGludG8gKFN0cmluZywgSW50KQEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUMZmluaXNoSGVpZ2h0CmF1eEVudHJvcHkED3JhbmRvbVNlZWRCbG9jawkBBXZhbHVlAQkA7QcBBQxmaW5pc2hIZWlnaHQECnJhbmRvbUhhc2gJAPcDAQkAywECCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgUKYXV4RW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4ADEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlhbCBpZHg9CQCkAwEFA2lkeAILLCB5b3UgaGF2ZSAJAJEDAgUDaGFzBQNpZHgCCywgYnV0IG5lZWQgCQCkAwEJAJEDAgUEbmVlZAUDaWR4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQDBQxzaG91bGRVc2VNYXQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnN1YnRyYWN0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYFA2hhcwERc3VidHJhY3RFcXVpcG1lbnQCBW9sZEVxBXBVc2VkAwkAAAIFBXBVc2VkAgAJAJQKAgUFb2xkRXEHCgEHc3ViVXNlZAIDYWNjBmlkeEFtdAQFcGFydHMJALUJAgUGaWR4QW10AgEsAwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4LGFtb3VudAQDaWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAMDCQBmAgAABQNpZHgGCQBnAgUDaWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4BANhbXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABBAdlcVBhcnRzCQC1CQIIBQNhY2MCXzEJAKwCAgkAkQMCBQVwYXJ0cwAAAgE6AwkBAiE9AgkAkAMBBQdlcVBhcnRzAAIJAAIBCQCsAgIJAKwCAgIPWW91IGRvbid0IGhhdmUgCQCRAwIFCXByb2RUeXBlcwUDaWR4AgkgZXF1aXBwZWQEA3RtcAkAkQMCBQdlcVBhcnRzAAEEBm51bUxlbgMJAQdpc0RpZ2l0AQkArwICCQCwAgIFA3RtcAABAAEAAgABBARjdXJyCQENcGFyc2VJbnRWYWx1ZQEJAK8CAgUDdG1wBQZudW1MZW4EBHRhaWwJALACAgUDdG1wBQZudW1MZW4EBm5ld0FtdAMJAGcCBQRjdXJyBQNhbXQJAGUCBQRjdXJyBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINWW91IGVxdWlwcGVkIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUDaWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFA2FtdAkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUHZXFQYXJ0cwAACQCRAwIFBXBhcnRzAAACAToJAKQDAQUGbmV3QW10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Y2tTdGF0cwhvY2N1cGllZARmcmVlBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUQZm9ydEFsbG93ZWRQcm9kcwUKcHJvZHVjdElkeAkAAgEJAKwCAgkArAICAglQcm9kdWN0ICcJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AiEnIGNhbm5vdCBiZSB1c2VkIGZvciBsYW5kIGRlZmVuc2UDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlQoDBQVwTGlzdAUIb2NjdXBpZWQFBGZyZWUEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQGbmV3QW10AwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcJAGUCBQRjdXJyBQVjb3VudAkAZAIFBGN1cnIFBWNvdW50BAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIFBm5ld0FtdAUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFBGN1cnIFDlBST0RVQ1RQS0dTSVpFCQCVCgMJAMsBAgkAywECBQRoZWFkCQCaAwEFBm5ld0FtdAUEdGFpbAkAZAIFCG9jY3VwaWVkBQhkZWx0YVZvbAkAZQIFBGZyZWUFCGRlbHRhVm9sAQhhZGRQcm9kQgcGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BHNsb3QJZHVja1N0YXRzBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xBAdtYWluQXV4CQC1CQIFA3NlZwIBOwMJAQIhPQIJAJADAQUHbWFpbkF1eAUKTlVNTUFJTkFVWAkAAgECFFdyb25nIHNlZ21lbnQgZm9ybWF0BAFtCQCRAwIFB21haW5BdXgAAAQBYQkAkQMCBQdtYWluQXV4AAEDAwkAAAIFAW0CAAkAAAIFAWECAAcJAJQKAgkAZAIFAWoAAQgFA2FjYwJfMgQEdG1wTQkBC3Nsb3RzR3JvdXBCBgUBbQgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUBagAABQVzdGF0cwkAlAoCCQBkAgUBagABCQELc2xvdHNHcm91cEIGBQFhBQR0bXBNBQppc1Bvc2l0aXZlBQFqAAEFBXN0YXRzCAoAAiRsBQdzZWdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFBnBCeXRlcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgJfMgEFZm9ydEIGB3NlZ0xpc3QGcEJ5dGVzCG9jY3VwaWVkBGZyZWUKaXNQb3NpdGl2ZQlkdWNrU3RhdHMDCQBmAgADCQCQAwEFB3NlZ0xpc3QJAAIBAjFBdCBsZWFzdCBkdWNrLCBtaW5lcyBhbmQgdHJhcHMgcGFydHMgYXJlIHJlcXVpcmVkCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQMJAAACBQFqAAAJAJYKBAkAZAIFAWoAAQgFA2FjYwJfMggFA2FjYwJfMwgFA2FjYwJfNAQBcAkBCnBsYWNlUHJvZEIGBQNzZWcIBQNhY2MCXzIFCmlzUG9zaXRpdmUFCWR1Y2tTdGF0cwgFA2FjYwJfMwgFA2FjYwJfNAkAlgoECQBkAgUBagABCAUBcAJfMQgFAXACXzIIBQFwAl8zBAF0CgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUGcEJ5dGVzBQhvY2N1cGllZAUEZnJlZQoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlQoDCAUBdAJfMggFAXQCXzMIBQF0Al80ARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAELZHVja0Fzc2V0SWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAZjdXJyRXEJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8ECXRlbXBQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUMRU1QVFlfUFJPRDUwBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUGY3VyckVxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkBAiE9AgkAkAMBBQhwcm9wTGlzdAUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQoBB3VwZGF0ZXICA2FjYwFpBAZyZXN1bHQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcExpc3QFAWkJAGgCCQBoAgUEc2lnbgkAkQMCBQ10ZXJy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bG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8ECHdoTG9ja2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUJdm9sTG9ja2VkBANvY2MDCQBmAgkAkAMBBQRsb2Z0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUKd2hPY2N1cGllZAkAuQkCCQDMCAIJAKQDAQUId2hMb2NrZWQJAMwIAgkApAMBBQNvY2MJAMwIAgkApAMBCQBlAgkAZQIFB3doVG90YWwFCHdoTG9ja2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hSZXMFAWkJAM0I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BQFpAAAEA2JwcAMJAGYCCQCQAwEFD2N1cnJlbnRQYWNrUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD2N1cnJlbnRQYWNrUHJvZAUBaQAAAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEFA3docAkAzQgCCAUDYWNjAl8zCQCkAwEFA2JwcAgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sAwkAZgIJAQEtAQUCYW0FA3docAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wEAXADCQECIT0CCQCQAwEFCXByb2RQYXJ0cwAACgACJGwFCXByb2RQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAW0CXzQKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALoJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALoJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDMzNzM4MzQyNzcDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzM3MzgzNDI3NwJfMQQGZHVja0lkCAUNJHQwMzM3MzgzNDI3NwJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNjY1MTM3NTIyAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNjY1MTM3NTIyAl8xBAVicFJlcwgFDSR0MDM2NjUxMzc1MjICXzIEBWxvZnRPCAUNJHQwMzY2NTEzNzUyMgJfMwQFbG9mdEYIBQ0kdDAzNjY1MTM3NTIyAl80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQGbHZsS2V5CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQEBXhwS2V5CQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQEAnhwCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1jaGVja0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUQHBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAMDCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMJAGYCAAMFCGRpc3RhbmNlBwkAAgECIFlvdXIgZHVjayBpcyBvbiBkZWxpdmVyeSBtaXNzaW9uCQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhRleGl0RGVsaXZlcnlJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBEmV4aXREZWxpdmVyeUNvbW1vbgELZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQCFE5GVCBkdWNrIGlzIG9ycGhhbmVkBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECWN1ckhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BA5vdXRjb21lQWN0aW9ucwMJAGcCBQhkaXN0YW5jZQADBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUFb3duZXIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlgoEBQ5vdXRjb21lQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5BQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAUNc2F2ZWRMb2NhdGlvbgULc2F2ZWRIZWFsdGgBDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIbbWVyZ2VJbnRlcm5hbF9jaGVja0RlbGl2ZXJ5CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UECHVzZXJBZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQEZHVjawkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgkAzQgCAwkBCWlzRGVmaW5lZAEFBGR1Y2sEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZwIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCCQDNCAIEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BQNuaWwECnB1bmlzaG1lbnQJAPwHBAUEdGhpcwILc2F2ZUludGVnZXIJAMwIAgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAzAgCCQBkAgUJc3RhcnRUaW1lBQlEQVlNSUxMSVMFA25pbAUDbmlsAwkAAAIFCnB1bmlzaG1lbnQFCnB1bmlzaG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBDEludGVnZXJFbnRyeQIFCWhlYWx0aEtleQkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUDbmlsCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkAQxwcm9sb2dGbGlnaHQBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFA25pbC0BaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBC3NhdmVJbnRlZ2VyAgNrZXkGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIgc2F2ZUludGVnZXIgaXMgbm90IHB1YmxpYyBtZXRob2QJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUGYW1vdW50BQNuaWwBaQEKc2V0QmxvY2tlZAEJaXNCbG9ja2VkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQprZXlCbG9ja2VkAAUJaXNCbG9ja2VkBQNuaWwBaQEJc3Rha2VMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFB2FkZHJlc3MFCmluZnJhTGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFDWNsYWltTW9kZUR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQBZAgFAWMCXzMECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wECAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBQ1jbGFpbU1vZGVEdWNrBAVsYW5kcwkAvQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGxhbmRzS2V5AgACAV8EA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOZ292UmVsZWFzZVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULZ292Q29udHJhY3QJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQRhZGRyAAADCQBnAgUOZ292UmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI5WW91ciBnV0wgYXJlIHRha2luZyBwYXJ0IGluIHZvdGluZywgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmdvdlJlbGVhc2VUaW1lBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAUOYXJiaXRyYWdlRGVsYXkDCQBmAgUOYXJiUmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI/WW91ciBzdGFrZWQgbGFuZHMgdG9vayBwYXJ0IGluIGFyYml0cmFnZSwgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmFyYlJlbGVhc2VUaW1lBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAluZXdQaWVjZXMDCQBmAgUGcGllY2VzBQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwUGcGllY2VzBAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQEJc3Rha2VEdWNrAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkAAgEJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDOCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJY3VySGVhbHRoBQ1wcm9sb2dBY3Rpb25zAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAht1bnN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFCmFzc2V0SWRTdHIJAAIBAhl1bnN0YWtlRHVja19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEFB3RpbWVLZXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJa2V5SGVhbHRoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBCGNsYWltUmVzAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQ1jbGFpbU1vZGVEdWNrBQ5sYW5kQXNzZXRJZFN0cgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQtjbGFpbU1vZGVXaAUObGFuZEFzc2V0SWRTdHIJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfNQUId2hJZHhSZXMBaQEGZmxpZ2h0AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBDHByb2xvZ0ZsaWdodAEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQFbmV3SFAIBQFmAl8xBAtkdWNrQXNzZXRJZAgFAWYCXzIEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQLbmV3TG9jYXRpb24IBQFmAl80AwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQEB2lzRGVsaXYJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBRAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDcwMTQ5NzAyNDYJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwNzAxNDk3MDI0NgJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwNzAxNDk3MDI0NgJfMgQNJHQwNzAyNDk3MzI4OAMJAQxub3RPbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgULY3VyTG9jYXRpb24AAAMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC2N1ckxvY2F0aW9uBAlsb2NIZWFsdGgJARBhc1N0cmluZ0ludFR1cGxlAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAMFB2lzRGVsaXYFCWxvY0hlYWx0aAMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCCAUJbG9jSGVhbHRoAl8xAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEBIQEFB2lzRGVsaXYJAAIBAiRZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gZGVsaXZlcnkDCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAIFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQCBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24DAwkAZgIFBW5ld0hQAAAJAGYCAAMFBXNjb3JlBwkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAECWxvY0hlYWx0aAkBEGFzU3RyaW5nSW50VHVwbGUBCQD8BwQFBHRoaXMCEGF1dG9FeGl0RGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFCWxvY0hlYWx0aAUJbG9jSGVhbHRoBQlsb2NIZWFsdGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECWxvY1RvU2F2ZQgFDSR0MDcwMjQ5NzMyODgCXzEECGhwVG9TYXZlCAUNJHQwNzAyNDk3MzI4OAJfMgkAlAoCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUJbG9jVG9TYXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAUFbmV3SFAFA25pbAUNcHJvbG9nQWN0aW9ucwMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCBQVuZXdIUAAABQ94cFN1Y2Nlc3NGbGlnaHQFDHhwRmFpbEZsaWdodAJfMQgFAWYCXzMBaQEEaGVhbAMKcXVhbnRpdHlMMQpxdWFudGl0eUwyCnF1YW50aXR5TDMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwMDCQBmAgAABQpxdWFudGl0eUwxBgkAZgIAAAUKcXVhbnRpdHlMMgYJAGYCAAAFCnF1YW50aXR5TDMJAAIBAhtRdWFudGl0eSBjYW5ub3QgYmUgbmVnYXRpdmUEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhRoZWFsX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhJoZWFsX2NoZWNrRGVsaXZlcnkEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBo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cmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIWaGVhbEVTX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhRoZWFsRVNfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFCW9sZEhlYWx0aAAACQACAQIoSFAgc2hvdWxkIGJlIDAgdG8gY2FsbCBFbWVyZ2VuY3kgU2VydmljZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA1tZWRLaXRBbW91bnQxAwkAZgIJAJADAQUIcHJvZExpc3QAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAAAAAQNbWVkS2l0QW1vdW50MgMJAGYCCQCQAwEFCHByb2RMaXN0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAABAAAEDW1lZEtpdEFtb3VudDMDCQBmAgkAkAMBBQhwcm9kTGlzdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAgAAAwMDCQBmAgUNbWVkS2l0QW1vdW50MQAABgkAZgIFDW1lZEtpdEFtb3VudDIAAAYJAGYCBQ1tZWRLaXRBbW91bnQzAAAJAAIBAh9Zb3UgaGF2ZSB0byB1c2Ugb3duIE1lZGljYWwgS2l0BAhleGlzdFN0cgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlFc1dhcmVob3VzZQAEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAvAkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsBAtleGlzdEFtb3VudAMJAGYCCQCQAwEFDGV4aXN0QW1vdW50cwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMZXhpc3RBbW91bnRzAAAAAAMJAGcCAAAFC2V4aXN0QW1vdW50CQACAQI5VGhlcmUgYXJlIG5vIE1lZGljYWwgS2l0cyBMMSBhdCBFbWVyZ2VuY3kgU2VydmljZSBzdG9yYWdlBAluZXdIZWFsdGgJAGQCBQlvbGRIZWFsdGgJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBQpySWR4RWZmZWN0BAVuZXdFUwkAuQkCCQDMCAIJAKQDAQkAZQIFC2V4aXN0QW1vdW50AAEJANEIAgUMZXhpc3RBbW91bnRzAAACAV8EBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXNlbGxQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUKRVNTRUxMQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQMJAQIhPQIIBQNwbXQGYW1vdW50BQlzZWxsUHJpY2UJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQlzZWxsUHJpY2UEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9lY29ub215Q29udHJhY3QCD3VwZGF0ZUVzU3RvcmFnZQkAzAgCBQVuZXdFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUJc2VsbFByaWNlBQNuaWwJAJQKAgkAzggCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQh4cENhbGxFUwJfMQUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sBaQEPY29tbWl0Rm9yUmFuZG9tAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUNcHJvbG9nQWN0aW9ucwULZmluaXNoQmxvY2sBaQEIYnV5U0xhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEKZXhwZWRpdGlvbgIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCAUBZgJfMgQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBgUFbUxpc3QFDEVYUE1BVEVSSUFMUwIBXwQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDgwNzI1ODA4MjIJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwODA3MjU4MDgyMgJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwODA3MjU4MDgyMgJfMgQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQCaWQICAUBZQJfMgJfMQQGcmVzdWx0AwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAACQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGmV4cGVkaXRpb25fY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECGGV4cGVkaXRpb25fY2hlY2tEZWxpdmVyeQQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlQoDCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zBQthY3Jlc1Jlc3VsdAFpARBidXlTTGFuZEZvckFjcmVzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQxTX0NPU1RfQUNSRVMJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQxTX0NPU1RfQUNSRVMEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxhY3Jlc0Fzc2V0SWQFA2FtdAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEMdXBncmFkZUluZnJhAQtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCBQRhZGRyBQ5sYW5kQXNzZXRJZE9wdAMJAAACAgdPTkJPQVJEBQckbWF0Y2gwCQESYWN0aXZhdGVPbmJvYXJkQXJ0AQUEYWRkcgkAAgECEFVua25vd24gYXJ0aWZhY3QJAM4IAgUGcmVzdWx0BQ1wcm9sb2dBY3Rpb25zAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUHeHBNZXJnZQJfMQgFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCkAwEFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARdmaXhDb250aW5lbnRQcm9wb3J0aW9ucwEMbGFuZEFzc2V0SWRzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCgEIZ2V0UHJvcHMCA2FjYwRjb250CQDNCAIFA2FjYwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBGNvbnQCCzBfMF8wXzBfMF8wBAFwCgACJGwFCmNvbnRpbmVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGdldFByb3BzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQoBCXByb2Nlc3NvcgIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUFBVNTSVpFBARjb250CQCRAwIFAWQFDHJlY0NvbnRpbmVudAQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAxjb250aW5lbnRJZHgJAQV2YWx1ZQEJAM8IAgUKY29udGluZW50cwUEY29udAQJY29udFByb3BzCQC1CQIJAJEDAgUDYWNjBQxjb250aW5lbnRJZHgCAV8EB3VwZGF0ZWQJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAckbWF0Y2gwBQRjb250AwkAAAICCEFtZXJpY2FzBQckbWF0Y2gwCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBkV1cm9wZQUHJG1hdGNoMAkAzAgCCQCRAwIFA2FjYwAACQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAgkAzAgCCQCRAwIFA2FjYwADCQDMCAIJAJEDAgUDYWNjAAQFA25p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cGVzQnlDb250aW5lbnQBAgRBc2lhCQCRAwIFAXIAAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBkFmcmljYQkAkQMCBQFyAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgdPY2VhbmlhCQCRAwIFAXIABAUDbmlsAAABaQEPZml4U3Rha2VkUGllY2VzAQdhZGRyZXNzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAxzdGFrZWRQaWVjZXMDCQAAAgUHYWRkcmVzcwIAAAAECGxhbmRzU3RyCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECGxhbmRTaXplCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQkAZAIFA2FjYwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MFDHN0YWtlZFBpZWNlcwUDbmlsBQxzdGFrZWRQaWVjZXMBaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUMUkVOQU1JTkdDT1NUCQACAQkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAKQDAQUMUkVOQU1JTkdDT1NUAwkBCGNvbnRhaW5zAgUKY3VzdG9tTmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUNcHJvbG9nQWN0aW9ucwAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQpmcmVlS2V5QWNjAAAEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgABAZjYWxsZXIIBQFpBmNhbGxlcgMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEnRvdXJuYW1lbnRDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwFBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkBBnByb2xvZwEFAWkAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAQIhPQIIBQFpBmNhbGxlcgUNYWNyZXNDb250cmFjdAcJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMjkzMTEwMzA0NgkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMjkzMTEwMzA0NgJfMQQFdGVtcE8IBQ8kdDAxMDI5MzExMDMwNDYCXzIEBXRlbXBGCAUPJHQwMTAyOTMxMTAzMDQ2Al8zBA8kdDAxMDMwNDkxMDMxNDUJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDMwNDkxMDMxNDUCXzEEBG5ld08IBQ8kdDAxMDMwNDkxMDMxNDUCXzIEBG5ld0YIBQ8kdDAxMDMwNDkxMDMxNDUCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uAQULZHVja0Fzc2V0SWQJAJQKAggFAWUCXzEJAJQKAggFAWUCXzMIBQFlAl80AWkBDnByZXBhcmVSb2JiZXJ5AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBfAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECFFdyb25nIG1lc3NhZ2UgZm9ybWF0BAtkdWNrQXNzZXRJZAkAkQMCBQVwYXJ0cwAAAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIecHJlcGFyZVJvYmJlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHHByZXBhcmVSb2JiZXJ5X2NoZWNrRGVsaXZlcnkEB3JvYkNvc3QICQEOZ2V0Um9iYmVyeURhdGECBQR0aGlzBQtkdWNrQXNzZXRJZAJfMQMJAGYCBQdyb2JDb3N0BQZ3bGdBbXQJAAIBCQCsAgIJAKwCAgkArAICAghQYXltZW50IAkApAMBBQZ3bGdBbXQCDCA8IHJlcXVpcmVkIAkApAMBBQdyb2JDb3N0BApjYW5kaWRhdGVzCQC1CQIJAJEDAgUFcGFydHMAAQIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAMDCQECIT0CBQlkdWNrU3RhdGUFC2R1Y2tJZHhGcmVlCQBmAgUHbGFuZEVUQQUDbm93BwkAAgEJAKwCAgInWW91IGFscmVhZHkgc3RhcnRlZCByb2JiaW5nLCB3YWl0IHRpbGwgCQCkAwEFB2xhbmRFVEEKAQdjaGVja2VyAgNhY2MLbGFuZEFzc2V0SWQEBXN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQAAAQLY29vbGRvd25FVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkAAADCQBmAgUFc3RhdGUJAJADAQUQbGFuZFJvYkNvb2xkb3ducwkAAgECDUludmFsaWQgc3RhdGUDCQBmAgUDbm93BQtjb29sZG93bkVUQQQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAADCQBnAgAABQpzdGFrZWRUaW1lBQNhY2MEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAgUDbm93BQpzdGFrZWRUaW1lBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFDHByb2R1Y3Rpdml0eQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUOTUlOX1JFU19UT19ST0IFCGF2YWlsUmVzBQNhY2MJAM0IAgUDYWNjBQtsYW5kQXNzZXRJZAUDYWNjBAhmaWx0ZXJlZAoAAiRsBQpjYW5kaWRhdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIJAJADAQUIZmlsdGVyZWQAAAkAAgECGU5vIGNhbmRpZGF0ZXMgZm9yIHJvYmJlcnkEBnJuZElkeAkBD2dldFJhbmRvbU51bWJlcgMJAJADAQUIZmlsdGVyZWQFBmhlaWdodAkAywECBQNzaWcIBQFpDXRyYW5zYWN0aW9uSWQEC2xhbmRBc3NldElkCQCRAwIFCGZpbHRlcmVkBQZybmRJZHgJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQFA25pbAUNcHJvbG9nQWN0aW9ucwULbGFuZEFzc2V0SWQBaQEHcm9iTGFuZAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAJQKAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkBQNub3cAAAFpAQ5hY2NlcHREZWxpdmVyeQADCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAUPZGVsaXZlcnlGdW5kS2V5AAAEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkJAGUCBQlmdW5kVG90YWwFC2xvY2tlZFRvdGFsCQACAQkArAICCQCsAgIJAKwCAgIgRGVsaXZlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZD0JAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAYCCSwgbG9ja2VkPQkBCmZpeGVkUG9pbnQCBQtsb2NrZWRUb3RhbAAGBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhkZWxheUVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkAAADCQBmAgUIZGVsYXlFVEEFA25vdwkAAgEJAKwCAgIqRGVsaXZlcnkgaXMgZm9yYmlkZGVuIGZvciB5b3VyIGR1Y2sgdW50aWwgCQCkAwEFCGRlbGF5RVRBAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIeYWNjZXB0RGVsaXZlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHGFjY2VwdERlbGl2ZXJ5X2NoZWNrRGVsaXZlcnkEDm5ld0xvY2tlZFRvdGFsCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZAIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQQZGVsaXZlcnlMb2NhdGlvbgkArAICCQCkAwEFA25vdwIEX0RfMAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BRBkZWxpdmVyeUxvY2F0aW9uBQNuaWwFDXByb2xvZ0FjdGlvbnMJAJQKAgUQZGVsaXZlcnlMb2NhdGlvbgUObmV3TG9ja2VkVG90YWwAva142A==", "height": 2777110, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6L38t3LCTKvRaoEJb5xnjrgMqYzodAwZHSbksCaiVFop Next: 5qt3H3bQa5PrSm2HA7h2CKHHjmCSbXm5d1KzrqiNg6ES Diff:
OldNewDifferences
396396
397397 let cs = false
398398
399-let ct = true
399+let ct = false
400400
401401 let cu = true
402402
21562156 then valueOrElse(getBoolean(dH()), false)
21572157 else false)
21582158 then throw("Contracts are under maintenance")
2159- else StringEntry(dI(toString(gH.originCaller)), toBase58String(gH.transactionId))
2160-
2161-
2162-@Callable(gH)
2163-func constructorV1 (la) = if ((gH.caller != this))
2159+ else {
2160+ let bL = toString(gH.originCaller)
2161+ let la = getString(bH(bL))
2162+ ((if (isDefined(la))
2163+ then {
2164+ let A = value(la)
2165+ let lb = bJ(A)
2166+ let cf = split(valueOrElse(getString(lb), aJ), "_")
2167+ let ci = parseIntValue(cf[bl])
2168+ if (if ((cf[bm] != "D"))
2169+ then true
2170+ else (lastBlock.timestamp > (ci + aN)))
2171+ then nil
2172+ else {
2173+ let kp = z(A)
2174+ if ((parseIntValue(cf[bn]) >= 3))
2175+ then {
2176+ let ks = invoke(db, "sendDeliveryReward", [bL], nil)
2177+ if ((ks == ks))
2178+ then nil
2179+ else throw("Strict value is not equal to itself.")
2180+ }
2181+ else (({
2182+ let kt = valueOrElse(getInteger(db, bO), 0)
2183+ let ku = invoke(db, "updateDeliveryLocked", [(kt - aM)], nil)
2184+ if ((ku == ku))
2185+ then if ((0 >= getIntegerValue(kp)))
2186+ then nil
2187+ else {
2188+ let lc = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2189+ if ((lc == lc))
2190+ then nil
2191+ else throw("Strict value is not equal to itself.")
2192+ }
2193+ else throw("Strict value is not equal to itself.")
2194+ } :+ IntegerEntry(kp, getIntegerValue(J(A)))) :+ StringEntry(lb, getStringValue(K(A))))
2195+ }
2196+ }
2197+ else nil) :+ StringEntry(dI(bL), toBase58String(gH.transactionId)))
2198+ }
2199+
2200+
2201+func ld (gH) = if (if ((gH.originCaller != da))
2202+ then valueOrElse(getBoolean(dH()), false)
2203+ else false)
2204+ then throw("Contracts are under maintenance")
2205+ else [StringEntry(dI(toString(gH.originCaller)), toBase58String(gH.transactionId))]
2206+
2207+
2208+@Callable(gH)
2209+func constructorV1 (le) = if ((gH.caller != this))
21642210 then throw("Permission denied")
2165- else [StringEntry(cU(), la)]
2166-
2167-
2168-
2169-@Callable(gH)
2170-func setBlocked (lb) = if ((gH.caller != this))
2211+ else [StringEntry(cU(), le)]
2212+
2213+
2214+
2215+@Callable(gH)
2216+func saveInteger (cM,eF) = if ((gH.caller != this))
2217+ then throw("saveInteger is not public method")
2218+ else [IntegerEntry(cM, eF)]
2219+
2220+
2221+
2222+@Callable(gH)
2223+func setBlocked (lf) = if ((gH.caller != this))
21712224 then throw("permission denied")
2172- else [BooleanEntry(dH(), lb)]
2225+ else [BooleanEntry(dH(), lf)]
21732226
21742227
21752228
21762229 @Callable(gH)
21772230 func stakeLand () = {
2178- let lc = kZ(gH)
2231+ let lg = kZ(gH)
21792232 if ((size(gH.payments) != 1))
21802233 then throw("Exactly one payment required")
21812234 else {
2182- let ld = value(gH.payments[0])
2183- let bp = value(ld.assetId)
2235+ let lh = value(gH.payments[0])
2236+ let bp = value(lh.assetId)
21842237 let cL = toString(gH.caller)
2185- if ((ld.amount != 1))
2238+ if ((lh.amount != 1))
21862239 then throw((("NFT " + aC) + " token should be attached as payment"))
21872240 else {
21882241 let jp = value(assetInfo(bp))
21912244 else if (!(contains(jp.name, aC)))
21922245 then throw((("Only NFT " + aC) + " tokens are accepted"))
21932246 else {
2194- let le = drop(jp.name, 4)
2195- let eq = if (contains(le, "XXL"))
2196- then dropRight(le, 3)
2197- else if (contains(le, "XL"))
2198- then dropRight(le, 2)
2199- else dropRight(le, 1)
2247+ let li = drop(jp.name, 4)
2248+ let eq = if (contains(li, "XXL"))
2249+ then dropRight(li, 3)
2250+ else if (contains(li, "XL"))
2251+ then dropRight(li, 2)
2252+ else dropRight(li, 1)
22002253 if (!(isDefined(parseInt(eq))))
22012254 then throw(("Cannot parse land number from " + jp.name))
22022255 else {
22102263 let jf = dE(jt[dh])
22112264 let hW = (jf / cE)
22122265 let eY = gI(gD, hW, 1)
2213- let lf = dr(jt[dj])
2214- let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_")
2215- let lg = makeString(gB(kP, gD, hW, 1), "_")
2266+ let lj = dr(jt[dj])
2267+ let kP = split(valueOrElse(getString(lj), "0_0_0_0_0_0"), "_")
2268+ let lk = makeString(gB(kP, gD, hW, 1), "_")
22162269 let kL = dt(cL)
22172270 let kM = getString(kL)
22182271 let kI = if (isDefined(kM))
22252278 else {
22262279 let hX = valueOrElse(getInteger(by(P)), 0)
22272280 let kS = du(cL)
2228- let lh = valueOrElse(getInteger(kS), 0)
2229- let li = invoke(dd, "onStakeUnstakeLand", [cL], nil)
2230- $Tuple2([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kL, makeString_11C((kI :+ P), "_")), IntegerEntry(kS, (lh + jf)), StringEntry(bo(P), cL), StringEntry(es(eq), cL), IntegerEntry(er(P, cL), hX), StringEntry(dq(), eY), StringEntry(lf, lg), lc], li)
2281+ let ll = valueOrElse(getInteger(kS), 0)
2282+ let lm = invoke(dd, "onStakeUnstakeLand", [cL], nil)
2283+ $Tuple2(([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kL, makeString_11C((kI :+ P), "_")), IntegerEntry(kS, (ll + jf)), StringEntry(bo(P), cL), StringEntry(es(eq), cL), IntegerEntry(er(P, cL), hX), StringEntry(dq(), eY), StringEntry(lj, lk)] ++ lg), lm)
22312284 }
22322285 }
22332286 }
22402293
22412294 @Callable(gH)
22422295 func unstakeLand (jl) = {
2243- let lc = kZ(gH)
2296+ let lg = kZ(gH)
22442297 if ((size(gH.payments) != 0))
22452298 then throw("No payments required")
22462299 else {
22532306 let jf = dE(jt[dh])
22542307 let hW = (jf / cE)
22552308 let eY = gI(gD, hW, -1)
2256- let lf = dr(jt[dj])
2257- let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_")
2258- let lg = makeString(gB(kP, gD, hW, -1), "_")
2309+ let lj = dr(jt[dj])
2310+ let kP = split(valueOrElse(getString(lj), "0_0_0_0_0_0"), "_")
2311+ let lk = makeString(gB(kP, gD, hW, -1), "_")
22592312 let jQ = jG(c, P, jf, ex)
22602313 let kI = split_51C(valueOrElse(getString(kL), ""), "_")
22612314 let cZ = indexOf(kI, P)
22632316 then throw(("Your staked lands don't contain " + P))
22642317 else {
22652318 let ax = lastBlock.timestamp
2266- let lj = valueOrElse(getInteger(dc, bK(c)), 0)
2267- if ((lj >= ax))
2268- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lj)))
2319+ let ln = valueOrElse(getInteger(dc, bK(c)), 0)
2320+ if ((ln >= ax))
2321+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ln)))
22692322 else {
2270- let lk = (valueOrElse(getInteger(dd, b(c)), 0) + cA)
2271- if ((lk > ax))
2272- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lk)))
2323+ let lo = (valueOrElse(getInteger(dd, b(c)), 0) + cA)
2324+ if ((lo > ax))
2325+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lo)))
22732326 else {
22742327 let kS = du(c)
22752328 let kT = valueOrElse(getInteger(kS), 0)
2276- let ll = if ((jf > kT))
2329+ let lp = if ((jf > kT))
22772330 then 0
22782331 else (kT - jf)
2279- let li = invoke(dd, "onStakeUnstakeLand", [c], nil)
2280- $Tuple2([ScriptTransfer(gH.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), eY), StringEntry(lf, lg), StringEntry(jQ._2, makeString(jQ._3, ":")), if ((size(kI) > 1))
2332+ let lm = invoke(dd, "onStakeUnstakeLand", [c], nil)
2333+ $Tuple2(([ScriptTransfer(gH.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), eY), StringEntry(lj, lk), StringEntry(jQ._2, makeString(jQ._3, ":")), if ((size(kI) > 1))
22812334 then StringEntry(kL, makeString_11C(removeByIndex(kI, value(cZ)), "_"))
2282- else DeleteEntry(kL), IntegerEntry(kS, ll), lc], li)
2335+ else DeleteEntry(kL), IntegerEntry(kS, lp)] ++ lg), lm)
22832336 }
22842337 }
22852338 }
22902343
22912344 @Callable(gH)
22922345 func stakeDuck () = {
2293- let lc = kZ(gH)
2346+ let lg = kZ(gH)
22942347 if ((size(gH.payments) != 1))
22952348 then throw("Exactly one payment required")
22962349 else {
2297- let ld = value(gH.payments[0])
2298- let bp = value(ld.assetId)
2350+ let lh = value(gH.payments[0])
2351+ let bp = value(lh.assetId)
22992352 let cL = toString(gH.caller)
2300- if ((ld.amount != 1))
2353+ if ((lh.amount != 1))
23012354 then throw((("NFT " + aD) + " token should be attached as payment"))
23022355 else {
23032356 let jp = value(assetInfo(bp))
23082361 else if (!(contains(jp.name, aD)))
23092362 then throw((("Only NFT " + aD) + " tokens are accepted"))
23102363 else {
2311- let lm = toBase58String(bp)
2312- let jq = br(lm)
2364+ let lq = toBase58String(bp)
2365+ let jq = br(lq)
23132366 if (isDefined(getInteger(jq)))
23142367 then throw((("NFT " + jp.name) + " is already staked"))
23152368 else if (isDefined(getString(bH(cL))))
23162369 then throw(("You already staked one duck: " + jp.name))
23172370 else {
2318- let ln = bJ(lm)
2319- let cd = getString(ln)
2320- let hI = bI(lm)
2321- let lo = getString(hI)
2322- let iY = z(lm)
2323- let iZ = ag(valueOrElse(getInteger(D(lm)), 0))
2371+ let lb = bJ(lq)
2372+ let cd = getString(lb)
2373+ let hI = bI(lq)
2374+ let lr = getString(hI)
2375+ let iY = z(lq)
2376+ let iZ = ag(valueOrElse(getInteger(D(lq)), 0))
23242377 let kq = valueOrElse(getInteger(iY), iZ)
2325- ([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lm), cL), StringEntry(bH(cL), lm)] ++ (if (isDefined(cd))
2378+ ([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lq), cL), StringEntry(bH(cL), lq)] ++ (if (isDefined(cd))
23262379 then nil
2327- else ([StringEntry(ln, aJ)] ++ (if (isDefined(lo))
2380+ else ([StringEntry(lb, aJ)] ++ (if (isDefined(lr))
23282381 then nil
2329- else (([StringEntry(hI, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iY, kq)) :+ lc)))))
2382+ else (([StringEntry(hI, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iY, kq)) ++ lg)))))
23302383 }
23312384 }
23322385 }
23362389
23372390
23382391 @Callable(gH)
2339-func unstakeDuck (lm) = {
2340- let lc = kZ(gH)
2392+func unstakeDuck (lq) = {
2393+ let lg = kZ(gH)
23412394 if ((size(gH.payments) != 0))
23422395 then throw("No payments required")
23432396 else {
2344- let bp = fromBase58String(lm)
2397+ let bp = fromBase58String(lq)
23452398 let cL = toString(gH.caller)
23462399 let jp = value(assetInfo(bp))
2347- let jq = br(lm)
2400+ let jq = br(lq)
23482401 if (!(isDefined(getInteger(jq))))
23492402 then throw((("NFT " + jp.name) + " is not staked"))
23502403 else if (!(isDefined(getString(bH(cL)))))
23512404 then throw((("The duck " + jp.name) + " is not staked"))
23522405 else {
2353- let js = valueOrErrorMessage(getString(bG(lm)), (("NFT " + jp.name) + " is orphaned"))
2406+ let js = valueOrErrorMessage(getString(bG(lq)), (("NFT " + jp.name) + " is orphaned"))
23542407 if ((js != cL))
23552408 then throw("Staked NFT is not yours")
2356- else if (km(lm))
2409+ else if (km(lq))
23572410 then throw("unstakeDuck_checkTournament")
2358- else if (kn(lm))
2411+ else if (kn(lq))
23592412 then throw("unstakeDuck_checkDelivery")
23602413 else {
2361- let iY = z(lm)
2362- let iZ = ag(valueOrElse(getInteger(D(lm)), 0))
2414+ let iY = z(lq)
2415+ let iZ = ag(valueOrElse(getInteger(D(lq)), 0))
23632416 let as = valueOrElse(getInteger(iY), iZ)
23642417 if ((iZ > as))
23652418 then throw((("Please heal your duck to " + toString(iZ)) + "hp before unstaking"))
2366- else [ScriptTransfer(gH.caller, 1, bp), DeleteEntry(jq), DeleteEntry(iY), DeleteEntry(bJ(lm)), DeleteEntry(bG(lm)), DeleteEntry(bu(aD, lm, cL)), DeleteEntry(bH(cL)), lc]
2419+ else ([ScriptTransfer(gH.caller, 1, bp), DeleteEntry(jq), DeleteEntry(iY), DeleteEntry(bJ(lq)), DeleteEntry(bG(lq)), DeleteEntry(bu(aD, lq, cL)), DeleteEntry(bH(cL))] ++ lg)
23672420 }
23682421 }
23692422 }
23722425
23732426
23742427 @Callable(gH)
2375-func claimRes (eF,lp) = {
2376- let lc = kZ(gH)
2428+func claimRes (eF,ls) = {
2429+ let lg = kZ(gH)
23772430 if ((size(gH.payments) != 0))
23782431 then throw("No payments required")
23792432 else {
23802433 let c = toString(gH.originCaller)
2381- let fg = ju(c, eF, ex, lp)
2434+ let fg = ju(c, eF, ex, ls)
23822435 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2383- $Tuple2(((((fg._1 ++ jW(A, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._3[bi])
2384- }
2385- }
2386-
2387-
2388-
2389-@Callable(gH)
2390-func claimResToWH (eF,lp) = {
2391- let lc = kZ(gH)
2436+ $Tuple2(((((fg._1 ++ jW(A, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) ++ lg), fg._3[bi])
2437+ }
2438+ }
2439+
2440+
2441+
2442+@Callable(gH)
2443+func claimResToWH (eF,ls) = {
2444+ let lg = kZ(gH)
23922445 if ((size(gH.payments) != 0))
23932446 then throw("No payments required")
23942447 else {
23952448 let c = toString(gH.originCaller)
2396- let fg = ju(c, eF, ew, lp)
2397- $Tuple2(((((fg._1 ++ kc(c, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._5[aZ])
2449+ let fg = ju(c, eF, ew, ls)
2450+ $Tuple2(((((fg._1 ++ kc(c, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) ++ lg), fg._5[aZ])
23982451 }
23992452 }
24002453
24022455
24032456 @Callable(gH)
24042457 func flight (iN,iO) = {
2405- let lc = kZ(gH)
2458+ let lg = ld(gH)
24062459 if ((size(gH.payments) != 0))
24072460 then throw("No payments required")
24082461 else {
24102463 let hm = iM(bL, iN, iO)
24112464 let iS = hm._1
24122465 let A = hm._2
2413- let ln = bJ(A)
2414- let jn = valueOrElse(getString(ln), aJ)
2466+ let lb = bJ(A)
2467+ let jn = valueOrElse(getString(lb), aJ)
24152468 let iU = hm._4
24162469 if ((iU == jn))
24172470 then throw("You can't fly to the same location")
24182471 else {
24192472 let cr = split(iU, "_")
2420- let lq = (cr[bm] == "T")
2421- let lr = (cr[bm] == "D")
2473+ let lt = (cr[bm] == "T")
2474+ let lu = (cr[bm] == "D")
24222475 let gu = F(A)
2423- let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2424- let lt = fh(ls, hm._5)
2425- let lu = lt._1
2426- let lv = lt._2
2427- let lw = if (cm(de, jn))
2476+ let lv = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2477+ let lw = fh(lv, hm._5)
2478+ let lx = lw._1
2479+ let ly = lw._2
2480+ let lz = if (cm(de, jn))
24282481 then if (!(ck(iU)))
24292482 then cp(jn, iU)
24302483 else if ((iS > 0))
24342487 then if (!(cc(de, iU)))
24352488 then throw("Your duck is taking part in the tournament")
24362489 else {
2437- let lx = parseIntValue(cr[bn])
2438- let ly = split(jn, "_")
2490+ let lA = parseIntValue(cr[bn])
2491+ let lB = split(jn, "_")
24392492 let ce = valueOrElse(getInteger(de, bP), 0)
2440- if ((lx != (parseIntValue(ly[bn]) + 1)))
2493+ if ((lA != (parseIntValue(lB[bn]) + 1)))
24412494 then cp(jn, iU)
24422495 else if ((iS > 0))
24432496 then {
2444- let lz = valueOrElse(getInteger(de, bT(ce, A)), 0)
2445- let lA = if ((lx > lz))
2446- then invoke(de, "saveDuckResult", [A, lx], nil)
2497+ let lC = valueOrElse(getInteger(de, bT(ce, A)), 0)
2498+ let lD = if ((lA > lC))
2499+ then invoke(de, "saveDuckResult", [A, lA], nil)
24472500 else unit
2448- if ((lA == lA))
2501+ if ((lD == lD))
24492502 then $Tuple2(iU, iS)
24502503 else throw("Strict value is not equal to itself.")
24512504 }
24532506 }
24542507 else if (!(ch(jn)))
24552508 then {
2456- let lB = dB(invoke(this, "autoExitDelivery", [A], nil))
2457- if ((lB == lB))
2458- then if (lr)
2459- then lB
2509+ let lE = dB(invoke(this, "autoExitDelivery", [A], nil))
2510+ if ((lE == lE))
2511+ then if (lu)
2512+ then lE
24602513 else if ((iS > 0))
24612514 then $Tuple2(iU, iS)
2462- else $Tuple2(lB._1, 0)
2515+ else $Tuple2(lE._1, 0)
24632516 else throw("Strict value is not equal to itself.")
24642517 }
2465- else if (!(lr))
2518+ else if (!(lu))
24662519 then throw("Your duck is taking part in delivery")
24672520 else if (!(ch(iU)))
24682521 then cp(jn, iU)
24692522 else {
2470- let lx = parseIntValue(cr[bn])
2471- let ly = split(jn, "_")
2472- if ((lx != (parseIntValue(ly[bn]) + 1)))
2523+ let lA = parseIntValue(cr[bn])
2524+ let lB = split(jn, "_")
2525+ if ((lA != (parseIntValue(lB[bn]) + 1)))
24732526 then cp(jn, iU)
2474- else if ((iS > 0))
2527+ else if (if ((iS > 0))
2528+ then (3 > lA)
2529+ else false)
24752530 then $Tuple2(iU, iS)
24762531 else {
2477- let lB = dB(invoke(this, "autoExitDelivery", [A], nil))
2478- if ((lB == lB))
2479- then lB
2532+ let lE = dB(invoke(this, "autoExitDelivery", [A], nil))
2533+ if ((lE == lE))
2534+ then lE
24802535 else throw("Strict value is not equal to itself.")
24812536 }
24822537 }
2483- let lC = lw._1
2484- let lD = lw._2
2485- $Tuple2(([StringEntry(ln, lC), StringEntry(gu, lu), IntegerEntry(z(A), iS), lc] ++ (if (lv)
2538+ let lF = lz._1
2539+ let lG = lz._2
2540+ $Tuple2(((([StringEntry(lb, lF), StringEntry(gu, lx), IntegerEntry(z(A), iS)] ++ lg) ++ (if (ly)
24862541 then [StringEntry(L(A), "0_0_0_0_0")]
2487- else (nil ++ jW(A, if ((iS > 0))
2488- then V
2489- else W)._1))), hm._3)
2542+ else nil)) ++ jW(A, if ((iS > 0))
2543+ then V
2544+ else W)._1), hm._3)
24902545 }
24912546 }
24922547 }
24942549
24952550
24962551 @Callable(gH)
2497-func heal (lE,lF,lG) = {
2498- let lc = kZ(gH)
2499- if (if (if ((0 > lE))
2552+func heal (lH,lI,lJ) = {
2553+ let lg = kZ(gH)
2554+ if (if (if ((0 > lH))
25002555 then true
2501- else (0 > lF))
2556+ else (0 > lI))
25022557 then true
2503- else (0 > lG))
2558+ else (0 > lJ))
25042559 then throw("Quantity cannot be negative")
25052560 else {
25062561 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
25092564 else if (kn(A))
25102565 then throw("heal_checkDelivery")
25112566 else {
2512- let lH = [lE, lF, lG]
2567+ let lK = [lH, lI, lJ]
25132568 let iY = z(A)
25142569 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
2515- let lI = valueOrElse(getInteger(iY), iZ)
2516- if ((lI >= iZ))
2570+ let lL = valueOrElse(getInteger(iY), iZ)
2571+ if ((lL >= iZ))
25172572 then throw((("HP should be < " + toString(iZ)) + " to heal"))
25182573 else {
25192574 let hI = bI(A)
25202575 let il = hH(hI)
2521- let lJ = if ((il[bk] == ""))
2576+ let lM = if ((il[bk] == ""))
25222577 then nil
25232578 else split_4C(il[bk], "_")
2524- func lK (eO,co) = {
2579+ func lN (eO,co) = {
25252580 let dz = eO._2
2526- let hd = if ((size(lJ) > dz))
2527- then parseIntValue(lJ[dz])
2581+ let hd = if ((size(lM) > dz))
2582+ then parseIntValue(lM[dz])
25282583 else 0
25292584 if ((3 > dz))
25302585 then {
2531- let lL = lH[dz]
2532- if ((lL > hd))
2586+ let lO = lK[dz]
2587+ if ((lO > hd))
25332588 then throw(((("You have only " + toString(hd)) + " of ") + aO[dz]))
2534- else $Tuple3((eO._1 :+ toString((hd - lL))), (dz + 1), (eO._3 + (parseIntValue(split(co, "_")[aU]) * lL)))
2589+ else $Tuple3((eO._1 :+ toString((hd - lO))), (dz + 1), (eO._3 + (parseIntValue(split(co, "_")[aU]) * lO)))
25352590 }
25362591 else $Tuple3((eO._1 :+ toString(hd)), (dz + 1), eO._3)
25372592 }
25422597 let eS = $Tuple3(nil, 0, 0)
25432598 func eT (eU,eV) = if ((eV >= eR))
25442599 then eU
2545- else lK(eU, eQ[eV])
2600+ else lN(eU, eQ[eV])
25462601
25472602 func eW (eU,eV) = if ((eV >= eR))
25482603 then eU
25502605
25512606 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
25522607 }
2553- let lM = min([iZ, (lI + fg._3)])
2554- $Tuple2(([IntegerEntry(iY, lM), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], makeString(fg._1, "_")], ":")), lc] ++ jW(A, (ad * ((lE + lF) + lG)))._1), lM)
2608+ let lP = min([iZ, (lL + fg._3)])
2609+ $Tuple2((([IntegerEntry(iY, lP), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], makeString(fg._1, "_")], ":"))] ++ lg) ++ jW(A, (ad * ((lH + lI) + lJ)))._1), lP)
25552610 }
25562611 }
25572612 }
25612616
25622617 @Callable(gH)
25632618 func healES () = {
2564- let lc = kZ(gH)
2619+ let lg = kZ(gH)
25652620 if ((size(gH.payments) != 1))
25662621 then throw("Exactly one payment required")
25672622 else {
2568- let ld = value(gH.payments[0])
2569- if ((ld.assetId != cw))
2623+ let lh = value(gH.payments[0])
2624+ if ((lh.assetId != cw))
25702625 then throw("Allowed USDT payment only!")
25712626 else {
25722627 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
25772632 else {
25782633 let iY = z(A)
25792634 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
2580- let lI = valueOrElse(getInteger(iY), iZ)
2581- if ((lI > 0))
2635+ let lL = valueOrElse(getInteger(iY), iZ)
2636+ if ((lL > 0))
25822637 then throw("HP should be 0 to call Emergency Service")
25832638 else {
25842639 let hI = bI(A)
25852640 let il = hH(hI)
2586- let lJ = if ((il[bk] == ""))
2641+ let lM = if ((il[bk] == ""))
25872642 then nil
25882643 else split_4C(il[bk], "_")
2589- let lN = if ((size(lJ) > 0))
2590- then parseIntValue(lJ[0])
2644+ let lQ = if ((size(lM) > 0))
2645+ then parseIntValue(lM[0])
25912646 else 0
2592- let lO = if ((size(lJ) > 1))
2593- then parseIntValue(lJ[1])
2647+ let lR = if ((size(lM) > 1))
2648+ then parseIntValue(lM[1])
25942649 else 0
2595- let lP = if ((size(lJ) > 2))
2596- then parseIntValue(lJ[2])
2650+ let lS = if ((size(lM) > 2))
2651+ then parseIntValue(lM[2])
25972652 else 0
2598- if (if (if ((lN > 0))
2653+ if (if (if ((lQ > 0))
25992654 then true
2600- else (lO > 0))
2655+ else (lR > 0))
26012656 then true
2602- else (lP > 0))
2657+ else (lS > 0))
26032658 then throw("You have to use own Medical Kit")
26042659 else {
2605- let lQ = getString(db, bM())
2606- let lR = if (isDefined(lQ))
2607- then split_4C(value(lQ), "_")
2660+ let lT = getString(db, bM())
2661+ let lU = if (isDefined(lT))
2662+ then split_4C(value(lT), "_")
26082663 else nil
2609- let lS = if ((size(lR) > 0))
2610- then parseIntValue(lR[0])
2664+ let lV = if ((size(lU) > 0))
2665+ then parseIntValue(lU[0])
26112666 else 0
2612- if ((0 >= lS))
2667+ if ((0 >= lV))
26132668 then throw("There are no Medical Kits L1 at Emergency Service storage")
26142669 else {
2615- let lM = (lI + parseIntValue(split(aS[0], "_")[aU]))
2616- let lT = makeString([toString((lS - 1)), removeByIndex(lR, 0)], "_")
2670+ let lP = (lL + parseIntValue(split(aS[0], "_")[aU]))
2671+ let lW = makeString([toString((lV - 1)), removeByIndex(lU, 0)], "_")
26172672 let co = split(aS[0], "_")
2618- let lU = cn(co)
2619- let lV = fraction((lU * aL), aK, (cD * aX))
2620- if ((ld.amount != lV))
2621- then throw(("Payment attached should be " + toString(lV)))
2673+ let lX = cn(co)
2674+ let lY = fraction((lX * aL), aK, (cD * aX))
2675+ if ((lh.amount != lY))
2676+ then throw(("Payment attached should be " + toString(lY)))
26222677 else {
2623- let fg = dv(invoke(db, "updateEsStorage", [lT], [AttachedPayment(cw, lV)]))
2624- $Tuple2(([IntegerEntry(iY, lM), lc] ++ jW(A, X)._1), fg)
2678+ let fg = dv(invoke(db, "updateEsStorage", [lW], [AttachedPayment(cw, lY)]))
2679+ $Tuple2(((lg :+ IntegerEntry(iY, lP)) ++ jW(A, X)._1), fg)
26252680 }
26262681 }
26272682 }
26342689
26352690
26362691 @Callable(gH)
2637-func updateBackpack (A,lW) = if ((gH.caller != db))
2692+func updateBackpack (A,lZ) = if ((gH.caller != db))
26382693 then throw("permission denied")
2639- else $Tuple2([StringEntry(bI(A), lW)], lW)
2694+ else $Tuple2([StringEntry(bI(A), lZ)], lZ)
26402695
26412696
26422697
26432698 @Callable(gH)
26442699 func commitForRandom () = {
2645- let lc = kZ(gH)
2646- let lX = (height + do)
2700+ let lg = kZ(gH)
2701+ let ma = (height + do)
26472702 let c = toString(gH.caller)
2648- $Tuple2(([IntegerEntry(dp(c), lX)] :+ lc), lX)
2649- }
2650-
2651-
2652-
2653-@Callable(gH)
2654-func awardSLand (cL) = if ((gH.caller != de))
2655- then throw("Access denied")
2656- else if ((size(gH.payments) != 0))
2657- then throw("No payments required")
2658- else {
2659- let fg = iF(addressFromStringValue(cL), gH.transactionId)
2660- $Tuple2(fg._1, fg._2._1)
2661- }
2703+ $Tuple2(([IntegerEntry(dp(c), ma)] ++ lg), ma)
2704+ }
26622705
26632706
26642707
26652708 @Callable(gH)
26662709 func buySLand () = {
2667- let lc = kZ(gH)
2710+ let lg = kZ(gH)
26682711 if ((size(gH.payments) != 1))
26692712 then throw("Exactly one payment required")
26702713 else {
2671- let ld = value(gH.payments[0])
2672- if ((ld.assetId != cw))
2714+ let lh = value(gH.payments[0])
2715+ if ((lh.assetId != cw))
26732716 then throw("Allowed USDT payment only!")
2674- else if ((ld.amount != ed))
2717+ else if ((lh.amount != ed))
26752718 then throw(("Payment attached should be " + toString(ed)))
26762719 else {
26772720 let fg = iF(gH.caller, gH.transactionId)
2678- let lY = dy(invoke(df, "burnAcres", [ee], nil))
2679- $Tuple2((((fg._1 :+ ScriptTransfer(db, ld.amount, cw)) ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY))
2721+ let mb = dy(invoke(df, "burnAcres", [ee], nil))
2722+ $Tuple2((((fg._1 :+ ScriptTransfer(db, lh.amount, cw)) ++ kc(toString(gH.caller), Z)._1) ++ lg), $Tuple2(fg._2._1, mb))
26802723 }
26812724 }
26822725 }
26852728
26862729 @Callable(gH)
26872730 func expedition (iN,iO) = {
2688- let lc = kZ(gH)
2731+ let lg = kZ(gH)
26892732 if ((size(gH.payments) != 0))
26902733 then throw("No payments required")
26912734 else {
26982741 let jN = split(il[bj], "_")
26992742 let jP = makeString(fa(true, jN, ec), "_")
27002743 let gu = F(A)
2701- let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2702- let lZ = fh(ls, hm._5)
2703- let lu = lZ._1
2704- let lv = lZ._2
2705- let ma = iF(gH.caller, gH.transactionId)
2706- let iL = ma._2._1
2744+ let lv = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2745+ let mc = fh(lv, hm._5)
2746+ let lx = mc._1
2747+ let ly = mc._2
2748+ let md = iF(gH.caller, gH.transactionId)
2749+ let iL = md._2._1
27072750 let fg = if ((0 >= hm._1))
2708- then $Tuple3([IntegerEntry(iY, 0), StringEntry(gu, lu)], "", 0)
2709- else $Tuple3((ma._1 ++ (if (lv)
2751+ then $Tuple3([IntegerEntry(iY, 0), StringEntry(gu, lx)], "", 0)
2752+ else $Tuple3((md._1 ++ (if (ly)
27102753 then [StringEntry(L(A), "0_0_0_0_0")]
2711- else ((((nil :+ StringEntry(bJ(A), makeString([ma._2._2, "L", iL], "_"))) :+ IntegerEntry(iY, hm._1)) :+ StringEntry(gu, lu)) :+ StringEntry(hI, makeString([il[bh], il[bi], jP, il[bk]], ":"))))), iL, hm._3)
2754+ else ((((nil :+ StringEntry(bJ(A), makeString([md._2._2, "L", iL], "_"))) :+ IntegerEntry(iY, hm._1)) :+ StringEntry(gu, lx)) :+ StringEntry(hI, makeString([il[bh], il[bi], jP, il[bk]], ":"))))), iL, hm._3)
27122755 if (km(A))
27132756 then throw("expedition_checkTournament")
27142757 else if (kn(A))
27152758 then throw("expedition_checkDelivery")
27162759 else {
2717- let lY = dy(invoke(df, "burnAcres", [ee], nil))
2718- $Tuple2(((fg._1 ++ jW(A, Z)._1) :+ lc), $Tuple3(fg._2, fg._3, lY))
2760+ let mb = dy(invoke(df, "burnAcres", [ee], nil))
2761+ $Tuple2(((fg._1 ++ jW(A, Z)._1) ++ lg), $Tuple3(fg._2, fg._3, mb))
27192762 }
27202763 }
27212764 }
27242767
27252768 @Callable(gH)
27262769 func buySLandForAcres () = {
2727- let lc = kZ(gH)
2770+ let lg = kZ(gH)
27282771 if ((size(gH.payments) != 1))
27292772 then throw("exactly 1 payment must be attached")
27302773 else {
2731- let ld = gH.payments[0]
2732- let fn = ld.amount
2733- if (if (!(isDefined(ld.assetId)))
2774+ let lh = gH.payments[0]
2775+ let fn = lh.amount
2776+ if (if (!(isDefined(lh.assetId)))
27342777 then true
2735- else (value(ld.assetId) != dn))
2778+ else (value(lh.assetId) != dn))
27362779 then throw("ACRES payments only!")
27372780 else if ((fn != ee))
27382781 then throw(("Payment attached should be " + toString(ee)))
27392782 else {
27402783 let fg = iF(gH.caller, gH.transactionId)
2741- let lY = dy(invoke(df, "burnAcres", [ee], [AttachedPayment(dn, fn)]))
2742- $Tuple2(((fg._1 ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY))
2784+ let mb = dy(invoke(df, "burnAcres", [ee], [AttachedPayment(dn, fn)]))
2785+ $Tuple2(((fg._1 ++ kc(toString(gH.caller), Z)._1) ++ lg), $Tuple2(fg._2._1, mb))
27432786 }
27442787 }
27452788 }
27482791
27492792 @Callable(gH)
27502793 func upgradeInfra (P) = {
2751- let lc = kZ(gH)
2794+ let lg = kZ(gH)
27522795 if ((size(gH.payments) != 0))
27532796 then throw("No payments required")
27542797 else {
27552798 let fg = jH(true, gH.caller, 0, P)
27562799 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
2757- $Tuple2(((fg._1 :+ lc) ++ jW(A, fraction(aa, fg._3, cD))._1), fg._2)
2758- }
2759- }
2760-
2761-
2762-
2763-@Callable(gH)
2764-func activateArtifact (mb,mc) = {
2765- let lc = kZ(gH)
2800+ $Tuple2(((fg._1 ++ lg) ++ jW(A, fraction(aa, fg._3, cD))._1), fg._2)
2801+ }
2802+ }
2803+
2804+
2805+
2806+@Callable(gH)
2807+func activateArtifact (me,mf) = {
2808+ let lg = kZ(gH)
27662809 if ((size(gH.payments) != 0))
27672810 then throw("No payments required")
27682811 else {
27692812 let c = toString(gH.caller)
27702813 let fg = {
2771- let cx = mb
2814+ let cx = me
27722815 if (("PRESALE" == cx))
2773- then kk(c, mc)
2816+ then kk(c, mf)
27742817 else if (("ONBOARD" == cx))
27752818 then kd(c)
27762819 else throw("Unknown artifact")
27772820 }
2778- (fg :+ lc)
2821+ (fg ++ lg)
27792822 }
27802823 }
27812824
27832826
27842827 @Callable(gH)
27852828 func mergeLands (kA) = {
2786- let lc = kZ(gH)
2829+ let lg = kZ(gH)
27872830 if ((size(gH.payments) != 0))
27882831 then throw("No payments required")
27892832 else {
27902833 let fg = kY(toString(gH.caller), kA)
2791- $Tuple2(((fg._1 :+ lc) ++ kc(toString(gH.caller), ab)._1), fg._2)
2792- }
2793- }
2794-
2795-
2796-
2797-@Callable(gH)
2798-func cargoExchange (md,P) = {
2799- let lc = kZ(gH)
2834+ $Tuple2(((fg._1 ++ lg) ++ kc(toString(gH.caller), ab)._1), fg._2)
2835+ }
2836+ }
2837+
2838+
2839+
2840+@Callable(gH)
2841+func cargoExchange (mg,P) = {
2842+ let lg = kZ(gH)
28002843 if ((size(gH.payments) != 0))
28012844 then throw("No payments required")
28022845 else {
2803- let ik = split_4C(md, ":")
2846+ let ik = split_4C(mg, ":")
28042847 let c = toString(gH.originCaller)
28052848 let jp = value(assetInfo(fromBase58String(P)))
28062849 let jq = br(P)
28292872 let id = split(hM[bc], "_")
28302873 let jE = (parseIntValue(id[be]) + fg._7)
28312874 let jF = (parseIntValue(id[bf]) - fg._7)
2832-[StringEntry(hI, makeString_2C([il[bh], fg._4, fg._5, fg._6], ":")), StringEntry(hV, makeString_2C([hM[aY], fg._1, fg._2, fg._3, makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")], ":")), lc]
2875+ ([StringEntry(hI, makeString_2C([il[bh], fg._4, fg._5, fg._6], ":")), StringEntry(hV, makeString_2C([hM[aY], fg._1, fg._2, fg._3, makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")], ":"))] ++ lg)
28332876 }
28342877 }
28352878 }
28472890 if ((size(ia) != 5))
28482891 then throw("warehouse string should contain 4 ':' separators")
28492892 else {
2850- let me = split(ia[bc], "_")[bd]
2893+ let mh = split(ia[bc], "_")[bd]
28512894 let jE = hL(ia)
2852- let mf = hJ(ia[aY])
2853- let jF = ((mf - parseIntValue(me)) - jE)
2854- let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([me, toString(jE), toString(jF), toString(mf)], "_")], ":")
2855- $Tuple2([StringEntry(hV, mg)], mg)
2895+ let mi = hJ(ia[aY])
2896+ let jF = ((mi - parseIntValue(mh)) - jE)
2897+ let mj = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([mh, toString(jE), toString(jF), toString(mi)], "_")], ":")
2898+ $Tuple2([StringEntry(hV, mj)], mj)
28562899 }
28572900 }
28582901
28672910 let hW = (dE(split(jp.description, "_")[dh]) / cE)
28682911 let hX = valueOrElse(getInteger(by(P)), 0)
28692912 let ia = hU(hV, hW, hX)
2870- let me = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ia], nil))
2913+ let mh = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ia], nil))
28712914 let jE = hL(ia)
2872- let mf = hJ(ia[aY])
2873- let jF = ((mf - me) - jE)
2874- let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([toString(me), toString(jE), toString(jF), toString(mf)], "_")], ":")
2875- $Tuple2([StringEntry(hV, mg)], mg)
2915+ let mi = hJ(ia[aY])
2916+ let jF = ((mi - mh) - jE)
2917+ let mj = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([toString(mh), toString(jE), toString(jF), toString(mi)], "_")], ":")
2918+ $Tuple2([StringEntry(hV, mj)], mj)
28762919 }
28772920
28782921
28812924 func fixContinentProportions (kA) = if ((gH.caller != da))
28822925 then throw("Access denied")
28832926 else {
2884- func mh (eO,mi) = (eO :+ valueOrElse(getString(dr(mi)), "0_0_0_0_0_0"))
2927+ func mk (eO,ml) = (eO :+ valueOrElse(getString(dr(ml)), "0_0_0_0_0_0"))
28852928
28862929 let gr = {
28872930 let eQ = aP
28892932 let eS = nil
28902933 func eT (eU,eV) = if ((eV >= eR))
28912934 then eU
2892- else mh(eU, eQ[eV])
2935+ else mk(eU, eQ[eV])
28932936
28942937 func eW (eU,eV) = if ((eV >= eR))
28952938 then eU
28972940
28982941 eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5)
28992942 }
2900- func mj (eO,P) = {
2943+ func mm (eO,P) = {
29012944 let jp = value(assetInfo(fromBase58String(P)))
29022945 let jt = split(jp.description, "_")
29032946 let hW = (dE(jt[dh]) / cE)
2904- let mi = jt[dj]
2947+ let ml = jt[dj]
29052948 let gD = gJ(jt[di])
2906- let hl = value(indexOf(aP, mi))
2949+ let hl = value(indexOf(aP, ml))
29072950 let kP = split(eO[hl], "_")
2908- let mk = makeString(gB(kP, gD, hW, 1), "_")
2909- let cx = mi
2951+ let mn = makeString(gB(kP, gD, hW, 1), "_")
2952+ let cx = ml
29102953 if (("Americas" == cx))
2911- then [mk, eO[1], eO[2], eO[3], eO[4]]
2954+ then [mn, eO[1], eO[2], eO[3], eO[4]]
29122955 else if (("Europe" == cx))
2913- then [eO[0], mk, eO[2], eO[3], eO[4]]
2956+ then [eO[0], mn, eO[2], eO[3], eO[4]]
29142957 else if (("Asia" == cx))
2915- then [eO[0], eO[1], mk, eO[3], eO[4]]
2958+ then [eO[0], eO[1], mn, eO[3], eO[4]]
29162959 else if (("Africa" == cx))
2917- then [eO[0], eO[1], eO[2], mk, eO[4]]
2960+ then [eO[0], eO[1], eO[2], mn, eO[4]]
29182961 else if (("Oceania" == cx))
2919- then [eO[0], eO[1], eO[2], eO[3], mk]
2962+ then [eO[0], eO[1], eO[2], eO[3], mn]
29202963 else throw("wrong continent")
29212964 }
29222965
29262969 let eS = gr
29272970 func hC (eU,eV) = if ((eV >= eR))
29282971 then eU
2929- else mj(eU, eQ[eV])
2972+ else mm(eU, eQ[eV])
29302973
29312974 func hD (eU,eV) = if ((eV >= eR))
29322975 then eU
29502993 let kI = if (isDefined(kM))
29512994 then split_51C(value(kM), "_")
29522995 else nil
2953- func ml (eO,P) = {
2996+ func mo (eO,P) = {
29542997 let jp = value(assetInfo(fromBase58String(P)))
29552998 let dF = split(jp.description, "_")[dh]
29562999 (eO + dE(dF))
29613004 let eS = 0
29623005 func eT (eU,eV) = if ((eV >= eR))
29633006 then eU
2964- else ml(eU, eQ[eV])
3007+ else mo(eU, eQ[eV])
29653008
29663009 func eW (eU,eV) = if ((eV >= eR))
29673010 then eU
29763019
29773020 @Callable(gH)
29783021 func setCustomName (bp,kK,bt) = {
2979- let lc = kZ(gH)
3022+ let lg = kZ(gH)
29803023 if ((size(gH.payments) != 1))
29813024 then throw("Exactly one payment required")
29823025 else {
2983- let ld = value(gH.payments[0])
2984- if ((ld.assetId != cw))
3026+ let lh = value(gH.payments[0])
3027+ if ((lh.assetId != cw))
29853028 then throw("Allowed USDT payment only!")
2986- else if ((ld.amount != dZ))
3029+ else if ((lh.amount != dZ))
29873030 then throw(("Payment should be " + toString(dZ)))
29883031 else if (contains(kK, "__"))
29893032 then throw(("Name should not contain '__': " + kK))
29913034 then throw(("Name too long, maxLength=" + toString(ea)))
29923035 else {
29933036 let c = toString(gH.originCaller)
2994- let mm = {
3037+ let mp = {
29953038 let cx = bt
29963039 if (("ACCOUNT" == cx))
29973040 then {
2998- let mn = eu(kK)
2999- let mo = getString(mn)
3000- if (isDefined(mo))
3041+ let mq = eu(kK)
3042+ let mr = getString(mq)
3043+ if (isDefined(mr))
30013044 then throw(("Name already registered: " + kK))
30023045 else {
3003- let mp = bB(c)
3004- let mq = getString(mp)
3005- let mr = if (isDefined(mq))
3006- then [DeleteEntry(eu(value(mq)))]
3046+ let ms = bB(c)
3047+ let mt = getString(ms)
3048+ let mu = if (isDefined(mt))
3049+ then [DeleteEntry(eu(value(mt)))]
30073050 else nil
3008- (((mr :+ StringEntry(mp, kK)) :+ StringEntry(mn, c)) ++ kc(c, Y)._1)
3051+ (((mu :+ StringEntry(ms, kK)) :+ StringEntry(mq, c)) ++ kc(c, Y)._1)
30093052 }
30103053 }
30113054 else if (("LAND" == cx))
30193062 if ((js != c))
30203063 then throw((aC + " is not yours"))
30213064 else {
3022- let mn = en(kK)
3023- let mo = getString(mn)
3024- if (isDefined(mo))
3065+ let mq = en(kK)
3066+ let mr = getString(mq)
3067+ if (isDefined(mr))
30253068 then throw(("Name already registered: " + kK))
30263069 else {
3027- let ms = bq(bp)
3028- let mq = getString(ms)
3029- let mr = if (isDefined(mq))
3030- then [DeleteEntry(en(value(mq)))]
3070+ let mv = bq(bp)
3071+ let mt = getString(mv)
3072+ let mu = if (isDefined(mt))
3073+ then [DeleteEntry(en(value(mt)))]
30313074 else nil
3032- (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ kc(c, Y)._1)
3075+ (((mu :+ StringEntry(mv, kK)) :+ StringEntry(mq, bp)) ++ kc(c, Y)._1)
30333076 }
30343077 }
30353078 }
30473090 if ((js != c))
30483091 then throw((aD + " is not yours"))
30493092 else {
3050- let mn = et(kK)
3051- let mo = getString(mn)
3052- if (isDefined(mo))
3093+ let mq = et(kK)
3094+ let mr = getString(mq)
3095+ if (isDefined(mr))
30533096 then throw(("Name already registered: " + kK))
30543097 else {
3055- let ms = bA(bp)
3056- let mq = getString(ms)
3057- let mr = if (isDefined(mq))
3058- then [DeleteEntry(et(value(mq)))]
3098+ let mv = bA(bp)
3099+ let mt = getString(mv)
3100+ let mu = if (isDefined(mt))
3101+ then [DeleteEntry(et(value(mt)))]
30593102 else nil
3060- (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ jW(bp, Y)._1)
3103+ (((mu :+ StringEntry(mv, kK)) :+ StringEntry(mq, bp)) ++ jW(bp, Y)._1)
30613104 }
30623105 }
30633106 }
30643107 }
30653108 else throw("Unknown entity type")
30663109 }
3067- $Tuple2(((mm :+ ScriptTransfer(db, ld.amount, cw)) :+ lc), 0)
3110+ $Tuple2(((mp :+ ScriptTransfer(db, lh.amount, cw)) ++ lg), 0)
30683111 }
30693112 }
30703113 }
30723115
30733116
30743117 @Callable(gH)
3075-func setReferrals (mt,mu) = if ((gH.callerPublicKey != dW))
3118+func setReferrals (mw,mx) = if ((gH.callerPublicKey != dW))
30763119 then throw("Permission denied")
30773120 else {
3078- let lc = kZ(gH)
3121+ let lg = kZ(gH)
30793122 if ((size(gH.payments) != 0))
30803123 then throw("No payments required")
3081- else if (!(isDefined(addressFromString(mt))))
3082- then throw(("Invalid address: " + mt))
3083- else if (!(isDefined(addressFromString(mu))))
3084- then throw(("Invalid address: " + mu))
3124+ else if (!(isDefined(addressFromString(mw))))
3125+ then throw(("Invalid address: " + mw))
3126+ else if (!(isDefined(addressFromString(mx))))
3127+ then throw(("Invalid address: " + mx))
30853128 else {
3086- let mv = ev()
3087- let mw = getString(mv)
3088- let mx = if (isDefined(mw))
3089- then split_4C(value(mw), "_")
3129+ let my = ev()
3130+ let mz = getString(my)
3131+ let mA = if (isDefined(mz))
3132+ then split_4C(value(mz), "_")
30903133 else nil
3091- if (containsElement(mx, mu))
3092- then throw((mu + " is not newbie (already has referrals)"))
3134+ if (containsElement(mA, mx))
3135+ then throw((mx + " is not newbie (already has referrals)"))
30933136 else {
3094- let ke = bC(mu)
3137+ let ke = bC(mx)
30953138 let kf = getString(ke)
30963139 if (if (isDefined(kf))
30973140 then isDefined(addressFromString(value(kf)))
30983141 else false)
3099- then throw(((mu + " already has refBy: ") + value(kf)))
3142+ then throw(((mx + " already has refBy: ") + value(kf)))
31003143 else {
3101- let my = bF(mt)
3102- let mz = getString(my)
3103- let mA = if (isDefined(mz))
3104- then split_4C(value(mz), "_")
3144+ let mB = bF(mw)
3145+ let mC = getString(mB)
3146+ let mD = if (isDefined(mC))
3147+ then split_4C(value(mC), "_")
31053148 else nil
3106- if (containsElement(mA, mu))
3107- then throw((((mt + " already contains ") + mu) + " within referrals"))
3149+ if (containsElement(mD, mx))
3150+ then throw((((mw + " already contains ") + mx) + " within referrals"))
31083151 else {
3109- let mB = makeString_2C((mA :+ mu), "_")
3110- let mC = if (containsElement(mx, mt))
3111- then value(mw)
3112- else makeString_2C((mx :+ mt), "_")
3113- $Tuple2([StringEntry(ke, mt), StringEntry(my, mB), StringEntry(mv, mC), lc], 0)
3152+ let mE = makeString_2C((mD :+ mx), "_")
3153+ let mF = if (containsElement(mA, mw))
3154+ then value(mz)
3155+ else makeString_2C((mA :+ mw), "_")
3156+ $Tuple2(([StringEntry(ke, mw), StringEntry(mB, mE), StringEntry(my, mF)] ++ lg), 0)
31143157 }
31153158 }
31163159 }
31203163
31213164
31223165 @Callable(gH)
3123-func distributePoints (mD,mE,mF,mG,mH) = {
3124- let lc = kZ(gH)
3166+func distributePoints (mG,mH,mI,mJ,mK) = {
3167+ let lg = kZ(gH)
31253168 if ((size(gH.payments) != 0))
31263169 then throw("No payments required")
31273170 else {
31283171 let c = toString(gH.originCaller)
31293172 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3130- let mI = I(c)
3131- let mJ = valueOrElse(getInteger(an, mI), 0)
3132- let mK = E(A)
3133- let mL = valueOrElse(getInteger(an, mK), 0)
3134- let mM = (mJ + mL)
3135- let mN = ((((mD + mE) + mF) + mG) + mH)
3136- if ((mN > mM))
3137- then throw((("There are only " + toString(mM)) + " free points to distribute"))
3173+ let mL = I(c)
3174+ let mM = valueOrElse(getInteger(an, mL), 0)
3175+ let mN = E(A)
3176+ let mO = valueOrElse(getInteger(an, mN), 0)
3177+ let mP = (mM + mO)
3178+ let mQ = ((((mG + mH) + mI) + mJ) + mK)
3179+ if ((mQ > mP))
3180+ then throw((("There are only " + toString(mP)) + " free points to distribute"))
31383181 else {
3139- let mO = B(A)
3140- let aq = split(valueOrElse(getString(an, mO), "0_0_0_0_0"), "_")
3141- let mP = (mJ - mN)
3142- $Tuple2([IntegerEntry(mI, if ((0 > mP))
3182+ let mR = B(A)
3183+ let aq = split(valueOrElse(getString(an, mR), "0_0_0_0_0"), "_")
3184+ let mS = (mM - mQ)
3185+ $Tuple2(([IntegerEntry(mL, if ((0 > mS))
31433186 then 0
3144- else mP), IntegerEntry(mK, if ((0 > mP))
3145- then (mL + mP)
3146- else mL), StringEntry(mO, makeString([toString((parseIntValue(aq[k]) + mD)), toString((parseIntValue(aq[l]) + mE)), toString((parseIntValue(aq[m]) + mF)), toString((parseIntValue(aq[n]) + mG)), toString((parseIntValue(aq[o]) + mH))], "_")), lc], 0)
3187+ else mS), IntegerEntry(mN, if ((0 > mS))
3188+ then (mO + mS)
3189+ else mO), StringEntry(mR, makeString([toString((parseIntValue(aq[k]) + mG)), toString((parseIntValue(aq[l]) + mH)), toString((parseIntValue(aq[m]) + mI)), toString((parseIntValue(aq[n]) + mJ)), toString((parseIntValue(aq[o]) + mK))], "_"))] ++ lg), 0)
31473190 }
31483191 }
31493192 }
31563199
31573200
31583201 @Callable(gH)
3159-func splitByGlobalAndLocalWeightsREADONLY (mQ,mR,gK) = {
3202+func splitByGlobalAndLocalWeightsREADONLY (mT,mU,gK) = {
31603203 let gD = gJ(gK)
3161- $Tuple2(nil, $Tuple2(eX(mQ), eI(mR, gD)))
3204+ $Tuple2(nil, $Tuple2(eX(mT), eI(mU, gD)))
31623205 }
31633206
31643207
31833226 let iG = gH.caller
31843227 if (!(containsElement([dd, db, de, df], iG)))
31853228 then throw("Access denied")
3186- else $Tuple2([kZ(gH)], 42)
3229+ else $Tuple2(kZ(gH), 42)
31873230 }
31883231
31893232
32053248
32063249
32073250 @Callable(gH)
3208-func equipDuck (mS) = {
3209- let lc = kZ(gH)
3251+func equipDuck (mV) = {
3252+ let lg = kZ(gH)
32103253 if ((size(gH.payments) != 0))
32113254 then throw("No payments required")
32123255 else {
32183261 then throw("equipDuck_checkDelivery")
32193262 else {
32203263 let gu = F(A)
3221- let mT = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3264+ let mW = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32223265 let hI = bI(A)
32233266 let il = hH(hI)
3224- let lu = split(mS, "_")
3225- if ((size(lu) != q))
3267+ let lx = split(mV, "_")
3268+ if ((size(lx) != q))
32263269 then throw("Wrong equipment string")
32273270 else {
3228- let gw = gj(mT, fu(il[bk]), true, nil)
3229- let gx = split(lu[p], ";")[1]
3271+ let gw = gj(mW, fu(il[bk]), true, nil)
3272+ let gx = split(lx[p], ";")[1]
32303273 let ao = if ((gx == ""))
32313274 then 0
32323275 else {
32513294 }
32523295 }
32533296 let ge = am(this, A, ao, true)
3254- let gA = gj(lu, gw, false, ge)
3255- let mU = fz(gA)
3256- $Tuple2([StringEntry(gu, mS), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], mU], ":")), StringEntry(L(A), makeString([toString(ge[7]), toString(ge[8]), toString(ge[9]), toString(ge[10]), toString(ge[11])], "_")), lc], 0)
3297+ let gA = gj(lx, gw, false, ge)
3298+ let mX = fz(gA)
3299+ $Tuple2(([StringEntry(gu, mV), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], mX], ":")), StringEntry(L(A), makeString([toString(ge[7]), toString(ge[8]), toString(ge[9]), toString(ge[10]), toString(ge[11])], "_"))] ++ lg), 0)
32573300 }
32583301 }
32593302 }
32623305
32633306
32643307 @Callable(gH)
3265-func fortificateLand (P,mV) = {
3266- let lc = kZ(gH)
3308+func fortificateLand (P,mY) = {
3309+ let lg = kZ(gH)
32673310 if ((size(gH.payments) != 0))
32683311 then throw("No payments required")
32693312 else {
32703313 let c = toString(gH.originCaller)
32713314 let A = valueOrElse(getString(bH(c)), "")
32723315 let fE = am(this, A, 0, false)
3273- let mW = bz(P)
3274- let mX = split(valueOrElse(getString(mW), ":0_15:0_18:0"), "_")
3316+ let mZ = bz(P)
3317+ let na = split(valueOrElse(getString(mZ), ":0_15:0_18:0"), "_")
32753318 let jp = value(assetInfo(fromBase58String(P)))
32763319 let hW = (dE(split(jp.description, "_")[dh]) / cE)
32773320 let hX = valueOrElse(getInteger(by(P)), 0)
32783321 let hV = bx(P)
32793322 let ia = hU(hV, hW, hX)
3280- let mY = split(ia[bc], "_")
3281- let mZ = parseIntValue(mY[be])
3282- let na = parseIntValue(mY[bf])
3283- let nb = split(mV, "_")
3284- let nc = gq(mX, fu(ia[bb]), mZ, na, true, nil)
3285- let gw = nc._1
3286- let nd = nc._2
3287- let ne = nc._3
3288- let nf = gq(nb, gw, nd, ne, false, fE)
3289- let gA = nf._1
3323+ let nb = split(ia[bc], "_")
3324+ let nc = parseIntValue(nb[be])
3325+ let nd = parseIntValue(nb[bf])
3326+ let ne = split(mY, "_")
3327+ let nf = gq(na, fu(ia[bb]), nc, nd, true, nil)
3328+ let gw = nf._1
32903329 let ng = nf._2
32913330 let nh = nf._3
3292- let mU = fz(gA)
3293- let jV = makeString([mY[bd], toString(ng), toString(nh), mY[bg]], "_")
3294- $Tuple2([StringEntry(mW, mV), StringEntry(hV, makeString_2C([ia[aY], ia[aZ], ia[ba], mU, jV], ":")), lc], 0)
3331+ let ni = gq(ne, gw, ng, nh, false, fE)
3332+ let gA = ni._1
3333+ let nj = ni._2
3334+ let nk = ni._3
3335+ let mX = fz(gA)
3336+ let jV = makeString([nb[bd], toString(nj), toString(nk), nb[bg]], "_")
3337+ $Tuple2(([StringEntry(mZ, mY), StringEntry(hV, makeString_2C([ia[aY], ia[aZ], ia[ba], mX, jV], ":"))] ++ lg), 0)
32953338 }
32963339 }
32973340
33013344 func initDuckTourAttempt (A) = if ((gH.caller != de))
33023345 then throw("Access denied")
33033346 else {
3304- let lc = kZ(gH)
33053347 let iY = z(A)
33063348 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
33073349 let kq = valueOrElse(getInteger(iY), iZ)
3308- let ni = bJ(A)
3309- let jn = valueOrElse(getString(ni), aJ)
3350+ let nl = bJ(A)
3351+ let jn = valueOrElse(getString(nl), aJ)
33103352 let ce = valueOrElse(getInteger(de, bP), 0)
3311- let nj = (toString(ce) + "_T_0")
3312- $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nj)], nj)
3353+ let nm = (toString(ce) + "_T_0")
3354+ $Tuple2([IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(nl, nm)], nm)
33133355 }
33143356
33153357
33163358
33173359 @Callable(gH)
33183360 func breakAttempt () = {
3319- let lc = kZ(gH)
3361+ let lg = kZ(gH)
33203362 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
3321- let ni = bJ(A)
3322- let jn = valueOrElse(getString(ni), aJ)
3363+ let nl = bJ(A)
3364+ let jn = valueOrElse(getString(nl), aJ)
33233365 if ((split(jn, "_")[bm] != "T"))
33243366 then throw("Your duck is not in the tournament")
33253367 else {
33263368 let kv = getIntegerValue(J(A))
33273369 let kw = getStringValue(K(A))
3328- $Tuple2([lc, IntegerEntry(z(A), kv), StringEntry(ni, kw)], jn)
3370+ $Tuple2(((lg :+ IntegerEntry(z(A), kv)) :+ StringEntry(nl, kw)), jn)
33293371 }
33303372 }
33313373
33463388 func exitDeliveryInternal (A) = if ((gH.caller != this))
33473389 then throw("Access denied")
33483390 else {
3349- let ma = ko(A)
3350- $Tuple2((ma._1 ++ ma._2), false)
3391+ let md = ko(A)
3392+ $Tuple2((md._1 ++ md._2), false)
33513393 }
33523394
33533395
33563398 func autoExitDelivery (A) = if ((gH.caller != this))
33573399 then throw("Access denied")
33583400 else {
3359- let ma = ko(A)
3360- $Tuple2(ma._1, $Tuple2(ma._3, ma._4))
3401+ let md = ko(A)
3402+ $Tuple2(md._1, $Tuple2(md._3, md._4))
33613403 }
33623404
33633405
33643406
33653407 @Callable(gH)
33663408 func prepareRobbery (iN,iO) = {
3367- let lc = kZ(gH)
3409+ let lg = kZ(gH)
33683410 if (!(sigVerify_8Kb(iN, iO, dW)))
33693411 then throw("signature does not match")
33703412 else if ((size(gH.payments) != 1))
33713413 then throw("exactly 1 payment must be attached")
33723414 else {
3373- let ld = gH.payments[0]
3374- let nk = ld.amount
3375- if (if (!(isDefined(ld.assetId)))
3415+ let lh = gH.payments[0]
3416+ let nn = lh.amount
3417+ if (if (!(isDefined(lh.assetId)))
33763418 then true
3377- else (value(ld.assetId) != dl))
3419+ else (value(lh.assetId) != dl))
33783420 then throw("WLGOLD payments only!")
33793421 else {
33803422 let fm = split(toUtf8String(iN), "|")
33823424 then throw("Wrong message format")
33833425 else {
33843426 let A = fm[0]
3385- let ay = au(this, A)._1
3386- if ((ay > nk))
3387- then throw(((("Payment " + toString(nk)) + " < required ") + toString(ay)))
3388- else {
3389- let nl = split(fm[1], "_")
3390- let ax = lastBlock.timestamp
3391- let az = valueOrElse(getInteger(R(A)), 0)
3392- let aA = valueOrElse(getString(S(A)), "")
3393- let aB = valueOrElse(getInteger(Q(aA)), 0)
3394- if (if ((az != x))
3395- then (aB > ax)
3396- else false)
3397- then throw(("You already started robbing, wait till " + toString(aB)))
3398- else {
3399- func nm (eO,P) = {
3400- let nn = valueOrElse(getInteger(O(P)), 0)
3401- let no = valueOrElse(getInteger(Q(P)), 0)
3402- if ((nn > size(u)))
3403- then throw("Invalid state")
3404- else if ((ax > no))
3405- then {
3406- let np = valueOrElse(getInteger(br(P)), 0)
3407- if ((0 >= np))
3408- then eO
3409- else {
3410- let go = value(assetInfo(fromBase58String(P)))
3411- let jt = split(go.description, "_")
3412- let jf = dE(jt[dh])
3413- let nq = je(P, jf)
3414- let gN = (ax - np)
3415- let jw = fraction(gN, (nq * jf), a)
3416- if ((v > jw))
3417- then eO
3418- else (eO :+ P)
3419- }
3427+ if (km(A))
3428+ then throw("prepareRobbery_checkTournament")
3429+ else if (kn(A))
3430+ then throw("prepareRobbery_checkDelivery")
3431+ else {
3432+ let ay = au(this, A)._1
3433+ if ((ay > nn))
3434+ then throw(((("Payment " + toString(nn)) + " < required ") + toString(ay)))
3435+ else {
3436+ let no = split(fm[1], "_")
3437+ let ax = lastBlock.timestamp
3438+ let az = valueOrElse(getInteger(R(A)), 0)
3439+ let aA = valueOrElse(getString(S(A)), "")
3440+ let aB = valueOrElse(getInteger(Q(aA)), 0)
3441+ if (if ((az != x))
3442+ then (aB > ax)
3443+ else false)
3444+ then throw(("You already started robbing, wait till " + toString(aB)))
3445+ else {
3446+ func np (eO,P) = {
3447+ let nq = valueOrElse(getInteger(O(P)), 0)
3448+ let nr = valueOrElse(getInteger(Q(P)), 0)
3449+ if ((nq > size(u)))
3450+ then throw("Invalid state")
3451+ else if ((ax > nr))
3452+ then {
3453+ let ns = valueOrElse(getInteger(br(P)), 0)
3454+ if ((0 >= ns))
3455+ then eO
3456+ else {
3457+ let go = value(assetInfo(fromBase58String(P)))
3458+ let jt = split(go.description, "_")
3459+ let jf = dE(jt[dh])
3460+ let nt = je(P, jf)
3461+ let gN = (ax - ns)
3462+ let jw = fraction(gN, (nt * jf), a)
3463+ if ((v > jw))
3464+ then eO
3465+ else (eO :+ P)
3466+ }
3467+ }
3468+ else eO
34203469 }
3421- else eO
3470+
3471+ let nu = {
3472+ let eQ = no
3473+ let eR = size(eQ)
3474+ let eS = nil
3475+ func eT (eU,eV) = if ((eV >= eR))
3476+ then eU
3477+ else np(eU, eQ[eV])
3478+
3479+ func eW (eU,eV) = if ((eV >= eR))
3480+ then eU
3481+ else throw("List size exceeds 10")
3482+
3483+ eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3484+ }
3485+ if ((size(nu) == 0))
3486+ then throw("No candidates for robbery")
3487+ else {
3488+ let nv = dO(size(nu), height, (iO + gH.transactionId))
3489+ let P = nu[nv]
3490+ $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lg), P)
3491+ }
3492+ }
34223493 }
3423-
3424- let nr = {
3425- let eQ = nl
3426- let eR = size(eQ)
3427- let eS = nil
3428- func eT (eU,eV) = if ((eV >= eR))
3429- then eU
3430- else nm(eU, eQ[eV])
3431-
3432- func eW (eU,eV) = if ((eV >= eR))
3433- then eU
3434- else throw("List size exceeds 10")
3435-
3436- eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3437- }
3438- if ((size(nr) == 0))
3439- then throw("No candidates for robbery")
3440- else {
3441- let ns = dO(size(nr), height, (iO + gH.transactionId))
3442- let P = nr[ns]
3443- $Tuple2([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P), lc], P)
3444- }
3445- }
3446- }
3494+ }
34473495 }
34483496 }
34493497 }
34533501
34543502 @Callable(gH)
34553503 func robLand (iN,iO) = {
3456- let lc = kZ(gH)
3504+ let lg = kZ(gH)
34573505 if (!(sigVerify_8Kb(iN, iO, dW)))
34583506 then throw("signature does not match")
34593507 else {
34603508 let bL = toString(gH.caller)
34613509 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
34623510 let ax = lastBlock.timestamp
3463- $Tuple2([lc, IntegerEntry(M(A), ax)], 0)
3511+ $Tuple2((lg :+ IntegerEntry(M(A), ax)), 0)
34643512 }
34653513 }
34663514
34703518 func acceptDelivery () = if (!(cu))
34713519 then throw("Delivery feature is turned off!")
34723520 else {
3473- let lc = kZ(gH)
3521+ let lg = kZ(gH)
34743522 let bL = toString(gH.caller)
34753523 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3476- let nt = valueOrElse(getInteger(db, bN), 0)
3524+ let nw = valueOrElse(getInteger(db, bN), 0)
34773525 let kt = valueOrElse(getInteger(db, bO), 0)
3478- if ((aM > (nt - kt)))
3479- then throw(((("Delivery is not available, fund=" + dJ(nt, 6)) + ", locked=") + dJ(kt, 6)))
3526+ if ((aM > (nw - kt)))
3527+ then throw(((("Delivery is not available, fund=" + dJ(nw, 6)) + ", locked=") + dJ(kt, 6)))
34803528 else {
34813529 let ax = lastBlock.timestamp
3482- let nu = valueOrElse(getInteger(T(A)), 0)
3483- if ((nu > ax))
3484- then throw(("Delivery is forbidden for your duck until " + toString(nu)))
3530+ let nx = valueOrElse(getInteger(T(A)), 0)
3531+ if ((nx > ax))
3532+ then throw(("Delivery is forbidden for your duck until " + toString(nx)))
34853533 else if (km(A))
34863534 then throw("acceptDelivery_checkTournament")
34873535 else if (kn(A))
34883536 then throw("acceptDelivery_checkDelivery")
34893537 else {
3490- let nv = dy(invoke(db, "updateDeliveryLocked", [(kt + aM)], nil))
3538+ let ny = dy(invoke(db, "updateDeliveryLocked", [(kt + aM)], nil))
34913539 let iY = z(A)
34923540 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
34933541 let kq = valueOrElse(getInteger(iY), iZ)
3494- let ni = bJ(A)
3495- let jn = valueOrElse(getString(ni), aJ)
3496- let nw = (toString(ax) + "_D_0")
3497- $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nw)], $Tuple2(nw, nv))
3542+ let nl = bJ(A)
3543+ let jn = valueOrElse(getString(nl), aJ)
3544+ let nz = (toString(ax) + "_D_0")
3545+ $Tuple2(([IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(nl, nz)] ++ lg), $Tuple2(nz, ny))
34983546 }
34993547 }
35003548 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 func b (c) = ("lastArbTimeUser_" + c)
77
88
99 let d = 100000000
1010
1111 let e = 3200
1212
1313 let f = 4000
1414
1515 let g = 3
1616
1717 let h = 100000000
1818
1919 let i = 400
2020
2121 let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2222
2323 let k = 0
2424
2525 let l = 1
2626
2727 let m = 2
2828
2929 let n = 3
3030
3131 let o = 4
3232
3333 let p = 0
3434
3535 let q = 6
3636
3737 let r = 2
3838
3939 let s = 2
4040
4141 let t = 30
4242
4343 let u = [0, 600000, 900000, 43200000, 21600000]
4444
4545 let v = 20000000
4646
4747 let w = 1
4848
4949 let x = 0
5050
5151 let y = 1
5252
5353 func z (A) = ("duckHealth_" + A)
5454
5555
5656 func B (A) = ("duckChars_" + A)
5757
5858
5959 func C (A) = ("duckXP_" + A)
6060
6161
6262 func D (A) = ("duckLevel_" + A)
6363
6464
6565 func E (A) = ("duckFreePoints_" + A)
6666
6767
6868 func F (A) = ("duckEquipment_" + A)
6969
7070
7171 func G (c) = ("userXP_" + c)
7272
7373
7474 func H (c) = ("userLevel_" + c)
7575
7676
7777 func I (c) = ("userFreePoints_" + c)
7878
7979
8080 func J (A) = ("savedHealth_" + A)
8181
8282
8383 func K (A) = ("savedLocation_" + A)
8484
8585
8686 func L (A) = ("duckBuffs_" + A)
8787
8888
8989 func M (A) = ("lastRobberyTime_" + A)
9090
9191
9292 func N (A) = ("lastRobberyCost_" + A)
9393
9494
9595 func O (P) = ("landRobberyState_" + P)
9696
9797
9898 func Q (P) = ("landCooldownETA_" + P)
9999
100100
101101 func R (A) = ("duckRobberyState_" + A)
102102
103103
104104 func S (A) = ("lockedLandByDuck_" + A)
105105
106106
107107 func T (A) = ("deliveryDelayByDuck_" + A)
108108
109109
110110 let U = 10000
111111
112112 let V = 10000
113113
114114 let W = 2000
115115
116116 let X = 100000
117117
118118 let Y = 1000000
119119
120120 let Z = 5000000
121121
122122 let aa = 10000
123123
124124 let ab = 1000000
125125
126126 let ac = 1000000
127127
128128 let ad = 10000
129129
130130 func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d)
131131
132132
133133 func ag (ah) = (100 + ah)
134134
135135
136136 func ai (aj,ak) = {
137137 let al = ae(ak)
138138 [al, (g * (al - aj))]
139139 }
140140
141141
142142 func am (an,A,ao,ap) = {
143143 let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_")
144144 let ar = valueOrElse(getInteger(an, D(A)), 0)
145145 let as = valueOrElse(getInteger(an, z(A)), ag(ar))
146146 let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_")
147147 ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap)
148148 then [ao, ao, ao, ao, ao]
149149 else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])]))
150150 }
151151
152152
153153 func au (an,A) = {
154154 let av = valueOrElse(getInteger(an, N(A)), 0)
155155 let aw = valueOrElse(getInteger(an, M(A)), 0)
156156 let ax = lastBlock.timestamp
157157 let ay = max([h, (av - (i * (ax - aw)))])
158158 let az = valueOrElse(getInteger(an, R(A)), 0)
159159 let aA = valueOrElse(getString(an, S(A)), "")
160160 let aB = valueOrElse(getInteger(an, Q(aA)), 0)
161161 $Tuple5(ay, aw, az, aA, aB)
162162 }
163163
164164
165165 let aC = "LAND"
166166
167167 let aD = "DUCK"
168168
169169 let aE = "PRESALE"
170170
171171 let aF = 6
172172
173173 let aG = 25
174174
175175 let aH = 3456000
176176
177177 let aI = 10000000000
178178
179179 let aJ = "Africa_F_Africa"
180180
181181 let aK = 39637
182182
183183 let aL = 10
184184
185185 let aM = 50000
186186
187187 let aN = 600000
188188
189189 let aO = ["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"]
190190
191191 let aP = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
192192
193193 let aQ = 10000000
194194
195195 let aR = [15, 16, 17, 18, 19, 20]
196196
197197 let aS = ["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_"]
198198
199199 let aT = 6
200200
201201 let aU = 8
202202
203203 let aV = 9
204204
205205 let aW = 10
206206
207207 let aX = 10
208208
209209 let aY = 0
210210
211211 let aZ = 1
212212
213213 let ba = 2
214214
215215 let bb = 3
216216
217217 let bc = 4
218218
219219 let bd = 0
220220
221221 let be = 1
222222
223223 let bf = 2
224224
225225 let bg = 3
226226
227227 let bh = 0
228228
229229 let bi = 1
230230
231231 let bj = 2
232232
233233 let bk = 3
234234
235235 let bl = 0
236236
237237 let bm = 1
238238
239239 let bn = 2
240240
241241 func bo (bp) = ("no_" + bp)
242242
243243
244244 func bq (bp) = ("lcna_" + bp)
245245
246246
247247 func br (bp) = ("st_" + bp)
248248
249249
250250 func bs (bt,bp) = makeString(["las", bt, bp], "_")
251251
252252
253253 func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw)
254254
255255
256256 func bx (P) = ("wh_" + P)
257257
258258
259259 func by (bp) = ("infraLevel_" + bp)
260260
261261
262262 func bz (P) = ("fortifications_" + P)
263263
264264
265265 func bA (bp) = ("duckCustomNameByAssetId_" + bp)
266266
267267
268268 func bB (c) = ("accountCustomNameByAddr_" + c)
269269
270270
271271 func bC (c) = ("accRefBy_" + c)
272272
273273
274274 func bD (A) = ("onboardArtActivatedOnDuck_" + A)
275275
276276
277277 func bE (c) = ("onboardArtActivatedDuckBy_" + c)
278278
279279
280280 func bF (c) = ("accReferrals_" + c)
281281
282282
283283 func bG (bp) = ("duckOwner_" + bp)
284284
285285
286286 func bH (bw) = ("stakedDuckByOwner_" + bw)
287287
288288
289289 func bI (A) = ("backPack_" + A)
290290
291291
292292 func bJ (A) = ("duckLocation_" + A)
293293
294294
295295 func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL)
296296
297297
298298 func bM () = "emergencyWarehouseProducts"
299299
300300
301301 let bN = "deliveryFund"
302302
303303 let bO = "deliveryLocked"
304304
305305 let bP = "%s__lastTourId"
306306
307307 func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR))
308308
309309
310310 func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR))
311311
312312
313313 func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__")
314314
315315
316316 let bU = 0
317317
318318 let bV = 1
319319
320320 let bW = 6
321321
322322 let bX = 1
323323
324324 func bY (bZ,bR) = {
325325 let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
326326 let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__")
327327 [ca, cb]
328328 }
329329
330330
331331 func cc (bZ,cd) = {
332332 let ce = valueOrElse(getInteger(bZ, bP), 0)
333333 let cf = split(cd, "_")
334334 let ax = lastBlock.timestamp
335335 let cg = bY(bZ, ce)
336336 let ca = cg[bU]
337337 let cb = cg[bV]
338338 if (if (if ((cf[bm] == "T"))
339339 then (parseIntValue(cf[bl]) == ce)
340340 else false)
341341 then (cb[bX] == "INPROGRESS")
342342 else false)
343343 then (parseIntValue(ca[bW]) > ax)
344344 else false
345345 }
346346
347347
348348 func ch (cd) = {
349349 let cf = split(cd, "_")
350350 let ax = lastBlock.timestamp
351351 let ci = parseIntValue(cf[bl])
352352 let cj = parseIntValue(cf[bn])
353353 if (if ((cf[bm] == "D"))
354354 then (ax > (ci + aN))
355355 else false)
356356 then (3 >= cj)
357357 else false
358358 }
359359
360360
361361 func ck (cd) = {
362362 let cl = split(cd, "_")[bm]
363363 if ((cl != "T"))
364364 then (cl != "D")
365365 else false
366366 }
367367
368368
369369 func cm (bZ,cd) = {
370370 let ce = valueOrElse(getInteger(bZ, bP), 0)
371371 let cf = split(cd, "_")
372372 let ax = lastBlock.timestamp
373373 let cg = bY(bZ, ce)
374374 let ca = cg[bU]
375375 let cb = cg[bV]
376376 let cl = cf[bm]
377377 if (if ((cl != "T"))
378378 then (cl != "D")
379379 else false)
380380 then true
381381 else !(if (if (if ((cf[bm] == "T"))
382382 then (parseIntValue(cf[bl]) == ce)
383383 else false)
384384 then (cb[bX] == "INPROGRESS")
385385 else false)
386386 then (parseIntValue(ca[bW]) > ax)
387387 else false)
388388 }
389389
390390
391391 func cn (co) = (parseIntValue(co[aT]) * aQ)
392392
393393
394394 func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr))
395395
396396
397397 let cs = false
398398
399-let ct = true
399+let ct = false
400400
401401 let cu = true
402402
403403 let cv = take(drop(this.bytes, 1), 1)
404404
405405 let cw = {
406406 let cx = cv
407407 if ((base58'2W' == cx))
408408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409409 else if ((base58'2T' == cx))
410410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411411 else throw("Unknown chain")
412412 }
413413
414414 let cy = {
415415 let cx = cv
416416 if ((base58'2W' == cx))
417417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418418 else if ((base58'2T' == cx))
419419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420420 else throw("Unknown chain")
421421 }
422422
423423 let cz = {
424424 let cx = cv
425425 if ((base58'2W' == cx))
426426 then 10000000000
427427 else if ((base58'2T' == cx))
428428 then 100000000
429429 else throw("Unknown chain")
430430 }
431431
432432 let cA = {
433433 let cx = cv
434434 if ((base58'2W' == cx))
435435 then 86400000
436436 else if ((base58'2T' == cx))
437437 then 60000
438438 else throw("Unknown chain")
439439 }
440440
441441 let cB = "__"
442442
443443 let cC = 1000000
444444
445445 let cD = 100000000
446446
447447 let cE = 25
448448
449449 let cF = 100
450450
451451 let cG = 225
452452
453453 let cH = 400
454454
455455 let cI = 625
456456
457457 let cJ = [0, 1, 2, 3, 4, 5]
458458
459459 func cK (cL,cM) = valueOrErrorMessage(getString(cL, cM), makeString(["mandatory ", toString(cL), ".", cM, " is not defined"], ""))
460460
461461
462462 let cN = 1
463463
464464 let cO = 2
465465
466466 let cP = 3
467467
468468 let cQ = 4
469469
470470 let cR = 7
471471
472472 let cS = 8
473473
474474 func cT () = "%s__restConfig"
475475
476476
477477 func cU () = "%s__restAddr"
478478
479479
480480 func cV (cW) = split_4C(cK(cW, cT()), cB)
481481
482482
483483 func cX (cY,cZ) = valueOrErrorMessage(addressFromString(cY[cZ]), ("Rest cfg doesn't contain address at index " + toString(cZ)))
484484
485485
486486 let da = addressFromStringValue(valueOrElse(getString(this, cU()), cy))
487487
488488 let cY = cV(da)
489489
490490 let an = cX(cY, cN)
491491
492492 let db = cX(cY, cO)
493493
494494 let dc = cX(cY, cP)
495495
496496 let dd = cX(cY, cQ)
497497
498498 let de = cX(cY, cR)
499499
500500 let df = cX(cY, cS)
501501
502502 let dg = 0
503503
504504 let dh = 1
505505
506506 let di = 2
507507
508508 let dj = 3
509509
510510 let dk = "wlg_assetId"
511511
512512 let dl = valueOrErrorMessage(getBinary(dd, dk), "WLGOLD is not issued yet")
513513
514514 let dm = "acresAssetId"
515515
516516 let dn = valueOrErrorMessage(getBinary(df, dm), "ACRES is not issued yet")
517517
518518 let do = 2
519519
520520 func dp (cL) = ("finishBlockForAddr_" + cL)
521521
522522
523523 func dq () = "resTypesProportions"
524524
525525
526526 func dr (ds) = ("resTypesByContinent_" + ds)
527527
528528
529529 func dt (bw) = ("stakedLandsByOwner_" + bw)
530530
531531
532532 func du (bw) = ("stakedPiecesByOwner_" + bw)
533533
534534
535535 func dv (dw) = {
536536 let cx = dw
537537 if ($isInstanceOf(cx, "String"))
538538 then {
539539 let dx = cx
540540 dx
541541 }
542542 else throw("fail to cast into String")
543543 }
544544
545545
546546 func dy (dw) = {
547547 let cx = dw
548548 if ($isInstanceOf(cx, "Int"))
549549 then {
550550 let dz = cx
551551 dz
552552 }
553553 else throw("fail to cast into Int")
554554 }
555555
556556
557557 func dA (dw) = {
558558 let cx = dw
559559 if ($isInstanceOf(cx, "Boolean"))
560560 then {
561561 let dx = cx
562562 dx
563563 }
564564 else throw("fail to cast into Boolean")
565565 }
566566
567567
568568 func dB (dC) = {
569569 let cx = dC
570570 if ($isInstanceOf(cx, "(String, Int)"))
571571 then {
572572 let dD = cx
573573 dD
574574 }
575575 else throw("fail to cast into (String, Int)")
576576 }
577577
578578
579579 func dE (dF) = {
580580 let cx = dF
581581 if (("S" == cx))
582582 then cE
583583 else if (("M" == cx))
584584 then cF
585585 else if (("L" == cx))
586586 then cG
587587 else if (("XL" == cx))
588588 then cH
589589 else if (("XXL" == cx))
590590 then cI
591591 else throw("Unknown land size")
592592 }
593593
594594
595595 func dG (dx) = isDefined(parseInt(dx))
596596
597597
598598 func dH () = "contractsBlocked"
599599
600600
601601 func dI (c) = ("lastTxIdByUser_" + c)
602602
603603
604604 func dJ (dC,dK) = {
605605 let dL = pow(10, 0, dK, 0, 0, DOWN)
606606 let dM = toString((dC % dL))
607607 let dN = drop(toString(dL), (1 + size(dM)))
608608 (((toString((dC / dL)) + ".") + dN) + dM)
609609 }
610610
611611
612612 func dO (dP,dQ,dR) = {
613613 let dS = value(blockInfoByHeight(dQ))
614614 let dT = sha256((value(dS.vrf) + dR))
615615 (toInt(dT) % dP)
616616 }
617617
618618
619619 let dU = {
620620 let cx = cv
621621 if ((base58'2W' == cx))
622622 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
623623 else if ((base58'2T' == cx))
624624 then this
625625 else throw("Unknown chain")
626626 }
627627
628628 let dV = {
629629 let cx = cv
630630 if ((base58'2W' == cx))
631631 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
632632 else if ((base58'2T' == cx))
633633 then this
634634 else throw("Unknown chain")
635635 }
636636
637637 let dW = {
638638 let cx = cv
639639 if ((base58'2W' == cx))
640640 then if (cs)
641641 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
642642 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
643643 else if ((base58'2T' == cx))
644644 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
645645 else throw("Unknown chain")
646646 }
647647
648648 let dX = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
649649
650650 let dY = 300000
651651
652652 let dZ = 5000000
653653
654654 let ea = 50
655655
656656 let eb = 10000000
657657
658658 let ec = {
659659 let cx = cv
660660 if ((base58'2W' == cx))
661661 then 252289527462
662662 else if ((base58'2T' == cx))
663663 then 2522895274
664664 else throw("Unknown chain")
665665 }
666666
667667 let ed = {
668668 let cx = cv
669669 if ((base58'2W' == cx))
670670 then 250000000
671671 else if ((base58'2T' == cx))
672672 then 250000000
673673 else throw("Unknown chain")
674674 }
675675
676676 let ee = 2500000000
677677
678678 let ef = toBigInt(5)
679679
680680 let eg = toBigInt(20)
681681
682682 let eh = toBigInt((20 * 20))
683683
684684 let ei = toBigInt(((20 * 20) * 20))
685685
686686 let ej = toBigInt((((20 * 20) * 20) * 20))
687687
688688 let ek = toBigInt(((((20 * 20) * 20) * 20) * 20))
689689
690690 let el = 500
691691
692692 func em () = "nextLandNum"
693693
694694
695695 func en (eo) = ("lcn_" + eo)
696696
697697
698698 func ep (eq) = ("la_" + eq)
699699
700700
701701 func er (bp,bw) = ((("ilao_" + bp) + "_") + bw)
702702
703703
704704 func es (eq) = ("lo_" + eq)
705705
706706
707707 func et (eo) = ("duckByCustomName_" + eo)
708708
709709
710710 func eu (eo) = ("accountByCustomName_" + eo)
711711
712712
713713 func ev () = "oldiesList"
714714
715715
716716 let ew = 0
717717
718718 let ex = 1
719719
720720 let ey = 2
721721
722722 let ez = 0
723723
724724 let eA = 5
725725
726726 let eB = 6
727727
728728 let eC = 7
729729
730730 func eD (eq,dF) = ((aC + eq) + dF)
731731
732732
733733 func eE (eF,eG) = {
734734 let eH = if ((eF >= 0))
735735 then (((eF + eG) - 1) / eG)
736736 else -((((-(eF) + eG) - 1) / eG))
737737 (eH * cD)
738738 }
739739
740740
741741 func eI (eJ,eK) = {
742742 let eL = (((((eK[0] + eK[1]) + eK[2]) + eK[3]) + eK[4]) + eK[5])
743743 if ((0 >= eL))
744744 then throw("Zero weights sum")
745745 else {
746746 let eM = fraction(eJ, cC, eL)
747747 func eN (eO,eP) = (eO :+ fraction(eP, eM, cC))
748748
749749 let eQ = eK
750750 let eR = size(eQ)
751751 let eS = nil
752752 func eT (eU,eV) = if ((eV >= eR))
753753 then eU
754754 else eN(eU, eQ[eV])
755755
756756 func eW (eU,eV) = if ((eV >= eR))
757757 then eU
758758 else throw("List size exceeds 6")
759759
760760 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
761761 }
762762 }
763763
764764
765765 func eX (eJ) = {
766766 let eY = split(value(getString(dq())), "_")
767767 if ((size(eY) != aF))
768768 then throw("Wrong proportions data")
769769 else {
770770 let eZ = [parseIntValue(eY[0]), parseIntValue(eY[1]), parseIntValue(eY[2]), parseIntValue(eY[3]), parseIntValue(eY[4]), parseIntValue(eY[5])]
771771 eI(eJ, eZ)
772772 }
773773 }
774774
775775
776776 func fa (fb,fc,fd) = {
777777 let fe = eX(fd)
778778 func ff (eO,cZ) = {
779779 let fg = (parseIntValue(fc[cZ]) - fe[cZ])
780780 if ((0 > fg))
781781 then throw(((((("Not enough material idx=" + toString(cZ)) + ", you have ") + fc[cZ]) + ", but need ") + toString(fe[cZ])))
782782 else (eO :+ toString(fg))
783783 }
784784
785785 if (fb)
786786 then {
787787 let eQ = cJ
788788 let eR = size(eQ)
789789 let eS = nil
790790 func eT (eU,eV) = if ((eV >= eR))
791791 then eU
792792 else ff(eU, eQ[eV])
793793
794794 func eW (eU,eV) = if ((eV >= eR))
795795 then eU
796796 else throw("List size exceeds 6")
797797
798798 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
799799 }
800800 else fc
801801 }
802802
803803
804804 func fh (fi,fj) = if ((fj == ""))
805805 then $Tuple2(fi, false)
806806 else {
807807 func fk (eO,fl) = {
808808 let fm = split(fl, ",")
809809 if ((size(fm) != 2))
810810 then throw("Incorrect format, should be index,amount")
811811 else {
812812 let cZ = parseIntValue(fm[0])
813813 if (if ((0 > cZ))
814814 then true
815815 else (cZ >= size(aS)))
816816 then throw("Unknown product idx")
817817 else {
818818 let fn = parseIntValue(fm[1])
819819 let fo = split(eO._1, (fm[0] + ":"))
820820 if ((size(fo) != 2))
821821 then throw((("You don't have " + aO[cZ]) + " equipped"))
822822 else {
823823 let fp = fo[1]
824824 let fq = if (dG(take(drop(fp, 1), 1)))
825825 then 2
826826 else 1
827827 let fr = parseIntValue(take(fp, fq))
828828 let fs = drop(fp, fq)
829829 let ft = if ((fr >= fn))
830830 then (fr - fn)
831831 else throw(((((("You equipped " + toString(fr)) + " of ") + aO[cZ]) + ", but tried to use ") + toString(fn)))
832832 $Tuple2(((((fo[0] + fm[0]) + ":") + toString(ft)) + fs), if (eO._2)
833833 then true
834834 else if (if ((cZ >= 6))
835835 then (8 >= cZ)
836836 else false)
837837 then (ft == 0)
838838 else false)
839839 }
840840 }
841841 }
842842 }
843843
844844 let eQ = split(fj, "_")
845845 let eR = size(eQ)
846846 let eS = $Tuple2(fi, false)
847847 func eT (eU,eV) = if ((eV >= eR))
848848 then eU
849849 else fk(eU, eQ[eV])
850850
851851 func eW (eU,eV) = if ((eV >= eR))
852852 then eU
853853 else throw("List size exceeds 10")
854854
855855 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
856856 }
857857
858858
859859 func fu (fv) = {
860860 let fw = if ((fv == ""))
861861 then nil
862862 else split_4C(fv, "_")
863863 func fx (eO,co) = {
864864 let fy = (size(eO) / 8)
865865 let fr = if ((size(fw) > fy))
866866 then parseIntValue(fw[fy])
867867 else 0
868868 (eO + toBytes(fr))
869869 }
870870
871871 let eQ = aS
872872 let eR = size(eQ)
873873 let eS = base58''
874874 func eT (eU,eV) = if ((eV >= eR))
875875 then eU
876876 else fx(eU, eQ[eV])
877877
878878 func eW (eU,eV) = if ((eV >= eR))
879879 then eU
880880 else throw("List size exceeds 50")
881881
882882 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
883883 }
884884
885885
886886 func fz (fA) = {
887887 func fB (eO,co) = {
888888 let fy = size(eO)
889889 let fC = take(drop(fA, (8 * fy)), 8)
890890 (eO :+ toString(toInt(fC)))
891891 }
892892
893893 makeString_2C({
894894 let eQ = aS
895895 let eR = size(eQ)
896896 let eS = nil
897897 func eT (eU,eV) = if ((eV >= eR))
898898 then eU
899899 else fB(eU, eQ[eV])
900900
901901 func eW (eU,eV) = if ((eV >= eR))
902902 then eU
903903 else throw("List size exceeds 50")
904904
905905 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
906906 }, "_")
907907 }
908908
909909
910910 func fD (fE,fF) = {
911911 func fG (eO,fy) = {
912912 let fH = if ((size(fE) > (7 + fy)))
913913 then fE[(7 + fy)]
914914 else 0
915915 if ((parseIntValue(fF[fy]) > (fE[fy] + fH)))
916916 then throw(("Requirement not satisfied: " + j[fy]))
917917 else true
918918 }
919919
920920 let eQ = [0, 1, 2, 3, 4, 5, 6]
921921 let eR = size(eQ)
922922 let eS = false
923923 func eT (eU,eV) = if ((eV >= eR))
924924 then eU
925925 else fG(eU, eQ[eV])
926926
927927 func eW (eU,eV) = if ((eV >= eR))
928928 then eU
929929 else throw("List size exceeds 7")
930930
931931 eW(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7)
932932 }
933933
934934
935935 func fI (fJ,fw,fK,fE,fL,fM) = {
936936 let fm = split(fJ, ":")
937937 if ((size(fm) != 2))
938938 then throw("Incorrect format, should be index:amount")
939939 else if (if (!(fK))
940940 then (size(fm[0]) != 2)
941941 else false)
942942 then throw("Product idx should be 2 digits, zero padded")
943943 else {
944944 let fN = parseIntValue(fm[0])
945945 let fO = parseIntValue(fm[1])
946946 if (!(containsElement(aR, fN)))
947947 then throw((("Product '" + aO[fN]) + "' cannot be used for land defense"))
948948 else if ((0 > fO))
949949 then throw("Count can't be negative")
950950 else if ((fO > t))
951951 then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN]))
952952 else if ((fO == 0))
953953 then $Tuple3(fw, fL, fM)
954954 else {
955955 let fP = take(fw, (8 * fN))
956956 let fr = toInt(take(drop(fw, (8 * fN)), 8))
957957 let fs = drop(fw, (8 * (fN + 1)))
958958 let co = split(aS[fN], "_")
959959 if (if (!(fK))
960960 then (fO > fr)
961961 else false)
962962 then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO)))
963963 else {
964964 let ft = if (if (!(fK))
965965 then fD(fE, split(co[aV], ","))
966966 else false)
967967 then (fr - fO)
968968 else (fr + fO)
969969 let fQ = (eE(ft, aX) - eE(fr, aX))
970970 $Tuple3(((fP + toBytes(ft)) + fs), (fL + fQ), (fM - fQ))
971971 }
972972 }
973973 }
974974 }
975975
976976
977977 func fR (fJ,fw,fK,fS,fT,fU,fE) = {
978978 let fm = split(fJ, ":")
979979 if ((size(fm) != 2))
980980 then throw("Incorrect format, should be index:amount")
981981 else if (if (!(fK))
982982 then (size(fm[0]) != 2)
983983 else false)
984984 then throw("Product idx should be 2 digits, zero padded")
985985 else {
986986 let fN = parseIntValue(fm[0])
987987 let fO = parseIntValue(fm[1])
988988 if (if ((0 > fN))
989989 then true
990990 else (fN >= size(aS)))
991991 then throw("Unknown product idx")
992992 else if ((0 > fO))
993993 then throw("Count can't be negative")
994994 else if ((fO > t))
995995 then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fN]))
996996 else if ((fO == 0))
997997 then $Tuple2(fw, false)
998998 else {
999999 let fP = take(fw, (8 * fN))
10001000 let fr = toInt(take(drop(fw, (8 * fN)), 8))
10011001 let fs = drop(fw, (8 * (fN + 1)))
10021002 let co = split(aS[fN], "_")
10031003 if (if (!(fK))
10041004 then (fO > fr)
10051005 else false)
10061006 then throw(((((("You have " + toString(fr)) + " of ") + aO[fN]) + ", but tried to use ") + toString(fO)))
10071007 else {
10081008 let fV = if (if (!(fK))
10091009 then fD(fE, split(co[aV], ","))
10101010 else false)
10111011 then {
10121012 let fW = co[aW]
10131013 if ((fW == ""))
10141014 then throw("Item cannot be equipped")
10151015 else {
10161016 let fX = parseIntValue(fW)
10171017 let fY = (fX / 100)
10181018 if ((fS != fY))
10191019 then throw("Segment incompatible")
10201020 else {
10211021 let fZ = ((fX % 100) / 10)
10221022 if ((fT != fZ))
10231023 then throw("Slot incompatible")
10241024 else {
10251025 let ga = (fX % 10)
10261026 if (if ((fU != 0))
10271027 then (ga > 1)
10281028 else false)
10291029 then throw("Big items should occupy slot 0")
10301030 else (ga > 1)
10311031 }
10321032 }
10331033 }
10341034 }
10351035 else false
10361036 $Tuple2(((fP + toBytes((fr + (if (fK)
10371037 then fO
10381038 else -(fO))))) + fs), fV)
10391039 }
10401040 }
10411041 }
10421042 }
10431043
10441044
10451045 func gb (gc,gd,fK,fS,fT,ge) = if ((gc != ""))
10461046 then {
10471047 let gf = split(gc, ",")
10481048 if ((size(gf) > s))
10491049 then throw("Wrong slots format")
10501050 else {
10511051 let gg = gf[0]
10521052 let gh = if ((size(gf) > 1))
10531053 then gf[1]
10541054 else ""
10551055 if (if ((gg == ""))
10561056 then (gh == "")
10571057 else false)
10581058 then gd
10591059 else {
10601060 let gi = if ((gg != ""))
10611061 then fR(gg, gd, fK, fS, fT, 0, ge)
10621062 else $Tuple2(gd, false)
10631063 if ((gh != ""))
10641064 then if (gi._2)
10651065 then throw("Big item already occupies slot")
10661066 else fR(gh, gi._1, fK, fS, fT, 1, ge)._1
10671067 else gi._1
10681068 }
10691069 }
10701070 }
10711071 else gd
10721072
10731073
10741074 func gj (gk,gl,fK,ge) = {
10751075 func fS (eO,gm) = {
10761076 let fy = eO._1
10771077 let fT = split(gm, ";")
10781078 if ((size(fT) != r))
10791079 then throw("Wrong segment format")
10801080 else {
10811081 let gn = fT[0]
10821082 let go = fT[1]
10831083 if (if ((gn == ""))
10841084 then (go == "")
10851085 else false)
10861086 then $Tuple2((fy + 1), eO._2)
10871087 else {
10881088 let gp = gb(gn, eO._2, fK, fy, 0, ge)
10891089 $Tuple2((fy + 1), gb(go, gp, fK, fy, 1, ge))
10901090 }
10911091 }
10921092 }
10931093
10941094 ( let eQ = gk
10951095 let eR = size(eQ)
10961096 let eS = $Tuple2(0, gl)
10971097 func eT (eU,eV) = if ((eV >= eR))
10981098 then eU
10991099 else fS(eU, eQ[eV])
11001100
11011101 func eW (eU,eV) = if ((eV >= eR))
11021102 then eU
11031103 else throw("List size exceeds 6")
11041104
11051105 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6))._2
11061106 }
11071107
11081108
11091109 func gq (gk,gl,fL,fM,fK,fE) = if ((3 > size(gk)))
11101110 then throw("At least duck, mines and traps parts are required")
11111111 else {
11121112 func fS (eO,gm) = {
11131113 let fy = eO._1
11141114 if ((fy == 0))
11151115 then $Tuple4((fy + 1), eO._2, eO._3, eO._4)
11161116 else {
11171117 let gr = fI(gm, eO._2, fK, fE, eO._3, eO._4)
11181118 $Tuple4((fy + 1), gr._1, gr._2, gr._3)
11191119 }
11201120 }
11211121
11221122 let gs = {
11231123 let eQ = gk
11241124 let eR = size(eQ)
11251125 let eS = $Tuple4(0, gl, fL, fM)
11261126 func eT (eU,eV) = if ((eV >= eR))
11271127 then eU
11281128 else fS(eU, eQ[eV])
11291129
11301130 func eW (eU,eV) = if ((eV >= eR))
11311131 then eU
11321132 else throw("List size exceeds 10")
11331133
11341134 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11351135 }
11361136 $Tuple3(gs._2, gs._3, gs._4)
11371137 }
11381138
11391139
11401140 func gt (A) = {
11411141 let gu = F(A)
11421142 let gv = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
11431143 let gw = gj(gv, dX, true, nil)
11441144 let gx = split(gv[p], ";")[1]
11451145 let ao = if ((gx == ""))
11461146 then 0
11471147 else {
11481148 let gy = split(gx, ",")[0]
11491149 if ((gy == ""))
11501150 then 0
11511151 else {
11521152 let fJ = split(gy, ":")
11531153 let cZ = fJ[0]
11541154 let gz = fJ[1]
11551155 if (if (if (if (if ((cZ == "06"))
11561156 then true
11571157 else (cZ == "07"))
11581158 then true
11591159 else (cZ == "08"))
11601160 then (gz != "")
11611161 else false)
11621162 then (parseIntValue(gz) > 0)
11631163 else false)
11641164 then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
11651165 else 0
11661166 }
11671167 }
11681168 let ge = am(this, A, ao, true)
11691169 let gA = gj(gv, gw, false, ge)
11701170 (gA == gA)
11711171 }
11721172
11731173
11741174 func gB (gC,gD,gE,gF) = if ((size(gC) != aF))
11751175 then throw("Wrong proportions data")
11761176 else {
11771177 func gG (eO,gH) = {
11781178 let fg = (parseIntValue(gC[gH]) + ((gF * gD[gH]) * gE))
11791179 if ((0 > fg))
11801180 then throw(((((((("Panic! Pieces of type=" + toString(gH)) + ", sign=") + toString(gF)) + ", terrainCounts[i]=") + toString(gD[gH])) + ", landSizeIndex=") + toString(gE)))
11811181 else (eO :+ toString(fg))
11821182 }
11831183
11841184 let eQ = cJ
11851185 let eR = size(eQ)
11861186 let eS = nil
11871187 func eT (eU,eV) = if ((eV >= eR))
11881188 then eU
11891189 else gG(eU, eQ[eV])
11901190
11911191 func eW (eU,eV) = if ((eV >= eR))
11921192 then eU
11931193 else throw("List size exceeds 6")
11941194
11951195 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
11961196 }
11971197
11981198
11991199 func gI (gD,gE,gF) = {
12001200 let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
12011201 makeString(gB(gC, gD, gE, gF), "_")
12021202 }
12031203
12041204
12051205 func gJ (gK) = [(size(split(gK, "A")) - 1), (size(split(gK, "B")) - 1), (size(split(gK, "C")) - 1), (size(split(gK, "D")) - 1), (size(split(gK, "E")) - 1), (size(split(gK, "F")) - 1)]
12061206
12071207
12081208 func gL (gM,gD,gN,gE,gO) = {
12091209 func gP (eO,gH) = {
12101210 let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE)
12111211 (eO :+ toString((parseIntValue(gM[gH]) + gQ)))
12121212 }
12131213
12141214 let eZ = {
12151215 let eQ = cJ
12161216 let eR = size(eQ)
12171217 let eS = nil
12181218 func eT (eU,eV) = if ((eV >= eR))
12191219 then eU
12201220 else gP(eU, eQ[eV])
12211221
12221222 func eW (eU,eV) = if ((eV >= eR))
12231223 then eU
12241224 else throw("List size exceeds 6")
12251225
12261226 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12271227 }
12281228 makeString(eZ, "_")
12291229 }
12301230
12311231
12321232 func gR (gD,gN,gE,gO) = {
12331233 func gP (eO,gH) = {
12341234 let gQ = ((fraction(gN, gO, a) * gD[gH]) * gE)
12351235 $Tuple2((eO._1 :+ gQ), (eO._2 + gQ))
12361236 }
12371237
12381238 let eQ = cJ
12391239 let eR = size(eQ)
12401240 let eS = $Tuple2(nil, 0)
12411241 func eT (eU,eV) = if ((eV >= eR))
12421242 then eU
12431243 else gP(eU, eQ[eV])
12441244
12451245 func eW (eU,eV) = if ((eV >= eR))
12461246 then eU
12471247 else throw("List size exceeds 6")
12481248
12491249 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12501250 }
12511251
12521252
12531253 func gS (gT,gU,gV,gW) = {
12541254 let gX = gV._1
12551255 let gY = gV._2
12561256 if ((gY == 0))
12571257 then $Tuple2(makeString(gT, "_"), makeString(gU, "_"))
12581258 else if ((gW >= gY))
12591259 then {
12601260 func gZ (eO,gH) = (eO :+ toString((parseIntValue(gT[gH]) + gX[gH])))
12611261
12621262 let eZ = {
12631263 let eQ = cJ
12641264 let eR = size(eQ)
12651265 let eS = nil
12661266 func eT (eU,eV) = if ((eV >= eR))
12671267 then eU
12681268 else gZ(eU, eQ[eV])
12691269
12701270 func eW (eU,eV) = if ((eV >= eR))
12711271 then eU
12721272 else throw("List size exceeds 6")
12731273
12741274 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12751275 }
12761276 $Tuple2(makeString(eZ, "_"), makeString(gU, "_"))
12771277 }
12781278 else {
12791279 func ha (eO,gH) = {
12801280 let hb = fraction(gX[gH], gW, gY)
12811281 $Tuple2((eO._1 :+ toString((parseIntValue(gT[gH]) + hb))), (eO._2 :+ toString(((parseIntValue(gU[gH]) + gX[gH]) - hb))))
12821282 }
12831283
12841284 let eZ = {
12851285 let eQ = cJ
12861286 let eR = size(eQ)
12871287 let eS = $Tuple2(nil, nil)
12881288 func eT (eU,eV) = if ((eV >= eR))
12891289 then eU
12901290 else ha(eU, eQ[eV])
12911291
12921292 func eW (eU,eV) = if ((eV >= eR))
12931293 then eU
12941294 else throw("List size exceeds 6")
12951295
12961296 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
12971297 }
12981298 $Tuple2(makeString(eZ._1, "_"), makeString(eZ._2, "_"))
12991299 }
13001300 }
13011301
13021302
13031303 func hc (hd) = if ((hd >= toBigInt(0)))
13041304 then hd
13051305 else -(hd)
13061306
13071307
13081308 let he = [[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]]
13091309
13101310 func hf (dz,hg) = {
13111311 let hh = toInt((dz % eg))
13121312 let hi = if ((hg[0] > hh))
13131313 then "A"
13141314 else if ((hg[1] > hh))
13151315 then "B"
13161316 else if ((hg[2] > hh))
13171317 then "C"
13181318 else if ((hg[3] > hh))
13191319 then "D"
13201320 else if ((hg[4] > hh))
13211321 then "E"
13221322 else "F"
13231323 hi
13241324 }
13251325
13261326
13271327 func hj (hk,hl) = {
13281328 let hm = he[hl]
13291329 func hn (eO,eP) = $Tuple2((((((eO._1 + hf(eO._2, hm)) + hf((eO._2 / eg), hm)) + hf((eO._2 / eh), hm)) + hf((eO._2 / ei), hm)) + hf((eO._2 / ej), hm)), (eO._2 / ek))
13301330
13311331 let gs = {
13321332 let eQ = [1, 2, 3, 4, 5]
13331333 let eR = size(eQ)
13341334 let eS = $Tuple2("", (hk / ef))
13351335 func eT (eU,eV) = if ((eV >= eR))
13361336 then eU
13371337 else hn(eU, eQ[eV])
13381338
13391339 func eW (eU,eV) = if ((eV >= eR))
13401340 then eU
13411341 else throw("List size exceeds 5")
13421342
13431343 eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5)
13441344 }
13451345 gs._1
13461346 }
13471347
13481348
13491349 let ho = [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]
13501350
13511351 let hp = ["A", "B", "C", "D", "E", "F"]
13521352
13531353 func hq (hr,gE) = {
13541354 func hs (eO,dx) = {
13551355 let fy = eO._2
13561356 let ht = parseIntValue(dx)
13571357 let hd = if ((ht == 0))
13581358 then 0
13591359 else if ((ht >= (4 * gE)))
13601360 then (ht / gE)
13611361 else if ((ht > (3 * gE)))
13621362 then 3
13631363 else (((ht - 1) / gE) + 1)
13641364 $Tuple3((eO._1 :+ hd), (eO._2 + 1), (eO._3 + hd))
13651365 }
13661366
13671367 let gs = {
13681368 let eQ = hr
13691369 let eR = size(eQ)
13701370 let eS = $Tuple3(nil, 0, 0)
13711371 func eT (eU,eV) = if ((eV >= eR))
13721372 then eU
13731373 else hs(eU, eQ[eV])
13741374
13751375 func eW (eU,eV) = if ((eV >= eR))
13761376 then eU
13771377 else throw("List size exceeds 6")
13781378
13791379 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
13801380 }
13811381 let hu = gs._1
13821382 let hv = value(indexOf(hu, max(hu)))
13831383 let hw = (gs._3 - 25)
13841384 func hx (eO,cZ) = {
13851385 let dC = if ((cZ == hv))
13861386 then (hu[cZ] - hw)
13871387 else hu[cZ]
13881388 let dN = if ((dC == 0))
13891389 then nil
13901390 else split(drop(toString(pow(10, 0, dC, 0, 0, DOWN)), 1), "")
13911391 let fX = hp[cZ]
13921392 func hy (hz,hA) = (hz :+ fX)
13931393
13941394 let hB = {
13951395 let eQ = dN
13961396 let eR = size(eQ)
13971397 let eS = nil
13981398 func hC (eU,eV) = if ((eV >= eR))
13991399 then eU
14001400 else hy(eU, eQ[eV])
14011401
14021402 func hD (eU,eV) = if ((eV >= eR))
14031403 then eU
14041404 else throw("List size exceeds 25")
14051405
14061406 hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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)
14071407 }
14081408 (eO ++ hB)
14091409 }
14101410
14111411 let eZ = {
14121412 let eQ = cJ
14131413 let eR = size(eQ)
14141414 let eS = nil
14151415 func hC (eU,eV) = if ((eV >= eR))
14161416 then eU
14171417 else hx(eU, eQ[eV])
14181418
14191419 func hD (eU,eV) = if ((eV >= eR))
14201420 then eU
14211421 else throw("List size exceeds 6")
14221422
14231423 hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6)
14241424 }
14251425 func hE (eO,fy) = (eO + eZ[fy])
14261426
14271427 let eQ = ho
14281428 let eR = size(eQ)
14291429 let eS = ""
14301430 func hF (eU,eV) = if ((eV >= eR))
14311431 then eU
14321432 else hE(eU, eQ[eV])
14331433
14341434 func hG (eU,eV) = if ((eV >= eR))
14351435 then eU
14361436 else throw("List size exceeds 25")
14371437
14381438 hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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)
14391439 }
14401440
14411441
14421442 func hH (hI) = {
14431443 let gr = split(valueOrElse(getString(hI), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
14441444 [toString(valueOrElse(parseInt(gr[bh]), 0)), if ((size(split(gr[bi], "_")) == aF))
14451445 then gr[bi]
14461446 else "0_0_0_0_0_0", if ((size(split(gr[bj], "_")) == aF))
14471447 then gr[bj]
14481448 else "0_0_0_0_0_0", gr[bk]]
14491449 }
14501450
14511451
14521452 func hJ (hK) = {
14531453 let fm = split(hK, "_")
14541454 ((aI * (parseIntValue(fm[1]) + 1)) * parseIntValue(fm[0]))
14551455 }
14561456
14571457
14581458 func hL (hM) = {
14591459 let hN = hM[bb]
14601460 func hO (eO,hP) = (eO + parseIntValue(hP))
14611461
14621462 func hQ (eO,hP) = {
14631463 let cZ = eO._1
14641464 let eH = (((parseIntValue(hP) + aX) - 1) / aX)
14651465 $Tuple2((cZ + 1), (eO._2 + (eH * cD)))
14661466 }
14671467
14681468 let hR = {
14691469 let eQ = split(hM[aZ], "_")
14701470 let eR = size(eQ)
14711471 let eS = 0
14721472 func eT (eU,eV) = if ((eV >= eR))
14731473 then eU
14741474 else hO(eU, eQ[eV])
14751475
14761476 func eW (eU,eV) = if ((eV >= eR))
14771477 then eU
14781478 else throw("List size exceeds 6")
14791479
14801480 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
14811481 }
14821482 let hS = {
14831483 let eQ = split(hM[ba], "_")
14841484 let eR = size(eQ)
14851485 let eS = 0
14861486 func hC (eU,eV) = if ((eV >= eR))
14871487 then eU
14881488 else hO(eU, eQ[eV])
14891489
14901490 func hD (eU,eV) = if ((eV >= eR))
14911491 then eU
14921492 else throw("List size exceeds 6")
14931493
14941494 hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6)
14951495 }
14961496 let hT = if ((hN == ""))
14971497 then 0
14981498 else ( let eQ = split_4C(hN, "_")
14991499 let eR = size(eQ)
15001500 let eS = $Tuple2(0, 0)
15011501 func hF (eU,eV) = if ((eV >= eR))
15021502 then eU
15031503 else hQ(eU, eQ[eV])
15041504
15051505 func hG (eU,eV) = if ((eV >= eR))
15061506 then eU
15071507 else throw("List size exceeds 50")
15081508
15091509 hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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
15101510 ((hR + hS) + hT)
15111511 }
15121512
15131513
15141514 func hU (hV,hW,hX) = {
15151515 let hK = ((toString(hW) + "_") + toString(hX))
15161516 let hY = hJ(hK)
15171517 let hZ = valueOrElse(getString(hV), (hK + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
15181518 let ia = split_4C(hZ, ":")
15191519 let ib = hL(ia)
15201520 let ic = if ((5 > size(ia)))
15211521 then makeString(["0", toString(ib), toString((hY - ib)), toString(hY)], "_")
15221522 else {
15231523 let id = split(ia[bc], "_")
15241524 let ie = parseIntValue(id[bd])
15251525 let if = if ((size(id) > 1))
15261526 then parseIntValue(id[be])
15271527 else ib
15281528 makeString([toString(ie), toString(if), toString(((hY - ie) - if)), toString(hY)], "_")
15291529 }
15301530 [ia[aY], if ((size(split(ia[aZ], "_")) == aF))
15311531 then ia[aZ]
15321532 else "0_0_0_0_0_0", if ((size(split(ia[ba], "_")) == aF))
15331533 then ia[ba]
15341534 else "0_0_0_0_0_0", ia[bb], ic]
15351535 }
15361536
15371537
15381538 func ig (hM) = {
15391539 let ih = hL(hM)
15401540 let ii = parseIntValue(split(hM[bc], "_")[bd])
15411541 ((hJ(hM[aY]) - ih) - ii)
15421542 }
15431543
15441544
15451545 func ij (ik,hM,il) = if ((size(ik) != 3))
15461546 then throw("cargoListStr should contain exactly 2 ':' separators")
15471547 else {
15481548 let im = split(ik[0], "_")
15491549 let in = split(ik[1], "_")
15501550 let io = if ((ik[2] == ""))
15511551 then nil
15521552 else split_4C(ik[2], "_")
15531553 if ((size(im) != aF))
15541554 then throw("All 6 resources should be passed")
15551555 else if ((size(in) != aF))
15561556 then throw("All 6 materials should be passed")
15571557 else {
15581558 let gW = ig(hM)
15591559 let ip = split(hM[aZ], "_")
15601560 let iq = split(hM[ba], "_")
15611561 let ir = if ((hM[bb] == ""))
15621562 then nil
15631563 else split_4C(hM[bb], "_")
15641564 let gU = split(il[bi], "_")
15651565 let is = split(il[bj], "_")
15661566 let it = if ((il[bk] == ""))
15671567 then nil
15681568 else split_4C(il[bk], "_")
15691569 func iu (eO,hP) = {
15701570 let gH = eO._1
15711571 let iv = parseIntValue(hP)
15721572 let iw = parseIntValue(ip[gH])
15731573 let ix = parseIntValue(gU[gH])
15741574 if ((iv == 0))
15751575 then $Tuple4((gH + 1), (eO._2 :+ ip[gH]), (eO._3 :+ gU[gH]), eO._4)
15761576 else if ((iv > 0))
15771577 then if ((iv > ix))
15781578 then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(ix)) + " available"))
15791579 else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv))
15801580 else if ((-(iv) > iw))
15811581 then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iw)) + " available"))
15821582 else $Tuple4((gH + 1), (eO._2 :+ toString((iw + iv))), (eO._3 :+ toString((ix - iv))), (eO._4 + iv))
15831583 }
15841584
15851585 let eZ = {
15861586 let eQ = im
15871587 let eR = size(eQ)
15881588 let eS = $Tuple4(0, nil, nil, 0)
15891589 func eT (eU,eV) = if ((eV >= eR))
15901590 then eU
15911591 else iu(eU, eQ[eV])
15921592
15931593 func eW (eU,eV) = if ((eV >= eR))
15941594 then eU
15951595 else throw("List size exceeds 6")
15961596
15971597 eW(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6)
15981598 }
15991599 func iy (eO,hP) = {
16001600 let gH = eO._1
16011601 let iv = parseIntValue(hP)
16021602 let iz = parseIntValue(iq[gH])
16031603 let iA = parseIntValue(is[gH])
16041604 if ((iv == 0))
16051605 then $Tuple4((gH + 1), (eO._2 :+ iq[gH]), (eO._3 :+ is[gH]), eO._4)
16061606 else if ((iv > 0))
16071607 then if ((iv > iA))
16081608 then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iA)) + " available"))
16091609 else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv))
16101610 else if ((-(iv) > iz))
16111611 then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iz)) + " available"))
16121612 else $Tuple4((gH + 1), (eO._2 :+ toString((iz + iv))), (eO._3 :+ toString((iA - iv))), (eO._4 + iv))
16131613 }
16141614
16151615 let gn = {
16161616 let eQ = in
16171617 let eR = size(eQ)
16181618 let eS = $Tuple4(0, nil, nil, eZ._4)
16191619 func hC (eU,eV) = if ((eV >= eR))
16201620 then eU
16211621 else iy(eU, eQ[eV])
16221622
16231623 func hD (eU,eV) = if ((eV >= eR))
16241624 then eU
16251625 else throw("List size exceeds 6")
16261626
16271627 hD(hC(hC(hC(hC(hC(hC(eS, 0), 1), 2), 3), 4), 5), 6)
16281628 }
16291629 func iB (eO,hP) = {
16301630 let gH = eO._1
16311631 let iv = parseIntValue(hP)
16321632 let iC = if ((size(ir) > gH))
16331633 then parseIntValue(ir[gH])
16341634 else 0
16351635 let iD = if ((size(it) > gH))
16361636 then parseIntValue(it[gH])
16371637 else 0
16381638 if ((iv == 0))
16391639 then $Tuple4((gH + 1), (eO._2 :+ toString(iC)), (eO._3 :+ toString(iD)), eO._4)
16401640 else if ((iv > 0))
16411641 then if ((iv > iD))
16421642 then throw((((("Attempt to take " + hP) + " from backpack, but only ") + toString(iD)) + " available"))
16431643 else {
16441644 let fQ = (eE((iC + iv), aX) - eE(iC, aX))
16451645 $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ))
16461646 }
16471647 else if ((-(iv) > iC))
16481648 then throw((((("Attempt to take " + toString(-(iv))) + " from warehouse, but only ") + toString(iC)) + " available"))
16491649 else {
16501650 let fQ = (eE((iC + iv), aX) - eE(iC, aX))
16511651 $Tuple4((gH + 1), (eO._2 :+ toString((iC + iv))), (eO._3 :+ toString((iD - iv))), (eO._4 + fQ))
16521652 }
16531653 }
16541654
16551655 let gr = if ((size(io) != 0))
16561656 then {
16571657 let eQ = io
16581658 let eR = size(eQ)
16591659 let eS = $Tuple4(0, nil, nil, gn._4)
16601660 func hF (eU,eV) = if ((eV >= eR))
16611661 then eU
16621662 else iB(eU, eQ[eV])
16631663
16641664 func hG (eU,eV) = if ((eV >= eR))
16651665 then eU
16661666 else throw("List size exceeds 50")
16671667
16681668 hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eS, 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)
16691669 }
16701670 else $Tuple4(0, ir, it, gn._4)
16711671 let iE = gr._4
16721672 if ((iE > gW))
16731673 then throw((((("Attempt to put total " + toString(iE)) + " stuff, but only ") + toString(gW)) + " warehouse space left"))
16741674 else $Tuple7(makeString(eZ._2, "_"), makeString(gn._2, "_"), makeString_2C(gr._2, "_"), makeString(eZ._3, "_"), makeString(gn._3, "_"), makeString_2C(gr._3, "_"), iE)
16751675 }
16761676 }
16771677
16781678
16791679 func iF (iG,iH) = {
16801680 let bL = toString(iG)
16811681 let iI = hc(toBigInt(iH))
16821682 let iJ = valueOrElse(getInteger(em()), (el + 1))
16831683 let eq = toString(iJ)
16841684 let hl = toInt((iI % ef))
16851685 let gK = hj(iI, hl)
16861686 let ds = aP[hl]
16871687 let iK = Issue(eD(eq, "S"), makeString([eq, "S", gK, ds], "_"), 1, 0, false)
16881688 let bp = calculateAssetId(iK)
16891689 let iL = toBase58String(bp)
16901690 $Tuple2([IntegerEntry(em(), (iJ + 1)), iK, StringEntry(ep(eq), iL), StringEntry(bo(iL), bL), StringEntry(es(eq), bL), IntegerEntry(by(iL), 0), IntegerEntry(er(iL, bL), 0), ScriptTransfer(iG, 1, bp)], $Tuple2(iL, ds))
16911691 }
16921692
16931693
16941694 func iM (bL,iN,iO) = if (!(sigVerify_8Kb(iN, iO, dW)))
16951695 then throw("signature does not match")
16961696 else {
16971697 let fm = split_4C(toUtf8String(iN), ";")
16981698 let iP = split_4C(fm[0], "|")
16991699 let iQ = split(iP[ez], "_")
17001700 let iR = parseIntValue(iQ[0])
17011701 let iS = parseIntValue(iQ[1])
17021702 let iT = split(fm[1], ":")
17031703 let iU = iT[0]
17041704 let iV = parseIntValue(iP[eA])
17051705 if (if ((iV > (lastBlock.timestamp + dY)))
17061706 then true
17071707 else ((lastBlock.timestamp - dY) > iV))
17081708 then throw(((("signature outdated: logTime=" + toString(iV)) + ", bcTime=") + toString(lastBlock.timestamp)))
17091709 else {
17101710 let iW = iT[1]
17111711 let iX = valueOrElse(getString(dI(bL)), "")
17121712 if ((iX != iW))
17131713 then throw(((("Tx ids don't match! In state: " + iX) + ", in msg: ") + iW))
17141714 else {
17151715 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
17161716 let iY = z(A)
17171717 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
17181718 let ja = valueOrElse(getInteger(iY), iZ)
17191719 if ((ja != iR))
17201720 then throw(((("oldHealth=" + toString(ja)) + " from state does not match one from flight log=") + toString(iR)))
17211721 else if ((0 >= iR))
17221722 then throw("You can't fly with zero health")
17231723 else if (!(gt(A)))
17241724 then throw("Equipment incompatible")
17251725 else {
17261726 let jb = if ((size(iP) > eB))
17271727 then iP[eB]
17281728 else ""
17291729 let jc = if ((size(iP) > eC))
17301730 then iP[eC]
17311731 else ""
17321732 let jd = if (if ((iS > 0))
17331733 then (jb == "$")
17341734 else false)
17351735 then dy(invoke(da, "sendUsdtPrize", [bL], nil))
17361736 else 0
17371737 $Tuple5(iS, A, jd, iU, jc)
17381738 }
17391739 }
17401740 }
17411741 }
17421742
17431743
17441744 func je (P,jf) = {
17451745 let hX = valueOrElse(getInteger(by(P)), 0)
17461746 let jg = valueOrElse(getInteger(bs(aE, P)), 0)
17471747 let jh = (hX / 6)
17481748 let ji = (hX / 7)
17491749 ((aH + fraction(aH, ((hX + jh) + (2 * ji)), 5)) + fraction(aH, jg, (jf * 5)))
17501750 }
17511751
17521752
17531753 func jj (c,jk,jl) = {
17541754 let jm = if ((jk == ew))
17551755 then $Tuple2(jl, valueOrElse(getString(bH(c)), ""))
17561756 else {
17571757 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
17581758 let jn = valueOrElse(getString(bJ(A)), aJ)
17591759 let cf = split(value(jn), "_")
17601760 if ((cf[bm] != "L"))
17611761 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
17621762 else $Tuple2(cf[bn], A)
17631763 }
17641764 let P = jm._1
17651765 let jo = jm._2
17661766 let jp = value(assetInfo(fromBase58String(P)))
17671767 let jq = br(P)
17681768 let jr = valueOrErrorMessage(getInteger(jq), (("Land " + jp.name) + " is not staked"))
17691769 let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned"))
17701770 if ((js != c))
17711771 then throw((aC + " is not yours"))
17721772 else {
17731773 let jt = split(jp.description, "_")
17741774 $Tuple4(jo, P, jt, jr)
17751775 }
17761776 }
17771777
17781778
17791779 func ju (c,eF,jk,jl) = if ((0 > eF))
17801780 then throw("Negative amount")
17811781 else {
17821782 let fX = jj(c, jk, jl)
17831783 let dF = fX._3[dh]
17841784 let gD = gJ(fX._3[di])
17851785 let gN = (lastBlock.timestamp - fX._4)
17861786 if ((0 > gN))
17871787 then throw(((("Saved timestamp is in future, saved = " + toString(fX._4)) + ", current = ") + toString(lastBlock.timestamp)))
17881788 else {
17891789 let jf = dE(dF)
17901790 let jv = je(fX._2, jf)
17911791 let jw = fraction(gN, (jv * jf), a)
17921792 if ((eF > jw))
17931793 then throw(((("Not enough resources, available = " + toString(jw)) + ", requested = ") + toString(eF)))
17941794 else {
17951795 let jx = fraction((jw - eF), a, (jv * jf))
17961796 let jy = (lastBlock.timestamp - jx)
17971797 let hW = (jf / cE)
17981798 let gV = gR(gD, (gN - jx), hW, jv)
17991799 let hV = bx(fX._2)
18001800 let hX = valueOrElse(getInteger(by(fX._2)), 0)
18011801 let hM = hU(hV, hW, hX)
18021802 let id = split(hM[bc], "_")
18031803 let gW = parseIntValue(id[bf])
18041804 if (if ((jk == ew))
18051805 then (eF > gW)
18061806 else false)
18071807 then throw((("Only " + toString(gW)) + " space left in warehouse"))
18081808 else {
18091809 let hI = bI(fX._1)
18101810 let il = hH(hI)
18111811 let gU = split(il[bi], "_")
18121812 let gT = split(hM[aZ], "_")
18131813 let jz = if ((jk == ew))
18141814 then $Tuple4(gL(gT, gD, (gN - jx), hW, jv), il[bi], (parseIntValue(id[be]) + gV._2), (parseIntValue(id[bf]) - gV._2))
18151815 else if ((jk == ex))
18161816 then $Tuple4(hM[aZ], gL(gU, gD, (gN - jx), hW, jv), parseIntValue(id[be]), parseIntValue(id[bf]))
18171817 else {
18181818 let jA = gS(gT, gU, gV, gW)
18191819 let jB = min([parseIntValue(id[bf]), gV._2])
18201820 $Tuple4(jA._1, jA._2, (parseIntValue(id[be]) + jB), (parseIntValue(id[bf]) - jB))
18211821 }
18221822 let jC = jz._1
18231823 let jD = jz._2
18241824 let jE = jz._3
18251825 let jF = jz._4
18261826 $Tuple5([IntegerEntry(br(fX._2), jy), IntegerEntry(bu(aC, fX._2, c), jy)], hI, [il[bh], jD, il[bj], il[bk]], hV, [hM[aY], jC, hM[ba], hM[bb], makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")])
18271827 }
18281828 }
18291829 }
18301830 }
18311831
18321832
18331833 func jG (c,P,jf,jk) = {
18341834 let jq = br(P)
18351835 let jr = value(getInteger(jq))
18361836 let jw = (fraction((lastBlock.timestamp - jr), je(P, jf), a) * jf)
18371837 ju(c, jw, jk, P)
18381838 }
18391839
18401840
18411841 func jH (fb,iG,jI,P) = {
18421842 let c = toString(iG)
18431843 let fX = jj(c, ey, P)
18441844 let jf = dE(fX._3[dh])
18451845 let jJ = by(fX._2)
18461846 let jK = valueOrElse(getInteger(jJ), 0)
18471847 if (if (!(ct))
18481848 then (jK >= 3)
18491849 else false)
18501850 then throw("Currently max infrastructure level = 3")
18511851 else {
18521852 let jL = ((sqrt(jf, 0, 0, DOWN) / 5) + 2)
18531853 let al = (jK + 1)
18541854 if (if (ct)
18551855 then (al > jL)
18561856 else false)
18571857 then throw(("Currently max infrastructure level = " + toString(jL)))
18581858 else {
18591859 let jM = fraction(eb, (jf * al), cE)
18601860 if (if (!(fb))
18611861 then (jI != jM)
18621862 else false)
18631863 then throw(("Payment attached should be " + toString(jM)))
18641864 else {
18651865 let hI = bI(fX._1)
18661866 let il = hH(hI)
18671867 let jN = split(il[bj], "_")
18681868 let jO = fraction(cz, (jf * al), cE)
18691869 let jP = makeString(fa(fb, jN, jO), "_")
18701870 let jQ = jG(c, fX._2, jf, ey)
18711871 let jR = jQ._5
18721872 let jS = hJ(jR[aY])
18731873 let jT = makeString([split(jR[aY], "_")[0], toString(al)], "_")
18741874 let jU = hJ(jT)
18751875 let id = split(jR[bc], "_")
18761876 let jV = makeString([id[bd], id[be], toString(((parseIntValue(id[bf]) + jU) - jS)), toString(jU)], "_")
18771877 $Tuple3(([IntegerEntry(jJ, al), IntegerEntry(er(fX._2, c), al), StringEntry(hI, makeString([il[bh], jQ._3[bi], jP, il[bk]], ":")), StringEntry(jQ._4, makeString([jT, jR[aZ], jR[ba], jR[bb], jV], ":"))] ++ jQ._1), al, jO)
18781878 }
18791879 }
18801880 }
18811881 }
18821882
18831883
18841884 func jW (A,jX) = {
18851885 let jY = D(A)
18861886 let jZ = C(A)
18871887 let af = valueOrElse(getInteger(an, jZ), 0)
18881888 let ak = (af + jX)
18891889 let ka = ai(valueOrElse(getInteger(an, jY), 0), ak)
18901890 let kb = E(A)
18911891 $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak)
18921892 }
18931893
18941894
18951895 func kc (c,jX) = {
18961896 let jY = H(c)
18971897 let jZ = G(c)
18981898 let af = valueOrElse(getInteger(an, jZ), 0)
18991899 let ak = (af + jX)
19001900 let ka = ai(valueOrElse(getInteger(an, jY), 0), ak)
19011901 let kb = I(c)
19021902 $Tuple2([IntegerEntry(jY, ka[0]), IntegerEntry(jZ, ak), IntegerEntry(kb, (valueOrElse(getInteger(kb), 0) + ka[1]))], ak)
19031903 }
19041904
19051905
19061906 func kd (c) = {
19071907 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
19081908 let ke = bC(c)
19091909 let kf = getString(ke)
19101910 if (!(isDefined(kf)))
19111911 then throw("You are not eligible for ONBOARD artifact")
19121912 else {
19131913 let kg = bE(c)
19141914 let kh = getString(kg)
19151915 if (isDefined(kh))
19161916 then throw(("You already used your ONBOARD artifact on duck " + value(kh)))
19171917 else {
19181918 let ki = bD(A)
19191919 let kj = getString(ki)
19201920 if (isDefined(kj))
19211921 then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(kj)))
19221922 else ([StringEntry(kg, A), StringEntry(ki, c)] ++ jW(A, ac)._1)
19231923 }
19241924 }
19251925 }
19261926
19271927
19281928 func kk (c,jl) = {
19291929 let fX = jj(c, ey, jl)
19301930 let P = fX._2
19311931 let jf = dE(fX._3[dh])
19321932 let kl = bs(aE, P)
19331933 if ((valueOrElse(getInteger(kl), 0) > 0))
19341934 then throw("Presale artifact is already activated")
19351935 else if ((parseIntValue(fX._3[dg]) > el))
19361936 then throw((((aC + " ") + P) + " is not eligible for presale artifact"))
19371937 else {
19381938 let jQ = jG(c, P, jf, ey)
19391939 (((jQ._1 :+ IntegerEntry(kl, jf)) :+ StringEntry(jQ._2, makeString(jQ._3, ":"))) :+ StringEntry(jQ._4, makeString(jQ._5, ":")))
19401940 }
19411941 }
19421942
19431943
19441944 func km (A) = {
19451945 let ce = valueOrElse(getInteger(de, bP), 0)
19461946 let jn = split(valueOrElse(getString(bJ(A)), aJ), "_")
19471947 let ax = lastBlock.timestamp
19481948 let cg = bY(de, ce)
19491949 let ca = cg[bU]
19501950 let cb = cg[bV]
19511951 if ((jn[bm] != "T"))
19521952 then false
19531953 else if (if (if ((parseIntValue(jn[bl]) == ce))
19541954 then (cb[bX] == "INPROGRESS")
19551955 else false)
19561956 then (parseIntValue(ca[bW]) > ax)
19571957 else false)
19581958 then throw("Your duck is taking part in the tournament")
19591959 else dA(invoke(this, "exitTournamentInternal", [A], nil))
19601960 }
19611961
19621962
19631963 func kn (A) = {
19641964 let jn = split(valueOrElse(getString(bJ(A)), aJ), "_")
19651965 let ax = lastBlock.timestamp
19661966 if ((jn[bm] != "D"))
19671967 then false
19681968 else {
19691969 let ci = parseIntValue(jn[bl])
19701970 let cj = parseIntValue(jn[bn])
19711971 if (if ((ax > (ci + aN)))
19721972 then (3 > cj)
19731973 else false)
19741974 then throw("Your duck is on delivery mission")
19751975 else dA(invoke(this, "exitDeliveryInternal", [A], nil))
19761976 }
19771977 }
19781978
19791979
19801980 func ko (A) = {
19811981 let jn = split(valueOrElse(getString(bJ(A)), aJ), "_")
19821982 let ax = lastBlock.timestamp
19831983 let ci = parseIntValue(jn[bl])
19841984 let cj = parseIntValue(jn[bn])
19851985 let js = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned")
19861986 let kp = z(A)
19871987 let kq = getIntegerValue(kp)
19881988 let kr = if ((cj >= 3))
19891989 then {
19901990 let ks = invoke(db, "sendDeliveryReward", [js], nil)
19911991 if ((ks == ks))
19921992 then nil
19931993 else throw("Strict value is not equal to itself.")
19941994 }
19951995 else if ((ax > (ci + aN)))
19961996 then throw("Your duck is still on delivery mission")
19971997 else {
19981998 let kt = valueOrElse(getInteger(db, bO), 0)
19991999 let ku = invoke(db, "updateDeliveryLocked", [(kt - aM)], nil)
20002000 if ((ku == ku))
20012001 then if ((0 >= kq))
20022002 then nil
20032003 else [IntegerEntry(T(A), (ci + a))]
20042004 else throw("Strict value is not equal to itself.")
20052005 }
20062006 let kv = getIntegerValue(J(A))
20072007 let kw = getStringValue(K(A))
20082008 $Tuple4(kr, [IntegerEntry(kp, kv), StringEntry(bJ(A), kw)], kw, kv)
20092009 }
20102010
20112011
20122012 func kx (ky,al,kz,c,kA,kB) = {
20132013 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
20142014 if (km(A))
20152015 then throw("mergeInternal_checkTournament")
20162016 else if (kn(A))
20172017 then throw("mergeInternal_checkDelivery")
20182018 else {
20192019 func kC (eO,P) = {
20202020 let jp = value(assetInfo(fromBase58String(P)))
20212021 let jq = br(P)
20222022 let jr = valueOrErrorMessage(getInteger(jq), (("NFT " + jp.name) + " is not staked"))
20232023 let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned"))
20242024 if ((js != c))
20252025 then throw((aC + " is not yours"))
20262026 else {
20272027 let jt = split(jp.description, "_")
20282028 let ds = jt[dj]
20292029 if (if ((eO._3 != ""))
20302030 then (eO._3 != ds)
20312031 else false)
20322032 then throw("Lands should be on the same continent to merge")
20332033 else {
20342034 let dF = jt[dh]
20352035 let kD = eO._1
20362036 let gH = valueOrErrorMessage(indexOf(kD, dF), "You haven't passed all the lands needed")
20372037 let kE = (take(kD, gH) + drop(kD, (gH + 1)))
20382038 let jf = dE(dF)
20392039 let kF = (eO._2 + valueOrElse(getInteger(bs(aE, P)), 0))
20402040 let hX = valueOrElse(getInteger(by(P)), 0)
20412041 let kG = {
20422042 let cx = dF
20432043 if (("S" == cx))
20442044 then 3
20452045 else if (("M" == cx))
20462046 then 4
20472047 else if (("L" == cx))
20482048 then 5
20492049 else if (("XL" == cx))
20502050 then 6
20512051 else throw("Only S, M, L, XL can merge")
20522052 }
20532053 if ((hX != kG))
20542054 then throw("All lands should be maxed to merge")
20552055 else {
20562056 let eq = jt[dg]
20572057 let gD = gJ(jt[di])
20582058 let gN = (lastBlock.timestamp - jr)
20592059 if ((0 > gN))
20602060 then throw(((("Saved timestamp is in future, saved = " + toString(jr)) + ", current = ") + toString(lastBlock.timestamp)))
20612061 else {
20622062 let jv = je(P, jf)
20632063 let hW = (jf / cE)
20642064 let jD = gL(split(eO._4, "_"), gD, gN, hW, jv)
20652065 let eY = gB(eO._6, gD, hW, -1)
20662066 let kH = gB(eO._10, gD, hW, -1)
20672067 let hr = gB(eO._9, gD, hW, 1)
20682068 let kI = eO._7
20692069 let cZ = indexOf(kI, P)
20702070 if (!(isDefined(cZ)))
20712071 then throw(("Your staked lands don't contain " + P))
20722072 else {
20732073 let kJ = bq(P)
20742074 let kK = valueOrElse(getString(kJ), "")
20752075 $Tuple10(kE, kF, ds, jD, ((((((((((((eO._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(ep(eq))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(er(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(es(eq))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kJ)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kK != ""))
20762076 then [DeleteEntry(en(kK))]
20772077 else nil)), eY, removeByIndex(kI, value(cZ)), (eO._8 + jf), hr, kH)
20782078 }
20792079 }
20802080 }
20812081 }
20822082 }
20832083 }
20842084
20852085 let hI = bI(A)
20862086 let il = hH(hI)
20872087 let gC = split(valueOrElse(getString(dq()), "0_0_0_0_0_0"), "_")
20882088 let kL = dt(c)
20892089 let kM = getString(kL)
20902090 let kN = if (isDefined(kM))
20912091 then split_51C(value(kM), "_")
20922092 else nil
20932093 let kO = split(value(assetInfo(fromBase58String(kA[0]))).description, "_")[dj]
20942094 let kP = split(valueOrElse(getString(dr(kO)), "0_0_0_0_0_0"), "_")
20952095 let eZ = {
20962096 let eQ = kA
20972097 let eR = size(eQ)
20982098 let eS = $Tuple10(kz, 0, "", il[bi], nil, gC, kN, 0, split("0_0_0_0_0_0", "_"), kP)
20992099 func eT (eU,eV) = if ((eV >= eR))
21002100 then eU
21012101 else kC(eU, eQ[eV])
21022102
21032103 func eW (eU,eV) = if ((eV >= eR))
21042104 then eU
21052105 else throw("List size exceeds 5")
21062106
21072107 eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5)
21082108 }
21092109 let ds = eZ._3
21102110 let hl = valueOrErrorMessage(indexOf(aP, ds), ("Unknown continent: " + ds))
21112111 let gK = hq(eZ._9, (dE(ky) / cE))
21122112 let iJ = valueOrElse(getInteger(em()), (el + 1))
21132113 let kQ = toString(iJ)
21142114 let iK = Issue(eD(kQ, ky), makeString([kQ, ky, gK, ds], "_"), 1, 0, false)
21152115 let bp = calculateAssetId(iK)
21162116 let kR = toBase58String(bp)
21172117 let jP = makeString(fa((kB > 0), split(il[bj], "_"), kB), "_")
21182118 let kS = du(c)
21192119 let kT = valueOrElse(getInteger(kS), 0)
21202120 $Tuple2((((((((((((((((eZ._5 :+ (if ((size(eZ._7) > 0))
21212121 then StringEntry(kL, makeString_11C(eZ._7, "_"))
21222122 else DeleteEntry(kL))) :+ IntegerEntry(kS, if ((eZ._8 > kT))
21232123 then 0
21242124 else (kT - eZ._8))) :+ IntegerEntry(em(), (iJ + 1))) :+ iK) :+ StringEntry(ep(kQ), kR)) :+ StringEntry(bo(kR), c)) :+ StringEntry(es(kQ), c)) :+ IntegerEntry(bs(aE, kR), eZ._2)) :+ IntegerEntry(by(kR), al)) :+ IntegerEntry(er(kR, c), al)) :+ StringEntry(hI, makeString([il[bh], eZ._4, jP, il[bk]], ":"))) :+ StringEntry(dq(), makeString(eZ._6, "_"))) :+ StringEntry(dr(ds), makeString(eZ._10, "_"))) :+ StringEntry(bJ(A), makeString([ds, "L", kR], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kR)
21252125 }
21262126 }
21272127
21282128
21292129 func kU (c,kA) = kx("M", 3, "SSSS", c, kA, 0)
21302130
21312131
21322132 func kV (c,kA) = kx("L", 4, "SMM", c, kA, (cz * 4))
21332133
21342134
21352135 func kW (c,kA) = kx("XL", 5, "SSSML", c, kA, (cz * 47))
21362136
21372137
21382138 func kX (c,kA) = kx("XXL", 6, "LXL", c, kA, (cz * 54))
21392139
21402140
21412141 func kY (c,kA) = {
21422142 let cx = size(kA)
21432143 if ((4 == cx))
21442144 then kU(c, kA)
21452145 else if ((3 == cx))
21462146 then kV(c, kA)
21472147 else if ((5 == cx))
21482148 then kW(c, kA)
21492149 else if ((2 == cx))
21502150 then kX(c, kA)
21512151 else throw("Unknown merge")
21522152 }
21532153
21542154
21552155 func kZ (gH) = if (if ((gH.originCaller != da))
21562156 then valueOrElse(getBoolean(dH()), false)
21572157 else false)
21582158 then throw("Contracts are under maintenance")
2159- else StringEntry(dI(toString(gH.originCaller)), toBase58String(gH.transactionId))
2160-
2161-
2162-@Callable(gH)
2163-func constructorV1 (la) = if ((gH.caller != this))
2159+ else {
2160+ let bL = toString(gH.originCaller)
2161+ let la = getString(bH(bL))
2162+ ((if (isDefined(la))
2163+ then {
2164+ let A = value(la)
2165+ let lb = bJ(A)
2166+ let cf = split(valueOrElse(getString(lb), aJ), "_")
2167+ let ci = parseIntValue(cf[bl])
2168+ if (if ((cf[bm] != "D"))
2169+ then true
2170+ else (lastBlock.timestamp > (ci + aN)))
2171+ then nil
2172+ else {
2173+ let kp = z(A)
2174+ if ((parseIntValue(cf[bn]) >= 3))
2175+ then {
2176+ let ks = invoke(db, "sendDeliveryReward", [bL], nil)
2177+ if ((ks == ks))
2178+ then nil
2179+ else throw("Strict value is not equal to itself.")
2180+ }
2181+ else (({
2182+ let kt = valueOrElse(getInteger(db, bO), 0)
2183+ let ku = invoke(db, "updateDeliveryLocked", [(kt - aM)], nil)
2184+ if ((ku == ku))
2185+ then if ((0 >= getIntegerValue(kp)))
2186+ then nil
2187+ else {
2188+ let lc = invoke(this, "saveInteger", [T(A), (ci + a)], nil)
2189+ if ((lc == lc))
2190+ then nil
2191+ else throw("Strict value is not equal to itself.")
2192+ }
2193+ else throw("Strict value is not equal to itself.")
2194+ } :+ IntegerEntry(kp, getIntegerValue(J(A)))) :+ StringEntry(lb, getStringValue(K(A))))
2195+ }
2196+ }
2197+ else nil) :+ StringEntry(dI(bL), toBase58String(gH.transactionId)))
2198+ }
2199+
2200+
2201+func ld (gH) = if (if ((gH.originCaller != da))
2202+ then valueOrElse(getBoolean(dH()), false)
2203+ else false)
2204+ then throw("Contracts are under maintenance")
2205+ else [StringEntry(dI(toString(gH.originCaller)), toBase58String(gH.transactionId))]
2206+
2207+
2208+@Callable(gH)
2209+func constructorV1 (le) = if ((gH.caller != this))
21642210 then throw("Permission denied")
2165- else [StringEntry(cU(), la)]
2166-
2167-
2168-
2169-@Callable(gH)
2170-func setBlocked (lb) = if ((gH.caller != this))
2211+ else [StringEntry(cU(), le)]
2212+
2213+
2214+
2215+@Callable(gH)
2216+func saveInteger (cM,eF) = if ((gH.caller != this))
2217+ then throw("saveInteger is not public method")
2218+ else [IntegerEntry(cM, eF)]
2219+
2220+
2221+
2222+@Callable(gH)
2223+func setBlocked (lf) = if ((gH.caller != this))
21712224 then throw("permission denied")
2172- else [BooleanEntry(dH(), lb)]
2225+ else [BooleanEntry(dH(), lf)]
21732226
21742227
21752228
21762229 @Callable(gH)
21772230 func stakeLand () = {
2178- let lc = kZ(gH)
2231+ let lg = kZ(gH)
21792232 if ((size(gH.payments) != 1))
21802233 then throw("Exactly one payment required")
21812234 else {
2182- let ld = value(gH.payments[0])
2183- let bp = value(ld.assetId)
2235+ let lh = value(gH.payments[0])
2236+ let bp = value(lh.assetId)
21842237 let cL = toString(gH.caller)
2185- if ((ld.amount != 1))
2238+ if ((lh.amount != 1))
21862239 then throw((("NFT " + aC) + " token should be attached as payment"))
21872240 else {
21882241 let jp = value(assetInfo(bp))
21892242 if ((jp.issuer != this))
21902243 then throw("Unknown issuer of token")
21912244 else if (!(contains(jp.name, aC)))
21922245 then throw((("Only NFT " + aC) + " tokens are accepted"))
21932246 else {
2194- let le = drop(jp.name, 4)
2195- let eq = if (contains(le, "XXL"))
2196- then dropRight(le, 3)
2197- else if (contains(le, "XL"))
2198- then dropRight(le, 2)
2199- else dropRight(le, 1)
2247+ let li = drop(jp.name, 4)
2248+ let eq = if (contains(li, "XXL"))
2249+ then dropRight(li, 3)
2250+ else if (contains(li, "XL"))
2251+ then dropRight(li, 2)
2252+ else dropRight(li, 1)
22002253 if (!(isDefined(parseInt(eq))))
22012254 then throw(("Cannot parse land number from " + jp.name))
22022255 else {
22032256 let P = toBase58String(bp)
22042257 let jq = br(P)
22052258 if (isDefined(getInteger(jq)))
22062259 then throw((("NFT " + jp.name) + " is already staked"))
22072260 else {
22082261 let jt = split(jp.description, "_")
22092262 let gD = gJ(jt[di])
22102263 let jf = dE(jt[dh])
22112264 let hW = (jf / cE)
22122265 let eY = gI(gD, hW, 1)
2213- let lf = dr(jt[dj])
2214- let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_")
2215- let lg = makeString(gB(kP, gD, hW, 1), "_")
2266+ let lj = dr(jt[dj])
2267+ let kP = split(valueOrElse(getString(lj), "0_0_0_0_0_0"), "_")
2268+ let lk = makeString(gB(kP, gD, hW, 1), "_")
22162269 let kL = dt(cL)
22172270 let kM = getString(kL)
22182271 let kI = if (isDefined(kM))
22192272 then split_51C(value(kM), "_")
22202273 else nil
22212274 if (containsElement(kI, P))
22222275 then throw(("Your staked lands already contain " + P))
22232276 else if ((size(kI) >= aG))
22242277 then throw((("Your already staked max (" + toString(aG)) + ") lands"))
22252278 else {
22262279 let hX = valueOrElse(getInteger(by(P)), 0)
22272280 let kS = du(cL)
2228- let lh = valueOrElse(getInteger(kS), 0)
2229- let li = invoke(dd, "onStakeUnstakeLand", [cL], nil)
2230- $Tuple2([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kL, makeString_11C((kI :+ P), "_")), IntegerEntry(kS, (lh + jf)), StringEntry(bo(P), cL), StringEntry(es(eq), cL), IntegerEntry(er(P, cL), hX), StringEntry(dq(), eY), StringEntry(lf, lg), lc], li)
2281+ let ll = valueOrElse(getInteger(kS), 0)
2282+ let lm = invoke(dd, "onStakeUnstakeLand", [cL], nil)
2283+ $Tuple2(([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aC, P, cL), lastBlock.timestamp), StringEntry(kL, makeString_11C((kI :+ P), "_")), IntegerEntry(kS, (ll + jf)), StringEntry(bo(P), cL), StringEntry(es(eq), cL), IntegerEntry(er(P, cL), hX), StringEntry(dq(), eY), StringEntry(lj, lk)] ++ lg), lm)
22312284 }
22322285 }
22332286 }
22342287 }
22352288 }
22362289 }
22372290 }
22382291
22392292
22402293
22412294 @Callable(gH)
22422295 func unstakeLand (jl) = {
2243- let lc = kZ(gH)
2296+ let lg = kZ(gH)
22442297 if ((size(gH.payments) != 0))
22452298 then throw("No payments required")
22462299 else {
22472300 let c = toString(gH.caller)
22482301 let fX = jj(c, ex, jl)
22492302 let P = fX._2
22502303 let jt = fX._3
22512304 let kL = dt(c)
22522305 let gD = gJ(jt[di])
22532306 let jf = dE(jt[dh])
22542307 let hW = (jf / cE)
22552308 let eY = gI(gD, hW, -1)
2256- let lf = dr(jt[dj])
2257- let kP = split(valueOrElse(getString(lf), "0_0_0_0_0_0"), "_")
2258- let lg = makeString(gB(kP, gD, hW, -1), "_")
2309+ let lj = dr(jt[dj])
2310+ let kP = split(valueOrElse(getString(lj), "0_0_0_0_0_0"), "_")
2311+ let lk = makeString(gB(kP, gD, hW, -1), "_")
22592312 let jQ = jG(c, P, jf, ex)
22602313 let kI = split_51C(valueOrElse(getString(kL), ""), "_")
22612314 let cZ = indexOf(kI, P)
22622315 if (!(isDefined(cZ)))
22632316 then throw(("Your staked lands don't contain " + P))
22642317 else {
22652318 let ax = lastBlock.timestamp
2266- let lj = valueOrElse(getInteger(dc, bK(c)), 0)
2267- if ((lj >= ax))
2268- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lj)))
2319+ let ln = valueOrElse(getInteger(dc, bK(c)), 0)
2320+ if ((ln >= ax))
2321+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ln)))
22692322 else {
2270- let lk = (valueOrElse(getInteger(dd, b(c)), 0) + cA)
2271- if ((lk > ax))
2272- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lk)))
2323+ let lo = (valueOrElse(getInteger(dd, b(c)), 0) + cA)
2324+ if ((lo > ax))
2325+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lo)))
22732326 else {
22742327 let kS = du(c)
22752328 let kT = valueOrElse(getInteger(kS), 0)
2276- let ll = if ((jf > kT))
2329+ let lp = if ((jf > kT))
22772330 then 0
22782331 else (kT - jf)
2279- let li = invoke(dd, "onStakeUnstakeLand", [c], nil)
2280- $Tuple2([ScriptTransfer(gH.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), eY), StringEntry(lf, lg), StringEntry(jQ._2, makeString(jQ._3, ":")), if ((size(kI) > 1))
2332+ let lm = invoke(dd, "onStakeUnstakeLand", [c], nil)
2333+ $Tuple2(([ScriptTransfer(gH.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dq(), eY), StringEntry(lj, lk), StringEntry(jQ._2, makeString(jQ._3, ":")), if ((size(kI) > 1))
22812334 then StringEntry(kL, makeString_11C(removeByIndex(kI, value(cZ)), "_"))
2282- else DeleteEntry(kL), IntegerEntry(kS, ll), lc], li)
2335+ else DeleteEntry(kL), IntegerEntry(kS, lp)] ++ lg), lm)
22832336 }
22842337 }
22852338 }
22862339 }
22872340 }
22882341
22892342
22902343
22912344 @Callable(gH)
22922345 func stakeDuck () = {
2293- let lc = kZ(gH)
2346+ let lg = kZ(gH)
22942347 if ((size(gH.payments) != 1))
22952348 then throw("Exactly one payment required")
22962349 else {
2297- let ld = value(gH.payments[0])
2298- let bp = value(ld.assetId)
2350+ let lh = value(gH.payments[0])
2351+ let bp = value(lh.assetId)
22992352 let cL = toString(gH.caller)
2300- if ((ld.amount != 1))
2353+ if ((lh.amount != 1))
23012354 then throw((("NFT " + aD) + " token should be attached as payment"))
23022355 else {
23032356 let jp = value(assetInfo(bp))
23042357 if (if ((jp.issuer != dU))
23052358 then (jp.issuer != dV)
23062359 else false)
23072360 then throw((("Unknown issuer of " + aD) + " token"))
23082361 else if (!(contains(jp.name, aD)))
23092362 then throw((("Only NFT " + aD) + " tokens are accepted"))
23102363 else {
2311- let lm = toBase58String(bp)
2312- let jq = br(lm)
2364+ let lq = toBase58String(bp)
2365+ let jq = br(lq)
23132366 if (isDefined(getInteger(jq)))
23142367 then throw((("NFT " + jp.name) + " is already staked"))
23152368 else if (isDefined(getString(bH(cL))))
23162369 then throw(("You already staked one duck: " + jp.name))
23172370 else {
2318- let ln = bJ(lm)
2319- let cd = getString(ln)
2320- let hI = bI(lm)
2321- let lo = getString(hI)
2322- let iY = z(lm)
2323- let iZ = ag(valueOrElse(getInteger(D(lm)), 0))
2371+ let lb = bJ(lq)
2372+ let cd = getString(lb)
2373+ let hI = bI(lq)
2374+ let lr = getString(hI)
2375+ let iY = z(lq)
2376+ let iZ = ag(valueOrElse(getInteger(D(lq)), 0))
23242377 let kq = valueOrElse(getInteger(iY), iZ)
2325- ([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lm), cL), StringEntry(bH(cL), lm)] ++ (if (isDefined(cd))
2378+ ([IntegerEntry(jq, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cL), lastBlock.timestamp), StringEntry(bG(lq), cL), StringEntry(bH(cL), lq)] ++ (if (isDefined(cd))
23262379 then nil
2327- else ([StringEntry(ln, aJ)] ++ (if (isDefined(lo))
2380+ else ([StringEntry(lb, aJ)] ++ (if (isDefined(lr))
23282381 then nil
2329- else (([StringEntry(hI, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iY, kq)) :+ lc)))))
2382+ else (([StringEntry(hI, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iY, kq)) ++ lg)))))
23302383 }
23312384 }
23322385 }
23332386 }
23342387 }
23352388
23362389
23372390
23382391 @Callable(gH)
2339-func unstakeDuck (lm) = {
2340- let lc = kZ(gH)
2392+func unstakeDuck (lq) = {
2393+ let lg = kZ(gH)
23412394 if ((size(gH.payments) != 0))
23422395 then throw("No payments required")
23432396 else {
2344- let bp = fromBase58String(lm)
2397+ let bp = fromBase58String(lq)
23452398 let cL = toString(gH.caller)
23462399 let jp = value(assetInfo(bp))
2347- let jq = br(lm)
2400+ let jq = br(lq)
23482401 if (!(isDefined(getInteger(jq))))
23492402 then throw((("NFT " + jp.name) + " is not staked"))
23502403 else if (!(isDefined(getString(bH(cL)))))
23512404 then throw((("The duck " + jp.name) + " is not staked"))
23522405 else {
2353- let js = valueOrErrorMessage(getString(bG(lm)), (("NFT " + jp.name) + " is orphaned"))
2406+ let js = valueOrErrorMessage(getString(bG(lq)), (("NFT " + jp.name) + " is orphaned"))
23542407 if ((js != cL))
23552408 then throw("Staked NFT is not yours")
2356- else if (km(lm))
2409+ else if (km(lq))
23572410 then throw("unstakeDuck_checkTournament")
2358- else if (kn(lm))
2411+ else if (kn(lq))
23592412 then throw("unstakeDuck_checkDelivery")
23602413 else {
2361- let iY = z(lm)
2362- let iZ = ag(valueOrElse(getInteger(D(lm)), 0))
2414+ let iY = z(lq)
2415+ let iZ = ag(valueOrElse(getInteger(D(lq)), 0))
23632416 let as = valueOrElse(getInteger(iY), iZ)
23642417 if ((iZ > as))
23652418 then throw((("Please heal your duck to " + toString(iZ)) + "hp before unstaking"))
2366- else [ScriptTransfer(gH.caller, 1, bp), DeleteEntry(jq), DeleteEntry(iY), DeleteEntry(bJ(lm)), DeleteEntry(bG(lm)), DeleteEntry(bu(aD, lm, cL)), DeleteEntry(bH(cL)), lc]
2419+ else ([ScriptTransfer(gH.caller, 1, bp), DeleteEntry(jq), DeleteEntry(iY), DeleteEntry(bJ(lq)), DeleteEntry(bG(lq)), DeleteEntry(bu(aD, lq, cL)), DeleteEntry(bH(cL))] ++ lg)
23672420 }
23682421 }
23692422 }
23702423 }
23712424
23722425
23732426
23742427 @Callable(gH)
2375-func claimRes (eF,lp) = {
2376- let lc = kZ(gH)
2428+func claimRes (eF,ls) = {
2429+ let lg = kZ(gH)
23772430 if ((size(gH.payments) != 0))
23782431 then throw("No payments required")
23792432 else {
23802433 let c = toString(gH.originCaller)
2381- let fg = ju(c, eF, ex, lp)
2434+ let fg = ju(c, eF, ex, ls)
23822435 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
2383- $Tuple2(((((fg._1 ++ jW(A, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._3[bi])
2384- }
2385- }
2386-
2387-
2388-
2389-@Callable(gH)
2390-func claimResToWH (eF,lp) = {
2391- let lc = kZ(gH)
2436+ $Tuple2(((((fg._1 ++ jW(A, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) ++ lg), fg._3[bi])
2437+ }
2438+ }
2439+
2440+
2441+
2442+@Callable(gH)
2443+func claimResToWH (eF,ls) = {
2444+ let lg = kZ(gH)
23922445 if ((size(gH.payments) != 0))
23932446 then throw("No payments required")
23942447 else {
23952448 let c = toString(gH.originCaller)
2396- let fg = ju(c, eF, ew, lp)
2397- $Tuple2(((((fg._1 ++ kc(c, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) :+ lc), fg._5[aZ])
2449+ let fg = ju(c, eF, ew, ls)
2450+ $Tuple2(((((fg._1 ++ kc(c, fraction(U, eF, cD))._1) :+ StringEntry(fg._2, makeString(fg._3, ":"))) :+ StringEntry(fg._4, makeString(fg._5, ":"))) ++ lg), fg._5[aZ])
23982451 }
23992452 }
24002453
24012454
24022455
24032456 @Callable(gH)
24042457 func flight (iN,iO) = {
2405- let lc = kZ(gH)
2458+ let lg = ld(gH)
24062459 if ((size(gH.payments) != 0))
24072460 then throw("No payments required")
24082461 else {
24092462 let bL = toString(gH.caller)
24102463 let hm = iM(bL, iN, iO)
24112464 let iS = hm._1
24122465 let A = hm._2
2413- let ln = bJ(A)
2414- let jn = valueOrElse(getString(ln), aJ)
2466+ let lb = bJ(A)
2467+ let jn = valueOrElse(getString(lb), aJ)
24152468 let iU = hm._4
24162469 if ((iU == jn))
24172470 then throw("You can't fly to the same location")
24182471 else {
24192472 let cr = split(iU, "_")
2420- let lq = (cr[bm] == "T")
2421- let lr = (cr[bm] == "D")
2473+ let lt = (cr[bm] == "T")
2474+ let lu = (cr[bm] == "D")
24222475 let gu = F(A)
2423- let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2424- let lt = fh(ls, hm._5)
2425- let lu = lt._1
2426- let lv = lt._2
2427- let lw = if (cm(de, jn))
2476+ let lv = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2477+ let lw = fh(lv, hm._5)
2478+ let lx = lw._1
2479+ let ly = lw._2
2480+ let lz = if (cm(de, jn))
24282481 then if (!(ck(iU)))
24292482 then cp(jn, iU)
24302483 else if ((iS > 0))
24312484 then $Tuple2(iU, iS)
24322485 else $Tuple2(jn, 0)
24332486 else if (cc(de, jn))
24342487 then if (!(cc(de, iU)))
24352488 then throw("Your duck is taking part in the tournament")
24362489 else {
2437- let lx = parseIntValue(cr[bn])
2438- let ly = split(jn, "_")
2490+ let lA = parseIntValue(cr[bn])
2491+ let lB = split(jn, "_")
24392492 let ce = valueOrElse(getInteger(de, bP), 0)
2440- if ((lx != (parseIntValue(ly[bn]) + 1)))
2493+ if ((lA != (parseIntValue(lB[bn]) + 1)))
24412494 then cp(jn, iU)
24422495 else if ((iS > 0))
24432496 then {
2444- let lz = valueOrElse(getInteger(de, bT(ce, A)), 0)
2445- let lA = if ((lx > lz))
2446- then invoke(de, "saveDuckResult", [A, lx], nil)
2497+ let lC = valueOrElse(getInteger(de, bT(ce, A)), 0)
2498+ let lD = if ((lA > lC))
2499+ then invoke(de, "saveDuckResult", [A, lA], nil)
24472500 else unit
2448- if ((lA == lA))
2501+ if ((lD == lD))
24492502 then $Tuple2(iU, iS)
24502503 else throw("Strict value is not equal to itself.")
24512504 }
24522505 else $Tuple2(jn, 0)
24532506 }
24542507 else if (!(ch(jn)))
24552508 then {
2456- let lB = dB(invoke(this, "autoExitDelivery", [A], nil))
2457- if ((lB == lB))
2458- then if (lr)
2459- then lB
2509+ let lE = dB(invoke(this, "autoExitDelivery", [A], nil))
2510+ if ((lE == lE))
2511+ then if (lu)
2512+ then lE
24602513 else if ((iS > 0))
24612514 then $Tuple2(iU, iS)
2462- else $Tuple2(lB._1, 0)
2515+ else $Tuple2(lE._1, 0)
24632516 else throw("Strict value is not equal to itself.")
24642517 }
2465- else if (!(lr))
2518+ else if (!(lu))
24662519 then throw("Your duck is taking part in delivery")
24672520 else if (!(ch(iU)))
24682521 then cp(jn, iU)
24692522 else {
2470- let lx = parseIntValue(cr[bn])
2471- let ly = split(jn, "_")
2472- if ((lx != (parseIntValue(ly[bn]) + 1)))
2523+ let lA = parseIntValue(cr[bn])
2524+ let lB = split(jn, "_")
2525+ if ((lA != (parseIntValue(lB[bn]) + 1)))
24732526 then cp(jn, iU)
2474- else if ((iS > 0))
2527+ else if (if ((iS > 0))
2528+ then (3 > lA)
2529+ else false)
24752530 then $Tuple2(iU, iS)
24762531 else {
2477- let lB = dB(invoke(this, "autoExitDelivery", [A], nil))
2478- if ((lB == lB))
2479- then lB
2532+ let lE = dB(invoke(this, "autoExitDelivery", [A], nil))
2533+ if ((lE == lE))
2534+ then lE
24802535 else throw("Strict value is not equal to itself.")
24812536 }
24822537 }
2483- let lC = lw._1
2484- let lD = lw._2
2485- $Tuple2(([StringEntry(ln, lC), StringEntry(gu, lu), IntegerEntry(z(A), iS), lc] ++ (if (lv)
2538+ let lF = lz._1
2539+ let lG = lz._2
2540+ $Tuple2(((([StringEntry(lb, lF), StringEntry(gu, lx), IntegerEntry(z(A), iS)] ++ lg) ++ (if (ly)
24862541 then [StringEntry(L(A), "0_0_0_0_0")]
2487- else (nil ++ jW(A, if ((iS > 0))
2488- then V
2489- else W)._1))), hm._3)
2542+ else nil)) ++ jW(A, if ((iS > 0))
2543+ then V
2544+ else W)._1), hm._3)
24902545 }
24912546 }
24922547 }
24932548
24942549
24952550
24962551 @Callable(gH)
2497-func heal (lE,lF,lG) = {
2498- let lc = kZ(gH)
2499- if (if (if ((0 > lE))
2552+func heal (lH,lI,lJ) = {
2553+ let lg = kZ(gH)
2554+ if (if (if ((0 > lH))
25002555 then true
2501- else (0 > lF))
2556+ else (0 > lI))
25022557 then true
2503- else (0 > lG))
2558+ else (0 > lJ))
25042559 then throw("Quantity cannot be negative")
25052560 else {
25062561 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
25072562 if (km(A))
25082563 then throw("heal_checkTournament")
25092564 else if (kn(A))
25102565 then throw("heal_checkDelivery")
25112566 else {
2512- let lH = [lE, lF, lG]
2567+ let lK = [lH, lI, lJ]
25132568 let iY = z(A)
25142569 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
2515- let lI = valueOrElse(getInteger(iY), iZ)
2516- if ((lI >= iZ))
2570+ let lL = valueOrElse(getInteger(iY), iZ)
2571+ if ((lL >= iZ))
25172572 then throw((("HP should be < " + toString(iZ)) + " to heal"))
25182573 else {
25192574 let hI = bI(A)
25202575 let il = hH(hI)
2521- let lJ = if ((il[bk] == ""))
2576+ let lM = if ((il[bk] == ""))
25222577 then nil
25232578 else split_4C(il[bk], "_")
2524- func lK (eO,co) = {
2579+ func lN (eO,co) = {
25252580 let dz = eO._2
2526- let hd = if ((size(lJ) > dz))
2527- then parseIntValue(lJ[dz])
2581+ let hd = if ((size(lM) > dz))
2582+ then parseIntValue(lM[dz])
25282583 else 0
25292584 if ((3 > dz))
25302585 then {
2531- let lL = lH[dz]
2532- if ((lL > hd))
2586+ let lO = lK[dz]
2587+ if ((lO > hd))
25332588 then throw(((("You have only " + toString(hd)) + " of ") + aO[dz]))
2534- else $Tuple3((eO._1 :+ toString((hd - lL))), (dz + 1), (eO._3 + (parseIntValue(split(co, "_")[aU]) * lL)))
2589+ else $Tuple3((eO._1 :+ toString((hd - lO))), (dz + 1), (eO._3 + (parseIntValue(split(co, "_")[aU]) * lO)))
25352590 }
25362591 else $Tuple3((eO._1 :+ toString(hd)), (dz + 1), eO._3)
25372592 }
25382593
25392594 let fg = {
25402595 let eQ = aS
25412596 let eR = size(eQ)
25422597 let eS = $Tuple3(nil, 0, 0)
25432598 func eT (eU,eV) = if ((eV >= eR))
25442599 then eU
2545- else lK(eU, eQ[eV])
2600+ else lN(eU, eQ[eV])
25462601
25472602 func eW (eU,eV) = if ((eV >= eR))
25482603 then eU
25492604 else throw("List size exceeds 50")
25502605
25512606 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
25522607 }
2553- let lM = min([iZ, (lI + fg._3)])
2554- $Tuple2(([IntegerEntry(iY, lM), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], makeString(fg._1, "_")], ":")), lc] ++ jW(A, (ad * ((lE + lF) + lG)))._1), lM)
2608+ let lP = min([iZ, (lL + fg._3)])
2609+ $Tuple2((([IntegerEntry(iY, lP), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], makeString(fg._1, "_")], ":"))] ++ lg) ++ jW(A, (ad * ((lH + lI) + lJ)))._1), lP)
25552610 }
25562611 }
25572612 }
25582613 }
25592614
25602615
25612616
25622617 @Callable(gH)
25632618 func healES () = {
2564- let lc = kZ(gH)
2619+ let lg = kZ(gH)
25652620 if ((size(gH.payments) != 1))
25662621 then throw("Exactly one payment required")
25672622 else {
2568- let ld = value(gH.payments[0])
2569- if ((ld.assetId != cw))
2623+ let lh = value(gH.payments[0])
2624+ if ((lh.assetId != cw))
25702625 then throw("Allowed USDT payment only!")
25712626 else {
25722627 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
25732628 if (km(A))
25742629 then throw("healES_checkTournament")
25752630 else if (kn(A))
25762631 then throw("healES_checkDelivery")
25772632 else {
25782633 let iY = z(A)
25792634 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
2580- let lI = valueOrElse(getInteger(iY), iZ)
2581- if ((lI > 0))
2635+ let lL = valueOrElse(getInteger(iY), iZ)
2636+ if ((lL > 0))
25822637 then throw("HP should be 0 to call Emergency Service")
25832638 else {
25842639 let hI = bI(A)
25852640 let il = hH(hI)
2586- let lJ = if ((il[bk] == ""))
2641+ let lM = if ((il[bk] == ""))
25872642 then nil
25882643 else split_4C(il[bk], "_")
2589- let lN = if ((size(lJ) > 0))
2590- then parseIntValue(lJ[0])
2644+ let lQ = if ((size(lM) > 0))
2645+ then parseIntValue(lM[0])
25912646 else 0
2592- let lO = if ((size(lJ) > 1))
2593- then parseIntValue(lJ[1])
2647+ let lR = if ((size(lM) > 1))
2648+ then parseIntValue(lM[1])
25942649 else 0
2595- let lP = if ((size(lJ) > 2))
2596- then parseIntValue(lJ[2])
2650+ let lS = if ((size(lM) > 2))
2651+ then parseIntValue(lM[2])
25972652 else 0
2598- if (if (if ((lN > 0))
2653+ if (if (if ((lQ > 0))
25992654 then true
2600- else (lO > 0))
2655+ else (lR > 0))
26012656 then true
2602- else (lP > 0))
2657+ else (lS > 0))
26032658 then throw("You have to use own Medical Kit")
26042659 else {
2605- let lQ = getString(db, bM())
2606- let lR = if (isDefined(lQ))
2607- then split_4C(value(lQ), "_")
2660+ let lT = getString(db, bM())
2661+ let lU = if (isDefined(lT))
2662+ then split_4C(value(lT), "_")
26082663 else nil
2609- let lS = if ((size(lR) > 0))
2610- then parseIntValue(lR[0])
2664+ let lV = if ((size(lU) > 0))
2665+ then parseIntValue(lU[0])
26112666 else 0
2612- if ((0 >= lS))
2667+ if ((0 >= lV))
26132668 then throw("There are no Medical Kits L1 at Emergency Service storage")
26142669 else {
2615- let lM = (lI + parseIntValue(split(aS[0], "_")[aU]))
2616- let lT = makeString([toString((lS - 1)), removeByIndex(lR, 0)], "_")
2670+ let lP = (lL + parseIntValue(split(aS[0], "_")[aU]))
2671+ let lW = makeString([toString((lV - 1)), removeByIndex(lU, 0)], "_")
26172672 let co = split(aS[0], "_")
2618- let lU = cn(co)
2619- let lV = fraction((lU * aL), aK, (cD * aX))
2620- if ((ld.amount != lV))
2621- then throw(("Payment attached should be " + toString(lV)))
2673+ let lX = cn(co)
2674+ let lY = fraction((lX * aL), aK, (cD * aX))
2675+ if ((lh.amount != lY))
2676+ then throw(("Payment attached should be " + toString(lY)))
26222677 else {
2623- let fg = dv(invoke(db, "updateEsStorage", [lT], [AttachedPayment(cw, lV)]))
2624- $Tuple2(([IntegerEntry(iY, lM), lc] ++ jW(A, X)._1), fg)
2678+ let fg = dv(invoke(db, "updateEsStorage", [lW], [AttachedPayment(cw, lY)]))
2679+ $Tuple2(((lg :+ IntegerEntry(iY, lP)) ++ jW(A, X)._1), fg)
26252680 }
26262681 }
26272682 }
26282683 }
26292684 }
26302685 }
26312686 }
26322687 }
26332688
26342689
26352690
26362691 @Callable(gH)
2637-func updateBackpack (A,lW) = if ((gH.caller != db))
2692+func updateBackpack (A,lZ) = if ((gH.caller != db))
26382693 then throw("permission denied")
2639- else $Tuple2([StringEntry(bI(A), lW)], lW)
2694+ else $Tuple2([StringEntry(bI(A), lZ)], lZ)
26402695
26412696
26422697
26432698 @Callable(gH)
26442699 func commitForRandom () = {
2645- let lc = kZ(gH)
2646- let lX = (height + do)
2700+ let lg = kZ(gH)
2701+ let ma = (height + do)
26472702 let c = toString(gH.caller)
2648- $Tuple2(([IntegerEntry(dp(c), lX)] :+ lc), lX)
2649- }
2650-
2651-
2652-
2653-@Callable(gH)
2654-func awardSLand (cL) = if ((gH.caller != de))
2655- then throw("Access denied")
2656- else if ((size(gH.payments) != 0))
2657- then throw("No payments required")
2658- else {
2659- let fg = iF(addressFromStringValue(cL), gH.transactionId)
2660- $Tuple2(fg._1, fg._2._1)
2661- }
2703+ $Tuple2(([IntegerEntry(dp(c), ma)] ++ lg), ma)
2704+ }
26622705
26632706
26642707
26652708 @Callable(gH)
26662709 func buySLand () = {
2667- let lc = kZ(gH)
2710+ let lg = kZ(gH)
26682711 if ((size(gH.payments) != 1))
26692712 then throw("Exactly one payment required")
26702713 else {
2671- let ld = value(gH.payments[0])
2672- if ((ld.assetId != cw))
2714+ let lh = value(gH.payments[0])
2715+ if ((lh.assetId != cw))
26732716 then throw("Allowed USDT payment only!")
2674- else if ((ld.amount != ed))
2717+ else if ((lh.amount != ed))
26752718 then throw(("Payment attached should be " + toString(ed)))
26762719 else {
26772720 let fg = iF(gH.caller, gH.transactionId)
2678- let lY = dy(invoke(df, "burnAcres", [ee], nil))
2679- $Tuple2((((fg._1 :+ ScriptTransfer(db, ld.amount, cw)) ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY))
2721+ let mb = dy(invoke(df, "burnAcres", [ee], nil))
2722+ $Tuple2((((fg._1 :+ ScriptTransfer(db, lh.amount, cw)) ++ kc(toString(gH.caller), Z)._1) ++ lg), $Tuple2(fg._2._1, mb))
26802723 }
26812724 }
26822725 }
26832726
26842727
26852728
26862729 @Callable(gH)
26872730 func expedition (iN,iO) = {
2688- let lc = kZ(gH)
2731+ let lg = kZ(gH)
26892732 if ((size(gH.payments) != 0))
26902733 then throw("No payments required")
26912734 else {
26922735 let bL = toString(gH.caller)
26932736 let hm = iM(bL, iN, iO)
26942737 let A = hm._2
26952738 let iY = z(A)
26962739 let hI = bI(A)
26972740 let il = hH(hI)
26982741 let jN = split(il[bj], "_")
26992742 let jP = makeString(fa(true, jN, ec), "_")
27002743 let gu = F(A)
2701- let ls = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2702- let lZ = fh(ls, hm._5)
2703- let lu = lZ._1
2704- let lv = lZ._2
2705- let ma = iF(gH.caller, gH.transactionId)
2706- let iL = ma._2._1
2744+ let lv = valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,")
2745+ let mc = fh(lv, hm._5)
2746+ let lx = mc._1
2747+ let ly = mc._2
2748+ let md = iF(gH.caller, gH.transactionId)
2749+ let iL = md._2._1
27072750 let fg = if ((0 >= hm._1))
2708- then $Tuple3([IntegerEntry(iY, 0), StringEntry(gu, lu)], "", 0)
2709- else $Tuple3((ma._1 ++ (if (lv)
2751+ then $Tuple3([IntegerEntry(iY, 0), StringEntry(gu, lx)], "", 0)
2752+ else $Tuple3((md._1 ++ (if (ly)
27102753 then [StringEntry(L(A), "0_0_0_0_0")]
2711- else ((((nil :+ StringEntry(bJ(A), makeString([ma._2._2, "L", iL], "_"))) :+ IntegerEntry(iY, hm._1)) :+ StringEntry(gu, lu)) :+ StringEntry(hI, makeString([il[bh], il[bi], jP, il[bk]], ":"))))), iL, hm._3)
2754+ else ((((nil :+ StringEntry(bJ(A), makeString([md._2._2, "L", iL], "_"))) :+ IntegerEntry(iY, hm._1)) :+ StringEntry(gu, lx)) :+ StringEntry(hI, makeString([il[bh], il[bi], jP, il[bk]], ":"))))), iL, hm._3)
27122755 if (km(A))
27132756 then throw("expedition_checkTournament")
27142757 else if (kn(A))
27152758 then throw("expedition_checkDelivery")
27162759 else {
2717- let lY = dy(invoke(df, "burnAcres", [ee], nil))
2718- $Tuple2(((fg._1 ++ jW(A, Z)._1) :+ lc), $Tuple3(fg._2, fg._3, lY))
2760+ let mb = dy(invoke(df, "burnAcres", [ee], nil))
2761+ $Tuple2(((fg._1 ++ jW(A, Z)._1) ++ lg), $Tuple3(fg._2, fg._3, mb))
27192762 }
27202763 }
27212764 }
27222765
27232766
27242767
27252768 @Callable(gH)
27262769 func buySLandForAcres () = {
2727- let lc = kZ(gH)
2770+ let lg = kZ(gH)
27282771 if ((size(gH.payments) != 1))
27292772 then throw("exactly 1 payment must be attached")
27302773 else {
2731- let ld = gH.payments[0]
2732- let fn = ld.amount
2733- if (if (!(isDefined(ld.assetId)))
2774+ let lh = gH.payments[0]
2775+ let fn = lh.amount
2776+ if (if (!(isDefined(lh.assetId)))
27342777 then true
2735- else (value(ld.assetId) != dn))
2778+ else (value(lh.assetId) != dn))
27362779 then throw("ACRES payments only!")
27372780 else if ((fn != ee))
27382781 then throw(("Payment attached should be " + toString(ee)))
27392782 else {
27402783 let fg = iF(gH.caller, gH.transactionId)
2741- let lY = dy(invoke(df, "burnAcres", [ee], [AttachedPayment(dn, fn)]))
2742- $Tuple2(((fg._1 ++ kc(toString(gH.caller), Z)._1) :+ lc), $Tuple2(fg._2._1, lY))
2784+ let mb = dy(invoke(df, "burnAcres", [ee], [AttachedPayment(dn, fn)]))
2785+ $Tuple2(((fg._1 ++ kc(toString(gH.caller), Z)._1) ++ lg), $Tuple2(fg._2._1, mb))
27432786 }
27442787 }
27452788 }
27462789
27472790
27482791
27492792 @Callable(gH)
27502793 func upgradeInfra (P) = {
2751- let lc = kZ(gH)
2794+ let lg = kZ(gH)
27522795 if ((size(gH.payments) != 0))
27532796 then throw("No payments required")
27542797 else {
27552798 let fg = jH(true, gH.caller, 0, P)
27562799 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
2757- $Tuple2(((fg._1 :+ lc) ++ jW(A, fraction(aa, fg._3, cD))._1), fg._2)
2758- }
2759- }
2760-
2761-
2762-
2763-@Callable(gH)
2764-func activateArtifact (mb,mc) = {
2765- let lc = kZ(gH)
2800+ $Tuple2(((fg._1 ++ lg) ++ jW(A, fraction(aa, fg._3, cD))._1), fg._2)
2801+ }
2802+ }
2803+
2804+
2805+
2806+@Callable(gH)
2807+func activateArtifact (me,mf) = {
2808+ let lg = kZ(gH)
27662809 if ((size(gH.payments) != 0))
27672810 then throw("No payments required")
27682811 else {
27692812 let c = toString(gH.caller)
27702813 let fg = {
2771- let cx = mb
2814+ let cx = me
27722815 if (("PRESALE" == cx))
2773- then kk(c, mc)
2816+ then kk(c, mf)
27742817 else if (("ONBOARD" == cx))
27752818 then kd(c)
27762819 else throw("Unknown artifact")
27772820 }
2778- (fg :+ lc)
2821+ (fg ++ lg)
27792822 }
27802823 }
27812824
27822825
27832826
27842827 @Callable(gH)
27852828 func mergeLands (kA) = {
2786- let lc = kZ(gH)
2829+ let lg = kZ(gH)
27872830 if ((size(gH.payments) != 0))
27882831 then throw("No payments required")
27892832 else {
27902833 let fg = kY(toString(gH.caller), kA)
2791- $Tuple2(((fg._1 :+ lc) ++ kc(toString(gH.caller), ab)._1), fg._2)
2792- }
2793- }
2794-
2795-
2796-
2797-@Callable(gH)
2798-func cargoExchange (md,P) = {
2799- let lc = kZ(gH)
2834+ $Tuple2(((fg._1 ++ lg) ++ kc(toString(gH.caller), ab)._1), fg._2)
2835+ }
2836+ }
2837+
2838+
2839+
2840+@Callable(gH)
2841+func cargoExchange (mg,P) = {
2842+ let lg = kZ(gH)
28002843 if ((size(gH.payments) != 0))
28012844 then throw("No payments required")
28022845 else {
2803- let ik = split_4C(md, ":")
2846+ let ik = split_4C(mg, ":")
28042847 let c = toString(gH.originCaller)
28052848 let jp = value(assetInfo(fromBase58String(P)))
28062849 let jq = br(P)
28072850 if (!(isDefined(getInteger(jq))))
28082851 then throw((jp.name + " is not staked"))
28092852 else {
28102853 let js = valueOrErrorMessage(getString(bo(P)), (("NFT " + jp.name) + " is orphaned"))
28112854 if ((js != c))
28122855 then throw((aC + " is not yours"))
28132856 else {
28142857 let hW = (dE(split(jp.description, "_")[dh]) / cE)
28152858 let hX = valueOrElse(getInteger(by(P)), 0)
28162859 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
28172860 let jn = valueOrElse(getString(bJ(A)), aJ)
28182861 let cf = split(value(jn), "_")
28192862 if ((cf[bm] != "L"))
28202863 then throw((("Duck location type is " + cf[bm]) + ", but should be L"))
28212864 else if ((cf[bn] != P))
28222865 then throw(("Duck should be on the land " + P))
28232866 else {
28242867 let hV = bx(P)
28252868 let hM = hU(hV, hW, hX)
28262869 let hI = bI(A)
28272870 let il = hH(hI)
28282871 let fg = ij(ik, hM, il)
28292872 let id = split(hM[bc], "_")
28302873 let jE = (parseIntValue(id[be]) + fg._7)
28312874 let jF = (parseIntValue(id[bf]) - fg._7)
2832-[StringEntry(hI, makeString_2C([il[bh], fg._4, fg._5, fg._6], ":")), StringEntry(hV, makeString_2C([hM[aY], fg._1, fg._2, fg._3, makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")], ":")), lc]
2875+ ([StringEntry(hI, makeString_2C([il[bh], fg._4, fg._5, fg._6], ":")), StringEntry(hV, makeString_2C([hM[aY], fg._1, fg._2, fg._3, makeString([id[bd], toString(jE), toString(jF), id[bg]], "_")], ":"))] ++ lg)
28332876 }
28342877 }
28352878 }
28362879 }
28372880 }
28382881
28392882
28402883
28412884 @Callable(gH)
28422885 func saveWarehouse (hZ,P) = if ((gH.caller != db))
28432886 then throw("Access denied")
28442887 else {
28452888 let hV = bx(P)
28462889 let ia = split_4C(hZ, ":")
28472890 if ((size(ia) != 5))
28482891 then throw("warehouse string should contain 4 ':' separators")
28492892 else {
2850- let me = split(ia[bc], "_")[bd]
2893+ let mh = split(ia[bc], "_")[bd]
28512894 let jE = hL(ia)
2852- let mf = hJ(ia[aY])
2853- let jF = ((mf - parseIntValue(me)) - jE)
2854- let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([me, toString(jE), toString(jF), toString(mf)], "_")], ":")
2855- $Tuple2([StringEntry(hV, mg)], mg)
2895+ let mi = hJ(ia[aY])
2896+ let jF = ((mi - parseIntValue(mh)) - jE)
2897+ let mj = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([mh, toString(jE), toString(jF), toString(mi)], "_")], ":")
2898+ $Tuple2([StringEntry(hV, mj)], mj)
28562899 }
28572900 }
28582901
28592902
28602903
28612904 @Callable(gH)
28622905 func fixWarehouseFormat (P) = if ((gH.caller != da))
28632906 then throw("Access denied")
28642907 else {
28652908 let hV = bx(P)
28662909 let jp = value(assetInfo(fromBase58String(P)))
28672910 let hW = (dE(split(jp.description, "_")[dh]) / cE)
28682911 let hX = valueOrElse(getInteger(by(P)), 0)
28692912 let ia = hU(hV, hW, hX)
2870- let me = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ia], nil))
2913+ let mh = dy(invoke(db, "recalcLockedVolumeREADONLY", [P, ia], nil))
28712914 let jE = hL(ia)
2872- let mf = hJ(ia[aY])
2873- let jF = ((mf - me) - jE)
2874- let mg = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([toString(me), toString(jE), toString(jF), toString(mf)], "_")], ":")
2875- $Tuple2([StringEntry(hV, mg)], mg)
2915+ let mi = hJ(ia[aY])
2916+ let jF = ((mi - mh) - jE)
2917+ let mj = makeString_2C([ia[aY], ia[aZ], ia[ba], ia[bb], makeString([toString(mh), toString(jE), toString(jF), toString(mi)], "_")], ":")
2918+ $Tuple2([StringEntry(hV, mj)], mj)
28762919 }
28772920
28782921
28792922
28802923 @Callable(gH)
28812924 func fixContinentProportions (kA) = if ((gH.caller != da))
28822925 then throw("Access denied")
28832926 else {
2884- func mh (eO,mi) = (eO :+ valueOrElse(getString(dr(mi)), "0_0_0_0_0_0"))
2927+ func mk (eO,ml) = (eO :+ valueOrElse(getString(dr(ml)), "0_0_0_0_0_0"))
28852928
28862929 let gr = {
28872930 let eQ = aP
28882931 let eR = size(eQ)
28892932 let eS = nil
28902933 func eT (eU,eV) = if ((eV >= eR))
28912934 then eU
2892- else mh(eU, eQ[eV])
2935+ else mk(eU, eQ[eV])
28932936
28942937 func eW (eU,eV) = if ((eV >= eR))
28952938 then eU
28962939 else throw("List size exceeds 5")
28972940
28982941 eW(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5)
28992942 }
2900- func mj (eO,P) = {
2943+ func mm (eO,P) = {
29012944 let jp = value(assetInfo(fromBase58String(P)))
29022945 let jt = split(jp.description, "_")
29032946 let hW = (dE(jt[dh]) / cE)
2904- let mi = jt[dj]
2947+ let ml = jt[dj]
29052948 let gD = gJ(jt[di])
2906- let hl = value(indexOf(aP, mi))
2949+ let hl = value(indexOf(aP, ml))
29072950 let kP = split(eO[hl], "_")
2908- let mk = makeString(gB(kP, gD, hW, 1), "_")
2909- let cx = mi
2951+ let mn = makeString(gB(kP, gD, hW, 1), "_")
2952+ let cx = ml
29102953 if (("Americas" == cx))
2911- then [mk, eO[1], eO[2], eO[3], eO[4]]
2954+ then [mn, eO[1], eO[2], eO[3], eO[4]]
29122955 else if (("Europe" == cx))
2913- then [eO[0], mk, eO[2], eO[3], eO[4]]
2956+ then [eO[0], mn, eO[2], eO[3], eO[4]]
29142957 else if (("Asia" == cx))
2915- then [eO[0], eO[1], mk, eO[3], eO[4]]
2958+ then [eO[0], eO[1], mn, eO[3], eO[4]]
29162959 else if (("Africa" == cx))
2917- then [eO[0], eO[1], eO[2], mk, eO[4]]
2960+ then [eO[0], eO[1], eO[2], mn, eO[4]]
29182961 else if (("Oceania" == cx))
2919- then [eO[0], eO[1], eO[2], eO[3], mk]
2962+ then [eO[0], eO[1], eO[2], eO[3], mn]
29202963 else throw("wrong continent")
29212964 }
29222965
29232966 let eZ = {
29242967 let eQ = kA
29252968 let eR = size(eQ)
29262969 let eS = gr
29272970 func hC (eU,eV) = if ((eV >= eR))
29282971 then eU
2929- else mj(eU, eQ[eV])
2972+ else mm(eU, eQ[eV])
29302973
29312974 func hD (eU,eV) = if ((eV >= eR))
29322975 then eU
29332976 else throw("List size exceeds 100")
29342977
29352978 hD(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(hC(eS, 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)
29362979 }
29372980 $Tuple2([StringEntry(dr("Americas"), eZ[0]), StringEntry(dr("Europe"), eZ[1]), StringEntry(dr("Asia"), eZ[2]), StringEntry(dr("Africa"), eZ[3]), StringEntry(dr("Oceania"), eZ[4])], 0)
29382981 }
29392982
29402983
29412984
29422985 @Callable(gH)
29432986 func fixStakedPieces (cL) = if ((gH.caller != da))
29442987 then throw("Access denied")
29452988 else {
29462989 let kT = if ((cL == ""))
29472990 then 0
29482991 else {
29492992 let kM = getString(an, dt(cL))
29502993 let kI = if (isDefined(kM))
29512994 then split_51C(value(kM), "_")
29522995 else nil
2953- func ml (eO,P) = {
2996+ func mo (eO,P) = {
29542997 let jp = value(assetInfo(fromBase58String(P)))
29552998 let dF = split(jp.description, "_")[dh]
29562999 (eO + dE(dF))
29573000 }
29583001
29593002 let eQ = kI
29603003 let eR = size(eQ)
29613004 let eS = 0
29623005 func eT (eU,eV) = if ((eV >= eR))
29633006 then eU
2964- else ml(eU, eQ[eV])
3007+ else mo(eU, eQ[eV])
29653008
29663009 func eW (eU,eV) = if ((eV >= eR))
29673010 then eU
29683011 else throw("List size exceeds 100")
29693012
29703013 eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 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)
29713014 }
29723015 $Tuple2([IntegerEntry(du(cL), kT)], kT)
29733016 }
29743017
29753018
29763019
29773020 @Callable(gH)
29783021 func setCustomName (bp,kK,bt) = {
2979- let lc = kZ(gH)
3022+ let lg = kZ(gH)
29803023 if ((size(gH.payments) != 1))
29813024 then throw("Exactly one payment required")
29823025 else {
2983- let ld = value(gH.payments[0])
2984- if ((ld.assetId != cw))
3026+ let lh = value(gH.payments[0])
3027+ if ((lh.assetId != cw))
29853028 then throw("Allowed USDT payment only!")
2986- else if ((ld.amount != dZ))
3029+ else if ((lh.amount != dZ))
29873030 then throw(("Payment should be " + toString(dZ)))
29883031 else if (contains(kK, "__"))
29893032 then throw(("Name should not contain '__': " + kK))
29903033 else if ((size(kK) > ea))
29913034 then throw(("Name too long, maxLength=" + toString(ea)))
29923035 else {
29933036 let c = toString(gH.originCaller)
2994- let mm = {
3037+ let mp = {
29953038 let cx = bt
29963039 if (("ACCOUNT" == cx))
29973040 then {
2998- let mn = eu(kK)
2999- let mo = getString(mn)
3000- if (isDefined(mo))
3041+ let mq = eu(kK)
3042+ let mr = getString(mq)
3043+ if (isDefined(mr))
30013044 then throw(("Name already registered: " + kK))
30023045 else {
3003- let mp = bB(c)
3004- let mq = getString(mp)
3005- let mr = if (isDefined(mq))
3006- then [DeleteEntry(eu(value(mq)))]
3046+ let ms = bB(c)
3047+ let mt = getString(ms)
3048+ let mu = if (isDefined(mt))
3049+ then [DeleteEntry(eu(value(mt)))]
30073050 else nil
3008- (((mr :+ StringEntry(mp, kK)) :+ StringEntry(mn, c)) ++ kc(c, Y)._1)
3051+ (((mu :+ StringEntry(ms, kK)) :+ StringEntry(mq, c)) ++ kc(c, Y)._1)
30093052 }
30103053 }
30113054 else if (("LAND" == cx))
30123055 then {
30133056 let jp = value(assetInfo(fromBase58String(bp)))
30143057 let jq = br(bp)
30153058 if (!(isDefined(getInteger(jq))))
30163059 then throw((jp.name + " is not staked"))
30173060 else {
30183061 let js = valueOrErrorMessage(getString(bo(bp)), (("NFT " + jp.name) + " is orphaned"))
30193062 if ((js != c))
30203063 then throw((aC + " is not yours"))
30213064 else {
3022- let mn = en(kK)
3023- let mo = getString(mn)
3024- if (isDefined(mo))
3065+ let mq = en(kK)
3066+ let mr = getString(mq)
3067+ if (isDefined(mr))
30253068 then throw(("Name already registered: " + kK))
30263069 else {
3027- let ms = bq(bp)
3028- let mq = getString(ms)
3029- let mr = if (isDefined(mq))
3030- then [DeleteEntry(en(value(mq)))]
3070+ let mv = bq(bp)
3071+ let mt = getString(mv)
3072+ let mu = if (isDefined(mt))
3073+ then [DeleteEntry(en(value(mt)))]
30313074 else nil
3032- (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ kc(c, Y)._1)
3075+ (((mu :+ StringEntry(mv, kK)) :+ StringEntry(mq, bp)) ++ kc(c, Y)._1)
30333076 }
30343077 }
30353078 }
30363079 }
30373080 else if (("DUCK" == cx))
30383081 then {
30393082 let jp = value(assetInfo(fromBase58String(bp)))
30403083 let jq = br(bp)
30413084 if (if (!(isDefined(getInteger(jq))))
30423085 then true
30433086 else !(isDefined(getString(bH(c)))))
30443087 then throw((jp.name + " is not staked"))
30453088 else {
30463089 let js = valueOrErrorMessage(getString(bG(bp)), (("NFT " + jp.name) + " is orphaned"))
30473090 if ((js != c))
30483091 then throw((aD + " is not yours"))
30493092 else {
3050- let mn = et(kK)
3051- let mo = getString(mn)
3052- if (isDefined(mo))
3093+ let mq = et(kK)
3094+ let mr = getString(mq)
3095+ if (isDefined(mr))
30533096 then throw(("Name already registered: " + kK))
30543097 else {
3055- let ms = bA(bp)
3056- let mq = getString(ms)
3057- let mr = if (isDefined(mq))
3058- then [DeleteEntry(et(value(mq)))]
3098+ let mv = bA(bp)
3099+ let mt = getString(mv)
3100+ let mu = if (isDefined(mt))
3101+ then [DeleteEntry(et(value(mt)))]
30593102 else nil
3060- (((mr :+ StringEntry(ms, kK)) :+ StringEntry(mn, bp)) ++ jW(bp, Y)._1)
3103+ (((mu :+ StringEntry(mv, kK)) :+ StringEntry(mq, bp)) ++ jW(bp, Y)._1)
30613104 }
30623105 }
30633106 }
30643107 }
30653108 else throw("Unknown entity type")
30663109 }
3067- $Tuple2(((mm :+ ScriptTransfer(db, ld.amount, cw)) :+ lc), 0)
3110+ $Tuple2(((mp :+ ScriptTransfer(db, lh.amount, cw)) ++ lg), 0)
30683111 }
30693112 }
30703113 }
30713114
30723115
30733116
30743117 @Callable(gH)
3075-func setReferrals (mt,mu) = if ((gH.callerPublicKey != dW))
3118+func setReferrals (mw,mx) = if ((gH.callerPublicKey != dW))
30763119 then throw("Permission denied")
30773120 else {
3078- let lc = kZ(gH)
3121+ let lg = kZ(gH)
30793122 if ((size(gH.payments) != 0))
30803123 then throw("No payments required")
3081- else if (!(isDefined(addressFromString(mt))))
3082- then throw(("Invalid address: " + mt))
3083- else if (!(isDefined(addressFromString(mu))))
3084- then throw(("Invalid address: " + mu))
3124+ else if (!(isDefined(addressFromString(mw))))
3125+ then throw(("Invalid address: " + mw))
3126+ else if (!(isDefined(addressFromString(mx))))
3127+ then throw(("Invalid address: " + mx))
30853128 else {
3086- let mv = ev()
3087- let mw = getString(mv)
3088- let mx = if (isDefined(mw))
3089- then split_4C(value(mw), "_")
3129+ let my = ev()
3130+ let mz = getString(my)
3131+ let mA = if (isDefined(mz))
3132+ then split_4C(value(mz), "_")
30903133 else nil
3091- if (containsElement(mx, mu))
3092- then throw((mu + " is not newbie (already has referrals)"))
3134+ if (containsElement(mA, mx))
3135+ then throw((mx + " is not newbie (already has referrals)"))
30933136 else {
3094- let ke = bC(mu)
3137+ let ke = bC(mx)
30953138 let kf = getString(ke)
30963139 if (if (isDefined(kf))
30973140 then isDefined(addressFromString(value(kf)))
30983141 else false)
3099- then throw(((mu + " already has refBy: ") + value(kf)))
3142+ then throw(((mx + " already has refBy: ") + value(kf)))
31003143 else {
3101- let my = bF(mt)
3102- let mz = getString(my)
3103- let mA = if (isDefined(mz))
3104- then split_4C(value(mz), "_")
3144+ let mB = bF(mw)
3145+ let mC = getString(mB)
3146+ let mD = if (isDefined(mC))
3147+ then split_4C(value(mC), "_")
31053148 else nil
3106- if (containsElement(mA, mu))
3107- then throw((((mt + " already contains ") + mu) + " within referrals"))
3149+ if (containsElement(mD, mx))
3150+ then throw((((mw + " already contains ") + mx) + " within referrals"))
31083151 else {
3109- let mB = makeString_2C((mA :+ mu), "_")
3110- let mC = if (containsElement(mx, mt))
3111- then value(mw)
3112- else makeString_2C((mx :+ mt), "_")
3113- $Tuple2([StringEntry(ke, mt), StringEntry(my, mB), StringEntry(mv, mC), lc], 0)
3152+ let mE = makeString_2C((mD :+ mx), "_")
3153+ let mF = if (containsElement(mA, mw))
3154+ then value(mz)
3155+ else makeString_2C((mA :+ mw), "_")
3156+ $Tuple2(([StringEntry(ke, mw), StringEntry(mB, mE), StringEntry(my, mF)] ++ lg), 0)
31143157 }
31153158 }
31163159 }
31173160 }
31183161 }
31193162
31203163
31213164
31223165 @Callable(gH)
3123-func distributePoints (mD,mE,mF,mG,mH) = {
3124- let lc = kZ(gH)
3166+func distributePoints (mG,mH,mI,mJ,mK) = {
3167+ let lg = kZ(gH)
31253168 if ((size(gH.payments) != 0))
31263169 then throw("No payments required")
31273170 else {
31283171 let c = toString(gH.originCaller)
31293172 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
3130- let mI = I(c)
3131- let mJ = valueOrElse(getInteger(an, mI), 0)
3132- let mK = E(A)
3133- let mL = valueOrElse(getInteger(an, mK), 0)
3134- let mM = (mJ + mL)
3135- let mN = ((((mD + mE) + mF) + mG) + mH)
3136- if ((mN > mM))
3137- then throw((("There are only " + toString(mM)) + " free points to distribute"))
3173+ let mL = I(c)
3174+ let mM = valueOrElse(getInteger(an, mL), 0)
3175+ let mN = E(A)
3176+ let mO = valueOrElse(getInteger(an, mN), 0)
3177+ let mP = (mM + mO)
3178+ let mQ = ((((mG + mH) + mI) + mJ) + mK)
3179+ if ((mQ > mP))
3180+ then throw((("There are only " + toString(mP)) + " free points to distribute"))
31383181 else {
3139- let mO = B(A)
3140- let aq = split(valueOrElse(getString(an, mO), "0_0_0_0_0"), "_")
3141- let mP = (mJ - mN)
3142- $Tuple2([IntegerEntry(mI, if ((0 > mP))
3182+ let mR = B(A)
3183+ let aq = split(valueOrElse(getString(an, mR), "0_0_0_0_0"), "_")
3184+ let mS = (mM - mQ)
3185+ $Tuple2(([IntegerEntry(mL, if ((0 > mS))
31433186 then 0
3144- else mP), IntegerEntry(mK, if ((0 > mP))
3145- then (mL + mP)
3146- else mL), StringEntry(mO, makeString([toString((parseIntValue(aq[k]) + mD)), toString((parseIntValue(aq[l]) + mE)), toString((parseIntValue(aq[m]) + mF)), toString((parseIntValue(aq[n]) + mG)), toString((parseIntValue(aq[o]) + mH))], "_")), lc], 0)
3187+ else mS), IntegerEntry(mN, if ((0 > mS))
3188+ then (mO + mS)
3189+ else mO), StringEntry(mR, makeString([toString((parseIntValue(aq[k]) + mG)), toString((parseIntValue(aq[l]) + mH)), toString((parseIntValue(aq[m]) + mI)), toString((parseIntValue(aq[n]) + mJ)), toString((parseIntValue(aq[o]) + mK))], "_"))] ++ lg), 0)
31473190 }
31483191 }
31493192 }
31503193
31513194
31523195
31533196 @Callable(gH)
31543197 func splitByGlobalWeightsREADONLY (eF) = $Tuple2(nil, eX(eF))
31553198
31563199
31573200
31583201 @Callable(gH)
3159-func splitByGlobalAndLocalWeightsREADONLY (mQ,mR,gK) = {
3202+func splitByGlobalAndLocalWeightsREADONLY (mT,mU,gK) = {
31603203 let gD = gJ(gK)
3161- $Tuple2(nil, $Tuple2(eX(mQ), eI(mR, gD)))
3204+ $Tuple2(nil, $Tuple2(eX(mT), eI(mU, gD)))
31623205 }
31633206
31643207
31653208
31663209 @Callable(gH)
31673210 func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hH(bI(A)), ":"))
31683211
31693212
31703213
31713214 @Callable(gH)
31723215 func getWarehouseREADONLY (P) = {
31733216 let jp = value(assetInfo(fromBase58String(P)))
31743217 let hW = (dE(split(jp.description, "_")[dh]) / cE)
31753218 let hX = valueOrElse(getInteger(by(P)), 0)
31763219 $Tuple2(nil, makeString_2C(hU(bx(P), hW, hX), ":"))
31773220 }
31783221
31793222
31803223
31813224 @Callable(gH)
31823225 func saveLastTx () = {
31833226 let iG = gH.caller
31843227 if (!(containsElement([dd, db, de, df], iG)))
31853228 then throw("Access denied")
3186- else $Tuple2([kZ(gH)], 42)
3229+ else $Tuple2(kZ(gH), 42)
31873230 }
31883231
31893232
31903233
31913234 @Callable(gH)
31923235 func updateDuckStats (A,jX) = if ((gH.caller != db))
31933236 then throw("Access denied")
31943237 else jW(A, jX)
31953238
31963239
31973240
31983241 @Callable(gH)
31993242 func updateAccStats (c,jX) = if (if ((gH.caller != db))
32003243 then (gH.caller != df)
32013244 else false)
32023245 then throw("Access denied")
32033246 else kc(c, jX)
32043247
32053248
32063249
32073250 @Callable(gH)
3208-func equipDuck (mS) = {
3209- let lc = kZ(gH)
3251+func equipDuck (mV) = {
3252+ let lg = kZ(gH)
32103253 if ((size(gH.payments) != 0))
32113254 then throw("No payments required")
32123255 else {
32133256 let c = toString(gH.originCaller)
32143257 let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked")
32153258 if (km(A))
32163259 then throw("equipDuck_checkTournament")
32173260 else if (kn(A))
32183261 then throw("equipDuck_checkDelivery")
32193262 else {
32203263 let gu = F(A)
3221- let mT = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3264+ let mW = split(valueOrElse(getString(gu), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32223265 let hI = bI(A)
32233266 let il = hH(hI)
3224- let lu = split(mS, "_")
3225- if ((size(lu) != q))
3267+ let lx = split(mV, "_")
3268+ if ((size(lx) != q))
32263269 then throw("Wrong equipment string")
32273270 else {
3228- let gw = gj(mT, fu(il[bk]), true, nil)
3229- let gx = split(lu[p], ";")[1]
3271+ let gw = gj(mW, fu(il[bk]), true, nil)
3272+ let gx = split(lx[p], ";")[1]
32303273 let ao = if ((gx == ""))
32313274 then 0
32323275 else {
32333276 let gy = split(gx, ",")[0]
32343277 if ((gy == ""))
32353278 then 0
32363279 else {
32373280 let fJ = split(gy, ":")
32383281 let cZ = fJ[0]
32393282 let gz = fJ[1]
32403283 if (if (if (if (if ((cZ == "06"))
32413284 then true
32423285 else (cZ == "07"))
32433286 then true
32443287 else (cZ == "08"))
32453288 then (gz != "")
32463289 else false)
32473290 then (parseIntValue(gz) > 0)
32483291 else false)
32493292 then parseIntValue(split(aS[parseIntValue(cZ)], "_")[aU])
32503293 else 0
32513294 }
32523295 }
32533296 let ge = am(this, A, ao, true)
3254- let gA = gj(lu, gw, false, ge)
3255- let mU = fz(gA)
3256- $Tuple2([StringEntry(gu, mS), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], mU], ":")), StringEntry(L(A), makeString([toString(ge[7]), toString(ge[8]), toString(ge[9]), toString(ge[10]), toString(ge[11])], "_")), lc], 0)
3297+ let gA = gj(lx, gw, false, ge)
3298+ let mX = fz(gA)
3299+ $Tuple2(([StringEntry(gu, mV), StringEntry(hI, makeString_2C([il[bh], il[bi], il[bj], mX], ":")), StringEntry(L(A), makeString([toString(ge[7]), toString(ge[8]), toString(ge[9]), toString(ge[10]), toString(ge[11])], "_"))] ++ lg), 0)
32573300 }
32583301 }
32593302 }
32603303 }
32613304
32623305
32633306
32643307 @Callable(gH)
3265-func fortificateLand (P,mV) = {
3266- let lc = kZ(gH)
3308+func fortificateLand (P,mY) = {
3309+ let lg = kZ(gH)
32673310 if ((size(gH.payments) != 0))
32683311 then throw("No payments required")
32693312 else {
32703313 let c = toString(gH.originCaller)
32713314 let A = valueOrElse(getString(bH(c)), "")
32723315 let fE = am(this, A, 0, false)
3273- let mW = bz(P)
3274- let mX = split(valueOrElse(getString(mW), ":0_15:0_18:0"), "_")
3316+ let mZ = bz(P)
3317+ let na = split(valueOrElse(getString(mZ), ":0_15:0_18:0"), "_")
32753318 let jp = value(assetInfo(fromBase58String(P)))
32763319 let hW = (dE(split(jp.description, "_")[dh]) / cE)
32773320 let hX = valueOrElse(getInteger(by(P)), 0)
32783321 let hV = bx(P)
32793322 let ia = hU(hV, hW, hX)
3280- let mY = split(ia[bc], "_")
3281- let mZ = parseIntValue(mY[be])
3282- let na = parseIntValue(mY[bf])
3283- let nb = split(mV, "_")
3284- let nc = gq(mX, fu(ia[bb]), mZ, na, true, nil)
3285- let gw = nc._1
3286- let nd = nc._2
3287- let ne = nc._3
3288- let nf = gq(nb, gw, nd, ne, false, fE)
3289- let gA = nf._1
3323+ let nb = split(ia[bc], "_")
3324+ let nc = parseIntValue(nb[be])
3325+ let nd = parseIntValue(nb[bf])
3326+ let ne = split(mY, "_")
3327+ let nf = gq(na, fu(ia[bb]), nc, nd, true, nil)
3328+ let gw = nf._1
32903329 let ng = nf._2
32913330 let nh = nf._3
3292- let mU = fz(gA)
3293- let jV = makeString([mY[bd], toString(ng), toString(nh), mY[bg]], "_")
3294- $Tuple2([StringEntry(mW, mV), StringEntry(hV, makeString_2C([ia[aY], ia[aZ], ia[ba], mU, jV], ":")), lc], 0)
3331+ let ni = gq(ne, gw, ng, nh, false, fE)
3332+ let gA = ni._1
3333+ let nj = ni._2
3334+ let nk = ni._3
3335+ let mX = fz(gA)
3336+ let jV = makeString([nb[bd], toString(nj), toString(nk), nb[bg]], "_")
3337+ $Tuple2(([StringEntry(mZ, mY), StringEntry(hV, makeString_2C([ia[aY], ia[aZ], ia[ba], mX, jV], ":"))] ++ lg), 0)
32953338 }
32963339 }
32973340
32983341
32993342
33003343 @Callable(gH)
33013344 func initDuckTourAttempt (A) = if ((gH.caller != de))
33023345 then throw("Access denied")
33033346 else {
3304- let lc = kZ(gH)
33053347 let iY = z(A)
33063348 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
33073349 let kq = valueOrElse(getInteger(iY), iZ)
3308- let ni = bJ(A)
3309- let jn = valueOrElse(getString(ni), aJ)
3350+ let nl = bJ(A)
3351+ let jn = valueOrElse(getString(nl), aJ)
33103352 let ce = valueOrElse(getInteger(de, bP), 0)
3311- let nj = (toString(ce) + "_T_0")
3312- $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nj)], nj)
3353+ let nm = (toString(ce) + "_T_0")
3354+ $Tuple2([IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(nl, nm)], nm)
33133355 }
33143356
33153357
33163358
33173359 @Callable(gH)
33183360 func breakAttempt () = {
3319- let lc = kZ(gH)
3361+ let lg = kZ(gH)
33203362 let A = valueOrErrorMessage(getString(bH(toString(gH.caller))), "You don't have a duck staked")
3321- let ni = bJ(A)
3322- let jn = valueOrElse(getString(ni), aJ)
3363+ let nl = bJ(A)
3364+ let jn = valueOrElse(getString(nl), aJ)
33233365 if ((split(jn, "_")[bm] != "T"))
33243366 then throw("Your duck is not in the tournament")
33253367 else {
33263368 let kv = getIntegerValue(J(A))
33273369 let kw = getStringValue(K(A))
3328- $Tuple2([lc, IntegerEntry(z(A), kv), StringEntry(ni, kw)], jn)
3370+ $Tuple2(((lg :+ IntegerEntry(z(A), kv)) :+ StringEntry(nl, kw)), jn)
33293371 }
33303372 }
33313373
33323374
33333375
33343376 @Callable(gH)
33353377 func exitTournamentInternal (A) = if ((gH.caller != this))
33363378 then throw("Access denied")
33373379 else {
33383380 let kv = getIntegerValue(J(A))
33393381 let kw = getStringValue(K(A))
33403382 $Tuple2([IntegerEntry(z(A), kv), StringEntry(bJ(A), kw)], false)
33413383 }
33423384
33433385
33443386
33453387 @Callable(gH)
33463388 func exitDeliveryInternal (A) = if ((gH.caller != this))
33473389 then throw("Access denied")
33483390 else {
3349- let ma = ko(A)
3350- $Tuple2((ma._1 ++ ma._2), false)
3391+ let md = ko(A)
3392+ $Tuple2((md._1 ++ md._2), false)
33513393 }
33523394
33533395
33543396
33553397 @Callable(gH)
33563398 func autoExitDelivery (A) = if ((gH.caller != this))
33573399 then throw("Access denied")
33583400 else {
3359- let ma = ko(A)
3360- $Tuple2(ma._1, $Tuple2(ma._3, ma._4))
3401+ let md = ko(A)
3402+ $Tuple2(md._1, $Tuple2(md._3, md._4))
33613403 }
33623404
33633405
33643406
33653407 @Callable(gH)
33663408 func prepareRobbery (iN,iO) = {
3367- let lc = kZ(gH)
3409+ let lg = kZ(gH)
33683410 if (!(sigVerify_8Kb(iN, iO, dW)))
33693411 then throw("signature does not match")
33703412 else if ((size(gH.payments) != 1))
33713413 then throw("exactly 1 payment must be attached")
33723414 else {
3373- let ld = gH.payments[0]
3374- let nk = ld.amount
3375- if (if (!(isDefined(ld.assetId)))
3415+ let lh = gH.payments[0]
3416+ let nn = lh.amount
3417+ if (if (!(isDefined(lh.assetId)))
33763418 then true
3377- else (value(ld.assetId) != dl))
3419+ else (value(lh.assetId) != dl))
33783420 then throw("WLGOLD payments only!")
33793421 else {
33803422 let fm = split(toUtf8String(iN), "|")
33813423 if ((size(fm) != 2))
33823424 then throw("Wrong message format")
33833425 else {
33843426 let A = fm[0]
3385- let ay = au(this, A)._1
3386- if ((ay > nk))
3387- then throw(((("Payment " + toString(nk)) + " < required ") + toString(ay)))
3388- else {
3389- let nl = split(fm[1], "_")
3390- let ax = lastBlock.timestamp
3391- let az = valueOrElse(getInteger(R(A)), 0)
3392- let aA = valueOrElse(getString(S(A)), "")
3393- let aB = valueOrElse(getInteger(Q(aA)), 0)
3394- if (if ((az != x))
3395- then (aB > ax)
3396- else false)
3397- then throw(("You already started robbing, wait till " + toString(aB)))
3398- else {
3399- func nm (eO,P) = {
3400- let nn = valueOrElse(getInteger(O(P)), 0)
3401- let no = valueOrElse(getInteger(Q(P)), 0)
3402- if ((nn > size(u)))
3403- then throw("Invalid state")
3404- else if ((ax > no))
3405- then {
3406- let np = valueOrElse(getInteger(br(P)), 0)
3407- if ((0 >= np))
3408- then eO
3409- else {
3410- let go = value(assetInfo(fromBase58String(P)))
3411- let jt = split(go.description, "_")
3412- let jf = dE(jt[dh])
3413- let nq = je(P, jf)
3414- let gN = (ax - np)
3415- let jw = fraction(gN, (nq * jf), a)
3416- if ((v > jw))
3417- then eO
3418- else (eO :+ P)
3419- }
3427+ if (km(A))
3428+ then throw("prepareRobbery_checkTournament")
3429+ else if (kn(A))
3430+ then throw("prepareRobbery_checkDelivery")
3431+ else {
3432+ let ay = au(this, A)._1
3433+ if ((ay > nn))
3434+ then throw(((("Payment " + toString(nn)) + " < required ") + toString(ay)))
3435+ else {
3436+ let no = split(fm[1], "_")
3437+ let ax = lastBlock.timestamp
3438+ let az = valueOrElse(getInteger(R(A)), 0)
3439+ let aA = valueOrElse(getString(S(A)), "")
3440+ let aB = valueOrElse(getInteger(Q(aA)), 0)
3441+ if (if ((az != x))
3442+ then (aB > ax)
3443+ else false)
3444+ then throw(("You already started robbing, wait till " + toString(aB)))
3445+ else {
3446+ func np (eO,P) = {
3447+ let nq = valueOrElse(getInteger(O(P)), 0)
3448+ let nr = valueOrElse(getInteger(Q(P)), 0)
3449+ if ((nq > size(u)))
3450+ then throw("Invalid state")
3451+ else if ((ax > nr))
3452+ then {
3453+ let ns = valueOrElse(getInteger(br(P)), 0)
3454+ if ((0 >= ns))
3455+ then eO
3456+ else {
3457+ let go = value(assetInfo(fromBase58String(P)))
3458+ let jt = split(go.description, "_")
3459+ let jf = dE(jt[dh])
3460+ let nt = je(P, jf)
3461+ let gN = (ax - ns)
3462+ let jw = fraction(gN, (nt * jf), a)
3463+ if ((v > jw))
3464+ then eO
3465+ else (eO :+ P)
3466+ }
3467+ }
3468+ else eO
34203469 }
3421- else eO
3470+
3471+ let nu = {
3472+ let eQ = no
3473+ let eR = size(eQ)
3474+ let eS = nil
3475+ func eT (eU,eV) = if ((eV >= eR))
3476+ then eU
3477+ else np(eU, eQ[eV])
3478+
3479+ func eW (eU,eV) = if ((eV >= eR))
3480+ then eU
3481+ else throw("List size exceeds 10")
3482+
3483+ eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3484+ }
3485+ if ((size(nu) == 0))
3486+ then throw("No candidates for robbery")
3487+ else {
3488+ let nv = dO(size(nu), height, (iO + gH.transactionId))
3489+ let P = nu[nv]
3490+ $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lg), P)
3491+ }
3492+ }
34223493 }
3423-
3424- let nr = {
3425- let eQ = nl
3426- let eR = size(eQ)
3427- let eS = nil
3428- func eT (eU,eV) = if ((eV >= eR))
3429- then eU
3430- else nm(eU, eQ[eV])
3431-
3432- func eW (eU,eV) = if ((eV >= eR))
3433- then eU
3434- else throw("List size exceeds 10")
3435-
3436- eW(eT(eT(eT(eT(eT(eT(eT(eT(eT(eT(eS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3437- }
3438- if ((size(nr) == 0))
3439- then throw("No candidates for robbery")
3440- else {
3441- let ns = dO(size(nr), height, (iO + gH.transactionId))
3442- let P = nr[ns]
3443- $Tuple2([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P), lc], P)
3444- }
3445- }
3446- }
3494+ }
34473495 }
34483496 }
34493497 }
34503498 }
34513499
34523500
34533501
34543502 @Callable(gH)
34553503 func robLand (iN,iO) = {
3456- let lc = kZ(gH)
3504+ let lg = kZ(gH)
34573505 if (!(sigVerify_8Kb(iN, iO, dW)))
34583506 then throw("signature does not match")
34593507 else {
34603508 let bL = toString(gH.caller)
34613509 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
34623510 let ax = lastBlock.timestamp
3463- $Tuple2([lc, IntegerEntry(M(A), ax)], 0)
3511+ $Tuple2((lg :+ IntegerEntry(M(A), ax)), 0)
34643512 }
34653513 }
34663514
34673515
34683516
34693517 @Callable(gH)
34703518 func acceptDelivery () = if (!(cu))
34713519 then throw("Delivery feature is turned off!")
34723520 else {
3473- let lc = kZ(gH)
3521+ let lg = kZ(gH)
34743522 let bL = toString(gH.caller)
34753523 let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked")
3476- let nt = valueOrElse(getInteger(db, bN), 0)
3524+ let nw = valueOrElse(getInteger(db, bN), 0)
34773525 let kt = valueOrElse(getInteger(db, bO), 0)
3478- if ((aM > (nt - kt)))
3479- then throw(((("Delivery is not available, fund=" + dJ(nt, 6)) + ", locked=") + dJ(kt, 6)))
3526+ if ((aM > (nw - kt)))
3527+ then throw(((("Delivery is not available, fund=" + dJ(nw, 6)) + ", locked=") + dJ(kt, 6)))
34803528 else {
34813529 let ax = lastBlock.timestamp
3482- let nu = valueOrElse(getInteger(T(A)), 0)
3483- if ((nu > ax))
3484- then throw(("Delivery is forbidden for your duck until " + toString(nu)))
3530+ let nx = valueOrElse(getInteger(T(A)), 0)
3531+ if ((nx > ax))
3532+ then throw(("Delivery is forbidden for your duck until " + toString(nx)))
34853533 else if (km(A))
34863534 then throw("acceptDelivery_checkTournament")
34873535 else if (kn(A))
34883536 then throw("acceptDelivery_checkDelivery")
34893537 else {
3490- let nv = dy(invoke(db, "updateDeliveryLocked", [(kt + aM)], nil))
3538+ let ny = dy(invoke(db, "updateDeliveryLocked", [(kt + aM)], nil))
34913539 let iY = z(A)
34923540 let iZ = ag(valueOrElse(getInteger(D(A)), 0))
34933541 let kq = valueOrElse(getInteger(iY), iZ)
3494- let ni = bJ(A)
3495- let jn = valueOrElse(getString(ni), aJ)
3496- let nw = (toString(ax) + "_D_0")
3497- $Tuple2([lc, IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(ni, nw)], $Tuple2(nw, nv))
3542+ let nl = bJ(A)
3543+ let jn = valueOrElse(getString(nl), aJ)
3544+ let nz = (toString(ax) + "_D_0")
3545+ $Tuple2(([IntegerEntry(J(A), kq), IntegerEntry(iY, iZ), StringEntry(K(A), jn), StringEntry(nl, nz)] ++ lg), $Tuple2(nz, ny))
34983546 }
34993547 }
35003548 }
35013549
35023550

github/deemru/w8io/169f3d6 
580.64 ms