UNPKG

101 kBJSONView Raw
1{
2 "_format": "hh-sol-artifact-1",
3 "contractName": "FyToken",
4 "sourceName": "contracts/FyToken.sol",
5 "abi": [
6 {
7 "inputs": [
8 {
9 "internalType": "string",
10 "name": "name_",
11 "type": "string"
12 },
13 {
14 "internalType": "string",
15 "name": "symbol_",
16 "type": "string"
17 },
18 {
19 "internalType": "uint256",
20 "name": "expirationTime_",
21 "type": "uint256"
22 },
23 {
24 "internalType": "contract FintrollerInterface",
25 "name": "fintroller_",
26 "type": "address"
27 },
28 {
29 "internalType": "contract BalanceSheetInterface",
30 "name": "balanceSheet_",
31 "type": "address"
32 },
33 {
34 "internalType": "contract Erc20Interface",
35 "name": "underlying_",
36 "type": "address"
37 },
38 {
39 "internalType": "contract Erc20Interface",
40 "name": "collateral_",
41 "type": "address"
42 }
43 ],
44 "stateMutability": "nonpayable",
45 "type": "constructor"
46 },
47 {
48 "anonymous": false,
49 "inputs": [
50 {
51 "indexed": true,
52 "internalType": "address",
53 "name": "owner",
54 "type": "address"
55 },
56 {
57 "indexed": true,
58 "internalType": "address",
59 "name": "spender",
60 "type": "address"
61 },
62 {
63 "indexed": false,
64 "internalType": "uint256",
65 "name": "amount",
66 "type": "uint256"
67 }
68 ],
69 "name": "Approval",
70 "type": "event"
71 },
72 {
73 "anonymous": false,
74 "inputs": [
75 {
76 "indexed": true,
77 "internalType": "address",
78 "name": "borrower",
79 "type": "address"
80 },
81 {
82 "indexed": false,
83 "internalType": "uint256",
84 "name": "borrowAmount",
85 "type": "uint256"
86 }
87 ],
88 "name": "Borrow",
89 "type": "event"
90 },
91 {
92 "anonymous": false,
93 "inputs": [
94 {
95 "indexed": true,
96 "internalType": "address",
97 "name": "holder",
98 "type": "address"
99 },
100 {
101 "indexed": false,
102 "internalType": "uint256",
103 "name": "burnAmount",
104 "type": "uint256"
105 }
106 ],
107 "name": "Burn",
108 "type": "event"
109 },
110 {
111 "anonymous": false,
112 "inputs": [
113 {
114 "indexed": true,
115 "internalType": "address",
116 "name": "liquidator",
117 "type": "address"
118 },
119 {
120 "indexed": true,
121 "internalType": "address",
122 "name": "borrower",
123 "type": "address"
124 },
125 {
126 "indexed": false,
127 "internalType": "uint256",
128 "name": "repayAmount",
129 "type": "uint256"
130 },
131 {
132 "indexed": false,
133 "internalType": "uint256",
134 "name": "clutchedCollateralAmount",
135 "type": "uint256"
136 }
137 ],
138 "name": "LiquidateBorrow",
139 "type": "event"
140 },
141 {
142 "anonymous": false,
143 "inputs": [
144 {
145 "indexed": true,
146 "internalType": "address",
147 "name": "beneficiary",
148 "type": "address"
149 },
150 {
151 "indexed": false,
152 "internalType": "uint256",
153 "name": "mintAmount",
154 "type": "uint256"
155 }
156 ],
157 "name": "Mint",
158 "type": "event"
159 },
160 {
161 "anonymous": false,
162 "inputs": [
163 {
164 "indexed": true,
165 "internalType": "address",
166 "name": "admin",
167 "type": "address"
168 },
169 {
170 "indexed": false,
171 "internalType": "contract Erc20Interface",
172 "name": "token",
173 "type": "address"
174 },
175 {
176 "indexed": false,
177 "internalType": "uint256",
178 "name": "recoverAmount",
179 "type": "uint256"
180 }
181 ],
182 "name": "Recover",
183 "type": "event"
184 },
185 {
186 "anonymous": false,
187 "inputs": [
188 {
189 "indexed": true,
190 "internalType": "address",
191 "name": "payer",
192 "type": "address"
193 },
194 {
195 "indexed": true,
196 "internalType": "address",
197 "name": "borrower",
198 "type": "address"
199 },
200 {
201 "indexed": false,
202 "internalType": "uint256",
203 "name": "repayAmount",
204 "type": "uint256"
205 },
206 {
207 "indexed": false,
208 "internalType": "uint256",
209 "name": "newDebt",
210 "type": "uint256"
211 }
212 ],
213 "name": "RepayBorrow",
214 "type": "event"
215 },
216 {
217 "anonymous": false,
218 "inputs": [
219 {
220 "indexed": true,
221 "internalType": "address",
222 "name": "admin",
223 "type": "address"
224 },
225 {
226 "indexed": false,
227 "internalType": "contract FintrollerInterface",
228 "name": "oldFintroller",
229 "type": "address"
230 },
231 {
232 "indexed": false,
233 "internalType": "contract FintrollerInterface",
234 "name": "newFintroller",
235 "type": "address"
236 }
237 ],
238 "name": "SetFintroller",
239 "type": "event"
240 },
241 {
242 "anonymous": false,
243 "inputs": [
244 {
245 "indexed": true,
246 "internalType": "address",
247 "name": "admin",
248 "type": "address"
249 },
250 {
251 "indexed": false,
252 "internalType": "contract Erc20Interface[]",
253 "name": "nonRecoverableTokens",
254 "type": "address[]"
255 }
256 ],
257 "name": "SetNonRecoverableTokens",
258 "type": "event"
259 },
260 {
261 "anonymous": false,
262 "inputs": [
263 {
264 "indexed": true,
265 "internalType": "address",
266 "name": "from",
267 "type": "address"
268 },
269 {
270 "indexed": true,
271 "internalType": "address",
272 "name": "to",
273 "type": "address"
274 },
275 {
276 "indexed": false,
277 "internalType": "uint256",
278 "name": "amount",
279 "type": "uint256"
280 }
281 ],
282 "name": "Transfer",
283 "type": "event"
284 },
285 {
286 "anonymous": false,
287 "inputs": [
288 {
289 "indexed": true,
290 "internalType": "address",
291 "name": "oldAdmin",
292 "type": "address"
293 },
294 {
295 "indexed": true,
296 "internalType": "address",
297 "name": "newAdmin",
298 "type": "address"
299 }
300 ],
301 "name": "TransferAdmin",
302 "type": "event"
303 },
304 {
305 "inputs": [],
306 "name": "DOMAIN_SEPARATOR",
307 "outputs": [
308 {
309 "internalType": "bytes32",
310 "name": "",
311 "type": "bytes32"
312 }
313 ],
314 "stateMutability": "view",
315 "type": "function"
316 },
317 {
318 "inputs": [],
319 "name": "PERMIT_TYPEHASH",
320 "outputs": [
321 {
322 "internalType": "bytes32",
323 "name": "",
324 "type": "bytes32"
325 }
326 ],
327 "stateMutability": "view",
328 "type": "function"
329 },
330 {
331 "inputs": [
332 {
333 "internalType": "contract Erc20Interface",
334 "name": "token",
335 "type": "address"
336 },
337 {
338 "internalType": "uint256",
339 "name": "recoverAmount",
340 "type": "uint256"
341 }
342 ],
343 "name": "_recover",
344 "outputs": [],
345 "stateMutability": "nonpayable",
346 "type": "function"
347 },
348 {
349 "inputs": [],
350 "name": "_renounceAdmin",
351 "outputs": [],
352 "stateMutability": "nonpayable",
353 "type": "function"
354 },
355 {
356 "inputs": [
357 {
358 "internalType": "contract FintrollerInterface",
359 "name": "newFintroller",
360 "type": "address"
361 }
362 ],
363 "name": "_setFintroller",
364 "outputs": [
365 {
366 "internalType": "bool",
367 "name": "",
368 "type": "bool"
369 }
370 ],
371 "stateMutability": "nonpayable",
372 "type": "function"
373 },
374 {
375 "inputs": [
376 {
377 "internalType": "contract Erc20Interface[]",
378 "name": "tokens",
379 "type": "address[]"
380 }
381 ],
382 "name": "_setNonRecoverableTokens",
383 "outputs": [],
384 "stateMutability": "nonpayable",
385 "type": "function"
386 },
387 {
388 "inputs": [
389 {
390 "internalType": "address",
391 "name": "newAdmin",
392 "type": "address"
393 }
394 ],
395 "name": "_transferAdmin",
396 "outputs": [],
397 "stateMutability": "nonpayable",
398 "type": "function"
399 },
400 {
401 "inputs": [],
402 "name": "admin",
403 "outputs": [
404 {
405 "internalType": "address",
406 "name": "",
407 "type": "address"
408 }
409 ],
410 "stateMutability": "view",
411 "type": "function"
412 },
413 {
414 "inputs": [
415 {
416 "internalType": "address",
417 "name": "owner",
418 "type": "address"
419 },
420 {
421 "internalType": "address",
422 "name": "spender",
423 "type": "address"
424 }
425 ],
426 "name": "allowance",
427 "outputs": [
428 {
429 "internalType": "uint256",
430 "name": "",
431 "type": "uint256"
432 }
433 ],
434 "stateMutability": "view",
435 "type": "function"
436 },
437 {
438 "inputs": [
439 {
440 "internalType": "address",
441 "name": "spender",
442 "type": "address"
443 },
444 {
445 "internalType": "uint256",
446 "name": "amount",
447 "type": "uint256"
448 }
449 ],
450 "name": "approve",
451 "outputs": [
452 {
453 "internalType": "bool",
454 "name": "",
455 "type": "bool"
456 }
457 ],
458 "stateMutability": "nonpayable",
459 "type": "function"
460 },
461 {
462 "inputs": [
463 {
464 "internalType": "address",
465 "name": "account",
466 "type": "address"
467 }
468 ],
469 "name": "balanceOf",
470 "outputs": [
471 {
472 "internalType": "uint256",
473 "name": "",
474 "type": "uint256"
475 }
476 ],
477 "stateMutability": "view",
478 "type": "function"
479 },
480 {
481 "inputs": [],
482 "name": "balanceSheet",
483 "outputs": [
484 {
485 "internalType": "contract BalanceSheetInterface",
486 "name": "",
487 "type": "address"
488 }
489 ],
490 "stateMutability": "view",
491 "type": "function"
492 },
493 {
494 "inputs": [
495 {
496 "internalType": "uint256",
497 "name": "borrowAmount",
498 "type": "uint256"
499 }
500 ],
501 "name": "borrow",
502 "outputs": [
503 {
504 "internalType": "bool",
505 "name": "",
506 "type": "bool"
507 }
508 ],
509 "stateMutability": "nonpayable",
510 "type": "function"
511 },
512 {
513 "inputs": [
514 {
515 "internalType": "address",
516 "name": "holder",
517 "type": "address"
518 },
519 {
520 "internalType": "uint256",
521 "name": "burnAmount",
522 "type": "uint256"
523 }
524 ],
525 "name": "burn",
526 "outputs": [
527 {
528 "internalType": "bool",
529 "name": "",
530 "type": "bool"
531 }
532 ],
533 "stateMutability": "nonpayable",
534 "type": "function"
535 },
536 {
537 "inputs": [],
538 "name": "collateral",
539 "outputs": [
540 {
541 "internalType": "contract Erc20Interface",
542 "name": "",
543 "type": "address"
544 }
545 ],
546 "stateMutability": "view",
547 "type": "function"
548 },
549 {
550 "inputs": [],
551 "name": "collateralPrecisionScalar",
552 "outputs": [
553 {
554 "internalType": "uint256",
555 "name": "",
556 "type": "uint256"
557 }
558 ],
559 "stateMutability": "view",
560 "type": "function"
561 },
562 {
563 "inputs": [],
564 "name": "decimals",
565 "outputs": [
566 {
567 "internalType": "uint8",
568 "name": "",
569 "type": "uint8"
570 }
571 ],
572 "stateMutability": "view",
573 "type": "function"
574 },
575 {
576 "inputs": [
577 {
578 "internalType": "address",
579 "name": "spender",
580 "type": "address"
581 },
582 {
583 "internalType": "uint256",
584 "name": "subtractedValue",
585 "type": "uint256"
586 }
587 ],
588 "name": "decreaseAllowance",
589 "outputs": [
590 {
591 "internalType": "bool",
592 "name": "",
593 "type": "bool"
594 }
595 ],
596 "stateMutability": "nonpayable",
597 "type": "function"
598 },
599 {
600 "inputs": [],
601 "name": "expirationTime",
602 "outputs": [
603 {
604 "internalType": "uint256",
605 "name": "",
606 "type": "uint256"
607 }
608 ],
609 "stateMutability": "view",
610 "type": "function"
611 },
612 {
613 "inputs": [],
614 "name": "fintroller",
615 "outputs": [
616 {
617 "internalType": "contract FintrollerInterface",
618 "name": "",
619 "type": "address"
620 }
621 ],
622 "stateMutability": "view",
623 "type": "function"
624 },
625 {
626 "inputs": [
627 {
628 "internalType": "address",
629 "name": "spender",
630 "type": "address"
631 },
632 {
633 "internalType": "uint256",
634 "name": "addedValue",
635 "type": "uint256"
636 }
637 ],
638 "name": "increaseAllowance",
639 "outputs": [
640 {
641 "internalType": "bool",
642 "name": "",
643 "type": "bool"
644 }
645 ],
646 "stateMutability": "nonpayable",
647 "type": "function"
648 },
649 {
650 "inputs": [],
651 "name": "isFyToken",
652 "outputs": [
653 {
654 "internalType": "bool",
655 "name": "",
656 "type": "bool"
657 }
658 ],
659 "stateMutability": "view",
660 "type": "function"
661 },
662 {
663 "inputs": [],
664 "name": "isMatured",
665 "outputs": [
666 {
667 "internalType": "bool",
668 "name": "",
669 "type": "bool"
670 }
671 ],
672 "stateMutability": "view",
673 "type": "function"
674 },
675 {
676 "inputs": [
677 {
678 "internalType": "address",
679 "name": "borrower",
680 "type": "address"
681 },
682 {
683 "internalType": "uint256",
684 "name": "repayAmount",
685 "type": "uint256"
686 }
687 ],
688 "name": "liquidateBorrow",
689 "outputs": [
690 {
691 "internalType": "bool",
692 "name": "",
693 "type": "bool"
694 }
695 ],
696 "stateMutability": "nonpayable",
697 "type": "function"
698 },
699 {
700 "inputs": [
701 {
702 "internalType": "address",
703 "name": "beneficiary",
704 "type": "address"
705 },
706 {
707 "internalType": "uint256",
708 "name": "mintAmount",
709 "type": "uint256"
710 }
711 ],
712 "name": "mint",
713 "outputs": [
714 {
715 "internalType": "bool",
716 "name": "",
717 "type": "bool"
718 }
719 ],
720 "stateMutability": "nonpayable",
721 "type": "function"
722 },
723 {
724 "inputs": [],
725 "name": "name",
726 "outputs": [
727 {
728 "internalType": "string",
729 "name": "",
730 "type": "string"
731 }
732 ],
733 "stateMutability": "view",
734 "type": "function"
735 },
736 {
737 "inputs": [
738 {
739 "internalType": "uint256",
740 "name": "",
741 "type": "uint256"
742 }
743 ],
744 "name": "nonRecoverableTokens",
745 "outputs": [
746 {
747 "internalType": "contract Erc20Interface",
748 "name": "",
749 "type": "address"
750 }
751 ],
752 "stateMutability": "view",
753 "type": "function"
754 },
755 {
756 "inputs": [
757 {
758 "internalType": "address",
759 "name": "",
760 "type": "address"
761 }
762 ],
763 "name": "nonces",
764 "outputs": [
765 {
766 "internalType": "uint256",
767 "name": "",
768 "type": "uint256"
769 }
770 ],
771 "stateMutability": "view",
772 "type": "function"
773 },
774 {
775 "inputs": [
776 {
777 "internalType": "address",
778 "name": "owner",
779 "type": "address"
780 },
781 {
782 "internalType": "address",
783 "name": "spender",
784 "type": "address"
785 },
786 {
787 "internalType": "uint256",
788 "name": "amount",
789 "type": "uint256"
790 },
791 {
792 "internalType": "uint256",
793 "name": "deadline",
794 "type": "uint256"
795 },
796 {
797 "internalType": "uint8",
798 "name": "v",
799 "type": "uint8"
800 },
801 {
802 "internalType": "bytes32",
803 "name": "r",
804 "type": "bytes32"
805 },
806 {
807 "internalType": "bytes32",
808 "name": "s",
809 "type": "bytes32"
810 }
811 ],
812 "name": "permit",
813 "outputs": [],
814 "stateMutability": "nonpayable",
815 "type": "function"
816 },
817 {
818 "inputs": [],
819 "name": "redemptionPool",
820 "outputs": [
821 {
822 "internalType": "contract RedemptionPoolInterface",
823 "name": "",
824 "type": "address"
825 }
826 ],
827 "stateMutability": "view",
828 "type": "function"
829 },
830 {
831 "inputs": [
832 {
833 "internalType": "uint256",
834 "name": "repayAmount",
835 "type": "uint256"
836 }
837 ],
838 "name": "repayBorrow",
839 "outputs": [
840 {
841 "internalType": "bool",
842 "name": "",
843 "type": "bool"
844 }
845 ],
846 "stateMutability": "nonpayable",
847 "type": "function"
848 },
849 {
850 "inputs": [
851 {
852 "internalType": "address",
853 "name": "borrower",
854 "type": "address"
855 },
856 {
857 "internalType": "uint256",
858 "name": "repayAmount",
859 "type": "uint256"
860 }
861 ],
862 "name": "repayBorrowBehalf",
863 "outputs": [
864 {
865 "internalType": "bool",
866 "name": "",
867 "type": "bool"
868 }
869 ],
870 "stateMutability": "nonpayable",
871 "type": "function"
872 },
873 {
874 "inputs": [],
875 "name": "symbol",
876 "outputs": [
877 {
878 "internalType": "string",
879 "name": "",
880 "type": "string"
881 }
882 ],
883 "stateMutability": "view",
884 "type": "function"
885 },
886 {
887 "inputs": [],
888 "name": "totalSupply",
889 "outputs": [
890 {
891 "internalType": "uint256",
892 "name": "",
893 "type": "uint256"
894 }
895 ],
896 "stateMutability": "view",
897 "type": "function"
898 },
899 {
900 "inputs": [
901 {
902 "internalType": "address",
903 "name": "recipient",
904 "type": "address"
905 },
906 {
907 "internalType": "uint256",
908 "name": "amount",
909 "type": "uint256"
910 }
911 ],
912 "name": "transfer",
913 "outputs": [
914 {
915 "internalType": "bool",
916 "name": "",
917 "type": "bool"
918 }
919 ],
920 "stateMutability": "nonpayable",
921 "type": "function"
922 },
923 {
924 "inputs": [
925 {
926 "internalType": "address",
927 "name": "sender",
928 "type": "address"
929 },
930 {
931 "internalType": "address",
932 "name": "recipient",
933 "type": "address"
934 },
935 {
936 "internalType": "uint256",
937 "name": "amount",
938 "type": "uint256"
939 }
940 ],
941 "name": "transferFrom",
942 "outputs": [
943 {
944 "internalType": "bool",
945 "name": "",
946 "type": "bool"
947 }
948 ],
949 "stateMutability": "nonpayable",
950 "type": "function"
951 },
952 {
953 "inputs": [],
954 "name": "underlying",
955 "outputs": [
956 {
957 "internalType": "contract Erc20Interface",
958 "name": "",
959 "type": "address"
960 }
961 ],
962 "stateMutability": "view",
963 "type": "function"
964 },
965 {
966 "inputs": [],
967 "name": "underlyingPrecisionScalar",
968 "outputs": [
969 {
970 "internalType": "uint256",
971 "name": "",
972 "type": "uint256"
973 }
974 ],
975 "stateMutability": "view",
976 "type": "function"
977 },
978 {
979 "inputs": [],
980 "name": "version",
981 "outputs": [
982 {
983 "internalType": "string",
984 "name": "",
985 "type": "string"
986 }
987 ],
988 "stateMutability": "view",
989 "type": "function"
990 }
991 ],
992 "bytecode": "0x60806040523480156200001157600080fd5b50604051620061cb380380620061cb833981810160405260e08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060408181526020830151908301516060840151608085015160a0909501516000805460ff1916600117815560118054336101008102610100600160a81b0319909216919091179091559498509296509094939092899289926012928592859285929182917fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf80908290a35082516200023890600b906020860190620007eb565b5081516200024e90600c906020850190620007eb565b50600a805460ff191660ff929092169190911790555050604051600b805446927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f929181908390600261010060018316150260001901909116048015620002ef5780601f10620002cc576101008083540402835291820191620002ef565b820191906000526020600020905b815481529060010190602001808311620002da575b505060408051918290038220828201825260018352603160f81b602093840152815180840196909652858201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606086015260808501959095523060a0808601919091528551808603909101815260c0850180875281519183019190912060085563313ce56760e01b9052935160129750600096506001600160a01b038a16955063313ce5679460c480860195919450919250829003018186803b158015620003b857600080fd5b505afa158015620003cd573d6000803e3d6000fd5b505050506040513d6020811015620003e457600080fd5b505160ff16905080620004295760405162461bcd60e51b8152600401808060200182810382526030815260200180620061336030913960400191505060405180910390fd5b8160ff168111156200046d5760405162461bcd60e51b8152600401808060200182810382526034815260200180620061976034913960400191505060405180910390fd5b808260ff1603600a0a60078190555083600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620004df57600080fd5b505afa158015620004f4573d6000803e3d6000fd5b505050506040513d60208110156200050b57600080fd5b505160ff16905080620005505760405162461bcd60e51b8152600401808060200182810382526030815260200180620060d26030913960400191505060405180910390fd5b808360ff161015620005945760405162461bcd60e51b8152600401808060200182810382526034815260200180620061636034913960400191505060405180910390fd5b60ff8316819003600a0a600255600180546001600160a01b0319166001600160a01b038616179055428811620005fc5760405162461bcd60e51b8152600401808060200182810382526031815260200180620061026031913960400191505060405180910390fd5b6003889055600480546001600160a01b0319166001600160a01b03898116919091178083556040805163058f25c560e41b8152905191909216926358f25c5092808201926020929091829003018186803b1580156200065a57600080fd5b505afa1580156200066f573d6000803e3d6000fd5b505050506040513d60208110156200068657600080fd5b505060008054610100600160a81b0319166101006001600160a01b0389811682029290921792839055604080516318c8788360e21b815290519190930490911691636321e20c916004808301926020929190829003018186803b158015620006ed57600080fd5b505afa15801562000702573d6000803e3d6000fd5b505050506040513d60208110156200071957600080fd5b5050604051879030906200072d9062000880565b6001600160a01b03928316815291166020820152604080519182900301906000f08015801562000761573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03928316179081905560408051637355dad760e11b81523360048201529051919092169163e6abb5ae91602480830192600092919082900301818387803b158015620007c257600080fd5b505af1158015620007d7573d6000803e3d6000fd5b5050505050505050505050505050620008a5565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200082357600085556200086e565b82601f106200083e57805160ff19168380011785556200086e565b828001600101855582156200086e579182015b828111156200086e57825182559160200191906001019062000851565b506200087c9291506200088e565b5090565b611d4c806200438683390190565b5b808211156200087c57600081556001016200088f565b613ad180620008b56000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c80637ecebe001161013b578063cab364f1116100b8578063dde4bec01161007c578063dde4bec014610677578063e6abb5ae146106e5578063e6e0d75c1461070b578063ede4c0cc14610737578063f851a4401461073f5761023d565b8063cab364f1146105e0578063d505accf146105e8578063d8dfeb4514610639578063da284dcc14610641578063dd62ed3e146106495761023d565b8063a457c2d7116100ff578063a457c2d71461055b578063a9059cbb14610587578063b2bc5ef9146105b3578063bfa25308146105bb578063c5ebeaec146105c35761023d565b80637ecebe00146104dc5780637f2b6a0d1461050257806395d89b411461050a5780639dc29fac146105125780639e6ae5a01461053e5761023d565b80632608f818116101c957806340c10f191161018d57806340c10f191461047257806354fd4d501461049e5780636f307dc3146104a657806370a08231146104ae5780637c4950c7146104d45761023d565b80632608f818146103ec57806330adf81f14610418578063313ce567146104205780633644e5151461043e57806339509351146104465761023d565b80631a0de6fa116102105780631a0de6fa146103365780631c2872aa1461033e5780631eabf00d1461036c57806322285cf61461039257806323b872dd146103b65761023d565b806306fdde0314610242578063095ea7b3146102bf5780630e752702146102ff57806318160ddd1461031c575b600080fd5b61024a610747565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028457818101518382015260200161026c565b50505050905090810190601f1680156102b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102eb600480360360408110156102d557600080fd5b506001600160a01b0381351690602001356107d5565b604080519115158252519081900360200190f35b6102eb6004803603602081101561031557600080fd5b50356107eb565b61032461092e565b60408051918252519081900360200190f35b610324610934565b61036a6004803603604081101561035457600080fd5b506001600160a01b03813516906020013561093a565b005b6102eb6004803603602081101561038257600080fd5b50356001600160a01b0316610d9d565b61039a610f1c565b604080516001600160a01b039092168252519081900360200190f35b6102eb600480360360608110156103cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610f30565b6102eb6004803603604081101561040257600080fd5b506001600160a01b038135169060200135610fd5565b61032461111b565b61042861113f565b6040805160ff9092168252519081900360200190f35b610324611148565b6102eb6004803603604081101561045c57600080fd5b506001600160a01b03813516906020013561114e565b6102eb6004803603604081101561048857600080fd5b506001600160a01b0381351690602001356111e5565b61024a61132e565b61039a61134b565b610324600480360360208110156104c457600080fd5b50356001600160a01b031661135a565b61039a611375565b610324600480360360208110156104f257600080fd5b50356001600160a01b0316611384565b6102eb611396565b61024a61139f565b6102eb6004803603604081101561052857600080fd5b506001600160a01b0381351690602001356113fa565b61039a6004803603602081101561055457600080fd5b5035611543565b6102eb6004803603604081101561057157600080fd5b506001600160a01b03813516906020013561156d565b6102eb6004803603604081101561059d57600080fd5b506001600160a01b0381351690602001356115ee565b6103246115fb565b61036a611601565b6102eb600480360360208110156105d957600080fd5b50356116a5565b6102eb611e9f565b61036a600480360360e08110156105fe57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ea4565b61039a612159565b610324612168565b6103246004803603604081101561065f57600080fd5b506001600160a01b038135811691602001351661216e565b61036a6004803603602081101561068d57600080fd5b810190602081018135600160201b8111156106a757600080fd5b8201836020820111156106b957600080fd5b803590602001918460208302840111600160201b831117156106da57600080fd5b509092509050612199565b61036a600480360360208110156106fb57600080fd5b50356001600160a01b0316612460565b6102eb6004803603604081101561072157600080fd5b506001600160a01b038135169060200135612576565b61039a612aca565b61039a612ad9565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107cd5780601f106107a2576101008083540402835291602001916107cd565b820191906000526020600020905b8154815290600101906020018083116107b057829003601f168201915b505050505081565b60006107e2338484612aed565b50600192915050565b6000805460408051632d3caa7360e21b815230600482015233602482018190529151919261010090046001600160a01b03169163b4f2a9cc91604480820192602092909190829003018186803b15801561084457600080fd5b505afa158015610858573d6000803e3d6000fd5b505050506040513d602081101561086e57600080fd5b50516108b6576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff16610902576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff19169055610917338085612bd9565b60019150506000805460ff19166001179055919050565b600d5481565b60075481565b60115461010090046001600160a01b0316331461098e576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60115460ff1615156001146109df576040805162461bcd60e51b815260206004820152601260248201527111549497d393d517d253925510531256915160721b604482015290519081900360640190fd5b60008111610a27576040805162461bcd60e51b815260206004820152601060248201526f4552525f5245434f5645525f5a45524f60801b604482015290519081900360640190fd5b6000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610a9f57600080fd5b8101908080516040519392919084600160201b821115610abe57600080fd5b908301906020820185811115610ad357600080fd5b8251600160201b811182820188101715610aec57600080fd5b82525081516020918201929091019080838360005b83811015610b19578181015183820152602001610b01565b50505050905090810190601f168015610b465780820380516001836020036101000a031916815260200191505b506040525050508051906020012090506000601080549050905060005b81811015610d275760108181548110610b7857fe5b6000918252602090912001546001600160a01b03868116911614801590610ce4575060108181548110610ba757fe5b6000918252602082200154604080516395d89b4160e01b815290516001600160a01b03909216926395d89b4192600480840193829003018186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610c2b57600080fd5b8101908080516040519392919084600160201b821115610c4a57600080fd5b908301906020820185811115610c5f57600080fd5b8251600160201b811182820188101715610c7857600080fd5b82525081516020918201929091019080838360005b83811015610ca5578181015183820152602001610c8d565b50505050905090810190601f168015610cd25780820380516001836020036101000a031916815260200191505b50604052505050805190602001208314155b610d1f5760405162461bcd60e51b815260040180806020018281038252602181526020018061380d6021913960400191505060405180910390fd5b600101610b63565b50601154610d47906001600160a01b038681169161010090041685612f81565b601154604080516001600160a01b03878116825260208201879052825161010090940416927ff6891c84a6c6af32a6d052172a8acc4c631b1d5057ffa2bc1da268b6938ea2da929181900390910190a250505050565b60115460009061010090046001600160a01b03163314610df4576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b816001600160a01b03166358f25c506040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2d57600080fd5b505afa158015610e41573d6000803e3d6000fd5b505050506040513d6020811015610e5757600080fd5b5051610eaa576040805162461bcd60e51b815260206004820152601d60248201527f4552525f5345545f46494e54524f4c4c45525f494e5350454354494f4e000000604482015290519081900360640190fd5b600480546001600160a01b038481166001600160a01b0319831681179093556011546040805193831680855260208501959095528051610100909204909216927f05f5eff078a94c026377ab6c6bdc6d2ad1932a3e4971fd7473348af3609ec57a92908290030190a250600192915050565b60005461010090046001600160a01b031681565b6000610f3d848484612fd8565b6001600160a01b0384166000908152600e602090815260408083203384529091528120548190610f6d908561316c565b90925090506000826004811115610f8057fe5b14610fbc5760405162461bcd60e51b815260040180806020018281038252602e815260200180613873602e913960400191505060405180910390fd5b610fc7863383612aed565b6001925050505b9392505050565b6000805460408051632d3caa7360e21b81523060048201526001600160a01b0386811660248301529151869361010090049092169163b4f2a9cc91604480820192602092909190829003018186803b15801561103057600080fd5b505afa158015611044573d6000803e3d6000fd5b505050506040513d602081101561105a57600080fd5b50516110a2576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff166110ee576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff19169055611103338585612bd9565b60019150506000805460ff1916600117905592915050565b7ffc77c2b9d30fe91687fd39abb7d16fcdfe1472d065740051ab8b13e4bf4a617f81565b600a5460ff1681565b60085481565b336000908152600e602090815260408083206001600160a01b0386168452909152812054819081906111809085613192565b9092509050600082600481111561119357fe5b146111cf5760405162461bcd60e51b81526004018080602001828103825260258152602001806138f16025913960400191505060405180910390fd5b6111da338683612aed565b506001949350505050565b6000805460ff16611232576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556005546001600160a01b0316331461129b576040805162461bcd60e51b815260206004820152601760248201527f4552525f4d494e545f4e4f545f415554484f52495a4544000000000000000000604482015290519081900360640190fd5b600082116112e0576040805162461bcd60e51b815260206004820152600d60248201526c4552525f4d494e545f5a45524f60981b604482015290519081900360640190fd5b6112ea83836131b8565b6040805183815290516001600160a01b0385169130916000805160206139c98339815191529181900360200190a35060016000805460ff1916600117905592915050565b604051806040016040528060018152602001603160f81b81525081565b6006546001600160a01b031681565b6001600160a01b03166000908152600f602052604090205490565b6005546001600160a01b031681565b60096020526000908152604090205481565b60035442101590565b600c805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107cd5780601f106107a2576101008083540402835291602001916107cd565b6000805460ff16611447576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556005546001600160a01b031633146114b0576040805162461bcd60e51b815260206004820152601760248201527f4552525f4255524e5f4e4f545f415554484f52495a4544000000000000000000604482015290519081900360640190fd5b600082116114f5576040805162461bcd60e51b815260206004820152600d60248201526c4552525f4255524e5f5a45524f60981b604482015290519081900360640190fd5b6114ff8383613306565b60408051838152905130916001600160a01b038616916000805160206139c98339815191529181900360200190a35060016000805460ff1916600117905592915050565b6010818154811061155357600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152600e602090815260408083206001600160a01b03861684529091528120548190819061159f908561316c565b909250905060008260048111156115b257fe5b146111cf5760405162461bcd60e51b81526004018080602001828103825260268152602001806137e76026913960400191505060405180910390fd5b60006107e2338484612fd8565b60025481565b60115461010090046001600160a01b03163314611655576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60115460405160009161010090046001600160a01b0316907fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf80908390a360118054610100600160a81b0319169055565b6000805460408051632d3caa7360e21b815230600482015233602482018190529151919261010090046001600160a01b03169163b4f2a9cc91604480820192602092909190829003018186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d602081101561172857600080fd5b5051611770576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff166117bc576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556117ce6136e0565b6117d6611396565b1561181b576040805162461bcd60e51b815260206004820152601060248201526f11549497d093d39117d350551554915160821b604482015290519081900360640190fd5b60008411611862576040805162461bcd60e51b815260206004820152600f60248201526e4552525f424f52524f575f5a45524f60881b604482015290519081900360640190fd5b60048054604080516381a7bc9760e01b81523093810193909352516001600160a01b03909116916381a7bc97916024808301926020929190829003018186803b1580156118ae57600080fd5b505afa1580156118c2573d6000803e3d6000fd5b505050506040513d60208110156118d857600080fd5b5051611924576040805162461bcd60e51b815260206004820152601660248201527511549497d093d49493d5d7d393d517d0531313d5d15160521b604482015290519081900360640190fd5b611930600d5485613192565b60a083018190528282600481111561194457fe5b600481111561194f57fe5b905250600090508151600481111561196357fe5b146119ad576040805162461bcd60e51b815260206004820152601560248201527422a9292fa127a92927abafa6a0aa242fa2a92927a960591b604482015290519081900360640190fd5b600480546040805163d010b00f60e01b81523093810193909352516001600160a01b039091169163d010b00f916024808301926020929190829003018186803b1580156119f957600080fd5b505afa158015611a0d573d6000803e3d6000fd5b505050506040513d6020811015611a2357600080fd5b50516040820181905260a08201511115611a84576040805162461bcd60e51b815260206004820181905260248201527f4552525f424f52524f575f444542545f4345494c494e475f4f564552464c4f57604482015290519081900360640190fd5b6000546040805163bbd7edc560e01b815230600482015233602482015290516101009092046001600160a01b03169163bbd7edc591604480820192608092909190829003018186803b158015611ad957600080fd5b505afa158015611aed573d6000803e3d6000fd5b505050506040513d6080811015611b0357600080fd5b508051604090910151606083018190526020830191909152611b565760405162461bcd60e51b8152600401808060200182810382526021815260200180613a2d6021913960400191505060405180910390fd5b611b64816020015185613192565b60c0830181905282826004811115611b7857fe5b6004811115611b8357fe5b9052506000905081516004811115611b9757fe5b14611be1576040805162461bcd60e51b815260206004820152601560248201527422a9292fa127a92927abafa6a0aa242fa2a92927a960591b604482015290519081900360640190fd5b600054606082015160c08301516040805163d8e51dfb60e01b815230600482015233602482015260448101939093526064830191909152516101009092046001600160a01b03169163d8e51dfb91608480820192602092909190829003018186803b158015611c4f57600080fd5b505afa158015611c63573d6000803e3d6000fd5b505050506040513d6020811015611c7957600080fd5b50516080820152600480546040805163351da44160e21b81523093810193909352516001600160a01b039091169163d4769104916024808301926020929190829003018186803b158015611ccc57600080fd5b505afa158015611ce0573d6000803e3d6000fd5b505050506040513d6020811015611cf657600080fd5b505160e0820181905260808201511015611d415760405162461bcd60e51b81526004018080602001828103825260218152602001806137756021913960400191505060405180910390fd5b611d4b33856131b8565b604080518581529051339130916000805160206139c98339815191529181900360200190a36000805460c083015160408051630b9d2cc360e41b81523060048201523360248201526044810192909252516101009092046001600160a01b03169263b9d2cc30926064808401936020939083900390910190829087803b158015611dd457600080fd5b505af1158015611de8573d6000803e3d6000fd5b505050506040513d6020811015611dfe57600080fd5b5051611e51576040805162461bcd60e51b815260206004820152601e60248201527f4552525f424f52524f575f43414c4c5f5345545f5641554c545f444542540000604482015290519081900360640190fd5b60408051858152905133917fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a36750919081900360200190a26001925050506000805460ff19166001179055919050565b600181565b6001600160a01b038716611ee95760405162461bcd60e51b81526004018080602001828103825260238152602001806137526023913960400191505060405180910390fd5b6001600160a01b038616611f2e5760405162461bcd60e51b815260040180806020018281038252602581526020018061395d6025913960400191505060405180910390fd5b42841015611f83576040805162461bcd60e51b815260206004820152601860248201527f4552525f45524332305f5045524d49545f455850495245440000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526009602090815260408083208054600180820190925582517ffc77c2b9d30fe91687fd39abb7d16fcdfe1472d065740051ab8b13e4bf4a617f8186015280840196909652958c166060860152608085018b905260a085019590955260c08085018a90528151808603909101815260e08501825280519083012060085461190160f01b61010087015261010286015261012280860182905282518087039091018152610142860180845281519185019190912090859052610162860180845281905260ff8a166101828701526101a286018990526101c2860188905291519095919491926101e2808401939192601f1981019281900390910190855afa1580156120a0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166120f25760405162461bcd60e51b815260040180806020018281038252602d8152602001806137ba602d913960400191505060405180910390fd5b896001600160a01b0316816001600160a01b0316146121425760405162461bcd60e51b81526004018080602001828103825260228152602001806139e96022913960400191505060405180910390fd5b61214d8a8a8a612aed565b50505050505050505050565b6001546001600160a01b031681565b60035481565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b60115461010090046001600160a01b031633146121ed576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60115460ff1615612236576040805162461bcd60e51b815260206004820152600e60248201526d11549497d253925510531256915160921b604482015290519081900360640190fd5b8060005b818110156123d35783838281811061224e57fe5b905060200201356001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561229657600080fd5b505afa1580156122aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156122d357600080fd5b8101908080516040519392919084600160201b8211156122f257600080fd5b90830190602082018581111561230757600080fd5b8251600160201b81118282018810171561232057600080fd5b82525081516020918201929091019080838360005b8381101561234d578181015183820152602001612335565b50505050905090810190601f16801561237a5780820380516001836020036101000a031916815260200191505b5060405250505050601084848381811061239057fe5b835460018181018655600095865260209586902090910180546001600160a01b0319166001600160a01b039690930294909401359490941617909155500161223a565b5060118054600160ff1990911617908190556040805160208082528082018690526101009093046001600160a01b0316927fd877543bef27da9036243421e623413c8fdd78d7d183cc93d8f3cddbd657a2ed928792879290918291908201908590850280828437600083820152604051601f909101601f19169092018290039550909350505050a2505050565b60115461010090046001600160a01b031633146124b4576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b6001600160a01b03811661250f576040805162461bcd60e51b815260206004820152601a60248201527f4552525f5345545f41444d494e5f5a45524f5f41444452455353000000000000604482015290519081900360640190fd5b6011546040516001600160a01b0380841692610100900416907fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf8090600090a3601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000805460408051632d3caa7360e21b81523060048201526001600160a01b0386811660248301529151869361010090049092169163b4f2a9cc91604480820192602092909190829003018186803b1580156125d157600080fd5b505afa1580156125e5573d6000803e3d6000fd5b505050506040513d60208110156125fb57600080fd5b5051612643576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff1661268f576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556126a1613726565b336001600160a01b03861614156126ff576040805162461bcd60e51b815260206004820152601960248201527f4552525f4c49515549444154455f424f52524f575f53454c4600000000000000604482015290519081900360640190fd5b60008411612754576040805162461bcd60e51b815260206004820152601960248201527f4552525f4c49515549444154455f424f52524f575f5a45524f00000000000000604482015290519081900360640190fd5b6004805460408051632ec8fffb60e21b81523093810193909352516001600160a01b039091169163bb23ffec916024808301926020929190829003018186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d60208110156127ca57600080fd5b505161281d576040805162461bcd60e51b815260206004820181905260248201527f4552525f4c49515549444154455f424f52524f575f4e4f545f414c4c4f574544604482015290519081900360640190fd5b612825611396565b6129085760005460408051639ee91d1f60e01b81523060048201526001600160a01b038881166024830152915161010090930490911691639ee91d1f91604480820192602092909190829003018186803b15801561288257600080fd5b505afa158015612896573d6000803e3d6000fd5b505050506040513d60208110156128ac57600080fd5b5051151560608201819052612908576040805162461bcd60e51b815260206004820152601a60248201527f4552525f4143434f554e545f4e4f545f554e4445525741544552000000000000604482015290519081900360640190fd5b612913338686612bd9565b600080546040805163464b048560e01b81523060048201526024810188905290516101009092046001600160a01b03169163464b048591604480820192602092909190829003018186803b15801561296a57600080fd5b505afa15801561297e573d6000803e3d6000fd5b505050506040513d602081101561299457600080fd5b50516000805460408051630e496ef360e01b81523060048201523360248201526001600160a01b038b811660448301526064820186905291519495506101009092041692630e496ef392608480840193602093929083900390910190829087803b158015612a0157600080fd5b505af1158015612a15573d6000803e3d6000fd5b505050506040513d6020811015612a2b57600080fd5b5051612a685760405162461bcd60e51b815260040180806020018281038252602b8152602001806138a1602b913960400191505060405180910390fd5b604080518681526020810183905281516001600160a01b0389169233927f08b197b6ae66d18ee6fa20a826a84579a925b9e646a3bf19e96f59ed568c2688929081900390910190a3600193505050506000805460ff1916600117905592915050565b6004546001600160a01b031681565b60115461010090046001600160a01b031681565b6001600160a01b038316612b325760405162461bcd60e51b8152600401808060200182810382526023815260200180613a796023913960400191505060405180910390fd5b6001600160a01b038216612b775760405162461bcd60e51b815260040180806020018281038252602181526020018061382e6021913960400191505060405180910390fd5b6001600160a01b038084166000818152600e6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008111612c26576040805162461bcd60e51b81526020600482015260156024820152744552525f52455041595f424f52524f575f5a45524f60581b604482015290519081900360640190fd5b600480546040805163e60f077360e01b81523093810193909352516001600160a01b039091169163e60f0773916024808301926020929190829003018186803b158015612c7257600080fd5b505afa158015612c86573d6000803e3d6000fd5b505050506040513d6020811015612c9c57600080fd5b5051612cef576040805162461bcd60e51b815260206004820152601c60248201527f4552525f52455041595f424f52524f575f4e4f545f414c4c4f57454400000000604482015290519081900360640190fd5b6000805460408051638a0695fd60e01b81523060048201526001600160a01b038681166024830152915161010090930490911691638a0695fd91604480820192602092909190829003018186803b158015612d4957600080fd5b505afa158015612d5d573d6000803e3d6000fd5b505050506040513d6020811015612d7357600080fd5b5051905081811015612db65760405162461bcd60e51b815260040180806020018281038252602281526020018061393b6022913960400191505060405180910390fd5b81612dc08561135a565b1015612dfd5760405162461bcd60e51b81526004018080602001828103825260258152602001806139166025913960400191505060405180910390fd5b612e078483613306565b60408051838152905130916001600160a01b038716916000805160206139c98339815191529181900360200190a3600080612e42838561316c565b90925090506000826004811115612e5557fe5b14612e5c57fe5b6000805460408051630b9d2cc360e41b81523060048201526001600160a01b0389811660248301526044820186905291516101009093049091169263b9d2cc30926064808401936020939083900390910190829087803b158015612ebf57600080fd5b505af1158015612ed3573d6000803e3d6000fd5b505050506040513d6020811015612ee957600080fd5b5051612f265760405162461bcd60e51b81526004018080602001828103825260248152602001806139826024913960400191505060405180910390fd5b846001600160a01b0316866001600160a01b03167fa9a154237a69922f8860321d1fec1624a5dbe8a8af89a3dd3d7a759f6c8080d88684604051808381526020018281526020019250505060405180910390a3505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612fd3908490613454565b505050565b6001600160a01b03831661301d5760405162461bcd60e51b815260040180806020018281038252602481526020018061384f6024913960400191505060405180910390fd5b6001600160a01b0382166130625760405162461bcd60e51b8152600401808060200182810382526022815260200180613a0b6022913960400191505060405180910390fd5b6001600160a01b0383166000908152600f602052604081205481908190613089908561316c565b9093509150600083600481111561309c57fe5b146130d85760405162461bcd60e51b815260040180806020018281038252602b815260200180613a4e602b913960400191505060405180910390fd5b6001600160a01b038087166000908152600f6020526040808220859055918716815220546131069085613192565b9093509050600083600481111561311957fe5b1461312057fe5b6001600160a01b038086166000818152600f60209081526040918290208590558151888152915192938a16926000805160206139c98339815191529281900390910190a3505050505050565b60008083831161318357506000905081830361318b565b506003905060005b9250929050565b6000808383018481106131aa5760009250905061318b565b60026000925092505061318b565b6001600160a01b0382166000908152600f6020526040812054819081906131df9085613192565b909350915060008360048111156131f257fe5b14613244576040805162461bcd60e51b815260206004820152601f60248201527f4552525f45524332305f4d494e545f42414c414e43455f4f564552464c4f5700604482015290519081900360640190fd5b6001600160a01b0385166000908152600f60205260409020829055600d5461326c9085613192565b9093509050600083600481111561327f57fe5b146132bb5760405162461bcd60e51b81526004018080602001828103825260248152602001806137966024913960400191505060405180910390fd5b600d8190556040805185815290516001600160a01b038716917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050505050565b6001600160a01b0382166000908152600f60205260408120548190819061332d908561316c565b9093509150600083600481111561334057fe5b14613392576040805162461bcd60e51b815260206004820181905260248201527f4552525f45524332305f4255524e5f42414c414e43455f554e444552464c4f57604482015290519081900360640190fd5b6001600160a01b0385166000908152600f60205260409020829055600d546133ba908561316c565b909350905060008360048111156133cd57fe5b146134095760405162461bcd60e51b81526004018080602001828103825260258152602001806138cc6025913960400191505060405180910390fd5b600d8190556040805185815290516001600160a01b038716917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050505050565b600061349683836040518060400160405280601d81526020017f4552525f534146455f45524332305f4c4f575f4c4556454c5f43414c4c000000815250613508565b805190915015612fd3578080602001905160208110156134b557600080fd5b5051612fd3576040805162461bcd60e51b815260206004820152601e60248201527f4552525f534146455f45524332305f45524332305f4f5045524154494f4e0000604482015290519081900360640190fd5b606061351c846001600160a01b03166136a4565b6135575760405162461bcd60e51b81526004018080602001828103825260238152602001806139a66023913960400191505060405180910390fd5b600080856001600160a01b0316856040518082805190602001908083835b602083106135945780518252601f199092019160209182019101613575565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f6576040519150601f19603f3d011682016040523d82523d6000602084013e6135fb565b606091505b5091509150811561360f579150610fce9050565b80511561361f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613669578181015183820152602001613651565b50505050905090810190601f1680156136965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906136d857508115155b949350505050565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600015158152509056fe4552525f45524332305f5045524d49545f4f574e45525f5a45524f5f414444524553534552525f42454c4f575f434f4c4c41544552414c495a4154494f4e5f524154494f4552525f45524332305f4d494e545f544f54414c5f535550504c595f4f564552464c4f574552525f45524332305f5045524d49545f5245434f56455245445f4f574e45525f5a45524f5f414444524553534552525f45524332305f44454352454153455f414c4c4f57414e43455f554e444552464c4f574552525f5245434f5645525f4e4f4e5f5245434f56455241424c455f544f4b454e4552525f45524332305f415050524f56455f544f5f5a45524f5f414444524553534552525f45524332305f5452414e534645525f46524f4d5f5a45524f5f414444524553534552525f45524332305f5452414e534645525f46524f4d5f494e53554646494349454e545f414c4c4f57414e43454552525f4c49515549444154455f424f52524f575f43414c4c5f434c555443485f434f4c4c41544552414c4552525f45524332305f4255524e5f544f54414c5f535550504c595f554e444552464c4f574552525f45524332305f494e4352454153455f414c4c4f57414e43455f4f564552464c4f574552525f52455041595f424f52524f575f494e53554646494349454e545f42414c414e43454552525f52455041595f424f52524f575f494e53554646494349454e545f444542544552525f45524332305f5045524d49545f5350454e4445525f5a45524f5f414444524553534552525f52455041595f424f52524f575f43414c4c5f5345545f5641554c545f444542544552525f534146455f45524332305f43414c4c5f544f5f4e4f4e5f434f4e5452414354ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552525f45524332305f5045524d49545f494e56414c49445f5349474e41545552454552525f45524332305f5452414e534645525f544f5f5a45524f5f414444524553534552525f424f52524f575f4c4f434b45445f434f4c4c41544552414c5f5a45524f4552525f45524332305f5452414e534645525f53454e4445525f42414c414e43455f554e444552464c4f574552525f45524332305f415050524f56455f46524f4d5f5a45524f5f41444452455353a26469706673582212208cee194c7873c76d0f278e0c8b44232bda5b534513841a90b49f26680b23561664736f6c63430007060033608060405234801561001057600080fd5b50604051611d4c380380611d4c8339818101604052604081101561003357600080fd5b5080516020909101516000805460ff1916600117815560048054336101008102610100600160a81b031990921691909117909155604051909182917fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf80908290a35081600060016101000a8154816001600160a01b0302191690836001600160a01b03160217905550600060019054906101000a90046001600160a01b03166001600160a01b03166358f25c506040518163ffffffff1660e01b815260040160206040518083038186803b15801561010957600080fd5b505afa15801561011d573d6000803e3d6000fd5b505050506040513d602081101561013357600080fd5b5050600280546001600160a01b0319166001600160a01b039290921691909117905550611be7806101656000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063dde4bec011610071578063dde4bec014610166578063e02dcb17146101d4578063e6abb5ae146101f1578063ede4c0cc14610217578063f1374d181461021f578063f851a4401461023c576100b4565b8063143a08d4146100b95780631c2872aa146100d357806373805ae2146101015780639e6ae5a01461011d578063bfa2530814610156578063dc3bfba91461015e575b600080fd5b6100c1610244565b60408051918252519081900360200190f35b6100ff600480360360408110156100e957600080fd5b506001600160a01b03813516906020013561024a565b005b6101096106ad565b604080519115158252519081900360200190f35b61013a6004803603602081101561013357600080fd5b50356106b2565b604080516001600160a01b039092168252519081900360200190f35b6100ff6106dc565b61013a610780565b6100ff6004803603602081101561017c57600080fd5b810190602081018135600160201b81111561019657600080fd5b8201836020820111156101a857600080fd5b803590602001918460208302840111600160201b831117156101c957600080fd5b50909250905061078f565b610109600480360360208110156101ea57600080fd5b5035610a56565b6100ff6004803603602081101561020757600080fd5b50356001600160a01b0316611018565b61013a61112e565b6101096004803603602081101561023557600080fd5b5035611142565b61013a6116e6565b60015481565b60045461010090046001600160a01b0316331461029e576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60045460ff1615156001146102ef576040805162461bcd60e51b815260206004820152601260248201527111549497d393d517d253925510531256915160721b604482015290519081900360640190fd5b60008111610337576040805162461bcd60e51b815260206004820152601060248201526f4552525f5245434f5645525f5a45524f60801b604482015290519081900360640190fd5b6000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561037257600080fd5b505afa158015610386573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156103af57600080fd5b8101908080516040519392919084600160201b8211156103ce57600080fd5b9083019060208201858111156103e357600080fd5b8251600160201b8111828201881017156103fc57600080fd5b82525081516020918201929091019080838360005b83811015610429578181015183820152602001610411565b50505050905090810190601f1680156104565780820380516001836020036101000a031916815260200191505b506040525050508051906020012090506000600380549050905060005b81811015610637576003818154811061048857fe5b6000918252602090912001546001600160a01b038681169116148015906105f45750600381815481106104b757fe5b6000918252602082200154604080516395d89b4160e01b815290516001600160a01b03909216926395d89b4192600480840193829003018186803b1580156104fe57600080fd5b505afa158015610512573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561053b57600080fd5b8101908080516040519392919084600160201b82111561055a57600080fd5b90830190602082018581111561056f57600080fd5b8251600160201b81118282018810171561058857600080fd5b82525081516020918201929091019080838360005b838110156105b557818101518382015260200161059d565b50505050905090810190601f1680156105e25780820380516001836020036101000a031916815260200191505b50604052505050805190602001208314155b61062f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b226021913960400191505060405180910390fd5b600101610473565b50600454610657906001600160a01b0386811691610100900416856116fa565b600454604080516001600160a01b03878116825260208201879052825161010090940416927ff6891c84a6c6af32a6d052172a8acc4c631b1d5057ffa2bc1da268b6938ea2da929181900390910190a250505050565b600181565b600381815481106106c257600080fd5b6000918252602090912001546001600160a01b0316905081565b60045461010090046001600160a01b03163314610730576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60045460405160009161010090046001600160a01b0316907fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf80908390a360048054610100600160a81b0319169055565b6002546001600160a01b031681565b60045461010090046001600160a01b031633146107e3576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60045460ff161561082c576040805162461bcd60e51b815260206004820152600e60248201526d11549497d253925510531256915160921b604482015290519081900360640190fd5b8060005b818110156109c95783838281811061084457fe5b905060200201356001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561088c57600080fd5b505afa1580156108a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156108c957600080fd5b8101908080516040519392919084600160201b8211156108e857600080fd5b9083019060208201858111156108fd57600080fd5b8251600160201b81118282018810171561091657600080fd5b82525081516020918201929091019080838360005b8381101561094357818101518382015260200161092b565b50505050905090810190601f1680156109705780820380516001836020036101000a031916815260200191505b5060405250505050600384848381811061098657fe5b835460018181018655600095865260209586902090910180546001600160a01b0319166001600160a01b0396909302949094013594909416179091555001610830565b5060048054600160ff1990911617908190556040805160208082528082018690526101009093046001600160a01b0316927fd877543bef27da9036243421e623413c8fdd78d7d183cc93d8f3cddbd657a2ed928792879290918291908201908590850280828437600083820152604051601f909101601f19169092018290039550909350505050a2505050565b6000805460ff16610aa3576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff19169055610ab5611af8565b600260009054906101000a90046001600160a01b03166001600160a01b031663da284dcc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0357600080fd5b505afa158015610b17573d6000803e3d6000fd5b505050506040513d6020811015610b2d57600080fd5b5051421015610b7a576040805162461bcd60e51b815260206004820152601460248201527311549497d093d39117d393d517d350551554915160621b604482015290519081900360640190fd5b60008311610bcf576040805162461bcd60e51b815260206004820152601860248201527f4552525f52454445454d5f4659544f4b454e535f5a45524f0000000000000000604482015290519081900360640190fd5b6000546002546040805163162fdba360e01b81526001600160a01b03928316600482015290516101009093049091169163162fdba391602480820192602092909190829003018186803b158015610c2557600080fd5b505afa158015610c39573d6000803e3d6000fd5b505050506040513d6020811015610c4f57600080fd5b5051610ca2576040805162461bcd60e51b815260206004820152601f60248201527f4552525f52454445454d5f4659544f4b454e535f4e4f545f414c4c4f57454400604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316631a0de6fa6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b505160408201819052600114610dc257610d38838260400151611751565b6060830181905282826004811115610d4c57fe5b6004811115610d5757fe5b9052506000905081516004811115610d6b57fe5b14610dbd576040805162461bcd60e51b815260206004820152601e60248201527f4552525f52454445454d5f4659544f4b454e535f4d4154485f4552524f520000604482015290519081900360640190fd5b610dca565b606081018390525b60015481606001511115610e0f5760405162461bcd60e51b815260040180806020018281038252602b815260200180611b43602b913960400191505060405180910390fd5b610e1f600154826060015161177d565b6020830181905282826004811115610e3357fe5b6004811115610e3e57fe5b9052506000905081516004811115610e5257fe5b14610e5957fe5b60208082015160015560025460408051632770a7eb60e21b81523360048201526024810187905290516001600160a01b0390921692639dc29fac926044808401938290030181600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d6020811015610eda57600080fd5b5051610f2d576040805162461bcd60e51b815260206004820152601f60248201527f4552525f535550504c595f554e4445524c59494e475f43414c4c5f4255524e00604482015290519081900360640190fd5b610fc0338260600151600260009054906101000a90046001600160a01b03166001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8457600080fd5b505afa158015610f98573d6000803e3d6000fd5b505050506040513d6020811015610fae57600080fd5b50516001600160a01b031691906116fa565b6060810151604080518581526020810192909252805133927f885a0ef214a8c0b5d41cbf3cd2292d459773279061790ae6c1e654483828048792908290030190a260019150506000805460ff19166001179055919050565b60045461010090046001600160a01b0316331461106c576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b6001600160a01b0381166110c7576040805162461bcd60e51b815260206004820152601a60248201527f4552525f5345545f41444d494e5f5a45524f5f41444452455353000000000000604482015290519081900360640190fd5b6004546040516001600160a01b0380841692610100900416907fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf8090600090a3600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60005461010090046001600160a01b031681565b6000805460ff1661118f576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556111a1611af8565b600260009054906101000a90046001600160a01b03166001600160a01b031663da284dcc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ef57600080fd5b505afa158015611203573d6000803e3d6000fd5b505050506040513d602081101561121957600080fd5b50514210611261576040805162461bcd60e51b815260206004820152601060248201526f11549497d093d39117d350551554915160821b604482015290519081900360640190fd5b600083116112b6576040805162461bcd60e51b815260206004820152601a60248201527f4552525f535550504c595f554e4445524c59494e475f5a45524f000000000000604482015290519081900360640190fd5b6000546002546040805163e79628ab60e01b81526001600160a01b03928316600482015290516101009093049091169163e79628ab91602480820192602092909190829003018186803b15801561130c57600080fd5b505afa158015611320573d6000803e3d6000fd5b505050506040513d602081101561133657600080fd5b50516113735760405162461bcd60e51b8152600401808060200182810382526021815260200180611b6e6021913960400191505060405180910390fd5b61137f600154846117a0565b604083018190528282600481111561139357fe5b600481111561139e57fe5b90525060009050815160048111156113b257fe5b14611404576040805162461bcd60e51b815260206004820181905260248201527f4552525f535550504c595f554e4445524c59494e475f4d4154485f4552524f52604482015290519081900360640190fd5b6040808201516001556002548151630d06f37d60e11b815291516001600160a01b0390911691631a0de6fa916004808301926020929190829003018186803b15801561144f57600080fd5b505afa158015611463573d6000803e3d6000fd5b505050506040513d602081101561147957600080fd5b505160608201819052600114611521576114978382606001516117c6565b60208301819052828260048111156114ab57fe5b60048111156114b657fe5b90525060009050815160048111156114ca57fe5b1461151c576040805162461bcd60e51b815260206004820181905260248201527f4552525f535550504c595f554e4445524c59494e475f4d4154485f4552524f52604482015290519081900360640190fd5b611529565b602081018390525b600254602080830151604080516340c10f1960e01b81523360048201526024810192909252516001600160a01b03909316926340c10f19926044808401939192918290030181600087803b15801561158057600080fd5b505af1158015611594573d6000803e3d6000fd5b505050506040513d60208110156115aa57600080fd5b50516115fd576040805162461bcd60e51b815260206004820152601f60248201527f4552525f535550504c595f554e4445524c59494e475f43414c4c5f4d494e5400604482015290519081900360640190fd5b61168e333085600260009054906101000a90046001600160a01b03166001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561165157600080fd5b505afa158015611665573d6000803e3d6000fd5b505050506040513d602081101561167b57600080fd5b50516001600160a01b0316929190611805565b6020808201516040805186815292830191909152805133927fc460d7cbd3e39052de48c19518b5af10728a5349bc2870e47b5a67ffc32d200d92908290030190a260019150506000805460ff19166001179055919050565b60045461010090046001600160a01b031681565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261174c908490611865565b505050565b600080826117655750600190506000611776565b600083858161177057fe5b04915091505b9250929050565b600080838311611794575060009050818303611776565b50600390506000611776565b6000808383018481106117b857600092509050611776565b600260009250925050611776565b600080836117d957506000905080611776565b838302838582816117e657fe5b04146117fa57600260009250925050611776565b600092509050611776565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261185f908590611865565b50505050565b60006118a783836040518060400160405280601d81526020017f4552525f534146455f45524332305f4c4f575f4c4556454c5f43414c4c000000815250611919565b80519091501561174c578080602001905160208110156118c657600080fd5b505161174c576040805162461bcd60e51b815260206004820152601e60248201527f4552525f534146455f45524332305f45524332305f4f5045524154494f4e0000604482015290519081900360640190fd5b606061192d846001600160a01b0316611abc565b6119685760405162461bcd60e51b8152600401808060200182810382526023815260200180611b8f6023913960400191505060405180910390fd5b600080856001600160a01b0316856040518082805190602001908083835b602083106119a55780518252601f199092019160209182019101611986565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a07576040519150601f19603f3d011682016040523d82523d6000602084013e611a0c565b606091505b50915091508115611a20579150611ab59050565b805115611a305780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a7a578181015183820152602001611a62565b50505050905090810190601f168015611aa75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611af057508115155b949350505050565b60408051608081019091528060008152602001600081526020016000815260200160008152509056fe4552525f5245434f5645525f4e4f4e5f5245434f56455241424c455f544f4b454e4552525f52454445454d5f4659544f4b454e535f494e53554646494349454e545f554e4445524c59494e474552525f535550504c595f554e4445524c59494e475f4e4f545f414c4c4f5745444552525f534146455f45524332305f43414c4c5f544f5f4e4f4e5f434f4e5452414354a2646970667358221220504e7960f16a46f68ab102d0a6c00cc3b4e3021515e5b688b79030739924e0a964736f6c634300070600334552525f4659544f4b454e5f434f4e5354525543544f525f434f4c4c41544552414c5f444543494d414c535f5a45524f4552525f4659544f4b454e5f434f4e5354525543544f525f45585049524154494f4e5f54494d455f4e4f545f56414c49444552525f4659544f4b454e5f434f4e5354525543544f525f554e4445524c59494e475f444543494d414c535f5a45524f4552525f4659544f4b454e5f434f4e5354525543544f525f434f4c4c41544552414c5f444543494d414c535f4f564552464c4f574552525f4659544f4b454e5f434f4e5354525543544f525f554e4445524c59494e475f444543494d414c535f4f564552464c4f57",
993 "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061023d5760003560e01c80637ecebe001161013b578063cab364f1116100b8578063dde4bec01161007c578063dde4bec014610677578063e6abb5ae146106e5578063e6e0d75c1461070b578063ede4c0cc14610737578063f851a4401461073f5761023d565b8063cab364f1146105e0578063d505accf146105e8578063d8dfeb4514610639578063da284dcc14610641578063dd62ed3e146106495761023d565b8063a457c2d7116100ff578063a457c2d71461055b578063a9059cbb14610587578063b2bc5ef9146105b3578063bfa25308146105bb578063c5ebeaec146105c35761023d565b80637ecebe00146104dc5780637f2b6a0d1461050257806395d89b411461050a5780639dc29fac146105125780639e6ae5a01461053e5761023d565b80632608f818116101c957806340c10f191161018d57806340c10f191461047257806354fd4d501461049e5780636f307dc3146104a657806370a08231146104ae5780637c4950c7146104d45761023d565b80632608f818146103ec57806330adf81f14610418578063313ce567146104205780633644e5151461043e57806339509351146104465761023d565b80631a0de6fa116102105780631a0de6fa146103365780631c2872aa1461033e5780631eabf00d1461036c57806322285cf61461039257806323b872dd146103b65761023d565b806306fdde0314610242578063095ea7b3146102bf5780630e752702146102ff57806318160ddd1461031c575b600080fd5b61024a610747565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028457818101518382015260200161026c565b50505050905090810190601f1680156102b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102eb600480360360408110156102d557600080fd5b506001600160a01b0381351690602001356107d5565b604080519115158252519081900360200190f35b6102eb6004803603602081101561031557600080fd5b50356107eb565b61032461092e565b60408051918252519081900360200190f35b610324610934565b61036a6004803603604081101561035457600080fd5b506001600160a01b03813516906020013561093a565b005b6102eb6004803603602081101561038257600080fd5b50356001600160a01b0316610d9d565b61039a610f1c565b604080516001600160a01b039092168252519081900360200190f35b6102eb600480360360608110156103cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610f30565b6102eb6004803603604081101561040257600080fd5b506001600160a01b038135169060200135610fd5565b61032461111b565b61042861113f565b6040805160ff9092168252519081900360200190f35b610324611148565b6102eb6004803603604081101561045c57600080fd5b506001600160a01b03813516906020013561114e565b6102eb6004803603604081101561048857600080fd5b506001600160a01b0381351690602001356111e5565b61024a61132e565b61039a61134b565b610324600480360360208110156104c457600080fd5b50356001600160a01b031661135a565b61039a611375565b610324600480360360208110156104f257600080fd5b50356001600160a01b0316611384565b6102eb611396565b61024a61139f565b6102eb6004803603604081101561052857600080fd5b506001600160a01b0381351690602001356113fa565b61039a6004803603602081101561055457600080fd5b5035611543565b6102eb6004803603604081101561057157600080fd5b506001600160a01b03813516906020013561156d565b6102eb6004803603604081101561059d57600080fd5b506001600160a01b0381351690602001356115ee565b6103246115fb565b61036a611601565b6102eb600480360360208110156105d957600080fd5b50356116a5565b6102eb611e9f565b61036a600480360360e08110156105fe57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ea4565b61039a612159565b610324612168565b6103246004803603604081101561065f57600080fd5b506001600160a01b038135811691602001351661216e565b61036a6004803603602081101561068d57600080fd5b810190602081018135600160201b8111156106a757600080fd5b8201836020820111156106b957600080fd5b803590602001918460208302840111600160201b831117156106da57600080fd5b509092509050612199565b61036a600480360360208110156106fb57600080fd5b50356001600160a01b0316612460565b6102eb6004803603604081101561072157600080fd5b506001600160a01b038135169060200135612576565b61039a612aca565b61039a612ad9565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107cd5780601f106107a2576101008083540402835291602001916107cd565b820191906000526020600020905b8154815290600101906020018083116107b057829003601f168201915b505050505081565b60006107e2338484612aed565b50600192915050565b6000805460408051632d3caa7360e21b815230600482015233602482018190529151919261010090046001600160a01b03169163b4f2a9cc91604480820192602092909190829003018186803b15801561084457600080fd5b505afa158015610858573d6000803e3d6000fd5b505050506040513d602081101561086e57600080fd5b50516108b6576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff16610902576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff19169055610917338085612bd9565b60019150506000805460ff19166001179055919050565b600d5481565b60075481565b60115461010090046001600160a01b0316331461098e576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60115460ff1615156001146109df576040805162461bcd60e51b815260206004820152601260248201527111549497d393d517d253925510531256915160721b604482015290519081900360640190fd5b60008111610a27576040805162461bcd60e51b815260206004820152601060248201526f4552525f5245434f5645525f5a45524f60801b604482015290519081900360640190fd5b6000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610a9f57600080fd5b8101908080516040519392919084600160201b821115610abe57600080fd5b908301906020820185811115610ad357600080fd5b8251600160201b811182820188101715610aec57600080fd5b82525081516020918201929091019080838360005b83811015610b19578181015183820152602001610b01565b50505050905090810190601f168015610b465780820380516001836020036101000a031916815260200191505b506040525050508051906020012090506000601080549050905060005b81811015610d275760108181548110610b7857fe5b6000918252602090912001546001600160a01b03868116911614801590610ce4575060108181548110610ba757fe5b6000918252602082200154604080516395d89b4160e01b815290516001600160a01b03909216926395d89b4192600480840193829003018186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610c2b57600080fd5b8101908080516040519392919084600160201b821115610c4a57600080fd5b908301906020820185811115610c5f57600080fd5b8251600160201b811182820188101715610c7857600080fd5b82525081516020918201929091019080838360005b83811015610ca5578181015183820152602001610c8d565b50505050905090810190601f168015610cd25780820380516001836020036101000a031916815260200191505b50604052505050805190602001208314155b610d1f5760405162461bcd60e51b815260040180806020018281038252602181526020018061380d6021913960400191505060405180910390fd5b600101610b63565b50601154610d47906001600160a01b038681169161010090041685612f81565b601154604080516001600160a01b03878116825260208201879052825161010090940416927ff6891c84a6c6af32a6d052172a8acc4c631b1d5057ffa2bc1da268b6938ea2da929181900390910190a250505050565b60115460009061010090046001600160a01b03163314610df4576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b816001600160a01b03166358f25c506040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2d57600080fd5b505afa158015610e41573d6000803e3d6000fd5b505050506040513d6020811015610e5757600080fd5b5051610eaa576040805162461bcd60e51b815260206004820152601d60248201527f4552525f5345545f46494e54524f4c4c45525f494e5350454354494f4e000000604482015290519081900360640190fd5b600480546001600160a01b038481166001600160a01b0319831681179093556011546040805193831680855260208501959095528051610100909204909216927f05f5eff078a94c026377ab6c6bdc6d2ad1932a3e4971fd7473348af3609ec57a92908290030190a250600192915050565b60005461010090046001600160a01b031681565b6000610f3d848484612fd8565b6001600160a01b0384166000908152600e602090815260408083203384529091528120548190610f6d908561316c565b90925090506000826004811115610f8057fe5b14610fbc5760405162461bcd60e51b815260040180806020018281038252602e815260200180613873602e913960400191505060405180910390fd5b610fc7863383612aed565b6001925050505b9392505050565b6000805460408051632d3caa7360e21b81523060048201526001600160a01b0386811660248301529151869361010090049092169163b4f2a9cc91604480820192602092909190829003018186803b15801561103057600080fd5b505afa158015611044573d6000803e3d6000fd5b505050506040513d602081101561105a57600080fd5b50516110a2576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff166110ee576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff19169055611103338585612bd9565b60019150506000805460ff1916600117905592915050565b7ffc77c2b9d30fe91687fd39abb7d16fcdfe1472d065740051ab8b13e4bf4a617f81565b600a5460ff1681565b60085481565b336000908152600e602090815260408083206001600160a01b0386168452909152812054819081906111809085613192565b9092509050600082600481111561119357fe5b146111cf5760405162461bcd60e51b81526004018080602001828103825260258152602001806138f16025913960400191505060405180910390fd5b6111da338683612aed565b506001949350505050565b6000805460ff16611232576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556005546001600160a01b0316331461129b576040805162461bcd60e51b815260206004820152601760248201527f4552525f4d494e545f4e4f545f415554484f52495a4544000000000000000000604482015290519081900360640190fd5b600082116112e0576040805162461bcd60e51b815260206004820152600d60248201526c4552525f4d494e545f5a45524f60981b604482015290519081900360640190fd5b6112ea83836131b8565b6040805183815290516001600160a01b0385169130916000805160206139c98339815191529181900360200190a35060016000805460ff1916600117905592915050565b604051806040016040528060018152602001603160f81b81525081565b6006546001600160a01b031681565b6001600160a01b03166000908152600f602052604090205490565b6005546001600160a01b031681565b60096020526000908152604090205481565b60035442101590565b600c805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107cd5780601f106107a2576101008083540402835291602001916107cd565b6000805460ff16611447576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556005546001600160a01b031633146114b0576040805162461bcd60e51b815260206004820152601760248201527f4552525f4255524e5f4e4f545f415554484f52495a4544000000000000000000604482015290519081900360640190fd5b600082116114f5576040805162461bcd60e51b815260206004820152600d60248201526c4552525f4255524e5f5a45524f60981b604482015290519081900360640190fd5b6114ff8383613306565b60408051838152905130916001600160a01b038616916000805160206139c98339815191529181900360200190a35060016000805460ff1916600117905592915050565b6010818154811061155357600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152600e602090815260408083206001600160a01b03861684529091528120548190819061159f908561316c565b909250905060008260048111156115b257fe5b146111cf5760405162461bcd60e51b81526004018080602001828103825260268152602001806137e76026913960400191505060405180910390fd5b60006107e2338484612fd8565b60025481565b60115461010090046001600160a01b03163314611655576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60115460405160009161010090046001600160a01b0316907fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf80908390a360118054610100600160a81b0319169055565b6000805460408051632d3caa7360e21b815230600482015233602482018190529151919261010090046001600160a01b03169163b4f2a9cc91604480820192602092909190829003018186803b1580156116fe57600080fd5b505afa158015611712573d6000803e3d6000fd5b505050506040513d602081101561172857600080fd5b5051611770576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff166117bc576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556117ce6136e0565b6117d6611396565b1561181b576040805162461bcd60e51b815260206004820152601060248201526f11549497d093d39117d350551554915160821b604482015290519081900360640190fd5b60008411611862576040805162461bcd60e51b815260206004820152600f60248201526e4552525f424f52524f575f5a45524f60881b604482015290519081900360640190fd5b60048054604080516381a7bc9760e01b81523093810193909352516001600160a01b03909116916381a7bc97916024808301926020929190829003018186803b1580156118ae57600080fd5b505afa1580156118c2573d6000803e3d6000fd5b505050506040513d60208110156118d857600080fd5b5051611924576040805162461bcd60e51b815260206004820152601660248201527511549497d093d49493d5d7d393d517d0531313d5d15160521b604482015290519081900360640190fd5b611930600d5485613192565b60a083018190528282600481111561194457fe5b600481111561194f57fe5b905250600090508151600481111561196357fe5b146119ad576040805162461bcd60e51b815260206004820152601560248201527422a9292fa127a92927abafa6a0aa242fa2a92927a960591b604482015290519081900360640190fd5b600480546040805163d010b00f60e01b81523093810193909352516001600160a01b039091169163d010b00f916024808301926020929190829003018186803b1580156119f957600080fd5b505afa158015611a0d573d6000803e3d6000fd5b505050506040513d6020811015611a2357600080fd5b50516040820181905260a08201511115611a84576040805162461bcd60e51b815260206004820181905260248201527f4552525f424f52524f575f444542545f4345494c494e475f4f564552464c4f57604482015290519081900360640190fd5b6000546040805163bbd7edc560e01b815230600482015233602482015290516101009092046001600160a01b03169163bbd7edc591604480820192608092909190829003018186803b158015611ad957600080fd5b505afa158015611aed573d6000803e3d6000fd5b505050506040513d6080811015611b0357600080fd5b508051604090910151606083018190526020830191909152611b565760405162461bcd60e51b8152600401808060200182810382526021815260200180613a2d6021913960400191505060405180910390fd5b611b64816020015185613192565b60c0830181905282826004811115611b7857fe5b6004811115611b8357fe5b9052506000905081516004811115611b9757fe5b14611be1576040805162461bcd60e51b815260206004820152601560248201527422a9292fa127a92927abafa6a0aa242fa2a92927a960591b604482015290519081900360640190fd5b600054606082015160c08301516040805163d8e51dfb60e01b815230600482015233602482015260448101939093526064830191909152516101009092046001600160a01b03169163d8e51dfb91608480820192602092909190829003018186803b158015611c4f57600080fd5b505afa158015611c63573d6000803e3d6000fd5b505050506040513d6020811015611c7957600080fd5b50516080820152600480546040805163351da44160e21b81523093810193909352516001600160a01b039091169163d4769104916024808301926020929190829003018186803b158015611ccc57600080fd5b505afa158015611ce0573d6000803e3d6000fd5b505050506040513d6020811015611cf657600080fd5b505160e0820181905260808201511015611d415760405162461bcd60e51b81526004018080602001828103825260218152602001806137756021913960400191505060405180910390fd5b611d4b33856131b8565b604080518581529051339130916000805160206139c98339815191529181900360200190a36000805460c083015160408051630b9d2cc360e41b81523060048201523360248201526044810192909252516101009092046001600160a01b03169263b9d2cc30926064808401936020939083900390910190829087803b158015611dd457600080fd5b505af1158015611de8573d6000803e3d6000fd5b505050506040513d6020811015611dfe57600080fd5b5051611e51576040805162461bcd60e51b815260206004820152601e60248201527f4552525f424f52524f575f43414c4c5f5345545f5641554c545f444542540000604482015290519081900360640190fd5b60408051858152905133917fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a36750919081900360200190a26001925050506000805460ff19166001179055919050565b600181565b6001600160a01b038716611ee95760405162461bcd60e51b81526004018080602001828103825260238152602001806137526023913960400191505060405180910390fd5b6001600160a01b038616611f2e5760405162461bcd60e51b815260040180806020018281038252602581526020018061395d6025913960400191505060405180910390fd5b42841015611f83576040805162461bcd60e51b815260206004820152601860248201527f4552525f45524332305f5045524d49545f455850495245440000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526009602090815260408083208054600180820190925582517ffc77c2b9d30fe91687fd39abb7d16fcdfe1472d065740051ab8b13e4bf4a617f8186015280840196909652958c166060860152608085018b905260a085019590955260c08085018a90528151808603909101815260e08501825280519083012060085461190160f01b61010087015261010286015261012280860182905282518087039091018152610142860180845281519185019190912090859052610162860180845281905260ff8a166101828701526101a286018990526101c2860188905291519095919491926101e2808401939192601f1981019281900390910190855afa1580156120a0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166120f25760405162461bcd60e51b815260040180806020018281038252602d8152602001806137ba602d913960400191505060405180910390fd5b896001600160a01b0316816001600160a01b0316146121425760405162461bcd60e51b81526004018080602001828103825260228152602001806139e96022913960400191505060405180910390fd5b61214d8a8a8a612aed565b50505050505050505050565b6001546001600160a01b031681565b60035481565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b60115461010090046001600160a01b031633146121ed576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b60115460ff1615612236576040805162461bcd60e51b815260206004820152600e60248201526d11549497d253925510531256915160921b604482015290519081900360640190fd5b8060005b818110156123d35783838281811061224e57fe5b905060200201356001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561229657600080fd5b505afa1580156122aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156122d357600080fd5b8101908080516040519392919084600160201b8211156122f257600080fd5b90830190602082018581111561230757600080fd5b8251600160201b81118282018810171561232057600080fd5b82525081516020918201929091019080838360005b8381101561234d578181015183820152602001612335565b50505050905090810190601f16801561237a5780820380516001836020036101000a031916815260200191505b5060405250505050601084848381811061239057fe5b835460018181018655600095865260209586902090910180546001600160a01b0319166001600160a01b039690930294909401359490941617909155500161223a565b5060118054600160ff1990911617908190556040805160208082528082018690526101009093046001600160a01b0316927fd877543bef27da9036243421e623413c8fdd78d7d183cc93d8f3cddbd657a2ed928792879290918291908201908590850280828437600083820152604051601f909101601f19169092018290039550909350505050a2505050565b60115461010090046001600160a01b031633146124b4576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fa727aa2fa0a226a4a760991b604482015290519081900360640190fd5b6001600160a01b03811661250f576040805162461bcd60e51b815260206004820152601a60248201527f4552525f5345545f41444d494e5f5a45524f5f41444452455353000000000000604482015290519081900360640190fd5b6011546040516001600160a01b0380841692610100900416907fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf8090600090a3601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000805460408051632d3caa7360e21b81523060048201526001600160a01b0386811660248301529151869361010090049092169163b4f2a9cc91604480820192602092909190829003018186803b1580156125d157600080fd5b505afa1580156125e5573d6000803e3d6000fd5b505050506040513d60208110156125fb57600080fd5b5051612643576040805162461bcd60e51b815260206004820152601260248201527122a9292fab20aaa62a2fa727aa2fa7a822a760711b604482015290519081900360640190fd5b60005460ff1661268f576040805162461bcd60e51b815260206004820152601260248201527111549497d4915153951490539517d0d0531360721b604482015290519081900360640190fd5b6000805460ff191690556126a1613726565b336001600160a01b03861614156126ff576040805162461bcd60e51b815260206004820152601960248201527f4552525f4c49515549444154455f424f52524f575f53454c4600000000000000604482015290519081900360640190fd5b60008411612754576040805162461bcd60e51b815260206004820152601960248201527f4552525f4c49515549444154455f424f52524f575f5a45524f00000000000000604482015290519081900360640190fd5b6004805460408051632ec8fffb60e21b81523093810193909352516001600160a01b039091169163bb23ffec916024808301926020929190829003018186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d60208110156127ca57600080fd5b505161281d576040805162461bcd60e51b815260206004820181905260248201527f4552525f4c49515549444154455f424f52524f575f4e4f545f414c4c4f574544604482015290519081900360640190fd5b612825611396565b6129085760005460408051639ee91d1f60e01b81523060048201526001600160a01b038881166024830152915161010090930490911691639ee91d1f91604480820192602092909190829003018186803b15801561288257600080fd5b505afa158015612896573d6000803e3d6000fd5b505050506040513d60208110156128ac57600080fd5b5051151560608201819052612908576040805162461bcd60e51b815260206004820152601a60248201527f4552525f4143434f554e545f4e4f545f554e4445525741544552000000000000604482015290519081900360640190fd5b612913338686612bd9565b600080546040805163464b048560e01b81523060048201526024810188905290516101009092046001600160a01b03169163464b048591604480820192602092909190829003018186803b15801561296a57600080fd5b505afa15801561297e573d6000803e3d6000fd5b505050506040513d602081101561299457600080fd5b50516000805460408051630e496ef360e01b81523060048201523360248201526001600160a01b038b811660448301526064820186905291519495506101009092041692630e496ef392608480840193602093929083900390910190829087803b158015612a0157600080fd5b505af1158015612a15573d6000803e3d6000fd5b505050506040513d6020811015612a2b57600080fd5b5051612a685760405162461bcd60e51b815260040180806020018281038252602b8152602001806138a1602b913960400191505060405180910390fd5b604080518681526020810183905281516001600160a01b0389169233927f08b197b6ae66d18ee6fa20a826a84579a925b9e646a3bf19e96f59ed568c2688929081900390910190a3600193505050506000805460ff1916600117905592915050565b6004546001600160a01b031681565b60115461010090046001600160a01b031681565b6001600160a01b038316612b325760405162461bcd60e51b8152600401808060200182810382526023815260200180613a796023913960400191505060405180910390fd5b6001600160a01b038216612b775760405162461bcd60e51b815260040180806020018281038252602181526020018061382e6021913960400191505060405180910390fd5b6001600160a01b038084166000818152600e6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008111612c26576040805162461bcd60e51b81526020600482015260156024820152744552525f52455041595f424f52524f575f5a45524f60581b604482015290519081900360640190fd5b600480546040805163e60f077360e01b81523093810193909352516001600160a01b039091169163e60f0773916024808301926020929190829003018186803b158015612c7257600080fd5b505afa158015612c86573d6000803e3d6000fd5b505050506040513d6020811015612c9c57600080fd5b5051612cef576040805162461bcd60e51b815260206004820152601c60248201527f4552525f52455041595f424f52524f575f4e4f545f414c4c4f57454400000000604482015290519081900360640190fd5b6000805460408051638a0695fd60e01b81523060048201526001600160a01b038681166024830152915161010090930490911691638a0695fd91604480820192602092909190829003018186803b158015612d4957600080fd5b505afa158015612d5d573d6000803e3d6000fd5b505050506040513d6020811015612d7357600080fd5b5051905081811015612db65760405162461bcd60e51b815260040180806020018281038252602281526020018061393b6022913960400191505060405180910390fd5b81612dc08561135a565b1015612dfd5760405162461bcd60e51b81526004018080602001828103825260258152602001806139166025913960400191505060405180910390fd5b612e078483613306565b60408051838152905130916001600160a01b038716916000805160206139c98339815191529181900360200190a3600080612e42838561316c565b90925090506000826004811115612e5557fe5b14612e5c57fe5b6000805460408051630b9d2cc360e41b81523060048201526001600160a01b0389811660248301526044820186905291516101009093049091169263b9d2cc30926064808401936020939083900390910190829087803b158015612ebf57600080fd5b505af1158015612ed3573d6000803e3d6000fd5b505050506040513d6020811015612ee957600080fd5b5051612f265760405162461bcd60e51b81526004018080602001828103825260248152602001806139826024913960400191505060405180910390fd5b846001600160a01b0316866001600160a01b03167fa9a154237a69922f8860321d1fec1624a5dbe8a8af89a3dd3d7a759f6c8080d88684604051808381526020018281526020019250505060405180910390a3505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612fd3908490613454565b505050565b6001600160a01b03831661301d5760405162461bcd60e51b815260040180806020018281038252602481526020018061384f6024913960400191505060405180910390fd5b6001600160a01b0382166130625760405162461bcd60e51b8152600401808060200182810382526022815260200180613a0b6022913960400191505060405180910390fd5b6001600160a01b0383166000908152600f602052604081205481908190613089908561316c565b9093509150600083600481111561309c57fe5b146130d85760405162461bcd60e51b815260040180806020018281038252602b815260200180613a4e602b913960400191505060405180910390fd5b6001600160a01b038087166000908152600f6020526040808220859055918716815220546131069085613192565b9093509050600083600481111561311957fe5b1461312057fe5b6001600160a01b038086166000818152600f60209081526040918290208590558151888152915192938a16926000805160206139c98339815191529281900390910190a3505050505050565b60008083831161318357506000905081830361318b565b506003905060005b9250929050565b6000808383018481106131aa5760009250905061318b565b60026000925092505061318b565b6001600160a01b0382166000908152600f6020526040812054819081906131df9085613192565b909350915060008360048111156131f257fe5b14613244576040805162461bcd60e51b815260206004820152601f60248201527f4552525f45524332305f4d494e545f42414c414e43455f4f564552464c4f5700604482015290519081900360640190fd5b6001600160a01b0385166000908152600f60205260409020829055600d5461326c9085613192565b9093509050600083600481111561327f57fe5b146132bb5760405162461bcd60e51b81526004018080602001828103825260248152602001806137966024913960400191505060405180910390fd5b600d8190556040805185815290516001600160a01b038716917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050505050565b6001600160a01b0382166000908152600f60205260408120548190819061332d908561316c565b9093509150600083600481111561334057fe5b14613392576040805162461bcd60e51b815260206004820181905260248201527f4552525f45524332305f4255524e5f42414c414e43455f554e444552464c4f57604482015290519081900360640190fd5b6001600160a01b0385166000908152600f60205260409020829055600d546133ba908561316c565b909350905060008360048111156133cd57fe5b146134095760405162461bcd60e51b81526004018080602001828103825260258152602001806138cc6025913960400191505060405180910390fd5b600d8190556040805185815290516001600160a01b038716917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050505050565b600061349683836040518060400160405280601d81526020017f4552525f534146455f45524332305f4c4f575f4c4556454c5f43414c4c000000815250613508565b805190915015612fd3578080602001905160208110156134b557600080fd5b5051612fd3576040805162461bcd60e51b815260206004820152601e60248201527f4552525f534146455f45524332305f45524332305f4f5045524154494f4e0000604482015290519081900360640190fd5b606061351c846001600160a01b03166136a4565b6135575760405162461bcd60e51b81526004018080602001828103825260238152602001806139a66023913960400191505060405180910390fd5b600080856001600160a01b0316856040518082805190602001908083835b602083106135945780518252601f199092019160209182019101613575565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f6576040519150601f19603f3d011682016040523d82523d6000602084013e6135fb565b606091505b5091509150811561360f579150610fce9050565b80511561361f5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613669578181015183820152602001613651565b50505050905090810190601f1680156136965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906136d857508115155b949350505050565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600015158152509056fe4552525f45524332305f5045524d49545f4f574e45525f5a45524f5f414444524553534552525f42454c4f575f434f4c4c41544552414c495a4154494f4e5f524154494f4552525f45524332305f4d494e545f544f54414c5f535550504c595f4f564552464c4f574552525f45524332305f5045524d49545f5245434f56455245445f4f574e45525f5a45524f5f414444524553534552525f45524332305f44454352454153455f414c4c4f57414e43455f554e444552464c4f574552525f5245434f5645525f4e4f4e5f5245434f56455241424c455f544f4b454e4552525f45524332305f415050524f56455f544f5f5a45524f5f414444524553534552525f45524332305f5452414e534645525f46524f4d5f5a45524f5f414444524553534552525f45524332305f5452414e534645525f46524f4d5f494e53554646494349454e545f414c4c4f57414e43454552525f4c49515549444154455f424f52524f575f43414c4c5f434c555443485f434f4c4c41544552414c4552525f45524332305f4255524e5f544f54414c5f535550504c595f554e444552464c4f574552525f45524332305f494e4352454153455f414c4c4f57414e43455f4f564552464c4f574552525f52455041595f424f52524f575f494e53554646494349454e545f42414c414e43454552525f52455041595f424f52524f575f494e53554646494349454e545f444542544552525f45524332305f5045524d49545f5350454e4445525f5a45524f5f414444524553534552525f52455041595f424f52524f575f43414c4c5f5345545f5641554c545f444542544552525f534146455f45524332305f43414c4c5f544f5f4e4f4e5f434f4e5452414354ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552525f45524332305f5045524d49545f494e56414c49445f5349474e41545552454552525f45524332305f5452414e534645525f544f5f5a45524f5f414444524553534552525f424f52524f575f4c4f434b45445f434f4c4c41544552414c5f5a45524f4552525f45524332305f5452414e534645525f53454e4445525f42414c414e43455f554e444552464c4f574552525f45524332305f415050524f56455f46524f4d5f5a45524f5f41444452455353a26469706673582212208cee194c7873c76d0f278e0c8b44232bda5b534513841a90b49f26680b23561664736f6c63430007060033",
994 "linkReferences": {},
995 "deployedLinkReferences": {}
996}