hiddifypanel 3.0.0.dev63__cp311-cp311-manylinux2014_x86_64.whl → 3.0.0.dev65__cp311-cp311-manylinux2014_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. hiddifypanel/Events.py +27 -4
  2. hiddifypanel/VERSION +1 -1
  3. hiddifypanel/VERSION.py +1 -3
  4. hiddifypanel/__init__.py +7 -3
  5. hiddifypanel/__main__.py +13 -3
  6. hiddifypanel/base.py +88 -3
  7. hiddifypanel/base2.py +40 -3
  8. hiddifypanel/models/__init__.py +10 -3
  9. hiddifypanel/models/child.py +26 -4
  10. hiddifypanel/models/config.py +105 -4
  11. hiddifypanel/models/config_enum.py +207 -4
  12. hiddifypanel/models/domain.py +106 -4
  13. hiddifypanel/models/proxy.py +55 -3
  14. hiddifypanel/models/usage.py +58 -3
  15. hiddifypanel/models/user.py +171 -3
  16. hiddifypanel/panel/admin/Actions.py +1 -1
  17. hiddifypanel/panel/admin/templates/config.html +1 -1
  18. hiddifypanel/panel/admin/templates/proxy.html +2 -2
  19. hiddifypanel/panel/admin_2.py +33 -3
  20. hiddifypanel/panel/cf_api.py +35 -4
  21. hiddifypanel/panel/common.py +98 -3
  22. hiddifypanel/panel/custom_widgets.py +71 -4
  23. hiddifypanel/panel/database.py +18 -3
  24. hiddifypanel/panel/hiddify_api.py +70 -3
  25. hiddifypanel/panel/usage.py +4 -5
  26. hiddifypanel/panel/user/templates/home/multi.html +1 -1
  27. hiddifypanel/panel/user/user.py +2 -0
  28. hiddifypanel/static/css/custom.css +11 -0
  29. hiddifypanel/templates/500.html +1 -1
  30. hiddifypanel/xray_api.py +109 -3
  31. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/METADATA +1 -1
  32. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/RECORD +36 -38
  33. hiddifypanel-3.0.0.dev65.dist-info/top_level.txt +1 -0
  34. hiddifypanel-3.0.0.dev63.dist-info/top_level.txt +0 -2
  35. pyarmor_runtime_000000/__init__.py +0 -4
  36. pyarmor_runtime_000000/pyarmor_runtime.so +0 -0
  37. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/LICENSE +0 -0
  38. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/WHEEL +0 -0
  39. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,100 @@
