{
  "_format": "hh-sol-artifact-1",
  "contractName": "StateCommitmentChain",
  "sourceName": "contracts/L1/rollup/StateCommitmentChain.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_libAddressManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_fraudProofWindow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_sequencerPublishWindow",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_batchRoot",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_batchSize",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_prevTotalElements",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "StateBatchAppended",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_batchIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_batchRoot",
          "type": "bytes32"
        }
      ],
      "name": "StateBatchDeleted",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_CHAINID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FRAUD_PROOF_WINDOW",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SEQUENCER_PUBLISH_WINDOW",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_batch",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256",
          "name": "_shouldStartAtElement",
          "type": "uint256"
        }
      ],
      "name": "appendStateBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "_batch",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256",
          "name": "_shouldStartAtElement",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "proposer",
          "type": "string"
        }
      ],
      "name": "appendStateBatchByChainId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "batches",
      "outputs": [
        {
          "internalType": "contract IChainStorageContainer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "batchIndex",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "batchRoot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "batchSize",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "prevTotalElements",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainBatchHeader",
          "name": "_batchHeader",
          "type": "tuple"
        }
      ],
      "name": "deleteStateBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "batchIndex",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "batchRoot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "batchSize",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "prevTotalElements",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainBatchHeader",
          "name": "_batchHeader",
          "type": "tuple"
        }
      ],
      "name": "deleteStateBatchByChainId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastSequencerTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_lastSequencerTimestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        }
      ],
      "name": "getLastSequencerTimestampByChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_lastSequencerTimestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalBatches",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_totalBatches",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        }
      ],
      "name": "getTotalBatchesByChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_totalBatches",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalElements",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_totalElements",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        }
      ],
      "name": "getTotalElementsByChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_totalElements",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "batchIndex",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "batchRoot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "batchSize",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "prevTotalElements",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainBatchHeader",
          "name": "_batchHeader",
          "type": "tuple"
        }
      ],
      "name": "insideFraudProofWindow",
      "outputs": [
        {
          "internalType": "bool",
          "name": "_inside",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "batchIndex",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "batchRoot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "batchSize",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "prevTotalElements",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainBatchHeader",
          "name": "_batchHeader",
          "type": "tuple"
        }
      ],
      "name": "insideFraudProofWindowByChainId",
      "outputs": [
        {
          "internalType": "bool",
          "name": "_inside",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "libAddressManager",
      "outputs": [
        {
          "internalType": "contract Lib_AddressManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        }
      ],
      "name": "resolve",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "setFraudProofWindow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_element",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "batchIndex",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "batchRoot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "batchSize",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "prevTotalElements",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainBatchHeader",
          "name": "_batchHeader",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            },
            {
              "internalType": "bytes32[]",
              "name": "siblings",
              "type": "bytes32[]"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainInclusionProof",
          "name": "_proof",
          "type": "tuple"
        }
      ],
      "name": "verifyStateCommitment",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_element",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "batchIndex",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "batchRoot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "batchSize",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "prevTotalElements",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainBatchHeader",
          "name": "_batchHeader",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            },
            {
              "internalType": "bytes32[]",
              "name": "siblings",
              "type": "bytes32[]"
            }
          ],
          "internalType": "struct Lib_OVMCodec.ChainInclusionProof",
          "name": "_proof",
          "type": "tuple"
        }
      ],
      "name": "verifyStateCommitmentByChainId",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526104406003553480156200001757600080fd5b50604051620025c4380380620025c48339810160408190526200003a9162000067565b600080546001600160a01b0319166001600160a01b039490941693909317909255600155600255620000ac565b6000806000606084860312156200007d57600080fd5b83516001600160a01b03811681146200009557600080fd5b602085015160409095015190969495509392505050565b61250880620000bc6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806381eb62ef116100d8578063ab59f7b81161008c578063cfdf677e11610066578063cfdf677e146102f5578063d710083f146102fd578063e561dddc1461031057600080fd5b8063ab59f7b8146102c6578063b8e189ac146102d9578063c17b291b146102ec57600080fd5b80638c7de742116100bd5780638c7de7421461028d5780638ca5cbb9146102a05780639418bddd146102b357600080fd5b806381eb62ef146102715780638a52e6221461027a57600080fd5b80635cb583741161012f5780637aa63a86116101145780637aa63a861461024e5780637ad168a01461025657806380931e371461025e57600080fd5b80635cb58374146102285780636d3454bf1461023b57600080fd5b8063461a447811610160578063461a4478146101db5780634d69ee57146101ee5780635bbbb7ed1461021157600080fd5b8063299ca4781461017c5780632ab65ec7146101c6575b600080fd5b60005461019c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d96101d4366004611da9565b610318565b005b61019c6101e9366004611e10565b610478565b6102016101fc366004611f34565b610516565b60405190151581526020016101bd565b61021a60035481565b6040519081526020016101bd565b61021a610236366004611fa1565b61052e565b610201610249366004611da9565b610549565b61021a6105f5565b61021a610607565b61020161026c366004611fba565b610614565b61021a60025481565b61021a610288366004611fa1565b6106e0565b61021a61029b366004611fa1565b6106fb565b6101d96102ae366004612031565b610780565b6102016102c1366004612076565b6107c1565b6101d96102d4366004611fa1565b61086c565b6101d96102e7366004612076565b610929565b61021a60015481565b61019c610938565b6101d961030b3660046120ab565b61095b565b61021a610d66565b61034861032483610d73565b6040516020016103349190612146565b604051602081830303815290604052610478565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ed5760405162461bcd60e51b815260206004820152603b60248201527f537461746520626174636865732063616e206f6e6c792062652064656c65746560448201527f6420627920746865204d564d5f467261756456657269666965722e000000000060648201526084015b60405180910390fd5b6103f6816107c1565b61046a576040805162461bcd60e51b81526020600482015260248101919091527f537461746520626174636865732063616e206f6e6c792062652064656c65746560448201527f642077697468696e207468652066726175642070726f6f662077696e646f772e60648201526084016103e4565b6104748282610ed3565b5050565b600080546040517fbf40fac100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063bf40fac1906104cf9085906004016121b3565b602060405180830381865afa1580156104ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051091906121e8565b92915050565b6000610526600354858585610614565b949350505050565b60008061053a836110fc565b64ffffffffff16949350505050565b60008082608001518060200190518101906105649190612205565b509050806000036105dd5760405162461bcd60e51b815260206004820152602560248201527f4261746368206865616465722074696d657374616d702063616e6e6f7420626560448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103e4565b42600154826105ec9190612264565b11949350505050565b60006106026003546106e0565b905090565b600061060260035461052e565b6000610620858461119f565b61066c5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206261746368206865616465722e000000000000000000000060448201526064016103e4565b610689836020015185846000015185602001518760400151611255565b6106d55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420696e636c7573696f6e2070726f6f662e000000000000000060448201526064016103e4565b506001949350505050565b6000806106ec836110fc565b5064ffffffffff169392505050565b6000610705610938565b73ffffffffffffffffffffffffffffffffffffffff1663576f2588836040518263ffffffff1660e01b815260040161073f91815260200190565b602060405180830381865afa15801561075c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610510919061227c565b600061078d600354610d73565b60405160200161079d9190612295565b60405160208183030381529060405290506107bc60035484848461095b565b505050565b60008082608001518060200190518101906107dc9190612205565b509050806000036108555760405162461bcd60e51b815260206004820152602560248201527f4261746368206865616465722074696d657374616d702063616e6e6f7420626560448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103e4565b42600154826108649190612264565b119392505050565b6108aa6040518060400160405280600d81526020017f4d455449535f4d414e4147455200000000000000000000000000000000000000815250610478565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109245760405162461bcd60e51b815260206004820152600b60248201527f6e6f7720616c6c6f77656400000000000000000000000000000000000000000060448201526064016103e4565b600155565b61093560035482610318565b50565b60006106026040518060600160405280602181526020016124b260219139610478565b610964846106e0565b82146109d85760405162461bcd60e51b815260206004820152603d60248201527f41637475616c20626174636820737461727420696e64657820646f6573206e6f60448201527f74206d6174636820657870656374656420737461727420696e6465782e00000060648201526084016103e4565b60006109e382610478565b9050610a236040518060400160405280600b81526020017f426f6e644d616e61676572000000000000000000000000000000000000000000815250610478565b6040517ff3b96f1c0000000000000000000000000000000000000000000000000000000081526004810187905233602482015273ffffffffffffffffffffffffffffffffffffffff8381166044830152919091169063f3b96f1c90606401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906122d6565b610b345760405162461bcd60e51b815260206004820152602f60248201527f50726f706f73657220646f6573206e6f74206861766520656e6f75676820636f60448201527f6c6c61746572616c20706f73746564000000000000000000000000000000000060648201526084016103e4565b6000845111610bab5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207375626d697420616e20656d7074792073746174652062617460448201527f63682e000000000000000000000000000000000000000000000000000000000060648201526084016103e4565b610be96040518060400160405280601981526020017f43616e6f6e6963616c5472616e73616374696f6e436861696e00000000000000815250610478565b73ffffffffffffffffffffffffffffffffffffffff16638a52e622866040518263ffffffff1660e01b8152600401610c2391815260200190565b602060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c64919061227c565b8451610c6f876106e0565b610c799190612264565b1115610d135760405162461bcd60e51b815260206004820152604960248201527f4e756d626572206f6620737461746520726f6f74732063616e6e6f742065786360448201527f65656420746865206e756d626572206f662063616e6f6e6963616c207472616e60648201527f73616374696f6e732e0000000000000000000000000000000000000000000000608482015260a4016103e4565b610d5f85854233604051602001610d4a92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b604051602081830303815290604052846114c2565b5050505050565b60006106026003546106fb565b606081600003610db657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610de05780610dca816122f8565b9150610dd99050600a8361235f565b9150610dba565b60008167ffffffffffffffff811115610dfb57610dfb611c50565b6040519080825280601f01601f191660200182016040528015610e25576020820181803683370190505b509050815b8515610eca57610e3b600182612373565b90506000610e4a600a8861235f565b610e5590600a61238a565b610e5f9088612373565b610e6a9060306123c7565b905060008160f81b905080848481518110610e8757610e876123ec565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610ec1600a8961235f565b97505050610e2a565b50949350505050565b610edb610938565b73ffffffffffffffffffffffffffffffffffffffff1663576f2588836040518263ffffffff1660e01b8152600401610f1591815260200190565b602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f56919061227c565b815110610fa55760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420626174636820696e6465782e00000000000000000000000060448201526064016103e4565b610faf828261119f565b610ffb5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206261746368206865616465722e000000000000000000000060448201526064016103e4565b611003610938565b8151606083015173ffffffffffffffffffffffffffffffffffffffff929092169163bc05257691859160281b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915264ffffffffff19166044820152606401600060405180830381600087803b15801561109557600080fd5b505af11580156110a9573d6000803e3d6000fd5b5050505080600001517f6e9c082632d809680ee6227e58afd9a7c24ee8a43d61577b2e98f9e185fc630d8383602001516040516110f0929190918252602082015260400190565b60405180910390a25050565b6000806000611109610938565b73ffffffffffffffffffffffffffffffffffffffff166324a49415856040518263ffffffff1660e01b815260040161114391815260200190565b602060405180830381865afa158015611160573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611184919061241b565b64ffffffffff602882901c169560509190911c945092505050565b60006111a9610938565b82516040517f67d18b9b00000000000000000000000000000000000000000000000000000000815260048101869052602481019190915273ffffffffffffffffffffffffffffffffffffffff91909116906367d18b9b90604401602060405180830381865afa158015611220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611244919061227c565b61124d83611645565b149392505050565b60008082116112cc5760405162461bcd60e51b815260206004820152603760248201527f4c69625f4d65726b6c65547265653a20546f74616c206c6561766573206d757360448201527f742062652067726561746572207468616e207a65726f2e00000000000000000060648201526084016103e4565b8184106113405760405162461bcd60e51b8152602060048201526024808201527f4c69625f4d65726b6c65547265653a20496e646578206f7574206f6620626f7560448201527f6e64732e0000000000000000000000000000000000000000000000000000000060648201526084016103e4565b6113498261168b565b8351146113e45760405162461bcd60e51b815260206004820152604d60248201527f4c69625f4d65726b6c65547265653a20546f74616c207369626c696e6773206460448201527f6f6573206e6f7420636f72726563746c7920636f72726573706f6e6420746f2060648201527f746f74616c206c65617665732e00000000000000000000000000000000000000608482015260a4016103e4565b8460005b84518110156114b5578560011660010361144e5784818151811061140e5761140e6123ec565b602002602001015182604051602001611431929190918252602082015260400190565b60405160208183030381529060405280519060200120915061149c565b81858281518110611461576114616123ec565b6020026020010151604051602001611483929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b60019590951c94806114ad816122f8565b9150506113e8565b5090951495945050505050565b6000806114ce866110fc565b9150915042905060006040518060a001604052806114eb896106fb565b81526020016114f98861176d565b8152602001875181526020018464ffffffffff16815260200186815250905080600001517fbaa1d762384057169afd12b625998a5a7ed502c2e229acdbead30f3f6496399d888360200151846040015185606001518660800151604051611564959493929190612443565b60405180910390a2611574610938565b73ffffffffffffffffffffffffffffffffffffffff1663e6e436c08861159984611645565b6115be856040015186606001516115b09190612264565b602888811b91909117901b90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915264ffffffffff19166044820152606401600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b5050505050505050505050565b6000816020015182604001518360600151846080015160405160200161166e949392919061246e565b604051602081830303815290604052805190602001209050919050565b60008082116117025760405162461bcd60e51b815260206004820152603060248201527f4c69625f4d65726b6c65547265653a2043616e6e6f7420636f6d70757465206360448201527f65696c286c6f675f3229206f6620302e0000000000000000000000000000000060648201526084016103e4565b8160010361171257506000919050565b81600060805b60018110611750578061172e600180831b612373565b901b831615611748576117418183612264565b92811c9291505b60011c611718565b506001811b841461176657610526600182612264565b9392505050565b6000808251116117e55760405162461bcd60e51b815260206004820152603460248201527f4c69625f4d65726b6c65547265653a204d7573742070726f766964652061742060448201527f6c65617374206f6e65206c65616620686173682e00000000000000000000000060648201526084016103e4565b81516001036118105781600081518110611801576118016123ec565b60200260200101519050919050565b60408051610200810182527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56381527f633dc4d7da7256660a892f8f1604a44b5432649cc8ec5cb3ced4c4e6ac94dd1d60208201527f890740a8eb06ce9be422cb8da5cdafc2b58c0a5e24036c578de2a433c828ff7d818301527f3b8ec09e026fdc305365dfc94e189a81b38c7597b3d941c279f042e8206e0bd86060808301919091527fecd50eee38e386bd62be9bedb990706951b65fe053bd9d8a521af753d139e2da60808301527fdefff6d330bb5403f63b14f33b578274160de3a50df4efecf0e0db73bcdd3da560a08301527f617bdd11f7c0a11f49db22f629387a12da7596f9d1704d7465177c63d88ec7d760c08301527f292c23a9aa1d8bea7e2435e555a4a60e379a5a35f3f452bae60121073fb6eead60e08301527fe1cea92ed99acdcb045a6726b2f87107e8a61620a232cf4d7d5b5766b3952e106101008301527f7ad66c0a68c72cb89e4fb4303841966e4062a76ab97451e3b9fb526a5ceb7f826101208301527fe026cc5a4aed3c22a58cbd3d2ac754c9352c5436f638042dca99034e836365166101408301527f3d04cffd8b46a874edf5cfae63077de85f849a660426697b06a829c70dd1409c6101608301527fad676aa337a485e4728a0b240d92b3ef7b3c372d06d189322bfd5f61f1e7203e6101808301527fa2fca4a49658f9fab7aa63289c91b7c7b6c832a6d0e69334ff5b0a3483d09dab6101a08301527f4ebfd9cd7bca2505f7bef59cc1c12ecc708fff26ae4af19abe852afe9e20c8626101c08301527f2def10d13dd169f550f578bda343d9717a138562e0093b380a1120789d53cf106101e083015282518381529081018352909160009190602082018180368337505085519192506000918291508180805b6001841115611c2657611ac160028561235f565b9150611ace60028561249d565b600114905060005b82811015611b7a578a611aea82600261238a565b81518110611afa57611afa6123ec565b602002602001015196508a816002611b12919061238a565b611b1d906001612264565b81518110611b2d57611b2d6123ec565b6020026020010151955086602089015285604089015287805190602001208b8281518110611b5d57611b5d6123ec565b602090810291909101015280611b72816122f8565b915050611ad6565b508015611bf65789611b8d600186612373565b81518110611b9d57611b9d6123ec565b60200260200101519550878360108110611bb957611bb96123ec565b602002015160001b945085602088015284604088015286805190602001208a8381518110611be957611be96123ec565b6020026020010181815250505b80611c02576000611c05565b60015b611c129060ff1683612264565b935082611c1e816122f8565b935050611aad565b89600081518110611c3957611c396123ec565b602002602001015198505050505050505050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ca857611ca8611c50565b604052919050565b600067ffffffffffffffff831115611cca57611cca611c50565b611cdd6020601f19601f86011601611c7f565b9050828152838383011115611cf157600080fd5b828260208301376000602084830101529392505050565b600060a08284031215611d1a57600080fd5b60405160a0810167ffffffffffffffff8282108183111715611d3e57611d3e611c50565b81604052829350843583526020850135602084015260408501356040840152606085013560608401526080850135915080821115611d7b57600080fd5b508301601f81018513611d8d57600080fd5b611d9c85823560208401611cb0565b6080830152505092915050565b60008060408385031215611dbc57600080fd5b82359150602083013567ffffffffffffffff811115611dda57600080fd5b611de685828601611d08565b9150509250929050565b600082601f830112611e0157600080fd5b61176683833560208501611cb0565b600060208284031215611e2257600080fd5b813567ffffffffffffffff811115611e3957600080fd5b61052684828501611df0565b600082601f830112611e5657600080fd5b8135602067ffffffffffffffff821115611e7257611e72611c50565b8160051b611e81828201611c7f565b9283528481018201928281019087851115611e9b57600080fd5b83870192505b84831015611eba57823582529183019190830190611ea1565b979650505050505050565b600060408284031215611ed757600080fd5b6040516040810167ffffffffffffffff8282108183111715611efb57611efb611c50565b81604052829350843583526020850135915080821115611f1a57600080fd5b50611f2785828601611e45565b6020830152505092915050565b600080600060608486031215611f4957600080fd5b83359250602084013567ffffffffffffffff80821115611f6857600080fd5b611f7487838801611d08565b93506040860135915080821115611f8a57600080fd5b50611f9786828701611ec5565b9150509250925092565b600060208284031215611fb357600080fd5b5035919050565b60008060008060808587031215611fd057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115611ff657600080fd5b61200288838901611d08565b9350606087013591508082111561201857600080fd5b5061202587828801611ec5565b91505092959194509250565b6000806040838503121561204457600080fd5b823567ffffffffffffffff81111561205b57600080fd5b61206785828601611e45565b95602094909401359450505050565b60006020828403121561208857600080fd5b813567ffffffffffffffff81111561209f57600080fd5b61052684828501611d08565b600080600080608085870312156120c157600080fd5b84359350602085013567ffffffffffffffff808211156120e057600080fd5b6120ec88838901611e45565b945060408701359350606087013591508082111561210957600080fd5b5061202587828801611df0565b60005b83811015612131578181015183820152602001612119565b83811115612140576000848401525b50505050565b60008251612158818460208701612116565b7f5f4d564d5f467261756456657269666965720000000000000000000000000000920191825250601201919050565b6000815180845261219f816020860160208601612116565b601f01601f19169290920160200192915050565b6020815260006117666020830184612187565b73ffffffffffffffffffffffffffffffffffffffff8116811461093557600080fd5b6000602082840312156121fa57600080fd5b8151611766816121c6565b6000806040838503121561221857600080fd5b82519150602083015161222a816121c6565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561227757612277612235565b500190565b60006020828403121561228e57600080fd5b5051919050565b600082516122a7818460208701612116565b7f5f4d564d5f50726f706f73657200000000000000000000000000000000000000920191825250600d01919050565b6000602082840312156122e857600080fd5b8151801515811461176657600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361232957612329612235565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261236e5761236e612330565b500490565b60008282101561238557612385612235565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123c2576123c2612235565b500290565b600060ff821660ff84168060ff038211156123e4576123e4612235565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561242d57600080fd5b815164ffffffffff198116811461176657600080fd5b85815284602082015283604082015282606082015260a060808201526000611eba60a0830184612187565b8481528360208201528260408201526080606082015260006124936080830184612187565b9695505050505050565b6000826124ac576124ac612330565b50069056fe436861696e53746f72616765436f6e7461696e65722d5343432d62617463686573a264697066735822122079c472817d66d43d0a4974185c9815a45c21f29f8c2afb1fcd2857265f844e3c64736f6c634300080f0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c806381eb62ef116100d8578063ab59f7b81161008c578063cfdf677e11610066578063cfdf677e146102f5578063d710083f146102fd578063e561dddc1461031057600080fd5b8063ab59f7b8146102c6578063b8e189ac146102d9578063c17b291b146102ec57600080fd5b80638c7de742116100bd5780638c7de7421461028d5780638ca5cbb9146102a05780639418bddd146102b357600080fd5b806381eb62ef146102715780638a52e6221461027a57600080fd5b80635cb583741161012f5780637aa63a86116101145780637aa63a861461024e5780637ad168a01461025657806380931e371461025e57600080fd5b80635cb58374146102285780636d3454bf1461023b57600080fd5b8063461a447811610160578063461a4478146101db5780634d69ee57146101ee5780635bbbb7ed1461021157600080fd5b8063299ca4781461017c5780632ab65ec7146101c6575b600080fd5b60005461019c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d96101d4366004611da9565b610318565b005b61019c6101e9366004611e10565b610478565b6102016101fc366004611f34565b610516565b60405190151581526020016101bd565b61021a60035481565b6040519081526020016101bd565b61021a610236366004611fa1565b61052e565b610201610249366004611da9565b610549565b61021a6105f5565b61021a610607565b61020161026c366004611fba565b610614565b61021a60025481565b61021a610288366004611fa1565b6106e0565b61021a61029b366004611fa1565b6106fb565b6101d96102ae366004612031565b610780565b6102016102c1366004612076565b6107c1565b6101d96102d4366004611fa1565b61086c565b6101d96102e7366004612076565b610929565b61021a60015481565b61019c610938565b6101d961030b3660046120ab565b61095b565b61021a610d66565b61034861032483610d73565b6040516020016103349190612146565b604051602081830303815290604052610478565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ed5760405162461bcd60e51b815260206004820152603b60248201527f537461746520626174636865732063616e206f6e6c792062652064656c65746560448201527f6420627920746865204d564d5f467261756456657269666965722e000000000060648201526084015b60405180910390fd5b6103f6816107c1565b61046a576040805162461bcd60e51b81526020600482015260248101919091527f537461746520626174636865732063616e206f6e6c792062652064656c65746560448201527f642077697468696e207468652066726175642070726f6f662077696e646f772e60648201526084016103e4565b6104748282610ed3565b5050565b600080546040517fbf40fac100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063bf40fac1906104cf9085906004016121b3565b602060405180830381865afa1580156104ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051091906121e8565b92915050565b6000610526600354858585610614565b949350505050565b60008061053a836110fc565b64ffffffffff16949350505050565b60008082608001518060200190518101906105649190612205565b509050806000036105dd5760405162461bcd60e51b815260206004820152602560248201527f4261746368206865616465722074696d657374616d702063616e6e6f7420626560448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103e4565b42600154826105ec9190612264565b11949350505050565b60006106026003546106e0565b905090565b600061060260035461052e565b6000610620858461119f565b61066c5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206261746368206865616465722e000000000000000000000060448201526064016103e4565b610689836020015185846000015185602001518760400151611255565b6106d55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420696e636c7573696f6e2070726f6f662e000000000000000060448201526064016103e4565b506001949350505050565b6000806106ec836110fc565b5064ffffffffff169392505050565b6000610705610938565b73ffffffffffffffffffffffffffffffffffffffff1663576f2588836040518263ffffffff1660e01b815260040161073f91815260200190565b602060405180830381865afa15801561075c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610510919061227c565b600061078d600354610d73565b60405160200161079d9190612295565b60405160208183030381529060405290506107bc60035484848461095b565b505050565b60008082608001518060200190518101906107dc9190612205565b509050806000036108555760405162461bcd60e51b815260206004820152602560248201527f4261746368206865616465722074696d657374616d702063616e6e6f7420626560448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103e4565b42600154826108649190612264565b119392505050565b6108aa6040518060400160405280600d81526020017f4d455449535f4d414e4147455200000000000000000000000000000000000000815250610478565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109245760405162461bcd60e51b815260206004820152600b60248201527f6e6f7720616c6c6f77656400000000000000000000000000000000000000000060448201526064016103e4565b600155565b61093560035482610318565b50565b60006106026040518060600160405280602181526020016124b260219139610478565b610964846106e0565b82146109d85760405162461bcd60e51b815260206004820152603d60248201527f41637475616c20626174636820737461727420696e64657820646f6573206e6f60448201527f74206d6174636820657870656374656420737461727420696e6465782e00000060648201526084016103e4565b60006109e382610478565b9050610a236040518060400160405280600b81526020017f426f6e644d616e61676572000000000000000000000000000000000000000000815250610478565b6040517ff3b96f1c0000000000000000000000000000000000000000000000000000000081526004810187905233602482015273ffffffffffffffffffffffffffffffffffffffff8381166044830152919091169063f3b96f1c90606401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906122d6565b610b345760405162461bcd60e51b815260206004820152602f60248201527f50726f706f73657220646f6573206e6f74206861766520656e6f75676820636f60448201527f6c6c61746572616c20706f73746564000000000000000000000000000000000060648201526084016103e4565b6000845111610bab5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207375626d697420616e20656d7074792073746174652062617460448201527f63682e000000000000000000000000000000000000000000000000000000000060648201526084016103e4565b610be96040518060400160405280601981526020017f43616e6f6e6963616c5472616e73616374696f6e436861696e00000000000000815250610478565b73ffffffffffffffffffffffffffffffffffffffff16638a52e622866040518263ffffffff1660e01b8152600401610c2391815260200190565b602060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c64919061227c565b8451610c6f876106e0565b610c799190612264565b1115610d135760405162461bcd60e51b815260206004820152604960248201527f4e756d626572206f6620737461746520726f6f74732063616e6e6f742065786360448201527f65656420746865206e756d626572206f662063616e6f6e6963616c207472616e60648201527f73616374696f6e732e0000000000000000000000000000000000000000000000608482015260a4016103e4565b610d5f85854233604051602001610d4a92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b604051602081830303815290604052846114c2565b5050505050565b60006106026003546106fb565b606081600003610db657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610de05780610dca816122f8565b9150610dd99050600a8361235f565b9150610dba565b60008167ffffffffffffffff811115610dfb57610dfb611c50565b6040519080825280601f01601f191660200182016040528015610e25576020820181803683370190505b509050815b8515610eca57610e3b600182612373565b90506000610e4a600a8861235f565b610e5590600a61238a565b610e5f9088612373565b610e6a9060306123c7565b905060008160f81b905080848481518110610e8757610e876123ec565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610ec1600a8961235f565b97505050610e2a565b50949350505050565b610edb610938565b73ffffffffffffffffffffffffffffffffffffffff1663576f2588836040518263ffffffff1660e01b8152600401610f1591815260200190565b602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f56919061227c565b815110610fa55760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420626174636820696e6465782e00000000000000000000000060448201526064016103e4565b610faf828261119f565b610ffb5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206261746368206865616465722e000000000000000000000060448201526064016103e4565b611003610938565b8151606083015173ffffffffffffffffffffffffffffffffffffffff929092169163bc05257691859160281b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915264ffffffffff19166044820152606401600060405180830381600087803b15801561109557600080fd5b505af11580156110a9573d6000803e3d6000fd5b5050505080600001517f6e9c082632d809680ee6227e58afd9a7c24ee8a43d61577b2e98f9e185fc630d8383602001516040516110f0929190918252602082015260400190565b60405180910390a25050565b6000806000611109610938565b73ffffffffffffffffffffffffffffffffffffffff166324a49415856040518263ffffffff1660e01b815260040161114391815260200190565b602060405180830381865afa158015611160573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611184919061241b565b64ffffffffff602882901c169560509190911c945092505050565b60006111a9610938565b82516040517f67d18b9b00000000000000000000000000000000000000000000000000000000815260048101869052602481019190915273ffffffffffffffffffffffffffffffffffffffff91909116906367d18b9b90604401602060405180830381865afa158015611220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611244919061227c565b61124d83611645565b149392505050565b60008082116112cc5760405162461bcd60e51b815260206004820152603760248201527f4c69625f4d65726b6c65547265653a20546f74616c206c6561766573206d757360448201527f742062652067726561746572207468616e207a65726f2e00000000000000000060648201526084016103e4565b8184106113405760405162461bcd60e51b8152602060048201526024808201527f4c69625f4d65726b6c65547265653a20496e646578206f7574206f6620626f7560448201527f6e64732e0000000000000000000000000000000000000000000000000000000060648201526084016103e4565b6113498261168b565b8351146113e45760405162461bcd60e51b815260206004820152604d60248201527f4c69625f4d65726b6c65547265653a20546f74616c207369626c696e6773206460448201527f6f6573206e6f7420636f72726563746c7920636f72726573706f6e6420746f2060648201527f746f74616c206c65617665732e00000000000000000000000000000000000000608482015260a4016103e4565b8460005b84518110156114b5578560011660010361144e5784818151811061140e5761140e6123ec565b602002602001015182604051602001611431929190918252602082015260400190565b60405160208183030381529060405280519060200120915061149c565b81858281518110611461576114616123ec565b6020026020010151604051602001611483929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b60019590951c94806114ad816122f8565b9150506113e8565b5090951495945050505050565b6000806114ce866110fc565b9150915042905060006040518060a001604052806114eb896106fb565b81526020016114f98861176d565b8152602001875181526020018464ffffffffff16815260200186815250905080600001517fbaa1d762384057169afd12b625998a5a7ed502c2e229acdbead30f3f6496399d888360200151846040015185606001518660800151604051611564959493929190612443565b60405180910390a2611574610938565b73ffffffffffffffffffffffffffffffffffffffff1663e6e436c08861159984611645565b6115be856040015186606001516115b09190612264565b602888811b91909117901b90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915264ffffffffff19166044820152606401600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b5050505050505050505050565b6000816020015182604001518360600151846080015160405160200161166e949392919061246e565b604051602081830303815290604052805190602001209050919050565b60008082116117025760405162461bcd60e51b815260206004820152603060248201527f4c69625f4d65726b6c65547265653a2043616e6e6f7420636f6d70757465206360448201527f65696c286c6f675f3229206f6620302e0000000000000000000000000000000060648201526084016103e4565b8160010361171257506000919050565b81600060805b60018110611750578061172e600180831b612373565b901b831615611748576117418183612264565b92811c9291505b60011c611718565b506001811b841461176657610526600182612264565b9392505050565b6000808251116117e55760405162461bcd60e51b815260206004820152603460248201527f4c69625f4d65726b6c65547265653a204d7573742070726f766964652061742060448201527f6c65617374206f6e65206c65616620686173682e00000000000000000000000060648201526084016103e4565b81516001036118105781600081518110611801576118016123ec565b60200260200101519050919050565b60408051610200810182527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56381527f633dc4d7da7256660a892f8f1604a44b5432649cc8ec5cb3ced4c4e6ac94dd1d60208201527f890740a8eb06ce9be422cb8da5cdafc2b58c0a5e24036c578de2a433c828ff7d818301527f3b8ec09e026fdc305365dfc94e189a81b38c7597b3d941c279f042e8206e0bd86060808301919091527fecd50eee38e386bd62be9bedb990706951b65fe053bd9d8a521af753d139e2da60808301527fdefff6d330bb5403f63b14f33b578274160de3a50df4efecf0e0db73bcdd3da560a08301527f617bdd11f7c0a11f49db22f629387a12da7596f9d1704d7465177c63d88ec7d760c08301527f292c23a9aa1d8bea7e2435e555a4a60e379a5a35f3f452bae60121073fb6eead60e08301527fe1cea92ed99acdcb045a6726b2f87107e8a61620a232cf4d7d5b5766b3952e106101008301527f7ad66c0a68c72cb89e4fb4303841966e4062a76ab97451e3b9fb526a5ceb7f826101208301527fe026cc5a4aed3c22a58cbd3d2ac754c9352c5436f638042dca99034e836365166101408301527f3d04cffd8b46a874edf5cfae63077de85f849a660426697b06a829c70dd1409c6101608301527fad676aa337a485e4728a0b240d92b3ef7b3c372d06d189322bfd5f61f1e7203e6101808301527fa2fca4a49658f9fab7aa63289c91b7c7b6c832a6d0e69334ff5b0a3483d09dab6101a08301527f4ebfd9cd7bca2505f7bef59cc1c12ecc708fff26ae4af19abe852afe9e20c8626101c08301527f2def10d13dd169f550f578bda343d9717a138562e0093b380a1120789d53cf106101e083015282518381529081018352909160009190602082018180368337505085519192506000918291508180805b6001841115611c2657611ac160028561235f565b9150611ace60028561249d565b600114905060005b82811015611b7a578a611aea82600261238a565b81518110611afa57611afa6123ec565b602002602001015196508a816002611b12919061238a565b611b1d906001612264565b81518110611b2d57611b2d6123ec565b6020026020010151955086602089015285604089015287805190602001208b8281518110611b5d57611b5d6123ec565b602090810291909101015280611b72816122f8565b915050611ad6565b508015611bf65789611b8d600186612373565b81518110611b9d57611b9d6123ec565b60200260200101519550878360108110611bb957611bb96123ec565b602002015160001b945085602088015284604088015286805190602001208a8381518110611be957611be96123ec565b6020026020010181815250505b80611c02576000611c05565b60015b611c129060ff1683612264565b935082611c1e816122f8565b935050611aad565b89600081518110611c3957611c396123ec565b602002602001015198505050505050505050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ca857611ca8611c50565b604052919050565b600067ffffffffffffffff831115611cca57611cca611c50565b611cdd6020601f19601f86011601611c7f565b9050828152838383011115611cf157600080fd5b828260208301376000602084830101529392505050565b600060a08284031215611d1a57600080fd5b60405160a0810167ffffffffffffffff8282108183111715611d3e57611d3e611c50565b81604052829350843583526020850135602084015260408501356040840152606085013560608401526080850135915080821115611d7b57600080fd5b508301601f81018513611d8d57600080fd5b611d9c85823560208401611cb0565b6080830152505092915050565b60008060408385031215611dbc57600080fd5b82359150602083013567ffffffffffffffff811115611dda57600080fd5b611de685828601611d08565b9150509250929050565b600082601f830112611e0157600080fd5b61176683833560208501611cb0565b600060208284031215611e2257600080fd5b813567ffffffffffffffff811115611e3957600080fd5b61052684828501611df0565b600082601f830112611e5657600080fd5b8135602067ffffffffffffffff821115611e7257611e72611c50565b8160051b611e81828201611c7f565b9283528481018201928281019087851115611e9b57600080fd5b83870192505b84831015611eba57823582529183019190830190611ea1565b979650505050505050565b600060408284031215611ed757600080fd5b6040516040810167ffffffffffffffff8282108183111715611efb57611efb611c50565b81604052829350843583526020850135915080821115611f1a57600080fd5b50611f2785828601611e45565b6020830152505092915050565b600080600060608486031215611f4957600080fd5b83359250602084013567ffffffffffffffff80821115611f6857600080fd5b611f7487838801611d08565b93506040860135915080821115611f8a57600080fd5b50611f9786828701611ec5565b9150509250925092565b600060208284031215611fb357600080fd5b5035919050565b60008060008060808587031215611fd057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115611ff657600080fd5b61200288838901611d08565b9350606087013591508082111561201857600080fd5b5061202587828801611ec5565b91505092959194509250565b6000806040838503121561204457600080fd5b823567ffffffffffffffff81111561205b57600080fd5b61206785828601611e45565b95602094909401359450505050565b60006020828403121561208857600080fd5b813567ffffffffffffffff81111561209f57600080fd5b61052684828501611d08565b600080600080608085870312156120c157600080fd5b84359350602085013567ffffffffffffffff808211156120e057600080fd5b6120ec88838901611e45565b945060408701359350606087013591508082111561210957600080fd5b5061202587828801611df0565b60005b83811015612131578181015183820152602001612119565b83811115612140576000848401525b50505050565b60008251612158818460208701612116565b7f5f4d564d5f467261756456657269666965720000000000000000000000000000920191825250601201919050565b6000815180845261219f816020860160208601612116565b601f01601f19169290920160200192915050565b6020815260006117666020830184612187565b73ffffffffffffffffffffffffffffffffffffffff8116811461093557600080fd5b6000602082840312156121fa57600080fd5b8151611766816121c6565b6000806040838503121561221857600080fd5b82519150602083015161222a816121c6565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561227757612277612235565b500190565b60006020828403121561228e57600080fd5b5051919050565b600082516122a7818460208701612116565b7f5f4d564d5f50726f706f73657200000000000000000000000000000000000000920191825250600d01919050565b6000602082840312156122e857600080fd5b8151801515811461176657600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361232957612329612235565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261236e5761236e612330565b500490565b60008282101561238557612385612235565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123c2576123c2612235565b500290565b600060ff821660ff84168060ff038211156123e4576123e4612235565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561242d57600080fd5b815164ffffffffff198116811461176657600080fd5b85815284602082015283604082015282606082015260a060808201526000611eba60a0830184612187565b8481528360208201528260408201526080606082015260006124936080830184612187565b9695505050505050565b6000826124ac576124ac612330565b50069056fe436861696e53746f72616765436f6e7461696e65722d5343432d62617463686573a264697066735822122079c472817d66d43d0a4974185c9815a45c21f29f8c2afb1fcd2857265f844e3c64736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
