{
  "_format": "hh-sol-artifact-1",
  "contractName": "L2OutputOracleTest",
  "sourceName": "contracts/test/L2OutputOracle.t.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "prevNextOutputIndex",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "newNextOutputIndex",
          "type": "uint256"
        }
      ],
      "name": "OutputsDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "version",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "opaqueData",
          "type": "bytes"
        }
      ],
      "name": "TransactionDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_computeL2Timestamp_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_constructor_badTimestamp_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_constructor_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_deleteL2Outputs_afterLatest_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_deleteL2Outputs_ifNotChallenger_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_deleteL2Outputs_nonExistent_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_deleteOutputs_multipleOutputs_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_deleteOutputs_singleOutput_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_getL2OutputIndexAfter_multipleOutputsExist_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_getL2OutputIndexAfter_noOutputsExis_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_getL2OutputIndexAfter_previousBlock_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_getL2OutputIndexAfter_sameBlock_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_getL2Output_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_latestBlockNumber_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_nextBlockNumber_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeL2Output_emptyOutput_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeL2Output_futureTimetamp_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeL2Output_notProposer_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeL2Output_proposeAnotherOutput_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeL2Output_unexpectedBlockNumber_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeL2Output_unmatchedBlockhash_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeL2Output_wrongFork_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proposeWithBlockhashAndHeight_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_nextBlockNumber",
          "type": "uint256"
        }
      ],
      "name": "warpToProposeTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60008054600160ff19909116811782556013805460806001600160a01b03199182168117909255601480546101009083168117909155601580546102009316831790559184905260a092909252606460c05260e09290925261c350909152602061014052600861016052674e4f4e5f5a45524f60c01b610180526060610120527fced1f90d33a6ca7cfbe479a1c2415c4287f559420415e3188c786e36414529be60165560405260226101a0818152906200d8f76101c039601790620000c6908262000201565b50601b80546001600160a01b031990811673420000000000000000000000000000000000001617909155601c8054821661abba179055601d805490911661acdc179055610708601e556002601f5560c860209081556103e86021556040805160019281019290925201604051602081830303815290604052805190602001206023553480156200015557600080fd5b50620002cd565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018757607f821691505b602082108103620001a857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001fc57600081815260208120601f850160051c81016020861015620001d75750805b601f850160051c820191505b81811015620001f857828155600101620001e3565b5050505b505050565b81516001600160401b038111156200021d576200021d6200015c565b62000235816200022e845462000172565b84620001ae565b602080601f8311600181146200026d5760008415620002545750858301515b600019600386901b1c1916600185901b178555620001f8565b600085815260208120601f198616915b828110156200029e578886015182559484019460019091019084016200027d565b5085821015620002bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161d5f462000303600039600050506000505060005050600050506000505061d5f46000f3fe60806040523480156200001157600080fd5b5060043610620001e95760003560e01c80638ad84517116200010d578063c622f42e11620000a3578063f7afa812116200007a578063f7afa8121462000301578063fa7626d4146200030b578063fd28d58e1462000319578063ffee9e30146200032357600080fd5b8063c622f42e14620002e3578063d867dbc614620002ed578063efb4185014620002f757600080fd5b80639d27956611620000e45780639d279566146200029a578063b75d948714620002a4578063ba414fa614620002ae578063bcfceff214620002cc57600080fd5b80638ad84517146200027c5780638b40544a1462000286578063993b4d9b146200029057600080fd5b80634eda2c9e11620001835780635ba201e4116200015a5780635ba201e41462000254578063662842fa146200025e5780637880325f146200026857806380aee254146200027257600080fd5b80634eda2c9e1462000236578063551f2e921462000240578063569674ae146200024a57600080fd5b806337560e9911620001c457806337560e99146200020e5780633e1a9579146200021857806341e166de1462000222578063425103a1146200022c57600080fd5b80630a9254e414620001ee5780630e593cd714620001fa5780632fbcc66c1462000204575b600080fd5b620001f86200032d565b005b620001f862000339565b620001f862000530565b620001f8620007ae565b620001f862000a3c565b620001f862001499565b620001f86200175a565b620001f862001ade565b620001f8620020d9565b620001f862002497565b620001f862002846565b620001f862002d86565b620001f862003008565b620001f8620034ed565b620001f8620038b6565b620001f862003b9f565b620001f862003e15565b620001f862003fb7565b620001f862004146565b620002b862004313565b604051901515815260200160405180910390f35b620001f8620002dd3660046200633c565b6200447d565b620001f86200453c565b620001f862004a6c565b620001f862004deb565b620001f862004fae565b600054620002b89060ff1681565b620001f862005211565b620001f8620054c9565b6200033762005782565b565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa158015620003aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d0919062006356565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f75747075747300006064820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390608401600060405180830381600087803b1580156200048d57600080fd5b505af1158015620004a2573d6000803e3d6000fd5b50506019546040517f89c44cbb0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff90911692506389c44cbb91506024015b600060405180830381600087803b1580156200051457600080fd5b505af115801562000529573d6000803e3d6000fd5b5050505050565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa158015620005a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c7919062006356565b9050620005d4816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200065457600080fd5b505af115801562000669573d6000803e3d6000fd5b50506019546023546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b158015620006f357600080fd5b505af115801562000708573d6000803e3d6000fd5b50505050620007ab601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200077e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a4919062006356565b8262005e43565b50565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa1580156200081f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000845919062006356565b905062000852816200447d565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815260806004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620008b957600080fd5b505af1158015620008ce573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f73000000000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620009b257600080fd5b505af1158015620009c7573d6000803e3d6000fd5b50506019546016546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401620004f9565b604080516001602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562000af0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b16919062006356565b905062000b23816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000ba357600080fd5b505af115801562000bb8573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b15801562000c3e57600080fd5b505af115801562000c53573d6000803e3d6000fd5b5050604080516002602082015260009350019050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562000d0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d32919062006356565b905062000d3f816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000dbf57600080fd5b505af115801562000dd4573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b15801562000e5a57600080fd5b505af115801562000e6f573d6000803e3d6000fd5b5050604080516003602082015260009350019050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562000f28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f4e919062006356565b905062000f5b816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000fdb57600080fd5b505af115801562000ff0573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200107657600080fd5b505af11580156200108b573d6000803e3d6000fd5b5050604080516004602082015260009350019050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562001144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200116a919062006356565b905062001177816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620011f757600080fd5b505af11580156200120c573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200129257600080fd5b505af1158015620012a7573d6000803e3d6000fd5b50506019546000925073ffffffffffffffffffffffffffffffffffffffff169050637f006420620012da8a60016200639f565b6040518263ffffffff1660e01b8152600401620012f991815260200190565b602060405180830381865afa15801562001317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133d919062006356565b90506200134c81600162005e43565b60195460009073ffffffffffffffffffffffffffffffffffffffff16637f0064206200137a8960016200639f565b6040518263ffffffff1660e01b81526004016200139991815260200190565b602060405180830381865afa158015620013b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013dd919062006356565b9050620013ec81600262005e43565b60195460009073ffffffffffffffffffffffffffffffffffffffff16637f0064206200141a8860016200639f565b6040518263ffffffff1660e01b81526004016200143991815260200190565b602060405180830381865afa15801562001457573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147d919062006356565b90506200148c81600362005e43565b5050505050505050505050565b604080516001602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa1580156200154d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001573919062006356565b905062001580816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200160057600080fd5b505af115801562001615573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200169b57600080fd5b505af1158015620016b0573d6000803e3d6000fd5b50506019546000925073ffffffffffffffffffffffffffffffffffffffff169050637f006420620016e3600185620063ba565b6040518263ffffffff1660e01b81526004016200170291815260200190565b602060405180830381865afa15801562001720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001746919062006356565b90506200175581600062005e43565b505050565b6040517f1f7b4f3000000000000000000000000000000000000000000000000000000000815260646004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b158015620017c157600080fd5b505af1158015620017d6573d6000803e3d6000fd5b505050506000600143620017eb9190620063ba565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905192935083409260009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562001862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001888919062006356565b905062001895816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200191557600080fd5b505af11580156200192a573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f65642068656967687400000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b15801562001a0e57600080fd5b505af115801562001a23573d6000803e3d6000fd5b505060195460165473ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150838562001a5b600189620063ba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815260048101949094526024840192909252604483015260648201526084015b600060405180830381600087803b15801562001ac057600080fd5b505af115801562001ad5573d6000803e3d6000fd5b50505050505050565b62001ae8620038b6565b62001af2620038b6565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa15801562001b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b89919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bfb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c21919062006356565b60195490915060009073ffffffffffffffffffffffffffffffffffffffff1663a25ae55762001c52600185620063ba565b6040518263ffffffff1660e01b815260040162001c7191815260200190565b606060405180830381865afa15801562001c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb5919062006424565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d3857600080fd5b505af115801562001d4d573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201526000604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562001dcd57600080fd5b505af115801562001de2573d6000803e3d6000fd5b505050508182600162001df691906200639f565b6040517f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b690600090a36019546040517f89c44cbb0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906389c44cbb90602401600060405180830381600087803b15801562001e8c57600080fd5b505af115801562001ea1573d6000803e3d6000fd5b505050506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f3b919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001fad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd3919062006356565b905062001ff0601e548662001fe99190620063ba565b8362005e43565b6019546040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810183905260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801562002061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002087919062006424565b84518151919250620020999162005f55565b620020d184602001516fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff1662005e43565b505050505050565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa1580156200214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002170919062006356565b6019546040517fd1de856c0000000000000000000000000000000000000000000000000000000081526004810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063d1de856c90602401602060405180830381865afa158015620021e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200220c919062006356565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200227657600080fd5b505af11580156200228b573d6000803e3d6000fd5b5050601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200230f57600080fd5b505af115801562002324573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e2074686520667574757265000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b158015620023e257600080fd5b505af1158015620023f7573d6000803e3d6000fd5b50506019546016546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101869052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab64891506084015b600060405180830381600087803b1580156200248257600080fd5b505af1158015620020d1573d6000803e3d6000fd5b620024a1620038b6565b620024ab620038b6565b620024b5620038b6565b601954604080517f69f16eec000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916369f16eec9160048083019260209291908290030181865afa15801562002526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254c919062006356565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620025cf57600080fd5b505af1158015620025e4573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff1691506389c44cbb905062002615600284620063ba565b6040518263ffffffff1660e01b81526004016200263491815260200190565b600060405180830381600087803b1580156200264f57600080fd5b505af115801562002664573d6000803e3d6000fd5b5050601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620026e857600080fd5b505af1158015620026fd573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f64657800000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620027e157600080fd5b505af1158015620027f6573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff1691506389c44cbb905062002827600284620063ba565b6040518263ffffffff1660e01b8152600401620004f991815260200190565b6013546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620028cf57600080fd5b505af1158015620028e4573d6000803e3d6000fd5b50506014546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200297157600080fd5b505af115801562002986573d6000803e3d6000fd5b50506015546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562002a1357600080fd5b505af115801562002a28573d6000803e3d6000fd5b5050601354604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600560448201527f616c6963650000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002adf57600080fd5b505af115801562002af4573d6000803e3d6000fd5b5050601454604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600360448201527f626f6200000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002bab57600080fd5b505af115801562002bc0573d6000803e3d6000fd5b5050601554604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600860448201527f6d756c74697369670000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002c7757600080fd5b505af115801562002c8c573d6000803e3d6000fd5b50506040517f39b37ab0000000000000000000000000000000000000000000000000000000008152633b9aca006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506339b37ab09150602401600060405180830381600087803b15801562002cfa57600080fd5b505af115801562002d0f573d6000803e3d6000fd5b5050505060405162002d219062006304565b604051809103906000f08015801562002d3e573d6000803e3d6000fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b601954604080517fdcec33480000000000000000000000000000000000000000000000000000000081529051600092839273ffffffffffffffffffffffffffffffffffffffff9091169163dcec3348916004808201926020929091908290030181865afa15801562002dfc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e22919062006356565b905062002e2f816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002eaf57600080fd5b505af115801562002ec4573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f20686173680000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b15801562002f8257600080fd5b505af115801562002f97573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915060840162002467565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562003079573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200309f919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003137919062006356565b905062003144826200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620031c457600080fd5b505af1158015620031d9573d6000803e3d6000fd5b50506019546023546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101869052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200326357600080fd5b505af115801562003278573d6000803e3d6000fd5b50506019546040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000935073ffffffffffffffffffffffffffffffffffffffff909116915063a25ae55790602401606060405180830381865afa158015620032ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003315919062006424565b905062003329816000015160235462005f55565b6200334b81602001516fffffffffffffffffffffffffffffffff164262005e43565b60405160326024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b71000000000000000000000000000000000000000000000000000000001790525160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526200342391906004016200650c565b600060405180830381600087803b1580156200343e57600080fd5b505af115801562003453573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff16915063a25ae5579050620034848460016200639f565b6040518263ffffffff1660e01b8152600401620034a391815260200190565b606060405180830381865afa158015620034c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034e7919062006424565b50505050565b601954604080517fbffa7f0f0000000000000000000000000000000000000000000000000000000081529051620035a59273ffffffffffffffffffffffffffffffffffffffff169163bffa7f0f9160048083019260209291908290030181865afa15801562003560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003586919062006528565b601c5473ffffffffffffffffffffffffffffffffffffffff1662006055565b601954604080517f6b4d98dd00000000000000000000000000000000000000000000000000000000815290516200365d9273ffffffffffffffffffffffffffffffffffffffff1691636b4d98dd9160048083019260209291908290030181865afa15801562003618573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200363e919062006528565b601d5473ffffffffffffffffffffffffffffffffffffffff1662006055565b601954604080517f529933df0000000000000000000000000000000000000000000000000000000081529051620036ff9273ffffffffffffffffffffffffffffffffffffffff169163529933df9160048083019260209291908290030181865afa158015620036d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f6919062006356565b601e5462005e43565b601954604080517f4599c7880000000000000000000000000000000000000000000000000000000081529051620037a19273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa15801562003772573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003798919062006356565b60205462005e43565b601954604080517f70872aa50000000000000000000000000000000000000000000000000000000081529051620038149273ffffffffffffffffffffffffffffffffffffffff16916370872aa59160048083019260209291908290030181865afa15801562003772573d6000803e3d6000fd5b601954604080517f887862720000000000000000000000000000000000000000000000000000000081529051620003379273ffffffffffffffffffffffffffffffffffffffff169163887862729160048083019260209291908290030181865afa15801562003887573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038ad919062006356565b60215462005e43565b6040805160008082526020808301808552835181206019547fdcec3348000000000000000000000000000000000000000000000000000000009092529451929373ffffffffffffffffffffffffffffffffffffffff9091169263dcec3348926024808401939192918290030181865afa15801562003938573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395e919062006356565b90506200396b816200447d565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa158015620039dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a02919062006356565b905062003a1f82601e548362003a1991906200639f565b62005e43565b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f3062003a468460016200639f565b6040518263ffffffff1660e01b815260040162003a6591815260200190565b600060405180830381600087803b15801562003a8057600080fd5b505af115801562003a95573d6000803e3d6000fd5b5050601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562003b1957600080fd5b505af115801562003b2e573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810187905260248101869052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915060840162001aa5565b604080516001602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562003c53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c79919062006356565b905062003c86816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003d0657600080fd5b505af115801562003d1b573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b15801562003da157600080fd5b505af115801562003db6573d6000803e3d6000fd5b50506019546040517f7f006420000000000000000000000000000000000000000000000000000000008152600481018590526000935073ffffffffffffffffffffffffffffffffffffffff9091169150637f0064209060240162001702565b6040517ff28dceb3000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d65000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39060a401600060405180830381600087803b15801562003ef657600080fd5b505af115801562003f0b573d6000803e3d6000fd5b50505050601e54601f5460205442600162003f2791906200639f565b601c54601d5460405173ffffffffffffffffffffffffffffffffffffffff928316929091169062003f589062006312565b95865260208601949094526040850192909252606084015273ffffffffffffffffffffffffffffffffffffffff90811660808401521660a082015260c001604051809103906000f08015801562003fb3573d6000803e3d6000fd5b5050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f65642079657400000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39060a401600060405180830381600087803b1580156200409757600080fd5b505af1158015620040ac573d6000803e3d6000fd5b50506019546040517f7f0064200000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250637f0064209150602401602060405180830381865afa15801562004120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ab919062006356565b601954604080517fdcec33480000000000000000000000000000000000000000000000000000000081529051620003379273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa158015620041b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041df919062006356565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200424d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004273919062006356565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa158015620042e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004307919062006356565b62003a1991906200639f565b60008054610100900460ff1615620043345750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620044785760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620043dc917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006560565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200441691620065aa565b6000604051808303816000865af19150503d806000811462004455576040519150601f19603f3d011682016040523d82523d6000602084013e6200445a565b606091505b5091505080806020019051810190620044749190620065c8565b9150505b919050565b6019546040517fd1de856c00000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029173ffffffffffffffffffffffffffffffffffffffff9091169063d1de856c90602401602060405180830381865afa15801562004509573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200452f919062006356565b620028279060016200639f565b62004546620038b6565b62004550620038b6565b6200455a620038b6565b62004564620038b6565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa158015620045d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045fb919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200466d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004693919062006356565b60195490915060009073ffffffffffffffffffffffffffffffffffffffff1663a25ae557620046c4600385620063ba565b6040518263ffffffff1660e01b8152600401620046e391815260200190565b606060405180830381865afa15801562004701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004727919062006424565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620047aa57600080fd5b505af1158015620047bf573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201526000604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200483f57600080fd5b505af115801562004854573d6000803e3d6000fd5b50505050600282620048679190620063ba565b620048748360016200639f565b6040517f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b690600090a360195473ffffffffffffffffffffffffffffffffffffffff166389c44cbb620048c8600285620063ba565b6040518263ffffffff1660e01b8152600401620048e791815260200190565b600060405180830381600087803b1580156200490257600080fd5b505af115801562004917573d6000803e3d6000fd5b505050506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200498b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049b1919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004a23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a49919062006356565b905062001ff0601e54600362004a609190620065ec565b62001fe99087620063ba565b60405160116024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b71000000000000000000000000000000000000000000000000000000001790525160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815262004b4491906004016200650c565b600060405180830381600087803b15801562004b5f57600080fd5b505af115801562004b74573d6000803e3d6000fd5b505060195460205473ffffffffffffffffffffffffffffffffffffffff909116925063d1de856c915062004bab90600190620063ba565b6040518263ffffffff1660e01b815260040162004bca91815260200190565b602060405180830381865afa15801562004be8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c0e919062006356565b506019546020546040517fd1de856c000000000000000000000000000000000000000000000000000000008152600481019190915262004c869173ffffffffffffffffffffffffffffffffffffffff169063d1de856c90602401602060405180830381865afa15801562003887573d6000803e3d6000fd5b60195460205462004d309173ffffffffffffffffffffffffffffffffffffffff169063d1de856c9062004cbb9060016200639f565b6040518263ffffffff1660e01b815260040162004cda91815260200190565b602060405180830381865afa15801562004cf8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d1e919062006356565b601f5460215462003a1991906200639f565b601954602054620003379173ffffffffffffffffffffffffffffffffffffffff169063d1de856c9062004d6790620177186200639f565b6040518263ffffffff1660e01b815260040162004d8691815260200190565b602060405180830381865afa15801562004da4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004dca919062006356565b601f5462004ddc9062017718620065ec565b60215462003a1991906200639f565b600062004dfa600143620063ba565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905192935083409260009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562004e71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e97919062006356565b905062004ea4816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562004f2457600080fd5b505af115801562004f39573d6000803e3d6000fd5b50506019546016546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052604481018690526064810187905273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915060840162001aa5565b62004fb8620038b6565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa15801562005029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200504f919062006356565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620050d257600080fd5b505af1158015620050e7573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f64657800000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620051cb57600080fd5b505af1158015620051e0573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff1691506389c44cbb9050620028278360016200639f565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562005282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052a8919062006356565b9050620052b5816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200533557600080fd5b505af11580156200534a573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d6265720000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b1580156200542e57600080fd5b505af115801562005443573d6000803e3d6000fd5b505060195460165473ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915062005479600185620063ba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526000604482018190526064820152608401620004f9565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa1580156200553a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005560919062006356565b90506200556d816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620055ed57600080fd5b505af115801562005602573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f65642068656967687400000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620056e657600080fd5b505af1158015620056fb573d6000803e3d6000fd5b505060195460165473ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150836001620057338143620063ba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526004810194909452602484019290925260448301526064820152608401620004f9565b6200578c62002846565b6021546200579c9060016200639f565b60228190556040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200580957600080fd5b505af11580156200581e573d6000803e3d6000fd5b50506020546040517f1f7b4f300000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250631f7b4f309150602401600060405180830381600087803b1580156200588d57600080fd5b505af1158015620058a2573d6000803e3d6000fd5b5050601e54601f54602054602154601c54601d546040519597509395509193909273ffffffffffffffffffffffffffffffffffffffff928316921690620058e99062006312565b95865260208601949094526040850192909252606084015273ffffffffffffffffffffffffffffffffffffffff90811660808401521660a082015260c001604051809103906000f08015801562005944573d6000803e3d6000fd5b50601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560155460405160009291909116906200599f9062006320565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015620059d9573d6000803e3d6000fd5b506015546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562005a5d57600080fd5b505af115801562005a72573d6000803e3d6000fd5b5050601a546020546021546040516024810192909252604482015273ffffffffffffffffffffffffffffffffffffffff8581169450634f1ef286935090911690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe4a3011600000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815262005b659291906004016200662c565b6000604051808303816000875af115801562005b85573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262005bcd919081019062006665565b50601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517fc657c71800000000000000000000000000000000000000000000000000000000815260048101929092526024820152600e60448201527f4c324f75747075744f7261636c650000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b15801562005cac57600080fd5b505af115801562005cc1573d6000803e3d6000fd5b5050604051737109709ecfa91a80626ff3989d68f67f5b1dd12d925063b4d6c78291507342000000000000000000000000000000000000169062005d05906200632e565b604051809103906000f08015801562005d22573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162005d749291906200662c565b600060405180830381600087803b15801562005d8f57600080fd5b505af115801562005da4573d6000803e3d6000fd5b5050604080517fc657c71800000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000001660048201526024810191909152601360448201527f4c32546f4c314d657373616765506173736572000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401620004f9565b80821462003fb3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162005ed19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162005f0a91906200673c565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162005f43919062006788565b60405180910390a162003fb362006181565b80821462003fb3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162005fe39060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99816040516200601c91906200673c565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162005f43919062006788565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462003fb3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200610f9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620061489190620067c6565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162005f43919062006828565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620062d65760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262006253929160200162006560565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200628d91620065aa565b6000604051808303816000865af19150503d8060008114620062cc576040519150601f19603f3d011682016040523d82523d6000602084013e620062d1565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b614174806200686783390190565b61188b806200a9db83390190565b610918806200c26683390190565b610a6a806200cb7e83390190565b6000602082840312156200634f57600080fd5b5035919050565b6000602082840312156200636957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115620063b557620063b562006370565b500190565b600082821015620063cf57620063cf62006370565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146200447857600080fd5b6000606082840312156200643757600080fd5b6040516060810181811067ffffffffffffffff821117156200645d576200645d620063d4565b60405282518152620064726020840162006403565b6020820152620064856040840162006403565b60408201529392505050565b60005b83811015620064ae57818101518382015260200162006494565b83811115620034e75750506000910152565b60008151808452620064da81602086016020860162006491565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000620065216020830184620064c0565b9392505050565b6000602082840312156200653b57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146200652157600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200659c81600485016020870162006491565b919091016004019392505050565b60008251620065be81846020870162006491565b9190910192915050565b600060208284031215620065db57600080fd5b815180151581146200652157600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562006627576200662762006370565b500290565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006200665d6040830184620064c0565b949350505050565b6000602082840312156200667857600080fd5b815167ffffffffffffffff808211156200669157600080fd5b818401915084601f830112620066a657600080fd5b815181811115620066bb57620066bb620063d4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715620067045762006704620063d4565b816040528281528760208487010111156200671e57600080fd5b6200673183602083016020880162006491565b979650505050505050565b6040815260006200677a60408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200677a60408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b6040815260006200680460408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b6040815260006200680460408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe60806040526000805460ff1916600117905534801561001d57600080fd5b506141478061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100c85760003560e01c80637e577a1b11610081578063dcf5edef1161005b578063dcf5edef146101c0578063fa7626d4146101d3578063fc677392146101e057600080fd5b80637e577a1b14610172578063ba414fa614610195578063c21e8865146101ad57600080fd5b806335337aab116100b257806335337aab14610117578063498a3c021461012a578063526dc9551461014a57600080fd5b8062ec31a6146100cd5780631aac97c1146100f3575b600080fd5b6100e06100db3660046136cb565b6101f3565b6040519081526020015b60405180910390f35b610106610101366004613745565b6108dc565b6040516100ea9594939291906138e2565b6100e0610125366004613925565b610fed565b61013d6101383660046136cb565b6117e4565b6040516100ea91906139b1565b61015d6101583660046139c4565b611ec1565b604080519283526020830191909152016100ea565b6101856101803660046139dd565b612179565b6040516100ea9493929190613a26565b61019d6123f8565b60405190151581526020016100ea565b6100e06101bb3660046136cb565b612558565b6100e06101ce366004613a65565b61265f565b60005461019d9060ff1681565b61013d6101ee366004613a97565b6128e6565b6040805160098082526101408201909252600091829190816020015b606081526020019060019003908161020f5790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061026f5761026f613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106102a6576102a6613ad3565b60200260200101819052506040518060400160405280601681526020017f6861736843726f7373446f6d61696e4d65737361676500000000000000000000815250816002815181106102fa576102fa613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561036e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103b49190810190613b32565b816003815181106103c7576103c7613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610450573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104969190810190613b32565b816004815181106104a9576104a9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610532573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105789190810190613b32565b8160058151811061058b5761058b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106459190810190613b32565b8160068151811061065857610658613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107129190810190613b32565b8160078151811061072557610725613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906107809086906004016139b1565b600060405180830381865afa15801561079d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107e39190810190613b32565b816008815181106107f6576107f6613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610854908590600401613b7b565b6000604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108b99190810190613c1b565b9050808060200190518101906108cf9190613c50565b9998505050505050505050565b6000808080606081600960405190808252806020026020018201604052801561091957816020015b60608152602001906001900390816109045790505b5090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061096557610965613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061099c5761099c613ad3565b60200260200101819052506040518060600160405280602381526020016140f460239139816002815181106109d3576109d3613ad3565b602090810291909101015286516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610a4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a909190810190613b32565b81600381518110610aa357610aa3613ad3565b6020908102919091018101919091528701516040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b7a9190810190613b32565b81600481518110610b8d57610b8d613ad3565b602090810291909101015260408781015190517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c629190810190613b32565b81600581518110610c7557610c75613ad3565b602090810291909101015260608701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d359190810190613b32565b81600681518110610d4857610d48613ad3565b602090810291909101015260808701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610dc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e089190810190613b32565b81600781518110610e1b57610e1b613ad3565b602090810291909101015260a08701516040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d916371aad10d91610e7a91906004016139b1565b600060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610edd9190810190613b32565b81600881518110610ef057610ef0613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610f4e908590600401613b7b565b6000604051808303816000875af1158015610f6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb39190810190613c1b565b9050600080600080600085806020019051810190610fd19190613d08565b939f50919d509b50995097505050505050505091939590929450565b60408051600b8082526101808201909252600091829190816020015b60608152602001906001900390816110095790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061106957611069613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106110a0576110a0613ad3565b60200260200101819052506040518060400160405280601681526020017f686173684465706f7369745472616e73616374696f6e00000000000000000000815250816002815181106110f4576110f4613ad3565b60200260200101819052506040518060800160405280604281526020016140b2604291398160038151811061112b5761112b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561119f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111e59190810190613b32565b816004815181106111f8576111f8613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112c79190810190613b32565b816005815181106112da576112da613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113a99190810190613b32565b816006815181106113bc576113bc613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611430573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114769190810190613b32565b8160078151811061148957611489613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115439190810190613b32565b8160088151811061155657611556613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff86166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613b32565b8160098151811061162c5761162c613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906116879087906004016139b1565b600060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116ea9190810190613b32565b81600a815181106116fd576116fd613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061175b908590600401613b7b565b6000604051808303816000875af115801561177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526117c09190810190613c1b565b9050808060200190518101906117d69190613c50565b9a9950505050505050505050565b604080516009808252610140820190925260609160009190816020015b60608152602001906001900390816118015790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061186157611861613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061189857611898613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f646543726f7373446f6d61696e4d6573736167650000000000000000815250816002815181106118ec576118ec613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611960573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119a69190810190613b32565b816003815181106119b9576119b9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611a889190810190613b32565b81600481518110611a9b57611a9b613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611b24573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b6a9190810190613b32565b81600581518110611b7d57611b7d613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611bf1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c379190810190613b32565b81600681518110611c4a57611c4a613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611cbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d049190810190613b32565b81600781518110611d1757611d17613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d90611d729086906004016139b1565b600060405180830381865afa158015611d8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611dd59190810190613b32565b81600881518110611de857611de8613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790611e46908590600401613b7b565b6000604051808303816000875af1158015611e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611eab9190810190613c1b565b9050808060200190518101906108cf9190613c1b565b60408051600480825260a0820190925260009182918291816020015b6060815260200190600190039081611edd5790505090506040518060400160405280600481526020017f6e6f64650000000000000000000000000000000000000000000000000000000081525081600081518110611f3d57611f3d613ad3565b60200260200101819052506040518060600160405280602481526020016141176024913981600181518110611f7457611f74613ad3565b60200260200101819052506040518060400160405280601481526020017f6465636f646556657273696f6e65644e6f6e636500000000000000000000000081525081600281518110611fc857611fc8613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561203c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120829190810190613b32565b8160038151811061209557612095613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906120f3908590600401613b7b565b6000604051808303816000875af1158015612112573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121589190810190613c1b565b90508080602001905181019061216e9190613d6c565b935093505050915091565b60408051600580825260c08201909252600091606091829182918591816020015b606081526020019060019003908161219a5790505090506040518060400160405280601a81526020017f2e2f746573742d636173652d67656e657261746f722f66757a7a000000000000815250816000815181106121fa576121fa613ad3565b60200260200101819052506040518060400160405280600281526020017f2d6d0000000000000000000000000000000000000000000000000000000000008152508160018151811061224e5761224e613ad3565b60200260200101819052506040518060400160405280600481526020017f7472696500000000000000000000000000000000000000000000000000000000815250816002815181106122a2576122a2613ad3565b60200260200101819052506040518060400160405280600281526020017f2d76000000000000000000000000000000000000000000000000000000000000815250816003815181106122f6576122f6613ad3565b6020026020010181905250858160048151811061231557612315613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612370908490600401613b7b565b6000604051808303816000875af115801561238f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123d59190810190613c1b565b8060200190518101906123e89190613d90565b9450945094509450509193509193565b60008054610100900460ff16156124185750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156125535760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916124bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526124f591613e6a565b6000604051808303816000865af19150503d8060008114612532576040519150601f19603f3d011682016040523d82523d6000602084013e612537565b606091505b509150508080602001905181019061254f9190613e97565b9150505b919050565b6040805160098082526101408201909252600091829190816020015b60608152602001906001900390816125745790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106125d4576125d4613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061260b5761260b613ad3565b60200260200101819052506040518060400160405280600e81526020017f686173685769746864726177616c000000000000000000000000000000000000815250816002815181106102fa576102fa613ad3565b6040805160078082526101008201909252600091829190816020015b606081526020019060019003908161267b5790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106126db576126db613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061271257612712613ad3565b60200260200101819052506040518060400160405280601381526020017f686173684f7574707574526f6f7450726f6f66000000000000000000000000008152508160028151811061276657612766613ad3565b602090810291909101015261277a866132a3565b8160038151811061278d5761278d613ad3565b60209081029190910101526127a1856132a3565b816004815181106127b4576127b4613ad3565b60209081029190910101526127c8846132a3565b816005815181106127db576127db613ad3565b60209081029190910101526127ef836132a3565b8160068151811061280257612802613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612860908590600401613b7b565b6000604051808303816000875af115801561287f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526128c59190810190613c1b565b9050808060200190518101906128db9190613c50565b979650505050505050565b60408051600c8082526101a0820190925260609160009190816020015b60608152602001906001900390816129035790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061296357612963613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061299a5761299a613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f64654465706f7369745472616e73616374696f6e0000000000000000815250816002815181106129ee576129ee613ad3565b602090810291909101810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90612a2590860186613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612a8e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ad49190810190613b32565b81600381518110612ae757612ae7613ad3565b60200260200101819052507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166356ca623e846020016020810190612b449190613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612bad573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612bf39190810190613b32565b81600481518110612c0657612c06613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260608401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612c7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612cc39190810190613b32565b81600581518110612cd657612cd6613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260808401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612d939190810190613b32565b81600681518110612da657612da6613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d636900a3ae612ddb60c0860160a08701613ecf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612e7e9190810190613b32565b81600781518110612e9157612e91613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371dce7da612ec66060860160408701613eea565b6040518263ffffffff1660e01b8152600401612ee6911515815260200190565b600060405180830381865afa158015612f03573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f499190810190613b32565b81600881518110612f5c57612f5c613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371aad10d612f8e60c0860186613f07565b6040518363ffffffff1660e01b8152600401612fab929190613f73565b600060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261300e9190810190613b32565b8160098151811061302157613021613ad3565b60209081029190910101526040517fb11a19e800000000000000000000000000000000000000000000000000000000815260e08401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b11a19e890602401600060405180830381865afa158015613098573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526130de9190810190613b32565b81600a815181106130f1576130f1613ad3565b60209081029190910101526040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526101008401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015613169573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526131af9190810190613b32565b81600b815181106131c2576131c2613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790613220908590600401613b7b565b6000604051808303816000875af115801561323f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526132859190810190613c1b565b90508080602001905181019061329b9190613c1b565b949350505050565b6060816000036132e657505060408051808201909152600481527f3078303000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561330957806132fa81613fef565b915050600882901c91506132ea565b61329b84826060600061331d836002614027565b613328906002614064565b67ffffffffffffffff81111561334057613340613580565b6040519080825280601f01601f19166020018201604052801561336a576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133a1576133a1613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061340457613404613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613440846002614027565b61344b906001614064565b90505b60018111156134e8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061348c5761348c613ad3565b1a60f81b8282815181106134a2576134a2613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936134e18161407c565b905061344e565b508315613555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461255357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156135d2576135d2613580565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561361f5761361f613580565b604052919050565b600067ffffffffffffffff82111561364157613641613580565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600061368061367b84613627565b6135d8565b905082815283838301111561369457600080fd5b828260208301376000602084830101529392505050565b600082601f8301126136bc57600080fd5b6135558383356020850161366d565b60008060008060008060c087890312156136e457600080fd5b863595506136f46020880161355c565b94506137026040880161355c565b9350606087013592506080870135915060a087013567ffffffffffffffff81111561372c57600080fd5b61373889828a016136ab565b9150509295509295509295565b60006020828403121561375757600080fd5b813567ffffffffffffffff8082111561376f57600080fd5b9083019060c0828603121561378357600080fd5b61378b6135af565b8235815261379b6020840161355c565b60208201526137ac6040840161355c565b6040820152606083013560608201526080830135608082015260a0830135828111156137d757600080fd5b6137e3878286016136ab565b60a08301525095945050505050565b60005b8381101561380d5781810151838201526020016137f5565b8381111561381c576000848401525b50505050565b6000815180845261383a8160208601602086016137f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156138d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08684030189526138c3838351613822565b98840198925090830190600101613889565b5090979650505050505050565b85815284602082015283604082015282606082015260a0608082015260006128db60a083018461386c565b803567ffffffffffffffff8116811461255357600080fd5b600080600080600080600060e0888a03121561394057600080fd5b6139498861355c565b96506139576020890161355c565b955060408801359450606088013593506139736080890161390d565b925060a088013567ffffffffffffffff81111561398f57600080fd5b61399b8a828b016136ab565b92505060c0880135905092959891949750929550565b6020815260006135556020830184613822565b6000602082840312156139d657600080fd5b5035919050565b6000602082840312156139ef57600080fd5b813567ffffffffffffffff811115613a0657600080fd5b8201601f81018413613a1757600080fd5b61329b8482356020840161366d565b848152608060208201526000613a3f6080830186613822565b8281036040840152613a518186613822565b905082810360608401526128db818561386c565b60008060008060808587031215613a7b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215613aa957600080fd5b813567ffffffffffffffff811115613ac057600080fd5b8201610120818503121561355557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b1061367b84613627565b9050828152838383011115613b2457600080fd5b6135558360208301846137f2565b600060208284031215613b4457600080fd5b815167ffffffffffffffff811115613b5b57600080fd5b8201601f81018413613b6c57600080fd5b61329b84825160208401613b02565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613bee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613bdc858351613822565b94509285019290850190600101613ba2565b5092979650505050505050565b600082601f830112613c0c57600080fd5b61355583835160208501613b02565b600060208284031215613c2d57600080fd5b815167ffffffffffffffff811115613c4457600080fd5b61329b84828501613bfb565b600060208284031215613c6257600080fd5b5051919050565b600082601f830112613c7a57600080fd5b8151602067ffffffffffffffff80831115613c9757613c97613580565b8260051b613ca68382016135d8565b9384528581018301938381019088861115613cc057600080fd5b84880192505b85831015613cfc57825184811115613cde5760008081fd5b613cec8a87838c0101613bfb565b8352509184019190840190613cc6565b98975050505050505050565b600080600080600060a08688031215613d2057600080fd5b85519450602086015193506040860151925060608601519150608086015167ffffffffffffffff811115613d5357600080fd5b613d5f88828901613c69565b9150509295509295909350565b60008060408385031215613d7f57600080fd5b505080516020909101519092909150565b60008060008060808587031215613da657600080fd5b84519350602085015167ffffffffffffffff80821115613dc557600080fd5b613dd188838901613bfb565b94506040870151915080821115613de757600080fd5b613df388838901613bfb565b93506060870151915080821115613e0957600080fd5b50613e1687828801613c69565b91505092959194509250565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251613e5c8160048501602087016137f2565b919091016004019392505050565b60008251613e7c8184602087016137f2565b9190910192915050565b8015158114613e9457600080fd5b50565b600060208284031215613ea957600080fd5b815161355581613e86565b600060208284031215613ec657600080fd5b6135558261355c565b600060208284031215613ee157600080fd5b6135558261390d565b600060208284031215613efc57600080fd5b813561355581613e86565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f3c57600080fd5b83018035915067ffffffffffffffff821115613f5757600080fd5b602001915036819003821315613f6c57600080fd5b9250929050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361402057614020613fc0565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561405f5761405f613fc0565b500290565b6000821982111561407757614077613fc0565b500190565b60008161408b5761408b613fc0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe30783030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303067657450726f76655769746864726177616c5472616e73616374696f6e496e70757473646973742f736372697074732f646966666572656e7469616c2d74657374696e672e6a73a164736f6c634300080f000a6101606040523480156200001257600080fd5b506040516200188b3803806200188b833981016040819052620000359162000262565b6001608052600060a081905260c05260e08690526101008590526001600160a01b03808316610140528116610120526200007084846200007c565b505050505050620002bf565b600054610100900460ff16158080156200009d5750600054600160ff909116105b80620000cd5750620000ba306200023660201b620011031760201c565b158015620000cd575060005460ff166001145b620001365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200015a576000805461ff0019166101001790555b42821115620001e05760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201526374696d6560e01b608482015260a4016200012d565b60028290556001839055801562000231576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b80516001600160a01b03811681146200025d57600080fd5b919050565b60008060008060008060c087890312156200027c57600080fd5b86519550602087015194506040870151935060608701519250620002a36080880162000245565b9150620002b360a0880162000245565b90509295509295509295565b60805160a05160c05160e0516101005161012051610140516115556200033660003960008181610351015261090001526000818161021b015261074101526000818161013f0152610e3701526000818161019b0152610e85015260006104b40152600061048b0152600061046201526115556000f3fe6080604052600436106101285760003560e01c806388786272116100a5578063bffa7f0f11610074578063d1de856c11610059578063d1de856c14610393578063dcec3348146103b3578063e4a30116146103c857600080fd5b8063bffa7f0f1461033f578063cf8e5cf01461037357600080fd5b8063887862721461029857806389c44cbb146102ae5780639aaab648146102d0578063a25ae557146102e357600080fd5b806369f16eec116100fc5780636b4d98dd116100e15780636b4d98dd1461020957806370872aa5146102625780637f0064201461027857600080fd5b806369f16eec146101df5780636abcf563146101f457600080fd5b80622134cc1461012d5780634599c78814610174578063529933df1461018957806354fd4d50146101bd575b600080fd5b34801561013957600080fd5b506101617f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561018057600080fd5b506101616103e8565b34801561019557600080fd5b506101617f000000000000000000000000000000000000000000000000000000000000000081565b3480156101c957600080fd5b506101d261045b565b60405161016b919061128c565b3480156101eb57600080fd5b506101616104fe565b34801561020057600080fd5b50600354610161565b34801561021557600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b34801561026e57600080fd5b5061016160015481565b34801561028457600080fd5b506101616102933660046112dd565b610510565b3480156102a457600080fd5b5061016160025481565b3480156102ba57600080fd5b506102ce6102c93660046112dd565b610729565b005b6102ce6102de3660046112f6565b6108e8565b3480156102ef57600080fd5b506103036102fe3660046112dd565b610d67565b60408051825181526020808401516fffffffffffffffffffffffffffffffff90811691830191909152928201519092169082015260600161016b565b34801561034b57600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037f57600080fd5b5061030361038e3660046112dd565b610dfb565b34801561039f57600080fd5b506101616103ae3660046112dd565b610e33565b3480156103bf57600080fd5b50610161610e81565b3480156103d457600080fd5b506102ce6103e3366004611328565b610eb6565b60035460009015610452576003805461040390600190611379565b8154811061041357610413611390565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b60606104867f000000000000000000000000000000000000000000000000000000000000000061111f565b6104af7f000000000000000000000000000000000000000000000000000000000000000061111f565b6104d87f000000000000000000000000000000000000000000000000000000000000000061111f565b6040516020016104ea939291906113bf565b604051602081830303815290604052905090565b60035460009061045690600190611379565b600061051a6103e8565b8211156105d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f70726f706f736564000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b600354610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f6564207965740000000000000000000000000000000000000000000000000000608482015260a4016105cb565b6003546000905b8082101561072257600060026106a68385611435565b6106b0919061147c565b905084600382815481106106c6576106c6611390565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561071857610711816001611435565b925061071c565b8091505b50610690565b5092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f757470757473000060648201526084016105cb565b60035481106108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f6465780000000000000000000000000000000000000000000000000000000000608482015260a4016105cb565b60006108b060035490565b90508160035581817f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b660405160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a4016105cb565b6109db610e81565b8314610a8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a4016105cb565b42610a9984610e33565b10610b26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e20746865206675747572650000000000000000000060648201526084016105cb565b83610bb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f206861736800000000000060648201526084016105cb565b8115610c6f5781814014610c6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a4016105cb565b42610c7960035490565b857fa7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e286604051610cab91815260200190565b60405180910390a45050604080516060810182529283526fffffffffffffffffffffffffffffffff4281166020850190815292811691840191825260038054600181018255600091909152935160029094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810194909455915190518216700100000000000000000000000000000000029116177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c90910155565b604080516060810182526000808252602082018190529181019190915260038281548110610d9757610d97611390565b600091825260209182902060408051606081018252600290930290910180548352600101546fffffffffffffffffffffffffffffffff8082169484019490945270010000000000000000000000000000000090049092169181019190915292915050565b60408051606081018252600080825260208201819052918101919091526003610e2383610510565b81548110610d9757610d97611390565b60007f000000000000000000000000000000000000000000000000000000000000000060015483610e649190611379565b610e6e9190611490565b600254610e7b9190611435565b92915050565b60007f0000000000000000000000000000000000000000000000000000000000000000610eac6103e8565b6104569190611435565b600054610100900460ff1615808015610ed65750600054600160ff909116105b80610ef05750303b158015610ef0575060005460ff166001145b610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105cb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fda57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b42821115611091576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a4016105cb565b6002829055600183905580156110fe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60608160000361116257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561118c5780611176816114cd565b91506111859050600a8361147c565b9150611166565b60008167ffffffffffffffff8111156111a7576111a7611505565b6040519080825280601f01601f1916602001820160405280156111d1576020820181803683370190505b5090505b8415611254576111e6600183611379565b91506111f3600a86611534565b6111fe906030611435565b60f81b81838151811061121357611213611390565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061124d600a8661147c565b94506111d5565b949350505050565b60005b8381101561127757818101518382015260200161125f565b83811115611286576000848401525b50505050565b60208152600082518060208401526112ab81604085016020870161125c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000602082840312156112ef57600080fd5b5035919050565b6000806000806080858703121561130c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561133b57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561138b5761138b61134a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600084516113d181846020890161125c565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161140d816001850160208a0161125c565b6001920191820152835161142881600284016020880161125c565b0160020195945050505050565b600082198211156114485761144861134a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261148b5761148b61144d565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156114c8576114c861134a565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114fe576114fe61134a565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000826115435761154361144d565b50069056fea164736f6c634300080f000a608060405234801561001057600080fd5b5060405161091838038061091883398101604081905261002f916100b2565b6100388161003e565b506100e2565b60006100566000805160206108f88339815191525490565b6000805160206108f8833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6000602082840312156100c457600080fd5b81516001600160a01b03811681146100db57600080fd5b9392505050565b610807806100f16000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360e060405234801561001057600080fd5b5060016080819052600060a081905260c081905280610a2061004a82396000610403015260006103da015260006103b10152610a206000f3fe6080604052600436106100695760003560e01c806382e3702d1161004357806382e3702d146100f6578063c2b3e5ac14610136578063ecc704281461014957600080fd5b80633f827a5a1461009257806344df8e70146100bf57806354fd4d50146100d457600080fd5b3661008d5761008b33620186a0604051806020016040528060008152506101ae565b005b600080fd5b34801561009e57600080fd5b506100a7600181565b60405161ffff90911681526020015b60405180910390f35b3480156100cb57600080fd5b5061008b610372565b3480156100e057600080fd5b506100e96103aa565b6040516100b6919061068c565b34801561010257600080fd5b506101266101113660046106a6565b60006020819052908152604090205460ff1681565b60405190151581526020016100b6565b61008b6101443660046106ee565b6101ae565b34801561015557600080fd5b506101a06001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016100b6565b60006102446040518060c001604052806102086001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b815233602082015273ffffffffffffffffffffffffffffffffffffffff871660408201523460608201526080810186905260a00184905261044d565b600081815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055905073ffffffffffffffffffffffffffffffffffffffff8416336102df6001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b7f02a52367d10742d8032712c1bb8e0144ff1ec5ffda1ed7d70bb05a27449550543487878760405161031494939291906107f2565b60405180910390a45050600180547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082168301167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b4761037c8161049a565b60405181907f7967de617a5ac1cc7eba2d6f37570a0135afa950d8bb77cdd35f0d0b4e85a16f90600090a250565b60606103d57f00000000000000000000000000000000000000000000000000000000000000006104c9565b6103fe7f00000000000000000000000000000000000000000000000000000000000000006104c9565b6104277f00000000000000000000000000000000000000000000000000000000000000006104c9565b60405160200161043993929190610822565b604051602081830303815290604052905090565b80516020808301516040808501516060860151608087015160a0880151935160009761047d979096959101610898565b604051602081830303815290604052805190602001209050919050565b806040516104a790610606565b6040518091039082f09050801580156104c4573d6000803e3d6000fd5b505050565b60608160000361050c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561053657806105208161091e565b915061052f9050600a83610985565b9150610510565b60008167ffffffffffffffff811115610551576105516106bf565b6040519080825280601f01601f19166020018201604052801561057b576020820181803683370190505b5090505b84156105fe57610590600183610999565b915061059d600a866109b0565b6105a89060306109c4565b60f81b8183815181106105bd576105bd6109dc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506105f7600a86610985565b945061057f565b949350505050565b600880610a0c83390190565b60005b8381101561062d578181015183820152602001610615565b8381111561063c576000848401525b50505050565b6000815180845261065a816020860160208601610612565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069f6020830184610642565b9392505050565b6000602082840312156106b857600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561070357600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461072757600080fd5b925060208401359150604084013567ffffffffffffffff8082111561074b57600080fd5b818601915086601f83011261075f57600080fd5b813581811115610771576107716106bf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156107b7576107b76106bf565b816040528281528960208487010111156107d057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b8481528360208201526080604082015260006108116080830185610642565b905082606083015295945050505050565b60008451610834818460208901610612565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551610870816001850160208a01610612565b6001920191820152835161088b816002840160208801610612565b0160020195945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526108e360c0830184610642565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361094f5761094f6108ef565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261099457610994610956565b500490565b6000828210156109ab576109ab6108ef565b500390565b6000826109bf576109bf610956565b500690565b600082198211156109d7576109d76108ef565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfe608060405230fffea164736f6c634300080f000aa164736f6c634300080f000a0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001e95760003560e01c80638ad84517116200010d578063c622f42e11620000a3578063f7afa812116200007a578063f7afa8121462000301578063fa7626d4146200030b578063fd28d58e1462000319578063ffee9e30146200032357600080fd5b8063c622f42e14620002e3578063d867dbc614620002ed578063efb4185014620002f757600080fd5b80639d27956611620000e45780639d279566146200029a578063b75d948714620002a4578063ba414fa614620002ae578063bcfceff214620002cc57600080fd5b80638ad84517146200027c5780638b40544a1462000286578063993b4d9b146200029057600080fd5b80634eda2c9e11620001835780635ba201e4116200015a5780635ba201e41462000254578063662842fa146200025e5780637880325f146200026857806380aee254146200027257600080fd5b80634eda2c9e1462000236578063551f2e921462000240578063569674ae146200024a57600080fd5b806337560e9911620001c457806337560e99146200020e5780633e1a9579146200021857806341e166de1462000222578063425103a1146200022c57600080fd5b80630a9254e414620001ee5780630e593cd714620001fa5780632fbcc66c1462000204575b600080fd5b620001f86200032d565b005b620001f862000339565b620001f862000530565b620001f8620007ae565b620001f862000a3c565b620001f862001499565b620001f86200175a565b620001f862001ade565b620001f8620020d9565b620001f862002497565b620001f862002846565b620001f862002d86565b620001f862003008565b620001f8620034ed565b620001f8620038b6565b620001f862003b9f565b620001f862003e15565b620001f862003fb7565b620001f862004146565b620002b862004313565b604051901515815260200160405180910390f35b620001f8620002dd3660046200633c565b6200447d565b620001f86200453c565b620001f862004a6c565b620001f862004deb565b620001f862004fae565b600054620002b89060ff1681565b620001f862005211565b620001f8620054c9565b6200033762005782565b565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa158015620003aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d0919062006356565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f75747075747300006064820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390608401600060405180830381600087803b1580156200048d57600080fd5b505af1158015620004a2573d6000803e3d6000fd5b50506019546040517f89c44cbb0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff90911692506389c44cbb91506024015b600060405180830381600087803b1580156200051457600080fd5b505af115801562000529573d6000803e3d6000fd5b5050505050565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa158015620005a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c7919062006356565b9050620005d4816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200065457600080fd5b505af115801562000669573d6000803e3d6000fd5b50506019546023546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b158015620006f357600080fd5b505af115801562000708573d6000803e3d6000fd5b50505050620007ab601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200077e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a4919062006356565b8262005e43565b50565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa1580156200081f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000845919062006356565b905062000852816200447d565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815260806004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620008b957600080fd5b505af1158015620008ce573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f73000000000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620009b257600080fd5b505af1158015620009c7573d6000803e3d6000fd5b50506019546016546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401620004f9565b604080516001602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562000af0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b16919062006356565b905062000b23816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000ba357600080fd5b505af115801562000bb8573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b15801562000c3e57600080fd5b505af115801562000c53573d6000803e3d6000fd5b5050604080516002602082015260009350019050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562000d0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d32919062006356565b905062000d3f816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000dbf57600080fd5b505af115801562000dd4573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b15801562000e5a57600080fd5b505af115801562000e6f573d6000803e3d6000fd5b5050604080516003602082015260009350019050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562000f28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f4e919062006356565b905062000f5b816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000fdb57600080fd5b505af115801562000ff0573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200107657600080fd5b505af11580156200108b573d6000803e3d6000fd5b5050604080516004602082015260009350019050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562001144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200116a919062006356565b905062001177816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620011f757600080fd5b505af11580156200120c573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200129257600080fd5b505af1158015620012a7573d6000803e3d6000fd5b50506019546000925073ffffffffffffffffffffffffffffffffffffffff169050637f006420620012da8a60016200639f565b6040518263ffffffff1660e01b8152600401620012f991815260200190565b602060405180830381865afa15801562001317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133d919062006356565b90506200134c81600162005e43565b60195460009073ffffffffffffffffffffffffffffffffffffffff16637f0064206200137a8960016200639f565b6040518263ffffffff1660e01b81526004016200139991815260200190565b602060405180830381865afa158015620013b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013dd919062006356565b9050620013ec81600262005e43565b60195460009073ffffffffffffffffffffffffffffffffffffffff16637f0064206200141a8860016200639f565b6040518263ffffffff1660e01b81526004016200143991815260200190565b602060405180830381865afa15801562001457573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147d919062006356565b90506200148c81600362005e43565b5050505050505050505050565b604080516001602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa1580156200154d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001573919062006356565b905062001580816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200160057600080fd5b505af115801562001615573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200169b57600080fd5b505af1158015620016b0573d6000803e3d6000fd5b50506019546000925073ffffffffffffffffffffffffffffffffffffffff169050637f006420620016e3600185620063ba565b6040518263ffffffff1660e01b81526004016200170291815260200190565b602060405180830381865afa15801562001720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001746919062006356565b90506200175581600062005e43565b505050565b6040517f1f7b4f3000000000000000000000000000000000000000000000000000000000815260646004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b158015620017c157600080fd5b505af1158015620017d6573d6000803e3d6000fd5b505050506000600143620017eb9190620063ba565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905192935083409260009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562001862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001888919062006356565b905062001895816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200191557600080fd5b505af11580156200192a573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f65642068656967687400000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b15801562001a0e57600080fd5b505af115801562001a23573d6000803e3d6000fd5b505060195460165473ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150838562001a5b600189620063ba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815260048101949094526024840192909252604483015260648201526084015b600060405180830381600087803b15801562001ac057600080fd5b505af115801562001ad5573d6000803e3d6000fd5b50505050505050565b62001ae8620038b6565b62001af2620038b6565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa15801562001b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b89919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bfb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c21919062006356565b60195490915060009073ffffffffffffffffffffffffffffffffffffffff1663a25ae55762001c52600185620063ba565b6040518263ffffffff1660e01b815260040162001c7191815260200190565b606060405180830381865afa15801562001c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb5919062006424565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d3857600080fd5b505af115801562001d4d573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201526000604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562001dcd57600080fd5b505af115801562001de2573d6000803e3d6000fd5b505050508182600162001df691906200639f565b6040517f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b690600090a36019546040517f89c44cbb0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906389c44cbb90602401600060405180830381600087803b15801562001e8c57600080fd5b505af115801562001ea1573d6000803e3d6000fd5b505050506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f3b919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001fad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd3919062006356565b905062001ff0601e548662001fe99190620063ba565b8362005e43565b6019546040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810183905260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801562002061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002087919062006424565b84518151919250620020999162005f55565b620020d184602001516fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff1662005e43565b505050505050565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa1580156200214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002170919062006356565b6019546040517fd1de856c0000000000000000000000000000000000000000000000000000000081526004810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063d1de856c90602401602060405180830381865afa158015620021e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200220c919062006356565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200227657600080fd5b505af11580156200228b573d6000803e3d6000fd5b5050601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200230f57600080fd5b505af115801562002324573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e2074686520667574757265000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b158015620023e257600080fd5b505af1158015620023f7573d6000803e3d6000fd5b50506019546016546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101869052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab64891506084015b600060405180830381600087803b1580156200248257600080fd5b505af1158015620020d1573d6000803e3d6000fd5b620024a1620038b6565b620024ab620038b6565b620024b5620038b6565b601954604080517f69f16eec000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916369f16eec9160048083019260209291908290030181865afa15801562002526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254c919062006356565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620025cf57600080fd5b505af1158015620025e4573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff1691506389c44cbb905062002615600284620063ba565b6040518263ffffffff1660e01b81526004016200263491815260200190565b600060405180830381600087803b1580156200264f57600080fd5b505af115801562002664573d6000803e3d6000fd5b5050601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620026e857600080fd5b505af1158015620026fd573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f64657800000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620027e157600080fd5b505af1158015620027f6573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff1691506389c44cbb905062002827600284620063ba565b6040518263ffffffff1660e01b8152600401620004f991815260200190565b6013546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620028cf57600080fd5b505af1158015620028e4573d6000803e3d6000fd5b50506014546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200297157600080fd5b505af115801562002986573d6000803e3d6000fd5b50506015546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562002a1357600080fd5b505af115801562002a28573d6000803e3d6000fd5b5050601354604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600560448201527f616c6963650000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002adf57600080fd5b505af115801562002af4573d6000803e3d6000fd5b5050601454604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600360448201527f626f6200000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002bab57600080fd5b505af115801562002bc0573d6000803e3d6000fd5b5050601554604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600860448201527f6d756c74697369670000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002c7757600080fd5b505af115801562002c8c573d6000803e3d6000fd5b50506040517f39b37ab0000000000000000000000000000000000000000000000000000000008152633b9aca006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506339b37ab09150602401600060405180830381600087803b15801562002cfa57600080fd5b505af115801562002d0f573d6000803e3d6000fd5b5050505060405162002d219062006304565b604051809103906000f08015801562002d3e573d6000803e3d6000fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b601954604080517fdcec33480000000000000000000000000000000000000000000000000000000081529051600092839273ffffffffffffffffffffffffffffffffffffffff9091169163dcec3348916004808201926020929091908290030181865afa15801562002dfc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e22919062006356565b905062002e2f816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002eaf57600080fd5b505af115801562002ec4573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f20686173680000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b15801562002f8257600080fd5b505af115801562002f97573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915060840162002467565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562003079573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200309f919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636abcf5636040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003137919062006356565b905062003144826200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620031c457600080fd5b505af1158015620031d9573d6000803e3d6000fd5b50506019546023546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101869052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b1580156200326357600080fd5b505af115801562003278573d6000803e3d6000fd5b50506019546040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000935073ffffffffffffffffffffffffffffffffffffffff909116915063a25ae55790602401606060405180830381865afa158015620032ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003315919062006424565b905062003329816000015160235462005f55565b6200334b81602001516fffffffffffffffffffffffffffffffff164262005e43565b60405160326024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b71000000000000000000000000000000000000000000000000000000001790525160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526200342391906004016200650c565b600060405180830381600087803b1580156200343e57600080fd5b505af115801562003453573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff16915063a25ae5579050620034848460016200639f565b6040518263ffffffff1660e01b8152600401620034a391815260200190565b606060405180830381865afa158015620034c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034e7919062006424565b50505050565b601954604080517fbffa7f0f0000000000000000000000000000000000000000000000000000000081529051620035a59273ffffffffffffffffffffffffffffffffffffffff169163bffa7f0f9160048083019260209291908290030181865afa15801562003560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003586919062006528565b601c5473ffffffffffffffffffffffffffffffffffffffff1662006055565b601954604080517f6b4d98dd00000000000000000000000000000000000000000000000000000000815290516200365d9273ffffffffffffffffffffffffffffffffffffffff1691636b4d98dd9160048083019260209291908290030181865afa15801562003618573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200363e919062006528565b601d5473ffffffffffffffffffffffffffffffffffffffff1662006055565b601954604080517f529933df0000000000000000000000000000000000000000000000000000000081529051620036ff9273ffffffffffffffffffffffffffffffffffffffff169163529933df9160048083019260209291908290030181865afa158015620036d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f6919062006356565b601e5462005e43565b601954604080517f4599c7880000000000000000000000000000000000000000000000000000000081529051620037a19273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa15801562003772573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003798919062006356565b60205462005e43565b601954604080517f70872aa50000000000000000000000000000000000000000000000000000000081529051620038149273ffffffffffffffffffffffffffffffffffffffff16916370872aa59160048083019260209291908290030181865afa15801562003772573d6000803e3d6000fd5b601954604080517f887862720000000000000000000000000000000000000000000000000000000081529051620003379273ffffffffffffffffffffffffffffffffffffffff169163887862729160048083019260209291908290030181865afa15801562003887573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038ad919062006356565b60215462005e43565b6040805160008082526020808301808552835181206019547fdcec3348000000000000000000000000000000000000000000000000000000009092529451929373ffffffffffffffffffffffffffffffffffffffff9091169263dcec3348926024808401939192918290030181865afa15801562003938573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395e919062006356565b90506200396b816200447d565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa158015620039dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a02919062006356565b905062003a1f82601e548362003a1991906200639f565b62005e43565b737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f3062003a468460016200639f565b6040518263ffffffff1660e01b815260040162003a6591815260200190565b600060405180830381600087803b15801562003a8057600080fd5b505af115801562003a95573d6000803e3d6000fd5b5050601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562003b1957600080fd5b505af115801562003b2e573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810187905260248101869052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915060840162001aa5565b604080516001602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206019547fdcec3348000000000000000000000000000000000000000000000000000000008552925190945060009373ffffffffffffffffffffffffffffffffffffffff9093169263dcec33489260048083019391928290030181865afa15801562003c53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c79919062006356565b905062003c86816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003d0657600080fd5b505af115801562003d1b573d6000803e3d6000fd5b50506019546040517f9aaab6480000000000000000000000000000000000000000000000000000000081526004810186905260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150608401600060405180830381600087803b15801562003da157600080fd5b505af115801562003db6573d6000803e3d6000fd5b50506019546040517f7f006420000000000000000000000000000000000000000000000000000000008152600481018590526000935073ffffffffffffffffffffffffffffffffffffffff9091169150637f0064209060240162001702565b6040517ff28dceb3000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d65000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39060a401600060405180830381600087803b15801562003ef657600080fd5b505af115801562003f0b573d6000803e3d6000fd5b50505050601e54601f5460205442600162003f2791906200639f565b601c54601d5460405173ffffffffffffffffffffffffffffffffffffffff928316929091169062003f589062006312565b95865260208601949094526040850192909252606084015273ffffffffffffffffffffffffffffffffffffffff90811660808401521660a082015260c001604051809103906000f08015801562003fb3573d6000803e3d6000fd5b5050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f65642079657400000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39060a401600060405180830381600087803b1580156200409757600080fd5b505af1158015620040ac573d6000803e3d6000fd5b50506019546040517f7f0064200000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250637f0064209150602401602060405180830381865afa15801562004120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ab919062006356565b601954604080517fdcec33480000000000000000000000000000000000000000000000000000000081529051620003379273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa158015620041b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041df919062006356565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200424d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004273919062006356565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa158015620042e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004307919062006356565b62003a1991906200639f565b60008054610100900460ff1615620043345750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620044785760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620043dc917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006560565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200441691620065aa565b6000604051808303816000865af19150503d806000811462004455576040519150601f19603f3d011682016040523d82523d6000602084013e6200445a565b606091505b5091505080806020019051810190620044749190620065c8565b9150505b919050565b6019546040517fd1de856c00000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029173ffffffffffffffffffffffffffffffffffffffff9091169063d1de856c90602401602060405180830381865afa15801562004509573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200452f919062006356565b620028279060016200639f565b62004546620038b6565b62004550620038b6565b6200455a620038b6565b62004564620038b6565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa158015620045d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045fb919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200466d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004693919062006356565b60195490915060009073ffffffffffffffffffffffffffffffffffffffff1663a25ae557620046c4600385620063ba565b6040518263ffffffff1660e01b8152600401620046e391815260200190565b606060405180830381865afa15801562004701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004727919062006424565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620047aa57600080fd5b505af1158015620047bf573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201526000604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200483f57600080fd5b505af115801562004854573d6000803e3d6000fd5b50505050600282620048679190620063ba565b620048748360016200639f565b6040517f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b690600090a360195473ffffffffffffffffffffffffffffffffffffffff166389c44cbb620048c8600285620063ba565b6040518263ffffffff1660e01b8152600401620048e791815260200190565b600060405180830381600087803b1580156200490257600080fd5b505af115801562004917573d6000803e3d6000fd5b505050506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634599c7886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200498b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049b1919062006356565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369f16eec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004a23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a49919062006356565b905062001ff0601e54600362004a609190620065ec565b62001fe99087620063ba565b60405160116024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b71000000000000000000000000000000000000000000000000000000001790525160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815262004b4491906004016200650c565b600060405180830381600087803b15801562004b5f57600080fd5b505af115801562004b74573d6000803e3d6000fd5b505060195460205473ffffffffffffffffffffffffffffffffffffffff909116925063d1de856c915062004bab90600190620063ba565b6040518263ffffffff1660e01b815260040162004bca91815260200190565b602060405180830381865afa15801562004be8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c0e919062006356565b506019546020546040517fd1de856c000000000000000000000000000000000000000000000000000000008152600481019190915262004c869173ffffffffffffffffffffffffffffffffffffffff169063d1de856c90602401602060405180830381865afa15801562003887573d6000803e3d6000fd5b60195460205462004d309173ffffffffffffffffffffffffffffffffffffffff169063d1de856c9062004cbb9060016200639f565b6040518263ffffffff1660e01b815260040162004cda91815260200190565b602060405180830381865afa15801562004cf8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d1e919062006356565b601f5460215462003a1991906200639f565b601954602054620003379173ffffffffffffffffffffffffffffffffffffffff169063d1de856c9062004d6790620177186200639f565b6040518263ffffffff1660e01b815260040162004d8691815260200190565b602060405180830381865afa15801562004da4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004dca919062006356565b601f5462004ddc9062017718620065ec565b60215462003a1991906200639f565b600062004dfa600143620063ba565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905192935083409260009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562004e71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e97919062006356565b905062004ea4816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562004f2457600080fd5b505af115801562004f39573d6000803e3d6000fd5b50506019546016546040517f9aaab648000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052604481018690526064810187905273ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915060840162001aa5565b62004fb8620038b6565b601954604080517f4599c788000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634599c7889160048083019260209291908290030181865afa15801562005029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200504f919062006356565b601d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620050d257600080fd5b505af1158015620050e7573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f64657800000000000000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620051cb57600080fd5b505af1158015620051e0573d6000803e3d6000fd5b505060195473ffffffffffffffffffffffffffffffffffffffff1691506389c44cbb9050620028278360016200639f565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa15801562005282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052a8919062006356565b9050620052b5816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200533557600080fd5b505af11580156200534a573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d6265720000000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b1580156200542e57600080fd5b505af115801562005443573d6000803e3d6000fd5b505060195460165473ffffffffffffffffffffffffffffffffffffffff9091169250639aaab648915062005479600185620063ba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526000604482018190526064820152608401620004f9565b601954604080517fdcec3348000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163dcec33489160048083019260209291908290030181865afa1580156200553a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005560919062006356565b90506200556d816200447d565b601c546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620055ed57600080fd5b505af115801562005602573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f65642068656967687400000000000000000000000000000000000000000000006084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060a401600060405180830381600087803b158015620056e657600080fd5b505af1158015620056fb573d6000803e3d6000fd5b505060195460165473ffffffffffffffffffffffffffffffffffffffff9091169250639aaab6489150836001620057338143620063ba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526004810194909452602484019290925260448301526064820152608401620004f9565b6200578c62002846565b6021546200579c9060016200639f565b60228190556040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200580957600080fd5b505af11580156200581e573d6000803e3d6000fd5b50506020546040517f1f7b4f300000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250631f7b4f309150602401600060405180830381600087803b1580156200588d57600080fd5b505af1158015620058a2573d6000803e3d6000fd5b5050601e54601f54602054602154601c54601d546040519597509395509193909273ffffffffffffffffffffffffffffffffffffffff928316921690620058e99062006312565b95865260208601949094526040850192909252606084015273ffffffffffffffffffffffffffffffffffffffff90811660808401521660a082015260c001604051809103906000f08015801562005944573d6000803e3d6000fd5b50601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560155460405160009291909116906200599f9062006320565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015620059d9573d6000803e3d6000fd5b506015546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562005a5d57600080fd5b505af115801562005a72573d6000803e3d6000fd5b5050601a546020546021546040516024810192909252604482015273ffffffffffffffffffffffffffffffffffffffff8581169450634f1ef286935090911690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe4a3011600000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815262005b659291906004016200662c565b6000604051808303816000875af115801562005b85573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262005bcd919081019062006665565b50601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517fc657c71800000000000000000000000000000000000000000000000000000000815260048101929092526024820152600e60448201527f4c324f75747075744f7261636c650000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b15801562005cac57600080fd5b505af115801562005cc1573d6000803e3d6000fd5b5050604051737109709ecfa91a80626ff3989d68f67f5b1dd12d925063b4d6c78291507342000000000000000000000000000000000000169062005d05906200632e565b604051809103906000f08015801562005d22573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162005d749291906200662c565b600060405180830381600087803b15801562005d8f57600080fd5b505af115801562005da4573d6000803e3d6000fd5b5050604080517fc657c71800000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000001660048201526024810191909152601360448201527f4c32546f4c314d657373616765506173736572000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401620004f9565b80821462003fb3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162005ed19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162005f0a91906200673c565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162005f43919062006788565b60405180910390a162003fb362006181565b80821462003fb3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162005fe39060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99816040516200601c91906200673c565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162005f43919062006788565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462003fb3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200610f9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620061489190620067c6565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162005f43919062006828565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620062d65760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262006253929160200162006560565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200628d91620065aa565b6000604051808303816000865af19150503d8060008114620062cc576040519150601f19603f3d011682016040523d82523d6000602084013e620062d1565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b614174806200686783390190565b61188b806200a9db83390190565b610918806200c26683390190565b610a6a806200cb7e83390190565b6000602082840312156200634f57600080fd5b5035919050565b6000602082840312156200636957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115620063b557620063b562006370565b500190565b600082821015620063cf57620063cf62006370565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146200447857600080fd5b6000606082840312156200643757600080fd5b6040516060810181811067ffffffffffffffff821117156200645d576200645d620063d4565b60405282518152620064726020840162006403565b6020820152620064856040840162006403565b60408201529392505050565b60005b83811015620064ae57818101518382015260200162006494565b83811115620034e75750506000910152565b60008151808452620064da81602086016020860162006491565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000620065216020830184620064c0565b9392505050565b6000602082840312156200653b57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146200652157600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200659c81600485016020870162006491565b919091016004019392505050565b60008251620065be81846020870162006491565b9190910192915050565b600060208284031215620065db57600080fd5b815180151581146200652157600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562006627576200662762006370565b500290565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006200665d6040830184620064c0565b949350505050565b6000602082840312156200667857600080fd5b815167ffffffffffffffff808211156200669157600080fd5b818401915084601f830112620066a657600080fd5b815181811115620066bb57620066bb620063d4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715620067045762006704620063d4565b816040528281528760208487010111156200671e57600080fd5b6200673183602083016020880162006491565b979650505050505050565b6040815260006200677a60408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200677a60408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b6040815260006200680460408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b6040815260006200680460408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe60806040526000805460ff1916600117905534801561001d57600080fd5b506141478061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100c85760003560e01c80637e577a1b11610081578063dcf5edef1161005b578063dcf5edef146101c0578063fa7626d4146101d3578063fc677392146101e057600080fd5b80637e577a1b14610172578063ba414fa614610195578063c21e8865146101ad57600080fd5b806335337aab116100b257806335337aab14610117578063498a3c021461012a578063526dc9551461014a57600080fd5b8062ec31a6146100cd5780631aac97c1146100f3575b600080fd5b6100e06100db3660046136cb565b6101f3565b6040519081526020015b60405180910390f35b610106610101366004613745565b6108dc565b6040516100ea9594939291906138e2565b6100e0610125366004613925565b610fed565b61013d6101383660046136cb565b6117e4565b6040516100ea91906139b1565b61015d6101583660046139c4565b611ec1565b604080519283526020830191909152016100ea565b6101856101803660046139dd565b612179565b6040516100ea9493929190613a26565b61019d6123f8565b60405190151581526020016100ea565b6100e06101bb3660046136cb565b612558565b6100e06101ce366004613a65565b61265f565b60005461019d9060ff1681565b61013d6101ee366004613a97565b6128e6565b6040805160098082526101408201909252600091829190816020015b606081526020019060019003908161020f5790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061026f5761026f613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106102a6576102a6613ad3565b60200260200101819052506040518060400160405280601681526020017f6861736843726f7373446f6d61696e4d65737361676500000000000000000000815250816002815181106102fa576102fa613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561036e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103b49190810190613b32565b816003815181106103c7576103c7613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610450573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104969190810190613b32565b816004815181106104a9576104a9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610532573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105789190810190613b32565b8160058151811061058b5761058b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106459190810190613b32565b8160068151811061065857610658613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107129190810190613b32565b8160078151811061072557610725613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906107809086906004016139b1565b600060405180830381865afa15801561079d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107e39190810190613b32565b816008815181106107f6576107f6613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610854908590600401613b7b565b6000604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108b99190810190613c1b565b9050808060200190518101906108cf9190613c50565b9998505050505050505050565b6000808080606081600960405190808252806020026020018201604052801561091957816020015b60608152602001906001900390816109045790505b5090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061096557610965613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061099c5761099c613ad3565b60200260200101819052506040518060600160405280602381526020016140f460239139816002815181106109d3576109d3613ad3565b602090810291909101015286516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610a4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a909190810190613b32565b81600381518110610aa357610aa3613ad3565b6020908102919091018101919091528701516040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b7a9190810190613b32565b81600481518110610b8d57610b8d613ad3565b602090810291909101015260408781015190517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c629190810190613b32565b81600581518110610c7557610c75613ad3565b602090810291909101015260608701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d359190810190613b32565b81600681518110610d4857610d48613ad3565b602090810291909101015260808701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610dc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e089190810190613b32565b81600781518110610e1b57610e1b613ad3565b602090810291909101015260a08701516040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d916371aad10d91610e7a91906004016139b1565b600060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610edd9190810190613b32565b81600881518110610ef057610ef0613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610f4e908590600401613b7b565b6000604051808303816000875af1158015610f6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb39190810190613c1b565b9050600080600080600085806020019051810190610fd19190613d08565b939f50919d509b50995097505050505050505091939590929450565b60408051600b8082526101808201909252600091829190816020015b60608152602001906001900390816110095790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061106957611069613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106110a0576110a0613ad3565b60200260200101819052506040518060400160405280601681526020017f686173684465706f7369745472616e73616374696f6e00000000000000000000815250816002815181106110f4576110f4613ad3565b60200260200101819052506040518060800160405280604281526020016140b2604291398160038151811061112b5761112b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561119f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111e59190810190613b32565b816004815181106111f8576111f8613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112c79190810190613b32565b816005815181106112da576112da613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113a99190810190613b32565b816006815181106113bc576113bc613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611430573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114769190810190613b32565b8160078151811061148957611489613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115439190810190613b32565b8160088151811061155657611556613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff86166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613b32565b8160098151811061162c5761162c613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906116879087906004016139b1565b600060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116ea9190810190613b32565b81600a815181106116fd576116fd613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061175b908590600401613b7b565b6000604051808303816000875af115801561177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526117c09190810190613c1b565b9050808060200190518101906117d69190613c50565b9a9950505050505050505050565b604080516009808252610140820190925260609160009190816020015b60608152602001906001900390816118015790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061186157611861613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061189857611898613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f646543726f7373446f6d61696e4d6573736167650000000000000000815250816002815181106118ec576118ec613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611960573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119a69190810190613b32565b816003815181106119b9576119b9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611a889190810190613b32565b81600481518110611a9b57611a9b613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611b24573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b6a9190810190613b32565b81600581518110611b7d57611b7d613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611bf1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c379190810190613b32565b81600681518110611c4a57611c4a613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611cbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d049190810190613b32565b81600781518110611d1757611d17613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d90611d729086906004016139b1565b600060405180830381865afa158015611d8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611dd59190810190613b32565b81600881518110611de857611de8613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790611e46908590600401613b7b565b6000604051808303816000875af1158015611e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611eab9190810190613c1b565b9050808060200190518101906108cf9190613c1b565b60408051600480825260a0820190925260009182918291816020015b6060815260200190600190039081611edd5790505090506040518060400160405280600481526020017f6e6f64650000000000000000000000000000000000000000000000000000000081525081600081518110611f3d57611f3d613ad3565b60200260200101819052506040518060600160405280602481526020016141176024913981600181518110611f7457611f74613ad3565b60200260200101819052506040518060400160405280601481526020017f6465636f646556657273696f6e65644e6f6e636500000000000000000000000081525081600281518110611fc857611fc8613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561203c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120829190810190613b32565b8160038151811061209557612095613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906120f3908590600401613b7b565b6000604051808303816000875af1158015612112573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121589190810190613c1b565b90508080602001905181019061216e9190613d6c565b935093505050915091565b60408051600580825260c08201909252600091606091829182918591816020015b606081526020019060019003908161219a5790505090506040518060400160405280601a81526020017f2e2f746573742d636173652d67656e657261746f722f66757a7a000000000000815250816000815181106121fa576121fa613ad3565b60200260200101819052506040518060400160405280600281526020017f2d6d0000000000000000000000000000000000000000000000000000000000008152508160018151811061224e5761224e613ad3565b60200260200101819052506040518060400160405280600481526020017f7472696500000000000000000000000000000000000000000000000000000000815250816002815181106122a2576122a2613ad3565b60200260200101819052506040518060400160405280600281526020017f2d76000000000000000000000000000000000000000000000000000000000000815250816003815181106122f6576122f6613ad3565b6020026020010181905250858160048151811061231557612315613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612370908490600401613b7b565b6000604051808303816000875af115801561238f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123d59190810190613c1b565b8060200190518101906123e89190613d90565b9450945094509450509193509193565b60008054610100900460ff16156124185750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156125535760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916124bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526124f591613e6a565b6000604051808303816000865af19150503d8060008114612532576040519150601f19603f3d011682016040523d82523d6000602084013e612537565b606091505b509150508080602001905181019061254f9190613e97565b9150505b919050565b6040805160098082526101408201909252600091829190816020015b60608152602001906001900390816125745790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106125d4576125d4613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061260b5761260b613ad3565b60200260200101819052506040518060400160405280600e81526020017f686173685769746864726177616c000000000000000000000000000000000000815250816002815181106102fa576102fa613ad3565b6040805160078082526101008201909252600091829190816020015b606081526020019060019003908161267b5790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106126db576126db613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061271257612712613ad3565b60200260200101819052506040518060400160405280601381526020017f686173684f7574707574526f6f7450726f6f66000000000000000000000000008152508160028151811061276657612766613ad3565b602090810291909101015261277a866132a3565b8160038151811061278d5761278d613ad3565b60209081029190910101526127a1856132a3565b816004815181106127b4576127b4613ad3565b60209081029190910101526127c8846132a3565b816005815181106127db576127db613ad3565b60209081029190910101526127ef836132a3565b8160068151811061280257612802613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612860908590600401613b7b565b6000604051808303816000875af115801561287f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526128c59190810190613c1b565b9050808060200190518101906128db9190613c50565b979650505050505050565b60408051600c8082526101a0820190925260609160009190816020015b60608152602001906001900390816129035790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061296357612963613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061299a5761299a613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f64654465706f7369745472616e73616374696f6e0000000000000000815250816002815181106129ee576129ee613ad3565b602090810291909101810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90612a2590860186613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612a8e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ad49190810190613b32565b81600381518110612ae757612ae7613ad3565b60200260200101819052507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166356ca623e846020016020810190612b449190613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612bad573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612bf39190810190613b32565b81600481518110612c0657612c06613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260608401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612c7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612cc39190810190613b32565b81600581518110612cd657612cd6613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260808401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612d939190810190613b32565b81600681518110612da657612da6613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d636900a3ae612ddb60c0860160a08701613ecf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612e7e9190810190613b32565b81600781518110612e9157612e91613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371dce7da612ec66060860160408701613eea565b6040518263ffffffff1660e01b8152600401612ee6911515815260200190565b600060405180830381865afa158015612f03573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f499190810190613b32565b81600881518110612f5c57612f5c613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371aad10d612f8e60c0860186613f07565b6040518363ffffffff1660e01b8152600401612fab929190613f73565b600060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261300e9190810190613b32565b8160098151811061302157613021613ad3565b60209081029190910101526040517fb11a19e800000000000000000000000000000000000000000000000000000000815260e08401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b11a19e890602401600060405180830381865afa158015613098573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526130de9190810190613b32565b81600a815181106130f1576130f1613ad3565b60209081029190910101526040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526101008401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015613169573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526131af9190810190613b32565b81600b815181106131c2576131c2613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790613220908590600401613b7b565b6000604051808303816000875af115801561323f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526132859190810190613c1b565b90508080602001905181019061329b9190613c1b565b949350505050565b6060816000036132e657505060408051808201909152600481527f3078303000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561330957806132fa81613fef565b915050600882901c91506132ea565b61329b84826060600061331d836002614027565b613328906002614064565b67ffffffffffffffff81111561334057613340613580565b6040519080825280601f01601f19166020018201604052801561336a576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133a1576133a1613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061340457613404613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613440846002614027565b61344b906001614064565b90505b60018111156134e8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061348c5761348c613ad3565b1a60f81b8282815181106134a2576134a2613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936134e18161407c565b905061344e565b508315613555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461255357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156135d2576135d2613580565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561361f5761361f613580565b604052919050565b600067ffffffffffffffff82111561364157613641613580565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600061368061367b84613627565b6135d8565b905082815283838301111561369457600080fd5b828260208301376000602084830101529392505050565b600082601f8301126136bc57600080fd5b6135558383356020850161366d565b60008060008060008060c087890312156136e457600080fd5b863595506136f46020880161355c565b94506137026040880161355c565b9350606087013592506080870135915060a087013567ffffffffffffffff81111561372c57600080fd5b61373889828a016136ab565b9150509295509295509295565b60006020828403121561375757600080fd5b813567ffffffffffffffff8082111561376f57600080fd5b9083019060c0828603121561378357600080fd5b61378b6135af565b8235815261379b6020840161355c565b60208201526137ac6040840161355c565b6040820152606083013560608201526080830135608082015260a0830135828111156137d757600080fd5b6137e3878286016136ab565b60a08301525095945050505050565b60005b8381101561380d5781810151838201526020016137f5565b8381111561381c576000848401525b50505050565b6000815180845261383a8160208601602086016137f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156138d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08684030189526138c3838351613822565b98840198925090830190600101613889565b5090979650505050505050565b85815284602082015283604082015282606082015260a0608082015260006128db60a083018461386c565b803567ffffffffffffffff8116811461255357600080fd5b600080600080600080600060e0888a03121561394057600080fd5b6139498861355c565b96506139576020890161355c565b955060408801359450606088013593506139736080890161390d565b925060a088013567ffffffffffffffff81111561398f57600080fd5b61399b8a828b016136ab565b92505060c0880135905092959891949750929550565b6020815260006135556020830184613822565b6000602082840312156139d657600080fd5b5035919050565b6000602082840312156139ef57600080fd5b813567ffffffffffffffff811115613a0657600080fd5b8201601f81018413613a1757600080fd5b61329b8482356020840161366d565b848152608060208201526000613a3f6080830186613822565b8281036040840152613a518186613822565b905082810360608401526128db818561386c565b60008060008060808587031215613a7b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215613aa957600080fd5b813567ffffffffffffffff811115613ac057600080fd5b8201610120818503121561355557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b1061367b84613627565b9050828152838383011115613b2457600080fd5b6135558360208301846137f2565b600060208284031215613b4457600080fd5b815167ffffffffffffffff811115613b5b57600080fd5b8201601f81018413613b6c57600080fd5b61329b84825160208401613b02565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613bee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613bdc858351613822565b94509285019290850190600101613ba2565b5092979650505050505050565b600082601f830112613c0c57600080fd5b61355583835160208501613b02565b600060208284031215613c2d57600080fd5b815167ffffffffffffffff811115613c4457600080fd5b61329b84828501613bfb565b600060208284031215613c6257600080fd5b5051919050565b600082601f830112613c7a57600080fd5b8151602067ffffffffffffffff80831115613c9757613c97613580565b8260051b613ca68382016135d8565b9384528581018301938381019088861115613cc057600080fd5b84880192505b85831015613cfc57825184811115613cde5760008081fd5b613cec8a87838c0101613bfb565b8352509184019190840190613cc6565b98975050505050505050565b600080600080600060a08688031215613d2057600080fd5b85519450602086015193506040860151925060608601519150608086015167ffffffffffffffff811115613d5357600080fd5b613d5f88828901613c69565b9150509295509295909350565b60008060408385031215613d7f57600080fd5b505080516020909101519092909150565b60008060008060808587031215613da657600080fd5b84519350602085015167ffffffffffffffff80821115613dc557600080fd5b613dd188838901613bfb565b94506040870151915080821115613de757600080fd5b613df388838901613bfb565b93506060870151915080821115613e0957600080fd5b50613e1687828801613c69565b91505092959194509250565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251613e5c8160048501602087016137f2565b919091016004019392505050565b60008251613e7c8184602087016137f2565b9190910192915050565b8015158114613e9457600080fd5b50565b600060208284031215613ea957600080fd5b815161355581613e86565b600060208284031215613ec657600080fd5b6135558261355c565b600060208284031215613ee157600080fd5b6135558261390d565b600060208284031215613efc57600080fd5b813561355581613e86565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f3c57600080fd5b83018035915067ffffffffffffffff821115613f5757600080fd5b602001915036819003821315613f6c57600080fd5b9250929050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361402057614020613fc0565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561405f5761405f613fc0565b500290565b6000821982111561407757614077613fc0565b500190565b60008161408b5761408b613fc0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe30783030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303067657450726f76655769746864726177616c5472616e73616374696f6e496e70757473646973742f736372697074732f646966666572656e7469616c2d74657374696e672e6a73a164736f6c634300080f000a6101606040523480156200001257600080fd5b506040516200188b3803806200188b833981016040819052620000359162000262565b6001608052600060a081905260c05260e08690526101008590526001600160a01b03808316610140528116610120526200007084846200007c565b505050505050620002bf565b600054610100900460ff16158080156200009d5750600054600160ff909116105b80620000cd5750620000ba306200023660201b620011031760201c565b158015620000cd575060005460ff166001145b620001365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200015a576000805461ff0019166101001790555b42821115620001e05760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201526374696d6560e01b608482015260a4016200012d565b60028290556001839055801562000231576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b80516001600160a01b03811681146200025d57600080fd5b919050565b60008060008060008060c087890312156200027c57600080fd5b86519550602087015194506040870151935060608701519250620002a36080880162000245565b9150620002b360a0880162000245565b90509295509295509295565b60805160a05160c05160e0516101005161012051610140516115556200033660003960008181610351015261090001526000818161021b015261074101526000818161013f0152610e3701526000818161019b0152610e85015260006104b40152600061048b0152600061046201526115556000f3fe6080604052600436106101285760003560e01c806388786272116100a5578063bffa7f0f11610074578063d1de856c11610059578063d1de856c14610393578063dcec3348146103b3578063e4a30116146103c857600080fd5b8063bffa7f0f1461033f578063cf8e5cf01461037357600080fd5b8063887862721461029857806389c44cbb146102ae5780639aaab648146102d0578063a25ae557146102e357600080fd5b806369f16eec116100fc5780636b4d98dd116100e15780636b4d98dd1461020957806370872aa5146102625780637f0064201461027857600080fd5b806369f16eec146101df5780636abcf563146101f457600080fd5b80622134cc1461012d5780634599c78814610174578063529933df1461018957806354fd4d50146101bd575b600080fd5b34801561013957600080fd5b506101617f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561018057600080fd5b506101616103e8565b34801561019557600080fd5b506101617f000000000000000000000000000000000000000000000000000000000000000081565b3480156101c957600080fd5b506101d261045b565b60405161016b919061128c565b3480156101eb57600080fd5b506101616104fe565b34801561020057600080fd5b50600354610161565b34801561021557600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b34801561026e57600080fd5b5061016160015481565b34801561028457600080fd5b506101616102933660046112dd565b610510565b3480156102a457600080fd5b5061016160025481565b3480156102ba57600080fd5b506102ce6102c93660046112dd565b610729565b005b6102ce6102de3660046112f6565b6108e8565b3480156102ef57600080fd5b506103036102fe3660046112dd565b610d67565b60408051825181526020808401516fffffffffffffffffffffffffffffffff90811691830191909152928201519092169082015260600161016b565b34801561034b57600080fd5b5061023d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037f57600080fd5b5061030361038e3660046112dd565b610dfb565b34801561039f57600080fd5b506101616103ae3660046112dd565b610e33565b3480156103bf57600080fd5b50610161610e81565b3480156103d457600080fd5b506102ce6103e3366004611328565b610eb6565b60035460009015610452576003805461040390600190611379565b8154811061041357610413611390565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b60606104867f000000000000000000000000000000000000000000000000000000000000000061111f565b6104af7f000000000000000000000000000000000000000000000000000000000000000061111f565b6104d87f000000000000000000000000000000000000000000000000000000000000000061111f565b6040516020016104ea939291906113bf565b604051602081830303815290604052905090565b60035460009061045690600190611379565b600061051a6103e8565b8211156105d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f70726f706f736564000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b600354610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f6564207965740000000000000000000000000000000000000000000000000000608482015260a4016105cb565b6003546000905b8082101561072257600060026106a68385611435565b6106b0919061147c565b905084600382815481106106c6576106c6611390565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16101561071857610711816001611435565b925061071c565b8091505b50610690565b5092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f757470757473000060648201526084016105cb565b60035481106108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f6465780000000000000000000000000000000000000000000000000000000000608482015260a4016105cb565b60006108b060035490565b90508160035581817f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b660405160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a4016105cb565b6109db610e81565b8314610a8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a4016105cb565b42610a9984610e33565b10610b26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e20746865206675747572650000000000000000000060648201526084016105cb565b83610bb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f206861736800000000000060648201526084016105cb565b8115610c6f5781814014610c6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a4016105cb565b42610c7960035490565b857fa7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e286604051610cab91815260200190565b60405180910390a45050604080516060810182529283526fffffffffffffffffffffffffffffffff4281166020850190815292811691840191825260038054600181018255600091909152935160029094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810194909455915190518216700100000000000000000000000000000000029116177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c90910155565b604080516060810182526000808252602082018190529181019190915260038281548110610d9757610d97611390565b600091825260209182902060408051606081018252600290930290910180548352600101546fffffffffffffffffffffffffffffffff8082169484019490945270010000000000000000000000000000000090049092169181019190915292915050565b60408051606081018252600080825260208201819052918101919091526003610e2383610510565b81548110610d9757610d97611390565b60007f000000000000000000000000000000000000000000000000000000000000000060015483610e649190611379565b610e6e9190611490565b600254610e7b9190611435565b92915050565b60007f0000000000000000000000000000000000000000000000000000000000000000610eac6103e8565b6104569190611435565b600054610100900460ff1615808015610ed65750600054600160ff909116105b80610ef05750303b158015610ef0575060005460ff166001145b610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105cb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fda57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b42821115611091576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a4016105cb565b6002829055600183905580156110fe57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60608160000361116257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561118c5780611176816114cd565b91506111859050600a8361147c565b9150611166565b60008167ffffffffffffffff8111156111a7576111a7611505565b6040519080825280601f01601f1916602001820160405280156111d1576020820181803683370190505b5090505b8415611254576111e6600183611379565b91506111f3600a86611534565b6111fe906030611435565b60f81b81838151811061121357611213611390565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061124d600a8661147c565b94506111d5565b949350505050565b60005b8381101561127757818101518382015260200161125f565b83811115611286576000848401525b50505050565b60208152600082518060208401526112ab81604085016020870161125c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000602082840312156112ef57600080fd5b5035919050565b6000806000806080858703121561130c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561133b57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561138b5761138b61134a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600084516113d181846020890161125c565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161140d816001850160208a0161125c565b6001920191820152835161142881600284016020880161125c565b0160020195945050505050565b600082198211156114485761144861134a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261148b5761148b61144d565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156114c8576114c861134a565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114fe576114fe61134a565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000826115435761154361144d565b50069056fea164736f6c634300080f000a608060405234801561001057600080fd5b5060405161091838038061091883398101604081905261002f916100b2565b6100388161003e565b506100e2565b60006100566000805160206108f88339815191525490565b6000805160206108f8833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6000602082840312156100c457600080fd5b81516001600160a01b03811681146100db57600080fd5b9392505050565b610807806100f16000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360e060405234801561001057600080fd5b5060016080819052600060a081905260c081905280610a2061004a82396000610403015260006103da015260006103b10152610a206000f3fe6080604052600436106100695760003560e01c806382e3702d1161004357806382e3702d146100f6578063c2b3e5ac14610136578063ecc704281461014957600080fd5b80633f827a5a1461009257806344df8e70146100bf57806354fd4d50146100d457600080fd5b3661008d5761008b33620186a0604051806020016040528060008152506101ae565b005b600080fd5b34801561009e57600080fd5b506100a7600181565b60405161ffff90911681526020015b60405180910390f35b3480156100cb57600080fd5b5061008b610372565b3480156100e057600080fd5b506100e96103aa565b6040516100b6919061068c565b34801561010257600080fd5b506101266101113660046106a6565b60006020819052908152604090205460ff1681565b60405190151581526020016100b6565b61008b6101443660046106ee565b6101ae565b34801561015557600080fd5b506101a06001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016100b6565b60006102446040518060c001604052806102086001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b815233602082015273ffffffffffffffffffffffffffffffffffffffff871660408201523460608201526080810186905260a00184905261044d565b600081815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055905073ffffffffffffffffffffffffffffffffffffffff8416336102df6001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b7f02a52367d10742d8032712c1bb8e0144ff1ec5ffda1ed7d70bb05a27449550543487878760405161031494939291906107f2565b60405180910390a45050600180547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8082168301167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b4761037c8161049a565b60405181907f7967de617a5ac1cc7eba2d6f37570a0135afa950d8bb77cdd35f0d0b4e85a16f90600090a250565b60606103d57f00000000000000000000000000000000000000000000000000000000000000006104c9565b6103fe7f00000000000000000000000000000000000000000000000000000000000000006104c9565b6104277f00000000000000000000000000000000000000000000000000000000000000006104c9565b60405160200161043993929190610822565b604051602081830303815290604052905090565b80516020808301516040808501516060860151608087015160a0880151935160009761047d979096959101610898565b604051602081830303815290604052805190602001209050919050565b806040516104a790610606565b6040518091039082f09050801580156104c4573d6000803e3d6000fd5b505050565b60608160000361050c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561053657806105208161091e565b915061052f9050600a83610985565b9150610510565b60008167ffffffffffffffff811115610551576105516106bf565b6040519080825280601f01601f19166020018201604052801561057b576020820181803683370190505b5090505b84156105fe57610590600183610999565b915061059d600a866109b0565b6105a89060306109c4565b60f81b8183815181106105bd576105bd6109dc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506105f7600a86610985565b945061057f565b949350505050565b600880610a0c83390190565b60005b8381101561062d578181015183820152602001610615565b8381111561063c576000848401525b50505050565b6000815180845261065a816020860160208601610612565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069f6020830184610642565b9392505050565b6000602082840312156106b857600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561070357600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461072757600080fd5b925060208401359150604084013567ffffffffffffffff8082111561074b57600080fd5b818601915086601f83011261075f57600080fd5b813581811115610771576107716106bf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156107b7576107b76106bf565b816040528281528960208487010111156107d057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b8481528360208201526080604082015260006108116080830185610642565b905082606083015295945050505050565b60008451610834818460208901610612565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551610870816001850160208a01610612565b6001920191820152835161088b816002840160208801610612565b0160020195945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526108e360c0830184610642565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361094f5761094f6108ef565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261099457610994610956565b500490565b6000828210156109ab576109ab6108ef565b500390565b6000826109bf576109bf610956565b500690565b600082198211156109d7576109d76108ef565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfe608060405230fffea164736f6c634300080f000aa164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
