Socket
Socket
Sign inDemoInstall

@openzeppelin/contracts-upgradeable

Package Overview
Dependencies
Maintainers
4
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@openzeppelin/contracts-upgradeable - npm Package Compare versions

Comparing version 5.0.0-rc.0 to 5.0.0-rc.1

access/README.adoc

2

build/contracts/ERC20FlashMintUpgradeable.json

@@ -305,3 +305,3 @@ {

{
"internalType": "contract IERC3156FlashBorrowerUpgradeable",
"internalType": "contract IERC3156FlashBorrower",
"name": "receiver",

@@ -308,0 +308,0 @@ "type": "address"

@@ -441,3 +441,3 @@ {

],
"internalType": "struct CheckpointsUpgradeable.Checkpoint208",
"internalType": "struct Checkpoints.Checkpoint208",
"name": "",

@@ -444,0 +444,0 @@ "type": "tuple"

@@ -415,3 +415,3 @@ {

{
"internalType": "contract IERC20Upgradeable",
"internalType": "contract IERC20",
"name": "",

@@ -418,0 +418,0 @@ "type": "address"

@@ -375,6 +375,6 @@ {

],
"bytecode": "0x608060405234801561000f575f80fd5b50610f928061001d5f395ff3fe608060405260043610610049575f3560e01c806319d8d38c1461004d5780637ecebe001461008157806384b0196e146100e2578063ccf96b4a14610109578063df905caf1461011e575b5f80fd5b348015610058575f80fd5b5061006c610067366004610bf9565b610131565b60405190151581526020015b60405180910390f35b34801561008c575f80fd5b506100d461009b366004610c4b565b6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b604051908152602001610078565b3480156100ed575f80fd5b506100f6610161565b6040516100789796959493929190610ca9565b61011c610117366004610d3d565b61020f565b005b61011c61012c366004610bf9565b610317565b5f805f8061013e85610372565b5092509250925082801561014f5750815b80156101585750805b95945050505050565b5f60608082808083815f80516020610f3d833981519152805490915015801561018c57506001810154155b6101d55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6101dd6103f4565b6101e56104b4565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6001600160a01b038116155f80805b858110156102d55786868281811061023857610238610dbc565b905060200281019061024a9190610dd0565b610258906040013584610e02565b92505f61028888888481811061027057610270610dbc565b90506020028101906102829190610dd0565b866104f2565b9050806102c4578787838181106102a1576102a1610dbc565b90506020028101906102b39190610dd0565b6102c1906040013584610e02565b92505b506102ce81610e15565b905061021e565b503482146102ff576040516370647f7960e01b8152600481018390523460248201526044016101cc565b801561030f5761030f84826106ec565b505050505050565b8060400135341461034757604080516370647f7960e01b81529082013560048201523460248201526044016101cc565b6103528160016104f2565b61036f57604051630a12f52160e11b815260040160405180910390fd5b50565b5f805f805f8061038187610784565b909250905061039e6103996040890160208a01610c4b565b6108f6565b426103af60a08a0160808b01610e2d565b65ffffffffffff1610158380156103e357506103ce60208a018a610c4b565b6001600160a01b0316836001600160a01b0316145b919750955093509150509193509193565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f80516020610f3d8339815191529161043290610e52565b80601f016020809104026020016040519081016040528092919081815260200182805461045e90610e52565b80156104a95780601f10610480576101008083540402835291602001916104a9565b820191905f5260205f20905b81548152906001019060200180831161048c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f80516020610f3d8339815191529161043290610e52565b5f805f805f61050087610372565b935093509350935085156105c6578361054e576105236040880160208901610c4b565b60405163d2650cd160e01b81526001600160a01b0390911660048201523060248201526044016101cc565b826105875761056360a0880160808901610e2d565b604051634a777ac560e11b815265ffffffffffff90911660048201526024016101cc565b816105c6578061059a6020890189610c4b565b604051636422d02b60e11b81526001600160a01b039283166004820152911660248201526044016101cc565b8380156105d05750815b80156105d95750825b156106e2576001600160a01b0381165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408120805460018101909155905060608801355f61063560408b0160208c01610c4b565b905060408a01355f61064a60a08d018d610e8a565b61065760208f018f610c4b565b60405160200161066993929190610ed4565b60405160208183030381529060405290505f805f83516020850186888af19a505a9050610696818e61096f565b604080518781528c151560208201526001600160a01b038916917f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c910160405180910390a25050505050505b5050505092915050565b8047101561070f5760405163cd78605960e01b81523060048201526024016101cc565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610758576040519150601f19603f3d011682016040523d82523d5f602084013e61075d565b606091505b505090508061077f57604051630a12f52160e11b815260040160405180910390fd5b505050565b5f8080806108d161079860c0870187610e8a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506108cb92507f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac91506107ff905060208a018a610c4b565b61080f60408b0160208c01610c4b565b60408b013560608c013561082961009b60208f018f610c4b565b8d608001602081019061083c9190610e2d565b8e8060a0019061084c9190610e8a565b60405161085a929190610efa565b6040805191829003822060208301999099526001600160a01b0397881690820152959094166060860152608085019290925260a084015260c083015265ffffffffffff1660e0820152610100810191909152610120016040516020818303038152906040528051906020012061098b565b906109bd565b5090925090505f8160038111156108ea576108ea610f09565b14959194509092505050565b6040513060248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293505f928392839290918391895afa92503d91505f51905082801561095a575060208210155b801561096557505f81115b9695505050505050565b61097e603f6060830135610f1d565b82101561098757fe5b5050565b5f6109b7610997610a06565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b5f805f83516041036109f4576020840151604085015160608601515f1a6109e688828585610a14565b9550955095505050506109ff565b505081515f91506002905b9250925092565b5f610a0f610adc565b905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610a4d57505f91506003905082610ad2565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610a9e573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610ac957505f925060019150829050610ad2565b92505f91508190505b9450945094915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b06610b4f565b610b0e610bb7565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f5f80516020610f3d83398151915281610b676103f4565b805190915015610b7f57805160209091012092915050565b81548015610b8e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f80516020610f3d83398151915281610bcf6104b4565b805190915015610be757805160209091012092915050565b60018201548015610b8e579392505050565b5f60208284031215610c09575f80fd5b813567ffffffffffffffff811115610c1f575f80fd5b820160e08185031215610c30575f80fd5b9392505050565b6001600160a01b038116811461036f575f80fd5b5f60208284031215610c5b575f80fd5b8135610c3081610c37565b5f81518084525f5b81811015610c8a57602081850181015186830182015201610c6e565b505f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681525f602060e081840152610cc860e084018a610c66565b8381036040850152610cda818a610c66565b606085018990526001600160a01b038816608086015260a0850187905284810360c086015285518082528387019250908301905f5b81811015610d2b57835183529284019291840191600101610d0f565b50909c9b505050505050505050505050565b5f805f60408486031215610d4f575f80fd5b833567ffffffffffffffff80821115610d66575f80fd5b818601915086601f830112610d79575f80fd5b813581811115610d87575f80fd5b8760208260051b8501011115610d9b575f80fd5b60209283019550935050840135610db181610c37565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f823560de19833603018112610de4575f80fd5b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109b7576109b7610dee565b5f60018201610e2657610e26610dee565b5060010190565b5f60208284031215610e3d575f80fd5b813565ffffffffffff81168114610c30575f80fd5b600181811c90821680610e6657607f821691505b602082108103610e8457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f808335601e19843603018112610e9f575f80fd5b83018035915067ffffffffffffffff821115610eb9575f80fd5b602001915036819003821315610ecd575f80fd5b9250929050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f82610f3757634e487b7160e01b5f52601260045260245ffd5b50049056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a26469706673582212208775ae2c5c68dce67009563869477291eccdc85b40d0bb30969fd35adb8b1fbb64736f6c63430008140033",
"deployedBytecode": "0x608060405260043610610049575f3560e01c806319d8d38c1461004d5780637ecebe001461008157806384b0196e146100e2578063ccf96b4a14610109578063df905caf1461011e575b5f80fd5b348015610058575f80fd5b5061006c610067366004610bf9565b610131565b60405190151581526020015b60405180910390f35b34801561008c575f80fd5b506100d461009b366004610c4b565b6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b604051908152602001610078565b3480156100ed575f80fd5b506100f6610161565b6040516100789796959493929190610ca9565b61011c610117366004610d3d565b61020f565b005b61011c61012c366004610bf9565b610317565b5f805f8061013e85610372565b5092509250925082801561014f5750815b80156101585750805b95945050505050565b5f60608082808083815f80516020610f3d833981519152805490915015801561018c57506001810154155b6101d55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6101dd6103f4565b6101e56104b4565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6001600160a01b038116155f80805b858110156102d55786868281811061023857610238610dbc565b905060200281019061024a9190610dd0565b610258906040013584610e02565b92505f61028888888481811061027057610270610dbc565b90506020028101906102829190610dd0565b866104f2565b9050806102c4578787838181106102a1576102a1610dbc565b90506020028101906102b39190610dd0565b6102c1906040013584610e02565b92505b506102ce81610e15565b905061021e565b503482146102ff576040516370647f7960e01b8152600481018390523460248201526044016101cc565b801561030f5761030f84826106ec565b505050505050565b8060400135341461034757604080516370647f7960e01b81529082013560048201523460248201526044016101cc565b6103528160016104f2565b61036f57604051630a12f52160e11b815260040160405180910390fd5b50565b5f805f805f8061038187610784565b909250905061039e6103996040890160208a01610c4b565b6108f6565b426103af60a08a0160808b01610e2d565b65ffffffffffff1610158380156103e357506103ce60208a018a610c4b565b6001600160a01b0316836001600160a01b0316145b919750955093509150509193509193565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f80516020610f3d8339815191529161043290610e52565b80601f016020809104026020016040519081016040528092919081815260200182805461045e90610e52565b80156104a95780601f10610480576101008083540402835291602001916104a9565b820191905f5260205f20905b81548152906001019060200180831161048c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f80516020610f3d8339815191529161043290610e52565b5f805f805f61050087610372565b935093509350935085156105c6578361054e576105236040880160208901610c4b565b60405163d2650cd160e01b81526001600160a01b0390911660048201523060248201526044016101cc565b826105875761056360a0880160808901610e2d565b604051634a777ac560e11b815265ffffffffffff90911660048201526024016101cc565b816105c6578061059a6020890189610c4b565b604051636422d02b60e11b81526001600160a01b039283166004820152911660248201526044016101cc565b8380156105d05750815b80156105d95750825b156106e2576001600160a01b0381165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408120805460018101909155905060608801355f61063560408b0160208c01610c4b565b905060408a01355f61064a60a08d018d610e8a565b61065760208f018f610c4b565b60405160200161066993929190610ed4565b60405160208183030381529060405290505f805f83516020850186888af19a505a9050610696818e61096f565b604080518781528c151560208201526001600160a01b038916917f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c910160405180910390a25050505050505b5050505092915050565b8047101561070f5760405163cd78605960e01b81523060048201526024016101cc565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610758576040519150601f19603f3d011682016040523d82523d5f602084013e61075d565b606091505b505090508061077f57604051630a12f52160e11b815260040160405180910390fd5b505050565b5f8080806108d161079860c0870187610e8a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506108cb92507f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac91506107ff905060208a018a610c4b565b61080f60408b0160208c01610c4b565b60408b013560608c013561082961009b60208f018f610c4b565b8d608001602081019061083c9190610e2d565b8e8060a0019061084c9190610e8a565b60405161085a929190610efa565b6040805191829003822060208301999099526001600160a01b0397881690820152959094166060860152608085019290925260a084015260c083015265ffffffffffff1660e0820152610100810191909152610120016040516020818303038152906040528051906020012061098b565b906109bd565b5090925090505f8160038111156108ea576108ea610f09565b14959194509092505050565b6040513060248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293505f928392839290918391895afa92503d91505f51905082801561095a575060208210155b801561096557505f81115b9695505050505050565b61097e603f6060830135610f1d565b82101561098757fe5b5050565b5f6109b7610997610a06565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b5f805f83516041036109f4576020840151604085015160608601515f1a6109e688828585610a14565b9550955095505050506109ff565b505081515f91506002905b9250925092565b5f610a0f610adc565b905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610a4d57505f91506003905082610ad2565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610a9e573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610ac957505f925060019150829050610ad2565b92505f91508190505b9450945094915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b06610b4f565b610b0e610bb7565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f5f80516020610f3d83398151915281610b676103f4565b805190915015610b7f57805160209091012092915050565b81548015610b8e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f80516020610f3d83398151915281610bcf6104b4565b805190915015610be757805160209091012092915050565b60018201548015610b8e579392505050565b5f60208284031215610c09575f80fd5b813567ffffffffffffffff811115610c1f575f80fd5b820160e08185031215610c30575f80fd5b9392505050565b6001600160a01b038116811461036f575f80fd5b5f60208284031215610c5b575f80fd5b8135610c3081610c37565b5f81518084525f5b81811015610c8a57602081850181015186830182015201610c6e565b505f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681525f602060e081840152610cc860e084018a610c66565b8381036040850152610cda818a610c66565b606085018990526001600160a01b038816608086015260a0850187905284810360c086015285518082528387019250908301905f5b81811015610d2b57835183529284019291840191600101610d0f565b50909c9b505050505050505050505050565b5f805f60408486031215610d4f575f80fd5b833567ffffffffffffffff80821115610d66575f80fd5b818601915086601f830112610d79575f80fd5b813581811115610d87575f80fd5b8760208260051b8501011115610d9b575f80fd5b60209283019550935050840135610db181610c37565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f823560de19833603018112610de4575f80fd5b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109b7576109b7610dee565b5f60018201610e2657610e26610dee565b5060010190565b5f60208284031215610e3d575f80fd5b813565ffffffffffff81168114610c30575f80fd5b600181811c90821680610e6657607f821691505b602082108103610e8457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f808335601e19843603018112610e9f575f80fd5b83018035915067ffffffffffffffff821115610eb9575f80fd5b602001915036819003821315610ecd575f80fd5b9250929050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f82610f3757634e487b7160e01b5f52601260045260245ffd5b50049056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a26469706673582212208775ae2c5c68dce67009563869477291eccdc85b40d0bb30969fd35adb8b1fbb64736f6c63430008140033",
"bytecode": "0x608060405234801561001057600080fd5b50610ff4806100206000396000f3fe60806040526004361061004a5760003560e01c806319d8d38c1461004f5780637ecebe001461008457806384b0196e146100e7578063ccf96b4a1461010f578063df905caf14610124575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610c32565b610137565b60405190151581526020015b60405180910390f35b34801561009057600080fd5b506100d961009f366004610c89565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b60405190815260200161007b565b3480156100f357600080fd5b506100fc610169565b60405161007b9796959493929190610cec565b61012261011d366004610d82565b61021a565b005b610122610132366004610c32565b610324565b6000806000806101468561037f565b509250925092508280156101575750815b80156101605750805b95945050505050565b60006060808280808381600080516020610f9f833981519152805490915015801561019657506001810154155b6101df5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6101e7610404565b6101ef6104c7565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6001600160a01b03811615600080805b858110156102e25786868281811061024457610244610e08565b90506020028101906102569190610e1e565b610264906040013584610e54565b9250600061029588888481811061027d5761027d610e08565b905060200281019061028f9190610e1e565b86610506565b9050806102d1578787838181106102ae576102ae610e08565b90506020028101906102c09190610e1e565b6102ce906040013584610e54565b92505b506102db81610e67565b905061022a565b5034821461030c576040516370647f7960e01b8152600481018390523460248201526044016101d6565b801561031c5761031c8482610708565b505050505050565b8060400135341461035457604080516370647f7960e01b81529082013560048201523460248201526044016101d6565b61035f816001610506565b61037c57604051630a12f52160e11b815260040160405180910390fd5b50565b600080600080600080610391876107a4565b90925090506103ae6103a96040890160208a01610c89565b610919565b426103bf60a08a0160808b01610e80565b65ffffffffffff1610158380156103f357506103de60208a018a610c89565b6001600160a01b0316836001600160a01b0316145b919750955093509150509193509193565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020610f9f8339815191529161044390610ea8565b80601f016020809104026020016040519081016040528092919081815260200182805461046f90610ea8565b80156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1038054606091600080516020610f9f8339815191529161044390610ea8565b60008060008060006105178761037f565b935093509350935085156105dd57836105655761053a6040880160208901610c89565b60405163d2650cd160e01b81526001600160a01b0390911660048201523060248201526044016101d6565b8261059e5761057a60a0880160808901610e80565b604051634a777ac560e11b815265ffffffffffff90911660048201526024016101d6565b816105dd57806105b16020890189610c89565b604051636422d02b60e11b81526001600160a01b039283166004820152911660248201526044016101d6565b8380156105e75750815b80156105f05750825b156106fe576001600160a01b03811660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040812080546001810190915590506060880135600061064e60408b0160208c01610c89565b905060408a0135600061066460a08d018d610ee2565b61067160208f018f610c89565b60405160200161068393929190610f30565b6040516020818303038152906040529050600080600083516020850186888af19a505a90506106b2818e610996565b604080518781528c151560208201526001600160a01b038916917f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c910160405180910390a25050505050505b5050505092915050565b8047101561072b5760405163cd78605960e01b81523060048201526024016101d6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610778576040519150601f19603f3d011682016040523d82523d6000602084013e61077d565b606091505b505090508061079f57604051630a12f52160e11b815260040160405180910390fd5b505050565b60008080806108f36107b960c0870187610ee2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108ed92507f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac9150610821905060208a018a610c89565b61083160408b0160208c01610c89565b60408b013560608c013561084b61009f60208f018f610c89565b8d608001602081019061085e9190610e80565b8e8060a0019061086e9190610ee2565b60405161087c929190610f56565b6040805191829003822060208301999099526001600160a01b0397881690820152959094166060860152608085019290925260a084015260c083015265ffffffffffff1660e082015261010081019190915261012001604051602081830303815290604052805190602001206109b2565b906109e5565b509092509050600081600381111561090d5761090d610f66565b14959194509092505050565b604051306024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293506000928392839290918391895afa92503d91506000519050828015610980575060208210155b801561098c5750600081115b9695505050505050565b6109a5603f6060830135610f7c565b8210156109ae57fe5b5050565b60006109df6109bf610a32565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b60008060008351604103610a1f5760208401516040850151606086015160001a610a1188828585610a41565b955095509550505050610a2b565b50508151600091506002905b9250925092565b6000610a3c610b10565b905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610a7c5750600091506003905082610b06565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ad0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610afc57506000925060019150829050610b06565b9250600091508190505b9450945094915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b3b610b84565b610b43610bee565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000600080516020610f9f83398151915281610b9e610404565b805190915015610bb657805160209091012092915050565b81548015610bc5579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020610f9f83398151915281610c086104c7565b805190915015610c2057805160209091012092915050565b60018201548015610bc5579392505050565b600060208284031215610c4457600080fd5b813567ffffffffffffffff811115610c5b57600080fd5b820160e08185031215610c6d57600080fd5b9392505050565b6001600160a01b038116811461037c57600080fd5b600060208284031215610c9b57600080fd5b8135610c6d81610c74565b6000815180845260005b81811015610ccc57602081850181015186830182015201610cb0565b506000602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681526000602060e081840152610d0c60e084018a610ca6565b8381036040850152610d1e818a610ca6565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015610d7057835183529284019291840191600101610d54565b50909c9b505050505050505050505050565b600080600060408486031215610d9757600080fd5b833567ffffffffffffffff80821115610daf57600080fd5b818601915086601f830112610dc357600080fd5b813581811115610dd257600080fd5b8760208260051b8501011115610de757600080fd5b60209283019550935050840135610dfd81610c74565b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000823560de19833603018112610e3457600080fd5b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109df576109df610e3e565b600060018201610e7957610e79610e3e565b5060010190565b600060208284031215610e9257600080fd5b813565ffffffffffff81168114610c6d57600080fd5b600181811c90821680610ebc57607f821691505b602082108103610edc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112610ef957600080fd5b83018035915067ffffffffffffffff821115610f1457600080fd5b602001915036819003821315610f2957600080fd5b9250929050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b600082610f9957634e487b7160e01b600052601260045260246000fd5b50049056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a26469706673582212201178af3ee7e33226c2a24ab7356f4aa945a50a1015c9219e3682f187e903ffb364736f6c63430008140033",
"deployedBytecode": "0x60806040526004361061004a5760003560e01c806319d8d38c1461004f5780637ecebe001461008457806384b0196e146100e7578063ccf96b4a1461010f578063df905caf14610124575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610c32565b610137565b60405190151581526020015b60405180910390f35b34801561009057600080fd5b506100d961009f366004610c89565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b60405190815260200161007b565b3480156100f357600080fd5b506100fc610169565b60405161007b9796959493929190610cec565b61012261011d366004610d82565b61021a565b005b610122610132366004610c32565b610324565b6000806000806101468561037f565b509250925092508280156101575750815b80156101605750805b95945050505050565b60006060808280808381600080516020610f9f833981519152805490915015801561019657506001810154155b6101df5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6101e7610404565b6101ef6104c7565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6001600160a01b03811615600080805b858110156102e25786868281811061024457610244610e08565b90506020028101906102569190610e1e565b610264906040013584610e54565b9250600061029588888481811061027d5761027d610e08565b905060200281019061028f9190610e1e565b86610506565b9050806102d1578787838181106102ae576102ae610e08565b90506020028101906102c09190610e1e565b6102ce906040013584610e54565b92505b506102db81610e67565b905061022a565b5034821461030c576040516370647f7960e01b8152600481018390523460248201526044016101d6565b801561031c5761031c8482610708565b505050505050565b8060400135341461035457604080516370647f7960e01b81529082013560048201523460248201526044016101d6565b61035f816001610506565b61037c57604051630a12f52160e11b815260040160405180910390fd5b50565b600080600080600080610391876107a4565b90925090506103ae6103a96040890160208a01610c89565b610919565b426103bf60a08a0160808b01610e80565b65ffffffffffff1610158380156103f357506103de60208a018a610c89565b6001600160a01b0316836001600160a01b0316145b919750955093509150509193509193565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020610f9f8339815191529161044390610ea8565b80601f016020809104026020016040519081016040528092919081815260200182805461046f90610ea8565b80156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1038054606091600080516020610f9f8339815191529161044390610ea8565b60008060008060006105178761037f565b935093509350935085156105dd57836105655761053a6040880160208901610c89565b60405163d2650cd160e01b81526001600160a01b0390911660048201523060248201526044016101d6565b8261059e5761057a60a0880160808901610e80565b604051634a777ac560e11b815265ffffffffffff90911660048201526024016101d6565b816105dd57806105b16020890189610c89565b604051636422d02b60e11b81526001600160a01b039283166004820152911660248201526044016101d6565b8380156105e75750815b80156105f05750825b156106fe576001600160a01b03811660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040812080546001810190915590506060880135600061064e60408b0160208c01610c89565b905060408a0135600061066460a08d018d610ee2565b61067160208f018f610c89565b60405160200161068393929190610f30565b6040516020818303038152906040529050600080600083516020850186888af19a505a90506106b2818e610996565b604080518781528c151560208201526001600160a01b038916917f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c910160405180910390a25050505050505b5050505092915050565b8047101561072b5760405163cd78605960e01b81523060048201526024016101d6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610778576040519150601f19603f3d011682016040523d82523d6000602084013e61077d565b606091505b505090508061079f57604051630a12f52160e11b815260040160405180910390fd5b505050565b60008080806108f36107b960c0870187610ee2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108ed92507f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac9150610821905060208a018a610c89565b61083160408b0160208c01610c89565b60408b013560608c013561084b61009f60208f018f610c89565b8d608001602081019061085e9190610e80565b8e8060a0019061086e9190610ee2565b60405161087c929190610f56565b6040805191829003822060208301999099526001600160a01b0397881690820152959094166060860152608085019290925260a084015260c083015265ffffffffffff1660e082015261010081019190915261012001604051602081830303815290604052805190602001206109b2565b906109e5565b509092509050600081600381111561090d5761090d610f66565b14959194509092505050565b604051306024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293506000928392839290918391895afa92503d91506000519050828015610980575060208210155b801561098c5750600081115b9695505050505050565b6109a5603f6060830135610f7c565b8210156109ae57fe5b5050565b60006109df6109bf610a32565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b60008060008351604103610a1f5760208401516040850151606086015160001a610a1188828585610a41565b955095509550505050610a2b565b50508151600091506002905b9250925092565b6000610a3c610b10565b905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610a7c5750600091506003905082610b06565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ad0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610afc57506000925060019150829050610b06565b9250600091508190505b9450945094915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b3b610b84565b610b43610bee565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000600080516020610f9f83398151915281610b9e610404565b805190915015610bb657805160209091012092915050565b81548015610bc5579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020610f9f83398151915281610c086104c7565b805190915015610c2057805160209091012092915050565b60018201548015610bc5579392505050565b600060208284031215610c4457600080fd5b813567ffffffffffffffff811115610c5b57600080fd5b820160e08185031215610c6d57600080fd5b9392505050565b6001600160a01b038116811461037c57600080fd5b600060208284031215610c9b57600080fd5b8135610c6d81610c74565b6000815180845260005b81811015610ccc57602081850181015186830182015201610cb0565b506000602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681526000602060e081840152610d0c60e084018a610ca6565b8381036040850152610d1e818a610ca6565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015610d7057835183529284019291840191600101610d54565b50909c9b505050505050505050505050565b600080600060408486031215610d9757600080fd5b833567ffffffffffffffff80821115610daf57600080fd5b818601915086601f830112610dc357600080fd5b813581811115610dd257600080fd5b8760208260051b8501011115610de757600080fd5b60209283019550935050840135610dfd81610c74565b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000823560de19833603018112610e3457600080fd5b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109df576109df610e3e565b600060018201610e7957610e79610e3e565b5060010190565b600060208284031215610e9257600080fd5b813565ffffffffffff81168114610c6d57600080fd5b600181811c90821680610ebc57607f821691505b602082108103610edc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112610ef957600080fd5b83018035915067ffffffffffffffff821115610f1457600080fd5b602001915036819003821315610f2957600080fd5b9250929050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b600082610f9957634e487b7160e01b600052601260045260246000fd5b50049056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a26469706673582212201178af3ee7e33226c2a24ab7356f4aa945a50a1015c9219e3682f187e903ffb364736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -536,3 +536,3 @@ {

{
"internalType": "contract IERC721Upgradeable",
"internalType": "contract IERC721",
"name": "",

@@ -539,0 +539,0 @@ "type": "address"

@@ -175,3 +175,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1300,3 +1300,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1303,0 +1303,0 @@ "type": "uint8"

@@ -175,3 +175,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1335,3 +1335,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1338,0 +1338,0 @@ "type": "uint8"

@@ -175,3 +175,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1367,3 +1367,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1370,0 +1370,0 @@ "type": "uint8"

@@ -175,3 +175,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1396,3 +1396,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1399,0 +1399,0 @@ "type": "uint8"

@@ -201,3 +201,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -589,3 +589,3 @@ "type": "uint8"

{
"internalType": "contract IAccessManagerUpgradeable",
"internalType": "contract IAccessManager",
"name": "",

@@ -1473,3 +1473,3 @@ "type": "address"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1476,0 +1476,0 @@ "type": "uint8"

@@ -186,3 +186,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1308,3 +1308,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1352,3 +1352,3 @@ "type": "uint8"

{
"internalType": "contract ICompoundTimelockUpgradeable",
"internalType": "contract ICompoundTimelock",
"name": "newTimelock",

@@ -1355,0 +1355,0 @@ "type": "address"

@@ -175,3 +175,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1290,3 +1290,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1293,0 +1293,0 @@ "type": "uint8"

@@ -175,3 +175,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1271,3 +1271,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1274,0 +1274,0 @@ "type": "uint8"

@@ -196,3 +196,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1356,3 +1356,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1389,3 +1389,3 @@ "type": "uint8"

{
"internalType": "contract IERC5805Upgradeable",
"internalType": "contract IERC5805",
"name": "",

@@ -1392,0 +1392,0 @@ "type": "address"

@@ -175,3 +175,3 @@ {

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "current",

@@ -1271,3 +1271,3 @@ "type": "uint8"

{
"internalType": "enum IGovernorUpgradeable.ProposalState",
"internalType": "enum IGovernor.ProposalState",
"name": "",

@@ -1304,3 +1304,3 @@ "type": "uint8"

{
"internalType": "contract IERC5805Upgradeable",
"internalType": "contract IERC5805",
"name": "",

@@ -1307,0 +1307,0 @@ "type": "address"

@@ -1000,6 +1000,6 @@ {

],
"bytecode": "0x608060405234801561000f575f80fd5b50611ab38061001d5f395ff3fe6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610543578063e38335e514610562578063f23a6e6114610575578063f27a0c92146105a0575f80fd5b8063bc197c81146104c2578063c4d252f5146104ed578063d45c44351461050c575f80fd5b806391d14854116100c257806391d148541461043e578063a217fddf1461045d578063b08e51c014610470578063b1c5f427146104a3575f80fd5b80638065657f146103cd5780638f2a0bb0146103ec5780638f61f4f51461040b575f80fd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610344578063584b153e1461036357806364d62353146103825780637958004c146103a1575f80fd5b80632ab0f529146102e75780632f2ff15d1461030657806331d5075014610325575f80fd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f80fd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101dc6101d7366004611233565b6105d3565b005b3480156101e9575f80fd5b506101fd6101f83660046112a1565b6106a7565b60405190151581526020015b60405180910390f35b34801561021d575f80fd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046112c8565b6106b7565b348015610271575f80fd5b506101fd61028036600461132e565b610769565b348015610290575f80fd5b506102af61029f3660046113f4565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f80fd5b506102456102e236600461132e565b61078e565b3480156102f2575f80fd5b506101fd61030136600461132e565b6107ae565b348015610311575f80fd5b506101dc610320366004611457565b6107b6565b348015610330575f80fd5b506101fd61033f36600461132e565b6107d8565b34801561034f575f80fd5b506101dc61035e366004611457565b6107fc565b34801561036e575f80fd5b506101fd61037d36600461132e565b610834565b34801561038d575f80fd5b506101dc61039c36600461132e565b610879565b3480156103ac575f80fd5b506103c06103bb36600461132e565b6108fd565b6040516102099190611495565b3480156103d8575f80fd5b506102456103e73660046112c8565b610951565b3480156103f7575f80fd5b506101dc6104063660046114fb565b61098f565b348015610416575f80fd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610449575f80fd5b506101fd610458366004611457565b610b23565b348015610468575f80fd5b506102455f81565b34801561047b575f80fd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104ae575f80fd5b506102456104bd3660046115a3565b610b59565b3480156104cd575f80fd5b506102af6104dc3660046116bf565b63bc197c8160e01b95945050505050565b3480156104f8575f80fd5b506101dc61050736600461132e565b610b9d565b348015610517575f80fd5b5061024561052636600461132e565b5f9081525f80516020611a3e833981519152602052604090205490565b34801561054e575f80fd5b506101dc61055d366004611457565b610c56565b6101dc6105703660046115a3565b610c72565b348015610580575f80fd5b506102af61058f366004611761565b63f23a6e6160e01b95945050505050565b3480156105ab575f80fd5b507f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360154610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105fd81610df9565b5f61060c898989898989610951565b90506106188184610e06565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610653969594939291906117e8565b60405180910390a3831561069c57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161069391815260200190565b60405180910390a25b505050505050505050565b5f6106b182610ec5565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2815f610b23565b6106f0576106f08133610ee9565b5f6106ff888888888888610951565b905061070b8185610f26565b61071788888888610f74565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161074e9493929190611824565b60405180910390a361075f81610fe8565b5050505050505050565b5f60025b610776836108fd565b600381111561078757610787611481565b1492915050565b5f9081525f80516020611a5e833981519152602052604090206001015490565b5f600361076d565b6107bf8261078e565b6107c881610df9565b6107d2838361101f565b50505050565b5f806107e3836108fd565b60038111156107f4576107f4611481565b141592915050565b6001600160a01b03811633146108255760405163334bd91960e11b815260040160405180910390fd5b61082f82826110c0565b505050565b5f8061083f836108fd565b9050600181600381111561085557610855611481565b14806108725750600281600381111561087057610870611481565b145b9392505050565b5f80516020611a3e833981519152333081146108b85760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b600182015460408051918252602082018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15060010155565b5f8181525f80516020611a3e8339815191526020526040812054805f0361092657505f92915050565b600181036109375750600392915050565b428111156109485750600192915050565b50600292915050565b5f86868686868660405160200161096d969594939291906117e8565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109b981610df9565b88871415806109c85750888514155b156109fa576040516001624fcdef60e01b03198152600481018a905260248101869052604481018890526064016108af565b5f610a0b8b8b8b8b8b8b8b8b610b59565b9050610a178184610e06565b5f5b8a811015610ad45780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a5657610a56611855565b9050602002016020810190610a6b9190611869565b8d8d86818110610a7d57610a7d611855565b905060200201358c8c87818110610a9657610a96611855565b9050602002810190610aa89190611882565b8c8b604051610abc969594939291906117e8565b60405180910390a3610acd816118d8565b9050610a19565b508315610b1657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610b0d91815260200190565b60405180910390a25b5050505050505050505050565b5f9182525f80516020611a5e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b7998979695949392919061197c565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610bc781610df9565b5f80516020611a3e833981519152610bde83610834565b610c1a5782610bed6002611139565b610bf76001611139565b604051635ead8eb560e01b815260048101939093521760248201526044016108af565b5f838152602082905260408082208290555184917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a2505050565b610c5f8261078e565b610c6881610df9565b6107d283836110c0565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c9d815f610b23565b610cab57610cab8133610ee9565b8786141580610cba5750878414155b15610cec576040516001624fcdef60e01b031981526004810189905260248101859052604481018790526064016108af565b5f610cfd8a8a8a8a8a8a8a8a610b59565b9050610d098185610f26565b5f5b89811015610de3575f8b8b83818110610d2657610d26611855565b9050602002016020810190610d3b9190611869565b90505f8a8a84818110610d5057610d50611855565b905060200201359050365f8a8a86818110610d6d57610d6d611855565b9050602002810190610d7f9190611882565b91509150610d8f84848484610f74565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610dc69493929190611824565b60405180910390a35050505080610ddc906118d8565b9050610d0b565b50610ded81610fe8565b50505050505050505050565b610e038133610ee9565b50565b5f80516020611a3e833981519152610e1d836107d8565b15610e4e5782610e2c5f611139565b604051635ead8eb560e01b8152600481019290925260248201526044016108af565b5f610e777f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb36015490565b905080831015610ea457604051635433660960e01b815260048101849052602481018290526044016108af565b610eae8342611a1b565b5f9485526020929092525060409092209190915550565b5f6001600160e01b03198216630271189760e51b14806106b157506106b18261115b565b610ef38282610b23565b610f225760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016108af565b5050565b610f2f82610769565b610f3e5781610e2c6002611139565b8015801590610f535750610f51816107ae565b155b15610f225760405163121534c360e31b8152600481018290526024016108af565b5f80856001600160a01b0316858585604051610f91929190611a2e565b5f6040518083038185875af1925050503d805f8114610fcb576040519150601f19603f3d011682016040523d82523d5f602084013e610fd0565b606091505b5091509150610fdf828261118f565b50505050505050565b5f80516020611a3e833981519152610fff82610769565b61100e5781610e2c6002611139565b5f9182526020526040902060019055565b5f5f80516020611a5e8339815191526110388484610b23565b6110b7575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561106d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106b1565b5f9150506106b1565b5f5f80516020611a5e8339815191526110d98484610b23565b156110b7575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106b1565b5f81600381111561114c5761114c611481565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b14806106b157506301ffc9a760e01b6001600160e01b03198316146106b1565b6060826111a45761119f826111ab565b6106b1565b50806106b1565b8051156111bb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146111ea575f80fd5b919050565b5f8083601f8401126111ff575f80fd5b5081356001600160401b03811115611215575f80fd5b60208301915083602082850101111561122c575f80fd5b9250929050565b5f805f805f805f60c0888a031215611249575f80fd5b611252886111d4565b96506020880135955060408801356001600160401b03811115611273575f80fd5b61127f8a828b016111ef565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156112b1575f80fd5b81356001600160e01b031981168114610872575f80fd5b5f805f805f8060a087890312156112dd575f80fd5b6112e6876111d4565b95506020870135945060408701356001600160401b03811115611307575f80fd5b61131389828a016111ef565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561133e575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561138157611381611345565b604052919050565b5f82601f830112611398575f80fd5b81356001600160401b038111156113b1576113b1611345565b6113c4601f8201601f1916602001611359565b8181528460208386010111156113d8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611407575f80fd5b611410856111d4565b935061141e602086016111d4565b92506040850135915060608501356001600160401b0381111561143f575f80fd5b61144b87828801611389565b91505092959194509250565b5f8060408385031215611468575f80fd5b82359150611478602084016111d4565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106114b557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8083601f8401126114cb575f80fd5b5081356001600160401b038111156114e1575f80fd5b6020830191508360208260051b850101111561122c575f80fd5b5f805f805f805f805f60c08a8c031215611513575f80fd5b89356001600160401b0380821115611529575f80fd5b6115358d838e016114bb565b909b50995060208c013591508082111561154d575f80fd5b6115598d838e016114bb565b909950975060408c0135915080821115611571575f80fd5b5061157e8c828d016114bb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f805f805f805f8060a0898b0312156115ba575f80fd5b88356001600160401b03808211156115d0575f80fd5b6115dc8c838d016114bb565b909a50985060208b01359150808211156115f4575f80fd5b6116008c838d016114bb565b909850965060408b0135915080821115611618575f80fd5b506116258b828c016114bb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611652575f80fd5b813560206001600160401b0382111561166d5761166d611345565b8160051b61167c828201611359565b9283528481018201928281019087851115611695575f80fd5b83870192505b848310156116b45782358252918301919083019061169b565b979650505050505050565b5f805f805f60a086880312156116d3575f80fd5b6116dc866111d4565b94506116ea602087016111d4565b935060408601356001600160401b0380821115611705575f80fd5b61171189838a01611643565b94506060880135915080821115611726575f80fd5b61173289838a01611643565b93506080880135915080821115611747575f80fd5b5061175488828901611389565b9150509295509295909350565b5f805f805f60a08688031215611775575f80fd5b61177e866111d4565b945061178c602087016111d4565b9350604086013592506060860135915060808601356001600160401b038111156117b4575f80fd5b61175488828901611389565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61180f60a0830186886117c0565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f61184b6060830184866117c0565b9695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611879575f80fd5b610872826111d4565b5f808335601e19843603018112611897575f80fd5b8301803591506001600160401b038211156118b0575f80fd5b60200191503681900382131561122c575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016118e9576118e96118c4565b5060010190565b8183525f6020808501808196508560051b81019150845f5b8781101561196f5782840389528135601e19883603018112611928575f80fd5b870185810190356001600160401b03811115611942575f80fd5b803603821315611950575f80fd5b61195b8682846117c0565b9a87019a9550505090840190600101611908565b5091979650505050505050565b60a080825281018890525f8960c08301825b8b8110156119bc576001600160a01b036119a7846111d4565b1682526020928301929091019060010161198e565b5083810360208501528881526001600160fb1b038911156119db575f80fd5b8860051b9150818a60208301370182810360209081016040850152611a0390820187896118f0565b60608401959095525050608001529695505050505050565b808201808211156106b1576106b16118c4565b818382375f910190815291905056fe9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220d3ebb0557f8e96ac7cca583bdaba7efbc4604ec4d827b2da62a9ad725a5a756b64736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610543578063e38335e514610562578063f23a6e6114610575578063f27a0c92146105a0575f80fd5b8063bc197c81146104c2578063c4d252f5146104ed578063d45c44351461050c575f80fd5b806391d14854116100c257806391d148541461043e578063a217fddf1461045d578063b08e51c014610470578063b1c5f427146104a3575f80fd5b80638065657f146103cd5780638f2a0bb0146103ec5780638f61f4f51461040b575f80fd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610344578063584b153e1461036357806364d62353146103825780637958004c146103a1575f80fd5b80632ab0f529146102e75780632f2ff15d1461030657806331d5075014610325575f80fd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f80fd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101dc6101d7366004611233565b6105d3565b005b3480156101e9575f80fd5b506101fd6101f83660046112a1565b6106a7565b60405190151581526020015b60405180910390f35b34801561021d575f80fd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046112c8565b6106b7565b348015610271575f80fd5b506101fd61028036600461132e565b610769565b348015610290575f80fd5b506102af61029f3660046113f4565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f80fd5b506102456102e236600461132e565b61078e565b3480156102f2575f80fd5b506101fd61030136600461132e565b6107ae565b348015610311575f80fd5b506101dc610320366004611457565b6107b6565b348015610330575f80fd5b506101fd61033f36600461132e565b6107d8565b34801561034f575f80fd5b506101dc61035e366004611457565b6107fc565b34801561036e575f80fd5b506101fd61037d36600461132e565b610834565b34801561038d575f80fd5b506101dc61039c36600461132e565b610879565b3480156103ac575f80fd5b506103c06103bb36600461132e565b6108fd565b6040516102099190611495565b3480156103d8575f80fd5b506102456103e73660046112c8565b610951565b3480156103f7575f80fd5b506101dc6104063660046114fb565b61098f565b348015610416575f80fd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610449575f80fd5b506101fd610458366004611457565b610b23565b348015610468575f80fd5b506102455f81565b34801561047b575f80fd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104ae575f80fd5b506102456104bd3660046115a3565b610b59565b3480156104cd575f80fd5b506102af6104dc3660046116bf565b63bc197c8160e01b95945050505050565b3480156104f8575f80fd5b506101dc61050736600461132e565b610b9d565b348015610517575f80fd5b5061024561052636600461132e565b5f9081525f80516020611a3e833981519152602052604090205490565b34801561054e575f80fd5b506101dc61055d366004611457565b610c56565b6101dc6105703660046115a3565b610c72565b348015610580575f80fd5b506102af61058f366004611761565b63f23a6e6160e01b95945050505050565b3480156105ab575f80fd5b507f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360154610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105fd81610df9565b5f61060c898989898989610951565b90506106188184610e06565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610653969594939291906117e8565b60405180910390a3831561069c57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161069391815260200190565b60405180910390a25b505050505050505050565b5f6106b182610ec5565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2815f610b23565b6106f0576106f08133610ee9565b5f6106ff888888888888610951565b905061070b8185610f26565b61071788888888610f74565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161074e9493929190611824565b60405180910390a361075f81610fe8565b5050505050505050565b5f60025b610776836108fd565b600381111561078757610787611481565b1492915050565b5f9081525f80516020611a5e833981519152602052604090206001015490565b5f600361076d565b6107bf8261078e565b6107c881610df9565b6107d2838361101f565b50505050565b5f806107e3836108fd565b60038111156107f4576107f4611481565b141592915050565b6001600160a01b03811633146108255760405163334bd91960e11b815260040160405180910390fd5b61082f82826110c0565b505050565b5f8061083f836108fd565b9050600181600381111561085557610855611481565b14806108725750600281600381111561087057610870611481565b145b9392505050565b5f80516020611a3e833981519152333081146108b85760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b600182015460408051918252602082018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15060010155565b5f8181525f80516020611a3e8339815191526020526040812054805f0361092657505f92915050565b600181036109375750600392915050565b428111156109485750600192915050565b50600292915050565b5f86868686868660405160200161096d969594939291906117e8565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109b981610df9565b88871415806109c85750888514155b156109fa576040516001624fcdef60e01b03198152600481018a905260248101869052604481018890526064016108af565b5f610a0b8b8b8b8b8b8b8b8b610b59565b9050610a178184610e06565b5f5b8a811015610ad45780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a5657610a56611855565b9050602002016020810190610a6b9190611869565b8d8d86818110610a7d57610a7d611855565b905060200201358c8c87818110610a9657610a96611855565b9050602002810190610aa89190611882565b8c8b604051610abc969594939291906117e8565b60405180910390a3610acd816118d8565b9050610a19565b508315610b1657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610b0d91815260200190565b60405180910390a25b5050505050505050505050565b5f9182525f80516020611a5e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b7998979695949392919061197c565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610bc781610df9565b5f80516020611a3e833981519152610bde83610834565b610c1a5782610bed6002611139565b610bf76001611139565b604051635ead8eb560e01b815260048101939093521760248201526044016108af565b5f838152602082905260408082208290555184917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a2505050565b610c5f8261078e565b610c6881610df9565b6107d283836110c0565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c9d815f610b23565b610cab57610cab8133610ee9565b8786141580610cba5750878414155b15610cec576040516001624fcdef60e01b031981526004810189905260248101859052604481018790526064016108af565b5f610cfd8a8a8a8a8a8a8a8a610b59565b9050610d098185610f26565b5f5b89811015610de3575f8b8b83818110610d2657610d26611855565b9050602002016020810190610d3b9190611869565b90505f8a8a84818110610d5057610d50611855565b905060200201359050365f8a8a86818110610d6d57610d6d611855565b9050602002810190610d7f9190611882565b91509150610d8f84848484610f74565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610dc69493929190611824565b60405180910390a35050505080610ddc906118d8565b9050610d0b565b50610ded81610fe8565b50505050505050505050565b610e038133610ee9565b50565b5f80516020611a3e833981519152610e1d836107d8565b15610e4e5782610e2c5f611139565b604051635ead8eb560e01b8152600481019290925260248201526044016108af565b5f610e777f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb36015490565b905080831015610ea457604051635433660960e01b815260048101849052602481018290526044016108af565b610eae8342611a1b565b5f9485526020929092525060409092209190915550565b5f6001600160e01b03198216630271189760e51b14806106b157506106b18261115b565b610ef38282610b23565b610f225760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016108af565b5050565b610f2f82610769565b610f3e5781610e2c6002611139565b8015801590610f535750610f51816107ae565b155b15610f225760405163121534c360e31b8152600481018290526024016108af565b5f80856001600160a01b0316858585604051610f91929190611a2e565b5f6040518083038185875af1925050503d805f8114610fcb576040519150601f19603f3d011682016040523d82523d5f602084013e610fd0565b606091505b5091509150610fdf828261118f565b50505050505050565b5f80516020611a3e833981519152610fff82610769565b61100e5781610e2c6002611139565b5f9182526020526040902060019055565b5f5f80516020611a5e8339815191526110388484610b23565b6110b7575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561106d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106b1565b5f9150506106b1565b5f5f80516020611a5e8339815191526110d98484610b23565b156110b7575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106b1565b5f81600381111561114c5761114c611481565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b14806106b157506301ffc9a760e01b6001600160e01b03198316146106b1565b6060826111a45761119f826111ab565b6106b1565b50806106b1565b8051156111bb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146111ea575f80fd5b919050565b5f8083601f8401126111ff575f80fd5b5081356001600160401b03811115611215575f80fd5b60208301915083602082850101111561122c575f80fd5b9250929050565b5f805f805f805f60c0888a031215611249575f80fd5b611252886111d4565b96506020880135955060408801356001600160401b03811115611273575f80fd5b61127f8a828b016111ef565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156112b1575f80fd5b81356001600160e01b031981168114610872575f80fd5b5f805f805f8060a087890312156112dd575f80fd5b6112e6876111d4565b95506020870135945060408701356001600160401b03811115611307575f80fd5b61131389828a016111ef565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561133e575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561138157611381611345565b604052919050565b5f82601f830112611398575f80fd5b81356001600160401b038111156113b1576113b1611345565b6113c4601f8201601f1916602001611359565b8181528460208386010111156113d8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611407575f80fd5b611410856111d4565b935061141e602086016111d4565b92506040850135915060608501356001600160401b0381111561143f575f80fd5b61144b87828801611389565b91505092959194509250565b5f8060408385031215611468575f80fd5b82359150611478602084016111d4565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106114b557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8083601f8401126114cb575f80fd5b5081356001600160401b038111156114e1575f80fd5b6020830191508360208260051b850101111561122c575f80fd5b5f805f805f805f805f60c08a8c031215611513575f80fd5b89356001600160401b0380821115611529575f80fd5b6115358d838e016114bb565b909b50995060208c013591508082111561154d575f80fd5b6115598d838e016114bb565b909950975060408c0135915080821115611571575f80fd5b5061157e8c828d016114bb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f805f805f805f8060a0898b0312156115ba575f80fd5b88356001600160401b03808211156115d0575f80fd5b6115dc8c838d016114bb565b909a50985060208b01359150808211156115f4575f80fd5b6116008c838d016114bb565b909850965060408b0135915080821115611618575f80fd5b506116258b828c016114bb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611652575f80fd5b813560206001600160401b0382111561166d5761166d611345565b8160051b61167c828201611359565b9283528481018201928281019087851115611695575f80fd5b83870192505b848310156116b45782358252918301919083019061169b565b979650505050505050565b5f805f805f60a086880312156116d3575f80fd5b6116dc866111d4565b94506116ea602087016111d4565b935060408601356001600160401b0380821115611705575f80fd5b61171189838a01611643565b94506060880135915080821115611726575f80fd5b61173289838a01611643565b93506080880135915080821115611747575f80fd5b5061175488828901611389565b9150509295509295909350565b5f805f805f60a08688031215611775575f80fd5b61177e866111d4565b945061178c602087016111d4565b9350604086013592506060860135915060808601356001600160401b038111156117b4575f80fd5b61175488828901611389565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61180f60a0830186886117c0565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f61184b6060830184866117c0565b9695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611879575f80fd5b610872826111d4565b5f808335601e19843603018112611897575f80fd5b8301803591506001600160401b038211156118b0575f80fd5b60200191503681900382131561122c575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016118e9576118e96118c4565b5060010190565b8183525f6020808501808196508560051b81019150845f5b8781101561196f5782840389528135601e19883603018112611928575f80fd5b870185810190356001600160401b03811115611942575f80fd5b803603821315611950575f80fd5b61195b8682846117c0565b9a87019a9550505090840190600101611908565b5091979650505050505050565b60a080825281018890525f8960c08301825b8b8110156119bc576001600160a01b036119a7846111d4565b1682526020928301929091019060010161198e565b5083810360208501528881526001600160fb1b038911156119db575f80fd5b8860051b9150818a60208301370182810360209081016040850152611a0390820187896118f0565b60608401959095525050608001529695505050505050565b808201808211156106b1576106b16118c4565b818382375f910190815291905056fe9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220d3ebb0557f8e96ac7cca583bdaba7efbc4604ec4d827b2da62a9ad725a5a756b64736f6c63430008140033",
"bytecode": "0x608060405234801561001057600080fd5b50611b6c806100206000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610567578063e38335e514610587578063f23a6e611461059a578063f27a0c92146105c657600080fd5b8063bc197c81146104e1578063c4d252f51461050d578063d45c44351461052d57600080fd5b806391d14854116100c657806391d1485414610458578063a217fddf14610478578063b08e51c01461048d578063b1c5f427146104c157600080fd5b80638065657f146103e45780638f2a0bb0146104045780638f61f4f51461042457600080fd5b80632ab0f5291161015957806336568abe1161013357806336568abe14610357578063584b153e1461037757806364d62353146103975780637958004c146103b757600080fd5b80632ab0f529146102f75780632f2ff15d1461031757806331d507501461033757600080fd5b8063134008d311610195578063134008d31461026057806313bc9f2014610273578063150b7a0214610293578063248a9ca3146102d757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611292565b6105fa565b005b3480156101f557600080fd5b50610209610204366004611306565b6106d0565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b6101e761026e366004611330565b6106e1565b34801561027f57600080fd5b5061020961028e36600461139b565b610796565b34801561029f57600080fd5b506102be6102ae366004611469565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b3480156102e357600080fd5b506102526102f236600461139b565b6107bc565b34801561030357600080fd5b5061020961031236600461139b565b6107de565b34801561032357600080fd5b506101e76103323660046114d0565b6107e7565b34801561034357600080fd5b5061020961035236600461139b565b610809565b34801561036357600080fd5b506101e76103723660046114d0565b61082e565b34801561038357600080fd5b5061020961039236600461139b565b610866565b3480156103a357600080fd5b506101e76103b236600461139b565b6108ac565b3480156103c357600080fd5b506103d76103d236600461139b565b610931565b6040516102159190611512565b3480156103f057600080fd5b506102526103ff366004611330565b610989565b34801561041057600080fd5b506101e761041f36600461157e565b6109c8565b34801561043057600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561046457600080fd5b506102096104733660046114d0565b610b5e565b34801561048457600080fd5b50610252600081565b34801561049957600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104cd57600080fd5b506102526104dc36600461162f565b610b96565b3480156104ed57600080fd5b506102be6104fc366004611756565b63bc197c8160e01b95945050505050565b34801561051957600080fd5b506101e761052836600461139b565b610bdb565b34801561053957600080fd5b5061025261054836600461139b565b6000908152600080516020611af7833981519152602052604090205490565b34801561057357600080fd5b506101e76105823660046114d0565b610c96565b6101e761059536600461162f565b610cb2565b3480156105a657600080fd5b506102be6105b53660046117ff565b63f23a6e6160e01b95945050505050565b3480156105d257600080fd5b507f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360154610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062481610e3f565b6000610634898989898989610989565b90506106408184610e4c565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067c9695949392919061188c565b60405180910390a383156106c557807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106bc91815260200190565b60405180910390a25b505050505050505050565b60006106db82610f0f565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6361070d816000610b5e565b61071b5761071b8133610f34565b600061072b888888888888610989565b90506107378185610f71565b61074388888888610fbf565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161077b94939291906118c9565b60405180910390a361078c81611037565b5050505050505050565b600060025b6107a483610931565b60038111156107b5576107b56114fc565b1492915050565b6000908152600080516020611b17833981519152602052604090206001015490565b6000600361079b565b6107f0826107bc565b6107f981610e3f565b6108038383611070565b50505050565b60008061081583610931565b6003811115610826576108266114fc565b141592915050565b6001600160a01b03811633146108575760405163334bd91960e11b815260040160405180910390fd5b6108618282611115565b505050565b60008061087283610931565b90506001816003811115610888576108886114fc565b14806108a5575060028160038111156108a3576108a36114fc565b145b9392505050565b600080516020611af7833981519152333081146108ec5760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b600182015460408051918252602082018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15060010155565b6000818152600080516020611af783398151915260205260408120548060000361095e5750600092915050565b6001810361096f5750600392915050565b428111156109805750600192915050565b50600292915050565b60008686868686866040516020016109a69695949392919061188c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109f281610e3f565b8887141580610a015750888514155b15610a33576040516001624fcdef60e01b03198152600481018a905260248101869052604481018890526064016108e3565b6000610a458b8b8b8b8b8b8b8b610b96565b9050610a518184610e4c565b60005b8a811015610b0f5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a9157610a916118fb565b9050602002016020810190610aa69190611911565b8d8d86818110610ab857610ab86118fb565b905060200201358c8c87818110610ad157610ad16118fb565b9050602002810190610ae3919061192c565b8c8b604051610af79695949392919061188c565b60405180910390a3610b0881611988565b9050610a54565b508315610b5157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610b4891815260200190565b60405180910390a25b5050505050505050505050565b6000918252600080516020611b17833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610bb7989796959493929190611a32565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610c0581610e3f565b600080516020611af7833981519152610c1d83610866565b610c595782610c2c6002611191565b610c366001611191565b604051635ead8eb560e01b815260048101939093521760248201526044016108e3565b6000838152602082905260408082208290555184917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a2505050565b610c9f826107bc565b610ca881610e3f565b6108038383611115565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610cde816000610b5e565b610cec57610cec8133610f34565b8786141580610cfb5750878414155b15610d2d576040516001624fcdef60e01b031981526004810189905260248101859052604481018790526064016108e3565b6000610d3f8a8a8a8a8a8a8a8a610b96565b9050610d4b8185610f71565b60005b89811015610e295760008b8b83818110610d6a57610d6a6118fb565b9050602002016020810190610d7f9190611911565b905060008a8a84818110610d9557610d956118fb565b9050602002013590503660008a8a86818110610db357610db36118fb565b9050602002810190610dc5919061192c565b91509150610dd584848484610fbf565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610e0c94939291906118c9565b60405180910390a35050505080610e2290611988565b9050610d4e565b50610e3381611037565b50505050505050505050565b610e498133610f34565b50565b600080516020611af7833981519152610e6483610809565b15610e965782610e746000611191565b604051635ead8eb560e01b8152600481019290925260248201526044016108e3565b6000610ec07f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb36015490565b905080831015610eed57604051635433660960e01b815260048101849052602481018290526044016108e3565b610ef78342611ad3565b60009485526020929092525060409092209190915550565b60006001600160e01b03198216630271189760e51b14806106db57506106db826111b4565b610f3e8282610b5e565b610f6d5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016108e3565b5050565b610f7a82610796565b610f895781610e746002611191565b8015801590610f9e5750610f9c816107de565b155b15610f6d5760405163121534c360e31b8152600481018290526024016108e3565b600080856001600160a01b0316858585604051610fdd929190611ae6565b60006040518083038185875af1925050503d806000811461101a576040519150601f19603f3d011682016040523d82523d6000602084013e61101f565b606091505b509150915061102e82826111e9565b50505050505050565b600080516020611af783398151915261104f82610796565b61105e5781610e746002611191565b60009182526020526040902060019055565b6000600080516020611b1783398151915261108b8484610b5e565b61110b576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556110c13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106db565b60009150506106db565b6000600080516020611b178339815191526111308484610b5e565b1561110b576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106db565b60008160038111156111a5576111a56114fc565b600160ff919091161b92915050565b60006001600160e01b03198216637965db0b60e01b14806106db57506301ffc9a760e01b6001600160e01b03198316146106db565b6060826111fe576111f982611205565b6106db565b50806106db565b8051156112155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461124557600080fd5b919050565b60008083601f84011261125c57600080fd5b5081356001600160401b0381111561127357600080fd5b60208301915083602082850101111561128b57600080fd5b9250929050565b600080600080600080600060c0888a0312156112ad57600080fd5b6112b68861122e565b96506020880135955060408801356001600160401b038111156112d857600080fd5b6112e48a828b0161124a565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561131857600080fd5b81356001600160e01b0319811681146108a557600080fd5b60008060008060008060a0878903121561134957600080fd5b6113528761122e565b95506020870135945060408701356001600160401b0381111561137457600080fd5b61138089828a0161124a565b979a9699509760608101359660809091013595509350505050565b6000602082840312156113ad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156113f2576113f26113b4565b604052919050565b600082601f83011261140b57600080fd5b81356001600160401b03811115611424576114246113b4565b611437601f8201601f19166020016113ca565b81815284602083860101111561144c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561147f57600080fd5b6114888561122e565b93506114966020860161122e565b92506040850135915060608501356001600160401b038111156114b857600080fd5b6114c4878288016113fa565b91505092959194509250565b600080604083850312156114e357600080fd5b823591506114f36020840161122e565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016004831061153457634e487b7160e01b600052602160045260246000fd5b91905290565b60008083601f84011261154c57600080fd5b5081356001600160401b0381111561156357600080fd5b6020830191508360208260051b850101111561128b57600080fd5b600080600080600080600080600060c08a8c03121561159c57600080fd5b89356001600160401b03808211156115b357600080fd5b6115bf8d838e0161153a565b909b50995060208c01359150808211156115d857600080fd5b6115e48d838e0161153a565b909950975060408c01359150808211156115fd57600080fd5b5061160a8c828d0161153a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561164b57600080fd5b88356001600160401b038082111561166257600080fd5b61166e8c838d0161153a565b909a50985060208b013591508082111561168757600080fd5b6116938c838d0161153a565b909850965060408b01359150808211156116ac57600080fd5b506116b98b828c0161153a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126116e857600080fd5b813560206001600160401b03821115611703576117036113b4565b8160051b6117128282016113ca565b928352848101820192828101908785111561172c57600080fd5b83870192505b8483101561174b57823582529183019190830190611732565b979650505050505050565b600080600080600060a0868803121561176e57600080fd5b6117778661122e565b94506117856020870161122e565b935060408601356001600160401b03808211156117a157600080fd5b6117ad89838a016116d7565b945060608801359150808211156117c357600080fd5b6117cf89838a016116d7565b935060808801359150808211156117e557600080fd5b506117f2888289016113fa565b9150509295509295909350565b600080600080600060a0868803121561181757600080fd5b6118208661122e565b945061182e6020870161122e565b9350604086013592506060860135915060808601356001600160401b0381111561185757600080fd5b6117f2888289016113fa565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006118b460a083018688611863565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006118f1606083018486611863565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561192357600080fd5b6108a58261122e565b6000808335601e1984360301811261194357600080fd5b8301803591506001600160401b0382111561195d57600080fd5b60200191503681900382131561128b57600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161199a5761199a611972565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611a255782840389528135601e198836030181126119dc57600080fd5b870185810190356001600160401b038111156119f757600080fd5b803603821315611a0657600080fd5b611a11868284611863565b9a87019a95505050908401906001016119bb565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611a73576001600160a01b03611a5e8461122e565b16825260209283019290910190600101611a45565b5083810360208501528881526001600160fb1b03891115611a9357600080fd5b8860051b9150818a60208301370182810360209081016040850152611abb90820187896119a1565b60608401959095525050608001529695505050505050565b808201808211156106db576106db611972565b818382376000910190815291905056fe9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212202cf12871ae0f41a4b5b8321ca33bac9cee507800d505e74442dfc9616c2afc3664736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610567578063e38335e514610587578063f23a6e611461059a578063f27a0c92146105c657600080fd5b8063bc197c81146104e1578063c4d252f51461050d578063d45c44351461052d57600080fd5b806391d14854116100c657806391d1485414610458578063a217fddf14610478578063b08e51c01461048d578063b1c5f427146104c157600080fd5b80638065657f146103e45780638f2a0bb0146104045780638f61f4f51461042457600080fd5b80632ab0f5291161015957806336568abe1161013357806336568abe14610357578063584b153e1461037757806364d62353146103975780637958004c146103b757600080fd5b80632ab0f529146102f75780632f2ff15d1461031757806331d507501461033757600080fd5b8063134008d311610195578063134008d31461026057806313bc9f2014610273578063150b7a0214610293578063248a9ca3146102d757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611292565b6105fa565b005b3480156101f557600080fd5b50610209610204366004611306565b6106d0565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b6101e761026e366004611330565b6106e1565b34801561027f57600080fd5b5061020961028e36600461139b565b610796565b34801561029f57600080fd5b506102be6102ae366004611469565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b3480156102e357600080fd5b506102526102f236600461139b565b6107bc565b34801561030357600080fd5b5061020961031236600461139b565b6107de565b34801561032357600080fd5b506101e76103323660046114d0565b6107e7565b34801561034357600080fd5b5061020961035236600461139b565b610809565b34801561036357600080fd5b506101e76103723660046114d0565b61082e565b34801561038357600080fd5b5061020961039236600461139b565b610866565b3480156103a357600080fd5b506101e76103b236600461139b565b6108ac565b3480156103c357600080fd5b506103d76103d236600461139b565b610931565b6040516102159190611512565b3480156103f057600080fd5b506102526103ff366004611330565b610989565b34801561041057600080fd5b506101e761041f36600461157e565b6109c8565b34801561043057600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561046457600080fd5b506102096104733660046114d0565b610b5e565b34801561048457600080fd5b50610252600081565b34801561049957600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104cd57600080fd5b506102526104dc36600461162f565b610b96565b3480156104ed57600080fd5b506102be6104fc366004611756565b63bc197c8160e01b95945050505050565b34801561051957600080fd5b506101e761052836600461139b565b610bdb565b34801561053957600080fd5b5061025261054836600461139b565b6000908152600080516020611af7833981519152602052604090205490565b34801561057357600080fd5b506101e76105823660046114d0565b610c96565b6101e761059536600461162f565b610cb2565b3480156105a657600080fd5b506102be6105b53660046117ff565b63f23a6e6160e01b95945050505050565b3480156105d257600080fd5b507f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360154610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062481610e3f565b6000610634898989898989610989565b90506106408184610e4c565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067c9695949392919061188c565b60405180910390a383156106c557807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106bc91815260200190565b60405180910390a25b505050505050505050565b60006106db82610f0f565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6361070d816000610b5e565b61071b5761071b8133610f34565b600061072b888888888888610989565b90506107378185610f71565b61074388888888610fbf565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161077b94939291906118c9565b60405180910390a361078c81611037565b5050505050505050565b600060025b6107a483610931565b60038111156107b5576107b56114fc565b1492915050565b6000908152600080516020611b17833981519152602052604090206001015490565b6000600361079b565b6107f0826107bc565b6107f981610e3f565b6108038383611070565b50505050565b60008061081583610931565b6003811115610826576108266114fc565b141592915050565b6001600160a01b03811633146108575760405163334bd91960e11b815260040160405180910390fd5b6108618282611115565b505050565b60008061087283610931565b90506001816003811115610888576108886114fc565b14806108a5575060028160038111156108a3576108a36114fc565b145b9392505050565b600080516020611af7833981519152333081146108ec5760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b600182015460408051918252602082018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15060010155565b6000818152600080516020611af783398151915260205260408120548060000361095e5750600092915050565b6001810361096f5750600392915050565b428111156109805750600192915050565b50600292915050565b60008686868686866040516020016109a69695949392919061188c565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109f281610e3f565b8887141580610a015750888514155b15610a33576040516001624fcdef60e01b03198152600481018a905260248101869052604481018890526064016108e3565b6000610a458b8b8b8b8b8b8b8b610b96565b9050610a518184610e4c565b60005b8a811015610b0f5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a9157610a916118fb565b9050602002016020810190610aa69190611911565b8d8d86818110610ab857610ab86118fb565b905060200201358c8c87818110610ad157610ad16118fb565b9050602002810190610ae3919061192c565b8c8b604051610af79695949392919061188c565b60405180910390a3610b0881611988565b9050610a54565b508315610b5157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610b4891815260200190565b60405180910390a25b5050505050505050505050565b6000918252600080516020611b17833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610bb7989796959493929190611a32565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610c0581610e3f565b600080516020611af7833981519152610c1d83610866565b610c595782610c2c6002611191565b610c366001611191565b604051635ead8eb560e01b815260048101939093521760248201526044016108e3565b6000838152602082905260408082208290555184917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a2505050565b610c9f826107bc565b610ca881610e3f565b6108038383611115565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610cde816000610b5e565b610cec57610cec8133610f34565b8786141580610cfb5750878414155b15610d2d576040516001624fcdef60e01b031981526004810189905260248101859052604481018790526064016108e3565b6000610d3f8a8a8a8a8a8a8a8a610b96565b9050610d4b8185610f71565b60005b89811015610e295760008b8b83818110610d6a57610d6a6118fb565b9050602002016020810190610d7f9190611911565b905060008a8a84818110610d9557610d956118fb565b9050602002013590503660008a8a86818110610db357610db36118fb565b9050602002810190610dc5919061192c565b91509150610dd584848484610fbf565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610e0c94939291906118c9565b60405180910390a35050505080610e2290611988565b9050610d4e565b50610e3381611037565b50505050505050505050565b610e498133610f34565b50565b600080516020611af7833981519152610e6483610809565b15610e965782610e746000611191565b604051635ead8eb560e01b8152600481019290925260248201526044016108e3565b6000610ec07f9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb36015490565b905080831015610eed57604051635433660960e01b815260048101849052602481018290526044016108e3565b610ef78342611ad3565b60009485526020929092525060409092209190915550565b60006001600160e01b03198216630271189760e51b14806106db57506106db826111b4565b610f3e8282610b5e565b610f6d5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016108e3565b5050565b610f7a82610796565b610f895781610e746002611191565b8015801590610f9e5750610f9c816107de565b155b15610f6d5760405163121534c360e31b8152600481018290526024016108e3565b600080856001600160a01b0316858585604051610fdd929190611ae6565b60006040518083038185875af1925050503d806000811461101a576040519150601f19603f3d011682016040523d82523d6000602084013e61101f565b606091505b509150915061102e82826111e9565b50505050505050565b600080516020611af783398151915261104f82610796565b61105e5781610e746002611191565b60009182526020526040902060019055565b6000600080516020611b1783398151915261108b8484610b5e565b61110b576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556110c13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106db565b60009150506106db565b6000600080516020611b178339815191526111308484610b5e565b1561110b576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106db565b60008160038111156111a5576111a56114fc565b600160ff919091161b92915050565b60006001600160e01b03198216637965db0b60e01b14806106db57506301ffc9a760e01b6001600160e01b03198316146106db565b6060826111fe576111f982611205565b6106db565b50806106db565b8051156112155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461124557600080fd5b919050565b60008083601f84011261125c57600080fd5b5081356001600160401b0381111561127357600080fd5b60208301915083602082850101111561128b57600080fd5b9250929050565b600080600080600080600060c0888a0312156112ad57600080fd5b6112b68861122e565b96506020880135955060408801356001600160401b038111156112d857600080fd5b6112e48a828b0161124a565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561131857600080fd5b81356001600160e01b0319811681146108a557600080fd5b60008060008060008060a0878903121561134957600080fd5b6113528761122e565b95506020870135945060408701356001600160401b0381111561137457600080fd5b61138089828a0161124a565b979a9699509760608101359660809091013595509350505050565b6000602082840312156113ad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156113f2576113f26113b4565b604052919050565b600082601f83011261140b57600080fd5b81356001600160401b03811115611424576114246113b4565b611437601f8201601f19166020016113ca565b81815284602083860101111561144c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561147f57600080fd5b6114888561122e565b93506114966020860161122e565b92506040850135915060608501356001600160401b038111156114b857600080fd5b6114c4878288016113fa565b91505092959194509250565b600080604083850312156114e357600080fd5b823591506114f36020840161122e565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016004831061153457634e487b7160e01b600052602160045260246000fd5b91905290565b60008083601f84011261154c57600080fd5b5081356001600160401b0381111561156357600080fd5b6020830191508360208260051b850101111561128b57600080fd5b600080600080600080600080600060c08a8c03121561159c57600080fd5b89356001600160401b03808211156115b357600080fd5b6115bf8d838e0161153a565b909b50995060208c01359150808211156115d857600080fd5b6115e48d838e0161153a565b909950975060408c01359150808211156115fd57600080fd5b5061160a8c828d0161153a565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561164b57600080fd5b88356001600160401b038082111561166257600080fd5b61166e8c838d0161153a565b909a50985060208b013591508082111561168757600080fd5b6116938c838d0161153a565b909850965060408b01359150808211156116ac57600080fd5b506116b98b828c0161153a565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126116e857600080fd5b813560206001600160401b03821115611703576117036113b4565b8160051b6117128282016113ca565b928352848101820192828101908785111561172c57600080fd5b83870192505b8483101561174b57823582529183019190830190611732565b979650505050505050565b600080600080600060a0868803121561176e57600080fd5b6117778661122e565b94506117856020870161122e565b935060408601356001600160401b03808211156117a157600080fd5b6117ad89838a016116d7565b945060608801359150808211156117c357600080fd5b6117cf89838a016116d7565b935060808801359150808211156117e557600080fd5b506117f2888289016113fa565b9150509295509295909350565b600080600080600060a0868803121561181757600080fd5b6118208661122e565b945061182e6020870161122e565b9350604086013592506060860135915060808601356001600160401b0381111561185757600080fd5b6117f2888289016113fa565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006118b460a083018688611863565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006118f1606083018486611863565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561192357600080fd5b6108a58261122e565b6000808335601e1984360301811261194357600080fd5b8301803591506001600160401b0382111561195d57600080fd5b60200191503681900382131561128b57600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161199a5761199a611972565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611a255782840389528135601e198836030181126119dc57600080fd5b870185810190356001600160401b038111156119f757600080fd5b803603821315611a0657600080fd5b611a11868284611863565b9a87019a95505050908401906001016119bb565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611a73576001600160a01b03611a5e8461122e565b16825260209283019290910190600101611a45565b5083810360208501528881526001600160fb1b03891115611a9357600080fd5b8860051b9150818a60208301370182810360209081016040850152611abb90820187896119a1565b60608401959095525050608001529695505050505050565b808201808211156106db576106db611972565b818382376000910190815291905056fe9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212202cf12871ae0f41a4b5b8321ca33bac9cee507800d505e74442dfc9616c2afc3664736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -344,6 +344,6 @@ {

],
"bytecode": "0x608060405234801561000f575f80fd5b50610af88061001d5f395ff3fe6080604052600436106100dc575f3560e01c8063961325211161007c578063be9a655511610057578063be9a65551461021f578063efbe1c1c14610233578063f2fde38b14610247578063fbccedae14610266575f80fd5b806396132521146101c15780639852595c146101e1578063a3f8eace14610200575f80fd5b8063715018a6116100b7578063715018a61461014e578063810ec23b1461016257806386d1a69f146101815780638da5cb5b14610195575f80fd5b80630a17b06b146100e75780630fb5a6b414610119578063191655871461012d575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b50610106610101366004610957565b61027a565b6040519081526020015b60405180910390f35b348015610124575f80fd5b506101066102a9565b348015610138575f80fd5b5061014c610147366004610986565b6102e4565b005b348015610159575f80fd5b5061014c610384565b34801561016d575f80fd5b5061010661017c36600461099f565b610397565b34801561018c575f80fd5b5061014c61041b565b3480156101a0575f80fd5b506101a9610493565b6040516001600160a01b039091168152602001610110565b3480156101cc575f80fd5b505f80516020610aa383398151915254610106565b3480156101ec575f80fd5b506101066101fb366004610986565b6104c1565b34801561020b575f80fd5b5061010661021a366004610986565b6104fa565b34801561022a575f80fd5b50610106610518565b34801561023e575f80fd5b50610106610547565b348015610252575f80fd5b5061014c610261366004610986565b610567565b348015610271575f80fd5b506101066105a9565b5f6102a36102935f80516020610aa38339815191525490565b61029d90476109e4565b836105d2565b92915050565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025468010000000000000000900467ffffffffffffffff1690565b5f80516020610aa38339815191525f6102fc836104fa565b6001600160a01b0384165f90815260018401602052604081208054929350839290919061032a9084906109e4565b90915550506040518181526001600160a01b038416907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a261037f83610379610493565b83610651565b505050565b61038c6106a3565b6103955f6106d5565b565b5f6104146103a4846104c1565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa1580156103e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040a91906109f7565b61029d91906109e4565b9392505050565b5f80516020610aa38339815191525f6104326105a9565b905080825f015f82825461044691906109e4565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a161048f610489610493565b82610745565b5050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03165f9081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3901602052604090205490565b5f610504826104c1565b61050e8342610397565b6102a39190610a0e565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025467ffffffffffffffff1690565b5f6105506102a9565b610558610518565b61056291906109e4565b905090565b61056f6106a3565b6001600160a01b03811661059d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6105a6816106d5565b50565b5f6105bf5f80516020610aa38339815191525490565b6105c84261027a565b6105629190610a0e565b5f6105db610518565b8267ffffffffffffffff1610156105f357505f6102a3565b6105fb610547565b8267ffffffffffffffff16106106125750816102a3565b61061a6102a9565b610622610518565b6106369067ffffffffffffffff8516610a0e565b6106409085610a21565b61064a9190610a38565b90506102a3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261037f9084906107d8565b336106ac610493565b6001600160a01b0316146103955760405163118cdaa760e01b8152336004820152602401610594565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b804710156107685760405163cd78605960e01b8152306004820152602401610594565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146107b1576040519150601f19603f3d011682016040523d82523d5f602084013e6107b6565b606091505b505090508061037f57604051630a12f52160e11b815260040160405180910390fd5b5f6107ec6001600160a01b03841683610839565b905080515f1415801561081057508080602001905181019061080e9190610a57565b155b1561037f57604051635274afe760e01b81526001600160a01b0384166004820152602401610594565b606061041483835f845f80856001600160a01b0316848660405161085d9190610a76565b5f6040518083038185875af1925050503d805f8114610897576040519150601f19603f3d011682016040523d82523d5f602084013e61089c565b606091505b50915091506108ac8683836108b6565b9695505050505050565b6060826108cb576108c682610912565b610414565b81511580156108e257506001600160a01b0384163b155b1561090b57604051639996b31560e01b81526001600160a01b0385166004820152602401610594565b5080610414565b8051156109225780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b803567ffffffffffffffff81168114610952575f80fd5b919050565b5f60208284031215610967575f80fd5b6104148261093b565b80356001600160a01b0381168114610952575f80fd5b5f60208284031215610996575f80fd5b61041482610970565b5f80604083850312156109b0575f80fd5b6109b983610970565b91506109c76020840161093b565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102a3576102a36109d0565b5f60208284031215610a07575f80fd5b5051919050565b818103818111156102a3576102a36109d0565b80820281158282048414176102a3576102a36109d0565b5f82610a5257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610a67575f80fd5b81518015158114610414575f80fd5b5f82515f5b81811015610a955760208186018101518583015201610a7b565b505f92019182525091905056fea1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a26469706673582212205713bdf14c75cb7907aeb872247f2ac35410c7d3d8e692ae75da573003e9b42e64736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106100dc575f3560e01c8063961325211161007c578063be9a655511610057578063be9a65551461021f578063efbe1c1c14610233578063f2fde38b14610247578063fbccedae14610266575f80fd5b806396132521146101c15780639852595c146101e1578063a3f8eace14610200575f80fd5b8063715018a6116100b7578063715018a61461014e578063810ec23b1461016257806386d1a69f146101815780638da5cb5b14610195575f80fd5b80630a17b06b146100e75780630fb5a6b414610119578063191655871461012d575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b50610106610101366004610957565b61027a565b6040519081526020015b60405180910390f35b348015610124575f80fd5b506101066102a9565b348015610138575f80fd5b5061014c610147366004610986565b6102e4565b005b348015610159575f80fd5b5061014c610384565b34801561016d575f80fd5b5061010661017c36600461099f565b610397565b34801561018c575f80fd5b5061014c61041b565b3480156101a0575f80fd5b506101a9610493565b6040516001600160a01b039091168152602001610110565b3480156101cc575f80fd5b505f80516020610aa383398151915254610106565b3480156101ec575f80fd5b506101066101fb366004610986565b6104c1565b34801561020b575f80fd5b5061010661021a366004610986565b6104fa565b34801561022a575f80fd5b50610106610518565b34801561023e575f80fd5b50610106610547565b348015610252575f80fd5b5061014c610261366004610986565b610567565b348015610271575f80fd5b506101066105a9565b5f6102a36102935f80516020610aa38339815191525490565b61029d90476109e4565b836105d2565b92915050565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025468010000000000000000900467ffffffffffffffff1690565b5f80516020610aa38339815191525f6102fc836104fa565b6001600160a01b0384165f90815260018401602052604081208054929350839290919061032a9084906109e4565b90915550506040518181526001600160a01b038416907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a261037f83610379610493565b83610651565b505050565b61038c6106a3565b6103955f6106d5565b565b5f6104146103a4846104c1565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa1580156103e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040a91906109f7565b61029d91906109e4565b9392505050565b5f80516020610aa38339815191525f6104326105a9565b905080825f015f82825461044691906109e4565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a161048f610489610493565b82610745565b5050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03165f9081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3901602052604090205490565b5f610504826104c1565b61050e8342610397565b6102a39190610a0e565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025467ffffffffffffffff1690565b5f6105506102a9565b610558610518565b61056291906109e4565b905090565b61056f6106a3565b6001600160a01b03811661059d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6105a6816106d5565b50565b5f6105bf5f80516020610aa38339815191525490565b6105c84261027a565b6105629190610a0e565b5f6105db610518565b8267ffffffffffffffff1610156105f357505f6102a3565b6105fb610547565b8267ffffffffffffffff16106106125750816102a3565b61061a6102a9565b610622610518565b6106369067ffffffffffffffff8516610a0e565b6106409085610a21565b61064a9190610a38565b90506102a3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261037f9084906107d8565b336106ac610493565b6001600160a01b0316146103955760405163118cdaa760e01b8152336004820152602401610594565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b804710156107685760405163cd78605960e01b8152306004820152602401610594565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146107b1576040519150601f19603f3d011682016040523d82523d5f602084013e6107b6565b606091505b505090508061037f57604051630a12f52160e11b815260040160405180910390fd5b5f6107ec6001600160a01b03841683610839565b905080515f1415801561081057508080602001905181019061080e9190610a57565b155b1561037f57604051635274afe760e01b81526001600160a01b0384166004820152602401610594565b606061041483835f845f80856001600160a01b0316848660405161085d9190610a76565b5f6040518083038185875af1925050503d805f8114610897576040519150601f19603f3d011682016040523d82523d5f602084013e61089c565b606091505b50915091506108ac8683836108b6565b9695505050505050565b6060826108cb576108c682610912565b610414565b81511580156108e257506001600160a01b0384163b155b1561090b57604051639996b31560e01b81526001600160a01b0385166004820152602401610594565b5080610414565b8051156109225780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b803567ffffffffffffffff81168114610952575f80fd5b919050565b5f60208284031215610967575f80fd5b6104148261093b565b80356001600160a01b0381168114610952575f80fd5b5f60208284031215610996575f80fd5b61041482610970565b5f80604083850312156109b0575f80fd5b6109b983610970565b91506109c76020840161093b565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102a3576102a36109d0565b5f60208284031215610a07575f80fd5b5051919050565b818103818111156102a3576102a36109d0565b80820281158282048414176102a3576102a36109d0565b5f82610a5257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610a67575f80fd5b81518015158114610414575f80fd5b5f82515f5b81811015610a955760208186018101518583015201610a7b565b505f92019182525091905056fea1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a26469706673582212205713bdf14c75cb7907aeb872247f2ac35410c7d3d8e692ae75da573003e9b42e64736f6c63430008140033",
"bytecode": "0x608060405234801561001057600080fd5b50610b43806100206000396000f3fe6080604052600436106100e15760003560e01c8063961325211161007f578063be9a655511610059578063be9a655514610230578063efbe1c1c14610245578063f2fde38b1461025a578063fbccedae1461027a57600080fd5b806396132521146101ce5780639852595c146101f0578063a3f8eace1461021057600080fd5b8063715018a6116100bb578063715018a614610157578063810ec23b1461016c57806386d1a69f1461018c5780638da5cb5b146101a157600080fd5b80630a17b06b146100ed5780630fb5a6b414610120578063191655871461013557600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d61010836600461098e565b61028f565b6040519081526020015b60405180910390f35b34801561012c57600080fd5b5061010d6102c0565b34801561014157600080fd5b506101556101503660046109c0565b6102fb565b005b34801561016357600080fd5b5061015561039e565b34801561017857600080fd5b5061010d6101873660046109db565b6103b2565b34801561019857600080fd5b50610155610439565b3480156101ad57600080fd5b506101b66104b5565b6040516001600160a01b039091168152602001610117565b3480156101da57600080fd5b50600080516020610aee8339815191525461010d565b3480156101fc57600080fd5b5061010d61020b3660046109c0565b6104e3565b34801561021c57600080fd5b5061010d61022b3660046109c0565b61051d565b34801561023c57600080fd5b5061010d61053c565b34801561025157600080fd5b5061010d61056b565b34801561026657600080fd5b506101556102753660046109c0565b61058c565b34801561028657600080fd5b5061010d6105cf565b60006102ba6102aa600080516020610aee8339815191525490565b6102b49047610a24565b836105fa565b92915050565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025468010000000000000000900467ffffffffffffffff1690565b600080516020610aee83398151915260006103158361051d565b6001600160a01b0384166000908152600184016020526040812080549293508392909190610344908490610a24565b90915550506040518181526001600160a01b038416907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a2610399836103936104b5565b8361067b565b505050565b6103a66106cd565b6103b060006106ff565b565b60006104326103c0846104e3565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104289190610a37565b6102b49190610a24565b9392505050565b600080516020610aee83398151915260006104526105cf565b9050808260000160008282546104689190610a24565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104b16104ab6104b5565b82610770565b5050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031660009081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3901602052604090205490565b6000610528826104e3565b61053283426103b2565b6102ba9190610a50565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025467ffffffffffffffff1690565b60006105756102c0565b61057d61053c565b6105879190610a24565b905090565b6105946106cd565b6001600160a01b0381166105c357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6105cc816106ff565b50565b60006105e7600080516020610aee8339815191525490565b6105f04261028f565b6105879190610a50565b600061060461053c565b8267ffffffffffffffff16101561061d575060006102ba565b61062561056b565b8267ffffffffffffffff161061063c5750816102ba565b6106446102c0565b61064c61053c565b6106609067ffffffffffffffff8516610a50565b61066a9085610a63565b6106749190610a7a565b90506102ba565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610399908490610807565b336106d66104b5565b6001600160a01b0316146103b05760405163118cdaa760e01b81523360048201526024016105ba565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b804710156107935760405163cd78605960e01b81523060048201526024016105ba565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107e0576040519150601f19603f3d011682016040523d82523d6000602084013e6107e5565b606091505b505090508061039957604051630a12f52160e11b815260040160405180910390fd5b600061081c6001600160a01b0384168361086a565b9050805160001415801561084157508080602001905181019061083f9190610a9c565b155b1561039957604051635274afe760e01b81526001600160a01b03841660048201526024016105ba565b60606104328383600084600080856001600160a01b031684866040516108909190610abe565b60006040518083038185875af1925050503d80600081146108cd576040519150601f19603f3d011682016040523d82523d6000602084013e6108d2565b606091505b50915091506108e28683836108ec565b9695505050505050565b606082610901576108fc82610948565b610432565b815115801561091857506001600160a01b0384163b155b1561094157604051639996b31560e01b81526001600160a01b03851660048201526024016105ba565b5080610432565b8051156109585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b803567ffffffffffffffff8116811461098957600080fd5b919050565b6000602082840312156109a057600080fd5b61043282610971565b80356001600160a01b038116811461098957600080fd5b6000602082840312156109d257600080fd5b610432826109a9565b600080604083850312156109ee57600080fd5b6109f7836109a9565b9150610a0560208401610971565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ba576102ba610a0e565b600060208284031215610a4957600080fd5b5051919050565b818103818111156102ba576102ba610a0e565b80820281158282048414176102ba576102ba610a0e565b600082610a9757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610aae57600080fd5b8151801515811461043257600080fd5b6000825160005b81811015610adf5760208186018101518583015201610ac5565b50600092019182525091905056fea1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a2646970667358221220fd4f43ad9435766907e1d09a2c21fa74bf81f144a2e759eb72b2580cbdc012c964736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106100e15760003560e01c8063961325211161007f578063be9a655511610059578063be9a655514610230578063efbe1c1c14610245578063f2fde38b1461025a578063fbccedae1461027a57600080fd5b806396132521146101ce5780639852595c146101f0578063a3f8eace1461021057600080fd5b8063715018a6116100bb578063715018a614610157578063810ec23b1461016c57806386d1a69f1461018c5780638da5cb5b146101a157600080fd5b80630a17b06b146100ed5780630fb5a6b414610120578063191655871461013557600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d61010836600461098e565b61028f565b6040519081526020015b60405180910390f35b34801561012c57600080fd5b5061010d6102c0565b34801561014157600080fd5b506101556101503660046109c0565b6102fb565b005b34801561016357600080fd5b5061015561039e565b34801561017857600080fd5b5061010d6101873660046109db565b6103b2565b34801561019857600080fd5b50610155610439565b3480156101ad57600080fd5b506101b66104b5565b6040516001600160a01b039091168152602001610117565b3480156101da57600080fd5b50600080516020610aee8339815191525461010d565b3480156101fc57600080fd5b5061010d61020b3660046109c0565b6104e3565b34801561021c57600080fd5b5061010d61022b3660046109c0565b61051d565b34801561023c57600080fd5b5061010d61053c565b34801561025157600080fd5b5061010d61056b565b34801561026657600080fd5b506101556102753660046109c0565b61058c565b34801561028657600080fd5b5061010d6105cf565b60006102ba6102aa600080516020610aee8339815191525490565b6102b49047610a24565b836105fa565b92915050565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025468010000000000000000900467ffffffffffffffff1690565b600080516020610aee83398151915260006103158361051d565b6001600160a01b0384166000908152600184016020526040812080549293508392909190610344908490610a24565b90915550506040518181526001600160a01b038416907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a2610399836103936104b5565b8361067b565b505050565b6103a66106cd565b6103b060006106ff565b565b60006104326103c0846104e3565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104289190610a37565b6102b49190610a24565b9392505050565b600080516020610aee83398151915260006104526105cf565b9050808260000160008282546104689190610a24565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104b16104ab6104b5565b82610770565b5050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031660009081527fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3901602052604090205490565b6000610528826104e3565b61053283426103b2565b6102ba9190610a50565b7fa1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa39025467ffffffffffffffff1690565b60006105756102c0565b61057d61053c565b6105879190610a24565b905090565b6105946106cd565b6001600160a01b0381166105c357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6105cc816106ff565b50565b60006105e7600080516020610aee8339815191525490565b6105f04261028f565b6105879190610a50565b600061060461053c565b8267ffffffffffffffff16101561061d575060006102ba565b61062561056b565b8267ffffffffffffffff161061063c5750816102ba565b6106446102c0565b61064c61053c565b6106609067ffffffffffffffff8516610a50565b61066a9085610a63565b6106749190610a7a565b90506102ba565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610399908490610807565b336106d66104b5565b6001600160a01b0316146103b05760405163118cdaa760e01b81523360048201526024016105ba565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b804710156107935760405163cd78605960e01b81523060048201526024016105ba565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107e0576040519150601f19603f3d011682016040523d82523d6000602084013e6107e5565b606091505b505090508061039957604051630a12f52160e11b815260040160405180910390fd5b600061081c6001600160a01b0384168361086a565b9050805160001415801561084157508080602001905181019061083f9190610a9c565b155b1561039957604051635274afe760e01b81526001600160a01b03841660048201526024016105ba565b60606104328383600084600080856001600160a01b031684866040516108909190610abe565b60006040518083038185875af1925050503d80600081146108cd576040519150601f19603f3d011682016040523d82523d6000602084013e6108d2565b606091505b50915091506108e28683836108ec565b9695505050505050565b606082610901576108fc82610948565b610432565b815115801561091857506001600160a01b0384163b155b1561094157604051639996b31560e01b81526001600160a01b03851660048201526024016105ba565b5080610432565b8051156109585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b803567ffffffffffffffff8116811461098957600080fd5b919050565b6000602082840312156109a057600080fd5b61043282610971565b80356001600160a01b038116811461098957600080fd5b6000602082840312156109d257600080fd5b610432826109a9565b600080604083850312156109ee57600080fd5b6109f7836109a9565b9150610a0560208401610971565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ba576102ba610a0e565b600060208284031215610a4957600080fd5b5051919050565b818103818111156102ba576102ba610a0e565b80820281158282048414176102ba576102ba610a0e565b600082610a9757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610aae57600080fd5b8151801515811461043257600080fd5b6000825160005b81811015610adf5760208186018101518583015201610ac5565b50600092019182525091905056fea1eac494560f7591e4da38ed031587f09556afdfc4399dd2e205b935fdfa3900a2646970667358221220fd4f43ad9435766907e1d09a2c21fa74bf81f144a2e759eb72b2580cbdc012c964736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}
{
"name": "@openzeppelin/contracts-upgradeable",
"description": "Secure Smart Contract library for Solidity",
"version": "5.0.0-rc.0",
"version": "5.0.0-rc.1",
"files": [

@@ -11,3 +11,3 @@ "**/*.sol",

"scripts": {
"prepare": "bash ../scripts/prepare-contracts-package.sh",
"prepack": "bash ../scripts/prepack.sh",
"prepare-docs": "cd ..; npm run prepare-docs"

@@ -32,3 +32,6 @@ },

},
"homepage": "https://openzeppelin.com/contracts/"
"homepage": "https://openzeppelin.com/contracts/",
"peerDependencies": {
"@openzeppelin/contracts": "5.0.0-rc.1"
}
}

@@ -1,3 +0,4 @@

> **Warning**
> Version 5.0 is under active development. The code in this branch is not recommended for use.
> [!NOTE]
> Version 5.0 is currently in release candidate period. Bug bounty rewards are boosted 50% until the release.
> [See more details on Immunefi.](https://immunefi.com/bounty/openzeppelin/)

@@ -22,5 +23,8 @@ # <img src="logo.svg" alt="OpenZeppelin" height="40px">

> **Note**
> You are looking at the upgradeable variant of OpenZeppelin Contracts. Be sure to review the documentation on [Using OpenZeppelin Contracts with Upgrades](https://docs.openzeppelin.com/contracts/4.x/upgradeable).
> [!IMPORTANT]
> OpenZeppelin Contracts uses semantic versioning to communicate backwards compatibility of its API and storage layout. For upgradeable contracts, the storage layout of different major versions should be assumed incompatible, for example, it is unsafe to upgrade from 4.9.3 to 5.0.0. Learn more at [Backwards Compatibility](https://docs.openzeppelin.com/contracts/backwards-compatibility).
+> [!NOTE]
+> You are looking at the upgradeable variant of OpenZeppelin Contracts. Be sure to review the documentation on [Using OpenZeppelin Contracts with Upgrades](https://docs.openzeppelin.com/contracts/upgradeable).
+
## Overview

@@ -36,9 +40,9 @@

OpenZeppelin Contracts features a [stable API](https://docs.openzeppelin.com/contracts/releases-stability#api-stability), which means that your contracts won't break unexpectedly when upgrading to a newer minor version.
#### Foundry (git)
> **Warning** When installing via git, it is a common error to use the `master` branch. This is a development branch that should be avoided in favor of tagged releases. The release process involves security measures that the `master` branch does not guarantee.
> [!WARNING]
> When installing via git, it is a common error to use the `master` branch. This is a development branch that should be avoided in favor of tagged releases. The release process involves security measures that the `master` branch does not guarantee.
> **Warning** Foundry installs the latest version initially, but subsequent `forge update` commands will use the `master` branch.
> [!WARNING]
> Foundry installs the latest version initially, but subsequent `forge update` commands will use the `master` branch.

@@ -45,0 +49,0 @@ ```

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc