tx · CeT5Q91ASRVGQePNiVyY3raz51BKFgV94dsQGr5AV9PR

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.04100000 Waves

2023.07.11 16:34 [2661312] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "CeT5Q91ASRVGQePNiVyY3raz51BKFgV94dsQGr5AV9PR", "fee": 4100000, "feeAssetId": null, "timestamp": 1689082567525, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "5vArAGkuuWFqhKogiTdP58Z4umiuNeAkRdyr4YGiuaSNoNJAzffk3fbFo1kcFcDHaiZjs8Jf33FWfQBjWP9ncton" ], "script": "base64:BgKGLQgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIKYW1wSW5pdGlhbCIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIhRQb29sUHV0QW5kTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiCHQxQmlnSW50IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnQyIgJmMiICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzIg1hZGRyZXNzU3RyaW5nIgckbWF0Y2gwIgFhIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIg5mYWN0b3J5QWRkcmVzcyIDZmNhIgFzIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIFaW5GZWUiAUAiBm91dEZlZSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4NjE2ODgwMiIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMzMwNzEzMzU1IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiBmNoZWNrRCILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMjExMTcyMTQ2MiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBWdldFlEIgFEIgFuIgF4IgphUHJlY2lzaW9uIgFjIgFiIgNjdXIiDSR0MDIyNjU3MjI2NzciAXkiBXlOZXh0IgV5RGlmZiINJHQwMjI5ODQyMzAzMSIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI1MjI5MjU0NDEiA2RMcCINJHQwMjU3ODkyNTg4OSINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI4NjA2MjkwNjgiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyOTA3NDI5MjUwIgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI5MjU0Mjk1MDgiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMTYyMDMxNzMxIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMxOTIxMzIyMjgiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzMwMTMzMzM2MyIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzMzNjYzMzQ3NCIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIgJwZCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiBGdldFkiCWlzUmV2ZXJzZSITcG9vbEFtb3VudEluQmFsYW5jZSINJHQwMzQ5NjEzNDk4MSINJHQwMzUzMTIzNTM1OSITc2tpcE9yZGVyVmFsaWRhdGlvbiINY2xlYW5BbW91bnRJbiINZmVlUG9vbEFtb3VudCINJHQwMzU3MTEzNjEzNSIIYXNzZXRPdXQiAmR5Igt0b3RhbEdldFJhdyIFbmV3WHAiBG5ld0QiDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIGY2hlY2tzIgdhc3NldEluIg0kdDAzNzU3MTM3OTY1IghjaGVja01pbiIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiDSR0MDQyMTA5NDIyNTEiBWNoZWNrIhRscEFzc2V0RW1pc3Npb25BZnRlciIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiDSR0MDQzOTU0NDQxMTIiB2VzdGltTFAiDSR0MDQ0OTk3NDUzNDYiFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDA0NTM0OTQ1NDU3IgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQ2NDg3NDY1NTIiCW91dEFtdEFtdCINJHQwNDc3MjU0NzgwNyINaXNHZXREaXNhYmxlZCINJHQwNDg0MjU0ODU4MCIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDkxMDQ0OTE2OCIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiDSR0MDUwMTc4NTAyMzMiDSR0MDUwNjA4NTA3MjMiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTE4ODk1MTk3MCINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDUyOTk3NTMwNzgiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDU0MzI5NTQ0MTAiF2xwQXNzZXRSZWNpcGllbnRBZGRyZXNzIg0kdDA1NTQzMjU1NjIwIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNTU3NDg1NTg1MSINJHQwNTU5OTk1NjEwMyIIYW10QXNTdHIiB3ByQXNTdHIiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiA2NmZyINJHQwNTg1MTI1ODcxMSIEbGlzdCIFZGVsYXkiBWRlbHRhIgZ0YXJnZXQiBmN1ckFtcCIJbmV3QW1wUmF3IgZuZXdBbXAiCGxhc3RDYWxsIgR3YWl0IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDU5NjQ0NTk3NjEiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaIUBAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwAMgABbQIDMTAwAAFuAgExAAFvAgJfXwABcAIAAAFxAAEAAXIAAgABcwADAAF0AAQAAXUAAQABdgACAAF3AAMAAXgABAABeQAFAAF6AAYAAUEABwABQgAIAAFDAAkAAUQAAQABRQAGAAFGAAcAAUcACgABSAkAawMACgUBYQCQTgEBSQIBSgFLCQC8AgMJALYCAQUBSgUBYwkAtgIBBQFLAQFMAgFKAUsJALwCAwUBSgUBYwUBSwEBTQIBTgFPCQCgAwEJALwCAwUBTgkAtgIBBQFPBQFjAQFQAwFOAU8BUQkAoAMBCQC9AgQFAU4JALYCAQUBTwUBYwUBUQEBUgIBSgFLCQC8AgMFAUoFAWMJALYCAQUBSwEBUwIBTgFPCQC8AgMFAU4JALYCAQUBTwUBYwEBVAMBVQFWAVcJAGsDBQFVBQFWBQFXAQFYAQFOAwkAvwICBQFkBQFOCQC+AgEFAU4FAU4BAVkBAU4DCQC/AgIFAWQFAU4JAL4CAQUBTgUBTgEBWgACEyVzX19mYWN0b3J5Q29udHJhY3QBAmFhAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFiAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFjAAIRJXMlc19fcHJpY2VfX2xhc3QBAmFkAgJhZQJhZgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAmFlCQDMCAIJAKQDAQUCYWYFA25pbAUBbwECYWcCAmFoAmFpCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWgCAl9fBQJhaQECYWoCAmFoAmFpCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWgCAl9fBQJhaQECYWsAAg8lc19fYW1vdW50QXNzZXQBAmFsAAIOJXNfX3ByaWNlQXNzZXQBAmFtAAIHJXNfX2FtcAECYW4BAmFvCQCsAgICCyVzJWRfX2FtcF9fCQCkAwEFAmFvAQJhcAACFSVzX19jaGFuZ2VBbXBMYXN0Q2FsbAACYXECByVzX19mZWUAAmFyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFxBQFIAAJhcwkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFvAAJhdAkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFvAAJhdQkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFvAAJhdgAeAAJhdwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhdQUCYXYBAmF4AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF5AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhegICYUECYUIJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFBAgJfXwUCYUICCF9fY29uZmlnAQJhQwECYUQJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUQBAmFFAAIMJXNfX3NodXRkb3duAQJhRgACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhRwACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSAECYUkJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhSQECYUoEAmFLAmFMAmFNAmFOCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8BAmFQBAJhUQkApggBBQJhUAMJAAECBQJhUQIHQWRkcmVzcwQCYVIFAmFRBQJhUgUEdGhpcwECYVMABAJhVAQCYVEJAKIIAQkBAVoAAwkAAQIFAmFRAgZTdHJpbmcEAmFVBQJhUQkBAmFPAQUCYVUFBHRoaXMEAmFRCQCdCAIFAmFUCQECYWIAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkBAmFPAQUCYVYFBHRoaXMBAmFXAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFaAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmJhAQJiYgkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYmIFA25pbAIBIAECYmMBAmJiCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmJiBQNuaWwCASAAAmFVCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQR0aGlzCQEBWgAAAmJkCgACYmUJAPwHBAUCYVUCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJmCgACYmUJAPwHBAUCYVUCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZwkBAmFXAgUEdGhpcwkBAmFtAAECYmgACQELdmFsdWVPckVsc2UCCQCbCAIFAmFVCQECYUUABwECYmkACQDZBAEJAQJhVwIFAmFVCQECYXkAAAJiagkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFXAgUCYVUJAQJhRwABAmJrAAQCYmwJAQJhVwIFBHRoaXMJAQJhawAEAmJtCQECYVcCBQR0aGlzCQECYWwABAJibgkBAmFaAgUCYVUJAQJhQwEFAmJtBAJhQQkBAmFaAgUCYVUJAQJhQwEFAmJsCQC1CQIJAQJhVwIFAmFVCQECYXoCCQCkAwEFAmFBCQCkAwEFAmJuBQFvAQJibwECYnADCQAAAgUCYnAFAWsFBHVuaXQJANkEAQUCYnABAmJxAQJicAMJAAACBQJicAUEdW5pdAUBawkA2AQBCQEFdmFsdWUBBQJicAECYnIBAmJzCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYnMFAXUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicwUBdgkA2QQBCQCRAwIFAmJzBQF3CQECYm8BCQCRAwIFAmJzBQF4CQECYm8BCQCRAwIFAmJzBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnMFAXoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicwUBQQACYnQJAQJicgEJAQJiawAAAmJ1BQJidAACYnYIBQJidQJfMQACYncIBQJidQJfMgACYngIBQJidQJfMwACYnkIBQJidQJfNAACYnoIBQJidQJfNQACYkEIBQJidQJfNgACYkIIBQJidQJfNwECYkMACQC1CQIJAQJhVwIFAmFVCQECYXgABQFvAAJiRAkBAmJDAAACYkUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFEAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYkYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFGAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYkcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFHAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJiSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUUCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJJCgJiSgJiSwJiTAJiTQJiTgJiTwJiUAJiUQJiUgJiUwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQkAzAgCCQCkAwEFAmJSCQDMCAIJAKQDAQUCYlMFA25pbAUBbwECYlQGAmJVAmJWAmJXAmJNAmJQAmJRCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYlUJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJXCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiUAkAzAgCCQCkAwEFAmJRBQNuaWwFAW8BAmJYAQJiWQMJAAACBQJiWQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYlkBAmJaAgJjYQJjYgkAvAIDBQJjYQUBYwUCY2IBAmNjAwJjYQJjYgFRCQC9AgQFAmNhBQFjBQJjYgUBUQECY2QDAmNlAmNmAmNnBAJjaAkAvAIDCQC4AgIFAmNlBQJjZgUBYgUCY2YEAmNpCQC/AgIJALgCAgUCY2cJAQFYAQUCY2gFAWQDCQEBIQEFAmNpCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmNoCQCUCgIFAmNpCQCZAwEJAMwIAgUCY2UJAMwIAgUCY2YFA25pbAECY2oDAmNrAmNsAmNtBAJjaAkAvAIDBQJjbAUBYgUCY2sEAmNuCQC/AgIFAmNtBQJjaAMDBQJjbgYJAL8CAgUCY2wFAmNrCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJjbAIBIAkApgMBBQJjawIBIAkApgMBBQJjaAIBIAkApgMBBQJjbQUCY24BAmNvBAJjcAJjcQJjcgJjcwQCY3QJAQFJAgUCY3IFAmNwBAJjdQkBAUkCBQJjcwUCY3EJAQJiWgIFAmN1BQJjdAECY3YDAmNyAmNzAmN3BAJjeAUCYkEEAmN5BQJiQgQCY3oJAQJjbwQFAmN4BQJjeQUCY3IFAmNzBAJjYgkBAUkCBQJjcgUCY3gEAmNhCQEBSQIFAmNzBQJjeQQCY0EJAQFJAgUCY3cFAWEEAmNCCQECYloCBQJjYgUCY0EEAmNDCQECYloCBQJjYQUCY0EJAMwIAgUCY3oJAMwIAgUCY0IJAMwIAgUCY0MFA25pbAECY0QDAmNyAmNzAmN3BAJjRQkBAmN2AwUCY3IFAmNzBQJjdwkAzAgCCQEBTQIJAJEDAgUCY0UAAAUBYQkAzAgCCQEBTQIJAJEDAgUCY0UAAQUBYQkAzAgCCQEBTQIJAJEDAgUCY0UAAgUBYQUDbmlsAQJjRgICY0cCYXIEAmNIAwkAAAIFAmFyAAAAAAkAawMFAmNHBQJhcgUBYQkAlAoCCQBlAgUCY0cFAmNIBQJjSAECY0kBAmNKBAJjSwkAkQMCBQJjSgAABAJjTAkAkQMCBQJjSgABBAJhVgkAtwICBQJjSwUCY0wDCQAAAgUCYVYFAWUFAWUEAmFSCQENcGFyc2VJbnRWYWx1ZQEFAmJnBAJjTQkAaAIFAmFSAAIEAmNFCQC8AgMFAmNLBQJjTAUBZgQCY04JALwCAwUCY0UFAWkFAWYEAmNPCQC8AgMJALYCAQUCY00FAmFWBQFmBAJjUAkAtgIBCQBlAgUCY00AAQoBAmNRAQJjUgQCY1MJALwCAwUCY1IFAmNSBQFmBAJjVAkAvAIDBQJjUwUCY1IFAWYEAmNVCQC8AgMFAmNUBQFmBQJjTgkAvAIDCQC3AgIFAmNPCQC8AgMFAmNVBQFnBQFmBQJjUgkAtwICCQC8AgMFAmNQBQJjUgUBZgkAvAIDBQFoBQJjVQUBZgoBAmNWAgJjVwJjWAMIBQJjVwJfMgUCY1cEAmNSCAUCY1cCXzEEAmNZCQECY1EBBQJjUgQCY1oJALgCAgUCY1kJAQV2YWx1ZQEFAmNSBAJkYQMJAL8CAgUBZQUCY1oJAL4CAQUCY1oFAmNaAwkAwAICBQFmBQJkYQkAlAoCBQJjWQYJAJQKAgUCY1kHBAJkYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwEAmRjCgACZGQFAmRiCgACZGUJAJADAQUCZGQKAAJkZgkAlAoCBQJhVgcKAQJkZwICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkBAmNWAgUCZGgJAJEDAgUCZGQFAmRpCgECZGoCAmRoAmRpAwkAZwIFAmRpBQJkZQUCZGgJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNwkBAmRqAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgUCZGYAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEEAmNSCAUCZGMCXzEEAmRrCAUCZGMCXzIDBQJkawUCY1IJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCY1IBAmRsBAJkbQJkbgJkbwJkcAQCZHEFAmJ4BAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmR0BQJiQQQCZHUFAmJCBAJkdgkApAMBBQJidwQCZHcICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHECC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJkcQUCZG4JAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmR4CQECYlgBBQJkcgQCZHkJAQFJAgUCZHgFAmR0BAJkegkBAmJYAQUCZHMEAmRBCQEBSQIFAmR6BQJkdQQCZEIJAQJiWgIFAmRBBQJkeQQCZEMJAQFNAgUCZEIFAWEEAmRECQEBSQIFAmRvBQFhBAJkRQkBAUkCBQJkdwUBYQQCZEYJALwCAwUCZHkFAmREBQJkRQQCZEcJALwCAwUCZEEFAmREBQJkRQQCZEgJAQFQAwUCZEYFAmR0BQVGTE9PUgQCZEkJAQFQAwUCZEcFAmR1BQVGTE9PUgQCZEoDCQAAAgUCZG0CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRwBQJkSAMJAAACBQJkcgIFV0FWRVMFBHVuaXQJANkEAQUCZHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHAFAmRJAwkAAAIFAmRzAgVXQVZFUwUEdW5pdAkA2QQBBQJkcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCCQClCAEFAmRwBQJkbQkBAmJUBgUCZEgFAmRJBQJkbwUCZEMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmRDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkQwUDbmlsCQCcCgoFAmRIBQJkSQUCZHIFAmRzBQJkeAUCZHoFAmR3BQJkQgUCZHYFAmRKAQJkSw0CZG0CY2cCZEwCZE0CZE4CZE8CZHACZFACZFECZFICZFMCZFQCZFUEAmRxBQJieAQCZFYJANgEAQkBBXZhbHVlAQUCYnkEAmRXCQDYBAEJAQV2YWx1ZQEFAmJ6BAJkWAUCYkEEAmRZBQJiQgQCZHYJAKQDAQUCYncEAmRaCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRxAghXciBscCBhcwhxdWFudGl0eQQCZHgDBQJkUAkBAmJYAQUCZFYDAwUCZFIJAAACBQJkVQUCZFYHCQBlAgkBAmJYAQUCZFYFAmRUAwUCZFIJAQJiWAEFAmRWCQBlAgkBAmJYAQUCZFYFAmRMBAJkegMFAmRQCQECYlgBBQJkVwMDBQJkUgkAAAIFAmRVBQJkVwcJAGUCCQECYlgBBQJkVwUCZFQDBQJkUgkBAmJYAQUCZFcJAGUCCQECYlgBBQJkVwUCZE4EAmVhCQEBSQIFAmRMBQJkWAQCZWIJAQFJAgUCZE4FAmRZBAJlYwkBAmJaAgUCZWIFAmVhBAJkeQkBAUkCBQJkeAUCZFgEAmRBCQEBSQIFAmR6BQJkWQQCY2wJAQJjSQEJAMwIAgUCZHkJAMwIAgUCZEEFA25pbAQCZWQDCQAAAgUCZFoAAAQCY2sJAQJjSQEJAMwIAgkAtwICBQJkeQUCZWEJAMwIAgkAtwICBQJkQQUCZWIFA25pbAQCZWUDCQC/AgIFAmNrBQJjbAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVlBQJlZQQCZEIFAWQEAmVmBQFkBAJjQQUCY2sJAJcKBQkBAU0CBQJjQQUBYQkBAU0CBQJlYQUCZFgJAQFNAgUCZWIFAmRZCQECYloCCQC3AgIFAmRBBQJlYgkAtwICBQJkeQUCZWEFAmVmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJkQgkBAmJaAgUCZEEFAmR5BAJlZwkAvAIDCQEBWAEJALgCAgUCZEIFAmVjBQFjBQJkQgQCZWYJAQFJAgUCY2cFAWEDAwMFAmRTCQECIT0CBQJkQgUBZAcJAL8CAgUCZWcFAmVmBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlZwIDID4gCQCmAwEFAmVmBAJlaAkBAUkCBQJkWgUBYQQCZWkJAL0CBAUCZWEJAQJjYwMFAmRBBQJkeQUHQ0VJTElORwUBYwUHQ0VJTElORwQCZWoJAL0CBAUCZWIFAWMJAQJjYwMFAmRBBQJkeQUFRkxPT1IFB0NFSUxJTkcEAmVrAwkAvwICBQJlaQUCZWIJAJQKAgUCZWoFAmViCQCUCgIFAmVhBQJlaQQCZWwIBQJlawJfMQQCZW0IBQJlawJfMgQCY2sJAQJjSQEJAMwIAgkAtwICBQJkeQUCZWwJAMwIAgkAtwICBQJkQQUCZW0FA25pbAQCZWUDCQC/AgIFAmNrBQJjbAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVlBQJlZQQCY0EJALwCAwUCZWgJALgCAgUCY2sFAmNsBQJjbAkAlwoFCQEBUAMFAmNBBQFhBQVGTE9PUgkBAVADBQJlbAUCZFgFB0NFSUxJTkcJAQFQAwUCZW0FAmRZBQdDRUlMSU5HBQJkQgUCZWYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmVuCAUCZWQCXzEEAmVvCAUCZWQCXzIEAmVwCAUCZWQCXzMEAmRDCQEBTQIIBQJlZAJfNAUBYQQCZXEJAQFNAggFAmVkAl81BQFhAwkAZwIAAAUCZW4JAAIBAgdMUCA8PSAwBAJlcgMJAQEhAQUCZFEAAAUCZW4EAmVzCQBlAgUCZEwFAmVvBAJldAkAZQIFAmROBQJlcAQCZXUDAwUCZFIJAAACBQJkVQUCZFYHCQCUCgIFAmRUAAADAwUCZFIJAAACBQJkVQUCZFcHCQCUCgIAAAUCZFQJAJQKAgUCZW8FAmVwBAJldggFAmV1Al8xBAJldwgFAmV1Al8yBAJleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZEMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwIFAmRwBQJkbQkBAmJJCgUCZXYFAmV3BQJlcgUCZEMFAmNnBQJlcQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMFAmV0BQNuaWwJAJ8KDQUCZW4FAmVyBQJkQwUCZHgFAmR6BQJkWgUCZHEFAmR2BQJleAUCZXMFAmV0BQJkTQUCZE8BAmV5AwJjSgJjWAJlegQCZUEFAWcEAmVCCQCRAwIFAmNKAwkAAAIFAmNYAAAAAQAABAJlQwkApwMBBQFtBAJhUgkAuQICCQCnAwEFAmJnBQJlQwQCYVYFAmVCBAJjTQkAuQICBQJhUgUCZUEEAmVECQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXoFAmV6CQC5AgIFAmVCBQJlQQUCZXoFAmVDCQC5AgIFAmNNBQJlQQQCZUUJALgCAgkAtwICBQJhVgkAugICCQC5AgIFAmV6BQJlQwUCY00FAmV6CgECY1YCAmNXAmVGBAJlRwUCY1cEAmVICAUCZUcCXzEEAmRrCAUCZUcCXzIDCQECIT0CBQJkawUEdW5pdAUCY1cEAmVJCQC6AgIJALcCAgkAuQICBQJlSAUCZUgFAmVECQC3AgIJALkCAgUBZwUCZUgFAmVFBAJlSgkBAVkBCQC4AgIFAmVJCQEFdmFsdWUBBQJlSAMJAMACAgUBZgUCZUoJAJQKAgUCZUkFAmVGCQCUCgIFAmVJBQR1bml0BAJkYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlSwoAAmRkBQJkYgoAAmRlCQCQAwEFAmRkCgACZGYJAJQKAgUCZXoFBHVuaXQKAQJkZwICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkBAmNWAgUCZGgJAJEDAgUCZGQFAmRpCgECZGoCAmRoAmRpAwkAZwIFAmRpBQJkZQUCZGgJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRqAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgUCZGYAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUgIBQJlSwJfMQQCZGsIBQJlSwJfMgMJAQIhPQIFAmRrBQR1bml0BQJlSAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlSAECZUwDAmVNAmVOAmVPBAJlUAkAvAIDCQECY0kBCQDMCAIJAQFMAgUCZU0JALYCAQUCYkEJAMwIAgkBAUwCBQJlTgkAtgIBBQJiQgUDbmlsBQFjBQJlTwMJAAACBQJlTwUBZQUBZQUCZVABAmVRAwJlUgJlUwJlVAQCZVUJALgCAgkAtgIBCQECYlgBCQECYnEBBQJieQUCZVIEAmVWCQC4AgIJALYCAQkBAmJYAQkBAmJxAQUCYnoFAmVTBAJlVwkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ4CHF1YW50aXR5BQJlVAQCZVgJAQJlTAMFAmVVBQJlVgUCZVcFAmVYAQJlWQMCZVoCZmECZVQEAmVVCQBkAgkBAmJYAQkBAmJxAQUCYnkFAmVaBAJlVgkAZAIJAQJiWAEJAQJicQEFAmJ6BQJmYQQCZVcJAGQCCAkBBXZhbHVlAQkA7AcBBQJieAhxdWFudGl0eQUCZVQEAmVQCQECZUwDCQC2AgEFAmVVCQC2AgEFAmVWCQC2AgEFAmVXBAJmYgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYXQFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhcwkApgMBBQJlUAUDbmlsCQCUCgIFAmZiBQJlUAECZmMCAmZkAmVQAwkAwAICBQJlUAUCZmQGCQECYmEBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJmZQECZmYEAmVVCQECYlgBCQECYnEBBQJieQQCZVYJAQJiWAEJAQJicQEFAmJ6BAJmZwgFAmZmBmFtb3VudAQCZmgJAG4ECAUCZmYGYW1vdW50CAUCZmYFcHJpY2UFAWEFBUZMT09SBAJmaQMJAAACCAUCZmYJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZmcJAQEtAQUCZmgJAJQKAgkBAS0BBQJmZwUCZmgEAmVaCAUCZmkCXzEEAmZhCAUCZmkCXzIDAwMJAQJiaAAGCQAAAgUCYncFAXMGCQAAAgUCYncFAXQJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZmYJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJieQYJAQIhPQIICAUCZmYJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJ6CQACAQIJV3IgYXNzZXRzBAJmagkApwMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFzAgEwBAJmawkBAmVZAwUCZVoFAmZhAAAEAmZsCAUCZmsCXzEEAmZtCAUCZmsCXzIEAmZuCQDAAgIFAmZtBQJmagQCZm8JALkJAgkAzAgCAgRkTHA9CQDMCAIJAKYDAQUCZmoJAMwIAgIIIGRMcE5ldz0JAMwIAgkApgMBBQJmbQkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVVCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlVgkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZVoJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZmEJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmZuBQJmbwECZnABAmNYAwkBAiE9AgkAkAMBCAUCY1gIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZxCQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABAJkbgkBBXZhbHVlAQgFAmZxB2Fzc2V0SWQEAmRUCAUCZnEGYW1vdW50BAJlZAkBAmRsBAkA2AQBCAUCY1gNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbgUCZFQIBQJjWAZjYWxsZXIEAmRICAUCZWQCXzEEAmRJCAUCZWQCXzIEAmR2CQENcGFyc2VJbnRWYWx1ZQEIBQJlZAJfOQQCZEoIBQJlZANfMTADAwkBAmJoAAYJAAACBQJkdgUBdAkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmR2CQCXCgUFAmRIBQJkSQUCZFQFAmRuBQJkSgECZnIKAmZzAmFpAmZ0AmZ1AmNnAmRRAmRSAmRTAmRUAmRVBAJlZAkBAmRLDQUCYWkFAmNnCAkBBXZhbHVlAQUCZnQGYW1vdW50CAkBBXZhbHVlAQUCZnQHYXNzZXRJZAgJAQV2YWx1ZQEFAmZ1BmFtb3VudAgJAQV2YWx1ZQEFAmZ1B2Fzc2V0SWQFAmZzCQAAAgUCYWkCAAUCZFEFAmRSBQJkUwUCZFQFAmRVBAJkdgkBDXBhcnNlSW50VmFsdWUBCAUCZWQCXzgDAwMDCQECYmgABgkAAAIFAmR2BQFyBgkAAAIFAmR2BQFzBgkAAAIFAmR2BQF0CQACAQkArAICAghCbG9ja2VkOgkApAMBBQJkdgUCZWQBAmZ2BQJmdwJkbgJkcAJhaQJmeAQCZHIJANgEAQkBBXZhbHVlAQUCYnkEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ6BAJkcQUCYngEAmRYBQJiQQQCZFkFAmJCBAJlVwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRxAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmeQMJAL8CAgUCZVcFAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmeQUCZnkEAmR4CQECYlgBBQJkcgQCZHoJAQJiWAEFAmRzBAJmegMJAAACBQJhaQIACQCUCgIFAmR4BQJkegMJAAACBQJkbgUCZHIDCQBmAgUCZncFAmR4CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCZHgFAmZ3BQJkegMJAAACBQJkbgUCZHMDCQBmAgUCZncFAmR6CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJkeAkAZQIFAmR6BQJmdwkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZBCAUCZnoCXzEEAmZCCAUCZnoCXzIEAmZDAwkAAAIFAmRuBQJkcgkAlAoCBQJmdwAAAwkAAAIFAmRuBQJkcwkAlAoCAAAFAmZ3CQACAQIPaW52YWxpZCBwYXltZW50BAJmRAgFAmZDAl8xBAJmRQgFAmZDAl8yBAJmRgMFAmZ4CQCVCgMICQECY0YCBQJmRAUCYmQCXzEICQECY0YCBQJmRQUCYmQCXzEICQECY0YCBQJmdwUCYmQCXzIJAJUKAwUCZkQFAmZFAAAEAmZHCAUCZkYCXzEEAmZICAUCZkYCXzIEAmNICAUCZkYCXzMEAmZJCQBkAgUCZkEFAmZHBAJmSgkAZAIFAmZCBQJmSAQCY2wJAQJjSQEJAMwIAgkBAUkCBQJmQQUCYkEJAMwIAgkBAUkCBQJmQgUCYkIFA25pbAQCY2sJAQJjSQEJAMwIAgkBAUkCBQJmSQUCYkEJAMwIAgkBAUkCBQJmSgUCYkIFA25pbAQCZWUDCQC/AgIFAmNrBQJjbAYJAQV0aHJvdwADCQAAAgUCZWUFAmVlBAJmSwkAvQIEBQJlVwkAuAICBQJjawUCY2wFAmNsBQVGTE9PUgQCZEMJAQFNAgkBAmJaAgkBAUkCBQJmSgUCZFkJAQFJAgUCZkkFAmRYBQFhBAJleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZEMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwIFAmRwBQJhaQkBAmJJCgUCZkQFAmZFCQCgAwEFAmZLBQJkQwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZMCQBrAwUCZkIFAWEFAmZBBAJmTQkAawMFAmZ3BQFhCQBkAgUCZkwFAWEEAmZOCQBlAgUCZncFAmZNBAJmTwkAvAIDBQJlVwkAtgIBBQJmTgkAtgIBBQJmQgQCZlAJAKADAQkAvAIDCQC4AgIFAmZLBQJmTwUBYgUCZk8JAJYKBAkAoAMBBQJmSwUCZXgFAmNIBQJmUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZlEGAmZSAmZTAmZUAmZzAmZVAmZWBAJkcQkA2AQBCQEFdmFsdWUBBQJieAQCZHIJANgEAQkBBXZhbHVlAQUCYnkEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ6BAJmVwUCYkEEAmZYBQJiQgQCZlkFAmJ3BAJkcAMJAAACBQJmcwUCYkgFAmZVBQJmcwQCZnEJAQV2YWx1ZQEJAJEDAgUCZlQAAAQCZG4JAQV2YWx1ZQEIBQJmcQdhc3NldElkBAJkVAgFAmZxBmFtb3VudAQCZVgJAQJlUQMFAWUFAWUFAWUDCQAAAgUCZVgFAmVYBAJkbQkA2AQBBQJmVgMJAQIhPQIFAmRxCQDYBAEFAmRuCQACAQIIV3JvbmcgTFAEAmR4CQECYlgBBQJkcgQCZHoJAQJiWAEFAmRzBAJmWgoAAmJlCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZlIJAMwIAgUCZFQFA25pbAUDbmlsAwkAAQIFAmJlAgooSW50LCBJbnQpBQJiZQkAAgEJAKwCAgkAAwEFAmJlAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmZaBQJmWgQCY0gIBQJmWgJfMgQCZ2EIBQJmWgJfMQQCZ2IDAwkAZgIFAmZTAAAJAGYCBQJmUwUCZ2EHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZTBQNuaWwCAAUCZ2EEAmdjAwkAAAIFAmZSBQJkcgkAlgoEBQJnYgAACQBlAgkAZQIFAmR4BQJnYgUCY0gFAmR6AwkAAAIFAmZSBQJkcwkAlgoEAAAFAmdiBQJkeAkAZQIJAGUCBQJkegUCZ2IFAmNICQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmdkCAUCZ2MCXzEEAmdlCAUCZ2MCXzIEAmZJCAUCZ2MCXzMEAmZKCAUCZ2MCXzQEAmdmCQECYloCCQEBSQIFAmZKBQJmWAkBAUkCBQJmSQUCZlcEAmdnCQEBTQIFAmdmBQFhBAJnaAMJAAACBQJmUgIFV0FWRVMFBHVuaXQJANkEAQUCZlIEAmdpAwkAZgIFAmNIAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmoFAmNIBQJnaAUDbmlsBQNuaWwEAmRKCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHAFAmdiBQJnaAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCCQClCAEFAmRwBQJkbQkBAmJUBgUCZ2QFAmdlBQJkVAUCZ2cFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmdnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJnZwUDbmlsBQJnaQMJAAACBQJkSgUCZEoEAmdqCQD8BwQFAmFVAgRidXJuCQDMCAIFAmRUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRuBQJkVAUDbmlsAwkAAAIFAmdqBQJnagQCZ2sEAmdsAwkAAAIFBHRoaXMFAmJqAAAFAmNIBAJnbQMJAAACCQECYm8BBQJmUgUCYnkGBwMFAmdtCQCUCgIJAQEtAQkAZAIFAmdhBQJnbAAACQCUCgIAAAkBAS0BCQBkAgUCZ2EFAmdsBAJlWggFAmdrAl8xBAJmYQgFAmdrAl8yBAJnbgkBAmVZAwUCZVoFAmZhAAAEAmdvCAUCZ24CXzEEAmVQCAUCZ24CXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQCUCgIJAM4IAgUCZEoFAmdvBQJnYgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ3EABAJncgkBAmFTAAQCYVEJAJ0IAgUCZ3IJAQJhYQADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQDZBAEFAmFWAwkAAQIFAmFRAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmdzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmd0AQJjWAQCYVEJAQJncQADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmd1BQJhUQkAAAIIBQJjWA9jYWxsZXJQdWJsaWNLZXkFAmd1AwkAAQIFAmFRAgRVbml0CQAAAggFAmNYBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJndgECY1gEAmFRCQECZ3EAAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJndQUCYVEDCQAAAggFAmNYD2NhbGxlclB1YmxpY0tleQUCZ3UGBQJncwMJAAECBQJhUQIEVW5pdAMJAAACCAUCY1gGY2FsbGVyBQR0aGlzBgUCZ3MJAAIBAgtNYXRjaCBlcnJvcgECZ3cDAmd4AmV6Amd5BAJicwkBAmJrAAQCZHIJAJEDAgUCYnMFAXgEAmRzCQCRAwIFAmJzBQF5BAJlQQUBZwQCZUMJAKcDAQUBbQQCYVIJALkCAgkApwMBBQJiZwUCZUMEAmNKAwkAAAIFAmd4BwkAzAgCCQC3AgIJALYCAQkBAmJYAQUCZHIFAmd5CQDMCAIJALYCAQkBAmJYAQUCZHMFA25pbAkAzAgCCQC3AgIJALYCAQkBAmJYAQUCZHMFAmd5CQDMCAIJALYCAQkBAmJYAQUCZHIFA25pbAQCZUIJAJEDAgUCY0oAAAQCYVYFAmVCBAJjTQkAuQICBQJhUgUCZUEEAmVECQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXoFAmV6CQC5AgIFAmVCBQJlQQUCZXoFAmVDCQC5AgIFAmNNBQJlQQQCZUUJALgCAgkAtwICBQJhVgkAugICCQC5AgIFAmV6BQJlQwUCY00FAmV6CgECY1YCAmNXAmVGBAJnegUCY1cEAmVICAUCZ3oCXzEEAmRrCAUCZ3oCXzIDCQECIT0CBQJkawUEdW5pdAUCY1cEAmVJCQC6AgIJALcCAgkAuQICBQJlSAUCZUgFAmVECQC3AgIJALkCAgUBZwUCZUgFAmVFBAJlSgkBAVkBCQC4AgIFAmVJCQEFdmFsdWUBBQJlSAMJAMACAgUBZgUCZUoJAJQKAgUCZUkFAmVGCQCUCgIFAmVJBQR1bml0BAJkYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJnQQoAAmRkBQJkYgoAAmRlCQCQAwEFAmRkCgACZGYJAJQKAgUCZXoFBHVuaXQKAQJkZwICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkBAmNWAgUCZGgJAJEDAgUCZGQFAmRpCgECZGoCAmRoAmRpAwkAZwIFAmRpBQJkZQUCZGgJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRqAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgUCZGYAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUgIBQJnQQJfMQQCZGsIBQJnQQJfMgMJAQIhPQIFAmRrBQR1bml0BQJlSAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlSAECZ0IACQELdmFsdWVPckVsc2UCCQCbCAIFAmFVCQECYUgBCQClCAEFBHRoaXMHGwJjWAEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJnQwJneAJnRAQCZ0UDCQAAAgUCZ3gHBAJnRgkBAmFXAgUEdGhpcwkBAmFsAAQCZ3kJALcCAgkAtgIBCQECYlgBCQECYVcCBQR0aGlzCQECYWsACQC2AgEFAmdDCQCUCgIFAmdGBQJneQQCZ0YJAQJhVwIFBHRoaXMJAQJhawAEAmd5CQC3AgIJALYCAQkBAmJYAQkBAmFXAgUEdGhpcwkBAmFsAAkAtgIBBQJnQwkAlAoCBQJnRgUCZ3kEAmdGCAUCZ0UCXzEEAmd5CAUCZ0UCXzIEAmJzCQECYmsABAJkcgkAkQMCBQJicwUBeAQCZHMJAJEDAgUCYnMFAXkEAmNKCQDMCAIJALYCAQkBAmJYAQUCZHIJAMwIAgkAtgIBCQECYlgBBQJkcwUDbmlsBAJlegkBAmNJAQUCY0oEAmVICQECZ3cDBQJneAUCZXoJALYCAQUCZ0MEAmdHCQC4AgIJALgCAgkAtgIBCQECYlgBBQJnRgUCZUgJALYCAQABBAJnSAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEFAmdHBQNuaWwEAmdJAwkAAAIFAmd4BwkAzAgCCQC3AgIJALcCAgkAtgIBCQECYlgBBQJkcgkAtgIBBQJnQwkAtgIBBQJnRAkAzAgCCQC4AgIJALYCAQkBAmJYAQUCZHMFAmdHBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiWAEFAmRyBQJnRwkAzAgCCQC3AgIJALcCAgkAtgIBCQECYlgBBQJkcwkAtgIBBQJnQwkAtgIBBQJnRAUDbmlsBAJnSgkBAmNJAQUCZ0kEAmVlAwkAwAICBQJnSgUCZXoGCQACAQkAuQkCCQDMCAICFG5ldyBEIGlzIGZld2VyIGVycm9yCQDMCAIJAKYDAQUCZXoJAMwIAgkApgMBBQJnSgUDbmlsAgJfXwMJAAACBQJlZQUCZWUJAJQKAgUDbmlsBQJnSAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFAmdDAmd4AmdLAmdMAmdEBAJnTQoAAmJlCQD8BwQFAmFVAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYmUCBlN0cmluZwUCYmUJAAIBCQCsAgIJAAMBBQJiZQIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJnTgkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAUCZ0MGCQECYmEBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCY1gGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnTQYJAQJiYQECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZ04FAmdOBAJmcQkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAQCZ08JAQJicQEIBQJmcQdhc3NldElkBAJnUAMJAAACBQJneAcEAmdGCQECYVcCBQR0aGlzCQECYWwABAJneQkAZQIJAQJiWAEFAmdPCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQJAJQKAgUCZ0YFAmd5BAJnRgkBAmFXAgUEdGhpcwkBAmFrAAQCZ3kJAGUCCQECYlgBBQJnTwgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdGBQJneQQCZ0YIBQJnUAJfMQQCZ3kIBQJnUAJfMgQCYnMJAQJiawAEAmRyCQCRAwIFAmJzBQF4BAJkcwkAkQMCBQJicwUBeQQCY0oDCQAAAgUCZ3gHCQDMCAIJALgCAgkAtgIBCQECYlgBBQJkcgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkAtgIBCQECYlgBBQJkcwUDbmlsCQDMCAIJALYCAQkBAmJYAQUCZHIJAMwIAgkAuAICCQC2AgEJAQJiWAEFAmRzCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAUDbmlsBAJlegkBAmNJAQUCY0oEAmVICQECZ3cDBQJneAUCZXoJALYCAQAABAJnRwkAuAICCQC4AgIJALYCAQkBAmJYAQUCZ0YFAmVICQC2AgEAAQQCZ0gJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnRwUDbmlsBAJnUQMJAGcCBQJnSAUCZ0sGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ1EFAmdRBAJnSQMJAAACBQJneAcJAMwIAgkAtwICCQC2AgEJAQJiWAEFAmRyCQC2AgEFAmdECQDMCAIJALgCAgkAtgIBCQECYlgBBQJkcwUCZ0cFA25pbAkAzAgCCQC4AgIJALYCAQkBAmJYAQUCZHIFAmdHCQDMCAIJALcCAgkAtgIBCQECYlgBBQJkcwkAtgIBBQJnRAUDbmlsBAJnSgkBAmNJAQUCZ0kEAmVlAwkAwAICBQJnSgUCZXoGCQACAQIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZWUFAmVlCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0wFAmdICQECYm8BBQJnRgUDbmlsBQJnSAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAELY29uc3RydWN0b3IBAVoEAmVECQECZ3YBBQJjWAMJAAACBQJlRAUCZUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoABQFaBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBA3B1dAICZ1ICZ1MEAmdUCQECYkMABAJnVQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ1QFAUQCCldyIHN0IGFkZHIEAmdWCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnVAUBRgIKV3Igc2wgYWRkcgMJAGYCAAAFAmdSCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJjWAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnVwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQEAmdYCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwABBmFtb3VudAQCZVUJALgCAgkAtgIBCQECYlgBCQECYnEBBQJieQUCZ1cDCQAAAgUCZVUFAmVVBAJlVgkAuAICCQC2AgEJAQJiWAEJAQJicQEFAmJ6BQJnWAMJAAACBQJlVgUCZVYEAmVXCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ4CHF1YW50aXR5AwkAAAIFAmVXBQJlVwQCZVgJAQJlUQMFAmdXBQJnWAkAtgIBAAADCQAAAgUCZVgFAmVYBAJnWQkBAmZyCgkApQgBCAUCY1gGY2FsbGVyCQDYBAEIBQJjWA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJjWAhwYXltZW50cwABBQJnUgYHBgAAAgAEAmVyCAUCZ1kCXzIEAmdaCAUCZ1kCXzcEAmRKCAUCZ1kCXzkEAmVzCAUCZ1kDXzEwBAJldAgFAmdZA18xMQQCZHIIBQJnWQNfMTIEAmRzCAUCZ1kDXzEzBAJlZAkA/AcEBQJhVQIEZW1pdAkAzAgCBQJlcgUDbmlsBQNuaWwDCQAAAgUCZWQFAmVkBAJoYQQCYVEFAmVkAwkAAQIFAmFRAgdBZGRyZXNzBAJoYgUCYVEJAPwHBAUCaGICBGVtaXQJAMwIAgUCZXIFA25pbAUDbmlsBQR1bml0AwkAAAIFAmhhBQJoYQQCaGMDCQBmAgUCZXMAAAkA/AcEBQJnVgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRyBQJlcwUDbmlsBQNuaWwDCQAAAgUCaGMFAmhjBAJoZAMJAGYCBQJldAAACQD8BwQFAmdWAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHMFAmV0BQNuaWwFA25pbAMJAAACBQJoZAUCaGQEAmhlAwUCZ1MEAmhmCQD8BwQFAmdVAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnWgUCZXIFA25pbAMJAAACBQJoZgUCaGYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY1gGY2FsbGVyBQJlcgUCZ1oFA25pbAQCaGcJAQJlWQMAAAAAAAAEAmdvCAUCaGcCXzEEAmVQCAUCaGcCXzIEAmhoAwkAwAICBQJlUAUCZVgGCQECYmEBCQC5CQIJAMwIAgIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAkAzAgCCQCmAwEFAmVVCQDMCAIJAKYDAQUCZVYJAMwIAgkApgMBBQJlVwkAzAgCCQCmAwEFAmVYCQDMCAIJAKYDAQUCZVAJAMwIAgkApAMBBQJlcwkAzAgCCQCkAwEFAmV0BQNuaWwCASADCQAAAgUCaGgFAmhoBAJoaQgJAQV2YWx1ZQEJAOwHAQUCYngIcXVhbnRpdHkDCQAAAgUCaGkFAmhpCQDOCAIJAM4IAgUCZEoFAmhlBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAELcHV0T25lVGtuVjICAmZTAmdTBAJoagoAAmJlCQD8BwQFAmFVAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCB0Jvb2xlYW4FAmJlCQACAQkArAICCQADAQUCYmUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhrAwMDAwkBAmJoAAYJAAACBQJidwUBcgYJAAACBQJidwUBcwYJAAACBQJidwUBdAYFAmhqBAJnTgkAzAgCAwMJAQEhAQUCaGsGCQECZ3QBBQJjWAYJAQJiYQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNYCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTgUCZ04EAmRyCQDYBAEJAQV2YWx1ZQEFAmJ5BAJkcwkA2AQBCQEFdmFsdWUBBQJiegQCZHEFAmJ4BAJmVwUCYkEEAmZYBQJiQgQCZHADCQAAAggFAmNYBmNhbGxlcgUEdGhpcwgFAmNYDG9yaWdpbkNhbGxlcggFAmNYBmNhbGxlcgQCZnEJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAEAmRuCQDYBAEJAQV2YWx1ZQEIBQJmcQdhc3NldElkBAJkVAgFAmZxBmFtb3VudAQCZVgDCQAAAggFAmZxB2Fzc2V0SWQFAmJ5CQECZVEDCQC2AgEFAmRUCQC2AgEAAAkAtgIBAAAJAQJlUQMJALYCAQAACQC2AgEFAmRUCQC2AgEAAAMJAAACBQJlWAUCZVgEAmhsCQECZnYFBQJkVAUCZG4JAKUIAQUCZHAJANgEAQgFAmNYDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmhsBQJobAQCY0gIBQJobAJfMwQCZEoIBQJobAJfMgQCaG0IBQJobAJfMQQCZXIDAwkAZgIFAmZTAAAJAGYCBQJmUwUCaG0HCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZTBQNuaWwCAAUCaG0EAmdZCQD8BwQFAmFVAgRlbWl0CQDMCAIFAmVyBQNuaWwFA25pbAMJAAACBQJnWQUCZ1kEAmhhBAJhUQUCZ1kDCQABAgUCYVECB0FkZHJlc3MEAmhiBQJhUQkA/AcEBQJoYgIEZW1pdAkAzAgCBQJlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGEFAmhhBAJoZQMFAmdTBAJoZgkA/AcEBQJiRQIIc3Rha2VGb3IJAMwIAgkApQgBCAUCY1gGY2FsbGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRxBQJlcgUDbmlsAwkAAAIFAmhmBQJoZgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjWAZjYWxsZXIFAmVyBQJkcQUDbmlsBAJnaQMJAGYCBQJjSAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJqBQJjSAkA2QQBBQJkbgUDbmlsBQNuaWwEAmhuAwkAAAIFBHRoaXMFAmJqCQCUCgIAAAAABAJobwMJAAACCAUCZnEHYXNzZXRJZAUCYnkGBwMFAmhvCQCUCgIJAQEtAQUCY0gAAAkAlAoCAAAJAQEtAQUCY0gEAmVaCAUCaG4CXzEEAmZhCAUCaG4CXzIEAmhwCQECZVkDBQJlWgUCZmEAAAQCZ28IBQJocAJfMQQCZVAIBQJocAJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAJQKAgkAzggCCQDOCAIJAM4IAgUCZEoFAmhlBQJnaQUCZ28FAmVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQpwdXRGb3JGcmVlAQJocQMJAGYCAAAFAmhxCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmNYCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmhyCQECZnIKCQClCAEIBQJjWAZjYWxsZXIJANgEAQgFAmNYDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNYCHBheW1lbnRzAAEFAmhxBwcGAAACAAQCZEoIBQJocgJfOQQCZ1cJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50BAJnWAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAQZhbW91bnQEAmVYCQECZVEDBQJnVwUCZ1gJALYCAQAAAwkAAAIFAmVYBQJlWAQCaHMJAQJlWQMAAAAAAAAEAmdvCAUCaHMCXzEEAmVQCAUCaHMCXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQDOCAIFAmRKBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAEDZ2V0AAQCZVgJAQJlUQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVgFAmVYBAJlZAkBAmZwAQUCY1gEAmh0CAUCZWQCXzEEAmRJCAUCZWQCXzIEAmRUCAUCZWQCXzMEAmRuCAUCZWQCXzQEAmRKCAUCZWQCXzUEAmVFCQD8BwQFAmFVAgRidXJuCQDMCAIFAmRUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRuBQJkVAUDbmlsAwkAAAIFAmVFBQJlRQQCaHUJAQJlWQMJAQEtAQUCaHQJAQEtAQUCZEkAAAQCZ28IBQJodQJfMQQCZVAIBQJodQJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAM4IAgUCZEoFAmdvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQtnZXRPbmVUa25WMgICZlICZlMEAmhqCgACYmUJAPwHBAUCYVUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaHYDAwkBAmJoAAYJAAACBQJidwUBdAYFAmhqBAJnTgkAzAgCAwMJAQEhAQUCaHYGCQECZ3QBBQJjWAYJAQJiYQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNYCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTgUCZ04EAmh3CQECZlEGBQJmUgUCZlMIBQJjWAhwYXltZW50cwgFAmNYBmNhbGxlcggFAmNYDG9yaWdpbkNhbGxlcggFAmNYDXRyYW5zYWN0aW9uSWQEAmRKCAUCaHcCXzEEAmdiCAUCaHcCXzIJAJQKAgUCZEoFAmdiCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQpyZWZyZXNoRExwAAQCaHgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXQAAAQCaHkDCQBnAgkAZQIFBmhlaWdodAUCaHgFAmF3BQR1bml0CQECYmEBCQC5CQIJAMwIAgkApAMBBQJhdwkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaHkFAmh5BAJmagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXMCATAJAQJiYwECC2ludmFsaWQgZExwBAJoegkBAmVZAwAAAAAAAAQCaEEIBQJoegJfMQQCZVAIBQJoegJfMgQCZmIDCQECIT0CBQJmagUCZVAFAmhBCQECYmEBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZmIJAKYDAQUCZVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZSAmhCBAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmRxCQDYBAEJAQV2YWx1ZQEFAmJ4BAJjSgkAzAgCCQC2AgEJAQJiWAEFAmRyCQDMCAIJALYCAQkBAmJYAQUCZHMFA25pbAQCZU8JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRxAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJjbAkBAmNJAQUCY0oEAmNrCQC4AgIFAmNsCQC8AgMJALYCAQUCaEIFAmNsBQJlTwQCaEMDCQAAAgUCZlIFAmRyAAADCQAAAgUCZlIFAmRzAAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaEQJAQJleQMFAmNKBQJoQwUCY2sEAmdHCQC4AgIJAJEDAgUCY0oFAmhDBQJoRAQCZ0gJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdHBQFmBQNuaWwEAmhFCQECY0YCBQJnSAUCYmYEAmdhCAUCaEUCXzEEAmNICAUCaEUCXzIJAJQKAgUDbmlsCQCUCgIFAmdhBQJjSAJjWAEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZlICaEIEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ5BAJkcwkA2AQBCQEFdmFsdWUBBQJiegQCZHEJANgEAQkBBXZhbHVlAQUCYngEAmR4CQECYlgBBQJkcgQCZHoJAQJiWAEFAmRzBAJoRgoAAmJlCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZlIJAMwIAgUCaEIFA25pbAUDbmlsAwkAAQIFAmJlAgooSW50LCBJbnQpBQJiZQkAAgEJAKwCAgkAAwEFAmJlAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJnYQgFAmhGAl8xBAJjSAgFAmhGAl8yBAJlZAkBAmRsBAIABQJkcQUCaEIFBHRoaXMEAmRICAUCZWQCXzEEAmRJCAUCZWQCXzIEAmhHCQBkAgUCZEgFAmRJBAJmUAMJAAACBQJoRwAAAwkAAAIFAmdhAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmdhBQJoRwUBYQUCaEcJAJQKAgUDbmlsCQCVCgMFAmdhBQJjSAUCZlACY1gBCWdldE5vTGVzcwICaEgCaEkEAmVkCQECZnABBQJjWAQCZEgIBQJlZAJfMQQCZEkIBQJlZAJfMgQCZFQIBQJlZAJfMwQCZG4IBQJlZAJfNAQCZEoIBQJlZAJfNQMJAGYCBQJoSAUCZEgJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCZEgCAyA8IAkApAMBBQJoSAMJAGYCBQJoSQUCZEkJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJkSQIDIDwgCQCkAwEFAmhJBAJlWAkBAmVRAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlWAUCZVgEAmhKCQD8BwQFAmFVAgRidXJuCQDMCAIFAmRUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRuBQJkVAUDbmlsAwkAAAIFAmhKBQJoSgQCaEsJAQJlWQMJAQEtAQUCZEgJAQEtAQUCZEkAAAQCZ28IBQJoSwJfMQQCZVAIBQJoSwJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAM4IAgUCZEoFAmdvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQ11bnN0YWtlQW5kR2V0AQJjRwQCaEwDCQECIT0CCQCQAwEIBQJjWAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaEwFAmhMBAJoTQkBAmJDAAQCZ1oFAmJ4BAJoTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaE0FAUQCCldyIHN0IGFkZHIEAmVYCQECZVEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVYBQJlWAQCaE8JAPwHBAUCaE4CB3Vuc3Rha2UJAMwIAgkA2AQBBQJnWgkAzAgCBQJjRwUDbmlsBQNuaWwDCQAAAgUCaE8FAmhPBAJlZAkBAmRsBAkA2AQBCAUCY1gNdHJhbnNhY3Rpb25JZAkA2AQBBQJnWgUCY0cIBQJjWAZjYWxsZXIEAmRICAUCZWQCXzEEAmRJCAUCZWQCXzIEAmR2CQENcGFyc2VJbnRWYWx1ZQEIBQJlZAJfOQQCZEoIBQJlZANfMTAEAmhQAwMJAQJiaAAGCQAAAgUCZHYFAXQJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJkdgYDCQAAAgUCaFAFAmhQBAJoUQkA/AcEBQJhVQIEYnVybgkAzAgCBQJjRwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnWgUCY0cFA25pbAMJAAACBQJoUQUCaFEEAmhSCQECZVkDCQEBLQEFAmRICQEBLQEFAmRJAAAEAmdvCAUCaFICXzEEAmVQCAUCaFICXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQDOCAIFAmRKBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAETdW5zdGFrZUFuZEdldE5vTGVzcwMCaFMCaFQCaEkEAmh2AwkBAmJoAAYJAAACBQJidwUBdAQCZ04JAMwIAgMJAQEhAQUCaHYGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1gIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTgUCZ04EAmVYCQECZVEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVYBQJlWAQCaE8JAPwHBAUCYkUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJieAkAzAgCBQJoUwUDbmlsBQNuaWwDCQAAAgUCaE8FAmhPBAJoVQkBAmRsBAkA2AQBCAUCY1gNdHJhbnNhY3Rpb25JZAkA2AQBBQJieAUCaFMIBQJjWAZjYWxsZXIEAmRICAUCaFUCXzEEAmRJCAUCaFUCXzIEAmRKCAUCaFUDXzEwBAJoVgkAzAgCAwkAZwIFAmRIBQJoVAYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoVAUDbmlsAgAJAMwIAgMJAGcCBQJkSQUCaEkGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoSQUDbmlsAgAFA25pbAMJAAACBQJoVgUCaFYEAmhKCQD8BwQFAmFVAgRidXJuCQDMCAIFAmhTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ4BQJoUwUDbmlsAwkAAAIFAmhKBQJoSgQCaFcJAQJlWQMJAQEtAQUCZEgJAQEtAQUCZEkAAAQCZ28IBQJoVwJfMQQCZVAIBQJoVwJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAM4IAgUCZEoFAmdvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmhTAmZSAmZTBAJoagoAAmJlCQD8BwQFAmFVAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCB0Jvb2xlYW4FAmJlCQACAQkArAICCQADAQUCYmUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh2AwMJAQJiaAAGCQAAAgUCYncFAXQGBQJoagQCZ04JAMwIAgMDCQEBIQEFAmh2BgkBAmd0AQUCY1gGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjWAhwYXltZW50cwAABgkBAmJhAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJoTQkBAmJDAAQCZ1oFAmJ4BAJoTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaE0FAUQCCldyIHN0IGFkZHIEAmRwCAUCY1gGY2FsbGVyBAJoWAUEdGhpcwQCaE8JAPwHBAUCaE4CD3Vuc3Rha2VJTlRFUk5BTAkAzAgCBQJnWgkAzAgCBQJoUwkAzAgCCAUCZHAFYnl0ZXMJAMwIAggFAmhYBWJ5dGVzBQNuaWwFA25pbAMJAAACBQJoTwUCaE8EAmhZCQECZlEGBQJmUgUCZlMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdaBQJoUwUDbmlsCAUCY1gGY2FsbGVyCAUCY1gMb3JpZ2luQ2FsbGVyCAUCY1gNdHJhbnNhY3Rpb25JZAQCZEoIBQJoWQJfMQQCZ2IIBQJoWQJfMgkAlAoCBQJkSgUCZ2IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmhaAmlhBAJpYgkBAmZ2BQUCaFoFAmlhAgACAAYEAmZLCAUCaWICXzEEAmRKCAUCaWICXzIEAmNICAUCaWICXzMEAmZQCAUCaWICXzQJAJQKAgUDbmlsCQCVCgMFAmZLBQJjSAUCZlACY1gBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaFoCaWEEAmljCQECZnYFBQJoWgUCaWECAAIABwQCZksIBQJpYwJfMQQCZEoIBQJpYwJfMgQCY0gIBQJpYwJfMwQCZlAIBQJpYwJfNAkAlAoCBQNuaWwJAJUKAwUCZksFAmNIBQJmUAJjWAEIYWN0aXZhdGUCAmlkAmllAwkBAiE9AgkApQgBCAUCY1gGY2FsbGVyCQClCAEFAmFVCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFrAAUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFsAAUCaWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFtAAkApAMBBQFsBQNuaWwCB3N1Y2Nlc3MCY1gBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmJrAAJjWAEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYlkJAJQKAgUDbmlsCQECYlgBBQJiWQJjWAEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY3ICY3MCY3cEAmlmCQECY3YDBQJjcgUCY3MFAmN3CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCaWYAAAkAzAgCCQCmAwEJAJEDAgUCaWYAAQkAzAgCCQCmAwEJAJEDAgUCaWYAAgUDbmlsAmNYARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFOAmlnCQCUCgIFA25pbAkBAU0CCQCnAwEFAU4FAmlnAmNYARR0b1gxOFdyYXBwZXJSRUFET05MWQIBSgFLCQCUCgIFA25pbAkApgMBCQEBSQIFAUoFAUsCY1gBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICY2ECY2IJAJQKAgUDbmlsCQCmAwEJAQJiWgIJAKcDAQUCY2EJAKcDAQUCY2ICY1gBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkbQJjZwJkTAJkTQJkTgJkTwJpaAJkUAJkUQkAlAoCBQNuaWwJAQJkSw0FAmRtBQJjZwUCZEwFAmRNBQJkTgUCZE8FAmloBQJkUAUCZFEGBwAAAgACY1gBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkbQJpaQJkbwJpaAQCZWQJAQJkbAQFAmRtBQJpaQUCZG8JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmloCQCUCgIFA25pbAkAnAoKCAUCZWQCXzEIBQJlZAJfMggFAmVkAl8zCAUCZWQCXzQIBQJlZAJfNQgFAmVkAl82CAUCZWQCXzcJAKYDAQgFAmVkAl84CAUCZWQCXzkIBQJlZANfMTACY1gBCWNoYW5nZUFtcAAEAmlqCQD8BwQFAmFVAhpnZXRDaGFuZ2VBbXBDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsBAJpawQCYVEFAmlqAwkAAQIFAmFRAglMaXN0W0FueV0EAmlsBQJhUQkAlQoDCgACYmUJAJEDAgUCaWwAAAMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAJiZQkAkQMCBQJpbAABAwkAAQIFAmJlAgNJbnQFAmJlCQACAQkArAICCQADAQUCYmUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmJlCQCRAwIFAmlsAAIDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQECYmEBAhJpbnZhbGlkIGVudHJ5IHR5cGUEAmltCAUCaWsCXzEEAmluCAUCaWsCXzIEAmlvCAUCaWsCXzMEAmlwCQENcGFyc2VJbnRWYWx1ZQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQJhbQAEAmlxCQBkAgUCaXAFAmluBAJpcgMJAGYCAAAFAmluAwkAZgIFAmlvBQJpcQUCaW8FAmlxAwkAZgIFAmlxBQJpbwUCaW8FAmlxBAJpcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXAAAAAEAml0CQBkAgUCaXMFAmltBAJnTgkAzAgCAwkAZgIFBmhlaWdodAUCaXQGCQECYmEBAhd0cnkgYWdhaW4gaW4gZmV3IGJsb2NrcwkAzAgCAwkBAiE9AgUCaXAFAmlyBgkBAmJhAQIWYWxyZWFkeSByZWFjaGVkIHRhcmdldAUDbmlsAwkAAAIFAmdOBQJnTgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFwAAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbQAJAKQDAQUCaXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFuAQUGaGVpZ2h0CQCkAwEFAmlyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAml1AQJpdgAEAml3BAJhUQkBAmdxAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3UFAmFRBQJndQMJAAECBQJhUQIEVW5pdAgFAml1D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhUQUCaXUDCQABAgUCYVECBU9yZGVyBAJmZgUCYVEEAml4CQECYmkABAJpeQMJAQJnQgAJAJQKAgYCAAkBAmZlAQUCZmYEAmFLCAUCaXkCXzEEAmFMCAUCaXkCXzIEAmFNCQD0AwMIBQJmZglib2R5Qnl0ZXMJAJEDAggFAmZmBnByb29mcwAACAUCZmYPc2VuZGVyUHVibGljS2V5BAJhTgkA9AMDCAUCZmYJYm9keUJ5dGVzCQCRAwIIBQJmZgZwcm9vZnMAAQUCaXgDAwMFAmFLBQJhTQcFAmFOBwYJAQJhSgQFAmFLBQJhTAUCYU0FAmFOAwkAAQIFAmFRAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCYVYFAmFRAwkA9AMDCAUCaXUJYm9keUJ5dGVzCQCRAwIIBQJpdQZwcm9vZnMAAAUCaXcGBAJpegkA9gMBCQEFdmFsdWUBCAUCYVYGc2NyaXB0BAJpQQkA2wQBCQEFdmFsdWUBCQCdCAIFAmFVCQECYUYABAJpQgkA8QcBBQR0aGlzAwkAAAIFAmlBBQJpegkBAiE9AgUCaUIFAml6BwkA9AMDCAUCaXUJYm9keUJ5dGVzCQCRAwIIBQJpdQZwcm9vZnMAAAUCaXcMZGiI", "height": 2661312, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FScn96AwLBy9S2vmMXsNbH85BaCQgmUyFnU5YN7THGmp Next: ARk4iq8TT1B13fWwRc73EYfFKsM1kZFsuKUd4dCK4L7x Diff:
OldNewDifferences
647647 }
648648
649649
650-func fc (fd,eP) = if (if ((eP == e))
651- then true
652- else (eP >= fd))
650+func fc (fd,eP) = if ((eP >= fd))
653651 then true
654652 else ba("updated DLp lower than current DLp")
655653
708706 func fr (fs,ai,ft,fu,cg,dQ,dR,dS,dT,dU) = {
709707 let ed = dK(ai, cg, value(ft).amount, value(ft).assetId, value(fu).amount, value(fu).assetId, fs, (ai == ""), dQ, dR, dS, dT, dU)
710708 let dv = parseIntValue(ed._8)
711- if (if (if (bh())
709+ if (if (if (if (bh())
712710 then true
713711 else (dv == r))
712+ then true
713+ else (dv == s))
714714 then true
715715 else (dv == t))
716716 then throw(("Blocked:" + toString(dv)))
11941194 then be
11951195 else throw(($getType(be) + " couldn't be cast to Boolean"))
11961196 }
1197- let hk = if (if (if (bh())
1197+ let hk = if (if (if (if (bh())
11981198 then true
11991199 else (bw == r))
1200+ then true
1201+ else (bw == s))
12001202 then true
12011203 else (bw == t))
12021204 then true
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 = 50
2727
2828 let m = "100"
2929
3030 let n = "1"
3131
3232 let o = "__"
3333
3434 let p = ""
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 1
4545
4646 let v = 2
4747
4848 let w = 3
4949
5050 let x = 4
5151
5252 let y = 5
5353
5454 let z = 6
5555
5656 let A = 7
5757
5858 let B = 8
5959
6060 let C = 9
6161
6262 let D = 1
6363
6464 let E = 6
6565
6666 let F = 7
6767
6868 let G = 10
6969
7070 let H = fraction(10, a, 10000)
7171
7272 func I (J,K) = fraction(toBigInt(J), c, toBigInt(K))
7373
7474
7575 func L (J,K) = fraction(J, c, K)
7676
7777
7878 func M (N,O) = toInt(fraction(N, toBigInt(O), c))
7979
8080
8181 func P (N,O,Q) = toInt(fraction(N, toBigInt(O), c, Q))
8282
8383
8484 func R (J,K) = fraction(J, c, toBigInt(K))
8585
8686
8787 func S (N,O) = fraction(N, toBigInt(O), c)
8888
8989
9090 func T (U,V,W) = fraction(U, V, W)
9191
9292
9393 func X (N) = if ((d > N))
9494 then -(N)
9595 else N
9696
9797
9898 func Y (N) = if ((d > N))
9999 then -(N)
100100 else N
101101
102102
103103 func Z () = "%s__factoryContract"
104104
105105
106106 func aa () = "%s__managerPublicKey"
107107
108108
109109 func ab () = "%s__managerVaultAddress"
110110
111111
112112 func ac () = "%s%s__price__last"
113113
114114
115115 func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
116116
117117
118118 func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
119119
120120
121121 func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
122122
123123
124124 func ak () = "%s__amountAsset"
125125
126126
127127 func al () = "%s__priceAsset"
128128
129129
130130 func am () = "%s__amp"
131131
132132
133133 func an (ao) = ("%s%d__amp__" + toString(ao))
134134
135135
136136 func ap () = "%s__changeAmpLastCall"
137137
138138
139139 let aq = "%s__fee"
140140
141141 let ar = valueOrElse(getInteger(this, aq), H)
142142
143143 let as = makeString(["%s", "dLp"], o)
144144
145145 let at = makeString(["%s", "dLpRefreshedHeight"], o)
146146
147147 let au = makeString(["%s", "refreshDLpDelay"], o)
148148
149149 let av = 30
150150
151151 let aw = valueOrElse(getInteger(this, au), av)
152152
153153 func ax () = "%s__factoryConfig"
154154
155155
156156 func ay () = "%s%s__matcher__publicKey"
157157
158158
159159 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160160
161161
162162 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163163
164164
165165 func aE () = "%s__shutdown"
166166
167167
168168 func aF () = "%s__allowedLpStableScriptHash"
169169
170170
171171 func aG () = "%s__feeCollectorAddress"
172172
173173
174174 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175175
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP) = {
181181 let aQ = addressFromString(aP)
182182 if ($isInstanceOf(aQ, "Address"))
183183 then {
184184 let aR = aQ
185185 aR
186186 }
187187 else this
188188 }
189189
190190
191191 func aS () = {
192192 let aT = {
193193 let aQ = getString(Z())
194194 if ($isInstanceOf(aQ, "String"))
195195 then {
196196 let aU = aQ
197197 aO(aU)
198198 }
199199 else this
200200 }
201201 let aQ = getString(aT, ab())
202202 if ($isInstanceOf(aQ, "String"))
203203 then {
204204 let aV = aQ
205205 aO(aV)
206206 }
207207 else this
208208 }
209209
210210
211211 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
212212
213213
214214 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
215215
216216
217217 func ba (bb) = throw(makeString(["lp_stable.ride:", bb], " "))
218218
219219
220220 func bc (bb) = makeString(["lp_stable.ride:", bb], " ")
221221
222222
223223 let aU = addressFromStringValue(aW(this, Z()))
224224
225225 let bd = {
226226 let be = invoke(aU, "getInFeeREADONLY", [toString(this)], nil)
227227 if ($isInstanceOf(be, "Int"))
228228 then be
229229 else throw(($getType(be) + " couldn't be cast to Int"))
230230 }
231231
232232 let bf = {
233233 let be = invoke(aU, "getOutFeeREADONLY", [toString(this)], nil)
234234 if ($isInstanceOf(be, "Int"))
235235 then be
236236 else throw(($getType(be) + " couldn't be cast to Int"))
237237 }
238238
239239 let bg = aW(this, am())
240240
241241 func bh () = valueOrElse(getBoolean(aU, aE()), false)
242242
243243
244244 func bi () = fromBase58String(aW(aU, ay()))
245245
246246
247247 let bj = addressFromStringValue(aW(aU, aG()))
248248
249249 func bk () = {
250250 let bl = aW(this, ak())
251251 let bm = aW(this, al())
252252 let bn = aZ(aU, aC(bm))
253253 let aA = aZ(aU, aC(bl))
254254 split(aW(aU, az(toString(aA), toString(bn))), o)
255255 }
256256
257257
258258 func bo (bp) = if ((bp == k))
259259 then unit
260260 else fromBase58String(bp)
261261
262262
263263 func bq (bp) = if ((bp == unit))
264264 then k
265265 else toBase58String(value(bp))
266266
267267
268268 func br (bs) = $Tuple7(addressFromStringValue(bs[u]), parseIntValue(bs[v]), fromBase58String(bs[w]), bo(bs[x]), bo(bs[y]), parseIntValue(bs[z]), parseIntValue(bs[A]))
269269
270270
271271 let bt = br(bk())
272272
273273 let bu = bt
274274
275275 let bv = bu._1
276276
277277 let bw = bu._2
278278
279279 let bx = bu._3
280280
281281 let by = bu._4
282282
283283 let bz = bu._5
284284
285285 let bA = bu._6
286286
287287 let bB = bu._7
288288
289289 func bC () = split(aW(aU, ax()), o)
290290
291291
292292 let bD = bC()
293293
294294 let bE = valueOrErrorMessage(addressFromString(bD[D]), "Invalid staking contract address")
295295
296296 let bF = valueOrErrorMessage(addressFromString(bD[F]), "Invalid slipage contract address")
297297
298298 let bG = valueOrErrorMessage(addressFromString(bD[G]), "Invalid gwx contract address")
299299
300300 let bH = valueOrErrorMessage(addressFromString(bD[E]), "Invalid gwx contract address")
301301
302302 func bI (bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS)], o)
303303
304304
305305 func bT (bU,bV,bW,bM,bP,bQ) = makeString(["%d%d%d%d%d%d", toString(bU), toString(bV), toString(bW), toString(bM), toString(bP), toString(bQ)], o)
306306
307307
308308 func bX (bY) = if ((bY == "WAVES"))
309309 then wavesBalance(this).available
310310 else assetBalance(this, fromBase58String(bY))
311311
312312
313313 func bZ (ca,cb) = fraction(ca, c, cb)
314314
315315
316316 func cc (ca,cb,Q) = fraction(ca, c, cb, Q)
317317
318318
319319 func cd (ce,cf,cg) = {
320320 let ch = fraction((ce - cf), b, cf)
321321 let ci = ((cg - X(ch)) > d)
322322 if (!(ci))
323323 then throw(("Big slpg: " + toString(ch)))
324324 else $Tuple2(ci, min([ce, cf]))
325325 }
326326
327327
328328 func cj (ck,cl,cm) = {
329329 let ch = fraction(cl, b, ck)
330330 let cn = (cm > ch)
331331 if (if (cn)
332332 then true
333333 else (cl > ck))
334334 then throw(((((((toString(cl) + " ") + toString(ck)) + " ") + toString(ch)) + " ") + toString(cm)))
335335 else cn
336336 }
337337
338338
339339 func co (cp,cq,cr,cs) = {
340340 let ct = I(cr, cp)
341341 let cu = I(cs, cq)
342342 bZ(cu, ct)
343343 }
344344
345345
346346 func cv (cr,cs,cw) = {
347347 let cx = bA
348348 let cy = bB
349349 let cz = co(cx, cy, cr, cs)
350350 let cb = I(cr, cx)
351351 let ca = I(cs, cy)
352352 let cA = I(cw, a)
353353 let cB = bZ(cb, cA)
354354 let cC = bZ(ca, cA)
355355 [cz, cB, cC]
356356 }
357357
358358
359359 func cD (cr,cs,cw) = {
360360 let cE = cv(cr, cs, cw)
361361 [M(cE[0], a), M(cE[1], a), M(cE[2], a)]
362362 }
363363
364364
365365 func cF (cG,ar) = {
366366 let cH = if ((ar == 0))
367367 then 0
368368 else fraction(cG, ar, a)
369369 $Tuple2((cG - cH), cH)
370370 }
371371
372372
373373 func cI (cJ) = {
374374 let cK = cJ[0]
375375 let cL = cJ[1]
376376 let aV = (cK + cL)
377377 if ((aV == e))
378378 then e
379379 else {
380380 let aR = parseIntValue(bg)
381381 let cM = (aR * 2)
382382 let cE = fraction(cK, cL, f)
383383 let cN = fraction(cE, i, f)
384384 let cO = fraction(toBigInt(cM), aV, f)
385385 let cP = toBigInt((cM - 1))
386386 func cQ (cR) = {
387387 let cS = fraction(cR, cR, f)
388388 let cT = fraction(cS, cR, f)
389389 let cU = fraction(cT, f, cN)
390390 fraction((cO + fraction(cU, g, f)), cR, (fraction(cP, cR, f) + fraction(h, cU, f)))
391391 }
392392
393393 func cV (cW,cX) = if (cW._2)
394394 then cW
395395 else {
396396 let cR = cW._1
397397 let cY = cQ(cR)
398398 let cZ = (cY - value(cR))
399399 let da = if ((e > cZ))
400400 then -(cZ)
401401 else cZ
402402 if ((f >= da))
403403 then $Tuple2(cY, true)
404404 else $Tuple2(cY, false)
405405 }
406406
407407 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
408408 let dc = {
409409 let dd = db
410410 let de = size(dd)
411411 let df = $Tuple2(aV, false)
412412 func dg (dh,di) = if ((di >= de))
413413 then dh
414414 else cV(dh, dd[di])
415415
416416 func dj (dh,di) = if ((di >= de))
417417 then dh
418418 else throw("List size exceeds 17")
419419
420420 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
421421 }
422422 let cR = dc._1
423423 let dk = dc._2
424424 if (dk)
425425 then cR
426426 else throw(("D calculation error, D = " + toString(cR)))
427427 }
428428 }
429429
430430
431431 func dl (dm,dn,do,dp) = {
432432 let dq = bx
433433 let dr = toBase58String(value(by))
434434 let ds = toBase58String(value(bz))
435435 let dt = bA
436436 let du = bB
437437 let dv = toString(bw)
438438 let dw = valueOrErrorMessage(assetInfo(dq), "Wrong LP id").quantity
439439 if ((toBase58String(dq) != dn))
440440 then throw("Wrong pmt asset")
441441 else {
442442 let dx = bX(dr)
443443 let dy = I(dx, dt)
444444 let dz = bX(ds)
445445 let dA = I(dz, du)
446446 let dB = bZ(dA, dy)
447447 let dC = M(dB, a)
448448 let dD = I(do, a)
449449 let dE = I(dw, a)
450450 let dF = fraction(dy, dD, dE)
451451 let dG = fraction(dA, dD, dE)
452452 let dH = P(dF, dt, FLOOR)
453453 let dI = P(dG, du, FLOOR)
454454 let dJ = if ((dm == ""))
455455 then nil
456456 else [ScriptTransfer(dp, dH, if ((dr == "WAVES"))
457457 then unit
458458 else fromBase58String(dr)), ScriptTransfer(dp, dI, if ((ds == "WAVES"))
459459 then unit
460460 else fromBase58String(ds)), StringEntry(aj(toString(dp), dm), bT(dH, dI, do, dC, height, lastBlock.timestamp)), IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC)]
461461 $Tuple10(dH, dI, dr, ds, dx, dz, dw, dB, dv, dJ)
462462 }
463463 }
464464
465465
466466 func dK (dm,cg,dL,dM,dN,dO,dp,dP,dQ,dR,dS,dT,dU) = {
467467 let dq = bx
468468 let dV = toBase58String(value(by))
469469 let dW = toBase58String(value(bz))
470470 let dX = bA
471471 let dY = bB
472472 let dv = toString(bw)
473473 let dZ = valueOrErrorMessage(assetInfo(dq), "Wr lp as").quantity
474474 let dx = if (dP)
475475 then bX(dV)
476476 else if (if (dR)
477477 then (dU == dV)
478478 else false)
479479 then (bX(dV) - dT)
480480 else if (dR)
481481 then bX(dV)
482482 else (bX(dV) - dL)
483483 let dz = if (dP)
484484 then bX(dW)
485485 else if (if (dR)
486486 then (dU == dW)
487487 else false)
488488 then (bX(dW) - dT)
489489 else if (dR)
490490 then bX(dW)
491491 else (bX(dW) - dN)
492492 let ea = I(dL, dX)
493493 let eb = I(dN, dY)
494494 let ec = bZ(eb, ea)
495495 let dy = I(dx, dX)
496496 let dA = I(dz, dY)
497497 let cl = cI([dy, dA])
498498 let ed = if ((dZ == 0))
499499 then {
500500 let ck = cI([(dy + ea), (dA + eb)])
501501 let ee = if ((ck > cl))
502502 then true
503503 else throw("D1 should be greater than D0")
504504 if ((ee == ee))
505505 then {
506506 let dB = d
507507 let ef = d
508508 let cA = ck
509509 $Tuple5(M(cA, a), M(ea, dX), M(eb, dY), bZ((dA + eb), (dy + ea)), ef)
510510 }
511511 else throw("Strict value is not equal to itself.")
512512 }
513513 else {
514514 let dB = bZ(dA, dy)
515515 let eg = fraction(X((dB - ec)), c, dB)
516516 let ef = I(cg, a)
517517 if (if (if (dS)
518518 then (dB != d)
519519 else false)
520520 then (eg > ef)
521521 else false)
522522 then throw(((("Price slippage " + toString(eg)) + " > ") + toString(ef)))
523523 else {
524524 let eh = I(dZ, a)
525525 let ei = fraction(ea, cc(dA, dy, CEILING), c, CEILING)
526526 let ej = fraction(eb, c, cc(dA, dy, FLOOR), CEILING)
527527 let ek = if ((ei > eb))
528528 then $Tuple2(ej, eb)
529529 else $Tuple2(ea, ei)
530530 let el = ek._1
531531 let em = ek._2
532532 let ck = cI([(dy + el), (dA + em)])
533533 let ee = if ((ck > cl))
534534 then true
535535 else throw("D1 should be greater than D0")
536536 if ((ee == ee))
537537 then {
538538 let cA = fraction(eh, (ck - cl), cl)
539539 $Tuple5(P(cA, a, FLOOR), P(el, dX, CEILING), P(em, dY, CEILING), dB, ef)
540540 }
541541 else throw("Strict value is not equal to itself.")
542542 }
543543 }
544544 let en = ed._1
545545 let eo = ed._2
546546 let ep = ed._3
547547 let dC = M(ed._4, a)
548548 let eq = M(ed._5, a)
549549 if ((0 >= en))
550550 then throw("LP <= 0")
551551 else {
552552 let er = if (!(dQ))
553553 then 0
554554 else en
555555 let es = (dL - eo)
556556 let et = (dN - ep)
557557 let eu = if (if (dR)
558558 then (dU == dV)
559559 else false)
560560 then $Tuple2(dT, 0)
561561 else if (if (dR)
562562 then (dU == dW)
563563 else false)
564564 then $Tuple2(0, dT)
565565 else $Tuple2(eo, ep)
566566 let ev = eu._1
567567 let ew = eu._2
568568 let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, dm), bI(ev, ew, er, dC, cg, eq, height, lastBlock.timestamp, es, et))]
569569 $Tuple13(en, er, dC, dx, dz, dZ, dq, dv, ex, es, et, dM, dO)
570570 }
571571 }
572572
573573
574574 func ey (cJ,cX,ez) = {
575575 let eA = g
576576 let eB = cJ[if ((cX == 0))
577577 then 1
578578 else 0]
579579 let eC = parseBigIntValue(m)
580580 let aR = (parseBigIntValue(bg) * eC)
581581 let aV = eB
582582 let cM = (aR * eA)
583583 let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
584584 let eE = ((aV + ((ez * eC) / cM)) - ez)
585585 func cV (cW,eF) = {
586586 let eG = cW
587587 let eH = eG._1
588588 let dk = eG._2
589589 if ((dk != unit))
590590 then cW
591591 else {
592592 let eI = (((eH * eH) + eD) / ((g * eH) + eE))
593593 let eJ = Y((eI - value(eH)))
594594 if ((f >= eJ))
595595 then $Tuple2(eI, eF)
596596 else $Tuple2(eI, unit)
597597 }
598598 }
599599
600600 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
601601 let eK = {
602602 let dd = db
603603 let de = size(dd)
604604 let df = $Tuple2(ez, unit)
605605 func dg (dh,di) = if ((di >= de))
606606 then dh
607607 else cV(dh, dd[di])
608608
609609 func dj (dh,di) = if ((di >= de))
610610 then dh
611611 else throw("List size exceeds 15")
612612
613613 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
614614 }
615615 let eH = eK._1
616616 let dk = eK._2
617617 if ((dk != unit))
618618 then eH
619619 else throw(("Y calculation error, Y = " + toString(eH)))
620620 }
621621
622622
623623 func eL (eM,eN,eO) = {
624624 let eP = fraction(cI([L(eM, toBigInt(bA)), L(eN, toBigInt(bB))]), c, eO)
625625 if ((eO == e))
626626 then e
627627 else eP
628628 }
629629
630630
631631 func eQ (eR,eS,eT) = {
632632 let eU = (toBigInt(bX(bq(by))) - eR)
633633 let eV = (toBigInt(bX(bq(bz))) - eS)
634634 let eW = (toBigInt(value(assetInfo(bx)).quantity) - eT)
635635 let eX = eL(eU, eV, eW)
636636 eX
637637 }
638638
639639
640640 func eY (eZ,fa,eT) = {
641641 let eU = (bX(bq(by)) + eZ)
642642 let eV = (bX(bq(bz)) + fa)
643643 let eW = (value(assetInfo(bx)).quantity + eT)
644644 let eP = eL(toBigInt(eU), toBigInt(eV), toBigInt(eW))
645645 let fb = [IntegerEntry(at, height), StringEntry(as, toString(eP))]
646646 $Tuple2(fb, eP)
647647 }
648648
649649
650-func fc (fd,eP) = if (if ((eP == e))
651- then true
652- else (eP >= fd))
650+func fc (fd,eP) = if ((eP >= fd))
653651 then true
654652 else ba("updated DLp lower than current DLp")
655653
656654
657655 func fe (ff) = {
658656 let eU = bX(bq(by))
659657 let eV = bX(bq(bz))
660658 let fg = ff.amount
661659 let fh = fraction(ff.amount, ff.price, a, FLOOR)
662660 let fi = if ((ff.orderType == Buy))
663661 then $Tuple2(fg, -(fh))
664662 else $Tuple2(-(fg), fh)
665663 let eZ = fi._1
666664 let fa = fi._2
667665 if (if (if (bh())
668666 then true
669667 else (bw == s))
670668 then true
671669 else (bw == t))
672670 then throw("Admin blocked")
673671 else if (if ((ff.assetPair.amountAsset != by))
674672 then true
675673 else (ff.assetPair.priceAsset != bz))
676674 then throw("Wr assets")
677675 else {
678676 let fj = parseBigIntValue(valueOrElse(getString(this, as), "0"))
679677 let fk = eY(eZ, fa, 0)
680678 let fl = fk._1
681679 let fm = fk._2
682680 let fn = (fm >= fj)
683681 let fo = makeString(["dLp=", toString(fj), " dLpNew=", toString(fm), " amountAssetBalance=", toString(eU), " priceAssetBalance=", toString(eV), " amountAssetBalanceDelta=", toString(eZ), " priceAssetBalanceDelta=", toString(fa), " height=", toString(height)], "")
684682 $Tuple2(fn, fo)
685683 }
686684 }
687685
688686
689687 func fp (cX) = if ((size(cX.payments) != 1))
690688 then throw("1 pmnt exp")
691689 else {
692690 let fq = value(cX.payments[0])
693691 let dn = value(fq.assetId)
694692 let dT = fq.amount
695693 let ed = dl(toBase58String(cX.transactionId), toBase58String(dn), dT, cX.caller)
696694 let dH = ed._1
697695 let dI = ed._2
698696 let dv = parseIntValue(ed._9)
699697 let dJ = ed._10
700698 if (if (bh())
701699 then true
702700 else (dv == t))
703701 then throw(("Admin blocked: " + toString(dv)))
704702 else $Tuple5(dH, dI, dT, dn, dJ)
705703 }
706704
707705
708706 func fr (fs,ai,ft,fu,cg,dQ,dR,dS,dT,dU) = {
709707 let ed = dK(ai, cg, value(ft).amount, value(ft).assetId, value(fu).amount, value(fu).assetId, fs, (ai == ""), dQ, dR, dS, dT, dU)
710708 let dv = parseIntValue(ed._8)
711- if (if (if (bh())
709+ if (if (if (if (bh())
712710 then true
713711 else (dv == r))
712+ then true
713+ else (dv == s))
714714 then true
715715 else (dv == t))
716716 then throw(("Blocked:" + toString(dv)))
717717 else ed
718718 }
719719
720720
721721 func fv (fw,dn,dp,ai,fx) = {
722722 let dr = toBase58String(value(by))
723723 let ds = toBase58String(value(bz))
724724 let dq = bx
725725 let dX = bA
726726 let dY = bB
727727 let eW = toBigInt(valueOrErrorMessage(assetInfo(dq), "invalid lp asset").quantity)
728728 let fy = if ((eW > e))
729729 then true
730730 else throw("initial deposit requires all coins")
731731 if ((fy == fy))
732732 then {
733733 let dx = bX(dr)
734734 let dz = bX(ds)
735735 let fz = if ((ai == ""))
736736 then $Tuple2(dx, dz)
737737 else if ((dn == dr))
738738 then if ((fw > dx))
739739 then throw("invalid payment amount")
740740 else $Tuple2((dx - fw), dz)
741741 else if ((dn == ds))
742742 then if ((fw > dz))
743743 then throw("invalid payment amount")
744744 else $Tuple2(dx, (dz - fw))
745745 else throw("wrong pmtAssetId")
746746 let fA = fz._1
747747 let fB = fz._2
748748 let fC = if ((dn == dr))
749749 then $Tuple2(fw, 0)
750750 else if ((dn == ds))
751751 then $Tuple2(0, fw)
752752 else throw("invalid payment")
753753 let fD = fC._1
754754 let fE = fC._2
755755 let fF = if (fx)
756756 then $Tuple3(cF(fD, bd)._1, cF(fE, bd)._1, cF(fw, bd)._2)
757757 else $Tuple3(fD, fE, 0)
758758 let fG = fF._1
759759 let fH = fF._2
760760 let cH = fF._3
761761 let fI = (fA + fG)
762762 let fJ = (fB + fH)
763763 let cl = cI([I(fA, bA), I(fB, bB)])
764764 let ck = cI([I(fI, bA), I(fJ, bB)])
765765 let ee = if ((ck > cl))
766766 then true
767767 else throw()
768768 if ((ee == ee))
769769 then {
770770 let fK = fraction(eW, (ck - cl), cl, FLOOR)
771771 let dC = M(bZ(I(fJ, dY), I(fI, dX)), a)
772772 let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, ai), bI(fD, fE, toInt(fK), dC, 0, 0, height, lastBlock.timestamp, 0, 0))]
773773 let fL = fraction(fB, a, fA)
774774 let fM = fraction(fw, a, (fL + a))
775775 let fN = (fw - fM)
776776 let fO = fraction(eW, toBigInt(fN), toBigInt(fB))
777777 let fP = toInt(fraction((fK - fO), b, fO))
778778 $Tuple4(toInt(fK), ex, cH, fP)
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784
785785
786786 func fQ (fR,fS,fT,fs,fU,fV) = {
787787 let dq = toBase58String(value(bx))
788788 let dr = toBase58String(value(by))
789789 let ds = toBase58String(value(bz))
790790 let fW = bA
791791 let fX = bB
792792 let fY = bw
793793 let dp = if ((fs == bH))
794794 then fU
795795 else fs
796796 let fq = value(fT[0])
797797 let dn = value(fq.assetId)
798798 let dT = fq.amount
799799 let eX = eQ(e, e, e)
800800 if ((eX == eX))
801801 then {
802802 let dm = toBase58String(fV)
803803 if ((dq != toBase58String(dn)))
804804 then throw("Wrong LP")
805805 else {
806806 let dx = bX(dr)
807807 let dz = bX(ds)
808808 let fZ = {
809809 let be = invoke(this, "getOneTknV2READONLY", [fR, dT], nil)
810810 if ($isInstanceOf(be, "(Int, Int)"))
811811 then be
812812 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
813813 }
814814 if ((fZ == fZ))
815815 then {
816816 let cH = fZ._2
817817 let ga = fZ._1
818818 let gb = if (if ((fS > 0))
819819 then (fS > ga)
820820 else false)
821821 then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
822822 else ga
823823 let gc = if ((fR == dr))
824824 then $Tuple4(gb, 0, ((dx - gb) - cH), dz)
825825 else if ((fR == ds))
826826 then $Tuple4(0, gb, dx, ((dz - gb) - cH))
827827 else throw("invalid out asset id")
828828 let gd = gc._1
829829 let ge = gc._2
830830 let fI = gc._3
831831 let fJ = gc._4
832832 let gf = bZ(I(fJ, fX), I(fI, fW))
833833 let gg = M(gf, a)
834834 let gh = if ((fR == "WAVES"))
835835 then unit
836836 else fromBase58String(fR)
837837 let gi = if ((cH > 0))
838838 then [ScriptTransfer(bj, cH, gh)]
839839 else nil
840840 let dJ = ([ScriptTransfer(dp, gb, gh), StringEntry(aj(toString(dp), dm), bT(gd, ge, dT, gg, height, lastBlock.timestamp)), IntegerEntry(ac(), gg), IntegerEntry(ad(height, lastBlock.timestamp), gg)] ++ gi)
841841 if ((dJ == dJ))
842842 then {
843843 let gj = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
844844 if ((gj == gj))
845845 then {
846846 let gk = {
847847 let gl = if ((this == bj))
848848 then 0
849849 else cH
850850 let gm = if ((bo(fR) == by))
851851 then true
852852 else false
853853 if (gm)
854854 then $Tuple2(-((ga + gl)), 0)
855855 else $Tuple2(0, -((ga + gl)))
856856 }
857857 let eZ = gk._1
858858 let fa = gk._2
859859 let gn = eY(eZ, fa, 0)
860860 let go = gn._1
861861 let eP = gn._2
862862 let gp = fc(eX, eP)
863863 if ((gp == gp))
864864 then $Tuple2((dJ ++ go), gb)
865865 else throw("Strict value is not equal to itself.")
866866 }
867867 else throw("Strict value is not equal to itself.")
868868 }
869869 else throw("Strict value is not equal to itself.")
870870 }
871871 else throw("Strict value is not equal to itself.")
872872 }
873873 }
874874 else throw("Strict value is not equal to itself.")
875875 }
876876
877877
878878 func gq () = {
879879 let gr = aS()
880880 let aQ = getString(gr, aa())
881881 if ($isInstanceOf(aQ, "String"))
882882 then {
883883 let aV = aQ
884884 fromBase58String(aV)
885885 }
886886 else if ($isInstanceOf(aQ, "Unit"))
887887 then unit
888888 else throw("Match error")
889889 }
890890
891891
892892 let gs = throw("Permission denied")
893893
894894 func gt (cX) = {
895895 let aQ = gq()
896896 if ($isInstanceOf(aQ, "ByteVector"))
897897 then {
898898 let gu = aQ
899899 (cX.callerPublicKey == gu)
900900 }
901901 else if ($isInstanceOf(aQ, "Unit"))
902902 then (cX.caller == this)
903903 else throw("Match error")
904904 }
905905
906906
907907 func gv (cX) = {
908908 let aQ = gq()
909909 if ($isInstanceOf(aQ, "ByteVector"))
910910 then {
911911 let gu = aQ
912912 if ((cX.callerPublicKey == gu))
913913 then true
914914 else gs
915915 }
916916 else if ($isInstanceOf(aQ, "Unit"))
917917 then if ((cX.caller == this))
918918 then true
919919 else gs
920920 else throw("Match error")
921921 }
922922
923923
924924 func gw (gx,ez,gy) = {
925925 let bs = bk()
926926 let dr = bs[x]
927927 let ds = bs[y]
928928 let eA = g
929929 let eC = parseBigIntValue(m)
930930 let aR = (parseBigIntValue(bg) * eC)
931931 let cJ = if ((gx == false))
932932 then [(toBigInt(bX(dr)) + gy), toBigInt(bX(ds))]
933933 else [(toBigInt(bX(ds)) + gy), toBigInt(bX(dr))]
934934 let eB = cJ[0]
935935 let aV = eB
936936 let cM = (aR * eA)
937937 let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
938938 let eE = ((aV + ((ez * eC) / cM)) - ez)
939939 func cV (cW,eF) = {
940940 let gz = cW
941941 let eH = gz._1
942942 let dk = gz._2
943943 if ((dk != unit))
944944 then cW
945945 else {
946946 let eI = (((eH * eH) + eD) / ((g * eH) + eE))
947947 let eJ = Y((eI - value(eH)))
948948 if ((f >= eJ))
949949 then $Tuple2(eI, eF)
950950 else $Tuple2(eI, unit)
951951 }
952952 }
953953
954954 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
955955 let gA = {
956956 let dd = db
957957 let de = size(dd)
958958 let df = $Tuple2(ez, unit)
959959 func dg (dh,di) = if ((di >= de))
960960 then dh
961961 else cV(dh, dd[di])
962962
963963 func dj (dh,di) = if ((di >= de))
964964 then dh
965965 else throw("List size exceeds 15")
966966
967967 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
968968 }
969969 let eH = gA._1
970970 let dk = gA._2
971971 if ((dk != unit))
972972 then eH
973973 else throw(("Y calculation error, Y = " + toString(eH)))
974974 }
975975
976976
977977 func gB () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
978978
979979
980980 @Callable(cX)
981981 func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
982982 let gE = if ((gx == false))
983983 then {
984984 let gF = aW(this, al())
985985 let gy = (toBigInt(bX(aW(this, ak()))) + toBigInt(gC))
986986 $Tuple2(gF, gy)
987987 }
988988 else {
989989 let gF = aW(this, ak())
990990 let gy = (toBigInt(bX(aW(this, al()))) + toBigInt(gC))
991991 $Tuple2(gF, gy)
992992 }
993993 let gF = gE._1
994994 let gy = gE._2
995995 let bs = bk()
996996 let dr = bs[x]
997997 let ds = bs[y]
998998 let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
999999 let ez = cI(cJ)
10001000 let eH = gw(gx, ez, toBigInt(gC))
10011001 let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
10021002 let gH = max([0, toInt(gG)])
10031003 let gI = if ((gx == false))
10041004 then [((toBigInt(bX(dr)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
10051005 else [(toBigInt(bX(dr)) - gG), ((toBigInt(bX(ds)) + toBigInt(gC)) + toBigInt(gD))]
10061006 let gJ = cI(gI)
10071007 let ee = if ((gJ >= ez))
10081008 then true
10091009 else throw(makeString(["new D is fewer error", toString(ez), toString(gJ)], "__"))
10101010 if ((ee == ee))
10111011 then $Tuple2(nil, gH)
10121012 else throw("Strict value is not equal to itself.")
10131013 }
10141014
10151015
10161016
10171017 @Callable(cX)
10181018 func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
10191019 let gM = {
10201020 let be = invoke(aU, "getSwapContractREADONLY", nil, nil)
10211021 if ($isInstanceOf(be, "String"))
10221022 then be
10231023 else throw(($getType(be) + " couldn't be cast to String"))
10241024 }
10251025 let gN = [if ((value(cX.payments[0]).amount >= gC))
10261026 then true
10271027 else ba("Wrong amount"), if ((cX.caller == addressFromStringValue(gM)))
10281028 then true
10291029 else ba("Permission denied")]
10301030 if ((gN == gN))
10311031 then {
10321032 let fq = value(cX.payments[0])
10331033 let gO = bq(fq.assetId)
10341034 let gP = if ((gx == false))
10351035 then {
10361036 let gF = aW(this, al())
10371037 let gy = (bX(gO) - value(cX.payments[0]).amount)
10381038 $Tuple2(gF, gy)
10391039 }
10401040 else {
10411041 let gF = aW(this, ak())
10421042 let gy = (bX(gO) - value(cX.payments[0]).amount)
10431043 $Tuple2(gF, gy)
10441044 }
10451045 let gF = gP._1
10461046 let gy = gP._2
10471047 let bs = bk()
10481048 let dr = bs[x]
10491049 let ds = bs[y]
10501050 let cJ = if ((gx == false))
10511051 then [(toBigInt(bX(dr)) - toBigInt(value(cX.payments[0]).amount)), toBigInt(bX(ds))]
10521052 else [toBigInt(bX(dr)), (toBigInt(bX(ds)) - toBigInt(value(cX.payments[0]).amount))]
10531053 let ez = cI(cJ)
10541054 let eH = gw(gx, ez, toBigInt(0))
10551055 let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
10561056 let gH = max([0, toInt(gG)])
10571057 let gQ = if ((gH >= gK))
10581058 then true
10591059 else throw("Exchange result is fewer coins than expected")
10601060 if ((gQ == gQ))
10611061 then {
10621062 let gI = if ((gx == false))
10631063 then [(toBigInt(bX(dr)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
10641064 else [(toBigInt(bX(dr)) - gG), (toBigInt(bX(ds)) + toBigInt(gD))]
10651065 let gJ = cI(gI)
10661066 let ee = if ((gJ >= ez))
10671067 then true
10681068 else throw("new D is fewer error")
10691069 if ((ee == ee))
10701070 then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bo(gF))], gH)
10711071 else throw("Strict value is not equal to itself.")
10721072 }
10731073 else throw("Strict value is not equal to itself.")
10741074 }
10751075 else throw("Strict value is not equal to itself.")
10761076 }
10771077
10781078
10791079
10801080 @Callable(cX)
10811081 func constructor (Z) = {
10821082 let eD = gv(cX)
10831083 if ((eD == eD))
10841084 then [StringEntry(Z(), Z)]
10851085 else throw("Strict value is not equal to itself.")
10861086 }
10871087
10881088
10891089
10901090 @Callable(cX)
10911091 func put (gR,gS) = {
10921092 let gT = bC()
10931093 let gU = valueOrErrorMessage(addressFromString(gT[D]), "Wr st addr")
10941094 let gV = valueOrErrorMessage(addressFromString(gT[F]), "Wr sl addr")
10951095 if ((0 > gR))
10961096 then throw("Wrong slippage")
10971097 else if ((size(cX.payments) != 2))
10981098 then throw("2 pmnts expd")
10991099 else {
11001100 let gW = toBigInt(value(cX.payments[0]).amount)
11011101 let gX = toBigInt(value(cX.payments[1]).amount)
11021102 let eU = (toBigInt(bX(bq(by))) - gW)
11031103 if ((eU == eU))
11041104 then {
11051105 let eV = (toBigInt(bX(bq(bz))) - gX)
11061106 if ((eV == eV))
11071107 then {
11081108 let eW = toBigInt(value(assetInfo(bx)).quantity)
11091109 if ((eW == eW))
11101110 then {
11111111 let eX = eQ(gW, gX, toBigInt(0))
11121112 if ((eX == eX))
11131113 then {
11141114 let gY = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gR, true, false, true, 0, "")
11151115 let er = gY._2
11161116 let gZ = gY._7
11171117 let dJ = gY._9
11181118 let es = gY._10
11191119 let et = gY._11
11201120 let dr = gY._12
11211121 let ds = gY._13
11221122 let ed = invoke(aU, "emit", [er], nil)
11231123 if ((ed == ed))
11241124 then {
11251125 let ha = {
11261126 let aQ = ed
11271127 if ($isInstanceOf(aQ, "Address"))
11281128 then {
11291129 let hb = aQ
11301130 invoke(hb, "emit", [er], nil)
11311131 }
11321132 else unit
11331133 }
11341134 if ((ha == ha))
11351135 then {
11361136 let hc = if ((es > 0))
11371137 then invoke(gV, "put", nil, [AttachedPayment(dr, es)])
11381138 else nil
11391139 if ((hc == hc))
11401140 then {
11411141 let hd = if ((et > 0))
11421142 then invoke(gV, "put", nil, [AttachedPayment(ds, et)])
11431143 else nil
11441144 if ((hd == hd))
11451145 then {
11461146 let he = if (gS)
11471147 then {
11481148 let hf = invoke(gU, "stake", nil, [AttachedPayment(gZ, er)])
11491149 if ((hf == hf))
11501150 then nil
11511151 else throw("Strict value is not equal to itself.")
11521152 }
11531153 else [ScriptTransfer(cX.caller, er, gZ)]
11541154 let hg = eY(0, 0, 0)
11551155 let go = hg._1
11561156 let eP = hg._2
11571157 let hh = if ((eP >= eX))
11581158 then true
11591159 else ba(makeString(["updated DLp lower than current DLp", toString(eU), toString(eV), toString(eW), toString(eX), toString(eP), toString(es), toString(et)], " "))
11601160 if ((hh == hh))
11611161 then {
11621162 let hi = value(assetInfo(bx)).quantity
11631163 if ((hi == hi))
11641164 then ((dJ ++ he) ++ go)
11651165 else throw("Strict value is not equal to itself.")
11661166 }
11671167 else throw("Strict value is not equal to itself.")
11681168 }
11691169 else throw("Strict value is not equal to itself.")
11701170 }
11711171 else throw("Strict value is not equal to itself.")
11721172 }
11731173 else throw("Strict value is not equal to itself.")
11741174 }
11751175 else throw("Strict value is not equal to itself.")
11761176 }
11771177 else throw("Strict value is not equal to itself.")
11781178 }
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181 else throw("Strict value is not equal to itself.")
11821182 }
11831183 else throw("Strict value is not equal to itself.")
11841184 }
11851185 }
11861186
11871187
11881188
11891189 @Callable(cX)
11901190 func putOneTknV2 (fS,gS) = {
11911191 let hj = {
11921192 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11931193 if ($isInstanceOf(be, "Boolean"))
11941194 then be
11951195 else throw(($getType(be) + " couldn't be cast to Boolean"))
11961196 }
1197- let hk = if (if (if (bh())
1197+ let hk = if (if (if (if (bh())
11981198 then true
11991199 else (bw == r))
1200+ then true
1201+ else (bw == s))
12001202 then true
12011203 else (bw == t))
12021204 then true
12031205 else hj
12041206 let gN = [if (if (!(hk))
12051207 then true
12061208 else gt(cX))
12071209 then true
12081210 else ba("put operation is blocked by admin"), if ((size(cX.payments) == 1))
12091211 then true
12101212 else ba("exactly 1 payment are expected")]
12111213 if ((gN == gN))
12121214 then {
12131215 let dr = toBase58String(value(by))
12141216 let ds = toBase58String(value(bz))
12151217 let dq = bx
12161218 let fW = bA
12171219 let fX = bB
12181220 let dp = if ((cX.caller == this))
12191221 then cX.originCaller
12201222 else cX.caller
12211223 let fq = value(cX.payments[0])
12221224 let dn = toBase58String(value(fq.assetId))
12231225 let dT = fq.amount
12241226 let eX = if ((fq.assetId == by))
12251227 then eQ(toBigInt(dT), toBigInt(0), toBigInt(0))
12261228 else eQ(toBigInt(0), toBigInt(dT), toBigInt(0))
12271229 if ((eX == eX))
12281230 then {
12291231 let hl = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
12301232 if ((hl == hl))
12311233 then {
12321234 let cH = hl._3
12331235 let dJ = hl._2
12341236 let hm = hl._1
12351237 let er = if (if ((fS > 0))
12361238 then (fS > hm)
12371239 else false)
12381240 then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
12391241 else hm
12401242 let gY = invoke(aU, "emit", [er], nil)
12411243 if ((gY == gY))
12421244 then {
12431245 let ha = {
12441246 let aQ = gY
12451247 if ($isInstanceOf(aQ, "Address"))
12461248 then {
12471249 let hb = aQ
12481250 invoke(hb, "emit", [er], nil)
12491251 }
12501252 else unit
12511253 }
12521254 if ((ha == ha))
12531255 then {
12541256 let he = if (gS)
12551257 then {
12561258 let hf = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
12571259 if ((hf == hf))
12581260 then nil
12591261 else throw("Strict value is not equal to itself.")
12601262 }
12611263 else [ScriptTransfer(cX.caller, er, dq)]
12621264 let gi = if ((cH > 0))
12631265 then [ScriptTransfer(bj, cH, fromBase58String(dn))]
12641266 else nil
12651267 let hn = if ((this == bj))
12661268 then $Tuple2(0, 0)
12671269 else {
12681270 let ho = if ((fq.assetId == by))
12691271 then true
12701272 else false
12711273 if (ho)
12721274 then $Tuple2(-(cH), 0)
12731275 else $Tuple2(0, -(cH))
12741276 }
12751277 let eZ = hn._1
12761278 let fa = hn._2
12771279 let hp = eY(eZ, fa, 0)
12781280 let go = hp._1
12791281 let eP = hp._2
12801282 let gp = fc(eX, eP)
12811283 if ((gp == gp))
12821284 then $Tuple2((((dJ ++ he) ++ gi) ++ go), er)
12831285 else throw("Strict value is not equal to itself.")
12841286 }
12851287 else throw("Strict value is not equal to itself.")
12861288 }
12871289 else throw("Strict value is not equal to itself.")
12881290 }
12891291 else throw("Strict value is not equal to itself.")
12901292 }
12911293 else throw("Strict value is not equal to itself.")
12921294 }
12931295 else throw("Strict value is not equal to itself.")
12941296 }
12951297
12961298
12971299
12981300 @Callable(cX)
12991301 func putForFree (hq) = if ((0 > hq))
13001302 then throw("Wrong slpg")
13011303 else if ((size(cX.payments) != 2))
13021304 then throw("2 pmnts expd")
13031305 else {
13041306 let hr = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hq, false, false, true, 0, "")
13051307 let dJ = hr._9
13061308 let gW = toBigInt(value(cX.payments[0]).amount)
13071309 let gX = toBigInt(value(cX.payments[1]).amount)
13081310 let eX = eQ(gW, gX, toBigInt(0))
13091311 if ((eX == eX))
13101312 then {
13111313 let hs = eY(0, 0, 0)
13121314 let go = hs._1
13131315 let eP = hs._2
13141316 let gp = fc(eX, eP)
13151317 if ((gp == gp))
13161318 then (dJ ++ go)
13171319 else throw("Strict value is not equal to itself.")
13181320 }
13191321 else throw("Strict value is not equal to itself.")
13201322 }
13211323
13221324
13231325
13241326 @Callable(cX)
13251327 func get () = {
13261328 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
13271329 if ((eX == eX))
13281330 then {
13291331 let ed = fp(cX)
13301332 let ht = ed._1
13311333 let dI = ed._2
13321334 let dT = ed._3
13331335 let dn = ed._4
13341336 let dJ = ed._5
13351337 let eE = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
13361338 if ((eE == eE))
13371339 then {
13381340 let hu = eY(-(ht), -(dI), 0)
13391341 let go = hu._1
13401342 let eP = hu._2
13411343 let gp = fc(eX, eP)
13421344 if ((gp == gp))
13431345 then (dJ ++ go)
13441346 else throw("Strict value is not equal to itself.")
13451347 }
13461348 else throw("Strict value is not equal to itself.")
13471349 }
13481350 else throw("Strict value is not equal to itself.")
13491351 }
13501352
13511353
13521354
13531355 @Callable(cX)
13541356 func getOneTknV2 (fR,fS) = {
13551357 let hj = {
13561358 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13571359 if ($isInstanceOf(be, "Boolean"))
13581360 then be
13591361 else throw(($getType(be) + " couldn't be cast to Boolean"))
13601362 }
13611363 let hv = if (if (bh())
13621364 then true
13631365 else (bw == t))
13641366 then true
13651367 else hj
13661368 let gN = [if (if (!(hv))
13671369 then true
13681370 else gt(cX))
13691371 then true
13701372 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 1))
13711373 then true
13721374 else ba("exactly 1 payment are expected")]
13731375 if ((gN == gN))
13741376 then {
13751377 let hw = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
13761378 let dJ = hw._1
13771379 let gb = hw._2
13781380 $Tuple2(dJ, gb)
13791381 }
13801382 else throw("Strict value is not equal to itself.")
13811383 }
13821384
13831385
13841386
13851387 @Callable(cX)
13861388 func refreshDLp () = {
13871389 let hx = valueOrElse(getInteger(at), 0)
13881390 let hy = if (((height - hx) >= aw))
13891391 then unit
13901392 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
13911393 if ((hy == hy))
13921394 then {
13931395 let fj = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
13941396 let hz = eY(0, 0, 0)
13951397 let hA = hz._1
13961398 let eP = hz._2
13971399 let fb = if ((fj != eP))
13981400 then hA
13991401 else ba("nothing to refresh")
14001402 $Tuple2(fb, toString(eP))
14011403 }
14021404 else throw("Strict value is not equal to itself.")
14031405 }
14041406
14051407
14061408
14071409 @Callable(cX)
14081410 func getOneTknV2READONLY (fR,hB) = {
14091411 let dr = toBase58String(value(by))
14101412 let ds = toBase58String(value(bz))
14111413 let dq = toBase58String(value(bx))
14121414 let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
14131415 let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dq)), "invalid lp asset").quantity)
14141416 let cl = cI(cJ)
14151417 let ck = (cl - fraction(toBigInt(hB), cl, eO))
14161418 let hC = if ((fR == dr))
14171419 then 0
14181420 else if ((fR == ds))
14191421 then 1
14201422 else throw("invalid out asset id")
14211423 let hD = ey(cJ, hC, ck)
14221424 let gG = (cJ[hC] - hD)
14231425 let gH = max([0, toInt((gG - f))])
14241426 let hE = cF(gH, bf)
14251427 let ga = hE._1
14261428 let cH = hE._2
14271429 $Tuple2(nil, $Tuple2(ga, cH))
14281430 }
14291431
14301432
14311433
14321434 @Callable(cX)
14331435 func getOneTknV2WithBonusREADONLY (fR,hB) = {
14341436 let dr = toBase58String(value(by))
14351437 let ds = toBase58String(value(bz))
14361438 let dq = toBase58String(value(bx))
14371439 let dx = bX(dr)
14381440 let dz = bX(ds)
14391441 let hF = {
14401442 let be = invoke(this, "getOneTknV2READONLY", [fR, hB], nil)
14411443 if ($isInstanceOf(be, "(Int, Int)"))
14421444 then be
14431445 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14441446 }
14451447 let ga = hF._1
14461448 let cH = hF._2
14471449 let ed = dl("", dq, hB, this)
14481450 let dH = ed._1
14491451 let dI = ed._2
14501452 let hG = (dH + dI)
14511453 let fP = if ((hG == 0))
14521454 then if ((ga == 0))
14531455 then 0
14541456 else throw("bonus calculation error")
14551457 else fraction((ga - hG), a, hG)
14561458 $Tuple2(nil, $Tuple3(ga, cH, fP))
14571459 }
14581460
14591461
14601462
14611463 @Callable(cX)
14621464 func getNoLess (hH,hI) = {
14631465 let ed = fp(cX)
14641466 let dH = ed._1
14651467 let dI = ed._2
14661468 let dT = ed._3
14671469 let dn = ed._4
14681470 let dJ = ed._5
14691471 if ((hH > dH))
14701472 then throw(((("Failed: " + toString(dH)) + " < ") + toString(hH)))
14711473 else if ((hI > dI))
14721474 then throw(((("Failed: " + toString(dI)) + " < ") + toString(hI)))
14731475 else {
14741476 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
14751477 if ((eX == eX))
14761478 then {
14771479 let hJ = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
14781480 if ((hJ == hJ))
14791481 then {
14801482 let hK = eY(-(dH), -(dI), 0)
14811483 let go = hK._1
14821484 let eP = hK._2
14831485 let gp = fc(eX, eP)
14841486 if ((gp == gp))
14851487 then (dJ ++ go)
14861488 else throw("Strict value is not equal to itself.")
14871489 }
14881490 else throw("Strict value is not equal to itself.")
14891491 }
14901492 else throw("Strict value is not equal to itself.")
14911493 }
14921494 }
14931495
14941496
14951497
14961498 @Callable(cX)
14971499 func unstakeAndGet (cG) = {
14981500 let hL = if ((size(cX.payments) != 0))
14991501 then throw("No pmnts expd")
15001502 else true
15011503 if ((hL == hL))
15021504 then {
15031505 let hM = bC()
15041506 let gZ = bx
15051507 let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
15061508 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15071509 if ((eX == eX))
15081510 then {
15091511 let hO = invoke(hN, "unstake", [toBase58String(gZ), cG], nil)
15101512 if ((hO == hO))
15111513 then {
15121514 let ed = dl(toBase58String(cX.transactionId), toBase58String(gZ), cG, cX.caller)
15131515 let dH = ed._1
15141516 let dI = ed._2
15151517 let dv = parseIntValue(ed._9)
15161518 let dJ = ed._10
15171519 let hP = if (if (bh())
15181520 then true
15191521 else (dv == t))
15201522 then throw(("Blocked: " + toString(dv)))
15211523 else true
15221524 if ((hP == hP))
15231525 then {
15241526 let hQ = invoke(aU, "burn", [cG], [AttachedPayment(gZ, cG)])
15251527 if ((hQ == hQ))
15261528 then {
15271529 let hR = eY(-(dH), -(dI), 0)
15281530 let go = hR._1
15291531 let eP = hR._2
15301532 let gp = fc(eX, eP)
15311533 if ((gp == gp))
15321534 then (dJ ++ go)
15331535 else throw("Strict value is not equal to itself.")
15341536 }
15351537 else throw("Strict value is not equal to itself.")
15361538 }
15371539 else throw("Strict value is not equal to itself.")
15381540 }
15391541 else throw("Strict value is not equal to itself.")
15401542 }
15411543 else throw("Strict value is not equal to itself.")
15421544 }
15431545 else throw("Strict value is not equal to itself.")
15441546 }
15451547
15461548
15471549
15481550 @Callable(cX)
15491551 func unstakeAndGetNoLess (hS,hT,hI) = {
15501552 let hv = if (bh())
15511553 then true
15521554 else (bw == t)
15531555 let gN = [if (!(hv))
15541556 then true
15551557 else throw("get operation is blocked by admin"), if ((size(cX.payments) == 0))
15561558 then true
15571559 else throw("no payments are expected")]
15581560 if ((gN == gN))
15591561 then {
15601562 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15611563 if ((eX == eX))
15621564 then {
15631565 let hO = invoke(bE, "unstake", [toBase58String(bx), hS], nil)
15641566 if ((hO == hO))
15651567 then {
15661568 let hU = dl(toBase58String(cX.transactionId), toBase58String(bx), hS, cX.caller)
15671569 let dH = hU._1
15681570 let dI = hU._2
15691571 let dJ = hU._10
15701572 let hV = [if ((dH >= hT))
15711573 then true
15721574 else throw(makeString(["amount asset amount to receive is less than ", toString(hT)], "")), if ((dI >= hI))
15731575 then true
15741576 else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
15751577 if ((hV == hV))
15761578 then {
15771579 let hJ = invoke(aU, "burn", [hS], [AttachedPayment(bx, hS)])
15781580 if ((hJ == hJ))
15791581 then {
15801582 let hW = eY(-(dH), -(dI), 0)
15811583 let go = hW._1
15821584 let eP = hW._2
15831585 let gp = fc(eX, eP)
15841586 if ((gp == gp))
15851587 then (dJ ++ go)
15861588 else throw("Strict value is not equal to itself.")
15871589 }
15881590 else throw("Strict value is not equal to itself.")
15891591 }
15901592 else throw("Strict value is not equal to itself.")
15911593 }
15921594 else throw("Strict value is not equal to itself.")
15931595 }
15941596 else throw("Strict value is not equal to itself.")
15951597 }
15961598 else throw("Strict value is not equal to itself.")
15971599 }
15981600
15991601
16001602
16011603 @Callable(cX)
16021604 func unstakeAndGetOneTknV2 (hS,fR,fS) = {
16031605 let hj = {
16041606 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16051607 if ($isInstanceOf(be, "Boolean"))
16061608 then be
16071609 else throw(($getType(be) + " couldn't be cast to Boolean"))
16081610 }
16091611 let hv = if (if (bh())
16101612 then true
16111613 else (bw == t))
16121614 then true
16131615 else hj
16141616 let gN = [if (if (!(hv))
16151617 then true
16161618 else gt(cX))
16171619 then true
16181620 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 0))
16191621 then true
16201622 else ba("no payments are expected")]
16211623 if ((gN == gN))
16221624 then {
16231625 let hM = bC()
16241626 let gZ = bx
16251627 let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
16261628 let dp = cX.caller
16271629 let hX = this
16281630 let hO = invoke(hN, "unstakeINTERNAL", [gZ, hS, dp.bytes, hX.bytes], nil)
16291631 if ((hO == hO))
16301632 then {
16311633 let hY = fQ(fR, fS, [AttachedPayment(gZ, hS)], cX.caller, cX.originCaller, cX.transactionId)
16321634 let dJ = hY._1
16331635 let gb = hY._2
16341636 $Tuple2(dJ, gb)
16351637 }
16361638 else throw("Strict value is not equal to itself.")
16371639 }
16381640 else throw("Strict value is not equal to itself.")
16391641 }
16401642
16411643
16421644
16431645 @Callable(cX)
16441646 func putOneTknV2WithBonusREADONLY (hZ,ia) = {
16451647 let ib = fv(hZ, ia, "", "", true)
16461648 let fK = ib._1
16471649 let dJ = ib._2
16481650 let cH = ib._3
16491651 let fP = ib._4
16501652 $Tuple2(nil, $Tuple3(fK, cH, fP))
16511653 }
16521654
16531655
16541656
16551657 @Callable(cX)
16561658 func putOneTknV2WithoutTakeFeeREADONLY (hZ,ia) = {
16571659 let ic = fv(hZ, ia, "", "", false)
16581660 let fK = ic._1
16591661 let dJ = ic._2
16601662 let cH = ic._3
16611663 let fP = ic._4
16621664 $Tuple2(nil, $Tuple3(fK, cH, fP))
16631665 }
16641666
16651667
16661668
16671669 @Callable(cX)
16681670 func activate (id,ie) = if ((toString(cX.caller) != toString(aU)))
16691671 then throw("denied")
16701672 else $Tuple2([StringEntry(ak(), id), StringEntry(al(), ie), StringEntry(am(), toString(l))], "success")
16711673
16721674
16731675
16741676 @Callable(cX)
16751677 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
16761678
16771679
16781680
16791681 @Callable(cX)
16801682 func getAccBalanceWrapperREADONLY (bY) = $Tuple2(nil, bX(bY))
16811683
16821684
16831685
16841686 @Callable(cX)
16851687 func calcPricesWrapperREADONLY (cr,cs,cw) = {
16861688 let if = cv(cr, cs, cw)
16871689 $Tuple2(nil, [toString(if[0]), toString(if[1]), toString(if[2])])
16881690 }
16891691
16901692
16911693
16921694 @Callable(cX)
16931695 func fromX18WrapperREADONLY (N,ig) = $Tuple2(nil, M(parseBigIntValue(N), ig))
16941696
16951697
16961698
16971699 @Callable(cX)
16981700 func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
16991701
17001702
17011703
17021704 @Callable(cX)
17031705 func calcPriceBigIntWrapperREADONLY (ca,cb) = $Tuple2(nil, toString(bZ(parseBigIntValue(ca), parseBigIntValue(cb))))
17041706
17051707
17061708
17071709 @Callable(cX)
17081710 func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ih,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ih, dP, dQ, true, false, 0, ""))
17091711
17101712
17111713
17121714 @Callable(cX)
17131715 func estimateGetOperationWrapperREADONLY (dm,ii,do,ih) = {
17141716 let ed = dl(dm, ii, do, addressFromStringValue(ih))
17151717 $Tuple2(nil, $Tuple10(ed._1, ed._2, ed._3, ed._4, ed._5, ed._6, ed._7, toString(ed._8), ed._9, ed._10))
17161718 }
17171719
17181720
17191721
17201722 @Callable(cX)
17211723 func changeAmp () = {
17221724 let ij = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
17231725 let ik = {
17241726 let aQ = ij
17251727 if ($isInstanceOf(aQ, "List[Any]"))
17261728 then {
17271729 let il = aQ
17281730 $Tuple3({
17291731 let be = il[0]
17301732 if ($isInstanceOf(be, "Int"))
17311733 then be
17321734 else throw(($getType(be) + " couldn't be cast to Int"))
17331735 }, {
17341736 let be = il[1]
17351737 if ($isInstanceOf(be, "Int"))
17361738 then be
17371739 else throw(($getType(be) + " couldn't be cast to Int"))
17381740 }, {
17391741 let be = il[2]
17401742 if ($isInstanceOf(be, "Int"))
17411743 then be
17421744 else throw(($getType(be) + " couldn't be cast to Int"))
17431745 })
17441746 }
17451747 else ba("invalid entry type")
17461748 }
17471749 let im = ik._1
17481750 let in = ik._2
17491751 let io = ik._3
17501752 let ip = parseIntValue(getStringValue(am()))
17511753 let iq = (ip + in)
17521754 let ir = if ((0 > in))
17531755 then if ((io > iq))
17541756 then io
17551757 else iq
17561758 else if ((iq > io))
17571759 then io
17581760 else iq
17591761 let is = valueOrElse(getInteger(ap()), 0)
17601762 let it = (is + im)
17611763 let gN = [if ((height > it))
17621764 then true
17631765 else ba("try again in few blocks"), if ((ip != ir))
17641766 then true
17651767 else ba("already reached target")]
17661768 if ((gN == gN))
17671769 then [IntegerEntry(ap(), height), StringEntry(am(), toString(ir)), StringEntry(an(height), toString(ir))]
17681770 else throw("Strict value is not equal to itself.")
17691771 }
17701772
17711773
17721774 @Verifier(iu)
17731775 func iv () = {
17741776 let iw = {
17751777 let aQ = gq()
17761778 if ($isInstanceOf(aQ, "ByteVector"))
17771779 then {
17781780 let gu = aQ
17791781 gu
17801782 }
17811783 else if ($isInstanceOf(aQ, "Unit"))
17821784 then iu.senderPublicKey
17831785 else throw("Match error")
17841786 }
17851787 let aQ = iu
17861788 if ($isInstanceOf(aQ, "Order"))
17871789 then {
17881790 let ff = aQ
17891791 let ix = bi()
17901792 let iy = if (gB())
17911793 then $Tuple2(true, "")
17921794 else fe(ff)
17931795 let aK = iy._1
17941796 let aL = iy._2
17951797 let aM = sigVerify(ff.bodyBytes, ff.proofs[0], ff.senderPublicKey)
17961798 let aN = sigVerify(ff.bodyBytes, ff.proofs[1], ix)
17971799 if (if (if (aK)
17981800 then aM
17991801 else false)
18001802 then aN
18011803 else false)
18021804 then true
18031805 else aJ(aK, aL, aM, aN)
18041806 }
18051807 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18061808 then {
18071809 let aV = aQ
18081810 if (sigVerify(iu.bodyBytes, iu.proofs[0], iw))
18091811 then true
18101812 else {
18111813 let iz = blake2b256(value(aV.script))
18121814 let iA = fromBase64String(value(getString(aU, aF())))
18131815 let iB = scriptHash(this)
18141816 if ((iA == iz))
18151817 then (iB != iz)
18161818 else false
18171819 }
18181820 }
18191821 else sigVerify(iu.bodyBytes, iu.proofs[0], iw)
18201822 }
18211823

github/deemru/w8io/026f985 
210.09 ms