{
  "_format": "hh-sol-artifact-1",
  "contractName": "MarginFactory",
  "sourceName": "contracts/core/MarginFactory.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "upperFactory_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "config_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "quoteToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "margin",
          "type": "address"
        }
      ],
      "name": "MarginCreated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "config",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "quoteToken",
          "type": "address"
        }
      ],
      "name": "createMargin",
      "outputs": [
        {
          "internalType": "address",
          "name": "margin",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getMargin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "quoteToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "amm",
          "type": "address"
        }
      ],
      "name": "initMargin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "upperFactory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b50604051614e58380380614e5883398101604081905261002f9161011a565b6001600160a01b03821661008a5760405162461bcd60e51b815260206004820152601960248201527f4d617267696e466163746f72793a205a45524f5f55505045520000000000000060448201526064015b60405180910390fd5b6001600160a01b0381166100e05760405162461bcd60e51b815260206004820152601a60248201527f4d617267696e466163746f72793a205a45524f5f434f4e4649470000000000006044820152606401610081565b6001600160601b0319606092831b8116608052911b1660a05261014c565b80516001600160a01b038116811461011557600080fd5b919050565b6000806040838503121561012c578182fd5b610135836100fe565b9150610143602084016100fe565b90509250929050565b60805160601c60a05160601c614cd5610183600039600060c101526000818160fd0152818161012c015261040a0152614cd56000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630211406b1461005c5780630db586021461008b57806379502c55146100bc5780639703dd94146100e3578063cedc12d8146100f8575b600080fd5b61006f61006a3660046105eb565b61011f565b6040516001600160a01b03909116815260200160405180910390f35b61006f6100993660046105eb565b60006020818152928152604080822090935290815220546001600160a01b031681565b61006f7f000000000000000000000000000000000000000000000000000000000000000081565b6100f66100f136600461061d565b6103ff565b005b61006f7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101965760405162461bcd60e51b815260206004820152601560248201527420b6b6a330b1ba37b93c9d102327a92124a22222a760591b60448201526064015b60405180910390fd5b816001600160a01b0316836001600160a01b031614156102105760405162461bcd60e51b815260206004820152602f60248201527f4d617267696e466163746f72792e6372656174654d617267696e3a204944454e60448201526e544943414c5f41444452455353455360881b606482015260840161018d565b6001600160a01b0383161580159061023057506001600160a01b03821615155b61028d5760405162461bcd60e51b815260206004820152602860248201527f4d617267696e466163746f72792e6372656174654d617267696e3a205a45524f6044820152675f4144445245535360c01b606482015260840161018d565b6001600160a01b03838116600090815260208181526040808320868516845290915290205416156103115760405162461bcd60e51b815260206004820152602860248201527f4d617267696e466163746f72792e6372656174654d617267696e3a204d415247604482015267125397d1561254d560c21b606482015260840161018d565b6040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152600090604801604051602081830303815290604052805190602001209050600060405180602001610367906105c2565b6020820181038252601f19601f820116604052509050818151602083016000f56001600160a01b038681166000818152602081815260408083208a86168085529083529281902080546001600160a01b0319169587169586179055519384529396509290917f83346cf05e0d18b120f8744ef712d3d618c570274a2f60ff15138b7177235644910160405180910390a3505092915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461046f5760405162461bcd60e51b815260206004820152601560248201527420b6b6a330b1ba37b93c9d102327a92124a22222a760591b604482015260640161018d565b6001600160a01b0381166104d05760405162461bcd60e51b815260206004820152602260248201527f4d617267696e466163746f72792e696e69744d617267696e3a205a45524f5f416044820152614d4d60f01b606482015260840161018d565b6001600160a01b03808416600090815260208181526040808320868516845290915290205416806105515760405162461bcd60e51b815260206004820152602560248201527f4d617267696e466163746f72792e696e69744d617267696e3a205a45524f5f4d60448201526420a923a4a760d91b606482015260840161018d565b60405163c0c53b8b60e01b81526001600160a01b0385811660048301528481166024830152838116604483015282169063c0c53b8b90606401600060405180830381600087803b1580156105a457600080fd5b505af11580156105b8573d6000803e3d6000fd5b5050505050505050565b6146408061066083390190565b80356001600160a01b03811681146105e657600080fd5b919050565b600080604083850312156105fd578182fd5b610606836105cf565b9150610614602084016105cf565b90509250929050565b600080600060608486031215610631578081fd5b61063a846105cf565b9250610648602085016105cf565b9150610656604085016105cf565b9050925092509256fe60a060405234801561001057600080fd5b5033606081901b6080526146006100406000396000818161040d01528181611742015261180501526146006000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806384b4ce7811610104578063c45a0155116100a2578063cf70cb6911610071578063cf70cb6914610453578063d67fb55314610466578063d9caed1214610479578063ee4424e51461048c576101da565b8063c45a015514610408578063c55dae631461042f578063cab25eea14610442578063cd3293de1461044a576101da565b806392f4c2f2116100de57806392f4c2f2146103b6578063a8fe8f81146103bf578063b9f4ff55146103d2578063c0c53b8b146103f5576101da565b806384b4ce781461039257806385a5bd821461039a57806386b9d81f146103a3576101da565b806355e898101161017c578063763620ac1161014b578063763620ac1461034c57806376dc1c091461035f57806379502c5514610372578063833b0acb1461038a576101da565b806355e89810146102fd57806358557bb51461031057806365049cb514610330578063742fe1f814610339576101da565b80632a943945116101b85780632a9439451461029357806332cc6ae6146102a657806347e7ef24146102b957806352ed67dc146102ce576101da565b806316c19739146101df57806317fbe35414610252578063217a4b7014610268575b600080fd5b6102326101ed366004613f34565b6001600160a01b031660009081526004602090815260409182902082516060810184528154808252600183015493820184905260029092015493018390529092909190565b604080519384526020840192909252908201526060015b60405180910390f35b61025a61049f565b604051908152602001610249565b60035461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610249565b60015461027b906001600160a01b031681565b61025a6102b4366004613f34565b6104b6565b6102cc6102c736600461402e565b610530565b005b6102326102dc366004613f34565b60046020526000908152604090208054600182015460029092015490919083565b61025a61030b366004613f34565b61075a565b61025a61031e366004613f34565b60056020526000908152604090205481565b61025a60085481565b61025a61034736600461402e565b610770565b61025a61035a366004613f34565b610c76565b61025a61036d366004614128565b610ce0565b60005461027b9061010090046001600160a01b031681565b61025a610cf5565b61025a610d69565b61025a60075481565b6102326103b1366004613f6c565b610dbe565b61025a60095481565b6102cc6103cd366004613fee565b611272565b6103e56103e0366004613f34565b61164e565b6040519015158152602001610249565b6102cc610403366004613fa4565b611740565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b60025461027b906001600160a01b031681565b61025a6118b1565b61025a60065481565b6102cc61046136600461402e565b6118bb565b61025a610474366004614059565b611ab7565b6102cc610487366004613fee565b61262c565b61025a61049a366004613f34565b6126d2565b60006009546008546104b191906143be565b905090565b6001600160a01b0381166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015281610503846104fe6128e7565b612bab565b9050610527826000015182846020015161051d919061437d565b8460400151612c8a565b50949350505050565b60005460ff161561055c5760405162461bcd60e51b815260040161055390614246565b60405180910390fd5b60008054600160ff199091168117909155546001600160a01b031633146105c55760405162461bcd60e51b815260206004820152601b60248201527f4d617267696e2e6465706f7369743a20524551554952455f414d4d00000000006044820152606401610553565b600081116106155760405162461bcd60e51b815260206004820152601e60248201527f4d617267696e2e6465706f7369743a20414d4f554e545f49535f5a45524f00006044820152606401610553565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561065957600080fd5b505afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106919190614145565b9050600654816106a19190614528565b8211156106fc5760405162461bcd60e51b815260206004820152602360248201527f4d617267696e2e6465706f7369743a20494e53554646494349454e545f414d4f60448201526215539560ea1b6064820152608401610553565b8160065461070a91906143be565b6006556040518281526001600160a01b038416907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a250506000805460ff1916905550565b6000610768826104fe6128e7565b90505b919050565b6000805460ff16156107945760405162461bcd60e51b815260040161055390614246565b60008054600160ff199091161790819055604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b1580156107e957600080fd5b505afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610821919061410c565b61083d5760405162461bcd60e51b81526004016105539061427d565b6000610847610d69565b6001600160a01b0385166000908152600460209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152909150836108e25760405162461bcd60e51b815260206004820152602360248201527f4d617267696e2e636c6f7365506f736974696f6e3a205a45524f5f504f53495460448201526224a7a760e91b6064820152608401610553565b60006108f18260000151613016565b90508085111561094f5760405162461bcd60e51b8152602060048201526024808201527f4d617267696e2e636c6f7365506f736974696f6e3a2041424f56455f504f53496044820152632a24a7a760e11b6064820152608401610553565b81516000908113906109618886612bab565b9050600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b157600080fd5b505afa1580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190614145565b610a068560000151838760200151610a01919061437d565b613036565b10610a615760405162461bcd60e51b815260206004820152602560248201527f4d617267696e2e636c6f7365506f736974696f6e3a20444542545f524154494f6044820152642fa7ab22a960d91b6064820152608401610553565b610a6c888389613441565b955082846040015188610a7f91906144ca565b610a899190614404565b84604001818151610a9a9190614528565b9052508115610ae75786600854610ab19190614528565b6008558351610ac09088613518565b845260208401518190610ad3908861354b565b610add919061437d565b6020850152610b27565b86600954610af59190614528565b6009558351610b04908861354b565b845260208401518190610b179088613518565b610b21919061437d565b60208501525b8351158015610b3a575060008460200151125b15610bce5760015460035460025460208701516001600160a01b039384169363988370a3938d9390821692911690600090610b7490613016565b6040518663ffffffff1660e01b8152600401610b949594939291906141e9565b600060405180830381600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b50506000602087015250505b6001600160a01b038816600081815260056020908152604080832089905560048252918290208751815587820180516001830155888401805160029093019290925583518c81529283018b9052828401869052885160608401525160808301525160a082015290517f9b383459b14df5363d3d1327ae34de16258b94a771c13244410e22aa11787e259181900360c00190a250506000805460ff191690555091949350505050565b6001600160a01b0381166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015281610cbe846104fe6128e7565b9050610cd88260000151828460200151610a01919061437d565b949350505050565b6000610cec838361357e565b90505b92915050565b60006fffffffffffffffffffffffffffffffff801660095410610d5a5760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e6e6574506f736974696f6e3a204f564552464c4f57000000006044820152606401610553565b6008546009546104b19161354b565b600042610d746128e7565b600a819055600782905560408051838152602081018390529193507fbb9790c7d61d850cbc07d4e95659d1765b0907b4ed044959265472f776ec1a8c910160405180910390a15090565b600080548190819060ff1615610de65760405162461bcd60e51b815260040161055390614246565b60008054600160ff199091161790819055604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b158015610e3b57600080fd5b505afa158015610e4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e73919061410c565b610e8f5760405162461bcd60e51b81526004016105539061427d565b6000610e99610d69565b6001600160a01b03871660009081526004602090815260409182902082516060810184528154808252600183015493820184905260029092015493810193909352929350909180610f2c5760405162461bcd60e51b815260206004820152601f60248201527f4d617267696e2e6c69717569646174653a205a45524f5f504f534954494f4e006044820152606401610553565b610f3581613016565b9650600080821290610f478b87612bab565b9050600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190614145565b610fdd84610a01848861437d565b10156110365760405162461bcd60e51b815260206004820152602260248201527f4d617267696e2e6c69717569646174653a204e4f545f4c4951554944415441426044820152614c4560f01b6064820152608401610553565b600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561108757600080fd5b505afa15801561109b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bf9190613f50565b600154604051637e650a0560e01b81526001600160a01b039182166004820152602481018e905260006044820152911690637e650a059060640160606040518083038186803b15801561111157600080fd5b505afa158015611125573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114991906141a0565b9250509150806111625761115d848c61357e565b611164565b815b9950898b6111778f8488888c8787613643565b9a50851561119d5761118887613016565b6008546111959190614528565b6008556111b7565b6111a687613016565b6009546111b39190614528565b6009555b5050506001600160a01b038c1660009081526005602052604090208790555086156111e7576111e78b8b89613c12565b6001600160a01b03808c16600081815260046020526040808220828155600181018390556002019190915551918c169133907f9d24c3dea12298e139fff56a08afeb2d81d8d41351677d2e21c4dad89eda693f9061124e908e908e908e9089908e906142fe565b60405180910390a450506000805460ff191690555094979396509194509192505050565b60005460ff16156112955760405162461bcd60e51b815260040161055390614246565b6000805460ff19166001179055806113015760405162461bcd60e51b815260206004820152602960248201527f4d617267696e2e72656d6f76654d617267696e3a205a45524f5f5749544844526044820152681055d7d05353d5539560ba1b6064820152608401610553565b600054604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b15801561134857600080fd5b505afa15801561135c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061410c565b6113cc5760405162461bcd60e51b815260206004820152601e60248201527f4d617267696e2e72656d6f76654d617267696e3a20464f5242494444454e00006044820152606401610553565b60006113d6610d69565b6001600160a01b0385166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015291925061141e8684612bab565b9050600080611445846000015184866020015161143b919061437d565b8660400151612c8a565b91509150818611156114ae5760405162461bcd60e51b815260206004820152602c60248201527f4d617267696e2e72656d6f76654d617267696e3a204e4f545f454e4f5547485f60448201526b574954484452415741424c4560a01b6064820152608401610553565b600080846114bd60018a613daa565b6114c791906144e9565b90506000811315611572578281136114fb576114e281613016565b866040018181516114f39190614528565b905250611572565b61150d61150884836144e9565b613016565b91506000866000015112611546576115418361153788604001516001613daa90919063ffffffff16565b611508919061437d565b61156c565b61156c8361156288604001516001613daa90919063ffffffff16565b61150891906144e9565b60408701525b80866020015161158291906144e9565b60208088019182526001600160a01b038c1660009081526004825260408082208a51815593516001850155808a01516002909401939093556005909152208790556115ce8a8a8a613c12565b6040805189815260208082018890528183018590528851606083015288015160808201529087015160a08201526001600160a01b03808b1691908c16907facbeac375d5865b32775ef1296dac3dc42068eb9098044daf3e121176f4364db9060c00160405180910390a350506000805460ff191690555050505050505050565b6001600160a01b0381166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015281611696846104fe6128e7565b9050600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e657600080fd5b505afa1580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190614145565b6117368360000151838560200151610a01919061437d565b1015949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146117b85760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e696e697469616c697a653a20464f5242494444454e000000006044820152606401610553565b600280546001600160a01b038086166001600160a01b03199283161790925560038054858416908316179055600180548484169216919091179055604080516379502c5560e01b815290517f0000000000000000000000000000000000000000000000000000000000000000909216916379502c5591600480820192602092909190829003018186803b15801561184e57600080fd5b505afa158015611862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118869190613f50565b600060016101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050565b60006104b16128e7565b60005460ff16156118de5760405162461bcd60e51b815260040161055390614246565b6000805460ff191660011781556002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561192e57600080fd5b505afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190614145565b6006549091506119768183614528565b8311156119d45760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6164644d617267696e3a2057524f4e475f4445504f5349545f604482015265105353d5539560d21b6064820152608401610553565b6001600160a01b038416600090815260046020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252611a1e9085613518565b60208083019182526001600160a01b038716600090815260049091526040908190208351815591516001830155820151600290910155611a5e84836143be565b6006556040516001600160a01b038616907f2c8c31a18cfdc333bcf992ef4f59b0a2a92084c08f0e20497957abcb6c10bfcb90611a9e90879085906142d6565b60405180910390a250506000805460ff19169055505050565b6000805460ff1615611adb5760405162461bcd60e51b815260040161055390614246565b6000805460ff1916600117905560ff83161580611afb57508260ff166001145b611b515760405162461bcd60e51b815260206004820152602160248201527f4d617267696e2e6f70656e506f736974696f6e3a20494e56414c49445f5349446044820152604560f81b6064820152608401610553565b60008211611bb05760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6f70656e506f736974696f6e3a205a45524f5f51554f54455f604482015265105353d5539560d21b6064820152608401610553565b600054604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b158015611bf757600080fd5b505afa158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f919061410c565b611c4b5760405162461bcd60e51b81526004016105539061427d565b6000611c55610d69565b6001600160a01b03861660009081526004602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152929350611ca290613016565b90506000611cb08885612bab565b9050600080846000015160001415611cd957828560200151611cd2919061437d565b9050611e70565b845160001215611dad5760015460035460025487516000936001600160a01b039081169363bc9365769390821692911690611d1390613016565b60006040518563ffffffff1660e01b8152600401611d34949392919061421d565b604080518083038186803b158015611d4b57600080fd5b505afa158015611d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d839190614088565b602080820151908801519192508591611d9b91613518565b611da5919061437d565b915050611e70565b60015460025460035487516000936001600160a01b039081169363bc93657693908216929116908590611ddf90613016565b6040518563ffffffff1660e01b8152600401611dfe949392919061421d565b604080518083038186803b158015611e1557600080fd5b505afa158015611e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4d9190614088565b805160208801519192508591611e629161354b565b611e6c919061437d565b9150505b60008113611ed05760405162461bcd60e51b815260206004820152602760248201527f4d617267696e2e6f70656e506f736974696f6e3a20494e56414c49445f4d415260448201526647494e5f41434360c81b6064820152608401610553565b60015460408051630240bc6b60e21b815290516000926001600160a01b031691630902f1ac916004808301926060929190829003018186803b158015611f1557600080fd5b505afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4d919061415d565b50915050600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fa257600080fd5b505afa158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda9190613f50565b6001546001600160a01b0391821691637e650a0591166000611ffb88613016565b6040516001600160e01b031960e086901b1681526001600160a01b0390931660048401526024830191909152604482015260640160606040518083038186803b15801561204757600080fd5b505afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f91906141a0565b925092505060008161212c576001546002546003546001600160a01b039283169263bc93657692811691166120b389613016565b60006040518563ffffffff1660e01b81526004016120d4949392919061421d565b604080518083038186803b1580156120eb57600080fd5b505afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190614088565b6020015161212e565b825b9050600060019054906101000a90046001600160a01b03166001600160a01b0316639faa3c916040518163ffffffff1660e01b815260040160206040518083038186803b15801561217e57600080fd5b505afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b691906141cd565b60ff166121c48260c86144ca565b6121ce91906144ca565b846001600160701b0316600060019054906101000a90046001600160a01b03166001600160a01b031663e57d56366040518163ffffffff1660e01b815260040160206040518083038186803b15801561222657600080fd5b505afa15801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e9190614145565b61226891906144ca565b61227291906143be565b8161227f8661271061449b565b6001600160701b031661229291906144ca565b61229c9190614404565b955050505060ff8a161591506122b590508a828a613ddd565b9650600087116123165760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6f70656e506f736974696f6e3a2054494e595f51554f54455f604482015265105353d5539560d21b6064820152608401610553565b8451158061232957508451600013811515145b80612338575084516000128115145b156123575786856040015161234d91906143be565b60408601526123af565b83881015612389578385604001518961237091906144ca565b61237a9190614404565b856040015161234d9190614528565b87876123958683614528565b61239f91906144ca565b6123a99190614404565b60408601525b80156123f95784516123c1908961354b565b8552602085015183906123d49089613518565b6123de919061437d565b60208601526008546123f19089906143be565b600855612439565b84516124059089613518565b855260208501518390612418908961354b565b612422919061437d565b60208601526009546124359089906143be565b6009555b816124478660000151613016565b11156124a45760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6f70656e506f736974696f6e3a20494e49545f4d415247494e6044820152655f524154494f60d01b6064820152608401610553565b600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f257600080fd5b505afa158015612506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252a9190614145565b61253c86600001518760200151613036565b106125995760405162461bcd60e51b815260206004820152602760248201527f4d617267696e2e6f70656e506f736974696f6e3a2057494c4c5f42455f4c49516044820152661552511055115160ca1b6064820152608401610553565b6001600160a01b038a1660008181526005602090815260408083208a905560048252918290208851815590880151600182015587820151600290910155517fcc7ddfa701c3ec1faad0e3717271cf26abfbf7d48444448921bb9fbc27b26fd79061260c908c908b908d9089908c9061433f565b60405180910390a250506000805460ff1916905550929695505050505050565b60005460ff161561264f5760405162461bcd60e51b815260040161055390614246565b60008054600160ff199091168117909155546001600160a01b031633146126b85760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e77697468647261773a20524551554952455f414d4d000000006044820152606401610553565b6126c3838383613c12565b50506000805460ff1916905550565b6001600160a01b038116600090815260046020908152604080832081516060810183528154808252600183015494820194909452600290910154918101919091529061271d90613016565b61272b57600091505061076b565b600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561277c57600080fd5b505afa158015612790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b49190613f50565b60015484516001600160a01b0392831692637e650a059216906127d690613016565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526000604482015260640160606040518083038186803b15801561282157600080fd5b505afa158015612835573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285991906141a0565b925050915060008161288357835161287e90600081129061287990613016565b61357e565b612885565b825b90506000846000015112156128bd576128b6816128b086604001516001613daa90919063ffffffff16565b9061354b565b94506128de565b8351600012156128de5760408401516128db906128b0600184613daa565b94505b50505050919050565b600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561293857600080fd5b505afa15801561294c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129709190613f50565b60015460405163011ad57960e61b81526001600160a01b0391821660048201529116906346b55e409060240160206040518083038186803b1580156129b457600080fd5b505afa1580156129c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ec9190614145565b905060008060019054906101000a90046001600160a01b03166001600160a01b031663838664696040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3d57600080fd5b505afa158015612a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a759190614145565b9050600060095482612a8791906144ca565b60085411158015612aa65750600854612aa090836144ca565b60095411155b8015612abf5750600954158015612abd5750600854155b155b15612b15576000831215612af357612aee600854612ae860095486613daa90919063ffffffff16565b90613e9e565b612b0e565b612b0e600954612ae860085486613daa90919063ffffffff16565b9050612b7e565b600954612b2290836144ca565b6008541115612b48576000831215612b3e57612aee8383613e9e565b612b0e8383613daa565b600854612b5590836144ca565b6009541115612b7b576000831215612b7157612aee8383613daa565b612b0e8383613e9e565b50815b600a54612b9960075442612b929190614528565b8390613daa565b612ba3919061437d565b935050505090565b6001600160a01b03821660009081526004602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152908290612bfb57506000612c46565b8151600013612c2657612c21612c1960006128798560000151613016565b600090613518565b612c43565b612c43612c3b60016128798560000151613016565b60009061354b565b90505b6001600160a01b038516600090815260056020526040902054612c8190670de0b6b3a764000090612c7790876144e9565b612ae89084614418565b95945050505050565b60008084612cb3576000841315612ca957612ca484613016565b612cac565b60005b915061300e565b6000851215612e77576001546002546003546000926001600160a01b039081169263bc93657692908216911684612ce98b613016565b6040518563ffffffff1660e01b8152600401612d08949392919061421d565b604080518083038186803b158015612d1f57600080fd5b505afa158015612d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d579190614088565b8051909150600090612d6b906127106144ca565b905060008060019054906101000a90046001600160a01b03166001600160a01b031663e57d56366040518163ffffffff1660e01b815260040160206040518083038186803b158015612dbc57600080fd5b505afa158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df49190614145565b612e0090612710614528565b90506000612e0e8284614404565b9050612e1a828461453f565b15612e2d57612e2a6001826143be565b90505b8351612e3e906128b060018a613daa565b945080612e4a89613016565b1115612e695780612e5a89613016565b612e649190614528565b612e6c565b60005b95505050505061300e565b6001546003546002546000926001600160a01b039081169263bc936576929082169116612ea38a613016565b60006040518563ffffffff1660e01b8152600401612ec4949392919061421d565b604080518083038186803b158015612edb57600080fd5b505afa158015612eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f139190614088565b90506000612710600060019054906101000a90046001600160a01b03166001600160a01b031663e57d56366040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6857600080fd5b505afa158015612f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa09190614145565b612fac90612710614528565b6020840151612fbb91906144ca565b612fc59190614404565b9050612fde856128b08460016020020151600190613daa565b92506000612fec8783613518565b905060008113156130055761300081613016565b613008565b60005b94505050505b935093915050565b6000808212156130325761302b8260006144e9565b905061076b565b5090565b60008215806130515750600083138015613051575060008212155b1561305e57506000610cef565b60008312801561306f575060008213155b1561307d5750612710610cef565b600083131561327057600061309184613016565b905060008060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130e257600080fd5b505afa1580156130f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311a9190613f50565b60015460005460408051639faa3c9160e01b815290516001600160a01b0394851694634c0000dc9481169361010090041691639faa3c91916004808301926020929190829003018186803b15801561317157600080fd5b505afa158015613185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a991906141cd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604481018590526000606482015260840160206040518083038186803b1580156131fe57600080fd5b505afa158015613212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132369190614145565b90508015613263578061324885613016565b613254906127106144ca565b61325e9190614404565b613267565b6127105b92505050610cef565b600061327b84613016565b905060008060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132cc57600080fd5b505afa1580156132e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133049190613f50565b60015460005460408051639faa3c9160e01b815290516001600160a01b0394851694634c0000dc9481169361010090041691639faa3c91916004808301926020929190829003018186803b15801561335b57600080fd5b505afa15801561336f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339391906141cd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604481018590526001606482015260840160206040518083038186803b1580156133e857600080fd5b505afa1580156133fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134209190614145565b905061342b84613016565b613437826127106144ca565b612c819190614404565b60008060008060006134538787613ed1565b6001546040516371a1ff0960e11b815294985092965090945092506000916001600160a01b039091169063e343fe1290613499908c9089908990899089906004016141e9565b6040805180830381600087803b1580156134b257600080fd5b505af11580156134c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ea9190614088565b9050876134ff578060015b6020020151613509565b8060005b60200201515b955050505050505b9392505050565b60006001600160ff1b038211156135415760405162461bcd60e51b8152600401610553906142b4565b610cec828461437d565b60006001600160ff1b038211156135745760405162461bcd60e51b8152600401610553906142b4565b610cec82846144e9565b60008060008060006135908787613ed1565b600154604051635e49b2bb60e11b815294985092965090945092506000916001600160a01b039091169063bc936576906135d490889088908890889060040161421d565b604080518083038186803b1580156135eb57600080fd5b505afa1580156135ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136239190614088565b905087613634576020810151613637565b80515b98975050505050505050565b6000808661366557856136568686613518565b613660919061437d565b61367a565b85613670868661354b565b61367a919061437d565b905060008112613a6b57612710600060019054906101000a90046001600160a01b03166001600160a01b0316636dd26a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156136d557600080fd5b505afa1580156136e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370d9190614145565b61371683613016565b61372091906144ca565b61372a9190614404565b9150876138215786156137ae5760015460025460035460405163988370a360e01b81526001600160a01b039384169363988370a393613777938f939183169216908a908a906004016141e9565b600060405180830381600087803b15801561379157600080fd5b505af11580156137a5573d6000803e3d6000fd5b50505050613821565b60015460035460025460405163988370a360e01b81526001600160a01b039384169363988370a3936137ee938f9391831692169089908b906004016141e9565b600060405180830381600087803b15801561380857600080fd5b505af115801561381c573d6000803e3d6000fd5b505050505b8161382b82613016565b1115613a66576001546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b15801561387657600080fd5b505afa15801561388a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ae9190613f50565b6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156138e657600080fd5b505afa1580156138fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391e9190613f50565b90506001600160a01b038116156139d9576002546001600160a01b031663a9059cbb828561394b86613016565b6139559190614528565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561399b57600080fd5b505af11580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d3919061410c565b50613a64565b6001546002546003546001600160a01b039283169263988370a3928e92908216911687613a0588613016565b613a0f9190614528565b60006040518663ffffffff1660e01b8152600401613a319594939291906141e9565b600060405180830381600087803b158015613a4b57600080fd5b505af1158015613a5f573d6000803e3d6000fd5b505050505b505b613c06565b87613b86578615613afe576001546002546003546001600160a01b039283169263988370a3928d929082169116613aa68b6115378c8a61354b565b886040518663ffffffff1660e01b8152600401613ac79594939291906141e9565b600060405180830381600087803b158015613ae157600080fd5b505af1158015613af5573d6000803e3d6000fd5b50505050613a66565b6001546003546002546001600160a01b039283169263988370a3928d92908216911687613b2f8c6115378d8b61354b565b6040518663ffffffff1660e01b8152600401613b4f9594939291906141e9565b600060405180830381600087803b158015613b6957600080fd5b505af1158015613b7d573d6000803e3d6000fd5b50505050613c06565b6001546003546002546001600160a01b039283169263988370a3928d9290821691166000613bb387613016565b6040518663ffffffff1660e01b8152600401613bd39594939291906141e9565b600060405180830381600087803b158015613bed57600080fd5b505af1158015613c01573d6000803e3d6000fd5b505050505b50979650505050505050565b60008111613c625760405162461bcd60e51b815260206004820181905260248201527f4d617267696e2e5f77697468647261773a20414d4f554e545f49535f5a45524f6044820152606401610553565b600654811115613cc05760405162461bcd60e51b8152602060048201526024808201527f4d617267696e2e5f77697468647261773a204e4f545f454e4f5547485f5245536044820152634552564560e01b6064820152608401610553565b80600654613cce9190614528565b60065560025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015613d1f57600080fd5b505af1158015613d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d57919061410c565b50816001600160a01b0316836001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb83604051613d9d91815260200190565b60405180910390a3505050565b60006001600160ff1b03821115613dd35760405162461bcd60e51b8152600401610553906142b4565b610cec8284614418565b6000806000806000613df0871587613ed1565b6001546040516371a1ff0960e11b815294985092965090945092506000916001600160a01b039091169063e343fe1290613e36908c9089908990899089906004016141e9565b6040805180830381600087803b158015613e4f57600080fd5b505af1158015613e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e879190614088565b905087613e96578060006134f5565b806001613503565b60006001600160ff1b03821115613ec75760405162461bcd60e51b8152600401610553906142b4565b610cec82846143d6565b6000806000808515613efa57506003546002546001600160a01b03908116945016915083613f14565b6003546002546001600160a01b0391821695501692508491505b92959194509250565b80516001600160701b038116811461076b57600080fd5b600060208284031215613f45578081fd5b813561351181614595565b600060208284031215613f61578081fd5b815161351181614595565b60008060408385031215613f7e578081fd5b8235613f8981614595565b91506020830135613f9981614595565b809150509250929050565b600080600060608486031215613fb8578081fd5b8335613fc381614595565b92506020840135613fd381614595565b91506040840135613fe381614595565b809150509250925092565b600080600060608486031215614002578283fd5b833561400d81614595565b9250602084013561401d81614595565b929592945050506040919091013590565b60008060408385031215614040578182fd5b823561404b81614595565b946020939093013593505050565b60008060006060848603121561406d578283fd5b833561407881614595565b9250602084013561401d816145bb565b600060408284031215614099578081fd5b82601f8301126140a7578081fd5b6040516040810181811067ffffffffffffffff821117156140ca576140ca61457f565b80604052508083856040860111156140e0578384fd5b835b60028110156141015781518352602092830192909101906001016140e2565b509195945050505050565b60006020828403121561411d578081fd5b8151613511816145ad565b6000806040838503121561413a578182fd5b823561404b816145ad565b600060208284031215614156578081fd5b5051919050565b600080600060608486031215614171578283fd5b61417a84613f1d565b925061418860208501613f1d565b9150604084015163ffffffff81168114613fe3578182fd5b6000806000606084860312156141b4578081fd5b83519250602084015191506040840151613fe3816145ad565b6000602082840312156141de578081fd5b8151613511816145bb565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60208082526019908201527f5265656e7472616e743a207265656e7472616e742063616c6c00000000000000604082015260600190565b6020808252601e908201527f4d617267696e2e6f70656e506f736974696f6e3a20464f5242494444454e0000604082015260600190565b6020808252600890820152676f766572666c6f7760c01b604082015260600190565b8281526080810161351160208301848051825260208082015190830152604090810151910152565b8581526020808201869052604080830186905260608301859052835160808401529083015160a083015282015160c082015260e081015b9695505050505050565b60ff861681526020808201869052604080830186905260608301859052835160808401529083015160a083015282015160c082015260e08101614335565b600080821280156001600160ff1b038490038513161561439f5761439f614553565b600160ff1b83900384128116156143b8576143b8614553565b50500190565b600082198211156143d1576143d1614553565b500190565b6000826143e5576143e5614569565b600160ff1b8214600019841416156143ff576143ff614553565b500590565b60008261441357614413614569565b500490565b60006001600160ff1b038184138284138082168684048611161561443e5761443e614553565b600160ff1b8487128281168783058912161561445c5761445c614553565b85871292508782058712848416161561447757614477614553565b8785058712818416161561448d5761448d614553565b505050929093029392505050565b60006001600160701b03808316818516818304811182151516156144c1576144c1614553565b02949350505050565b60008160001904831182151516156144e4576144e4614553565b500290565b60008083128015600160ff1b85018412161561450757614507614553565b6001600160ff1b038401831381161561452257614522614553565b50500390565b60008282101561453a5761453a614553565b500390565b60008261454e5761454e614569565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146145aa57600080fd5b50565b80151581146145aa57600080fd5b60ff811681146145aa57600080fdfea26469706673582212203bc6657c739aa0e0952a3a6b519d63f232a4a168d2e7d90c5ad3d87f07a9b34564736f6c63430008020033a2646970667358221220f0ee88c25034208a901ba59d1e52388f6edae287f291593e6e2f503a4c45144564736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630211406b1461005c5780630db586021461008b57806379502c55146100bc5780639703dd94146100e3578063cedc12d8146100f8575b600080fd5b61006f61006a3660046105eb565b61011f565b6040516001600160a01b03909116815260200160405180910390f35b61006f6100993660046105eb565b60006020818152928152604080822090935290815220546001600160a01b031681565b61006f7f000000000000000000000000000000000000000000000000000000000000000081565b6100f66100f136600461061d565b6103ff565b005b61006f7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101965760405162461bcd60e51b815260206004820152601560248201527420b6b6a330b1ba37b93c9d102327a92124a22222a760591b60448201526064015b60405180910390fd5b816001600160a01b0316836001600160a01b031614156102105760405162461bcd60e51b815260206004820152602f60248201527f4d617267696e466163746f72792e6372656174654d617267696e3a204944454e60448201526e544943414c5f41444452455353455360881b606482015260840161018d565b6001600160a01b0383161580159061023057506001600160a01b03821615155b61028d5760405162461bcd60e51b815260206004820152602860248201527f4d617267696e466163746f72792e6372656174654d617267696e3a205a45524f6044820152675f4144445245535360c01b606482015260840161018d565b6001600160a01b03838116600090815260208181526040808320868516845290915290205416156103115760405162461bcd60e51b815260206004820152602860248201527f4d617267696e466163746f72792e6372656174654d617267696e3a204d415247604482015267125397d1561254d560c21b606482015260840161018d565b6040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152600090604801604051602081830303815290604052805190602001209050600060405180602001610367906105c2565b6020820181038252601f19601f820116604052509050818151602083016000f56001600160a01b038681166000818152602081815260408083208a86168085529083529281902080546001600160a01b0319169587169586179055519384529396509290917f83346cf05e0d18b120f8744ef712d3d618c570274a2f60ff15138b7177235644910160405180910390a3505092915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461046f5760405162461bcd60e51b815260206004820152601560248201527420b6b6a330b1ba37b93c9d102327a92124a22222a760591b604482015260640161018d565b6001600160a01b0381166104d05760405162461bcd60e51b815260206004820152602260248201527f4d617267696e466163746f72792e696e69744d617267696e3a205a45524f5f416044820152614d4d60f01b606482015260840161018d565b6001600160a01b03808416600090815260208181526040808320868516845290915290205416806105515760405162461bcd60e51b815260206004820152602560248201527f4d617267696e466163746f72792e696e69744d617267696e3a205a45524f5f4d60448201526420a923a4a760d91b606482015260840161018d565b60405163c0c53b8b60e01b81526001600160a01b0385811660048301528481166024830152838116604483015282169063c0c53b8b90606401600060405180830381600087803b1580156105a457600080fd5b505af11580156105b8573d6000803e3d6000fd5b5050505050505050565b6146408061066083390190565b80356001600160a01b03811681146105e657600080fd5b919050565b600080604083850312156105fd578182fd5b610606836105cf565b9150610614602084016105cf565b90509250929050565b600080600060608486031215610631578081fd5b61063a846105cf565b9250610648602085016105cf565b9150610656604085016105cf565b9050925092509256fe60a060405234801561001057600080fd5b5033606081901b6080526146006100406000396000818161040d01528181611742015261180501526146006000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806384b4ce7811610104578063c45a0155116100a2578063cf70cb6911610071578063cf70cb6914610453578063d67fb55314610466578063d9caed1214610479578063ee4424e51461048c576101da565b8063c45a015514610408578063c55dae631461042f578063cab25eea14610442578063cd3293de1461044a576101da565b806392f4c2f2116100de57806392f4c2f2146103b6578063a8fe8f81146103bf578063b9f4ff55146103d2578063c0c53b8b146103f5576101da565b806384b4ce781461039257806385a5bd821461039a57806386b9d81f146103a3576101da565b806355e898101161017c578063763620ac1161014b578063763620ac1461034c57806376dc1c091461035f57806379502c5514610372578063833b0acb1461038a576101da565b806355e89810146102fd57806358557bb51461031057806365049cb514610330578063742fe1f814610339576101da565b80632a943945116101b85780632a9439451461029357806332cc6ae6146102a657806347e7ef24146102b957806352ed67dc146102ce576101da565b806316c19739146101df57806317fbe35414610252578063217a4b7014610268575b600080fd5b6102326101ed366004613f34565b6001600160a01b031660009081526004602090815260409182902082516060810184528154808252600183015493820184905260029092015493018390529092909190565b604080519384526020840192909252908201526060015b60405180910390f35b61025a61049f565b604051908152602001610249565b60035461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610249565b60015461027b906001600160a01b031681565b61025a6102b4366004613f34565b6104b6565b6102cc6102c736600461402e565b610530565b005b6102326102dc366004613f34565b60046020526000908152604090208054600182015460029092015490919083565b61025a61030b366004613f34565b61075a565b61025a61031e366004613f34565b60056020526000908152604090205481565b61025a60085481565b61025a61034736600461402e565b610770565b61025a61035a366004613f34565b610c76565b61025a61036d366004614128565b610ce0565b60005461027b9061010090046001600160a01b031681565b61025a610cf5565b61025a610d69565b61025a60075481565b6102326103b1366004613f6c565b610dbe565b61025a60095481565b6102cc6103cd366004613fee565b611272565b6103e56103e0366004613f34565b61164e565b6040519015158152602001610249565b6102cc610403366004613fa4565b611740565b61027b7f000000000000000000000000000000000000000000000000000000000000000081565b60025461027b906001600160a01b031681565b61025a6118b1565b61025a60065481565b6102cc61046136600461402e565b6118bb565b61025a610474366004614059565b611ab7565b6102cc610487366004613fee565b61262c565b61025a61049a366004613f34565b6126d2565b60006009546008546104b191906143be565b905090565b6001600160a01b0381166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015281610503846104fe6128e7565b612bab565b9050610527826000015182846020015161051d919061437d565b8460400151612c8a565b50949350505050565b60005460ff161561055c5760405162461bcd60e51b815260040161055390614246565b60405180910390fd5b60008054600160ff199091168117909155546001600160a01b031633146105c55760405162461bcd60e51b815260206004820152601b60248201527f4d617267696e2e6465706f7369743a20524551554952455f414d4d00000000006044820152606401610553565b600081116106155760405162461bcd60e51b815260206004820152601e60248201527f4d617267696e2e6465706f7369743a20414d4f554e545f49535f5a45524f00006044820152606401610553565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561065957600080fd5b505afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106919190614145565b9050600654816106a19190614528565b8211156106fc5760405162461bcd60e51b815260206004820152602360248201527f4d617267696e2e6465706f7369743a20494e53554646494349454e545f414d4f60448201526215539560ea1b6064820152608401610553565b8160065461070a91906143be565b6006556040518281526001600160a01b038416907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a250506000805460ff1916905550565b6000610768826104fe6128e7565b90505b919050565b6000805460ff16156107945760405162461bcd60e51b815260040161055390614246565b60008054600160ff199091161790819055604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b1580156107e957600080fd5b505afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610821919061410c565b61083d5760405162461bcd60e51b81526004016105539061427d565b6000610847610d69565b6001600160a01b0385166000908152600460209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152909150836108e25760405162461bcd60e51b815260206004820152602360248201527f4d617267696e2e636c6f7365506f736974696f6e3a205a45524f5f504f53495460448201526224a7a760e91b6064820152608401610553565b60006108f18260000151613016565b90508085111561094f5760405162461bcd60e51b8152602060048201526024808201527f4d617267696e2e636c6f7365506f736974696f6e3a2041424f56455f504f53496044820152632a24a7a760e11b6064820152608401610553565b81516000908113906109618886612bab565b9050600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b157600080fd5b505afa1580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190614145565b610a068560000151838760200151610a01919061437d565b613036565b10610a615760405162461bcd60e51b815260206004820152602560248201527f4d617267696e2e636c6f7365506f736974696f6e3a20444542545f524154494f6044820152642fa7ab22a960d91b6064820152608401610553565b610a6c888389613441565b955082846040015188610a7f91906144ca565b610a899190614404565b84604001818151610a9a9190614528565b9052508115610ae75786600854610ab19190614528565b6008558351610ac09088613518565b845260208401518190610ad3908861354b565b610add919061437d565b6020850152610b27565b86600954610af59190614528565b6009558351610b04908861354b565b845260208401518190610b179088613518565b610b21919061437d565b60208501525b8351158015610b3a575060008460200151125b15610bce5760015460035460025460208701516001600160a01b039384169363988370a3938d9390821692911690600090610b7490613016565b6040518663ffffffff1660e01b8152600401610b949594939291906141e9565b600060405180830381600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b50506000602087015250505b6001600160a01b038816600081815260056020908152604080832089905560048252918290208751815587820180516001830155888401805160029093019290925583518c81529283018b9052828401869052885160608401525160808301525160a082015290517f9b383459b14df5363d3d1327ae34de16258b94a771c13244410e22aa11787e259181900360c00190a250506000805460ff191690555091949350505050565b6001600160a01b0381166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015281610cbe846104fe6128e7565b9050610cd88260000151828460200151610a01919061437d565b949350505050565b6000610cec838361357e565b90505b92915050565b60006fffffffffffffffffffffffffffffffff801660095410610d5a5760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e6e6574506f736974696f6e3a204f564552464c4f57000000006044820152606401610553565b6008546009546104b19161354b565b600042610d746128e7565b600a819055600782905560408051838152602081018390529193507fbb9790c7d61d850cbc07d4e95659d1765b0907b4ed044959265472f776ec1a8c910160405180910390a15090565b600080548190819060ff1615610de65760405162461bcd60e51b815260040161055390614246565b60008054600160ff199091161790819055604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b158015610e3b57600080fd5b505afa158015610e4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e73919061410c565b610e8f5760405162461bcd60e51b81526004016105539061427d565b6000610e99610d69565b6001600160a01b03871660009081526004602090815260409182902082516060810184528154808252600183015493820184905260029092015493810193909352929350909180610f2c5760405162461bcd60e51b815260206004820152601f60248201527f4d617267696e2e6c69717569646174653a205a45524f5f504f534954494f4e006044820152606401610553565b610f3581613016565b9650600080821290610f478b87612bab565b9050600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190614145565b610fdd84610a01848861437d565b10156110365760405162461bcd60e51b815260206004820152602260248201527f4d617267696e2e6c69717569646174653a204e4f545f4c4951554944415441426044820152614c4560f01b6064820152608401610553565b600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561108757600080fd5b505afa15801561109b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bf9190613f50565b600154604051637e650a0560e01b81526001600160a01b039182166004820152602481018e905260006044820152911690637e650a059060640160606040518083038186803b15801561111157600080fd5b505afa158015611125573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114991906141a0565b9250509150806111625761115d848c61357e565b611164565b815b9950898b6111778f8488888c8787613643565b9a50851561119d5761118887613016565b6008546111959190614528565b6008556111b7565b6111a687613016565b6009546111b39190614528565b6009555b5050506001600160a01b038c1660009081526005602052604090208790555086156111e7576111e78b8b89613c12565b6001600160a01b03808c16600081815260046020526040808220828155600181018390556002019190915551918c169133907f9d24c3dea12298e139fff56a08afeb2d81d8d41351677d2e21c4dad89eda693f9061124e908e908e908e9089908e906142fe565b60405180910390a450506000805460ff191690555094979396509194509192505050565b60005460ff16156112955760405162461bcd60e51b815260040161055390614246565b6000805460ff19166001179055806113015760405162461bcd60e51b815260206004820152602960248201527f4d617267696e2e72656d6f76654d617267696e3a205a45524f5f5749544844526044820152681055d7d05353d5539560ba1b6064820152608401610553565b600054604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b15801561134857600080fd5b505afa15801561135c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061410c565b6113cc5760405162461bcd60e51b815260206004820152601e60248201527f4d617267696e2e72656d6f76654d617267696e3a20464f5242494444454e00006044820152606401610553565b60006113d6610d69565b6001600160a01b0385166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015291925061141e8684612bab565b9050600080611445846000015184866020015161143b919061437d565b8660400151612c8a565b91509150818611156114ae5760405162461bcd60e51b815260206004820152602c60248201527f4d617267696e2e72656d6f76654d617267696e3a204e4f545f454e4f5547485f60448201526b574954484452415741424c4560a01b6064820152608401610553565b600080846114bd60018a613daa565b6114c791906144e9565b90506000811315611572578281136114fb576114e281613016565b866040018181516114f39190614528565b905250611572565b61150d61150884836144e9565b613016565b91506000866000015112611546576115418361153788604001516001613daa90919063ffffffff16565b611508919061437d565b61156c565b61156c8361156288604001516001613daa90919063ffffffff16565b61150891906144e9565b60408701525b80866020015161158291906144e9565b60208088019182526001600160a01b038c1660009081526004825260408082208a51815593516001850155808a01516002909401939093556005909152208790556115ce8a8a8a613c12565b6040805189815260208082018890528183018590528851606083015288015160808201529087015160a08201526001600160a01b03808b1691908c16907facbeac375d5865b32775ef1296dac3dc42068eb9098044daf3e121176f4364db9060c00160405180910390a350506000805460ff191690555050505050505050565b6001600160a01b0381166000908152600460209081526040808320815160608101835281548152600182015493810193909352600201549082015281611696846104fe6128e7565b9050600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e657600080fd5b505afa1580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190614145565b6117368360000151838560200151610a01919061437d565b1015949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146117b85760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e696e697469616c697a653a20464f5242494444454e000000006044820152606401610553565b600280546001600160a01b038086166001600160a01b03199283161790925560038054858416908316179055600180548484169216919091179055604080516379502c5560e01b815290517f0000000000000000000000000000000000000000000000000000000000000000909216916379502c5591600480820192602092909190829003018186803b15801561184e57600080fd5b505afa158015611862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118869190613f50565b600060016101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050565b60006104b16128e7565b60005460ff16156118de5760405162461bcd60e51b815260040161055390614246565b6000805460ff191660011781556002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561192e57600080fd5b505afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190614145565b6006549091506119768183614528565b8311156119d45760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6164644d617267696e3a2057524f4e475f4445504f5349545f604482015265105353d5539560d21b6064820152608401610553565b6001600160a01b038416600090815260046020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252611a1e9085613518565b60208083019182526001600160a01b038716600090815260049091526040908190208351815591516001830155820151600290910155611a5e84836143be565b6006556040516001600160a01b038616907f2c8c31a18cfdc333bcf992ef4f59b0a2a92084c08f0e20497957abcb6c10bfcb90611a9e90879085906142d6565b60405180910390a250506000805460ff19169055505050565b6000805460ff1615611adb5760405162461bcd60e51b815260040161055390614246565b6000805460ff1916600117905560ff83161580611afb57508260ff166001145b611b515760405162461bcd60e51b815260206004820152602160248201527f4d617267696e2e6f70656e506f736974696f6e3a20494e56414c49445f5349446044820152604560f81b6064820152608401610553565b60008211611bb05760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6f70656e506f736974696f6e3a205a45524f5f51554f54455f604482015265105353d5539560d21b6064820152608401610553565b600054604051634a8c199760e11b81523360048201526101009091046001600160a01b031690639518332e9060240160206040518083038186803b158015611bf757600080fd5b505afa158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f919061410c565b611c4b5760405162461bcd60e51b81526004016105539061427d565b6000611c55610d69565b6001600160a01b03861660009081526004602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152929350611ca290613016565b90506000611cb08885612bab565b9050600080846000015160001415611cd957828560200151611cd2919061437d565b9050611e70565b845160001215611dad5760015460035460025487516000936001600160a01b039081169363bc9365769390821692911690611d1390613016565b60006040518563ffffffff1660e01b8152600401611d34949392919061421d565b604080518083038186803b158015611d4b57600080fd5b505afa158015611d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d839190614088565b602080820151908801519192508591611d9b91613518565b611da5919061437d565b915050611e70565b60015460025460035487516000936001600160a01b039081169363bc93657693908216929116908590611ddf90613016565b6040518563ffffffff1660e01b8152600401611dfe949392919061421d565b604080518083038186803b158015611e1557600080fd5b505afa158015611e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4d9190614088565b805160208801519192508591611e629161354b565b611e6c919061437d565b9150505b60008113611ed05760405162461bcd60e51b815260206004820152602760248201527f4d617267696e2e6f70656e506f736974696f6e3a20494e56414c49445f4d415260448201526647494e5f41434360c81b6064820152608401610553565b60015460408051630240bc6b60e21b815290516000926001600160a01b031691630902f1ac916004808301926060929190829003018186803b158015611f1557600080fd5b505afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4d919061415d565b50915050600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fa257600080fd5b505afa158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda9190613f50565b6001546001600160a01b0391821691637e650a0591166000611ffb88613016565b6040516001600160e01b031960e086901b1681526001600160a01b0390931660048401526024830191909152604482015260640160606040518083038186803b15801561204757600080fd5b505afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f91906141a0565b925092505060008161212c576001546002546003546001600160a01b039283169263bc93657692811691166120b389613016565b60006040518563ffffffff1660e01b81526004016120d4949392919061421d565b604080518083038186803b1580156120eb57600080fd5b505afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190614088565b6020015161212e565b825b9050600060019054906101000a90046001600160a01b03166001600160a01b0316639faa3c916040518163ffffffff1660e01b815260040160206040518083038186803b15801561217e57600080fd5b505afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b691906141cd565b60ff166121c48260c86144ca565b6121ce91906144ca565b846001600160701b0316600060019054906101000a90046001600160a01b03166001600160a01b031663e57d56366040518163ffffffff1660e01b815260040160206040518083038186803b15801561222657600080fd5b505afa15801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e9190614145565b61226891906144ca565b61227291906143be565b8161227f8661271061449b565b6001600160701b031661229291906144ca565b61229c9190614404565b955050505060ff8a161591506122b590508a828a613ddd565b9650600087116123165760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6f70656e506f736974696f6e3a2054494e595f51554f54455f604482015265105353d5539560d21b6064820152608401610553565b8451158061232957508451600013811515145b80612338575084516000128115145b156123575786856040015161234d91906143be565b60408601526123af565b83881015612389578385604001518961237091906144ca565b61237a9190614404565b856040015161234d9190614528565b87876123958683614528565b61239f91906144ca565b6123a99190614404565b60408601525b80156123f95784516123c1908961354b565b8552602085015183906123d49089613518565b6123de919061437d565b60208601526008546123f19089906143be565b600855612439565b84516124059089613518565b855260208501518390612418908961354b565b612422919061437d565b60208601526009546124359089906143be565b6009555b816124478660000151613016565b11156124a45760405162461bcd60e51b815260206004820152602660248201527f4d617267696e2e6f70656e506f736974696f6e3a20494e49545f4d415247494e6044820152655f524154494f60d01b6064820152608401610553565b600060019054906101000a90046001600160a01b03166001600160a01b031663fdcb648c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f257600080fd5b505afa158015612506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252a9190614145565b61253c86600001518760200151613036565b106125995760405162461bcd60e51b815260206004820152602760248201527f4d617267696e2e6f70656e506f736974696f6e3a2057494c4c5f42455f4c49516044820152661552511055115160ca1b6064820152608401610553565b6001600160a01b038a1660008181526005602090815260408083208a905560048252918290208851815590880151600182015587820151600290910155517fcc7ddfa701c3ec1faad0e3717271cf26abfbf7d48444448921bb9fbc27b26fd79061260c908c908b908d9089908c9061433f565b60405180910390a250506000805460ff1916905550929695505050505050565b60005460ff161561264f5760405162461bcd60e51b815260040161055390614246565b60008054600160ff199091168117909155546001600160a01b031633146126b85760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e77697468647261773a20524551554952455f414d4d000000006044820152606401610553565b6126c3838383613c12565b50506000805460ff1916905550565b6001600160a01b038116600090815260046020908152604080832081516060810183528154808252600183015494820194909452600290910154918101919091529061271d90613016565b61272b57600091505061076b565b600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561277c57600080fd5b505afa158015612790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b49190613f50565b60015484516001600160a01b0392831692637e650a059216906127d690613016565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526000604482015260640160606040518083038186803b15801561282157600080fd5b505afa158015612835573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285991906141a0565b925050915060008161288357835161287e90600081129061287990613016565b61357e565b612885565b825b90506000846000015112156128bd576128b6816128b086604001516001613daa90919063ffffffff16565b9061354b565b94506128de565b8351600012156128de5760408401516128db906128b0600184613daa565b94505b50505050919050565b600080600060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561293857600080fd5b505afa15801561294c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129709190613f50565b60015460405163011ad57960e61b81526001600160a01b0391821660048201529116906346b55e409060240160206040518083038186803b1580156129b457600080fd5b505afa1580156129c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ec9190614145565b905060008060019054906101000a90046001600160a01b03166001600160a01b031663838664696040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3d57600080fd5b505afa158015612a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a759190614145565b9050600060095482612a8791906144ca565b60085411158015612aa65750600854612aa090836144ca565b60095411155b8015612abf5750600954158015612abd5750600854155b155b15612b15576000831215612af357612aee600854612ae860095486613daa90919063ffffffff16565b90613e9e565b612b0e565b612b0e600954612ae860085486613daa90919063ffffffff16565b9050612b7e565b600954612b2290836144ca565b6008541115612b48576000831215612b3e57612aee8383613e9e565b612b0e8383613daa565b600854612b5590836144ca565b6009541115612b7b576000831215612b7157612aee8383613daa565b612b0e8383613e9e565b50815b600a54612b9960075442612b929190614528565b8390613daa565b612ba3919061437d565b935050505090565b6001600160a01b03821660009081526004602090815260408083208151606081018352815480825260018301549482019490945260029091015491810191909152908290612bfb57506000612c46565b8151600013612c2657612c21612c1960006128798560000151613016565b600090613518565b612c43565b612c43612c3b60016128798560000151613016565b60009061354b565b90505b6001600160a01b038516600090815260056020526040902054612c8190670de0b6b3a764000090612c7790876144e9565b612ae89084614418565b95945050505050565b60008084612cb3576000841315612ca957612ca484613016565b612cac565b60005b915061300e565b6000851215612e77576001546002546003546000926001600160a01b039081169263bc93657692908216911684612ce98b613016565b6040518563ffffffff1660e01b8152600401612d08949392919061421d565b604080518083038186803b158015612d1f57600080fd5b505afa158015612d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d579190614088565b8051909150600090612d6b906127106144ca565b905060008060019054906101000a90046001600160a01b03166001600160a01b031663e57d56366040518163ffffffff1660e01b815260040160206040518083038186803b158015612dbc57600080fd5b505afa158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df49190614145565b612e0090612710614528565b90506000612e0e8284614404565b9050612e1a828461453f565b15612e2d57612e2a6001826143be565b90505b8351612e3e906128b060018a613daa565b945080612e4a89613016565b1115612e695780612e5a89613016565b612e649190614528565b612e6c565b60005b95505050505061300e565b6001546003546002546000926001600160a01b039081169263bc936576929082169116612ea38a613016565b60006040518563ffffffff1660e01b8152600401612ec4949392919061421d565b604080518083038186803b158015612edb57600080fd5b505afa158015612eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f139190614088565b90506000612710600060019054906101000a90046001600160a01b03166001600160a01b031663e57d56366040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6857600080fd5b505afa158015612f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa09190614145565b612fac90612710614528565b6020840151612fbb91906144ca565b612fc59190614404565b9050612fde856128b08460016020020151600190613daa565b92506000612fec8783613518565b905060008113156130055761300081613016565b613008565b60005b94505050505b935093915050565b6000808212156130325761302b8260006144e9565b905061076b565b5090565b60008215806130515750600083138015613051575060008212155b1561305e57506000610cef565b60008312801561306f575060008213155b1561307d5750612710610cef565b600083131561327057600061309184613016565b905060008060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130e257600080fd5b505afa1580156130f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311a9190613f50565b60015460005460408051639faa3c9160e01b815290516001600160a01b0394851694634c0000dc9481169361010090041691639faa3c91916004808301926020929190829003018186803b15801561317157600080fd5b505afa158015613185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a991906141cd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604481018590526000606482015260840160206040518083038186803b1580156131fe57600080fd5b505afa158015613212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132369190614145565b90508015613263578061324885613016565b613254906127106144ca565b61325e9190614404565b613267565b6127105b92505050610cef565b600061327b84613016565b905060008060019054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132cc57600080fd5b505afa1580156132e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133049190613f50565b60015460005460408051639faa3c9160e01b815290516001600160a01b0394851694634c0000dc9481169361010090041691639faa3c91916004808301926020929190829003018186803b15801561335b57600080fd5b505afa15801561336f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339391906141cd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260ff166024820152604481018590526001606482015260840160206040518083038186803b1580156133e857600080fd5b505afa1580156133fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134209190614145565b905061342b84613016565b613437826127106144ca565b612c819190614404565b60008060008060006134538787613ed1565b6001546040516371a1ff0960e11b815294985092965090945092506000916001600160a01b039091169063e343fe1290613499908c9089908990899089906004016141e9565b6040805180830381600087803b1580156134b257600080fd5b505af11580156134c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ea9190614088565b9050876134ff578060015b6020020151613509565b8060005b60200201515b955050505050505b9392505050565b60006001600160ff1b038211156135415760405162461bcd60e51b8152600401610553906142b4565b610cec828461437d565b60006001600160ff1b038211156135745760405162461bcd60e51b8152600401610553906142b4565b610cec82846144e9565b60008060008060006135908787613ed1565b600154604051635e49b2bb60e11b815294985092965090945092506000916001600160a01b039091169063bc936576906135d490889088908890889060040161421d565b604080518083038186803b1580156135eb57600080fd5b505afa1580156135ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136239190614088565b905087613634576020810151613637565b80515b98975050505050505050565b6000808661366557856136568686613518565b613660919061437d565b61367a565b85613670868661354b565b61367a919061437d565b905060008112613a6b57612710600060019054906101000a90046001600160a01b03166001600160a01b0316636dd26a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156136d557600080fd5b505afa1580156136e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370d9190614145565b61371683613016565b61372091906144ca565b61372a9190614404565b9150876138215786156137ae5760015460025460035460405163988370a360e01b81526001600160a01b039384169363988370a393613777938f939183169216908a908a906004016141e9565b600060405180830381600087803b15801561379157600080fd5b505af11580156137a5573d6000803e3d6000fd5b50505050613821565b60015460035460025460405163988370a360e01b81526001600160a01b039384169363988370a3936137ee938f9391831692169089908b906004016141e9565b600060405180830381600087803b15801561380857600080fd5b505af115801561381c573d6000803e3d6000fd5b505050505b8161382b82613016565b1115613a66576001546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b15801561387657600080fd5b505afa15801561388a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ae9190613f50565b6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156138e657600080fd5b505afa1580156138fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391e9190613f50565b90506001600160a01b038116156139d9576002546001600160a01b031663a9059cbb828561394b86613016565b6139559190614528565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561399b57600080fd5b505af11580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d3919061410c565b50613a64565b6001546002546003546001600160a01b039283169263988370a3928e92908216911687613a0588613016565b613a0f9190614528565b60006040518663ffffffff1660e01b8152600401613a319594939291906141e9565b600060405180830381600087803b158015613a4b57600080fd5b505af1158015613a5f573d6000803e3d6000fd5b505050505b505b613c06565b87613b86578615613afe576001546002546003546001600160a01b039283169263988370a3928d929082169116613aa68b6115378c8a61354b565b886040518663ffffffff1660e01b8152600401613ac79594939291906141e9565b600060405180830381600087803b158015613ae157600080fd5b505af1158015613af5573d6000803e3d6000fd5b50505050613a66565b6001546003546002546001600160a01b039283169263988370a3928d92908216911687613b2f8c6115378d8b61354b565b6040518663ffffffff1660e01b8152600401613b4f9594939291906141e9565b600060405180830381600087803b158015613b6957600080fd5b505af1158015613b7d573d6000803e3d6000fd5b50505050613c06565b6001546003546002546001600160a01b039283169263988370a3928d9290821691166000613bb387613016565b6040518663ffffffff1660e01b8152600401613bd39594939291906141e9565b600060405180830381600087803b158015613bed57600080fd5b505af1158015613c01573d6000803e3d6000fd5b505050505b50979650505050505050565b60008111613c625760405162461bcd60e51b815260206004820181905260248201527f4d617267696e2e5f77697468647261773a20414d4f554e545f49535f5a45524f6044820152606401610553565b600654811115613cc05760405162461bcd60e51b8152602060048201526024808201527f4d617267696e2e5f77697468647261773a204e4f545f454e4f5547485f5245536044820152634552564560e01b6064820152608401610553565b80600654613cce9190614528565b60065560025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015613d1f57600080fd5b505af1158015613d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d57919061410c565b50816001600160a01b0316836001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb83604051613d9d91815260200190565b60405180910390a3505050565b60006001600160ff1b03821115613dd35760405162461bcd60e51b8152600401610553906142b4565b610cec8284614418565b6000806000806000613df0871587613ed1565b6001546040516371a1ff0960e11b815294985092965090945092506000916001600160a01b039091169063e343fe1290613e36908c9089908990899089906004016141e9565b6040805180830381600087803b158015613e4f57600080fd5b505af1158015613e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e879190614088565b905087613e96578060006134f5565b806001613503565b60006001600160ff1b03821115613ec75760405162461bcd60e51b8152600401610553906142b4565b610cec82846143d6565b6000806000808515613efa57506003546002546001600160a01b03908116945016915083613f14565b6003546002546001600160a01b0391821695501692508491505b92959194509250565b80516001600160701b038116811461076b57600080fd5b600060208284031215613f45578081fd5b813561351181614595565b600060208284031215613f61578081fd5b815161351181614595565b60008060408385031215613f7e578081fd5b8235613f8981614595565b91506020830135613f9981614595565b809150509250929050565b600080600060608486031215613fb8578081fd5b8335613fc381614595565b92506020840135613fd381614595565b91506040840135613fe381614595565b809150509250925092565b600080600060608486031215614002578283fd5b833561400d81614595565b9250602084013561401d81614595565b929592945050506040919091013590565b60008060408385031215614040578182fd5b823561404b81614595565b946020939093013593505050565b60008060006060848603121561406d578283fd5b833561407881614595565b9250602084013561401d816145bb565b600060408284031215614099578081fd5b82601f8301126140a7578081fd5b6040516040810181811067ffffffffffffffff821117156140ca576140ca61457f565b80604052508083856040860111156140e0578384fd5b835b60028110156141015781518352602092830192909101906001016140e2565b509195945050505050565b60006020828403121561411d578081fd5b8151613511816145ad565b6000806040838503121561413a578182fd5b823561404b816145ad565b600060208284031215614156578081fd5b5051919050565b600080600060608486031215614171578283fd5b61417a84613f1d565b925061418860208501613f1d565b9150604084015163ffffffff81168114613fe3578182fd5b6000806000606084860312156141b4578081fd5b83519250602084015191506040840151613fe3816145ad565b6000602082840312156141de578081fd5b8151613511816145bb565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60208082526019908201527f5265656e7472616e743a207265656e7472616e742063616c6c00000000000000604082015260600190565b6020808252601e908201527f4d617267696e2e6f70656e506f736974696f6e3a20464f5242494444454e0000604082015260600190565b6020808252600890820152676f766572666c6f7760c01b604082015260600190565b8281526080810161351160208301848051825260208082015190830152604090810151910152565b8581526020808201869052604080830186905260608301859052835160808401529083015160a083015282015160c082015260e081015b9695505050505050565b60ff861681526020808201869052604080830186905260608301859052835160808401529083015160a083015282015160c082015260e08101614335565b600080821280156001600160ff1b038490038513161561439f5761439f614553565b600160ff1b83900384128116156143b8576143b8614553565b50500190565b600082198211156143d1576143d1614553565b500190565b6000826143e5576143e5614569565b600160ff1b8214600019841416156143ff576143ff614553565b500590565b60008261441357614413614569565b500490565b60006001600160ff1b038184138284138082168684048611161561443e5761443e614553565b600160ff1b8487128281168783058912161561445c5761445c614553565b85871292508782058712848416161561447757614477614553565b8785058712818416161561448d5761448d614553565b505050929093029392505050565b60006001600160701b03808316818516818304811182151516156144c1576144c1614553565b02949350505050565b60008160001904831182151516156144e4576144e4614553565b500290565b60008083128015600160ff1b85018412161561450757614507614553565b6001600160ff1b038401831381161561452257614522614553565b50500390565b60008282101561453a5761453a614553565b500390565b60008261454e5761454e614569565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146145aa57600080fd5b50565b80151581146145aa57600080fd5b60ff811681146145aa57600080fdfea26469706673582212203bc6657c739aa0e0952a3a6b519d63f232a4a168d2e7d90c5ad3d87f07a9b34564736f6c63430008020033a2646970667358221220f0ee88c25034208a901ba59d1e52388f6edae287f291593e6e2f503a4c45144564736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