1
- # 2023-04-08T15:11:11.864592
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00n \x00\x00\x12\t\x04\x00\x98\x9c\xf1B\xbc\xbf5\xe4\x88oV\x8c>\xa8\x9d\x85\x00\x00\x00\x00\x00\x00\x00\x00\x0et\xec,\xcb]~\x96\x16\r\x92\xfde\nC\xb1jbv\xd2\x1e\x91\xd1uG\xabpree\x85\x93%Z\xb2\xf5k\xcb\xaa\x96\xf0\xe6\xc0\x06\xa2\xc4%h\xd1\x18 b.l\xf1\xcc{p\xd9\x83\xa27\xdf\xaa\x1a\xde\x05M\xc9\x8b\xd6i\xec\xbaS\xbf\x8e\x12s\x1f{\x1c\xc9CK"\x10\x00\xe8\xd0\xe5\xe9\x94(7\x98a5\xa4!\xe1_\xd9u\xa2X\x92z\xfb\xf8\xd3\xedp\x8f\xe73\xe8\xf8+\x845#\xa9\xef\xf4\xc1\xbb\x10\n\x15{\xa9\xc1\xc2\xa5\x80@Y3\xe4a\xaeS\x84\xbd\xae\xfdUJ\xcf\x99\x8eN\xf5\xf5\x1b\xadCTi\xc9y\x1da4^1\xc7\xaa\xc9=\xd9M:.\xce\x1c\xb6\xc0\x86\xf3b\xa0\xc35\xd3d\xef1\x1f\x8f\xec\xe0\x16Q\x93:d\xb1\n\xb3\x1bz\xeb\xe9\xa3?\r\xaf\xa1\xb4i6\xbd\x0f\xc0\xfc|\xb8!j\x1d\x99F\xf8\xc2y\x08T\x1f$\xa5\xf9\xcddW\xc8XV\xce:\x92\xc8\xf1\xbf\xb9\xf9\xbd1\n\x91B\xd0A\x7fh\xdf\xfa=\xc0\x9ex\xedi$j\x18\x10K\xf6\x14\xd3\x8ef\xb0\xe5\xd7a\x8c\xbb`\x875a\xba\xf2\xe3\xc9\xe7r\x9a\xac\x9c/y+\xb1\xcbw\xb2\xc1\xc1C\xef\\\xd2\xf9e\x90\xfcx?\xc1\xc4\x81}\xb0K\xa1\xd4\x08\x85\x03\x89\xb05\x1b#\xd1b\x82\xc3\xb7\xc4K\xd8#\xbee\x84J\xd9\x80J\x9dl-\x08X\xafT-\x91\x03\x16\xa7c\xa64\xb9\xd9%\x8f,\xe5\x90\xfe\xc0\xb8\x8f3\x93R\xf4\x90l\xfcz\x86 g\xd2\xab#%j\x0e\xe9\x10\xf6\x94\x9b:\xfbb\x9bw-\x8e\xfd\xf7\xff\xd1\xfc)p\xd9_[\xf4\x01\xea\xb9\xfd\x88 uR4\x8b\xfe\x11\xa8"Z\x15*H.\x7f\xa9\xd3\x11\xce[ \xbd\xac\xf7\x18\x15\x91\xa55;\x03\x972\xc5\xe8s\x10=_\xab\xf3c2\x87\xa1\xf1c\x04\x98:\xe6\x97w-N\x8f\x89I\xfah\x1b4!v\x17\x16=\xa5y\xd0\xf3}\x98\xf0CyV?\x85SNt\xf2\xbd1!\x86\xc2\x81\x97\x7f\xd3p\x01fv\xb0\x14\xfb?\xa4\xdb\x95\'[+\xc4#\xf0\x8dB\x10\x9e\xca\x19\xd1\x97\xc1\xb5\xc9ix\x1c\x0f}\xe4L\n.\xa0\xdf\xf1\x92\\R\x04\x99\x1e\xb2Rn\xc7}=\xf5\xc9\xd8Q`\xbe\xff\xb8\xb9 ,\xa3jV\xd4p\xcab\xeb!\xde\x16\xe1\x9a\x1e-3U\x00\xc9\xdd\x05\x8f\x96}r\xc8\xba4\x1d\xc2\xc0`\xaa)\x8a\xfd\x1e\x15\xbb\xe9\x9d`{\t\x9186r\x04i\x89*\x15{\xfe|k]\xbfhj\x19O\xaf\x01B\xe67\xf4\xb2\xe4\t\xd1\xb0\x82\xf4\xfd\xb2 \xe4\x1c\xd4>Z\x86\xecg\xf1\x1e\xf7UDo\xceg<\x85cZj\x8bP{\x95a\x01]\xdfcu\x9e\x9089\xf2"\xcb\xcc\x82\x7f\x93I>\x1e\xbbn\x93O\xaa\x92 T\x00\xa7\xd9Y\xd8\xfb\\\xfbJ\t\x8fr\xe8\t\x8a\x0c\x80y\x14X!\x18\x8an\xfb\xb6~\x10g\xe3d\x0ei,O\xb1\xbf"\x08\x15\xaeN\xc1\x94\x8a\x88R \xc3\x95\xab\x11\xe6\xe5zLB{\xfd\xd5,\xfa\xb6\x16?\xd9wc\xea=\t\x10\xb5\xcb\x9d\xef\r\xa2\xca(t\x1b[J\xce6\x19\xe8\xf7\xacA\x1d#+Q`\xbc\x1a)h\x83r\xe6\x13fe\x9c\xb1#\xa8L\xfa\xa5\x93\xe9\xe1&C29\xbd\x86\xba\xab\xae[6\xb0\xe8T\x04\xba\x997\x8f)\x8e\x06h\xfe\xe2\xab\x02\xa2\x19\xe5\x01C^%b\xe8\x9c\xa04\xc8\xfa\x92?\x81\xa6\x8cT.m\x7fd@\x163\xbe\xb8\x06\xc8L\x0c\xdbU\xd7/6\xe5\xa5\x0fI&\t\x9f\xb8q0\x90k\xa9X\xcb\x97\xa1\xb1A\xb8\x87V\xfd\rg\xc4\xf4I\x89e\xd3\xbf\x00\x8c\x19\x10{\xea\x0f\x9fgI\xfe\x80\xc58\xd4\xeb\xeazl\xfd\xf3=\xe9_\xdd\x01\xd6\x101:\xf8#\xf7\x19 \xd5\xb2.\xc4\x17\x87\x1c:\x82\x8f\x1eN\x89\xee\xbb\x84\x1d#\xed\xc5\xa7\xaf\x17\x95\x9d%\x17\r>\xb4\xa8\x0f\x99\x81\x9f\x87\x15\x91\x02\xa3\x82\xd6\xac\xe3x\x97\xc3\xd9\xfc\xf1\x82^G\xd1S3\xf9Q\x05\xa5\xb4G=\x07\x03\xd5\x01A\xeel\xc9_\xe9\xec\xdf$&S^\xd3qD\x15\xc8Sl\x11\xd6\x1c\xdb"\xc2#\xd0m\xf5\xa77\xf0e5\x0b\x05\x03\xe5\xcf\xd7\x8d\xb4m\xa7\xd3\xa5\x9c\x03[\x86%\xa1\xa1\xc4\xc6o8\x91\xd1{8\x0e\x14\xf1\x88\xf2\xa5\xb63r\x7f\x94W\xb5\xc4\xfeA\xe2S\xdbFI\xd23)\x1d\xdc\x7f\x80\xb8\x9b\x81\x07\xf4e\xb8\xc4O \xff\x95m.C\x7f\xf7T)P\x0bk\x99\xcc\x03F\x0b_\xffp\xb9u\x8d.3DX8C;\xb5j\xd0$d\x0e\x9f\xda\xe9\x82\x08\x1c\x06:\xd5Ie\xe9N\xc5\xc3\xcb`\xdc\xe5\x85C\x8a\xba\xec\xcdeMonu\xb1\x85\xa5\xbaQ\x14\xd5M\xb6\xcer;\xf6\x16\x00I\xb2\xb7\xdc\x89>/\x8co?\x1e[CH\x9a\xcfGZ5u\xff[+\x00\x13\xce\xc9\x85\x95I\xae\xb0\xb3\xa3\xf1\xf9\n\x0cd\xf6\xe1A\x07&\x14\xa8\xf1\x1fEH\xf7J\xd8;\xd9\xda\xef\\\xdd\x94L<\xda\x83\xcc|\x08rr#\xf4\xdbj\xb1kOI\xb8\xf0J\x0f\xe1y\xe2\xb6\xf7\xe11rs4\xae\xe0T\xdb\x99DY\x81j\x81\xbd\xcb*\x9c\xb4\xad\x7f\x011\xd4\x87!+\xb9\xe4\xe3\x9dv\xe6\xf0\xae\xccc\r\xa4\xcc\xb2>N\xc8\x0c\xee6\xf5A-\x97"\xe2\x91\xfd\x1cZ\xcfsV>\xe1\xd17\xb7\'\xfb9\x86\xd3\x80\x1d\xa0\xd5\xf7\\\xef\xf5[qz-"\xc3}\xca\xa5\xf6,c"* \xa5\xed\x03c\x1c\xaa<+\xe4\x06\xc9$q\xb6\x86m\xe6\xe4\xf7\xd0U?\xc7K\xfd\x91\x87\xba\xe4Ozr2\x05\x88\x19\xe7$\x08\xb0O\x8d\x8b;\x97\xac\xf7U\xcd\x00\xea\x9d\x1dl\x9c\x7fU\xd9\x19$\xbaTN\xb8yD*-\x8b\xb0\xc3\x80R\xdfq[j\x86\xc4\xd955\x001`Rm\xe0\x93\x14\x92|T\x806\xe4.^\x9c\xcf\x88\xd8{\x05\xe7X\x17\xfb{"\xf0\xab\xfc\x02\xd0\x1a\x82Z4\xc4LS(\xb5\xed;"ff\nd\x8dsA\xe4\xce\xa0u\x0e\xfa\xc5\xd40\x88\xb3a\x8a5\xff\xb2\xfa\xd8`\xdc\xa4\x90\x1d\x1f#\xe7\x88kO\x81\xf67Q-\xcaF\xe6\xaa\xa8\xf3\x86\xbe\x17\xda\xa6\x8c\x0e\xb64sT\xe1\x07\xa9\x01N\x81%w`\xdf\xd1\x82\x9a\xe5\x13\x00\xbc,\x80\x96Rv\x84V\xe8X\x85\xd0Nbe\xc2\xe9\xfc\x90I=\x0e%\xe4\x10\x8eM}\xe4\xf2\xb4\x01rTJ\xbb\xc8\xf3ds\xf4\xe9\x83\xac,\xd3&j\xbcO\xe8\xb4\x8e\xc3\x07\x03\x92\xc2.\x0e\x19\x7fp\xd7\x02o-\x99\xcd\xcb\xbfA\xfe\xb4&\xb5\xdfC\xf5Q\x15\xdd(\xd5C\x8a\xb4\xf9\xc9\xe6\xde\xf2\xbd\x16\xac\x8b\xc8`S)d\xc4\x1e\x81\x15\x039\x13`\xb6\xb9\xba%:\xd7I\x8d\xc3:i\xee }\xf0g\xf5\x10\x07\xf6L|\xc1\x84\xbf\xf1Dq\xedC\xd0i\xe0\x0e\xe3|@\\Co\x8613\xe8.[\x06\xee\xf9\xbc\x1a*\x9a\xdebq\x98\xe0\xcbo\x12\x81J)\xbcT\xe5\x1e\xf7\x15\xf9\x98\xfd\xfa\xac\xec\xd0\xc73\xc6\xa9\x01\xf1\xd9\xc1Ici \xb5\xb6,Q\xfd\xd1\xc6\x9b\x0b\xdd\x93KQ\x81\xab\xcb\xa6\x02\x85^\x85?[\x0f\x9d]r\x7fx\x12\x1d\x8b\xe82\x01r\xdd\xce\x10\xeb\xf3\xdd\x8c\xcd\xc6\xc2V\xc1\x9dq\x86\xa5\x95q\xe0\xfc8\xf40ZTw\xe8{\xadD\x08[\xaa\xc9\xe5\x93Ue\xf6]tK\xca\x9c\x97\x89$^\xdd[\xf6\x7fX\x8d\xbe;i\xff\x91\xe6\xad\xbd}\xb2a\xad\xb2\xe1\rJ\x08Q\xe1@De4\xa1~\x08\xb9\x8e\x07\xc7\x8f\x1e\xe9\x87\xe67\n\xba\xc3\x0c\x9f\xc3s\xa6\xe8\xe4-Ti\x99?\xbeV\xce:\xdb\xfe\xab\xd5\xf9!I\xf8\xf7N\xb9q\x90\xe5\xef:\xf1\x8b\xb7\xc7.r\x9b\xa5\xf0\x97\xd6<\xf3c\x86KC\xce\x9a\x97@%%\xbb\xa5l\x17v\xca+\t\xfa?\x90"\xaeGS\x05\xdc\xb7\xa0\x10\xf5.x\x16\xfa\xc4\x8fk>\x9cS\xc8|]\xd8\xd8^S\xb1\xe8\xbb\x9c>\xcc|\xb5l\xdc\xc8\xdc\xa9\x91i\x1b\xff\x07\xac\xd0\x8c\xd4\xf3\xb8\xbc>\xff\xfa\xcaZ\x8e\xf4\xde\xc2.Jx7j\xed\xf9\xd1\xa5z\x1a\x91\x80k\xa4_\x14\xb9\xe9\xef\xb0\xfe\x13j\xfd\xa1\xaa\xb9\xe1n\x7fL\x1d\'\x1e\xf1\x81\xec\x99\xfcB\x0b\xd5\xbfvE\x81\x8cJuc\xe8<\x0b\x86\xc6\x1aC\xb78\x13\x9e\x8c\x05\xb1\xd9\xafN\x1d\xcf:Q\x1dq\xa1|\xf2)6L\x97\xabd\x1d\xdf\xff+\x8e\xd6\xd6\xae\xa9\xa6\xbcu\xd3da\xf9r\x863\x82\xd8\xb8t#\x94\x02c!\xd0F\xb2\xa1\x86\x19\xe6\xf4\x90^\xd5\xdd\xca\xfcR\xcf\xbd\xf0q/\xacT\xbd\xb6Du\x88;\x977RM\xf3\xb0\x8b\xfct\xe0\xecdJ\x0b\x9f\x12&"\xf6*\x0b\x94\xdc\xa31\x8d!3N\x8ck\x95=\xa2,-{\x07\xc3T\xef\x92\xb8\xc5iJ/0~D\xfe\xfd3\x19P\xa0\xc7,k(\xb2\xc3K\xa7<\xec7\x8b\x85(\xf5\xdc\xce"H\xe6\x13|\xd8sa\x1da%\xab\x0b\xe9\xa3\x8c\xd5_\x80\x1fc\x8a\xe6B\nB\x1f!\t\xed\x87<\x85\x1a\xd7\xc9g\xa9o\x9e\x18\xd1\xf2<\x7fqXFVc\xadp\x8cs\xd0\xf6\xf7\x05\xc0\xc4\xf4f\x1c\xcd-\x8dM\xf6\xc0\x1c\x1a>\xb2\xc5\xddCq\x88^\xf5^:\x968\'}\x81I\xdc\xc8\x92T\x19\x04\x9a\x86\'@)\x0e;\x90d\x8b\x95?B\xfd,\x02\x17\xb6u\xfdX\x8fz[\xaf2w{\x15\x1e\x9e*\xb1\x0f\x10\xf6\x8b\x12\x17\x86\xc3\x1b\x89nA\x04\x85\xb2OW\x15;!\xadoF+\x12\xd8\xc1\xbf|\xae\x0f\x88\xb9:\xcf\x9e\xbar\x91qT{\x96\x8e\xb0v\xf4\x16\x86v\xe2\xf2\'>\x80\x8aw\x02\xe1jk\xcd\xc0\xff\xbd5,\x86,\xa6:\xf6P\x8f\xdaS\x11g\xe2\xdb1\x87\xb0\x11g\xdb\xc9\xe1\x8fe\xd1\x1b\xdeC\x8bY\x00\x9c6\xc1\xb4\x1c\xb7\xa2+\x91\x8cJ\xa2\'\xa3\xd3Oh\xfb>\xc3\nX)o\x02\x96\x80\xaa\xe1\x07\xe4y5\nD\xc6,x|\xd1\xbd\xf3\x93<\xc3#\xc0\x11\x8an\x10\xe1\x81\xedqw\x96\rC\x05\x0c\x01\xd9\xcaW\xdbz\x91\x14\xc1{? \x19\x84-\xd3\x13\xa2\xfc\x93&P\xa9\r\xa8k;\xc1\xa5\xf7\xb7w)\x01#S\xabM\xd0!\x00\xbd\x95\x05\xfbJ\x1ag[7\xe6\x02XZ]\xa6\xedH\xe3;\x00\x97\xa58\x8d\xad\x8aN\xd0\xef\xf0o\\\xd7\xe6\xd8\xdec[\x13\\\xd5\x82\xae\xdb\xa0d\x9f\x9eX\xa8$)\xff\xf8)\xca\t\xfc\x96\xd9a4\xd7$\xc1\x9b\xbb\xecF\x8e\x8f\x18\x1c\xb21\xf0>Y\xc1\\M\xddNgY/\xb3\xban\x11\xc4\x9a\xbf\xef\x89\xfer\xa1v\xdcY\x025\xeb\x92eX\xe82SJI\xb0\xfd1\xf1D\x91\xec.\x17-\xae\xea\xc9>\xd2\x9df\x04\x93\xd0\xc1pOI\xce\x88\xcf\x85\x8c\xbd\xb9\x90\x91\xd8x`s\xae\x07v\xd5\r\'\xf1\xba\xb4\x1e\xb9`\xa8\n\\\xbc\x8f\xe8\x82Y\xde\xb8O\x02\xdb0WH\xf0;\xdd\xe6\x02~S\xc0\xc1\xda\x85\x93\x00\x0bx\xea\xc4-@\xa8\xb3\xc3\x9c\xbf\xde\xe8\xb9/\xd9\x859D\x8f\xd3<\xfb&=\x85\x98\xe6\xda\xf5\x97\xf3T\xc1BL\x12\xab\xfb\xe5*\xc7\xe3\x05\xc5\x1b\xdf&\xc0\xe4\xf8\xb3\xecF\xb0\x94#\'\x85\xc9sb\x8a\x85\xf7\x03T\x0c\xfbQx\xf8}\xce\xd8;N\xb6\xaco\xfej\x8f\xf9};C\x1f\x95\xf3\x84\x8b\xb4\xfd\xc2\xa5\x93\xfd\xd5\xbeYpp!\xc6\r\r\xe3\x91k\xa5\x9b\xa6\xcc\xa3\x8b\xae\x15\x8dB\x8dH\xbc\x89\xde\x92\x88M\xd3*\x17\xf9\x88V\xf2\xe5\x95F\x18\x8f\xb4dI\xc7\'*\xf1\xc2\xb7\xe0\xa1\x1c.\x8cm\x81\x1d\xc7\xce\xd3[C\xc7\x0fJ\x0b\x01\xa2\x9e:a?\x11\xd8\xb9\x1ec\xf0\xcf\x16\xfb\x83\xa4];\xa1\xcc\x8egB\x85\r\x0e;\x06TEa\xfcr\x8a\xdaB\xaf\x93|\xf5\xa00\x99r\xc9L\xb2\xa6\x06eQ2\x99/\xbd\xc2\xc6\xad\x9b\x8bmP/![~\xfe\xd6\xbf\x98\xf8\xd2\x10)\'\x9c\xbf\x1b\xe4\x03Bj{\xe6y!t\x7f$n\xa10\x11^\xfa2\x8e\xa4\xd4\xb1\xcb\xc24RA\xb0\xff\xa7\x92\xb4\xacz\xa9Y\xcc\x99\xe2\x01\xe31\x9f\x92\x86]\x9e\xc6\xfb\xfb\xda\x0c\xffo\xa8\x1bK\xcc\x0bB\x8a\xbc\x026\x95mx\xc8\xfb \xe0\x04\xebY\x1b_\xa84\xb5\xa6\xbfi\x08`S\x8eb\x86\xbf\xf2\xb6\xaf%\x8cY\xf1\xe7\xfe_/k\\\xa9\x17Q\xef\xf0\x06\r\xaf\xc1\x89\xf1\xeb\xf2V\xafp,\xb7\x04\xf8\x82\xf32\xbd!\x92\\L\xcbdU~\x94E\x01\x1c\xf9\x15\x82\x0c\xb43W&k\x80O\xc3\xc8\x94Nh\xad\xc7\xd5\xf4\xd7#lR\x0c\x07jA\xc5S\xa9\xe4\xbd\xf8\xc9\xa3\xb2\xf7u@\xaa\xce\x9b\x0b\x07\x80N\xf72\x96X=\x1ap7\xe6\xe2\x0c\xdb\xd7@\xfcj\x84\xac\x1b\xfb\x88\xa2V~?\'[\x8b\xce\x83\x87\x06\xfa\x15\x99\xb6\xc5\x13\xdb\x0c\xad\xb2\xecxM\xb7S\xd9\xf0\tGbY\xcd#) 5&c\xacX\x92}\x10V:6\x04\xdd4\xd4\x92\xa7\x8eqE?\xbf`yK\xa2$\xdaT\xd6\x18\xe5\xcb\xa7\xf2|\x9b\x0e\x12T\x97\xba\xf4\xcd\xc6\xc0\xa0)\xb0!\t\xb5Cv*\x1f\xf9z;\xfb8\xe2\x12\xb6\xacl\x04%\xb6\x95YP+}j\xf1\x98J\xa2r&\xfd\x8a{ye\xa1\x90r.\xa8\xc8\',Y\xac5[\t\xdbUR\xa4\xc5\xbb;\xc4\xe8\x06A\x8bV\xc55\xc6\xbb}\x03\x87 z\xcf\xde\x19\xe3\x8b\xed\xb62\xabr\xf6=M\xaa\xbcigl\xfc\x18\xde\x13\xffK\xec\xe3,\xff\xbf\xa4\xce\xd9=\xa9\x04\x89B\x8e\x80\xb05\xa6\xff\x81\xe7l\xb5\xa0\xe0\x0e\xf8\x87\xf4aK\x0fY\xdc\x9d>\xdf\xfb\xac\xba\xaa#\xdd\xa4\xa9\x8c\x0b(\xcf\xfaQe\x1b\xde%T&\xca\xa1l\x1d\xf9W\xec\xfb\xe3gIX\x81<\xbc\xa3\x1f\x05N^\xb5E\x1f\xaa\x95\xff\xd5\x97!h\x0b\xfc\xa2bKJ\xcf!#\xff$)\xf5\xc1\xedVX\xd8\xb9\x8f\xf96,\xe1\x7f\xe8\xecd\x82>8j\x97T\xfd\xc9\x812\xad`\xf0l.*\xff\xa5\xfe\xe8\xfc\t\xa1\x95\xdb\xb5\xdf\xf5\x1a\x16\x10\xf2[\x888NO\xf5!\x00\xc4q\x92\x1a\x8a\x97\xc9i\x05\xcb\xd2\xde1\x1b\x19\x0b\x9e\xc5\x99\xecC\xca_\x19q\xc4\x81f\x05X\xe2]]\xc9/\x16\xeb\x8a$\xde\x93x\x0cv\x80M\x886\xdc\xfeE\xf3\xc7 \xc3\xf1\xda\xa2L\x1dK\x9cc\xac\x9bq\xab:\xab\xd8"\xa9\xbd\x0fr\x02\xef\xde \x89\xbb\xf7\xe5\x07L\xd9\xa0-\xbc#\xf2\'+\xf06w\xf4\x1bd>\x1f\xd8\xb91\xf50\x83\x9e\xd7\x12\x06\x08\xc5by\xe0\xb4T\xff\xe3\xd5\xa5+\xc1^B\xbb\x8b\xea\xe1\x94\x89\xaeZ\xc9\xaf\x04:\xc7\x18\xb9\xdf\xee`T\xc2\xb0\x1f\xb6\x04\x1d\xa9?\x8eM@NQ\xd2\xf0\xbd:qd\xf9\\\x0f\xf5\xc7\x83-\x80\x94\xc5\x14\xfdu\xc1E<\xc5|\xc4\xccc\x8fJm3\xa6\x84\x92!\x13\n>\x17\xa3\xe8\xda\xd52\x07\xe8K\x1f\xee\x86\x81w\xd0&\x8c\x91\x9c,\xcb\xb7,E\xcf*\xda\x0e\xcb\xd1I\xefEc\xb2\x17\x06i2k\xe4\xc4\xb4"\xe2\xde\x80y\x7f\xb8\xd9\xab\xb8<\xf6d\xd9x`\'\xeek\xbb\x0c\xc15\'P~\xe9l\xca\x15{&\xa9\x8f\xaf\xe1\x93c\xec\x1f\xf0O\x0e\x82\xa0Cu{\x07\xac\x07\x02\xb5x\xeaI\xf1`\xb1\x86M\xfc\xa7\xb7E\'>D\x83U\xa51\xf7\x82\t\xdb\x9a\xa1\x8ca\xba\xf9\x08\xb2\xf3vr\xa01f\x19%\xdd\xe5\x84\xfd1\x0f\x0e\xae\xd9;F\x8c\xe6\x03\xde\r\x15\xad4\xdb\x1c\x17k\xc0\xce_G|\xea\x10\xb7\x9a2Lz\xa77E\x9b\xd8\x0c\xf8\xe0\x1b\xfa6\x89\xf5\x9a\xa2\xbfj\xea\xc9\xb5]_b\x99v\x1ckI\x94%~\xbc\x05\xf1/\xec\xdc"\x8d\x89Q\x0e\xb6\x8ew\x84\x08m\\\xd4\xd6\xc7\xd7\xbe\x92d4\x1b@p8\x84\xb8\x17\xb8\x98<@#\xa9\xa8P\xe7\xe2\xe4sc\xa2\x17\x8e\xfd\xc7Y{M\xae\x17\x92\xd5\x9f\xad89\x17c{\xe0\xa7\xac\xb3%\x9cw2\x9d\xf2\x00\xae\xf8\x88\xb0*3ZK\xba\xa9\xd0x\xa55\xf68\xabP\xbd_\xd2\x03\xa7\x1e\x82\xbetiW\x9c\xfcy\x8c\n~\x80\xfe\xbb\xfe\x91\xc2u\x1b{\x19\xfa\xf6\xd5\x00*\x85]\xaa{b\x06\xa5b\xea\xbc\xc2\x8f\xa2\xf3\x1f\x97p\xa5kp\xd8|r\xd3\x01\xee\xae\xeb\xda\x96\xa2\x01\xb7\xa2\xdc\x07\x83*\x88)\xb4\xcax\xc2Z\xeb\xcb\xa7\xd6UU\x83\xb1C7m\xf6&\xd7\n{\x8fV\x99FXJ!\xb1`\xd2\xf7\xdf\x04\xef\xc8\x08\x05\xebu\xd0&b\xaf\x9e\x13N\x1fS\xd4\r\xed\x88C\xbb\xdc\x18\x96\xe5l\r\x9d\xb5\xd4\xb3\xdbV:\xb7xf\xe3\xf5_\xb0\xc6\xed\x7fe\x14\x12\xacl?)\xb6\xf6l^&\xe5\x93\xc7Qn\xa7\r\x94\xb4^A\xc1\xb2pa"p\x05\xe8\xe0\n\x94S\x88\xaf2\x8c\xa0\x17\xce\xa3=\x0e\xd2\xb9\xc5+i\x1d\xbe\xa0\xb2\x01\xbbX\xfd0_\x00\xcb\xc8\x7f\x80\xaf\x15\x9eln=\xc1\x18b\xf7hl?I\xb3\xb9\xa9+!\xf9\xb7\x1b\x7f\xb3L\xcd\x88F\xf9\xcf\xef\xdf\x83\x99M\xaa.M\xa0i7S*V\x7f\xaa\xf1\x80\x81\x82\xb4\x18\x123\xc4\xa1\xf4\xa1z\xb6\x169\xcf\x9b\x83\xd60\r\xbe&\x8c\xf9\x82mq}\x93~Z\xf7\x844\xafG\xee\x9b\xf7\xca\xd1\xb4vgv{\xa3^{\x83\xd2\xb0^"\x18D\x00\xabw\x04rK\x1b\x9b\xb5\xe5W?\xb1\xec\x13\xd9s\xf6\x04\xccW^M\xd4_\x08tX\xee(\xe8\xd2\xbcss\x109\xd6\xf7\xe4\xeb\x95\xe6\x04Xo\xace\x1b*\xef\xff\x86\xd2\xfe\xe4\xf5\xb0Lp\x0bi|\x9b\x12\x13\x15c\xa2\x11\xe9\xea2\x08\nH\xd9\xfb\xf0\x81Q}\x08\x1f\xa0eNqt\xe6\x8e\xb0\xb9\xdaZ\x8f15Y=\xc0\xe0\xc7\x10\x07\x96\x9cV\x9e\xf0\xde+_\xc1F_LF\xce\xc1YLe\x1c\x96\xd9\xa7<\xe3u \\\xe3\xd9\xa5_]\xe5\x9b\xc2\x9d=\x0eC>\xc9\x08\xc2\xa2Xf\xf2\xedJ\xb8\xb2O\xbb%\xed\xd8_lm\x0b\xf3\xd5\x19\xcd\xb0\xb7\x845u\x99\xda\xab;\xa4\xf91\x8e\x8d\xea\x03N\xe9\xc0\x82\x10b\xe8T4\x8a\x1a\x10\x7f\xec\xa6\xc6{\xeeP\'\xaac\xd1\xcf\xa9\xf1\x1d\xf6Z\xef<\xd0<V|\xe6\xe1\x1a\xea\x01\xa7\xc5vJ\xd3\xdb\xfb\xad\xfc\xe3\x11\xe1\xbfe\x01b\xdf\x98{16\x0c\xb0\x9e\x8a\xa38\xf5\xf1\x809KMf\xd4\x9b\x98\xc9\x80\xb0j\xd5\x19\xf8\xda2]\xde\x8bv\xc0\xa4\xde>~X|e\x01\xc8l\xa1\xc4\xdaMZ90\x8b\xd7eg\xc9E\xc0\x01\xe6Bu\xbd\xc0\xb8A)\xb2"\xb1\x9e\xe5\xd1\xc9_>\x83\xc9C\xce\t;\x9b\xa1\xd2\xf1N"\xeb3\xc5o\xf5\x87\x88\t\x1e\x9d<F\xad\xff\xd1OY\xf97\xb3\x83t\x1e%3\x84:\xe1\xda\xc4\x1cXe9\x0e\x8f\xdf\xf2\xdc\x00PZ\x9ev\xa4\xe7?h\xa7\xe6GT\xb3hQ\xbc2-VBd\x1c}\x8f\xa5\xfbFK\x9a^\xeb\xf2\x01\xa3\xb2)\xc0\xa0\xa0Q\xeb\x8e\x05\x1b\xc3(\x15\xea\x05}\xb2\x8b\xbc\xd5K\x9b\x9fFuE,\x15\x1d\x90\x9e\x89\xd0\xdd:\x15\x92\x9d\xab\xf8\xe3\xcbc\xab\'fz\x12q\x02;\x17O\xf6r\xe4\xaa\xd1\xc4\xee\xd5vS\xa3P\xb0\x8f\x8dX\xb2:\xef\x07\xefF\xc9*\xe1\x8c\xfd\xd1\x84N\xf9g{\x06\xcf\x04`dSN^\xc0\xfc\xea\xf3R\xbb\xcf\x1fML6_\x04\xbf\xe9\x99o\r\x02\xd9N\xcf*\xf9a\xee@\xe6\x04t\xe3\xc6\xe7.\x0b\xcfZ\x96\xb3G~A\xa9v\x13\xef7a\xcd\x07\xb2\xcc\r\xef\x85\xbbd\xb06~\xe3\x11\x02\xf4\x9b\xc6db\x9c\x04\x19g\xbbCU\xc2;\xa4\xcf1K\xb0\xee\xee\xa8\x8dt\x04\x062\xe8\x95\xff\xb6\xe9\x13\xfeg5\xa3\x02\x1a\xcc\x18\x0e\x89Nd\xae\x90\xb6\x0f[W\x14\x90\x05\x91<\x9f5\t\xd8\xe3f\xb0%b\xaa\xcd\x010\x9aZ\xdd5\x1bN\xf2T\xaa\xafG\xb9\xc5\xe0-\xce\xd9\xc8}\x10\xfc\x91\x14g\xab#\xc9\x01\xa6/\xf9T\xf8C\xf3\xe0\xd1A\xd8\xce\xde\xf9W;nS\xeaX a\xdb8\x15\r\xa2\x1fN\xfa\xa3n\x13T\xb1?\x9b\xcd\xadN\xe5^\xae\x9b\xa0\xa4\xef,\xb3\xc3\xf0\xd3+\xe4`\xbb\x1dJ\xe5\xa3\xa4\x05?\xd9\xeaZ\x95\xb1\xc7PJ\x1b{\x82\x99j\x01N{\x1f\xdc1/\xb9g1\xda\'\xcc\x15\x9d\x80\xaa\xc2W\xb1\x0eX\x89&\x9eS\x1a\xbb5\x9c\x19\xc5w\xbc)X-=;6\xce\xc5\xf0\xce\x14\xd1\xa2q\xdcf\xa1c\x96\xe7q\xd6h\x13\x8b^\x9c\xca\x0e\xecv\x1b\xebU\xe9\xb4\xa0\x96\xaa5\x86\xd50\x84?\x84\x19\x91"W\x04\xc49\x19-\xa81\xddt\xd9\xa6x\xd8q\x88\xf3CN\x7f\x96n\xc5\xbeu\x80\xc1[z\xbe\xfb\x97\x1c\xdfcu\x94_I\xd9F!\xdc\xba\x7f\x8b-\x9b\x0e\x1fH\xf2\xc5s!x\r\x91\xfb\xf5\x0c\xd5<\xd3\x8f\xec.\xf0\xe4\xb2a\x99\x87\x06\xcb\x9c\xb5\x80>\xdb\x9c\xd5\xcf{X\x0f:\xa0R\xa6_\xb9aU\xa8\xaeG\xb0pz2\xd9{x\xcd\tn\xe6\x03O\x883\x96H\xc4\xea\xce=\xf6\x00d2\x89\xc2.U,\x0cE\'\nj\xb4\xa0\xaf\x13\xfa\xc8\xfa\xfa\x1d\x10Sx[\xc7\\?\xe5\xd5\xc5\xad\xe9+n\x99&(E\xdf\x94\xc9\x13\x05\x0c\x13\xadV\x9d0S\xdd\x7fcD\xb6\x1dF\xf8X\xe0l\x12A#\x9a\xaeb3\x00d\x82+(/s\x82^\xe4W\xd6\xd8\xe3i>\xdcU\xeb\xb1-\xceX\xc4\x0f\xec\xc2:\xebc9!\x9a\xac#\xc1\x02\x04!\xd0\xfe`\xc3\xe4\x82\xe8\x91\xc9\xdd\xa9=\x0f\xe5\xe9\x9a\xb7\x98H9\xf4:\x82o\x14\xac\x08\x15\x91\x000\xfc\xa2G\x84\x81\xe6\x14up\x8a\r\xe5\xcc\x89\n,(\xb6\xa6}\x02Y;\x80\xdd\xbcsQ\t\t\xd95\x88\xb1\xd5<%\xef\xa7\xe1\xfa\x0c\x16\xc8\x00\xf0\xc5*6\xbc\xf4W7\xba4L\xc2\xa9\x1fi\x08\x00\xb2\xcbd^\x0e\xc8\x84\x10\xd1\xee \x81\xff@\x8eG\xf3Z\x84\x93~v@\xe7\xfc\x9c\xacnw\x05(0\x0bk1\xb8\x9a\xfaq\xa8\xcc\x9b\x99\xdf\xd3h\x0b\xef\xde\x00p\xf3\xe5}`\xa8^\xfa\x99\x8c\n\xa9,\xf5\xa9W\xa1,\xf6\xff\x9a\xef\xea\x0b\xfd\r\x04\xb6\xda\x19\xe4\xe0F\x83\x90,\x81\xfc+*\xf9\xe1\xae\xda\x91h\x0ep\x1a\x8ae\x9fv\xaf\xf7\xfa\xe3\xaf\xbf\x9a\xae\xb6\xfap~\xd9\xady\x9azB+\x9c\x9c\'\xbdU\x8e$Cv\x1dv\x93\xd7\xc3j\xa0\xd4R\x84\x01\xc5-\xddI\xcd`\xc5\\\xcc/\x11\xcb1\xc2\xd6\x9e\xe2\xee\xe2:\xe9qxZ\x8c\x12\n\xf0\xb3\x85\xb7x\x98\xca/}\xd3\xed%V0\xfcL\x01\x81\xbf\xdf]\x14\x93&\x7fU\xd3\xda\x91Eq(\xa0\xda\xa70Zk\x9c(\x83\x12*\x85\x18\'\x966O4\x08\x02\xe5\x89\x9f$\xeb\xd4%\xf98\xb7\xe5bh\x98^\xc0\x02\x12\xf8\xa8*\x90\xde\xf4\xc1\x0c\x977\x93\x93*\xdf\x8e\xee\x16\xc5A\xc4\x0e|E\x87{#\xa73\xdc\xec\xd9\x8c\xb0X\x12\x08e\xe1\x91q\x1e\xac\xa3\xff\x9f\xd0,\xbf\x9e\xc0\xa0\xd5F\xecPw\\[\x1b\xcf\xc0\xad\x0c\x0e\xf3\x88\xa5)\xd6\xd7\xda\xdb\x02\xf5\xb1-,\x8f\xc6vvV\x99z\x13\xa4o\xdf\x18|\xe2M\xf2\xf25\xd3{\xd6\xb6\xe9\xbf9\xa3\x94\xb3W\x08\xda\xf1\x8f\xe7\xcf\xcd^\xe0{\xff\'\xc6R{\xf5s<\xfc\xcdB"\x86!\xeb\t\x92F\xfe\xed\xbdP\xa6\x94\x91\x18mr\x18\xe6\\\xeag\xb7\xfcG\xf9\x893\xadS\x1c\t\xc8"\xeeV\xe4-\xda\x91\x04\xd9x\xbc\xda\x92\x91\x8cD\xc3LS~\x1f\x03.B\xef;\x0cg\xf6+;^\x80v\x8a\xa1\xcb\xa3<\x96t\xe8\xcb\xbd\x05[\xf4\x82\xf5\xad\x92F\xa9o\x9b<*\x93\x1c\xa0\xaf_\x9c\xc3\x83\x10\x1f@\x9d\x9b\xad\xee\x01\xcaO\x87\xd5Z\xa5/S;X\xa6C\xb4/\x84\xcf\xccd\xa7xh\xde\xf02\xc0\x9d\xe6Q\x9e%)\x86u\x11\x8e\x8a\xd5\x95\x18}\x806"\x0b\x9cc,\x85\xc9sK:\xeb\xd3l\xb1\xeb\x0e\x97z\xf0\x12\xe3\x81\xa7\xc1\xc9Ar\x82\x9f\xccB\xca\xac\x8c\xd5S\x92Y\xf0\x9f/\x04\xf7~^\xbf\x15\xc9\x02`\x8ba\x8d\x13x\xa1sR%\xb1\x99\xc1\x7f\xee \xda+>\xafk?im\x93\xc1\x8c_UI\x0f[\x90\'\x9c\x02\x0b\xcb\x9cKE9\x9a\'\xe5\x822\xa9NZ\r[\xa1\xaem\x06R)-5\x89\x13\xa8|\xf7\x90\x93\xeb\xf5\x17y\x99F\xba\xec\x93\x7f\xca\xd45,\x07\x8e\xe8\xef\xb0\xd4\xd7\xc7\xcf#\xa0:U\x00\x93\r\x0c@\xbf\xa9\x16\x9b\xf4}\xb8\xf9\xae\x9f\xd5\xa2\xf8\xa8\xb3\xe1\xe0}\xfa\xa4\xf5\xc1=\xb2G\xa6L\xb2\x92\x80\xbb\x92\xed\xa2\x1a\xfdJ\x0fD\xa5b\xf6\xef\x8d \x01-rw\x10S\x8b\t\x96\xce\xcd\xf1*\xc3b$\x9f="\t\xb8\x96)^\xf4Vy\xc7\xad\xcb\x10)\xfd\x1f%\xa2\x8a\xed\xf9\xab\x07\xff\x19\xe1\xcbZV\x0e\x8e\\L\xfdX\xac\xc9\xe1eqC\xe2\x92+\x98t\x1bfd\x7fx\xe7\'S\t|\xcc\xc8\xc9\xe7\x89\x03y\x120\xeb\xa6\xe7W\x0e\xf2\xb5\xa4l\xbf\x859\xd3^P\xaa\x00\x14\xb1\xab\x14a\xe6u"(\xe3@\xc6\xdf^\xa0Y6\x838\xc5\x1a\xb1\xc5\xf7\xa4\x90\xcbp\xb2\xde\xa9N\xd5\xba\xce\x17#h\x1d\xd7\x10\x8a_ \rT\x0b\x1b\xaf\x8fy\x18\xc9\xb0\x99\x0b{3bz\x99v2\x08\x8dN\xe8V\xe9\xaa\xfdS\xe4)\xab\xcc\xc9\x81\x86\xb2\x99\xff\xb9Y7\xe2\x0e\xfbY\xfc\xb1\x81\xd0\x1f(I\xf8\x91\x9b\xd7\x05\x1bF\x93\x1bz\xe4e6\x0f\x0b`\xf2\\\xb3\xf2i\xab\x98\xd6\xd8\xfc\xe3X\xa8\xf0\xcc\xbdF\xc3\x12)o;\x18Qq\xca\x01\xdb\x84^z\x00\xd7\xec\x00\x9f/3\x03a\xa4\xa1`\x83Z\xa3\xdf\xb1\xbb\x1f_1\xa5\xea\x9e8\x98A\xc7\x80\xf2x#\x0ey\x8e\xe5\x12\xbbs\xa5\x9cj\'@\xd1\xa6s:\xdc\xfe\xb4\x17\x85 7\xe6.\xaf\xfah\xe0\xcd\xc2E\x9e\x14f\xe6\xa0n\xcaJI\xe4\x83\xfa)\x03X\xa8|\xdc\xebE7\x96\xfc\x14\x88.\x9b\x1b\x18\xa1G\x0b-\x9e@\xa83\x03HY\x91\xf9l\xec\x7f\x8bm\xef\xd5_o\x10!<\xe4HES\xbb\xce7\x15\xf07r\x98O\x7f\xea\x9a&/eP\xee$5\xea\xcf\x9b\xf5\xc6\xab[\xc6\xe4\xe1\xf6Y\x11\xf1\xc9=h?\xc9\xfa\x0c\xd9J\x02\x93\xea\xdd\xa8,Ag`VK)u\x98 \x0eTA:\x953\xc3H\xb6\\\x17\xf8\xab1\x1a[\xe7{\x04%\xc0\\_<SK*\x86\xee#\x07}\xc3\xc4\x88\xba^\x9e4\x15t\x9d\xf24Xo\'Be\x89\xa4\xd7\x12\xbf\xe7A\x06\xa5!}\xfe\xc5\x9c\xee\xe4b\x85\xfbrr\xf9t\x19\xc0\xd7\x18\xd7s\x84V8$\xa1,Z\xe9\xa6\xdf\xdc\xcdz\xa1z*q\xa8\x91\xa5\x0c\x15\x03\x8c\xf5\x97\xdc\xa8*v^s\xb0>\xc4,\x0c0\x04\xe7#\xb0\xb7\xa8\x8c\x99D\x869`\x0f \x0fOM3\xdac\x04N\x88\t\xed\x80h\xcf\x96S\x9f\xc32\x11\xf0\xe5D\xbe\x16\xa1V%x\xe2\xbf\x00C\x18\xb6?-\xa8Q:\x1f\xe1z\xde\x04\xd4J1x\x95xu\xd8_\x87CeS+T\x8d\x80\x05v\x8e\xa8\xc5\x15\xf8\x88\xcc\x14\xca\xfd\xbaRc\x1cI\'\xe5\x84S]\x1b\x83\xda`n8A\xa6\xf5`\xae!&\xdd\xcc!\xbbN\x89\xf5SR\xb32`\x1c\x9bm\x9a\xa7\x00\xab\xd6\x95]\x9d\xad\xa8J\xf4_K\x08\x03\xca\x8f\xaea\xa0}\xbbZ\xd1\xae\xe7\xd2\xd0\xa3\xb6\x1aGG\xfe\xad\xb2\x10\xe5\x86\x8b\xcdJ\xef\xe1\x83\xb6P\xab\x98B\tx\xd4\x84:9\xceu\x91O\xacq\xcex\x98\x17\xaeQ0siO\x8e\x13GLFxd<\x0bZ\xb9\xd5X\xbc\t\xfc\xb0\xc9\xa8\xf2A\x1d\xca\x12R\xdf\xda\xa3Gy\xa4\xfc\\\xb1g\xd4\x81Aj\xa1\x94\x08\x88\xb0\x86\xf30\xc0\x86\xd3!W\xb3\xf3[\x11\x02\xc4\xf4\xce\xce^%s\xde\xb5\xdc{n\x8f\xac\x96\x1e\x87\xd9xZ3\xe8&\xb4\xbb\xdf\xdcE\x95\x8c\x19\x9b\xa0\xc7\x03\x8cQ\xb4\x08pJ\xc7?.t\xd7e\x06\x12x4\x99(&\x7f\xa4(\xb2G\x10\xd87\xc2\xceI\x89\xbf\xa8\xcd\x85\xb1\xe2W\xb9\xdc8\xc2\x1d\x82\xe0V\xaa,\xe8\x8d\xda\xe0\x04\x92\xd9?\x0e\x89\xa5`sf\x92$\xf2\xa0>k<\\\r0\x15+\x8b\xcf\xd3\\}_\xb70\xf8\xa3WE\xbd7%\'\x19AP \xa1\xb8\x86\xd1\xb9xsd\x19\x01Za\xd0q\xa9w\xa5m\x80(\xf7f\x84\xe2\xc6-\x81$\x94\xb1\x9e\x8b+c^\xfa\x07e\x9bA]\x88\x7f\x9a\x8d=\x97r\xb7a\xa3\xdd \xca\xd4\xc5Uim\r\x15"N\xa4E"\xcbb\xec\xab\x83U\xd2TD\x06\x96\xb7T\xa8OJ\xf9\xc4\x8eb\x92\x1e\xd7\xd6\xe0\xbc\x81\xc2\xc1\xa6\xef\n\xe5\xcf\xbf\x81.\xca\xa3\xa8\xbcS\xca\x116\xfe\x1c\xf7\xc0\xca\x8d\xe4\xfcG\xb4\xacG_\x17\xa6\xbe\xe5\xf0\xff\xd2}$vP\x9c\x9f\xec\x03t!7\xf0\xa3n\x99c\xa9tX\xad&F\xe2\xe5\xfbV\x91>\xd8\xd2\xcb\xa7\x88\x98h\\%\xfe]\xe8\x1b&\x82\x13\xf7L\x8c\xd06\xfd|\xf7\xa8\t\xa1\xf2Ps\x9c\x93\xedr\x9cGq\'3z\'1\xb0\xc3\xef\xe7\xe5\xbe\xc8Ul\xc8\xc7R(\xe4kD\xf5?\xd0kaT\xfaxc4\x12\xd8\xb0\xef!\x90d\xaa\x8e\x06Z\xf9\xb4\xd3\x82\xc5\x8af\xd9\x16|e9\xac&\x82\xcb@\xf3\x17fgq\xff\xf13\xd1\'H\x16\xa5\r\xc2\xe9O\xa2\x91\xcd\x97\x9fT\x1dqkv<\x06\xa3\xf6\xd3\xec\x87\x87\xc6UK]\x89\xf7\xbb#\xd8o+\xd2}\xa3P.U\x0e\xa9\xb7\x9c\x8f\xd3\x08!q\x17W\xf4\xea\xd7\xdb\xc8\xe8\x0fM\x02{\xe6\xff\xe9\x02w\xd8s\xf2C\xd6Fs\xbcj\xc4\xc6\x92\xfdp]n\xec\x7f\xbd\xd3\x9ar8k\x024\xd8#VC\xcb\xee_Op\x1a\x02W\xd7\xfcPGE\xe5J\'\xaa\xa7\x0b\x176\xba3\x7f\xce\x9f"\xc1TJ#\x06o\x05\x9e\xc4\xee\xb8\x02\'F#\xdc\x14\xba\xe2\xfbu\xa4\xd0\x01\xe0\x9e\xbe\x80\xf6\xaa\x18m\x12\xf5\xb8\x0c\xe0\xb7\xdb\xe1\x12\x13Gh\x93y\x8cD\x9d\x11\xc5\x8a\xe6\x05MP`w\xc2cx1\no\xa0!F\xa2\xb7\xfd0s\xec\xf992\xec\xa4~Ap\xb4,\xe7w\x17;\x80\xfdM\x03<\x8a\xf5`\x80j\xd1{[ \xd8R\x7f\xd6\xc9\xa2\xf7\xe6\x1b\x00\x8a\x87t\xe8\xc8n\xc3\xddy^LNSs\x88\x88\x18\t\xd1\xc7\xe9\x1b\xea\xb5Rl 1\x7f\n9\xee\xde\x94]Y\x0c\xb6-\xbce\xd3r\x1d\xd1\xebl\xf5U\xbf)\xdb\xb4@w\xefD^\x8e\x8c\xf5]\x8c\xa8\x17\xc2\x03\xba\xeb\xcc$n\xa8\x14\n\x90p\xa0\xef\xc7x\xc4\xcd\xe6\xde\xb7\xbb\x84\xa1\xc1=\xe5\x08\x85\x06\x1fO\xcd!\x81\xc4\xa5\x02l*\xfa\xbc\xbd\x99Z\x08U\x0ct6\x9b\x83\xd2\xf6\x1b\x0b\xc4\xc5P\xc0H\x85\xc5\xf1,\x02\x87\xfb\xbc-\xa5e%\xe5\xff\xb9\xd9\x13ZG\x8e\x93V\\\xc9\x118\rt\xf4\xc4\xad\xd5:\x9f}b9e\xd0\x17\x91x\x84\x91\xc43\xc3\xbc3\xc6\xd2w\x80\xf9\x85\xaf\xd7[\x9cIA\x18\x01\x82\n\xedBO\xcb_\xa8\xfa\xe1\xca\xc0`\x02L%v\x9dhX\xcc\xd5\xcc\xf7\xd4\x1e\xa1=\x9fM~X\xaf\xf2\xf0\x16\xe8\xe8\x8e\x8d\xdc\xa2\xadu\x03Y\x10=\x00\xb3@*\xfa\xd2I2A\xd8\x7f\xeba4(\xeaE\x0c\x02\x93\x9f\xf8J\xf0f\xc7?\x10\xcd\x1c D\x94V6\xbd!\xcb5\x1cX\x97\xd1\xac>\xd0\x95T\xc6\x8b\xddl\xd5vm\xe8\xe2\x98M\xaa\xf4M8L+\xe4\x91\x80\xfc;\x8d\xc2\xb7\x8b$\xa3\x04\x81\xaeEn\xc7fkw\xed-\x96\xfe\xa42\xc1\x18\xe7\xb9\xddh\xd0\x87!\xa9\x92\x87W\x197\x80\xe3\xfb \xde\xd5\xf6{\xee\xf8\xb7\xdd\xef\x1d\xf5@" \x1cL\xfa\x08G\xa9O\xc0\xdb\xcd\xebg\xeaRk\x81\xa5Bu\xa7$\x89\xc9\xc4T\xbf\xd2\x99\xeeO\xc5\xc5%{\x8b\xddI\x86\xbe\xfe\x96BrWV5Q\x81\x9b\\Z<\xe3,Cn<Y\x9e\x9d\x9c\x85Ec?\x93\xc9\x94kD\xdc\x06\xe0^cN\xc9\xd7\x89)\xe6\xb3e\xd6I4\xdc\xc0V\x93\x1bH\x18\x023W\xe5\x1a\x94\x89\x1dC\xcc\xef\r\x0e\x8f~q\xb6\x7f\xbc\x95\xea\xd7o\x8b\x06\xde\x81\xa9\xe5\xfc\x0c\x08;\x05\xf0\x9d\xcd\x93\xe6\x1d\x00>{\xc0\x94\xa02J3\x1c\xf8\r\x11\x17{e0\x8a\xb6\x85\x0f,\x0e\x9f\x90\xc4\xfbL]t\xab!\xe5\x18\x05\x86m\x81j\x1b#u\x17\xca\xaeQv11\xb8oy\xd7\x9649[\xeb\x81\xb7pL\x97)\xe1\x9b^\x96e\x81\xabN\xa4\xf1`.|\x9c\xbd{\r\xf9\xb5\x00\xa1kj\xd7];I>\xcc7\x14\x8f \x87\xaa\xa7\xa3\xc5\xad4\x97\xac\xaa/Q\xe5\x0f\xde\xe4\xc83\xa8\xd3\x0e\xd2\xa6\xe5\xee\x1aA1_4\x7f\xf3.\\\x96\x19\xf9\x10C\xdd\xb6\xb3\xb4\xc2\xf4*\xd9\xa7\xadX\xf8\xd3\xb8\x8d#nf\xe2\xdfb\xc9\x7f\xb4\x8b\t\x1d\xd3C>\x19\xd5\x05\x183w\x90\xb69=h7q\xdf\xb0#')
1
+ from flask import g, jsonify, abort, render_template, request, send_from_directory
2
+ from hiddifypanel.models import *
3
+ from hiddifypanel.panel import hiddify
4
+ import uuid
5
+ from flask import g, send_from_directory, url_for,session
6
+ import traceback
7
+ import user_agents
8
+ import hiddifypanel
9
+
10
+ def init_app(app):
11
+ app.jinja_env.globals['ConfigEnum'] = ConfigEnum
12
+ app.jinja_env.globals['DomainType'] = DomainType
13
+ app.jinja_env.globals['UserMode'] = UserMode
14
+ app.jinja_env.globals['hconfig'] = hconfig
15
+
16
+ @app.errorhandler(Exception)
17
+ def internal_server_error(e):
18
+ if not hasattr(e, 'code') or e.code == 500:
19
+ trace = traceback.format_exc()
20
+ import lastversion
21
+ last_version=lastversion.latest("hiddifypanel",at="pip")
22
+
23
+ has_update= "dev" not in hiddifypanel.__version__ and f'{last_version}' != hiddifypanel.__version__
24
+ return render_template('500.html', error=e, trace=trace,has_update=has_update,last_version=last_version), 500
25
+ # if e.code in [400,401,403]:
26
+ # return render_template('access-denied.html',error=e), e.code
27
+
28
+ return render_template('error.html', error=e), e.code
29
+
30
+ @app.url_defaults
31
+ def add_proxy_path_user(endpoint, values):
32
+
33
+ if 'user_secret' not in values and hasattr(g, 'user_uuid'):
34
+ values['user_secret'] = f'{g.user_uuid}'
35
+ if 'proxy_path' not in values:
36
+ # values['proxy_path']=f'{g.proxy_path}'
37
+ values['proxy_path'] = hconfig(ConfigEnum.proxy_path)
38
+
39
+ @app.route("/<proxy_path>/videos/<file>")
40
+ def videos(file):
41
+ print("file", file, app.config['HIDDIFY_CONFIG_PATH'] +
42
+ '/hiddify-panel/videos/'+file)
43
+ return send_from_directory(app.config['HIDDIFY_CONFIG_PATH']+'/hiddify-panel/videos/', file)
44
+ # @app.template_filter()
45
+ # def rel_datetime(value):
46
+ # diff=datetime.datetime.now()-value
47
+ # return format_timedelta(diff, add_direction=True, locale=hconfig(ConfigEnum.lang))
48
+
49
+ @app.url_value_preprocessor
50
+ def pull_secret_code(endpoint, values):
51
+ # print("Y",endpoint, values)
52
+ # if values is None:
53
+ # return
54
+
55
+ g.user = None
56
+ g.user_uuid = None
57
+ g.is_admin = False
58
+
59
+
60
+ if request.args.get('darkmode')!=None:
61
+ session['darkmode'] = request.args.get('darkmode','').lower()=='true'
62
+ g.darkmode=session.get('darkmode', False)
63
+
64
+ if request.args.get('pwa')!=None:
65
+ session['pwa'] = request.args.get('pwa','').lower()=='true'
66
+ g.pwa=session.get('pwa', False)
67
+
68
+ g.user_agent = user_agents.parse(request.user_agent.string)
69
+ if g.user_agent.is_bot:
70
+ abort(400, "invalid")
71
+ g.proxy_path = values.pop('proxy_path', None) if values else None
72
+ if g.proxy_path != hconfig(ConfigEnum.proxy_path):
73
+ abort(400, "Invalid Proxy Path")
74
+ if endpoint == 'static' or endpoint == "videos":
75
+ return
76
+ tmp_secret = values.pop('user_secret', None) if values else None
77
+ try:
78
+ if tmp_secret:
79
+ g.user_uuid = uuid.UUID(tmp_secret)
80
+ except:
81
+ # raise PermissionError("Invalid secret")
82
+ abort(400, 'invalid user')
83
+ g.is_admin = g.user_uuid == uuid.UUID(hconfig(ConfigEnum.admin_secret))
84
+ bare_path=request.path.replace(g.proxy_path,"").replace(tmp_secret,"").lower()
85
+ if not g.is_admin:
86
+ g.user = User.query.filter(User.uuid == f'{g.user_uuid}').first()
87
+ if not g.user:
88
+ abort(401, 'invalid user')
89
+ if endpoint and ("admin" in endpoint or "api" in endpoint):
90
+ # raise PermissionError("Access Denied")
91
+ abort(403, 'Access Denied')
92
+ if "admin" in bare_path or "api" in bare_path:
93
+ abort(403, 'Access Denied')
94
+
95
+ if hconfig(ConfigEnum.telegram_bot_token):
96
+ from hiddifypanel.panel.commercial.telegrambot import bot
97
+ g.bot=bot
98
+ # print(g.user)
4
99
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
100
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,72 @@
1
- # 2023-04-08T15:11:11.908279
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x94\x1d\x00\x00\x12\t\x04\x00\x1d\x81\xb8\xf1!\x8c.\xe1y\xdc\x83AO:>\x03\x00\x00\x00\x00\x00\x00\x00\x00\xae\x16\xf0$o\xc0W\xd0\xfdE\x0c\x9dg\xac\xa8\xc4\xda\xd40\x99\x14\xa5|\xb51\xa4=\xcb9-TY\xd3\x1c,j\xff\xfb!\xb48\xf0\xb9\x83\x05\xd1\xbe\xd7\x19\xf44\xa5hK\x98\xee\xc0\xf8Ux\xc4\x05l\xe5x\xc4\xbb\xc2\x15\xbc\xab<\xa1k\x14\x1dF\x81TOs\x932\xbd\xc3`}\x9eO\xd4\xea\xcb\xb5\x06\x14\xd9\xacS5\xac\x9e\x10`\xac\xf8\r\xba\xeb-O\xf5\xbf\'\xab0\x89P\xb0\xcdO\xcc:\xf5\x12<\x18\x81\xa4i%\x0c(\xd7\x0c\x06\r2\xa9%:\x14r\x87\xadh\x90\xa4\\\x8d8?W5"\x0ct\xc46\xaeC\xd1\xb7 \x05cZmH\x04\xfe\x0c\x02\xc2\x7f\xc3HD\xdc\x9a\xd1\xcd\x91\xfb\x9eb\x16\xbe\xd8\xfe1\xd7i@\xf7\x8c:\xc9\xb3G\x1cu\xad\xe3Cv3j\x8e\x8e\x9fV\xbb8\xfcx\x078#i\xfe\xfaB\x8a\xb2B\x19\x11\x88\x1f_\x86\x14\xdf\x82\x82s\xae\xf2\x81\xe0\xeb*\x98v\xc2\xbd\xcb\xe6\xa0F\xccP\xfb\x00R\xbb\xc9\xbd\xe5\xb8\xa7\x1dM\xa4\x87h\x17Z\xd59\xb5\x0eb\x87\x9a\x03\xc1\xb6b\x8f\xe9\xa5\x08/\x08\xe6\xf6\xaaP\x95\xe5\x17m,\x99\x81\xbc\x82\x93\x16"\xa4\xce\x95m\xc1x]\xcc\xa1\x98\xfc\xa6x\xf3\x07sA\xef\xf2uUX\x1f\xae\xe2o\x8a\xec\x0cY\xe1i\x91\x8e\x1a\xcbP\xc6M\xcb\xab<\xfa\xc8\xb5\xdb\xdfP9!/\x07l\xbb.\x84i\xc3\x1b/6]M{\xd21\x88%\x9eQ\x18\x90\xf1\xbb\xab\xb5Q4yI\xc5\xfc\x0e\x043\x90\x93\x8as\x05\x1e\xde\x85\xc0\n0v\x02\xa5Zj\xb3\xe1;\xfa\xd0\x9b)\xf9\xa8\x87\xca\xc8.+\xf7\xf8\xeds\xb4\xa5\xdeBU\xd7h\xcf@/2:\xdd\xd5(G!\x0f#Z\xb4\xf9\xc8\xa7y\xbd\xef\xcc2\xcd.\xf0I\xc6\xf2\xe7.DS`\xce\x1fD;q\xb2\xa1\x08\x08\xa2\xfc\x98\x8dZ-\xa1\xe9\xae\xc6\x15Z\xf5\x1fV6\xa5\xca\x11\xc7)\xfb\xbf(\xc6\xab9\xe8\x917\xb2$\x1c\xbc\x00\xf5\xe2\xf7\x86aC\xbc\x0f\x7f\x0eFz\n\xe1\xe1\x94\xfe\xbfu9\x12\xe7\xc0])\x95J\x02..\x89\x93\xf5rua\xb5\x1f\xf2\xfe\xbb\x0f\xae`A\t"\x1adH+\xec\xc9\xc8\xcf\xa16r7U\x8cZ\x97\x1e\x18EEGCF\xc8\x8a\x17\x14\xd8\xd1M\xd1\xb3\xb7\xa3\x14\x15i9cU\x0bH\xecQ\xa3!\x95(\xa0w\xe7\x899\xd6\x07\xc0\xf8\xcb\xcc\x86\xde\xd3\x1d!\x19\xbc2\xed\x06\xd4fX\xcf\xf9;\x0c\xcc\x9f\xdd\x8c\xddK\x9d\xf1o\xb1\xaf\xd57\x1ah\x99\x82\x7f\x01\x97\\\xfd8\x87\xb1J\xba.\xf7\xe1\xa3W\xeb\x81B\xd4ZM@\xe9&\xed\r\xaa\xd0E\xb8J\x02#\x93\xbe\x91\n\xda\x8b\xc01\xec#t\x831{\x8eX!\\f\xcc=\xcb\x7f{&\xf0\x90\xb5\xab\x12\x92;\x9e\xce\x1e\x1f\xb1kdwH\x1a\xdd\x98\x1e\xba\xd8\x9c\xfe\x01\xc5\x9ax!Ir\xa8 \xbe{\\\xb8\xee\x00\xc6\x08\x9a\xc0\xa3\xb1\x958K\x9d\x15\xf3\x91C\xb2\t\xc9\xcf\xa0\x8f\xe4\\\xbc\x8c\xdb\xd18j\xbd\xddD-2\xda \xd0\x84\x07\xb9gnXH\xc0+]\x04>\xa36JQ\xb5\xb7\xec\xf4\x91\xb5\x98\xb0n\xec\x9d\xf3\x9cY\xe3\xaa\x12\xf0\x99\xfc\xfc\xc2\xfc\xd8\xc3\xd41\x8c I\xf4\xc6\xc5\xc3]Y\x89\xf4\xd9\x8a9\x98Zq\xe7\x06\x1fg\xb83\x9c\x93\x1b\xda\xc1\x9fd\xb7\xc2\x1c\x1e;e\xedDQ\xa0/H\xe9\x1d\x9d\x9f\xa3\x83#\xa3\xd7\x9e\xd1\xdb&\x84\nlx\x11\x16Z8-\xad\xc3\xd7LcK\xc5 \x8b\xfa\x1f\xdfm\x8bZ\xe5x?(6M\xffJ\xcfuNX\xa78\xf9\xab\xb6\xb0Y\x97We\x08\x91\xde\xed\xb3IK6\x13\xa8\xcd\xba\x11t\x95ahS\xc1\xbf\xbe\xbf\x114\x0f\x00;\x7f\x03\xad\x8fi\x1a\xee\x91\xcd\x10\x13\xc2\xc9\x95\xb1\xf4\xfe5]a\xd2\xfd\x8co\x04\x07o\x10T\xf0\x85aJ\x1fEC\x0b!\xb0\xec\x83\x82\x1f\xc3\xc5\x06\xa9\xfa^\xd9\xcdb\x98-\xadn\xc2\x1a\x1aHTA2%\x9e\xd0\xe8n\xdb\xe7\x9c\xa6=\xc7\x8a\xd9\x96\xb5\xb8Bh\x90\r\xe8&:`\xe6p\x80\x82|\x97W\x1e\xfa\xa8\'\x8e\x82\xccR\r\x88\xc7\x9cJ\xaf"\xf9\xe2\x98\xbf\xb96\x12M\x85W\x078X\x033\xc3x\xf7fQ8\xc2<=>K\xfbX\xb3\x06I]\x8dd\xe6\xa8\xf9\xe4\x9a\x87\n\xea\xad\xc6\xefe\xf1\xae\xc7\x0f\xaeuG\r\xe5t\xbb\xf7\xcc\x13\x8b\xe6\xbb1\x15 \xd8\xc2\xd2p\xea7\xe5\xf66P\xe3\x05Vg/XN\xf5\xe4\xff\xcc\xef/\x86g=\xcf=%\x93\xfc\x90\x82\xe5\xf4w\xdb\xea\tD[>\xd0\x19\x98\xfdm\r\xb4\t-S\xe2Z]X~\x85Z`\xf4\x0fa\xf28T/\x14\xde\xed^\xbeP\xfa\xbd\xc5\xb05$\xcd\x80n\x9c\xc87K\xd7\x01\xf3\xc6k\xd3\xa3e\xf9\x18\xea\x1aW\xbe\xc8\xe5_\xd3\xf4IH\xf9\x9f-\xea\x13\xfe\xeb\x8ea"\x98\xe1\x99^nC\xc0\x1cV\t\x89t\x15\x8b+!X\'\xcd;\xdd*?P\xb0\xca\x16\x15\x11\xc1l\xdb3pn\x97\xeee\x88\xf0xgki<.\r\xfb+\xb2\x10\x8c;*5j\x80d\x1a\x03)\xdd\x93=\xd5\xe1\xbd\xc1\xef\xaab\xa9\xa9\x8e\xc2-\x0fTw\xa1\x9ah]\xd6\xd9\xf2Kd\xbe\xce)\xbeJ]\xaf\xa7\xaa*sg\xe8\x97P\xf4\x18\x16\xc2s\xc5$=\xa2\xf9@ F\xc1\xb5\x1aQe\x06\xcb\xb5\xcd\xf7\x0c\x8c;\xa88Z)z[\xe7{\x99U,\xb6s\xbb\xc3\xbf=o(\x11[\xe8x\x026i\xb4\xe2\xfb\xd0\xb7\'7\t\x16z6Z\xb9\xb6L\xb9\xfe\xed\x06\xc1Gl\xffE\x1a\x19\xe3\x1f\xfcv\xca\xb9\xc5\xbe\xa2}\x99WN\x9f\xf1\x87\xdbTM\xe3\xc5\x07\xe14<\xb6j\xb8\x80\xe9\x98 \xcd=\xa7\xcc,\x05\xbb\xef\xba\xca\xd5\x80W\x9cI\xbd\xba1fL\xcbtY\xac\x89]\xfekX\x1c\t\x82\\\xff\x05\x86x\x7f\x99\x90\xe8\xa2q\x10\xd4[\x89V\x8e\x8a\xd8X\x982\xd7\xd6f\x94\x9ae\xeer\x80lA\x07\n\x97\xfe\x98\x91\xdfm7\xfe{\xaa\xc1\xb2\xe6\xffL\n\xea\xfe\x8d\xe6\x1e3\x04\xa7\xf8R\xe3h\xa9\x1e\xf7]\x86\xdb\x9f\xde\xae\xecE\xe9\nP\xef\x87\x04\t\xabgT\xf5=\xa4A\xde\xcc\xaa\x85\x1d\xe3{\xe5?\x98C\xdeRMpB\xb4[\xa3\xcbd\x9f\xed\x83z\xe1Yk\x91;o\xc8F\xe5\xbdu;\x14\xf3\xd6f\xab\x10U\xd2w\xd1\xfa$\xe5\xc3O\x15O\xdbd\xbc\xf6:\x7f\xb0x\xf1e\x82-\x8b@c\xef\xf7:\xce\x83\xc0S-\xd3\x9c"\xc8\xcc\xae,\xb0\x8b\xebx\xfdky\x81T\xe7yG_*3q\xd9\x9f\x1b`\xba\xd3\x04c\xa1\xda\x977\x95k\x82S\xb5\x86\xbd\xa1+U+\xa4\x85\x96\xf1\xa5\x8ei\xee\xee\xbe\x91\x17j\x87\x1d\x85_r\xebVlg\x0f-\xfbx\x89\x06\x99\xad\xa8/_\xc3j\xa3\x82\xb7F\x80D\xfcR\xde\x17<\xdb\xb9>Q\xe1y\xd8\\\xf7\xedQ\xbf1\'\x9e\x10\xcfl\xcc\x91\xe8\x83\x13z\xfa\xeb\xe2\x0cm\x94\xbd{\x08M\xbc\xd3\xc2ut\\\xb1\xc9\xb2[\xd1\x03\x0cZ0\x02v\xab\xe5q\xd5\xdc\x1f\xf9\t\x17\xc4i?\x04\xaa^}\x86\xf2Z\xa89\x1fB\x81\xcap\xeb\x9a\xfdP\x80\xf8I\x14)\x8a\x041\xee\xc3^Drz\x07YYA\xd1\r\xd8\xc4\x00o\xe1\xb9\xe53\n;\xd4\x02=J\xe6\x99"\xd6K\xa2\xf1\xc3ls\xa2\x07Z\xf3\xaaH\x08\x8f\x99\x99\x18\xec\'h\xd6\xcfX\xae\xf0\xd0oF\xdc\xf0\x04O\xa2\x14\xd6\xdd\xd3\x9e\xdf\xd4{)V\xda\x01\x9e#\\\xe4\x89B\xc5@Q0\xc0d\x19\xfbn\xbbF\xfe\xa0\xc5]\xf2$f\xe6\xac\t\x8ck\x16\xa1\xa0X\xd7\xfa\xe34\xf9\xa2m\xb0\xf9\x11\xfc\x83\x06\xb8hb\x8bf\xec\'\xed\xed\x8e\x02\x02\x1dr\x19T\xd4q&\xe2m\xa9\x00\xfa\xda\xa5\x92\x8c\x84\xba\xa8B\x13\xd5E\x1d\xcd\xed\x0c\xbd\x02\xc7%[\xc5\xb8j\xa9.\xeb"\xf6y\xcf\xaa\x05,D\xd9\x830-D{\x90y\xab\xc2~\xcd\xfex\xc5\xa7Fy\xd5\x97\xbcN\x06\xfa\x89\xdf\x8c\xa1\x86\x06\x07\x1a\xa3\xb2\xff\xec\x03_\xd3\x89{\x87\xfd1\x8c@\xa1\xc0E5i\xbcnTo\xd5\ti\x1er\xe6\x10\x0c\x0e\x93\xf3\x9a\xd8\xcbZ\x97\xb8\xb7\xf0\x96I\x11\xeb\x0f\x8f{\xc2\x0e\xf5Dn\xcb\xaa1\xbf?\xfc\x93]u\x7f\x8cM\x1c\r\t\xbe\xa5q\xdd\xaee\xd7\x1fF\xfe\xef\'\xd9\x0b\xfc\xa3XK\xe9\xc0\xed},GK\xa2\x84\x1a\x06\xee$\xd9\x1c\xe7\xb9b\xf6\xf6d\xc4*^\x08\x97\xd1\xe5\xd8\'\xdf7F\xde%\xf1\x9c]6Bp\x03R8\xeb\x17\xbd\xdf\xc8\xf7m\xf7X\xe4\x9d$]i\x8d\xfbx\x03CPc\x9c\xd5`v-\xcb\x8e\xfe\xf3g\xf8\xd1A\xf6\xec\xd9\r\x96\xab*\xa8>b3\x94P\x0cG\x9d\ns\xfa\xc7Xd\x06v\x9cRs\x05^\xe8jg\x058\xce\x96V$j\'\xf8eR\xe3\xf5-\xf5\xc8\xd5"4\x9fhts\xe6\x9b>n\x8d0\xf3\x0e\x1bD\xa4}5\xb7u\x8a\xf90\x9c\x92\xe9Q\x84\xf9\xf8zu\x98\xb4\xb7\x80\xb6\x99\xf8$mv\xef\xf6\x81\xd5\x1e^\xb6k\x05P<"\x88\x9e\xadr\xc9\xec\xd4\x12.\n\xf4\x14]\x16\x14V\x7f\xdb_\xb8\x9d\xcf:\x07:\x121C\xcf_\xef\x11\t\x91\x1b#N\x00\x89\xbb\x98\xb5\x1d*{} /*\xcb/\xd4Hhi\x07\x86\x1d}$\xe7\xc6\x1d\x05\xcd\xbb\x1f\x04K\xa7\xdf{^\xe9\xe9\xcaL\x13q0\'\xe8\xaa\x05:\xfeF\x8al|2%\xf4\x14|dP\x04\x06\xdb,L\x11\x07\x97\x82\x04\xca\xb9\x15\xafD\x8b\'L\x9a\xbe9\xfb\xe7\x06\xee\x1aB\xee\x8e\x10\x88\xa8l6\xf1\xb3\x95\x10!\x7f\x98\xb2\x0b\tRq4\xd6\x1b\x19Y\xc4\x13\xe9\x1f|\x94\xda\xf6\x02\x86\xcc)\xc4P\x1d\xc7\xbasB2\x07\x9d\xb5C2\x9fg_\x0f#w-wx8z\x84\x9c\x16\xf6#NB\x86Kf\xd5Z|\xd5#\xf9\x03>\xde\x92T\x0e\xf4\x92\x07h\r\xe0\xc7\x9f\xca\x16\x04\x05\x89\xd5o\xe0\xf2\xa8H\x00\xba\xd5\xeb"\xa1\xa5Y\xcb\xdf\xe0|\xe9\xb8!\xf7!Oa\xba\xde\xf5x\xee\x01{\x9e\'\x0e\xb2\xafE\xfa\x8dE<x\x0b\xb0\xc7\x9e\xa4A"%\xc6\x08\xb8\xbb,\xbf\xc6\xfe\x96\x83Y\x9ej]\x92s\xfet#\xf43-\xe8\x91Q\xc6\xf6\xde\x7f\x8e\xed\xfck\x994q\x82\x95\xe5\xb3\xdb\xfbJ\xe2\xc9\xffiR\xfb\xc4\xf9\x91\x9b\xa9#\x95\xf5#\xf0x\xb4E\xff\xf2\x083\xa1\xc8m%\xbaHCZ-F\x7f\x1a2\xc4ot\x83\t3O\xb6\xdd\xd1\x97\x86\xea\xc1\x9c1\x11\xe6G\xe5n<\xec\xa2\x9f\xe3c\xbf[Z\t\xcc\x19n\xcd\xf32\x19\x87\x880\xfbs\x82y?\xf1\xbf\x0f\xb3@\xd8V\xd1Dn~\xbd5J\xba\xac\xd5=k\xb3Ci\xfdYX\xa2\x95\x9fc\xbb{H&\xc79\xda\xc8\xa0l\x8e\xd6F\x0c\\\xad\x88n\xe1"\xa3\x9cPW\x9f7\xe8?\x9a\xadZ\x1ba\xeb\x1d\xad\xec\x0e\xff\x8de\x00\x05\x14\x0e\x04\xd2\xcc\xe5\xd8\xe1a\xc7\xe4*J\x90\xbckML\xcc\xf8\x84Z\x89\x02|\x19\x1e\xf5\xe29\x13d\x9d\xf1k\xad\x83\x8d2j\x01sgI\x99\xca\x96!.V\x82\xcd*U&c\x1b\x06\xd5\xdd\xfc\xfd\xfd\xc8\xee\xd5\xec\n\xb9e\xe4q\x84(\xf6\x0eaGl.1\xd6\xb3\xfe\x98\xe9\x9c3\x02\n\x7f/\x92dV\xd4\xb0\xc3\xa5\xed\x8cq\xf0\xd9\xeb\xfb\xa1\xdf~\xfd;.\xdb\tl\x80ZG\xc3\xea4\xfb6\xcd\x95\xaav[\t\xbe\x02\xa9q\xa6\x95\xc6\xcd.\xb6\x1e\xaa\x98\xb7\xbd>\x84\x10\xde\x0b\xd6\x8dA\x80\x11ps\xb8\x97\xf8\x04\xee\xcf\xbd\xc2J\xa2\x99,\x19\x8c\xfb\x93\x92\x7f\x17\xf3\xf0\x99)\x87\x9f"k\xce\xe7\xfa\xbaB3\xde\xa5\xc0\x999\x114;:\xee)\xf9\x1d\xed\x8br\xae\x06)\x1c\xc5\x7f\xd2\x1c\x818+\x90\x01\x97[vT\xd3\xae\xb5k4\xbb\xeb\xd1\xc2{\xeeF\x88\x9f\xc3\xac\x15\xa9?\xfc\x97\xc8\xaf\xc2P(;%g\x97\x0b\xe8\x85\x8a\x15\x07X\x01\x0f\xa4\xe4\xb1m\x95\xe3\x0c%&g\\t\x92\xf9>\xf2\x01\x99\x90~9rF\xee\xc2\xac7\xf0\'y\x03<Q\x9e\x90\xfa\x8a\x89f8\x9c\x9e\xe2 \x15P\x9b)G\xcf?\xf2\x05\xf6\xaa\xc4\xdd\xba\xccA<\x8e:\xa0\xda\x8a\xa7\xbf\x7fm*v@\xf3\x05\xbfY\x89T\x19\x94:\xa4\x87\x1e\x84\xe4\xfe\xb3\xe8\xd1\xdc\x91_VnN\x04\xc0imG6\x07Fxx\x10\xce\x8a\xf2\xd5i\x8f#X0D\xc9\x96\xde\xb3C<\xdeR=\xb7\'\xf8\xfa\xac\xe9\xf2\xc7\x83\xea\xcbv \x80q\xf3\xdd\x12\xb0\xaf\x92FW\xeak\x90\x1d\xd5\x812\x00\xb6\xf7\xdb\xa0x\xb3\xc5n\xdc\xc0S\x8e\x87\xab\x99\xa8\x16Q\xc6\xfc\xe7aDx}\xc7\x00k\xff\x8e\xa0AB\xdb\xe1?\x1e\xab\xe6\xd3A\x98\x7f\xfd8S\xcf\xe2\xc3E0\xe8\xad\x90\x08PSZ\xd3\xaa\xdf\x03C\xa4\x81\x18+2umh\xc6^\xdc&\x98\x01.\x85q\x80|\xf9\xb5\xdb\x05\xb5"f\x01y\xc4z\xce\xe8\xccW=M\xf9l\xe7\x10F\xc4\xd4cM\x8e\x96\n\x9av\x1be\xde\x89L\x05C#l\xc8\\\xb8\x81\xabrM\xdf\x8d.\xecS\x9e\x96Fc\xb5\xc4h\xa4 \xd6=\xce\xdd\x01\xb9\xbeK\x1b\xf5\xa4#?8t^M\xee-\x83\xd9\xacLmb\xd4\x98;b7mb\xad\xfb\x8f\x99\xea$A\xa7\\\x97\xb9P^\x96*\x82\xbf\x16jE\xd0\xf0\x95\x8e>|\n\xfa-\xa8G@\x84\x01\x8a5\x15\x93\xa8\xef=\xda\xb8@\xa8g\xbe\x1d7\xc3\x8c\xb5&\x16@\xd8\x96\x89\xa1\xf4t\x1d\xd8\xeb\x95=\xc7\xa8&\x03\x00n\x12\x1eO+\x12\xc1`&\xca\xba\xcd4\x82@\x9c\xf0c\xde-/\xfb\x85\xc1\x1f\x0b\x9e\xf6\x9d\x01%q\xf6\x88\xf5\x97\x160\x93\xb4u\xc5\x96j\\\xa9\xcd\xac\x13\xc3Q[\xf6\x81\xe1\x07\xfd\xca\xd0(\x00\x0b\xbc\xa8z\xa9p\xd1\x1f\x93aQK\xee?\xb7\xa1\xf6\x9eo\x189\xdfaY\xd1q\xb3\xe7e+\xe5e\x04\x9a\xc7\xe2\xe4\x80NB`\x1bX\xd8\xf0]C\x11\x95\x90\x80\x91\xaeM\xe0\xf7\xe3r\x86\xa1\x03$\x14S;\x07i\xb3\xf9c\x0f\x8a\xb0SE\xdb\xf2Cc\xa7a\'\x03\x1f%\x80\xec\xacm\xf8j\xad=\x04\xbc_\xcb\x94S>m\xbd\xddSg\x98\xf4F\xa34X\xd8\x89#U\xbf\x9dn\xa3/\x04\xde\xd8V[\xef\xf3\xe2\xda;\x02p\xbbx\x1a\x8a\xcdd(\xe2\xc0s\xa7\x0c7W\xdb`\xf2\xebq]\x97\xb1\x1cwG|\x14\xff\xb6\xa6\xa4\xb2\x9d\x12[\xbc4zC\xb3R"\xb6\x13\xe9x\x01g6]H\xffc\x00!"\xaf\x1fN`\xed\x9b\x15\xff\xd0s\xac_\x0fm\xa9\xeb\x97\x07\xa7\x88\xfe\xd3\xb4\xaf[?;}\xcd#\x1c\xa14\xe4\xab\xaf\xf0i\x89\x08M\x97a\xaa\xb2\xfd"\x9b7\x157\xd1\x9a\n\xa6\r\xe9\x9b\x90}\xbe\xae\x19\xe5K\xa9\xee\xb4\xb7\x1b\xc1\x05/L9i\x16\x13<\x02\xd2\xab\xacl\xb0\xc9\x16S\xe1k\xe7\xfb\xef~\x15\xe8\xa4\xa1J`iF\xf5\xbbL\xc6c`w\xab5b\xb4Eo\xc9\x7f{\x89V\xfc#\xc8\x12\x1ch\x03\xf4A4\xe8\x0bX$\x1d`\xfb.0mzG\xcc+\xed\xc026\x91\x86?[\xdb\x8f\xc1\x95\xda~\x96\xc1\xb7g\x8e1\x99W\x0f0#\xc2\x05\xef\xb4\xf5mS\xb4\xb2\xf8\x99\x877\xbe\xdb*u<<\x95NbM\xa6\x11\xe9\xe0m\xf8\xa2P\t\xa8\r\x17\xba\x9b\x19ZAjl/\x8c\xcc\xa9aA6N"\x81\xf3\xc2y\xf8s!X\xd0\xd6\xc2\xd1\xe0\xa2\x92\x01\x83\xeb\x1c\x91\x00{\x19\xa6\xcd\xb9\x07\xe4\xa5\xf3\xa9\xd3,~\x14N]\xb3\xa8\xa4{\xcd(k\xff\xadU\xa9\xd8\xe9\x07c8\xc1\x17\x87\xc6#V1\xe9\x1ec\x03\x1c\xcc\xa1\x17/\xa4i\x0b\x9e\xb2\x80E \xdb;x7\xf8\xa7Sd\x83\xcf\x8cw\x95\\:\xfc\xd0\x7f\x1dq/wAj\x19r\x81\x8b\xfe\x92pg\xe8\x1bZ"\xcc\xd5\x1ep>9 "@\x89[\x04\x8c\xabQ\x9erA\x884\xa3\x81\xe5\xb3\x12\x9cs\x8e\x16\x9d4_\xc8?\xe2*\xeaCv\xe2\xedMf7\xe2<"-6\x05\xe5\xa43\xacH\x06\t\xd8?\x18\x9c\xc6\x0c\t\x8d0\x15\x16LEf|\xc4[\n\x13$\x1d\xfe\x81\xb4\xd416A[_\xa3\xda\xf86\xb2\xa3s\xd5\x90\xae\x8b#\x96\xff\x17\xd3$\'\x81B\xa0q\x1c-\x89\xdd\x92n\x7f\xd3\xadE\xe5\xd0a\xdcW\x95,WaQ\xf8\xf6\x18\x82\xe1\x1d\xef\xcbq\x06S$b7\xe3\xdc\xc1\xf8\xfeF\xd4\xb5\x83\xa0"\xb8\xcd\x9c\x06\xea\xf6\xdd`\xc2b\x0e\x84\x9c\x82\x8c\xf9\xac5\x85A\x1f\xdf\xda\xe0\xf8t\'\xf2\xfd\xb2\x88G\xee\x96\xd3\xe8\xc5\xf4_\xbe.mi\xd4HbQ\xa5Eh\x06\xa5\x9f\x06P\xff\x91i\xaacM\xff\xb2\xfb\xff\'P\x8f0\xb0\xc3F\xd0\xbb\x1c\x85w\xe5F\x00D\xae\xce\xcf\x19\xfcq\xad\xbdT \xe6G\x84cn\x87\xe5=i\xd5\x18\x8e\xccU[\xea\xa8[\xaa\xd6YN\x88\xff\x14\x9d\x10\xdd\xc3\xfb\xa6\xc3\x12\xd1\xad\x0b2t\xc14\xbf!0\n\xee\xf0\xcb\xbb\x19Cr\x1f*y{\xf3e\x95B76)vn\x9f\xe2\xd8&\xa1\xfe\xad\xb3\x8a\xa6\xa5Y\xc0yW\x1a\xcc\xdaZ\x97\x073TI}D\x854\x84\x81\xe1\xc9\xb0\x07$N\r[+\xb0\x86\x86\x91geq\xf1g?\xaa\xc85M\xcf\x01) \x1d\xfdJ \x15\x84\x04.\xdah\xf8\xbc8\x0c\xff\xd3n:\x03\x10:C\xf5\x98g\x18\x87p\xb9\xd1L,\xf9s\x87\x17\x8e\x82:\xfd\x85F\x7f\x85\x15\x8cX\x0f\x19_\xcd;N\xe2\xab;\x89\xe6\xd3+ \xffR\x13\xbe9\xab\xf6s#\xe6\xa5\x98\xab\x0cs\xd3\x95\xec\x0cT\xb8H\xf3\xf6\x00\xe7`f\xd2U\xa3\x8fmK\x8b0\xdc\x9e\xe6$\xf8\xd7\x90\xa8\xcd\x8f\xf3\x90\x84\x95\x93\x8aBb\x8c:>\x0f\x95\xd1 \x97I^\xca\xe4\x86\xfb\xda\xb6\xa3\xe2L\xa8b\xf9\xa5M;E\x88\x9b\xcb\xf9\x89\t\x8e\x8a\x84-\x05o\x8b\x02\xc5\n\r\xfe\xe6k\x9b\xf5[\xb8L\\,\xb5\x99\x18[a\x11\xa7\xcdb2\xd6Fe\xef\r\xc7\xc82\x11\n\x8b\xc2d\x93\x9e\x13\xc3\xaa\x83\x8d\xf6\xd1\x89\x02\xc4\x96t\xcf]\xfc\xda\x1fQ\x10S\x1fq\xbd\xf8u\xd9\xc7\xfc\xce@\x0b \xeb\x84\xa9\x00\xf8\xae\xff\xb1\x8a\x14\x1d\xcf6\xeb\xa6\xb1IYI\xdd~\x17\xdaZ\xc1\xd8c\xe4}WzF\x81\xb8,\x1f\x02\xdf\xab\xdc\xc4B.\x1c\xf0\xe4\xd7\xd6q\xe3\x01\x8bj#\x94c\x9d\x01\xd0\x89\xe8.\xad\xc8j#\xf5\x0f\x04D\xa8u~\xf2\x8a\xa3\xad\xdc\x84\xa0mUP\x95\xd1\xf8\x8e\xf0\x05\xe1{\x08/\xc9rp\xe87\x89\xb5\x0f\x15\t\xf9B\xfa\x19d\xb2^y\xfc\xa0\'\x80K_\x8f\xec\x85/\x00\xa1\xbbV\xf9\xe2J\xd8nR\xc7\x05A\xb5\x0c\xcc\xfe\xe0\xe1\x9c\xf2\x91\xa1\x8c\xd6\xee8;\xe8\x91\xce\xc7\xbf\xe2\xdd\t\x17g="\xd9\x9d\x90\xd0[\x13\xa3\x1a\x98\x8e\xb3\xb8\xeb\xe5;H\xfb.\xf9dP\xf3\x1c`\xc8\xe8< \xefB\x076\xadsL3\xcc\x8d\xcaP\xd1\x18\x7f\xd1d\x1aBX+\x1f:W\x10\xbd\xbd\xc4<\x95\xef\r\x9c.\xdd5^\xaf\x10\xeb\xa8\xfc\xc9\x98\xed\x87Y\x07\xa0\xc52D\xac\xbf\xdf\xaa!Y]\x1d\x05e\xc2\x1a \xbf\xda\x18\x80\xc0"\x96\xb2E\xdf\xe0\xbf\x9a\xba\x05\x10G\xa2*\xdb+\x91\xf3m\x89\x94\x9f^\x98\xc1\x88\xc86\x15\xa0c\x1a\xff?\x03\x98\xe0t\x06\xb1w\xcc\x1b\x9a\xdb-\xc4)qc\x07R7\xe3\xd78=\x12\xf5i\x1a-\xfc \x8bpt;\x92\xect\x8c\xd1\td\xc8a\x96\x90\xdetW6!\x1c\xf7\xbb-\x1b\x83\x12\xe2\x8di\x0e\x9bS \x8d\xac\x0e\x06\x97E\xd4# \xe3\x86\xe9\x9f\\$t\x1e\xc6z\x13cG\'\x97/\xc2\x06\xe1\x15\xd2\x0eF\x06e\xf3+\xd9\xa8b\xd8Y&\xda\xe7\x04\xf2\xf5\xb7\xf5\xc2\xca\xa6#\x07\x94U\x82\xdf\x1aV\xa9\xfa\xcfN\xc7\xe5\x03G\x0e&\xb8:\xab\xc7\xa1\xa4y\xd0\xdf\xa6\xf3{\xd4c\x10\xf5nA\xfe\'\xe6.\xb7\xbc\xd0b\xf7\xc1\xa7`\x9c\x1a\xe8\xdd\x95\x82\xe3\x8b\x9f@\n\xf3\x9d\xa3K\xcb\xd8\x00\xa8\xd7\xe7\xcbO\xb4\xfbvO\xd2\x8f\xa7?\xa6\xd8ly\x02\xfeP)$\xaf\xb8b\tS\x8daP\xbeis\x05\xbc\xa6\xfd*\x10.\xad)\x12lumc\x98\xf1\xac\x87\xae\xf0l\xa5\x85\xcc\x0f\x8f\x8b\xc8\x97\xe3\xb0[\x0f\xad\xff\x02\xbe\xa2\xa6d\xd0{\x00\xbbAB9\xce\x99\x0b\xbcfa_\xf8OT,\x08\xc4\xa0zL\xb0\xdaP\x9b\\\x81\xa1N\xfe.\x89\xe1\x85\xff\xc8\x12\xd6\x06Q>\xc0\x18\x9aSf\xaf\xae,T\xb2(bu\xf9j\x01\x08\x14E\x16\x8fy\x8a\xe6\xcd\xf2+z\x19\xb7H\x15*\xcb\x90\xa3\xb4\xb5l\xe0yD\xe9g<\xffg\xbb\xaf\xf6N\x13\xc0\x14\x11\xf8\x9e\xd3\xfb\xfa\xc53\x0f\xcf\x17`\xff\\\x94\xcdQ\xb9K\x0eKGV\x1d\x80i-l\x80\x1b\x12\xebb\xad\xed28\xb6BH*\xac\xc9\x84\xb1\x05\xeb\x12\xa6H\xb2\xd5?\xc3\x96{o^\x1bSo\xbc\xae\xd3\xb3\xc2\xc5\xeb<\xba9\xc6\x9d\x97\xf3\xd1\x11hE^G\xc6b|Y\xea\xf68\xcb\xa3\xdey\x8b\xadc\xf2\x8bpe\xc6\x0f\x87\x11\xf2\xe2j\tAO\xd4\x1e\x11\x9c\x86\xaa\xa0\x1amKa\x80\x07\xd5\xe9\x07\xc6\x9a"\x1a\xf3),\xfbC\xf6\x9e\xdbf\x9aJ\xa5\x86\xd3\xb2\xd6\xb0\xfa\x98\xddm\x06`\xb1\t\x84\x16\x9b\xf3\xdcD\x9e\x14M\xef\x83S\xe2;%K\xd2\x8b\x13\xc5t4I\xb0\xde\xba4S\xd2\xc9\xd4\x16X\xa3:\x95i\xdc\xf6\xb0\xe2scQ\x04\xb5\xe7\xb4HH\x99\x94\xf9U\xc8\xd4\xf6\xe8\x1e\xce**w-\x16\x91)\xaduD\x82\xb6s\x87\x91;\x01\xe2\xc2W\x19\xf3\xac9\xf6b\xfd\x12dM`S\xd2\x9f\tz\x90\xb1\xcf\xd0\xb4z\x8eL\x8dT\x0f(\x155\x85G\x165(\'\xf7\xc1\xe1j\x87\xdb\xe3~\xb6:0\xcf\xccM\xd2,z\x85\xcdG\xfb\xe3:\xa3{(:\x1c6\x86j\xce\x0b\x9c\r\x87\xef\x18\xa9={h\x8a_`\x7f^EI\x91\x1ew\x18/\xeb|\xc2\x11\x14,\x18E\x8b\xd8\x0e\xdd.\x08\xfa\xbc\xc3\x0f\xee\x8b\xdf\xe5\x1d`\xcdU\x15ML\x0c\xafV\x15\x83\xd1\xe8T\xa4P\x01A\xfe\xf9\xca\x7fV\x1dH\x96<\xe0e\x9f\xd2>\x7f\xc9\xaa\x11\x99i\xdb$\xbf&\xa0\xe2`\x95/@\xec\x80\xd1\xf2\xcd\xc5\xe6\x84\xae\xb9\xbb\x11\xc0\xc5M\xc7n\xfe\x0e\xf6~\xb7:\xd3C\xaaH\x8e\xdf\xc7\xcb\xffE\x9a}\x93\x08LF\xecM\xa4\xcd\x88\x02\x88$\xf9\xecf\xc5b]\xc6\x80`J\xa6\xa0q3\x064J\xc0\xb8\xfb\xbea\x1f\xb5)]\xeahr \xaa\xd6\x0f\xc0\x94Y\x0fJ\xe0\xb6\xa9d{L\x8b\x8e\xfe\xcf\xf7\xaa\xdd]\xc1\x88\xb3u\xb8\xd2#o\xc2{\xf8\xf1\tITZ\xdfJ#R\xfc\xdc{\xf1I>\xce\xcf\x85,W\x00\xad@\xc2\xadG\xbeA\xe5\xd8\xff\xc1N1\xda_k\x1c\x8f\x17#r\x1e\x83P\xf25u\xa1\xc7\x03G5\xda\xcf#\xa8\xf9\xe6\x80!\xbd`\xd1?\x86\xacs\xa3\x036\xa5\x91p\x8b\xc0\x91G\x89#\x1a\x17\xf6\x12\xd5A\xaf\xb8|\xb8\x0e\x1d\t<\x95/\x87\xfe\x13\xf6\xe8(\xcd\xec\xa4\x14\n\xd7q\xff\x95\xbf\x01\x9fF\xb3\xf5\xefm\'0|\x13V\xf9\x80\xac\xc1\xd6\x8a\xa5=\xff\xe9\x0f98\xe3\x12\xcd\x00\x89\x94r\xd2^\x02\x19Ay\xdf\xd7\xf0.MV@\x82\x9d\xae\xf00\xb5\xf7\xca($\x04\xa7\x8b\xd4#Z\xec,0q\x81\xb3\xd5\xabK\xc8\xf0ta\xd1\xbf\xd5\x19\xdfMAw\x04\xed\xad\xa9\x14\x10}C\r\x08\xe4\xa3\x8f\xd1\x1a\xeeU\xaf.nPA|\x84?\xfa\x01:\xc3\xed\xbb\x06\x18\xae\r\xc0\xed>\x8d\r\xbd\xf3h}\xb3\xfe\xe5\xb8\x9d~\x18\x1c\x0e\xca\xd8\x0f\xeaFZI\xb1\xd7l\x04\xf9$_\xed\x02\x84\xc6\xce\xf9ux]\xd9\xd2\xce\x15\xebLK\x98\xf5\xc6c\xf0\xdd\xb5\xa5h\x99r\x95\x84\xfb9*\x03EN\xc4b\xca~\xfd\x95Rc\x0c\xaep\xdb\xcb\xb6\xba\xf3N\xfbi\xae\x17\xd7\xc6%\x0b\xce\xf9\xdc\xeb\xa3SJ\x81\tV0\xe3\xb8N\x12\xee\xd6P%\xd6\xbd\x03\xed<\xdd\x04}/\x1e\xe522\xaf_\x93\x97\x835{\x03\x92\x7fMz\x11p)Q\x062.\xa2\xd1\x1e\x9a\x12\xbc\xec?b7\x87\xf3$N\t}6\\\xf4\xaa_f\x9epl\xfb\xe9\x8e)\xd8r\xc1$\x98\xb0>\xef7\xfeOI\xe5C\x9d\xae.\xf1h\rg\xb7\xa3\xafD\xc5\x0b8\xa3}\xec\xee\xc4=\xee\xa7\x01A\xf1n\x95\xc9\x85\x98\x08\x16P\x18PR\xd3\xce\xdd\xaf\xff#\xe3\x88<\x94\x91\xcd\x82 \xd1wvM@aMJ\x96"I\\\xefc\x8a\xa5\xe3\rT\x0b\x90DF1A\xd6WF\x86\x07\xeb\x9ar\xde\xb0\xbb\xb0\x88\r\x985p}\xe3\xf5E\xf2\x1c\xff@-z=\xdb\x08\xbf\tFQ\x97\xe5\xb4t\x89\xd3\xdaCuX_\x88\xf4\x80\xe1\x1e\xda%([\x95=K\xe5\xd4^8o\x7f\xbf\xa8\xd0\x16j\xad?\x82\xbbx\xd5=\xef*X\x8am\x85\x00;\xf1\xa8{\x0fmfd"\x18{y\xdb\xc4\xe1\x82X\xceV\x89*(\x89%\xe00N\x14\xcc\xb7\'\x93\xe1\xfb\xfd\x012\x18?\x111\xb0\'\xb7G9\xb6\x9f\\\x06\x97w\x8b\x084\xac\x87\xc7S#K|-}[5$\x91(\xaeG[5{\rL\x84N:\x13#\xce\xda>\x1ey\x17Q\xd4\x8a\n\x88\x1a&\xa1ho\xf5\xf1X\xdel\x03+\xd8f0pv+e\xbf~\x1bwN\xa7\x8a\xdc\x92\x14\xfe\xdf\x12\x19\\\x05\xe5\x1b<p}\xd2\xe0\x97w\xdb\x92\xedU\x9b\x8a%k\r\x04\x91\x7f\xffoX%\xbc\'\xcdb\xa6\xdeSQ\xe3&\x81<\xd3\xb8%\xcd\x90\x01\x15\xfc\x94\xce*\xd9g\xd7w%\xa5\x9b\x8c\x88\xce\xa9\xb9g\x83r\xd7\\\x03\xf3+L8\xe7\xe9GZ\xc3\x85\n\xc5\x84\xe9\xcf\xca\xa7\xba\x07\x0b\'3f\xa5\xb4[B\x14\xdf\xad\x93\x95\x02Q\xe1M1fp\xdc8\xd7\x92a>\xd7\xe3=5\xf2\x0c\xc6\x1f\xf5\xed\xbar\x08\xaf\xdf\x92$\xa2U\x0c\xad.\xe1\x01\xb5\xca\x03\xe9[\xfc\xf5\x9f3\x8c/\xa7\xcd\xbf\x01\t\xe6\xb4__\xec\xf1[\x929\x1a\x0b\xf5\xab\xfdn~\xe8\xc1\x81\xbf\xe1\x1f\xb4b\xee\x89\x11C\x9d\x98\xe7\xde\x08\x14\x086a6\xc8K@\x93\x07\xe1)\x89\xd5\x81\x85\x9e\x9c\x84XqT\xe2l4\x98\xf1z\x99\xea\xf2)\xac\x8fN\xcf\x197\x84[\xb4t\x86x\x8b\xe5f\x86\xb3\xaf\x04\xd6{p\xdc\xc2\x12f\xabu\xec\xed\xc2\xc3\x1eUsU+\x83\x01\xa1}}c\xfc\x82\xa5\x0f\x99\x01\xb7\xdb\x0f\xf10\xb3\xa2v\x0f\x8aG,n\xa1\xc9z\x98j\xf2\x9aj=\xc2\xd1_K\xd5\xef3\x9c\x88,p\xc8\xeb\x99\xf7x\t.\xbd\xe6P$\xd2\xf1\xf6\'\x04\xd1\xa6\xc6\xb5\xe6\x91P\xab\xfb"SJ{\x03\x81q\xa1\'~\xa2t\tI\xde\x03\x80I+\xbd\n/\xde`G\xbc\xa27\xf2,\x83\xa5\xd4\xde}\x0e\xb1\x16\xed$e\xaf\x15\x8c\xa0\x86\xcc6Y\xb7N\x96?\x1a\xf2\xc1\xa7N\x91\x9fC\xce\xfe%\xc5>\xa0B\xf0\xf3\n\xb2b\x11\x02h\x1c\xb8\xdf\xa5n\x133\xdb3\xda\xdcD\xebg*Ap\xb5_Z\xd9\x99x{~\x1f\x0f\xcf4@\xa9\xb2@\x1c\xcc\x91\xd4\xcf\x87\xbf\xf7\x00\x02\xe9\xa9\xc7\x0f-E\xb7\xab\xf6\x9ao\xc8\x8bY\xb2\xe8NC0\xef\x01Q,\xd8\x03H\x02>\x89\xe3E\x17x\x8a\t\xb5\x1f4N>B\x83i5\xde]\xc4\xd3\xee5s\xd3\xfa\x84\x92\xb4\x83\x91\\\xc8&G\xacu{\xe2\xe6\tr\x9e\x80Qa\xec\xc1\xcd\xbe\xc8\x88Um\x15\x92vQ\x1e\x82/\xe6n\x12\xc0^\xd8\xc1\x18\x80\xf3b\x10_\xc8\xf3\xda\xcd%\xf6\xf9\xf0\x86\x1aZ\x18*<S\x96h)\x89)\xa1\xa8\xecuY Q\x9e=67\xb9\xf2h\t\xd3\xfa\x80\xb5\xd0\xdf\xd6U\xb5\x7f/\xaf\xc8\x02o:\xcb\xca\xd28+\x11Qz\x19\xea\xf0|Qy\x07Iq)\xb4T>=\x00\xb8%_\x1e\x8fS\xd7K\x97\x08B\xa9\x94B\x9a\xc6\xd0Cs\xbf\x06\xf7\x89\xf0\x96\x03\x0e&\xa4\xd7$b\x0fy\xe2\xd9\xe36\xdb?ct\xda\xc2HZ\xe3\xb0\x8e\xefw\xbe&\xc5\xba\xa5C\x9a\xe7\x07\xda\xa9\xdc\x18\x9d\xcf\xb5Y[Sk@j\xee\xf2\x8d\x98\x9eo=]4\xed\x151\xf0\xb7<z\x85`\xf4:\xaf\xd7\x99\xd1#l\x7f\xd5\x8c:\xf7\xf7\xcc\rr\x82\xae\x93\xb0\x8bb^\xbb*\xf0\xeb!$\x92?\x88&\xaf*y\x1bK\xfe\x88\xe7\xd2\x9f\xaf\xa9\x0f\xa8\xb5\x14R\xd0}\x0e\xdf>#\x82\x11)\xa3\xd3\x7f~\x06\x16Z\xb8&\xf6\x7f\xcc\xa2di\xfe\xbe\xb8]\xfd\xf6s|\xf5\xb9"H\xd7\x85\tQ&<\xb3y\x02\x01\xa1\x82|Pex\xb9|Ac3\'\xb0\t\x9e/\xa2\xa86\r\'I\x1c\xec\xc3\xd7\xca\xbf\xc3O,\x03<.\x07\xd4|\x96\xd4\xca\xbb\xec\xe8\xa9\x91#\x1d\xcd\x10a-`\xe1\xd2[e\xd1:B\xef\xfe\xf1st\x12\xd4\xca\xe3\xf8J?\xb0p\xf0\xf4i\xa7\xf7.\xde\x0f.O\x83y$\xbd(\xe6\xd9\xa6\x178\x962\x13\x9dC\x1dgT\xb7\x84\x0e\xfck\xb4\xc7\xbf\x8e"&\xf5d\x0f99D\x02\xb8\xa6\xa7/3\x13\x16\x0c6S,\xae\xb6\xb3W\x92\x00v\x00\xfe!?\xab\xb2g\xd1\x98:\xf3n\xe0\xd2\x9e\x04G\xa3sc@s\xaeou\xa5\x0cQ\xc7\xb0nOCF\x13\xa0\xc4m\xd1\xcbZ\xca3?\x95\xec\x19\x0c\x06\\]\x9dh?\x9f\x82"\xd0E\x8fD\xd1\xa8\xcc\xac\xca\xb2A\x07\xf5\x0c \xd2YZ=0H\xc8\xc0\xa7c\xa0\xdb\xec\x10\x82r\xec\x82\xa4(\xc6\x88!\xf0y\x93\x9d\xdc\xa5\x0c\xa7\x8eY\xffU3\xdeCt\xc5\x167\x1a\x1f\x13\x0f\xdb\xce\xac\x7f:\x1d[}\xe9\x0e\xd7:5\x94\xe8\x9f\x16I \xb1\xedDT\xe6\xd0\x8ef\x84\x93)\x1d\xaf\xd4t\xb1\xdf\x7f3Y\xa4$\x7f\xdb\x07k-\x8e')
4
- #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
1
+ from flask_admin.contrib import sqla
2
+ from hiddifypanel.panel.database import db
3
+ import datetime
4
+ from hiddifypanel.models import *
5
+ from flask import Markup,g
6
+ from wtforms.validators import Regexp,ValidationError
7
+ import re,uuid
8
+ from hiddifypanel import xray_api
9
+
10
+ # from gettext import gettext as _
11
+ from flask_babelex import gettext as __
12
+ from flask_babelex import lazy_gettext as _
13
+ from hiddifypanel.panel import hiddify
14
+ from hiddifypanel.panel.hiddify import flash
15
+ from wtforms.fields import StringField,IntegerField
16
+ from flask_bootstrap import SwitchField
17
+ from wtforms import TextAreaField
18
+ from wtforms.widgets import TextArea
19
+ from flask_admin.contrib.sqla import ModelView
20
+
21
+
22
+ class DaysLeftField(IntegerField):
23
+ def process_data(self, value):
24
+ if value is not None:
25
+ days_left = (value - datetime.date.today()).days
26
+ self.data = days_left
27
+ else:
28
+ self.data = None
29
+
30
+ def process_formdata(self, valuelist):
31
+ if valuelist and valuelist[0]:
32
+ days_left = valuelist[0]
33
+ new_date_value = datetime.date.today() + datetime.timedelta(days=int(days_left))
34
+ self.data = new_date_value
35
+ else:
36
+ self.data = None
37
+
38
+ class LastResetField(IntegerField):
39
+ def process_data(self, value):
40
+ if value is not None:
41
+ days_left = (datetime.date.today()-value).days
42
+ self.data = days_left
43
+ else:
44
+ self.data = None
45
+
46
+ def process_formdata(self, valuelist):
47
+ if valuelist and valuelist[0]:
48
+ days_left = valuelist[0]
49
+ new_date_value = datetime.date.today() - datetime.timedelta(days=int(days_left))
50
+ self.data = new_date_value
51
+ else:
52
+ self.data = None
53
+
54
+
55
+ class CKTextAreaWidget(TextArea):
56
+ def __call__(self, field, **kwargs):
57
+ if kwargs.get('class'):
58
+ kwargs['class'] += ' ckeditor'
59
+ else:
60
+ kwargs.setdefault('class', 'ckeditor')
61
+ return super(CKTextAreaWidget, self).__call__(field, **kwargs)
62
+
63
+ class CKTextAreaField(TextAreaField):
64
+ widget = CKTextAreaWidget()
65
+
66
+ class MessageAdmin(ModelView):
67
+ extra_js = ['//cdn.ckeditor.com/4.6.0/standard/ckeditor.js']
68
+
69
+ form_overrides = {
70
+ 'body': CKTextAreaField
71
+ }#واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
72
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,20 @@
1
- # 2023-04-08T15:11:11.893220
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xc7\x04\x00\x00\x12\t\x04\x00S\xadq\xcd\xb2\xd3\xab\x91\x07\x88]\xdfg\xe9\xa3\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x7f\xea\x0c\x08\xb62>\xd3x|\x9c\x94\xab\x13\xd1\x8b\xd9-\x9a\x7f\x1bS\xef\xd5\xaa\xd3E\r\x8bub\x81\x0f\xaci`\xf8]\x95\xff\xeaKgK\xe0K\x04\xc0\xe6\xc8"\x84R\x1c^\x1d3\xab\xee\xfe\x1dA\x18\x170^\xc2\x95\xa6\xe1\xc77\xd4\x95\xcaL\xfd\x10\x82\xb2\xd6\xd1\xf2T[\xa9\xe3\x08\x9ag9<1#\n\x19\xc7V4I\r\xa5k9\xffpr\xb7\x07\xf1\x96/\x1d\xfdN\x92\x83\x13W\x12]2\xa2\xc5\t"\x04\xd8`\xc4I\xe2\xc6\xa9\xde_\x80\xc2\xc4\xbc\xab\xdel\xf8\xc6)\x83\x8b\x96t\xd5d\xf1Xn\xfa\xd0W9\xe4.\xda\xca\xc3\xef\xbf\x9f\x87\x1c\xf1X\tg%\x87n\x90`eI\x18h\xce\x07eN\xb5[n0\xe5\xf7\x9bj\xdbI\xd8\xcd^\x80\xc9~\xbf\xc1Ob\x90\xe8_?,n\xc9\xd0<\xb5\x9b\xc1\x15\xd9L\xd1\xaa\x01\xae\xb7\x99F\xfeA\x01\xe5\xc7\xd3\x05R\x99qWG\xc0s\xfaJ\xc3\x1e\x90)P\xb7\xb6\x13\x16\x87s\xca\xdf"\x90\xe6"\x8e\xd1\xeca\x1d7o\xb9\xd8ql\xd9\'p\x8e\x90\xfc\xb4\xe4\xc9\xb5\xb6\xd3\xa8\xf4\x03\x9e\xb1}\xa2\xceC\x80\xbb\xfft\x96\\\xa8\x08\xe35\xef.)u\xe9\xab\xb0\x15\x1ait\x7f`~\xbc.\x123P\xd9\xf4+\tw\xe7\x97#\n\xf1\xddc;\x08\x16zZ\xc1~(T\x10\xed\x15\xdc\xd5M\x98o)\x01e\x9f\xf1k\xfa\xb3\x83;\x9cU\xe3\x89\x9d\t\xe5\xbf&\xafo)\x8c\x1b{bt\xe7]\xa5\xf4_\n\xe8\xb3r\xdd\x16v\x89\xbb\xc2}- \xf3\x19t\xba\x03\x8b\xe8\x94\xba\x0c\xad\xd5\x10\x9f\xfa\xeen\xd3\no\xcd;;\xfb}\xe4J8\xa1\xa1N\'\x8f\x07\xef\xc76\xa9\x87\x1f\xdbe$\x90\xce\x93\xfd\xba\x1d\x1e\x87\xac\xec\xa4\xbc\xad\xa3\xa2\xe3\xd3l\xd0)\xec\xac\xf2\xbe\xa5\xd8+TA\x9f\xc5\x8d+/\x05\xb7}\xeb\xcd\x96h\r6\r\xe4\xe8E\xc2\x92\x89\x98\xeb&j\xd4R\xbe\x01|\xdb\xbe\xcf\x17\x08\xc2\t\xf9\x8aBb\xadWu\x97PJ0\x1d\xe25KN7\xae\x1dUr@[uc\xaf\t\xe7\xc2\x9b/\x9b\xe7%\xb1\x9aQ\xbaL\x16\xe0\xb3\x96\xaew\xdd\x0f\xee/\x1b=\x18\xe8\x8d\xf0\xd6\x0c~\x92b}\\\xcc\xec\x99\xfd\x07\xdfj!\x84 \t\x87\xf7\xe3\xe9P\x1f\x9e\xb6\xf9\x02\x03\x8b\x88\xdf\xdb\x1c\xe0\x1d*\x8eJ\xe2dl\xed(\xd0\xab\xb5?l\x0e\xe5)E/\x1e\x8b.O\xdaR\xb1\xe8\x1f\x94_j\t\x8c.\xd5b\xf7\x9b\x83\x99u\xf5\x0f\xc5\'h\xcf\x8aE\x19\xb2\xa7\x9a\xffRsA\x97\xfe\xb4`\x91\x8e\x03\x88\x19"\xcc\nI\xd0\n\x92\xa9\x81<\xf0C\xf7\xf6\xd05\xd4P\xc7}\xd6\x9c\x7f\x81\xd0\xcc\x146\x83Lp\xb8X\xd4\xa4\xfd\x0e91>\xe8(\xe6\x90\xb7\xa0~\x98\xa0j\xc9+#dBC<D\xdasC\xac!c\xba\x12\xc3=\xf9\xe1/\x87zA\xd96\xbbRx\x16h\x97.\x98\x80\x96\xd3DSM\x9f\x98\xe4\xc7\xfd\xef%\xa1\xf8\xda\x17\xcd\xd7\x1b\xba\x08\xe5M\xcf$HXq\x8e\x19v\x01r\x94v\xe0\xfb\xc9\xa7\xfd;\xb2x\xc3\xbc\xcf&\xa3\xc3\x01\xe5\x08\xea\x0b\xb9\xca\xec,g\xbf\xd0IX\xda\xcf)\x17\x9a\x9b\xbc\xccV\xefp]\x9f%_p\x97\'\x129\x86\xe0\x7f\xa8\xd9\x9c\x86f\xbc\x16\xe2\xbcm\x03\xa5"\xbf\x8b\xf8\x10\xe4\xd5\xb7\xde\x06X\xe6+|\xf4<\x7f\x08\xea\xd8t\x89sO\x85\xe1P\xa0\xe8\x93\x83i\n\x14\x15:\xaci3\x8dX\xb9X\x8a\xa0\xf2\xdcc1hI\xd2\x08\x0b\x05\x8e\xa3\xcewknr\x8aF1\xea\xcf\x87\xb1\x94b\x1a\xdeLM\xb9\xed\xaf\x82\x89ZhB\x19\xb8\x80\\\xc4\x1c\xcd\x93\x9c\xa08\xe3\xfe\xa7\xe1\xfd\xc8\xe1)$\xea_\xd8\x8d\x150\x08I\xc8\x8a\xaf\x8a~\xf2~oYB\x02t\xc0\x1b\nh$\xe8\xcbM&\xec\xfb\xc3\xaa_\x07\x81.\x0f[B\xd4i?\xf5J\r`X~\x8f+\xb4}\x1fq\x162\x16~\x0e4b\xca\xe1\xd3\xbcX\xe3^6\x84\xec:\xeb\x16?I\x8e=P\x0e\x05\x08\x97<\xa4\x1d\x95\xf3\xef0\x12\xd6\xbe\xf7\xf7\x16fk\xa2gcs\x99\xb9t\xf7\xb4\nw\x96\n\x13~\x1b\xf7\xdd\xcfYb\xac\x0e\xb4\xb7ht\xdd\xf6 ,2h\x81\xd6\x9f\xc8T\x08K\xe3v\xcc{h\xa9\xa4\xccG\xcd__L\x8d\x950*\x94\xfd\xfep\xd1\xdb\xcdG9\xa7\xe0\xa3L\xc1\xde\xb8\x8b\x1d\x1c\xab\xa6L\x06o\xfa]\xfcu\xfeV\x91\xa0\xe4\x18\xcf\xbcm\xf2\x0c&\x96\x9fx\x109J(\xd6\xde\xaei\x90\xe7\x0b\x86\x1b\xa6\xd07\x0b!^\x83\x1b(\xf3\xc7\xb7\x9eC`3b\xbb\x1fp\xaa;A\x0e\x82H\x80\x7f\x14}i\xbf\xfc\xf8\xcf\x94#\xe3[f\xab\x9f\x06m\xd1\x17\x07\xf2\xeb\xf6\xef\xf6\xec\xc0\xc2\xd04\'\xce\xd81\xcdK')
1
+ from flask_sqlalchemy import SQLAlchemy
2
+ from sqlalchemy_utils import UUIDType
3
+
4
+
5
+ db = SQLAlchemy()
6
+ db.UUID=UUIDType
7
+
8
+ def init_app(app):
9
+ app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
10
+ db.init_app(app)
11
+
12
+ # db.create_all(app)
13
+ # app.jinja_env.globals['get_locale'] = get_locale
14
+
15
+
16
+
17
+
18
+
4
19
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
20
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,72 @@
1
- # 2023-04-08T15:11:11.875910
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x8f\x16\x00\x00\x12\t\x04\x00\n5Y\xee\xf184\xc2-\xf8{\x90`\xf7\xb7u\x00\x00\x00\x00\x00\x00\x00\x00d\x02\xda\xd3O!\xfa\xc8;o\xb6\x81J\xeex\xd0\xf9A\xab\x02\x8b\xa0\x91\xbdr\xc0\xd5t\x90u\xc4G?]\x16\xbc\xe3\x9b\xc3mM\xe2\xb7\xa1{n\x11\xe2\x86R\x1f\xb1\x997ts\xae\n\xb8\xf3w\xb9;\xdf\x10\x12]@\x9d\x1c|}\x14!\xdc\xb0d\x96>#\xbb#\xde\x19=\x80\xed\xe2\xce@*g\x83\xae\xdb5\x8d\xe7\xe0\x98\xcee\xc2\xe8(\xda\x01\xbf\xd6j\xbd;\xeb\xf3!\x81\xcbk\xf3^\x19\xa8\x103K\x82%\xb9\xecV\x0cs]\xb3\xb4B\x10\x18\x82\xf9\x1a\xb9\x8aV\xb8\xaa\xd4\xa2Z\xa5\xa96\x9c\xd0TY\xcf\x8c,\xf0\xa4Y\x90(<\xd1\xbf;Q!l\xb5\xf3\xf0=c\x1c\xe2m\xc1\xe54\x9b\x89\xddi\x7f\xbe\xa1\x8b\x920v\xd1\x85m{ R\xb2\xdab\xf6\xe4%\xe1\xdb.T%\xb3\xa9\x1b\xdaG\x0e\x05\xa4\x9b\xf8\n\x01M\x9a\xa8\xfa\xf9`R0\xf5\xcf\xfe_\x0cc\xaa\x88\x89\xc4\xdf\xee\x1bz\xd2\xc3p@\x7f\x9b\x182\x7f\x87e\x87m\xeb\xb7h\x8e\xfd\x0f\x1e\x8b\xf1n{\xf72\x1b\xfa\x04\xb8\x06T\xca\xa2\x94\xef\x08X\t\x1d\xe8\xe6\x89\xf9\xb6\xd6w\xc9\xabY.W\x05F\xb5\xdf\x1d\x9b#\x9b\xbdr\xb5:\xe4\x9foq4\x9e\xdf\x1b\x04P\x13\xd7%=R\xe0\r\x94V\x01sU\xcf \xc3\xd2\xbd\xff\xac\x05\x96\xb1\xa8\x05X>Z\xc4y\x08\xd9D\x7f\xfe7\xe1\x93e\xb0\xb2\xe1\x9d\xf3\xd3B\x83\xe1\x08\xd8P\xf5\xb9\xf0zN\x08\xb1")\x95km\xba\x1df\xd9b\x1f\xc1EC\xf3\xfb\xbej\\\x97\x13\x8d_!\xd0\xdd\x13\x9d\x80C\xde\xcb\x1d\xc8\xa8>`\xa0H\x0c\x9bS]\x12\x0e\x88\xde\xde\xb5R\xea\x97\xd4\x94)\xf0;\x95\xdeZ\x83l\xbe\x9d\x99Wk\x0f\x0c7\xbd,\xe2*\x12$w\xe3p/z\x07rBq\xbc\xe8\xe0u-\xc5E\x84hn\xcf25\xd3%$\x13\x88,\x15W"s\xbe\xb7>c\x95Y\xe8b\x95Ki\xb5\xd4\xf7\xccl<N\xcak\x91\x1a\x13o:\xa1\xa2\x14Q\xb2nk\x86y\x7f\xbd\xc9\xda\xab\xc8\xca\xe0\x08Q\x15\xac\x03\'\xd6\xc7T\x94]\xab\'\xda\xa9E\n\x85H\xc8&\xe3\t\xa7\xd8\x0f:\x7fk\xae\x00E\x84C^\xfe`\x98Bn\x17\x13\x8dhXe\xfaJ\t\x11Ej\xbc\xb5YZ\xa3-Q\x88sp35\xcd1}\xfc$b\xb8\xeej\xb6p\xad\xf8\xc1\x12E\xcb\xbe\x8d\xfeBd7\xb5U\xde\xfd\x17\xd7q]\xb0U\xb9r\xeb\xf0\xdb\x92\xa9\x9b\xbf\x1d\xc0Z\x06Z<Q\x9cL\xd6\xc6\x8dI\tO\x8f0\xa6\x7f\x9b\xf7\x9e\x14N\xe8\xa2\xe8r\x19\xdf\xa3;\x86m\xe3\x1a\x9e\x14\x9a[\x16\xb3\x7f\xe7\xe2V\x89\x90\x10_\xeb\xa5\xcbd\xe81\xdbotH\x01\xa2\x1d}\x1d\x0b\xd1\xe2\xb0\x91\x94Cj\x83\xffPW(\xe4\xe4-\xdb\xda\xb3\xdcR\x83\x0cM\xae\x8f\xf5\xbbW\x0e\xa0\xdc\xab\x85\x0f\xc5\xd0U\x7f\x97\xe5\xd8\x1b\x8e\xa4Ts\xea\xa0\x96G`O\x14\xefS<o\xfd\xb0M\xc1d\xf1\x8dFj\xc4+\x11K\x8f2\xe2>D\xd1\x15\x1e\x0fn\xf4h\xb9\xfd\x1c\x89\xfd\xa6\xae\xc9\xc7g\x15\xc1f\x9a\x88\x07\x16{N\x9f\xc2\x8d4\x9e\xbbDZT\xfaAK\x8bvTXo\x04\xaf\xe4%w\xbf&b\x13\xf2\xd1<\xcdX\\\x01g\xe0\xe6\xdc\xd89Z\x8e\x8c@d\xad\xc9\x1d\x10H\xcc\x16e9\xd2}\xac\xdf\x14\xea\xf7\x9e\x9eE\x86\x81\x99L?T\xa9\xc3\xea\x82\xfdI\xd1$\xe1w\xf3\x13\xc3\x98\x027\xea\x0f\xe0\x9d\x8fM0\x0fg\xd9\x88\xeb\xf1\xf6Q\xd4\xe2\x1c\x8b\xd66\xd3\x1aJ\x82\xc6G\xe3m\xa9C\x87w\xa0\x8cj7Ai!\x9e:\xf8T~\x97(\x93\xeb\xf0\x07\x92VQ6\xf0\xf1L\xc2I\xc2\x02"\xdfWk\x9bH\x04\x12R\x91\x93\xcd\xb2\xd9E\x06\xffr\xd30\x80R\xf8\xf7\xe2_l\x1ashU\x05\xcf6\xed`\'\xd8\xd4}\xd1*\x0e\t\xe2\xbc3<\xb0\x80\x90\xff\x9e\xc9\xf6\xc1T\x11{\xf3\x1a\xf4\x01\xdd2W\xfb,\xe3\x05\xba\x96\x85q\xc1\xc7\xb1\x19\x87\xf82\x97`\xe4\x0fg\xd2\xa7\x01\xb1\xdarX\xb8\x06\x9d\xab\xf6\xbb+\xf3\xb7\x9b2\xc8\x01\xcaoa\xab\xb1\x16\xaf\xe5\xfaC\x82+\xe8Q5r\xa1"`\xc2\x10\xae\xc7S\x8c\x8c\xae\x12>\xb9\x00\xaa\x0b\x93-r,\xc2u\xe2\xdd\to\xfa\x90I\x9a\x02:\x08p\xa2\x93\x06\x08\xfc\x96\xe9\x1d/\x9d<\xbd\xb5i\xf8by\x96r\xd0\xef*F\xea\xa6\xec\xd7\xb43\xaa<8\x1b\xa3\x98wB4A\xa5\x82vpi\xbd\x93\xaa\xf4&\xc7\x01m\xa8b\x0b\x9b\x01\x8b\xbe\x198\xed\x01\xf5\x18V\x80\xc9\xe6\xb7(\xcf"f\xffx\xbcW\xb4\r[\x83\xb0*\xf7\xff\x9d\xf9V\x9a\xd0\x88\xa8\x0c\x85\xaf\x11J\x17\xec\x8f\x19q\x94\x9e\xb6\xcd\x02\x1eX\xb9\xbd\xf2\xed\x8a\xed@;L/\xbc\xe3;cHo\x11\xca\xbd\xb4=\xf8u\xccQ}\r\x8c\xf1\xb4}&!)\xd5\xd3<\x1e\xe9\xa1\xa8\xa5\xdd\x8f\xe2\x1c\xbc\x1aIz\xc1\xdc6Q\xf2\x14\xc4\x93\xefv\xa9\xed\x81zx;\x17\x94W\xd0\xdf\x12\x8d\x0cLX.\x01\x8c{\xf3\r\xbcrR\xe2\xff\xe2\x9b\xe0\x83\x8c\xae\xdaI\xe9~\x1b\xf7e\n\xd2 \xddq:\x9deQRQ\xc7\xa2\x18x\xc4\x88\xa3\x93\xf7\xd2t^;\xbd\xad\xb9\xfc\x95\x14\xcc<\x8e\xcbD\xd1\xff+\x0e\x9f\x8e3zj\xaeeJK\x1eM\xdacS\xee\xa25b\xcbq\x96K\x00\x97\xb0\xef\xa8\xcad*\xb6lx\x0f\xc3C9X\x85\x9a\xbah)_\xa9z\x1d\x0e&\xe5\xff:\x83G\x96W~.\xc9\xfc\xbdb\'M,A\xf9NW\xd6W\xc0\xbf\x1c\x0c"\x15?\xb9N{\x89+\xb5l\xe3\xfb\x12o\xfba6\x91\x13\xc4\\\xf3?\xe6\xfc\xf1\x03\xf0#\x0ej\x9e\xb5\x03g\xbae\xd9!\xcb\xc5-\n\xb2\xfc\x1e_\x8d!\xc5E\x11i\xcd\x93[\xf3R\xe7\r\x06\xc1zf\x86\xe2H\x11%\x1c\xac\x8e\xee\xee9Cm\xda=\xb2#S_8\x07\x96[pKz)\x99\xff\xff\x83\xf6\xe1A?\x8az*\x06\xd5\xc4\x05B\xe4\x01O\xef.Z\x0e\x02\x19.d\xde\xd9f\x9d\xfdBk\x1fC\xa0\xfa&\xcb\x86\xc7\x82\x00\xdfD7\x80X\xc3^\x86M\x88\xa7\xda]\xd8\x8b\x97\xee.ou\xdf\xad\xae\n8\xab\x0bs)\x1a\x176.\xbc\xe8}\x15\xccH.\xb9S\x86\x8e\xb3\x05:Y\xb2\xf9\xdbi\xe1\x9d\x0f2\xa2K\xf4\xe8\x06+~\xbe\xab7\x0c\xdcn({-\x0e\xd3\x81\xd4]\x85\xc3r\xebPAN\x85\x085n\xf6r\xc9\x9e\x88N\xe7\xa9\xd6@,T\xfd\x91\xcf8\x99\x9bX\x8b\x0f\x0fY\x0f\xf8\x8e\xb7\x00\x12\x99\x17\xfc\xc3\x90aZ\xe4\xde?\xe7\xd0<;H\xe6\xa1([U-,_\\\x8b"\x96\xc2\xa0S\xa6\xbb\xa3\xe9\xc6$\xcb\xb6\xe5\xcdT\xe4Fw$\x94\xd4n\x7fn\x02\xba\xe9\xbd\x04h\xfa\x01\xe4/"\x03!\xe1\xdc?n\xa4+>\xb1\xf7\x90\xe7\xf0\x844\xa4\xc7e\x96p \x03\xa4,l\x0c\x15/\x9c[(\xe0\x85Oa?\x928Gk\xc4\x84\xbd?l\xc9\x99\xcd\x1e\x90M\xeba\xf6\x82\xcd6\xc2sH\x84S\xa7\x8dv\x0b\xc0<UBJ$\xea\xce\xf8%\xc8\x89\xaa\x0fa\x88\x0e\xaf\xef\xd6g\xce\x1fy\xed\x86{;\x98W8\xa8\xc8\xae\x9bgUZ\xc7\xc6Q\xe8>\x9c*\xf3\x10\xf9\xa3\x9e\xbb\xfb\x00z3\xe7f\x97\x15\x83\xa4s.\xf7\xcbM\xb6\xfet\xcc\xfd\xb8\xff\xb8\x9c\x10\x01\xfd\x0b\x1e~h\x07\xdc\x88\xdd\r?\xeb\xa1\xa8&\xdb\x82a\xf57\x80\x1c\xd8\xf5\x11\xa2\x1d\x8b\xb6\xbc?\'\xad@\x979\xb1\x92\'\xe2\xa0+\\\xfc\x80"+}9\xdb\x0c\x15c\xa0\xdai\x1f\x94k\xf5\x19\x95\xdc\x06\xfb\x98A\xb4\x03\x1fy\x0f\x18=\x88\x01p\x9d\xe3\x1fj\xf3\xd2\xcd>\xe9\xc0\xf0~|+\xfb\xf8\xab\x8ef\x93\xdeu\x02\x9di[\xab\xbc\x0b\xfe\xc4a\x8b\xf5\x8a\xf3x\xa3/c\xb3\xfa+\x7feZ\x06\xdd\xef3+\xa1\x85t\x16\xe5\xe9\xe6y\xc6\xe1r=\x9dH\x16\xd3\x14\x15\xaea\xd6\xa9\x1em\xd9\xf6\xf6\xce\xa6RH\xa4\xa6F\xfd<[\xb9\xbd\xafQ\xeaY3j\x1ax\xd5\xaaFW\xc3\xe0\xf1\xf4\x00|\xb9\xe0!\xfa\xe7\x1f\xd3\x08\x92\xc2p\x80\x81\x1c^\xfc\x7fQ\xe2\x98t\x06\x82\x93\xd2\x9c\xafQ\x83 \x8e\\r,(3\xc0\xd41\x08\x93\x12\xfb\x1b\x9b\xdbz]\x0c\xf8\xdb\xed\xfa{\xcd\xdc#\x8b\xa3|\x8eZQ\xe7\x8bRy\xca|8\x07B\x01\xe6z\xdfg\x08\xf2dz\xdf\xa3\xea|\xa4\x13)\xa6\xeb\x02;;\x12\x06N\xba\xb1]\xb6\xea\x96\x967\xde\xdb\x19\xac\\g\xd6\x8b\x8e]\xae\x14\x81\x08\xd3\x0e\x947Z\xc2H\xee\xa0\x19\xf2\x97\xd6\x16\x92x\x0c\xaa\xfb?\xd4\xec\x07E\xdfO%_\x94\x8dt\n\x93\x04\xac\xf63s-\xd4\x15\xb1\x93\x90+}F\xfc\x97/\xbf\xa0sOy\x1f7b\x07\xda\x0cF\xb7+\xf5V\xd2+9\'\x80XXF\xces-5\xee,=X\x9eh\x89KW\xdc<\xe0+x[\xd4\xa03\x0bw\x19Y\xc9\xc8\x1b\x01\xf4\xdb\x9b\x1f\xc1\x07\\\x99^\x1d\x9f\xc6\xf7\xb4\x13\x92/;\x9c\xd5R\xed\xf8/(g\xa7\xa6\xeee\xf0\xfcw\xcf\x10\xee\xc1\x99\xd6,{\x17\t\xcb\x88\xe3b\xd7\x85\xad\x9c\x18A\x93I\xdb%\xe5"od\xaf\x0e\x1f\x817\xb5\xb5\xf5\xcd@c\x06C\x18\xf8\x82*\x08\x17X\xecu\x03y\r\x11+9<f!m\x8e<\xcd\x97\xe6q\xec\xbe\xcbX\x86\x84\xff\x9bQ*4\xe4\xe8\xaf\xa4\xda\xdf\xb5\x15\t\xa5,\x1ew\xdb\xc2\xd6\x12\xd5\xe8\xf6\xda\xf0=\x8e\x8f\x843\xc5\xbe\x02\xca\x15\x8dU\xc99|ZLw\x03\x92\xc1\xb4W\xfc\xc7\x1aG&\xdb\xce\xc4\x15\xab\xb1\xc07\xc8\x8e\x84\x12\xe6\x1c\x8d\xa1[\n\xa0$\x07\x12f\xa2\xb0\xdb\xf65o\xd2z\xfa\xee\x8a)\xa4\xa2\x8b_\xbc\xeb\xad\xf6\x1a#?\x9c\xa8\x9c\xed#\xb3-\xa5_!\xc5\r|Kv\xe7\xe5\xd3\xc6\x8f|\x97\xdcPs_F\xf2\x86P8\x8c\n\xf1\x0cevwR\xbb\xe9\x94\xe3\x9fA\xe2m\xc84\xb1\x83\xe3{\xcf\x07s!\xae\xd0\xc7\xed\xf6\x81Ea\x17^\xd2\x83st\xd9\x1e\x8f\xec\xffKR\x99/\xbc>\xde\xdd\xd2$z\x1c\xc2\x988\x1bd\\\xb6CS\x8d\xaf\xa4\xc1\xcc(=>\xdf\xf2\xadn\xccM\r^\x18\x88}\x8c\x90m=n\xb1\xe6\xf4\x17A\x02\xac\xd1h\xe6.\xa9\xe5L\x1b$\tdanXP\xb5CN\xbd\x1e\xaeb\x07\xb6\x186\x99^(\x8e\xbfC\x05\x86}O\x9a\xef\xfeRE\x81\xe5\xfa\xc9\xf77XC\x11,\x1f<\x93m\xe2\x86\rF\xad\xf44\x86w\xb4\xd5l\xbb\x8a\x99l\x8c\xe1\xfe\x9d8V\r\x91\xe0f\xa6\xc6\x7f\x086\x15vB\xd9\x8f)}\xe7\x1e\xd0\x0c[w\x19c\xab\x97\xa4\xdd<g\x9e\xf3\xc90\xa3\x86t\x1b\xf6J\xbf\xdf\x87\x06\x16\xa8$\xdb.W\x06\x042\x94\x98\xde9\xb2-\xde\xddxU\xc3\xdaz>\xbe\xbf\xb2\xd7x^\x15\x1f\x8b33H\xb7\x82K\xf3\x8fD\x9d\x17S\xfeE\x8d\xbb\x1b\x8e\x0e\x189\x17/y^}:\xba(\xb0\xc4\xc6*\x07\xe4\x8e!5\x94\tL\xf6\xc8\xbbd\x8as\x88o\xaepd\xb5\xce?\x0fY\xa2=\x93q\x89\xc1V\x84\xfd)\xdf\rn\xe5\xc5#\xa0-o\t\x80\x87\xaf;m`\x84\xa1\xfe\xad\x95R/\x0c\x8d,\xb4\xc8\xd09\\\xa4(8\xe8\xbe\x01\n\xbc\x1993\xee\rM\x7f\xbe\xe0\xd0x\x075\n\xdc\x19\xa4\xf2\xf3f\x8d\x832\x96v\xeb\xff\x16\xf6\xa1\xd4S5\xd5\x19\x05Z\xcf9\x84\xb6M!\xf6u\x9cM\x88\x82\xe8-\xfb;\xb6\x16\xf4Z.4\xc2]\xff\x01\th\x05\xd0\x85\xcc\x84\x9c\xd44f`l#\x929+R\x7f\xee\xb0\xfb\x1dH\'9\xc0\xdd\x0b\xd7\x8f\x90\xed\xc3\x13v\x1a\xb6m|\x9ew\xd0"!\x89\xd2\x93\xbe\x91\x1c\n\xea\x83v\xfb<\xed\xc7.\xae\xd7\x93r\xac\xec\xf3\xc5o\x8a\xbf\x11\xebN\x90\x99\x96\x0e3\x1b\x18P\x8b\xcb\xe2ApF\xe4Qt\xeb\xd5\x1e/$wfH^/\xf2\\}\x11Zi\x00y\n9\xe2\xb0F:J<\xf65j\xa2\xfd\xed\xc1\xc3]cB\xe5\xd4\n\xea@d\xe7\\\x85\x9a\n]\xdck\xf2%}\x97\xfc\x02\xdc\x99I\xdc\x078N*\xa1\xb2\x92\x99\xec\n\xd0\xb6X\xdcf\x8c\x14\xd5\x95\xeca\xd8<0\x10p\xd0G\xab4%\x91\xf1!\x9d\x1cH\x96z @\xb4\xfc\xc0\xaf:1\x04Xt=PY\xb5~x\x91\xb1:,i!\x05P\x95\xa8!y^\x0fR\x0b\xf11\xbf\xa4\xbc\x0e\x80\xdb\x9c>l\xeb\xc7q\x9d\x88\xb7F\xcf\xdc:\t.~\x1aW\xfa\x19\'\x89\xea\x00O\xc1hd\xe9\x90\x17c$m\x1c\x9b\xd8\x0e\xea\x96\xa8\xe9\xca\xc0\xae\xa3D\x83`P%6\xbfy\xb2\x11\x1aIJv8\xda\xe2\x10\x0e/%\x18<\xe6u\xba\xfe,~/G`\xb6\xc5\x97\x07\xfc8f\xce\x1f\xee\t\xf6\xb5\xae\x0e\xff\xaeJl\x9aUohn\x83\\,\t\xc32\xd0T\x0bV_,v\xd8\x01\xcd~?3\xa2\x81w\xbd<du\xc17\x83\xa3,16\xd3\x19!\xb4\xe2\x0f[m\\`\xb3H\xc4\x134\xbb\xb2\xaa\x1fo\xb4\xb6\xbc5\xea\x9c\x8a\xa6\xe4\xcfx\xb0Z`\xd2\xcb?iAL\x87\x96Cy\xae8%xN\xa5\xaf\x85\xa7Du\x8a\x9e\xb5\xbd\x088\xbb\x12\xc0\xfc\xe8\xfd\xe4\xaf\x05\x89L\xa9Y5\xb4\x12Uc\xea\x0e\xa9\xb6\x90\x87\x93W.\xa8\xf4\x85u,LS\xa1v\xb0\x83\xae\x0b\xb2\xf8\x18%\x93!\x02[\xef\x81D\xcb\x8c\x081\xfe\x89m6\x854R\x0f\xbc`\x98\xa0S\n\xdbh\x03\xab\xad) \xfe\xd5\x8b\\\xe0$\xc0e\xf3\xf4\x85\xb0\xdfT\xb5\x02\xb3\xe5\xacP\xf7~:^\xe9gU]\xa1\x9cX\xf6\xb6\x06\x0f\x8d\xf6=\xdbj\x85\x029\x0f\xf6\xd4\t\x96\x80\xa3g\xa2\x1b\x8a\xe1HQ\xa8\xea\xe7\x80:^,\x8f\\\x1a)\xed\xe8\xecw\xc1m\xe33\x85\xeb\x9c4J\x97T\xf9\xc6\xfdod\x1f\xed\x87\xe9F\xdd\xb7\xd8m\xd5\x8b\x88\xf9;\xe6\xa6\x9d\xdf(\xbd\x7f\xb3u!\xc9\x13H1\x80\xb2\x81\xbdV\xcaP\xcc\xa8\xb3\xe5\xf9\x00SE0\xdfuG\xf1\xd3\x86\xb9&D&r\xeeD\xa7\xe3\xe3\x1c^\xbe\xf1\xc3\x96G\xfe\xfb\x1c\x96E\xe7\x8c\x11HH\x1a\x8f\xc9$\xb2.\xa3A[\x03\xa9x\xf3<\xd1=\xd5\xad\x1d\x03po\nv\x7f\x90\xb8\xcd,m)\x9b\xf0\xae\x91\x9a\xde\x12\x99y\xac\xf7\xd3\xb5\xaf\xd6\xa2oY\xb2\x13\xc0\xda\xcc\xbdxr\xb0\xa1\x93\xbe\x19\x9c\r\x88\xf8t\xf99\x84\x13\xd6\xcb\xd3\x87^\x8c\x89\xa8\x96\xd4\xe9kE\xc7\xd3[\xbd\xe5%\xf1Hc!\xf1\xce\xb7?\xee\xa9&wX\xaf\xcd\x9a\xfc^\xb0m\x92-\xf0\xd2g\xd8\x94\x91\x87o\xc9\xa6^9I\xc7\xf6D\x8a\xd2\xe3\x1bd~\x89W\xe6\x92\xf8\xc9\x935\x06\xae\xb3\xe7\xaf\xdb9&\x07\x1duE\x0f)\xd1\x82\xfa\xde\xb7\xfc%v\xdb\xfa\x83\xb2\xb9\x95\x82+\xfb\xaf\xcc\x7f3\xabB\xfc\x90\xc6\x94k\xcb\xba55g\xe3l\xae\xe4?\xce\\$\x16\xff\xa0\xcb\xfc\x1e?\xb2\xe0\xea\r*\x17\x12\xe9\x85\xdb\xa9\x7f4\xfd\x8e\x9cv\xa9\xb1\xdb\x8f0\x88)\xb0\x1c2\x95c\x14\xf96\xff~\n\xb7\x9a\xa8\xcb\xcc\x844@\x98\xe3XZ\x96m\xb4\xed\r\xde\xe1?\teK\xd8\x17\x82:\xae3\x82\xa6\x07FJK\xed\xc2\xd8\tn\xe2\x95\x9a\x06\x1b\xad\x15\xa9\xe8X\xfbM\xa5\x04 \xc3\xe6\xcfa\x11\x88\x0e\x17\xd2y3\x7f\xee\t8\x08\x845\x83\x04\xb3W\x94\x12r\x03\xd8\x1dtn\x94\xa31t\xda\xb3H\x8b\x80mh\xf8?\x19\x06\x1a\xf9\xb7[\xcb\xdd\x1cb{\xc1\xb7\x1dw\x9b\x0bF\xc7*\x1e.\xeeFTO_\xcf\xf3\x8dZ\xa1[\xce\x8eb\x91\xd7\x10z\xb4\xbcs]*\xa3\xe2X\xf1\xb74\x82\xb9^&\xa9M\x9a\t3 {i\xcf\x8eT\xba.\x80\\6\x07+<\x1c&\xe7\x86\xfa_\xcf\xaa\xa3sv\xf0\xe4\xdak\xb8\'\xe4\x83\xdb\xfe~.\xb2%\x9c\x82`\x95\xf6y\xf5b>\xdb\xcd``\xa4\x02\x94\'ut\x9e\x82yD\x10\x0eD\xe0\xb0\x1c\x04\xce\\=F<F\x01\x826\xaau\xe7\x93\xbd2\x15\x9b[\xc0;\x97\xba\xb7H8\'\xe8!\xd1C\xc4AYjo!\x18\xf5\x9eB\x8a{\xc9X\xe1\x97\x0e\\\x15\xf3\xcb\xf9N\xbd\xc4\xb7D$\xef~^\xee\xd0`%\xed\x9e\xb4z\xc5\xbe\x89\x12NYwQ\xe7\xff\t\xc1\xed\xeb\x0c\xcf\x90\\\xc8\xc7h\xce^\xf1}\xef\xd8C[\xae !\xf9d\x1f\xea;\t\x8b\xba\xd4\x88dH\x1aJ\xaa\xc0q\xcd\xd1\x81\\\x9c\x16,\x80\x8a"\xb4\x9a\xf4\xe99\xcc\xf8\xa8z\'~\x19\xde\x93\x9a\x0bh\x02\x99U\xf8\x00\xd7\x8d\xd0J\x1a\xd9fH-K\xca\xec$\xad\xc4\x93\xdd\xaaZ\xc1\xee\xd4\xbb\x14\xf7N\xa6\xebdL\xff\xba\x1e\xf2\x89\x00\x8e\xa9\x83\xbd\xc5\x8c\x98\xf9\xff2^\xbb)\xae\xba.k#\xc60L?\tb\x9b\xd4\xef\xb5\x9f)\x124\xf2\x1c\xb5(\x15Qq\xe2\xe8\xb0\xcc\x1a\xc9\xbb\xc1\x97\xee\xae}\xa3\xa6\xc9\xdc\xc1\xe2`\xce\n\x12 \xee\x18\xfe\xfc4\xcd\xc3z\xd3[\x81\xfe\x7f\x98FK(\xa0\xb3\x85\x1b\xc1\xc9\xfa\x01W\xf7i\x8a8\xc6\xa9\x94\xe6.H\x80[\xaa.(d\x9e\xca\xcc\xaa\xe0\xf3\x87\xea\xf9\xf95\x93{\xd5:\x8c8\x067\xae\xc1\xd4i\x9d\xcd?q\x9d\xc6\xf6Y\x8c\x1e\x10\x92\x02\x89O\xde\xde\x95\t\xbc\xb0\xd2\xdaw\xa2\xe2\x8b\xa7\xadf\xea\x92v\x1b0Z\x87@\xfa/eA\x06\x921\x7f\xcdT\xa2w7\xa6\xe9Z\x9f\xca\xd6\x13\x92?%\x8ad\xd7\xa6\xde\x7f\xaa\xcc\xdd_\n\x06&\xf3*\xa6\xcdd\xb5\xfa\x90\x93f\x7f\xeb\xac\x16G\xdefb\n\xc2\xbf|F\x11\xf8\xd8L\xf6\xb7\xac\xca|;O\xf5v\x88!\x7f=0\x1f/\xdc\xc2\xc1%\x16!\x91:\x15:\xbf\xae\xd7\x90\xc7$%\xbd\xe7\x8fzv\xd7\xf43|$\xd0\xd6y\x8e\x12-\xc1D{\xe5<!\x7fs\xb96\xf6\xe7a\x9bViYL\xfd\xcc\x1c\xf1\xbd\x03~$\x1c`\x9bg\xf4\x05\x10`\x89\x0e9teS\x1fo\xe0{\xc3\n|\x02\xca-\x05^\x83\xa3\'\x01\xf4\xd5oJ8\x01\ts\xc9\xf5[)a\x13\xd6<\xd0Ne\xf1\x98\x05\\i\xb9O\xb6&\xa1\xc2\xb2\xb8m\xc3\xbam9DO@C\x1c\xcet\xad>\xe1I\xac<XP\xd9\xb7\x0e#\xfc\x8bT\xf7\x94|=3/\xfc\xb6\xdd/\xc0\xe5\xc4L\x1d\x89N\x15K\xe9\x15x\xb0L\xe4\x03kGp\x99\x15O@\xd9/\'\x19b\xe8\\F\x90\xf3\x12\xad\xa0\xe7:\xd3!Z\r\xe2c\x8e\x15\xe4\x00qvc\x14?f\x98!\x8b\xff\x1f>b\xb7\x96\x1c\xa5\xed?*U9g\xe2*\xcc\x9c\x95x\x0c\x00\xc7\x9d\xd5\x19\x7fb\xa4.\xa8\x1c\x01$\x06/)\x95(wuUI\xbd\xfd\xb9Zp\x95\x04\x9f\xe9\x01y\xfdk\xe1\xb8q?\x95\xd7\xbdS\x1aB\xf6;\xef\xf1\x12wySV\xab\xe7\x96\x14\xc0y\x11\xff\x90W0\xbe1\xd6\xa6\xba\x07\xb8\xe1\x81,\xbb^\xcb@\xdf\xa0\xb1\xe2\x83\x99\xb5\xa0\xb8\x7fE\xb6\x06a\x8c(\x91\x1f\xe4x\xdc@\xf8\xbc\xca\xe0^.\x8c\xc4\x8c\xa7\xe9=\x0e \xe2\x04\xd9\x1a\xca\xc3\x82b\r\x1d\x08\x0e\'\x0c\xb9=q\xc5\x85\x1auJ\x0f\xday\xc9\x91H\\\xfb\xdfCC\xc9m\xf4\xd3`H\xd7\xf7fTes\xb2n)\x9a\xd3\x18e\xa3wn\x99rWH\x1d\x88\xb0k\xed\xd6P\x9e\x11\x02\x88EnL\xf4d\xc0i\xab\xe1s\xb3I\xe2\xab\xe6\xe1]\x15V\x19b\xefM,@\x0e\x91\xbc\x8biJ\x877P\x8c1\x85\xaeQ(A\xe1\x01\x82\xaaQo\x1c\xc6\x8e\x87\xadz\xa0\xee\xbd\xfc\xc8\x03n\xf5\x9f|\x1d\xec\x1cy\xa2\xeeVG\x80?\xb2\xc9\xaf+\xa0\xebI|\xd3I\x9d\xfe;\xbb`\xf5j\xf71W\xb5O+\xb9f\xa6\xa8IRG\xed2\xad7\x122zZ\x16:\xc0\xe75\xb3\xd7\xb7;\x95D\x11rR\xfc9\xbf\x96\xf3\x80\xaf|\xbc\x95\xaf\xc3^\x97~\xe1\xc8G\xeb\xba\x06W\xefF\xfe^\xc5\x10.\xbcy\xa3\x17\xd9S\xa1\xbd\x9d\x84b\xf9\n\x08v\xb9\xa9\xa19z\x84\x9c\xdeU}+kMe\xacV\xee\n\xf3&\xbcG\x90\x7f\xb59\xd7\xb3\xf9\xf9\x8a\x97#\x81%\x16t\\\xd7v\xe61\x96\x07\xfep\xae\xd5\x95H\x17\xce\xf6\x8c\xfd\x80\xbd\x9f\x90~\x90\xcf\x8d\xb8\xe4\x8fC\xcd\xf7R\x19\xcf\x91\x95\xe4\xfc\xe9\x89\xed\xd6\xba\xe6\xfa<U\\\xb7z\x16\xda\xbd\x8buZ\xde\xfc\xd4\xec\xa8\xa7\tX6\x81W_6\xf0\x95Q\xa2\x14~\xac\x05\xd1\x18}\xca\xa9Z\xda`r\xe0\xdc\xf0e\xb9*\xc6|\xca@|b\xe5\xcbj)\x96\xf28:\xaf\x97\xa0\x9b\x1aU\x06[\x08\r\r#n\xaf;\xf7\x03h~\x9c>\xa1m;3P\xd4\xc2\xf7\xd7\xd1{V\xe8\xf86\xd8\xc3w\x01\x8d\xfem\xf1\xa1\x84*\x14iW\xaf\xcd+*\xaca\x10\x0c\x19\x01\x11\x02\x1aL6\xb4\x08\x14\xbe\x9fG\x1a\xee.\xeb\xd8\x15M)\x9e\xe7\xdeo\x01=\x89\xd03\xf5\xc7o\xcf\x19\x14\xee\x02\xcf\xfaW\xbfVvK\xe0\xef3\xde\xb1\xfe\xa1\xe5%\xb6i\xbaY|?\xb9=\t\xdb\xa2RS,G\x87\x1d\x12\xce\xf3-s`\xbd\x8d\xa2\xbe\xdc7.\x8e\xc8\x03\xdb\xea\x08\x83\xe7\x91\xca\xa5\xbdl\n\xf4\xb4\x95\xc0\xd3\xc0O\xdfp\xbd\x0e\xe6\x80S_$\xd0\xa4\x9e\x92P\xf4\xf3\xb6\xc9\'`\xe5\xd4K{\xd5\xca\x90pF\xbf\x1c\x00\x08\x85\xb7=K4\xecDv~\xef*1\xf2\xf5\xebYi:\x06eRZ\xde\x00\x9d"\xba\xab\x13\xd8\xf1FQ*X\xc6\x01\x89\x16\xa9\x80\x11\xf6N\x11A\xe5\xfe\x8a_N\xe0\xf1.=\xc0\xaa\xb1I\x0bi\xc2\xf7f+\x93\x9f\x97\x7f\xcb\x1c.\x12G\x015\x1e\xe5\xfc9-0\xca\x95_)L\xf7\xe3?U-\xf0 \xee\xd0\x93"\x8cg\xc6\x0c\xf9\xd0<.\x9c\xa8\xd7\xb8)\xd2\x1a\xbf7\x169\xba\xafl\x99\xbb\xee\xc2\xbc\xebH\xb8x\xe8\xb6\xe1\xa8E\x83\xaa\xe1p \x7f\xdc\xfaih\xe4#R*dL\r\xb1\xe4\x9d\xb7\x15\x93\xc9\x8eDPa\xa0 \xc3\xc0_\xe9\x84\xde.4\xf1B\xdf|\x18@\xa15\xad\x9f\xed\xa0\xeb\xaa\x173A\xa1\xd4\x06T\x01\xdf\xc8\x19T\x80\xde%!\xe2\xe6.\x01\x02\xb0\x92G\x83H\x99\xa6*iP\xf2imH\xd3\xaa$\xe8\xdfe\xba@\xc5\x84\xb1\xfeZr\xcd\xd3\x9a}\x16\xa2(>\x89\x96T\x10d={\xbf\xf5O\xa8\x9c\xafR,\xebr\xb9\xb6\xf9\x1b\xd1C\xd8\xef\xa4hZW\xe3s:\xc5\x8c\xf8\xe3X\xd1O\xdaK\x01\xe49\x93\xea/\xf7\x8c\xadRb\xa7]\xbd\xa5\x0e>9\xc27\x0bBK3\xf0,0\xb8 \x01\xeb\x91r\nH\x17\x8a\x81\xce\xd0\xd4\x17\xdaf\x94\xcf\xa6\xb0\xc4\x93')
1
+ from hiddifypanel.models import *
2
+ from hiddifypanel.panel import hiddify
3
+ import json
4
+ def sync_child_to_parent(parent_link=None):
5
+ parent_link= parent_link or hconfig(ConfigEnum.parent_panel)
6
+ if not parent_link:
7
+ raise ConnectionError("no parent link")
8
+
9
+ return send_to_panel(f"{parent_link}/api/v1/sync_child/",'PUT',hiddify.dump_db_to_dict())
10
+
11
+ def add_user_usage_to_parent(dbusers_bytes,parent_link=None):
12
+ uuid_bytes={u.uuid:b for u,b in dbusers_bytes.items()}
13
+ new_user_data=send_to_panel(parent_link+"api/v1/add_usage/",'PUT',uuid_bytes)
14
+
15
+
16
+ uuid_status={u.uuid:is_user_active(u) for u in dbusers_bytes}
17
+ hiddify.set_db_from_json(new_user_data,override_child=True,override_child_id=None,remove_users=True)
18
+ have_change=False
19
+ for u in User.query.all():
20
+ if u not in uuid_status:
21
+ have_change=True
22
+ break
23
+ if is_user_active(u)!=uuid_status[u]:
24
+ have_change=True
25
+ break
26
+ if have_change:
27
+ hiddify.quick_apply_users()
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+ def send_to_parent_panel(parent_link=None):
36
+ send_to_panel(parent_link)
37
+
38
+ def send_to_panel(url,method="GET",data=None):
39
+ try:
40
+ import requests
41
+ from requests.adapters import HTTPAdapter
42
+ from requests.packages.urllib3.util.retry import Retry
43
+
44
+ retry_strategy = Retry(
45
+ total=3,
46
+ backoff_factor=0.5,
47
+ status_forcelist=[429, 500, 502, 503, 504],
48
+ method_whitelist=["HEAD", "GET", "OPTIONS"]
49
+ )
50
+ adapter = HTTPAdapter(max_retries=retry_strategy)
51
+ http = requests.Session()
52
+ http.mount("https://", adapter)
53
+ http.mount("http://", adapter)
54
+
55
+ headers = {'Content-Type': 'application/json',
56
+ 'Unique-Id': hconfig(ConfigEnum.unique_id)}
57
+ print(headers)
58
+ if method=="GET":
59
+ response = http.get(url,params=data,headers=headers)
60
+ if method == "PUT":
61
+ response = http.put(url,json=data,headers=headers)
62
+
63
+ res= response.json()
64
+ print(res)
65
+ return res
66
+ except Exception as e:
67
+ print(e)
68
+ print(url)
69
+ print(headers)
70
+ print(json.dumps(data,indent=4,default=str))
4
71
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
72
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,6 +1,6 @@
1
1
  from flask import jsonify,g,url_for,Markup
2
2
  from flask import flash as flask_flash
3
- to_gig_d = 1000*1000*1000
3
+ to_gig_d = 1024**3
4
4
  import datetime
5
5
 
6
6
  from hiddifypanel.panel.database import db
@@ -52,10 +52,9 @@ def add_users_usage(dbusers_bytes):
52
52
  for user,usage_bytes in dbusers_bytes.items():
53
53
  # user_active_before=is_user_active(user)
54
54
 
55
- if not user.last_reset_time or (datetime.date.today()-user.last_reset_time).days>0:
56
- if days_to_reset(user)==0:
57
- user.last_reset_time=datetime.date.today()
58
- user.current_usage_GB=0
55
+ if not user.last_reset_time or user_should_reset(user):
56
+ user.last_reset_time=datetime.date.today()
57
+ user.current_usage_GB=0
59
58
 
60
59
  if before_enabled_users[user.uuid]==0 and is_user_active(user):
61
60
  xray_api.add_client(user.uuid)
@@ -393,7 +393,7 @@ responsive: {
393
393
  %endif
394
394
  </script>
395
395
 
396
- %if country.lower()!=hconfig(ConfigEnum.country) and has_auto_cdn
396
+ %if has_auto_cdn and hconfig(ConfigEnum.country)!="other" and country.lower()!=hconfig(ConfigEnum.country)
397
397
  {% macro reload() -%}
398
398
  <button onclick='document.location.reload()' class='btn btn-primary'>
399
399
  {{_("Check again")}}
@@ -195,6 +195,8 @@ def get_common_data(user_uuid,mode,no_domain=False,filter_domain=None):
195
195
  g.locale= hconfig(ConfigEnum.lang)
196
196
  expire_days=remaining_days(user)
197
197
  reset_days=days_to_reset(user)
198
+ # print(reset_days)
199
+ # raise
198
200
  if reset_days>=expire_days:
199
201
  reset_days=1000
200
202
  # print(reset_days,expire_days,reset_days<=expire_days)
@@ -163,4 +163,15 @@ legend {
163
163
  .sub-sidebar {
164
164
  background-image: linear-gradient(195deg,#185f9d,#135085)!important;
165
165
  width:200px;
166
+ }
167
+
168
+ .dark-mode .ms-choice{
169
+ background-color: #343a40;
170
+ color: white;
171
+ }
172
+ .dark-mode pre{
173
+ color:white
174
+ }
175
+ .dark-mode .callout a{
176
+ color:#b0b8bf
166
177
  }
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
  %if not has_update
19
19
  <pre class="ltr">
20
- {%if "codec can't encode characters" in error %}
20
+ {%if "codec can't encode characters" in (""~error) %}
21
21
  Please restart the server.
22
22
  {%endif%}
23
23
  {{error}}