0x6101606040523480156200001257600080fd5b506040518060400160405280600c81526020017f4b61756d20537572796120320000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600c81526020017f4b61756d205375727961203200000000000000000000000000000000000000008152506040518060400160405280600281526020017f4b530000000000000000000000000000000000000000000000000000000000008152508160039081620000fd91906200066c565b5080600490816200010f91906200066c565b5050506200013262000126620001f360201b60201c565b620001fb60201b60201c565b6200014d600683620002c160201b620012d61790919060201c565b610120818152505062000170600782620002c160201b620012d61790919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001af6200031e60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505062000976565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000602083511015620002e757620002df836200037b60201b60201c565b905062000318565b82620002fe83620003e860201b6200131a1760201c565b60000190816200030f91906200066c565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e05161010051463060405160200162000360959493929190620007c4565b60405160208183030381529060405280519060200120905090565b600080829050601f81511115620003cb57826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401620003c29190620008b0565b60405180910390fd5b805181620003d99062000906565b60001c1760001b915050919050565b6000819050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200047457607f821691505b6020821081036200048a57620004896200042c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004f47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004b5565b620005008683620004b5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200054d62000547620005418462000518565b62000522565b62000518565b9050919050565b6000819050919050565b62000569836200052c565b62000581620005788262000554565b848454620004c2565b825550505050565b600090565b6200059862000589565b620005a58184846200055e565b505050565b5b81811015620005cd57620005c16000826200058e565b600181019050620005ab565b5050565b601f8211156200061c57620005e68162000490565b620005f184620004a5565b8101602085101562000601578190505b620006196200061085620004a5565b830182620005aa565b50505b505050565b600082821c905092915050565b6000620006416000198460080262000621565b1980831691505092915050565b60006200065c83836200062e565b9150826002028217905092915050565b6200067782620003f2565b67ffffffffffffffff811115620006935762000692620003fd565b5b6200069f82546200045b565b620006ac828285620005d1565b600060209050601f831160018114620006e45760008415620006cf578287015190505b620006db85826200064e565b8655506200074b565b601f198416620006f48662000490565b60005b828110156200071e57848901518255600182019150602085019450602081019050620006f7565b868310156200073e57848901516200073a601f8916826200062e565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b620007688162000753565b82525050565b620007798162000518565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007ac826200077f565b9050919050565b620007be816200079f565b82525050565b600060a082019050620007db60008301886200075d565b620007ea60208301876200075d565b620007f960408301866200075d565b6200080860608301856200076e565b620008176080830184620007b3565b9695505050505050565b600082825260208201905092915050565b60005b838110156200085257808201518184015260208101905062000835565b60008484015250505050565b6000601f19601f8301169050919050565b60006200087c82620003f2565b62000888818562000821565b93506200089a81856020860162000832565b620008a5816200085e565b840191505092915050565b60006020820190508181036000830152620008cc81846200086f565b905092915050565b600081519050919050565b6000819050602082019050919050565b6000620008fd825162000753565b80915050919050565b60006200091382620008d4565b826200091f84620008df565b90506200092c81620008ef565b925060208210156200096f576200096a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620004b5565b831692505b5050919050565b60805160a05160c05160e051610100516101205161014051614a01620009d16000396000610ae801526000610ab401526000611f3c01526000611f1b015260006117fb015260006118510152600061187a0152614a016000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf146105d4578063dd62ed3e146105f0578063f1127ed814610620578063f2fde38b14610650576101e5565b80639ab24eb014610528578063a457c2d714610558578063a9059cbb14610588578063c3cda520146105b8576101e5565b80638da5cb5b116100de5780638da5cb5b1461049e5780638e539e8c146104bc57806391ddadf4146104ec57806395d89b411461050a576101e5565b8063715018a61461042457806379cc67901461042e5780637ecebe001461044a57806384b0196e1461047a576101e5565b80633a46b1a811610187578063587cde1e11610156578063587cde1e146103785780635c19a95c146103a85780636fcfff45146103c457806370a08231146103f4576101e5565b80633a46b1a8146102f257806340c10f191461032257806342966c681461033e5780634bf5d7e91461035a576101e5565b806323b872dd116101c357806323b872dd14610256578063313ce567146102865780633644e515146102a457806339509351146102c2576101e5565b806306fdde03146101ea578063095ea7b31461020857806318160ddd14610238575b600080fd5b6101f261066c565b6040516101ff9190612f78565b60405180910390f35b610222600480360381019061021d9190613033565b6106fe565b60405161022f919061308e565b60405180910390f35b610240610721565b60405161024d91906130b8565b60405180910390f35b610270600480360381019061026b91906130d3565b61072b565b60405161027d919061308e565b60405180910390f35b61028e61075a565b60405161029b9190613142565b60405180910390f35b6102ac610763565b6040516102b99190613176565b60405180910390f35b6102dc60048036038101906102d79190613033565b610772565b6040516102e9919061308e565b60405180910390f35b61030c60048036038101906103079190613033565b6107a9565b60405161031991906130b8565b60405180910390f35b61033c60048036038101906103379190613033565b61084c565b005b61035860048036038101906103539190613191565b610862565b005b610362610876565b60405161036f9190612f78565b60405180910390f35b610392600480360381019061038d91906131be565b610904565b60405161039f91906131fa565b60405180910390f35b6103c260048036038101906103bd91906131be565b61096d565b005b6103de60048036038101906103d991906131be565b610981565b6040516103eb9190613234565b60405180910390f35b61040e600480360381019061040991906131be565b6109d5565b60405161041b91906130b8565b60405180910390f35b61042c610a1d565b005b61044860048036038101906104439190613033565b610a31565b005b610464600480360381019061045f91906131be565b610a51565b60405161047191906130b8565b60405180910390f35b610482610aa1565b6040516104959796959493929190613348565b60405180910390f35b6104a6610ba3565b6040516104b391906131fa565b60405180910390f35b6104d660048036038101906104d19190613191565b610bcd565b6040516104e391906130b8565b60405180910390f35b6104f4610c32565b60405161050191906133ed565b60405180910390f35b610512610c42565b60405161051f9190612f78565b60405180910390f35b610542600480360381019061053d91906131be565b610cd4565b60405161054f91906130b8565b60405180910390f35b610572600480360381019061056d9190613033565b610ddc565b60405161057f919061308e565b60405180910390f35b6105a2600480360381019061059d9190613033565b610e53565b6040516105af919061308e565b60405180910390f35b6105d260048036038101906105cd9190613460565b610e76565b005b6105ee60048036038101906105e991906134ed565b610f7a565b005b61060a6004803603810190610605919061358f565b6110bc565b60405161061791906130b8565b60405180910390f35b61063a600480360381019061063591906135fb565b611143565b60405161064791906136b0565b60405180910390f35b61066a600480360381019061066591906131be565b611253565b005b60606003805461067b906136fa565b80601f01602080910402602001604051908101604052809291908181526020018280546106a7906136fa565b80156106f45780601f106106c9576101008083540402835291602001916106f4565b820191906000526020600020905b8154815290600101906020018083116106d757829003601f168201915b5050505050905090565b600080610709611324565b905061071681858561132c565b600191505092915050565b6000600254905090565b600080610736611324565b90506107438582856114f5565b61074e858585611581565b60019150509392505050565b60006012905090565b600061076d6117f7565b905090565b60008061077d611324565b905061079e81858561078f85896110bc565b610799919061375a565b61132c565b600191505092915050565b60006107b3610c32565b65ffffffffffff1682106107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f3906137da565b60405180910390fd5b610844600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020836118ae565b905092915050565b6108546119f6565b61085e8282611a74565b5050565b61087361086d611324565b82611a82565b50565b606043610881610c32565b65ffffffffffff16146108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090613846565b60405180910390fd5b6040518060400160405280601d81526020017f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000815250905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61097e610978611324565b82611a90565b50565b60006109ce600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611baa565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a256119f6565b610a2f6000611bfd565b565b610a4382610a3d611324565b836114f5565b610a4d8282611a82565b5050565b6000610a9a600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611cc3565b9050919050565b600060608060008060006060610ae160067f0000000000000000000000000000000000000000000000000000000000000000611cd190919063ffffffff16565b610b1560077f0000000000000000000000000000000000000000000000000000000000000000611cd190919063ffffffff16565b46306000801b600067ffffffffffffffff811115610b3657610b35613866565b5b604051908082528060200260200182016040528015610b645781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610bd7610c32565b65ffffffffffff168210610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906137da565b60405180910390fd5b610c2b600c836118ae565b9050919050565b6000610c3d43611d81565b905090565b606060048054610c51906136fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7d906136fa565b8015610cca5780601f10610c9f57610100808354040283529160200191610cca565b820191906000526020600020905b815481529060010190602001808311610cad57829003601f168201915b5050505050905090565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008114610db357600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001820381548110610d7857610d77613895565b5b9060005260206000200160000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610db6565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b600080610de7611324565b90506000610df582866110bc565b905083811015610e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3190613936565b60405180910390fd5b610e47828686840361132c565b60019250505092915050565b600080610e5e611324565b9050610e6b818585611581565b600191505092915050565b83421115610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb0906139a2565b60405180910390fd5b6000610f1b610f137fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610ef894939291906139c2565b60405160208183030381529060405280519060200120611dd6565b858585611df0565b9050610f2681611e1b565b8614610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90613a53565b60405180910390fd5b610f718188611a90565b50505050505050565b83421115610fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb490613abf565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610fec8c611e1b565b8960405160200161100296959493929190613adf565b604051602081830303815290604052805190602001209050600061102582611dd6565b9050600061103582878787611df0565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c90613b8c565b60405180910390fd5b6110b08a8a8a61132c565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61114b612eaa565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208263ffffffff16815481106111a2576111a1613895565b5b906000526020600020016040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b61125b6119f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c190613c1e565b60405180910390fd5b6112d381611bfd565b50565b60006020835110156112f2576112eb83611e79565b9050611314565b826112fc8361131a565b600001908161130b9190613dea565b5060ff60001b90505b92915050565b6000819050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290613f2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190613fc0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114e891906130b8565b60405180910390a3505050565b600061150184846110bc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461157b578181101561156d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115649061402c565b60405180910390fd5b61157a848484840361132c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906140be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690614150565b60405180910390fd5b61166a838383611ee1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e7906141e2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117de91906130b8565b60405180910390a36117f1848484611ee6565b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561187357507f000000000000000000000000000000000000000000000000000000000000000046145b156118a0577f000000000000000000000000000000000000000000000000000000000000000090506118ab565b6118a8611ef6565b90505b90565b6000808380549050905060008082905060058311156119245760006118d284611f8c565b846118dd9190614202565b9050856118ea8883612085565b60000160009054906101000a900463ffffffff1663ffffffff16111561191257809150611922565b60018161191f919061375a565b92505b505b5b80821015611984576000611939838361209a565b9050856119468883612085565b60000160009054906101000a900463ffffffff1663ffffffff16111561196e5780915061197e565b60018161197b919061375a565b92505b50611925565b600081146119ca576119998660018303612085565b60000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119cd565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935050505092915050565b6119fe611324565b73ffffffffffffffffffffffffffffffffffffffff16611a1c610ba3565b73ffffffffffffffffffffffffffffffffffffffff1614611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6990614282565b60405180910390fd5b565b611a7e82826120c0565b5050565b611a8c828261214d565b5050565b6000611a9b83610904565b90506000611aa8846109d5565b905082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611ba482848361216b565b50505050565b600063ffffffff8016821115611bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec90614314565b60405180910390fd5b819050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b606060ff60001b8314611cee57611ce783612364565b9050611d7b565b818054611cfa906136fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611d26906136fa565b8015611d735780601f10611d4857610100808354040283529160200191611d73565b820191906000526020600020905b815481529060010190602001808311611d5657829003601f168201915b505050505090505b92915050565b600065ffffffffffff8016821115611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc5906143a6565b60405180910390fd5b819050919050565b6000611de9611de36117f7565b836123d8565b9050919050565b6000806000611e0187878787612419565b91509150611e0e816124fb565b8192505050949350505050565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611e6881611cc3565b9150611e7381612661565b50919050565b600080829050601f81511115611ec657826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401611ebd9190612f78565b60405180910390fd5b805181611ed2906143f6565b60001c1760001b915050919050565b505050565b611ef1838383612677565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611f7195949392919061445d565b60405160208183030381529060405280519060200120905090565b6000808203611f9e5760009050612080565b60006001611fab846126a2565b901c6001901b90506001818481611fc557611fc46144b0565b5b048201901c90506001818481611fde57611fdd6144b0565b5b048201901c90506001818481611ff757611ff66144b0565b5b048201901c905060018184816120105761200f6144b0565b5b048201901c90506001818481612029576120286144b0565b5b048201901c90506001818481612042576120416144b0565b5b048201901c9050600181848161205b5761205a6144b0565b5b048201901c905061207c81828581612076576120756144b0565b5b04612783565b9150505b919050565b60008260005281602060002001905092915050565b600060028284186120ab91906144df565b8284166120b8919061375a565b905092915050565b6120ca828261279c565b6120d26128f2565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166120f8610721565b1115612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213090614582565b60405180910390fd5b612147600c6129168361292c565b50505050565b6121578282612c07565b612165600c612dd48361292c565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121a75750600081115b1561235f57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122855760008061222e600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612dd48561292c565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161227a9291906145a2565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461235e57600080612307600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129168561292c565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516123539291906145a2565b60405180910390a250505b5b505050565b6060600061237183612dea565b90506000602067ffffffffffffffff8111156123905761238f613866565b5b6040519080825280601f01601f1916602001820160405280156123c25781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156124545760006003915091506124f2565b60006001878787876040516000815260200160405260405161247994939291906145cb565b6020604051602081039080840390855afa15801561249b573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124e9576000600192509250506124f2565b80600092509250505b94509492505050565b6000600481111561250f5761250e614610565b5b81600481111561252257612521614610565b5b031561265e576001600481111561253c5761253b614610565b5b81600481111561254f5761254e614610565b5b0361258f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125869061468b565b60405180910390fd5b600260048111156125a3576125a2614610565b5b8160048111156125b6576125b5614610565b5b036125f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ed906146f7565b60405180910390fd5b6003600481111561260a57612609614610565b5b81600481111561261d5761261c614610565b5b0361265d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265490614789565b60405180910390fd5b5b50565b6001816000016000828254019250508190555050565b612682838383612e3a565b61269d61268e84610904565b61269784610904565b8361216b565b505050565b600080600090506000608084901c11156126c457608083901c92506080810190505b6000604084901c11156126df57604083901c92506040810190505b6000602084901c11156126fa57602083901c92506020810190505b6000601084901c111561271557601083901c92506010810190505b6000600884901c111561273057600883901c92506008810190505b6000600484901c111561274b57600483901c92506004810190505b6000600284901c111561276657600283901c92506002810190505b6000600184901c111561277a576001810190505b80915050919050565b60008183106127925781612794565b825b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361280b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612802906147f5565b60405180910390fd5b61281760008383611ee1565b8060026000828254612829919061375a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128da91906130b8565b60405180910390a36128ee60008383611ee6565b5050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b60008183612924919061375a565b905092915050565b60008060008580549050905060008082146129f25761294e8760018403612085565b6040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050612a2e565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169350612a6384868863ffffffff16565b9250600082118015612a8d5750612a78610c32565b65ffffffffffff16816000015163ffffffff16145b15612afe57612a9b83612e3f565b612aa88860018503612085565b60000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550612bfd565b866040518060400160405280612b22612b15610c32565b65ffffffffffff16611baa565b63ffffffff168152602001612b3686612e3f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6d90614887565b60405180910390fd5b612c8282600083611ee1565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cff90614919565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612dbb91906130b8565b60405180910390a3612dcf83600084611ee6565b505050565b60008183612de29190614202565b905092915050565b60008060ff8360001c169050601f811115612e31576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e99906149ab565b60405180910390fd5b819050919050565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f22578082015181840152602081019050612f07565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f4a82612ee8565b612f548185612ef3565b9350612f64818560208601612f04565b612f6d81612f2e565b840191505092915050565b60006020820190508181036000830152612f928184612f3f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fca82612f9f565b9050919050565b612fda81612fbf565b8114612fe557600080fd5b50565b600081359050612ff781612fd1565b92915050565b6000819050919050565b61301081612ffd565b811461301b57600080fd5b50565b60008135905061302d81613007565b92915050565b6000806040838503121561304a57613049612f9a565b5b600061305885828601612fe8565b92505060206130698582860161301e565b9150509250929050565b60008115159050919050565b61308881613073565b82525050565b60006020820190506130a3600083018461307f565b92915050565b6130b281612ffd565b82525050565b60006020820190506130cd60008301846130a9565b92915050565b6000806000606084860312156130ec576130eb612f9a565b5b60006130fa86828701612fe8565b935050602061310b86828701612fe8565b925050604061311c8682870161301e565b9150509250925092565b600060ff82169050919050565b61313c81613126565b82525050565b60006020820190506131576000830184613133565b92915050565b6000819050919050565b6131708161315d565b82525050565b600060208201905061318b6000830184613167565b92915050565b6000602082840312156131a7576131a6612f9a565b5b60006131b58482850161301e565b91505092915050565b6000602082840312156131d4576131d3612f9a565b5b60006131e284828501612fe8565b91505092915050565b6131f481612fbf565b82525050565b600060208201905061320f60008301846131eb565b92915050565b600063ffffffff82169050919050565b61322e81613215565b82525050565b60006020820190506132496000830184613225565b92915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6132848161324f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132bf81612ffd565b82525050565b60006132d183836132b6565b60208301905092915050565b6000602082019050919050565b60006132f58261328a565b6132ff8185613295565b935061330a836132a6565b8060005b8381101561333b57815161332288826132c5565b975061332d836132dd565b92505060018101905061330e565b5085935050505092915050565b600060e08201905061335d600083018a61327b565b818103602083015261336f8189612f3f565b905081810360408301526133838188612f3f565b905061339260608301876130a9565b61339f60808301866131eb565b6133ac60a0830185613167565b81810360c08301526133be81846132ea565b905098975050505050505050565b600065ffffffffffff82169050919050565b6133e7816133cc565b82525050565b600060208201905061340260008301846133de565b92915050565b61341181613126565b811461341c57600080fd5b50565b60008135905061342e81613408565b92915050565b61343d8161315d565b811461344857600080fd5b50565b60008135905061345a81613434565b92915050565b60008060008060008060c0878903121561347d5761347c612f9a565b5b600061348b89828a01612fe8565b965050602061349c89828a0161301e565b95505060406134ad89828a0161301e565b94505060606134be89828a0161341f565b93505060806134cf89828a0161344b565b92505060a06134e089828a0161344b565b9150509295509295509295565b600080600080600080600060e0888a03121561350c5761350b612f9a565b5b600061351a8a828b01612fe8565b975050602061352b8a828b01612fe8565b965050604061353c8a828b0161301e565b955050606061354d8a828b0161301e565b945050608061355e8a828b0161341f565b93505060a061356f8a828b0161344b565b92505060c06135808a828b0161344b565b91505092959891949750929550565b600080604083850312156135a6576135a5612f9a565b5b60006135b485828601612fe8565b92505060206135c585828601612fe8565b9150509250929050565b6135d881613215565b81146135e357600080fd5b50565b6000813590506135f5816135cf565b92915050565b6000806040838503121561361257613611612f9a565b5b600061362085828601612fe8565b9250506020613631858286016135e6565b9150509250929050565b61364481613215565b82525050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b61367b8161364a565b82525050565b604082016000820151613697600085018261363b565b5060208201516136aa6020850182613672565b50505050565b60006040820190506136c56000830184613681565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061371257607f821691505b602082108103613725576137246136cb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376582612ffd565b915061377083612ffd565b92508282019050808211156137885761378761372b565b5b92915050565b7f4552433230566f7465733a20667574757265206c6f6f6b757000000000000000600082015250565b60006137c4601983612ef3565b91506137cf8261378e565b602082019050919050565b600060208201905081810360008301526137f3816137b7565b9050919050565b7f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f6465000000600082015250565b6000613830601d83612ef3565b915061383b826137fa565b602082019050919050565b6000602082019050818103600083015261385f81613823565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613920602583612ef3565b915061392b826138c4565b604082019050919050565b6000602082019050818103600083015261394f81613913565b9050919050565b7f4552433230566f7465733a207369676e61747572652065787069726564000000600082015250565b600061398c601d83612ef3565b915061399782613956565b602082019050919050565b600060208201905081810360008301526139bb8161397f565b9050919050565b60006080820190506139d76000830187613167565b6139e460208301866131eb565b6139f160408301856130a9565b6139fe60608301846130a9565b95945050505050565b7f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000600082015250565b6000613a3d601983612ef3565b9150613a4882613a07565b602082019050919050565b60006020820190508181036000830152613a6c81613a30565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000613aa9601d83612ef3565b9150613ab482613a73565b602082019050919050565b60006020820190508181036000830152613ad881613a9c565b9050919050565b600060c082019050613af46000830189613167565b613b0160208301886131eb565b613b0e60408301876131eb565b613b1b60608301866130a9565b613b2860808301856130a9565b613b3560a08301846130a9565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000613b76601e83612ef3565b9150613b8182613b40565b602082019050919050565b60006020820190508181036000830152613ba581613b69565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c08602683612ef3565b9150613c1382613bac565b604082019050919050565b60006020820190508181036000830152613c3781613bfb565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ca07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613c63565b613caa8683613c63565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613ce7613ce2613cdd84612ffd565b613cc2565b612ffd565b9050919050565b6000819050919050565b613d0183613ccc565b613d15613d0d82613cee565b848454613c70565b825550505050565b600090565b613d2a613d1d565b613d35818484613cf8565b505050565b5b81811015613d5957613d4e600082613d22565b600181019050613d3b565b5050565b601f821115613d9e57613d6f81613c3e565b613d7884613c53565b81016020851015613d87578190505b613d9b613d9385613c53565b830182613d3a565b50505b505050565b600082821c905092915050565b6000613dc160001984600802613da3565b1980831691505092915050565b6000613dda8383613db0565b9150826002028217905092915050565b613df382612ee8565b67ffffffffffffffff811115613e0c57613e0b613866565b5b613e1682546136fa565b613e21828285613d5d565b600060209050601f831160018114613e545760008415613e42578287015190505b613e4c8582613dce565b865550613eb4565b601f198416613e6286613c3e565b60005b82811015613e8a57848901518255600182019150602085019450602081019050613e65565b86831015613ea75784890151613ea3601f891682613db0565b8355505b6001600288020188555050505b505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f18602483612ef3565b9150613f2382613ebc565b604082019050919050565b60006020820190508181036000830152613f4781613f0b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613faa602283612ef3565b9150613fb582613f4e565b604082019050919050565b60006020820190508181036000830152613fd981613f9d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614016601d83612ef3565b915061402182613fe0565b602082019050919050565b6000602082019050818103600083015261404581614009565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140a8602583612ef3565b91506140b38261404c565b604082019050919050565b600060208201905081810360008301526140d78161409b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061413a602383612ef3565b9150614145826140de565b604082019050919050565b600060208201905081810360008301526141698161412d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141cc602683612ef3565b91506141d782614170565b604082019050919050565b600060208201905081810360008301526141fb816141bf565b9050919050565b600061420d82612ffd565b915061421883612ffd565b92508282039050818111156142305761422f61372b565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061426c602083612ef3565b915061427782614236565b602082019050919050565b6000602082019050818103600083015261429b8161425f565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b60006142fe602683612ef3565b9150614309826142a2565b604082019050919050565b6000602082019050818103600083015261432d816142f1565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203460008201527f3820626974730000000000000000000000000000000000000000000000000000602082015250565b6000614390602683612ef3565b915061439b82614334565b604082019050919050565b600060208201905081810360008301526143bf81614383565b9050919050565b600081519050919050565b6000819050602082019050919050565b60006143ed825161315d565b80915050919050565b6000614401826143c6565b8261440b846143d1565b9050614416816143e1565b92506020821015614456576144517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802613c63565b831692505b5050919050565b600060a0820190506144726000830188613167565b61447f6020830187613167565b61448c6040830186613167565b61449960608301856130a9565b6144a660808301846131eb565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144ea82612ffd565b91506144f583612ffd565b925082614505576145046144b0565b5b828204905092915050565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60008201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b600061456c603083612ef3565b915061457782614510565b604082019050919050565b6000602082019050818103600083015261459b8161455f565b9050919050565b60006040820190506145b760008301856130a9565b6145c460208301846130a9565b9392505050565b60006080820190506145e06000830187613167565b6145ed6020830186613133565b6145fa6040830185613167565b6146076060830184613167565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000614675601883612ef3565b91506146808261463f565b602082019050919050565b600060208201905081810360008301526146a481614668565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b60006146e1601f83612ef3565b91506146ec826146ab565b602082019050919050565b60006020820190508181036000830152614710816146d4565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000614773602283612ef3565b915061477e82614717565b604082019050919050565b600060208201905081810360008301526147a281614766565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006147df601f83612ef3565b91506147ea826147a9565b602082019050919050565b6000602082019050818103600083015261480e816147d2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614871602183612ef3565b915061487c82614815565b604082019050919050565b600060208201905081810360008301526148a081614864565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614903602283612ef3565b915061490e826148a7565b604082019050919050565b60006020820190508181036000830152614932816148f6565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b6000614995602783612ef3565b91506149a082614939565b604082019050919050565b600060208201905081810360008301526149c481614988565b905091905056fea2646970667358221220e0bfa9cc54c7df332fa24086a875e01653348e2740b091efb4e398eda97384bd64736f6c63430008120033