0x608060405260405180602001604052806000815250600990805190602001906200002b92919062000360565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a90805190602001906200007992919062000360565b5066038d7ea4c68000600c55600a600d556002600e556032600f556127106010556001601160006101000a81548160ff0219169083151502179055506001601160016101000a81548160ff021916908315150217905550348015620000dd57600080fd5b506040518060400160405280601581526020017f4d7574616e7441706547616e67436c75625465737400000000000000000000008152506040518060400160405280600581526020017f4d4147435400000000000000000000000000000000000000000000000000000081525081600190805190602001906200016292919062000360565b5080600290805190602001906200017b92919062000360565b5050506000620001906200028360201b60201c565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060016008819055506200027d6040518060400160405280601a81526020017f697066733a2f2f5f5f4349445f5f2f68696464656e2e6a736f6e0000000000008152506200028b60201b60201c565b620004f8565b600033905090565b6200029b6200028360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002c16200033660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200031a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003119062000437565b60405180910390fd5b80600b90805190602001906200033292919062000360565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200036e906200046a565b90600052602060002090601f016020900481019282620003925760008555620003de565b82601f10620003ad57805160ff1916838001178555620003de565b82800160010185558215620003de579182015b82811115620003dd578251825591602001919060010190620003c0565b5b509050620003ed9190620003f1565b5090565b5b808211156200040c576000816000905550600101620003f2565b5090565b60006200041f60208362000459565b91506200042c82620004cf565b602082019050919050565b60006020820190508181036000830152620004528162000410565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200048357607f821691505b602082108114156200049a5762000499620004a0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61513380620005086000396000f3fe60806040526004361061025c5760003560e01c80635503a0e811610144578063a22cb465116100b6578063d5abeb011161007a578063d5abeb01146108c2578063e0a80853146108ed578063e985e9c514610916578063f2fde38b14610953578063f51f96dd1461097c578063f968adbe146109a75761025c565b8063a22cb465146107df578063b88d4fde14610808578063bde12d7314610831578063c7c39ffc1461085a578063c87b56dd146108855761025c565b80637ec4a659116101085780637ec4a659146106f2578063805dcae51461071b5780638ad433ac146107445780638ba4cc3c146107605780638da5cb5b1461078957806395d89b41146107b45761025c565b80635503a0e81461060b5780635c975abb146106365780636352211e1461066157806370a082311461069e578063715018a6146106db5761025c565b80632db11544116101dd57806342842e0e116101a157806342842e0e146104e9578063438b630014610512578063475133341461054f5780634f6ccce71461057a5780634fdd43cb146105b757806351830227146105e05761025c565b80632db11544146104275780632f745c59146104435780632fbba11514610480578063308d7798146104a95780633ccfd60b146104d25761025c565b806316c38b3c1161022457806316c38b3c1461035857806318160ddd146103815780631919fed7146103ac578063228025e8146103d557806323b872dd146103fe5761025c565b806301ffc9a71461026157806306fdde031461029e578063081812fc146102c9578063095ea7b31461030657806316ba10e01461032f575b600080fd5b34801561026d57600080fd5b50610288600480360381019061028391906139c5565b6109d2565b604051610295919061410c565b60405180910390f35b3480156102aa57600080fd5b506102b3610b1c565b6040516102c09190614127565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb9190613a68565b610bae565b6040516102fd9190614083565b60405180910390f35b34801561031257600080fd5b5061032d60048036038101906103289190613958565b610c33565b005b34801561033b57600080fd5b5061035660048036038101906103519190613a1f565b610d4c565b005b34801561036457600080fd5b5061037f600480360381019061037a9190613998565b610de2565b005b34801561038d57600080fd5b50610396610e7b565b6040516103a391906144a9565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613a68565b610e84565b005b3480156103e157600080fd5b506103fc60048036038101906103f79190613a68565b610f0a565b005b34801561040a57600080fd5b5061042560048036038101906104209190613842565b610f90565b005b610441600480360381019061043c9190613a68565b610fa0565b005b34801561044f57600080fd5b5061046a60048036038101906104659190613958565b611048565b60405161047791906144a9565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613a68565b61123a565b005b3480156104b557600080fd5b506104d060048036038101906104cb9190613a68565b611313565b005b3480156104de57600080fd5b506104e7611399565b005b3480156104f557600080fd5b50610510600480360381019061050b9190613842565b6114c4565b005b34801561051e57600080fd5b50610539600480360381019061053491906137d5565b6114e4565b60405161054691906140ea565b60405180910390f35b34801561055b57600080fd5b506105646115ef565b60405161057191906144a9565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190613a68565b6115f5565b6040516105ae91906144a9565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190613a1f565b611648565b005b3480156105ec57600080fd5b506105f56116de565b604051610602919061410c565b60405180910390f35b34801561061757600080fd5b506106206116f1565b60405161062d9190614127565b60405180910390f35b34801561064257600080fd5b5061064b61177f565b604051610658919061410c565b60405180910390f35b34801561066d57600080fd5b5061068860048036038101906106839190613a68565b611792565b6040516106959190614083565b60405180910390f35b3480156106aa57600080fd5b506106c560048036038101906106c091906137d5565b6117a8565b6040516106d291906144a9565b60405180910390f35b3480156106e757600080fd5b506106f0611891565b005b3480156106fe57600080fd5b5061071960048036038101906107149190613a1f565b6119ce565b005b34801561072757600080fd5b50610742600480360381019061073d9190613a68565b611a64565b005b61075e60048036038101906107599190613a68565b611aea565b005b34801561076c57600080fd5b5061078760048036038101906107829190613958565b611b91565b005b34801561079557600080fd5b5061079e611cc2565b6040516107ab9190614083565b60405180910390f35b3480156107c057600080fd5b506107c9611cec565b6040516107d69190614127565b60405180910390f35b3480156107eb57600080fd5b5061080660048036038101906108019190613918565b611d7e565b005b34801561081457600080fd5b5061082f600480360381019061082a9190613895565b611eff565b005b34801561083d57600080fd5b5061085860048036038101906108539190613a68565b611f5b565b005b34801561086657600080fd5b5061086f611fe1565b60405161087c91906144a9565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a79190613a68565b611fe7565b6040516108b99190614127565b60405180910390f35b3480156108ce57600080fd5b506108d7612140565b6040516108e491906144a9565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190613998565b612146565b005b34801561092257600080fd5b5061093d60048036038101906109389190613802565b6121df565b60405161094a919061410c565b60405180910390f35b34801561095f57600080fd5b5061097a600480360381019061097591906137d5565b612273565b005b34801561098857600080fd5b5061099161241f565b60405161099e91906144a9565b60405180910390f35b3480156109b357600080fd5b506109bc612425565b6040516109c991906144a9565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a9d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b0557507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b155750610b148261242b565b5b9050919050565b606060018054610b2b906147b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b57906147b2565b8015610ba45780601f10610b7957610100808354040283529160200191610ba4565b820191906000526020600020905b815481529060010190602001808311610b8757829003601f168201915b5050505050905090565b6000610bb982612495565b610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef90614489565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c3e82611792565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690614389565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cce6124a2565b73ffffffffffffffffffffffffffffffffffffffff161480610cfd5750610cfc81610cf76124a2565b6121df565b5b610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390614289565b60405180910390fd5b610d478383836124aa565b505050565b610d546124a2565b73ffffffffffffffffffffffffffffffffffffffff16610d72611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf906142e9565b60405180910390fd5b80600a9080519060200190610dde9291906135af565b5050565b610dea6124a2565b73ffffffffffffffffffffffffffffffffffffffff16610e08611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e55906142e9565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b60008054905090565b610e8c6124a2565b73ffffffffffffffffffffffffffffffffffffffff16610eaa611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef7906142e9565b60405180910390fd5b80600c8190555050565b610f126124a2565b73ffffffffffffffffffffffffffffffffffffffff16610f30611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d906142e9565b60405180910390fd5b8060108190555050565b610f9b83838361255c565b505050565b601160009054906101000a900460ff1615610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe790614309565b60405180910390fd5b600f54610ffb610e7b565b101561103c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611033906141c9565b60405180910390fd5b61104581612a9c565b50565b6000611053836117a8565b8210611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90614149565b60405180910390fd5b600061109e610e7b565b905060008060005b838110156111f8576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461119857806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111ea57868414156111e1578195505050505050611234565b83806001019450505b5080806001019150506110a6565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90614449565b60405180910390fd5b92915050565b6112426124a2565b73ffffffffffffffffffffffffffffffffffffffff16611260611cc2565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad906142e9565b60405180910390fd5b601160009054906101000a900460ff1615611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90614309565b60405180910390fd5b6113103382612cae565b50565b61131b6124a2565b73ffffffffffffffffffffffffffffffffffffffff16611339611cc2565b73ffffffffffffffffffffffffffffffffffffffff161461138f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611386906142e9565b60405180910390fd5b80600e8190555050565b6113a16124a2565b73ffffffffffffffffffffffffffffffffffffffff166113bf611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c906142e9565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161143b9061406e565b60006040518083038185875af1925050503d8060008114611478576040519150601f19603f3d011682016040523d82523d6000602084013e61147d565b606091505b50509050806114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b8906143a9565b60405180910390fd5b50565b6114df83838360405180602001604052806000815250611eff565b505050565b606060006114f1836117a8565b905060008167ffffffffffffffff81111561150f5761150e61494b565b5b60405190808252806020026020018201604052801561153d5781602001602082028036833780820191505090505b50905060006001905060005b838110801561155a57506010548211155b156115e357600061156a83611792565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115cf57828483815181106115b4576115b361491c565b5b60200260200101818152505081806115cb90614815565b9250505b82806115da90614815565b93505050611549565b82945050505050919050565b600f5481565b60006115ff610e7b565b8210611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906141e9565b60405180910390fd5b819050919050565b6116506124a2565b73ffffffffffffffffffffffffffffffffffffffff1661166e611cc2565b73ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb906142e9565b60405180910390fd5b80600b90805190602001906116da9291906135af565b5050565b601160019054906101000a900460ff1681565b600a80546116fe906147b2565b80601f016020809104026020016040519081016040528092919081815260200182805461172a906147b2565b80156117775780601f1061174c57610100808354040283529160200191611777565b820191906000526020600020905b81548152906001019060200180831161175a57829003601f168201915b505050505081565b601160009054906101000a900460ff1681565b600061179d82612ccc565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611810906142a9565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6118996124a2565b73ffffffffffffffffffffffffffffffffffffffff166118b7611cc2565b73ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611904906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6119d66124a2565b73ffffffffffffffffffffffffffffffffffffffff166119f4611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a41906142e9565b60405180910390fd5b8060099080519060200190611a609291906135af565b5050565b611a6c6124a2565b73ffffffffffffffffffffffffffffffffffffffff16611a8a611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad7906142e9565b60405180910390fd5b80600d8190555050565b601160009054906101000a900460ff1615611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3190614309565b60405180910390fd5b600f54611b45610e7b565b10611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90614269565b60405180910390fd5b611b8e81612a9c565b50565b611b996124a2565b73ffffffffffffffffffffffffffffffffffffffff16611bb7611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c04906142e9565b60405180910390fd5b601160009054906101000a900460ff1615611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5490614309565b60405180910390fd5b601054611c68610e7b565b82611c7391906145e7565b1115611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab906143c9565b60405180910390fd5b611cbe8282612cae565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611cfb906147b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d27906147b2565b8015611d745780601f10611d4957610100808354040283529160200191611d74565b820191906000526020600020905b815481529060010190602001808311611d5757829003601f168201915b5050505050905090565b611d866124a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb90614349565b60405180910390fd5b8060066000611e016124a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611eae6124a2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ef3919061410c565b60405180910390a35050565b611f0a84848461255c565b611f1684848484612e66565b611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c906143e9565b60405180910390fd5b50505050565b611f636124a2565b73ffffffffffffffffffffffffffffffffffffffff16611f81611cc2565b73ffffffffffffffffffffffffffffffffffffffff1614611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce906142e9565b60405180910390fd5b80600f8190555050565b600e5481565b6060611ff282612495565b612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890614329565b60405180910390fd5b60001515601160019054906101000a900460ff16151514156120df57600b805461205a906147b2565b80601f0160208091040260200160405190810160405280929190818152602001828054612086906147b2565b80156120d35780601f106120a8576101008083540402835291602001916120d3565b820191906000526020600020905b8154815290600101906020018083116120b657829003601f168201915b5050505050905061213b565b60006120e9612ffd565b905060008151116121095760405180602001604052806000815250612137565b806121138461308f565b600a6040516020016121279392919061403d565b6040516020818303038152906040525b9150505b919050565b60105481565b61214e6124a2565b73ffffffffffffffffffffffffffffffffffffffff1661216c611cc2565b73ffffffffffffffffffffffffffffffffffffffff16146121c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b9906142e9565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61227b6124a2565b73ffffffffffffffffffffffffffffffffffffffff16612299611cc2565b73ffffffffffffffffffffffffffffffffffffffff16146122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e6906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235690614189565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b600d5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061256782612ccc565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661258e6124a2565b73ffffffffffffffffffffffffffffffffffffffff1614806125ea57506125b36124a2565b73ffffffffffffffffffffffffffffffffffffffff166125d284610bae565b73ffffffffffffffffffffffffffffffffffffffff16145b80612606575061260582600001516126006124a2565b6121df565b5b905080612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263f90614369565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b1906142c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561272a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272190614209565b60405180910390fd5b61273785858560016131f0565b61274760008484600001516124aa565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a2c5761298b81612495565b15612a2b5782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a9585858560016131f6565b5050505050565b6000600c549050600082905060008311612aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae290614169565b60405180910390fd5b600d548311158015612afd5750600083115b612b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3390614249565b60405180910390fd5b601054612b47610e7b565b84612b5291906145e7565b1115612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a906143c9565b60405180910390fd5b612b9b611cc2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c9f576000600f5484612bdb610e7b565b612be591906145e7565b11158015612bf55750600e548411155b90508015612c065760009250612c4f565b600f54612c11610e7b565b1015612c3e57612c1f610e7b565b600f54612c2c91906146c8565b84612c3791906146c8565b9150612c4e565b600284612c4b919061466e565b93505b5b8183612c5b919061466e565b341015612c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9490614229565b60405180910390fd5b505b612ca93384612cae565b505050565b612cc88282604051806020016040528060008152506131fc565b5050565b612cd4613635565b612cdd82612495565b612d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d13906141a9565b60405180910390fd5b60008290505b60008110612e25576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612e16578092505050612e61565b50808060019003915050612d22565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5890614469565b60405180910390fd5b919050565b6000612e878473ffffffffffffffffffffffffffffffffffffffff1661320e565b15612ff0578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612eb06124a2565b8786866040518563ffffffff1660e01b8152600401612ed2949392919061409e565b602060405180830381600087803b158015612eec57600080fd5b505af1925050508015612f1d57506040513d601f19601f82011682018060405250810190612f1a91906139f2565b60015b612fa0573d8060008114612f4d576040519150601f19603f3d011682016040523d82523d6000602084013e612f52565b606091505b50600081511415612f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8f906143e9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ff5565b600190505b949350505050565b60606009805461300c906147b2565b80601f0160208091040260200160405190810160405280929190818152602001828054613038906147b2565b80156130855780601f1061305a57610100808354040283529160200191613085565b820191906000526020600020905b81548152906001019060200180831161306857829003601f168201915b5050505050905090565b606060008214156130d7576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506131eb565b600082905060005b600082146131095780806130f290614815565b915050600a82613102919061463d565b91506130df565b60008167ffffffffffffffff8111156131255761312461494b565b5b6040519080825280601f01601f1916602001820160405280156131575781602001600182028036833780820191505090505b5090505b600085146131e45760018261317091906146c8565b9150600a8561317f919061485e565b603061318b91906145e7565b60f81b8183815181106131a1576131a061491c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856131dd919061463d565b945061315b565b8093505050505b919050565b50505050565b50505050565b6132098383836001613231565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156132a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329e90614409565b60405180910390fd5b60008414156132eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e290614429565b60405180910390fd5b6132f860008683876131f0565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561359257818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4831561357d5761353d6000888488612e66565b61357c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613573906143e9565b60405180910390fd5b5b818060010192505080806001019150506134c6565b5080600081905550506135a860008683876131f6565b5050505050565b8280546135bb906147b2565b90600052602060002090601f0160209004810192826135dd5760008555613624565b82601f106135f657805160ff1916838001178555613624565b82800160010185558215613624579182015b82811115613623578251825591602001919060010190613608565b5b509050613631919061366f565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613688576000816000905550600101613670565b5090565b600061369f61369a846144e9565b6144c4565b9050828152602081018484840111156136bb576136ba61497f565b5b6136c6848285614770565b509392505050565b60006136e16136dc8461451a565b6144c4565b9050828152602081018484840111156136fd576136fc61497f565b5b613708848285614770565b509392505050565b60008135905061371f816150a1565b92915050565b600081359050613734816150b8565b92915050565b600081359050613749816150cf565b92915050565b60008151905061375e816150cf565b92915050565b600082601f8301126137795761377861497a565b5b813561378984826020860161368c565b91505092915050565b600082601f8301126137a7576137a661497a565b5b81356137b78482602086016136ce565b91505092915050565b6000813590506137cf816150e6565b92915050565b6000602082840312156137eb576137ea614989565b5b60006137f984828501613710565b91505092915050565b6000806040838503121561381957613818614989565b5b600061382785828601613710565b925050602061383885828601613710565b9150509250929050565b60008060006060848603121561385b5761385a614989565b5b600061386986828701613710565b935050602061387a86828701613710565b925050604061388b868287016137c0565b9150509250925092565b600080600080608085870312156138af576138ae614989565b5b60006138bd87828801613710565b94505060206138ce87828801613710565b93505060406138df878288016137c0565b925050606085013567ffffffffffffffff811115613900576138ff614984565b5b61390c87828801613764565b91505092959194509250565b6000806040838503121561392f5761392e614989565b5b600061393d85828601613710565b925050602061394e85828601613725565b9150509250929050565b6000806040838503121561396f5761396e614989565b5b600061397d85828601613710565b925050602061398e858286016137c0565b9150509250929050565b6000602082840312156139ae576139ad614989565b5b60006139bc84828501613725565b91505092915050565b6000602082840312156139db576139da614989565b5b60006139e98482850161373a565b91505092915050565b600060208284031215613a0857613a07614989565b5b6000613a168482850161374f565b91505092915050565b600060208284031215613a3557613a34614989565b5b600082013567ffffffffffffffff811115613a5357613a52614984565b5b613a5f84828501613792565b91505092915050565b600060208284031215613a7e57613a7d614989565b5b6000613a8c848285016137c0565b91505092915050565b6000613aa1838361401f565b60208301905092915050565b613ab6816146fc565b82525050565b6000613ac782614570565b613ad1818561459e565b9350613adc8361454b565b8060005b83811015613b0d578151613af48882613a95565b9750613aff83614591565b925050600181019050613ae0565b5085935050505092915050565b613b238161470e565b82525050565b6000613b348261457b565b613b3e81856145af565b9350613b4e81856020860161477f565b613b578161498e565b840191505092915050565b6000613b6d82614586565b613b7781856145cb565b9350613b8781856020860161477f565b613b908161498e565b840191505092915050565b6000613ba682614586565b613bb081856145dc565b9350613bc081856020860161477f565b80840191505092915050565b60008154613bd9816147b2565b613be381866145dc565b94506001821660008114613bfe5760018114613c0f57613c42565b60ff19831686528186019350613c42565b613c188561455b565b60005b83811015613c3a57815481890152600182019150602081019050613c1b565b838801955050505b50505092915050565b6000613c586022836145cb565b9150613c638261499f565b604082019050919050565b6000613c7b602e836145cb565b9150613c86826149ee565b604082019050919050565b6000613c9e6026836145cb565b9150613ca982614a3d565b604082019050919050565b6000613cc1602a836145cb565b9150613ccc82614a8c565b604082019050919050565b6000613ce4601a836145cb565b9150613cef82614adb565b602082019050919050565b6000613d076023836145cb565b9150613d1282614b04565b604082019050919050565b6000613d2a6025836145cb565b9150613d3582614b53565b604082019050919050565b6000613d4d6016836145cb565b9150613d5882614ba2565b602082019050919050565b6000613d70601f836145cb565b9150613d7b82614bcb565b602082019050919050565b6000613d936017836145cb565b9150613d9e82614bf4565b602082019050919050565b6000613db66039836145cb565b9150613dc182614c1d565b604082019050919050565b6000613dd9602b836145cb565b9150613de482614c6c565b604082019050919050565b6000613dfc6026836145cb565b9150613e0782614cbb565b604082019050919050565b6000613e1f6020836145cb565b9150613e2a82614d0a565b602082019050919050565b6000613e426017836145cb565b9150613e4d82614d33565b602082019050919050565b6000613e65602f836145cb565b9150613e7082614d5c565b604082019050919050565b6000613e88601a836145cb565b9150613e9382614dab565b602082019050919050565b6000613eab6032836145cb565b9150613eb682614dd4565b604082019050919050565b6000613ece6022836145cb565b9150613ed982614e23565b604082019050919050565b6000613ef16000836145c0565b9150613efc82614e72565b600082019050919050565b6000613f146010836145cb565b9150613f1f82614e75565b602082019050919050565b6000613f376008836145cb565b9150613f4282614e9e565b602082019050919050565b6000613f5a6033836145cb565b9150613f6582614ec7565b604082019050919050565b6000613f7d6021836145cb565b9150613f8882614f16565b604082019050919050565b6000613fa06028836145cb565b9150613fab82614f65565b604082019050919050565b6000613fc3602e836145cb565b9150613fce82614fb4565b604082019050919050565b6000613fe6602f836145cb565b9150613ff182615003565b604082019050919050565b6000614009602d836145cb565b915061401482615052565b604082019050919050565b61402881614766565b82525050565b61403781614766565b82525050565b60006140498286613b9b565b91506140558285613b9b565b91506140618284613bcc565b9150819050949350505050565b600061407982613ee4565b9150819050919050565b60006020820190506140986000830184613aad565b92915050565b60006080820190506140b36000830187613aad565b6140c06020830186613aad565b6140cd604083018561402e565b81810360608301526140df8184613b29565b905095945050505050565b600060208201905081810360008301526141048184613abc565b905092915050565b60006020820190506141216000830184613b1a565b92915050565b600060208201905081810360008301526141418184613b62565b905092915050565b6000602082019050818103600083015261416281613c4b565b9050919050565b6000602082019050818103600083015261418281613c6e565b9050919050565b600060208201905081810360008301526141a281613c91565b9050919050565b600060208201905081810360008301526141c281613cb4565b9050919050565b600060208201905081810360008301526141e281613cd7565b9050919050565b6000602082019050818103600083015261420281613cfa565b9050919050565b6000602082019050818103600083015261422281613d1d565b9050919050565b6000602082019050818103600083015261424281613d40565b9050919050565b6000602082019050818103600083015261426281613d63565b9050919050565b6000602082019050818103600083015261428281613d86565b9050919050565b600060208201905081810360008301526142a281613da9565b9050919050565b600060208201905081810360008301526142c281613dcc565b9050919050565b600060208201905081810360008301526142e281613def565b9050919050565b6000602082019050818103600083015261430281613e12565b9050919050565b6000602082019050818103600083015261432281613e35565b9050919050565b6000602082019050818103600083015261434281613e58565b9050919050565b6000602082019050818103600083015261436281613e7b565b9050919050565b6000602082019050818103600083015261438281613e9e565b9050919050565b600060208201905081810360008301526143a281613ec1565b9050919050565b600060208201905081810360008301526143c281613f07565b9050919050565b600060208201905081810360008301526143e281613f2a565b9050919050565b6000602082019050818103600083015261440281613f4d565b9050919050565b6000602082019050818103600083015261442281613f70565b9050919050565b6000602082019050818103600083015261444281613f93565b9050919050565b6000602082019050818103600083015261446281613fb6565b9050919050565b6000602082019050818103600083015261448281613fd9565b9050919050565b600060208201905081810360008301526144a281613ffc565b9050919050565b60006020820190506144be600083018461402e565b92915050565b60006144ce6144df565b90506144da82826147e4565b919050565b6000604051905090565b600067ffffffffffffffff8211156145045761450361494b565b5b61450d8261498e565b9050602081019050919050565b600067ffffffffffffffff8211156145355761453461494b565b5b61453e8261498e565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006145f282614766565b91506145fd83614766565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146325761463161488f565b5b828201905092915050565b600061464882614766565b915061465383614766565b925082614663576146626148be565b5b828204905092915050565b600061467982614766565b915061468483614766565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146bd576146bc61488f565b5b828202905092915050565b60006146d382614766565b91506146de83614766565b9250828210156146f1576146f061488f565b5b828203905092915050565b600061470782614746565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561479d578082015181840152602081019050614782565b838111156147ac576000848401525b50505050565b600060028204905060018216806147ca57607f821691505b602082108114156147de576147dd6148ed565b5b50919050565b6147ed8261498e565b810181811067ffffffffffffffff8211171561480c5761480b61494b565b5b80604052505050565b600061482082614766565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148535761485261488f565b5b600182019050919050565b600061486982614766565b915061487483614766565b925082614884576148836148be565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e696d756d2031204e46542068617320746f206265206d696e746564207060008201527f6572207472616e73616374696f6e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f5075626c69632073616c65206973206e6f74206163746976652e000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682045544820746f206d696e7400000000000000000000600082015250565b7f496e76616c6964207175616e74697479206f72204d6178205065722054782e00600082015250565b7f5072652073616c65206973206e6f74206163746976652e000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f536f6c64206f7574000000000000000000000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6150aa816146fc565b81146150b557600080fd5b50565b6150c18161470e565b81146150cc57600080fd5b50565b6150d88161471a565b81146150e357600080fd5b50565b6150ef81614766565b81146150fa57600080fd5b5056fea2646970667358221220a94cb15cb9d06d9a74c342721c3be7fcdeca0c476340610641f26b9aa157c69c64736f6c63430008070033