{
  "_format": "hh-sol-artifact-1",
  "contractName": "BridgeCreator",
  "sourceName": "src/rollup/BridgeCreator.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IBridge",
              "name": "bridge",
              "type": "address"
            },
            {
              "internalType": "contract ISequencerInbox",
              "name": "sequencerInbox",
              "type": "address"
            },
            {
              "internalType": "contract IInboxBase",
              "name": "inbox",
              "type": "address"
            },
            {
              "internalType": "contract IRollupEventInbox",
              "name": "rollupEventInbox",
              "type": "address"
            },
            {
              "internalType": "contract IOutbox",
              "name": "outbox",
              "type": "address"
            },
            {
              "internalType": "contract IDABridge",
              "name": "dabridge",
              "type": "address"
            }
          ],
          "internalType": "struct BridgeCreator.BridgeContracts",
          "name": "_ethBasedTemplates",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "contract IBridge",
              "name": "bridge",
              "type": "address"
            },
            {
              "internalType": "contract ISequencerInbox",
              "name": "sequencerInbox",
              "type": "address"
            },
            {
              "internalType": "contract IInboxBase",
              "name": "inbox",
              "type": "address"
            },
            {
              "internalType": "contract IRollupEventInbox",
              "name": "rollupEventInbox",
              "type": "address"
            },
            {
              "internalType": "contract IOutbox",
              "name": "outbox",
              "type": "address"
            },
            {
              "internalType": "contract IDABridge",
              "name": "dabridge",
              "type": "address"
            }
          ],
          "internalType": "struct BridgeCreator.BridgeContracts",
          "name": "_erc20BasedTemplates",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "ERC20TemplatesUpdated",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "TemplatesUpdated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "adminProxy",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "rollup",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "nativeToken",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "delayBlocks",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "futureBlocks",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "delaySeconds",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "futureSeconds",
              "type": "uint256"
            }
          ],
          "internalType": "struct ISequencerInbox.MaxTimeVariation",
          "name": "maxTimeVariation",
          "type": "tuple"
        }
      ],
      "name": "createBridge",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract IBridge",
              "name": "bridge",
              "type": "address"
            },
            {
              "internalType": "contract ISequencerInbox",
              "name": "sequencerInbox",
              "type": "address"
            },
            {
              "internalType": "contract IInboxBase",
              "name": "inbox",
              "type": "address"
            },
            {
              "internalType": "contract IRollupEventInbox",
              "name": "rollupEventInbox",
              "type": "address"
            },
            {
              "internalType": "contract IOutbox",
              "name": "outbox",
              "type": "address"
            },
            {
              "internalType": "contract IDABridge",
              "name": "dabridge",
              "type": "address"
            }
          ],
          "internalType": "struct BridgeCreator.BridgeContracts",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "erc20BasedTemplates",
      "outputs": [
        {
          "internalType": "contract IBridge",
          "name": "bridge",
          "type": "address"
        },
        {
          "internalType": "contract ISequencerInbox",
          "name": "sequencerInbox",
          "type": "address"
        },
        {
          "internalType": "contract IInboxBase",
          "name": "inbox",
          "type": "address"
        },
        {
          "internalType": "contract IRollupEventInbox",
          "name": "rollupEventInbox",
          "type": "address"
        },
        {
          "internalType": "contract IOutbox",
          "name": "outbox",
          "type": "address"
        },
        {
          "internalType": "contract IDABridge",
          "name": "dabridge",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ethBasedTemplates",
      "outputs": [
        {
          "internalType": "contract IBridge",
          "name": "bridge",
          "type": "address"
        },
        {
          "internalType": "contract ISequencerInbox",
          "name": "sequencerInbox",
          "type": "address"
        },
        {
          "internalType": "contract IInboxBase",
          "name": "inbox",
          "type": "address"
        },
        {
          "internalType": "contract IRollupEventInbox",
          "name": "rollupEventInbox",
          "type": "address"
        },
        {
          "internalType": "contract IOutbox",
          "name": "outbox",
          "type": "address"
        },
        {
          "internalType": "contract IDABridge",
          "name": "dabridge",
          "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": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IBridge",
              "name": "bridge",
              "type": "address"
            },
            {
              "internalType": "contract ISequencerInbox",
              "name": "sequencerInbox",
              "type": "address"
            },
            {
              "internalType": "contract IInboxBase",
              "name": "inbox",
              "type": "address"
            },
            {
              "internalType": "contract IRollupEventInbox",
              "name": "rollupEventInbox",
              "type": "address"
            },
            {
              "internalType": "contract IOutbox",
              "name": "outbox",
              "type": "address"
            },
            {
              "internalType": "contract IDABridge",
              "name": "dabridge",
              "type": "address"
            }
          ],
          "internalType": "struct BridgeCreator.BridgeContracts",
          "name": "_newTemplates",
          "type": "tuple"
        }
      ],
      "name": "updateERC20Templates",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IBridge",
              "name": "bridge",
              "type": "address"
            },
            {
              "internalType": "contract ISequencerInbox",
              "name": "sequencerInbox",
              "type": "address"
            },
            {
              "internalType": "contract IInboxBase",
              "name": "inbox",
              "type": "address"
            },
            {
              "internalType": "contract IRollupEventInbox",
              "name": "rollupEventInbox",
              "type": "address"
            },
            {
              "internalType": "contract IOutbox",
              "name": "outbox",
              "type": "address"
            },
            {
              "internalType": "contract IDABridge",
              "name": "dabridge",
              "type": "address"
            }
          ],
          "internalType": "struct BridgeCreator.BridgeContracts",
          "name": "_newTemplates",
          "type": "tuple"
        }
      ],
      "name": "updateTemplates",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001dea38038062001dea833981016040819052620000349162000268565b6200003f336200013e565b8151600180546001600160a01b03199081166001600160a01b039384161790915560208085015160028054841691851691909117905560408086015160038054851691861691909117905560608087015160048054861691871691909117905560808088015160058054871691881691909117905560a09788015160068054871691881691909117905586516007805487169188169190911790559286015160088054861691871691909117905590850151600980548516918616919091179055840151600a80548416918516919091179055830151600b805483169184169190911790559190920151600c80549092169216919091179055620002a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001a657600080fd5b919050565b600060c08284031215620001be57600080fd5b60405160c081016001600160401b0381118282101715620001ef57634e487b7160e01b600052604160045260246000fd5b60405290508062000200836200018e565b815262000210602084016200018e565b602082015262000223604084016200018e565b604082015262000236606084016200018e565b606082015262000249608084016200018e565b60808201526200025c60a084016200018e565b60a08201525092915050565b60008061018083850312156200027d57600080fd5b620002898484620001ab565b91506200029a8460c08501620001ab565b90509250929050565b611b3780620002b36000396000f3fe60806040523480156200001157600080fd5b5060043610620000825760003560e01c806311f022271462000087578063715018a6146200010157806376768ab9146200010d5780638da5cb5b1462000140578063b4a5cc341462000159578063ceab941014620001cc578063e83b0e1614620001e3578063f2fde38b14620001fa575b600080fd5b600154600254600354600454600554600654620000ba956001600160a01b03908116958116948116938116928116911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0015b60405180910390f35b6200010b62000211565b005b600754600854600954600a54600b54600c54620000ba956001600160a01b03908116958116948116938116928116911686565b6200014a6200025c565b604051620000f891906200098d565b620001706200016a366004620009b7565b6200026b565b604051620000f8919081516001600160a01b03908116825260208084015182169083015260408084015182169083015260608084015182169083015260808084015182169083015260a092830151169181019190915260c00190565b6200010b620001dd36600462000a23565b6200055e565b6200010b620001f436600462000a23565b620005cf565b6200010b6200020b36600462000a3c565b62000640565b336200021c6200025c565b6001600160a01b0316146200024e5760405162461bcd60e51b8152600401620002459062000a63565b60405180910390fd5b6200025a6000620006e9565b565b6000546001600160a01b031690565b620002756200094a565b60006200029c866001600160a01b038616156200029457600762000739565b600162000739565b90506001600160a01b0384166200031857805160405163189acdbd60e31b81526001600160a01b039091169063c4d66de890620002de9088906004016200098d565b600060405180830381600087803b158015620002f957600080fd5b505af11580156200030e573d6000803e3d6000fd5b5050505062000381565b805160405163485cc95560e01b81526001600160a01b03878116600483015286811660248301529091169063485cc95590604401600060405180830381600087803b1580156200036757600080fd5b505af11580156200037c573d6000803e3d6000fd5b505050505b602081810151825160a08401516040805163af19ad2360e01b81526001600160a01b03938416600482015288356024820152948801356044860152870135606485015260608701356084850152811660a4840152169063af19ad239060c401600060405180830381600087803b158015620003fb57600080fd5b505af115801562000410573d6000803e3d6000fd5b5050505060408181015182516020840151925163485cc95560e01b81526001600160a01b0391821660048201529281166024840152169063485cc95590604401600060405180830381600087803b1580156200046b57600080fd5b505af115801562000480573d6000803e3d6000fd5b505050506060810151815160405163189acdbd60e31b81526001600160a01b039092169163c4d66de891620004b8916004016200098d565b600060405180830381600087803b158015620004d357600080fd5b505af1158015620004e8573d6000803e3d6000fd5b505050506080810151815160405163189acdbd60e31b81526001600160a01b039092169163c4d66de89162000520916004016200098d565b600060405180830381600087803b1580156200053b57600080fd5b505af115801562000550573d6000803e3d6000fd5b509298975050505050505050565b33620005696200025c565b6001600160a01b031614620005925760405162461bcd60e51b8152600401620002459062000a63565b806007620005a1828262000ab8565b50506040517fa47434bb6d1ddd5521e8980ded6a783513e159f80437d78715b10e6e8b6bba5e90600090a150565b33620005da6200025c565b6001600160a01b031614620006035760405162461bcd60e51b8152600401620002459062000a63565b80600162000612828262000ab8565b50506040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a150565b336200064b6200025c565b6001600160a01b031614620006745760405162461bcd60e51b8152600401620002459062000a63565b6001600160a01b038116620006db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000245565b620006e681620006e9565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620007436200094a565b6200074d6200094a565b82546040516001600160a01b039091169085906200076b906200097f565b6200077892919062000b76565b604051809103906000f08015801562000795573d6000803e3d6000fd5b506001600160a01b03908116825260058401546040519116908590620007bb906200097f565b620007c892919062000b76565b604051809103906000f080158015620007e5573d6000803e3d6000fd5b506001600160a01b0390811660a0830152600184015460405191169085906200080e906200097f565b6200081b92919062000b76565b604051809103906000f08015801562000838573d6000803e3d6000fd5b506001600160a01b0390811660208301526002840154604051911690859062000861906200097f565b6200086e92919062000b76565b604051809103906000f0801580156200088b573d6000803e3d6000fd5b506001600160a01b03908116604080840191909152600385015490519116908590620008b7906200097f565b620008c492919062000b76565b604051809103906000f080158015620008e1573d6000803e3d6000fd5b506001600160a01b039081166060830152600484015460405191169085906200090a906200097f565b6200091792919062000b76565b604051809103906000f08015801562000934573d6000803e3d6000fd5b506001600160a01b031660808201529392505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b610f628062000ba083390190565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114620006e657600080fd5b60008060008084860360e0811215620009cf57600080fd5b8535620009dc81620009a1565b94506020860135620009ee81620009a1565b9350604086013562000a0081620009a1565b92506080605f198201121562000a1557600080fd5b509295919450926060019150565b600060c0828403121562000a3657600080fd5b50919050565b60006020828403121562000a4f57600080fd5b813562000a5c81620009a1565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813562000ac581620009a1565b62000ad1818362000a98565b50602082013562000ae281620009a1565b62000af1816001840162000a98565b50604082013562000b0281620009a1565b62000b11816002840162000a98565b50606082013562000b2281620009a1565b62000b31816003840162000a98565b50608082013562000b4281620009a1565b62000b51816004840162000a98565b5060a082013562000b6281620009a1565b62000b71816005840162000a98565b505050565b6001600160a01b039283168152911660208201526060604082018190526000908201526080019056fe608060405260405162000f6238038062000f62833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b60008051602062000f1b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b60008051602062000efb83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e9838360405180606001604052806027815260200162000f3b6027913962000381565b9392505050565b60006200021a60008051602062000efb83398151915260001b6200046760201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd60008051602062000efb83398151915260001b6200046760201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200028c1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd60008051602062000f1b83398151915260001b6200046760201b620002081760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b61086380620006986000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220fb0d75414bd881ce16381528bf0b9b2c1bea4c3e27069fcb6981b67d1535643064736f6c63430008090033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205a9a2ba46742e9c5c5dd9e07d46d6dcafd6c8698d4d89b5d37fdecaefa73925b64736f6c63430008090033",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000825760003560e01c806311f022271462000087578063715018a6146200010157806376768ab9146200010d5780638da5cb5b1462000140578063b4a5cc341462000159578063ceab941014620001cc578063e83b0e1614620001e3578063f2fde38b14620001fa575b600080fd5b600154600254600354600454600554600654620000ba956001600160a01b03908116958116948116938116928116911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0015b60405180910390f35b6200010b62000211565b005b600754600854600954600a54600b54600c54620000ba956001600160a01b03908116958116948116938116928116911686565b6200014a6200025c565b604051620000f891906200098d565b620001706200016a366004620009b7565b6200026b565b604051620000f8919081516001600160a01b03908116825260208084015182169083015260408084015182169083015260608084015182169083015260808084015182169083015260a092830151169181019190915260c00190565b6200010b620001dd36600462000a23565b6200055e565b6200010b620001f436600462000a23565b620005cf565b6200010b6200020b36600462000a3c565b62000640565b336200021c6200025c565b6001600160a01b0316146200024e5760405162461bcd60e51b8152600401620002459062000a63565b60405180910390fd5b6200025a6000620006e9565b565b6000546001600160a01b031690565b620002756200094a565b60006200029c866001600160a01b038616156200029457600762000739565b600162000739565b90506001600160a01b0384166200031857805160405163189acdbd60e31b81526001600160a01b039091169063c4d66de890620002de9088906004016200098d565b600060405180830381600087803b158015620002f957600080fd5b505af11580156200030e573d6000803e3d6000fd5b5050505062000381565b805160405163485cc95560e01b81526001600160a01b03878116600483015286811660248301529091169063485cc95590604401600060405180830381600087803b1580156200036757600080fd5b505af11580156200037c573d6000803e3d6000fd5b505050505b602081810151825160a08401516040805163af19ad2360e01b81526001600160a01b03938416600482015288356024820152948801356044860152870135606485015260608701356084850152811660a4840152169063af19ad239060c401600060405180830381600087803b158015620003fb57600080fd5b505af115801562000410573d6000803e3d6000fd5b5050505060408181015182516020840151925163485cc95560e01b81526001600160a01b0391821660048201529281166024840152169063485cc95590604401600060405180830381600087803b1580156200046b57600080fd5b505af115801562000480573d6000803e3d6000fd5b505050506060810151815160405163189acdbd60e31b81526001600160a01b039092169163c4d66de891620004b8916004016200098d565b600060405180830381600087803b158015620004d357600080fd5b505af1158015620004e8573d6000803e3d6000fd5b505050506080810151815160405163189acdbd60e31b81526001600160a01b039092169163c4d66de89162000520916004016200098d565b600060405180830381600087803b1580156200053b57600080fd5b505af115801562000550573d6000803e3d6000fd5b509298975050505050505050565b33620005696200025c565b6001600160a01b031614620005925760405162461bcd60e51b8152600401620002459062000a63565b806007620005a1828262000ab8565b50506040517fa47434bb6d1ddd5521e8980ded6a783513e159f80437d78715b10e6e8b6bba5e90600090a150565b33620005da6200025c565b6001600160a01b031614620006035760405162461bcd60e51b8152600401620002459062000a63565b80600162000612828262000ab8565b50506040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a150565b336200064b6200025c565b6001600160a01b031614620006745760405162461bcd60e51b8152600401620002459062000a63565b6001600160a01b038116620006db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000245565b620006e681620006e9565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620007436200094a565b6200074d6200094a565b82546040516001600160a01b039091169085906200076b906200097f565b6200077892919062000b76565b604051809103906000f08015801562000795573d6000803e3d6000fd5b506001600160a01b03908116825260058401546040519116908590620007bb906200097f565b620007c892919062000b76565b604051809103906000f080158015620007e5573d6000803e3d6000fd5b506001600160a01b0390811660a0830152600184015460405191169085906200080e906200097f565b6200081b92919062000b76565b604051809103906000f08015801562000838573d6000803e3d6000fd5b506001600160a01b0390811660208301526002840154604051911690859062000861906200097f565b6200086e92919062000b76565b604051809103906000f0801580156200088b573d6000803e3d6000fd5b506001600160a01b03908116604080840191909152600385015490519116908590620008b7906200097f565b620008c492919062000b76565b604051809103906000f080158015620008e1573d6000803e3d6000fd5b506001600160a01b039081166060830152600484015460405191169085906200090a906200097f565b6200091792919062000b76565b604051809103906000f08015801562000934573d6000803e3d6000fd5b506001600160a01b031660808201529392505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b610f628062000ba083390190565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114620006e657600080fd5b60008060008084860360e0811215620009cf57600080fd5b8535620009dc81620009a1565b94506020860135620009ee81620009a1565b9350604086013562000a0081620009a1565b92506080605f198201121562000a1557600080fd5b509295919450926060019150565b600060c0828403121562000a3657600080fd5b50919050565b60006020828403121562000a4f57600080fd5b813562000a5c81620009a1565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813562000ac581620009a1565b62000ad1818362000a98565b50602082013562000ae281620009a1565b62000af1816001840162000a98565b50604082013562000b0281620009a1565b62000b11816002840162000a98565b50606082013562000b2281620009a1565b62000b31816003840162000a98565b50608082013562000b4281620009a1565b62000b51816004840162000a98565b5060a082013562000b6281620009a1565b62000b71816005840162000a98565b505050565b6001600160a01b039283168152911660208201526060604082018190526000908201526080019056fe608060405260405162000f6238038062000f62833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b60008051602062000f1b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b60008051602062000efb83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e9838360405180606001604052806027815260200162000f3b6027913962000381565b9392505050565b60006200021a60008051602062000efb83398151915260001b6200046760201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd60008051602062000efb83398151915260001b6200046760201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200028c1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd60008051602062000f1b83398151915260001b6200046760201b620002081760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b61086380620006986000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220fb0d75414bd881ce16381528bf0b9b2c1bea4c3e27069fcb6981b67d1535643064736f6c63430008090033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205a9a2ba46742e9c5c5dd9e07d46d6dcafd6c8698d4d89b5d37fdecaefa73925b64736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
