├── requirements.txt ├── README.md ├── .github └── workflows │ └── python-app.yml ├── subscribe ├── filtered.txt ├── result.txt └── v2ray_mat.txt └── main.py /requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.20.0 2 | pytz==2021.1 3 | lxml>=4.6.3 4 | feedparser==6.0.2 5 | pyyaml==5.4.1 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # RSS 3 | 通过GitHub的actions 自动采集节点 自动生成订阅信息 4 | 5 | 订阅内容自动更新在仓库 subscribe 目录下的 clash.yml 和 v2ray.txt 中 然后PC端/手机端根据自己的软件支持的格式,订阅对应的链接即可 6 | 7 | 目前可抓取的源有11个,但考虑质量,只抓取其中6个 -------------------------------------------------------------------------------- /.github/workflows/python-app.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, runs the script at 02:40 and 12:40 UTC every day. 2 | 3 | name: Python application 4 | 5 | on: 6 | push: 7 | branches: [ main ] 8 | #pull_request: 9 | #branches: [ main ] 10 | schedule: 11 | # - cron: '*/5 * * * *' 12 | # 表达式生成 https://crontab.guru/ 13 | # 此处是UTC时间 即北京时间 -8小时 14 | - cron: '40 2,12 * * *' 15 | # Allows you to run this workflow manually from the Actions tab 16 | workflow_dispatch: 17 | 18 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 19 | jobs: 20 | # This workflow contains a single job called "build" 21 | build: 22 | # The type of runner that the job will run on 23 | runs-on: ubuntu-latest 24 | 25 | # Steps represent a sequence of tasks that will be executed as part of the job 26 | steps: 27 | - uses: actions/checkout@v2 28 | - name: Set up Python 3.9 29 | uses: actions/setup-python@v2 30 | with: 31 | python-version: 3.9 32 | - name: Install dependencies 33 | run: | 34 | python -m pip install --upgrade pip 35 | # pip install flake8 pytest 36 | pip install -r requirements.txt 37 | - name: Run 38 | run: | 39 | python main.py 40 | - name: commit 41 | run: | 42 | git config --local user.email "leejianzhao@gmail.com" 43 | git config --local user.name "Leo-Leejianzhao" 44 | git add subscribe/v2ray.txt 45 | git add subscribe/v2ray_mat.txt 46 | git add subscribe/clash.yml 47 | git add subscribe/clash_mat.yml 48 | git commit -m "更新订阅链接" 49 | - name: push 50 | uses: ad-m/github-push-action@master 51 | with: 52 | # github_token: ${{ secrets.TOKEN }} 53 | branch: main 54 | -------------------------------------------------------------------------------- /subscribe/filtered.txt: -------------------------------------------------------------------------------- 1 | aHlzdGVyaWE6Ly8yMDguODcuMjQzLjE1MToxNzU0OT9hbHBuPWgzJmF1dGhfc3RyPWRvbmd0YWl3YW5nLmNvbSZkb3dubWJwcz0xMDAwIE1icHMmaW5zZWN1cmU9MSZwZWVyPXd3dy5iaW5nLmNvbSZ1cG1icHM9MTAwMCBNYnBzIyVGMCU5RiU4NyVCQSVGMCU5RiU4NyVCOCVFNyVCRSU4RSVFNSU5QiVCRDElMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjAxLjlNQiUyRnMKaHlzdGVyaWE6Ly8xMDguMTgxLjI0Ljc3OjExNTEyP2FscG49aDMmYXV0aF9zdHI9ZG9uZ3RhaXdhbmcuY29tJmRvd25tYnBzPTEwMDAgTWJwcyZpbnNlY3VyZT0xJnBlZXI9YXBwbGUuY29tJnVkcD10cnVlJnVwbWJwcz0xMDAwIE1icHMjJUYwJTlGJTg3JUJBJUYwJTlGJTg3JUI4JUU3JUJFJThFJUU1JTlCJUJEMiUyMCU3QyUyMCVFMiVBQyU4NyVFRiVCOCU4RiUyMDEuM01CJTJGcwp0cm9qYW46Ly84NWYxMzMxNDJmMDRkYmY2NTQ3ZGEzMzg5NWNmYWJiM0AxMTMuOTkuMTQwLjE4NDozOTAwMT9zbmk9d3d3LnlydG9rLmNvbSZhbGxvd0luc2VjdXJlPTEmZnA9Y2hyb21lIyVGMCU5RiU4NyVBRCVGMCU5RiU4NyVCMCVFOSVBNiU5OSVFNiVCOCVBRjElMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjAxLjJNQiUyRnMKaHlzdGVyaWEyOi8vQmlhLVNpTkFWTS1UZWxlZ3JhbS1TaU5BVk0tQmlhLVNpTkFWTUBzaW5hdm0uc29mdDEwLmlyOjQ0Mz9vYmZzPXNhbGFtYW5kZXImb2Jmcy1wYXNzd29yZD1CaWEtVGVsZWdyYW1fX1NpTkFWTS1TaU5BVk1fX1RlbGVncmFtX19TaU5BVk0tU2lOQVZNJnNuaT1zaW5hdm0uc29mdDEwLmlyIyVGMCU5RiU4QyU4MCVFNSU4NSVCNiVFNCVCQiU5NjEtTEklMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjAxLjNNQiUyRnMKaHlzdGVyaWEyOi8vQmlhLVNpTkFWTS1UZWxlZ3JhbS1TaU5BVk0tQmlhLVNpTkFWTUBzaW5hdm0uc2luYXZtLmlyOjgwP29iZnM9c2FsYW1hbmRlciZvYmZzLXBhc3N3b3JkPUJpYS1UZWxlZ3JhbV9fU2lOQVZNLVNpTkFWTV9fVGVsZWdyYW1fX1NpTkFWTS1TaU5BVk0mc25pPXNpbmF2bS5zaW5hdm0uaXIjJUYwJTlGJThDJTgwJUU1JTg1JUI2JUU0JUJCJTk2Mi1MSSUyMCU3QyUyMCVFMiVBQyU4NyVFRiVCOCU4RiUyMDEuNU1CJTJGcwpoeXN0ZXJpYTI6Ly82NWE0M2I2ZS0xOWM1LTRmYWItYjk2MC1kMTEwYTA3ZDY2YTRAMjA5LjE0MS40Ny4xMjc6MzIzND9pbnNlY3VyZT0xIyVGMCU5RiU4NyVCQSVGMCU5RiU4NyVCOCVFNyVCRSU4RSVFNSU5QiVCRDMlMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjA0LjBNQiUyRnMKaHlzdGVyaWEyOi8vZG9uZ3RhaXdhbmcuY29tQDUxLjE1OC4yMDUuMTI2OjQ0ODk/aW5zZWN1cmU9MSZzbmk9d3d3LmJpbmcuY29tIyVGMCU5RiU4NyVCMyVGMCU5RiU4NyVCMSVFOCU4RCVCNyVFNSU4NSVCMDElMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjAyLjJNQiUyRnMKaHlzdGVyaWE6Ly81MS4xNTkuMjI2LjE6MTQyNDE/YWxwbj1oMyZhdXRoPWRvbmd0YWl3YW5nLmNvbSZhdXRoX3N0cj1kb25ndGFpd2FuZy5jb20mZGVsYXk9Mjc5NSZkb3dubWJwcz0xMDAmcHJvdG9jb2w9dWRwJmluc2VjdXJlPTEmcGVlcj1hcHBsZS5jb20mdWRwPXRydWUmdXBtYnBzPTEwMCMlRjAlOUYlODclQjMlRjAlOUYlODclQjElRTglOEQlQjclRTUlODUlQjAyJTIwJTdDJTIwJUUyJUFDJTg3JUVGJUI4JThGJTIwMy4yTUIlMkZzCmh5c3RlcmlhOi8vMTk1LjE1NC4yMDAuNDA6MTUwMTA/YWxwbj1oMyZhdXRoPWRvbmd0YWl3YW5nLmNvbSZhdXRoX3N0cj1kb25ndGFpd2FuZy5jb20mZGVsYXk9MTQ4MiZkb3dubWJwcz0xMDAmb2Jmc1BhcmFtPSZpbnNlY3VyZT0xJnBlZXI9YXBwbGUuY29tJnVwbWJwcz0xMDAjJUYwJTlGJTg3JUFCJUYwJTlGJTg3JUI3JUU2JUIzJTk1JUU1JTlCJUJEMSUyMCU3QyUyMCVFMiVBQyU4NyVFRiVCOCU4RiUyMDIuOU1CJTJGcwpoeXN0ZXJpYTovLzIwOC44Ny4yNDMuMTg3OjQwNTI4P2FscG49aDMmYXV0aD1kb25ndGFpd2FuZy5jb20mYXV0aF9zdHI9ZG9uZ3RhaXdhbmcuY29tJmRlbGF5PTE4MzEmZG93bm1icHM9MTAwJm9iZnNQYXJhbT0maW5zZWN1cmU9MSZwZWVyPWFwcGxlLmNvbSZ1cG1icHM9MTAwIyVGMCU5RiU4NyVCQSVGMCU5RiU4NyVCOCVFNyVCRSU4RSVFNSU5QiVCRDQlMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjAxLjZNQiUyRnMKaHlzdGVyaWEyOi8vYzBiMjQ5MGUtMjYyNS00YjljLWI3NjYtNTBmZmY4YjkyYTIxQDEzMi4xNDUuMjM5LjI1MDozNTAwMD9pbnNlY3VyZT0xJnNuaT1hcGkucHVzaC5hcHBsZS5jb20jJUYwJTlGJTg3JUE5JUYwJTlGJTg3JUFBJUU1JUJFJUI3JUU1JTlCJUJEMSUyMCU3QyUyMCVFMiVBQyU4NyVFRiVCOCU4RiUyMDMuNE1CJTJGcwpoeXN0ZXJpYTI6Ly9kb25ndGFpd2FuZy5jb21ANDUuMTI5LjIuMTA4OjUwODUwP2luc2VjdXJlPTEmc25pPXd3dy5iaW5nLmNvbSMlRjAlOUYlODclQjclRjAlOUYlODclQkElRTQlQkYlODQlRTclQkQlOTclRTYlOTYlQUYxJTIwJTdDJTIwJUUyJUFDJTg3JUVGJUI4JThGJTIwMi40TUIlMkZzCmh5c3RlcmlhMjovL2MwYjI0OTBlLTI2MjUtNGI5Yy1iNzY2LTUwZmZmOGI5MmEyMUAxOTMuMTIzLjc2Ljg0OjM1MDAwP2luc2VjdXJlPTEmc25pPXd3dy5hcHBsZS5jb20jJUYwJTlGJTg3JUE2JUYwJTlGJTg3JUFBJUU5JTk4JUJGJUU2JThCJTg5JUU0JUJDJUFGJUU5JTg1JThCJUU5JTk1JUJGJUU1JTlCJUJEMSUyMCU3QyUyMCVFMiVBQyU4NyVFRiVCOCU4RiUyMDQuMk1CJTJGcwpoeXN0ZXJpYTI6Ly9jMGIyNDkwZS0yNjI1LTRiOWMtYjc2Ni01MGZmZjhiOTJhMjFAMTQwLjI0NS4zNS43ODozNTAwMD9pbnNlY3VyZT0xJnNuaT13d3cuYXBwbGUuY29tIyVGMCU5RiU4NyVCOCVGMCU5RiU4NyVBQyVFNiU5NiVCMCVFNSU4QSVBMCVFNSU5RCVBMTElMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjA0LjlNQiUyRnMKdmxlc3M6Ly9hYjU4ZjkxZi1hZWUzLTQ4OTItOWI4Yy1iZTNmOGM0MDk3ZWFAMTkwLjkzLjI0NS4xMzc6NDQzP3NlY3VyaXR5PXRscyZ0eXBlPXdzJnBhdGg9JTJGVEVMRUdSQU0tLWpldF9jb25maWctLUNBTkFMVEVMRUdSQU0tLWpldF9jb25maWctLVRFTEVHUkFNLS1qZXRfY29uZmlnLS1DQU5BTFRFTEVHUkFNLS1qZXRfY29uZmlnLS1URUxFR1JBTS0tamV0X2NvbmZpZyZob3N0PVdXVy5Fc2ZhaEFuc2ltYU4uaW5mTy4mYWxwbj1oMiUyQ2h0dHAlMkYxLjEmc25pPVdXVy5Fc2ZhaEFuc2ltYU4uaW5mTy4mZnA9Y2hyb21lIyVGMCU5RiU4NyVBOSVGMCU5RiU4NyVBQSVFNSVCRSVCNyVFNSU5QiVCRDIlMjAlN0MlMjAlRTIlQUMlODclRUYlQjglOEYlMjAxLjJNQiUyRnMKdmxlc3M6Ly81ZDMwNzRhNi03NTFjLTQyZDktOTRlNy1jM2YxZjFjYjdkYjdAMTQ4LjI1MS4xNDcuMTc3OjQ0Mz9zZWN1cml0eT1yZWFsaXR5JnR5cGU9Z3JwYyZtb2RlPWd1biZzZXJ2aWNlTmFtZT15WjFhQjJjQzNkRDRlRTVmNmdIN2lKOGtMOW1OT29QJmFscG49aDImc25pPXN0YWNrb3ZlcmZsb3cuY29tJmZwPWNocm9tZSZzaWQ9MDVhNmQ0YWE1ZTMxNDYzNyZwYms9SG5nOTBNT2JKNU9CdElyZnJmNlUwMldJeDM2UjlzckhMQndSc2oxcjdEdyMlRjAlOUYlODclQTklRjAlOUYlODclQUElRTUlQkUlQjclRTUlOUIlQkQzJTIwJTdDJTIwJUUyJUFDJTg3JUVGJUI4JThGJTIwMy43TUIlMkZz 2 | -------------------------------------------------------------------------------- /subscribe/result.txt: -------------------------------------------------------------------------------- 1 | <<<<<<< HEAD 2 | vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogIm1hdHRrYXlkaWFyeS5jb218576O5Zu9KFVTKVVTQS9EYWxsYXMiLA0KICAiYWRkIjogImNsb3VkZmxhcmUueHJlbmJsb2cuY29tIiwNCiAgInBvcnQiOiAiNDQzIiwNCiAgImlkIjogIjZjMTc1ZDFhLWE1N2YtNDg4MS1hNDcxLTE3M2ViMTM5Njk0YiIsDQogICJhaWQiOiAiMCIsDQogICJzY3kiOiAiYXV0byIsDQogICJuZXQiOiAid3MiLA0KICAidHlwZSI6ICJub25lIiwNCiAgImhvc3QiOiAiaXB2Ni54cmVuYmxvZy5jb20iLA0KICAicGF0aCI6ICIveHJlbmJsb2cvIiwNCiAgInRscyI6ICJ0bHMiLA0KICAic25pIjogIiINCn0= 3 | vmess://eyJhZGQiOiJoazIxMDAuYXp6aWNvLndlYnNpdGUiLCJhaWQiOjEsImlkIjoiYWViOWNmZmYtYjI1Zi0zNGU5LWEwZTktZTk1ZDEyOTJhMWJjIiwibmV0IjoidGNwIiwicG9ydCI6MTE1NzYsInBzIjoiQ05f5LqM54i357+75aKZ572RaHR0cHM6Ly8xODA4LmdhIOiKgueCuV85Iiwic2N5IjoiYWVzLTEyOC1nY20iLCJ0bHMiOiJub25lIiwidHlwZSI6Im5vbmUiLCJ2IjoyfQ== 4 | vmess://eyJhZGQiOiJqcGM1MjcxLmF6emljby53ZWJzaXRlIiwiYWlkIjoyLCJpZCI6ImFlYjljZmZmLWIyNWYtMzRlOS1hMGU5LWU5NWQxMjkyYTFiYyIsIm5ldCI6InRjcCIsInBvcnQiOjExNTYyLCJwcyI6IkNOX+S6jOeIt+e/u+Wimee9kWh0dHBzOi8vMTgwOC5nYSDoioLngrlfMTEiLCJzY3kiOiJhZXMtMTI4LWdjbSIsInRscyI6Im5vbmUiLCJ0eXBlIjoibm9uZSIsInYiOjJ9 5 | vmess://eyJhZGQiOiJjbG91ZGZsYXJlLnhyZW5ibG9nLmNvbSIsImFpZCI6MCwiaG9zdCI6ImlwdjYueHJlbmJsb2cuY29tIiwiaWQiOiI2YzE3NWQxYS1hNTdmLTQ4ODEtYTQ3MS0xNzNlYjEzOTY5NGIiLCJuZXQiOiJ3cyIsInBhdGgiOiIveHJlbmJsb2cvIiwicG9ydCI6NDQzLCJwcyI6IlVTX+S6jOeIt+e/u+Wimee9kWh0dHBzOi8vMTgwOC5nYSDoioLngrlfNTQyIiwic2N5IjoiYXV0byIsInNuaSI6ImlwdjYueHJlbmJsb2cuY29tIiwidGxzIjoidGxzIiwidHlwZSI6Im5vbmUiLCJ2IjoyfQ== 6 | vmess://eyJ2IjogIjIiLCAicHMiOiAiZ2l0aHViLmNvbS9mcmVlZnEgLSBcdTY1ZTVcdTY3MmNcdTRlMWNcdTRlYWNcdTkwZmRcdTU0YzFcdTVkZGRcdTUzM2FMaW5vZGVcdTY1NzBcdTYzNmVcdTRlMmRcdTVmYzMgMTUiLCAiYWRkIjogIjEzOS4xNjIuMTIyLjIwNSIsICJwb3J0IjogIjM4NDUiLCAiaWQiOiAiNzZkNWM2ZTMtYzc0Yy0zNDA2LWI5ZTgtOTg1OWQwYTcxYzU2IiwgImFpZCI6ICIwIiwgInNjeSI6ICJhdXRvIiwgIm5ldCI6ICJ0Y3AiLCAidHlwZSI6ICJub25lIiwgImhvc3QiOiAiMTM5LjE2Mi4xMjIuMjA1IiwgInBhdGgiOiAiL1RTL3JlY2hhcmdlL3R6VXJsLmh0bWwiLCAidGxzIjogIiIsICJzbmkiOiAiIn0= 7 | vmess://eyJhZGQiOiAiMDMyMGhrNTY3LmZhbnM4Lnh5eiIsICJwcyI6ICJnaXRodWIuY29tL2ZyZWVmcSAtIFx1NGU5YVx1NTkyYVx1NTczMFx1NTMzYSAgMjEiLCAic2N5IjogImF1dG8iLCAicHJveHlUeXBlIjogInZtZXNzIiwgInR5cGUiOiAibm9uZSIsICJzbmkiOiAiIiwgInBhdGgiOiAiL3JheSIsICJwb3J0IjogNDQzLCAidiI6IDIsICJob3N0IjogIjAzMjBoazU2Ny5mYW5zOC54eXoiLCAidGxzIjogInRscyIsICJpZCI6ICI1YzcwZGE1ZC1lNjQxLTNiZjgtYjdkYy01YmFiZDg0M2ZmM2MiLCAibmV0IjogIndzIiwgImFpZCI6IDIsICJvcmlnaW5OYW1lIjogIlx1ZDgzY1x1ZGRlZFx1ZDgzY1x1ZGRmMF9IS19cdTk5OTlcdTZlMmYifQ== 8 | vmess://eyJhZGQiOiAiMDMyMGpwLmZhbnM4Lnh5eiIsICJwcyI6ICJnaXRodWIuY29tL2ZyZWVmcSAtIFx1NTJhMFx1NjJmZlx1NTkyNyAgMjYiLCAic2N5IjogImF1dG8iLCAicHJveHlUeXBlIjogInZtZXNzIiwgInR5cGUiOiAibm9uZSIsICJzbmkiOiAiIiwgInBhdGgiOiAiL3JheSIsICJwb3J0IjogNDQzLCAidiI6IDIsICJob3N0IjogIjAzMjBqcC5mYW5zOC54eXoiLCAidGxzIjogInRscyIsICJpZCI6ICI1YzcwZGE1ZC1lNjQxLTNiZjgtYjdkYy01YmFiZDg0M2ZmM2MiLCAibmV0IjogIndzIiwgImFpZCI6IDIsICJvcmlnaW5OYW1lIjogIlJlbGF5X1x1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlNkNBLVx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlNkNBXzM4OCJ9 9 | vmess://eyJ2IjogIjIiLCAicHMiOiAiZ2l0aHViLmNvbS9mcmVlZnEgLSBcdTk5OTlcdTZlMmZcdTc1MzVcdThiYWZcdTc2YzhcdTc5ZDFcdTY3MDlcdTk2NTBcdTUxNmNcdTUzZjggMjciLCAiYWRkIjogImgzLnNob3BidXkuY2x1YiIsICJwb3J0IjogIjQ0MyIsICJpZCI6ICI5MjI2MTY1OS01NWE2LTRiNDMtODVkMi1kM2QzZjMwY2E4ZWIiLCAiYWlkIjogIjAiLCAic2N5IjogImF1dG8iLCAibmV0IjogIndzIiwgInR5cGUiOiAibm9uZSIsICJob3N0IjogImgzLnNob3BidXkuY2x1YiIsICJwYXRoIjogIi9Lb1VKYWlOOCIsICJ0bHMiOiAidGxzIiwgInNuaSI6ICIifQ== 10 | vmess://eyJhZGQiOiAiMDMxNnJvLmZhbnM4Lnh5eiIsICJwcyI6ICJnaXRodWIuY29tL2ZyZWVmcSAtIFx1NmNkNVx1NTZmZCAgMzMiLCAic2N5IjogImF1dG8iLCAicHJveHlUeXBlIjogInZtZXNzIiwgInR5cGUiOiAibm9uZSIsICJzbmkiOiAiIiwgInBhdGgiOiAiL25sIiwgInBvcnQiOiA0NDMsICJ2IjogMiwgImhvc3QiOiAiMDMxNnJvLmZhbnM4Lnh5eiIsICJ0bHMiOiAidGxzIiwgImlkIjogIjVjNzBkYTVkLWU2NDEtM2JmOC1iN2RjLTViYWJkODQzZmYzYyIsICJuZXQiOiAid3MiLCAiYWlkIjogMiwgIm9yaWdpbk5hbWUiOiAiUmVsYXlfXHVkODNjXHVkZGViXHVkODNjXHVkZGY3RlItXHVkODNjXHVkZGViXHVkODNjXHVkZGY3RlJfMjUifQ== 11 | vmess://eyJ2IjogIjIiLCAicHMiOiAiZ2l0aHViLmNvbS9mcmVlZnEgLSBcdTdmOGVcdTU2ZmQgIDQxIiwgImFkZCI6ICIxNTAuMjMwLjQzLjY1IiwgInBvcnQiOiAiMTQ1NjQiLCAiaWQiOiAiMTU1NmUwNDAtMzFkMy00YzQ3LWIwZDItZGRmODg4MDEwYjRlIiwgImFpZCI6ICIwIiwgInNjeSI6ICJhdXRvIiwgIm5ldCI6ICJ0Y3AiLCAidHlwZSI6ICJub25lIiwgImhvc3QiOiAiMTUwLjIzMC40My42NSIsICJwYXRoIjogIi8iLCAidGxzIjogIiIsICJzbmkiOiAiIn0= 12 | ss://YWVzLTI1Ni1nY206cEtFVzhKUEJ5VFZUTHRN@169.197.142.99:443#github.com/freefq%20-%20%E5%8C%97%E7%BE%8E%E5%9C%B0%E5%8C%BA%20%2044 13 | ss://YWVzLTI1Ni1nY206WTZSOXBBdHZ4eHptR0M@134.195.196.51:8888#github.com/freefq%20-%20%E5%8C%97%E7%BE%8E%E5%9C%B0%E5%8C%BA%20%2045 14 | ======= 15 | vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogIm1hdHRrYXlkaWFyeS5jb218576O5Zu9KFVTKVVTQS9EYWxsYXMiLA0KICAiYWRkIjogImNsb3VkZmxhcmUueHJlbmJsb2cuY29tIiwNCiAgInBvcnQiOiAiNDQzIiwNCiAgImlkIjogIjZjMTc1ZDFhLWE1N2YtNDg4MS1hNDcxLTE3M2ViMTM5Njk0YiIsDQogICJhaWQiOiAiMCIsDQogICJzY3kiOiAiYXV0byIsDQogICJuZXQiOiAid3MiLA0KICAidHlwZSI6ICJub25lIiwNCiAgImhvc3QiOiAiaXB2Ni54cmVuYmxvZy5jb20iLA0KICAicGF0aCI6ICIveHJlbmJsb2cvIiwNCiAgInRscyI6ICJ0bHMiLA0KICAic25pIjogIiINCn0= 16 | ss://YWVzLTI1Ni1nY206S2l4THZLendqZWtHMDBybUAxMzQuMTk1LjE5Ni44MTo1NTAw#mattkaydiary.com%7c%e5%8a%a0%e6%8b%bf%e5%a4%a7(CA)Canada%2fToronto 17 | ss://YWVzLTI1Ni1nY206cEtFVzhKUEJ5VFZUTHRNQDE3Mi45OS4xOTAuOTI6NDQz#mattkaydiary.com%7c%e8%8b%b1%e5%9b%bd(GB)United+Kiongdom%2fLondon 18 | ss://YWVzLTI1Ni1nY206S2l4THZLendqZWtHMDBybQ@134.195.196.81:8000#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_454 19 | ss://YWVzLTI1Ni1nY206ZzVNZUQ2RnQzQ1dsSklk@134.195.196.81:5003#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_455 20 | ss://YWVzLTI1Ni1nY206Y2RCSURWNDJEQ3duZklO@134.195.196.68:8118#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_459 21 | ss://YWVzLTI1Ni1nY206a0RXdlhZWm9UQmNHa0M0@134.195.196.187:8882#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_468 22 | ss://YWVzLTI1Ni1nY206ZmFCQW9ENTRrODdVSkc3@134.195.196.81:2375#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_481 23 | ss://YWVzLTI1Ni1nY206UmV4bkJnVTdFVjVBRHhH@134.195.196.187:7002#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_490 24 | ss://YWVzLTI1Ni1nY206WEtGS2wyclVMaklwNzQ@134.195.196.3:8008#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_491 25 | ss://YWVzLTI1Ni1nY206Y2RCSURWNDJEQ3duZklO@134.195.196.81:8119#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_492 26 | ss://YWVzLTI1Ni1nY206ekROVmVkUkZQUWV4Rzl2@134.195.196.68:6379#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91%20https://1808.ga%20%E8%8A%82%E7%82%B9_497 27 | vmess://eyJhZGQiOiJrZWxpYXoxLnNjc2V2ZXJzLmNmIiwiYWlkIjowLCJob3N0IjoiIiwiaWQiOiI5OWVkYWYwZS1hMjRjLTQzMmMtZWRiNC1lZDBmMmJkMDFhZjEiLCJuZXQiOiJ3cyIsInBhdGgiOiIvIiwicG9ydCI6MjgzODQsInBzIjoiSEtf5LqM54i357+75aKZ572RIGh0dHBzOi8vMTgwOC5nYSDoioLngrlfMTY0Iiwic2N5IjoiYWVzLTEyOC1nY20iLCJ0bHMiOiJub25lIiwidHlwZSI6Im5vbmUiLCJ2IjoyfQ== 28 | vmess://eyJhZGQiOiI2NS41Mi4xNzEuMTU2IiwiYWlkIjoyLCJob3N0IjoiIiwiaWQiOiIwNDcxODRiNy02ZGEyLTNkM2YtYWMyNy02YTFhODcwMWRhZjgiLCJuZXQiOiJ3cyIsInBhdGgiOiIvIiwicG9ydCI6MTUwMzEsInBzIjoiSEtf5LqM54i357+75aKZ572RIGh0dHBzOi8vMTgwOC5nYSDoioLngrlfODMiLCJzY3kiOiJhZXMtMTI4LWdjbSIsInRscyI6Im5vbmUiLCJ0eXBlIjoibm9uZSIsInYiOjJ9 29 | vmess://eyJhZGQiOiJsaW4xLmZyZWU4MG1sLnRrIiwiYWlkIjowLCJob3N0IjoiIiwiaWQiOiI0ZTFkMGIxMi0yNWYwLTM2M2YtODY1OS05YzZhM2NhMWZjZGEiLCJuZXQiOiJ3cyIsInBhdGgiOiIvIiwicG9ydCI6ODAsInBzIjoiSlBf5LqM54i357+75aKZ572RIGh0dHBzOi8vMTgwOC5nYSDoioLngrlfMjUxIiwic2N5IjoiYWVzLTEyOC1nY20iLCJ0bHMiOiJub25lIiwidHlwZSI6Im5vbmUiLCJ2IjoyfQ== 30 | vmess://eyJhZGQiOiJ2cy5tdW1pLmJpZCIsImFpZCI6MCwiaG9zdCI6IiIsImlkIjoiMDc0OGE1NjctY2E5Ny00ZmM4LTlkOWMtOWNhMThmMmI5ZmY0IiwibmV0Ijoid3MiLCJwYXRoIjoiLyIsInBvcnQiOjEwMTI0LCJwcyI6IktSX+S6jOeIt+e/u+Wimee9kSBodHRwczovLzE4MDguZ2Eg6IqC54K5XzI3OCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwic25pIjoiIiwidGxzIjoidGxzIiwidHlwZSI6Im5vbmUiLCJ2IjoyfQ== 31 | vmess://eyJhZGQiOiIxNDYuNTYuOTkuMjQ1IiwiYWlkIjowLCJpZCI6IjU4OTNmN2U1LTk2OTUtNDVhZi1mNjVlLWJkMjk1OGJhOTNmYSIsIm5ldCI6InRjcCIsInBvcnQiOjI1MTM1LCJwcyI6IktSX+S6jOeIt+e/u+Wimee9kSBodHRwczovLzE4MDguZ2Eg6IqC54K5XzQxNiIsInNjeSI6ImFlcy0xMjgtZ2NtIiwidGxzIjoibm9uZSIsInR5cGUiOiJub25lIiwidiI6Mn0= 32 | vmess://eyJhZGQiOiIxNjguMTM4LjE2Mi4xNCIsImFpZCI6MCwiaWQiOiI1ZTY1NmE4NC02NTY2LTRlOTUtOWE1ZS0zNjQwZWIyNmQ0NWMiLCJuZXQiOiJ0Y3AiLCJwb3J0Ijo2MTEwNiwicHMiOiJTR1/kuozniLfnv7vlopnnvZEgaHR0cHM6Ly8xODA4LmdhIOiKgueCuV8yNTciLCJzY3kiOiJhZXMtMTI4LWdjbSIsInRscyI6Im5vbmUiLCJ0eXBlIjoibm9uZSIsInYiOjJ9 33 | vmess://eyJhZGQiOiJ0bXhrLmhlcm9rdWFwcC5jb20iLCJhaWQiOjAsImhvc3QiOiIiLCJpZCI6ImFkODA2NDg3LTJkMjYtNDYzNi05OGI2LWFiODVjYzg1MjFmNyIsIm5ldCI6IndzIiwicGF0aCI6Ii8iLCJwb3J0Ijo0NDMsInBzIjoiVVNf5LqM54i357+75aKZ572RIGh0dHBzOi8vMTgwOC5nYSDoioLngrlfMTY5Iiwic2N5IjoiYWVzLTEyOC1nY20iLCJzbmkiOiIiLCJ0bHMiOiJ0bHMiLCJ0eXBlIjoibm9uZSIsInYiOjJ9 34 | vmess://eyJhZGQiOiJyZXN0bGVzcy1sYWtlLWM0MzkuMzc3OTU1NjM1LndvcmtlcnMuZGV2IiwiYWlkIjowLCJob3N0IjoiIiwiaWQiOiJhZDgwNjQ4Ny0yZDI2LTQ2MzYtOThiNi1hYjg1Y2M4NTIxZjciLCJuZXQiOiJ3cyIsInBhdGgiOiIvIiwicG9ydCI6NDQzLCJwcyI6IuS6jOeIt+e/u+Wimee9kSBodHRwczovLzE4MDguZ2Eg6IqC54K5XzE1NCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwic25pIjoiIiwidGxzIjoidGxzIiwidHlwZSI6Im5vbmUiLCJ2IjoyfQ== 35 | ss://YWVzLTI1Ni1nY206ZTRGQ1dyZ3BramkzUVlAMTY5LjE5Ny4xNDIuOTk6OTEwMQ==#US_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91https%3A%2F%2F1808.ga_50 36 | ss://YWVzLTI1Ni1nY206cEtFVzhKUEJ5VFZUTHRNQDE2OS4xOTcuMTQyLjk5OjQ0Mw==#US_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91https%3A%2F%2F1808.ga_56 37 | ss://YWVzLTI1Ni1nY206ZzVNZUQ2RnQzQ1dsSklkQDEzNC4xOTUuMTk2LjgxOjUwMDQ=#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91https%3A%2F%2F1808.ga_38 38 | ss://YWVzLTI1Ni1nY206a0RXdlhZWm9UQmNHa0M0QDEzNC4xOTUuMTk2LjgxOjg4ODI=#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91https%3A%2F%2F1808.ga_18 39 | ss://YWVzLTI1Ni1nY206WTZSOXBBdHZ4eHptR0NAMTM0LjE5NS4xOTYuODE6MzMwNg==#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91https%3A%2F%2F1808.ga_15 40 | ss://YWVzLTI1Ni1nY206WEtGS2wyclVMaklwNzRAMTM0LjE5NS4xOTYuNjg6ODAwOA==#%F0%9F%87%A8%F0%9F%87%A6CA-134.195.196.68-07 41 | ss://YWVzLTI1Ni1nY206WTZSOXBBdHZ4eHptR0NAMTM0LjE5NS4xOTYuODE6NTAwMA==#CA_%E4%BA%8C%E7%88%B7%E7%BF%BB%E5%A2%99%E7%BD%91https%3A%2F%2F1808.ga_22 42 | ss://YWVzLTI1Ni1nY206ZTRGQ1dyZ3BramkzUVlAMTcyLjk5LjE5MC45Mjo5MTAy#%F0%9F%87%AC%F0%9F%87%A7GB-172.99.190.92-06 43 | ss://YWVzLTI1Ni1nY206UmV4bkJnVTdFVjVBRHhHQDE3Mi45OS4xOTAuOTI6NzAwMg==#%F0%9F%87%AC%F0%9F%87%A7GB-172.99.190.92-10 44 | ss://YWVzLTI1Ni1nY206WEtGS2wyclVMaklwNzQ@134.195.196.187:8009#github.com/freefq%20-%20%E5%8C%97%E7%BE%8E%E5%9C%B0%E5%8C%BA%20%203 45 | ss://YWVzLTI1Ni1nY206cEtFVzhKUEJ5VFZUTHRN@169.197.142.99:443#github.com/freefq%20-%20%E5%8C%97%E7%BE%8E%E5%9C%B0%E5%8C%BA%20%206 46 | ss://YWVzLTI1Ni1nY206UmV4bkJnVTdFVjVBRHhH@172.99.190.92:7002#github.com/freefq%20-%20%E7%BE%8E%E5%9B%BD%20%208 47 | ss://YWVzLTI1Ni1nY206WTZSOXBBdHZ4eHptR0M@134.195.196.3:3306#github.com/freefq%20-%20%E5%8C%97%E7%BE%8E%E5%9C%B0%E5%8C%BA%20%209 48 | ss://YWVzLTI1Ni1nY206cEtFVzhKUEJ5VFZUTHRN@134.195.196.68:443#github.com/freefq%20-%20%E5%8C%97%E7%BE%8E%E5%9C%B0%E5%8C%BA%20%2010 49 | ss://YWVzLTI1Ni1nY206ZTRGQ1dyZ3BramkzUVk@134.195.196.81:9101#github.com/freefq%20-%20%E5%8C%97%E7%BE%8E%E5%9C%B0%E5%8C%BA%20%2011 50 | ss://YWVzLTI1Ni1nY206cEtFVzhKUEJ5VFZUTHRN@172.99.190.92:443#github.com/freefq%20-%20%E7%BE%8E%E5%9B%BD%20%2012 51 | >>>>>>> e892a3036f6dce30aeec3d5aa315c7d8a89e6fb2 52 | -------------------------------------------------------------------------------- /subscribe/v2ray_mat.txt: -------------------------------------------------------------------------------- 1 | c3M6Ly9ZV1Z6TFRJMU5pMW5ZMjA2VkVWNmFtWkJXWEV5U1dwMGRXOVRRREUwTVM0eE5qUXVNemt1TVRRMk9qWTJPVGM9I21hdHRrYXlkaWFyeS5jb20lN2MlZTYlOTYlYWYlZTYlYjQlOWIlZTQlYmMlOTAlZTUlODUlOGIoU0spU2xvdmFraWElMmZCcmF0aXNsYXZhDQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NUxpdDVadTk1WSt3NXJtK0tGUlhLVlJoYVhkaGJpOURhWFI1SUU5bVptbGpaU0lzRFFvZ0lDSmhaR1FpT2lBaU5qRXVNakl5TGpJd01pNHhOREFpTEEwS0lDQWljRzl5ZENJNklDSXpNemM1TWlJc0RRb2dJQ0pwWkNJNklDSmxOVFZqWkRFNE1pMHdNV0l3TFRSbVlqY3RZVFV4TUMwek5qTTNNREZoTkRreFl6VWlMQTBLSUNBaVlXbGtJam9nSWpBaUxBMEtJQ0FpYzJONUlqb2dJbUYxZEc4aUxBMEtJQ0FpYm1WMElqb2dJbmR6SWl3TkNpQWdJblI1Y0dVaU9pQWlibTl1WlNJc0RRb2dJQ0pvYjNOMElqb2dJaUlzRFFvZ0lDSndZWFJvSWpvZ0lpOGlMQTBLSUNBaWRHeHpJam9nSWlJc0RRb2dJQ0p6Ym1raU9pQWlJZzBLZlE9PQ0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODVMaXQ1WnU5NmFhWjVyaXZMK1M0cmVXYnZlV1BzT2E1dmloRFRpbERhR2x1WVM5VGFHVnVlbWhsYmkvbHNJL2t1SnpubW9UbnFJdmx1by9tbktyb2c3M25zcjdsaDRib3I0YmxpS3NvNVkrdjZJTzk1cGl2NUxpdDZMMnM2SXFDNTRLNUtTSXNEUW9nSUNKaFpHUWlPaUFpVmpFd05DNWlaM0J1WlhRdWRHOXdJaXdOQ2lBZ0luQnZjblFpT2lBaU1qWXhNRFFpTEEwS0lDQWlhV1FpT2lBaVpXWXpOakZqT0RNdE9HSTRPUzB6T1RVd0xUbGpPV0l0Tm1Oall6RTNOMlUyTWpnMUlpd05DaUFnSW1GcFpDSTZJQ0l3SWl3TkNpQWdJbk5qZVNJNklDSmhkWFJ2SWl3TkNpQWdJbTVsZENJNklDSjNjeUlzRFFvZ0lDSjBlWEJsSWpvZ0ltNXZibVVpTEEwS0lDQWlhRzl6ZENJNklDSldNVEEwTG1KbmNHNWxkQzUwYjNBaUxBMEtJQ0FpY0dGMGFDSTZJQ0l2WVdSdGFXNGlMQTBLSUNBaWRHeHpJam9nSWlJc0RRb2dJQ0p6Ym1raU9pQWlJZzBLZlE9PQ0Kc3M6Ly9ZV1Z6TFRJMU5pMW5ZMjA2WlRCMWVXRnJaVzVrWnpkQWVDNW5iM1J2ZFhRdWQyOXlhem96TURBek1RPT0jbWF0dGtheWRpYXJ5LmNvbSU3YyVlNCViOCVhZCVlNSU5YiViZCVlOSVhNiU5OSVlNiViOCVhZiUyZiVlNCViOCVhZCVlNSU5YiViZCVlNSU4ZiViMCVlNiViOSViZShDTilDaGluYSUyZlNoZW56aGVuJTJmJWU1JWIwJThmJWU0JWI4JTljJWU3JTlhJTg0JWU3JWE4JThiJWU1JWJhJThmJWU2JTljJWFhJWU4JTgzJWJkJWU3JWIyJWJlJWU1JTg3JTg2JWU4JWFmJTg2JWU1JTg4JWFiKCVlNSU4ZiVhZiVlOCU4MyViZCVlNiU5OCVhZiVlNCViOCVhZCVlOCViZCVhYyVlOCU4YSU4MiVlNyU4MiViOSkNCnNzOi8vWVdWekxUSTFOaTFuWTIwNlpUQjFlV0ZyWlc1a1p6ZEFlQzVuYjNSdmRYUXVkMjl5YXpvek1EQXhNZz09I21hdHRrYXlkaWFyeS5jb20lN2MlZTQlYjglYWQlZTUlOWIlYmQlZTklYTYlOTklZTYlYjglYWYlMmYlZTQlYjglYWQlZTUlOWIlYmQlZTUlOGYlYjAlZTYlYjklYmUoQ04pQ2hpbmElMmZTaGVuemhlbiUyZiVlNSViMCU4ZiVlNCViOCU5YyVlNyU5YSU4NCVlNyVhOCU4YiVlNSViYSU4ZiVlNiU5YyVhYSVlOCU4MyViZCVlNyViMiViZSVlNSU4NyU4NiVlOCVhZiU4NiVlNSU4OCVhYiglZTUlOGYlYWYlZTglODMlYmQlZTYlOTglYWYlZTQlYjglYWQlZTglYmQlYWMlZTglOGElODIlZTclODIlYjkpDQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NTc2TzVadTlLRlZUS1ZWVFFTOU1iM01nUVc1blpXeGxjeUlzRFFvZ0lDSmhaR1FpT2lBaWRYTXhMbXh2Ykhad2N5NTRlWG9pTEEwS0lDQWljRzl5ZENJNklDSTJNREEyTUNJc0RRb2dJQ0pwWkNJNklDSTVOVGc0Tm1NM05pMDVNakEzTFRRNFltUXRPV1UyTkMxa01UUXlNbVUzTldGa09Ea2lMQTBLSUNBaVlXbGtJam9nSWpBaUxBMEtJQ0FpYzJONUlqb2dJbUYxZEc4aUxBMEtJQ0FpYm1WMElqb2dJbmR6SWl3TkNpQWdJblI1Y0dVaU9pQWlibTl1WlNJc0RRb2dJQ0pvYjNOMElqb2dJblZ6TVM1c2IyeDJjSE11ZUhsNklpd05DaUFnSW5CaGRHZ2lPaUFpTDBGWk9USXdWVTFTSWl3TkNpQWdJblJzY3lJNklDSjBiSE1pTEEwS0lDQWljMjVwSWpvZ0lpSU5DbjA9DQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NXBhdzVZcWc1WjJoS0ZOSEtWTnBibWRoY0c5eVpTOVRhVzVuWVhCdmNtVWlMQTBLSUNBaVlXUmtJam9nSW5ZeUxUSXVaMjlrYkdsbmFIUXVlSGw2SWl3TkNpQWdJbkJ2Y25RaU9pQWlNekExTWpZaUxBMEtJQ0FpYVdRaU9pQWlORE16TURoa01qY3RPVFJsWXkwME1EaGxMV0U0WmpZdFpEWTRNbU5tWWprNVkyRTVJaXdOQ2lBZ0ltRnBaQ0k2SUNJd0lpd05DaUFnSW5OamVTSTZJQ0poWlhNdE1USTRMV2RqYlNJc0RRb2dJQ0p1WlhRaU9pQWlkM01pTEEwS0lDQWlkSGx3WlNJNklDSnViMjVsSWl3TkNpQWdJbWh2YzNRaU9pQWlkakl0TWk1bmIyUnNhV2RvZEM1NGVYb2lMQTBLSUNBaWNHRjBhQ0k2SUNJdk5UUm1Oak0wWm5NaUxBMEtJQ0FpZEd4eklqb2dJblJzY3lJc0RRb2dJQ0p6Ym1raU9pQWlkakl0TWk1bmIyUnNhV2RvZEM1NGVYb2lEUXA5DQp0cm9qYW46Ly83WjI5RFJyMXRzQGNwLWFzdXMubWw6NTAyNzUjbWF0dGtheWRpYXJ5LmNvbSU3YyVlNiU5NiViMCVlNSU4YSVhMCVlNSU5ZCVhMShTRylTaW5nYXBvcmUlMmZTaW5nYXBvcmUNCnRyb2phbjovL2MxOWQxNDMyLThiM2UtNDgxOC04ODM3LTNkMTYwY2Y2NTkwOEBqZ3dkYjIuZ2FveC5tbDo0NDMjbWF0dGtheWRpYXJ5LmNvbSU3YyVlNiU5NyVhNSVlNiU5YyVhYyhKUClKYXBhbiUyZk9zYWthDQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NUxpdDVadTk2YWFaNXJpdkwrUzRyZVdidmVXUHNPYTV2aWhEVGlsRGFHbHVZUzlDWldscWFXNW5MK1d3aitTNG5PZWFoT2VvaStXNmorYWNxdWlEdmVleXZ1V0hodWl2aHVXSXF5amxqNi9vZzczbW1LL2t1SzNvdmF6b2lvTG5ncmtwSWl3TkNpQWdJbUZrWkNJNklDSnphR04xTG1admNtZGxZblZyYTJsMExtTnZiU0lzRFFvZ0lDSndiM0owSWpvZ0lqUTNNemc1SWl3TkNpQWdJbWxrSWpvZ0ltWTJPREJrWm1RNExUTmlOVGt0TkRoaFppMWhaV0U0TFRGa05HSmpNRGxoTVRjd05TSXNEUW9nSUNKaGFXUWlPaUFpTUNJc0RRb2dJQ0p6WTNraU9pQWlZWFYwYnlJc0RRb2dJQ0p1WlhRaU9pQWlkR053SWl3TkNpQWdJblI1Y0dVaU9pQWlibTl1WlNJc0RRb2dJQ0pvYjNOMElqb2dJbk5vWTNVdVptOXlaMlZpZFd0cmFYUXVZMjl0SWl3TkNpQWdJbkJoZEdnaU9pQWlMeUlzRFFvZ0lDSjBiSE1pT2lBaUlpd05DaUFnSW5OdWFTSTZJQ0lpRFFwOQ0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODU3Nk81WnU5S0ZWVEtWVlRRUzlNYjNNZ1FXNW5aV3hsY3lJc0RRb2dJQ0poWkdRaU9pQWlORFV1TnpZdU56RXVNak16SWl3TkNpQWdJbkJ2Y25RaU9pQWlORFk1T0RNaUxBMEtJQ0FpYVdRaU9pQWlOamt3T1RreU5UZ3RNVFEzTmkwME5tUmtMV0UxTVdJdE9EUmxPVEUxWlRrME1XSmxJaXdOQ2lBZ0ltRnBaQ0k2SUNJd0lpd05DaUFnSW5OamVTSTZJQ0poZFhSdklpd05DaUFnSW01bGRDSTZJQ0ozY3lJc0RRb2dJQ0owZVhCbElqb2dJbTV2Ym1VaUxBMEtJQ0FpYUc5emRDSTZJQ0kwTlM0M05pNDNNUzR5TXpNaUxBMEtJQ0FpY0dGMGFDSTZJQ0l2TVhSSFN6Z3liRlV2SWl3TkNpQWdJblJzY3lJNklDSm1ZV3h6WlNJc0RRb2dJQ0p6Ym1raU9pQWlJZzBLZlE9PQ0KdHJvamFuOi8vZTVkNDYzNjVlMjVlMzFkOTQyNzljMmJjZjkzMzkwYTJAdXNhLXNyLTEwNS5taXRvcHRpb24uY29tOjQ0MyNtYXR0a2F5ZGlhcnkuY29tJTdjJWU3JWJlJThlJWU1JTliJWJkKFVTKVVTQSUyZlNjb3R0c2RhbGUNCnZtZXNzOi8vZXcwS0lDQWlkaUk2SUNJeUlpd05DaUFnSW5Ceklqb2dJbTFoZEhScllYbGthV0Z5ZVM1amIyMTg1NzZPNVp1OUtGVlRLVlZUUVM5VFlXNGdTbTl6WlNJc0RRb2dJQ0poWkdRaU9pQWlNVFUxTGpJME9DNHlNREl1TWpBeklpd05DaUFnSW5CdmNuUWlPaUFpTVRRMU5qUWlMQTBLSUNBaWFXUWlPaUFpTkdFd1pHRXpOemt0WVRkall5MDBNemc1TFRnNFpEY3RORFUxTVRSaU9EazJPRGd6SWl3TkNpQWdJbUZwWkNJNklDSXdJaXdOQ2lBZ0luTmplU0k2SUNKaGRYUnZJaXdOQ2lBZ0ltNWxkQ0k2SUNKMFkzQWlMQTBLSUNBaWRIbHdaU0k2SUNKdWIyNWxJaXdOQ2lBZ0ltaHZjM1FpT2lBaU1UVTFMakkwT0M0eU1ESXVNakF6SWl3TkNpQWdJbkJoZEdnaU9pQWlMeUlzRFFvZ0lDSjBiSE1pT2lBaUlpd05DaUFnSW5OdWFTSTZJQ0lpRFFwOQ0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODU3Nk81WnU5S0ZWVEtWVlRRUzlRYVhOallYUmhkMkY1SUZSdmQyNXphR2x3SWl3TkNpQWdJbUZrWkNJNklDSXlNRGN1TWpRMkxqazBMakk0SWl3TkNpQWdJbkJ2Y25RaU9pQWlOREl6T0RNaUxBMEtJQ0FpYVdRaU9pQWlORGMzTTJSbVpHTXRPV000TlMwME9EY3pMVGczTWpBdFkyVTRZMlkxWmpjMFpqZGpJaXdOQ2lBZ0ltRnBaQ0k2SUNJd0lpd05DaUFnSW5OamVTSTZJQ0poZFhSdklpd05DaUFnSW01bGRDSTZJQ0owWTNBaUxBMEtJQ0FpZEhsd1pTSTZJQ0p1YjI1bElpd05DaUFnSW1odmMzUWlPaUFpTWpBM0xqSTBOaTQ1TkM0eU9DSXNEUW9nSUNKd1lYUm9Jam9nSWk5NGNtVnVZbXh2Wnk4aUxBMEtJQ0FpZEd4eklqb2dJaUlzRFFvZ0lDSnpibWtpT2lBaUlnMEtmUT09DQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NTc2TzVadTlLRlZUS1ZWVFFTOU1iM01nUVc1blpXeGxjeUlzRFFvZ0lDSmhaR1FpT2lBaU5EVXVOell1TnpFdU1qTXpJaXdOQ2lBZ0luQnZjblFpT2lBaU5EWTVPRE1pTEEwS0lDQWlhV1FpT2lBaU5qa3dPVGt5TlRndE1UUTNOaTAwTm1Sa0xXRTFNV0l0T0RSbE9URTFaVGswTVdKbElpd05DaUFnSW1GcFpDSTZJQ0l3SWl3TkNpQWdJbk5qZVNJNklDSmhkWFJ2SWl3TkNpQWdJbTVsZENJNklDSjNjeUlzRFFvZ0lDSjBlWEJsSWpvZ0ltNXZibVVpTEEwS0lDQWlhRzl6ZENJNklDSWlMQTBLSUNBaWNHRjBhQ0k2SUNJdk1YUkhTemd5YkZVdklpd05DaUFnSW5Sc2N5STZJQ0lpTEEwS0lDQWljMjVwSWpvZ0lpSU5DbjA9DQp0cm9qYW46Ly9kYTc3N2FhZS1kZWZiLTQxZDAtYTE4My0yYzI3ZGEyYjQ2NzdAamd3ZGozLmdhb3gubWw6NDQzI21hdHRrYXlkaWFyeS5jb20lN2MlZTYlOTclYTUlZTYlOWMlYWMoSlApSmFwYW4lMmZUb2t5bw0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODVMaXQ1WnU5NmFhWjVyaXZMK1M0cmVXYnZlV1BzT2E1dmloRFRpbERhR2x1WVM5Q1pXbHFhVzVuTCtXd2orUzRuT2VhaE9lb2krVzZqK2FjcXVpRHZlZXl2dVdIaHVpdmh1V0lxeWpsajYvb2c3M21tSy9rdUszb3Zhem9pb0xuZ3JrcElpd05DaUFnSW1Ga1pDSTZJQ0p6YUdOMUxtWnZjbWRsWW5WcmEybDBMbU52YlNJc0RRb2dJQ0p3YjNKMElqb2dJalEzTXpnNUlpd05DaUFnSW1sa0lqb2dJbVkyT0RCa1ptUTRMVE5pTlRrdE5EaGhaaTFoWldFNExURmtOR0pqTURsaE1UY3dOU0lzRFFvZ0lDSmhhV1FpT2lBaU1DSXNEUW9nSUNKelkza2lPaUFpWVhWMGJ5SXNEUW9nSUNKdVpYUWlPaUFpZEdOd0lpd05DaUFnSW5SNWNHVWlPaUFpYm05dVpTSXNEUW9nSUNKb2IzTjBJam9nSW5Ob1kzVXVabTl5WjJWaWRXdHJhWFF1WTI5dElpd05DaUFnSW5CaGRHZ2lPaUFpTHpVMk5HUm1ZVEl3THlJc0RRb2dJQ0owYkhNaU9pQWlJaXdOQ2lBZ0luTnVhU0k2SUNJaURRcDkNCnZtZXNzOi8vZXcwS0lDQWlkaUk2SUNJeUlpd05DaUFnSW5Ceklqb2dJbTFoZEhScllYbGthV0Z5ZVM1amIyMTg1NzZPNVp1OUtGVlRLVlZUUVM5RGJHbG1kRzl1SWl3TkNpQWdJbUZrWkNJNklDSjFjek11TXpGMmNHNHVZMjl0SWl3TkNpQWdJbkJ2Y25RaU9pQWlORFF6SWl3TkNpQWdJbWxrSWpvZ0lqSmxaalkwWkdNNExXTmhNMk10TkRWaU9DMWhaRFZtTFRJd09EY3hORFV5TVRRellpSXNEUW9nSUNKaGFXUWlPaUFpTUNJc0RRb2dJQ0p6WTNraU9pQWlZWFYwYnlJc0RRb2dJQ0p1WlhRaU9pQWlkM01pTEEwS0lDQWlkSGx3WlNJNklDSnViMjVsSWl3TkNpQWdJbWh2YzNRaU9pQWlkWE16TGpNeGRuQnVMbU52YlNJc0RRb2dJQ0p3WVhSb0lqb2dJaTltWVhOMGMzTm9Mek14TURJMk16YzBPVE54Y1dOdmJTODJNalpqWmpka09HSmtORGxpTHlJc0RRb2dJQ0owYkhNaU9pQWlkR3h6SWl3TkNpQWdJbk51YVNJNklDSWlEUXA5DQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NUxpdDVadTk2YWFaNXJpdjU0bTU1WWlyNktHTTVwUy81WXk2S0VoTEtVaHZibWRyYjI1bklGTkJVaUJEYUdsdVlTOUliMjVuSUV0dmJtY2lMQTBLSUNBaVlXUmtJam9nSWpReU5taHJMbVpoYm5NNExuaDVlaUlzRFFvZ0lDSndiM0owSWpvZ0lqUTBNeUlzRFFvZ0lDSnBaQ0k2SUNJNU0ySmtZV1ZrTlMweE0yTTFMVE01TWpjdE9UTmtOeTFoTmpnM04yTTFZV000WkRJaUxBMEtJQ0FpWVdsa0lqb2dJaklpTEEwS0lDQWljMk41SWpvZ0ltRjFkRzhpTEEwS0lDQWlibVYwSWpvZ0luZHpJaXdOQ2lBZ0luUjVjR1VpT2lBaWJtOXVaU0lzRFFvZ0lDSm9iM04wSWpvZ0lqUXlObWhyTG1aaGJuTTRMbmg1ZWlJc0RRb2dJQ0p3WVhSb0lqb2dJaTl5WVhraUxBMEtJQ0FpZEd4eklqb2dJblJzY3lJc0RRb2dJQ0p6Ym1raU9pQWlJZzBLZlE9PQ0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODVMaXQ1WnU5NmFhWjVyaXZMK1M0cmVXYnZlV1BzT2E1dmloRFRpbERhR2x1WVM5Q1pXbHFhVzVuTCtXd2orUzRuT2VhaE9lb2krVzZqK2FjcXVpRHZlZXl2dVdIaHVpdmh1V0lxeWpsajYvb2c3M21tSy9rdUszb3Zhem9pb0xuZ3JrcElpd05DaUFnSW1Ga1pDSTZJQ0pXTXpBNUxtSm5jRzVsZEM1MGIzQWlMQTBLSUNBaWNHOXlkQ0k2SUNJeU5qTXdPU0lzRFFvZ0lDSnBaQ0k2SUNKbFpqTTJNV000TXkwNFlqZzVMVE01TlRBdE9XTTVZaTAyWTJOak1UYzNaVFl5T0RVaUxBMEtJQ0FpWVdsa0lqb2dJakFpTEEwS0lDQWljMk41SWpvZ0ltRjFkRzhpTEEwS0lDQWlibVYwSWpvZ0luUmpjQ0lzRFFvZ0lDSjBlWEJsSWpvZ0ltNXZibVVpTEEwS0lDQWlhRzl6ZENJNklDSmtiM2R1Ykc5aFpDNTNhVzVrYjNkemRYQmtZWFJsTG1OdmJTSXNEUW9nSUNKd1lYUm9Jam9nSWk5aFpHMXBiaUlzRFFvZ0lDSjBiSE1pT2lBaUlpd05DaUFnSW5OdWFTSTZJQ0lpRFFwOQ0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODU3Nk81WnU5S0ZWVEtWVlRRUzlUWVc0Z1NtOXpaU0lzRFFvZ0lDSmhaR1FpT2lBaU1UVTFMakkwT0M0eU1ESXVNakF6SWl3TkNpQWdJbkJ2Y25RaU9pQWlNVFExTmpRaUxBMEtJQ0FpYVdRaU9pQWlOR0V3WkdFek56a3RZVGRqWXkwME16ZzVMVGc0WkRjdE5EVTFNVFJpT0RrMk9EZ3pJaXdOQ2lBZ0ltRnBaQ0k2SUNJd0lpd05DaUFnSW5OamVTSTZJQ0poZFhSdklpd05DaUFnSW01bGRDSTZJQ0owWTNBaUxBMEtJQ0FpZEhsd1pTSTZJQ0p1YjI1bElpd05DaUFnSW1odmMzUWlPaUFpTVRVMUxqSTBPQzR5TURJdU1qQXpJaXdOQ2lBZ0luQmhkR2dpT2lBaUwzZHpJaXdOQ2lBZ0luUnNjeUk2SUNKbVlXeHpaU0lzRFFvZ0lDSnpibWtpT2lBaUlnMEtmUT09DQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NUxpdDVadTk1WSt3NXJtK0tGUlhLVlJoYVhkaGJpOURhWFI1SUU5bVptbGpaU0lzRFFvZ0lDSmhaR1FpT2lBaU5qRXVNakl5TGpJd01pNHhOREFpTEEwS0lDQWljRzl5ZENJNklDSXpNemM1TWlJc0RRb2dJQ0pwWkNJNklDSmxOVFZqWkRFNE1pMHdNV0l3TFRSbVlqY3RZVFV4TUMwek5qTTNNREZoTkRreFl6VWlMQTBLSUNBaVlXbGtJam9nSWpBaUxBMEtJQ0FpYzJONUlqb2dJbUYxZEc4aUxBMEtJQ0FpYm1WMElqb2dJbmR6SWl3TkNpQWdJblI1Y0dVaU9pQWlibTl1WlNJc0RRb2dJQ0pvYjNOMElqb2dJall4TGpJeU1pNHlNREl1TVRRd0lpd05DaUFnSW5CaGRHZ2lPaUFpTHlJc0RRb2dJQ0owYkhNaU9pQWlJaXdOQ2lBZ0luTnVhU0k2SUNJaURRcDkNCnZtZXNzOi8vZXcwS0lDQWlkaUk2SUNJeUlpd05DaUFnSW5Ceklqb2dJbTFoZEhScllYbGthV0Z5ZVM1amIyMTg1TGl0NVp1OTZhYVo1cml2TCtTNHJlV2J2ZVdQc09hNXZpaERUaWxEYUdsdVlTOVRhR1Z1ZW1obGJpL2xzSS9rdUp6bm1vVG5xSXZsdW8vbW5Lcm9nNzNuc3I3bGg0Ym9yNGJsaUtzbzVZK3Y2SU85NXBpdjVMaXQ2TDJzNklxQzU0SzVLU0lzRFFvZ0lDSmhaR1FpT2lBaVZqSXdNeTVpWjNCdVpYUXVkRzl3SWl3TkNpQWdJbkJ2Y25RaU9pQWlNall5TURNaUxBMEtJQ0FpYVdRaU9pQWlaV1l6TmpGak9ETXRPR0k0T1Mwek9UVXdMVGxqT1dJdE5tTmpZekUzTjJVMk1qZzFJaXdOQ2lBZ0ltRnBaQ0k2SUNJd0lpd05DaUFnSW5OamVTSTZJQ0poZFhSdklpd05DaUFnSW01bGRDSTZJQ0owWTNBaUxBMEtJQ0FpZEhsd1pTSTZJQ0p1YjI1bElpd05DaUFnSW1odmMzUWlPaUFpWkc5M2JteHZZV1F1ZDJsdVpHOTNjM1Z3WkdGMFpTNWpiMjBpTEEwS0lDQWljR0YwYUNJNklDSXZZV1J0YVc0aUxBMEtJQ0FpZEd4eklqb2dJaUlzRFFvZ0lDSnpibWtpT2lBaUlnMEtmUT09DQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NTc2TzVadTlLRlZUS1ZWVFFTOVRZVzRnU205elpTSXNEUW9nSUNKaFpHUWlPaUFpTVRVMUxqSTBPQzR5TURJdU1qQXpJaXdOQ2lBZ0luQnZjblFpT2lBaU1UUTFOalFpTEEwS0lDQWlhV1FpT2lBaU5HRXdaR0V6TnprdFlUZGpZeTAwTXpnNUxUZzRaRGN0TkRVMU1UUmlPRGsyT0Rneklpd05DaUFnSW1GcFpDSTZJQ0l3SWl3TkNpQWdJbk5qZVNJNklDSmhkWFJ2SWl3TkNpQWdJbTVsZENJNklDSjBZM0FpTEEwS0lDQWlkSGx3WlNJNklDSnViMjVsSWl3TkNpQWdJbWh2YzNRaU9pQWlJaXdOQ2lBZ0luQmhkR2dpT2lBaUx5SXNEUW9nSUNKMGJITWlPaUFpSWl3TkNpQWdJbk51YVNJNklDSWlEUXA5DQp0cm9qYW46Ly9jZmJhYmYzMS0yY2Y2LTQwY2EtOTY4OC1hYmJiNjgyMzcwYWFAY24uc3BlZWRhYmMueHl6OjMyMDAyP3NuaT1qcC1iZ3Auc3BlZWRhY2NlbGVyYXRlLmNvbSNtYXR0a2F5ZGlhcnkuY29tJTdjJWU0JWI4JWFkJWU1JTliJWJkJWU5JWE2JTk5JWU2JWI4JWFmJTJmJWU0JWI4JWFkJWU1JTliJWJkJWU1JThmJWIwJWU2JWI5JWJlKENOKUNoaW5hJTJmU2hlbnpoZW4lMmYlZTUlYjAlOGYlZTQlYjglOWMlZTclOWElODQlZTclYTglOGIlZTUlYmElOGYlZTYlOWMlYWElZTglODMlYmQlZTclYjIlYmUlZTUlODclODYlZTglYWYlODYlZTUlODglYWIoJWU1JThmJWFmJWU4JTgzJWJkJWU2JTk4JWFmJWU0JWI4JWFkJWU4JWJkJWFjJWU4JThhJTgyJWU3JTgyJWI5KQ0KdHJvamFuOi8vMDA2YmFhM2YtNGJjMy00OTE1LWI2MGQtYzhjNWRhZTExYTExQGpnd2hkbGIzLmdhb3gubWw6NDQzI21hdHRrYXlkaWFyeS5jb20lN2MlZTUlOGQlYjAlZTUlYmElYTYoSU4pSW5kaWElMmZIeWRlcmFiYWQNCnRyb2phbjovLzcxYjU1YTg0LTNmYWMtNDQ1OC1hYmZmLWVhYWQ3OTIxOWM5MUBqZ3dsZDMuZ2FveC5tbDo0NDMjbWF0dGtheWRpYXJ5LmNvbSU3YyVlOCU4YiViMSVlNSU5YiViZChHQilVbml0ZWQrS2lvbmdkb20lMmZTbG91Z2gNCnRyb2phbjovL2U1ZDQ2MzY1ZTI1ZTMxZDk0Mjc5YzJiY2Y5MzM5MGEyQHNnLXNyLTExNi5taXRvcHRpb24uY29tOjQ0MyNtYXR0a2F5ZGlhcnkuY29tJTdjJWU2JTk2JWIwJWU1JThhJWEwJWU1JTlkJWExKFNHKVNpbmdhcG9yZSUyZlNpbmdhcG9yZQ0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODVwZWw1cHlzS0VwUUtVcGhjR0Z1TDFSdmEzbHZJaXdOQ2lBZ0ltRmtaQ0k2SUNJeE5EQXVNak00TGpRNExqRTVOQ0lzRFFvZ0lDSndiM0owSWpvZ0lqZzRPRGdpTEEwS0lDQWlhV1FpT2lBaU1qUm1NV1JtWVdRdE1USTJOeTAwTWprM0xUaGxPRGd0TUdVNVlqaGxaalEzWlRRM0lpd05DaUFnSW1GcFpDSTZJQ0l3SWl3TkNpQWdJbk5qZVNJNklDSmhkWFJ2SWl3TkNpQWdJbTVsZENJNklDSjBZM0FpTEEwS0lDQWlkSGx3WlNJNklDSnViMjVsSWl3TkNpQWdJbWh2YzNRaU9pQWlZekkzT0RJeFppNXlaQzVqYkc5MVpHWnNZWEpsTG5ONWMzUmxiWE1pTEEwS0lDQWljR0YwYUNJNklDSXZjeTlqTWpjNE1qRm1MbVp0TG1samJHOTFaQzVqYjIwNk1UWTNNRGdpTEEwS0lDQWlkR3h6SWpvZ0lpSXNEUW9nSUNKemJta2lPaUFpSWcwS2ZRPT0NCnZtZXNzOi8vZXcwS0lDQWlkaUk2SUNJeUlpd05DaUFnSW5Ceklqb2dJbTFoZEhScllYbGthV0Z5ZVM1amIyMTg1TGl0NVp1OTZhYVo1cml2TCtTNHJlV2J2ZVdQc09hNXZpaERUaWxEYUdsdVlTOVRhR1Z1ZW1obGJpL2xzSS9rdUp6bm1vVG5xSXZsdW8vbW5Lcm9nNzNuc3I3bGg0Ym9yNGJsaUtzbzVZK3Y2SU85NXBpdjVMaXQ2TDJzNklxQzU0SzVLU0lzRFFvZ0lDSmhaR1FpT2lBaVZqSXdNeTVpWjNCdVpYUXVkRzl3SWl3TkNpQWdJbkJ2Y25RaU9pQWlNall5TURNaUxBMEtJQ0FpYVdRaU9pQWlaV1l6TmpGak9ETXRPR0k0T1Mwek9UVXdMVGxqT1dJdE5tTmpZekUzTjJVMk1qZzFJaXdOQ2lBZ0ltRnBaQ0k2SUNJd0lpd05DaUFnSW5OamVTSTZJQ0poZFhSdklpd05DaUFnSW01bGRDSTZJQ0owWTNBaUxBMEtJQ0FpZEhsd1pTSTZJQ0p1YjI1bElpd05DaUFnSW1odmMzUWlPaUFpSWl3TkNpQWdJbkJoZEdnaU9pQWlMeUlzRFFvZ0lDSjBiSE1pT2lBaUlpd05DaUFnSW5OdWFTSTZJQ0lpRFFwOQ0Kc3M6Ly9ZV1Z6TFRJMU5pMW5ZMjA2V0V0R1Myd3ljbFZNYWtsd056UkFNVFk1TGpFNU55NHhOREl1T1RrNk9EQXdPUT09I21hdHRrYXlkaWFyeS5jb20lN2MlZTclYmUlOGUlZTUlOWIlYmQoVVMpVVNBJTJmTG9zK0FuZ2VsZXMNCnZtZXNzOi8vZXcwS0lDQWlkaUk2SUNJeUlpd05DaUFnSW5Ceklqb2dJbTFoZEhScllYbGthV0Z5ZVM1amIyMTg1NzZPNVp1OUtGVlRLVlZUUVM5VFlXNGdSbkpoYm1OcGMyTnZJaXdOQ2lBZ0ltRmtaQ0k2SUNJeE1EUXVNVFl1TWpNdU15SXNEUW9nSUNKd2IzSjBJam9nSWpRME15SXNEUW9nSUNKcFpDSTZJQ0l5TkRobU5HWTJaaTB5TnpCakxUUTNaamN0WW1WaE9DMWxaRGxrT0RrME5EQXdOVFFpTEEwS0lDQWlZV2xrSWpvZ0lqQWlMQTBLSUNBaWMyTjVJam9nSW1GMWRHOGlMQTBLSUNBaWJtVjBJam9nSW5keklpd05DaUFnSW5SNWNHVWlPaUFpYm05dVpTSXNEUW9nSUNKb2IzTjBJam9nSW5sNmEyOTVaV0l0TnpVNU5UTXpNeTVyYjNsbFlpNWhjSEFpTEEwS0lDQWljR0YwYUNJNklDSXZJaXdOQ2lBZ0luUnNjeUk2SUNKMGJITWlMQTBLSUNBaWMyNXBJam9nSWlJTkNuMD0NCnNzOi8vWVdWekxUSTFOaTFuWTIwNlkyUkNTVVJXTkRKRVEzZHVaa2xPUURFMk9TNHhPVGN1TVRReUxqazVPamd4TVRnPSNtYXR0a2F5ZGlhcnkuY29tJTdjJWU3JWJlJThlJWU1JTliJWJkKFVTKVVTQSUyZkxvcytBbmdlbGVzDQp2bWVzczovL2V3MEtJQ0FpZGlJNklDSXlJaXdOQ2lBZ0luQnpJam9nSW0xaGRIUnJZWGxrYVdGeWVTNWpiMjE4NTc2TzVadTlLRlZUS1ZWVFFTOVhZWE5vYVc1bmRHOXVJaXdOQ2lBZ0ltRmtaQ0k2SUNJeExtVjZlV1JtWkdRdVkyOXRJaXdOQ2lBZ0luQnZjblFpT2lBaU5EUXpJaXdOQ2lBZ0ltbGtJam9nSWpSbFpUUTRZV1E0TFRFM09HTXROREJoTWkwNVl6VXlMV0V4TkdVNU1HRXdObVUwT1NJc0RRb2dJQ0poYVdRaU9pQWlNQ0lzRFFvZ0lDSnpZM2tpT2lBaVlYVjBieUlzRFFvZ0lDSnVaWFFpT2lBaWQzTWlMQTBLSUNBaWRIbHdaU0k2SUNKdWIyNWxJaXdOQ2lBZ0ltaHZjM1FpT2lBaU1TNWxlbmxrWm1Sa0xtTnZiU0lzRFFvZ0lDSndZWFJvSWpvZ0lpOXViWE5zSWl3TkNpQWdJblJzY3lJNklDSjBiSE1pTEEwS0lDQWljMjVwSWpvZ0lpSU5DbjA9DQpzczovL1lXVnpMVEkxTmkxblkyMDZaVFJHUTFkeVozQnJhbWt6VVZsQU1UWTVMakU1Tnk0eE5ESXVPVGs2T1RFd01RPT0jbWF0dGtheWRpYXJ5LmNvbSU3YyVlNyViZSU4ZSVlNSU5YiViZChVUylVU0ElMmZMb3MrQW5nZWxlcw0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODU3Nk81WnU5S0ZWVEtWVlRRUzlRYVhOallYUmhkMkY1SUZSdmQyNXphR2x3SWl3TkNpQWdJbUZrWkNJNklDSXlNRGN1TWpRMkxqazBMakk0SWl3TkNpQWdJbkJ2Y25RaU9pQWlOREl6T0RNaUxBMEtJQ0FpYVdRaU9pQWlORGMzTTJSbVpHTXRPV000TlMwME9EY3pMVGczTWpBdFkyVTRZMlkxWmpjMFpqZGpJaXdOQ2lBZ0ltRnBaQ0k2SUNJd0lpd05DaUFnSW5OamVTSTZJQ0poZFhSdklpd05DaUFnSW01bGRDSTZJQ0owWTNBaUxBMEtJQ0FpZEhsd1pTSTZJQ0p1YjI1bElpd05DaUFnSW1odmMzUWlPaUFpTWpBM0xqSTBOaTQ1TkM0eU9DSXNEUW9nSUNKd1lYUm9Jam9nSWk4aUxBMEtJQ0FpZEd4eklqb2dJaUlzRFFvZ0lDSnpibWtpT2lBaUlnMEtmUT09DQpzczovL1lXVnpMVEkxTmkxblkyMDZaVEIxZVdGclpXNWtaemRBZUM1bmIzUnZkWFF1ZDI5eWF6b3pNREEwTVE9PSNtYXR0a2F5ZGlhcnkuY29tJTdjJWU0JWI4JWFkJWU1JTliJWJkJWU5JWE2JTk5JWU2JWI4JWFmJTJmJWU0JWI4JWFkJWU1JTliJWJkJWU1JThmJWIwJWU2JWI5JWJlKENOKUNoaW5hJTJmU2hlbnpoZW4lMmYlZTUlYjAlOGYlZTQlYjglOWMlZTclOWElODQlZTclYTglOGIlZTUlYmElOGYlZTYlOWMlYWElZTglODMlYmQlZTclYjIlYmUlZTUlODclODYlZTglYWYlODYlZTUlODglYWIoJWU1JThmJWFmJWU4JTgzJWJkJWU2JTk4JWFmJWU0JWI4JWFkJWU4JWJkJWFjJWU4JThhJTgyJWU3JTgyJWI5KQ0Kdm1lc3M6Ly9ldzBLSUNBaWRpSTZJQ0l5SWl3TkNpQWdJbkJ6SWpvZ0ltMWhkSFJyWVhsa2FXRnllUzVqYjIxODVwZWw1cHlzS0VwUUtVcGhjR0Z1TDFSdmEzbHZJaXdOQ2lBZ0ltRmtaQ0k2SUNJeE5EQXVNak00TGpRNExqRTVOQ0lzRFFvZ0lDSndiM0owSWpvZ0lqZzRPRGdpTEEwS0lDQWlhV1FpT2lBaU1qUm1NV1JtWVdRdE1USTJOeTAwTWprM0xUaGxPRGd0TUdVNVlqaGxaalEzWlRRM0lpd05DaUFnSW1GcFpDSTZJQ0l3SWl3TkNpQWdJbk5qZVNJNklDSmhkWFJ2SWl3TkNpQWdJbTVsZENJNklDSjBZM0FpTEEwS0lDQWlkSGx3WlNJNklDSnViMjVsSWl3TkNpQWdJbWh2YzNRaU9pQWlNVFF3TGpJek9DNDBPQzR4T1RRaUxBMEtJQ0FpY0dGMGFDSTZJQ0l2SWl3TkNpQWdJblJzY3lJNklDSWlMQTBLSUNBaWMyNXBJam9nSWlJTkNuMD0NCnNzOi8vWVdWekxUSTFOaTFuWTIwNlkyUkNTVVJXTkRKRVEzZHVaa2xPUURNNExqWTRMakV6TlM0eE9UbzRNVEU1I21hdHRrYXlkaWFyeS5jb20lN2MlZTclYmUlOGUlZTUlOWIlYmQoVVMpVVNBJTJmRGFsbGFzDQpzczovL1lXVnpMVEkxTmkxblkyMDZXVFpTT1hCQmRIWjRlSHB0UjBOQU1UVTRMakkwTnk0eU1EVXVPRGM2TlRZd01RPT0jbWF0dGtheWRpYXJ5LmNvbSU3YyVlNiU5NyVhNSVlNiU5YyVhYyhKUClKYXBhbiUyZk9zYWthDQpzczovL1lXVnpMVEkxTmkxblkyMDZjRXRGVnpoS1VFSjVWRlpVVEhSTlFERTFPQzR5TkRjdU1qQTFMamczT2pRME13PT0jbWF0dGtheWRpYXJ5LmNvbSU3YyVlNiU5NyVhNSVlNiU5YyVhYyhKUClKYXBhbiUyZk9zYWthDQp0cm9qYW46Ly83YjQwNjZhZS1hY2NjLTExZWItYThiZi1mMjNjOTFjZmJiYzlAc3NsLnRjcGJici5uZXQ6NDQzI21hdHRrYXlkaWFyeS5jb20lN2MlZTQlYjglYWQlZTUlOWIlYmQlZTklYTYlOTklZTYlYjglYWYlZTclODklYjklZTUlODglYWIlZTglYTElOGMlZTYlOTQlYmYlZTUlOGMlYmEoSEspSG9uZ2tvbmcrU0FSK0NoaW5hJTJmSG9uZytLb25n -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Author: Leo Lee (leejianzhao@gmail.com) 3 | Date: 2021-07-18 16:34:45 4 | LastEditTime: 2022-03-24 08:32:11 5 | FilePath: \RSS\main.py 6 | Description: 7 | ''' 8 | 9 | import base64 10 | import requests 11 | import json 12 | import time 13 | import re 14 | import base64 15 | # import logging 16 | # import traceback 17 | import os 18 | import random 19 | import datetime 20 | import feedparser 21 | import urllib 22 | import yaml 23 | # import utils 24 | # import wxpusher 25 | # import pytz 26 | import string 27 | 28 | # from lxml.html import fromstring 29 | import urllib.parse 30 | import urllib3 31 | urllib3.disable_warnings() 32 | 33 | dirs = './subscribe' 34 | 35 | def log(msg): 36 | time = datetime.datetime.now() 37 | print('['+time.strftime('%Y.%m.%d-%H:%M:%S')+']:'+msg) 38 | 39 | 40 | # def getFeeds(): 41 | # rss = feedparser.parse('http://feeds.feedburner.com/mattkaydiary/pZjG') 42 | # current = rss["entries"][0] 43 | # result = re.findall(r"vmess://(.+?)", rss["entries"][0]["summary"]) 44 | # i = 0 45 | # dy = '' 46 | # for point in result: 47 | # i = i + 1 48 | # dy += 'vmess://'+point+'\n' 49 | # logging.info('【'+('%02d' % i) + '】 vmess://' + point) 50 | # return base64.b64encode(dy.encode('utf-8')) 51 | 52 | # 获取文章地址 53 | 54 | 55 | def getSubscribeUrl(): 56 | try: 57 | rss = feedparser.parse('http://feeds.feedburner.com/mattkaydiary/pZjG') 58 | current = rss["entries"][0] 59 | v2rayList = re.findall( 60 | r"v2ray\(请开启代理后再拉取\):(.+?)", current.summary) 61 | clashList = re.findall( 62 | r"clash\(请开启代理后再拉取\):(.+?)", current.summary) 63 | if not os.path.exists(dirs): 64 | os.makedirs(dirs) 65 | if v2rayList: 66 | v2rayTxt = requests.request( 67 | "GET", v2rayList[len(v2rayList)-1].replace('amp;',''), verify=False) 68 | with open(dirs + '/v2ray.txt', 'w') as f: 69 | f.write(v2rayTxt.text) 70 | # print(v2rayTxt.text) 71 | if clashList: 72 | clashTxt = requests.request( 73 | "GET", clashList[len(clashList)-1].replace('amp;',''), verify=False) 74 | day = time.strftime('%Y.%m.%d',time.localtime(time.time())) 75 | with open(dirs + '/clash.yml', 'w',encoding='utf-8') as f: 76 | f.write(clashTxt.text.replace('mattkaydiary.com',day)) 77 | # print(clashTxt.text) 78 | except Exception as e: 79 | log('RSS load error: '+e.__str__()) 80 | 81 | def get_mattkaydiary(): 82 | log('begin get_mattkaydiary') 83 | v2ray_add=None 84 | try: 85 | rss = feedparser.parse('http://feeds.feedburner.com/mattkaydiary/pZjG') 86 | current = rss["entries"][0] 87 | v2rayList = re.findall(r"v2ray\(请开启代理后再拉取\):(.+?)", current.summary) 88 | clashList = re.findall(r"clash\(请开启代理后再拉取\):(.+?)", current.summary) 89 | if not os.path.exists(dirs): 90 | os.makedirs(dirs) 91 | if v2rayList: 92 | v2ray_add=v2rayList[len(v2rayList)-1].replace('amp;', '').strip() 93 | v2rayTxt = requests.request( 94 | "GET", v2ray_add) 95 | with open(dirs + '/v2ray_mat.txt', 'w') as f: 96 | f.write(v2rayTxt.text) 97 | # print(v2rayTxt.text) 98 | if clashList: 99 | clashTxt = requests.request( 100 | "GET", clashList[len(clashList)-1].replace('amp;','').strip(), verify=False) 101 | day = time.strftime('%Y.%m.%d',time.localtime(time.time())) 102 | with open(dirs + '/clash_mat.yml', 'w',encoding='utf-8') as f: 103 | f.write(clashTxt.text.replace('mattkaydiary.com',day)) 104 | except Exception as e: 105 | log('can not get_mattkaydiary:'+e.__str__()) 106 | return v2ray_add 107 | 108 | # def IP2name(ip): 109 | # try: 110 | # res=requests.get(f'http://ip-api.com/json/{ip}?fields=country,countryCode,city&lang=zh-CN', timeout=10).json() 111 | # return f"{ip}@{res['country']}({res['countryCode']})-{res['city']}/"+''.join(random.sample(string.ascii_letters + string.digits, 3)) 112 | # except Exception as e: 113 | # log('IP2name: '+ip+': '+e.__str__()) 114 | # return ip+''.join(random.sample(string.ascii_letters + string.digits, 8)) 115 | 116 | def IP2name(ip): 117 | return ip+''.join(random.sample(string.ascii_letters + string.digits, 8)) 118 | 119 | 120 | # https://github.com/p4gefau1t/trojan-go/issues/132 121 | # trojan-go:// 122 | # $(trojan-password) 123 | # @ 124 | # trojan-host 125 | # : 126 | # port 127 | # ? 128 | # sni=$(update.microsoft.com)& 129 | # type=$(original|ws|h2|h2+ws)& 130 | # host=$(update-01.microsoft.com)& 131 | # path=$(/update/whatever)& 132 | # encryption=$(ss;aes-256-gcm:ss-password)& 133 | # plugin=$(...) 134 | # #$(descriptive-text) 135 | # 特别说明:$() 代表此处需要 encodeURIComponent。 136 | # example: 137 | # trojan://f@uck.me/?sni=microsoft.com&type=ws&path=%2Fgo&encryption=ss%3Baes-256-gcm%3Afuckgfw 138 | 139 | 140 | def protocol_decode(proxy_str): 141 | proxy={} 142 | # url = urllib.parse.urlparse(proxy_str) 143 | proxy_str_split=proxy_str.split('://') 144 | if proxy_str_split[0] == 'trojan': 145 | pass 146 | # try: 147 | # tmp=urllib.parse.urlparse(proxy_str) 148 | # server=tmp.hostname 149 | # port=tmp.port 150 | # password=tmp.username 151 | # # password, addr_port = proxy_str_split[1].split('@') 152 | # # password = urllib.parse.unquote(password) 153 | # # addr, port = addr_port.rsplit(':', 1) 154 | # # if addr[0] == '[': 155 | # # addr = addr[1:-1] 156 | # # port = int(port) 157 | # proxy={ 158 | # # "name" : ''.join(random.sample(string.ascii_letters + string.digits, 8)), #urllib.parse.unquote(url.fragment), 159 | # "name" : IP2name(server), 160 | # "type" : "trojan", 161 | # "server" : server, 162 | # "password" : password, 163 | # "port" : port, 164 | # # "sni" : server 165 | # } 166 | # except Exception as e: 167 | # log('Invalid trojan URL:'+proxy_str) 168 | # log(e.__str__()) 169 | elif proxy_str_split[0] == 'vmess': 170 | try: 171 | tmp=json.loads(base64.b64decode(proxy_str_split[1]+'==')) 172 | if tmp["add"]!='127.0.0.1': 173 | proxy={ 174 | # "name": ''.join(random.sample(string.ascii_letters + string.digits, 8)),#tmp["ps"], 175 | "name" : IP2name(tmp.get("add")), 176 | "type": "vmess", 177 | "server": tmp.get("add"), 178 | "port": tmp.get("port"), 179 | "uuid": tmp.get("id"), 180 | "alterId": tmp.get("aid"), 181 | "cipher": "auto", 182 | "network": tmp.get("net"), 183 | 'ucp':True, 184 | 'ws-path':tmp.get('path'), 185 | 'ws-headers':{'Host':tmp['host']} if tmp.__contains__('host') else None, 186 | "tls": True if tmp.get("tls") == "tls" or tmp.get("net") == "h2" or tmp.get("net") == "grpc"else False, 187 | } 188 | except Exception as e: 189 | log('Invalid vmess URL:'+proxy_str) 190 | log(e.__str__()) 191 | elif proxy_str_split[0] == 'ss': 192 | try: 193 | tmp=urllib.parse.urlparse(proxy_str) 194 | if tmp.username is not None: 195 | server=tmp.hostname 196 | port=tmp.port 197 | cipher,password=base64.b64decode(tmp.username+'==').decode().split(':') 198 | else: 199 | tmp=base64.b64decode(tmp.netloc+'==').decode() 200 | cipher,other,port=tmp.split(':') 201 | password,server=other.split('@') 202 | if cipher and ("chacha20-poly1305" not in cipher) and password and server and port: 203 | proxy={ 204 | # "name": ''.join(random.sample(string.ascii_letters + string.digits, 8)), #urllib.parse.unquote(url.fragment), 205 | "name" : IP2name(server), 206 | "type": "ss", 207 | "server": server, 208 | "port": port, 209 | "password": password, 210 | "alterId": 2, 211 | "cipher": cipher if cipher!="ss" else "aes-128-gcm", 212 | } 213 | except Exception as e: 214 | log('Invalid vmess URL:'+proxy_str) 215 | log(e.__str__()) 216 | elif proxy_str_split[0] == 'ssr': 217 | #todo 218 | # - name: "ssr" 219 | # type: ssr 220 | # server: server 221 | # port: 443 222 | # cipher: chacha20-ietf 223 | # password: "password" 224 | # obfs: tls1.2_ticket_auth 225 | # protocol: auth_sha1_v4 226 | proxy={} 227 | return proxy 228 | 229 | def load_subscribe_url(url): 230 | if not url: return [] 231 | log('begin load_subscribe_url: '+url) 232 | try: 233 | v2rayTxt = requests.request("GET", url, verify=False) 234 | sub=base64.b64decode(v2rayTxt.text+'==').decode('utf-8').splitlines() 235 | log(f'{url} import {len(sub)} servers') 236 | return sub 237 | except Exception as e: 238 | log('load_subscribe_url: '+url+': '+e.__str__()) 239 | return [] 240 | 241 | def load_subscribe_url_txt(url): 242 | if not url: return [] 243 | log('begin load_subscribe_url_txt: '+url) 244 | try: 245 | v2rayTxt = requests.request("GET", url, verify=False) 246 | sub=v2rayTxt.text.splitlines() 247 | log(f'{url} import {len(sub)} servers') 248 | return sub 249 | except Exception as e: 250 | log('load_subscribe_url: '+url+': '+e.__str__()) 251 | return [] 252 | 253 | def load_subscribe(file): 254 | log('begin load local file: '+file) 255 | try: 256 | with open(file, 'rb') as f: 257 | raw=base64.b64decode(f.read()).decode('utf-8').splitlines() 258 | log(f'{file} import {len(raw)} servers') 259 | return raw 260 | except Exception as e: 261 | log('load_file: '+file+': '+e.__str__()) 262 | return [] 263 | 264 | 265 | # def gen_clash_subscribe(proxies): 266 | # with open(r"./template/clash_proxy_group.yaml", 'r', encoding='UTF-8') as f: 267 | # proxy_groups = yaml.safe_load(f) 268 | # # print(proxy_groups) 269 | # for p in proxy_groups: 270 | # if not p.__contains__('proxies'): 271 | # p['proxies']=[n["name"] for n in proxies if n] 272 | # with open(r"./template/clash_tmp.yaml", 'r',encoding="utf-8") as f: 273 | # template = yaml.safe_load(f) 274 | # template["proxies"]=proxies 275 | # template["proxy-groups"]=proxy_groups 276 | # with open(r"./subscribe/tmp.yaml",'w', encoding="utf-8") as f: 277 | # yaml.dump(template,f, sort_keys=False,encoding="utf-8",allow_unicode=True) 278 | 279 | def gen_clash_subscribe(proxies): 280 | with open(r"./subscribe/config.yml", 'r', encoding='UTF-8') as f: 281 | config = yaml.safe_load(f) 282 | config['proxies']=proxies 283 | proxies_name=[proxies[i]['name'] for i in range(len(proxies))] 284 | config['proxy-groups'][0]['proxies'].extend(proxies_name) 285 | config['proxy-groups'][1]['proxies']=proxies_name 286 | with open(r"./subscribe/clash.yml",'w', encoding="utf-8") as f: 287 | yaml.dump(config,f, sort_keys=False,encoding="utf-8",allow_unicode=True) 288 | 289 | def gen_v2ray_subscribe(proxies): 290 | with open(dirs + '/v2ray.txt','wb') as f: 291 | f.write(base64.b64encode('\n'.join(proxies).encode(encoding="ascii",errors="ignore"))) 292 | 293 | def manual_input(): 294 | servers='''''' 295 | return servers.splitlines() 296 | 297 | def getClashSubscribeUrl(url): 298 | if not url: return [] 299 | res=[] 300 | log('begin getClashSubscribeUrl: '+url) 301 | try: 302 | # txt = requests.request("GET", url, verify=False) 303 | # ,proxies={'https':'http://127.0.0.1:7890'} 304 | txt = requests.get(url, verify=False) 305 | # txt = requests.request("GET", url, verify=False) 306 | raw=yaml.safe_load(txt.text) 307 | except Exception as e: 308 | log('getClashSubscribeUrl: '+url+': '+e.__str__()) 309 | return [] 310 | for proxy in raw["proxies"]: 311 | if proxy["type"]=="ss": 312 | # print(proxy) 313 | res.append(f"ss://{base64.b64encode((proxy['cipher']+':'+proxy['password']).encode('utf-8')).decode('utf-8')}@{proxy['server']}:{proxy['port']}#{proxy['name']}") 314 | elif proxy["type"]=="vmess": 315 | # print(proxy) 316 | tmp= { 317 | "v": "2", 318 | "ps": proxy['name'], 319 | "add": proxy['server'], 320 | "port": str(proxy['port']), 321 | "id": proxy['uuid'], 322 | "aid": "0", 323 | "scy": "auto", 324 | "net": proxy.get('network',''), 325 | "type": "none", 326 | "host": "v16.583181.xyz", 327 | "path": "", 328 | "tls": "tls" if proxy['tls'] else "", 329 | "sni": "", 330 | "alpn": "" 331 | } 332 | res.append(f"vmess://{base64.b64encode(bytes(json.dumps(tmp),'utf-8')).decode('utf-8')}") 333 | log(f'{url} import {len(res)} servers') 334 | return res 335 | 336 | # 主函数入口 337 | if __name__ == '__main__': 338 | log("RSS begin...") 339 | proxies=[] 340 | proxies.extend(load_subscribe(dirs + '/filtered.txt')) 341 | # getSubscribeUrl() 342 | # proxies.extend(load_subscribe(dirs + '/v2ray.txt')) 343 | # proxies.extend(load_subscribe_url(get_mattkaydiary())) 344 | # gen_clash_subscribe(list(filter(None,map(protocol_decode,proxies)))) 345 | # proxies.extend(load_subscribe_url('https://jiang.netlify.app')) 346 | # proxies.extend(load_subscribe_url('https://sspool.herokuapp.com/ss/sub')) 347 | # proxies.extend(load_subscribe_url('https://sspool.herokuapp.com/sip002/sub')) 348 | # proxies.extend(load_subscribe_url('https://sspool.herokuapp.com/ssr/sub')) 349 | # proxies.extend(load_subscribe_url('https://sspool.herokuapp.com/vmess/sub')) 350 | # proxies.extend(load_subscribe_url('https://sspool.herokuapp.com/trojan/sub')) 351 | # proxies.extend(load_subscribe_url('https://fforever.github.io/v2rayfree')) 352 | # proxies.extend(load_subscribe_url('https://muma16fx.netlify.app')) 353 | # proxies.extend(load_subscribe_url('https://cdn.jsdelivr.net/gh/fggfffgbg/https-aishangyou.tube-@master/README.md')) 354 | # proxies.extend(load_subscribe_url('https://freev2ray.netlify.app/')) 355 | # proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/eycorsican/rule-sets/master/kitsunebi_sub')) 356 | 357 | 358 | # proxies.extend(load_subscribe_url('https://iwxf.netlify.app')) 359 | # proxies.extend(load_subscribe_url('https://shadowshare.v2cross.com/publicserver/servers/temp/ud4HOnWAsQxBmSIl')) 360 | # proxies.extend(load_subscribe_url('https://youlianboshi.netlify.com')) 361 | # proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/freefq/free/master/v2')) 362 | 363 | 364 | # proxies.extend(load_subscribe_url('https://sub.xeton.dev/sub?target=v2ray&url=https://9527521.xyz/config/r619xXVEup802SRh&insert=false')) 365 | # proxies.extend(load_subscribe_url('https://xn--wbs186a7vao45a8qd.v50.one/api/v1/client/subscribe?token=9249ef731acd8c150e656f6e4b77700f')) 366 | # proxies.extend(load_subscribe_url('https://raw.fastgit.org/Pawdroid/Free-servers/main/sub')) 367 | # proxies.extend(load_subscribe_url('https://web.anqi.ml/api/v1/client/subscribe?token=21e483aa1e50e796f543b9d63b4a27d1')) 368 | 369 | # proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/ssrsub/ssr/master/V2Ray')) 370 | # proxies.extend(load_subscribe_url('https://sub.marsix.cc/api/v1/client/subscribe?token=f6f817ddb0c62fdbaff1c90c9a074c45')) 371 | # proxies.extend(load_subscribe_url('https://getinfo.bigwatermelon.org/api/v1/client/subscribe?token=8fe4290ba47b6fe0e207ead380a2396a')) 372 | 373 | proxies.extend(load_subscribe_url_txt('https://raw.githubusercontent.com/ermaozi/get_subscribe/main/subscribe/v2ray.txt')) 374 | proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/aiboboxx/v2rayfree/main/v2')) 375 | proxies.extend(load_subscribe_url_txt('https://raw.githubusercontent.com/weizai2023/TG-wz2023jd/main/TG%40wz2023jd/V2.txt')) 376 | proxies.extend(load_subscribe_url_txt('https://raw.githubusercontent.com/drunksoul2021/vless-sub/refs/heads/main/list_raw.txt')) 377 | 378 | # proxies.extend(load_subscribe_url_txt('https://raw.githubusercontent.com/mahdibland/SSAggregator/master/sub/airport_sub_merge.txt')) 379 | # proxies.extend(load_subscribe_url_txt('https://raw.githubusercontent.com/mahdibland/SSAggregator/master/sub/sub_merge.txt')) # import 5584 servers,太多垃圾 380 | 381 | proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/Pawdroid/Free-servers/refs/heads/main/sub')) 382 | proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/mfuu/v2ray/master/v2ray')) 383 | 384 | 385 | # proxies.extend(load_subscribe_url('https://bulinkbulink.com/freefq/free/master/v2')) 386 | # proxies.extend(load_subscribe_url('https://sub.xeton.dev/sub?target=v2ray&url=https://9527521.xyz/config/GkUDhPycfnu0TXSC&insert=false')) 387 | 388 | now=datetime.date.today() 389 | proxies.extend(load_subscribe_url_txt(f"https://node.freeclashnode.com/uploads/{now.year:04}/{now.month:02}/0-{now.year:04}{now.month:02}{now.day:02}.txt")) 390 | proxies.extend(load_subscribe_url(f"https://node.freeclashnode.com/uploads/{now.year:04}/{now.month:02}/1-{now.year:04}{now.month:02}{now.day:02}.txt")) 391 | proxies.extend(load_subscribe_url_txt(f"https://node.freeclashnode.com/uploads/{now.year:04}/{now.month:02}/2-{now.year:04}{now.month:02}{now.day:02}.txt")) 392 | proxies.extend(load_subscribe_url(f"https://node.freeclashnode.com/uploads/{now.year:04}/{now.month:02}/3-{now.year:04}{now.month:02}{now.day:02}.txt")) 393 | proxies.extend(load_subscribe_url(f"https://node.freeclashnode.com/uploads/{now.year:04}/{now.month:02}/4-{now.year:04}{now.month:02}{now.day:02}.txt")) 394 | # proxies.extend(load_subscribe_url(f"https://v2rayshare.com/wp-content/uploads/{now.year:04}/{now.month:02}/{now.year:04}{now.month:02}{now.day:02}.txt")) 395 | # proxies.extend(load_subscribe_url(f"https://clashgithub.com/wp-content/uploads/rss/{now.year:04}{now.month:02}{now.day:02}.txt")) 396 | now+=datetime.timedelta(days=-1) 397 | # proxies.extend(load_subscribe_url(f"https://v2rayshare.com/wp-content/uploads/{now.year:04}/{now.month:02}/{now.year:04}{now.month:02}{now.day:02}.txt")) 398 | # proxies.extend(load_subscribe_url(f"https://clashgithub.com/wp-content/uploads/rss/{now.year:04}{now.month:02}{now.day:02}.txt")) 399 | # proxies.extend(getClashSubscribeUrl("https://raw.githubusercontent.com/freenodes/freenodes/main/clash.yaml")) 400 | # localtime = time.localtime(time.time()) 401 | # proxies.extend(load_subscribe_url(f"https://v2rayshare.com/wp-content/uploads/{localtime.tm_year:04}/{localtime.tm_mon:02}/{localtime.tm_year:04}{localtime.tm_mon:02}{localtime.tm_mday:02}.txt")) 402 | # proxies.extend(manual_input()) 403 | 404 | proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/WLget/V2Ray_configs_64/refs/heads/master/ConfigSub_list.txt')) 405 | proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/free18/v2ray/refs/heads/main/v.txt')) 406 | proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/Pawdroid/Free-servers/main/sub')) 407 | proxies.extend(load_subscribe_url('https://raw.githubusercontent.com/roosterkid/openproxylist/main/V2RAY_RAW.txt')) 408 | 409 | proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?b64')) 410 | proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=zrf.zrf.me')) 411 | # proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=Trojan.fxxk.dedyn.io')) 412 | # proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=altrojan.comorg.us.kg')) 413 | # proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=alvless.comorg.us.kg')) 414 | # proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=VLESS.fxxk.dedyn.io')) 415 | # proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=sub.mot.cloudns.biz')) 416 | # proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=sub.keaeye.icu')) 417 | # proxies.extend(load_subscribe_url('https://flat-frost-62ae.leejianzhao.workers.dev/271828?sub=owo.o00o.ooo/ooo')) 418 | 419 | # proxies.extend(load_subscribe_url('https://alvless.comorg.us.kg/TCorg')) 420 | 421 | proxies=list(set(proxies)) 422 | gen_v2ray_subscribe(proxies) 423 | gen_clash_subscribe(list(filter(None,map(protocol_decode,proxies)))) 424 | 425 | --------------------------------------------------------------------------------