tx · H2TWnCioPkGbiEH5A5CRkDs42iPCS86sw4T96ZdbY3Kr

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03600000 Waves

2022.12.16 11:22 [2362610] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "H2TWnCioPkGbiEH5A5CRkDs42iPCS86sw4T96ZdbY3Kr", "fee": 3600000, "feeAssetId": null, "timestamp": 1671178975803, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "61MkgLVP4CbRbciSWaetgVDpnzxAFrQuefeF2Vn72tZfLmmCmAuCRdjD3QN4aTyhw82R8ChHDpXm6gTcy6oyNaRi" ], "script": "base64:BgLiKAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzQwNjc1OTIiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTgxMTIxODQ1NyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAzODUyMDQzMyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgdnZXRET2xkIgFuIgphUHJlY2lzaW9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiA2N1ciINJHQwMjEwNjIyMTA4MiINJHQwMjE1MDMyMTU1MCIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIyMDUwMjIwNzAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjIzNzcyMjQyNCIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0MzYzMjQ1NzUiA2RMcCINJHQwMjQ5MDUyNTAwNSINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI3MzIyMjc3ODQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzc5MDI3OTY2IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI3OTcwMjgyMDkiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMwMjg3MzAzOTgiAUAiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzA1ODgzMDg5NSIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMTY4MDMyMDMwIhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMjAzMzMyMTQxIhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzNTk5NzM2MDYyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzNzQxMzM3NTcxIgdlc3RpbUxQIg0kdDAzODM4NjM4NzM1IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzg3MzgzODg0NiIHbWF4U2xwZyIGZXN0UHV0Ig0kdDAzOTg3NjM5OTQxIglvdXRBbXRBbXQiDSR0MDQwNzU1NDA4MzciDWlzR2V0RGlzYWJsZWQiDSR0MDQxNDU1NDE2MTAiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQyMTM0NDIxOTgiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDQzMDk4NDMxNDciDSR0MDQzNDkyNDM2MDciDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDQ3NzU0NDg1NiINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDQ1OTE5NDYwMDAiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQ3MjQ4NDczMjkiDSR0MDQ4MjYzNDg0NTEiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0ODcxMDQ4ODEzIg0kdDA0OTA5MjQ5MTk2IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2h7AAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwCAzEwMAABbQIBMQABbgICX18AAW8CAAABcAABAAFxAAIAAXIAAwABcwAEAAF0AAEAAXUAAgABdgADAAF3AAQAAXgABQABeQAGAAF6AAcAAUEACAABQgAJAAFDAAEAAUQABgABRQAHAAFGAAoAAUcJAGsDAAoFAWEAkE4BAUgCAUkBSgkAvAIDCQC2AgEFAUkFAWMJALYCAQUBSgEBSwIBTAFNCQCgAwEJALwCAwUBTAkAtgIBBQFNBQFjAQFOAwFMAU0BTwkAoAMBCQC9AgQFAUwJALYCAQUBTQUBYwUBTwEBUAMBUQFSAVMJAGsDBQFRBQFSBQFTAQFUAQFMAwkAvwICBQFkBQFMCQC+AgEFAUwFAUwBAVUBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBVgACEyVzX19mYWN0b3J5Q29udHJhY3QBAVcAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBWAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBWQACESVzJXNfX3ByaWNlX19sYXN0AQFaAgJhYQJhYgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAmFhCQDMCAIJAKQDAQUCYWIFA25pbAUBbgECYWMCAmFkAmFlCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWQCAl9fBQJhZQECYWYCAmFkAmFlCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWQCAl9fBQJhZQECYWcAAg8lc19fYW1vdW50QXNzZXQBAmFoAAIOJXNfX3ByaWNlQXNzZXQBAmFpAAIHJXNfX2FtcAECYWoAAg0lc19fYWRkb25BZGRyAAJhawIHJXNfX2ZlZQACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWsFAUcAAmFtCQC5CQIJAMwIAgICJXMJAMwIAgIDZExwBQNuaWwFAW4AAmFuCQC5CQIJAMwIAgICJXMJAMwIAgISZExwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAW4AAmFvCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaERMcERlbGF5BQNuaWwFAW4AAmFwAAEAAmFxCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFvBQJhcAECYXIAAhElc19fZmFjdG9yeUNvbmZpZwECYXMAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF0AgJhdQJhdgkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXUCAl9fBQJhdgIIX19jb25maWcBAmF3AQJheAkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJheAECYXkAAgwlc19fc2h1dGRvd24BAmF6AAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFBAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFCAwJhQwJhRAJhRQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhQwILIHNuZHJWYWxpZD0JAKUDAQUCYUQCDCBtdGNoclZhbGlkPQkApQMBBQJhRQECYUYBAUwEAmFHBQFMAwkAAQIFAmFHAgZTdHJpbmcEAmFIBQJhRwUCYUgJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJhSQICYUoCYUsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhSgUCYUsJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUoJAMwIAgIBLgkAzAgCBQJhSwkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhTAICYUoCYUsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhSgUCYUsJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUoJAMwIAgIBLgkAzAgCBQJhSwkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhTQECYU4JAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFOBQNuaWwCASABAmFPAQJhTgkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhTgUDbmlsAgEgAAJhUAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFJAgUEdGhpcwkBAVYAAAJhUQkBAmFJAgUEdGhpcwkBAmFpAAECYVIACQELdmFsdWVPckVsc2UCCQCbCAIFAmFQCQECYXkABwECYVMACQDZBAEJAQJhSQIFAmFQCQECYXMAAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFJAgUCYVAJAQJhQQABAmFVAAQCYVYJAQJhSQIFBHRoaXMJAQJhZwAEAmFXCQECYUkCBQR0aGlzCQECYWgABAJhWAkBAmFMAgUCYVAJAQJhdwEFAmFXBAJhdQkBAmFMAgUCYVAJAQJhdwEFAmFWCQC1CQIJAQJhSQIFAmFQCQECYXQCCQCkAwEFAmF1CQCkAwEFAmFYBQFuAQJhWQECYVoDCQAAAgUCYVoFAWsFBHVuaXQJANkEAQUCYVoBAmJhAQJhWgMJAAACBQJhWgUEdW5pdAUBawkA2AQBCQEFdmFsdWUBBQJhWgECYmIBAmJjCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmMFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdQkA2QQBCQCRAwIFAmJjBQF2CQECYVkBCQCRAwIFAmJjBQF3CQECYVkBCQCRAwIFAmJjBQF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBegACYmQJAQJiYgEJAQJhVQAAAmJlBQJiZAACYmYIBQJiZQJfMQACYmcIBQJiZQJfMgACYmgIBQJiZQJfMwACYmkIBQJiZQJfNAACYmoIBQJiZQJfNQACYmsIBQJiZQJfNgACYmwIBQJiZQJfNwECYm0ACQC1CQIJAQJhSQIFAmFQCQECYXIABQFuAAJibgkBAmJtAAACYm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJuBQFDAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYnAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJuBQFFAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYnEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJuBQFGAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJicgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJzCgJidAJidQJidgJidwJieAJieQJiegJiQQJiQgJiQwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMFA25pbAUBbgECYkQGAmJFAmJGAmJHAmJ3AmJ6AmJBCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBBQNuaWwFAW4BAmJIAQJiSQMJAAACBQJiSQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkkBAmJKAgJiSwJiTAkAvAIDBQJiSwUBYwUCYkwBAmJNAwJiTgJiTwJiUAQCYlEJALwCAwkAuAICBQJiTgUCYk8FAWIFAmJPBAJiUgkAvwICCQC4AgIFAmJQCQEBVAEFAmJRBQFkAwkBASEBBQJiUgkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiUQkAlAoCBQJiUgkAmQMBCQDMCAIFAmJOCQDMCAIFAmJPBQNuaWwBAmJTAwJiVAJiVQJiVgQCYlEJALwCAwUCYlUFAWIFAmJUBAJiVwkAvwICBQJiVgUCYlEDAwUCYlcGCQC/AgIFAmJVBQJiVAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYlUCASAJAKYDAQUCYlQCASAJAKYDAQUCYlECASAJAKYDAQUCYlYFAmJXAQJiWAQCYlkCYloCY2ECY2IEAmNjCQEBSAIFAmNhBQJiWQQCY2QJAQFIAgUCY2IFAmJaCQECYkoCBQJjZAUCY2MBAmNlAwJjYQJjYgJjZgQCY2cJAQJhVQAEAmNoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXkEAmNpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXoEAmNqCQECYlgEBQJjaAUCY2kFAmNhBQJjYgQCYkwJAQFIAgUCY2EFAmNoBAJiSwkBAUgCBQJjYgUCY2kEAmNrCQEBSAIFAmNmBQFhBAJjbAkBAmJKAgUCYkwFAmNrBAJjbQkBAmJKAgUCYksFAmNrCQDMCAIFAmNqCQDMCAIFAmNsCQDMCAIFAmNtBQNuaWwBAmNuAwJjYQJjYgJjZgQCY28JAQJjZQMFAmNhBQJjYgUCY2YJAMwIAgkBAUsCCQCRAwIFAmNvAAAFAWEJAMwIAgkBAUsCCQCRAwIFAmNvAAEFAWEJAMwIAgkBAUsCCQCRAwIFAmNvAAIFAWEFA25pbAECY3ABAmNxBAJjcgkAawMFAmNxBQJhbAUBYQkAlAoCCQBlAgUCY3EFAmNyBQJjcgECY3MEAmN0AmN1AmN2AmN3BAJjZwkBAmFVAAQCY3gJAJEDAgUCY2cFAXYEAmN5CQCRAwIFAmNnBQF3BAJjegkAkQMCBQJjZwUBeAQCY0EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBeQQCY0IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBegQCY0MJAJEDAgUCY2cFAXUEAmNECAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3gCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCY3gFAmN1CQACAQIPV3JvbmcgcG10IGFzc2V0BAJjRQkBAmJIAQUCY3kEAmNGCQEBSAIFAmNFBQJjQQQCY0cJAQJiSAEFAmN6BAJjSAkBAUgCBQJjRwUCY0IEAmNJCQECYkoCBQJjSAUCY0YEAmNKCQEBSwIFAmNJBQFhBAJjSwkBAUgCBQJjdgUBYQQCY0wJAQFIAgUCY0QFAWEEAmNNCQC8AgMFAmNGBQJjSwUCY0wEAmNOCQC8AgMFAmNIBQJjSwUCY0wEAmNPCQEBTgMFAmNNBQJjQQUFRkxPT1IEAmNQCQEBTgMFAmNOBQJjQgUFRkxPT1IEAmNRAwkAAAIFAmN0AgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjdwUCY08DCQAAAgUCY3kCBVdBVkVTBQR1bml0CQDZBAEFAmN5CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN3BQJjUAMJAAACBQJjegIFV0FWRVMFBHVuaXQJANkEAQUCY3oJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAgkApQgBBQJjdwUCY3QJAQJiRAYFAmNPBQJjUAUCY3YFAmNKBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQAFAmNKCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNKBQNuaWwJAJwKCgUCY08FAmNQBQJjeQUCY3oFAmNFBQJjRwUCY0QFAmNJBQJjQwUCY1EBAmNSDQJjdAJiUAJjUwJjVAJjVQJjVgJjdwJjVwJjWAJjWQJjWgJkYQJkYgQCY2cJAQJhVQAEAmN4CQDZBAEJAJEDAgUCY2cFAXYEAmRjCQCRAwIFAmNnBQF3BAJkZAkAkQMCBQJjZwUBeAQCZGUJAJEDAgUCY2cFAUEEAmRmCQCRAwIFAmNnBQFCBAJkZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF5BAJkaAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF6BAJjQwkAkQMCBQJjZwUBdQQCZGkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3gCCFdyIGxwIGFzCHF1YW50aXR5BAJjRQMFAmNXCQECYkgBBQJkYwMDBQJjWQkAAAIFAmRiBQJkYwcJAGUCCQECYkgBBQJkYwUCZGEDBQJjWQkBAmJIAQUCZGMJAGUCCQECYkgBBQJkYwUCY1MEAmNHAwUCY1cJAQJiSAEFAmRkAwMFAmNZCQAAAgUCZGIFAmRkBwkAZQIJAQJiSAEFAmRkBQJkYQMFAmNZCQECYkgBBQJkZAkAZQIJAQJiSAEFAmRkBQJjVQQCZGoJAQFIAgUCY1MFAmRnBAJkawkBAUgCBQJjVQUCZGgEAmRsCQECYkoCBQJkawUCZGoEAmNGCQEBSAIFAmNFBQJkZwQCY0gJAQFIAgUCY0cFAmRoBAJkbQMJAAACBQJkaQAABAJjSQUBZAQCZG4FAWQEAmNrCQB2BgkAuQICBQJkagUCZGsAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFLAgUCY2sFAWEJAQFLAgUCZGoFAmRnCQEBSwIFAmRrBQJkaAkBAmJKAgkAtwICBQJjSAUCZGsJALcCAgUCY0YFAmRqBQJkbgQCY0kJAQJiSgIFAmNIBQJjRgQCZG8JALwCAwkBAVQBCQC4AgIFAmNJBQJkbAUBYwUCY0kEAmRuCQEBSAIFAmJQBQFhAwMDBQJjWgkBAiE9AgUCY0kFAWQHCQC/AgIFAmRvBQJkbgcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZG8CAyA+IAkApgMBBQJkbgQCZHAJAQFIAgUCZGkFAWEEAmRxCQC8AgMFAmRqBQJjSQUBYwQCZHIJALwCAwUCZGsFAWMFAmNJBAJkcwMJAL8CAgUCZHEFAmRrCQCUCgIFAmRyBQJkawkAlAoCBQJkagUCZHEEAmR0CAUCZHMCXzEEAmR1CAUCZHMCXzIEAmNrCQC8AgMFAmRwBQJkdQUCY0gJAJcKBQkBAU4DBQJjawUBYQUFRkxPT1IJAQFOAwUCZHQFAmRnBQdDRUlMSU5HCQEBTgMFAmR1BQJkaAUHQ0VJTElORwUCY0kFAmRuBAJkdggFAmRtAl8xBAJkdwgFAmRtAl8yBAJkeAgFAmRtAl8zBAJjSgkBAUsCCAUCZG0CXzQFAWEEAmR5CQEBSwIIBQJkbQJfNQUBYQMJAGcCAAAFAmR2CQACAQIHTFAgPD0gMAQCZHoDCQEBIQEFAmNYAAAFAmR2BAJkQQkAZQIFAmNTBQJkdwQCZEIJAGUCBQJjVQUCZHgEAmRDAwMFAmNZCQAAAgUCZGIFAmRjBwkAlAoCBQJkYQAAAwMFAmNZCQAAAgUCZGIFAmRkBwkAlAoCAAAFAmRhCQCUCgIFAmR3BQJkeAQCZEQIBQJkQwJfMQQCZEUIBQJkQwJfMgQCZEYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0oJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUCY3cFAmN0CQECYnMKBQJkRAUCZEUFAmR6BQJjSgUCYlAFAmR5BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkQQUCZEIFA25pbAkAnwoNBQJkdgUCZHoFAmNKBQJjRQUCY0cFAmRpBQJjeAUCY0MFAmRGBQJkQQUCZEIFAmNUBQJjVgECZEcBAmRIBAJkSQkAkQMCBQJkSAAABAJkSgkAkQMCBQJkSAABBAJkSwkAtwICBQJkSQUCZEoDCQAAAgUCZEsFAWUFAWUEAmRMCQENcGFyc2VJbnRWYWx1ZQEFAmFRBAJkTQkAaAIFAmRMAAIEAmNvCQC8AgMFAmRJBQJkSgUBZgQCZE4JALwCAwUCY28FAWkFAWYEAmRPCQC8AgMJALYCAQUCZE0FAmRLBQFmBAJkUAkAtgIBCQBlAgUCZE0AAQoBAmRRAQJkUgQCZFMJALwCAwUCZFIFAmRSBQFmBAJkVAkAvAIDBQJkUwUCZFIFAWYEAmRVCQC8AgMFAmRUBQFmBQJkTgkAvQIECQC3AgIFAmRPCQC8AgMFAmRVBQFnBQFmBQJkUgkAtwICCQC8AgMFAmRQBQJkUgUBZgkAvAIDBQFoBQJkVQUBZgUHQ0VJTElORwoBAmRWAgJkVwJkWAMIBQJkVwJfMgUCZFcEAmRSCAUCZFcCXzEEAmRZCQECZFEBBQJkUgQCZFoJAKADAQkAuAICBQJkWQkBBXZhbHVlAQUCZFIEAmVhAwkAZgIAAAUCZFoJAQEtAQUCZFoFAmRaAwkAZwIAAQUCZWEJAJQKAgUCZFkGCQCUCgIFAmRZBwQCZWIJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZWMKAAJlZAUCZWIKAAJlZQkAkAMBBQJlZAoAAmVmCQCUCgIFAmRLBwoBAmVnAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQECZFYCBQJlaAkAkQMCBQJlZAUCZWkKAQJlagICZWgCZWkDCQBnAgUCZWkFAmVlBQJlaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWoCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCBQJlZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkUggFAmVjAl8xBAJlawgFAmVjAl8yAwUCZWsFAmRSCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRSAQJlbAECZEgEAmVtBQFnBAJkSQkAkQMCBQJkSAAABAJkSgkAkQMCBQJkSAABBAJlbgkApwMBBQFsBAJkTAkAuQICCQCnAwEFAmFRBQJlbgQCZEsJALcCAgUCZEkFAmRKAwkAAAIFAmRLBQFlBQFlBAJkTQkAuQICBQJkTAUCZW0EAmROCQC5AgIJALkCAgkAuQICBQJkSQUCZEoFAmVtBQJlbQQCZW8JALoCAgkAuQICBQJkTQUCZEsFAmVuBAJlcAkAuAICBQJkTQUCZW4EAmVxCQC3AgIFAmVtBQFmCgECZFYCAmRXAmVyBAJlcwUCZFcEAmRSCAUCZXMCXzEEAmVrCAUCZXMCXzIDCQECIT0CBQJlawUEdW5pdAUCZFcEAmRVCQC6AgIJALkCAgkAuQICBQJkUgUCZFIFAmRSBQJkTgQCZFkJALoCAgkAuQICCQC3AgIFAmVvCQC5AgIFAmRVBQJlbQUCZFIJALcCAgkAugICCQC5AgIFAmVwBQJkUgUCZW4JALkCAgUCZXEFAmRVBAJlYQkBAVUBCQC4AgIFAmRZCQEFdmFsdWUBBQJkUgMJAMACAgUBZgUCZWEJAJQKAgUCZFkFAmVyCQCUCgIFAmRZBQR1bml0BAJlYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJldAoAAmVkBQJlYgoAAmVlCQCQAwEFAmVkCgACZWYJAJQKAgUCZEsFBHVuaXQKAQJlZwICZWgCZWkDCQBnAgUCZWkFAmVlBQJlaAkBAmRWAgUCZWgJAJEDAgUCZWQFAmVpCgECZWoCAmVoAmVpAwkAZwIFAmVpBQJlZQUCZWgJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVqAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgkBAmVnAgUCZWYAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFIIBQJldAJfMQQCZWsIBQJldAJfMgMJAQIhPQIFAmVrBQR1bml0BQJkUgkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkUgECZXUDAmRIAmRYAmV2BAJlbQUBZwQCZXcJAJEDAgUCZEgDCQAAAgUCZFgAAAABAAAEAmVuCQCnAwEFAWwEAmRMCQC5AgIJAKcDAQUCYVEFAmVuBAJkSwUCZXcEAmRNCQC5AgIFAmRMBQJlbQQCZXgJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJldgUCZXYJALkCAgUCZXcFAmVtBQJldgUCZW4JALkCAgUCZE0FAmVtBAJleQkAuAICCQC3AgIFAmRLCQC6AgIJALkCAgUCZXYFAmVuBQJkTQUCZXYKAQJkVgICZFcCZXIEAmV6BQJkVwQCZUEIBQJlegJfMQQCZWsIBQJlegJfMgMJAQIhPQIFAmVrBQR1bml0BQJkVwQCZUIJALoCAgkAtwICCQC5AgIFAmVBBQJlQQUCZXgJALcCAgkAuQICBQFnBQJlQQUCZXkEAmVDCQEBVQEJALgCAgUCZUIJAQV2YWx1ZQEFAmVBAwkAwAICBQFmBQJlQwkAlAoCBQJlQgUCZXIJAJQKAgUCZUIFBHVuaXQEAmViCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVECgACZWQFAmViCgACZWUJAJADAQUCZWQKAAJlZgkAlAoCBQJldgUEdW5pdAoBAmVnAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQECZFYCBQJlaAkAkQMCBQJlZAUCZWkKAQJlagICZWgCZWkDCQBnAgUCZWkFAmVlBQJlaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWoCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCBQJlZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlQQgFAmVEAl8xBAJlawgFAmVEAl8yAwkBAiE9AgUCZWsFBHVuaXQFAmVBCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVBAQJlRQMCZUYCZUcCZUgEAmVJCQC8AgMJAQJkRwEJAMwIAgUCZUYJAMwIAgUCZUcFA25pbAUBYwUCZUgDCQAAAgUCZUgFAWUFAWUFAmVJAQJlSgMCZUsCZUwCZU0EAmVOCQC4AgIJALYCAQkBAmJIAQkBAmJhAQUCYmkFAmVLBAJlTwkAuAICCQC2AgEJAQJiSAEJAQJiYQEFAmJqBQJlTAQCZVAJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZU0EAmVRCQECZUUDBQJlTgUCZU8FAmVQBQJlUQECZVIDAmVTAmVUAmVNBAJlTgkAZAIJAQJiSAEJAQJiYQEFAmJpBQJlUwQCZU8JAGQCCQECYkgBCQECYmEBBQJiagUCZVQEAmVQCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkFAmVNBAJlSQkBAmVFAwkAtgIBBQJlTgkAtgIBBQJlTwkAtgIBBQJlUAQCZVUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFuBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYW0JAKYDAQUCZUkFA25pbAkAlAoCBQJlVQUCZUkBAmVWAgJlVwJlSQMJAMACAgUCZUkFAmVXBgkBAmFNAQIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAECZVgBAmVZBAJlWggFAmVZBmFtb3VudAQCZmEJAG4ECAUCZVkGYW1vdW50CAUCZVkFcHJpY2UFAWEFBUZMT09SBAJmYgMJAAACCAUCZVkJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZVoJAQEtAQUCZmEJAJQKAgkBAS0BBQJlWgUCZmEEAmVTCAUCZmICXzEEAmVUCAUCZmICXzIDAwMJAQJhUgAGCQAAAgUCYmcFAXIGCQAAAgUCYmcFAXMJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZVkJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiaQYJAQIhPQIICAUCZVkJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJqCQACAQIJV3IgYXNzZXRzBAJmYwkApwMBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQJhbQQCZmQJAQJlUgMFAmVTBQJlVAAABAJmZQgFAmZkAl8xBAJmZggFAmZkAl8yBAJmZwkAwAICBQJmZgUCZmMFAmZnAQJmaAECZFgDCQECIT0CCQCQAwEIBQJkWAhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZmkJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAEAmN1CQEFdmFsdWUBCAUCZmkHYXNzZXRJZAQCZGEIBQJmaQZhbW91bnQEAmRtCQECY3MECQDYBAEIBQJkWA10cmFuc2FjdGlvbklkCQDYBAEFAmN1BQJkYQgFAmRYBmNhbGxlcgQCY08IBQJkbQJfMQQCY1AIBQJkbQJfMgQCY0MJAQ1wYXJzZUludFZhbHVlAQgFAmRtAl85BAJjUQgFAmRtA18xMAMDCQECYVIABgkAAAIFAmNDBQFzCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCY0MJAJcKBQUCY08FAmNQBQJkYQUCY3UFAmNRAQJmagoCZmsCYWUCZmwCZm0CYlACY1gCY1kCY1oCZGECZGIEAmRtCQECY1INBQJhZQUCYlAICQEFdmFsdWUBBQJmbAZhbW91bnQICQEFdmFsdWUBBQJmbAdhc3NldElkCAkBBXZhbHVlAQUCZm0GYW1vdW50CAkBBXZhbHVlAQUCZm0HYXNzZXRJZAUCZmsJAAACBQJhZQIABQJjWAUCY1kFAmNaBQJkYQUCZGIEAmNDCQENcGFyc2VJbnRWYWx1ZQEIBQJkbQJfOAMDAwkBAmFSAAYJAAACBQJjQwUBcQYJAAACBQJjQwUBcwkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCY0MFAmRtAQJmbgUCZm8CY3UCY3cCYWUCZnAEAmJjCQECYVUABAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmN4CQCRAwIFAmJjBQF2BAJkZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF5BAJkaAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6BAJlUAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3gCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZxAwkAvwICBQJlUAUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZxBQJmcQQCY0UJAQJiSAEFAmN5BAJjRwkBAmJIAQUCY3oEAmZyAwkAAAIFAmFlAgAJAJQKAgUCY0UFAmNHAwkAAAIFAmN1BQJjeQMJAGYCBQJmbwUCY0UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJjRQUCZm8FAmNHAwkAAAIFAmN1BQJjegMJAGYCBQJmbwUCY0cJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmNFCQBlAgUCY0cFAmZvCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZnMIBQJmcgJfMQQCZnQIBQJmcgJfMgQCZnUDCQAAAgUCY3UFAmN5CQCUCgIFAmZvAAADCQAAAgUCY3UFAmN6CQCUCgIAAAUCZm8JAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZ2CAUCZnUCXzEEAmZ3CAUCZnUCXzIEAmZ4AwUCZnAJAJUKAwgJAQJjcAEFAmZ2Al8xCAkBAmNwAQUCZncCXzEICQECY3ABBQJmbwJfMgkAlQoDBQJmdgUCZncAAAQCZnkIBQJmeAJfMQQCZnoIBQJmeAJfMgQCY3IIBQJmeAJfMwQCZkEJAGQCBQJmcwUCZnkEAmZCCQBkAgUCZnQFAmZ6BAJiVQkBAmRHAQkAzAgCCQC2AgEFAmZzCQDMCAIJALYCAQUCZnQFA25pbAQCYlQJAQJkRwEJAMwIAgkAtgIBBQJmQQkAzAgCCQC2AgEFAmZCBQNuaWwEAmZDAwkAvwICBQJiVAUCYlUGCQEFdGhyb3cAAwkAAAIFAmZDBQJmQwQCZkQJAL0CBAUCZVAJALgCAgUCYlQFAmJVBQJiVQUFRkxPT1IEAmNKCQEBSwIJAQJiSgIJAQFIAgUCZkIFAmRoCQEBSAIFAmZBBQJkZwUBYQQCZEYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0oJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUCY3cFAmFlCQECYnMKBQJmdgUCZncJAKADAQUCZkQFAmNKAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZkUJAGsDBQJmdAUBYQUCZnMEAmZGCQBrAwUCZm8FAWEJAGQCBQJmRQUBYQQCZkcJAGUCBQJmbwUCZkYEAmZICQC8AgMFAmVQCQC2AgEFAmZHCQC2AgEFAmZ0BAJmSQkAoAMBCQC8AgMJALgCAgUCZkQFAmZIBQFiBQJmSAkAlgoECQCgAwEFAmZEBQJkRgUCY3IFAmZJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmSgYCZksCZkwCZk0CZmsCZk4CZk8EAmJjCQECYVUABAJjeAkAkQMCBQJiYwUBdgQCY3kJAJEDAgUCYmMFAXcEAmN6CQCRAwIFAmJjBQF4BAJmUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF5BAJmUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6BAJmUgkAkQMCBQJiYwUBdQQCY3cDCQAAAgUCZmsFAmJyBQJmTgUCZmsEAmZpCQEFdmFsdWUBCQCRAwIFAmZNAAAEAmN1CQEFdmFsdWUBCAUCZmkHYXNzZXRJZAQCZGEIBQJmaQZhbW91bnQEAmVRCQECZUoDBQFlBQFlCQC2AgEFAmRhAwkAAAIFAmVRBQJlUQQCY3QJANgEAQUCZk8DCQECIT0CBQJjeAkA2AQBBQJjdQkAAgECCFdyb25nIExQBAJjRQkBAmJIAQUCY3kEAmNHCQECYkgBBQJjegQCZlMKAAJmVAkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZLCQDMCAIFAmRhBQNuaWwFA25pbAMJAAECBQJmVAIKKEludCwgSW50KQUCZlQJAAIBCQCsAgIJAAMBBQJmVAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmUwUCZlMEAmNyCAUCZlMCXzIEAmZVCAUCZlMCXzEEAmZWAwMJAGYCBQJmTAAACQBmAgUCZkwFAmZVBwkBAmFNAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmTAUDbmlsAgAFAmZVBAJmVwMJAAACBQJmSwUCY3kJAJYKBAUCZlYAAAkAZQIJAGUCBQJjRQUCZlYFAmNyBQJjRwMJAAACBQJmSwUCY3oJAJYKBAAABQJmVgUCY0UJAGUCCQBlAgUCY0cFAmZWBQJjcgkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmWAgFAmZXAl8xBAJmWQgFAmZXAl8yBAJmQQgFAmZXAl8zBAJmQggFAmZXAl80BAJmWgkBAmJKAgkBAUgCBQJmQgUCZlEJAQFIAgUCZkEFAmZQBAJnYQkBAUsCBQJmWgUBYQQCZ2IDCQAAAgUCZksCBVdBVkVTBQR1bml0CQDZBAEFAmZLBAJnYwMJAGYCBQJjcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFUBQJjcgUCZ2IFA25pbAUDbmlsBAJjUQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN3BQJmVgUCZ2IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAgkApQgBBQJjdwUCY3QJAQJiRAYFAmZYBQJmWQUCZGEFAmdhBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQAFAmdhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmdhBQNuaWwFAmdjAwkAAAIFAmNRBQJjUQQCZ2QJAPwHBAUCYVACBGJ1cm4JAMwIAgUCZGEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3UFAmRhBQNuaWwDCQAAAgUCZ2QFAmdkBAJnZQQCZ2YDCQAAAgUEdGhpcwUCYVQAAAUCY3IEAmdnAwkAAAIJAQJhWQEFAmZLBQJiaQYHAwUCZ2cJAJQKAgkBAS0BCQBkAgUCZlUFAmdmAAAJAJQKAgAACQEBLQEJAGQCBQJmVQUCZ2YEAmVTCAUCZ2UCXzEEAmVUCAUCZ2UCXzIEAmdoCQECZVIDBQJlUwUCZVQAAAQCZ2kIBQJnaAJfMQQCZUkIBQJnaAJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAJQKAgkAzggCBQJjUQUCZ2kFAmZWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnawAEAmFHCQCiCAEJAQFXAAMJAAECBQJhRwIGU3RyaW5nBAJkSwUCYUcJANkEAQUCZEsDCQABAgUCYUcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2wABAJhRwkAoggBCQEBWAADCQABAgUCYUcCBlN0cmluZwQCZEsFAmFHCQDZBAEFAmRLAwkAAQIFAmFHAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmdtCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmduAQJkWAQCYUcJAQJnawADCQABAgUCYUcCCkJ5dGVWZWN0b3IEAmdvBQJhRwkAAAIIBQJkWA9jYWxsZXJQdWJsaWNLZXkFAmdvAwkAAQIFAmFHAgRVbml0CQAAAggFAmRYBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJncAECZFgEAmFHCQECZ2sAAwkAAQIFAmFHAgpCeXRlVmVjdG9yBAJnbwUCYUcDCQAAAggFAmRYD2NhbGxlclB1YmxpY0tleQUCZ28GBQJnbQMJAAECBQJhRwIEVW5pdAMJAAACCAUCZFgGY2FsbGVyBQR0aGlzBgUCZ20JAAIBAgtNYXRjaCBlcnJvch0CZFgBC2NvbnN0cnVjdG9yAQFWBAJleAkBAmdwAQUCZFgDCQAAAgUCZXgFAmV4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUBVgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQpzZXRNYW5hZ2VyAQJncQQCZXgJAQJncAEFAmRYAwkAAAIFAmV4BQJleAQCZ3IJANkEAQUCZ3EDCQAAAgUCZ3IFAmdyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAAUCZ3EFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEOY29uZmlybU1hbmFnZXIABAJjbwkBAmdsAAQCZ3MDCQEJaXNEZWZpbmVkAQUCY28GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdzBQJncwQCZ3QDCQAAAggFAmRYD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY28GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmd0BQJndAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwAJANgEAQkBBXZhbHVlAQUCY28JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVgABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBA3B1dAICZ3UCZ3YEAmd3CQECYm0ABAJneAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3cFAUMCCldyIHN0IGFkZHIEAmd5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndwUBRQIKV3Igc2wgYWRkcgMJAGYCAAAFAmd1CQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkWAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnegkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAZhbW91bnQEAmdBCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwABBmFtb3VudAQCZVEJAQJlSgMFAmd6BQJnQQkAtgIBAAADCQAAAgUCZVEFAmVRBAJnQgkBAmZqCgkApQgBCAUCZFgGY2FsbGVyCQDYBAEIBQJkWA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkWAhwYXltZW50cwABBQJndQYHBgAAAgAEAmR6CAUCZ0ICXzIEAmdDCAUCZ0ICXzcEAmNRCAUCZ0ICXzkEAmRBCAUCZ0IDXzEwBAJkQggFAmdCA18xMQQCY3kIBQJnQgNfMTIEAmN6CAUCZ0IDXzEzBAJkbQkA/AcEBQJhUAIEZW1pdAkAzAgCBQJkegUDbmlsBQNuaWwDCQAAAgUCZG0FAmRtBAJnRAQCYUcFAmRtAwkAAQIFAmFHAgdBZGRyZXNzBAJnRQUCYUcJAPwHBAUCZ0UCBGVtaXQJAMwIAgUCZHoFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdEBQJnRAQCZ0YDCQBmAgUCZEEAAAkA/AcEBQJneQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN5BQJkQQUDbmlsBQNuaWwDCQAAAgUCZ0YFAmdGBAJnRwMJAGYCBQJkQgAACQD8BwQFAmd5AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3oFAmRCBQNuaWwFA25pbAMJAAACBQJnRwUCZ0cEAmdIAwUCZ3YEAmdJCQD8BwQFAmd4AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQwUCZHoFA25pbAMJAAACBQJnSQUCZ0kFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFgGY2FsbGVyBQJkegUCZ0MFA25pbAQCZ0oJAQJlUgMAAAAAAAAEAmdpCAUCZ0oCXzEEAmVJCAUCZ0oCXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQDOCAIJAM4IAgUCY1EFAmdIBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAELcHV0T25lVGtuVjICAmZMAmd2BAJnSwoAAmZUCQD8BwQFAmFQAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlQCB0Jvb2xlYW4FAmZUCQACAQkArAICCQADAQUCZlQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdMAwMDCQECYVIABgkAAAIFAmJnBQFxBgkAAAIFAmJnBQFzBgUCZ0sEAmdNCQDMCAIDAwkBASEBBQJnTAYJAQJnbgEFAmRYBgkBAmFNAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFgIcGF5bWVudHMAAQYJAQJhTQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdNBQJnTQQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJANkEAQkAkQMCBQJiYwUBdgQCZlAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBeQQCZlEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBegQCY3cDCQAAAggFAmRYBmNhbGxlcgUEdGhpcwgFAmRYDG9yaWdpbkNhbGxlcggFAmRYBmNhbGxlcgQCZmkJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAEAmN1CQDYBAEJAQV2YWx1ZQEIBQJmaQdhc3NldElkBAJkYQgFAmZpBmFtb3VudAQCZVEDCQAAAggFAmZpB2Fzc2V0SWQFAmJpCQECZUoDCQC2AgEFAmRhCQC2AgEAAAkAtgIBAAAJAQJlSgMJALYCAQAACQC2AgEFAmRhCQC2AgEAAAMJAAACBQJlUQUCZVEEAmdOCQECZm4FBQJkYQUCY3UJAKUIAQUCY3cJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmdOBQJnTgQCY3IIBQJnTgJfMwQCY1EIBQJnTgJfMgQCZ08IBQJnTgJfMQQCZHoDAwkAZgIFAmZMAAAJAGYCBQJmTAUCZ08HCQECYU0BCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZMBQNuaWwCAAUCZ08EAmdCCQD8BwQFAmFQAgRlbWl0CQDMCAIFAmR6BQNuaWwFA25pbAMJAAACBQJnQgUCZ0IEAmdEBAJhRwUCZ0IDCQABAgUCYUcCB0FkZHJlc3MEAmdFBQJhRwkA/AcEBQJnRQIEZW1pdAkAzAgCBQJkegUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0QFAmdEBAJnSAMFAmd2BAJnSQkA/AcEBQJibwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3gFAmR6BQNuaWwDCQAAAgUCZ0kFAmdJBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRYBmNhbGxlcgUCZHoFAmN4BQNuaWwEAmdjAwkAZgIFAmNyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVQFAmNyCQDZBAEFAmN1BQNuaWwFA25pbAQCZ1ADCQAAAgUEdGhpcwUCYVQJAJQKAgAAAAAEAmdRAwkAAAIIBQJmaQdhc3NldElkBQJiaQYHAwUCZ1EJAJQKAgkBAS0BBQJjcgAACQCUCgIAAAkBAS0BBQJjcgQCZVMIBQJnUAJfMQQCZVQIBQJnUAJfMgQCZ1IJAQJlUgMFAmVTBQJlVAAABAJnaQgFAmdSAl8xBAJlSQgFAmdSAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAlAoCCQDOCAIJAM4IAgkAzggCBQJjUQUCZ0gFAmdjBQJnaQUCZHoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBCnB1dEZvckZyZWUBAmdTAwkAZgIAAAUCZ1MJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZFgIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ1QJAQJmagoJAKUIAQgFAmRYBmNhbGxlcgkA2AQBCAUCZFgNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZFgIcGF5bWVudHMAAQUCZ1MHBwYAAAIABAJjUQgFAmdUAl85BAJnegkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAZhbW91bnQEAmdBCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwABBmFtb3VudAQCZVEJAQJlSgMFAmd6BQJnQQkAtgIBAAADCQAAAgUCZVEFAmVRBAJnVQkBAmVSAwAAAAAAAAQCZ2kIBQJnVQJfMQQCZUkIBQJnVQJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAM4IAgUCY1EFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQNnZXQABAJlUQkBAmVKAwkAtgIBAAAJALYCAQAACQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABmFtb3VudAMJAAACBQJlUQUCZVEEAmRtCQECZmgBBQJkWAQCZ1YIBQJkbQJfMQQCY1AIBQJkbQJfMgQCZGEIBQJkbQJfMwQCY3UIBQJkbQJfNAQCY1EIBQJkbQJfNQQCZXkJAPwHBAUCYVACBGJ1cm4JAMwIAgUCZGEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3UFAmRhBQNuaWwDCQAAAgUCZXkFAmV5BAJnVwkBAmVSAwkBAS0BBQJnVgkBAS0BBQJjUAAABAJnaQgFAmdXAl8xBAJlSQgFAmdXAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAzggCBQJjUQUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBC2dldE9uZVRrblYyAgJmSwJmTAQCZ0sKAAJmVAkA/AcEBQJhUAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZUAgdCb29sZWFuBQJmVAkAAgEJAKwCAgkAAwEFAmZUAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnWAMDCQECYVIABgkAAAIFAmJnBQFzBgUCZ0sEAmdNCQDMCAIDAwkBASEBBQJnWAYJAQJnbgEFAmRYBgkBAmFNAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFgIcGF5bWVudHMAAQYJAQJhTQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdNBQJnTQQCZ1kJAQJmSgYFAmZLBQJmTAgFAmRYCHBheW1lbnRzCAUCZFgGY2FsbGVyCAUCZFgMb3JpZ2luQ2FsbGVyCAUCZFgNdHJhbnNhY3Rpb25JZAQCY1EIBQJnWQJfMQQCZlYIBQJnWQJfMgkAlAoCBQJjUQUCZlYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBCnJlZnJlc2hETHAABAJnWgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhbgAABAJoYQMJAGcCCQBlAgUGaGVpZ2h0BQJnWgUCYXEFBHVuaXQJAQJhTQEJALkJAgkAzAgCCQCkAwEFAmFxCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoYQUCaGEEAmZjCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhbQIBMAkBAmFPAQILaW52YWxpZCBkTHAEAmhiCQECZVIDAAAAAAAABAJoYwgFAmhiAl8xBAJlSQgFAmhiAl8yBAJlVQMJAQIhPQIFAmZjBQJlSQUCaGMJAQJhTQECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlVQkApgMBBQJlSQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAETZ2V0T25lVGtuVjJSRUFET05MWQICZksCaGQEAmJjCQECYVUABAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmN4CQCRAwIFAmJjBQF2BAJkSAkAzAgCCQC2AgEJAQJiSAEFAmN5CQDMCAIJALYCAQkBAmJIAQUCY3oFA25pbAQCZUgJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN4AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiVQkBAmRHAQUCZEgEAmJUCQC4AgIFAmJVCQC8AgMJALYCAQUCaGQFAmJVBQJlSAQCaGUDCQAAAgUCZksFAmN5AAADCQAAAgUCZksFAmN6AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaGYJAQJldQMFAmRIBQJoZQUCYlQEAmhnCQC4AgIJAJEDAgUCZEgFAmhlBQJoZgQCaGgJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmhnBQFmBQNuaWwEAmhpCQECY3ABBQJoaAQCZlUIBQJoaQJfMQQCY3IIBQJoaQJfMgkAlAoCBQNuaWwJAJQKAgUCZlUFAmNyAmRYARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmSwJoZAQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmNFCQECYkgBBQJjeQQCY0cJAQJiSAEFAmN6BAJoagoAAmZUCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZksJAMwIAgUCaGQFA25pbAUDbmlsAwkAAQIFAmZUAgooSW50LCBJbnQpBQJmVAkAAgEJAKwCAgkAAwEFAmZUAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmVQgFAmhqAl8xBAJjcggFAmhqAl8yBAJkbQkBAmNzBAIABQJjeAUCaGQFBHRoaXMEAmNPCAUCZG0CXzEEAmNQCAUCZG0CXzIEAmhrCQBkAgUCY08FAmNQBAJmSQMJAAACBQJoawAAAwkAAAIFAmZVAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZVBQJoawUBYQUCaGsJAJQKAgUDbmlsCQCVCgMFAmZVBQJjcgUCZkkCZFgBCWdldE5vTGVzcwICaGwCaG0EAmRtCQECZmgBBQJkWAQCY08IBQJkbQJfMQQCY1AIBQJkbQJfMgQCZGEIBQJkbQJfMwQCY3UIBQJkbQJfNAQCY1EIBQJkbQJfNQMJAGYCBQJobAUCY08JAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY08CAyA8IAkApAMBBQJobAMJAGYCBQJobQUCY1AJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjUAIDIDwgCQCkAwEFAmhtBAJlUQkBAmVKAwkAtgIBAAAJALYCAQAACQC2AgEFAmRhBAJobgkA/AcEBQJhUAIEYnVybgkAzAgCBQJkYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdQUCZGEFA25pbAMJAAACBQJobgUCaG4EAmhvCQECZVIDCQEBLQEFAmNPCQEBLQEFAmNQAAAEAmdpCAUCaG8CXzEEAmVJCAUCaG8CXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQDOCAIFAmNRBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAENdW5zdGFrZUFuZEdldAECY3EEAmhwAwkBAiE9AgkAkAMBCAUCZFgIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhwBQJocAQCY2cJAQJhVQAEAmhxCQECYm0ABAJnQwkA2QQBCQCRAwIFAmNnBQF2BAJocgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHEFAUMCCldyIHN0IGFkZHIEAmVRCQECZUoDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJocwkA/AcEBQJocgIHdW5zdGFrZQkAzAgCCQDYBAEFAmdDCQDMCAIFAmNxBQNuaWwFA25pbAMJAAACBQJocwUCaHMEAmRtCQECY3MECQDYBAEIBQJkWA10cmFuc2FjdGlvbklkCQDYBAEFAmdDBQJjcQgFAmRYBmNhbGxlcgQCY08IBQJkbQJfMQQCY1AIBQJkbQJfMgQCY0MJAQ1wYXJzZUludFZhbHVlAQgFAmRtAl85BAJjUQgFAmRtA18xMAQCaHQDAwkBAmFSAAYJAAACBQJjQwUBcwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmNDBgMJAAACBQJodAUCaHQEAmh1CQD8BwQFAmFQAgRidXJuCQDMCAIFAmNxBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdDBQJjcQUDbmlsAwkAAAIFAmh1BQJodQQCaHYJAQJlUgMJAQEtAQUCY08JAQEtAQUCY1AAAAQCZ2kIBQJodgJfMQQCZUkIBQJodgJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAM4IAgUCY1EFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJodwJoeAJobQQCZ1gDCQECYVIABgkAAAIFAmJnBQFzBAJnTQkAzAgCAwkBASEBBQJnWAYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWAhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdNBQJnTQQCZVEJAQJlSgMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmhzCQD8BwQFAmJvAgd1bnN0YWtlCQDMCAIJANgEAQUCYmgJAMwIAgUCaHcFA25pbAUDbmlsAwkAAAIFAmhzBQJocwQCaHkJAQJjcwQJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJANgEAQUCYmgFAmh3CAUCZFgGY2FsbGVyBAJjTwgFAmh5Al8xBAJjUAgFAmh5Al8yBAJjUQgFAmh5A18xMAQCaHoJAMwIAgMJAGcCBQJjTwUCaHgGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaHgFA25pbAIACQDMCAIDCQBnAgUCY1AFAmhtBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaG0FA25pbAIABQNuaWwDCQAAAgUCaHoFAmh6BAJobgkA/AcEBQJhUAIEYnVybgkAzAgCBQJodwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiaAUCaHcFA25pbAMJAAACBQJobgUCaG4EAmhBCQECZVIDCQEBLQEFAmNPCQEBLQEFAmNQAAAEAmdpCAUCaEECXzEEAmVJCAUCaEECXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQDOCAIFAmNRBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJodwJmSwJmTAQCZ0sKAAJmVAkA/AcEBQJhUAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZUAgdCb29sZWFuBQJmVAkAAgEJAKwCAgkAAwEFAmZUAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnWAMDCQECYVIABgkAAAIFAmJnBQFzBgUCZ0sEAmdNCQDMCAIDAwkBASEBBQJnWAYJAQJnbgEFAmRYBgkBAmFNAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFgIcGF5bWVudHMAAAYJAQJhTQECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdNBQJnTQQCY2cJAQJhVQAEAmhxCQECYm0ABAJnQwkA2QQBCQCRAwIFAmNnBQF2BAJocgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHEFAUMCCldyIHN0IGFkZHIEAmhzCQD8BwQFAmhyAgd1bnN0YWtlCQDMCAIJANgEAQUCZ0MJAMwIAgUCaHcFA25pbAUDbmlsAwkAAAIFAmhzBQJocwQCaEIJAQJmSgYFAmZLBQJmTAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0MFAmh3BQNuaWwIBQJkWAZjYWxsZXIIBQJkWAxvcmlnaW5DYWxsZXIIBQJkWA10cmFuc2FjdGlvbklkBAJjUQgFAmhCAl8xBAJmVggFAmhCAl8yCQCUCgIFAmNRBQJmVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICaEMCaEQEAmJjCQECYVUABAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmN4CQCRAwIFAmJjBQF2BAJoRQkBAmZuBQUCaEMFAmhEAgACAAYEAmZECAUCaEUCXzEEAmNRCAUCaEUCXzIEAmNyCAUCaEUCXzMEAmZJCAUCaEUCXzQJAJQKAgUDbmlsCQCVCgMFAmZEBQJjcgUCZkkCZFgBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaEMCaEQEAmJjCQECYVUABAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmN4CQCRAwIFAmJjBQF2BAJoRgkBAmZuBQUCaEMFAmhEAgACAAcEAmZECAUCaEYCXzEEAmNRCAUCaEYCXzIEAmNyCAUCaEYCXzMEAmZJCAUCaEYCXzQJAJQKAgUDbmlsCQCVCgMFAmZEBQJjcgUCZkkCZFgBCGFjdGl2YXRlAgJoRwJoSAMJAQIhPQIJAKUIAQgFAmRYBmNhbGxlcgkApQgBBQJhUAkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwAFAmhHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaAAFAmhIBQNuaWwCB3N1Y2Nlc3MCZFgBBHNldFMCAmhJAmh0AwkBAiE9AgkApQgBCAUCZFgGY2FsbGVyCQECYUkCBQR0aGlzCQECYWoABQJnbQkAzAgCCQELU3RyaW5nRW50cnkCBQJoSQUCaHQFA25pbAJkWAEEc2V0SQICaEkCaHQDCQECIT0CCQClCAEIBQJkWAZjYWxsZXIJAQJhSQIFBHRoaXMJAQJhagAFAmdtCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJoSQUCaHQFA25pbAJkWAEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYVUAAmRYARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiSQkAlAoCBQNuaWwJAQJiSAEFAmJJAmRYARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjYQJjYgJjZgQCaEoJAQJjZQMFAmNhBQJjYgUCY2YJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJoSgAACQDMCAIJAKYDAQkAkQMCBQJoSgABCQDMCAIJAKYDAQkAkQMCBQJoSgACBQNuaWwCZFgBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUwCaEsJAJQKAgUDbmlsCQEBSwIJAKcDAQUBTAUCaEsCZFgBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQCmAwEJAQFIAgUBSQUBSgJkWAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSwJiTAkAlAoCBQNuaWwJAKYDAQkBAmJKAgkApwMBBQJiSwkApwMBBQJiTAJkWAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmN0AmJQAmNTAmNUAmNVAmNWAmhMAmNXAmNYCQCUCgIFA25pbAkBAmNSDQUCY3QFAmJQBQJjUwUCY1QFAmNVBQJjVgUCaEwFAmNXBQJjWAYHAAACAAJkWAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmN0AmhNAmN2AmhMBAJkbQkBAmNzBAUCY3QFAmhNBQJjdgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaEwJAJQKAgUDbmlsCQCcCgoIBQJkbQJfMQgFAmRtAl8yCAUCZG0CXzMIBQJkbQJfNAgFAmRtAl81CAUCZG0CXzYIBQJkbQJfNwkApgMBCAUCZG0CXzgIBQJkbQJfOQgFAmRtA18xMAJkWAEOZ2V0RmVlUkVBRE9OTFkACQCUCgIFA25pbAUCYWwBAmhOAQJoTwAEAmhQBAJhRwkBAmdrAAMJAAECBQJhRwIKQnl0ZVZlY3RvcgQCZ28FAmFHBQJnbwMJAAECBQJhRwIEVW5pdAgFAmhOD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhRwUCaE4DCQABAgUCYUcCBU9yZGVyBAJlWQUCYUcEAmhRCQECYVMABAJoUgkBAmVYAQUCZVkEAmhTCQD0AwMIBQJlWQlib2R5Qnl0ZXMJAJEDAggFAmVZBnByb29mcwAACAUCZVkPc2VuZGVyUHVibGljS2V5BAJoVAkA9AMDCAUCZVkJYm9keUJ5dGVzCQCRAwIIBQJlWQZwcm9vZnMAAQUCaFEDAwMFAmhSBQJoUwcFAmhUBwYJAQJhQgMFAmhSBQJoUwUCaFQDCQABAgUCYUcCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkSwUCYUcEAmhVCQD2AwEJAQV2YWx1ZQEIBQJkSwZzY3JpcHQEAmhWCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVAJAQJhegAEAmhXCQDxBwEFBHRoaXMDAwkAAAIFAmhWBQJoVQkBAiE9AgUCaFcFAmhVBwYJAPQDAwgFAmhOCWJvZHlCeXRlcwkAkQMCCAUCaE4GcHJvb2ZzAAAFAmhQCQD0AwMIBQJoTglib2R5Qnl0ZXMJAJEDAggFAmhOBnByb29mcwAABQJoUI2uYPs=", "chainId": 84, "height": 2362610, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AxhLbJVF9wXAf3YhwXkgmcJTdGfrfxmisJpW5QrkVxMu Next: JD8Uf5NgCtxf4VwW7HqZGBFxVrm1Jhc4j3M2P6Zcibht Diff:
OldNewDifferences
780780 let fi = value(fM[0])
781781 let cu = value(fi.assetId)
782782 let da = fi.amount
783- let eQ = eJ(e, e, e)
783+ let eQ = eJ(e, e, toBigInt(da))
784784 if ((eQ == eQ))
785785 then {
786786 let ct = toBase58String(fO)
10751075 let fi = value(dX.payments[0])
10761076 let cu = toBase58String(value(fi.assetId))
10771077 let da = fi.amount
1078- let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1079- if ((gN == gN))
1078+ let eQ = if ((fi.assetId == bi))
1079+ then eJ(toBigInt(da), toBigInt(0), toBigInt(0))
1080+ else eJ(toBigInt(0), toBigInt(da), toBigInt(0))
1081+ if ((eQ == eQ))
10801082 then {
1081- let cr = gN._3
1082- let cQ = gN._2
1083- let gO = gN._1
1084- let dz = if (if ((fL > 0))
1085- then (fL > gO)
1086- else false)
1087- then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1088- else gO
1089- let gB = invoke(aP, "emit", [dz], nil)
1090- if ((gB == gB))
1083+ let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1084+ if ((gN == gN))
10911085 then {
1092- let gD = {
1093- let aG = gB
1094- if ($isInstanceOf(aG, "Address"))
1095- then {
1096- let gE = aG
1097- invoke(gE, "emit", [dz], nil)
1086+ let cr = gN._3
1087+ let cQ = gN._2
1088+ let gO = gN._1
1089+ let dz = if (if ((fL > 0))
1090+ then (fL > gO)
1091+ else false)
1092+ then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1093+ else gO
1094+ let gB = invoke(aP, "emit", [dz], nil)
1095+ if ((gB == gB))
1096+ then {
1097+ let gD = {
1098+ let aG = gB
1099+ if ($isInstanceOf(aG, "Address"))
1100+ then {
1101+ let gE = aG
1102+ invoke(gE, "emit", [dz], nil)
1103+ }
1104+ else unit
10981105 }
1099- else unit
1100- }
1101- if ((gD == gD))
1102- then {
1103- let gH = if (gv)
1106+ if ((gD == gD))
11041107 then {
1105- let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1106- if ((gI == gI))
1107- then nil
1108+ let gH = if (gv)
1109+ then {
1110+ let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1111+ if ((gI == gI))
1112+ then nil
1113+ else throw("Strict value is not equal to itself.")
1114+ }
1115+ else [ScriptTransfer(dX.caller, dz, cx)]
1116+ let gc = if ((cr > 0))
1117+ then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1118+ else nil
1119+ let gP = if ((this == aT))
1120+ then $Tuple2(0, 0)
1121+ else {
1122+ let gQ = if ((fi.assetId == bi))
1123+ then true
1124+ else false
1125+ if (gQ)
1126+ then $Tuple2(-(cr), 0)
1127+ else $Tuple2(0, -(cr))
1128+ }
1129+ let eS = gP._1
1130+ let eT = gP._2
1131+ let gR = eR(eS, eT, 0)
1132+ let gi = gR._1
1133+ let eI = gR._2
1134+ let gj = eV(eQ, eI)
1135+ if ((gj == gj))
1136+ then $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
11081137 else throw("Strict value is not equal to itself.")
11091138 }
1110- else [ScriptTransfer(dX.caller, dz, cx)]
1111- let gc = if ((cr > 0))
1112- then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1113- else nil
1114- let gP = if ((this == aT))
1115- then $Tuple2(0, 0)
1116- else {
1117- let gQ = if ((fi.assetId == bi))
1118- then true
1119- else false
1120- if (gQ)
1121- then $Tuple2(-(cr), 0)
1122- else $Tuple2(0, -(cr))
1123- }
1124- let eS = gP._1
1125- let eT = gP._2
1126- let gR = eR(eS, eT, 0)
1127- let gi = gR._1
1128- let eI = gR._2
1129- $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
1139+ else throw("Strict value is not equal to itself.")
11301140 }
11311141 else throw("Strict value is not equal to itself.")
11321142 }
11671177
11681178 @Callable(dX)
11691179 func get () = {
1170- let dm = fh(dX)
1171- let gV = dm._1
1172- let cP = dm._2
1173- let da = dm._3
1174- let cu = dm._4
1175- let cQ = dm._5
1176- let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1177- if ((ey == ey))
1180+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(value(dX.payments[0]).amount))
1181+ if ((eQ == eQ))
11781182 then {
1179- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1180- let gW = eR(-(gV), -(cP), 0)
1181- let gi = gW._1
1182- let eI = gW._2
1183- let gj = eV(eQ, eI)
1184- if ((gj == gj))
1185- then (cQ ++ gi)
1183+ let dm = fh(dX)
1184+ let gV = dm._1
1185+ let cP = dm._2
1186+ let da = dm._3
1187+ let cu = dm._4
1188+ let cQ = dm._5
1189+ let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1190+ if ((ey == ey))
1191+ then {
1192+ let gW = eR(-(gV), -(cP), 0)
1193+ let gi = gW._1
1194+ let eI = gW._2
1195+ let gj = eV(eQ, eI)
1196+ if ((gj == gj))
1197+ then (cQ ++ gi)
1198+ else throw("Strict value is not equal to itself.")
1199+ }
11861200 else throw("Strict value is not equal to itself.")
11871201 }
11881202 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
7676 func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7777
7878
7979 func P (Q,R,S) = fraction(Q, R, S)
8080
8181
8282 func T (L) = if ((d > L))
8383 then -(L)
8484 else L
8585
8686
8787 func U (L) = if ((d > L))
8888 then -(L)
8989 else L
9090
9191
9292 func V () = "%s__factoryContract"
9393
9494
9595 func W () = "%s__managerPublicKey"
9696
9797
9898 func X () = "%s__pendingManagerPublicKey"
9999
100100
101101 func Y () = "%s%s__price__last"
102102
103103
104104 func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
105105
106106
107107 func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
108108
109109
110110 func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
111111
112112
113113 func ag () = "%s__amountAsset"
114114
115115
116116 func ah () = "%s__priceAsset"
117117
118118
119119 func ai () = "%s__amp"
120120
121121
122122 func aj () = "%s__addonAddr"
123123
124124
125125 let ak = "%s__fee"
126126
127127 let al = valueOrElse(getInteger(this, ak), G)
128128
129129 let am = makeString(["%s", "dLp"], n)
130130
131131 let an = makeString(["%s", "dLpRefreshedHeight"], n)
132132
133133 let ao = makeString(["%s", "refreshDLpDelay"], n)
134134
135135 let ap = 1
136136
137137 let aq = valueOrElse(getInteger(this, ao), ap)
138138
139139 func ar () = "%s__factoryConfig"
140140
141141
142142 func as () = "%s%s__matcher__publicKey"
143143
144144
145145 func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
146146
147147
148148 func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
149149
150150
151151 func ay () = "%s__shutdown"
152152
153153
154154 func az () = "%s__allowedLpStableScriptHash"
155155
156156
157157 func aA () = "%s__feeCollectorAddress"
158158
159159
160160 func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161161
162162
163163 func aF (L) = {
164164 let aG = L
165165 if ($isInstanceOf(aG, "String"))
166166 then {
167167 let aH = aG
168168 aH
169169 }
170170 else throw("fail cast to String")
171171 }
172172
173173
174174 func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
175175
176176
177177 func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
178178
179179
180180 func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
181181
182182
183183 func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
184184
185185
186186 let aP = addressFromStringValue(aI(this, V()))
187187
188188 let aQ = aI(this, ai())
189189
190190 func aR () = valueOrElse(getBoolean(aP, ay()), false)
191191
192192
193193 func aS () = fromBase58String(aI(aP, as()))
194194
195195
196196 let aT = addressFromStringValue(aI(aP, aA()))
197197
198198 func aU () = {
199199 let aV = aI(this, ag())
200200 let aW = aI(this, ah())
201201 let aX = aL(aP, aw(aW))
202202 let au = aL(aP, aw(aV))
203203 split(aI(aP, at(toString(au), toString(aX))), n)
204204 }
205205
206206
207207 func aY (aZ) = if ((aZ == k))
208208 then unit
209209 else fromBase58String(aZ)
210210
211211
212212 func ba (aZ) = if ((aZ == unit))
213213 then k
214214 else toBase58String(value(aZ))
215215
216216
217217 func bb (bc) = $Tuple7(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]))
218218
219219
220220 let bd = bb(aU())
221221
222222 let be = bd
223223
224224 let bf = be._1
225225
226226 let bg = be._2
227227
228228 let bh = be._3
229229
230230 let bi = be._4
231231
232232 let bj = be._5
233233
234234 let bk = be._6
235235
236236 let bl = be._7
237237
238238 func bm () = split(aI(aP, ar()), n)
239239
240240
241241 let bn = bm()
242242
243243 let bo = valueOrErrorMessage(addressFromString(bn[C]), "Invalid staking contract address")
244244
245245 let bp = valueOrErrorMessage(addressFromString(bn[E]), "Invalid slipage contract address")
246246
247247 let bq = valueOrErrorMessage(addressFromString(bn[F]), "Invalid gwx contract address")
248248
249249 let br = valueOrErrorMessage(addressFromString(bn[D]), "Invalid gwx contract address")
250250
251251 func bs (bt,bu,bv,bw,bx,by,bz,bA,bB,bC) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC)], n)
252252
253253
254254 func bD (bE,bF,bG,bw,bz,bA) = makeString(["%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bw), toString(bz), toString(bA)], n)
255255
256256
257257 func bH (bI) = if ((bI == "WAVES"))
258258 then wavesBalance(this).available
259259 else assetBalance(this, fromBase58String(bI))
260260
261261
262262 func bJ (bK,bL) = fraction(bK, c, bL)
263263
264264
265265 func bM (bN,bO,bP) = {
266266 let bQ = fraction((bN - bO), b, bO)
267267 let bR = ((bP - T(bQ)) > d)
268268 if (!(bR))
269269 then throw(("Big slpg: " + toString(bQ)))
270270 else $Tuple2(bR, min([bN, bO]))
271271 }
272272
273273
274274 func bS (bT,bU,bV) = {
275275 let bQ = fraction(bU, b, bT)
276276 let bW = (bV > bQ)
277277 if (if (bW)
278278 then true
279279 else (bU > bT))
280280 then throw(((((((toString(bU) + " ") + toString(bT)) + " ") + toString(bQ)) + " ") + toString(bV)))
281281 else bW
282282 }
283283
284284
285285 func bX (bY,bZ,ca,cb) = {
286286 let cc = H(ca, bY)
287287 let cd = H(cb, bZ)
288288 bJ(cd, cc)
289289 }
290290
291291
292292 func ce (ca,cb,cf) = {
293293 let cg = aU()
294294 let ch = parseIntValue(cg[y])
295295 let ci = parseIntValue(cg[z])
296296 let cj = bX(ch, ci, ca, cb)
297297 let bL = H(ca, ch)
298298 let bK = H(cb, ci)
299299 let ck = H(cf, a)
300300 let cl = bJ(bL, ck)
301301 let cm = bJ(bK, ck)
302302 [cj, cl, cm]
303303 }
304304
305305
306306 func cn (ca,cb,cf) = {
307307 let co = ce(ca, cb, cf)
308308 [K(co[0], a), K(co[1], a), K(co[2], a)]
309309 }
310310
311311
312312 func cp (cq) = {
313313 let cr = fraction(cq, al, a)
314314 $Tuple2((cq - cr), cr)
315315 }
316316
317317
318318 func cs (ct,cu,cv,cw) = {
319319 let cg = aU()
320320 let cx = cg[v]
321321 let cy = cg[w]
322322 let cz = cg[x]
323323 let cA = parseIntValue(cg[y])
324324 let cB = parseIntValue(cg[z])
325325 let cC = cg[u]
326326 let cD = valueOrErrorMessage(assetInfo(fromBase58String(cx)), "Wrong LP id").quantity
327327 if ((cx != cu))
328328 then throw("Wrong pmt asset")
329329 else {
330330 let cE = bH(cy)
331331 let cF = H(cE, cA)
332332 let cG = bH(cz)
333333 let cH = H(cG, cB)
334334 let cI = bJ(cH, cF)
335335 let cJ = K(cI, a)
336336 let cK = H(cv, a)
337337 let cL = H(cD, a)
338338 let cM = fraction(cF, cK, cL)
339339 let cN = fraction(cH, cK, cL)
340340 let cO = N(cM, cA, FLOOR)
341341 let cP = N(cN, cB, FLOOR)
342342 let cQ = if ((ct == ""))
343343 then nil
344344 else [ScriptTransfer(cw, cO, if ((cy == "WAVES"))
345345 then unit
346346 else fromBase58String(cy)), ScriptTransfer(cw, cP, if ((cz == "WAVES"))
347347 then unit
348348 else fromBase58String(cz)), StringEntry(af(toString(cw), ct), bD(cO, cP, cv, cJ, height, lastBlock.timestamp)), IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ)]
349349 $Tuple10(cO, cP, cy, cz, cE, cG, cD, cI, cC, cQ)
350350 }
351351 }
352352
353353
354354 func cR (ct,bP,cS,cT,cU,cV,cw,cW,cX,cY,cZ,da,db) = {
355355 let cg = aU()
356356 let cx = fromBase58String(cg[v])
357357 let dc = cg[w]
358358 let dd = cg[x]
359359 let de = cg[A]
360360 let df = cg[B]
361361 let dg = parseIntValue(cg[y])
362362 let dh = parseIntValue(cg[z])
363363 let cC = cg[u]
364364 let di = valueOrErrorMessage(assetInfo(cx), "Wr lp as").quantity
365365 let cE = if (cW)
366366 then bH(dc)
367367 else if (if (cY)
368368 then (db == dc)
369369 else false)
370370 then (bH(dc) - da)
371371 else if (cY)
372372 then bH(dc)
373373 else (bH(dc) - cS)
374374 let cG = if (cW)
375375 then bH(dd)
376376 else if (if (cY)
377377 then (db == dd)
378378 else false)
379379 then (bH(dd) - da)
380380 else if (cY)
381381 then bH(dd)
382382 else (bH(dd) - cU)
383383 let dj = H(cS, dg)
384384 let dk = H(cU, dh)
385385 let dl = bJ(dk, dj)
386386 let cF = H(cE, dg)
387387 let cH = H(cG, dh)
388388 let dm = if ((di == 0))
389389 then {
390390 let cI = d
391391 let dn = d
392392 let ck = pow((dj * dk), 0, toBigInt(5), 1, 0, DOWN)
393393 $Tuple5(K(ck, a), K(dj, dg), K(dk, dh), bJ((cH + dk), (cF + dj)), dn)
394394 }
395395 else {
396396 let cI = bJ(cH, cF)
397397 let do = fraction(T((cI - dl)), c, cI)
398398 let dn = H(bP, a)
399399 if (if (if (cZ)
400400 then (cI != d)
401401 else false)
402402 then (do > dn)
403403 else false)
404404 then throw(((("Price slippage " + toString(do)) + " > ") + toString(dn)))
405405 else {
406406 let dp = H(di, a)
407407 let dq = fraction(dj, cI, c)
408408 let dr = fraction(dk, c, cI)
409409 let ds = if ((dq > dk))
410410 then $Tuple2(dr, dk)
411411 else $Tuple2(dj, dq)
412412 let dt = ds._1
413413 let du = ds._2
414414 let ck = fraction(dp, du, cH)
415415 $Tuple5(N(ck, a, FLOOR), N(dt, dg, CEILING), N(du, dh, CEILING), cI, dn)
416416 }
417417 }
418418 let dv = dm._1
419419 let dw = dm._2
420420 let dx = dm._3
421421 let cJ = K(dm._4, a)
422422 let dy = K(dm._5, a)
423423 if ((0 >= dv))
424424 then throw("LP <= 0")
425425 else {
426426 let dz = if (!(cX))
427427 then 0
428428 else dv
429429 let dA = (cS - dw)
430430 let dB = (cU - dx)
431431 let dC = if (if (cY)
432432 then (db == dc)
433433 else false)
434434 then $Tuple2(da, 0)
435435 else if (if (cY)
436436 then (db == dd)
437437 else false)
438438 then $Tuple2(0, da)
439439 else $Tuple2(dw, dx)
440440 let dD = dC._1
441441 let dE = dC._2
442442 let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ct), bs(dD, dE, dz, cJ, bP, dy, height, lastBlock.timestamp, dA, dB))]
443443 $Tuple13(dv, dz, cJ, cE, cG, di, cx, cC, dF, dA, dB, cT, cV)
444444 }
445445 }
446446
447447
448448 func dG (dH) = {
449449 let dI = dH[0]
450450 let dJ = dH[1]
451451 let dK = (dI + dJ)
452452 if ((dK == e))
453453 then e
454454 else {
455455 let dL = parseIntValue(aQ)
456456 let dM = (dL * 2)
457457 let co = fraction(dI, dJ, f)
458458 let dN = fraction(co, i, f)
459459 let dO = fraction(toBigInt(dM), dK, f)
460460 let dP = toBigInt((dM - 1))
461461 func dQ (dR) = {
462462 let dS = fraction(dR, dR, f)
463463 let dT = fraction(dS, dR, f)
464464 let dU = fraction(dT, f, dN)
465465 fraction((dO + fraction(dU, g, f)), dR, (fraction(dP, dR, f) + fraction(h, dU, f)), CEILING)
466466 }
467467
468468 func dV (dW,dX) = if (dW._2)
469469 then dW
470470 else {
471471 let dR = dW._1
472472 let dY = dQ(dR)
473473 let dZ = toInt((dY - value(dR)))
474474 let ea = if ((0 > dZ))
475475 then -(dZ)
476476 else dZ
477477 if ((1 >= ea))
478478 then $Tuple2(dY, true)
479479 else $Tuple2(dY, false)
480480 }
481481
482482 let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
483483 let ec = {
484484 let ed = eb
485485 let ee = size(ed)
486486 let ef = $Tuple2(dK, false)
487487 func eg (eh,ei) = if ((ei >= ee))
488488 then eh
489489 else dV(eh, ed[ei])
490490
491491 func ej (eh,ei) = if ((ei >= ee))
492492 then eh
493493 else throw("List size exceeds 15")
494494
495495 ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
496496 }
497497 let dR = ec._1
498498 let ek = ec._2
499499 if (ek)
500500 then dR
501501 else throw(("D calculation error, D = " + toString(dR)))
502502 }
503503 }
504504
505505
506506 func el (dH) = {
507507 let em = g
508508 let dI = dH[0]
509509 let dJ = dH[1]
510510 let en = parseBigIntValue(l)
511511 let dL = (parseBigIntValue(aQ) * en)
512512 let dK = (dI + dJ)
513513 if ((dK == e))
514514 then e
515515 else {
516516 let dM = (dL * em)
517517 let dN = (((dI * dJ) * em) * em)
518518 let eo = ((dM * dK) / en)
519519 let ep = (dM - en)
520520 let eq = (em + f)
521521 func dV (dW,er) = {
522522 let es = dW
523523 let dR = es._1
524524 let ek = es._2
525525 if ((ek != unit))
526526 then dW
527527 else {
528528 let dU = (((dR * dR) * dR) / dN)
529529 let dY = (((eo + (dU * em)) * dR) / (((ep * dR) / en) + (eq * dU)))
530530 let ea = U((dY - value(dR)))
531531 if ((f >= ea))
532532 then $Tuple2(dY, er)
533533 else $Tuple2(dY, unit)
534534 }
535535 }
536536
537537 let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
538538 let et = {
539539 let ed = eb
540540 let ee = size(ed)
541541 let ef = $Tuple2(dK, unit)
542542 func eg (eh,ei) = if ((ei >= ee))
543543 then eh
544544 else dV(eh, ed[ei])
545545
546546 func ej (eh,ei) = if ((ei >= ee))
547547 then eh
548548 else throw("List size exceeds 15")
549549
550550 ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
551551 }
552552 let dR = et._1
553553 let ek = et._2
554554 if ((ek != unit))
555555 then dR
556556 else throw(("D calculation error, D = " + toString(dR)))
557557 }
558558 }
559559
560560
561561 func eu (dH,dX,ev) = {
562562 let em = g
563563 let ew = dH[if ((dX == 0))
564564 then 1
565565 else 0]
566566 let en = parseBigIntValue(l)
567567 let dL = (parseBigIntValue(aQ) * en)
568568 let dK = ew
569569 let dM = (dL * em)
570570 let ex = (((((ev * ev) / (ew * em)) * ev) * en) / (dM * em))
571571 let ey = ((dK + ((ev * en) / dM)) - ev)
572572 func dV (dW,er) = {
573573 let ez = dW
574574 let eA = ez._1
575575 let ek = ez._2
576576 if ((ek != unit))
577577 then dW
578578 else {
579579 let eB = (((eA * eA) + ex) / ((g * eA) + ey))
580580 let eC = U((eB - value(eA)))
581581 if ((f >= eC))
582582 then $Tuple2(eB, er)
583583 else $Tuple2(eB, unit)
584584 }
585585 }
586586
587587 let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
588588 let eD = {
589589 let ed = eb
590590 let ee = size(ed)
591591 let ef = $Tuple2(ev, unit)
592592 func eg (eh,ei) = if ((ei >= ee))
593593 then eh
594594 else dV(eh, ed[ei])
595595
596596 func ej (eh,ei) = if ((ei >= ee))
597597 then eh
598598 else throw("List size exceeds 15")
599599
600600 ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
601601 }
602602 let eA = eD._1
603603 let ek = eD._2
604604 if ((ek != unit))
605605 then eA
606606 else throw(("Y calculation error, Y = " + toString(eA)))
607607 }
608608
609609
610610 func eE (eF,eG,eH) = {
611611 let eI = fraction(dG([eF, eG]), c, eH)
612612 if ((eH == e))
613613 then e
614614 else eI
615615 }
616616
617617
618618 func eJ (eK,eL,eM) = {
619619 let eN = (toBigInt(bH(ba(bi))) - eK)
620620 let eO = (toBigInt(bH(ba(bj))) - eL)
621621 let eP = (toBigInt(value(assetInfo(bh)).quantity) - eM)
622622 let eQ = eE(eN, eO, eP)
623623 eQ
624624 }
625625
626626
627627 func eR (eS,eT,eM) = {
628628 let eN = (bH(ba(bi)) + eS)
629629 let eO = (bH(ba(bj)) + eT)
630630 let eP = (value(assetInfo(bh)).quantity + eM)
631631 let eI = eE(toBigInt(eN), toBigInt(eO), toBigInt(eP))
632632 let eU = [IntegerEntry(an, height), StringEntry(am, toString(eI))]
633633 $Tuple2(eU, eI)
634634 }
635635
636636
637637 func eV (eW,eI) = if ((eI >= eW))
638638 then true
639639 else aM("updated DLp lower than current DLp")
640640
641641
642642 func eX (eY) = {
643643 let eZ = eY.amount
644644 let fa = fraction(eY.amount, eY.price, a, FLOOR)
645645 let fb = if ((eY.orderType == Buy))
646646 then $Tuple2(eZ, -(fa))
647647 else $Tuple2(-(eZ), fa)
648648 let eS = fb._1
649649 let eT = fb._2
650650 if (if (if (aR())
651651 then true
652652 else (bg == r))
653653 then true
654654 else (bg == s))
655655 then throw("Admin blocked")
656656 else if (if ((eY.assetPair.amountAsset != bi))
657657 then true
658658 else (eY.assetPair.priceAsset != bj))
659659 then throw("Wr assets")
660660 else {
661661 let fc = parseBigIntValue(getStringValue(this, am))
662662 let fd = eR(eS, eT, 0)
663663 let fe = fd._1
664664 let ff = fd._2
665665 let fg = (ff >= fc)
666666 fg
667667 }
668668 }
669669
670670
671671 func fh (dX) = if ((size(dX.payments) != 1))
672672 then throw("1 pmnt exp")
673673 else {
674674 let fi = value(dX.payments[0])
675675 let cu = value(fi.assetId)
676676 let da = fi.amount
677677 let dm = cs(toBase58String(dX.transactionId), toBase58String(cu), da, dX.caller)
678678 let cO = dm._1
679679 let cP = dm._2
680680 let cC = parseIntValue(dm._9)
681681 let cQ = dm._10
682682 if (if (aR())
683683 then true
684684 else (cC == s))
685685 then throw(("Admin blocked: " + toString(cC)))
686686 else $Tuple5(cO, cP, da, cu, cQ)
687687 }
688688
689689
690690 func fj (fk,ae,fl,fm,bP,cX,cY,cZ,da,db) = {
691691 let dm = cR(ae, bP, value(fl).amount, value(fl).assetId, value(fm).amount, value(fm).assetId, fk, (ae == ""), cX, cY, cZ, da, db)
692692 let cC = parseIntValue(dm._8)
693693 if (if (if (aR())
694694 then true
695695 else (cC == q))
696696 then true
697697 else (cC == s))
698698 then throw(("Blocked:" + toString(cC)))
699699 else dm
700700 }
701701
702702
703703 func fn (fo,cu,cw,ae,fp) = {
704704 let bc = aU()
705705 let cy = bc[w]
706706 let cz = bc[x]
707707 let cx = bc[v]
708708 let dg = parseIntValue(bc[y])
709709 let dh = parseIntValue(bc[z])
710710 let eP = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
711711 let fq = if ((eP > e))
712712 then true
713713 else throw("initial deposit requires all coins")
714714 if ((fq == fq))
715715 then {
716716 let cE = bH(cy)
717717 let cG = bH(cz)
718718 let fr = if ((ae == ""))
719719 then $Tuple2(cE, cG)
720720 else if ((cu == cy))
721721 then if ((fo > cE))
722722 then throw("invalid payment amount")
723723 else $Tuple2((cE - fo), cG)
724724 else if ((cu == cz))
725725 then if ((fo > cG))
726726 then throw("invalid payment amount")
727727 else $Tuple2(cE, (cG - fo))
728728 else throw("wrong pmtAssetId")
729729 let fs = fr._1
730730 let ft = fr._2
731731 let fu = if ((cu == cy))
732732 then $Tuple2(fo, 0)
733733 else if ((cu == cz))
734734 then $Tuple2(0, fo)
735735 else throw("invalid payment")
736736 let fv = fu._1
737737 let fw = fu._2
738738 let fx = if (fp)
739739 then $Tuple3(cp(fv)._1, cp(fw)._1, cp(fo)._2)
740740 else $Tuple3(fv, fw, 0)
741741 let fy = fx._1
742742 let fz = fx._2
743743 let cr = fx._3
744744 let fA = (fs + fy)
745745 let fB = (ft + fz)
746746 let bU = dG([toBigInt(fs), toBigInt(ft)])
747747 let bT = dG([toBigInt(fA), toBigInt(fB)])
748748 let fC = if ((bT > bU))
749749 then true
750750 else throw()
751751 if ((fC == fC))
752752 then {
753753 let fD = fraction(eP, (bT - bU), bU, FLOOR)
754754 let cJ = K(bJ(H(fB, dh), H(fA, dg)), a)
755755 let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ae), bs(fv, fw, toInt(fD), cJ, 0, 0, height, lastBlock.timestamp, 0, 0))]
756756 let fE = fraction(ft, a, fs)
757757 let fF = fraction(fo, a, (fE + a))
758758 let fG = (fo - fF)
759759 let fH = fraction(eP, toBigInt(fG), toBigInt(ft))
760760 let fI = toInt(fraction((fD - fH), b, fH))
761761 $Tuple4(toInt(fD), dF, cr, fI)
762762 }
763763 else throw("Strict value is not equal to itself.")
764764 }
765765 else throw("Strict value is not equal to itself.")
766766 }
767767
768768
769769 func fJ (fK,fL,fM,fk,fN,fO) = {
770770 let bc = aU()
771771 let cx = bc[v]
772772 let cy = bc[w]
773773 let cz = bc[x]
774774 let fP = parseIntValue(bc[y])
775775 let fQ = parseIntValue(bc[z])
776776 let fR = bc[u]
777777 let cw = if ((fk == br))
778778 then fN
779779 else fk
780780 let fi = value(fM[0])
781781 let cu = value(fi.assetId)
782782 let da = fi.amount
783- let eQ = eJ(e, e, e)
783+ let eQ = eJ(e, e, toBigInt(da))
784784 if ((eQ == eQ))
785785 then {
786786 let ct = toBase58String(fO)
787787 if ((cx != toBase58String(cu)))
788788 then throw("Wrong LP")
789789 else {
790790 let cE = bH(cy)
791791 let cG = bH(cz)
792792 let fS = {
793793 let fT = invoke(this, "getOneTknV2READONLY", [fK, da], nil)
794794 if ($isInstanceOf(fT, "(Int, Int)"))
795795 then fT
796796 else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
797797 }
798798 if ((fS == fS))
799799 then {
800800 let cr = fS._2
801801 let fU = fS._1
802802 let fV = if (if ((fL > 0))
803803 then (fL > fU)
804804 else false)
805805 then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
806806 else fU
807807 let fW = if ((fK == cy))
808808 then $Tuple4(fV, 0, ((cE - fV) - cr), cG)
809809 else if ((fK == cz))
810810 then $Tuple4(0, fV, cE, ((cG - fV) - cr))
811811 else throw("invalid out asset id")
812812 let fX = fW._1
813813 let fY = fW._2
814814 let fA = fW._3
815815 let fB = fW._4
816816 let fZ = bJ(H(fB, fQ), H(fA, fP))
817817 let ga = K(fZ, a)
818818 let gb = if ((fK == "WAVES"))
819819 then unit
820820 else fromBase58String(fK)
821821 let gc = if ((cr > 0))
822822 then [ScriptTransfer(aT, cr, gb)]
823823 else nil
824824 let cQ = ([ScriptTransfer(cw, fV, gb), StringEntry(af(toString(cw), ct), bD(fX, fY, da, ga, height, lastBlock.timestamp)), IntegerEntry(Y(), ga), IntegerEntry(Z(height, lastBlock.timestamp), ga)] ++ gc)
825825 if ((cQ == cQ))
826826 then {
827827 let gd = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
828828 if ((gd == gd))
829829 then {
830830 let ge = {
831831 let gf = if ((this == aT))
832832 then 0
833833 else cr
834834 let gg = if ((aY(fK) == bi))
835835 then true
836836 else false
837837 if (gg)
838838 then $Tuple2(-((fU + gf)), 0)
839839 else $Tuple2(0, -((fU + gf)))
840840 }
841841 let eS = ge._1
842842 let eT = ge._2
843843 let gh = eR(eS, eT, 0)
844844 let gi = gh._1
845845 let eI = gh._2
846846 let gj = eV(eQ, eI)
847847 if ((gj == gj))
848848 then $Tuple2((cQ ++ gi), fV)
849849 else throw("Strict value is not equal to itself.")
850850 }
851851 else throw("Strict value is not equal to itself.")
852852 }
853853 else throw("Strict value is not equal to itself.")
854854 }
855855 else throw("Strict value is not equal to itself.")
856856 }
857857 }
858858 else throw("Strict value is not equal to itself.")
859859 }
860860
861861
862862 func gk () = {
863863 let aG = getString(W())
864864 if ($isInstanceOf(aG, "String"))
865865 then {
866866 let dK = aG
867867 fromBase58String(dK)
868868 }
869869 else if ($isInstanceOf(aG, "Unit"))
870870 then unit
871871 else throw("Match error")
872872 }
873873
874874
875875 func gl () = {
876876 let aG = getString(X())
877877 if ($isInstanceOf(aG, "String"))
878878 then {
879879 let dK = aG
880880 fromBase58String(dK)
881881 }
882882 else if ($isInstanceOf(aG, "Unit"))
883883 then unit
884884 else throw("Match error")
885885 }
886886
887887
888888 let gm = throw("Permission denied")
889889
890890 func gn (dX) = {
891891 let aG = gk()
892892 if ($isInstanceOf(aG, "ByteVector"))
893893 then {
894894 let go = aG
895895 (dX.callerPublicKey == go)
896896 }
897897 else if ($isInstanceOf(aG, "Unit"))
898898 then (dX.caller == this)
899899 else throw("Match error")
900900 }
901901
902902
903903 func gp (dX) = {
904904 let aG = gk()
905905 if ($isInstanceOf(aG, "ByteVector"))
906906 then {
907907 let go = aG
908908 if ((dX.callerPublicKey == go))
909909 then true
910910 else gm
911911 }
912912 else if ($isInstanceOf(aG, "Unit"))
913913 then if ((dX.caller == this))
914914 then true
915915 else gm
916916 else throw("Match error")
917917 }
918918
919919
920920 @Callable(dX)
921921 func constructor (V) = {
922922 let ex = gp(dX)
923923 if ((ex == ex))
924924 then [StringEntry(V(), V)]
925925 else throw("Strict value is not equal to itself.")
926926 }
927927
928928
929929
930930 @Callable(dX)
931931 func setManager (gq) = {
932932 let ex = gp(dX)
933933 if ((ex == ex))
934934 then {
935935 let gr = fromBase58String(gq)
936936 if ((gr == gr))
937937 then [StringEntry(X(), gq)]
938938 else throw("Strict value is not equal to itself.")
939939 }
940940 else throw("Strict value is not equal to itself.")
941941 }
942942
943943
944944
945945 @Callable(dX)
946946 func confirmManager () = {
947947 let co = gl()
948948 let gs = if (isDefined(co))
949949 then true
950950 else throw("No pending manager")
951951 if ((gs == gs))
952952 then {
953953 let gt = if ((dX.callerPublicKey == value(co)))
954954 then true
955955 else throw("You are not pending manager")
956956 if ((gt == gt))
957957 then [StringEntry(W(), toBase58String(value(co))), DeleteEntry(X())]
958958 else throw("Strict value is not equal to itself.")
959959 }
960960 else throw("Strict value is not equal to itself.")
961961 }
962962
963963
964964
965965 @Callable(dX)
966966 func put (gu,gv) = {
967967 let gw = bm()
968968 let gx = valueOrErrorMessage(addressFromString(gw[C]), "Wr st addr")
969969 let gy = valueOrErrorMessage(addressFromString(gw[E]), "Wr sl addr")
970970 if ((0 > gu))
971971 then throw("Wrong slippage")
972972 else if ((size(dX.payments) != 2))
973973 then throw("2 pmnts expd")
974974 else {
975975 let gz = toBigInt(value(dX.payments[0]).amount)
976976 let gA = toBigInt(value(dX.payments[1]).amount)
977977 let eQ = eJ(gz, gA, toBigInt(0))
978978 if ((eQ == eQ))
979979 then {
980980 let gB = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gu, true, false, true, 0, "")
981981 let dz = gB._2
982982 let gC = gB._7
983983 let cQ = gB._9
984984 let dA = gB._10
985985 let dB = gB._11
986986 let cy = gB._12
987987 let cz = gB._13
988988 let dm = invoke(aP, "emit", [dz], nil)
989989 if ((dm == dm))
990990 then {
991991 let gD = {
992992 let aG = dm
993993 if ($isInstanceOf(aG, "Address"))
994994 then {
995995 let gE = aG
996996 invoke(gE, "emit", [dz], nil)
997997 }
998998 else unit
999999 }
10001000 if ((gD == gD))
10011001 then {
10021002 let gF = if ((dA > 0))
10031003 then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
10041004 else nil
10051005 if ((gF == gF))
10061006 then {
10071007 let gG = if ((dB > 0))
10081008 then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
10091009 else nil
10101010 if ((gG == gG))
10111011 then {
10121012 let gH = if (gv)
10131013 then {
10141014 let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
10151015 if ((gI == gI))
10161016 then nil
10171017 else throw("Strict value is not equal to itself.")
10181018 }
10191019 else [ScriptTransfer(dX.caller, dz, gC)]
10201020 let gJ = eR(0, 0, 0)
10211021 let gi = gJ._1
10221022 let eI = gJ._2
10231023 let gj = eV(eQ, eI)
10241024 if ((gj == gj))
10251025 then ((cQ ++ gH) ++ gi)
10261026 else throw("Strict value is not equal to itself.")
10271027 }
10281028 else throw("Strict value is not equal to itself.")
10291029 }
10301030 else throw("Strict value is not equal to itself.")
10311031 }
10321032 else throw("Strict value is not equal to itself.")
10331033 }
10341034 else throw("Strict value is not equal to itself.")
10351035 }
10361036 else throw("Strict value is not equal to itself.")
10371037 }
10381038 }
10391039
10401040
10411041
10421042 @Callable(dX)
10431043 func putOneTknV2 (fL,gv) = {
10441044 let gK = {
10451045 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10461046 if ($isInstanceOf(fT, "Boolean"))
10471047 then fT
10481048 else throw(($getType(fT) + " couldn't be cast to Boolean"))
10491049 }
10501050 let gL = if (if (if (aR())
10511051 then true
10521052 else (bg == q))
10531053 then true
10541054 else (bg == s))
10551055 then true
10561056 else gK
10571057 let gM = [if (if (!(gL))
10581058 then true
10591059 else gn(dX))
10601060 then true
10611061 else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
10621062 then true
10631063 else aM("exactly 1 payment are expected")]
10641064 if ((gM == gM))
10651065 then {
10661066 let bc = aU()
10671067 let cy = bc[w]
10681068 let cz = bc[x]
10691069 let cx = fromBase58String(bc[v])
10701070 let fP = parseIntValue(bc[y])
10711071 let fQ = parseIntValue(bc[z])
10721072 let cw = if ((dX.caller == this))
10731073 then dX.originCaller
10741074 else dX.caller
10751075 let fi = value(dX.payments[0])
10761076 let cu = toBase58String(value(fi.assetId))
10771077 let da = fi.amount
1078- let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1079- if ((gN == gN))
1078+ let eQ = if ((fi.assetId == bi))
1079+ then eJ(toBigInt(da), toBigInt(0), toBigInt(0))
1080+ else eJ(toBigInt(0), toBigInt(da), toBigInt(0))
1081+ if ((eQ == eQ))
10801082 then {
1081- let cr = gN._3
1082- let cQ = gN._2
1083- let gO = gN._1
1084- let dz = if (if ((fL > 0))
1085- then (fL > gO)
1086- else false)
1087- then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1088- else gO
1089- let gB = invoke(aP, "emit", [dz], nil)
1090- if ((gB == gB))
1083+ let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1084+ if ((gN == gN))
10911085 then {
1092- let gD = {
1093- let aG = gB
1094- if ($isInstanceOf(aG, "Address"))
1095- then {
1096- let gE = aG
1097- invoke(gE, "emit", [dz], nil)
1086+ let cr = gN._3
1087+ let cQ = gN._2
1088+ let gO = gN._1
1089+ let dz = if (if ((fL > 0))
1090+ then (fL > gO)
1091+ else false)
1092+ then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1093+ else gO
1094+ let gB = invoke(aP, "emit", [dz], nil)
1095+ if ((gB == gB))
1096+ then {
1097+ let gD = {
1098+ let aG = gB
1099+ if ($isInstanceOf(aG, "Address"))
1100+ then {
1101+ let gE = aG
1102+ invoke(gE, "emit", [dz], nil)
1103+ }
1104+ else unit
10981105 }
1099- else unit
1100- }
1101- if ((gD == gD))
1102- then {
1103- let gH = if (gv)
1106+ if ((gD == gD))
11041107 then {
1105- let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1106- if ((gI == gI))
1107- then nil
1108+ let gH = if (gv)
1109+ then {
1110+ let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1111+ if ((gI == gI))
1112+ then nil
1113+ else throw("Strict value is not equal to itself.")
1114+ }
1115+ else [ScriptTransfer(dX.caller, dz, cx)]
1116+ let gc = if ((cr > 0))
1117+ then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1118+ else nil
1119+ let gP = if ((this == aT))
1120+ then $Tuple2(0, 0)
1121+ else {
1122+ let gQ = if ((fi.assetId == bi))
1123+ then true
1124+ else false
1125+ if (gQ)
1126+ then $Tuple2(-(cr), 0)
1127+ else $Tuple2(0, -(cr))
1128+ }
1129+ let eS = gP._1
1130+ let eT = gP._2
1131+ let gR = eR(eS, eT, 0)
1132+ let gi = gR._1
1133+ let eI = gR._2
1134+ let gj = eV(eQ, eI)
1135+ if ((gj == gj))
1136+ then $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
11081137 else throw("Strict value is not equal to itself.")
11091138 }
1110- else [ScriptTransfer(dX.caller, dz, cx)]
1111- let gc = if ((cr > 0))
1112- then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1113- else nil
1114- let gP = if ((this == aT))
1115- then $Tuple2(0, 0)
1116- else {
1117- let gQ = if ((fi.assetId == bi))
1118- then true
1119- else false
1120- if (gQ)
1121- then $Tuple2(-(cr), 0)
1122- else $Tuple2(0, -(cr))
1123- }
1124- let eS = gP._1
1125- let eT = gP._2
1126- let gR = eR(eS, eT, 0)
1127- let gi = gR._1
1128- let eI = gR._2
1129- $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
1139+ else throw("Strict value is not equal to itself.")
11301140 }
11311141 else throw("Strict value is not equal to itself.")
11321142 }
11331143 else throw("Strict value is not equal to itself.")
11341144 }
11351145 else throw("Strict value is not equal to itself.")
11361146 }
11371147 else throw("Strict value is not equal to itself.")
11381148 }
11391149
11401150
11411151
11421152 @Callable(dX)
11431153 func putForFree (gS) = if ((0 > gS))
11441154 then throw("Wrong slpg")
11451155 else if ((size(dX.payments) != 2))
11461156 then throw("2 pmnts expd")
11471157 else {
11481158 let gT = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gS, false, false, true, 0, "")
11491159 let cQ = gT._9
11501160 let gz = toBigInt(value(dX.payments[0]).amount)
11511161 let gA = toBigInt(value(dX.payments[1]).amount)
11521162 let eQ = eJ(gz, gA, toBigInt(0))
11531163 if ((eQ == eQ))
11541164 then {
11551165 let gU = eR(0, 0, 0)
11561166 let gi = gU._1
11571167 let eI = gU._2
11581168 let gj = eV(eQ, eI)
11591169 if ((gj == gj))
11601170 then (cQ ++ gi)
11611171 else throw("Strict value is not equal to itself.")
11621172 }
11631173 else throw("Strict value is not equal to itself.")
11641174 }
11651175
11661176
11671177
11681178 @Callable(dX)
11691179 func get () = {
1170- let dm = fh(dX)
1171- let gV = dm._1
1172- let cP = dm._2
1173- let da = dm._3
1174- let cu = dm._4
1175- let cQ = dm._5
1176- let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1177- if ((ey == ey))
1180+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(value(dX.payments[0]).amount))
1181+ if ((eQ == eQ))
11781182 then {
1179- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1180- let gW = eR(-(gV), -(cP), 0)
1181- let gi = gW._1
1182- let eI = gW._2
1183- let gj = eV(eQ, eI)
1184- if ((gj == gj))
1185- then (cQ ++ gi)
1183+ let dm = fh(dX)
1184+ let gV = dm._1
1185+ let cP = dm._2
1186+ let da = dm._3
1187+ let cu = dm._4
1188+ let cQ = dm._5
1189+ let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1190+ if ((ey == ey))
1191+ then {
1192+ let gW = eR(-(gV), -(cP), 0)
1193+ let gi = gW._1
1194+ let eI = gW._2
1195+ let gj = eV(eQ, eI)
1196+ if ((gj == gj))
1197+ then (cQ ++ gi)
1198+ else throw("Strict value is not equal to itself.")
1199+ }
11861200 else throw("Strict value is not equal to itself.")
11871201 }
11881202 else throw("Strict value is not equal to itself.")
11891203 }
11901204
11911205
11921206
11931207 @Callable(dX)
11941208 func getOneTknV2 (fK,fL) = {
11951209 let gK = {
11961210 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11971211 if ($isInstanceOf(fT, "Boolean"))
11981212 then fT
11991213 else throw(($getType(fT) + " couldn't be cast to Boolean"))
12001214 }
12011215 let gX = if (if (aR())
12021216 then true
12031217 else (bg == s))
12041218 then true
12051219 else gK
12061220 let gM = [if (if (!(gX))
12071221 then true
12081222 else gn(dX))
12091223 then true
12101224 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
12111225 then true
12121226 else aM("exactly 1 payment are expected")]
12131227 if ((gM == gM))
12141228 then {
12151229 let gY = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
12161230 let cQ = gY._1
12171231 let fV = gY._2
12181232 $Tuple2(cQ, fV)
12191233 }
12201234 else throw("Strict value is not equal to itself.")
12211235 }
12221236
12231237
12241238
12251239 @Callable(dX)
12261240 func refreshDLp () = {
12271241 let gZ = valueOrElse(getInteger(an), 0)
12281242 let ha = if (((height - gZ) >= aq))
12291243 then unit
12301244 else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
12311245 if ((ha == ha))
12321246 then {
12331247 let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
12341248 let hb = eR(0, 0, 0)
12351249 let hc = hb._1
12361250 let eI = hb._2
12371251 let eU = if ((fc != eI))
12381252 then hc
12391253 else aM("nothing to refresh")
12401254 $Tuple2(eU, toString(eI))
12411255 }
12421256 else throw("Strict value is not equal to itself.")
12431257 }
12441258
12451259
12461260
12471261 @Callable(dX)
12481262 func getOneTknV2READONLY (fK,hd) = {
12491263 let bc = aU()
12501264 let cy = bc[w]
12511265 let cz = bc[x]
12521266 let cx = bc[v]
12531267 let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
12541268 let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
12551269 let bU = dG(dH)
12561270 let bT = (bU - fraction(toBigInt(hd), bU, eH))
12571271 let he = if ((fK == cy))
12581272 then 0
12591273 else if ((fK == cz))
12601274 then 1
12611275 else throw("invalid out asset id")
12621276 let hf = eu(dH, he, bT)
12631277 let hg = (dH[he] - hf)
12641278 let hh = max([0, toInt((hg - f))])
12651279 let hi = cp(hh)
12661280 let fU = hi._1
12671281 let cr = hi._2
12681282 $Tuple2(nil, $Tuple2(fU, cr))
12691283 }
12701284
12711285
12721286
12731287 @Callable(dX)
12741288 func getOneTknV2WithBonusREADONLY (fK,hd) = {
12751289 let bc = aU()
12761290 let cy = bc[w]
12771291 let cz = bc[x]
12781292 let cx = bc[v]
12791293 let cE = bH(cy)
12801294 let cG = bH(cz)
12811295 let hj = {
12821296 let fT = invoke(this, "getOneTknV2READONLY", [fK, hd], nil)
12831297 if ($isInstanceOf(fT, "(Int, Int)"))
12841298 then fT
12851299 else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
12861300 }
12871301 let fU = hj._1
12881302 let cr = hj._2
12891303 let dm = cs("", cx, hd, this)
12901304 let cO = dm._1
12911305 let cP = dm._2
12921306 let hk = (cO + cP)
12931307 let fI = if ((hk == 0))
12941308 then if ((fU == 0))
12951309 then 0
12961310 else throw("bonus calculation error")
12971311 else fraction((fU - hk), a, hk)
12981312 $Tuple2(nil, $Tuple3(fU, cr, fI))
12991313 }
13001314
13011315
13021316
13031317 @Callable(dX)
13041318 func getNoLess (hl,hm) = {
13051319 let dm = fh(dX)
13061320 let cO = dm._1
13071321 let cP = dm._2
13081322 let da = dm._3
13091323 let cu = dm._4
13101324 let cQ = dm._5
13111325 if ((hl > cO))
13121326 then throw(((("Failed: " + toString(cO)) + " < ") + toString(hl)))
13131327 else if ((hm > cP))
13141328 then throw(((("Failed: " + toString(cP)) + " < ") + toString(hm)))
13151329 else {
13161330 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
13171331 let hn = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
13181332 if ((hn == hn))
13191333 then {
13201334 let ho = eR(-(cO), -(cP), 0)
13211335 let gi = ho._1
13221336 let eI = ho._2
13231337 let gj = eV(eQ, eI)
13241338 if ((gj == gj))
13251339 then (cQ ++ gi)
13261340 else throw("Strict value is not equal to itself.")
13271341 }
13281342 else throw("Strict value is not equal to itself.")
13291343 }
13301344 }
13311345
13321346
13331347
13341348 @Callable(dX)
13351349 func unstakeAndGet (cq) = {
13361350 let hp = if ((size(dX.payments) != 0))
13371351 then throw("No pmnts expd")
13381352 else true
13391353 if ((hp == hp))
13401354 then {
13411355 let cg = aU()
13421356 let hq = bm()
13431357 let gC = fromBase58String(cg[v])
13441358 let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
13451359 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
13461360 let hs = invoke(hr, "unstake", [toBase58String(gC), cq], nil)
13471361 if ((hs == hs))
13481362 then {
13491363 let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
13501364 let cO = dm._1
13511365 let cP = dm._2
13521366 let cC = parseIntValue(dm._9)
13531367 let cQ = dm._10
13541368 let ht = if (if (aR())
13551369 then true
13561370 else (cC == s))
13571371 then throw(("Blocked: " + toString(cC)))
13581372 else true
13591373 if ((ht == ht))
13601374 then {
13611375 let hu = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
13621376 if ((hu == hu))
13631377 then {
13641378 let hv = eR(-(cO), -(cP), 0)
13651379 let gi = hv._1
13661380 let eI = hv._2
13671381 let gj = eV(eQ, eI)
13681382 if ((gj == gj))
13691383 then (cQ ++ gi)
13701384 else throw("Strict value is not equal to itself.")
13711385 }
13721386 else throw("Strict value is not equal to itself.")
13731387 }
13741388 else throw("Strict value is not equal to itself.")
13751389 }
13761390 else throw("Strict value is not equal to itself.")
13771391 }
13781392 else throw("Strict value is not equal to itself.")
13791393 }
13801394
13811395
13821396
13831397 @Callable(dX)
13841398 func unstakeAndGetNoLess (hw,hx,hm) = {
13851399 let gX = if (aR())
13861400 then true
13871401 else (bg == s)
13881402 let gM = [if (!(gX))
13891403 then true
13901404 else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
13911405 then true
13921406 else throw("no payments are expected")]
13931407 if ((gM == gM))
13941408 then {
13951409 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
13961410 let hs = invoke(bo, "unstake", [toBase58String(bh), hw], nil)
13971411 if ((hs == hs))
13981412 then {
13991413 let hy = cs(toBase58String(dX.transactionId), toBase58String(bh), hw, dX.caller)
14001414 let cO = hy._1
14011415 let cP = hy._2
14021416 let cQ = hy._10
14031417 let hz = [if ((cO >= hx))
14041418 then true
14051419 else throw(makeString(["amount asset amount to receive is less than ", toString(hx)], "")), if ((cP >= hm))
14061420 then true
14071421 else throw(makeString(["price asset amount to receive is less than ", toString(hm)], ""))]
14081422 if ((hz == hz))
14091423 then {
14101424 let hn = invoke(aP, "burn", [hw], [AttachedPayment(bh, hw)])
14111425 if ((hn == hn))
14121426 then {
14131427 let hA = eR(-(cO), -(cP), 0)
14141428 let gi = hA._1
14151429 let eI = hA._2
14161430 let gj = eV(eQ, eI)
14171431 if ((gj == gj))
14181432 then (cQ ++ gi)
14191433 else throw("Strict value is not equal to itself.")
14201434 }
14211435 else throw("Strict value is not equal to itself.")
14221436 }
14231437 else throw("Strict value is not equal to itself.")
14241438 }
14251439 else throw("Strict value is not equal to itself.")
14261440 }
14271441 else throw("Strict value is not equal to itself.")
14281442 }
14291443
14301444
14311445
14321446 @Callable(dX)
14331447 func unstakeAndGetOneTknV2 (hw,fK,fL) = {
14341448 let gK = {
14351449 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14361450 if ($isInstanceOf(fT, "Boolean"))
14371451 then fT
14381452 else throw(($getType(fT) + " couldn't be cast to Boolean"))
14391453 }
14401454 let gX = if (if (aR())
14411455 then true
14421456 else (bg == s))
14431457 then true
14441458 else gK
14451459 let gM = [if (if (!(gX))
14461460 then true
14471461 else gn(dX))
14481462 then true
14491463 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14501464 then true
14511465 else aM("no payments are expected")]
14521466 if ((gM == gM))
14531467 then {
14541468 let cg = aU()
14551469 let hq = bm()
14561470 let gC = fromBase58String(cg[v])
14571471 let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
14581472 let hs = invoke(hr, "unstake", [toBase58String(gC), hw], nil)
14591473 if ((hs == hs))
14601474 then {
14611475 let hB = fJ(fK, fL, [AttachedPayment(gC, hw)], dX.caller, dX.originCaller, dX.transactionId)
14621476 let cQ = hB._1
14631477 let fV = hB._2
14641478 $Tuple2(cQ, fV)
14651479 }
14661480 else throw("Strict value is not equal to itself.")
14671481 }
14681482 else throw("Strict value is not equal to itself.")
14691483 }
14701484
14711485
14721486
14731487 @Callable(dX)
14741488 func putOneTknV2WithBonusREADONLY (hC,hD) = {
14751489 let bc = aU()
14761490 let cy = bc[w]
14771491 let cz = bc[x]
14781492 let cx = bc[v]
14791493 let hE = fn(hC, hD, "", "", true)
14801494 let fD = hE._1
14811495 let cQ = hE._2
14821496 let cr = hE._3
14831497 let fI = hE._4
14841498 $Tuple2(nil, $Tuple3(fD, cr, fI))
14851499 }
14861500
14871501
14881502
14891503 @Callable(dX)
14901504 func putOneTknV2WithoutTakeFeeREADONLY (hC,hD) = {
14911505 let bc = aU()
14921506 let cy = bc[w]
14931507 let cz = bc[x]
14941508 let cx = bc[v]
14951509 let hF = fn(hC, hD, "", "", false)
14961510 let fD = hF._1
14971511 let cQ = hF._2
14981512 let cr = hF._3
14991513 let fI = hF._4
15001514 $Tuple2(nil, $Tuple3(fD, cr, fI))
15011515 }
15021516
15031517
15041518
15051519 @Callable(dX)
15061520 func activate (hG,hH) = if ((toString(dX.caller) != toString(aP)))
15071521 then throw("denied")
15081522 else $Tuple2([StringEntry(ag(), hG), StringEntry(ah(), hH)], "success")
15091523
15101524
15111525
15121526 @Callable(dX)
15131527 func setS (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
15141528 then gm
15151529 else [StringEntry(hI, ht)]
15161530
15171531
15181532
15191533 @Callable(dX)
15201534 func setI (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
15211535 then gm
15221536 else [IntegerEntry(hI, ht)]
15231537
15241538
15251539
15261540 @Callable(dX)
15271541 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
15281542
15291543
15301544
15311545 @Callable(dX)
15321546 func getAccBalanceWrapperREADONLY (bI) = $Tuple2(nil, bH(bI))
15331547
15341548
15351549
15361550 @Callable(dX)
15371551 func calcPricesWrapperREADONLY (ca,cb,cf) = {
15381552 let hJ = ce(ca, cb, cf)
15391553 $Tuple2(nil, [toString(hJ[0]), toString(hJ[1]), toString(hJ[2])])
15401554 }
15411555
15421556
15431557
15441558 @Callable(dX)
15451559 func fromX18WrapperREADONLY (L,hK) = $Tuple2(nil, K(parseBigIntValue(L), hK))
15461560
15471561
15481562
15491563 @Callable(dX)
15501564 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15511565
15521566
15531567
15541568 @Callable(dX)
15551569 func calcPriceBigIntWrapperREADONLY (bK,bL) = $Tuple2(nil, toString(bJ(parseBigIntValue(bK), parseBigIntValue(bL))))
15561570
15571571
15581572
15591573 @Callable(dX)
15601574 func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hL,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hL, cW, cX, true, false, 0, ""))
15611575
15621576
15631577
15641578 @Callable(dX)
15651579 func estimateGetOperationWrapperREADONLY (ct,hM,cv,hL) = {
15661580 let dm = cs(ct, hM, cv, addressFromStringValue(hL))
15671581 $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
15681582 }
15691583
15701584
15711585
15721586 @Callable(dX)
15731587 func getFeeREADONLY () = $Tuple2(nil, al)
15741588
15751589
15761590 @Verifier(hN)
15771591 func hO () = {
15781592 let hP = {
15791593 let aG = gk()
15801594 if ($isInstanceOf(aG, "ByteVector"))
15811595 then {
15821596 let go = aG
15831597 go
15841598 }
15851599 else if ($isInstanceOf(aG, "Unit"))
15861600 then hN.senderPublicKey
15871601 else throw("Match error")
15881602 }
15891603 let aG = hN
15901604 if ($isInstanceOf(aG, "Order"))
15911605 then {
15921606 let eY = aG
15931607 let hQ = aS()
15941608 let hR = eX(eY)
15951609 let hS = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
15961610 let hT = sigVerify(eY.bodyBytes, eY.proofs[1], hQ)
15971611 if (if (if (hR)
15981612 then hS
15991613 else false)
16001614 then hT
16011615 else false)
16021616 then true
16031617 else aB(hR, hS, hT)
16041618 }
16051619 else if ($isInstanceOf(aG, "SetScriptTransaction"))
16061620 then {
16071621 let dK = aG
16081622 let hU = blake2b256(value(dK.script))
16091623 let hV = fromBase64String(value(getString(aP, az())))
16101624 let hW = scriptHash(this)
16111625 if (if ((hV == hU))
16121626 then (hW != hU)
16131627 else false)
16141628 then true
16151629 else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
16161630 }
16171631 else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
16181632 }
16191633

github/deemru/w8io/169f3d6 
182.16 ms