{
  "_format": "hh-sol-artifact-1",
  "contractName": "L1StandardBridge",
  "sourceName": "contracts/L1/L1StandardBridge.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_messenger",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l1mnt",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "localToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "remoteToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ERC20BridgeFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "localToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "remoteToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ERC20BridgeInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "l1Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "l2Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ERC20DepositInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "l1Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "l2Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ERC20WithdrawalFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ETHBridgeFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ETHBridgeInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ETHDepositInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "ETHWithdrawalFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "MNTBridgeFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "MNTBridgeInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "MNTDepositInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "MNTWithdrawalFinalized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "L1_MNT_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MESSENGER",
      "outputs": [
        {
          "internalType": "contract CrossDomainMessenger",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "OTHER_BRIDGE",
      "outputs": [
        {
          "internalType": "contract StandardBridge",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_localToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_remoteToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "bridgeERC20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_localToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_remoteToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "bridgeERC20To",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "bridgeETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "bridgeETHTo",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "bridgeMNT",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "bridgeMNTTo",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "depositERC20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "depositERC20To",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "depositETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "depositETHTo",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "depositMNT",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_minGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "depositMNTTo",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "deposits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_localToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_remoteToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "finalizeBridgeERC20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "finalizeBridgeETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "finalizeBridgeMNT",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "finalizeERC20Withdrawal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "finalizeETHWithdrawal",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "finalizeMantleWithdrawal",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "l2TokenBridge",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "messenger",
      "outputs": [
        {
          "internalType": "contract CrossDomainMessenger",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6101406040523480156200001257600080fd5b506040516200394d3803806200394d83398101604081905262000035916200008f565b6001600160a01b0391821660805273420000000000000000000000000000000000001060a052600160c081905260e0526000610100521661012052620000ce565b6001600160a01b03811681146200008c57600080fd5b50565b60008060408385031215620000a357600080fd5b8251620000b08162000076565b6020840151909250620000c38162000076565b809150509250929050565b60805160a05160c05160e0516101005161012051613787620001c66000396000818161050b015281816117a301528181611db901528181611e5001526120b501526000611108015260006110df015260006110b60152600081816103b70152818161046e015281816105e101528181610ac2015281816115fb0152818161191901528181611f9a01526123ea0152600081816102d3015281816104a4015281816105b70152818161061801528181610a9801528181610af901528181610d86015281816115d101528181611632015281816117c5015281816118db01528181611e1e01528181611f5c01526123ad01526137876000f3fe60806040526004361061019a5760003560e01c8063838b2520116100e1578063a9f9e6751161008a578063c8beb96511610064578063c8beb96514610540578063e11013dd14610553578063f407a99e14610566578063f82b418e1461057957600080fd5b8063a9f9e675146104d9578063ac6986c5146104f9578063b1a1a8821461052d57600080fd5b806391c49bf8116100bb57806391c49bf81461045f578063927ede2d146104925780639a2ac6d5146104c657600080fd5b8063838b2520146103d957806387087623146103f95780638f601f661461041957600080fd5b80634188f7f11161014357806358a997f61161011d57806358a997f61461037257806369516df5146103925780637f46ddb2146103a557600080fd5b80634188f7f11461031d578063540abf731461033057806354fd4d501461035057600080fd5b80631635f5fd116101745780631635f5fd1461029e57806324e00ccb146102b15780633cb747bf146102c457600080fd5b80630166a07a1461025857806309fc8843146102785780631532ec341461028b57600080fd5b3661025357333b15610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b610251333362030d406040518060200160405280600081525061058c565b005b600080fd5b34801561026457600080fd5b50610251610273366004612fcf565b61059f565b610251610286366004613080565b610995565b6102516102993660046130d3565b610a6c565b6102516102ac3660046130d3565b610a80565b6102516102bf366004613146565b610f55565b3480156102d057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61025161032b3660046131a0565b611027565b34801561033c57600080fd5b5061025161034b3660046131f4565b61106a565b34801561035c57600080fd5b506103656110af565b60405161031491906132e1565b34801561037e57600080fd5b5061025161038d3660046132f4565b611152565b6102516103a0366004613377565b611226565b3480156103b157600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e557600080fd5b506102516103f43660046131f4565b611269565b34801561040557600080fd5b506102516104143660046132f4565b6112ae565b34801561042557600080fd5b506104516104343660046133af565b600360209081526000928352604080842090915290825290205481565b604051908152602001610314565b34801561046b57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102f3565b34801561049e57600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b6102516104d43660046133e8565b611382565b3480156104e557600080fd5b506102516104f4366004612fcf565b6113c4565b34801561050557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b61025161053b366004613080565b6113d3565b61025161054e366004613146565b6114a4565b6102516105613660046133e8565b611576565b6102516105743660046130d3565b6115b9565b6102516105873660046130d3565b61182d565b610599848434858561183a565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156106bd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190613417565b73ffffffffffffffffffffffffffffffffffffffff16145b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161022a565b61077887611a25565b156108c6576107878787611a87565b610839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161022a565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156108a957600080fd5b505af11580156108bd573d6000803e3d6000fd5b50505050610948565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600360209081526040808320938a1683529290522054610904908490613463565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600360209081526040808320948c1683529390529190912091909155610948908585611ba7565b61098c878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c7b92505050565b50505050505050565b333b15610a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610a673333348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061183a92505050565b505050565b610a798585858585610a80565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015610b9e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b869190613417565b73ffffffffffffffffffffffffffffffffffffffff16145b610c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161022a565b823414610cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161022a565b3073ffffffffffffffffffffffffffffffffffffffff851603610d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161022a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161022a565b610ea185858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d0992505050565b6000610ebe855a8660405180602001604052806000815250611d7c565b905080610f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161022a565b505050505050565b333b15610fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b6105993333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9692505050565b610a793385878686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9f92505050565b61098c87873388888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fd892505050565b60606110da7f00000000000000000000000000000000000000000000000000000000000000006124fc565b6111037f00000000000000000000000000000000000000000000000000000000000000006124fc565b61112c7f00000000000000000000000000000000000000000000000000000000000000006124fc565b60405160200161113e9392919061347a565b604051602081830303815290604052905090565b333b156111e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610f4d86863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263992505050565b610a793386868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9692505050565b61098c87873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263992505050565b333b1561133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610f4d86863333888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fd892505050565b61059933858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061058c92505050565b61098c8787878787878761059f565b333b15611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610a6733338585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061058c92505050565b333b15611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b6105993333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9f92505050565b6105993385348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061183a92505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156116d757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf9190613417565b73ffffffffffffffffffffffffffffffffffffffff16145b611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161022a565b6117eb73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008686612648565b610a7985858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126a692505050565b610a7985858585856115b9565b8234146118cb57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4c315374616e646172644272696467653a206272696467696e6720455448206d60448201527f75737420696e636c7564652073756666696369656e74204554482076616c7565606482015260840161022a565b6118d785858584612719565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b575e30034837f0000000000000000000000000000000000000000000000000000000000000000631635f5fd60e01b8b8b8b8a60405160240161195794939291906134f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e087901b90921682526119eb9392918a90600401613539565b6000604051808303818588803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b5050505050505050505050565b6000611a51827f1d1d8b630000000000000000000000000000000000000000000000000000000061278c565b80611a815750611a81827fec4fc8e30000000000000000000000000000000000000000000000000000000061278c565b92915050565b6000611ab3837f1d1d8b630000000000000000000000000000000000000000000000000000000061278c565b15611b5c578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b279190613417565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611a81565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b03573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610a679084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526127af565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3868686604051611cf393929190613585565b60405180910390a4610f4d8686868686866128bb565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e6318484604051611d689291906135c3565b60405180910390a361059984848484612943565b600080600080845160208601878a8af19695505050505050565b610a7985858585855b611de173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016863086612648565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590526000917f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015611e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebf91906135dc565b905080611f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c315374616e646172644272696467653a20617070726f766520666f72204c3160448201527f204d4e54206661696c65642e0000000000000000000000000000000000000000606482015260840161022a565b611f5a868686856129b0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b575e30034867f000000000000000000000000000000000000000000000000000000000000000063f407a99e60e01b8b8b8b8a60405160240161195794939291906134f0565b73ffffffffffffffffffffffffffffffffffffffff871615801590612027575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead111114155b6120b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c315374616e646172644272696467653a20427269646765455243323020646f60448201527f206e6f7420737570706f727420455448206272696467696e672e000000000000606482015260840161022a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015612124575073ffffffffffffffffffffffffffffffffffffffff861615155b6121b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c315374616e646172644272696467653a20427269646765455243323020646f60448201527f206e6f7420737570706f7274204d4e54206272696467696e672e000000000000606482015260840161022a565b6121b987611a25565b15612307576121c88787611a87565b61227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161022a565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156122ea57600080fd5b505af11580156122fe573d6000803e3d6000fd5b5050505061239b565b61232973ffffffffffffffffffffffffffffffffffffffff8816863086612648565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600360209081526040808320938a16835292905220546123679084906135fe565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600360209081526040808320938b16835292905220555b6123a9878787878786612a23565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b575e300827f0000000000000000000000000000000000000000000000000000000000000000630166a07a60e01b8b8d8c8c8c8b60405160240161242c96959493929190613616565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124c09392918990600401613539565b600060405180830381600087803b1580156124da57600080fd5b505af11580156124ee573d6000803e3d6000fd5b505050505050505050505050565b60608160000361253f57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612569578061255381613671565b91506125629050600a836136d8565b9150612543565b60008167ffffffffffffffff811115612584576125846136ec565b6040519080825280601f01601f1916602001820160405280156125ae576020820181803683370190505b5090505b8415612631576125c3600183613463565b91506125d0600a8661371b565b6125db9060306135fe565b60f81b8183815181106125f0576125f061372f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061262a600a866136d8565b94506125b2565b949350505050565b61098c87878787878787611fd8565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526105999085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bf9565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fd140b1626a1caf5ae4717fcfdace5983543949ab0d32ceb0ca635c3913983e2884846040516127059291906135c3565b60405180910390a361059984848484612ab1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f2384846040516127789291906135c3565b60405180910390a361059984848484612b10565b600061279783612b6f565b80156127a857506127a88383612bd3565b9392505050565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ca29092919063ffffffff16565b805190915015610a67578080602001905181019061282f91906135dc565b610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161022a565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd86868660405161293393929190613585565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d84846040516129a29291906135c3565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f321b860de8dcec5080cae77af335971688a4c0bc3d79d6cf3d6f2cc3894798bc8484604051612a0f9291906135c3565b60405180910390a361059984848484612cb1565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396868686604051612a9b93929190613585565b60405180910390a4610f4d868686868686612d10565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fef2dd684d0d947aa195ea84c18e3b5c457d3462c09eb29b20aac4f7d4d4f003584846040516129a29291906135c3565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af584846040516129a29291906135c3565b6000612b9b827f01ffc9a700000000000000000000000000000000000000000000000000000000612bd3565b8015611a815750612bcc827fffffffff00000000000000000000000000000000000000000000000000000000612bd3565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612c8b575060208210155b8015612c975750600081115b979650505050505050565b60606126318484600085612d88565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f74bbfec0d26a17c2367408038090a9a4e1cd1671129dc8fdf57f146a499fe3d584846040516129a29291906135c3565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf86868660405161293393929190613585565b606082471015612e1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161022a565b73ffffffffffffffffffffffffffffffffffffffff85163b612e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022a565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612ec1919061375e565b60006040518083038185875af1925050503d8060008114612efe576040519150601f19603f3d011682016040523d82523d6000602084013e612f03565b606091505b5091509150612c9782828660608315612f1d5750816127a8565b825115612f2d5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a91906132e1565b73ffffffffffffffffffffffffffffffffffffffff81168114612f8357600080fd5b50565b60008083601f840112612f9857600080fd5b50813567ffffffffffffffff811115612fb057600080fd5b602083019150836020828501011115612fc857600080fd5b9250929050565b600080600080600080600060c0888a031215612fea57600080fd5b8735612ff581612f61565b9650602088013561300581612f61565b9550604088013561301581612f61565b9450606088013561302581612f61565b93506080880135925060a088013567ffffffffffffffff81111561304857600080fd5b6130548a828b01612f86565b989b979a50959850939692959293505050565b803563ffffffff8116811461307b57600080fd5b919050565b60008060006040848603121561309557600080fd5b61309e84613067565b9250602084013567ffffffffffffffff8111156130ba57600080fd5b6130c686828701612f86565b9497909650939450505050565b6000806000806000608086880312156130eb57600080fd5b85356130f681612f61565b9450602086013561310681612f61565b935060408601359250606086013567ffffffffffffffff81111561312957600080fd5b61313588828901612f86565b969995985093965092949392505050565b6000806000806060858703121561315c57600080fd5b8435935061316c60208601613067565b9250604085013567ffffffffffffffff81111561318857600080fd5b61319487828801612f86565b95989497509550505050565b6000806000806000608086880312156131b857600080fd5b8535945060208601356131ca81612f61565b93506131d860408701613067565b9250606086013567ffffffffffffffff81111561312957600080fd5b600080600080600080600060c0888a03121561320f57600080fd5b873561321a81612f61565b9650602088013561322a81612f61565b9550604088013561323a81612f61565b94506060880135935061324f60808901613067565b925060a088013567ffffffffffffffff81111561304857600080fd5b60005b8381101561328657818101518382015260200161326e565b838111156105995750506000910152565b600081518084526132af81602086016020860161326b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006127a86020830184613297565b60008060008060008060a0878903121561330d57600080fd5b863561331881612f61565b9550602087013561332881612f61565b94506040870135935061333d60608801613067565b9250608087013567ffffffffffffffff81111561335957600080fd5b61336589828a01612f86565b979a9699509497509295939492505050565b60008060008060006080868803121561338f57600080fd5b853561339a81612f61565b9450602086013593506131d860408701613067565b600080604083850312156133c257600080fd5b82356133cd81612f61565b915060208301356133dd81612f61565b809150509250929050565b600080600080606085870312156133fe57600080fd5b843561340981612f61565b935061316c60208601613067565b60006020828403121561342957600080fd5b81516127a881612f61565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561347557613475613434565b500390565b6000845161348c81846020890161326b565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516134c8816001850160208a0161326b565b600192019182015283516134e381600284016020880161326b565b0160020195945050505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261352f6080830184613297565b9695505050505050565b84815273ffffffffffffffffffffffffffffffffffffffff8416602082015260806040820152600061356e6080830185613297565b905063ffffffff8316606083015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006135ba6060830184613297565b95945050505050565b8281526040602082015260006126316040830184613297565b6000602082840312156135ee57600080fd5b815180151581146127a857600080fd5b6000821982111561361157613611613434565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261366560c0830184613297565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a2576136a2613434565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826136e7576136e76136a9565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261372a5761372a6136a9565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000825161377081846020870161326b565b919091019291505056fea164736f6c634300080f000a",
  "deployedBytecode": "0x60806040526004361061019a5760003560e01c8063838b2520116100e1578063a9f9e6751161008a578063c8beb96511610064578063c8beb96514610540578063e11013dd14610553578063f407a99e14610566578063f82b418e1461057957600080fd5b8063a9f9e675146104d9578063ac6986c5146104f9578063b1a1a8821461052d57600080fd5b806391c49bf8116100bb57806391c49bf81461045f578063927ede2d146104925780639a2ac6d5146104c657600080fd5b8063838b2520146103d957806387087623146103f95780638f601f661461041957600080fd5b80634188f7f11161014357806358a997f61161011d57806358a997f61461037257806369516df5146103925780637f46ddb2146103a557600080fd5b80634188f7f11461031d578063540abf731461033057806354fd4d501461035057600080fd5b80631635f5fd116101745780631635f5fd1461029e57806324e00ccb146102b15780633cb747bf146102c457600080fd5b80630166a07a1461025857806309fc8843146102785780631532ec341461028b57600080fd5b3661025357333b15610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b610251333362030d406040518060200160405280600081525061058c565b005b600080fd5b34801561026457600080fd5b50610251610273366004612fcf565b61059f565b610251610286366004613080565b610995565b6102516102993660046130d3565b610a6c565b6102516102ac3660046130d3565b610a80565b6102516102bf366004613146565b610f55565b3480156102d057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61025161032b3660046131a0565b611027565b34801561033c57600080fd5b5061025161034b3660046131f4565b61106a565b34801561035c57600080fd5b506103656110af565b60405161031491906132e1565b34801561037e57600080fd5b5061025161038d3660046132f4565b611152565b6102516103a0366004613377565b611226565b3480156103b157600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e557600080fd5b506102516103f43660046131f4565b611269565b34801561040557600080fd5b506102516104143660046132f4565b6112ae565b34801561042557600080fd5b506104516104343660046133af565b600360209081526000928352604080842090915290825290205481565b604051908152602001610314565b34801561046b57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102f3565b34801561049e57600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b6102516104d43660046133e8565b611382565b3480156104e557600080fd5b506102516104f4366004612fcf565b6113c4565b34801561050557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b61025161053b366004613080565b6113d3565b61025161054e366004613146565b6114a4565b6102516105613660046133e8565b611576565b6102516105743660046130d3565b6115b9565b6102516105873660046130d3565b61182d565b610599848434858561183a565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156106bd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190613417565b73ffffffffffffffffffffffffffffffffffffffff16145b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161022a565b61077887611a25565b156108c6576107878787611a87565b610839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161022a565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156108a957600080fd5b505af11580156108bd573d6000803e3d6000fd5b50505050610948565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600360209081526040808320938a1683529290522054610904908490613463565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600360209081526040808320948c1683529390529190912091909155610948908585611ba7565b61098c878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c7b92505050565b50505050505050565b333b15610a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610a673333348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061183a92505050565b505050565b610a798585858585610a80565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015610b9e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b869190613417565b73ffffffffffffffffffffffffffffffffffffffff16145b610c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161022a565b823414610cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161022a565b3073ffffffffffffffffffffffffffffffffffffffff851603610d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161022a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161022a565b610ea185858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d0992505050565b6000610ebe855a8660405180602001604052806000815250611d7c565b905080610f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161022a565b505050505050565b333b15610fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b6105993333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9692505050565b610a793385878686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9f92505050565b61098c87873388888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fd892505050565b60606110da7f00000000000000000000000000000000000000000000000000000000000000006124fc565b6111037f00000000000000000000000000000000000000000000000000000000000000006124fc565b61112c7f00000000000000000000000000000000000000000000000000000000000000006124fc565b60405160200161113e9392919061347a565b604051602081830303815290604052905090565b333b156111e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610f4d86863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263992505050565b610a793386868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9692505050565b61098c87873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061263992505050565b333b1561133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610f4d86863333888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fd892505050565b61059933858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061058c92505050565b61098c8787878787878761059f565b333b15611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b610a6733338585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061058c92505050565b333b15611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161022a565b6105993333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9f92505050565b6105993385348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061183a92505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156116d757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf9190613417565b73ffffffffffffffffffffffffffffffffffffffff16145b611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161022a565b6117eb73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008686612648565b610a7985858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126a692505050565b610a7985858585856115b9565b8234146118cb57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4c315374616e646172644272696467653a206272696467696e6720455448206d60448201527f75737420696e636c7564652073756666696369656e74204554482076616c7565606482015260840161022a565b6118d785858584612719565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b575e30034837f0000000000000000000000000000000000000000000000000000000000000000631635f5fd60e01b8b8b8b8a60405160240161195794939291906134f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e087901b90921682526119eb9392918a90600401613539565b6000604051808303818588803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b5050505050505050505050565b6000611a51827f1d1d8b630000000000000000000000000000000000000000000000000000000061278c565b80611a815750611a81827fec4fc8e30000000000000000000000000000000000000000000000000000000061278c565b92915050565b6000611ab3837f1d1d8b630000000000000000000000000000000000000000000000000000000061278c565b15611b5c578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b279190613417565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611a81565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b03573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610a679084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526127af565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3868686604051611cf393929190613585565b60405180910390a4610f4d8686868686866128bb565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e6318484604051611d689291906135c3565b60405180910390a361059984848484612943565b600080600080845160208601878a8af19695505050505050565b610a7985858585855b611de173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016863086612648565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590526000917f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015611e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebf91906135dc565b905080611f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c315374616e646172644272696467653a20617070726f766520666f72204c3160448201527f204d4e54206661696c65642e0000000000000000000000000000000000000000606482015260840161022a565b611f5a868686856129b0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b575e30034867f000000000000000000000000000000000000000000000000000000000000000063f407a99e60e01b8b8b8b8a60405160240161195794939291906134f0565b73ffffffffffffffffffffffffffffffffffffffff871615801590612027575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead111114155b6120b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c315374616e646172644272696467653a20427269646765455243323020646f60448201527f206e6f7420737570706f727420455448206272696467696e672e000000000000606482015260840161022a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015612124575073ffffffffffffffffffffffffffffffffffffffff861615155b6121b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c315374616e646172644272696467653a20427269646765455243323020646f60448201527f206e6f7420737570706f7274204d4e54206272696467696e672e000000000000606482015260840161022a565b6121b987611a25565b15612307576121c88787611a87565b61227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161022a565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156122ea57600080fd5b505af11580156122fe573d6000803e3d6000fd5b5050505061239b565b61232973ffffffffffffffffffffffffffffffffffffffff8816863086612648565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600360209081526040808320938a16835292905220546123679084906135fe565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600360209081526040808320938b16835292905220555b6123a9878787878786612a23565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b575e300827f0000000000000000000000000000000000000000000000000000000000000000630166a07a60e01b8b8d8c8c8c8b60405160240161242c96959493929190613616565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526124c09392918990600401613539565b600060405180830381600087803b1580156124da57600080fd5b505af11580156124ee573d6000803e3d6000fd5b505050505050505050505050565b60608160000361253f57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612569578061255381613671565b91506125629050600a836136d8565b9150612543565b60008167ffffffffffffffff811115612584576125846136ec565b6040519080825280601f01601f1916602001820160405280156125ae576020820181803683370190505b5090505b8415612631576125c3600183613463565b91506125d0600a8661371b565b6125db9060306135fe565b60f81b8183815181106125f0576125f061372f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061262a600a866136d8565b94506125b2565b949350505050565b61098c87878787878787611fd8565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526105999085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bf9565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fd140b1626a1caf5ae4717fcfdace5983543949ab0d32ceb0ca635c3913983e2884846040516127059291906135c3565b60405180910390a361059984848484612ab1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f2384846040516127789291906135c3565b60405180910390a361059984848484612b10565b600061279783612b6f565b80156127a857506127a88383612bd3565b9392505050565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ca29092919063ffffffff16565b805190915015610a67578080602001905181019061282f91906135dc565b610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161022a565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd86868660405161293393929190613585565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d84846040516129a29291906135c3565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f321b860de8dcec5080cae77af335971688a4c0bc3d79d6cf3d6f2cc3894798bc8484604051612a0f9291906135c3565b60405180910390a361059984848484612cb1565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396868686604051612a9b93929190613585565b60405180910390a4610f4d868686868686612d10565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fef2dd684d0d947aa195ea84c18e3b5c457d3462c09eb29b20aac4f7d4d4f003584846040516129a29291906135c3565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af584846040516129a29291906135c3565b6000612b9b827f01ffc9a700000000000000000000000000000000000000000000000000000000612bd3565b8015611a815750612bcc827fffffffff00000000000000000000000000000000000000000000000000000000612bd3565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612c8b575060208210155b8015612c975750600081115b979650505050505050565b60606126318484600085612d88565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f74bbfec0d26a17c2367408038090a9a4e1cd1671129dc8fdf57f146a499fe3d584846040516129a29291906135c3565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf86868660405161293393929190613585565b606082471015612e1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161022a565b73ffffffffffffffffffffffffffffffffffffffff85163b612e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022a565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612ec1919061375e565b60006040518083038185875af1925050503d8060008114612efe576040519150601f19603f3d011682016040523d82523d6000602084013e612f03565b606091505b5091509150612c9782828660608315612f1d5750816127a8565b825115612f2d5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a91906132e1565b73ffffffffffffffffffffffffffffffffffffffff81168114612f8357600080fd5b50565b60008083601f840112612f9857600080fd5b50813567ffffffffffffffff811115612fb057600080fd5b602083019150836020828501011115612fc857600080fd5b9250929050565b600080600080600080600060c0888a031215612fea57600080fd5b8735612ff581612f61565b9650602088013561300581612f61565b9550604088013561301581612f61565b9450606088013561302581612f61565b93506080880135925060a088013567ffffffffffffffff81111561304857600080fd5b6130548a828b01612f86565b989b979a50959850939692959293505050565b803563ffffffff8116811461307b57600080fd5b919050565b60008060006040848603121561309557600080fd5b61309e84613067565b9250602084013567ffffffffffffffff8111156130ba57600080fd5b6130c686828701612f86565b9497909650939450505050565b6000806000806000608086880312156130eb57600080fd5b85356130f681612f61565b9450602086013561310681612f61565b935060408601359250606086013567ffffffffffffffff81111561312957600080fd5b61313588828901612f86565b969995985093965092949392505050565b6000806000806060858703121561315c57600080fd5b8435935061316c60208601613067565b9250604085013567ffffffffffffffff81111561318857600080fd5b61319487828801612f86565b95989497509550505050565b6000806000806000608086880312156131b857600080fd5b8535945060208601356131ca81612f61565b93506131d860408701613067565b9250606086013567ffffffffffffffff81111561312957600080fd5b600080600080600080600060c0888a03121561320f57600080fd5b873561321a81612f61565b9650602088013561322a81612f61565b9550604088013561323a81612f61565b94506060880135935061324f60808901613067565b925060a088013567ffffffffffffffff81111561304857600080fd5b60005b8381101561328657818101518382015260200161326e565b838111156105995750506000910152565b600081518084526132af81602086016020860161326b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006127a86020830184613297565b60008060008060008060a0878903121561330d57600080fd5b863561331881612f61565b9550602087013561332881612f61565b94506040870135935061333d60608801613067565b9250608087013567ffffffffffffffff81111561335957600080fd5b61336589828a01612f86565b979a9699509497509295939492505050565b60008060008060006080868803121561338f57600080fd5b853561339a81612f61565b9450602086013593506131d860408701613067565b600080604083850312156133c257600080fd5b82356133cd81612f61565b915060208301356133dd81612f61565b809150509250929050565b600080600080606085870312156133fe57600080fd5b843561340981612f61565b935061316c60208601613067565b60006020828403121561342957600080fd5b81516127a881612f61565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561347557613475613434565b500390565b6000845161348c81846020890161326b565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516134c8816001850160208a0161326b565b600192019182015283516134e381600284016020880161326b565b0160020195945050505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261352f6080830184613297565b9695505050505050565b84815273ffffffffffffffffffffffffffffffffffffffff8416602082015260806040820152600061356e6080830185613297565b905063ffffffff8316606083015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006135ba6060830184613297565b95945050505050565b8281526040602082015260006126316040830184613297565b6000602082840312156135ee57600080fd5b815180151581146127a857600080fd5b6000821982111561361157613611613434565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261366560c0830184613297565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a2576136a2613434565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826136e7576136e76136a9565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261372a5761372a6136a9565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000825161377081846020870161326b565b919091019291505056fea164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
