tx · 49qjVETv4DZem4eEr3tTKuXDAMBjGE4Y8Dbcx3NPNLD2

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.09900000 Waves

2023.11.25 18:21 [2859094] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

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

github/deemru/w8io/873ac7e 
348.42 ms