From 4131b764265d8c1e69dd9b0b2975d220f9cf9b71 Mon Sep 17 00:00:00 2001 From: Pablo Maldonado Date: Wed, 17 Jul 2024 14:40:19 +0100 Subject: [PATCH] feat: oval discovery Signed-off-by: Pablo Maldonado --- src/abi/PermissionProxy.json | 1 + src/abi/StandardChainlinkFactory.json | 1 + src/abi/StandardChronicleFactory.json | 1 + src/abi/StandardCoinbaseFactory.json | 1 + src/abi/StandardPythFactory.json | 1 + src/contract-types/PermissionProxy.ts | 249 ++++++++++++++ .../StandardChainlinkFactory.ts | 310 +++++++++++++++++ .../StandardChronicleFactory.ts | 310 +++++++++++++++++ src/contract-types/StandardCoinbaseFactory.ts | 318 ++++++++++++++++++ src/contract-types/StandardPythFactory.ts | 318 ++++++++++++++++++ src/contract-types/common.ts | 131 ++++++++ .../factories/PermissionProxy__factory.ts | 245 ++++++++++++++ .../StandardChainlinkFactory__factory.ts | 291 ++++++++++++++++ .../StandardChronicleFactory__factory.ts | 291 ++++++++++++++++ .../StandardCoinbaseFactory__factory.ts | 313 +++++++++++++++++ .../factories/StandardPythFactory__factory.ts | 313 +++++++++++++++++ src/contract-types/factories/index.ts | 8 + src/contract-types/index.ts | 14 + src/lib/ovalDiscovery.ts | 167 +++++++++ 19 files changed, 3283 insertions(+) create mode 100644 src/abi/PermissionProxy.json create mode 100644 src/abi/StandardChainlinkFactory.json create mode 100644 src/abi/StandardChronicleFactory.json create mode 100644 src/abi/StandardCoinbaseFactory.json create mode 100644 src/abi/StandardPythFactory.json create mode 100644 src/contract-types/PermissionProxy.ts create mode 100644 src/contract-types/StandardChainlinkFactory.ts create mode 100644 src/contract-types/StandardChronicleFactory.ts create mode 100644 src/contract-types/StandardCoinbaseFactory.ts create mode 100644 src/contract-types/StandardPythFactory.ts create mode 100644 src/contract-types/common.ts create mode 100644 src/contract-types/factories/PermissionProxy__factory.ts create mode 100644 src/contract-types/factories/StandardChainlinkFactory__factory.ts create mode 100644 src/contract-types/factories/StandardChronicleFactory__factory.ts create mode 100644 src/contract-types/factories/StandardCoinbaseFactory__factory.ts create mode 100644 src/contract-types/factories/StandardPythFactory__factory.ts create mode 100644 src/contract-types/factories/index.ts create mode 100644 src/contract-types/index.ts create mode 100644 src/lib/ovalDiscovery.ts diff --git a/src/abi/PermissionProxy.json b/src/abi/PermissionProxy.json new file mode 100644 index 0000000..7b091ce --- /dev/null +++ b/src/abi/PermissionProxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"execute","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"senders","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setSender","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"allowed","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SenderSet","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"allowed","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"error","name":"CallFailed","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SenderNotApproved","inputs":[{"name":"sender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6109978061007e6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063982fb9d81161005b578063982fb9d8146100d0578063ac9650d814610103578063cf2c550c14610123578063f2fde38b1461013657600080fd5b80631cff79cd14610082578063715018a6146100ab5780638da5cb5b146100b5575b600080fd5b61009561009036600461061c565b610149565b6040516100a2919061072e565b60405180910390f35b6100b3610211565b005b6000546040516001600160a01b0390911681526020016100a2565b6100f36100de366004610741565b60016020526000908152604090205460ff1681565b60405190151581526020016100a2565b61011661011136600461075c565b610225565b6040516100a291906107d1565b6100b3610131366004610833565b61031a565b6100b3610144366004610741565b610385565b3360009081526001602052604090205460609060ff1661018357604051636ae23d1f60e01b81523360048201526024015b60405180910390fd5b600080846001600160a01b03166000856040516101a0919061086f565b60006040518083038185875af1925050503d80600081146101dd576040519150601f19603f3d011682016040523d82523d6000602084013e6101e2565b606091505b509150915081610209578484604051636c544f3360e01b815260040161017a92919061088b565b949350505050565b6102196103fe565b6102236000610458565b565b60608167ffffffffffffffff81111561024057610240610606565b60405190808252806020026020018201604052801561027357816020015b606081526020019060019003908161025e5790505b50905060005b82811015610313576102e330858584818110610297576102976108af565b90506020028101906102a991906108c5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104a892505050565b8282815181106102f5576102f56108af565b6020026020010181905250808061030b90610913565b915050610279565b5092915050565b6103226103fe565b6001600160a01b038216600081815260016020908152604091829020805460ff19168515159081179091558251938452908301527f8f2370569c3f86d7030114a30f04d77c85f28ab3f365eb3ebb918575841c4fa4910160405180910390a15050565b61038d6103fe565b6001600160a01b0381166103f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161017a565b6103fb81610458565b50565b6000546001600160a01b031633146102235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161017a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606104cd838360405180606001604052806027815260200161093b602791396104d4565b9392505050565b6060600080856001600160a01b0316856040516104f1919061086f565b600060405180830381855af49150503d806000811461052c576040519150601f19603f3d011682016040523d82523d6000602084013e610531565b606091505b50915091506105428683838761054c565b9695505050505050565b606083156105bb5782516000036105b4576001600160a01b0385163b6105b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161017a565b5081610209565b61020983838151156105d05781518083602001fd5b8060405162461bcd60e51b815260040161017a919061072e565b80356001600160a01b038116811461060157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561062f57600080fd5b610638836105ea565b9150602083013567ffffffffffffffff8082111561065557600080fd5b818501915085601f83011261066957600080fd5b81358181111561067b5761067b610606565b604051601f8201601f19908116603f011681019083821181831017156106a3576106a3610606565b816040528281528860208487010111156106bc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156106f95781810151838201526020016106e1565b50506000910152565b6000815180845261071a8160208601602086016106de565b601f01601f19169290920160200192915050565b6020815260006104cd6020830184610702565b60006020828403121561075357600080fd5b6104cd826105ea565b6000806020838503121561076f57600080fd5b823567ffffffffffffffff8082111561078757600080fd5b818501915085601f83011261079b57600080fd5b8135818111156107aa57600080fd5b8660208260051b85010111156107bf57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561082657603f19888603018452610814858351610702565b945092850192908501906001016107f8565b5092979650505050505050565b6000806040838503121561084657600080fd5b61084f836105ea565b91506020830135801515811461086457600080fd5b809150509250929050565b600082516108818184602087016106de565b9190910192915050565b6001600160a01b038316815260406020820181905260009061020990830184610702565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126108dc57600080fd5b83018035915067ffffffffffffffff8211156108f757600080fd5b60200191503681900382131561090c57600080fd5b9250929050565b60006001820161093357634e487b7160e01b600052601160045260246000fd5b506001019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122062cb28768ebad7fa180d4c11b8b16cf2b779333661631a8ea42b4b6eb584ff8864736f6c63430008110033","sourceMap":"553:1253:46:-:0;;;;;;;;;;;;-1:-1:-1;936:32:14;719:10:18;936:18:14;:32::i;:::-;553:1253:46;;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;553:1253:46:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063982fb9d81161005b578063982fb9d8146100d0578063ac9650d814610103578063cf2c550c14610123578063f2fde38b1461013657600080fd5b80631cff79cd14610082578063715018a6146100ab5780638da5cb5b146100b5575b600080fd5b61009561009036600461061c565b610149565b6040516100a2919061072e565b60405180910390f35b6100b3610211565b005b6000546040516001600160a01b0390911681526020016100a2565b6100f36100de366004610741565b60016020526000908152604090205460ff1681565b60405190151581526020016100a2565b61011661011136600461075c565b610225565b6040516100a291906107d1565b6100b3610131366004610833565b61031a565b6100b3610144366004610741565b610385565b3360009081526001602052604090205460609060ff1661018357604051636ae23d1f60e01b81523360048201526024015b60405180910390fd5b600080846001600160a01b03166000856040516101a0919061086f565b60006040518083038185875af1925050503d80600081146101dd576040519150601f19603f3d011682016040523d82523d6000602084013e6101e2565b606091505b509150915081610209578484604051636c544f3360e01b815260040161017a92919061088b565b949350505050565b6102196103fe565b6102236000610458565b565b60608167ffffffffffffffff81111561024057610240610606565b60405190808252806020026020018201604052801561027357816020015b606081526020019060019003908161025e5790505b50905060005b82811015610313576102e330858584818110610297576102976108af565b90506020028101906102a991906108c5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104a892505050565b8282815181106102f5576102f56108af565b6020026020010181905250808061030b90610913565b915050610279565b5092915050565b6103226103fe565b6001600160a01b038216600081815260016020908152604091829020805460ff19168515159081179091558251938452908301527f8f2370569c3f86d7030114a30f04d77c85f28ab3f365eb3ebb918575841c4fa4910160405180910390a15050565b61038d6103fe565b6001600160a01b0381166103f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161017a565b6103fb81610458565b50565b6000546001600160a01b031633146102235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161017a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606104cd838360405180606001604052806027815260200161093b602791396104d4565b9392505050565b6060600080856001600160a01b0316856040516104f1919061086f565b600060405180830381855af49150503d806000811461052c576040519150601f19603f3d011682016040523d82523d6000602084013e610531565b606091505b50915091506105428683838761054c565b9695505050505050565b606083156105bb5782516000036105b4576001600160a01b0385163b6105b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161017a565b5081610209565b61020983838151156105d05781518083602001fd5b8060405162461bcd60e51b815260040161017a919061072e565b80356001600160a01b038116811461060157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561062f57600080fd5b610638836105ea565b9150602083013567ffffffffffffffff8082111561065557600080fd5b818501915085601f83011261066957600080fd5b81358181111561067b5761067b610606565b604051601f8201601f19908116603f011681019083821181831017156106a3576106a3610606565b816040528281528860208487010111156106bc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156106f95781810151838201526020016106e1565b50506000910152565b6000815180845261071a8160208601602086016106de565b601f01601f19169290920160200192915050565b6020815260006104cd6020830184610702565b60006020828403121561075357600080fd5b6104cd826105ea565b6000806020838503121561076f57600080fd5b823567ffffffffffffffff8082111561078757600080fd5b818501915085601f83011261079b57600080fd5b8135818111156107aa57600080fd5b8660208260051b85010111156107bf57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561082657603f19888603018452610814858351610702565b945092850192908501906001016107f8565b5092979650505050505050565b6000806040838503121561084657600080fd5b61084f836105ea565b91506020830135801515811461086457600080fd5b809150509250929050565b600082516108818184602087016106de565b9190910192915050565b6001600160a01b038316815260406020820181905260009061020990830184610702565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126108dc57600080fd5b83018035915067ffffffffffffffff8211156108f757600080fd5b60200191503681900382131561090c57600080fd5b9250929050565b60006001820161093357634e487b7160e01b600052601160045260246000fd5b506001019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122062cb28768ebad7fa180d4c11b8b16cf2b779333661631a8ea42b4b6eb584ff8864736f6c63430008110033","sourceMap":"553:1253:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:387;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:14;;;:::i;:::-;;1201:85;1247:7;1273:6;1201:85;;-1:-1:-1;;;;;1273:6:14;;;2222:51:65;;2210:2;2195:18;1201:85:14;2076:203:65;758:39:46;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2640:14:65;;2633:22;2615:41;;2603:2;2588:18;758:39:46;2475:187:65;470:308:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;979:151:46:-;;;;;;:::i;:::-;;:::i;2074:198:14:-;;;;;;:::i;:::-;;:::i;1417:387:46:-;1528:10;1520:19;;;;:7;:19;;;;;;1491:12;;1520:19;;1515:87;;1562:29;;-1:-1:-1;;;1562:29:46;;1580:10;1562:29;;;2222:51:65;2195:18;;1562:29:46;;;;;;;;1515:87;1613:12;1627:23;1654:6;-1:-1:-1;;;;;1654:11:46;1673:1;1676:8;1654:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1612:73;;;;1701:7;1696:74;;1742:6;1750:8;1731:28;;-1:-1:-1;;;1731:28:46;;;;;;;;;:::i;1696:74::-;1787:10;1417:387;-1:-1:-1;;;;1417:387:46:o;1824:101:14:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;470:308:19:-;538:22;594:4;582:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:34;;621:9;616:132;636:15;;;616:132;;;685:52;722:4;729;;734:1;729:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;685:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;685:28:19;;-1:-1:-1;;;685:52:19:i;:::-;672:7;680:1;672:10;;;;;;;;:::i;:::-;;;;;;:65;;;;653:3;;;;;:::i;:::-;;;;616:132;;;;470:308;;;;:::o;979:151:46:-;1094:13:14;:11;:13::i;:::-;-1:-1:-1;;;;;1057:15:46;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;;:25;;-1:-1:-1;;1057:25:46::1;::::0;::::1;;::::0;;::::1;::::0;;;1097:26;;6129:51:65;;;6196:18;;;6189:50;1097:26:46::1;::::0;6102:18:65;1097:26:46::1;;;;;;;979:151:::0;;:::o;2074:198:14:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:14;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:14;;6452:2:65;2154:73:14::1;::::0;::::1;6434:21:65::0;6491:2;6471:18;;;6464:30;6530:34;6510:18;;;6503:62;-1:-1:-1;;;6581:18:65;;;6574:36;6627:19;;2154:73:14::1;6250:402:65::0;2154:73:14::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;6859:2:65;1414:68:14;;;6841:21:65;;;6878:18;;;6871:30;6937:34;6917:18;;;6910:62;6989:18;;1414:68:14;6657:356:65;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;6674:198:17:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:17:o;7058:325::-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:17;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:17:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:17;;;8113:60;;;;-1:-1:-1;;;8113:60:17;;7220:2:65;8113:60:17;;;7202:21:65;7259:2;7239:18;;;7232:30;7298:31;7278:18;;;7271:59;7347:18;;8113:60:17;7018:353:65;8113:60:17;-1:-1:-1;8208:10:17;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:17;;;;;;;;:::i;14:173:65:-;82:20;;-1:-1:-1;;;;;131:31:65;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:127::-;253:10;248:3;244:20;241:1;234:31;284:4;281:1;274:15;308:4;305:1;298:15;324:995;401:6;409;462:2;450:9;441:7;437:23;433:32;430:52;;;478:1;475;468:12;430:52;501:29;520:9;501:29;:::i;:::-;491:39;;581:2;570:9;566:18;553:32;604:18;645:2;637:6;634:14;631:34;;;661:1;658;651:12;631:34;699:6;688:9;684:22;674:32;;744:7;737:4;733:2;729:13;725:27;715:55;;766:1;763;756:12;715:55;802:2;789:16;824:2;820;817:10;814:36;;;830:18;;:::i;:::-;905:2;899:9;873:2;959:13;;-1:-1:-1;;955:22:65;;;979:2;951:31;947:40;935:53;;;1003:18;;;1023:22;;;1000:46;997:72;;;1049:18;;:::i;:::-;1089:10;1085:2;1078:22;1124:2;1116:6;1109:18;1164:7;1159:2;1154;1150;1146:11;1142:20;1139:33;1136:53;;;1185:1;1182;1175:12;1136:53;1241:2;1236;1232;1228:11;1223:2;1215:6;1211:15;1198:46;1286:1;1281:2;1276;1268:6;1264:15;1260:24;1253:35;1307:6;1297:16;;;;;;;324:995;;;;;:::o;1324:250::-;1409:1;1419:113;1433:6;1430:1;1427:13;1419:113;;;1509:11;;;1503:18;1490:11;;;1483:39;1455:2;1448:10;1419:113;;;-1:-1:-1;;1566:1:65;1548:16;;1541:27;1324:250::o;1579:270::-;1620:3;1658:5;1652:12;1685:6;1680:3;1673:19;1701:76;1770:6;1763:4;1758:3;1754:14;1747:4;1740:5;1736:16;1701:76;:::i;:::-;1831:2;1810:15;-1:-1:-1;;1806:29:65;1797:39;;;;1838:4;1793:50;;1579:270;-1:-1:-1;;1579:270:65:o;1854:217::-;2001:2;1990:9;1983:21;1964:4;2021:44;2061:2;2050:9;2046:18;2038:6;2021:44;:::i;2284:186::-;2343:6;2396:2;2384:9;2375:7;2371:23;2367:32;2364:52;;;2412:1;2409;2402:12;2364:52;2435:29;2454:9;2435:29;:::i;2667:626::-;2764:6;2772;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;2881:9;2868:23;2910:18;2951:2;2943:6;2940:14;2937:34;;;2967:1;2964;2957:12;2937:34;3005:6;2994:9;2990:22;2980:32;;3050:7;3043:4;3039:2;3035:13;3031:27;3021:55;;3072:1;3069;3062:12;3021:55;3112:2;3099:16;3138:2;3130:6;3127:14;3124:34;;;3154:1;3151;3144:12;3124:34;3207:7;3202:2;3192:6;3189:1;3185:14;3181:2;3177:23;3173:32;3170:45;3167:65;;;3228:1;3225;3218:12;3167:65;3259:2;3251:11;;;;;3281:6;;-1:-1:-1;2667:626:65;;-1:-1:-1;;;;2667:626:65:o;3298:800::-;3458:4;3487:2;3527;3516:9;3512:18;3557:2;3546:9;3539:21;3580:6;3615;3609:13;3646:6;3638;3631:22;3684:2;3673:9;3669:18;3662:25;;3746:2;3736:6;3733:1;3729:14;3718:9;3714:30;3710:39;3696:53;;3784:2;3776:6;3772:15;3805:1;3815:254;3829:6;3826:1;3823:13;3815:254;;;3922:2;3918:7;3906:9;3898:6;3894:22;3890:36;3885:3;3878:49;3950:39;3982:6;3973;3967:13;3950:39;:::i;:::-;3940:49;-1:-1:-1;4047:12:65;;;;4012:15;;;;3851:1;3844:9;3815:254;;;-1:-1:-1;4086:6:65;;3298:800;-1:-1:-1;;;;;;;3298:800:65:o;4103:347::-;4168:6;4176;4229:2;4217:9;4208:7;4204:23;4200:32;4197:52;;;4245:1;4242;4235:12;4197:52;4268:29;4287:9;4268:29;:::i;:::-;4258:39;;4347:2;4336:9;4332:18;4319:32;4394:5;4387:13;4380:21;4373:5;4370:32;4360:60;;4416:1;4413;4406:12;4360:60;4439:5;4429:15;;;4103:347;;;;;:::o;4455:287::-;4584:3;4622:6;4616:13;4638:66;4697:6;4692:3;4685:4;4677:6;4673:17;4638:66;:::i;:::-;4720:16;;;;;4455:287;-1:-1:-1;;4455:287:65:o;4747:314::-;-1:-1:-1;;;;;4922:32:65;;4904:51;;4991:2;4986;4971:18;;4964:30;;;-1:-1:-1;;5011:44:65;;5036:18;;5028:6;5011:44;:::i;5066:127::-;5127:10;5122:3;5118:20;5115:1;5108:31;5158:4;5155:1;5148:15;5182:4;5179:1;5172:15;5198:521;5275:4;5281:6;5341:11;5328:25;5435:2;5431:7;5420:8;5404:14;5400:29;5396:43;5376:18;5372:68;5362:96;;5454:1;5451;5444:12;5362:96;5481:33;;5533:20;;;-1:-1:-1;5576:18:65;5565:30;;5562:50;;;5608:1;5605;5598:12;5562:50;5641:4;5629:17;;-1:-1:-1;5672:14:65;5668:27;;;5658:38;;5655:58;;;5709:1;5706;5699:12;5655:58;5198:521;;;;;:::o;5724:232::-;5763:3;5784:17;;;5781:140;;5843:10;5838:3;5834:20;5831:1;5824:31;5878:4;5875:1;5868:15;5906:4;5903:1;5896:15;5781:140;-1:-1:-1;5948:1:65;5937:13;;5724:232::o","linkReferences":{}},"methodIdentifiers":{"execute(address,bytes)":"1cff79cd","multicall(bytes[])":"ac9650d8","owner()":"8da5cb5b","renounceOwnership()":"715018a6","senders(address)":"982fb9d8","setSender(address,bool)":"cf2c550c","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderNotApproved\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"SenderSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"senders\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"setSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The intended use case for this contract is to add this as a single unlocker to Oval contracts, allowing the owner of this contract to delegate that permission to many different unlocker addresses.\",\"kind\":\"dev\",\"methods\":{\"execute(address,bytes)\":{\"details\":\"Can only be called by an allowed sender.\",\"params\":{\"callData\":\"the calldata to use for the call.\",\"target\":\"the address to call.\"},\"returns\":{\"_0\":\"the data returned by the external call.\"}},\"multicall(bytes[])\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Receives and executes a batch of function calls on this contract.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setSender(address,bool)\":{\"params\":{\"allowed\":\"whether the sender should be allowed.\",\"sender\":\"the sender to enable or disable.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"PermissionProxy is a proxy that extends the permissions given to it to a configurable set of addresses.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute(address,bytes)\":{\"notice\":\"Executes a call from this contract.\"},\"setSender(address,bool)\":{\"notice\":\"Enables or disables a sender.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/factories/PermissionProxy.sol\":\"PermissionProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/redstone-contracts/lib/@chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/\",\":@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":redstone-contracts/=lib/redstone-contracts/src/\",\":redstone-oracle/=lib/redstone-contracts/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Multicall.sol\":{\"keccak256\":\"0xface9a29da6448061decb3506735c0c37aae8820ffaacfea982b1a8633be20d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b5e6f84ed95d9b7f8d6fd8b1019c0aa2114d417dd7a57728d05f6fabf30b8d0\",\"dweb:/ipfs/Qmbbgsakxi9caqBtYpAa8UKQCXvNmKnyRNyp8YAVpa91gM\"]},\"src/factories/PermissionProxy.sol\":{\"keccak256\":\"0x8b4680128049ddf5c95d7621848c9c6268f9ef26035ec1ca1fcea43185541e40\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e18868530d8aed85ce4184cfc6fab8f0e28a25581ae11670fb7bbf1af0344461\",\"dweb:/ipfs/QmakiRESHaKbrz9prXCtC7RxgXs2hXGNVpoW3C21ymFkHZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"type":"error","name":"CallFailed"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"SenderNotApproved"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bool","name":"allowed","type":"bool","indexed":false}],"type":"event","name":"SenderSet","anonymous":false},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"senders","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setSender"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"execute(address,bytes)":{"details":"Can only be called by an allowed sender.","params":{"callData":"the calldata to use for the call.","target":"the address to call."},"returns":{"_0":"the data returned by the external call."}},"multicall(bytes[])":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Receives and executes a batch of function calls on this contract."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setSender(address,bool)":{"params":{"allowed":"whether the sender should be allowed.","sender":"the sender to enable or disable."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"execute(address,bytes)":{"notice":"Executes a call from this contract."},"setSender(address,bool)":{"notice":"Enables or disables a sender."}},"version":1}},"settings":{"remappings":["@chainlink/=lib/redstone-contracts/lib/@chainlink/","@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/","@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","redstone-contracts/=lib/redstone-contracts/src/","redstone-oracle/=lib/redstone-contracts/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/factories/PermissionProxy.sol":"PermissionProxy"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218","urls":["bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32","dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Multicall.sol":{"keccak256":"0xface9a29da6448061decb3506735c0c37aae8820ffaacfea982b1a8633be20d4","urls":["bzz-raw://6b5e6f84ed95d9b7f8d6fd8b1019c0aa2114d417dd7a57728d05f6fabf30b8d0","dweb:/ipfs/Qmbbgsakxi9caqBtYpAa8UKQCXvNmKnyRNyp8YAVpa91gM"],"license":"MIT"},"src/factories/PermissionProxy.sol":{"keccak256":"0x8b4680128049ddf5c95d7621848c9c6268f9ef26035ec1ca1fcea43185541e40","urls":["bzz-raw://e18868530d8aed85ce4184cfc6fab8f0e28a25581ae11670fb7bbf1af0344461","dweb:/ipfs/QmakiRESHaKbrz9prXCtC7RxgXs2hXGNVpoW3C21ymFkHZ"],"license":"BUSL-1.1"}},"version":1},"id":46} \ No newline at end of file diff --git a/src/abi/StandardChainlinkFactory.json b/src/abi/StandardChainlinkFactory.json new file mode 100644 index 0000000..e34c64a --- /dev/null +++ b/src/abi/StandardChainlinkFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_maxTraversal","type":"uint256","internalType":"uint256"},{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_TRAVERSAL","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"source","type":"address","internalType":"contract IAggregatorV3Source"},{"name":"lockWindow","type":"uint256","internalType":"uint256"},{"name":"maxAge","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"oval","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultUnlockers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultUnlockers","inputs":[{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultUnlockersSet","inputs":[{"name":"defaultUnlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OvalDeployed","inputs":[{"name":"deployer","type":"address","indexed":true,"internalType":"address"},{"name":"oval","type":"address","indexed":true,"internalType":"address"},{"name":"lockWindow","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"maxTraversal","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"unlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b50604051620023a8380380620023a883398101604081905262000034916200026f565b81816200004133620000b1565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a78162000101565b505050506200039e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200010b6200015d565b805162000120906001906020840190620001bb565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015291906200034f565b60405180910390a150565b6000546001600160a01b03163314620001b95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b82805482825590600052602060002090810192821562000213579160200282015b828111156200021357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001dc565b506200022192915062000225565b5090565b5b8082111562000221576000815560010162000226565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200026a57600080fd5b919050565b600080604083850312156200028357600080fd5b8251602080850151919350906001600160401b0380821115620002a557600080fd5b818601915086601f830112620002ba57600080fd5b815181811115620002cf57620002cf6200023c565b8060051b604051601f19603f83011681018181108582111715620002f757620002f76200023c565b6040529182528482019250838101850191898311156200031657600080fd5b938501935b828510156200033f576200032f8562000252565b845293850193928501926200031b565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620003925783516001600160a01b0316835292840192918401916001016200036b565b50909695505050505050565b608051611fe1620003c76000396000818160c60152818161016201526102030152611fe16000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a6146200010e5780638da5cb5b146200011a578063a9d14058146200012c578063f2fde38b146200014357600080fd5b80635165da30146200008c5780635878157614620000c05780635c681d1e14620000f7575b600080fd5b620000a36200009d366004620004ca565b6200015a565b6040516001600160a01b0390911681526020015b60405180910390f35b620000e87f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620000b7565b620000a36200010836600462000502565b62000257565b6200011862000282565b005b6000546001600160a01b0316620000a3565b620001186200013d36600462000544565b6200029a565b620001186200015436600462000617565b620002f6565b6000836001847f000000000000000000000000000000000000000000000000000000000000000085620001956000546001600160a01b031690565b604051620001a39062000425565b620001b49695949392919062000689565b604051809103906000f080158015620001d1573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f0000000000000000000000000000000000000000000000000000000000000000620002356000546001600160a01b031690565b60016040516200024893929190620006d5565b60405180910390a49392505050565b600181815481106200026857600080fd5b6000918252602090912001546001600160a01b0316905081565b6200028c62000379565b620002986000620003d5565b565b620002a462000379565b8051620002b990600190602084019062000433565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae1681604051620002eb91906200070a565b60405180910390a150565b6200030062000379565b6001600160a01b0381166200036b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200037681620003d5565b50565b6000546001600160a01b03163314620002985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000362565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611852806200075a83390190565b8280548282559060005260206000209081019282156200048b579160200282015b828111156200048b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000454565b50620004999291506200049d565b5090565b5b808211156200049957600081556001016200049e565b6001600160a01b03811681146200037657600080fd5b600080600060608486031215620004e057600080fd5b8335620004ed81620004b4565b95602085013595506040909401359392505050565b6000602082840312156200051557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356200053f81620004b4565b919050565b600060208083850312156200055857600080fd5b823567ffffffffffffffff808211156200057157600080fd5b818501915085601f8301126200058657600080fd5b8135818111156200059b576200059b6200051c565b8060051b604051601f19603f83011681018181108582111715620005c357620005c36200051c565b604052918252848201925083810185019188831115620005e257600080fd5b938501935b828510156200060b57620005fb8562000532565b84529385019392850192620005e7565b98975050505050505050565b6000602082840312156200062a57600080fd5b81356200063781620004b4565b9392505050565b6000815480845260208085019450836000528060002060005b838110156200067e5781546001600160a01b03168752958201956001918201910162000657565b509495945050505050565b600060018060a01b03808916835260c06020840152620006ad60c08401896200063e565b915086604084015285606084015284608084015280841660a084015250979650505050505050565b8381526001600160a01b038316602082015260606040820181905260009062000701908301846200063e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156200074d5783516001600160a01b03168352928401929184019160010162000726565b5090969550505050505056fe6101406040523480156200001257600080fd5b50604051620018523803806200185283398101604081905262000035916200049b565b601286858588866200004733620002dc565b8381116200009c5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ee5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000093565b608084905260a083905260c081905260005b82518110156200014e5762000139838281518110620001235762000123620005b4565b602002602001015160016200032c60201b60201c565b806200014581620005ca565b91505062000100565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a250505050806001600160a01b031660e0816001600160a01b031681525050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002539190620005f2565b60ff166101008190526040516001600160a01b038316907f023d13f58a0d1b57e2446bf7ee75c602447357846ca76f9b1dd6b982caa53b7d90600090a35060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002d081620002dc565b5050505050506200061e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b62000336620003fc565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003a85760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000093565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620004585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000093565b565b6001600160a01b03811681146200047057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b805162000496816200045a565b919050565b60008060008060008060c08789031215620004b557600080fd5b8651620004c2816200045a565b602088810151919750906001600160401b0380821115620004e257600080fd5b818a0191508a601f830112620004f757600080fd5b8151818111156200050c576200050c62000473565b8060051b604051601f19603f8301168101818110858211171562000534576200053462000473565b60405291825284820192508381018501918d8311156200055357600080fd5b938501935b828510156200057c576200056c8562000489565b8452938501939285019262000558565b809a50505050505050604087015193506060870151925060808701519150620005a860a0880162000489565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b600060018201620005eb57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200060557600080fd5b815160ff811681146200061757600080fd5b9392505050565b60805160a05160c05160e0516101005161012051611189620006c9600039600081816102180152818161069f0152818161071a015261097f0152600081816105530152818161065801526107700152600081816101d9015281816104c6015281816105ad01528181610b610152610cf00152600081816102ac0152610c1701526000818161033a0152610401015260008181610261015281816103ce015261090b01526111896000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063687043c5116100c3578063a5c38b3d1161007c578063a5c38b3d1461035e578063cb53b08d14610367578063d3fff0f61461037a578063f2fde38b1461038d578063f6e1d17a146103a0578063feaf968c146103b357600080fd5b8063687043c5146102aa578063715018a6146102d05780638205bf6a146102d85780638da5cb5b146102e05780639a6fc8f5146102f1578063a3c044761461033857600080fd5b8063313ce56711610115578063313ce5671461021357806332c6534b1461024c5780633376f53a1461025f5780633d6ba5781461028f57806350d25bcd146102a25780636666d3721461018257600080fd5b80630125554b14610152578063138623641461017a578063172b09f91461018457806324a419f4146101b75780632ef9ebba146101d4575b600080fd5b61015a6103bb565b604080519384526020840192909252908201526060015b60405180910390f35b610182610430565b005b6101a7610192366004610dfc565b60026020526000908152604090205460ff1681565b6040519015158152602001610171565b6101bf6104be565b60408051928352602083019190915201610171565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610171565b61023a7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610171565b6101a761025a366004610e17565b610582565b7f00000000000000000000000000000000000000000000000000000000000000005b604051908152602001610171565b6101bf61029d366004610e41565b6105a5565b610281610688565b7f0000000000000000000000000000000000000000000000000000000000000000610281565b6101826106cb565b6102816106dd565b6000546001600160a01b03166101fb565b6103046102ff366004610e6f565b6106f0565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610171565b7f0000000000000000000000000000000000000000000000000000000000000000610281565b61028160015481565b61015a610375366004610e8c565b610751565b610182610388366004610eae565b6107af565b61018261039b366004610dfc565b610872565b6101bf6103ae366004610e41565b6108eb565b61030461094f565b60008060006104256103ff6001546103f07f000000000000000000000000000000000000000000000000000000000000000090565b6103fa9042610f00565b6109b7565b7f0000000000000000000000000000000000000000000000000000000000000000610751565b925092509250909192565b61043c33600154610582565b61048d5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105469190610f13565b50935050925050610579827f000000000000000000000000000000000000000000000000000000000000000060126109cf565b94909350915050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f56105e387610a40565b6040516001600160e01b031960e084901b1681526001600160501b03909116600482015260240160a060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b9190610f13565b5093505092505061067e827f000000000000000000000000000000000000000000000000000000000000000060126109cf565b9590945092505050565b6000806106936103bb565b505090506106c38160127f00000000000000000000000000000000000000000000000000000000000000006109cf565b91505090565b565b6106d3610aac565b6106c96000610b06565b6000806106e86103bb565b509392505050565b600080600080600080600061070d886001600160501b03166108eb565b915091508761073e8360127f00000000000000000000000000000000000000000000000000000000000000006109cf565b9099909891975087965090945092505050565b6000806000806000806107648888610b56565b925092509250610796837f000000000000000000000000000000000000000000000000000000000000000060126109cf565b95509093506001600160501b03169150505b9250925092565b6107b7610aac565b6001600160a01b03821660009081526002602052604090205481151560ff90911615150361081e5760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b6044820152606401610484565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b61087a610aac565b6001600160a01b0381166108df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610484565b6108e881610b06565b50565b6000806000806108fa856105a5565b91509150600061092d6001546103f07f000000000000000000000000000000000000000000000000000000000000000090565b905080821161094157509094909350915050565b506000958695509350505050565b6000806000806000806000806109636103bb565b925092509250600061097482610a40565b9050806109a38560127f00000000000000000000000000000000000000000000000000000000000000006109cf565b909a90995092975087965094509092505050565b60008183116109c657816109c8565b825b9392505050565b60008160ff168360ff16036109e55750826109c8565b8160ff168360ff161015610a19576109fd8383610f6b565b610a0890600a611068565b610a129085611077565b90506109c8565b610a238284610f6b565b610a2e90600a611068565b610a3890856110a7565b949350505050565b60006001600160501b03821115610aa85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b6064820152608401610484565b5090565b6000546001600160a01b031633146106c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610484565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190610f13565b5093505092509250878111610bfc57909450925090506107a8565b6000806000610c0c8b878c610c6b565b925092509250610c397f000000000000000000000000000000000000000000000000000000000000000090565b610c439042610f00565b821115610c5a57919750955093506107a892505050565b509299919850929650945050505050565b600080808080808080610c8b69ffff00000000000000008b1660016110e3565b90505b886001600160501b0316826001600160501b0316108015610cc05750806001600160501b03168a6001600160501b0316115b15610dcc5789610ccf8161110a565b604051639a6fc8f560e01b81526001600160501b0382166004820152909b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169150639a6fc8f59060240160a060405180830381865afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190610f13565b50929750909550909350506001600160501b03808616908b16148015610d8a5750600083115b610da35760008060009750975097505050505050610dd7565b8a8311610dba57509195509350909150610dd79050565b81610dc48161112d565b925050610c8e565b509195509350909150505b93509350939050565b80356001600160a01b0381168114610df757600080fd5b919050565b600060208284031215610e0e57600080fd5b6109c882610de0565b60008060408385031215610e2a57600080fd5b610e3383610de0565b946020939093013593505050565b600060208284031215610e5357600080fd5b5035919050565b6001600160501b03811681146108e857600080fd5b600060208284031215610e8157600080fd5b81356109c881610e5a565b60008060408385031215610e9f57600080fd5b50508035926020909101359150565b60008060408385031215610ec157600080fd5b610eca83610de0565b915060208301358015158114610edf57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059f5761059f610eea565b600080600080600060a08688031215610f2b57600080fd5b8551610f3681610e5a565b809550506020860151935060408601519250606086015191506080860151610f5d81610e5a565b809150509295509295909350565b60ff828116828216039081111561059f5761059f610eea565b600181815b80851115610fbf578160001904821115610fa557610fa5610eea565b80851615610fb257918102915b93841c9390800290610f89565b509250929050565b600082610fd65750600161059f565b81610fe35750600061059f565b8160018114610ff957600281146110035761101f565b600191505061059f565b60ff84111561101457611014610eea565b50506001821b61059f565b5060208310610133831016604e8410600b8410161715611042575081810a61059f565b61104c8383610f84565b806000190482111561106057611060610eea565b029392505050565b60006109c860ff841683610fc7565b80820260008212600160ff1b8414161561109357611093610eea565b818105831482151761059f5761059f610eea565b6000826110c457634e487b7160e01b600052601260045260246000fd5b600160ff1b8214600019841416156110de576110de610eea565b500590565b6001600160501b0381811683821601908082111561110357611103610eea565b5092915050565b60006001600160501b0382168061112357611123610eea565b6000190192915050565b60006001600160501b0380831681810361114957611149610eea565b600101939250505056fea26469706673582212208216491b98c1ecc221e059f95d494328ed8c71bec184d53aac216a82b7e3fe8664736f6c63430008110033a2646970667358221220cff7f06d390e1c21bd01cc495c94cd09826e90fdea328cf0a7a612aa369c343c64736f6c63430008110033","sourceMap":"1513:1095:47:-:0;;;1577:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1668:13;1683:17;936:32:14;719:10:18;936:18:14;:32::i;:::-;925:1:45;909:13;:17;901:55;;;;-1:-1:-1;;;901:55:45;;1725:2:65;901:55:45;;;1707:21:65;1764:2;1744:18;;;1737:30;1803:27;1783:18;;;1776:55;1848:18;;901:55:45;;;;;;;;;967:29;;;;1006:38;1026:17;1006:19;:38::i;:::-;820:231;;1577:131:47;;1513:1095;;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;1359:130:14:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;2742:2:65;1414:68:14;;;2724:21:65;;;2761:18;;;2754:30;2820:34;2800:18;;;2793:62;2872:18;;1414:68:14;2540:356:65;1414:68:14;1359:130::o;1513:1095:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1513:1095:47;-1:-1:-1;;;;;1513:1095:47;;;;;;;;;;;-1:-1:-1;1513:1095:47;;;;;;;-1:-1:-1;1513:1095:47;;;-1:-1:-1;1513:1095:47;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:65;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:177;225:13;;-1:-1:-1;;;;;267:31:65;;257:42;;247:70;;313:1;310;303:12;247:70;146:177;;;:::o;328:1190::-;432:6;440;493:2;481:9;472:7;468:23;464:32;461:52;;;509:1;506;499:12;461:52;532:16;;567:2;598:18;;;592:25;532:16;;-1:-1:-1;567:2:65;-1:-1:-1;;;;;666:14:65;;;663:34;;;693:1;690;683:12;663:34;731:6;720:9;716:22;706:32;;776:7;769:4;765:2;761:13;757:27;747:55;;798:1;795;788:12;747:55;827:2;821:9;849:2;845;842:10;839:36;;;855:18;;:::i;:::-;901:2;898:1;894:10;933:2;927:9;996:2;992:7;987:2;983;979:11;975:25;967:6;963:38;1051:6;1039:10;1036:22;1031:2;1019:10;1016:18;1013:46;1010:72;;;1062:18;;:::i;:::-;1098:2;1091:22;1148:18;;;1182:15;;;;-1:-1:-1;1224:11:65;;;1220:20;;;1252:19;;;1249:39;;;1284:1;1281;1274:12;1249:39;1308:11;;;;1328:159;1344:6;1339:3;1336:15;1328:159;;;1410:34;1440:3;1410:34;:::i;:::-;1398:47;;1361:12;;;;1465;;;;1328:159;;;1506:6;1496:16;;;;;;;;328:1190;;;;;:::o;1877:658::-;2048:2;2100:21;;;2170:13;;2073:18;;;2192:22;;;2019:4;;2048:2;2271:15;;;;2245:2;2230:18;;;2019:4;2314:195;2328:6;2325:1;2322:13;2314:195;;;2393:13;;-1:-1:-1;;;;;2389:39:65;2377:52;;2484:15;;;;2449:12;;;;2425:1;2343:9;2314:195;;;-1:-1:-1;2526:3:65;;1877:658;-1:-1:-1;;;;;;1877:658:65:o;2540:356::-;1513:1095:47;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a6146200010e5780638da5cb5b146200011a578063a9d14058146200012c578063f2fde38b146200014357600080fd5b80635165da30146200008c5780635878157614620000c05780635c681d1e14620000f7575b600080fd5b620000a36200009d366004620004ca565b6200015a565b6040516001600160a01b0390911681526020015b60405180910390f35b620000e87f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620000b7565b620000a36200010836600462000502565b62000257565b6200011862000282565b005b6000546001600160a01b0316620000a3565b620001186200013d36600462000544565b6200029a565b620001186200015436600462000617565b620002f6565b6000836001847f000000000000000000000000000000000000000000000000000000000000000085620001956000546001600160a01b031690565b604051620001a39062000425565b620001b49695949392919062000689565b604051809103906000f080158015620001d1573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f0000000000000000000000000000000000000000000000000000000000000000620002356000546001600160a01b031690565b60016040516200024893929190620006d5565b60405180910390a49392505050565b600181815481106200026857600080fd5b6000918252602090912001546001600160a01b0316905081565b6200028c62000379565b620002986000620003d5565b565b620002a462000379565b8051620002b990600190602084019062000433565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae1681604051620002eb91906200070a565b60405180910390a150565b6200030062000379565b6001600160a01b0381166200036b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200037681620003d5565b50565b6000546001600160a01b03163314620002985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000362565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611852806200075a83390190565b8280548282559060005260206000209081019282156200048b579160200282015b828111156200048b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000454565b50620004999291506200049d565b5090565b5b808211156200049957600081556001016200049e565b6001600160a01b03811681146200037657600080fd5b600080600060608486031215620004e057600080fd5b8335620004ed81620004b4565b95602085013595506040909401359392505050565b6000602082840312156200051557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356200053f81620004b4565b919050565b600060208083850312156200055857600080fd5b823567ffffffffffffffff808211156200057157600080fd5b818501915085601f8301126200058657600080fd5b8135818111156200059b576200059b6200051c565b8060051b604051601f19603f83011681018181108582111715620005c357620005c36200051c565b604052918252848201925083810185019188831115620005e257600080fd5b938501935b828510156200060b57620005fb8562000532565b84529385019392850192620005e7565b98975050505050505050565b6000602082840312156200062a57600080fd5b81356200063781620004b4565b9392505050565b6000815480845260208085019450836000528060002060005b838110156200067e5781546001600160a01b03168752958201956001918201910162000657565b509495945050505050565b600060018060a01b03808916835260c06020840152620006ad60c08401896200063e565b915086604084015285606084015284608084015280841660a084015250979650505050505050565b8381526001600160a01b038316602082015260606040820181905260009062000701908301846200063e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156200074d5783516001600160a01b03168352928401929184019160010162000726565b5090969550505050505056fe6101406040523480156200001257600080fd5b50604051620018523803806200185283398101604081905262000035916200049b565b601286858588866200004733620002dc565b8381116200009c5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ee5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000093565b608084905260a083905260c081905260005b82518110156200014e5762000139838281518110620001235762000123620005b4565b602002602001015160016200032c60201b60201c565b806200014581620005ca565b91505062000100565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a250505050806001600160a01b031660e0816001600160a01b031681525050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002539190620005f2565b60ff166101008190526040516001600160a01b038316907f023d13f58a0d1b57e2446bf7ee75c602447357846ca76f9b1dd6b982caa53b7d90600090a35060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002d081620002dc565b5050505050506200061e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b62000336620003fc565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003a85760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000093565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620004585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000093565b565b6001600160a01b03811681146200047057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b805162000496816200045a565b919050565b60008060008060008060c08789031215620004b557600080fd5b8651620004c2816200045a565b602088810151919750906001600160401b0380821115620004e257600080fd5b818a0191508a601f830112620004f757600080fd5b8151818111156200050c576200050c62000473565b8060051b604051601f19603f8301168101818110858211171562000534576200053462000473565b60405291825284820192508381018501918d8311156200055357600080fd5b938501935b828510156200057c576200056c8562000489565b8452938501939285019262000558565b809a50505050505050604087015193506060870151925060808701519150620005a860a0880162000489565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b600060018201620005eb57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200060557600080fd5b815160ff811681146200061757600080fd5b9392505050565b60805160a05160c05160e0516101005161012051611189620006c9600039600081816102180152818161069f0152818161071a015261097f0152600081816105530152818161065801526107700152600081816101d9015281816104c6015281816105ad01528181610b610152610cf00152600081816102ac0152610c1701526000818161033a0152610401015260008181610261015281816103ce015261090b01526111896000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063687043c5116100c3578063a5c38b3d1161007c578063a5c38b3d1461035e578063cb53b08d14610367578063d3fff0f61461037a578063f2fde38b1461038d578063f6e1d17a146103a0578063feaf968c146103b357600080fd5b8063687043c5146102aa578063715018a6146102d05780638205bf6a146102d85780638da5cb5b146102e05780639a6fc8f5146102f1578063a3c044761461033857600080fd5b8063313ce56711610115578063313ce5671461021357806332c6534b1461024c5780633376f53a1461025f5780633d6ba5781461028f57806350d25bcd146102a25780636666d3721461018257600080fd5b80630125554b14610152578063138623641461017a578063172b09f91461018457806324a419f4146101b75780632ef9ebba146101d4575b600080fd5b61015a6103bb565b604080519384526020840192909252908201526060015b60405180910390f35b610182610430565b005b6101a7610192366004610dfc565b60026020526000908152604090205460ff1681565b6040519015158152602001610171565b6101bf6104be565b60408051928352602083019190915201610171565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610171565b61023a7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610171565b6101a761025a366004610e17565b610582565b7f00000000000000000000000000000000000000000000000000000000000000005b604051908152602001610171565b6101bf61029d366004610e41565b6105a5565b610281610688565b7f0000000000000000000000000000000000000000000000000000000000000000610281565b6101826106cb565b6102816106dd565b6000546001600160a01b03166101fb565b6103046102ff366004610e6f565b6106f0565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610171565b7f0000000000000000000000000000000000000000000000000000000000000000610281565b61028160015481565b61015a610375366004610e8c565b610751565b610182610388366004610eae565b6107af565b61018261039b366004610dfc565b610872565b6101bf6103ae366004610e41565b6108eb565b61030461094f565b60008060006104256103ff6001546103f07f000000000000000000000000000000000000000000000000000000000000000090565b6103fa9042610f00565b6109b7565b7f0000000000000000000000000000000000000000000000000000000000000000610751565b925092509250909192565b61043c33600154610582565b61048d5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105469190610f13565b50935050925050610579827f000000000000000000000000000000000000000000000000000000000000000060126109cf565b94909350915050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f56105e387610a40565b6040516001600160e01b031960e084901b1681526001600160501b03909116600482015260240160a060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b9190610f13565b5093505092505061067e827f000000000000000000000000000000000000000000000000000000000000000060126109cf565b9590945092505050565b6000806106936103bb565b505090506106c38160127f00000000000000000000000000000000000000000000000000000000000000006109cf565b91505090565b565b6106d3610aac565b6106c96000610b06565b6000806106e86103bb565b509392505050565b600080600080600080600061070d886001600160501b03166108eb565b915091508761073e8360127f00000000000000000000000000000000000000000000000000000000000000006109cf565b9099909891975087965090945092505050565b6000806000806000806107648888610b56565b925092509250610796837f000000000000000000000000000000000000000000000000000000000000000060126109cf565b95509093506001600160501b03169150505b9250925092565b6107b7610aac565b6001600160a01b03821660009081526002602052604090205481151560ff90911615150361081e5760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b6044820152606401610484565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b61087a610aac565b6001600160a01b0381166108df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610484565b6108e881610b06565b50565b6000806000806108fa856105a5565b91509150600061092d6001546103f07f000000000000000000000000000000000000000000000000000000000000000090565b905080821161094157509094909350915050565b506000958695509350505050565b6000806000806000806000806109636103bb565b925092509250600061097482610a40565b9050806109a38560127f00000000000000000000000000000000000000000000000000000000000000006109cf565b909a90995092975087965094509092505050565b60008183116109c657816109c8565b825b9392505050565b60008160ff168360ff16036109e55750826109c8565b8160ff168360ff161015610a19576109fd8383610f6b565b610a0890600a611068565b610a129085611077565b90506109c8565b610a238284610f6b565b610a2e90600a611068565b610a3890856110a7565b949350505050565b60006001600160501b03821115610aa85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b6064820152608401610484565b5090565b6000546001600160a01b031633146106c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610484565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190610f13565b5093505092509250878111610bfc57909450925090506107a8565b6000806000610c0c8b878c610c6b565b925092509250610c397f000000000000000000000000000000000000000000000000000000000000000090565b610c439042610f00565b821115610c5a57919750955093506107a892505050565b509299919850929650945050505050565b600080808080808080610c8b69ffff00000000000000008b1660016110e3565b90505b886001600160501b0316826001600160501b0316108015610cc05750806001600160501b03168a6001600160501b0316115b15610dcc5789610ccf8161110a565b604051639a6fc8f560e01b81526001600160501b0382166004820152909b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169150639a6fc8f59060240160a060405180830381865afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190610f13565b50929750909550909350506001600160501b03808616908b16148015610d8a5750600083115b610da35760008060009750975097505050505050610dd7565b8a8311610dba57509195509350909150610dd79050565b81610dc48161112d565b925050610c8e565b509195509350909150505b93509350939050565b80356001600160a01b0381168114610df757600080fd5b919050565b600060208284031215610e0e57600080fd5b6109c882610de0565b60008060408385031215610e2a57600080fd5b610e3383610de0565b946020939093013593505050565b600060208284031215610e5357600080fd5b5035919050565b6001600160501b03811681146108e857600080fd5b600060208284031215610e8157600080fd5b81356109c881610e5a565b60008060408385031215610e9f57600080fd5b50508035926020909101359150565b60008060408385031215610ec157600080fd5b610eca83610de0565b915060208301358015158114610edf57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059f5761059f610eea565b600080600080600060a08688031215610f2b57600080fd5b8551610f3681610e5a565b809550506020860151935060408601519250606086015191506080860151610f5d81610e5a565b809150509295509295909350565b60ff828116828216039081111561059f5761059f610eea565b600181815b80851115610fbf578160001904821115610fa557610fa5610eea565b80851615610fb257918102915b93841c9390800290610f89565b509250929050565b600082610fd65750600161059f565b81610fe35750600061059f565b8160018114610ff957600281146110035761101f565b600191505061059f565b60ff84111561101457611014610eea565b50506001821b61059f565b5060208310610133831016604e8410600b8410161715611042575081810a61059f565b61104c8383610f84565b806000190482111561106057611060610eea565b029392505050565b60006109c860ff841683610fc7565b80820260008212600160ff1b8414161561109357611093610eea565b818105831482151761059f5761059f610eea565b6000826110c457634e487b7160e01b600052601260045260246000fd5b600160ff1b8214600019841416156110de576110de610eea565b500590565b6001600160501b0381811683821601908082111561110357611103610eea565b5092915050565b60006001600160501b0382168061112357611123610eea565b6000190192915050565b60006001600160501b0380831681810361114957611149610eea565b600101939250505056fea26469706673582212208216491b98c1ecc221e059f95d494328ed8c71bec184d53aac216a82b7e3fe8664736f6c63430008110033a2646970667358221220cff7f06d390e1c21bd01cc495c94cd09826e90fdea328cf0a7a612aa369c343c64736f6c63430008110033","sourceMap":"1513:1095:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2275:331;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;773:32:65;;;755:51;;743:2;728:18;2275:331:47;;;;;;;;464:38:45;;;;;;;;963:25:65;;;951:2;936:18;464:38:45;817:177:65;508:33:45;;;;;;:::i;:::-;;:::i;1824:101:14:-;;;:::i;:::-;;1201:85;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;1201:85;;1398:188:45;;;;;;:::i;:::-;;:::i;2074:198:14:-;;;;;;:::i;:::-;;:::i;2275:331:47:-;2373:12;2430:6;2438:16;2456:10;2468:13;2483:6;2491:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2491:7:47;2412:87;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2397:103:47;-1:-1:-1;2546:10:47;-1:-1:-1;;;;;2515:84:47;;2528:10;2515:84;2558:13;2573:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2573:7:47;2582:16;2515:84;;;;;;;;:::i;:::-;;;;;;;;2275:331;;;;;:::o;508:33:45:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;508:33:45;;-1:-1:-1;508:33:45;:::o;1824:101:14:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;2074:198:14:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:14;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:14;;5394:2:65;2154:73:14::1;::::0;::::1;5376:21:65::0;5433:2;5413:18;;;5406:30;5472:34;5452:18;;;5445:62;-1:-1:-1;;;5523:18:65;;;5516:36;5569:19;;2154:73:14::1;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;5801:2:65;1414:68:14;;;5783:21:65;;;5820:18;;;5813:30;5879:34;5859:18;;;5852:62;5931:18;;1414:68:14;5599:356:65;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:152:65;-1:-1:-1;;;;;110:31:65;;100:42;;90:70;;156:1;153;146:12;171:433;277:6;285;293;346:2;334:9;325:7;321:23;317:32;314:52;;;362:1;359;352:12;314:52;401:9;388:23;420:52;466:5;420:52;:::i;:::-;491:5;543:2;528:18;;515:32;;-1:-1:-1;594:2:65;579:18;;;566:32;;171:433;-1:-1:-1;;;171:433:65:o;999:180::-;1058:6;1111:2;1099:9;1090:7;1086:23;1082:32;1079:52;;;1127:1;1124;1117:12;1079:52;-1:-1:-1;1150:23:65;;999:180;-1:-1:-1;999:180:65:o;1184:127::-;1245:10;1240:3;1236:20;1233:1;1226:31;1276:4;1273:1;1266:15;1300:4;1297:1;1290:15;1316:155;1384:20;;1413:52;1384:20;1413:52;:::i;:::-;1316:155;;;:::o;1476:1121::-;1560:6;1591:2;1634;1622:9;1613:7;1609:23;1605:32;1602:52;;;1650:1;1647;1640:12;1602:52;1690:9;1677:23;1719:18;1760:2;1752:6;1749:14;1746:34;;;1776:1;1773;1766:12;1746:34;1814:6;1803:9;1799:22;1789:32;;1859:7;1852:4;1848:2;1844:13;1840:27;1830:55;;1881:1;1878;1871:12;1830:55;1917:2;1904:16;1939:2;1935;1932:10;1929:36;;;1945:18;;:::i;:::-;1991:2;1988:1;1984:10;2023:2;2017:9;2086:2;2082:7;2077:2;2073;2069:11;2065:25;2057:6;2053:38;2141:6;2129:10;2126:22;2121:2;2109:10;2106:18;2103:46;2100:72;;;2152:18;;:::i;:::-;2188:2;2181:22;2238:18;;;2272:15;;;;-1:-1:-1;2314:11:65;;;2310:20;;;2342:19;;;2339:39;;;2374:1;2371;2364:12;2339:39;2398:11;;;;2418:148;2434:6;2429:3;2426:15;2418:148;;;2500:23;2519:3;2500:23;:::i;:::-;2488:36;;2451:12;;;;2544;;;;2418:148;;;2585:6;1476:1121;-1:-1:-1;;;;;;;;1476:1121:65:o;2602:268::-;2661:6;2714:2;2702:9;2693:7;2689:23;2685:32;2682:52;;;2730:1;2727;2720:12;2682:52;2769:9;2756:23;2788:52;2834:5;2788:52;:::i;:::-;2859:5;2602:268;-1:-1:-1;;;2602:268:65:o;2875:495::-;2936:3;2974:5;2968:12;3001:6;2996:3;2989:19;3027:4;3056:2;3051:3;3047:12;3040:19;;3078:5;3075:1;3068:16;3120:2;3117:1;3107:16;3141:1;3151:194;3165:6;3162:1;3159:13;3151:194;;;3230:13;;-1:-1:-1;;;;;3226:39:65;3214:52;;3286:12;;;;3262:1;3321:14;;;;3180:9;3151:194;;;-1:-1:-1;3361:3:65;;2875:495;-1:-1:-1;;;;;2875:495:65:o;3375:710::-;3683:4;3729:1;3725;3720:3;3716:11;3712:19;3770:2;3762:6;3758:15;3747:9;3740:34;3810:3;3805:2;3794:9;3790:18;3783:31;3831:65;3891:3;3880:9;3876:19;3868:6;3831:65;:::i;:::-;3823:73;;3932:6;3927:2;3916:9;3912:18;3905:34;3975:6;3970:2;3959:9;3955:18;3948:34;4019:6;4013:3;4002:9;3998:19;3991:35;4075:2;4067:6;4063:15;4057:3;4046:9;4042:19;4035:44;;3375:710;;;;;;;;;:::o;4090:434::-;4304:25;;;-1:-1:-1;;;;;4365:32:65;;4360:2;4345:18;;4338:60;4434:2;4429;4414:18;;4407:30;;;-1:-1:-1;;4454:64:65;;4499:18;;4491:6;4454:64;:::i;:::-;4446:72;4090:434;-1:-1:-1;;;;;4090:434:65:o;4529:658::-;4700:2;4752:21;;;4822:13;;4725:18;;;4844:22;;;4671:4;;4700:2;4923:15;;;;4897:2;4882:18;;;4671:4;4966:195;4980:6;4977:1;4974:13;4966:195;;;5045:13;;-1:-1:-1;;;;;5041:39:65;5029:52;;5136:15;;;;5101:12;;;;5077:1;4995:9;4966:195;;;-1:-1:-1;5178:3:65;;4529:658;-1:-1:-1;;;;;;4529:658:65:o","linkReferences":{},"immutableReferences":{"45786":[{"start":198,"length":32},{"start":354,"length":32},{"start":515,"length":32}]}},"methodIdentifiers":{"MAX_TRAVERSAL()":"58781576","create(address,uint256,uint256)":"5165da30","defaultUnlockers(uint256)":"5c681d1e","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setDefaultUnlockers(address[])":"a9d14058","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxTraversal\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"DefaultUnlockersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxTraversal\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"unlockers\",\"type\":\"address[]\"}],\"name\":\"OvalDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_TRAVERSAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAggregatorV3Source\",\"name\":\"source\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAge\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"defaultUnlockers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"setDefaultUnlockers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the best factory for most use cases, but there are other variants that may be needed if different mutability choices are desired.\",\"kind\":\"dev\",\"methods\":{\"create(address,uint256,uint256)\":{\"params\":{\"lockWindow\":\"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.\",\"maxAge\":\"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided.\",\"source\":\"the Chainlink oracle source contract.\"},\"returns\":{\"oval\":\"deployed oval address.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultUnlockers(address[])\":{\"details\":\"This and the owner, itself, is the only mutable portion of this factory.\",\"params\":{\"_defaultUnlockers\":\"default unlockers that will be used to instantiate new Oval instances.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"StandardChainlinkFactory is the recommended factory for use cases that want a Chainlink source and Chainlink interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256,uint256)\":{\"notice\":\"Creates the Chainlink Oval instance.\"},\"setDefaultUnlockers(address[])\":{\"notice\":\"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/factories/StandardChainlinkFactory.sol\":\"StandardChainlinkFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/redstone-contracts/lib/@chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/\",\":@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":redstone-contracts/=lib/redstone-contracts/src/\",\":redstone-oracle/=lib/redstone-contracts/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"src/DiamondRootOval.sol\":{\"keccak256\":\"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc\",\"dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL\"]},\"src/Oval.sol\":{\"keccak256\":\"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449\",\"dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM\"]},\"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol\":{\"keccak256\":\"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0\",\"dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE\"]},\"src/adapters/lib/DecimalLib.sol\":{\"keccak256\":\"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2\",\"dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT\"]},\"src/adapters/source-adapters/ChainlinkSourceAdapter.sol\":{\"keccak256\":\"0xa7faf4a8eeeaa5ee01e67b8808ecd816de2d84ffc655d9b8f37b2921cd0934a1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://38cc6c58f5451f5621645f870b70436dcfd500ea416f6709708d9506d5a6b203\",\"dweb:/ipfs/QmYTyVfGhCAvAd57FLheqvLDAbn3UjfLE7Bb4zA15nx9s2\"]},\"src/controllers/MutableUnlockersController.sol\":{\"keccak256\":\"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f\",\"dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob\"]},\"src/factories/BaseFactory.sol\":{\"keccak256\":\"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19\",\"dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq\"]},\"src/factories/StandardChainlinkFactory.sol\":{\"keccak256\":\"0x2b824a86b1cd89795129ca5ac58094e8bddceb41feb0eb6643570b5d75f0a362\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d77374c35a937e39ca389c24f2de6d78ec79902d1fc78d46b79caf8d8ea17107\",\"dweb:/ipfs/QmPjjbctL4FN8pm2KGTZr5rsvsBZEGn95tqT91vsBCtXU8\"]},\"src/interfaces/IBaseController.sol\":{\"keccak256\":\"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc\",\"dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju\"]},\"src/interfaces/IBaseOracleAdapter.sol\":{\"keccak256\":\"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be\",\"dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP\"]},\"src/interfaces/IOval.sol\":{\"keccak256\":\"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953\",\"dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H\"]},\"src/interfaces/chainlink/IAggregatorV3.sol\":{\"keccak256\":\"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1\",\"dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G\"]},\"src/interfaces/chainlink/IAggregatorV3Source.sol\":{\"keccak256\":\"0xace678af82f9ae630210cc7b85cb8759b89b3d7280525ebbcb78aa7c33f5c79f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63e72db0effebba1b9048614c1ba8e72018957dddff712be2d3a2893229e210e\",\"dweb:/ipfs/QmNLqP4G5ujrZdt2rVTrXpLHuqRUR1hugxQzbNmGReLQtZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_maxTraversal","type":"uint256"},{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address[]","name":"defaultUnlockers","type":"address[]","indexed":false}],"type":"event","name":"DefaultUnlockersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"deployer","type":"address","indexed":true},{"internalType":"address","name":"oval","type":"address","indexed":true},{"internalType":"uint256","name":"lockWindow","type":"uint256","indexed":true},{"internalType":"uint256","name":"maxTraversal","type":"uint256","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"address[]","name":"unlockers","type":"address[]","indexed":false}],"type":"event","name":"OvalDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_TRAVERSAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IAggregatorV3Source","name":"source","type":"address"},{"internalType":"uint256","name":"lockWindow","type":"uint256"},{"internalType":"uint256","name":"maxAge","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"oval","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"defaultUnlockers","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultUnlockers"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"create(address,uint256,uint256)":{"params":{"lockWindow":"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.","maxAge":"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided.","source":"the Chainlink oracle source contract."},"returns":{"oval":"deployed oval address."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultUnlockers(address[])":{"details":"This and the owner, itself, is the only mutable portion of this factory.","params":{"_defaultUnlockers":"default unlockers that will be used to instantiate new Oval instances."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"create(address,uint256,uint256)":{"notice":"Creates the Chainlink Oval instance."},"setDefaultUnlockers(address[])":{"notice":"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract."}},"version":1}},"settings":{"remappings":["@chainlink/=lib/redstone-contracts/lib/@chainlink/","@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/","@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","redstone-contracts/=lib/redstone-contracts/src/","redstone-oracle/=lib/redstone-contracts/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/factories/StandardChainlinkFactory.sol":"StandardChainlinkFactory"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218","urls":["bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32","dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"src/DiamondRootOval.sol":{"keccak256":"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1","urls":["bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc","dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL"],"license":"BUSL-1.1"},"src/Oval.sol":{"keccak256":"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf","urls":["bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449","dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM"],"license":"BUSL-1.1"},"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol":{"keccak256":"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b","urls":["bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0","dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE"],"license":"BUSL-1.1"},"src/adapters/lib/DecimalLib.sol":{"keccak256":"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2","urls":["bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2","dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT"],"license":"BUSL-1.1"},"src/adapters/source-adapters/ChainlinkSourceAdapter.sol":{"keccak256":"0xa7faf4a8eeeaa5ee01e67b8808ecd816de2d84ffc655d9b8f37b2921cd0934a1","urls":["bzz-raw://38cc6c58f5451f5621645f870b70436dcfd500ea416f6709708d9506d5a6b203","dweb:/ipfs/QmYTyVfGhCAvAd57FLheqvLDAbn3UjfLE7Bb4zA15nx9s2"],"license":"BUSL-1.1"},"src/controllers/MutableUnlockersController.sol":{"keccak256":"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16","urls":["bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f","dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob"],"license":"BUSL-1.1"},"src/factories/BaseFactory.sol":{"keccak256":"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6","urls":["bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19","dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq"],"license":"BUSL-1.1"},"src/factories/StandardChainlinkFactory.sol":{"keccak256":"0x2b824a86b1cd89795129ca5ac58094e8bddceb41feb0eb6643570b5d75f0a362","urls":["bzz-raw://d77374c35a937e39ca389c24f2de6d78ec79902d1fc78d46b79caf8d8ea17107","dweb:/ipfs/QmPjjbctL4FN8pm2KGTZr5rsvsBZEGn95tqT91vsBCtXU8"],"license":"BUSL-1.1"},"src/interfaces/IBaseController.sol":{"keccak256":"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5","urls":["bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc","dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju"],"license":"MIT"},"src/interfaces/IBaseOracleAdapter.sol":{"keccak256":"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9","urls":["bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be","dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP"],"license":"MIT"},"src/interfaces/IOval.sol":{"keccak256":"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa","urls":["bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953","dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H"],"license":"MIT"},"src/interfaces/chainlink/IAggregatorV3.sol":{"keccak256":"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d","urls":["bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1","dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G"],"license":"MIT"},"src/interfaces/chainlink/IAggregatorV3Source.sol":{"keccak256":"0xace678af82f9ae630210cc7b85cb8759b89b3d7280525ebbcb78aa7c33f5c79f","urls":["bzz-raw://63e72db0effebba1b9048614c1ba8e72018957dddff712be2d3a2893229e210e","dweb:/ipfs/QmNLqP4G5ujrZdt2rVTrXpLHuqRUR1hugxQzbNmGReLQtZ"],"license":"MIT"}},"version":1},"id":47} \ No newline at end of file diff --git a/src/abi/StandardChronicleFactory.json b/src/abi/StandardChronicleFactory.json new file mode 100644 index 0000000..b38c2f6 --- /dev/null +++ b/src/abi/StandardChronicleFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"maxTraversal","type":"uint256","internalType":"uint256"},{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_TRAVERSAL","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"chronicle","type":"address","internalType":"contract IMedian"},{"name":"lockWindow","type":"uint256","internalType":"uint256"},{"name":"maxAge","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"oval","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultUnlockers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultUnlockers","inputs":[{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultUnlockersSet","inputs":[{"name":"defaultUnlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OvalDeployed","inputs":[{"name":"deployer","type":"address","indexed":true,"internalType":"address"},{"name":"oval","type":"address","indexed":true,"internalType":"address"},{"name":"lockWindow","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"maxTraversal","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"unlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b506040516200234c3803806200234c83398101604081905262000034916200026f565b81816200004133620000b1565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a78162000101565b505050506200039e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200010b6200015d565b805162000120906001906020840190620001bb565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015291906200034f565b60405180910390a150565b6000546001600160a01b03163314620001b95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b82805482825590600052602060002090810192821562000213579160200282015b828111156200021357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001dc565b506200022192915062000225565b5090565b5b8082111562000221576000815560010162000226565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200026a57600080fd5b919050565b600080604083850312156200028357600080fd5b8251602080850151919350906001600160401b0380821115620002a557600080fd5b818601915086601f830112620002ba57600080fd5b815181811115620002cf57620002cf6200023c565b8060051b604051601f19603f83011681018181108582111715620002f757620002f76200023c565b6040529182528482019250838101850191898311156200031657600080fd5b938501935b828510156200033f576200032f8562000252565b845293850193928501926200031b565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620003925783516001600160a01b0316835292840192918401916001016200036b565b50909695505050505050565b608051611f85620003c76000396000818160c60152818161016201526102030152611f856000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a6146200010e5780638da5cb5b146200011a578063a9d14058146200012c578063f2fde38b146200014357600080fd5b80635165da30146200008c5780635878157614620000c05780635c681d1e14620000f7575b600080fd5b620000a36200009d366004620004ca565b6200015a565b6040516001600160a01b0390911681526020015b60405180910390f35b620000e87f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620000b7565b620000a36200010836600462000502565b62000257565b6200011862000282565b005b6000546001600160a01b0316620000a3565b620001186200013d36600462000544565b6200029a565b620001186200015436600462000617565b620002f6565b6000836001847f000000000000000000000000000000000000000000000000000000000000000085620001956000546001600160a01b031690565b604051620001a39062000425565b620001b49695949392919062000689565b604051809103906000f080158015620001d1573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f0000000000000000000000000000000000000000000000000000000000000000620002356000546001600160a01b031690565b60016040516200024893929190620006d5565b60405180910390a49392505050565b600181815481106200026857600080fd5b6000918252602090912001546001600160a01b0316905081565b6200028c62000379565b620002986000620003d5565b565b620002a462000379565b8051620002b990600190602084019062000433565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae1681604051620002eb91906200070a565b60405180910390a150565b6200030062000379565b6001600160a01b0381166200036b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200037681620003d5565b50565b6000546001600160a01b03163314620002985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000362565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117f6806200075a83390190565b8280548282559060005260206000209081019282156200048b579160200282015b828111156200048b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000454565b50620004999291506200049d565b5090565b5b808211156200049957600081556001016200049e565b6001600160a01b03811681146200037657600080fd5b600080600060608486031215620004e057600080fd5b8335620004ed81620004b4565b95602085013595506040909401359392505050565b6000602082840312156200051557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356200053f81620004b4565b919050565b600060208083850312156200055857600080fd5b823567ffffffffffffffff808211156200057157600080fd5b818501915085601f8301126200058657600080fd5b8135818111156200059b576200059b6200051c565b8060051b604051601f19603f83011681018181108582111715620005c357620005c36200051c565b604052918252848201925083810185019188831115620005e257600080fd5b938501935b828510156200060b57620005fb8562000532565b84529385019392850192620005e7565b98975050505050505050565b6000602082840312156200062a57600080fd5b81356200063781620004b4565b9392505050565b6000815480845260208085019450836000528060002060005b838110156200067e5781546001600160a01b03168752958201956001918201910162000657565b509495945050505050565b600060018060a01b03808916835260c06020840152620006ad60c08401896200063e565b915086604084015285606084015284608084015280841660a084015250979650505050505050565b8381526001600160a01b038316602082015260606040820181905260009062000701908301846200063e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156200074d5783516001600160a01b03168352928401929184019160010162000726565b5090969550505050505056fe6101206040523480156200001257600080fd5b50604051620017f6380380620017f6833981016040819052620000359162000417565b60128685858886620000473362000258565b8381116200009c5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ee5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000093565b608084905260a083905260c081905260005b82518110156200014e576200013983828151811062000123576200012362000530565b60200260200101516001620002a860201b60201c565b80620001458162000546565b91505062000100565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a2505050506001600160a01b03811660e08190526040517f4c8947d84ec5b72893956872efb0653c066b1b7895c0cb617c7679ee0fd1efff90600090a25060ff81166101008190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a2506200024c8162000258565b5050505050506200056e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002b262000378565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003245760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000093565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620003d45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000093565b565b6001600160a01b0381168114620003ec57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b80516200041281620003d6565b919050565b60008060008060008060c087890312156200043157600080fd5b86516200043e81620003d6565b602088810151919750906001600160401b03808211156200045e57600080fd5b818a0191508a601f8301126200047357600080fd5b815181811115620004885762000488620003ef565b8060051b604051601f19603f83011681018181108582111715620004b057620004b0620003ef565b60405291825284820192508381018501918d831115620004cf57600080fd5b938501935b82851015620004f857620004e88562000405565b84529385019392850192620004d4565b809a505050505050506040870151935060608701519250608087015191506200052460a0880162000405565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b6000600182016200056757634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e05161010051611204620005f2600039600081816101ff01528181610685015281816108b20152610b050152600081816103980152818161053401526105bb01526000818161029e0152610d3a0152600081816103660152610467015260008181610248015281816104340152610a8f01526112046000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637292eb69116100de578063bf39dd4911610097578063d6565a2d11610071578063d6565a2d146103e0578063f2fde38b146103f3578063f6e1d17a14610406578063feaf968c1461041957600080fd5b8063bf39dd4914610393578063cb53b08d146103ba578063d3fff0f6146103cd57600080fd5b80637292eb69146102ca5780638205bf6a146102ed5780638da5cb5b146102f55780639a6fc8f51461031a578063a3c0447614610364578063a5c38b3d1461038a57600080fd5b80633376f53a116101305780633376f53a146102465780633d6ba5781461027657806350d25bcd1461028c5780636666d37214610294578063687043c51461029c578063715018a6146102c257600080fd5b80630125554b1461017857806313862364146101a0578063172b09f9146101aa57806324a419f4146101dd578063313ce567146101fa57806332c6534b14610233575b600080fd5b610180610421565b604080519384526020840192909252908201526060015b60405180910390f35b6101a8610496565b005b6101cd6101b8366004610ec0565b60026020526000908152604090205460ff1681565b6040519015158152602001610197565b6101e561052c565b60408051928352602083019190915201610197565b6102217f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610197565b6101cd610241366004610edb565b61064b565b7f00000000000000000000000000000000000000000000000000000000000000005b604051908152602001610197565b6101e5610284366004610f05565b506000908190565b61026861066e565b6101a86106af565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b6101a86107d8565b6102d26107ec565b60408051825181526020928301519281019290925201610197565b610268610872565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610197565b61032d610328366004610f1e565b610885565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610197565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b61026860015481565b6103027f000000000000000000000000000000000000000000000000000000000000000081565b6101806103c8366004610f4a565b6108e9565b6101a86103db366004610f6c565b610911565b6101e56103ee366004610f05565b6109d4565b6101a8610401366004610ec0565b610a02565b6101e5610414366004610f05565b610a7b565b61032d610ad5565b600080600061048b6104656001546104567f000000000000000000000000000000000000000000000000000000000000000090565b6104609042610fbe565b610b3d565b7f00000000000000000000000000000000000000000000000000000000000000006108e9565b925092509250909192565b6104a23360015461064b565b6104f35760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b6104fb6106af565b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806105b97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357de26a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b49190610fd1565b610b55565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663262a9dff6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190610fea565b909363ffffffff90911692509050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b600080610679610421565b505090506106a98160127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b91505090565b6000806106ba61052c565b6040805180820190915282815260208101829052919350915060008290036106e157505050565b6003548015801590610724575060208201516003610700600184610fbe565b8154811061071057610710611010565b906000526020600020906002020160010154145b1561072f5750505050565b60038054600181018255600091909152825160029091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810182905560208401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c9091018190556040517ff500358c8d5c04faf9e5b933d49e928da38afad4ff748ca6cd85428485caa508906107ca9085815260200190565b60405180910390a350505050565b6107e0610c34565b6107ea6000610c8e565b565b60408051808201909152600080825260208201526003541561085a576003805461081890600190610fbe565b8154811061082857610828611010565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905090565b50604080518082019091526000808252602082015290565b60008061087d610421565b509392505050565b60008060008060008060006108a58869ffffffffffffffffffff16610a7b565b91509150876108d68360127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b9099909891975087965090945092505050565b6000806000806108f98686610cde565b80516020909101519097909650600195509350505050565b610919610c34565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036109805760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b60448201526064016104ea565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600381815481106109e457600080fd5b60009182526020909120600290910201805460019091015490915082565b610a0a610c34565b6001600160a01b038116610a6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ea565b610a7881610c8e565b50565b6001546000908190819081908190610ab3907f0000000000000000000000000000000000000000000000000000000000000000610456565b9050808211610ac757509094909350915050565b506000958695509350505050565b600080600080600080600080610ae9610421565b9250925092506000610afa82610d7e565b905080610b298560127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b909a90995092975087965094509092505050565b6000818311610b4c5781610b4e565b825b9392505050565b60006001600160ff1b03821115610bbf5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016104ea565b5090565b60008160ff168360ff1603610bd9575082610b4e565b8160ff168360ff161015610c0d57610bf18383611026565b610bfc90600a611123565b610c069085611132565b9050610b4e565b610c178284611026565b610c2290600a611123565b610c2c9085611162565b949350505050565b6000546001600160a01b031633146107ea5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820190915260008082526020820152600080610cfd61052c565b60408051808201909152828152602081018290529193509150858211610d27579250610668915050565b6000610d338787610de9565b9050610d5f7f000000000000000000000000000000000000000000000000000000000000000042610fbe565b816020015110610d7457935061066892505050565b5095945050505050565b600069ffffffffffffffffffff821115610bbf5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b60648201526084016104ea565b604080518082019091526000808252602082015260408051808201909152600080825260208201526003546000905b8482108015610e275750600081115b15610e9a5780610e368161119e565b91505060038181548110610e4c57610e4c611010565b600091825260209182902060408051808201909152600290920201805482526001015491810182905293508610610e8857829350505050610668565b81610e92816111b5565b925050610e18565b5090949350505050565b80356001600160a01b0381168114610ebb57600080fd5b919050565b600060208284031215610ed257600080fd5b610b4e82610ea4565b60008060408385031215610eee57600080fd5b610ef783610ea4565b946020939093013593505050565b600060208284031215610f1757600080fd5b5035919050565b600060208284031215610f3057600080fd5b813569ffffffffffffffffffff81168114610b4e57600080fd5b60008060408385031215610f5d57600080fd5b50508035926020909101359150565b60008060408385031215610f7f57600080fd5b610f8883610ea4565b915060208301358015158114610f9d57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066857610668610fa8565b600060208284031215610fe357600080fd5b5051919050565b600060208284031215610ffc57600080fd5b815163ffffffff81168114610b4e57600080fd5b634e487b7160e01b600052603260045260246000fd5b60ff828116828216039081111561066857610668610fa8565b600181815b8085111561107a57816000190482111561106057611060610fa8565b8085161561106d57918102915b93841c9390800290611044565b509250929050565b60008261109157506001610668565b8161109e57506000610668565b81600181146110b457600281146110be576110da565b6001915050610668565b60ff8411156110cf576110cf610fa8565b50506001821b610668565b5060208310610133831016604e8410600b84101617156110fd575081810a610668565b611107838361103f565b806000190482111561111b5761111b610fa8565b029392505050565b6000610b4e60ff841683611082565b80820260008212600160ff1b8414161561114e5761114e610fa8565b818105831482151761066857610668610fa8565b60008261117f57634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561119957611199610fa8565b500590565b6000816111ad576111ad610fa8565b506000190190565b6000600182016111c7576111c7610fa8565b506001019056fea2646970667358221220823402e55e5551ab500933ba22fe47fda037e52aa7a47b54f9d880498294814264736f6c63430008110033a2646970667358221220e260d64872f450ee4dddaf165b391ef1b74d817835b6f3b894af501c551524f664736f6c63430008110033","sourceMap":"1680:1079:48:-:0;;;1744:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1834:12;1848:17;936:32:14;719:10:18;936:18:14;:32::i;:::-;925:1:45;909:13;:17;901:55;;;;-1:-1:-1;;;901:55:45;;1725:2:65;901:55:45;;;1707:21:65;1764:2;1744:18;;;1737:30;1803:27;1783:18;;;1776:55;1848:18;;901:55:45;;;;;;;;;967:29;;;;1006:38;1026:17;1006:19;:38::i;:::-;820:231;;1744:129:48;;1680:1079;;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;1359:130:14:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;2742:2:65;1414:68:14;;;2724:21:65;;;2761:18;;;2754:30;2820:34;2800:18;;;2793:62;2872:18;;1414:68:14;2540:356:65;1414:68:14;1359:130::o;1680:1079:48:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1680:1079:48;-1:-1:-1;;;;;1680:1079:48;;;;;;;;;;;-1:-1:-1;1680:1079:48;;;;;;;-1:-1:-1;1680:1079:48;;;-1:-1:-1;1680:1079:48;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:65;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:177;225:13;;-1:-1:-1;;;;;267:31:65;;257:42;;247:70;;313:1;310;303:12;247:70;146:177;;;:::o;328:1190::-;432:6;440;493:2;481:9;472:7;468:23;464:32;461:52;;;509:1;506;499:12;461:52;532:16;;567:2;598:18;;;592:25;532:16;;-1:-1:-1;567:2:65;-1:-1:-1;;;;;666:14:65;;;663:34;;;693:1;690;683:12;663:34;731:6;720:9;716:22;706:32;;776:7;769:4;765:2;761:13;757:27;747:55;;798:1;795;788:12;747:55;827:2;821:9;849:2;845;842:10;839:36;;;855:18;;:::i;:::-;901:2;898:1;894:10;933:2;927:9;996:2;992:7;987:2;983;979:11;975:25;967:6;963:38;1051:6;1039:10;1036:22;1031:2;1019:10;1016:18;1013:46;1010:72;;;1062:18;;:::i;:::-;1098:2;1091:22;1148:18;;;1182:15;;;;-1:-1:-1;1224:11:65;;;1220:20;;;1252:19;;;1249:39;;;1284:1;1281;1274:12;1249:39;1308:11;;;;1328:159;1344:6;1339:3;1336:15;1328:159;;;1410:34;1440:3;1410:34;:::i;:::-;1398:47;;1361:12;;;;1465;;;;1328:159;;;1506:6;1496:16;;;;;;;;328:1190;;;;;:::o;1877:658::-;2048:2;2100:21;;;2170:13;;2073:18;;;2192:22;;;2019:4;;2048:2;2271:15;;;;2245:2;2230:18;;;2019:4;2314:195;2328:6;2325:1;2322:13;2314:195;;;2393:13;;-1:-1:-1;;;;;2389:39:65;2377:52;;2484:15;;;;2449:12;;;;2425:1;2343:9;2314:195;;;-1:-1:-1;2526:3:65;;1877:658;-1:-1:-1;;;;;;1877:658:65:o;2540:356::-;1680:1079:48;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a6146200010e5780638da5cb5b146200011a578063a9d14058146200012c578063f2fde38b146200014357600080fd5b80635165da30146200008c5780635878157614620000c05780635c681d1e14620000f7575b600080fd5b620000a36200009d366004620004ca565b6200015a565b6040516001600160a01b0390911681526020015b60405180910390f35b620000e87f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620000b7565b620000a36200010836600462000502565b62000257565b6200011862000282565b005b6000546001600160a01b0316620000a3565b620001186200013d36600462000544565b6200029a565b620001186200015436600462000617565b620002f6565b6000836001847f000000000000000000000000000000000000000000000000000000000000000085620001956000546001600160a01b031690565b604051620001a39062000425565b620001b49695949392919062000689565b604051809103906000f080158015620001d1573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f0000000000000000000000000000000000000000000000000000000000000000620002356000546001600160a01b031690565b60016040516200024893929190620006d5565b60405180910390a49392505050565b600181815481106200026857600080fd5b6000918252602090912001546001600160a01b0316905081565b6200028c62000379565b620002986000620003d5565b565b620002a462000379565b8051620002b990600190602084019062000433565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae1681604051620002eb91906200070a565b60405180910390a150565b6200030062000379565b6001600160a01b0381166200036b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200037681620003d5565b50565b6000546001600160a01b03163314620002985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000362565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117f6806200075a83390190565b8280548282559060005260206000209081019282156200048b579160200282015b828111156200048b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000454565b50620004999291506200049d565b5090565b5b808211156200049957600081556001016200049e565b6001600160a01b03811681146200037657600080fd5b600080600060608486031215620004e057600080fd5b8335620004ed81620004b4565b95602085013595506040909401359392505050565b6000602082840312156200051557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356200053f81620004b4565b919050565b600060208083850312156200055857600080fd5b823567ffffffffffffffff808211156200057157600080fd5b818501915085601f8301126200058657600080fd5b8135818111156200059b576200059b6200051c565b8060051b604051601f19603f83011681018181108582111715620005c357620005c36200051c565b604052918252848201925083810185019188831115620005e257600080fd5b938501935b828510156200060b57620005fb8562000532565b84529385019392850192620005e7565b98975050505050505050565b6000602082840312156200062a57600080fd5b81356200063781620004b4565b9392505050565b6000815480845260208085019450836000528060002060005b838110156200067e5781546001600160a01b03168752958201956001918201910162000657565b509495945050505050565b600060018060a01b03808916835260c06020840152620006ad60c08401896200063e565b915086604084015285606084015284608084015280841660a084015250979650505050505050565b8381526001600160a01b038316602082015260606040820181905260009062000701908301846200063e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156200074d5783516001600160a01b03168352928401929184019160010162000726565b5090969550505050505056fe6101206040523480156200001257600080fd5b50604051620017f6380380620017f6833981016040819052620000359162000417565b60128685858886620000473362000258565b8381116200009c5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ee5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000093565b608084905260a083905260c081905260005b82518110156200014e576200013983828151811062000123576200012362000530565b60200260200101516001620002a860201b60201c565b80620001458162000546565b91505062000100565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a2505050506001600160a01b03811660e08190526040517f4c8947d84ec5b72893956872efb0653c066b1b7895c0cb617c7679ee0fd1efff90600090a25060ff81166101008190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a2506200024c8162000258565b5050505050506200056e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002b262000378565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003245760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000093565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620003d45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000093565b565b6001600160a01b0381168114620003ec57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b80516200041281620003d6565b919050565b60008060008060008060c087890312156200043157600080fd5b86516200043e81620003d6565b602088810151919750906001600160401b03808211156200045e57600080fd5b818a0191508a601f8301126200047357600080fd5b815181811115620004885762000488620003ef565b8060051b604051601f19603f83011681018181108582111715620004b057620004b0620003ef565b60405291825284820192508381018501918d831115620004cf57600080fd5b938501935b82851015620004f857620004e88562000405565b84529385019392850192620004d4565b809a505050505050506040870151935060608701519250608087015191506200052460a0880162000405565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b6000600182016200056757634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e05161010051611204620005f2600039600081816101ff01528181610685015281816108b20152610b050152600081816103980152818161053401526105bb01526000818161029e0152610d3a0152600081816103660152610467015260008181610248015281816104340152610a8f01526112046000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637292eb69116100de578063bf39dd4911610097578063d6565a2d11610071578063d6565a2d146103e0578063f2fde38b146103f3578063f6e1d17a14610406578063feaf968c1461041957600080fd5b8063bf39dd4914610393578063cb53b08d146103ba578063d3fff0f6146103cd57600080fd5b80637292eb69146102ca5780638205bf6a146102ed5780638da5cb5b146102f55780639a6fc8f51461031a578063a3c0447614610364578063a5c38b3d1461038a57600080fd5b80633376f53a116101305780633376f53a146102465780633d6ba5781461027657806350d25bcd1461028c5780636666d37214610294578063687043c51461029c578063715018a6146102c257600080fd5b80630125554b1461017857806313862364146101a0578063172b09f9146101aa57806324a419f4146101dd578063313ce567146101fa57806332c6534b14610233575b600080fd5b610180610421565b604080519384526020840192909252908201526060015b60405180910390f35b6101a8610496565b005b6101cd6101b8366004610ec0565b60026020526000908152604090205460ff1681565b6040519015158152602001610197565b6101e561052c565b60408051928352602083019190915201610197565b6102217f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610197565b6101cd610241366004610edb565b61064b565b7f00000000000000000000000000000000000000000000000000000000000000005b604051908152602001610197565b6101e5610284366004610f05565b506000908190565b61026861066e565b6101a86106af565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b6101a86107d8565b6102d26107ec565b60408051825181526020928301519281019290925201610197565b610268610872565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610197565b61032d610328366004610f1e565b610885565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610197565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b61026860015481565b6103027f000000000000000000000000000000000000000000000000000000000000000081565b6101806103c8366004610f4a565b6108e9565b6101a86103db366004610f6c565b610911565b6101e56103ee366004610f05565b6109d4565b6101a8610401366004610ec0565b610a02565b6101e5610414366004610f05565b610a7b565b61032d610ad5565b600080600061048b6104656001546104567f000000000000000000000000000000000000000000000000000000000000000090565b6104609042610fbe565b610b3d565b7f00000000000000000000000000000000000000000000000000000000000000006108e9565b925092509250909192565b6104a23360015461064b565b6104f35760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b6104fb6106af565b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806105b97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357de26a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b49190610fd1565b610b55565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663262a9dff6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190610fea565b909363ffffffff90911692509050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b600080610679610421565b505090506106a98160127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b91505090565b6000806106ba61052c565b6040805180820190915282815260208101829052919350915060008290036106e157505050565b6003548015801590610724575060208201516003610700600184610fbe565b8154811061071057610710611010565b906000526020600020906002020160010154145b1561072f5750505050565b60038054600181018255600091909152825160029091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810182905560208401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c9091018190556040517ff500358c8d5c04faf9e5b933d49e928da38afad4ff748ca6cd85428485caa508906107ca9085815260200190565b60405180910390a350505050565b6107e0610c34565b6107ea6000610c8e565b565b60408051808201909152600080825260208201526003541561085a576003805461081890600190610fbe565b8154811061082857610828611010565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905090565b50604080518082019091526000808252602082015290565b60008061087d610421565b509392505050565b60008060008060008060006108a58869ffffffffffffffffffff16610a7b565b91509150876108d68360127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b9099909891975087965090945092505050565b6000806000806108f98686610cde565b80516020909101519097909650600195509350505050565b610919610c34565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036109805760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b60448201526064016104ea565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600381815481106109e457600080fd5b60009182526020909120600290910201805460019091015490915082565b610a0a610c34565b6001600160a01b038116610a6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ea565b610a7881610c8e565b50565b6001546000908190819081908190610ab3907f0000000000000000000000000000000000000000000000000000000000000000610456565b9050808211610ac757509094909350915050565b506000958695509350505050565b600080600080600080600080610ae9610421565b9250925092506000610afa82610d7e565b905080610b298560127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b909a90995092975087965094509092505050565b6000818311610b4c5781610b4e565b825b9392505050565b60006001600160ff1b03821115610bbf5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016104ea565b5090565b60008160ff168360ff1603610bd9575082610b4e565b8160ff168360ff161015610c0d57610bf18383611026565b610bfc90600a611123565b610c069085611132565b9050610b4e565b610c178284611026565b610c2290600a611123565b610c2c9085611162565b949350505050565b6000546001600160a01b031633146107ea5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820190915260008082526020820152600080610cfd61052c565b60408051808201909152828152602081018290529193509150858211610d27579250610668915050565b6000610d338787610de9565b9050610d5f7f000000000000000000000000000000000000000000000000000000000000000042610fbe565b816020015110610d7457935061066892505050565b5095945050505050565b600069ffffffffffffffffffff821115610bbf5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b60648201526084016104ea565b604080518082019091526000808252602082015260408051808201909152600080825260208201526003546000905b8482108015610e275750600081115b15610e9a5780610e368161119e565b91505060038181548110610e4c57610e4c611010565b600091825260209182902060408051808201909152600290920201805482526001015491810182905293508610610e8857829350505050610668565b81610e92816111b5565b925050610e18565b5090949350505050565b80356001600160a01b0381168114610ebb57600080fd5b919050565b600060208284031215610ed257600080fd5b610b4e82610ea4565b60008060408385031215610eee57600080fd5b610ef783610ea4565b946020939093013593505050565b600060208284031215610f1757600080fd5b5035919050565b600060208284031215610f3057600080fd5b813569ffffffffffffffffffff81168114610b4e57600080fd5b60008060408385031215610f5d57600080fd5b50508035926020909101359150565b60008060408385031215610f7f57600080fd5b610f8883610ea4565b915060208301358015158114610f9d57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066857610668610fa8565b600060208284031215610fe357600080fd5b5051919050565b600060208284031215610ffc57600080fd5b815163ffffffff81168114610b4e57600080fd5b634e487b7160e01b600052603260045260246000fd5b60ff828116828216039081111561066857610668610fa8565b600181815b8085111561107a57816000190482111561106057611060610fa8565b8085161561106d57918102915b93841c9390800290611044565b509250929050565b60008261109157506001610668565b8161109e57506000610668565b81600181146110b457600281146110be576110da565b6001915050610668565b60ff8411156110cf576110cf610fa8565b50506001821b610668565b5060208310610133831016604e8410600b84101617156110fd575081810a610668565b611107838361103f565b806000190482111561111b5761111b610fa8565b029392505050565b6000610b4e60ff841683611082565b80820260008212600160ff1b8414161561114e5761114e610fa8565b818105831482151761066857610668610fa8565b60008261117f57634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561119957611199610fa8565b500590565b6000816111ad576111ad610fa8565b506000190190565b6000600182016111c7576111c7610fa8565b506001019056fea2646970667358221220823402e55e5551ab500933ba22fe47fda037e52aa7a47b54f9d880498294814264736f6c63430008110033a2646970667358221220e260d64872f450ee4dddaf165b391ef1b74d817835b6f3b894af501c551524f664736f6c63430008110033","sourceMap":"1680:1079:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2432:325;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;737:32:65;;;719:51;;707:2;692:18;2432:325:48;;;;;;;;464:38:45;;;;;;;;927:25:65;;;915:2;900:18;464:38:45;781:177:65;508:33:45;;;;;;:::i;:::-;;:::i;1824:101:14:-;;;:::i;:::-;;1201:85;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;1201:85;;1398:188:45;;;;;;:::i;:::-;;:::i;2074:198:14:-;;;;;;:::i;:::-;;:::i;2432:325:48:-;2521:12;2578:9;2589:16;2607:10;2619:13;2634:6;2642:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2642:7:48;2560:90;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2545:106:48;-1:-1:-1;2697:10:48;-1:-1:-1;;;;;2666:84:48;;2679:10;2666:84;2709:13;2724:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2724:7:48;2733:16;2666:84;;;;;;;;:::i;:::-;;;;;;;;2432:325;;;;;:::o;508:33:45:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;508:33:45;;-1:-1:-1;508:33:45;:::o;1824:101:14:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;2074:198:14:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:14;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:14;;5322:2:65;2154:73:14::1;::::0;::::1;5304:21:65::0;5361:2;5341:18;;;5334:30;5400:34;5380:18;;;5373:62;-1:-1:-1;;;5451:18:65;;;5444:36;5497:19;;2154:73:14::1;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;5729:2:65;1414:68:14;;;5711:21:65;;;5748:18;;;5741:30;5807:34;5787:18;;;5780:62;5859:18;;1414:68:14;5527:356:65;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:140:65;-1:-1:-1;;;;;98:31:65;;88:42;;78:70;;144:1;141;134:12;159:409;253:6;261;269;322:2;310:9;301:7;297:23;293:32;290:52;;;338:1;335;328:12;290:52;377:9;364:23;396:40;430:5;396:40;:::i;:::-;455:5;507:2;492:18;;479:32;;-1:-1:-1;558:2:65;543:18;;;530:32;;159:409;-1:-1:-1;;;159:409:65:o;963:180::-;1022:6;1075:2;1063:9;1054:7;1050:23;1046:32;1043:52;;;1091:1;1088;1081:12;1043:52;-1:-1:-1;1114:23:65;;963:180;-1:-1:-1;963:180:65:o;1148:127::-;1209:10;1204:3;1200:20;1197:1;1190:31;1240:4;1237:1;1230:15;1264:4;1261:1;1254:15;1280:143;1348:20;;1377:40;1348:20;1377:40;:::i;:::-;1280:143;;;:::o;1428:1121::-;1512:6;1543:2;1586;1574:9;1565:7;1561:23;1557:32;1554:52;;;1602:1;1599;1592:12;1554:52;1642:9;1629:23;1671:18;1712:2;1704:6;1701:14;1698:34;;;1728:1;1725;1718:12;1698:34;1766:6;1755:9;1751:22;1741:32;;1811:7;1804:4;1800:2;1796:13;1792:27;1782:55;;1833:1;1830;1823:12;1782:55;1869:2;1856:16;1891:2;1887;1884:10;1881:36;;;1897:18;;:::i;:::-;1943:2;1940:1;1936:10;1975:2;1969:9;2038:2;2034:7;2029:2;2025;2021:11;2017:25;2009:6;2005:38;2093:6;2081:10;2078:22;2073:2;2061:10;2058:18;2055:46;2052:72;;;2104:18;;:::i;:::-;2140:2;2133:22;2190:18;;;2224:15;;;;-1:-1:-1;2266:11:65;;;2262:20;;;2294:19;;;2291:39;;;2326:1;2323;2316:12;2291:39;2350:11;;;;2370:148;2386:6;2381:3;2378:15;2370:148;;;2452:23;2471:3;2452:23;:::i;:::-;2440:36;;2403:12;;;;2496;;;;2370:148;;;2537:6;1428:1121;-1:-1:-1;;;;;;;;1428:1121:65:o;2554:256::-;2613:6;2666:2;2654:9;2645:7;2641:23;2637:32;2634:52;;;2682:1;2679;2672:12;2634:52;2721:9;2708:23;2740:40;2774:5;2740:40;:::i;:::-;2799:5;2554:256;-1:-1:-1;;;2554:256:65:o;2815:495::-;2876:3;2914:5;2908:12;2941:6;2936:3;2929:19;2967:4;2996:2;2991:3;2987:12;2980:19;;3018:5;3015:1;3008:16;3060:2;3057:1;3047:16;3081:1;3091:194;3105:6;3102:1;3099:13;3091:194;;;3170:13;;-1:-1:-1;;;;;3166:39:65;3154:52;;3226:12;;;;3202:1;3261:14;;;;3120:9;3091:194;;;-1:-1:-1;3301:3:65;;2815:495;-1:-1:-1;;;;;2815:495:65:o;3315:698::-;3611:4;3657:1;3653;3648:3;3644:11;3640:19;3698:2;3690:6;3686:15;3675:9;3668:34;3738:3;3733:2;3722:9;3718:18;3711:31;3759:65;3819:3;3808:9;3804:19;3796:6;3759:65;:::i;:::-;3751:73;;3860:6;3855:2;3844:9;3840:18;3833:34;3903:6;3898:2;3887:9;3883:18;3876:34;3947:6;3941:3;3930:9;3926:19;3919:35;4003:2;3995:6;3991:15;3985:3;3974:9;3970:19;3963:44;;3315:698;;;;;;;;;:::o;4018:434::-;4232:25;;;-1:-1:-1;;;;;4293:32:65;;4288:2;4273:18;;4266:60;4362:2;4357;4342:18;;4335:30;;;-1:-1:-1;;4382:64:65;;4427:18;;4419:6;4382:64;:::i;:::-;4374:72;4018:434;-1:-1:-1;;;;;4018:434:65:o;4457:658::-;4628:2;4680:21;;;4750:13;;4653:18;;;4772:22;;;4599:4;;4628:2;4851:15;;;;4825:2;4810:18;;;4599:4;4894:195;4908:6;4905:1;4902:13;4894:195;;;4973:13;;-1:-1:-1;;;;;4969:39:65;4957:52;;5064:15;;;;5029:12;;;;5005:1;4923:9;4894:195;;;-1:-1:-1;5106:3:65;;4457:658;-1:-1:-1;;;;;;4457:658:65:o","linkReferences":{},"immutableReferences":{"45786":[{"start":198,"length":32},{"start":354,"length":32},{"start":515,"length":32}]}},"methodIdentifiers":{"MAX_TRAVERSAL()":"58781576","create(address,uint256,uint256)":"5165da30","defaultUnlockers(uint256)":"5c681d1e","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setDefaultUnlockers(address[])":"a9d14058","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxTraversal\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"DefaultUnlockersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxTraversal\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"unlockers\",\"type\":\"address[]\"}],\"name\":\"OvalDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_TRAVERSAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMedian\",\"name\":\"chronicle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAge\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"defaultUnlockers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"setDefaultUnlockers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the best factory for most use cases that need a Chronicle source, but there are other variants that may be needed if different mutability or interface choices are desired.\",\"kind\":\"dev\",\"methods\":{\"create(address,uint256,uint256)\":{\"params\":{\"chronicle\":\"Chronicle source contract.\",\"lockWindow\":\"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.\",\"maxAge\":\"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided.\"},\"returns\":{\"oval\":\"deployed oval address.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultUnlockers(address[])\":{\"details\":\"This and the owner, itself, is the only mutable portion of this factory.\",\"params\":{\"_defaultUnlockers\":\"default unlockers that will be used to instantiate new Oval instances.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"StandardChronicleFactory is the recommended factory for use cases that want a Chronicle source and Chainlink interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256,uint256)\":{\"notice\":\"Creates the Chronicle Oval instance.\"},\"setDefaultUnlockers(address[])\":{\"notice\":\"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/factories/StandardChronicleFactory.sol\":\"StandardChronicleFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/redstone-contracts/lib/@chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/\",\":@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":redstone-contracts/=lib/redstone-contracts/src/\",\":redstone-oracle/=lib/redstone-contracts/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"src/DiamondRootOval.sol\":{\"keccak256\":\"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc\",\"dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL\"]},\"src/Oval.sol\":{\"keccak256\":\"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449\",\"dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM\"]},\"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol\":{\"keccak256\":\"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0\",\"dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE\"]},\"src/adapters/lib/DecimalLib.sol\":{\"keccak256\":\"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2\",\"dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT\"]},\"src/adapters/source-adapters/ChronicleMedianSourceAdapter.sol\":{\"keccak256\":\"0xf87b45d30b6a449735a2d5f71e9a35af638e68918de6fff69614cb3f36d41383\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://62a8e71f98dc5004f910d6e0330ea5b1d0f54fac78f724e1dd224806edee1b53\",\"dweb:/ipfs/QmUY3K7fHHARGmUtCLhL1HVrEzeVrqceQ8nySUveC9Svxz\"]},\"src/adapters/source-adapters/SnapshotSource.sol\":{\"keccak256\":\"0x3217090f4062ecd483d1bf5f19b371a77fe84efcb87f1802243ddaf9566083d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0bb20aa74b0e273225d0c12eef1827d397e703da6ba6c23669cb0a1b028fef5e\",\"dweb:/ipfs/QmRRXvPndL4ANHgjVWKAMTjMfqxeVCZuiuuUkn8qh2bpFP\"]},\"src/controllers/MutableUnlockersController.sol\":{\"keccak256\":\"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f\",\"dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob\"]},\"src/factories/BaseFactory.sol\":{\"keccak256\":\"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19\",\"dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq\"]},\"src/factories/StandardChronicleFactory.sol\":{\"keccak256\":\"0x52cf93f2165da0c786be859d4c9b801a76a6a35d4d5dd9d3428764b20afa1af7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8f0db2d456738ac9b5e4e40becf07cef3d2348ef1ac14e53c82573b6e03a242f\",\"dweb:/ipfs/QmWcPathefwDZyLW6YPwMkFUYqxwhtSeiPQrXqqeKJf8C3\"]},\"src/interfaces/IBaseController.sol\":{\"keccak256\":\"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc\",\"dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju\"]},\"src/interfaces/IBaseOracleAdapter.sol\":{\"keccak256\":\"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be\",\"dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP\"]},\"src/interfaces/IOval.sol\":{\"keccak256\":\"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953\",\"dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H\"]},\"src/interfaces/chainlink/IAggregatorV3.sol\":{\"keccak256\":\"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1\",\"dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G\"]},\"src/interfaces/chainlink/IAggregatorV3Source.sol\":{\"keccak256\":\"0xace678af82f9ae630210cc7b85cb8759b89b3d7280525ebbcb78aa7c33f5c79f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63e72db0effebba1b9048614c1ba8e72018957dddff712be2d3a2893229e210e\",\"dweb:/ipfs/QmNLqP4G5ujrZdt2rVTrXpLHuqRUR1hugxQzbNmGReLQtZ\"]},\"src/interfaces/chronicle/IMedian.sol\":{\"keccak256\":\"0x2fb1bf5d7440e644320d794967a022e6256eff352d1f5754280ab6337a7cbf54\",\"urls\":[\"bzz-raw://0d86c3531a84e7439a9867ccb1ec857271873337e67bc45d29a1372114ed2049\",\"dweb:/ipfs/QmQqtzY2PHGbGantaj1HsBrJUziDW1QMeToVF5fMJ7pYLS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"maxTraversal","type":"uint256"},{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address[]","name":"defaultUnlockers","type":"address[]","indexed":false}],"type":"event","name":"DefaultUnlockersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"deployer","type":"address","indexed":true},{"internalType":"address","name":"oval","type":"address","indexed":true},{"internalType":"uint256","name":"lockWindow","type":"uint256","indexed":true},{"internalType":"uint256","name":"maxTraversal","type":"uint256","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"address[]","name":"unlockers","type":"address[]","indexed":false}],"type":"event","name":"OvalDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_TRAVERSAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IMedian","name":"chronicle","type":"address"},{"internalType":"uint256","name":"lockWindow","type":"uint256"},{"internalType":"uint256","name":"maxAge","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"oval","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"defaultUnlockers","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultUnlockers"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"create(address,uint256,uint256)":{"params":{"chronicle":"Chronicle source contract.","lockWindow":"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.","maxAge":"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided."},"returns":{"oval":"deployed oval address."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultUnlockers(address[])":{"details":"This and the owner, itself, is the only mutable portion of this factory.","params":{"_defaultUnlockers":"default unlockers that will be used to instantiate new Oval instances."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"create(address,uint256,uint256)":{"notice":"Creates the Chronicle Oval instance."},"setDefaultUnlockers(address[])":{"notice":"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract."}},"version":1}},"settings":{"remappings":["@chainlink/=lib/redstone-contracts/lib/@chainlink/","@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/","@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","redstone-contracts/=lib/redstone-contracts/src/","redstone-oracle/=lib/redstone-contracts/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/factories/StandardChronicleFactory.sol":"StandardChronicleFactory"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218","urls":["bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32","dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"src/DiamondRootOval.sol":{"keccak256":"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1","urls":["bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc","dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL"],"license":"BUSL-1.1"},"src/Oval.sol":{"keccak256":"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf","urls":["bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449","dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM"],"license":"BUSL-1.1"},"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol":{"keccak256":"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b","urls":["bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0","dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE"],"license":"BUSL-1.1"},"src/adapters/lib/DecimalLib.sol":{"keccak256":"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2","urls":["bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2","dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT"],"license":"BUSL-1.1"},"src/adapters/source-adapters/ChronicleMedianSourceAdapter.sol":{"keccak256":"0xf87b45d30b6a449735a2d5f71e9a35af638e68918de6fff69614cb3f36d41383","urls":["bzz-raw://62a8e71f98dc5004f910d6e0330ea5b1d0f54fac78f724e1dd224806edee1b53","dweb:/ipfs/QmUY3K7fHHARGmUtCLhL1HVrEzeVrqceQ8nySUveC9Svxz"],"license":"BUSL-1.1"},"src/adapters/source-adapters/SnapshotSource.sol":{"keccak256":"0x3217090f4062ecd483d1bf5f19b371a77fe84efcb87f1802243ddaf9566083d5","urls":["bzz-raw://0bb20aa74b0e273225d0c12eef1827d397e703da6ba6c23669cb0a1b028fef5e","dweb:/ipfs/QmRRXvPndL4ANHgjVWKAMTjMfqxeVCZuiuuUkn8qh2bpFP"],"license":"BUSL-1.1"},"src/controllers/MutableUnlockersController.sol":{"keccak256":"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16","urls":["bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f","dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob"],"license":"BUSL-1.1"},"src/factories/BaseFactory.sol":{"keccak256":"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6","urls":["bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19","dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq"],"license":"BUSL-1.1"},"src/factories/StandardChronicleFactory.sol":{"keccak256":"0x52cf93f2165da0c786be859d4c9b801a76a6a35d4d5dd9d3428764b20afa1af7","urls":["bzz-raw://8f0db2d456738ac9b5e4e40becf07cef3d2348ef1ac14e53c82573b6e03a242f","dweb:/ipfs/QmWcPathefwDZyLW6YPwMkFUYqxwhtSeiPQrXqqeKJf8C3"],"license":"BUSL-1.1"},"src/interfaces/IBaseController.sol":{"keccak256":"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5","urls":["bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc","dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju"],"license":"MIT"},"src/interfaces/IBaseOracleAdapter.sol":{"keccak256":"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9","urls":["bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be","dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP"],"license":"MIT"},"src/interfaces/IOval.sol":{"keccak256":"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa","urls":["bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953","dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H"],"license":"MIT"},"src/interfaces/chainlink/IAggregatorV3.sol":{"keccak256":"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d","urls":["bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1","dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G"],"license":"MIT"},"src/interfaces/chainlink/IAggregatorV3Source.sol":{"keccak256":"0xace678af82f9ae630210cc7b85cb8759b89b3d7280525ebbcb78aa7c33f5c79f","urls":["bzz-raw://63e72db0effebba1b9048614c1ba8e72018957dddff712be2d3a2893229e210e","dweb:/ipfs/QmNLqP4G5ujrZdt2rVTrXpLHuqRUR1hugxQzbNmGReLQtZ"],"license":"MIT"},"src/interfaces/chronicle/IMedian.sol":{"keccak256":"0x2fb1bf5d7440e644320d794967a022e6256eff352d1f5754280ab6337a7cbf54","urls":["bzz-raw://0d86c3531a84e7439a9867ccb1ec857271873337e67bc45d29a1372114ed2049","dweb:/ipfs/QmQqtzY2PHGbGantaj1HsBrJUziDW1QMeToVF5fMJ7pYLS"],"license":null}},"version":1},"id":48} \ No newline at end of file diff --git a/src/abi/StandardCoinbaseFactory.json b/src/abi/StandardCoinbaseFactory.json new file mode 100644 index 0000000..ed40b29 --- /dev/null +++ b/src/abi/StandardCoinbaseFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_source","type":"address","internalType":"contract IAggregatorV3SourceCoinbase"},{"name":"_maxTraversal","type":"uint256","internalType":"uint256"},{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_TRAVERSAL","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SOURCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAggregatorV3SourceCoinbase"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"ticker","type":"string","internalType":"string"},{"name":"lockWindow","type":"uint256","internalType":"uint256"},{"name":"maxAge","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"oval","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultUnlockers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultUnlockers","inputs":[{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultUnlockersSet","inputs":[{"name":"defaultUnlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OvalDeployed","inputs":[{"name":"deployer","type":"address","indexed":true,"internalType":"address"},{"name":"oval","type":"address","indexed":true,"internalType":"address"},{"name":"lockWindow","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"maxTraversal","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"unlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b506040516200286138038062002861833981016040819052620000349162000289565b81816200004133620000bd565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a7816200010d565b505050506001600160a01b031660a052620003cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200011762000169565b80516200012c906001906020840190620001c7565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015e91906200037d565b60405180910390a150565b6000546001600160a01b03163314620001c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b8280548282559060005260206000209081019282156200021f579160200282015b828111156200021f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001e8565b506200022d92915062000231565b5090565b5b808211156200022d576000815560010162000232565b6001600160a01b03811681146200025e57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b8051620002848162000248565b919050565b6000806000606084860312156200029f57600080fd5b8351620002ac8162000248565b60208581015160408701519295509350906001600160401b0380821115620002d357600080fd5b818701915087601f830112620002e857600080fd5b815181811115620002fd57620002fd62000261565b8060051b604051601f19603f8301168101818110858211171562000325576200032562000261565b60405291825284820192508381018501918a8311156200034457600080fd5b938501935b828510156200036d576200035d8562000277565b8452938501939285019262000349565b8096505050505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015620003c05783516001600160a01b03168352928401929184019160010162000399565b50909695505050505050565b60805160a05161245b62000406600039600081816101550152610231015260008181609e0152818161025601526102f8015261245b6000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063a9d140581162000062578063a9d140581462000121578063cda3c4991462000138578063f230b4c2146200014f578063f2fde38b146200017757600080fd5b80635878157614620000985780635c681d1e14620000d3578063715018a614620001035780638da5cb5b146200010f575b600080fd5b620000c07f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b620000ea620000e43660046200050a565b6200018e565b6040516001600160a01b039091168152602001620000ca565b6200010d620001b9565b005b6000546001600160a01b0316620000ea565b6200010d620001323660046200058b565b620001d1565b620000ea6200014936600462000645565b6200022d565b620000ea7f000000000000000000000000000000000000000000000000000000000000000081565b6200010d62000188366004620006f4565b6200034c565b600181815481106200019f57600080fd5b6000918252602090912001546001600160a01b0316905081565b620001c3620003cf565b620001cf60006200042b565b565b620001db620003cf565b8051620001f09060019060208401906200047b565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae168160405162000222919062000719565b60405180910390a150565b60007f0000000000000000000000000000000000000000000000000000000000000000846001857f000000000000000000000000000000000000000000000000000000000000000086620002896000546001600160a01b031690565b6040516200029790620004e5565b620002a99796959493929190620007b3565b604051809103906000f080158015620002c6573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f00000000000000000000000000000000000000000000000000000000000000006200032a6000546001600160a01b031690565b60016040516200033d9392919062000850565b60405180910390a49392505050565b62000356620003cf565b6001600160a01b038116620003c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620003cc816200042b565b50565b6000546001600160a01b03163314620001cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003b8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215620004d3579160200282015b82811115620004d357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200049c565b50620004e1929150620004f3565b5090565b611ba0806200088683390190565b5b80821115620004e15760008155600101620004f4565b6000602082840312156200051d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562000566576200056662000524565b604052919050565b80356001600160a01b03811681146200058657600080fd5b919050565b600060208083850312156200059f57600080fd5b823567ffffffffffffffff80821115620005b857600080fd5b818501915085601f830112620005cd57600080fd5b813581811115620005e257620005e262000524565b8060051b9150620005f58483016200053a565b81815291830184019184810190888411156200061057600080fd5b938501935b83851015620006395762000629856200056e565b8252938501939085019062000615565b98975050505050505050565b6000806000606084860312156200065b57600080fd5b833567ffffffffffffffff808211156200067457600080fd5b818601915086601f8301126200068957600080fd5b8135602082821115620006a057620006a062000524565b620006b4601f8301601f191682016200053a565b92508183528881838601011115620006cb57600080fd5b818185018285013760009183018101919091529097908601359650604090950135949350505050565b6000602082840312156200070757600080fd5b62000712826200056e565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156200075c5783516001600160a01b03168352928401929184019160010162000735565b50909695505050505050565b6000815480845260208085019450836000528060002060005b83811015620007a85781546001600160a01b03168752958201956001918201910162000781565b509495945050505050565b60018060a01b03881681526000602060e08184015288518060e085015260005b81811015620007f2578a810183015185820161010001528201620007d3565b5061010091506000828286010152601f19601f8201168401905081848203016040850152620008248282018a62000768565b925050508560608301528460808301528360a08301526200063960c08301846001600160a01b03169052565b8381526001600160a01b03831660208201526060604082018190526000906200087c9083018462000768565b9594505050505056fe6101406040523480156200001257600080fd5b5060405162001ba038038062001ba0833981016040819052620000359162000588565b6012878786868987620000483362000303565b8381116200009d5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ef5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000094565b608084905260a083905260c081905260005b82518110156200014f576200013a838281518110620001245762000124620006a8565b602002602001015160016200035360201b60201c565b806200014681620006be565b91505062000101565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a250505050816001600160a01b031660e0816001600160a01b031681525050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002549190620006e6565b60ff16610100526003620002698282620007a1565b506101005160ff16826001600160a01b03167fb7ffc5864a1db85fbcfd710dabae631a2bafb39438fe25dfcb5687aea2a9ee2c6003604051620002ad91906200086d565b60405180910390a3505060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002f68162000303565b5050505050505062000900565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200035d62000423565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003cf5760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000094565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b031633146200047f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000094565b565b6001600160a01b03811681146200049757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620004db57620004db6200049a565b604052919050565b8051620004f08162000481565b919050565b600082601f8301126200050757600080fd5b815160206001600160401b038211156200052557620005256200049a565b8160051b62000536828201620004b0565b92835284810182019282810190878511156200055157600080fd5b83870192505b848310156200057d5782516200056d8162000481565b8252918301919083019062000557565b979650505050505050565b600080600080600080600060e0888a031215620005a457600080fd5b8751620005b18162000481565b602089810151919850906001600160401b0380821115620005d157600080fd5b818b0191508b601f830112620005e657600080fd5b815181811115620005fb57620005fb6200049a565b6200060f601f8201601f19168501620004b0565b8181528d858386010111156200062457600080fd5b60005b828110156200064457848101860151828201870152850162000627565b5060009181019094015260408b0151929850808311156200066457600080fd5b5050620006748a828b01620004f5565b955050606088015193506080880151925060a088015191506200069a60c08901620004e3565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b600060018201620006df57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215620006f957600080fd5b815160ff811681146200070b57600080fd5b9392505050565b600181811c908216806200072757607f821691505b6020821081036200074857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200079c57600081815260208120601f850160051c81016020861015620007775750805b601f850160051c820191505b81811015620007985782815560010162000783565b5050505b505050565b81516001600160401b03811115620007bd57620007bd6200049a565b620007d581620007ce845462000712565b846200074e565b602080601f8311600181146200080d5760008415620007f45750858301515b600019600386901b1c1916600185901b17855562000798565b600085815260208120601f198616915b828110156200083e578886015182559484019460019091019084016200081d565b50858210156200085d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080835260008454620008838162000712565b80848701526040600180841660008114620008a75760018114620008c257620008f2565b60ff1985168984015283151560051b890183019550620008f2565b896000528660002060005b85811015620008ea5781548b8201860152908301908801620008cd565b8a0184019650505b509398975050505050505050565b60805160a05160c05160e05161010051610120516112036200099d600039600081816101e4015281816105e501528181610660015261093c01526000818161057c01526106b301526000818161038a015281816104e501528181610ab10152610c6c01526000818161027b0152610b6d01526000818161031d015261042001526000818161022d015281816103ed01526108c601526112036000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638205bf6a116100c3578063d3fff0f61161007c578063d3fff0f61461035d578063d54db2c014610370578063dc46c1dd14610385578063f2fde38b146103ac578063f6e1d17a146103bf578063feaf968c146103d257600080fd5b80638205bf6a146102a75780638da5cb5b146102af5780639a6fc8f5146102d4578063a3c044761461031b578063a5c38b3d14610341578063cb53b08d1461034a57600080fd5b80633376f53a116101155780633376f53a1461022b5780633d6ba5781461025b57806350d25bcd146102715780636666d3721461018d578063687043c514610279578063715018a61461029f57600080fd5b80630125554b1461015d5780631386236414610185578063172b09f91461018f57806324a419f4146101c2578063313ce567146101df57806332c6534b14610218575b600080fd5b6101656103da565b604080519384526020840192909252908201526060015b60405180910390f35b61018d61044f565b005b6101b261019d366004610d50565b60026020526000908152604090205460ff1681565b604051901515815260200161017c565b6101ca6104dd565b6040805192835260208301919091520161017c565b6102067f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161017c565b6101b2610226366004610d6b565b6105ab565b7f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161017c565b6101ca610269366004610d95565b506000908190565b61024d6105ce565b7f000000000000000000000000000000000000000000000000000000000000000061024d565b61018d610611565b61024d610623565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161017c565b6102e76102e2366004610dc3565b610636565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a00161017c565b7f000000000000000000000000000000000000000000000000000000000000000061024d565b61024d60015481565b610165610358366004610de0565b610697565b61018d61036b366004610e02565b6106e8565b6103786107ab565b60405161017c9190610e3e565b6102bc7f000000000000000000000000000000000000000000000000000000000000000081565b61018d6103ba366004610d50565b610839565b6101ca6103cd366004610d95565b6108b2565b6102e761090c565b600080600061044461041e60015461040f7f000000000000000000000000000000000000000000000000000000000000000090565b6104199042610ea2565b610974565b7f0000000000000000000000000000000000000000000000000000000000000000610697565b925092509250909192565b61045b336001546105ab565b6104ac5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333f98c7760036040518263ffffffff1660e01b81526004016105309190610f93565b606060405180830381865afa15801561054d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105719190610fa6565b92509250506105a2827f0000000000000000000000000000000000000000000000000000000000000000601261098c565b94909350915050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b6000806105d96103da565b505090506106098160127f000000000000000000000000000000000000000000000000000000000000000061098c565b91505090565b565b6106196109fd565b61060f6000610a57565b60008061062e6103da565b509392505050565b6000806000806000806000610653886001600160501b03166108b2565b91509150876106848360127f000000000000000000000000000000000000000000000000000000000000000061098c565b9099909891975087965090945092505050565b60008060008060006106a98787610aa7565b915091506106d9827f0000000000000000000000000000000000000000000000000000000000000000601261098c565b97909650600195509350505050565b6106f06109fd565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036107575760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b60448201526064016104a3565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600380546107b890610eb5565b80601f01602080910402602001604051908101604052809291908181526020018280546107e490610eb5565b80156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b505050505081565b6108416109fd565b6001600160a01b0381166108a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a3565b6108af81610a57565b50565b60015460009081908190819081906108ea907f000000000000000000000000000000000000000000000000000000000000000061040f565b90508082116108fe57509094909350915050565b506000958695509350505050565b6000806000806000806000806109206103da565b925092509250600061093182610bbe565b9050806109608560127f000000000000000000000000000000000000000000000000000000000000000061098c565b909a90995092975087965094509092505050565b60008183116109835781610985565b825b9392505050565b60008160ff168360ff16036109a2575082610985565b8160ff168360ff1610156109d6576109ba8383610fdd565b6109c590600a6110da565b6109cf90856110e9565b9050610985565b6109e08284610fdd565b6109eb90600a6110da565b6109f59085611119565b949350505050565b6000546001600160a01b0316331461060f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333f98c7760036040518263ffffffff1660e01b8152600401610afc9190610f93565b606060405180830381865afa158015610b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3d9190610fa6565b925092509250868111610b56579093509150610bb79050565b600080610b6489868a610c2a565b91509150610b8f7f000000000000000000000000000000000000000000000000000000000000000090565b610b999042610ea2565b811115610bae579095509350610bb792505050565b50919450925050505b9250929050565b60006001600160501b03821115610c265760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b60648201526084016104a3565b5090565b600080808060015b85816001600160501b031611158015610c5d5750806001600160501b0316876001600160501b031610155b15610d25576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636471a6806003610c9d848b611155565b6040518363ffffffff1660e01b8152600401610cba92919061117c565b606060405180830381865afa158015610cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfb9190610fa6565b909450925050878211610d1357509092509050610d2c565b80610d1d816111a7565b915050610c32565b5090925090505b935093915050565b80356001600160a01b0381168114610d4b57600080fd5b919050565b600060208284031215610d6257600080fd5b61098582610d34565b60008060408385031215610d7e57600080fd5b610d8783610d34565b946020939093013593505050565b600060208284031215610da757600080fd5b5035919050565b6001600160501b03811681146108af57600080fd5b600060208284031215610dd557600080fd5b813561098581610dae565b60008060408385031215610df357600080fd5b50508035926020909101359150565b60008060408385031215610e1557600080fd5b610e1e83610d34565b915060208301358015158114610e3357600080fd5b809150509250929050565b600060208083528351808285015260005b81811015610e6b57858101830151858201604001528201610e4f565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105c8576105c8610e8c565b600181811c90821680610ec957607f821691505b602082108103610ee957634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c9080831680610f0957607f831692505b60208084108203610f2a57634e487b7160e01b600052602260045260246000fd5b83885260208801828015610f455760018114610f5b57610f86565b60ff198716825285151560051b82019750610f86565b60008981526020902060005b87811015610f8057815484820152908601908401610f67565b83019850505b5050505050505092915050565b6020815260006109856020830184610eef565b600080600060608486031215610fbb57600080fd5b8351610fc681610dae565b602085015160409095015190969495509392505050565b60ff82811682821603908111156105c8576105c8610e8c565b600181815b8085111561103157816000190482111561101757611017610e8c565b8085161561102457918102915b93841c9390800290610ffb565b509250929050565b600082611048575060016105c8565b81611055575060006105c8565b816001811461106b576002811461107557611091565b60019150506105c8565b60ff84111561108657611086610e8c565b50506001821b6105c8565b5060208310610133831016604e8410600b84101617156110b4575081810a6105c8565b6110be8383610ff6565b80600019048211156110d2576110d2610e8c565b029392505050565b600061098560ff841683611039565b80820260008212600160ff1b8414161561110557611105610e8c565b81810583148215176105c8576105c8610e8c565b60008261113657634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561115057611150610e8c565b500590565b6001600160501b0382811682821603908082111561117557611175610e8c565b5092915050565b60408152600061118f6040830185610eef565b90506001600160501b03831660208301529392505050565b60006001600160501b038083168181036111c3576111c3610e8c565b600101939250505056fea2646970667358221220118ad657518d5c4a3385f25c97ea62cae7b6893002200743ee1886def38211d564736f6c63430008110033a26469706673582212200d1b11783969f3f8e9b08893f3025e4452bc5b3ad6521351d8572ce27093ac4e64736f6c63430008110033","sourceMap":"1578:1212:49:-:0;;;1699:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1827:13;1842:17;936:32:14;719:10:18;936:18:14;:32::i;:::-;925:1:45;909:13;:17;901:55;;;;-1:-1:-1;;;901:55:45;;2074:2:65;901:55:45;;;2056:21:65;2113:2;2093:18;;;2086:30;2152:27;2132:18;;;2125:55;2197:18;;901:55:45;;;;;;;;;967:29;;;;1006:38;1026:17;1006:19;:38::i;:::-;-1:-1:-1;;;;;;;;;1875:16:49::1;;::::0;1578:1212;;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;1359:130:14:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;3091:2:65;1414:68:14;;;3073:21:65;;;3110:18;;;3103:30;3169:34;3149:18;;;3142:62;3221:18;;1414:68:14;2889:356:65;1414:68:14;1359:130::o;1578:1212:49:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1578:1212:49;-1:-1:-1;;;;;1578:1212:49;;;;;;;;;;;-1:-1:-1;1578:1212:49;;;;;;;-1:-1:-1;1578:1212:49;;;-1:-1:-1;1578:1212:49;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:160:65;-1:-1:-1;;;;;118:31:65;;108:42;;98:70;;164:1;161;154:12;98:70;14:160;:::o;179:127::-;240:10;235:3;231:20;228:1;221:31;271:4;268:1;261:15;295:4;292:1;285:15;311:167;390:13;;412:60;390:13;412:60;:::i;:::-;311:167;;;:::o;483:1384::-;633:6;641;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;750:9;744:16;769:60;823:5;769:60;:::i;:::-;872:2;899:18;;;893:25;962:2;947:18;;941:25;848:5;;-1:-1:-1;893:25:65;-1:-1:-1;872:2:65;-1:-1:-1;;;;;1015:14:65;;;1012:34;;;1042:1;1039;1032:12;1012:34;1080:6;1069:9;1065:22;1055:32;;1125:7;1118:4;1114:2;1110:13;1106:27;1096:55;;1147:1;1144;1137:12;1096:55;1176:2;1170:9;1198:2;1194;1191:10;1188:36;;;1204:18;;:::i;:::-;1250:2;1247:1;1243:10;1282:2;1276:9;1345:2;1341:7;1336:2;1332;1328:11;1324:25;1316:6;1312:38;1400:6;1388:10;1385:22;1380:2;1368:10;1365:18;1362:46;1359:72;;;1411:18;;:::i;:::-;1447:2;1440:22;1497:18;;;1531:15;;;;-1:-1:-1;1573:11:65;;;1569:20;;;1601:19;;;1598:39;;;1633:1;1630;1623:12;1598:39;1657:11;;;;1677:159;1693:6;1688:3;1685:15;1677:159;;;1759:34;1789:3;1759:34;:::i;:::-;1747:47;;1710:12;;;;1814;;;;1677:159;;;1855:6;1845:16;;;;;;;;483:1384;;;;;:::o;2226:658::-;2397:2;2449:21;;;2519:13;;2422:18;;;2541:22;;;2368:4;;2397:2;2620:15;;;;2594:2;2579:18;;;2368:4;2663:195;2677:6;2674:1;2671:13;2663:195;;;2742:13;;-1:-1:-1;;;;;2738:39:65;2726:52;;2833:15;;;;2798:12;;;;2774:1;2692:9;2663:195;;;-1:-1:-1;2875:3:65;;2226:658;-1:-1:-1;;;;;;2226:658:65:o;2889:356::-;1578:1212:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063a9d140581162000062578063a9d140581462000121578063cda3c4991462000138578063f230b4c2146200014f578063f2fde38b146200017757600080fd5b80635878157614620000985780635c681d1e14620000d3578063715018a614620001035780638da5cb5b146200010f575b600080fd5b620000c07f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b620000ea620000e43660046200050a565b6200018e565b6040516001600160a01b039091168152602001620000ca565b6200010d620001b9565b005b6000546001600160a01b0316620000ea565b6200010d620001323660046200058b565b620001d1565b620000ea6200014936600462000645565b6200022d565b620000ea7f000000000000000000000000000000000000000000000000000000000000000081565b6200010d62000188366004620006f4565b6200034c565b600181815481106200019f57600080fd5b6000918252602090912001546001600160a01b0316905081565b620001c3620003cf565b620001cf60006200042b565b565b620001db620003cf565b8051620001f09060019060208401906200047b565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae168160405162000222919062000719565b60405180910390a150565b60007f0000000000000000000000000000000000000000000000000000000000000000846001857f000000000000000000000000000000000000000000000000000000000000000086620002896000546001600160a01b031690565b6040516200029790620004e5565b620002a99796959493929190620007b3565b604051809103906000f080158015620002c6573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f00000000000000000000000000000000000000000000000000000000000000006200032a6000546001600160a01b031690565b60016040516200033d9392919062000850565b60405180910390a49392505050565b62000356620003cf565b6001600160a01b038116620003c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620003cc816200042b565b50565b6000546001600160a01b03163314620001cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003b8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215620004d3579160200282015b82811115620004d357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200049c565b50620004e1929150620004f3565b5090565b611ba0806200088683390190565b5b80821115620004e15760008155600101620004f4565b6000602082840312156200051d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562000566576200056662000524565b604052919050565b80356001600160a01b03811681146200058657600080fd5b919050565b600060208083850312156200059f57600080fd5b823567ffffffffffffffff80821115620005b857600080fd5b818501915085601f830112620005cd57600080fd5b813581811115620005e257620005e262000524565b8060051b9150620005f58483016200053a565b81815291830184019184810190888411156200061057600080fd5b938501935b83851015620006395762000629856200056e565b8252938501939085019062000615565b98975050505050505050565b6000806000606084860312156200065b57600080fd5b833567ffffffffffffffff808211156200067457600080fd5b818601915086601f8301126200068957600080fd5b8135602082821115620006a057620006a062000524565b620006b4601f8301601f191682016200053a565b92508183528881838601011115620006cb57600080fd5b818185018285013760009183018101919091529097908601359650604090950135949350505050565b6000602082840312156200070757600080fd5b62000712826200056e565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156200075c5783516001600160a01b03168352928401929184019160010162000735565b50909695505050505050565b6000815480845260208085019450836000528060002060005b83811015620007a85781546001600160a01b03168752958201956001918201910162000781565b509495945050505050565b60018060a01b03881681526000602060e08184015288518060e085015260005b81811015620007f2578a810183015185820161010001528201620007d3565b5061010091506000828286010152601f19601f8201168401905081848203016040850152620008248282018a62000768565b925050508560608301528460808301528360a08301526200063960c08301846001600160a01b03169052565b8381526001600160a01b03831660208201526060604082018190526000906200087c9083018462000768565b9594505050505056fe6101406040523480156200001257600080fd5b5060405162001ba038038062001ba0833981016040819052620000359162000588565b6012878786868987620000483362000303565b8381116200009d5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ef5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000094565b608084905260a083905260c081905260005b82518110156200014f576200013a838281518110620001245762000124620006a8565b602002602001015160016200035360201b60201c565b806200014681620006be565b91505062000101565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a250505050816001600160a01b031660e0816001600160a01b031681525050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002549190620006e6565b60ff16610100526003620002698282620007a1565b506101005160ff16826001600160a01b03167fb7ffc5864a1db85fbcfd710dabae631a2bafb39438fe25dfcb5687aea2a9ee2c6003604051620002ad91906200086d565b60405180910390a3505060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002f68162000303565b5050505050505062000900565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200035d62000423565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003cf5760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000094565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b031633146200047f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000094565b565b6001600160a01b03811681146200049757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620004db57620004db6200049a565b604052919050565b8051620004f08162000481565b919050565b600082601f8301126200050757600080fd5b815160206001600160401b038211156200052557620005256200049a565b8160051b62000536828201620004b0565b92835284810182019282810190878511156200055157600080fd5b83870192505b848310156200057d5782516200056d8162000481565b8252918301919083019062000557565b979650505050505050565b600080600080600080600060e0888a031215620005a457600080fd5b8751620005b18162000481565b602089810151919850906001600160401b0380821115620005d157600080fd5b818b0191508b601f830112620005e657600080fd5b815181811115620005fb57620005fb6200049a565b6200060f601f8201601f19168501620004b0565b8181528d858386010111156200062457600080fd5b60005b828110156200064457848101860151828201870152850162000627565b5060009181019094015260408b0151929850808311156200066457600080fd5b5050620006748a828b01620004f5565b955050606088015193506080880151925060a088015191506200069a60c08901620004e3565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b600060018201620006df57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215620006f957600080fd5b815160ff811681146200070b57600080fd5b9392505050565b600181811c908216806200072757607f821691505b6020821081036200074857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200079c57600081815260208120601f850160051c81016020861015620007775750805b601f850160051c820191505b81811015620007985782815560010162000783565b5050505b505050565b81516001600160401b03811115620007bd57620007bd6200049a565b620007d581620007ce845462000712565b846200074e565b602080601f8311600181146200080d5760008415620007f45750858301515b600019600386901b1c1916600185901b17855562000798565b600085815260208120601f198616915b828110156200083e578886015182559484019460019091019084016200081d565b50858210156200085d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080835260008454620008838162000712565b80848701526040600180841660008114620008a75760018114620008c257620008f2565b60ff1985168984015283151560051b890183019550620008f2565b896000528660002060005b85811015620008ea5781548b8201860152908301908801620008cd565b8a0184019650505b509398975050505050505050565b60805160a05160c05160e05161010051610120516112036200099d600039600081816101e4015281816105e501528181610660015261093c01526000818161057c01526106b301526000818161038a015281816104e501528181610ab10152610c6c01526000818161027b0152610b6d01526000818161031d015261042001526000818161022d015281816103ed01526108c601526112036000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638205bf6a116100c3578063d3fff0f61161007c578063d3fff0f61461035d578063d54db2c014610370578063dc46c1dd14610385578063f2fde38b146103ac578063f6e1d17a146103bf578063feaf968c146103d257600080fd5b80638205bf6a146102a75780638da5cb5b146102af5780639a6fc8f5146102d4578063a3c044761461031b578063a5c38b3d14610341578063cb53b08d1461034a57600080fd5b80633376f53a116101155780633376f53a1461022b5780633d6ba5781461025b57806350d25bcd146102715780636666d3721461018d578063687043c514610279578063715018a61461029f57600080fd5b80630125554b1461015d5780631386236414610185578063172b09f91461018f57806324a419f4146101c2578063313ce567146101df57806332c6534b14610218575b600080fd5b6101656103da565b604080519384526020840192909252908201526060015b60405180910390f35b61018d61044f565b005b6101b261019d366004610d50565b60026020526000908152604090205460ff1681565b604051901515815260200161017c565b6101ca6104dd565b6040805192835260208301919091520161017c565b6102067f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161017c565b6101b2610226366004610d6b565b6105ab565b7f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161017c565b6101ca610269366004610d95565b506000908190565b61024d6105ce565b7f000000000000000000000000000000000000000000000000000000000000000061024d565b61018d610611565b61024d610623565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161017c565b6102e76102e2366004610dc3565b610636565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a00161017c565b7f000000000000000000000000000000000000000000000000000000000000000061024d565b61024d60015481565b610165610358366004610de0565b610697565b61018d61036b366004610e02565b6106e8565b6103786107ab565b60405161017c9190610e3e565b6102bc7f000000000000000000000000000000000000000000000000000000000000000081565b61018d6103ba366004610d50565b610839565b6101ca6103cd366004610d95565b6108b2565b6102e761090c565b600080600061044461041e60015461040f7f000000000000000000000000000000000000000000000000000000000000000090565b6104199042610ea2565b610974565b7f0000000000000000000000000000000000000000000000000000000000000000610697565b925092509250909192565b61045b336001546105ab565b6104ac5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333f98c7760036040518263ffffffff1660e01b81526004016105309190610f93565b606060405180830381865afa15801561054d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105719190610fa6565b92509250506105a2827f0000000000000000000000000000000000000000000000000000000000000000601261098c565b94909350915050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b6000806105d96103da565b505090506106098160127f000000000000000000000000000000000000000000000000000000000000000061098c565b91505090565b565b6106196109fd565b61060f6000610a57565b60008061062e6103da565b509392505050565b6000806000806000806000610653886001600160501b03166108b2565b91509150876106848360127f000000000000000000000000000000000000000000000000000000000000000061098c565b9099909891975087965090945092505050565b60008060008060006106a98787610aa7565b915091506106d9827f0000000000000000000000000000000000000000000000000000000000000000601261098c565b97909650600195509350505050565b6106f06109fd565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036107575760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b60448201526064016104a3565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600380546107b890610eb5565b80601f01602080910402602001604051908101604052809291908181526020018280546107e490610eb5565b80156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b505050505081565b6108416109fd565b6001600160a01b0381166108a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a3565b6108af81610a57565b50565b60015460009081908190819081906108ea907f000000000000000000000000000000000000000000000000000000000000000061040f565b90508082116108fe57509094909350915050565b506000958695509350505050565b6000806000806000806000806109206103da565b925092509250600061093182610bbe565b9050806109608560127f000000000000000000000000000000000000000000000000000000000000000061098c565b909a90995092975087965094509092505050565b60008183116109835781610985565b825b9392505050565b60008160ff168360ff16036109a2575082610985565b8160ff168360ff1610156109d6576109ba8383610fdd565b6109c590600a6110da565b6109cf90856110e9565b9050610985565b6109e08284610fdd565b6109eb90600a6110da565b6109f59085611119565b949350505050565b6000546001600160a01b0316331461060f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333f98c7760036040518263ffffffff1660e01b8152600401610afc9190610f93565b606060405180830381865afa158015610b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3d9190610fa6565b925092509250868111610b56579093509150610bb79050565b600080610b6489868a610c2a565b91509150610b8f7f000000000000000000000000000000000000000000000000000000000000000090565b610b999042610ea2565b811115610bae579095509350610bb792505050565b50919450925050505b9250929050565b60006001600160501b03821115610c265760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b60648201526084016104a3565b5090565b600080808060015b85816001600160501b031611158015610c5d5750806001600160501b0316876001600160501b031610155b15610d25576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636471a6806003610c9d848b611155565b6040518363ffffffff1660e01b8152600401610cba92919061117c565b606060405180830381865afa158015610cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfb9190610fa6565b909450925050878211610d1357509092509050610d2c565b80610d1d816111a7565b915050610c32565b5090925090505b935093915050565b80356001600160a01b0381168114610d4b57600080fd5b919050565b600060208284031215610d6257600080fd5b61098582610d34565b60008060408385031215610d7e57600080fd5b610d8783610d34565b946020939093013593505050565b600060208284031215610da757600080fd5b5035919050565b6001600160501b03811681146108af57600080fd5b600060208284031215610dd557600080fd5b813561098581610dae565b60008060408385031215610df357600080fd5b50508035926020909101359150565b60008060408385031215610e1557600080fd5b610e1e83610d34565b915060208301358015158114610e3357600080fd5b809150509250929050565b600060208083528351808285015260005b81811015610e6b57858101830151858201604001528201610e4f565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105c8576105c8610e8c565b600181811c90821680610ec957607f821691505b602082108103610ee957634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c9080831680610f0957607f831692505b60208084108203610f2a57634e487b7160e01b600052602260045260246000fd5b83885260208801828015610f455760018114610f5b57610f86565b60ff198716825285151560051b82019750610f86565b60008981526020902060005b87811015610f8057815484820152908601908401610f67565b83019850505b5050505050505092915050565b6020815260006109856020830184610eef565b600080600060608486031215610fbb57600080fd5b8351610fc681610dae565b602085015160409095015190969495509392505050565b60ff82811682821603908111156105c8576105c8610e8c565b600181815b8085111561103157816000190482111561101757611017610e8c565b8085161561102457918102915b93841c9390800290610ffb565b509250929050565b600082611048575060016105c8565b81611055575060006105c8565b816001811461106b576002811461107557611091565b60019150506105c8565b60ff84111561108657611086610e8c565b50506001821b6105c8565b5060208310610133831016604e8410600b84101617156110b4575081810a6105c8565b6110be8383610ff6565b80600019048211156110d2576110d2610e8c565b029392505050565b600061098560ff841683611039565b80820260008212600160ff1b8414161561110557611105610e8c565b81810583148215176105c8576105c8610e8c565b60008261113657634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561115057611150610e8c565b500590565b6001600160501b0382811682821603908082111561117557611175610e8c565b5092915050565b60408152600061118f6040830185610eef565b90506001600160501b03831660208301529392505050565b60006001600160501b038083168181036111c3576111c3610e8c565b600101939250505056fea2646970667358221220118ad657518d5c4a3385f25c97ea62cae7b6893002200743ee1886def38211d564736f6c63430008110033a26469706673582212200d1b11783969f3f8e9b08893f3025e4452bc5b3ad6521351d8572ce27093ac4e64736f6c63430008110033","sourceMap":"1578:1212:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;464:38:45;;;;;;;;160:25:65;;;148:2;133:18;464:38:45;;;;;;;;508:33;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;654:32:65;;;636:51;;624:2;609:18;508:33:45;490:203:65;1824:101:14;;;:::i;:::-;;1201:85;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;1201:85;;1398:188:45;;;;;;:::i;:::-;;:::i;2456:332:49:-;;;;;;:::i;:::-;;:::i;1641:51::-;;;;;2074:198:14;;;;;;:::i;:::-;;:::i;508:33:45:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;508:33:45;;-1:-1:-1;508:33:45;:::o;1824:101:14:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;2456:332:49:-;2548:12;2604:6;2612;2620:16;2638:10;2650:13;2665:6;2673:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2673:7:49;2587:94;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2572:110:49;-1:-1:-1;2728:10:49;-1:-1:-1;;;;;2697:84:49;;2710:10;2697:84;2740:13;2755:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2755:7:49;2764:16;2697:84;;;;;;;;:::i;:::-;;;;;;;;2456:332;;;;;:::o;2074:198:14:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:14;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:14;;6609:2:65;2154:73:14::1;::::0;::::1;6591:21:65::0;6648:2;6628:18;;;6621:30;6687:34;6667:18;;;6660:62;-1:-1:-1;;;6738:18:65;;;6731:36;6784:19;;2154:73:14::1;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;7016:2:65;1414:68:14;;;6998:21:65;;;7035:18;;;7028:30;7094:34;7074:18;;;7067:62;7146:18;;1414:68:14;6814:356:65;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;196:180:65;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:65;;196:180;-1:-1:-1;196:180:65:o;698:127::-;759:10;754:3;750:20;747:1;740:31;790:4;787:1;780:15;814:4;811:1;804:15;830:275;901:2;895:9;966:2;947:13;;-1:-1:-1;;943:27:65;931:40;;1001:18;986:34;;1022:22;;;983:62;980:88;;;1048:18;;:::i;:::-;1084:2;1077:22;830:275;;-1:-1:-1;830:275:65:o;1110:173::-;1178:20;;-1:-1:-1;;;;;1227:31:65;;1217:42;;1207:70;;1273:1;1270;1263:12;1207:70;1110:173;;;:::o;1288:952::-;1372:6;1403:2;1446;1434:9;1425:7;1421:23;1417:32;1414:52;;;1462:1;1459;1452:12;1414:52;1502:9;1489:23;1531:18;1572:2;1564:6;1561:14;1558:34;;;1588:1;1585;1578:12;1558:34;1626:6;1615:9;1611:22;1601:32;;1671:7;1664:4;1660:2;1656:13;1652:27;1642:55;;1693:1;1690;1683:12;1642:55;1729:2;1716:16;1751:2;1747;1744:10;1741:36;;;1757:18;;:::i;:::-;1803:2;1800:1;1796:10;1786:20;;1826:28;1850:2;1846;1842:11;1826:28;:::i;:::-;1888:15;;;1958:11;;;1954:20;;;1919:12;;;;1986:19;;;1983:39;;;2018:1;2015;2008:12;1983:39;2042:11;;;;2062:148;2078:6;2073:3;2070:15;2062:148;;;2144:23;2163:3;2144:23;:::i;:::-;2132:36;;2095:12;;;;2188;;;;2062:148;;;2229:5;1288:952;-1:-1:-1;;;;;;;;1288:952:65:o;2245:902::-;2332:6;2340;2348;2401:2;2389:9;2380:7;2376:23;2372:32;2369:52;;;2417:1;2414;2407:12;2369:52;2457:9;2444:23;2486:18;2527:2;2519:6;2516:14;2513:34;;;2543:1;2540;2533:12;2513:34;2581:6;2570:9;2566:22;2556:32;;2626:7;2619:4;2615:2;2611:13;2607:27;2597:55;;2648:1;2645;2638:12;2597:55;2684:2;2671:16;2706:4;2729:2;2725;2722:10;2719:36;;;2735:18;;:::i;:::-;2777:53;2820:2;2801:13;;-1:-1:-1;;2797:27:65;2793:36;;2777:53;:::i;:::-;2764:66;;2853:2;2846:5;2839:17;2893:7;2888:2;2883;2879;2875:11;2871:20;2868:33;2865:53;;;2914:1;2911;2904:12;2865:53;2969:2;2964;2960;2956:11;2951:2;2944:5;2940:14;2927:45;3013:1;2992:14;;;2988:23;;2981:34;;;;2996:5;;3071:18;;;3058:32;;-1:-1:-1;3137:2:65;3122:18;;;3109:32;;2245:902;-1:-1:-1;;;;2245:902:65:o;3397:186::-;3456:6;3509:2;3497:9;3488:7;3484:23;3480:32;3477:52;;;3525:1;3522;3515:12;3477:52;3548:29;3567:9;3548:29;:::i;:::-;3538:39;3397:186;-1:-1:-1;;;3397:186:65:o;3588:658::-;3759:2;3811:21;;;3881:13;;3784:18;;;3903:22;;;3730:4;;3759:2;3982:15;;;;3956:2;3941:18;;;3730:4;4025:195;4039:6;4036:1;4033:13;4025:195;;;4104:13;;-1:-1:-1;;;;;4100:39:65;4088:52;;4195:15;;;;4160:12;;;;4136:1;4054:9;4025:195;;;-1:-1:-1;4237:3:65;;3588:658;-1:-1:-1;;;;;;3588:658:65:o;4251:495::-;4312:3;4350:5;4344:12;4377:6;4372:3;4365:19;4403:4;4432:2;4427:3;4423:12;4416:19;;4454:5;4451:1;4444:16;4496:2;4493:1;4483:16;4517:1;4527:194;4541:6;4538:1;4535:13;4527:194;;;4606:13;;-1:-1:-1;;;;;4602:39:65;4590:52;;4662:12;;;;4638:1;4697:14;;;;4556:9;4527:194;;;-1:-1:-1;4737:3:65;;4251:495;-1:-1:-1;;;;;4251:495:65:o;4751:1212::-;5181:1;5177;5172:3;5168:11;5164:19;5156:6;5152:32;5141:9;5134:51;5115:4;5204:2;5242:3;5237:2;5226:9;5222:18;5215:31;5275:6;5269:13;5319:6;5313:3;5302:9;5298:19;5291:35;5344:1;5354:141;5368:6;5365:1;5362:13;5354:141;;;5464:14;;;5460:23;;5454:30;5429:17;;;5448:3;5425:27;5418:67;5383:10;;5354:141;;;5358:3;5514;5504:13;;5566:1;5561:2;5552:6;5541:9;5537:22;5533:31;5526:42;5627:2;5623:7;5618:2;5610:6;5606:15;5602:29;5591:9;5587:45;5577:55;;5692:2;5680:9;5676:2;5672:18;5668:27;5663:2;5652:9;5648:18;5641:55;5713:57;5766:2;5762;5758:11;5750:6;5713:57;:::i;:::-;5705:65;;;;5806:6;5801:2;5790:9;5786:18;5779:34;5850:6;5844:3;5833:9;5829:19;5822:35;5894:6;5888:3;5877:9;5873:19;5866:35;5910:47;5952:3;5941:9;5937:19;5929:6;-1:-1:-1;;;;;447:31:65;435:44;;381:104;5968:434;6182:25;;;-1:-1:-1;;;;;6243:32:65;;6238:2;6223:18;;6216:60;6312:2;6307;6292:18;;6285:30;;;-1:-1:-1;;6332:64:65;;6377:18;;6369:6;6332:64;:::i;:::-;6324:72;5968:434;-1:-1:-1;;;;;5968:434:65:o","linkReferences":{},"immutableReferences":{"45786":[{"start":158,"length":32},{"start":598,"length":32},{"start":760,"length":32}],"46254":[{"start":341,"length":32},{"start":561,"length":32}]}},"methodIdentifiers":{"MAX_TRAVERSAL()":"58781576","SOURCE()":"f230b4c2","create(string,uint256,uint256)":"cda3c499","defaultUnlockers(uint256)":"5c681d1e","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setDefaultUnlockers(address[])":"a9d14058","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAggregatorV3SourceCoinbase\",\"name\":\"_source\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_maxTraversal\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"DefaultUnlockersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxTraversal\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"unlockers\",\"type\":\"address[]\"}],\"name\":\"OvalDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_TRAVERSAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SOURCE\",\"outputs\":[{\"internalType\":\"contract IAggregatorV3SourceCoinbase\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"ticker\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAge\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"defaultUnlockers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"setDefaultUnlockers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the best factory for most use cases, but there are other variants that may be needed if different mutability choices are desired.\",\"kind\":\"dev\",\"methods\":{\"create(string,uint256,uint256)\":{\"params\":{\"lockWindow\":\"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.\",\"maxAge\":\"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided.\",\"ticker\":\"the Coinbase oracle's ticker.\"},\"returns\":{\"oval\":\"deployed oval address.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultUnlockers(address[])\":{\"details\":\"This and the owner, itself, is the only mutable portion of this factory.\",\"params\":{\"_defaultUnlockers\":\"default unlockers that will be used to instantiate new Oval instances.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"StandardCoinbaseFactory is the recommended factory for use cases that want a Coinbase source and Chainlink interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(string,uint256,uint256)\":{\"notice\":\"Creates the Coinbase Oval instance.\"},\"setDefaultUnlockers(address[])\":{\"notice\":\"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/factories/StandardCoinbaseFactory.sol\":\"StandardCoinbaseFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/redstone-contracts/lib/@chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/\",\":@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":redstone-contracts/=lib/redstone-contracts/src/\",\":redstone-oracle/=lib/redstone-contracts/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"src/DiamondRootOval.sol\":{\"keccak256\":\"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc\",\"dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL\"]},\"src/Oval.sol\":{\"keccak256\":\"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449\",\"dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM\"]},\"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol\":{\"keccak256\":\"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0\",\"dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE\"]},\"src/adapters/lib/DecimalLib.sol\":{\"keccak256\":\"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2\",\"dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT\"]},\"src/adapters/source-adapters/CoinbaseSourceAdapter.sol\":{\"keccak256\":\"0x7172bef20da50a4d9e0526ccb7a9c56e202e7238527169e983f2d351e309fa67\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://553ee19da688e7c382a9096320126f90d1a755c192fbcc466d217a3a87cf92b9\",\"dweb:/ipfs/QmTX9Memty7XSJpwDorLnUde1keiU5SFABGVjTt4cxzAfe\"]},\"src/controllers/MutableUnlockersController.sol\":{\"keccak256\":\"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f\",\"dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob\"]},\"src/factories/BaseFactory.sol\":{\"keccak256\":\"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19\",\"dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq\"]},\"src/factories/StandardCoinbaseFactory.sol\":{\"keccak256\":\"0x8318ab3bbea3ea2563fc7e662b86c16006bb836fc56c457076ddb081ecbc0906\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a5c9f631e4aca4211c6ef42dd94b2dcb83ac7e0d10b7faa81bce6a1eb48c8f07\",\"dweb:/ipfs/QmaHHPtorCdDX2CBoeC5FGVpUPwc46oBkJfywwbg9qBEM5\"]},\"src/interfaces/IBaseController.sol\":{\"keccak256\":\"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc\",\"dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju\"]},\"src/interfaces/IBaseOracleAdapter.sol\":{\"keccak256\":\"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be\",\"dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP\"]},\"src/interfaces/IOval.sol\":{\"keccak256\":\"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953\",\"dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H\"]},\"src/interfaces/chainlink/IAggregatorV3.sol\":{\"keccak256\":\"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1\",\"dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G\"]},\"src/interfaces/coinbase/IAggregatorV3SourceCoinbase.sol\":{\"keccak256\":\"0x8bca465d65974641437e07953879c4c7c141ffe3c720c040cd91406e390ecf20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65cdfc3b14bb6713f03a931d11d90a199a5ae3bda6f41a9a363380323111208c\",\"dweb:/ipfs/Qmd3tVZ5Q9EHigQq85M2qQTmHmRng9tTcYi2hDYFpnZdYA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IAggregatorV3SourceCoinbase","name":"_source","type":"address"},{"internalType":"uint256","name":"_maxTraversal","type":"uint256"},{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address[]","name":"defaultUnlockers","type":"address[]","indexed":false}],"type":"event","name":"DefaultUnlockersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"deployer","type":"address","indexed":true},{"internalType":"address","name":"oval","type":"address","indexed":true},{"internalType":"uint256","name":"lockWindow","type":"uint256","indexed":true},{"internalType":"uint256","name":"maxTraversal","type":"uint256","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"address[]","name":"unlockers","type":"address[]","indexed":false}],"type":"event","name":"OvalDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_TRAVERSAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SOURCE","outputs":[{"internalType":"contract IAggregatorV3SourceCoinbase","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"ticker","type":"string"},{"internalType":"uint256","name":"lockWindow","type":"uint256"},{"internalType":"uint256","name":"maxAge","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"oval","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"defaultUnlockers","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultUnlockers"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"create(string,uint256,uint256)":{"params":{"lockWindow":"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.","maxAge":"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided.","ticker":"the Coinbase oracle's ticker."},"returns":{"oval":"deployed oval address."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultUnlockers(address[])":{"details":"This and the owner, itself, is the only mutable portion of this factory.","params":{"_defaultUnlockers":"default unlockers that will be used to instantiate new Oval instances."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"create(string,uint256,uint256)":{"notice":"Creates the Coinbase Oval instance."},"setDefaultUnlockers(address[])":{"notice":"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract."}},"version":1}},"settings":{"remappings":["@chainlink/=lib/redstone-contracts/lib/@chainlink/","@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/","@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","redstone-contracts/=lib/redstone-contracts/src/","redstone-oracle/=lib/redstone-contracts/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/factories/StandardCoinbaseFactory.sol":"StandardCoinbaseFactory"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218","urls":["bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32","dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"src/DiamondRootOval.sol":{"keccak256":"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1","urls":["bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc","dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL"],"license":"BUSL-1.1"},"src/Oval.sol":{"keccak256":"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf","urls":["bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449","dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM"],"license":"BUSL-1.1"},"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol":{"keccak256":"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b","urls":["bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0","dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE"],"license":"BUSL-1.1"},"src/adapters/lib/DecimalLib.sol":{"keccak256":"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2","urls":["bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2","dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT"],"license":"BUSL-1.1"},"src/adapters/source-adapters/CoinbaseSourceAdapter.sol":{"keccak256":"0x7172bef20da50a4d9e0526ccb7a9c56e202e7238527169e983f2d351e309fa67","urls":["bzz-raw://553ee19da688e7c382a9096320126f90d1a755c192fbcc466d217a3a87cf92b9","dweb:/ipfs/QmTX9Memty7XSJpwDorLnUde1keiU5SFABGVjTt4cxzAfe"],"license":"BUSL-1.1"},"src/controllers/MutableUnlockersController.sol":{"keccak256":"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16","urls":["bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f","dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob"],"license":"BUSL-1.1"},"src/factories/BaseFactory.sol":{"keccak256":"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6","urls":["bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19","dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq"],"license":"BUSL-1.1"},"src/factories/StandardCoinbaseFactory.sol":{"keccak256":"0x8318ab3bbea3ea2563fc7e662b86c16006bb836fc56c457076ddb081ecbc0906","urls":["bzz-raw://a5c9f631e4aca4211c6ef42dd94b2dcb83ac7e0d10b7faa81bce6a1eb48c8f07","dweb:/ipfs/QmaHHPtorCdDX2CBoeC5FGVpUPwc46oBkJfywwbg9qBEM5"],"license":"BUSL-1.1"},"src/interfaces/IBaseController.sol":{"keccak256":"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5","urls":["bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc","dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju"],"license":"MIT"},"src/interfaces/IBaseOracleAdapter.sol":{"keccak256":"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9","urls":["bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be","dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP"],"license":"MIT"},"src/interfaces/IOval.sol":{"keccak256":"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa","urls":["bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953","dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H"],"license":"MIT"},"src/interfaces/chainlink/IAggregatorV3.sol":{"keccak256":"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d","urls":["bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1","dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G"],"license":"MIT"},"src/interfaces/coinbase/IAggregatorV3SourceCoinbase.sol":{"keccak256":"0x8bca465d65974641437e07953879c4c7c141ffe3c720c040cd91406e390ecf20","urls":["bzz-raw://65cdfc3b14bb6713f03a931d11d90a199a5ae3bda6f41a9a363380323111208c","dweb:/ipfs/Qmd3tVZ5Q9EHigQq85M2qQTmHmRng9tTcYi2hDYFpnZdYA"],"license":"MIT"}},"version":1},"id":49} \ No newline at end of file diff --git a/src/abi/StandardPythFactory.json b/src/abi/StandardPythFactory.json new file mode 100644 index 0000000..caccada --- /dev/null +++ b/src/abi/StandardPythFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_pyth","type":"address","internalType":"contract IPyth"},{"name":"_maxTraversal","type":"uint256","internalType":"uint256"},{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_TRAVERSAL","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PYTH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPyth"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"pythPriceId","type":"bytes32","internalType":"bytes32"},{"name":"lockWindow","type":"uint256","internalType":"uint256"},{"name":"maxAge","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"oval","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultUnlockers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultUnlockers","inputs":[{"name":"_defaultUnlockers","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultUnlockersSet","inputs":[{"name":"defaultUnlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OvalDeployed","inputs":[{"name":"deployer","type":"address","indexed":true,"internalType":"address"},{"name":"oval","type":"address","indexed":true,"internalType":"address"},{"name":"lockWindow","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"maxTraversal","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"unlockers","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b506040516200247538038062002475833981016040819052620000349162000289565b81816200004133620000bd565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a7816200010d565b505050506001600160a01b031660a052620003cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200011762000169565b80516200012c906001906020840190620001c7565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015e91906200037d565b60405180910390a150565b6000546001600160a01b03163314620001c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b8280548282559060005260206000209081019282156200021f579160200282015b828111156200021f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001e8565b506200022d92915062000231565b5090565b5b808211156200022d576000815560010162000232565b6001600160a01b03811681146200025e57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b8051620002848162000248565b919050565b6000806000606084860312156200029f57600080fd5b8351620002ac8162000248565b60208581015160408701519295509350906001600160401b0380821115620002d357600080fd5b818701915087601f830112620002e857600080fd5b815181811115620002fd57620002fd62000261565b8060051b604051601f19603f8301168101818110858211171562000325576200032562000261565b60405291825284820192508381018501918a8311156200034457600080fd5b938501935b828510156200036d576200035d8562000277565b8452938501939285019262000349565b8096505050505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015620003c05783516001600160a01b03168352928401929184019160010162000399565b50909695505050505050565b60805160a05161206f62000406600039600081816101090152610231015260008181609e0152818161025601526102f8015261206f6000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c80638da5cb5b11620000625780638da5cb5b1462000137578063a9d140581462000149578063b5f8c36b1462000160578063f2fde38b146200017757600080fd5b80635878157614620000985780635c681d1e14620000d357806367e406d51462000103578063715018a6146200012b575b600080fd5b620000c07f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b620000ea620000e43660046200050a565b6200018e565b6040516001600160a01b039091168152602001620000ca565b620000ea7f000000000000000000000000000000000000000000000000000000000000000081565b62000135620001b9565b005b6000546001600160a01b0316620000ea565b620001356200015a36600462000557565b620001d1565b620000ea620001713660046200062a565b6200022d565b620001356200018836600462000657565b6200034c565b600181815481106200019f57600080fd5b6000918252602090912001546001600160a01b0316905081565b620001c3620003cf565b620001cf60006200042b565b565b620001db620003cf565b8051620001f09060019060208401906200047b565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200022291906200067c565b60405180910390a150565b60007f0000000000000000000000000000000000000000000000000000000000000000846001857f000000000000000000000000000000000000000000000000000000000000000086620002896000546001600160a01b031690565b6040516200029790620004e5565b620002a9979695949392919062000716565b604051809103906000f080158015620002c6573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f00000000000000000000000000000000000000000000000000000000000000006200032a6000546001600160a01b031690565b60016040516200033d9392919062000769565b60405180910390a49392505050565b62000356620003cf565b6001600160a01b038116620003c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620003cc816200042b565b50565b6000546001600160a01b03163314620001cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003b8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215620004d3579160200282015b82811115620004d357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200049c565b50620004e1929150620004f3565b5090565b61189b806200079f83390190565b5b80821115620004e15760008155600101620004f4565b6000602082840312156200051d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146200055257600080fd5b919050565b600060208083850312156200056b57600080fd5b823567ffffffffffffffff808211156200058457600080fd5b818501915085601f8301126200059957600080fd5b813581811115620005ae57620005ae62000524565b8060051b604051601f19603f83011681018181108582111715620005d657620005d662000524565b604052918252848201925083810185019188831115620005f557600080fd5b938501935b828510156200061e576200060e856200053a565b84529385019392850192620005fa565b98975050505050505050565b6000806000606084860312156200064057600080fd5b505081359360208301359350604090920135919050565b6000602082840312156200066a57600080fd5b62000675826200053a565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015620006bf5783516001600160a01b03168352928401929184019160010162000698565b50909695505050505050565b6000815480845260208085019450836000528060002060005b838110156200070b5781546001600160a01b031687529582019560019182019101620006e4565b509495945050505050565b600060018060a01b03808a16835288602084015260e060408401526200074060e0840189620006cb565b91508660608401528560808401528460a084015280841660c08401525098975050505050505050565b8381526001600160a01b03831660208201526060604082018190526000906200079590830184620006cb565b9594505050505056fe6101406040523480156200001257600080fd5b506040516200189b3803806200189b833981016040819052620000359162000422565b6012878786868987620000483362000263565b8381116200009d5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ef5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000094565b608084905260a083905260c081905260005b82518110156200014f576200013a83828151811062000124576200012462000546565b60200260200101516001620002b360201b60201c565b8062000146816200055c565b91505062000101565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a25050506001600160a01b03831660e08190526101008390526040518392507f352ffb84cbc39305b8921ad0af26cbf5ecd6bb8034fe313ce472d107f5650f6290600090a3505060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002568162000263565b5050505050505062000584565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002bd62000383565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036200032f5760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000094565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620003df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000094565b565b6001600160a01b0381168114620003f757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b80516200041d81620003e1565b919050565b600080600080600080600060e0888a0312156200043e57600080fd5b87516200044b81620003e1565b60208981015160408b01519299509750906001600160401b03808211156200047257600080fd5b818b0191508b601f8301126200048757600080fd5b8151818111156200049c576200049c620003fa565b8060051b604051601f19603f83011681018181108582111715620004c457620004c4620003fa565b60405291825284820192508381018501918e831115620004e357600080fd5b938501935b828510156200050c57620004fc8562000410565b84529385019392850192620004e8565b809a50505050505050606088015193506080880151925060a088015191506200053860c0890162000410565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b6000600182016200057d57634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051611288620006136000396000818161024f01528181610684015281816108b10152610b040152600081816101c001526105850152600081816102df01526105ba0152600081816103230152610d030152600081816103d701526104b10152600081816102980152818161047e0152610a8e01526112886000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a5c38b3d11610097578063d6565a2d11610071578063d6565a2d1461042a578063f2fde38b1461043d578063f6e1d17a14610450578063feaf968c1461046357600080fd5b8063a5c38b3d146103fb578063cb53b08d14610404578063d3fff0f61461041757600080fd5b8063715018a6146103475780637292eb691461034f5780638205bf6a146103725780638da5cb5b1461037a5780639a6fc8f51461038b578063a3c04476146103d557600080fd5b806332c6534b1161014b57806350d25bcd1161012557806350d25bcd146102d257806363a890a5146102da5780636666d37214610319578063687043c51461032157600080fd5b806332c6534b146102835780633376f53a146102965780633d6ba578146102bc57600080fd5b80630125554b146101935780630cb0f4fa146101bb57806313862364146101f0578063172b09f9146101fa57806324a419f41461022d578063313ce5671461024a575b600080fd5b61019b61046b565b604080519384526020840192909252908201526060015b60405180910390f35b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101b2565b6101f86104e0565b005b61021d610208366004610e8d565b60026020526000908152604090205460ff1681565b60405190151581526020016101b2565b610235610576565b604080519283526020830191909152016101b2565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101b2565b61021d610291366004610ea8565b61064a565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6102356102ca366004610ed2565b506000908190565b6101e261066d565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b2565b6101f86106ae565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6101f86107d7565b6103576107eb565b604080518251815260209283015192810192909252016101b2565b6101e2610871565b6000546001600160a01b0316610301565b61039e610399366004610eeb565b610884565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016101b2565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6101e260015481565b61019b610412366004610f17565b6108e8565b6101f8610425366004610f39565b610910565b610235610438366004610ed2565b6109d3565b6101f861044b366004610e8d565b610a01565b61023561045e366004610ed2565b610a7a565b61039e610ad4565b60008060006104d56104af6001546104a07f000000000000000000000000000000000000000000000000000000000000000090565b6104aa9042610f8b565b610b3c565b7f00000000000000000000000000000000000000000000000000000000000000006108e8565b925092509250909192565b6104ec3360015461064a565b61053d5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b6105456106ae565b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6040516396834ad360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152600090819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396834ad390602401608060405180830381865afa158015610601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106259190610fc8565b905061063c816000015160070b8260400151610b54565b816060015192509250509091565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b60008061067861046b565b505090506106a88160127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b91505090565b6000806106b9610576565b6040805180820190915282815260208101829052919350915060008290036106e057505050565b60035480158015906107235750602082015160036106ff600184610f8b565b8154811061070f5761070f611058565b906000526020600020906002020160010154145b1561072e5750505050565b60038054600181018255600091909152825160029091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810182905560208401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c9091018190556040517ff500358c8d5c04faf9e5b933d49e928da38afad4ff748ca6cd85428485caa508906107c99085815260200190565b60405180910390a350505050565b6107df610bfd565b6107e96000610c57565b565b604080518082019091526000808252602082015260035415610859576003805461081790600190610f8b565b8154811061082757610827611058565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905090565b50604080518082019091526000808252602082015290565b60008061087c61046b565b509392505050565b60008060008060008060006108a48869ffffffffffffffffffff16610a7a565b91509150876108d58360127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b9099909891975087965090945092505050565b6000806000806108f88686610ca7565b80516020909101519097909650600195509350505050565b610918610bfd565b6001600160a01b03821660009081526002602052604090205481151560ff90911615150361097f5760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b6044820152606401610534565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600381815481106109e357600080fd5b60009182526020909120600290910201805460019091015490915082565b610a09610bfd565b6001600160a01b038116610a6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610534565b610a7781610c57565b50565b6001546000908190819081908190610ab2907f00000000000000000000000000000000000000000000000000000000000000006104a0565b9050808211610ac657509094909350915050565b506000958695509350505050565b600080600080600080600080610ae861046b565b9250925092506000610af982610d47565b905080610b288560127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b909a90995092975087965094509092505050565b6000818311610b4b5781610b4d565b825b9392505050565b6000808260030b13610b7b57610b7483610b6d8461106e565b6012610b8c565b9050610667565b610b74836000610b8c856012611091565b60008160ff168360ff1603610ba2575082610b4d565b8160ff168360ff161015610bd657610bba83836110aa565b610bc590600a6111a7565b610bcf90856111b6565b9050610b4d565b610be082846110aa565b610beb90600a6111a7565b610bf590856111e6565b949350505050565b6000546001600160a01b031633146107e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610534565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820190915260008082526020820152600080610cc6610576565b60408051808201909152828152602081018290529193509150858211610cf0579250610667915050565b6000610cfc8787610db6565b9050610d287f000000000000000000000000000000000000000000000000000000000000000042610f8b565b816020015110610d3d57935061066792505050565b5095945050505050565b600069ffffffffffffffffffff821115610db25760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b6064820152608401610534565b5090565b604080518082019091526000808252602082015260408051808201909152600080825260208201526003546000905b8482108015610df45750600081115b15610e675780610e0381611222565b91505060038181548110610e1957610e19611058565b600091825260209182902060408051808201909152600290920201805482526001015491810182905293508610610e5557829350505050610667565b81610e5f81611239565b925050610de5565b5090949350505050565b80356001600160a01b0381168114610e8857600080fd5b919050565b600060208284031215610e9f57600080fd5b610b4d82610e71565b60008060408385031215610ebb57600080fd5b610ec483610e71565b946020939093013593505050565b600060208284031215610ee457600080fd5b5035919050565b600060208284031215610efd57600080fd5b813569ffffffffffffffffffff81168114610b4d57600080fd5b60008060408385031215610f2a57600080fd5b50508035926020909101359150565b60008060408385031215610f4c57600080fd5b610f5583610e71565b915060208301358015158114610f6a57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066757610667610f75565b805167ffffffffffffffff81168114610e8857600080fd5b8051600381900b8114610e8857600080fd5b600060808284031215610fda57600080fd5b6040516080810181811067ffffffffffffffff8211171561100b57634e487b7160e01b600052604160045260246000fd5b6040528251600781900b811461102057600080fd5b815261102e60208401610f9e565b602082015261103f60408401610fb6565b6040820152606083015160608201528091505092915050565b634e487b7160e01b600052603260045260246000fd5b60008160030b637fffffff19810361108857611088610f75565b60000392915050565b60ff818116838216019081111561066757610667610f75565b60ff828116828216039081111561066757610667610f75565b600181815b808511156110fe5781600019048211156110e4576110e4610f75565b808516156110f157918102915b93841c93908002906110c8565b509250929050565b60008261111557506001610667565b8161112257506000610667565b816001811461113857600281146111425761115e565b6001915050610667565b60ff84111561115357611153610f75565b50506001821b610667565b5060208310610133831016604e8410600b8410161715611181575081810a610667565b61118b83836110c3565b806000190482111561119f5761119f610f75565b029392505050565b6000610b4d60ff841683611106565b80820260008212600160ff1b841416156111d2576111d2610f75565b818105831482151761066757610667610f75565b60008261120357634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561121d5761121d610f75565b500590565b60008161123157611231610f75565b506000190190565b60006001820161124b5761124b610f75565b506001019056fea2646970667358221220662f7349fbc887eb9f161c891dd25d33d52ca8972b31ab24bae686207dea5a5b64736f6c63430008110033a2646970667358221220dfead5361a611dc3d5db7724f56838800d56fa4c22436670a9c438451b33be6664736f6c63430008110033","sourceMap":"1625:1144:50:-:0;;;1718:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1822:13;1837:17;936:32:14;719:10:18;936:18:14;:32::i;:::-;925:1:45;909:13;:17;901:55;;;;-1:-1:-1;;;901:55:45;;1986:2:65;901:55:45;;;1968:21:65;2025:2;2005:18;;;1998:30;2064:27;2044:18;;;2037:55;2109:18;;901:55:45;;;;;;;;;967:29;;;;1006:38;1026:17;1006:19;:38::i;:::-;-1:-1:-1;;;;;;;;;1870:12:50::1;;::::0;1625:1144;;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;1359:130:14:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;3003:2:65;1414:68:14;;;2985:21:65;;;3022:18;;;3015:30;3081:34;3061:18;;;3054:62;3133:18;;1414:68:14;2801:356:65;1414:68:14;1359:130::o;1625:1144:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1625:1144:50;-1:-1:-1;;;;;1625:1144:50;;;;;;;;;;;-1:-1:-1;1625:1144:50;;;;;;;-1:-1:-1;1625:1144:50;;;-1:-1:-1;1625:1144:50;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:138:65;-1:-1:-1;;;;;96:31:65;;86:42;;76:70;;142:1;139;132:12;76:70;14:138;:::o;157:127::-;218:10;213:3;209:20;206:1;199:31;249:4;246:1;239:15;273:4;270:1;263:15;289:145;368:13;;390:38;368:13;390:38;:::i;:::-;289:145;;;:::o;439:1340::-;567:6;575;583;636:2;624:9;615:7;611:23;607:32;604:52;;;652:1;649;642:12;604:52;684:9;678:16;703:38;735:5;703:38;:::i;:::-;784:2;811:18;;;805:25;874:2;859:18;;853:25;760:5;;-1:-1:-1;805:25:65;-1:-1:-1;784:2:65;-1:-1:-1;;;;;927:14:65;;;924:34;;;954:1;951;944:12;924:34;992:6;981:9;977:22;967:32;;1037:7;1030:4;1026:2;1022:13;1018:27;1008:55;;1059:1;1056;1049:12;1008:55;1088:2;1082:9;1110:2;1106;1103:10;1100:36;;;1116:18;;:::i;:::-;1162:2;1159:1;1155:10;1194:2;1188:9;1257:2;1253:7;1248:2;1244;1240:11;1236:25;1228:6;1224:38;1312:6;1300:10;1297:22;1292:2;1280:10;1277:18;1274:46;1271:72;;;1323:18;;:::i;:::-;1359:2;1352:22;1409:18;;;1443:15;;;;-1:-1:-1;1485:11:65;;;1481:20;;;1513:19;;;1510:39;;;1545:1;1542;1535:12;1510:39;1569:11;;;;1589:159;1605:6;1600:3;1597:15;1589:159;;;1671:34;1701:3;1671:34;:::i;:::-;1659:47;;1622:12;;;;1726;;;;1589:159;;;1767:6;1757:16;;;;;;;;439:1340;;;;;:::o;2138:658::-;2309:2;2361:21;;;2431:13;;2334:18;;;2453:22;;;2280:4;;2309:2;2532:15;;;;2506:2;2491:18;;;2280:4;2575:195;2589:6;2586:1;2583:13;2575:195;;;2654:13;;-1:-1:-1;;;;;2650:39:65;2638:52;;2745:15;;;;2710:12;;;;2686:1;2604:9;2575:195;;;-1:-1:-1;2787:3:65;;2138:658;-1:-1:-1;;;;;;2138:658:65:o;2801:356::-;1625:1144:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000935760003560e01c80638da5cb5b11620000625780638da5cb5b1462000137578063a9d140581462000149578063b5f8c36b1462000160578063f2fde38b146200017757600080fd5b80635878157614620000985780635c681d1e14620000d357806367e406d51462000103578063715018a6146200012b575b600080fd5b620000c07f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b620000ea620000e43660046200050a565b6200018e565b6040516001600160a01b039091168152602001620000ca565b620000ea7f000000000000000000000000000000000000000000000000000000000000000081565b62000135620001b9565b005b6000546001600160a01b0316620000ea565b620001356200015a36600462000557565b620001d1565b620000ea620001713660046200062a565b6200022d565b620001356200018836600462000657565b6200034c565b600181815481106200019f57600080fd5b6000918252602090912001546001600160a01b0316905081565b620001c3620003cf565b620001cf60006200042b565b565b620001db620003cf565b8051620001f09060019060208401906200047b565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200022291906200067c565b60405180910390a150565b60007f0000000000000000000000000000000000000000000000000000000000000000846001857f000000000000000000000000000000000000000000000000000000000000000086620002896000546001600160a01b031690565b6040516200029790620004e5565b620002a9979695949392919062000716565b604051809103906000f080158015620002c6573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f00000000000000000000000000000000000000000000000000000000000000006200032a6000546001600160a01b031690565b60016040516200033d9392919062000769565b60405180910390a49392505050565b62000356620003cf565b6001600160a01b038116620003c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620003cc816200042b565b50565b6000546001600160a01b03163314620001cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003b8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215620004d3579160200282015b82811115620004d357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200049c565b50620004e1929150620004f3565b5090565b61189b806200079f83390190565b5b80821115620004e15760008155600101620004f4565b6000602082840312156200051d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146200055257600080fd5b919050565b600060208083850312156200056b57600080fd5b823567ffffffffffffffff808211156200058457600080fd5b818501915085601f8301126200059957600080fd5b813581811115620005ae57620005ae62000524565b8060051b604051601f19603f83011681018181108582111715620005d657620005d662000524565b604052918252848201925083810185019188831115620005f557600080fd5b938501935b828510156200061e576200060e856200053a565b84529385019392850192620005fa565b98975050505050505050565b6000806000606084860312156200064057600080fd5b505081359360208301359350604090920135919050565b6000602082840312156200066a57600080fd5b62000675826200053a565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015620006bf5783516001600160a01b03168352928401929184019160010162000698565b50909695505050505050565b6000815480845260208085019450836000528060002060005b838110156200070b5781546001600160a01b031687529582019560019182019101620006e4565b509495945050505050565b600060018060a01b03808a16835288602084015260e060408401526200074060e0840189620006cb565b91508660608401528560808401528460a084015280841660c08401525098975050505050505050565b8381526001600160a01b03831660208201526060604082018190526000906200079590830184620006cb565b9594505050505056fe6101406040523480156200001257600080fd5b506040516200189b3803806200189b833981016040819052620000359162000422565b6012878786868987620000483362000263565b8381116200009d5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ef5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000094565b608084905260a083905260c081905260005b82518110156200014f576200013a83828151811062000124576200012462000546565b60200260200101516001620002b360201b60201c565b8062000146816200055c565b91505062000101565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a25050506001600160a01b03831660e08190526101008390526040518392507f352ffb84cbc39305b8921ad0af26cbf5ecd6bb8034fe313ce472d107f5650f6290600090a3505060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002568162000263565b5050505050505062000584565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002bd62000383565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036200032f5760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000094565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620003df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000094565b565b6001600160a01b0381168114620003f757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b80516200041d81620003e1565b919050565b600080600080600080600060e0888a0312156200043e57600080fd5b87516200044b81620003e1565b60208981015160408b01519299509750906001600160401b03808211156200047257600080fd5b818b0191508b601f8301126200048757600080fd5b8151818111156200049c576200049c620003fa565b8060051b604051601f19603f83011681018181108582111715620004c457620004c4620003fa565b60405291825284820192508381018501918e831115620004e357600080fd5b938501935b828510156200050c57620004fc8562000410565b84529385019392850192620004e8565b809a50505050505050606088015193506080880151925060a088015191506200053860c0890162000410565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b6000600182016200057d57634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051611288620006136000396000818161024f01528181610684015281816108b10152610b040152600081816101c001526105850152600081816102df01526105ba0152600081816103230152610d030152600081816103d701526104b10152600081816102980152818161047e0152610a8e01526112886000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a5c38b3d11610097578063d6565a2d11610071578063d6565a2d1461042a578063f2fde38b1461043d578063f6e1d17a14610450578063feaf968c1461046357600080fd5b8063a5c38b3d146103fb578063cb53b08d14610404578063d3fff0f61461041757600080fd5b8063715018a6146103475780637292eb691461034f5780638205bf6a146103725780638da5cb5b1461037a5780639a6fc8f51461038b578063a3c04476146103d557600080fd5b806332c6534b1161014b57806350d25bcd1161012557806350d25bcd146102d257806363a890a5146102da5780636666d37214610319578063687043c51461032157600080fd5b806332c6534b146102835780633376f53a146102965780633d6ba578146102bc57600080fd5b80630125554b146101935780630cb0f4fa146101bb57806313862364146101f0578063172b09f9146101fa57806324a419f41461022d578063313ce5671461024a575b600080fd5b61019b61046b565b604080519384526020840192909252908201526060015b60405180910390f35b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101b2565b6101f86104e0565b005b61021d610208366004610e8d565b60026020526000908152604090205460ff1681565b60405190151581526020016101b2565b610235610576565b604080519283526020830191909152016101b2565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101b2565b61021d610291366004610ea8565b61064a565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6102356102ca366004610ed2565b506000908190565b6101e261066d565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b2565b6101f86106ae565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6101f86107d7565b6103576107eb565b604080518251815260209283015192810192909252016101b2565b6101e2610871565b6000546001600160a01b0316610301565b61039e610399366004610eeb565b610884565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016101b2565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6101e260015481565b61019b610412366004610f17565b6108e8565b6101f8610425366004610f39565b610910565b610235610438366004610ed2565b6109d3565b6101f861044b366004610e8d565b610a01565b61023561045e366004610ed2565b610a7a565b61039e610ad4565b60008060006104d56104af6001546104a07f000000000000000000000000000000000000000000000000000000000000000090565b6104aa9042610f8b565b610b3c565b7f00000000000000000000000000000000000000000000000000000000000000006108e8565b925092509250909192565b6104ec3360015461064a565b61053d5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b6105456106ae565b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6040516396834ad360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152600090819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396834ad390602401608060405180830381865afa158015610601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106259190610fc8565b905061063c816000015160070b8260400151610b54565b816060015192509250509091565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b60008061067861046b565b505090506106a88160127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b91505090565b6000806106b9610576565b6040805180820190915282815260208101829052919350915060008290036106e057505050565b60035480158015906107235750602082015160036106ff600184610f8b565b8154811061070f5761070f611058565b906000526020600020906002020160010154145b1561072e5750505050565b60038054600181018255600091909152825160029091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810182905560208401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c9091018190556040517ff500358c8d5c04faf9e5b933d49e928da38afad4ff748ca6cd85428485caa508906107c99085815260200190565b60405180910390a350505050565b6107df610bfd565b6107e96000610c57565b565b604080518082019091526000808252602082015260035415610859576003805461081790600190610f8b565b8154811061082757610827611058565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905090565b50604080518082019091526000808252602082015290565b60008061087c61046b565b509392505050565b60008060008060008060006108a48869ffffffffffffffffffff16610a7a565b91509150876108d58360127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b9099909891975087965090945092505050565b6000806000806108f88686610ca7565b80516020909101519097909650600195509350505050565b610918610bfd565b6001600160a01b03821660009081526002602052604090205481151560ff90911615150361097f5760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b6044820152606401610534565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600381815481106109e357600080fd5b60009182526020909120600290910201805460019091015490915082565b610a09610bfd565b6001600160a01b038116610a6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610534565b610a7781610c57565b50565b6001546000908190819081908190610ab2907f00000000000000000000000000000000000000000000000000000000000000006104a0565b9050808211610ac657509094909350915050565b506000958695509350505050565b600080600080600080600080610ae861046b565b9250925092506000610af982610d47565b905080610b288560127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b909a90995092975087965094509092505050565b6000818311610b4b5781610b4d565b825b9392505050565b6000808260030b13610b7b57610b7483610b6d8461106e565b6012610b8c565b9050610667565b610b74836000610b8c856012611091565b60008160ff168360ff1603610ba2575082610b4d565b8160ff168360ff161015610bd657610bba83836110aa565b610bc590600a6111a7565b610bcf90856111b6565b9050610b4d565b610be082846110aa565b610beb90600a6111a7565b610bf590856111e6565b949350505050565b6000546001600160a01b031633146107e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610534565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820190915260008082526020820152600080610cc6610576565b60408051808201909152828152602081018290529193509150858211610cf0579250610667915050565b6000610cfc8787610db6565b9050610d287f000000000000000000000000000000000000000000000000000000000000000042610f8b565b816020015110610d3d57935061066792505050565b5095945050505050565b600069ffffffffffffffffffff821115610db25760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b6064820152608401610534565b5090565b604080518082019091526000808252602082015260408051808201909152600080825260208201526003546000905b8482108015610df45750600081115b15610e675780610e0381611222565b91505060038181548110610e1957610e19611058565b600091825260209182902060408051808201909152600290920201805482526001015491810182905293508610610e5557829350505050610667565b81610e5f81611239565b925050610de5565b5090949350505050565b80356001600160a01b0381168114610e8857600080fd5b919050565b600060208284031215610e9f57600080fd5b610b4d82610e71565b60008060408385031215610ebb57600080fd5b610ec483610e71565b946020939093013593505050565b600060208284031215610ee457600080fd5b5035919050565b600060208284031215610efd57600080fd5b813569ffffffffffffffffffff81168114610b4d57600080fd5b60008060408385031215610f2a57600080fd5b50508035926020909101359150565b60008060408385031215610f4c57600080fd5b610f5583610e71565b915060208301358015158114610f6a57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066757610667610f75565b805167ffffffffffffffff81168114610e8857600080fd5b8051600381900b8114610e8857600080fd5b600060808284031215610fda57600080fd5b6040516080810181811067ffffffffffffffff8211171561100b57634e487b7160e01b600052604160045260246000fd5b6040528251600781900b811461102057600080fd5b815261102e60208401610f9e565b602082015261103f60408401610fb6565b6040820152606083015160608201528091505092915050565b634e487b7160e01b600052603260045260246000fd5b60008160030b637fffffff19810361108857611088610f75565b60000392915050565b60ff818116838216019081111561066757610667610f75565b60ff828116828216039081111561066757610667610f75565b600181815b808511156110fe5781600019048211156110e4576110e4610f75565b808516156110f157918102915b93841c93908002906110c8565b509250929050565b60008261111557506001610667565b8161112257506000610667565b816001811461113857600281146111425761115e565b6001915050610667565b60ff84111561115357611153610f75565b50506001821b610667565b5060208310610133831016604e8410600b8410161715611181575081810a610667565b61118b83836110c3565b806000190482111561119f5761119f610f75565b029392505050565b6000610b4d60ff841683611106565b80820260008212600160ff1b841416156111d2576111d2610f75565b818105831482151761066757610667610f75565b60008261120357634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561121d5761121d610f75565b500590565b60008161123157611231610f75565b506000190190565b60006001820161124b5761124b610f75565b506001019056fea2646970667358221220662f7349fbc887eb9f161c891dd25d33d52ca8972b31ab24bae686207dea5a5b64736f6c63430008110033a2646970667358221220dfead5361a611dc3d5db7724f56838800d56fa4c22436670a9c438451b33be6664736f6c63430008110033","sourceMap":"1625:1144:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;464:38:45;;;;;;;;160:25:65;;;148:2;133:18;464:38:45;;;;;;;;508:33;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;545:32:65;;;527:51;;515:2;500:18;508:33:45;381:203:65;1684:27:50;;;;;1824:101:14;;;:::i;:::-;;1201:85;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;1201:85;;1398:188:45;;;;;;:::i;:::-;;:::i;2437:330:50:-;;;;;;:::i;:::-;;:::i;2074:198:14:-;;;;;;:::i;:::-;;:::i;508:33:45:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;508:33:45;;-1:-1:-1;508:33:45;:::o;1824:101:14:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1398:188:45:-;1094:13:14;:11;:13::i;:::-;1490:36:45;;::::1;::::0;:16:::1;::::0;:36:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1541:38;1561:17;1541:38;;;;;;:::i;:::-;;;;;;;;1398:188:::0;:::o;2437:330:50:-;2528:12;2580:4;2586:11;2599:16;2617:10;2629:13;2644:6;2652:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2652:7:50;2567:93;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2552:109:50;-1:-1:-1;2707:10:50;-1:-1:-1;;;;;2676:84:50;;2689:10;2676:84;2719:13;2734:7;1247::14;1273:6;-1:-1:-1;;;;;1273:6:14;;1201:85;2734:7:50;2743:16;2676:84;;;;;;;;:::i;:::-;;;;;;;;2437:330;;;;;:::o;2074:198:14:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:14;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:14;;5337:2:65;2154:73:14::1;::::0;::::1;5319:21:65::0;5376:2;5356:18;;;5349:30;5415:34;5395:18;;;5388:62;-1:-1:-1;;;5466:18:65;;;5459:36;5512:19;;2154:73:14::1;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:14;719:10:18;1422:23:14;1414:68;;;;-1:-1:-1;;;1414:68:14;;5744:2:65;1414:68:14;;;5726:21:65;;;5763:18;;;5756:30;5822:34;5802:18;;;5795:62;5874:18;;1414:68:14;5542:356:65;2426:187:14;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:14;;;-1:-1:-1;;;;;;2534:17:14;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;196:180:65;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:65;;196:180;-1:-1:-1;196:180:65:o;812:127::-;873:10;868:3;864:20;861:1;854:31;904:4;901:1;894:15;928:4;925:1;918:15;944:173;1012:20;;-1:-1:-1;;;;;1061:31:65;;1051:42;;1041:70;;1107:1;1104;1097:12;1041:70;944:173;;;:::o;1122:1121::-;1206:6;1237:2;1280;1268:9;1259:7;1255:23;1251:32;1248:52;;;1296:1;1293;1286:12;1248:52;1336:9;1323:23;1365:18;1406:2;1398:6;1395:14;1392:34;;;1422:1;1419;1412:12;1392:34;1460:6;1449:9;1445:22;1435:32;;1505:7;1498:4;1494:2;1490:13;1486:27;1476:55;;1527:1;1524;1517:12;1476:55;1563:2;1550:16;1585:2;1581;1578:10;1575:36;;;1591:18;;:::i;:::-;1637:2;1634:1;1630:10;1669:2;1663:9;1732:2;1728:7;1723:2;1719;1715:11;1711:25;1703:6;1699:38;1787:6;1775:10;1772:22;1767:2;1755:10;1752:18;1749:46;1746:72;;;1798:18;;:::i;:::-;1834:2;1827:22;1884:18;;;1918:15;;;;-1:-1:-1;1960:11:65;;;1956:20;;;1988:19;;;1985:39;;;2020:1;2017;2010:12;1985:39;2044:11;;;;2064:148;2080:6;2075:3;2072:15;2064:148;;;2146:23;2165:3;2146:23;:::i;:::-;2134:36;;2097:12;;;;2190;;;;2064:148;;;2231:6;1122:1121;-1:-1:-1;;;;;;;;1122:1121:65:o;2248:316::-;2325:6;2333;2341;2394:2;2382:9;2373:7;2369:23;2365:32;2362:52;;;2410:1;2407;2400:12;2362:52;-1:-1:-1;;2433:23:65;;;2503:2;2488:18;;2475:32;;-1:-1:-1;2554:2:65;2539:18;;;2526:32;;2248:316;-1:-1:-1;2248:316:65:o;2569:186::-;2628:6;2681:2;2669:9;2660:7;2656:23;2652:32;2649:52;;;2697:1;2694;2687:12;2649:52;2720:29;2739:9;2720:29;:::i;:::-;2710:39;2569:186;-1:-1:-1;;;2569:186:65:o;2760:658::-;2931:2;2983:21;;;3053:13;;2956:18;;;3075:22;;;2902:4;;2931:2;3154:15;;;;3128:2;3113:18;;;2902:4;3197:195;3211:6;3208:1;3205:13;3197:195;;;3276:13;;-1:-1:-1;;;;;3272:39:65;3260:52;;3367:15;;;;3332:12;;;;3308:1;3226:9;3197:195;;;-1:-1:-1;3409:3:65;;2760:658;-1:-1:-1;;;;;;2760:658:65:o;3423:495::-;3484:3;3522:5;3516:12;3549:6;3544:3;3537:19;3575:4;3604:2;3599:3;3595:12;3588:19;;3626:5;3623:1;3616:16;3668:2;3665:1;3655:16;3689:1;3699:194;3713:6;3710:1;3707:13;3699:194;;;3778:13;;-1:-1:-1;;;;;3774:39:65;3762:52;;3834:12;;;;3810:1;3869:14;;;;3728:9;3699:194;;;-1:-1:-1;3909:3:65;;3423:495;-1:-1:-1;;;;;3423:495:65:o;3923:768::-;4245:4;4291:1;4287;4282:3;4278:11;4274:19;4332:2;4324:6;4320:15;4309:9;4302:34;4372:6;4367:2;4356:9;4352:18;4345:34;4415:3;4410:2;4399:9;4395:18;4388:31;4436:65;4496:3;4485:9;4481:19;4473:6;4436:65;:::i;:::-;4428:73;;4537:6;4532:2;4521:9;4517:18;4510:34;4581:6;4575:3;4564:9;4560:19;4553:35;4625:6;4619:3;4608:9;4604:19;4597:35;4681:2;4673:6;4669:15;4663:3;4652:9;4648:19;4641:44;;3923:768;;;;;;;;;;:::o;4696:434::-;4910:25;;;-1:-1:-1;;;;;4971:32:65;;4966:2;4951:18;;4944:60;5040:2;5035;5020:18;;5013:30;;;-1:-1:-1;;5060:64:65;;5105:18;;5097:6;5060:64;:::i;:::-;5052:72;4696:434;-1:-1:-1;;;;;4696:434:65:o","linkReferences":{},"immutableReferences":{"45786":[{"start":158,"length":32},{"start":598,"length":32},{"start":760,"length":32}],"46386":[{"start":265,"length":32},{"start":561,"length":32}]}},"methodIdentifiers":{"MAX_TRAVERSAL()":"58781576","PYTH()":"67e406d5","create(bytes32,uint256,uint256)":"b5f8c36b","defaultUnlockers(uint256)":"5c681d1e","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setDefaultUnlockers(address[])":"a9d14058","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"_pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_maxTraversal\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"DefaultUnlockersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxTraversal\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"unlockers\",\"type\":\"address[]\"}],\"name\":\"OvalDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_TRAVERSAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PYTH\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pythPriceId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"lockWindow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAge\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"oval\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"defaultUnlockers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultUnlockers\",\"type\":\"address[]\"}],\"name\":\"setDefaultUnlockers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the best factory for most use cases that need a Pyth source, but there are other variants that may be needed if different mutability or interface choices are desired.\",\"kind\":\"dev\",\"methods\":{\"create(bytes32,uint256,uint256)\":{\"params\":{\"lockWindow\":\"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.\",\"maxAge\":\"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided.\",\"pythPriceId\":\"the Pyth price id.\"},\"returns\":{\"oval\":\"deployed oval address.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultUnlockers(address[])\":{\"details\":\"This and the owner, itself, is the only mutable portion of this factory.\",\"params\":{\"_defaultUnlockers\":\"default unlockers that will be used to instantiate new Oval instances.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"StandardPythFactory is the recommended factory for use cases that want a Pyth source and Chainlink interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(bytes32,uint256,uint256)\":{\"notice\":\"Creates the Pyth Oval instance.\"},\"setDefaultUnlockers(address[])\":{\"notice\":\"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/factories/StandardPythFactory.sol\":\"StandardPythFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/redstone-contracts/lib/@chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/\",\":@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":redstone-contracts/=lib/redstone-contracts/src/\",\":redstone-oracle/=lib/redstone-contracts/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"src/DiamondRootOval.sol\":{\"keccak256\":\"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc\",\"dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL\"]},\"src/Oval.sol\":{\"keccak256\":\"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449\",\"dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM\"]},\"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol\":{\"keccak256\":\"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0\",\"dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE\"]},\"src/adapters/lib/DecimalLib.sol\":{\"keccak256\":\"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2\",\"dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT\"]},\"src/adapters/source-adapters/PythSourceAdapter.sol\":{\"keccak256\":\"0xf1550a5f57ce3e18fa20ee3e551c2fd16aa4f1c3e445162fafc3358e2848f338\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abf2e0dee9eb6796ae8fd344b39c1d5ce4a34d32b299e2a61a77492a2e26e132\",\"dweb:/ipfs/QmZBRYhJRPPov6jz39KBC3FfaZtmh3Row1fNccMhYknNcT\"]},\"src/adapters/source-adapters/SnapshotSource.sol\":{\"keccak256\":\"0x3217090f4062ecd483d1bf5f19b371a77fe84efcb87f1802243ddaf9566083d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0bb20aa74b0e273225d0c12eef1827d397e703da6ba6c23669cb0a1b028fef5e\",\"dweb:/ipfs/QmRRXvPndL4ANHgjVWKAMTjMfqxeVCZuiuuUkn8qh2bpFP\"]},\"src/controllers/MutableUnlockersController.sol\":{\"keccak256\":\"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f\",\"dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob\"]},\"src/factories/BaseFactory.sol\":{\"keccak256\":\"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19\",\"dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq\"]},\"src/factories/StandardPythFactory.sol\":{\"keccak256\":\"0x6f660f7b847e9bad762cbca398703dc91a4b4765b70679e5b0e93dabea0b01dd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://12fb98634a4e818bb8ebce8af71811a5561842a9e48ccd85f749cd481c0b335d\",\"dweb:/ipfs/QmPMbnsrxKYNVsThNve79mnjFRzn816Qz1Y3TYorwkAUcY\"]},\"src/interfaces/IBaseController.sol\":{\"keccak256\":\"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc\",\"dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju\"]},\"src/interfaces/IBaseOracleAdapter.sol\":{\"keccak256\":\"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be\",\"dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP\"]},\"src/interfaces/IOval.sol\":{\"keccak256\":\"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953\",\"dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H\"]},\"src/interfaces/chainlink/IAggregatorV3.sol\":{\"keccak256\":\"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1\",\"dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G\"]},\"src/interfaces/chainlink/IAggregatorV3Source.sol\":{\"keccak256\":\"0xace678af82f9ae630210cc7b85cb8759b89b3d7280525ebbcb78aa7c33f5c79f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63e72db0effebba1b9048614c1ba8e72018957dddff712be2d3a2893229e210e\",\"dweb:/ipfs/QmNLqP4G5ujrZdt2rVTrXpLHuqRUR1hugxQzbNmGReLQtZ\"]},\"src/interfaces/pyth/IPyth.sol\":{\"keccak256\":\"0xd875a50c93c26dcc5cf034ac231806129796ff7db0fb3474da16b5217cad9c54\",\"urls\":[\"bzz-raw://58045931882a6c876897dd6253f8fc87fb651d04c790bd9641116e2aba8ba26e\",\"dweb:/ipfs/QmbWR6JVdkXsKTueQAca1wur7mQNLf8vDspM1bkYNc5zMv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPyth","name":"_pyth","type":"address"},{"internalType":"uint256","name":"_maxTraversal","type":"uint256"},{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address[]","name":"defaultUnlockers","type":"address[]","indexed":false}],"type":"event","name":"DefaultUnlockersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"deployer","type":"address","indexed":true},{"internalType":"address","name":"oval","type":"address","indexed":true},{"internalType":"uint256","name":"lockWindow","type":"uint256","indexed":true},{"internalType":"uint256","name":"maxTraversal","type":"uint256","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"address[]","name":"unlockers","type":"address[]","indexed":false}],"type":"event","name":"OvalDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_TRAVERSAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PYTH","outputs":[{"internalType":"contract IPyth","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"pythPriceId","type":"bytes32"},{"internalType":"uint256","name":"lockWindow","type":"uint256"},{"internalType":"uint256","name":"maxAge","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"oval","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"defaultUnlockers","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address[]","name":"_defaultUnlockers","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultUnlockers"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"create(bytes32,uint256,uint256)":{"params":{"lockWindow":"the lockWindow used for this Oval instance. This is the length of the window for the Oval auction to be run and, thus, the maximum time that prices will be delayed.","maxAge":"max age of a price that is used in place of the current price. If the only available price is older than this, OEV is not captured and the current price is provided.","pythPriceId":"the Pyth price id."},"returns":{"oval":"deployed oval address."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultUnlockers(address[])":{"details":"This and the owner, itself, is the only mutable portion of this factory.","params":{"_defaultUnlockers":"default unlockers that will be used to instantiate new Oval instances."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"create(bytes32,uint256,uint256)":{"notice":"Creates the Pyth Oval instance."},"setDefaultUnlockers(address[])":{"notice":"Enables the owner to set the default unlockers that will be passed to all Oval instances created by this contract."}},"version":1}},"settings":{"remappings":["@chainlink/=lib/redstone-contracts/lib/@chainlink/","@openzeppelin/contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/redstone-contracts/lib/openzeppelin-contracts/contracts/","@redstone-finance/evm-connector/contracts/=lib/redstone-contracts/src/evm-connector/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/redstone-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","redstone-contracts/=lib/redstone-contracts/src/","redstone-oracle/=lib/redstone-contracts/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/factories/StandardPythFactory.sol":"StandardPythFactory"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218","urls":["bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32","dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"src/DiamondRootOval.sol":{"keccak256":"0x54d2c3c6650a988ae636faa36e296fbf075ab5886da4a3ec9014de99512c2ee1","urls":["bzz-raw://30a6f48795c2a1db3be66a80d829ebf34d2cc6bc5b7e1b0a434677cfe98221fc","dweb:/ipfs/QmVoBdWELzb5AMKig5KjCisLbmFean2atNGenTbmLjqMpL"],"license":"BUSL-1.1"},"src/Oval.sol":{"keccak256":"0x3920c6f066449678694d0587f57495a7e739682ea6da4748de26aa4c655d4bdf","urls":["bzz-raw://630c2229a316b5885d4e06b6f6de8c6a0d220daf07a5c24fa225c2e2396e3449","dweb:/ipfs/QmXpnDzxLU1aVCqkeeoQXsJ25KDC5qJ1WcwPXBbbXaoNxM"],"license":"BUSL-1.1"},"src/adapters/destination-adapters/ChainlinkDestinationAdapter.sol":{"keccak256":"0xd66cb1a0c51f8c298dab85552a5156747646d31dbe66b0ce9184f05f3adee56b","urls":["bzz-raw://274135de35a3f423e49ea0bbb7aeb5fd355b3bbabb2f304deb39b6022df1c7d0","dweb:/ipfs/QmZkdjkTp7GLmZTuaw7bcU3zd8oSvhkdYYxssqCRMgZDnE"],"license":"BUSL-1.1"},"src/adapters/lib/DecimalLib.sol":{"keccak256":"0x970a20a667780e91fb80ba79005863c73421cdf730ba2303e650e63d9099cde2","urls":["bzz-raw://96013c450945da6d71128267f38754a07bb62223a0c07ef84925fa84636441f2","dweb:/ipfs/QmSZsc8Epuan7zuQCYBcirjZ63zHwcGicfV75rRPfFrixT"],"license":"BUSL-1.1"},"src/adapters/source-adapters/PythSourceAdapter.sol":{"keccak256":"0xf1550a5f57ce3e18fa20ee3e551c2fd16aa4f1c3e445162fafc3358e2848f338","urls":["bzz-raw://abf2e0dee9eb6796ae8fd344b39c1d5ce4a34d32b299e2a61a77492a2e26e132","dweb:/ipfs/QmZBRYhJRPPov6jz39KBC3FfaZtmh3Row1fNccMhYknNcT"],"license":"BUSL-1.1"},"src/adapters/source-adapters/SnapshotSource.sol":{"keccak256":"0x3217090f4062ecd483d1bf5f19b371a77fe84efcb87f1802243ddaf9566083d5","urls":["bzz-raw://0bb20aa74b0e273225d0c12eef1827d397e703da6ba6c23669cb0a1b028fef5e","dweb:/ipfs/QmRRXvPndL4ANHgjVWKAMTjMfqxeVCZuiuuUkn8qh2bpFP"],"license":"BUSL-1.1"},"src/controllers/MutableUnlockersController.sol":{"keccak256":"0x32e43c4a5e3abaa488a3758333f78fa6e166ca65a09ac76ca6b7e645d7863d16","urls":["bzz-raw://b632392a02f26de3824929fb6e2dcfe8cc84689a489b12ba45bfd0ef4d93661f","dweb:/ipfs/QmcMrnNCrM1YXBqj17HZicDvVe4fGnj66LFis6p9Gro5ob"],"license":"BUSL-1.1"},"src/factories/BaseFactory.sol":{"keccak256":"0x94670505d6e89c9cd1cef18dfce0e65f36a97c693e5c2ed9a4f81fd0c94b26e6","urls":["bzz-raw://6480e1d133f5abbe5641bc35c85a34dddf1979e68b35ee532e014fae860c4f19","dweb:/ipfs/QmNsjcvQ5mnpjHnRMokhUMcYCbcYqDbJG6426CN6j5EoAq"],"license":"BUSL-1.1"},"src/factories/StandardPythFactory.sol":{"keccak256":"0x6f660f7b847e9bad762cbca398703dc91a4b4765b70679e5b0e93dabea0b01dd","urls":["bzz-raw://12fb98634a4e818bb8ebce8af71811a5561842a9e48ccd85f749cd481c0b335d","dweb:/ipfs/QmPMbnsrxKYNVsThNve79mnjFRzn816Qz1Y3TYorwkAUcY"],"license":"BUSL-1.1"},"src/interfaces/IBaseController.sol":{"keccak256":"0x8fe524fac0b04c8415e814b1dfb1ca28d303c8de65df22c268dc1d5f4e74a9d5","urls":["bzz-raw://b69c11d3e90c65202e184de1ece928269ccd49e82aeec1aab1d489e92d3ea5cc","dweb:/ipfs/QmYNoffB6UhJXTaKVwcxH4zzZgAVv3x3vacrVMQxmnHVju"],"license":"MIT"},"src/interfaces/IBaseOracleAdapter.sol":{"keccak256":"0x9c4c3727631ccc8ad4d202a1b7faf8833fae0d93d0a7fca45de009ab8f7ecab9","urls":["bzz-raw://4b904def3696b12cbef6997b34e2bb4c8aef6af52bb640840040b6b59b25f0be","dweb:/ipfs/QmfReXd9EmWRDFjs2SLdn6YUqyVH9RMxCjvzPnjLDYxuQP"],"license":"MIT"},"src/interfaces/IOval.sol":{"keccak256":"0x8511408e4da9818a36531a464a42f99461ce38419def87f35c52c58fe4d4f6aa","urls":["bzz-raw://501d19f2a3bcadaa8095c5808bfae348d8ebe78b34084115ee635c1ad101c953","dweb:/ipfs/QmRqkEjEE9ydGrMCTJttjq6harZytTZDa8AQ2NriVU1A2H"],"license":"MIT"},"src/interfaces/chainlink/IAggregatorV3.sol":{"keccak256":"0xb4d26247f867a5a5614638bdee251e29b73eddc61c4b9f04f8af2d88e2f4e05d","urls":["bzz-raw://0628c9b3a05410dee47e48ee68c2e3004b0c977c9942149a9206be7795d033d1","dweb:/ipfs/QmdSGsY55cMx3CKQJ3huz9P54XVfKWnHLxQsoqweve2Z8G"],"license":"MIT"},"src/interfaces/chainlink/IAggregatorV3Source.sol":{"keccak256":"0xace678af82f9ae630210cc7b85cb8759b89b3d7280525ebbcb78aa7c33f5c79f","urls":["bzz-raw://63e72db0effebba1b9048614c1ba8e72018957dddff712be2d3a2893229e210e","dweb:/ipfs/QmNLqP4G5ujrZdt2rVTrXpLHuqRUR1hugxQzbNmGReLQtZ"],"license":"MIT"},"src/interfaces/pyth/IPyth.sol":{"keccak256":"0xd875a50c93c26dcc5cf034ac231806129796ff7db0fb3474da16b5217cad9c54","urls":["bzz-raw://58045931882a6c876897dd6253f8fc87fb651d04c790bd9641116e2aba8ba26e","dweb:/ipfs/QmbWR6JVdkXsKTueQAca1wur7mQNLf8vDspM1bkYNc5zMv"],"license":null}},"version":1},"id":50} \ No newline at end of file diff --git a/src/contract-types/PermissionProxy.ts b/src/contract-types/PermissionProxy.ts new file mode 100644 index 0000000..a777c3d --- /dev/null +++ b/src/contract-types/PermissionProxy.ts @@ -0,0 +1,249 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface PermissionProxyInterface extends Interface { + getFunction( + nameOrSignature: + | "execute" + | "multicall" + | "owner" + | "renounceOwnership" + | "senders" + | "setSender" + | "transferOwnership" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred" | "SenderSet" + ): EventFragment; + + encodeFunctionData( + functionFragment: "execute", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "multicall", + values: [BytesLike[]] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "senders", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setSender", + values: [AddressLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "senders", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setSender", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SenderSetEvent { + export type InputTuple = [sender: AddressLike, allowed: boolean]; + export type OutputTuple = [sender: string, allowed: boolean]; + export interface OutputObject { + sender: string; + allowed: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface PermissionProxy extends BaseContract { + connect(runner?: ContractRunner | null): PermissionProxy; + waitForDeployment(): Promise; + + interface: PermissionProxyInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + execute: TypedContractMethod< + [target: AddressLike, callData: BytesLike], + [string], + "nonpayable" + >; + + multicall: TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + senders: TypedContractMethod<[arg0: AddressLike], [boolean], "view">; + + setSender: TypedContractMethod< + [sender: AddressLike, allowed: boolean], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "execute" + ): TypedContractMethod< + [target: AddressLike, callData: BytesLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "multicall" + ): TypedContractMethod<[data: BytesLike[]], [string[]], "nonpayable">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "senders" + ): TypedContractMethod<[arg0: AddressLike], [boolean], "view">; + getFunction( + nameOrSignature: "setSender" + ): TypedContractMethod< + [sender: AddressLike, allowed: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "SenderSet" + ): TypedContractEvent< + SenderSetEvent.InputTuple, + SenderSetEvent.OutputTuple, + SenderSetEvent.OutputObject + >; + + filters: { + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "SenderSet(address,bool)": TypedContractEvent< + SenderSetEvent.InputTuple, + SenderSetEvent.OutputTuple, + SenderSetEvent.OutputObject + >; + SenderSet: TypedContractEvent< + SenderSetEvent.InputTuple, + SenderSetEvent.OutputTuple, + SenderSetEvent.OutputObject + >; + }; +} diff --git a/src/contract-types/StandardChainlinkFactory.ts b/src/contract-types/StandardChainlinkFactory.ts new file mode 100644 index 0000000..a8c1475 --- /dev/null +++ b/src/contract-types/StandardChainlinkFactory.ts @@ -0,0 +1,310 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface StandardChainlinkFactoryInterface extends Interface { + getFunction( + nameOrSignature: + | "MAX_TRAVERSAL" + | "create" + | "defaultUnlockers" + | "owner" + | "renounceOwnership" + | "setDefaultUnlockers" + | "transferOwnership" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "DefaultUnlockersSet" + | "OvalDeployed" + | "OwnershipTransferred" + ): EventFragment; + + encodeFunctionData( + functionFragment: "MAX_TRAVERSAL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "create", + values: [AddressLike, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "defaultUnlockers", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setDefaultUnlockers", + values: [AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "MAX_TRAVERSAL", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "create", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "defaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setDefaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; +} + +export namespace DefaultUnlockersSetEvent { + export type InputTuple = [defaultUnlockers: AddressLike[]]; + export type OutputTuple = [defaultUnlockers: string[]]; + export interface OutputObject { + defaultUnlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OvalDeployedEvent { + export type InputTuple = [ + deployer: AddressLike, + oval: AddressLike, + lockWindow: BigNumberish, + maxTraversal: BigNumberish, + owner: AddressLike, + unlockers: AddressLike[] + ]; + export type OutputTuple = [ + deployer: string, + oval: string, + lockWindow: bigint, + maxTraversal: bigint, + owner: string, + unlockers: string[] + ]; + export interface OutputObject { + deployer: string; + oval: string; + lockWindow: bigint; + maxTraversal: bigint; + owner: string; + unlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface StandardChainlinkFactory extends BaseContract { + connect(runner?: ContractRunner | null): StandardChainlinkFactory; + waitForDeployment(): Promise; + + interface: StandardChainlinkFactoryInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + MAX_TRAVERSAL: TypedContractMethod<[], [bigint], "view">; + + create: TypedContractMethod< + [source: AddressLike, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + + defaultUnlockers: TypedContractMethod<[arg0: BigNumberish], [string], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + setDefaultUnlockers: TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "MAX_TRAVERSAL" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "create" + ): TypedContractMethod< + [source: AddressLike, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "defaultUnlockers" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "setDefaultUnlockers" + ): TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + + getEvent( + key: "DefaultUnlockersSet" + ): TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + getEvent( + key: "OvalDeployed" + ): TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + filters: { + "DefaultUnlockersSet(address[])": TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + DefaultUnlockersSet: TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + + "OvalDeployed(address,address,uint256,uint256,address,address[])": TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + OvalDeployed: TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + }; +} diff --git a/src/contract-types/StandardChronicleFactory.ts b/src/contract-types/StandardChronicleFactory.ts new file mode 100644 index 0000000..02f34ea --- /dev/null +++ b/src/contract-types/StandardChronicleFactory.ts @@ -0,0 +1,310 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface StandardChronicleFactoryInterface extends Interface { + getFunction( + nameOrSignature: + | "MAX_TRAVERSAL" + | "create" + | "defaultUnlockers" + | "owner" + | "renounceOwnership" + | "setDefaultUnlockers" + | "transferOwnership" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "DefaultUnlockersSet" + | "OvalDeployed" + | "OwnershipTransferred" + ): EventFragment; + + encodeFunctionData( + functionFragment: "MAX_TRAVERSAL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "create", + values: [AddressLike, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "defaultUnlockers", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setDefaultUnlockers", + values: [AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "MAX_TRAVERSAL", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "create", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "defaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setDefaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; +} + +export namespace DefaultUnlockersSetEvent { + export type InputTuple = [defaultUnlockers: AddressLike[]]; + export type OutputTuple = [defaultUnlockers: string[]]; + export interface OutputObject { + defaultUnlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OvalDeployedEvent { + export type InputTuple = [ + deployer: AddressLike, + oval: AddressLike, + lockWindow: BigNumberish, + maxTraversal: BigNumberish, + owner: AddressLike, + unlockers: AddressLike[] + ]; + export type OutputTuple = [ + deployer: string, + oval: string, + lockWindow: bigint, + maxTraversal: bigint, + owner: string, + unlockers: string[] + ]; + export interface OutputObject { + deployer: string; + oval: string; + lockWindow: bigint; + maxTraversal: bigint; + owner: string; + unlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface StandardChronicleFactory extends BaseContract { + connect(runner?: ContractRunner | null): StandardChronicleFactory; + waitForDeployment(): Promise; + + interface: StandardChronicleFactoryInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + MAX_TRAVERSAL: TypedContractMethod<[], [bigint], "view">; + + create: TypedContractMethod< + [chronicle: AddressLike, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + + defaultUnlockers: TypedContractMethod<[arg0: BigNumberish], [string], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + setDefaultUnlockers: TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "MAX_TRAVERSAL" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "create" + ): TypedContractMethod< + [chronicle: AddressLike, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "defaultUnlockers" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "setDefaultUnlockers" + ): TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + + getEvent( + key: "DefaultUnlockersSet" + ): TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + getEvent( + key: "OvalDeployed" + ): TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + filters: { + "DefaultUnlockersSet(address[])": TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + DefaultUnlockersSet: TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + + "OvalDeployed(address,address,uint256,uint256,address,address[])": TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + OvalDeployed: TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + }; +} diff --git a/src/contract-types/StandardCoinbaseFactory.ts b/src/contract-types/StandardCoinbaseFactory.ts new file mode 100644 index 0000000..5eb9c0b --- /dev/null +++ b/src/contract-types/StandardCoinbaseFactory.ts @@ -0,0 +1,318 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface StandardCoinbaseFactoryInterface extends Interface { + getFunction( + nameOrSignature: + | "MAX_TRAVERSAL" + | "SOURCE" + | "create" + | "defaultUnlockers" + | "owner" + | "renounceOwnership" + | "setDefaultUnlockers" + | "transferOwnership" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "DefaultUnlockersSet" + | "OvalDeployed" + | "OwnershipTransferred" + ): EventFragment; + + encodeFunctionData( + functionFragment: "MAX_TRAVERSAL", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "SOURCE", values?: undefined): string; + encodeFunctionData( + functionFragment: "create", + values: [string, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "defaultUnlockers", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setDefaultUnlockers", + values: [AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "MAX_TRAVERSAL", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "SOURCE", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "create", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "defaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setDefaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; +} + +export namespace DefaultUnlockersSetEvent { + export type InputTuple = [defaultUnlockers: AddressLike[]]; + export type OutputTuple = [defaultUnlockers: string[]]; + export interface OutputObject { + defaultUnlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OvalDeployedEvent { + export type InputTuple = [ + deployer: AddressLike, + oval: AddressLike, + lockWindow: BigNumberish, + maxTraversal: BigNumberish, + owner: AddressLike, + unlockers: AddressLike[] + ]; + export type OutputTuple = [ + deployer: string, + oval: string, + lockWindow: bigint, + maxTraversal: bigint, + owner: string, + unlockers: string[] + ]; + export interface OutputObject { + deployer: string; + oval: string; + lockWindow: bigint; + maxTraversal: bigint; + owner: string; + unlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface StandardCoinbaseFactory extends BaseContract { + connect(runner?: ContractRunner | null): StandardCoinbaseFactory; + waitForDeployment(): Promise; + + interface: StandardCoinbaseFactoryInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + MAX_TRAVERSAL: TypedContractMethod<[], [bigint], "view">; + + SOURCE: TypedContractMethod<[], [string], "view">; + + create: TypedContractMethod< + [ticker: string, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + + defaultUnlockers: TypedContractMethod<[arg0: BigNumberish], [string], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + setDefaultUnlockers: TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "MAX_TRAVERSAL" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "SOURCE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "create" + ): TypedContractMethod< + [ticker: string, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "defaultUnlockers" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "setDefaultUnlockers" + ): TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + + getEvent( + key: "DefaultUnlockersSet" + ): TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + getEvent( + key: "OvalDeployed" + ): TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + filters: { + "DefaultUnlockersSet(address[])": TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + DefaultUnlockersSet: TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + + "OvalDeployed(address,address,uint256,uint256,address,address[])": TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + OvalDeployed: TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + }; +} diff --git a/src/contract-types/StandardPythFactory.ts b/src/contract-types/StandardPythFactory.ts new file mode 100644 index 0000000..c3c774a --- /dev/null +++ b/src/contract-types/StandardPythFactory.ts @@ -0,0 +1,318 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface StandardPythFactoryInterface extends Interface { + getFunction( + nameOrSignature: + | "MAX_TRAVERSAL" + | "PYTH" + | "create" + | "defaultUnlockers" + | "owner" + | "renounceOwnership" + | "setDefaultUnlockers" + | "transferOwnership" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "DefaultUnlockersSet" + | "OvalDeployed" + | "OwnershipTransferred" + ): EventFragment; + + encodeFunctionData( + functionFragment: "MAX_TRAVERSAL", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "PYTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "create", + values: [BytesLike, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "defaultUnlockers", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setDefaultUnlockers", + values: [AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "MAX_TRAVERSAL", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "PYTH", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "create", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "defaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setDefaultUnlockers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; +} + +export namespace DefaultUnlockersSetEvent { + export type InputTuple = [defaultUnlockers: AddressLike[]]; + export type OutputTuple = [defaultUnlockers: string[]]; + export interface OutputObject { + defaultUnlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OvalDeployedEvent { + export type InputTuple = [ + deployer: AddressLike, + oval: AddressLike, + lockWindow: BigNumberish, + maxTraversal: BigNumberish, + owner: AddressLike, + unlockers: AddressLike[] + ]; + export type OutputTuple = [ + deployer: string, + oval: string, + lockWindow: bigint, + maxTraversal: bigint, + owner: string, + unlockers: string[] + ]; + export interface OutputObject { + deployer: string; + oval: string; + lockWindow: bigint; + maxTraversal: bigint; + owner: string; + unlockers: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface StandardPythFactory extends BaseContract { + connect(runner?: ContractRunner | null): StandardPythFactory; + waitForDeployment(): Promise; + + interface: StandardPythFactoryInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + MAX_TRAVERSAL: TypedContractMethod<[], [bigint], "view">; + + PYTH: TypedContractMethod<[], [string], "view">; + + create: TypedContractMethod< + [pythPriceId: BytesLike, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + + defaultUnlockers: TypedContractMethod<[arg0: BigNumberish], [string], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + setDefaultUnlockers: TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "MAX_TRAVERSAL" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "PYTH" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "create" + ): TypedContractMethod< + [pythPriceId: BytesLike, lockWindow: BigNumberish, maxAge: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "defaultUnlockers" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "setDefaultUnlockers" + ): TypedContractMethod< + [_defaultUnlockers: AddressLike[]], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + + getEvent( + key: "DefaultUnlockersSet" + ): TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + getEvent( + key: "OvalDeployed" + ): TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + filters: { + "DefaultUnlockersSet(address[])": TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + DefaultUnlockersSet: TypedContractEvent< + DefaultUnlockersSetEvent.InputTuple, + DefaultUnlockersSetEvent.OutputTuple, + DefaultUnlockersSetEvent.OutputObject + >; + + "OvalDeployed(address,address,uint256,uint256,address,address[])": TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + OvalDeployed: TypedContractEvent< + OvalDeployedEvent.InputTuple, + OvalDeployedEvent.OutputTuple, + OvalDeployedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + }; +} diff --git a/src/contract-types/common.ts b/src/contract-types/common.ts new file mode 100644 index 0000000..56b5f21 --- /dev/null +++ b/src/contract-types/common.ts @@ -0,0 +1,131 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + FunctionFragment, + Typed, + EventFragment, + ContractTransaction, + ContractTransactionResponse, + DeferredTopicFilter, + EventLog, + TransactionRequest, + LogDescription, +} from "ethers"; + +export interface TypedDeferredTopicFilter<_TCEvent extends TypedContractEvent> + extends DeferredTopicFilter {} + +export interface TypedContractEvent< + InputTuple extends Array = any, + OutputTuple extends Array = any, + OutputObject = any +> { + (...args: Partial): TypedDeferredTopicFilter< + TypedContractEvent + >; + name: string; + fragment: EventFragment; + getFragment(...args: Partial): EventFragment; +} + +type __TypechainAOutputTuple = T extends TypedContractEvent< + infer _U, + infer W +> + ? W + : never; +type __TypechainOutputObject = T extends TypedContractEvent< + infer _U, + infer _W, + infer V +> + ? V + : never; + +export interface TypedEventLog + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export interface TypedLogDescription + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export type TypedListener = ( + ...listenerArg: [ + ...__TypechainAOutputTuple, + TypedEventLog, + ...undefined[] + ] +) => void; + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type StateMutability = "nonpayable" | "payable" | "view"; + +export type BaseOverrides = Omit; +export type NonPayableOverrides = Omit< + BaseOverrides, + "value" | "blockTag" | "enableCcipRead" +>; +export type PayableOverrides = Omit< + BaseOverrides, + "blockTag" | "enableCcipRead" +>; +export type ViewOverrides = Omit; +export type Overrides = S extends "nonpayable" + ? NonPayableOverrides + : S extends "payable" + ? PayableOverrides + : ViewOverrides; + +export type PostfixOverrides, S extends StateMutability> = + | A + | [...A, Overrides]; +export type ContractMethodArgs< + A extends Array, + S extends StateMutability +> = PostfixOverrides<{ [I in keyof A]-?: A[I] | Typed }, S>; + +export type DefaultReturnType = R extends Array ? R[0] : R; + +// export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = R | ContractTransactionResponse> { +export interface TypedContractMethod< + A extends Array = Array, + R = any, + S extends StateMutability = "payable" +> { + (...args: ContractMethodArgs): S extends "view" + ? Promise> + : Promise; + + name: string; + + fragment: FunctionFragment; + + getFragment(...args: ContractMethodArgs): FunctionFragment; + + populateTransaction( + ...args: ContractMethodArgs + ): Promise; + staticCall( + ...args: ContractMethodArgs + ): Promise>; + send(...args: ContractMethodArgs): Promise; + estimateGas(...args: ContractMethodArgs): Promise; + staticCallResult(...args: ContractMethodArgs): Promise; +} diff --git a/src/contract-types/factories/PermissionProxy__factory.ts b/src/contract-types/factories/PermissionProxy__factory.ts new file mode 100644 index 0000000..b670ffd --- /dev/null +++ b/src/contract-types/factories/PermissionProxy__factory.ts @@ -0,0 +1,245 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + PermissionProxy, + PermissionProxyInterface, +} from "../PermissionProxy"; + +const _abi = [ + { + type: "function", + name: "execute", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "multicall", + inputs: [ + { + name: "data", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "results", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "senders", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "setSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "allowed", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SenderSet", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "allowed", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "CallFailed", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + { + type: "error", + name: "SenderNotApproved", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6109978061007e6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063982fb9d81161005b578063982fb9d8146100d0578063ac9650d814610103578063cf2c550c14610123578063f2fde38b1461013657600080fd5b80631cff79cd14610082578063715018a6146100ab5780638da5cb5b146100b5575b600080fd5b61009561009036600461061c565b610149565b6040516100a2919061072e565b60405180910390f35b6100b3610211565b005b6000546040516001600160a01b0390911681526020016100a2565b6100f36100de366004610741565b60016020526000908152604090205460ff1681565b60405190151581526020016100a2565b61011661011136600461075c565b610225565b6040516100a291906107d1565b6100b3610131366004610833565b61031a565b6100b3610144366004610741565b610385565b3360009081526001602052604090205460609060ff1661018357604051636ae23d1f60e01b81523360048201526024015b60405180910390fd5b600080846001600160a01b03166000856040516101a0919061086f565b60006040518083038185875af1925050503d80600081146101dd576040519150601f19603f3d011682016040523d82523d6000602084013e6101e2565b606091505b509150915081610209578484604051636c544f3360e01b815260040161017a92919061088b565b949350505050565b6102196103fe565b6102236000610458565b565b60608167ffffffffffffffff81111561024057610240610606565b60405190808252806020026020018201604052801561027357816020015b606081526020019060019003908161025e5790505b50905060005b82811015610313576102e330858584818110610297576102976108af565b90506020028101906102a991906108c5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104a892505050565b8282815181106102f5576102f56108af565b6020026020010181905250808061030b90610913565b915050610279565b5092915050565b6103226103fe565b6001600160a01b038216600081815260016020908152604091829020805460ff19168515159081179091558251938452908301527f8f2370569c3f86d7030114a30f04d77c85f28ab3f365eb3ebb918575841c4fa4910160405180910390a15050565b61038d6103fe565b6001600160a01b0381166103f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161017a565b6103fb81610458565b50565b6000546001600160a01b031633146102235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161017a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606104cd838360405180606001604052806027815260200161093b602791396104d4565b9392505050565b6060600080856001600160a01b0316856040516104f1919061086f565b600060405180830381855af49150503d806000811461052c576040519150601f19603f3d011682016040523d82523d6000602084013e610531565b606091505b50915091506105428683838761054c565b9695505050505050565b606083156105bb5782516000036105b4576001600160a01b0385163b6105b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161017a565b5081610209565b61020983838151156105d05781518083602001fd5b8060405162461bcd60e51b815260040161017a919061072e565b80356001600160a01b038116811461060157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561062f57600080fd5b610638836105ea565b9150602083013567ffffffffffffffff8082111561065557600080fd5b818501915085601f83011261066957600080fd5b81358181111561067b5761067b610606565b604051601f8201601f19908116603f011681019083821181831017156106a3576106a3610606565b816040528281528860208487010111156106bc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156106f95781810151838201526020016106e1565b50506000910152565b6000815180845261071a8160208601602086016106de565b601f01601f19169290920160200192915050565b6020815260006104cd6020830184610702565b60006020828403121561075357600080fd5b6104cd826105ea565b6000806020838503121561076f57600080fd5b823567ffffffffffffffff8082111561078757600080fd5b818501915085601f83011261079b57600080fd5b8135818111156107aa57600080fd5b8660208260051b85010111156107bf57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561082657603f19888603018452610814858351610702565b945092850192908501906001016107f8565b5092979650505050505050565b6000806040838503121561084657600080fd5b61084f836105ea565b91506020830135801515811461086457600080fd5b809150509250929050565b600082516108818184602087016106de565b9190910192915050565b6001600160a01b038316815260406020820181905260009061020990830184610702565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126108dc57600080fd5b83018035915067ffffffffffffffff8211156108f757600080fd5b60200191503681900382131561090c57600080fd5b9250929050565b60006001820161093357634e487b7160e01b600052601160045260246000fd5b506001019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122062cb28768ebad7fa180d4c11b8b16cf2b779333661631a8ea42b4b6eb584ff8864736f6c63430008110033"; + +type PermissionProxyConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PermissionProxyConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PermissionProxy__factory extends ContractFactory { + constructor(...args: PermissionProxyConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + PermissionProxy & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): PermissionProxy__factory { + return super.connect(runner) as PermissionProxy__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PermissionProxyInterface { + return new Interface(_abi) as PermissionProxyInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): PermissionProxy { + return new Contract(address, _abi, runner) as unknown as PermissionProxy; + } +} diff --git a/src/contract-types/factories/StandardChainlinkFactory__factory.ts b/src/contract-types/factories/StandardChainlinkFactory__factory.ts new file mode 100644 index 0000000..3b54066 --- /dev/null +++ b/src/contract-types/factories/StandardChainlinkFactory__factory.ts @@ -0,0 +1,291 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + StandardChainlinkFactory, + StandardChainlinkFactoryInterface, +} from "../StandardChainlinkFactory"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_maxTraversal", + type: "uint256", + internalType: "uint256", + }, + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "MAX_TRAVERSAL", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "create", + inputs: [ + { + name: "source", + type: "address", + internalType: "contract IAggregatorV3Source", + }, + { + name: "lockWindow", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxAge", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "oval", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "defaultUnlockers", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setDefaultUnlockers", + inputs: [ + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "DefaultUnlockersSet", + inputs: [ + { + name: "defaultUnlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OvalDeployed", + inputs: [ + { + name: "deployer", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "oval", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "lockWindow", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + { + name: "maxTraversal", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "owner", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "unlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x60a06040523480156200001157600080fd5b50604051620023a8380380620023a883398101604081905262000034916200026f565b81816200004133620000b1565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a78162000101565b505050506200039e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200010b6200015d565b805162000120906001906020840190620001bb565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015291906200034f565b60405180910390a150565b6000546001600160a01b03163314620001b95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b82805482825590600052602060002090810192821562000213579160200282015b828111156200021357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001dc565b506200022192915062000225565b5090565b5b8082111562000221576000815560010162000226565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200026a57600080fd5b919050565b600080604083850312156200028357600080fd5b8251602080850151919350906001600160401b0380821115620002a557600080fd5b818601915086601f830112620002ba57600080fd5b815181811115620002cf57620002cf6200023c565b8060051b604051601f19603f83011681018181108582111715620002f757620002f76200023c565b6040529182528482019250838101850191898311156200031657600080fd5b938501935b828510156200033f576200032f8562000252565b845293850193928501926200031b565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620003925783516001600160a01b0316835292840192918401916001016200036b565b50909695505050505050565b608051611fe1620003c76000396000818160c60152818161016201526102030152611fe16000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a6146200010e5780638da5cb5b146200011a578063a9d14058146200012c578063f2fde38b146200014357600080fd5b80635165da30146200008c5780635878157614620000c05780635c681d1e14620000f7575b600080fd5b620000a36200009d366004620004ca565b6200015a565b6040516001600160a01b0390911681526020015b60405180910390f35b620000e87f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620000b7565b620000a36200010836600462000502565b62000257565b6200011862000282565b005b6000546001600160a01b0316620000a3565b620001186200013d36600462000544565b6200029a565b620001186200015436600462000617565b620002f6565b6000836001847f000000000000000000000000000000000000000000000000000000000000000085620001956000546001600160a01b031690565b604051620001a39062000425565b620001b49695949392919062000689565b604051809103906000f080158015620001d1573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f0000000000000000000000000000000000000000000000000000000000000000620002356000546001600160a01b031690565b60016040516200024893929190620006d5565b60405180910390a49392505050565b600181815481106200026857600080fd5b6000918252602090912001546001600160a01b0316905081565b6200028c62000379565b620002986000620003d5565b565b620002a462000379565b8051620002b990600190602084019062000433565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae1681604051620002eb91906200070a565b60405180910390a150565b6200030062000379565b6001600160a01b0381166200036b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200037681620003d5565b50565b6000546001600160a01b03163314620002985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000362565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611852806200075a83390190565b8280548282559060005260206000209081019282156200048b579160200282015b828111156200048b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000454565b50620004999291506200049d565b5090565b5b808211156200049957600081556001016200049e565b6001600160a01b03811681146200037657600080fd5b600080600060608486031215620004e057600080fd5b8335620004ed81620004b4565b95602085013595506040909401359392505050565b6000602082840312156200051557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356200053f81620004b4565b919050565b600060208083850312156200055857600080fd5b823567ffffffffffffffff808211156200057157600080fd5b818501915085601f8301126200058657600080fd5b8135818111156200059b576200059b6200051c565b8060051b604051601f19603f83011681018181108582111715620005c357620005c36200051c565b604052918252848201925083810185019188831115620005e257600080fd5b938501935b828510156200060b57620005fb8562000532565b84529385019392850192620005e7565b98975050505050505050565b6000602082840312156200062a57600080fd5b81356200063781620004b4565b9392505050565b6000815480845260208085019450836000528060002060005b838110156200067e5781546001600160a01b03168752958201956001918201910162000657565b509495945050505050565b600060018060a01b03808916835260c06020840152620006ad60c08401896200063e565b915086604084015285606084015284608084015280841660a084015250979650505050505050565b8381526001600160a01b038316602082015260606040820181905260009062000701908301846200063e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156200074d5783516001600160a01b03168352928401929184019160010162000726565b5090969550505050505056fe6101406040523480156200001257600080fd5b50604051620018523803806200185283398101604081905262000035916200049b565b601286858588866200004733620002dc565b8381116200009c5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ee5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000093565b608084905260a083905260c081905260005b82518110156200014e5762000139838281518110620001235762000123620005b4565b602002602001015160016200032c60201b60201c565b806200014581620005ca565b91505062000100565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a250505050806001600160a01b031660e0816001600160a01b031681525050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002539190620005f2565b60ff166101008190526040516001600160a01b038316907f023d13f58a0d1b57e2446bf7ee75c602447357846ca76f9b1dd6b982caa53b7d90600090a35060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002d081620002dc565b5050505050506200061e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b62000336620003fc565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003a85760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000093565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620004585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000093565b565b6001600160a01b03811681146200047057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b805162000496816200045a565b919050565b60008060008060008060c08789031215620004b557600080fd5b8651620004c2816200045a565b602088810151919750906001600160401b0380821115620004e257600080fd5b818a0191508a601f830112620004f757600080fd5b8151818111156200050c576200050c62000473565b8060051b604051601f19603f8301168101818110858211171562000534576200053462000473565b60405291825284820192508381018501918d8311156200055357600080fd5b938501935b828510156200057c576200056c8562000489565b8452938501939285019262000558565b809a50505050505050604087015193506060870151925060808701519150620005a860a0880162000489565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b600060018201620005eb57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200060557600080fd5b815160ff811681146200061757600080fd5b9392505050565b60805160a05160c05160e0516101005161012051611189620006c9600039600081816102180152818161069f0152818161071a015261097f0152600081816105530152818161065801526107700152600081816101d9015281816104c6015281816105ad01528181610b610152610cf00152600081816102ac0152610c1701526000818161033a0152610401015260008181610261015281816103ce015261090b01526111896000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063687043c5116100c3578063a5c38b3d1161007c578063a5c38b3d1461035e578063cb53b08d14610367578063d3fff0f61461037a578063f2fde38b1461038d578063f6e1d17a146103a0578063feaf968c146103b357600080fd5b8063687043c5146102aa578063715018a6146102d05780638205bf6a146102d85780638da5cb5b146102e05780639a6fc8f5146102f1578063a3c044761461033857600080fd5b8063313ce56711610115578063313ce5671461021357806332c6534b1461024c5780633376f53a1461025f5780633d6ba5781461028f57806350d25bcd146102a25780636666d3721461018257600080fd5b80630125554b14610152578063138623641461017a578063172b09f91461018457806324a419f4146101b75780632ef9ebba146101d4575b600080fd5b61015a6103bb565b604080519384526020840192909252908201526060015b60405180910390f35b610182610430565b005b6101a7610192366004610dfc565b60026020526000908152604090205460ff1681565b6040519015158152602001610171565b6101bf6104be565b60408051928352602083019190915201610171565b6101fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610171565b61023a7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610171565b6101a761025a366004610e17565b610582565b7f00000000000000000000000000000000000000000000000000000000000000005b604051908152602001610171565b6101bf61029d366004610e41565b6105a5565b610281610688565b7f0000000000000000000000000000000000000000000000000000000000000000610281565b6101826106cb565b6102816106dd565b6000546001600160a01b03166101fb565b6103046102ff366004610e6f565b6106f0565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610171565b7f0000000000000000000000000000000000000000000000000000000000000000610281565b61028160015481565b61015a610375366004610e8c565b610751565b610182610388366004610eae565b6107af565b61018261039b366004610dfc565b610872565b6101bf6103ae366004610e41565b6108eb565b61030461094f565b60008060006104256103ff6001546103f07f000000000000000000000000000000000000000000000000000000000000000090565b6103fa9042610f00565b6109b7565b7f0000000000000000000000000000000000000000000000000000000000000000610751565b925092509250909192565b61043c33600154610582565b61048d5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105469190610f13565b50935050925050610579827f000000000000000000000000000000000000000000000000000000000000000060126109cf565b94909350915050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f56105e387610a40565b6040516001600160e01b031960e084901b1681526001600160501b03909116600482015260240160a060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b9190610f13565b5093505092505061067e827f000000000000000000000000000000000000000000000000000000000000000060126109cf565b9590945092505050565b6000806106936103bb565b505090506106c38160127f00000000000000000000000000000000000000000000000000000000000000006109cf565b91505090565b565b6106d3610aac565b6106c96000610b06565b6000806106e86103bb565b509392505050565b600080600080600080600061070d886001600160501b03166108eb565b915091508761073e8360127f00000000000000000000000000000000000000000000000000000000000000006109cf565b9099909891975087965090945092505050565b6000806000806000806107648888610b56565b925092509250610796837f000000000000000000000000000000000000000000000000000000000000000060126109cf565b95509093506001600160501b03169150505b9250925092565b6107b7610aac565b6001600160a01b03821660009081526002602052604090205481151560ff90911615150361081e5760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b6044820152606401610484565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b61087a610aac565b6001600160a01b0381166108df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610484565b6108e881610b06565b50565b6000806000806108fa856105a5565b91509150600061092d6001546103f07f000000000000000000000000000000000000000000000000000000000000000090565b905080821161094157509094909350915050565b506000958695509350505050565b6000806000806000806000806109636103bb565b925092509250600061097482610a40565b9050806109a38560127f00000000000000000000000000000000000000000000000000000000000000006109cf565b909a90995092975087965094509092505050565b60008183116109c657816109c8565b825b9392505050565b60008160ff168360ff16036109e55750826109c8565b8160ff168360ff161015610a19576109fd8383610f6b565b610a0890600a611068565b610a129085611077565b90506109c8565b610a238284610f6b565b610a2e90600a611068565b610a3890856110a7565b949350505050565b60006001600160501b03821115610aa85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b6064820152608401610484565b5090565b6000546001600160a01b031633146106c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610484565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190610f13565b5093505092509250878111610bfc57909450925090506107a8565b6000806000610c0c8b878c610c6b565b925092509250610c397f000000000000000000000000000000000000000000000000000000000000000090565b610c439042610f00565b821115610c5a57919750955093506107a892505050565b509299919850929650945050505050565b600080808080808080610c8b69ffff00000000000000008b1660016110e3565b90505b886001600160501b0316826001600160501b0316108015610cc05750806001600160501b03168a6001600160501b0316115b15610dcc5789610ccf8161110a565b604051639a6fc8f560e01b81526001600160501b0382166004820152909b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169150639a6fc8f59060240160a060405180830381865afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190610f13565b50929750909550909350506001600160501b03808616908b16148015610d8a5750600083115b610da35760008060009750975097505050505050610dd7565b8a8311610dba57509195509350909150610dd79050565b81610dc48161112d565b925050610c8e565b509195509350909150505b93509350939050565b80356001600160a01b0381168114610df757600080fd5b919050565b600060208284031215610e0e57600080fd5b6109c882610de0565b60008060408385031215610e2a57600080fd5b610e3383610de0565b946020939093013593505050565b600060208284031215610e5357600080fd5b5035919050565b6001600160501b03811681146108e857600080fd5b600060208284031215610e8157600080fd5b81356109c881610e5a565b60008060408385031215610e9f57600080fd5b50508035926020909101359150565b60008060408385031215610ec157600080fd5b610eca83610de0565b915060208301358015158114610edf57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059f5761059f610eea565b600080600080600060a08688031215610f2b57600080fd5b8551610f3681610e5a565b809550506020860151935060408601519250606086015191506080860151610f5d81610e5a565b809150509295509295909350565b60ff828116828216039081111561059f5761059f610eea565b600181815b80851115610fbf578160001904821115610fa557610fa5610eea565b80851615610fb257918102915b93841c9390800290610f89565b509250929050565b600082610fd65750600161059f565b81610fe35750600061059f565b8160018114610ff957600281146110035761101f565b600191505061059f565b60ff84111561101457611014610eea565b50506001821b61059f565b5060208310610133831016604e8410600b8410161715611042575081810a61059f565b61104c8383610f84565b806000190482111561106057611060610eea565b029392505050565b60006109c860ff841683610fc7565b80820260008212600160ff1b8414161561109357611093610eea565b818105831482151761059f5761059f610eea565b6000826110c457634e487b7160e01b600052601260045260246000fd5b600160ff1b8214600019841416156110de576110de610eea565b500590565b6001600160501b0381811683821601908082111561110357611103610eea565b5092915050565b60006001600160501b0382168061112357611123610eea565b6000190192915050565b60006001600160501b0380831681810361114957611149610eea565b600101939250505056fea26469706673582212208216491b98c1ecc221e059f95d494328ed8c71bec184d53aac216a82b7e3fe8664736f6c63430008110033a2646970667358221220cff7f06d390e1c21bd01cc495c94cd09826e90fdea328cf0a7a612aa369c343c64736f6c63430008110033"; + +type StandardChainlinkFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StandardChainlinkFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StandardChainlinkFactory__factory extends ContractFactory { + constructor(...args: StandardChainlinkFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + _maxTraversal, + _defaultUnlockers, + overrides || {} + ); + } + override deploy( + _maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + _maxTraversal, + _defaultUnlockers, + overrides || {} + ) as Promise< + StandardChainlinkFactory & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): StandardChainlinkFactory__factory { + return super.connect(runner) as StandardChainlinkFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StandardChainlinkFactoryInterface { + return new Interface(_abi) as StandardChainlinkFactoryInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): StandardChainlinkFactory { + return new Contract( + address, + _abi, + runner + ) as unknown as StandardChainlinkFactory; + } +} diff --git a/src/contract-types/factories/StandardChronicleFactory__factory.ts b/src/contract-types/factories/StandardChronicleFactory__factory.ts new file mode 100644 index 0000000..9b8c64f --- /dev/null +++ b/src/contract-types/factories/StandardChronicleFactory__factory.ts @@ -0,0 +1,291 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + StandardChronicleFactory, + StandardChronicleFactoryInterface, +} from "../StandardChronicleFactory"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "maxTraversal", + type: "uint256", + internalType: "uint256", + }, + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "MAX_TRAVERSAL", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "create", + inputs: [ + { + name: "chronicle", + type: "address", + internalType: "contract IMedian", + }, + { + name: "lockWindow", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxAge", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "oval", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "defaultUnlockers", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setDefaultUnlockers", + inputs: [ + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "DefaultUnlockersSet", + inputs: [ + { + name: "defaultUnlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OvalDeployed", + inputs: [ + { + name: "deployer", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "oval", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "lockWindow", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + { + name: "maxTraversal", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "owner", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "unlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x60a06040523480156200001157600080fd5b506040516200234c3803806200234c83398101604081905262000034916200026f565b81816200004133620000b1565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a78162000101565b505050506200039e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200010b6200015d565b805162000120906001906020840190620001bb565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015291906200034f565b60405180910390a150565b6000546001600160a01b03163314620001b95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b82805482825590600052602060002090810192821562000213579160200282015b828111156200021357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001dc565b506200022192915062000225565b5090565b5b8082111562000221576000815560010162000226565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200026a57600080fd5b919050565b600080604083850312156200028357600080fd5b8251602080850151919350906001600160401b0380821115620002a557600080fd5b818601915086601f830112620002ba57600080fd5b815181811115620002cf57620002cf6200023c565b8060051b604051601f19603f83011681018181108582111715620002f757620002f76200023c565b6040529182528482019250838101850191898311156200031657600080fd5b938501935b828510156200033f576200032f8562000252565b845293850193928501926200031b565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620003925783516001600160a01b0316835292840192918401916001016200036b565b50909695505050505050565b608051611f85620003c76000396000818160c60152818161016201526102030152611f856000f3fe60806040523480156200001157600080fd5b5060043610620000875760003560e01c8063715018a61162000062578063715018a6146200010e5780638da5cb5b146200011a578063a9d14058146200012c578063f2fde38b146200014357600080fd5b80635165da30146200008c5780635878157614620000c05780635c681d1e14620000f7575b600080fd5b620000a36200009d366004620004ca565b6200015a565b6040516001600160a01b0390911681526020015b60405180910390f35b620000e87f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620000b7565b620000a36200010836600462000502565b62000257565b6200011862000282565b005b6000546001600160a01b0316620000a3565b620001186200013d36600462000544565b6200029a565b620001186200015436600462000617565b620002f6565b6000836001847f000000000000000000000000000000000000000000000000000000000000000085620001956000546001600160a01b031690565b604051620001a39062000425565b620001b49695949392919062000689565b604051809103906000f080158015620001d1573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f0000000000000000000000000000000000000000000000000000000000000000620002356000546001600160a01b031690565b60016040516200024893929190620006d5565b60405180910390a49392505050565b600181815481106200026857600080fd5b6000918252602090912001546001600160a01b0316905081565b6200028c62000379565b620002986000620003d5565b565b620002a462000379565b8051620002b990600190602084019062000433565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae1681604051620002eb91906200070a565b60405180910390a150565b6200030062000379565b6001600160a01b0381166200036b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200037681620003d5565b50565b6000546001600160a01b03163314620002985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000362565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117f6806200075a83390190565b8280548282559060005260206000209081019282156200048b579160200282015b828111156200048b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000454565b50620004999291506200049d565b5090565b5b808211156200049957600081556001016200049e565b6001600160a01b03811681146200037657600080fd5b600080600060608486031215620004e057600080fd5b8335620004ed81620004b4565b95602085013595506040909401359392505050565b6000602082840312156200051557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356200053f81620004b4565b919050565b600060208083850312156200055857600080fd5b823567ffffffffffffffff808211156200057157600080fd5b818501915085601f8301126200058657600080fd5b8135818111156200059b576200059b6200051c565b8060051b604051601f19603f83011681018181108582111715620005c357620005c36200051c565b604052918252848201925083810185019188831115620005e257600080fd5b938501935b828510156200060b57620005fb8562000532565b84529385019392850192620005e7565b98975050505050505050565b6000602082840312156200062a57600080fd5b81356200063781620004b4565b9392505050565b6000815480845260208085019450836000528060002060005b838110156200067e5781546001600160a01b03168752958201956001918201910162000657565b509495945050505050565b600060018060a01b03808916835260c06020840152620006ad60c08401896200063e565b915086604084015285606084015284608084015280841660a084015250979650505050505050565b8381526001600160a01b038316602082015260606040820181905260009062000701908301846200063e565b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156200074d5783516001600160a01b03168352928401929184019160010162000726565b5090969550505050505056fe6101206040523480156200001257600080fd5b50604051620017f6380380620017f6833981016040819052620000359162000417565b60128685858886620000473362000258565b8381116200009c5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ee5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000093565b608084905260a083905260c081905260005b82518110156200014e576200013983828151811062000123576200012362000530565b60200260200101516001620002a860201b60201c565b80620001458162000546565b91505062000100565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a2505050506001600160a01b03811660e08190526040517f4c8947d84ec5b72893956872efb0653c066b1b7895c0cb617c7679ee0fd1efff90600090a25060ff81166101008190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a2506200024c8162000258565b5050505050506200056e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002b262000378565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003245760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000093565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620003d45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000093565b565b6001600160a01b0381168114620003ec57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b80516200041281620003d6565b919050565b60008060008060008060c087890312156200043157600080fd5b86516200043e81620003d6565b602088810151919750906001600160401b03808211156200045e57600080fd5b818a0191508a601f8301126200047357600080fd5b815181811115620004885762000488620003ef565b8060051b604051601f19603f83011681018181108582111715620004b057620004b0620003ef565b60405291825284820192508381018501918d831115620004cf57600080fd5b938501935b82851015620004f857620004e88562000405565b84529385019392850192620004d4565b809a505050505050506040870151935060608701519250608087015191506200052460a0880162000405565b90509295509295509295565b634e487b7160e01b600052603260045260246000fd5b6000600182016200056757634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e05161010051611204620005f2600039600081816101ff01528181610685015281816108b20152610b050152600081816103980152818161053401526105bb01526000818161029e0152610d3a0152600081816103660152610467015260008181610248015281816104340152610a8f01526112046000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637292eb69116100de578063bf39dd4911610097578063d6565a2d11610071578063d6565a2d146103e0578063f2fde38b146103f3578063f6e1d17a14610406578063feaf968c1461041957600080fd5b8063bf39dd4914610393578063cb53b08d146103ba578063d3fff0f6146103cd57600080fd5b80637292eb69146102ca5780638205bf6a146102ed5780638da5cb5b146102f55780639a6fc8f51461031a578063a3c0447614610364578063a5c38b3d1461038a57600080fd5b80633376f53a116101305780633376f53a146102465780633d6ba5781461027657806350d25bcd1461028c5780636666d37214610294578063687043c51461029c578063715018a6146102c257600080fd5b80630125554b1461017857806313862364146101a0578063172b09f9146101aa57806324a419f4146101dd578063313ce567146101fa57806332c6534b14610233575b600080fd5b610180610421565b604080519384526020840192909252908201526060015b60405180910390f35b6101a8610496565b005b6101cd6101b8366004610ec0565b60026020526000908152604090205460ff1681565b6040519015158152602001610197565b6101e561052c565b60408051928352602083019190915201610197565b6102217f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610197565b6101cd610241366004610edb565b61064b565b7f00000000000000000000000000000000000000000000000000000000000000005b604051908152602001610197565b6101e5610284366004610f05565b506000908190565b61026861066e565b6101a86106af565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b6101a86107d8565b6102d26107ec565b60408051825181526020928301519281019290925201610197565b610268610872565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610197565b61032d610328366004610f1e565b610885565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610197565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b61026860015481565b6103027f000000000000000000000000000000000000000000000000000000000000000081565b6101806103c8366004610f4a565b6108e9565b6101a86103db366004610f6c565b610911565b6101e56103ee366004610f05565b6109d4565b6101a8610401366004610ec0565b610a02565b6101e5610414366004610f05565b610a7b565b61032d610ad5565b600080600061048b6104656001546104567f000000000000000000000000000000000000000000000000000000000000000090565b6104609042610fbe565b610b3d565b7f00000000000000000000000000000000000000000000000000000000000000006108e9565b925092509250909192565b6104a23360015461064b565b6104f35760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b6104fb6106af565b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806105b97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357de26a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b49190610fd1565b610b55565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663262a9dff6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190610fea565b909363ffffffff90911692509050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b600080610679610421565b505090506106a98160127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b91505090565b6000806106ba61052c565b6040805180820190915282815260208101829052919350915060008290036106e157505050565b6003548015801590610724575060208201516003610700600184610fbe565b8154811061071057610710611010565b906000526020600020906002020160010154145b1561072f5750505050565b60038054600181018255600091909152825160029091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810182905560208401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c9091018190556040517ff500358c8d5c04faf9e5b933d49e928da38afad4ff748ca6cd85428485caa508906107ca9085815260200190565b60405180910390a350505050565b6107e0610c34565b6107ea6000610c8e565b565b60408051808201909152600080825260208201526003541561085a576003805461081890600190610fbe565b8154811061082857610828611010565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905090565b50604080518082019091526000808252602082015290565b60008061087d610421565b509392505050565b60008060008060008060006108a58869ffffffffffffffffffff16610a7b565b91509150876108d68360127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b9099909891975087965090945092505050565b6000806000806108f98686610cde565b80516020909101519097909650600195509350505050565b610919610c34565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036109805760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b60448201526064016104ea565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600381815481106109e457600080fd5b60009182526020909120600290910201805460019091015490915082565b610a0a610c34565b6001600160a01b038116610a6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ea565b610a7881610c8e565b50565b6001546000908190819081908190610ab3907f0000000000000000000000000000000000000000000000000000000000000000610456565b9050808211610ac757509094909350915050565b506000958695509350505050565b600080600080600080600080610ae9610421565b9250925092506000610afa82610d7e565b905080610b298560127f0000000000000000000000000000000000000000000000000000000000000000610bc3565b909a90995092975087965094509092505050565b6000818311610b4c5781610b4e565b825b9392505050565b60006001600160ff1b03821115610bbf5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016104ea565b5090565b60008160ff168360ff1603610bd9575082610b4e565b8160ff168360ff161015610c0d57610bf18383611026565b610bfc90600a611123565b610c069085611132565b9050610b4e565b610c178284611026565b610c2290600a611123565b610c2c9085611162565b949350505050565b6000546001600160a01b031633146107ea5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820190915260008082526020820152600080610cfd61052c565b60408051808201909152828152602081018290529193509150858211610d27579250610668915050565b6000610d338787610de9565b9050610d5f7f000000000000000000000000000000000000000000000000000000000000000042610fbe565b816020015110610d7457935061066892505050565b5095945050505050565b600069ffffffffffffffffffff821115610bbf5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b60648201526084016104ea565b604080518082019091526000808252602082015260408051808201909152600080825260208201526003546000905b8482108015610e275750600081115b15610e9a5780610e368161119e565b91505060038181548110610e4c57610e4c611010565b600091825260209182902060408051808201909152600290920201805482526001015491810182905293508610610e8857829350505050610668565b81610e92816111b5565b925050610e18565b5090949350505050565b80356001600160a01b0381168114610ebb57600080fd5b919050565b600060208284031215610ed257600080fd5b610b4e82610ea4565b60008060408385031215610eee57600080fd5b610ef783610ea4565b946020939093013593505050565b600060208284031215610f1757600080fd5b5035919050565b600060208284031215610f3057600080fd5b813569ffffffffffffffffffff81168114610b4e57600080fd5b60008060408385031215610f5d57600080fd5b50508035926020909101359150565b60008060408385031215610f7f57600080fd5b610f8883610ea4565b915060208301358015158114610f9d57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066857610668610fa8565b600060208284031215610fe357600080fd5b5051919050565b600060208284031215610ffc57600080fd5b815163ffffffff81168114610b4e57600080fd5b634e487b7160e01b600052603260045260246000fd5b60ff828116828216039081111561066857610668610fa8565b600181815b8085111561107a57816000190482111561106057611060610fa8565b8085161561106d57918102915b93841c9390800290611044565b509250929050565b60008261109157506001610668565b8161109e57506000610668565b81600181146110b457600281146110be576110da565b6001915050610668565b60ff8411156110cf576110cf610fa8565b50506001821b610668565b5060208310610133831016604e8410600b84101617156110fd575081810a610668565b611107838361103f565b806000190482111561111b5761111b610fa8565b029392505050565b6000610b4e60ff841683611082565b80820260008212600160ff1b8414161561114e5761114e610fa8565b818105831482151761066857610668610fa8565b60008261117f57634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561119957611199610fa8565b500590565b6000816111ad576111ad610fa8565b506000190190565b6000600182016111c7576111c7610fa8565b506001019056fea2646970667358221220823402e55e5551ab500933ba22fe47fda037e52aa7a47b54f9d880498294814264736f6c63430008110033a2646970667358221220e260d64872f450ee4dddaf165b391ef1b74d817835b6f3b894af501c551524f664736f6c63430008110033"; + +type StandardChronicleFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StandardChronicleFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StandardChronicleFactory__factory extends ContractFactory { + constructor(...args: StandardChronicleFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + maxTraversal, + _defaultUnlockers, + overrides || {} + ); + } + override deploy( + maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + maxTraversal, + _defaultUnlockers, + overrides || {} + ) as Promise< + StandardChronicleFactory & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): StandardChronicleFactory__factory { + return super.connect(runner) as StandardChronicleFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StandardChronicleFactoryInterface { + return new Interface(_abi) as StandardChronicleFactoryInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): StandardChronicleFactory { + return new Contract( + address, + _abi, + runner + ) as unknown as StandardChronicleFactory; + } +} diff --git a/src/contract-types/factories/StandardCoinbaseFactory__factory.ts b/src/contract-types/factories/StandardCoinbaseFactory__factory.ts new file mode 100644 index 0000000..dc00da7 --- /dev/null +++ b/src/contract-types/factories/StandardCoinbaseFactory__factory.ts @@ -0,0 +1,313 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + StandardCoinbaseFactory, + StandardCoinbaseFactoryInterface, +} from "../StandardCoinbaseFactory"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_source", + type: "address", + internalType: "contract IAggregatorV3SourceCoinbase", + }, + { + name: "_maxTraversal", + type: "uint256", + internalType: "uint256", + }, + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "MAX_TRAVERSAL", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "SOURCE", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IAggregatorV3SourceCoinbase", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "create", + inputs: [ + { + name: "ticker", + type: "string", + internalType: "string", + }, + { + name: "lockWindow", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxAge", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "oval", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "defaultUnlockers", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setDefaultUnlockers", + inputs: [ + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "DefaultUnlockersSet", + inputs: [ + { + name: "defaultUnlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OvalDeployed", + inputs: [ + { + name: "deployer", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "oval", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "lockWindow", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + { + name: "maxTraversal", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "owner", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "unlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b506040516200286138038062002861833981016040819052620000349162000289565b81816200004133620000bd565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a7816200010d565b505050506001600160a01b031660a052620003cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200011762000169565b80516200012c906001906020840190620001c7565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015e91906200037d565b60405180910390a150565b6000546001600160a01b03163314620001c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b8280548282559060005260206000209081019282156200021f579160200282015b828111156200021f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001e8565b506200022d92915062000231565b5090565b5b808211156200022d576000815560010162000232565b6001600160a01b03811681146200025e57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b8051620002848162000248565b919050565b6000806000606084860312156200029f57600080fd5b8351620002ac8162000248565b60208581015160408701519295509350906001600160401b0380821115620002d357600080fd5b818701915087601f830112620002e857600080fd5b815181811115620002fd57620002fd62000261565b8060051b604051601f19603f8301168101818110858211171562000325576200032562000261565b60405291825284820192508381018501918a8311156200034457600080fd5b938501935b828510156200036d576200035d8562000277565b8452938501939285019262000349565b8096505050505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015620003c05783516001600160a01b03168352928401929184019160010162000399565b50909695505050505050565b60805160a05161245b62000406600039600081816101550152610231015260008181609e0152818161025601526102f8015261245b6000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063a9d140581162000062578063a9d140581462000121578063cda3c4991462000138578063f230b4c2146200014f578063f2fde38b146200017757600080fd5b80635878157614620000985780635c681d1e14620000d3578063715018a614620001035780638da5cb5b146200010f575b600080fd5b620000c07f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b620000ea620000e43660046200050a565b6200018e565b6040516001600160a01b039091168152602001620000ca565b6200010d620001b9565b005b6000546001600160a01b0316620000ea565b6200010d620001323660046200058b565b620001d1565b620000ea6200014936600462000645565b6200022d565b620000ea7f000000000000000000000000000000000000000000000000000000000000000081565b6200010d62000188366004620006f4565b6200034c565b600181815481106200019f57600080fd5b6000918252602090912001546001600160a01b0316905081565b620001c3620003cf565b620001cf60006200042b565b565b620001db620003cf565b8051620001f09060019060208401906200047b565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae168160405162000222919062000719565b60405180910390a150565b60007f0000000000000000000000000000000000000000000000000000000000000000846001857f000000000000000000000000000000000000000000000000000000000000000086620002896000546001600160a01b031690565b6040516200029790620004e5565b620002a99796959493929190620007b3565b604051809103906000f080158015620002c6573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f00000000000000000000000000000000000000000000000000000000000000006200032a6000546001600160a01b031690565b60016040516200033d9392919062000850565b60405180910390a49392505050565b62000356620003cf565b6001600160a01b038116620003c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620003cc816200042b565b50565b6000546001600160a01b03163314620001cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003b8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215620004d3579160200282015b82811115620004d357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200049c565b50620004e1929150620004f3565b5090565b611ba0806200088683390190565b5b80821115620004e15760008155600101620004f4565b6000602082840312156200051d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562000566576200056662000524565b604052919050565b80356001600160a01b03811681146200058657600080fd5b919050565b600060208083850312156200059f57600080fd5b823567ffffffffffffffff80821115620005b857600080fd5b818501915085601f830112620005cd57600080fd5b813581811115620005e257620005e262000524565b8060051b9150620005f58483016200053a565b81815291830184019184810190888411156200061057600080fd5b938501935b83851015620006395762000629856200056e565b8252938501939085019062000615565b98975050505050505050565b6000806000606084860312156200065b57600080fd5b833567ffffffffffffffff808211156200067457600080fd5b818601915086601f8301126200068957600080fd5b8135602082821115620006a057620006a062000524565b620006b4601f8301601f191682016200053a565b92508183528881838601011115620006cb57600080fd5b818185018285013760009183018101919091529097908601359650604090950135949350505050565b6000602082840312156200070757600080fd5b62000712826200056e565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156200075c5783516001600160a01b03168352928401929184019160010162000735565b50909695505050505050565b6000815480845260208085019450836000528060002060005b83811015620007a85781546001600160a01b03168752958201956001918201910162000781565b509495945050505050565b60018060a01b03881681526000602060e08184015288518060e085015260005b81811015620007f2578a810183015185820161010001528201620007d3565b5061010091506000828286010152601f19601f8201168401905081848203016040850152620008248282018a62000768565b925050508560608301528460808301528360a08301526200063960c08301846001600160a01b03169052565b8381526001600160a01b03831660208201526060604082018190526000906200087c9083018462000768565b9594505050505056fe6101406040523480156200001257600080fd5b5060405162001ba038038062001ba0833981016040819052620000359162000588565b6012878786868987620000483362000303565b8381116200009d5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ef5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000094565b608084905260a083905260c081905260005b82518110156200014f576200013a838281518110620001245762000124620006a8565b602002602001015160016200035360201b60201c565b806200014681620006be565b91505062000101565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a250505050816001600160a01b031660e0816001600160a01b031681525050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002549190620006e6565b60ff16610100526003620002698282620007a1565b506101005160ff16826001600160a01b03167fb7ffc5864a1db85fbcfd710dabae631a2bafb39438fe25dfcb5687aea2a9ee2c6003604051620002ad91906200086d565b60405180910390a3505060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002f68162000303565b5050505050505062000900565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200035d62000423565b6001600160a01b03821660009081526002602052604090205481151560ff909116151503620003cf5760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000094565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b031633146200047f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000094565b565b6001600160a01b03811681146200049757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620004db57620004db6200049a565b604052919050565b8051620004f08162000481565b919050565b600082601f8301126200050757600080fd5b815160206001600160401b038211156200052557620005256200049a565b8160051b62000536828201620004b0565b92835284810182019282810190878511156200055157600080fd5b83870192505b848310156200057d5782516200056d8162000481565b8252918301919083019062000557565b979650505050505050565b600080600080600080600060e0888a031215620005a457600080fd5b8751620005b18162000481565b602089810151919850906001600160401b0380821115620005d157600080fd5b818b0191508b601f830112620005e657600080fd5b815181811115620005fb57620005fb6200049a565b6200060f601f8201601f19168501620004b0565b8181528d858386010111156200062457600080fd5b60005b828110156200064457848101860151828201870152850162000627565b5060009181019094015260408b0151929850808311156200066457600080fd5b5050620006748a828b01620004f5565b955050606088015193506080880151925060a088015191506200069a60c08901620004e3565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b600060018201620006df57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215620006f957600080fd5b815160ff811681146200070b57600080fd5b9392505050565b600181811c908216806200072757607f821691505b6020821081036200074857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200079c57600081815260208120601f850160051c81016020861015620007775750805b601f850160051c820191505b81811015620007985782815560010162000783565b5050505b505050565b81516001600160401b03811115620007bd57620007bd6200049a565b620007d581620007ce845462000712565b846200074e565b602080601f8311600181146200080d5760008415620007f45750858301515b600019600386901b1c1916600185901b17855562000798565b600085815260208120601f198616915b828110156200083e578886015182559484019460019091019084016200081d565b50858210156200085d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080835260008454620008838162000712565b80848701526040600180841660008114620008a75760018114620008c257620008f2565b60ff1985168984015283151560051b890183019550620008f2565b896000528660002060005b85811015620008ea5781548b8201860152908301908801620008cd565b8a0184019650505b509398975050505050505050565b60805160a05160c05160e05161010051610120516112036200099d600039600081816101e4015281816105e501528181610660015261093c01526000818161057c01526106b301526000818161038a015281816104e501528181610ab10152610c6c01526000818161027b0152610b6d01526000818161031d015261042001526000818161022d015281816103ed01526108c601526112036000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638205bf6a116100c3578063d3fff0f61161007c578063d3fff0f61461035d578063d54db2c014610370578063dc46c1dd14610385578063f2fde38b146103ac578063f6e1d17a146103bf578063feaf968c146103d257600080fd5b80638205bf6a146102a75780638da5cb5b146102af5780639a6fc8f5146102d4578063a3c044761461031b578063a5c38b3d14610341578063cb53b08d1461034a57600080fd5b80633376f53a116101155780633376f53a1461022b5780633d6ba5781461025b57806350d25bcd146102715780636666d3721461018d578063687043c514610279578063715018a61461029f57600080fd5b80630125554b1461015d5780631386236414610185578063172b09f91461018f57806324a419f4146101c2578063313ce567146101df57806332c6534b14610218575b600080fd5b6101656103da565b604080519384526020840192909252908201526060015b60405180910390f35b61018d61044f565b005b6101b261019d366004610d50565b60026020526000908152604090205460ff1681565b604051901515815260200161017c565b6101ca6104dd565b6040805192835260208301919091520161017c565b6102067f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161017c565b6101b2610226366004610d6b565b6105ab565b7f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161017c565b6101ca610269366004610d95565b506000908190565b61024d6105ce565b7f000000000000000000000000000000000000000000000000000000000000000061024d565b61018d610611565b61024d610623565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161017c565b6102e76102e2366004610dc3565b610636565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a00161017c565b7f000000000000000000000000000000000000000000000000000000000000000061024d565b61024d60015481565b610165610358366004610de0565b610697565b61018d61036b366004610e02565b6106e8565b6103786107ab565b60405161017c9190610e3e565b6102bc7f000000000000000000000000000000000000000000000000000000000000000081565b61018d6103ba366004610d50565b610839565b6101ca6103cd366004610d95565b6108b2565b6102e761090c565b600080600061044461041e60015461040f7f000000000000000000000000000000000000000000000000000000000000000090565b6104199042610ea2565b610974565b7f0000000000000000000000000000000000000000000000000000000000000000610697565b925092509250909192565b61045b336001546105ab565b6104ac5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333f98c7760036040518263ffffffff1660e01b81526004016105309190610f93565b606060405180830381865afa15801561054d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105719190610fa6565b92509250506105a2827f0000000000000000000000000000000000000000000000000000000000000000601261098c565b94909350915050565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b6000806105d96103da565b505090506106098160127f000000000000000000000000000000000000000000000000000000000000000061098c565b91505090565b565b6106196109fd565b61060f6000610a57565b60008061062e6103da565b509392505050565b6000806000806000806000610653886001600160501b03166108b2565b91509150876106848360127f000000000000000000000000000000000000000000000000000000000000000061098c565b9099909891975087965090945092505050565b60008060008060006106a98787610aa7565b915091506106d9827f0000000000000000000000000000000000000000000000000000000000000000601261098c565b97909650600195509350505050565b6106f06109fd565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036107575760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b60448201526064016104a3565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600380546107b890610eb5565b80601f01602080910402602001604051908101604052809291908181526020018280546107e490610eb5565b80156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b505050505081565b6108416109fd565b6001600160a01b0381166108a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a3565b6108af81610a57565b50565b60015460009081908190819081906108ea907f000000000000000000000000000000000000000000000000000000000000000061040f565b90508082116108fe57509094909350915050565b506000958695509350505050565b6000806000806000806000806109206103da565b925092509250600061093182610bbe565b9050806109608560127f000000000000000000000000000000000000000000000000000000000000000061098c565b909a90995092975087965094509092505050565b60008183116109835781610985565b825b9392505050565b60008160ff168360ff16036109a2575082610985565b8160ff168360ff1610156109d6576109ba8383610fdd565b6109c590600a6110da565b6109cf90856110e9565b9050610985565b6109e08284610fdd565b6109eb90600a6110da565b6109f59085611119565b949350505050565b6000546001600160a01b0316331461060f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166333f98c7760036040518263ffffffff1660e01b8152600401610afc9190610f93565b606060405180830381865afa158015610b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3d9190610fa6565b925092509250868111610b56579093509150610bb79050565b600080610b6489868a610c2a565b91509150610b8f7f000000000000000000000000000000000000000000000000000000000000000090565b610b999042610ea2565b811115610bae579095509350610bb792505050565b50919450925050505b9250929050565b60006001600160501b03821115610c265760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b60648201526084016104a3565b5090565b600080808060015b85816001600160501b031611158015610c5d5750806001600160501b0316876001600160501b031610155b15610d25576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636471a6806003610c9d848b611155565b6040518363ffffffff1660e01b8152600401610cba92919061117c565b606060405180830381865afa158015610cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfb9190610fa6565b909450925050878211610d1357509092509050610d2c565b80610d1d816111a7565b915050610c32565b5090925090505b935093915050565b80356001600160a01b0381168114610d4b57600080fd5b919050565b600060208284031215610d6257600080fd5b61098582610d34565b60008060408385031215610d7e57600080fd5b610d8783610d34565b946020939093013593505050565b600060208284031215610da757600080fd5b5035919050565b6001600160501b03811681146108af57600080fd5b600060208284031215610dd557600080fd5b813561098581610dae565b60008060408385031215610df357600080fd5b50508035926020909101359150565b60008060408385031215610e1557600080fd5b610e1e83610d34565b915060208301358015158114610e3357600080fd5b809150509250929050565b600060208083528351808285015260005b81811015610e6b57858101830151858201604001528201610e4f565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105c8576105c8610e8c565b600181811c90821680610ec957607f821691505b602082108103610ee957634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c9080831680610f0957607f831692505b60208084108203610f2a57634e487b7160e01b600052602260045260246000fd5b83885260208801828015610f455760018114610f5b57610f86565b60ff198716825285151560051b82019750610f86565b60008981526020902060005b87811015610f8057815484820152908601908401610f67565b83019850505b5050505050505092915050565b6020815260006109856020830184610eef565b600080600060608486031215610fbb57600080fd5b8351610fc681610dae565b602085015160409095015190969495509392505050565b60ff82811682821603908111156105c8576105c8610e8c565b600181815b8085111561103157816000190482111561101757611017610e8c565b8085161561102457918102915b93841c9390800290610ffb565b509250929050565b600082611048575060016105c8565b81611055575060006105c8565b816001811461106b576002811461107557611091565b60019150506105c8565b60ff84111561108657611086610e8c565b50506001821b6105c8565b5060208310610133831016604e8410600b84101617156110b4575081810a6105c8565b6110be8383610ff6565b80600019048211156110d2576110d2610e8c565b029392505050565b600061098560ff841683611039565b80820260008212600160ff1b8414161561110557611105610e8c565b81810583148215176105c8576105c8610e8c565b60008261113657634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561115057611150610e8c565b500590565b6001600160501b0382811682821603908082111561117557611175610e8c565b5092915050565b60408152600061118f6040830185610eef565b90506001600160501b03831660208301529392505050565b60006001600160501b038083168181036111c3576111c3610e8c565b600101939250505056fea2646970667358221220118ad657518d5c4a3385f25c97ea62cae7b6893002200743ee1886def38211d564736f6c63430008110033a26469706673582212200d1b11783969f3f8e9b08893f3025e4452bc5b3ad6521351d8572ce27093ac4e64736f6c63430008110033"; + +type StandardCoinbaseFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StandardCoinbaseFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StandardCoinbaseFactory__factory extends ContractFactory { + constructor(...args: StandardCoinbaseFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _source: AddressLike, + _maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + _source, + _maxTraversal, + _defaultUnlockers, + overrides || {} + ); + } + override deploy( + _source: AddressLike, + _maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + _source, + _maxTraversal, + _defaultUnlockers, + overrides || {} + ) as Promise< + StandardCoinbaseFactory & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): StandardCoinbaseFactory__factory { + return super.connect(runner) as StandardCoinbaseFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StandardCoinbaseFactoryInterface { + return new Interface(_abi) as StandardCoinbaseFactoryInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): StandardCoinbaseFactory { + return new Contract( + address, + _abi, + runner + ) as unknown as StandardCoinbaseFactory; + } +} diff --git a/src/contract-types/factories/StandardPythFactory__factory.ts b/src/contract-types/factories/StandardPythFactory__factory.ts new file mode 100644 index 0000000..2c3da7c --- /dev/null +++ b/src/contract-types/factories/StandardPythFactory__factory.ts @@ -0,0 +1,313 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + StandardPythFactory, + StandardPythFactoryInterface, +} from "../StandardPythFactory"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_pyth", + type: "address", + internalType: "contract IPyth", + }, + { + name: "_maxTraversal", + type: "uint256", + internalType: "uint256", + }, + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "MAX_TRAVERSAL", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PYTH", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IPyth", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "create", + inputs: [ + { + name: "pythPriceId", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "lockWindow", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxAge", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "oval", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "defaultUnlockers", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setDefaultUnlockers", + inputs: [ + { + name: "_defaultUnlockers", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "DefaultUnlockersSet", + inputs: [ + { + name: "defaultUnlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OvalDeployed", + inputs: [ + { + name: "deployer", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "oval", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "lockWindow", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + { + name: "maxTraversal", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "owner", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "unlockers", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b506040516200247538038062002475833981016040819052620000349162000289565b81816200004133620000bd565b60008211620000975760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e20300000000000000060448201526064015b60405180910390fd5b6080829052620000a7816200010d565b505050506001600160a01b031660a052620003cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200011762000169565b80516200012c906001906020840190620001c7565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200015e91906200037d565b60405180910390a150565b6000546001600160a01b03163314620001c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200008e565b565b8280548282559060005260206000209081019282156200021f579160200282015b828111156200021f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001e8565b506200022d92915062000231565b5090565b5b808211156200022d576000815560010162000232565b6001600160a01b03811681146200025e57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b8051620002848162000248565b919050565b6000806000606084860312156200029f57600080fd5b8351620002ac8162000248565b60208581015160408701519295509350906001600160401b0380821115620002d357600080fd5b818701915087601f830112620002e857600080fd5b815181811115620002fd57620002fd62000261565b8060051b604051601f19603f8301168101818110858211171562000325576200032562000261565b60405291825284820192508381018501918a8311156200034457600080fd5b938501935b828510156200036d576200035d8562000277565b8452938501939285019262000349565b8096505050505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015620003c05783516001600160a01b03168352928401929184019160010162000399565b50909695505050505050565b60805160a05161206f62000406600039600081816101090152610231015260008181609e0152818161025601526102f8015261206f6000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c80638da5cb5b11620000625780638da5cb5b1462000137578063a9d140581462000149578063b5f8c36b1462000160578063f2fde38b146200017757600080fd5b80635878157614620000985780635c681d1e14620000d357806367e406d51462000103578063715018a6146200012b575b600080fd5b620000c07f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b620000ea620000e43660046200050a565b6200018e565b6040516001600160a01b039091168152602001620000ca565b620000ea7f000000000000000000000000000000000000000000000000000000000000000081565b62000135620001b9565b005b6000546001600160a01b0316620000ea565b620001356200015a36600462000557565b620001d1565b620000ea620001713660046200062a565b6200022d565b620001356200018836600462000657565b6200034c565b600181815481106200019f57600080fd5b6000918252602090912001546001600160a01b0316905081565b620001c3620003cf565b620001cf60006200042b565b565b620001db620003cf565b8051620001f09060019060208401906200047b565b507f53dcea6cd8a9fb42c53d0155aebceb09df1f90371ee9727c244f6557223bae16816040516200022291906200067c565b60405180910390a150565b60007f0000000000000000000000000000000000000000000000000000000000000000846001857f000000000000000000000000000000000000000000000000000000000000000086620002896000546001600160a01b031690565b6040516200029790620004e5565b620002a9979695949392919062000716565b604051809103906000f080158015620002c6573d6000803e3d6000fd5b509050826001600160a01b038216337f5e826bc8ad243559fc75cc77b0e474a2ec85df26aeb5cd6db9d9ed1740f39afa7f00000000000000000000000000000000000000000000000000000000000000006200032a6000546001600160a01b031690565b60016040516200033d9392919062000769565b60405180910390a49392505050565b62000356620003cf565b6001600160a01b038116620003c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620003cc816200042b565b50565b6000546001600160a01b03163314620001cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003b8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215620004d3579160200282015b82811115620004d357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200049c565b50620004e1929150620004f3565b5090565b61189b806200079f83390190565b5b80821115620004e15760008155600101620004f4565b6000602082840312156200051d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146200055257600080fd5b919050565b600060208083850312156200056b57600080fd5b823567ffffffffffffffff808211156200058457600080fd5b818501915085601f8301126200059957600080fd5b813581811115620005ae57620005ae62000524565b8060051b604051601f19603f83011681018181108582111715620005d657620005d662000524565b604052918252848201925083810185019188831115620005f557600080fd5b938501935b828510156200061e576200060e856200053a565b84529385019392850192620005fa565b98975050505050505050565b6000806000606084860312156200064057600080fd5b505081359360208301359350604090920135919050565b6000602082840312156200066a57600080fd5b62000675826200053a565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015620006bf5783516001600160a01b03168352928401929184019160010162000698565b50909695505050505050565b6000815480845260208085019450836000528060002060005b838110156200070b5781546001600160a01b031687529582019560019182019101620006e4565b509495945050505050565b600060018060a01b03808a16835288602084015260e060408401526200074060e0840189620006cb565b91508660608401528560808401528460a084015280841660c08401525098975050505050505050565b8381526001600160a01b03831660208201526060604082018190526000906200079590830184620006cb565b9594505050505056fe6101406040523480156200001257600080fd5b506040516200189b3803806200189b833981016040819052620000359162000422565b6012878786868987620000483362000263565b8381116200009d5760405162461bcd60e51b815260206004820152601d60248201527f4d617820616765206e6f742061626f7665206c6f636b2077696e646f7700000060448201526064015b60405180910390fd5b60008311620000ef5760405162461bcd60e51b815260206004820152601960248201527f4d61782074726176657273616c206d757374206265203e203000000000000000604482015260640162000094565b608084905260a083905260c081905260005b82518110156200014f576200013a83828151811062000124576200012462000546565b60200260200101516001620002b360201b60201c565b8062000146816200055c565b91505062000101565b5060405184907f7232430c38d2db810b464dc9cd004f0e41528c6ba2eb1e2e4e3220ffd3a83a1b90600090a260405183907f9955b343f0b35bf4c2045c06550a8ec2d914db72d497a1430ca3526a248f20a590600090a260405181907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c08187090600090a25050506001600160a01b03831660e08190526101008390526040518392507f352ffb84cbc39305b8921ad0af26cbf5ecd6bb8034fe313ce472d107f5650f6290600090a3505060ff81166101208190526040517f4e500e16c773a18df7642e2d86cfe357eab156473b38c34df4e15dffb895072690600090a250620002568162000263565b5050505050505062000584565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002bd62000383565b6001600160a01b03821660009081526002602052604090205481151560ff9091161515036200032f5760405162461bcd60e51b815260206004820152601460248201527f556e6c6f636b6572206e6f74206368616e676564000000000000000000000000604482015260640162000094565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b6000546001600160a01b03163314620003df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000094565b565b6001600160a01b0381168114620003f757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b80516200041d81620003e1565b919050565b600080600080600080600060e0888a0312156200043e57600080fd5b87516200044b81620003e1565b60208981015160408b01519299509750906001600160401b03808211156200047257600080fd5b818b0191508b601f8301126200048757600080fd5b8151818111156200049c576200049c620003fa565b8060051b604051601f19603f83011681018181108582111715620004c457620004c4620003fa565b60405291825284820192508381018501918e831115620004e357600080fd5b938501935b828510156200050c57620004fc8562000410565b84529385019392850192620004e8565b809a50505050505050606088015193506080880151925060a088015191506200053860c0890162000410565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b6000600182016200057d57634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051611288620006136000396000818161024f01528181610684015281816108b10152610b040152600081816101c001526105850152600081816102df01526105ba0152600081816103230152610d030152600081816103d701526104b10152600081816102980152818161047e0152610a8e01526112886000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a5c38b3d11610097578063d6565a2d11610071578063d6565a2d1461042a578063f2fde38b1461043d578063f6e1d17a14610450578063feaf968c1461046357600080fd5b8063a5c38b3d146103fb578063cb53b08d14610404578063d3fff0f61461041757600080fd5b8063715018a6146103475780637292eb691461034f5780638205bf6a146103725780638da5cb5b1461037a5780639a6fc8f51461038b578063a3c04476146103d557600080fd5b806332c6534b1161014b57806350d25bcd1161012557806350d25bcd146102d257806363a890a5146102da5780636666d37214610319578063687043c51461032157600080fd5b806332c6534b146102835780633376f53a146102965780633d6ba578146102bc57600080fd5b80630125554b146101935780630cb0f4fa146101bb57806313862364146101f0578063172b09f9146101fa57806324a419f41461022d578063313ce5671461024a575b600080fd5b61019b61046b565b604080519384526020840192909252908201526060015b60405180910390f35b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101b2565b6101f86104e0565b005b61021d610208366004610e8d565b60026020526000908152604090205460ff1681565b60405190151581526020016101b2565b610235610576565b604080519283526020830191909152016101b2565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101b2565b61021d610291366004610ea8565b61064a565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6102356102ca366004610ed2565b506000908190565b6101e261066d565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b2565b6101f86106ae565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6101f86107d7565b6103576107eb565b604080518251815260209283015192810192909252016101b2565b6101e2610871565b6000546001600160a01b0316610301565b61039e610399366004610eeb565b610884565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016101b2565b7f00000000000000000000000000000000000000000000000000000000000000006101e2565b6101e260015481565b61019b610412366004610f17565b6108e8565b6101f8610425366004610f39565b610910565b610235610438366004610ed2565b6109d3565b6101f861044b366004610e8d565b610a01565b61023561045e366004610ed2565b610a7a565b61039e610ad4565b60008060006104d56104af6001546104a07f000000000000000000000000000000000000000000000000000000000000000090565b6104aa9042610f8b565b610b3c565b7f00000000000000000000000000000000000000000000000000000000000000006108e8565b925092509250909192565b6104ec3360015461064a565b61053d5760405162461bcd60e51b815260206004820152601d60248201527f436f6e74726f6c6c657220626c6f636b65643a2063616e556e6c6f636b00000060448201526064015b60405180910390fd5b6105456106ae565b4260018190556040517f3ee2ed8fd57cf3bdf05ef91fbe207825c00ef41e2303a859c67a84cd46cd69aa90600090a2565b6040516396834ad360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152600090819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396834ad390602401608060405180830381865afa158015610601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106259190610fc8565b905061063c816000015160070b8260400151610b54565b816060015192509250509091565b6001600160a01b03821660009081526002602052604090205460ff165b92915050565b60008061067861046b565b505090506106a88160127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b91505090565b6000806106b9610576565b6040805180820190915282815260208101829052919350915060008290036106e057505050565b60035480158015906107235750602082015160036106ff600184610f8b565b8154811061070f5761070f611058565b906000526020600020906002020160010154145b1561072e5750505050565b60038054600181018255600091909152825160029091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810182905560208401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c9091018190556040517ff500358c8d5c04faf9e5b933d49e928da38afad4ff748ca6cd85428485caa508906107c99085815260200190565b60405180910390a350505050565b6107df610bfd565b6107e96000610c57565b565b604080518082019091526000808252602082015260035415610859576003805461081790600190610f8b565b8154811061082757610827611058565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905090565b50604080518082019091526000808252602082015290565b60008061087c61046b565b509392505050565b60008060008060008060006108a48869ffffffffffffffffffff16610a7a565b91509150876108d58360127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b9099909891975087965090945092505050565b6000806000806108f88686610ca7565b80516020909101519097909650600195509350505050565b610918610bfd565b6001600160a01b03821660009081526002602052604090205481151560ff90911615150361097f5760405162461bcd60e51b8152602060048201526014602482015273155b9b1bd8dad95c881b9bdd0818da185b99d95960621b6044820152606401610534565b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917f60209f49f531418079ff149eb1d71f100566dcaba03bf5a34930e08111df20c491a35050565b600381815481106109e357600080fd5b60009182526020909120600290910201805460019091015490915082565b610a09610bfd565b6001600160a01b038116610a6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610534565b610a7781610c57565b50565b6001546000908190819081908190610ab2907f00000000000000000000000000000000000000000000000000000000000000006104a0565b9050808211610ac657509094909350915050565b506000958695509350505050565b600080600080600080600080610ae861046b565b9250925092506000610af982610d47565b905080610b288560127f0000000000000000000000000000000000000000000000000000000000000000610b8c565b909a90995092975087965094509092505050565b6000818311610b4b5781610b4d565b825b9392505050565b6000808260030b13610b7b57610b7483610b6d8461106e565b6012610b8c565b9050610667565b610b74836000610b8c856012611091565b60008160ff168360ff1603610ba2575082610b4d565b8160ff168360ff161015610bd657610bba83836110aa565b610bc590600a6111a7565b610bcf90856111b6565b9050610b4d565b610be082846110aa565b610beb90600a6111a7565b610bf590856111e6565b949350505050565b6000546001600160a01b031633146107e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610534565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820190915260008082526020820152600080610cc6610576565b60408051808201909152828152602081018290529193509150858211610cf0579250610667915050565b6000610cfc8787610db6565b9050610d287f000000000000000000000000000000000000000000000000000000000000000042610f8b565b816020015110610d3d57935061066792505050565b5095945050505050565b600069ffffffffffffffffffff821115610db25760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201526530206269747360d01b6064820152608401610534565b5090565b604080518082019091526000808252602082015260408051808201909152600080825260208201526003546000905b8482108015610df45750600081115b15610e675780610e0381611222565b91505060038181548110610e1957610e19611058565b600091825260209182902060408051808201909152600290920201805482526001015491810182905293508610610e5557829350505050610667565b81610e5f81611239565b925050610de5565b5090949350505050565b80356001600160a01b0381168114610e8857600080fd5b919050565b600060208284031215610e9f57600080fd5b610b4d82610e71565b60008060408385031215610ebb57600080fd5b610ec483610e71565b946020939093013593505050565b600060208284031215610ee457600080fd5b5035919050565b600060208284031215610efd57600080fd5b813569ffffffffffffffffffff81168114610b4d57600080fd5b60008060408385031215610f2a57600080fd5b50508035926020909101359150565b60008060408385031215610f4c57600080fd5b610f5583610e71565b915060208301358015158114610f6a57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066757610667610f75565b805167ffffffffffffffff81168114610e8857600080fd5b8051600381900b8114610e8857600080fd5b600060808284031215610fda57600080fd5b6040516080810181811067ffffffffffffffff8211171561100b57634e487b7160e01b600052604160045260246000fd5b6040528251600781900b811461102057600080fd5b815261102e60208401610f9e565b602082015261103f60408401610fb6565b6040820152606083015160608201528091505092915050565b634e487b7160e01b600052603260045260246000fd5b60008160030b637fffffff19810361108857611088610f75565b60000392915050565b60ff818116838216019081111561066757610667610f75565b60ff828116828216039081111561066757610667610f75565b600181815b808511156110fe5781600019048211156110e4576110e4610f75565b808516156110f157918102915b93841c93908002906110c8565b509250929050565b60008261111557506001610667565b8161112257506000610667565b816001811461113857600281146111425761115e565b6001915050610667565b60ff84111561115357611153610f75565b50506001821b610667565b5060208310610133831016604e8410600b8410161715611181575081810a610667565b61118b83836110c3565b806000190482111561119f5761119f610f75565b029392505050565b6000610b4d60ff841683611106565b80820260008212600160ff1b841416156111d2576111d2610f75565b818105831482151761066757610667610f75565b60008261120357634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561121d5761121d610f75565b500590565b60008161123157611231610f75565b506000190190565b60006001820161124b5761124b610f75565b506001019056fea2646970667358221220662f7349fbc887eb9f161c891dd25d33d52ca8972b31ab24bae686207dea5a5b64736f6c63430008110033a2646970667358221220dfead5361a611dc3d5db7724f56838800d56fa4c22436670a9c438451b33be6664736f6c63430008110033"; + +type StandardPythFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StandardPythFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StandardPythFactory__factory extends ContractFactory { + constructor(...args: StandardPythFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _pyth: AddressLike, + _maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + _pyth, + _maxTraversal, + _defaultUnlockers, + overrides || {} + ); + } + override deploy( + _pyth: AddressLike, + _maxTraversal: BigNumberish, + _defaultUnlockers: AddressLike[], + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + _pyth, + _maxTraversal, + _defaultUnlockers, + overrides || {} + ) as Promise< + StandardPythFactory & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): StandardPythFactory__factory { + return super.connect(runner) as StandardPythFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StandardPythFactoryInterface { + return new Interface(_abi) as StandardPythFactoryInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): StandardPythFactory { + return new Contract( + address, + _abi, + runner + ) as unknown as StandardPythFactory; + } +} diff --git a/src/contract-types/factories/index.ts b/src/contract-types/factories/index.ts new file mode 100644 index 0000000..6668103 --- /dev/null +++ b/src/contract-types/factories/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { PermissionProxy__factory } from "./PermissionProxy__factory"; +export { StandardChainlinkFactory__factory } from "./StandardChainlinkFactory__factory"; +export { StandardChronicleFactory__factory } from "./StandardChronicleFactory__factory"; +export { StandardCoinbaseFactory__factory } from "./StandardCoinbaseFactory__factory"; +export { StandardPythFactory__factory } from "./StandardPythFactory__factory"; diff --git a/src/contract-types/index.ts b/src/contract-types/index.ts new file mode 100644 index 0000000..ded799b --- /dev/null +++ b/src/contract-types/index.ts @@ -0,0 +1,14 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { PermissionProxy } from "./PermissionProxy"; +export type { StandardChainlinkFactory } from "./StandardChainlinkFactory"; +export type { StandardChronicleFactory } from "./StandardChronicleFactory"; +export type { StandardCoinbaseFactory } from "./StandardCoinbaseFactory"; +export type { StandardPythFactory } from "./StandardPythFactory"; +export * as factories from "./factories"; +export { PermissionProxy__factory } from "./factories/PermissionProxy__factory"; +export { StandardChainlinkFactory__factory } from "./factories/StandardChainlinkFactory__factory"; +export { StandardChronicleFactory__factory } from "./factories/StandardChronicleFactory__factory"; +export { StandardCoinbaseFactory__factory } from "./factories/StandardCoinbaseFactory__factory"; +export { StandardPythFactory__factory } from "./factories/StandardPythFactory__factory"; diff --git a/src/lib/ovalDiscovery.ts b/src/lib/ovalDiscovery.ts new file mode 100644 index 0000000..2fff4d9 --- /dev/null +++ b/src/lib/ovalDiscovery.ts @@ -0,0 +1,167 @@ +import { JsonRpcProvider, Wallet, getAddress } from "ethers"; +import { OvalConfigs, OvalConfigsShared } from "./types"; +import { retrieveGckmsKey } from "./gckms"; +import { env } from "./env"; +import { isMochaTest } from "./helpers"; + + + +// WalletManager class to handle wallet operations. +export class WalletManager { + private static instance: WalletManager; + private wallets: Record = {}; + private sharedWallets: Map = new Map(); + private sharedWalletUsage: Map> = new Map(); + private provider: JsonRpcProvider; + + private constructor(provider: JsonRpcProvider) { + this.provider = provider; + this.setupCleanupInterval(); + } + + // Singleton pattern to get an instance of WalletManager + public static getInstance(provider: JsonRpcProvider): WalletManager { + if (!WalletManager.instance) { + WalletManager.instance = new WalletManager(provider); + } + return WalletManager.instance; + } + + // Initialize wallets with configurations + public async initialize(ovalConfigs: OvalConfigs, sharedConfigs?: OvalConfigsShared): Promise { + await this.initializeWallets(ovalConfigs); + if (sharedConfigs) { + await this.initializeSharedWallets(sharedConfigs); + } + } + + // Get a wallet for a given address + public getWallet(address: string, targetBlock: number): Wallet { + const checkSummedAddress = getAddress(address); + const wallet = this.wallets[checkSummedAddress]; + if (!wallet) { + return this.getSharedWallet(address, targetBlock); + } + return wallet.connect(this.provider); + } + + // Get a shared wallet for a given Oval instance and target block + private getSharedWallet(ovalInstance: string, targetBlock: number): Wallet { + // Check if a wallet has already been assigned to this Oval instance + if (this.sharedWalletUsage.has(ovalInstance)) { + const previousAssignments = this.sharedWalletUsage.get(ovalInstance); + if (previousAssignments) { + const existingAssignment = previousAssignments.find(assignment => assignment.walletPubKey); + if (existingAssignment) { + return this.sharedWallets.get(existingAssignment.walletPubKey)!.connect(this.provider); + } + } + } + + // If no wallet has been assigned, find the least used wallet + const selectedWallet = this.findLeastUsedWallet(); + if (selectedWallet) { + this.updateWalletUsage(ovalInstance, selectedWallet, targetBlock); + const selectedWalletPubKey = selectedWallet.address; + this.sharedWallets.set(selectedWalletPubKey, selectedWallet); + return selectedWallet.connect(this.provider); + } + + throw new Error(`No available shared wallets for Oval instance ${ovalInstance} at block ${targetBlock}`); + } + + // Private helper methods + private setupCleanupInterval(): void { + if (isMochaTest()) return; + setInterval(async () => { + const currentBlock = await this.provider.getBlockNumber(); + this.cleanupOldRecords(currentBlock); + }, env.sharedWalletUsageCleanupInterval * 1000); + } + + private async initializeWallets(configs: OvalConfigs): Promise { + for (const [address, config] of Object.entries(configs)) { + this.wallets[address] = await this.createWallet(config); + } + } + + private async initializeSharedWallets(configs: OvalConfigsShared): Promise { + for (const config of configs) { + const wallet = await this.createWallet(config); + if (wallet) { + const walletPubKey = await wallet.getAddress(); + this.sharedWallets.set(walletPubKey, wallet); + this.sharedWalletUsage.set(walletPubKey, []); + } + } + } + + private async createWallet(config: WalletConfig): Promise { + if (config.unlockerKey) { + return new Wallet(config.unlockerKey); + } + if (config.gckmsKeyId) { + const gckmsKey = await retrieveGckmsKey({ + ...JSON.parse(env.gckmsConfig), + cryptoKeyId: config.gckmsKeyId, + ciphertextFilename: `${config.gckmsKeyId}.enc`, + }); + return new Wallet(gckmsKey); + } + throw new Error('Invalid wallet configuration'); + } + + private findLeastUsedWallet(): Wallet | undefined { + let selectedWallet: Wallet | undefined; + const usageCount = new Map() + + // Initialize usage counts for each wallet + this.sharedWallets.forEach((_, walletPubKey) => { + usageCount.set(walletPubKey, 0); + }); + + // Sum usage counts for each wallet + this.sharedWalletUsage.forEach((usageRecords, _) => { + usageRecords.forEach((record) => { + const count = usageCount.get(record.walletPubKey) || 0; + usageCount.set(record.walletPubKey, count + record.count); + }); + }); + + // Find the wallet with the least usage + let minUsage = Infinity; + usageCount.forEach((count, walletPubKey) => { + if (count < minUsage) { + minUsage = count; + selectedWallet = this.sharedWallets.get(walletPubKey); + } + }); + + return selectedWallet; + } + + private async updateWalletUsage(ovalInstance: string, wallet: Wallet, targetBlock: number): Promise { + const walletPubKey = await wallet.getAddress(); + const usageRecords = this.sharedWalletUsage.get(ovalInstance) || []; + const existingRecord = usageRecords.find(record => record.walletPubKey === walletPubKey && record.targetBlock === targetBlock); + + if (existingRecord) { + existingRecord.count += 1; + } else { + usageRecords.push({ walletPubKey, targetBlock, count: 1 }); + } + + this.sharedWalletUsage.set(ovalInstance, usageRecords); + } + + private cleanupOldRecords(currentBlock: number): void { + this.sharedWalletUsage.forEach((usageRecords, walletPubKey) => { + const filteredRecords = usageRecords.filter(record => record.targetBlock >= currentBlock - 1); + if (filteredRecords.length === 0) { + this.sharedWalletUsage.delete(walletPubKey); + } else { + this.sharedWalletUsage.set(walletPubKey, filteredRecords); + } + }); + } +} \ No newline at end of file