tx · 9M4xqTeAmwYzfc5FZbbjL8HiqyYjc6ppWA3BEg1Ymjrq

3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr:  -0.02200000 Waves

2023.05.05 11:42 [2564287] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves

{ "type": 13, "id": "9M4xqTeAmwYzfc5FZbbjL8HiqyYjc6ppWA3BEg1Ymjrq", "fee": 2200000, "feeAssetId": null, "timestamp": 1683276090355, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "31Ay2GAmTQXLqwJ83KUdwM5hdrFQHHf7aLpwR2bf6EP8qGbLmysXQUQNbDEt1bsMpDWSXDQHQyzH44FiYefRUhHJ" ], "script": "base64:BgL4FAgCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSBAoCCAQSABIDCgEBEgASBAoCCAgSBAoCCAgSBAoCCAgiCXNlcGFyYXRvciIOcG9vbFdlaWdodE11bHQiD21heERlcHRoRGVmYXVsdCIWZmluYWxpemF0aW9uU3RhZ2VUb3RhbCIXZmluYWxpemF0aW9uU3RhZ2VTaGFyZXMiDmtleUVwb2NoTGVuZ3RoIhFrZXlFcG9jaExlbmd0aE5ldyIVa2V5RXBvY2hMZW5ndGhCeUVwb2NoIgVlcG9jaCIPa2V5Q3VycmVudEVwb2NoIgtrZXlNYXhEZXB0aCIia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCISa2V5RmFjdG9yeUNvbnRyYWN0IhNrZXlCb29zdGluZ0NvbnRyYWN0IhJrZXlTdGFraW5nQ29udHJhY3QiFGtleUZpbmFsaXphdGlvblN0YWdlIgtrZXlOZXh0UG9vbCILa2V5TmV4dFVzZXIiDmtleVN0YXJ0SGVpZ2h0IhFrZXlDdXJyZW50RXBvY2hVaSIQa2V5U3RhcnRIZWlnaHRVaSIda2V5RmluYWxpemF0aW9uU2hvdWxkQmVGb3JjZWQiFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaCIMa2V5RmluYWxpemVkIglrZXlJbkxpc3QiBHBvb2wiCyR0MDE2OTMxNzMzIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiB2tleVVzZWQiB2FkZHJlc3MiB2tleVZvdGUiCyR0MDIwMDcyMDQ3Ig9rZXlWb3RpbmdSZXN1bHQiCyR0MDIyMjkyMjY5IhVrZXlWb3RpbmdSZXN1bHRTdGFrZWQiDGxwQXNzZXRJZFN0ciIMa2V5UG9vbFNoYXJlIgskdDAyNTkwMjYzMCINa2V5VG90YWxWb3RlcyIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIHd3JhcEVyciIDbXNnIgh0aHJvd0VyciIOZ2V0VmFsdWVPckZhaWwiA2tleSIEdHlwZSIFZXJyb3IiByRtYXRjaDAiA3N0ciIDaW50IgxnZXRTdHJPckZhaWwiAUAiDGdldEludE9yRmFpbCIMcG9vbFRvU3RyaW5nIgxzdHJpbmdUb1Bvb2wiBXBhcnRzIhZnZXRMcEFzc2V0QnlQb29sQXNzZXRzIh9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzIhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIiF2ludGVybmFsUHJpY2VBc3NldElkU3RyIh9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0IhNwb29sQ29udHJhY3RBZGRyZXNzIg9mYWN0b3J5Q29udHJhY3QiFWFtb3VudEFzc2V0SW50ZXJuYWxJZCIUcHJpY2VBc3NldEludGVybmFsSWQiCWxwQXNzZXRJZCIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsIgskdDA1MTY4NTIwOCINcG9vbHNMaXN0TmFtZSIQZ2V0Vm90ZXNMaXN0TmFtZSILJHQwNTUwOTU1NDkiC2tleUxpc3RIZWFkIghsaXN0TmFtZSIEbWV0YSILa2V5TGlzdFNpemUiC2tleUxpc3RQcmV2IgJpZCILa2V5TGlzdE5leHQiDGNvbnRhaW5zTm9kZSIKaGVhZE9yVW5pdCIKcHJldk9yVW5pdCIKbmV4dE9yVW5pdCIRaW5zZXJ0Tm9kZUFjdGlvbnMiCGxpc3RTaXplIgljaGVja05vZGUiEWRlbGV0ZU5vZGVBY3Rpb25zIhZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzIhNrZXlNYW5hZ2VyUHVibGljS2V5IhdnZXRNYW5hZ2VyQWRkcmVzc09yRmFpbCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIBcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCG11c3RUaGlzIgt1c2VyQWRkcmVzcyIMdGFyZ2V0SGVpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IgtlcG9jaExlbmd0aCIGY2hlY2tzIg1pbkxpc3RBY3Rpb25zIhhjdXJyZW50RXBvY2hJc05vdERlZmluZWQiEnN0YXJ0SGVpZ2h0QWN0aW9ucyIGYW1vdW50IgtzdGFydEhlaWdodCIJZW5kSGVpZ2h0IhdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdCIEdXNlZCIEdm90ZSIKcG9vbFJlc3VsdCIKdG90YWxWb3RlcyITZ3d4QW1vdW50QXRFbmRUb3RhbCIJYXZhaWxhYmxlIgduZXdWb3RlIgp3eEVtaXNzaW9uIg12b3Rlc0xpc3ROYW1lIhB2b3Rlc0xpc3RBY3Rpb25zIg5uZXdFcG9jaExlbmd0aCILbmV3TWF4RGVwdGgiB3Bvb2xTdHIiC2NoZWNrQ2FsbGVyIg1lcG9jaFByZXZpb3VzIhNzdGFydEhlaWdodFByZXZpb3VzIhNlcG9jaExlbmd0aFByZXZpb3VzIhFlbmRIZWlnaHRQcmV2aW91cyIQY2hlY2tUYXJnZXRFcG9jaCINJHQwMTc0ODgxNzUyOCIbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzIgx2b3RpbmdSZXN1bHQiDHZvdGVQcmV2aW91cyIadm90aW5nUmVzdWx0U3Rha2VkUHJldmlvdXMiDHN0YWtlZEJ5VXNlciIZdm90aW5nUmVzdWx0U3Rha2VkQWN0aW9ucyIHYWN0aW9ucyIFZm9yY2UiC3RhcmdldEVwb2NoIgxjdXJyZW50RXBvY2giDSR0MDE5ODg1MTk5MjUiAXIiBXNoYXJlIg9tb2RpZnlXZWlnaHRJbnYiEHBvb2xzTGlzdEFjdGlvbnMiDXByZXZpb3VzRXBvY2giCG5ld0Vwb2NoIhRuZXdFcG9jaExlbmd0aE9wdGlvbiIVbmV3RXBvY2hMZW5ndGhBY3Rpb25zIgpwb29sT3JVbml0Igp1c2VyT3JVbml0IgckbWF0Y2gxIgxwb29sc0hlYWRTdHIiDm5leHRVc2VyT3JVbml0IgR1c2VyIgRuZXh0Ig5wcm9jZXNzVm90ZUludiIObmV4dFBvb2xPclVuaXQiByRtYXRjaDIiCG5leHRVc2VyIgtuZXh0UG9vbFN0ciIHY291bnRlciIGcmVzdWx0IghtYXhEZXB0aCIDaW52IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXk4AAFhAgJfXwABYgCAwtcvAAFjAAoAAWQAAAABZQABAAFmCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUBYQABZwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQZXBvY2hMZW5ndGhfX25ldwUDbmlsBQFhAQFoAQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtlcG9jaExlbmd0aAkAzAgCCQCkAwEFAWkFA25pbAUBYQABagkAuQkCCQDMCAICAiVzCQDMCAICDGN1cnJlbnRFcG9jaAUDbmlsBQFhAAFrCQC5CQIJAMwIAgICJXMJAMwIAgIIbWF4RGVwdGgFA25pbAUBYQABbAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUBYQABbQkAuQkCCQDMCAICAiVzCQDMCAICD2ZhY3RvcnlDb250cmFjdAUDbmlsBQFhAAFuCQC5CQIJAMwIAgICJXMJAMwIAgIQYm9vc3RpbmdDb250cmFjdAUDbmlsBQFhAAFvCQC5CQIJAMwIAgICJXMJAMwIAgIPc3Rha2luZ0NvbnRyYWN0BQNuaWwFAWEAAXAJALkJAgkAzAgCAgIlcwkAzAgCAhFmaW5hbGl6YXRpb25TdGFnZQUDbmlsBQFhAAFxCQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFBvb2wFA25pbAUBYQABcgkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRVc2VyBQNuaWwFAWEAAXMJALkJAgkAzAgCAgIlcwkAzAgCAgtzdGFydEhlaWdodAUDbmlsBQFhAAF0CQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQABdQkAuQkCCQDMCAICAiVzCQDMCAICDXN0YXJ0SGVpZ2h0VWkFA25pbAUBYQABdgkAuQkCCQDMCAICAiVzCQDMCAICBWZvcmNlBQNuaWwFAWEBAXcBAWkJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUBaQUDbmlsBQFhAQF4AQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAglmaW5hbGl6ZWQJAMwIAgkApAMBBQFpBQNuaWwFAWEBAXkBAXoEAUEFAXoEAUIIBQFBAl8xBAFDCAUBQQJfMgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZpbkxpc3QJAMwIAgUBQgkAzAgCBQFDBQNuaWwFAWEBAUQCAUUBaQkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgR1c2VkCQDMCAIJAKUIAQUBRQkAzAgCCQCkAwEFAWkFA25pbAUBYQEBRgMBegFFAWkEAUcFAXoEAUIIBQFHAl8xBAFDCAUBRwJfMgkAuQkCCQDMCAICCiVzJXMlcyVzJWQJAMwIAgIEdm90ZQkAzAgCBQFCCQDMCAIFAUMJAMwIAgkApQgBBQFFCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFIAgF6AWkEAUkFAXoEAUIIBQFJAl8xBAFDCAUBSQJfMgkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICDHZvdGluZ1Jlc3VsdAkAzAgCBQFCCQDMCAIFAUMJAMwIAgkApAMBBQFpBQNuaWwFAWEBAUoCAUsBaQkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhJ2b3RpbmdSZXN1bHRTdGFrZWQJAMwIAgUBSwkAzAgCCQCkAwEFAWkFA25pbAUBYQEBTAIBegFpBAFNBQF6BAFCCAUBTQJfMQQBQwgFAU0CXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAglwb29sU2hhcmUJAMwIAgUBQgkAzAgCBQFDCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFOAQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgp0b3RhbFZvdGVzCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFPAgFLAVAJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGc3Rha2VkCQDMCAIFAVAJAMwIAgUBSwUDbmlsBQFhAQFRAQFSCQC5CQIJAMwIAgIVdm90aW5nX2VtaXNzaW9uLnJpZGU6CQDMCAIFAVIFA25pbAIBIAEBUwEBUgkAAgEJAQFRAQUBUgEBVAMBRQFVAVYEAVcJAQFRAQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQFFCQDMCAICAS4JAMwIAgUBVQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIACQETdmFsdWVPckVycm9yTWVzc2FnZQIEAVgFAVYDCQABAgUBWAIGU3RyaW5nBAFZBQFYCQCdCAIFAUUFAVUDCQABAgUBWAIDSW50BAFaBQFYCQCaCAIFAUUFAVUJAQFTAQISaW52YWxpZCBlbnRyeSB0eXBlBQFXAQJhYQIBRQFVCgACYWIJAQFUAwUBRQUBVQIAAwkAAQIFAmFiAgZTdHJpbmcFAmFiCQACAQkArAICCQADAQUCYWICGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwECYWMCAUUBVQoAAmFiCQEBVAMFAUUFAVUAAAMJAAECBQJhYgIDSW50BQJhYgkAAgEJAKwCAgkAAwEFAmFiAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmFkAQF6CQCsAgIJAKwCAggFAXoCXzEFAWEIBQF6Al8yAQJhZQEBWQQCYWYJALUJAgUBWQUBYQMJAAACCQCQAwEFAmFmAAIJAJQKAgkAkQMCBQJhZgAACQCRAwIFAmFmAAEJAQFTAQITaW52YWxpZCBwb29sIHN0cmluZwECYWcCAUIBQwoBAmFoAQJhaQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhaQoBAmFqAgJhawJhbAkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFAmFrAgJfXwkApAMBBQJhbAIjX19tYXBwaW5nc19fcG9vbEFzc2V0czJQb29sQ29udHJhY3QKAQJhbQECYW4JAKwCAgkArAICAgglcyVzJXNfXwUCYW4CIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0BAJhbwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFhAgUEdGhpcwUBbQQCYXAJAQJhYwIFAmFvCQECYWgBBQFCBAJhcQkBAmFjAgUCYW8JAQJhaAEFAUMEAmFuCQECYWECBQJhbwkBAmFqAgUCYXAFAmFxBAJhcgkBAmFhAgUCYW8JAQJhbQEFAmFuBQJhcgECYXMBAXoEAmF0BQF6BAFCCAUCYXQCXzEEAUMIBQJhdAJfMgQCYW8JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhYQIFBHRoaXMFAW0KAAJhYgkA/AcEBQJhbwIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFAUIJAMwIAgUBQwUDbmlsBQNuaWwDCQABAgUCYWICB0Jvb2xlYW4FAmFiCQACAQkArAICCQADAQUCYWICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4AAmF1AgVwb29scwECYXYBAXoEAmF3BQF6BAFCCAUCYXcCXzEEAUMIBQJhdwJfMgkAuQkCCQDMCAICBXZvdGVzCQDMCAIFAUIJAMwIAgUBQwUDbmlsBQFhAQJheAECYXkEAmF6AwkAAAIFAmF5BQJhdQIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQJhegkAzAgCBQJheQkAzAgCAgRoZWFkBQNuaWwFAWEBAmFBAQJheQQCYXoDCQAAAgUCYXkFAmF1AgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFAmF6CQDMCAIFAmF5CQDMCAICBHNpemUFA25pbAUBYQECYUICAmF5AmFDBAJhegMJAAACBQJheQUCYXUCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUCYXoJAMwIAgUCYXkJAMwIAgUCYUMJAMwIAgIEcHJldgUDbmlsBQFhAQJhRAICYXkCYUMEAmF6AwkAAAIFAmF5BQJhdQIIJXMlcyVzJXMCCiVzJXMlcyVzJXMJALkJAgkAzAgCBQJhegkAzAgCBQJheQkAzAgCBQJhQwkAzAgCAgRuZXh0BQNuaWwFAWEBAmFFAgJheQJhQwQCYUYJAJ0IAgUEdGhpcwkBAmF4AQUCYXkEAmFHCQCdCAIFBHRoaXMJAQJhQgIFAmF5BQJhQwQCYUgJAJ0IAgUEdGhpcwkBAmFEAgUCYXkFAmFDAwMJAAACBQJhQwkBC3ZhbHVlT3JFbHNlAgUCYUYCAAYJAQIhPQIFAmFHBQR1bml0BgkBAiE9AgUCYUgFBHVuaXQBAmFJAgJheQJhQwQCYUYJAJ0IAgUEdGhpcwkBAmF4AQUCYXkEAmFKCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhQQEFAmF5AAAEAmFLAwkBASEBCQECYUUCBQJheQUCYUMGCQEBUwECC05vZGUgZXhpc3RzAwkAAAIFAmFLBQJhSwkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhQQEFAmF5CQBkAgUCYUoAAQUDbmlsAwkBAiE9AgUCYUYFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFEAgUCYXkFAmFDCQEFdmFsdWUBBQJhRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYUICBQJheQkBBXZhbHVlAQUCYUYFAmFDBQNuaWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXgBBQJheQUCYUMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYUwCAmF5AmFDBAJhRgkAnQgCBQR0aGlzCQECYXgBBQJheQQCYUoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFBAQUCYXkAAAQCYUcJAJ0IAgUEdGhpcwkBAmFCAgUCYXkFAmFDBAJhSAkAnQgCBQR0aGlzCQECYUQCBQJheQUCYUMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFBAQUCYXkJAGUCBQJhSgABBQNuaWwDAwkBAiE9AgUCYUcFBHVuaXQJAQIhPQIFAmFIBQR1bml0BwkAzAgCCQELU3RyaW5nRW50cnkCCQECYUQCBQJheQkBBXZhbHVlAQUCYUcJAQV2YWx1ZQEFAmFICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhQgIFAmF5CQEFdmFsdWUBBQJhSAkBBXZhbHVlAQUCYUcJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFCAgUCYXkFAmFDCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhRAIFAmF5BQJhQwUDbmlsAwkBAiE9AgUCYUgFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF4AQUCYXkJAQV2YWx1ZQEFAmFICQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhRAIFAmF5BQJhQwkAzAgCCQELRGVsZXRlRW50cnkBCQECYUICBQJheQkBBXZhbHVlAQUCYUgFA25pbAMJAQIhPQIFAmFHBQR1bml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhQgIFAmF5BQJhQwkAzAgCCQELRGVsZXRlRW50cnkBCQECYUQCBQJheQkBBXZhbHVlAQUCYUcFA25pbAMJAAACBQJhQwkBC3ZhbHVlT3JFbHNlAgUCYUYCAAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXgBBQJheQUDbmlsCQEBUwEJAKwCAgkArAICCQCsAgICDmludmFsaWQgbm9kZTogBQJheQIBLgUCYUMBAmFNAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFOAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFPAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBAmFNAAECYVAABAJhUQkBAmFPAAQBWAkAnQgCBQJhUQkBAmFOAAMJAAECBQFYAgZTdHJpbmcEAmFSBQFYCQDZBAEFAmFSAwkAAQIFAVgCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYVMBAmFUBAFYCQECYVAAAwkAAQIFAVgCCkJ5dGVWZWN0b3IEAmFVBQFYCQAAAggFAmFUD2NhbGxlclB1YmxpY0tleQUCYVUDCQABAgUBWAIEVW5pdAkAAAIIBQJhVAZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECYVYBAmFUAwkBAmFTAQUCYVQGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQBAmFXAQJhVAMJAAACCAUCYVQGY2FsbGVyBQR0aGlzBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkDwJhVAEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AgJhWAJhWQQCYVoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQECYWECBQR0aGlzBQFuCQEBUQECIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAlAoCBQNuaWwKAAJhYgkA/AcEBQJhWgIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgUCYVgJAMwIAgUCYVkFA25pbAUDbmlsAwkAAQIFAmFiAgNJbnQFAmFiCQACAQkArAICCQADAQUCYWICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAJhVAELY29uc3RydWN0b3IFAmFvAmJhAmJiAmJjAmJkBAJiZQkAzAgCCQECYVYBBQJhVAkAzAgCAwkBAiE9AgkApggBBQJhbwUEdW5pdAYCIGludmFsaWQgZmFjdG9yeSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFAmJhBQR1bml0BgIyaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY2FuZGlkYXRlIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYmIFBHVuaXQGAiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYmMFBHVuaXQGAiBpbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkAZgIFAmJkAAAGCQEBUwECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYmUFAmJlCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBbQUCYW8JAMwIAgkBC1N0cmluZ0VudHJ5AgUBbAUCYmEJAMwIAgkBC1N0cmluZ0VudHJ5AgUBbgUCYmIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBbwUCYmMJAMwIAgkBDEludGVnZXJFbnRyeQIFAWYFAmJkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVQBBmNyZWF0ZQIBQgFDBAJiZQkAzAgCAwkAAAIJANgEAQgIBQJhVAZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUBbAIABgkBAmFWAQUCYVQFA25pbAMJAAACBQJiZQUCYmUEAXoJAJQKAgUBQgUBQwQCYmYJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAXkBBQF6BgUDbmlsCQECYUkCBQJhdQkBAmFkAQUBegQCYmcJAAACCQCaCAIFBHRoaXMFAWoFBHVuaXQEAmJoAwUCYmcEAWkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBagUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAXcBBQFpBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXMFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFAmJmBQJiaAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhVAEEdm90ZQMBQgFDAmJpBAF6CQCUCgIFAUIFAUMEAWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBagAABAJiagkBAmFjAgUEdGhpcwkBAXcBBQFpBAJiZAkBAmFjAgUEdGhpcwUBZgQCYmsJAGQCBQJiagUCYmQEAmJsCQCaCAIFBHRoaXMFAXAEAmJtCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFEAggFAmFUBmNhbGxlcgUBaQAABAJibgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRgMFAXoIBQJhVAZjYWxsZXIFAWkAAAQCYm8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUgCBQF6BQFpAAAEAmJwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFOAQUBaQAABAJicQoAAmFiCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCCQDYBAEICAUCYVQGY2FsbGVyBWJ5dGVzCQDMCAIFAmJrBQNuaWwFA25pbAMJAAECBQJhYgIDSW50BQJhYgkAAgEJAKwCAgkAAwEFAmFiAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJyCQBlAgUCYnEFAmJtBAJicwkAZAIFAmJuBQJiaQQCYnQJAQJhcwEFAXoEAmJlCQDMCAIDCQECIT0CCQCgCAEJAQF5AQUBegUEdW5pdAYJAQFTAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQJiawUGaGVpZ2h0BgkBAVMBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFAmJsBQR1bml0BgkBAVMBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJicQAABgkBAVMBAhN5b3UgZG8gbm90IGhhdmUgZ1dYCQDMCAIDAwkAZgIFAmJpAAAJAGcCBQJicgUCYmkHBgkBAVMBAg5pbnZhbGlkIGFtb3VudAkAzAgCAwUCYnQGCQEBUwECHXBvb2wgaGFzbid0IFdYX0VNSVNTSU9OIGxhYmVsBQNuaWwDCQAAAgUCYmUFAmJlBAJidQkBAmF2AQUBegQBUAkApQgBCAUCYVQGY2FsbGVyBAJidgMJAQJhRQIFAmJ1BQFQBQNuaWwJAQJhSQIFAmJ1BQFQCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUQCCAUCYVQGY2FsbGVyBQFpCQBkAgUCYm0FAmJpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRgMFAXoIBQJhVAZjYWxsZXIFAWkFAmJzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAIFAXoFAWkJAGQCBQJibwUCYmkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFOAQUBaQkAZAIFAmJwBQJiaQUDbmlsBQJidgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhVAEKY2FuY2VsVm90ZQIBQgFDBAF6CQCUCgIFAUIFAUMEAWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBagAABAJiagkBAmFjAgUEdGhpcwkBAXcBBQFpBAJiZAkBAmFjAgUEdGhpcwUBZgQCYmsJAGQCBQJiagUCYmQEAmJsCQCaCAIFBHRoaXMFAXAEAmJtCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFEAggFAmFUBmNhbGxlcgUBaQAABAJibgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRgMFAXoIBQJhVAZjYWxsZXIFAWkAAAQCYm8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUgCBQF6BQFpAAAEAmJwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFOAQUBaQAABAJiZQkAzAgCAwkBAiE9AgkAoAgBCQEBeQEFAXoFBHVuaXQGCQEBUwECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUCYmsFBmhlaWdodAYJAQFTAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBQJibAUEdW5pdAYJAQFTAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUCYm4AAAYJAQFTAQIHbm8gdm90ZQUDbmlsAwkAAAIFAmJlBQJiZQQCYnUJAQJhdgEFAXoEAVAJAKUIAQgFAmFUBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFEAggFAmFUBmNhbGxlcgUBaQkAlgMBCQDMCAIJAGUCBQJibQUCYm4JAMwIAgAABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAUYDBQF6CAUCYVQGY2FsbGVyBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAIFAXoFAWkJAGUCBQJibwUCYm4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFOAQUBaQkAZQIFAmJwBQJibgUDbmlsCQECYUwCBQJidQUBUAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhVAEOc2V0RXBvY2hMZW5ndGgBAmJ3BAJiZQkAzAgCCQECYVYBBQJhVAkAzAgCAwkAZgIFAmJ3AAAGCQEBUwECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYmUFAmJlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAWcFAmJ3BQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVQBC3NldE1heERlcHRoAQJieAQCYmUJAMwIAgkBAmFWAQUCYVQJAMwIAgMJAGYCBQJieAAABgkBAVMBAhFpbnZhbGlkIG1heCBkZXB0aAUDbmlsAwkAAAIFAmJlBQJiZQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFrBQJieAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFUARNwcm9jZXNzVm90ZUlOVEVSTkFMAgJieQFQBAJiegkBAmFXAQUCYVQDCQAAAgUCYnoFAmJ6BAJhWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAVAJAQFRAQkArAICAipwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcyAFAVAEAWkJAQJhYwIFBHRoaXMFAWoEAmJBCQBlAgUBaQABBAJiZAkBAmFjAgUEdGhpcwUBZgQCYmoJAQJhYwIFBHRoaXMJAQF3AQUBaQQCYmsJAGQCBQJiagUCYmQEAmJCCQECYWMCBQR0aGlzCQEBdwEFAmJBBAJiQwkBAmFjAgUEdGhpcwkBAWgBBQJiQQQCYkQJAGQCBQJiQgUCYkMEAmJFAwkAZwIFAmJBAAAGCQEBUwECK3Byb2Nlc3NWb3RlSU5URVJOQUw6IGludmFsaWQgcHJldmlvdXMgZXBvY2gDCQAAAgUCYkUFAmJFBAF6CQECYWUBBQJieQQCYkYFAXoEAUIIBQJiRgJfMQQBQwgFAmJGAl8yBAJidAkBAmFzAQUBegQCYnEKAAJhYgkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUBUAkAzAgCBQJiawUDbmlsBQNuaWwDCQABAgUCYWICA0ludAUCYWIJAAIBCQCsAgIJAAMBBQJhYgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJiRwoAAmFiCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQFQCQDMCAIFAmJEBQNuaWwFA25pbAMJAAECBQJhYgIDSW50BQJhYgkAAgEJAKwCAgkAAwEFAmFiAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJwCQELdmFsdWVPckVsc2UCCQCfCAEJAQFOAQUBaQAABAJiSAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEBSAIFAXoFAWkAAAQCYkkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEBRgMFAXoFAmFYBQJiQQkBAVEBCQCsAgIJAKwCAgkArAICCQCsAgICFHByb2Nlc3NWb3RlSU5URVJOQUwgBQJieQIBIAUBUAISOiBubyBwcmV2aW91cyB2b3RlBAJibQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRAIFAmFYBQFpAAAEAUsJAQJhZwIFAUIFAUMEAmJKCQELdmFsdWVPckVsc2UCCQCfCAEJAQFKAgUBSwUCYkEAAAQCYmMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhYQIFBHRoaXMFAW8EAmJLCQELdmFsdWVPckVsc2UCCQCaCAIFAmJjCQEBTwIFAUsFAVAAAAQCYkwDCQAAAgUCYksAAAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSgIFAUsFAmJBCQBkAgUCYkoFAmJJBQNuaWwEAmJzAwkAZgIFAmJHAAAJAGsDBQJiSQUCYnEFAmJHAAAEAmJNAwMJAGYCBQJicwAABQJidAcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFGAwUBegUCYVgFAWkFAmJzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTgEFAWkJAGQCBQJicAUCYnMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFIAgUBegUBaQkAZAIFAmJIBQJicwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUQCBQJhWAUBaQkAZAIFAmJtBQJicwUDbmlsCQECYUwCCQECYXYBBQF6BQFQCQCUCgIJAM4IAgUCYk0FAmJMBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFUARNwcm9jZXNzUG9vbElOVEVSTkFMAgJieQJiTgQCYnoJAQJhVwEFAmFUAwkAAAIFAmJ6BQJiegQCYk8EAmJQCQECYWMCBQR0aGlzBQFqAwUCYk4FAmJQCQBlAgUCYlAAAQQCYkUDCQBnAgUCYk8AAAYJAQFTAQIpcHJvY2Vzc1Bvb2xJTlRFUk5BTDogaW52YWxpZCB0YXJnZXQgZXBvY2gDCQAAAgUCYkUFAmJFBAF6CQECYWUBBQJieQQCYlEFAXoEAUIIBQJiUQJfMQQBQwgFAmJRAl8yBAJiYwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFhAgUEdGhpcwUBbwQCYW8JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhYQIFBHRoaXMFAW0EAmFyCQECYWcCBQFCBQFDBAJiUgoAAmFiCQD8BwQFAmJjAhJ1c2Vyc0xpc3RUcmF2ZXJzYWwJAMwIAgUCYXIFA25pbAUDbmlsAwkAAQIFAmFiAgdCb29sZWFuBQJhYgkAAgEJAKwCAgkAAwEFAmFiAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmJSBQJiUgMFAmJSCQCUCgIFA25pbAYEAmJ0CQECYXMBBQF6BAJicAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTgEFAmJPAAAEAmJICQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFIAgUBegUCYk8AAAQCYlMDAwkAAAIFAmJwAAAGCQEBIQEFAmJ0AAAJAGsDBQJiSAUBYgUCYnAEAmJUCQD8BwQFAmFvAgxtb2RpZnlXZWlnaHQJAMwIAgUCYXIJAMwIAgUCYlMFA25pbAUDbmlsAwkAAAIFAmJUBQJiVAQCYlUDAwUCYnQGBQJiTgUDbmlsCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAXkBBQF6BQNuaWwJAQJhTAIFAmF1BQJieQkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFMAgUBegUCYk8FAmJTBQNuaWwFAmJVBwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhVAEOZmluYWxpemVIZWxwZXIABAJiTgkBC3ZhbHVlT3JFbHNlAgkAoAgBBQF2BwQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmJWCQBlAgUBaQABBAJiagkBAmFjAgUEdGhpcwkBAXcBBQFpBAJiZAkBAmFjAgUEdGhpcwUBZgQCYmsJAGQCBQJiagUCYmQEAmJsCQCaCAIFBHRoaXMFAXADAwMJAGcCBQZoZWlnaHQFAmJrCQAAAgUCYmwFBHVuaXQHCQEBIQEFAmJOBwQCYlcJAGQCBQFpAAEEAmJYCQCaCAIFBHRoaXMFAWcEAmJZBAFYBQJiWAMJAAECBQFYAgNJbnQEAmJ3BQFYCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFmBQJidwkAzAgCCQELRGVsZXRlRW50cnkBBQFnBQNuaWwDCQABAgUBWAIEVW5pdAUDbmlsCQACAQILTWF0Y2ggZXJyb3IJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBdwEFAmJXBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXMFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBagUCYlcJAMwIAgkBDEludGVnZXJFbnRyeQIFAXAFAWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFoAQUBaQUCYmQFA25pbAUCYlkGAwMFAmJOCQAAAgUCYmwFBHVuaXQHCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXAFAWUFA25pbAYDCQAAAgUCYmwFBHVuaXQJAJQKAgUDbmlsBwMJAAACBQJibAUBZAQCYloJAKIIAQUBcQQCY2EJAKIIAQUBcgQBWAUCYloDCQABAgUBWAIEVW5pdAQCY2IJAKIIAQkBAmF4AQUCYXUDCQABAgUCY2ICBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIFA25pbAYDCQABAgUCY2ICBlN0cmluZwQCY2MFAmNiCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCY2MFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFYAgZTdHJpbmcEAmJ5BQFYBAF6CQECYWUBBQJieQQCY2QEAmNiBQJjYQMJAAECBQJjYgIEVW5pdAkAoggBCQECYXgBCQECYXYBBQF6AwkAAQIFAmNiAgZTdHJpbmcEAmNlBQJjYgQCY2YJAKIIAQkBAmFEAgkBAmF2AQUBegUCY2UDCQAAAgUCY2YFAmNmBAJjZwkA/AcEBQR0aGlzAhNwcm9jZXNzVm90ZUlOVEVSTkFMCQDMCAIFAmJ5CQDMCAIFAmNlBQNuaWwFA25pbAMJAAACBQJjZwUCY2cFAmNmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IEAmNiBQJjZAMJAAECBQJjYgIEVW5pdAQCY2gJAKIIAQkBAmFEAgUCYXUFAmJ5BAJjaQUCY2gDCQABAgUCY2kCBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIFA25pbAYDCQABAgUCY2kCBlN0cmluZwQCYVIFAmNpCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCYVIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAmNiAgZTdHJpbmcEAmNqBQJjYgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXIFAmNqBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJibAUBZQQCYloJAKIIAQUBcQQBWAUCYloDCQABAgUBWAIEVW5pdAQCY2IJAKIIAQkBAmF4AQUCYXUDCQABAgUCY2ICBFVuaXQEAmJNAwUCYk4JAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQELRGVsZXRlRW50cnkBBQF2BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAXgBBQJiVgYJAMwIAgkBDEludGVnZXJFbnRyeQIFAXQFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIFAXUFAmJqBQNuaWwJAJQKAgUCYk0GAwkAAQIFAmNiAgZTdHJpbmcEAmNrBQJjYgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXEFAmNrBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUBWAIGU3RyaW5nBAJieQUBWAQCY2gJAKIIAQkBAmFEAgUCYXUFAmJ5AwkAAAIFAmNoBQJjaAQCYlIKAAJhYgkA/AcEBQR0aGlzAhNwcm9jZXNzUG9vbElOVEVSTkFMCQDMCAIFAmJ5CQDMCAIFAmJOBQNuaWwFA25pbAMJAAECBQJhYgIHQm9vbGVhbgUCYWIJAAIBCQCsAgIJAAMBBQJhYgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQJiUgUCYlIDBQJiUgkAlAoCBQNuaWwGBAJjYgUCY2gDCQABAgUCY2ICBFVuaXQEAmJNAwUCYk4JAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQELRGVsZXRlRW50cnkBBQF2CQDMCAIJAQtEZWxldGVFbnRyeQEFAXEFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQFwCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBeAEFAmJWBgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdQUCYmoJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcQUDbmlsCQCUCgIFAmJNBgMJAAECBQJjYgIGU3RyaW5nBAJjawUCY2IJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFxBQJjawUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAQFTAQIWZmluYWxpemF0aW9uIGlzIGJyb2tlbgJhVAEPZmluYWxpemVXcmFwcGVyAQJjbAQCY20KAAJhYgkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUCYWICB0Jvb2xlYW4FAmFiCQACAQkArAICCQADAQUCYWICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY20FAmNtAwkBASEBBQJjbQMJAAACBQJjbAAACQEBUwECHkN1cnJlbnQgdm90aW5nIGlzIG5vdCBvdmVyIHlldAkAlAoCBQNuaWwFBHVuaXQEAmNuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFAWMDCQBmAgUCY24FAmNsBAJjbwkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZAIFAmNsAAEFA25pbAUDbmlsAwkAAAIFAmNvBQJjbwkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFUAQhmaW5hbGl6ZQAEAmNvCQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFAmNvBQJjbwkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVQBFGNvbnRhaW5zTm9kZVJFQURPTkxZAgJheQJhQwkAlAoCBQNuaWwJAQJhRQIFAmF5BQJhQwJhVAEKaW5zZXJ0Tm9kZQICYXkCYUMEAmJ6CQECYVYBBQJhVAMJAAACBQJiegUCYnoJAJQKAgkBAmFJAgUCYXkFAmFDBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFUAQpkZWxldGVOb2RlAgJheQJhQwQCYnoJAQJhVgEFAmFUAwkAAAIFAmJ6BQJiegkAlAoCCQECYUwCBQJheQUCYUMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNwAQJjcQAEAmNyBAFYCQECYVAAAwkAAQIFAVgCCkJ5dGVWZWN0b3IEAmFVBQFYBQJhVQMJAAECBQFYAgRVbml0CAUCY3APc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmNwCWJvZHlCeXRlcwkAkQMCCAUCY3AGcHJvb2ZzAAAFAmNyux0CGA==", "height": 2564287, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 93a9EBkd3SmCa8cF1ZfSFe8UPdKSgs7tFysQnGqMwmAz Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "__"
5+
6+let b = 100000000
7+
8+let c = 10
9+
10+let d = 0
11+
12+let e = 1
13+
14+let f = makeString(["%s", "epochLength"], a)
15+
16+let g = makeString(["%s%s", "epochLength__new"], a)
17+
18+func h (i) = makeString(["%s%d", "epochLength", toString(i)], a)
19+
20+
21+let j = makeString(["%s", "currentEpoch"], a)
22+
23+let k = makeString(["%s", "maxDepth"], a)
24+
25+let l = makeString(["%s", "votingEmissionCandidateContract"], a)
26+
27+let m = makeString(["%s", "factoryContract"], a)
28+
29+let n = makeString(["%s", "boostingContract"], a)
30+
31+let o = makeString(["%s", "stakingContract"], a)
32+
33+let p = makeString(["%s", "finalizationStage"], a)
34+
35+let q = makeString(["%s", "nextPool"], a)
36+
37+let r = makeString(["%s", "nextUser"], a)
38+
39+let s = makeString(["%s", "startHeight"], a)
40+
41+let t = makeString(["%s", "currentEpochUi"], a)
42+
43+let u = makeString(["%s", "startHeightUi"], a)
44+
45+let v = makeString(["%s", "force"], a)
46+
47+func w (i) = makeString(["%s%d", "startHeight", toString(i)], a)
48+
49+
50+func x (i) = makeString(["%s%d", "finalized", toString(i)], a)
51+
52+
53+func y (z) = {
54+ let A = z
55+ let B = A._1
56+ let C = A._2
57+ makeString(["%s%s%s", "inList", B, C], a)
58+ }
59+
60+
61+func D (E,i) = makeString(["%s%s%d", "used", toString(E), toString(i)], a)
62+
63+
64+func F (z,E,i) = {
65+ let G = z
66+ let B = G._1
67+ let C = G._2
68+ makeString(["%s%s%s%s%d", "vote", B, C, toString(E), toString(i)], a)
69+ }
70+
71+
72+func H (z,i) = {
73+ let I = z
74+ let B = I._1
75+ let C = I._2
76+ makeString(["%s%s%s%d", "votingResult", B, C, toString(i)], a)
77+ }
78+
79+
80+func J (K,i) = makeString(["%s%s%d", "votingResultStaked", K, toString(i)], a)
81+
82+
83+func L (z,i) = {
84+ let M = z
85+ let B = M._1
86+ let C = M._2
87+ makeString(["%s%s%s%d", "poolShare", B, C, toString(i)], a)
88+ }
89+
90+
91+func N (i) = makeString(["%s%d", "totalVotes", toString(i)], a)
92+
93+
94+func O (K,P) = makeString(["%s%s%s", "staked", P, K], a)
95+
96+
97+func Q (R) = makeString(["voting_emission.ride:", R], " ")
98+
99+
100+func S (R) = throw(Q(R))
101+
102+
103+func T (E,U,V) = {
104+ let W = Q(makeString(["mandatory ", toString(E), ".", U, " is not defined"], ""))
105+ valueOrErrorMessage({
106+ let X = V
107+ if ($isInstanceOf(X, "String"))
108+ then {
109+ let Y = X
110+ getString(E, U)
111+ }
112+ else if ($isInstanceOf(X, "Int"))
113+ then {
114+ let Z = X
115+ getInteger(E, U)
116+ }
117+ else S("invalid entry type")
118+ }, W)
119+ }
120+
121+
122+func aa (E,U) = {
123+ let ab = T(E, U, "")
124+ if ($isInstanceOf(ab, "String"))
125+ then ab
126+ else throw(($getType(ab) + " couldn't be cast to String"))
127+ }
128+
129+
130+func ac (E,U) = {
131+ let ab = T(E, U, 0)
132+ if ($isInstanceOf(ab, "Int"))
133+ then ab
134+ else throw(($getType(ab) + " couldn't be cast to Int"))
135+ }
136+
137+
138+func ad (z) = ((z._1 + a) + z._2)
139+
140+
141+func ae (Y) = {
142+ let af = split(Y, a)
143+ if ((size(af) == 2))
144+ then $Tuple2(af[0], af[1])
145+ else S("invalid pool string")
146+ }
147+
148+
149+func ag (B,C) = {
150+ func ah (ai) = ("%s%s%s__mappings__baseAsset2internalId__" + ai)
151+
152+ func aj (ak,al) = (((("%d%d%s%s__" + toString(ak)) + "__") + toString(al)) + "__mappings__poolAssets2PoolContract")
153+
154+ func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
155+
156+ let ao = addressFromStringValue(aa(this, m))
157+ let ap = ac(ao, ah(B))
158+ let aq = ac(ao, ah(C))
159+ let an = aa(ao, aj(ap, aq))
160+ let ar = aa(ao, am(an))
161+ ar
162+ }
163+
164+
165+func as (z) = {
166+ let at = z
167+ let B = at._1
168+ let C = at._2
169+ let ao = addressFromStringValue(aa(this, m))
170+ let ab = invoke(ao, "checkWxEmissionPoolLabel", [B, C], nil)
171+ if ($isInstanceOf(ab, "Boolean"))
172+ then ab
173+ else throw(($getType(ab) + " couldn't be cast to Boolean"))
174+ }
175+
176+
177+let au = "pools"
178+
179+func av (z) = {
180+ let aw = z
181+ let B = aw._1
182+ let C = aw._2
183+ makeString(["votes", B, C], a)
184+ }
185+
186+
187+func ax (ay) = {
188+ let az = if ((ay == au))
189+ then "%s%s"
190+ else "%s%s%s%s"
191+ makeString([az, ay, "head"], a)
192+ }
193+
194+
195+func aA (ay) = {
196+ let az = if ((ay == au))
197+ then "%s%s"
198+ else "%s%s%s%s"
199+ makeString([az, ay, "size"], a)
200+ }
201+
202+
203+func aB (ay,aC) = {
204+ let az = if ((ay == au))
205+ then "%s%s%s%s"
206+ else "%s%s%s%s%s"
207+ makeString([az, ay, aC, "prev"], a)
208+ }
209+
210+
211+func aD (ay,aC) = {
212+ let az = if ((ay == au))
213+ then "%s%s%s%s"
214+ else "%s%s%s%s%s"
215+ makeString([az, ay, aC, "next"], a)
216+ }
217+
218+
219+func aE (ay,aC) = {
220+ let aF = getString(this, ax(ay))
221+ let aG = getString(this, aB(ay, aC))
222+ let aH = getString(this, aD(ay, aC))
223+ if (if ((aC == valueOrElse(aF, "")))
224+ then true
225+ else (aG != unit))
226+ then true
227+ else (aH != unit)
228+ }
229+
230+
231+func aI (ay,aC) = {
232+ let aF = getString(this, ax(ay))
233+ let aJ = valueOrElse(getInteger(this, aA(ay)), 0)
234+ let aK = if (!(aE(ay, aC)))
235+ then true
236+ else S("Node exists")
237+ if ((aK == aK))
238+ then (([IntegerEntry(aA(ay), (aJ + 1))] ++ (if ((aF != unit))
239+ then [StringEntry(aD(ay, aC), value(aF)), StringEntry(aB(ay, value(aF)), aC)]
240+ else nil)) ++ [StringEntry(ax(ay), aC)])
241+ else throw("Strict value is not equal to itself.")
242+ }
243+
244+
245+func aL (ay,aC) = {
246+ let aF = getString(this, ax(ay))
247+ let aJ = valueOrElse(getInteger(this, aA(ay)), 0)
248+ let aG = getString(this, aB(ay, aC))
249+ let aH = getString(this, aD(ay, aC))
250+ ([IntegerEntry(aA(ay), (aJ - 1))] ++ (if (if ((aG != unit))
251+ then (aH != unit)
252+ else false)
253+ then [StringEntry(aD(ay, value(aG)), value(aH)), StringEntry(aB(ay, value(aH)), value(aG)), DeleteEntry(aB(ay, aC)), DeleteEntry(aD(ay, aC))]
254+ else if ((aH != unit))
255+ then [StringEntry(ax(ay), value(aH)), DeleteEntry(aD(ay, aC)), DeleteEntry(aB(ay, value(aH)))]
256+ else if ((aG != unit))
257+ then [DeleteEntry(aB(ay, aC)), DeleteEntry(aD(ay, value(aG)))]
258+ else if ((aC == valueOrElse(aF, "")))
259+ then [DeleteEntry(ax(ay))]
260+ else S(((("invalid node: " + ay) + ".") + aC))))
261+ }
262+
263+
264+func aM () = "%s__managerVaultAddress"
265+
266+
267+func aN () = "%s__managerPublicKey"
268+
269+
270+func aO () = addressFromStringValue(getStringValue(aM()))
271+
272+
273+func aP () = {
274+ let aQ = aO()
275+ let X = getString(aQ, aN())
276+ if ($isInstanceOf(X, "String"))
277+ then {
278+ let aR = X
279+ fromBase58String(aR)
280+ }
281+ else if ($isInstanceOf(X, "Unit"))
282+ then unit
283+ else throw("Match error")
284+ }
285+
286+
287+func aS (aT) = {
288+ let X = aP()
289+ if ($isInstanceOf(X, "ByteVector"))
290+ then {
291+ let aU = X
292+ (aT.callerPublicKey == aU)
293+ }
294+ else if ($isInstanceOf(X, "Unit"))
295+ then (aT.caller == this)
296+ else throw("Match error")
297+ }
298+
299+
300+func aV (aT) = if (aS(aT))
301+ then true
302+ else throw("permission denied")
303+
304+
305+func aW (aT) = if ((aT.caller == this))
306+ then true
307+ else throw("permission denied")
308+
309+
310+@Callable(aT)
311+func getUserGwxAmountAtHeight (aX,aY) = {
312+ let aZ = valueOrErrorMessage(addressFromString(aa(this, n)), Q("invalid boosting contract address"))
313+ $Tuple2(nil, {
314+ let ab = invoke(aZ, "getUserGwxAmountAtHeightREADONLY", [aX, aY], nil)
315+ if ($isInstanceOf(ab, "Int"))
316+ then ab
317+ else throw(($getType(ab) + " couldn't be cast to Int"))
318+ })
319+ }
320+
321+
322+
323+@Callable(aT)
324+func constructor (ao,ba,bb,bc,bd) = {
325+ let be = [aV(aT), if ((addressFromString(ao) != unit))
326+ then true
327+ else "invalid factory contract address", if ((addressFromString(ba) != unit))
328+ then true
329+ else "invalid voting emission candidate contract address", if ((addressFromString(bb) != unit))
330+ then true
331+ else "invalid boosting contract address", if ((addressFromString(bc) != unit))
332+ then true
333+ else "invalid staking contract address", if ((bd > 0))
334+ then true
335+ else S("invalid epoch length")]
336+ if ((be == be))
337+ then $Tuple2([StringEntry(m, ao), StringEntry(l, ba), StringEntry(n, bb), StringEntry(o, bc), IntegerEntry(f, bd)], unit)
338+ else throw("Strict value is not equal to itself.")
339+ }
340+
341+
342+
343+@Callable(aT)
344+func create (B,C) = {
345+ let be = [if ((toBase58String(aT.caller.bytes) == valueOrElse(getString(this, l), "")))
346+ then true
347+ else aV(aT)]
348+ if ((be == be))
349+ then {
350+ let z = $Tuple2(B, C)
351+ let bf = ([BooleanEntry(y(z), true)] ++ aI(au, ad(z)))
352+ let bg = (getInteger(this, j) == unit)
353+ let bh = if (bg)
354+ then {
355+ let i = 0
356+[IntegerEntry(j, i), IntegerEntry(w(i), height), IntegerEntry(s, height), IntegerEntry(t, i), IntegerEntry(u, height)]
357+ }
358+ else nil
359+ $Tuple2((bf ++ bh), unit)
360+ }
361+ else throw("Strict value is not equal to itself.")
362+ }
363+
364+
365+
366+@Callable(aT)
367+func vote (B,C,bi) = {
368+ let z = $Tuple2(B, C)
369+ let i = valueOrElse(getInteger(this, j), 0)
370+ let bj = ac(this, w(i))
371+ let bd = ac(this, f)
372+ let bk = (bj + bd)
373+ let bl = getInteger(this, p)
374+ let bm = valueOrElse(getInteger(this, D(aT.caller, i)), 0)
375+ let bn = valueOrElse(getInteger(this, F(z, aT.caller, i)), 0)
376+ let bo = valueOrElse(getInteger(this, H(z, i)), 0)
377+ let bp = valueOrElse(getInteger(this, N(i)), 0)
378+ let bq = {
379+ let ab = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aT.caller.bytes), bk], nil)
380+ if ($isInstanceOf(ab, "Int"))
381+ then ab
382+ else throw(($getType(ab) + " couldn't be cast to Int"))
383+ }
384+ let br = (bq - bm)
385+ let bs = (bn + bi)
386+ let bt = as(z)
387+ let be = [if ((getBoolean(y(z)) != unit))
388+ then true
389+ else S("invalid assets"), if ((bk > height))
390+ then true
391+ else S("invalid height"), if ((bl == unit))
392+ then true
393+ else S("finalization in progress"), if ((bq > 0))
394+ then true
395+ else S("you do not have gWX"), if (if ((bi > 0))
396+ then (br >= bi)
397+ else false)
398+ then true
399+ else S("invalid amount"), if (bt)
400+ then true
401+ else S("pool hasn't WX_EMISSION label")]
402+ if ((be == be))
403+ then {
404+ let bu = av(z)
405+ let P = toString(aT.caller)
406+ let bv = if (aE(bu, P))
407+ then nil
408+ else aI(bu, P)
409+ $Tuple2(([IntegerEntry(D(aT.caller, i), (bm + bi)), IntegerEntry(F(z, aT.caller, i), bs), IntegerEntry(H(z, i), (bo + bi)), IntegerEntry(N(i), (bp + bi))] ++ bv), unit)
410+ }
411+ else throw("Strict value is not equal to itself.")
412+ }
413+
414+
415+
416+@Callable(aT)
417+func cancelVote (B,C) = {
418+ let z = $Tuple2(B, C)
419+ let i = valueOrElse(getInteger(this, j), 0)
420+ let bj = ac(this, w(i))
421+ let bd = ac(this, f)
422+ let bk = (bj + bd)
423+ let bl = getInteger(this, p)
424+ let bm = valueOrElse(getInteger(this, D(aT.caller, i)), 0)
425+ let bn = valueOrElse(getInteger(this, F(z, aT.caller, i)), 0)
426+ let bo = valueOrElse(getInteger(this, H(z, i)), 0)
427+ let bp = valueOrElse(getInteger(this, N(i)), 0)
428+ let be = [if ((getBoolean(y(z)) != unit))
429+ then true
430+ else S("invalid assets"), if ((bk > height))
431+ then true
432+ else S("invalid height"), if ((bl == unit))
433+ then true
434+ else S("finalization in progress"), if ((bn > 0))
435+ then true
436+ else S("no vote")]
437+ if ((be == be))
438+ then {
439+ let bu = av(z)
440+ let P = toString(aT.caller)
441+ $Tuple2(([IntegerEntry(D(aT.caller, i), max([(bm - bn), 0])), DeleteEntry(F(z, aT.caller, i)), IntegerEntry(H(z, i), (bo - bn)), IntegerEntry(N(i), (bp - bn))] ++ aL(bu, P)), unit)
442+ }
443+ else throw("Strict value is not equal to itself.")
444+ }
445+
446+
447+
448+@Callable(aT)
449+func setEpochLength (bw) = {
450+ let be = [aV(aT), if ((bw > 0))
451+ then true
452+ else S("invalid epoch length")]
453+ if ((be == be))
454+ then $Tuple2([IntegerEntry(g, bw)], unit)
455+ else throw("Strict value is not equal to itself.")
456+ }
457+
458+
459+
460+@Callable(aT)
461+func setMaxDepth (bx) = {
462+ let be = [aV(aT), if ((bx > 0))
463+ then true
464+ else S("invalid max depth")]
465+ if ((be == be))
466+ then $Tuple2([IntegerEntry(k, bx)], unit)
467+ else throw("Strict value is not equal to itself.")
468+ }
469+
470+
471+
472+@Callable(aT)
473+func processVoteINTERNAL (by,P) = {
474+ let bz = aW(aT)
475+ if ((bz == bz))
476+ then {
477+ let aX = valueOrErrorMessage(addressFromString(P), Q(("processVoteINTERNAL: invalid user address " + P)))
478+ let i = ac(this, j)
479+ let bA = (i - 1)
480+ let bd = ac(this, f)
481+ let bj = ac(this, w(i))
482+ let bk = (bj + bd)
483+ let bB = ac(this, w(bA))
484+ let bC = ac(this, h(bA))
485+ let bD = (bB + bC)
486+ let bE = if ((bA >= 0))
487+ then true
488+ else S("processVoteINTERNAL: invalid previous epoch")
489+ if ((bE == bE))
490+ then {
491+ let z = ae(by)
492+ let bF = z
493+ let B = bF._1
494+ let C = bF._2
495+ let bt = as(z)
496+ let bq = {
497+ let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bk], nil)
498+ if ($isInstanceOf(ab, "Int"))
499+ then ab
500+ else throw(($getType(ab) + " couldn't be cast to Int"))
501+ }
502+ let bG = {
503+ let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bD], nil)
504+ if ($isInstanceOf(ab, "Int"))
505+ then ab
506+ else throw(($getType(ab) + " couldn't be cast to Int"))
507+ }
508+ let bp = valueOrElse(getInteger(N(i)), 0)
509+ let bH = valueOrElse(getInteger(H(z, i)), 0)
510+ let bI = valueOrErrorMessage(getInteger(F(z, aX, bA)), Q((((("processVoteINTERNAL " + by) + " ") + P) + ": no previous vote")))
511+ let bm = valueOrElse(getInteger(this, D(aX, i)), 0)
512+ let K = ag(B, C)
513+ let bJ = valueOrElse(getInteger(J(K, bA)), 0)
514+ let bc = addressFromStringValue(aa(this, o))
515+ let bK = valueOrElse(getInteger(bc, O(K, P)), 0)
516+ let bL = if ((bK == 0))
517+ then nil
518+ else [IntegerEntry(J(K, bA), (bJ + bI))]
519+ let bs = if ((bG > 0))
520+ then fraction(bI, bq, bG)
521+ else 0
522+ let bM = if (if ((bs > 0))
523+ then bt
524+ else false)
525+ then [IntegerEntry(F(z, aX, i), bs), IntegerEntry(N(i), (bp + bs)), IntegerEntry(H(z, i), (bH + bs)), IntegerEntry(D(aX, i), (bm + bs))]
526+ else aL(av(z), P)
527+ $Tuple2((bM ++ bL), unit)
528+ }
529+ else throw("Strict value is not equal to itself.")
530+ }
531+ else throw("Strict value is not equal to itself.")
532+ }
533+
534+
535+
536+@Callable(aT)
537+func processPoolINTERNAL (by,bN) = {
538+ let bz = aW(aT)
539+ if ((bz == bz))
540+ then {
541+ let bO = {
542+ let bP = ac(this, j)
543+ if (bN)
544+ then bP
545+ else (bP - 1)
546+ }
547+ let bE = if ((bO >= 0))
548+ then true
549+ else S("processPoolINTERNAL: invalid target epoch")
550+ if ((bE == bE))
551+ then {
552+ let z = ae(by)
553+ let bQ = z
554+ let B = bQ._1
555+ let C = bQ._2
556+ let bc = addressFromStringValue(aa(this, o))
557+ let ao = addressFromStringValue(aa(this, m))
558+ let ar = ag(B, C)
559+ let bR = {
560+ let ab = invoke(bc, "usersListTraversal", [ar], nil)
561+ if ($isInstanceOf(ab, "Boolean"))
562+ then ab
563+ else throw(($getType(ab) + " couldn't be cast to Boolean"))
564+ }
565+ if ((bR == bR))
566+ then if (bR)
567+ then $Tuple2(nil, true)
568+ else {
569+ let bt = as(z)
570+ let bp = valueOrElse(getInteger(this, N(bO)), 0)
571+ let bH = valueOrElse(getInteger(this, H(z, bO)), 0)
572+ let bS = if (if ((bp == 0))
573+ then true
574+ else !(bt))
575+ then 0
576+ else fraction(bH, b, bp)
577+ let bT = invoke(ao, "modifyWeight", [ar, bS], nil)
578+ if ((bT == bT))
579+ then {
580+ let bU = if (if (bt)
581+ then true
582+ else bN)
583+ then nil
584+ else ([DeleteEntry(y(z))] ++ aL(au, by))
585+ $Tuple2(([IntegerEntry(L(z, bO), bS)] ++ bU), false)
586+ }
587+ else throw("Strict value is not equal to itself.")
588+ }
589+ else throw("Strict value is not equal to itself.")
590+ }
591+ else throw("Strict value is not equal to itself.")
592+ }
593+ else throw("Strict value is not equal to itself.")
594+ }
595+
596+
597+
598+@Callable(aT)
599+func finalizeHelper () = {
600+ let bN = valueOrElse(getBoolean(v), false)
601+ let i = valueOrElse(getInteger(this, j), 0)
602+ let bV = (i - 1)
603+ let bj = ac(this, w(i))
604+ let bd = ac(this, f)
605+ let bk = (bj + bd)
606+ let bl = getInteger(this, p)
607+ if (if (if ((height >= bk))
608+ then (bl == unit)
609+ else false)
610+ then !(bN)
611+ else false)
612+ then {
613+ let bW = (i + 1)
614+ let bX = getInteger(this, g)
615+ let bY = {
616+ let X = bX
617+ if ($isInstanceOf(X, "Int"))
618+ then {
619+ let bw = X
620+[IntegerEntry(f, bw), DeleteEntry(g)]
621+ }
622+ else if ($isInstanceOf(X, "Unit"))
623+ then nil
624+ else throw("Match error")
625+ }
626+ $Tuple2(([IntegerEntry(w(bW), height), IntegerEntry(s, height), IntegerEntry(j, bW), IntegerEntry(p, d), IntegerEntry(h(i), bd)] ++ bY), true)
627+ }
628+ else if (if (bN)
629+ then (bl == unit)
630+ else false)
631+ then $Tuple2([IntegerEntry(p, e)], true)
632+ else if ((bl == unit))
633+ then $Tuple2(nil, false)
634+ else if ((bl == d))
635+ then {
636+ let bZ = getString(q)
637+ let ca = getString(r)
638+ let X = bZ
639+ if ($isInstanceOf(X, "Unit"))
640+ then {
641+ let cb = getString(ax(au))
642+ if ($isInstanceOf(cb, "Unit"))
643+ then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
644+ else if ($isInstanceOf(cb, "String"))
645+ then {
646+ let cc = cb
647+ $Tuple2([StringEntry(q, cc)], true)
648+ }
649+ else throw("Match error")
650+ }
651+ else if ($isInstanceOf(X, "String"))
652+ then {
653+ let by = X
654+ let z = ae(by)
655+ let cd = {
656+ let cb = ca
657+ if ($isInstanceOf(cb, "Unit"))
658+ then getString(ax(av(z)))
659+ else if ($isInstanceOf(cb, "String"))
660+ then {
661+ let ce = cb
662+ let cf = getString(aD(av(z), ce))
663+ if ((cf == cf))
664+ then {
665+ let cg = invoke(this, "processVoteINTERNAL", [by, ce], nil)
666+ if ((cg == cg))
667+ then cf
668+ else throw("Strict value is not equal to itself.")
669+ }
670+ else throw("Strict value is not equal to itself.")
671+ }
672+ else throw("Match error")
673+ }
674+ let cb = cd
675+ if ($isInstanceOf(cb, "Unit"))
676+ then {
677+ let ch = getString(aD(au, by))
678+ let ci = ch
679+ if ($isInstanceOf(ci, "Unit"))
680+ then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
681+ else if ($isInstanceOf(ci, "String"))
682+ then {
683+ let aR = ci
684+ $Tuple2([StringEntry(q, aR), DeleteEntry(r)], true)
685+ }
686+ else throw("Match error")
687+ }
688+ else if ($isInstanceOf(cb, "String"))
689+ then {
690+ let cj = cb
691+ $Tuple2([StringEntry(r, cj)], true)
692+ }
693+ else throw("Match error")
694+ }
695+ else throw("Match error")
696+ }
697+ else if ((bl == e))
698+ then {
699+ let bZ = getString(q)
700+ let X = bZ
701+ if ($isInstanceOf(X, "Unit"))
702+ then {
703+ let cb = getString(ax(au))
704+ if ($isInstanceOf(cb, "Unit"))
705+ then {
706+ let bM = if (bN)
707+ then [DeleteEntry(p), DeleteEntry(v)]
708+ else [DeleteEntry(p), BooleanEntry(x(bV), true), IntegerEntry(t, i), IntegerEntry(u, bj)]
709+ $Tuple2(bM, true)
710+ }
711+ else if ($isInstanceOf(cb, "String"))
712+ then {
713+ let ck = cb
714+ $Tuple2([StringEntry(q, ck)], true)
715+ }
716+ else throw("Match error")
717+ }
718+ else if ($isInstanceOf(X, "String"))
719+ then {
720+ let by = X
721+ let ch = getString(aD(au, by))
722+ if ((ch == ch))
723+ then {
724+ let bR = {
725+ let ab = invoke(this, "processPoolINTERNAL", [by, bN], nil)
726+ if ($isInstanceOf(ab, "Boolean"))
727+ then ab
728+ else throw(($getType(ab) + " couldn't be cast to Boolean"))
729+ }
730+ if ((bR == bR))
731+ then if (bR)
732+ then $Tuple2(nil, true)
733+ else {
734+ let cb = ch
735+ if ($isInstanceOf(cb, "Unit"))
736+ then {
737+ let bM = if (bN)
738+ then [DeleteEntry(p), DeleteEntry(v), DeleteEntry(q)]
739+ else [DeleteEntry(p), BooleanEntry(x(bV), true), IntegerEntry(t, i), IntegerEntry(u, bj), DeleteEntry(q)]
740+ $Tuple2(bM, true)
741+ }
742+ else if ($isInstanceOf(cb, "String"))
743+ then {
744+ let ck = cb
745+ $Tuple2([StringEntry(q, ck)], true)
746+ }
747+ else throw("Match error")
748+ }
749+ else throw("Strict value is not equal to itself.")
750+ }
751+ else throw("Strict value is not equal to itself.")
752+ }
753+ else throw("Match error")
754+ }
755+ else S("finalization is broken")
756+ }
757+
758+
759+
760+@Callable(aT)
761+func finalizeWrapper (cl) = {
762+ let cm = {
763+ let ab = invoke(this, "finalizeHelper", nil, nil)
764+ if ($isInstanceOf(ab, "Boolean"))
765+ then ab
766+ else throw(($getType(ab) + " couldn't be cast to Boolean"))
767+ }
768+ if ((cm == cm))
769+ then if (!(cm))
770+ then if ((cl == 0))
771+ then S("Current voting is not over yet")
772+ else $Tuple2(nil, unit)
773+ else {
774+ let cn = valueOrElse(getInteger(this, k), c)
775+ if ((cn > cl))
776+ then {
777+ let co = invoke(this, "finalizeWrapper", [(cl + 1)], nil)
778+ if ((co == co))
779+ then $Tuple2(nil, unit)
780+ else throw("Strict value is not equal to itself.")
781+ }
782+ else $Tuple2(nil, unit)
783+ }
784+ else throw("Strict value is not equal to itself.")
785+ }
786+
787+
788+
789+@Callable(aT)
790+func finalize () = {
791+ let co = invoke(this, "finalizeWrapper", [0], nil)
792+ if ((co == co))
793+ then $Tuple2(nil, unit)
794+ else throw("Strict value is not equal to itself.")
795+ }
796+
797+
798+
799+@Callable(aT)
800+func containsNodeREADONLY (ay,aC) = $Tuple2(nil, aE(ay, aC))
801+
802+
803+
804+@Callable(aT)
805+func insertNode (ay,aC) = {
806+ let bz = aV(aT)
807+ if ((bz == bz))
808+ then $Tuple2(aI(ay, aC), unit)
809+ else throw("Strict value is not equal to itself.")
810+ }
811+
812+
813+
814+@Callable(aT)
815+func deleteNode (ay,aC) = {
816+ let bz = aV(aT)
817+ if ((bz == bz))
818+ then $Tuple2(aL(ay, aC), unit)
819+ else throw("Strict value is not equal to itself.")
820+ }
821+
822+
823+@Verifier(cp)
824+func cq () = {
825+ let cr = {
826+ let X = aP()
827+ if ($isInstanceOf(X, "ByteVector"))
828+ then {
829+ let aU = X
830+ aU
831+ }
832+ else if ($isInstanceOf(X, "Unit"))
833+ then cp.senderPublicKey
834+ else throw("Match error")
835+ }
836+ sigVerify(cp.bodyBytes, cp.proofs[0], cr)
837+ }
838+

github/deemru/w8io/169f3d6 
49.18 ms