├── local ├── certs │ ├── .gitkeep │ ├── github.com.crt │ ├── .github.com.crt │ ├── .xx.fbcdn.net.crt │ ├── .amazonaws.com.crt │ ├── .appspot.com.crt │ ├── .e.akamai.net.crt │ ├── .facebook.net.crt │ ├── .githubapp.com.crt │ ├── .cloudfront.net.crt │ ├── sourceforge.net.crt │ ├── .addons.mozilla.org.crt │ ├── .dropbox.com.crt │ ├── .metric.gstatic.com.crt │ ├── t.co.crt │ ├── .ak.fbcdn.net.crt │ ├── .channel.facebook.com.crt │ ├── .google-analytics.com.crt │ ├── .youtube-nocookie.com.crt │ ├── .c.youtube.com.crt │ ├── .googleusercontent.com.crt │ ├── .tweetdeck.com.crt │ ├── .cdn.twitter.com.crt │ ├── .cloudflare.com.crt │ ├── .googleapis.com.crt │ ├── www.google.com.crt │ ├── .s3.amazonaws.com.crt │ ├── .ssl.cf2.rackcdn.com.crt │ ├── .ytimg.com.crt │ ├── twitter.com.crt │ ├── .google.com.crt │ ├── .twimg.com.crt │ ├── .gstatic.com.crt │ ├── .twitter.com.crt │ ├── .facebook.com.crt │ ├── .akamaihd.net.crt │ ├── .youtube.com.crt │ ├── .ak.facebook.com.crt │ ├── .api.twitter.com.crt │ └── .googleadservices.com.crt ├── GeoIP.dat ├── goagent.exe ├── msvcr90.dll ├── python27.dll ├── python27.exe ├── python27.zip ├── SwitchySharp.crx ├── addto-startup.js ├── dnslib-0.8.3.egg ├── pygeoip-0.3.0.egg ├── proxy.bat ├── uvent.bat ├── Microsoft.VC90.CRT.manifest ├── proxy.sh ├── ntlmaps.bat ├── CA.crt ├── SwitchyOptions.bak ├── addto-startup.py ├── proxy.ini ├── goagent-osx.command ├── dnsproxy.py └── goagent-gtk.py ├── README.md ├── server ├── gae │ ├── robots.txt │ └── app.yaml ├── uploader.zip ├── uploader.bat └── php │ ├── relay.php │ ├── index.php │ ├── index.py │ └── index.js └── .gitignore /local/certs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | DON'T PANIC 2 | -------------------------------------------------------------------------------- /server/gae/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / 3 | -------------------------------------------------------------------------------- /local/GeoIP.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/GeoIP.dat -------------------------------------------------------------------------------- /local/goagent.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/goagent.exe -------------------------------------------------------------------------------- /local/msvcr90.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/msvcr90.dll -------------------------------------------------------------------------------- /local/python27.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/python27.dll -------------------------------------------------------------------------------- /local/python27.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/python27.exe -------------------------------------------------------------------------------- /local/python27.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/python27.zip -------------------------------------------------------------------------------- /server/uploader.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/server/uploader.zip -------------------------------------------------------------------------------- /local/SwitchySharp.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/SwitchySharp.crx -------------------------------------------------------------------------------- /local/addto-startup.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/addto-startup.js -------------------------------------------------------------------------------- /local/dnslib-0.8.3.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/dnslib-0.8.3.egg -------------------------------------------------------------------------------- /local/pygeoip-0.3.0.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jerryma119/goagent/HEAD/local/pygeoip-0.3.0.egg -------------------------------------------------------------------------------- /local/proxy.bat: -------------------------------------------------------------------------------- 1 | @set GOAGENT_LISTEN_VISIBLE=1 2 | @start "GoAgent" "%~dp0python27.exe" "%~dp0..\local\proxy.py" 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .appcfg_cookies 3 | *~ 4 | *.pyc 5 | *.pac 6 | *.key 7 | *.crt 8 | *.egg 9 | *.pid 10 | *.user.ini 11 | -------------------------------------------------------------------------------- /local/uvent.bat: -------------------------------------------------------------------------------- 1 | @set GEVENT_LOOP=uvent.loop.UVLoop 2 | @set GEVENT_RESOLVER=gevent.resolver_thread.Resolver 3 | @set GOAGENT_LISTEN_VISIBLE=1 4 | @start "GoAgent" "%~dp0python27.exe" "%~dp0..\local\proxy.py" 5 | -------------------------------------------------------------------------------- /server/uploader.bat: -------------------------------------------------------------------------------- 1 | @cd /d "%~dp0" 2 | @path %PATH%;%windir%;%windir%\system32 3 | @netstat -an|find "LISTENING"|find ":8087" && set HTTP_PROXY=http://127.0.0.1:8087 && set HTTPS_PROXY=http://127.0.0.1:8087 4 | @..\local\python27.exe uploader.zip || pause 5 | -------------------------------------------------------------------------------- /local/Microsoft.VC90.CRT.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /server/gae/app.yaml: -------------------------------------------------------------------------------- 1 | application: goagent 2 | version: 1 3 | runtime: python27 4 | api_version: 1 5 | threadsafe: true 6 | 7 | handlers: 8 | - url: /_gh/.+ 9 | script: gae.application 10 | secure: optional 11 | 12 | - url: /2 13 | script: gae.application 14 | secure: optional 15 | 16 | - url: /fetch\.py 17 | script: gae.LegacyHandler.application 18 | secure: optional 19 | 20 | - url: /robots.txt 21 | static_files: robots.txt 22 | upload: robots.txt 23 | 24 | - url: /.* 25 | script: gae.mirror 26 | secure: optional 27 | 28 | libraries: 29 | - name: pycrypto 30 | version: "latest" 31 | -------------------------------------------------------------------------------- /local/proxy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # goagent init script 4 | # 5 | 6 | ### BEGIN INIT INFO 7 | # Provides: goagent 8 | # Required-Start: $syslog 9 | # Required-Stop: $syslog 10 | # Should-Start: $local_fs 11 | # Should-Stop: $local_fs 12 | # Default-Start: 2 3 4 5 13 | # Default-Stop: 0 1 6 14 | # Short-Description: Monitor for goagent activity 15 | # Description: goagent is a gae proxy forked from gappproxy/wallproxy. 16 | ### END INIT INFO 17 | 18 | # **NOTE** bash will exit immediately if any command exits with non-zero. 19 | set -e 20 | 21 | PACKAGE_NAME=goagent 22 | PACKAGE_DESC="goagent proxy server" 23 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:${PATH} 24 | 25 | start() { 26 | echo "Starting ${PACKAGE_DESC}: " 27 | nohup /usr/bin/env python2.7 proxy.py > /dev/null 2>&1 & 28 | echo $! > ${PACKAGE_NAME}.pid 29 | echo "${PACKAGE_NAME}." 30 | } 31 | 32 | stop() { 33 | echo "Stopping ${PACKAGE_DESC}: " 34 | kill -9 `cat ${PACKAGE_NAME}.pid` || true 35 | echo "${PACKAGE_NAME}." 36 | } 37 | 38 | restart() { 39 | stop 40 | sleep 1 41 | start 42 | } 43 | 44 | usage() { 45 | N=$(basename "$0") 46 | echo "Usage: [sudo] $N {start|stop|restart}" >&2 47 | exit 1 48 | } 49 | 50 | if [ "$(id -u)" != "0" ]; then 51 | echo "please use sudo to run ${PACKAGE_NAME}" 52 | exit 0 53 | fi 54 | 55 | # `readlink -f` won't work on Mac, this hack should work on all systems. 56 | cd $(python -c "import os; print os.path.dirname(os.path.realpath('$0'))") 57 | 58 | case "$1" in 59 | # If no arg is given, start the goagent. 60 | # If arg `start` is given, also start goagent. 61 | '' | start) 62 | start 63 | ;; 64 | stop) 65 | stop 66 | ;; 67 | #reload) 68 | restart | force-reload) 69 | restart 70 | ;; 71 | *) 72 | usage 73 | ;; 74 | esac 75 | 76 | exit 0 77 | -------------------------------------------------------------------------------- /local/ntlmaps.bat: -------------------------------------------------------------------------------- 1 | @"%~dp0python27.exe" -x "%~dpnx0" && exit /b 0 || (pause && exit /b -1) 2 | 3 | PARENT_PROXY = '10.64.1.63' 4 | PARENT_PROXY_PORT = '8080' 5 | USER = 'username_to_use' 6 | PASSWORD = 'your_nt_password' 7 | NT_DOMAIN = 'your_domain' 8 | 9 | 10 | conf = {'GENERAL': {'PARENT_PROXY': PARENT_PROXY, 11 | 'PARENT_PROXY_PORT': PARENT_PROXY_PORT, 12 | 'LISTEN_PORT': '5865', 13 | 'ALLOW_EXTERNAL_CLIENTS': '0', 14 | 'DIRECT_CONNECT_IF_POSSIBLE': '0', 15 | 'FRIENDLY_IPS': '', 16 | 'HOSTS_TO_BYPASS_PARENT_PROXY': '', 17 | 'MAX_CONNECTION_BACKLOG': '5', 18 | 'PARENT_PROXY_TIMEOUT': '15', 19 | 'URL_LOG': '0', 20 | 'VERSION': '1.0'}, 21 | 'NTLM_AUTH': {'USER': USER, 22 | 'PASSWORD': PASSWORD, 23 | 'NT_DOMAIN': NT_DOMAIN, 24 | 'COMPLEX_PASSWORD_INPUT': '1', 25 | 'LM_HASHED_PW': '', 26 | 'LM_PART': '1', 27 | 'NT_HASHED_PW': '', 28 | 'NT_HOSTNAME': '', 29 | 'NT_PART': '0', 30 | 'NTLM_FLAGS': '06820000', 31 | 'NTLM_TO_BASIC': '0',}, 32 | 'CLIENT_HEADER': {'ACCEPT': 'image/gif, image/jpeg, */*', 33 | 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'}, 34 | 'DEBUG': {'AUTH_DEBUG': '0', 35 | 'BIN_DEBUG': '0', 36 | 'DEBUG': '0', 37 | 'SCR_DEBUG': '0'},} 38 | 39 | #-------------------------------------------------------------- 40 | import sys 41 | 42 | print 'NTLM authorization Proxy Server v%s' % conf['GENERAL']['VERSION'] 43 | print 'Copyright (C) 2001-2009 by Dmitry Rozmanov, Darryl Dixon, and others.' 44 | 45 | if conf['NTLM_AUTH']['NTLM_TO_BASIC'] == '0' and conf['NTLM_AUTH']['USER'] == 'username_to_use': 46 | print 47 | print 'PLEASE SET username/password in %r' % __file__ 48 | sys.exit(-1) 49 | 50 | try: 51 | import gevent 52 | import gevent.socket 53 | import gevent.server 54 | import gevent.queue 55 | import gevent.monkey 56 | gevent.monkey.patch_all() 57 | except ImportError: 58 | sys.stderr.write('\033[31m Warning: Please update gevent to the latest 1.0 version!\033[0m\n') 59 | 60 | sys.path += ['python27.zip'] 61 | import ntlmaps 62 | serv = ntlmaps.server.AuthProxyServer(ntlmaps.config_affairs.arrange(conf)) 63 | serv.run() 64 | -------------------------------------------------------------------------------- /local/CA.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDUjCCAjoCAQAwDQYJKoZIhvcNAQEFBQAwbzEVMBMGA1UECxMMR29BZ2VudCBS 3 | b290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYDVQQDEwpHb0FnZW50IENBMREwDwYD 4 | VQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04xDzANBgNVBAcTBkNlcm5ldDAeFw0x 5 | MTA0MjAxNzM3MzVaFw0zMTA0MjAxNzM3MzVaMG8xFTATBgNVBAsTDEdvQWdlbnQg 6 | Um9vdDEQMA4GA1UEChMHR29BZ2VudDETMBEGA1UEAxMKR29BZ2VudCBDQTERMA8G 7 | A1UECBMISW50ZXJuZXQxCzAJBgNVBAYTAkNOMQ8wDQYDVQQHEwZDZXJuZXQwggEi 8 | MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0jV3yx3yGAHlQqzm4fbVascvT 9 | nyCdtParWBnQn5A3U9pJjI47SCo8j7FfeoYSL0mHbJ0mjafTnw+/ewb09AQIkdEl 10 | n6smojl7NOKs1Yhh0yldB6kQWiBPr/XKMBskmvcyjJEqkU6hwtibASaAZt+q5clT 11 | BJ2XRaeAaMDeDbYDchFa7MTNhoQMdQFu1UhqkJxtuVMBEs1/qPbx5O9pqy1RgAeK 12 | WvxyCzVRi2hHaTns+weZBJ6N71afyvr1etGqqtWVpjpobk1ZFBYk4xpznCbm4iqP 13 | Ar9nqdGDw1IJIdX0DyMJIJrpwOf94pAK9v6zG0jnsbMqromL18kEMXZgYSMlAgMB 14 | AAEwDQYJKoZIhvcNAQEFBQADggEBAASiRZFCcgQ8VsncB8wKG+bmN9UZhXLJYRGp 15 | m3KIUy/zG6mMWG/3TgkPn8ivNAkrk+1ul5SrRvot/Q7XWpb0/yKX0faX/512JF2G 16 | 220gopqo4amj+g7SBKxzW8VhLQF6dm99eUd27JbAzi5VKXR0dMFECk2rFlA5gAR5 17 | zzFijaXHuObMtd2S292wji79JWocA0z6WVM5Qokw4hRTsXWfXL0BJTL3i/xRrEzW 18 | sdecYFpNhaEKldjegazoqAqiAMJj7PDU1AqdprNsq+3/tAmCvn0URkas4QhkvtqS 19 | FO6OGm/PZe5GbkBpAKdfLYFfEMO17SAGHHqAsIKAFfuHYONRGSM= 20 | -----END CERTIFICATE----- 21 | -----BEGIN RSA PRIVATE KEY----- 22 | MIIEowIBAAKCAQEAtI1d8sd8hgB5UKs5uH21WrHL058gnbT2q1gZ0J+QN1PaSYyO 23 | O0gqPI+xX3qGEi9Jh2ydJo2n058Pv3sG9PQECJHRJZ+rJqI5ezTirNWIYdMpXQep 24 | EFogT6/1yjAbJJr3MoyRKpFOocLYmwEmgGbfquXJUwSdl0WngGjA3g22A3IRWuzE 25 | zYaEDHUBbtVIapCcbblTARLNf6j28eTvaastUYAHilr8cgs1UYtoR2k57PsHmQSe 26 | je9Wn8r69XrRqqrVlaY6aG5NWRQWJOMac5wm5uIqjwK/Z6nRg8NSCSHV9A8jCSCa 27 | 6cDn/eKQCvb+sxtI57GzKq6Ji9fJBDF2YGEjJQIDAQABAoIBACB3n2JN/xV1tlsM 28 | P1fuuxLxD+8hGVNivEy5jgLW/q8EVCePr+/3HSlAyauas8tHV5iTrnrFVF2Yp9NO 29 | A0U/MA5+cjaqzLMozt9Z9j0QNPMqbrC89Ojs3AyYXsGZ/veJKlSbtGsMMDCkgiD1 30 | hv/l/+iSY66bEN+n9eQAclY77vQVXLSoCMReVfbdUxU9Q1MywODGf5Kng84gTyT/ 31 | zd+xEfFHz8zbCDyw3Hd3hGJ2FxN+yFz1uI29ORb3/R7N9dZgsWf2fsfiRVPGuhAH 32 | RNlDockImB+BKeidx14sMim5p7s8heVYkBVW3SIOEReqz59b8x4QVhhZrzYWSHNq 33 | Gi0pLiECgYEA26v6b+rsxT//PznJSEhLyrg1Jo6XeWmFlwZY0KoipH6sxX/YPrDZ 34 | bOPN8KvAHtRltRLFs3L2iRaO2jltjxHGVF4FSYrf5KSExuj6/ABHxWM0YtezfDwR 35 | hU1ORg5QwVegMoOgsphS8ts2xn6T6wIwpBgtFPY84A52IBVn5CHuQtkCgYEA0mk5 36 | EpnZfmMT5ldcZ7JlZrxfWKvDHIcuA0neIBsd4oIcEfRhDC3TolH6pB4z4SCqyYw3 37 | t5HMiTx8yz074mycTcOcXO1Cs49kMZwbzKziRXpUdCW4EIo0DG+6LqwetPgYzozg 38 | FeTiGQBHqjrzjBLZ3RfozICbo7dvYHkVLK92my0CgYBWNBjlDnW3ujN6Jj0cxnIn 39 | rT3+UXqTxJsN9wmnaPyLPMKkBlVf1JqeJo9MYLnV31fCRQmcMAMbLOUGMf8SY9FG 40 | jlbY00ylNwJ75DWJ6ro/dXy7RRZELHZbr0iGKVv7Y12UNR88tpXmg6vtHQMC+CsK 41 | Wgpm7XJaIpKsaHoKhl4vkQKBgBBBTsZwGkxYTSZDY4EjWBAax2brRhSDIPviDgX+ 42 | 8k0YbiC493Jga/QjTzC0oJ9ozajqazeETP/hK2bsIR858s1TKlZHghqrHjty6vbh 43 | +E0TyUh7zX+BncnEK+cFJw4mCIyUd49ZcloqGl89VKlin3AkM7jwypVYS4Nxd0BP 44 | geM1AoGBALOWNmYm9d4gRhUv14oJRiA+e+4evswiWvVdnS6UJ4tst0NlEKWahtpR 45 | kdAjav8WV1n6IbkJC2L743Ozjb63z5w6p5O7OtTyYUWbLt1hvNkHlkNP8AjRQP8E 46 | +N2jjrMAdbEwahPNAX9QlzHpF62AfEGQ3oODUm06TGTq+yAPSyYm 47 | -----END RSA PRIVATE KEY----- 48 | -------------------------------------------------------------------------------- /local/certs/github.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDbDCCAlSgAwIBAgIRAJnNIXUQjRV1iMBHWCltHPwwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MTkxOTE3MDBaFw0yMzA1MTkxOTE3MDBa 6 | MHQxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDETMBEGA1UEAxMKZ2l0aHViLmNv 8 | bTETMBEGA1UEChMKZ2l0aHViLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC 9 | AQoCggEBANliurfxglxaDLxcVNmX4XdNfIdG3U0sNbrve/fu7BRcWkCO4TdoobjL 10 | 5GmSutmyKnjPTjtx9iE6eAvG+3LaTCPWslwoZo6t7pQmfwuhsrsbB//frWZu8PBR 11 | qi/DRkM3om2amAYIAM1OFyxON5psMRw0j64QsL1Qt4KpEOrzDFNHIsA/7xz18Ype 12 | hIFPPGX8LG+inM4zPZY9LB+f/fuxCkGQ2/ZGsGAxzrm4u+zNayEV52sYbGf2uwWs 13 | o64t0uBdGoXkqVeev/YNEOn/3+0kiNn+y+sM74gAHOpZfx3S/PO2lzBPWQmdBLNj 14 | w1zCLz8szZjXYRhVFP4yniIuDmCqS9MCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA 15 | FsEwH94eR6obC6s7EqzqLq+c/TTw5rUnhsY4CwAUeaEHxpe6fDmWdfQ40dc/AuCr 16 | XuIu+AZhGwcsWdtYoqqa9HdrejaRqnpQk6v9UAnhfMvljJK4FO/86AmK4bEc5d6d 17 | pxFTMZyqjaB4KRbVgVAIcNm2SexBWXYaHAIQyYMufeOwwPIjVMEWMoNh76SlXjXE 18 | tr++Mtu3akVFFAMiZIOgAYzTJgz1REJo8LMcvBMQK8/uS+HgG9M+HVOzueBmgq5e 19 | yeGWlFiGPqI72VxpaYG2wBeyhiosqV9uXnQ9gzxab+OtWVTSf3q0IYK+q8fLQDst 20 | 4SBazc557txo9NDuP6HwlA== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpQIBAAKCAQEA2WK6t/GCXFoMvFxU2Zfhd018h0bdTSw1uu979+7sFFxaQI7h 24 | N2ihuMvkaZK62bIqeM9OO3H2ITp4C8b7ctpMI9ayXChmjq3ulCZ/C6GyuxsH/9+t 25 | Zm7w8FGqL8NGQzeibZqYBggAzU4XLE43mmwxHDSPrhCwvVC3gqkQ6vMMU0ciwD/v 26 | HPXxil6EgU88Zfwsb6KczjM9lj0sH5/9+7EKQZDb9kawYDHOubi77M1rIRXnaxhs 27 | Z/a7Bayjri3S4F0aheSpV56/9g0Q6f/f7SSI2f7L6wzviAAc6ll/HdL887aXME9Z 28 | CZ0Es2PDXMIvPyzNmNdhGFUU/jKeIi4OYKpL0wIDAQABAoIBAQDQEyp6KtcGosMS 29 | AKbO6AvN8ANEUNY+qhR77AMTHEQocQWKSbjVGnfBtJfbXbEv8tOoc3WEfN6Ei7yg 30 | OUQxeTXsD/MFNz6DT4TPldGBRrMXWRZdGrKVG5fPz7tAoH8+k6ALnS/qhfqOiTKx 31 | G+UpEGopfz4P9LXXX81naYBiA2ZGxkmu5ffweEkyn8AxxptPGvf4iixsuEWVUB3O 32 | UrcOIH7VuAbisWoLSrin6lDOMqTR485RriH2viNrt32meR/fDLvXlQgdT3YFKnKu 33 | g1e3DduMTB+xSP/HOb9QEhQinnWAxCYC97RuKTwXQFamlOa4sQKpgZ8BumYqgHCV 34 | YEhmKi9hAoGBAPvlAgFQMCphE/VH+5Tip7iCSjiiLSeVhp3vQL3oIOLQIqgLWRgI 35 | aS+otxC3gMK7rVArKVUaFSlGuWA/4InU4DYWg5nIwLkOyIR3YrmvRUmkgXEPjIvp 36 | AmcXp/uUsTLlwX1XPi1QdOhCexJHq0IlWzF+Ha8FPacr9ksAOXY2JDaZAoGBANzt 37 | vQPzHda48jPvLiM1cGtkR+RcMV4bdgnn/Vmes7IMdqXhWECsIFR864fVCAUKV80B 38 | rDJwbiiSSMVN3wpPseaQZh1AoOFY/qJE1VPGkgQVQmjEkEaxs0EuXv7aGKOjqmQu 39 | umEBT0/eGypsK99j8mQP7yFAWAgHmrBeFML5SdVLAoGAWngrujEEu5PWSTgrQZQO 40 | TRRud9y3fwoTKVIu3IYsmYnLiLNasmkC7l0YMubVVht16d82nxwZEZQXLFyE1rwg 41 | MwzvAyK5JT4MApemW655ojN1UhgVkIKFnGVArfj/k5o1XkEhUcEd2/VUooIfHkiw 42 | chwrqRqmxA3kDZftC2nyo7ECgYEAxmSnbDiR/xSuS3zpzaxbe9TdynAP1RaL9XFi 43 | zWv6qlUO5v9ppQntLnHPgHcJcJ1NI0fxPopAIibbOnMna7cNZqMdT/+NeU/Vuhpe 44 | B5E15nzA2hxKA3HoKwxdOjbYEXsTtEtSC3KFqo8ljf79lunF7Z1xfEavxuYtP1v9 45 | AOmkJ+kCgYEAtJRPlFWp+JFoknB6MEaBNOYa1b9j9fuu54+mRge0b9mOBitOp/VP 46 | rZ69F0baVNtxROuMdrHMzCLIrXTfMTDj7hRUwGk6ptDOCcXcHJ7IQK9p0B+QoX9Y 47 | PZvYSAnkY3a2ys1Z0nUC8bhb8QBalEnY+u8hDVzFnq6gBfWALmVkZN0= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.github.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDcDCCAligAwIBAgIRAOzojmLW8KRTjLbYCf2Eg/swDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MTUxMzA5NDFaFw0yMzA1MTUxMzA5NDFa 6 | MHgxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEVMBMGA1UEAxQMKi5naXRodWIu 8 | Y29tMRUwEwYDVQQKFAwqLmdpdGh1Yi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB 9 | DwAwggEKAoIBAQDdFn5XG87ciE7gMjsijJdFwmOIi/Es9lZz5q4flJnvw44uUyXf 10 | O9jr7P1XvXpO0Xp9r+WagBTlgi54IKq7Q3xmGSuvtGY4es8Ynh7nxFUNAW8jNuYa 11 | hAmlqug4FqMIez8jDN8V+Iu2cpqrkH06d0o6KvlWvsANYLVX5Hki8RMx8MCPSjrX 12 | U6PZb5vbTYsJDLJCaZCNlzHn4KGF1JjYGw3tbcT/Y3pDbVAqwbcjPgm73F7rxURH 13 | 4WcPy9S/3SwyA5XPD024jqYJruKt+BQagfOM1z7X8HnfyTs6tfgDU9JuiA+zUvL9 14 | 3vyYUcCEkL4totZgXYexCj2xyfalEFzfKxrTAgMBAAEwDQYJKoZIhvcNAQEFBQAD 15 | ggEBAHC6GQRgAnozf7UQv611WoqsdzdUP5+Q5tXIp+o4irFv9Sxyra2FIwlFcJ+w 16 | a61ZMhxYEnkIx2TW/9uYf51zQaOw/ukLCr9rsY9cUu38+M3lHlPTRKkT4y3aPv0I 17 | XRQsrc8xb9f24/eGGGGT43SDiYaGxYeSKNhtVqTzE3irQlqzFh2X/1yr/+EwJYsv 18 | SdalyJcryGfS7ou02biQxNonvtXJUwz1KBqAFyP/v9JC6aDviekRKpFWzDSsaN7z 19 | t4/X5EihtyYJKq6FR221Z+4lNDy4TN8ca/Tm5Uy8DMGhRM3RsdNK1G00afaz1Nmt 20 | KFshN3wibYAHN8C/vHCqm6mFAbM= 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpQIBAAKCAQEA3RZ+VxvO3IhO4DI7IoyXRcJjiIvxLPZWc+auH5SZ78OOLlMl 24 | 3zvY6+z9V716TtF6fa/lmoAU5YIueCCqu0N8Zhkrr7RmOHrPGJ4e58RVDQFvIzbm 25 | GoQJparoOBajCHs/IwzfFfiLtnKaq5B9OndKOir5Vr7ADWC1V+R5IvETMfDAj0o6 26 | 11Oj2W+b202LCQyyQmmQjZcx5+ChhdSY2BsN7W3E/2N6Q21QKsG3Iz4Ju9xe68VE 27 | R+FnD8vUv90sMgOVzw9NuI6mCa7irfgUGoHzjNc+1/B538k7OrX4A1PSbogPs1Ly 28 | /d78mFHAhJC+LaLWYF2HsQo9scn2pRBc3ysa0wIDAQABAoIBAQDAeVeuQFBcH/MD 29 | LdfboSgFHFGIy8RAT4k+R8KpTbaiTM5YOB0Ndk3IPz7jhtqXCbmo+FxcoEsQ77/C 30 | 5zWb6AnB3QHyaoxfeVMYbHgdcAhXVTtLHf0/clnvt5WJVvPCa4Gw4wDIYORJBwbu 31 | e9D5+GZPs5/0zAXo35uglBB9wgDjBMZV3JlN941dJfKtqCJjAcSfsOo0ICkeWhnE 32 | WiwkTovgkesFnYWynLUQT4vUihSzVjhN/FVYAkMHz77XXm1HNGVy+L5duzyl1UVv 33 | T/44N0pPrCnkYG3d1aXx7NLlesxERAvOvqeD6jONUUXd7e/es10NteFfasVdL3v9 34 | 4QqlpVeRAoGBAPORL+UdIOm+MUDtnJ/eHEW5tCb+/TavH4YfTVtvmB4AWUUpGkk7 35 | E8gRj1V/N7BXYbvDPUe2MRhce+boGyKuwF2t5j13+pEkLF6gODYE6B4zDmHihK4s 36 | bPMkAc9RipbQF9f9eA558cCn45c6dc9QL5WYRid21p0BbhxqPyDkf3CLAoGBAOhf 37 | jwChedoQPqpiXoaHy3nbqPYva1Wd7/jfLUC+jbtbaMrFNfffl+oYwR0O3yjXpizh 38 | /D2cEZQnHr2iktPdUzdzSs7UxgTkNYBiopxND6lWwiFXUJYIGisK2/+6TJDHqsRO 39 | 60XsYOQNTeZQCIUNWMgNYyQrO5RXVb2R/2N/J7/ZAoGBAJ7R9zcgrUt9V0SNK+oa 40 | vLjChLRA5P/5ZUbhtmF+/OPjOlKcoKVLvnRg7uPDFp8H+5ShlJ3kMVM/SxOgGcGd 41 | zZXIRS+jwmFOAxiYxM6EmI7IoAI34GhqU4if3AZBl2sLueB/SP+3iGolj4QW/Kb4 42 | FG8pYeVt2jd6rUAeD5f1JxxNAoGAHZTkqIjl8Tu2LoydSfUJkzbCeKyqtliHzx/i 43 | K+bWNi651W5ro2WEelmyY9eb0yA42Gfga5ttpXWhdTS4Cl6XlGyJ7nCp0L+YjAKC 44 | fvFUeBNCXWo3KRJY+nfEb/awfpHcjGcbjmg8IWwMKbCwlPeRAM6re1RBnm3LzXlD 45 | kNAEKGkCgYEA1IlLTqpJdoCPIOLO/puDAB7U7ZCwnRy6vf5JPrD7ZHVvN+GbXkul 46 | /GkfsGwzKV8fe1+RDgywAAWlbrucBtfX/I++ayb7nQHi/1S+3QX9hcLxa5cBbdXd 47 | duOyniqCq4y3yXS4bQbmEBWl7ALa102F91ak0Vv2eybg06AkETT9Txg= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.xx.fbcdn.net.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDczCCAlugAwIBAgIQC2eMN8DiceMtvtjERk39sDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUxODE1NDQ0NFoXDTIzMDUxODE1NDQ0NFow 6 | fDELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRcwFQYDVQQDFA4qLnh4LmZiY2Ru 8 | Lm5ldDEXMBUGA1UEChQOKi54eC5mYmNkbi5uZXQwggEiMA0GCSqGSIb3DQEBAQUA 9 | A4IBDwAwggEKAoIBAQDHp7hMhjfh8TROSfQX5zJfusgLLJ3zCH40idGUzUlDZfcr 10 | f7h9cSYAMnoJi4u6NfkKmnEC3rBHnAuZNqy0bSGGlPsxAdB2IsrBjJRZybYJN18G 11 | h2EWbHLet9kHBZy+h6QGKcpbR1vBbAGRed+u14Z1uaSHwdOfIsNKiNpUtzJdYO9p 12 | +fbeVFvTCqDYJYY9+uLL2vISCiJeMzsaOPehY0Y9Tt5aurWHeiX4RPJ+jr1LZQsW 13 | lkHzcbRgz1Zk9RKc56TBZUAaVi+y1e+wTcYp6TyhyXg798QM0YQ/yeD9+nG49Dxa 14 | CdgpNxGTAoEAtjH/qBGrRHhEDUK840jd6g24h+0xAgMBAAEwDQYJKoZIhvcNAQEF 15 | BQADggEBAIxutBCSCIPnd0qsG35Xm6iXr6mVZhusmgbE6LF3ftnlvhL42YRcTXu7 16 | x/rma95l/Il1oIvwB5Ws/idA+IoD68xVaknHQurylXNWexhzzqAbe503QgBuGcce 17 | 5E5svHCZm08bz546wTFT6DPOzc8xW9lR2F8A6RyGySeSEJ93EKUB7H0mi2+JxCeu 18 | w5Ff5hqtWvW9b1Gv8W+cofGAeGvWzfRm2IwAHKdOG1lkV4+I7EPmuQEmAN/sbVyq 19 | gmyKlLdu3kdG5/IJ2kpVk4m646LoIpjbMgPxT+ye5VyfgjAsiF1c/n+1wSwHJ36d 20 | OrsyjAkOM0bEJt4o5Qjpfr8GPf2o76U= 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEogIBAAKCAQEAx6e4TIY34fE0Tkn0F+cyX7rICyyd8wh+NInRlM1JQ2X3K3+4 24 | fXEmADJ6CYuLujX5CppxAt6wR5wLmTastG0hhpT7MQHQdiLKwYyUWcm2CTdfBodh 25 | Fmxy3rfZBwWcvoekBinKW0dbwWwBkXnfrteGdbmkh8HTnyLDSojaVLcyXWDvafn2 26 | 3lRb0wqg2CWGPfriy9ryEgoiXjM7Gjj3oWNGPU7eWrq1h3ol+ETyfo69S2ULFpZB 27 | 83G0YM9WZPUSnOekwWVAGlYvstXvsE3GKek8ocl4O/fEDNGEP8ng/fpxuPQ8WgnY 28 | KTcRkwKBALYx/6gRq0R4RA1CvONI3eoNuIftMQIDAQABAoIBACX4j+R94kLmTLxW 29 | 9EVXgw0RyNnXMnL2Oopja6iRIk3fJpLvR3cT/dYrw2ntUDWp7iNGHBgfogb8dng9 30 | Hbtyxd2CmANKBQtysnz873nkEurNzRTAyoYpOe+Bp5TeTGEwCtHhQMr7V0gB8opo 31 | U1I9SyU4mUH4avbo9ZtHS76w2LNJVjUQrY/p7j5utX649L3ytSY2FGEgK4WlDmv3 32 | dEy0t191q3kFP+tVCskQ2vLBhPHl0PRpfxbMWn21MXkGEa6nQnpYWZygPgQLOAcF 33 | YVoLfD51C9jsYUQtIgqaBYXmNmTlOiqdZhyFP2Hz1rSS512oFAonYcAwgpWNYm6H 34 | MP4e38ECgYEA6Yul5WOiRrIDawXf1VUMabW0LZsM59HSDhHy1t1Nb9apncjGa8zI 35 | zM13o0+ZOvj/6PVFLplotl+Xer0XXY/X5VfFqluR9Y7niklL9HIyqlLfyml3xXMv 36 | CV4M/iNt4oI+M3kmJ2Njr6n/GHBVDps8SnbqEMOnNtyQkcf0dCTw8zsCgYEA2tnq 37 | MlRry1hMzGKSMJqQwDccsO2HpjfpJMuvnJKbLRKT8GmEszTXA8Nfy1R+t305Xg8H 38 | EA8zr+nkZ1vMZhVsEYlHGmh2yATZxfj4chlhU/5fcbmvG4IBp2qG/SU8H0Co6K0j 39 | wfx5GCZmec7zIbzVO34PO6OD5PlMost9/V6vAoMCgYBGFa1EKGEjW/pgnJOuPmaK 40 | NogKg5Qc4T9rD4HTbvf1DvM5sW2yHfNIWoSDkriGFQEfFLOdJ1ZgHFGl+KbRYgBF 41 | B9D+rZogmbDsM9DCW57OtC4KXRofO9Cqu/mkLlekeLdX1QxZF59rsNUnrVYpGva9 42 | 1e+p9jzw3sHXrayzSf6wzwKBgDgBGfiFOAySbRzEgMqlUzONJu9z6Ym0txnuceMs 43 | dT9kiK02I3pEpF1XKvV6iu7jwcF7MQCAE2cKAKQejsD07HHUYni0kOkArMYHv3Rb 44 | YFfBOaV9sfzlGQ1BqoevdqI8xry8SfFDba2rbf/v4LIag6q0yKsnXgJDdcQXNQeY 45 | qkqHAoGAV38dPYr5GOswYvWR7W5eb7rNnl1a9NBa5s3vrRMYNJnMbsTG2OdYFIgm 46 | zuBF+jB3Lqz0kgQrVqAQ8FVzUseSmocyty9vc6G740sv+GeodpxF52AeX+hbOwpO 47 | cKplwQtdJeHK8rOjDRzyHqGarpX1KLIho/FY7Xt884mWbyizTE4= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.amazonaws.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdjCCAl6gAwIBAgIRAMHq8mw7dVrVJSRWpdPzSi8wDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MjIxNzIzMTNaFw0yMzA1MjIxNzIzMTNa 6 | MH4xCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEYMBYGA1UEAxQPKi5hbWF6b25h 8 | d3MuY29tMRgwFgYDVQQKFA8qLmFtYXpvbmF3cy5jb20wggEiMA0GCSqGSIb3DQEB 9 | AQUAA4IBDwAwggEKAoIBAQCh8HIUnUa3QATuxdCh3piJWjn0Xomyyy4HlMkISi+p 10 | c8ZhKkWwQYUcW+l3AH1oKqA0EA8rUnaJcZdf9sm22SJjLVp5a90DRRfQLgBxB91c 11 | qJYitMpoVsD3cbVIGNDpHgISE9fpzGq8f+hD6tMQCYBCpuG6WSMmdPhBWyiGmceU 12 | ezXQsd8Nes54bji5sN+eR0/ROHE252oRIoLSEQoZ9FjMkFLDSMeAf2UJv0dFuO9t 13 | +ExIY7nsE0tvKe0rI8LQbCMO5l07r4f58nto7NO6ZSKndAWwtDu6NIj+fv4RgFRG 14 | DoLokHPONqvbomK2Z+UsIcYGMD77C0PfVDwvFrXa1T0LAgMBAAEwDQYJKoZIhvcN 15 | AQEFBQADggEBAAPc3J3HmXlvIPnxM562hLsIMGg9abgYSfh3wVN+AmnF97iYSzWF 16 | 7xAe6ujsR8SdyZvV45qpC3rPlu6WCuEkDhFNDUsb0f79WgQBNVS054EXJM0OLhMF 17 | f3OAOOq+Q/t2+YY3y7HhSIOBbVChKm2F586VgzVJiKjEWdhdMREVz7CgRvEt4WOm 18 | cQx6n301udL3/F3m2v13B/YyBKMgxwDGXmdOBeu1OlGMTZFK/WDGan7DhOaHrHh8 19 | ZRG9gl8SS95cmc3msoIAZwPrHHCT0rdcUkeZYO5m4AFb9PqLaSTQWlYQXugmIWdC 20 | twuKIS5oojTeukP5cxhX3m8PAMm/X7Pltqc= 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEogIBAAKCAQEAofByFJ1Gt0AE7sXQod6YiVo59F6JsssuB5TJCEovqXPGYSpF 24 | sEGFHFvpdwB9aCqgNBAPK1J2iXGXX/bJttkiYy1aeWvdA0UX0C4AcQfdXKiWIrTK 25 | aFbA93G1SBjQ6R4CEhPX6cxqvH/oQ+rTEAmAQqbhulkjJnT4QVsohpnHlHs10LHf 26 | DXrOeG44ubDfnkdP0ThxNudqESKC0hEKGfRYzJBSw0jHgH9lCb9HRbjvbfhMSGO5 27 | 7BNLbyntKyPC0GwjDuZdO6+H+fJ7aOzTumUip3QFsLQ7ujSI/n7+EYBURg6C6JBz 28 | zjar26JitmflLCHGBjA++wtD31Q8Lxa12tU9CwIDAQABAoIBAGbnMMbyrhYSQ1Ar 29 | OYkytsFJKVykmmGYBNbib+Cpq6HFJQFnaEM5T0mXCkMJd6cytvx+W/VOgG6UVPmx 30 | C7r6PYTCNCTGKvpB9IDgSn2I3txbcJP7SEeHITXb9rMquc34uJ4eJ+y0bfr8WG6Y 31 | EKi3MN6pxvSwYcq1N2/oalcl7xHlOlO7BrNydt6UP5KpboF7hKAXpua5kmGdZpxd 32 | l0RM7W3AVl3PWq3/Sgrg+zeyr/ThnSNXa6a9TOKlHQTIuTDEBOU2qUXAAZUldRk7 33 | zSM7/rT27JRyw1vXB4K0y6Nbmc5ymAaTAKPWQ3KNUoIkjt5oiKC+EDyUHKpY8xji 34 | UsJ3lZkCgYEA1iF0DaN5HXxCy+sJnbY2YMCP80yCuf+IRYMngYnB9QbzQKpHil/+ 35 | hzgY+qKSAaixla/JK/5EL9xa6ULzGZCoV4q1C+8oKtEajgwfMRjA0ASjfXBdSr8m 36 | XT0+99F3p8Xn7uWuoLxsBuYO8eyl4cMjq9IC07irIEFHRW20ILIzSeUCgYEAwZp+ 37 | FZVmDf99BzNmVGj8KWw8xkpV+hRxn6JUFcb/dj118v+DniiGkiI1Xl4oEXIIlVvG 38 | FsIm5FjuzF+0mTuNfiPjInFGZfYd1ndSqIhSHd/2h+YNurpcIKRy11cF3qSZ4mY2 39 | 6aSbDRAtIFMZHnhlHeo/Oj/4R97n6wvIMrAlPC8CgYBgeJXmhx3L0O3vHScp7Ku3 40 | D0pLXM8QqTVly98Cl2PQ1p7FJXIxv2nW1ck7Mf8BzFSlkZravSVPQsGakdUgUXHm 41 | btF+XPMFx0tlb8Slw/cqQMy/eN4vDMtl+m/iCncUGS+TC9uPAxTQTtmw2OMrQVVS 42 | 1bz8UhiW4ZIQj4o1qNM+mQKBgDWgPnZqCHeuIgqhkSGmZtpucbMXGhOIICTwiMvz 43 | cAVnZsllPybK4OOPeCrod77FUF1Wq1rYcn9jptmTVOnw1fNvq1V5/N73OjKSoKGw 44 | CNbfl2DzNzBWuHgONQUyxJx0CW/tkh5LiusmZOmEOvv2q0OLA/J1j6cQtjqj69Mm 45 | eVnfAoGAesQn/EXCofQMQwG57AUP5dwpYsQwbDHhKL/oXeFU+Z/unIqvBKTZaE0A 46 | 5ZyWLQBzWGCpQi2AbkFfJzmLzkbu3QKvnlykh+WScc6p4fP1dDXwCzym+kfXd2sh 47 | IdE5+nqKcfCFD7ibBAw7UTdJ00uz0GbMFA1tc6hBI+XfgWiIZuw= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.appspot.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDcjCCAlqgAwIBAgIRAIrct8D+ot2uZcJownctJUcwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MTkxOTE2MjBaFw0yMzA1MTkxOTE2MjBa 6 | MHoxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEWMBQGA1UEAxQNKi5hcHBzcG90 8 | LmNvbTEWMBQGA1UEChQNKi5hcHBzcG90LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD 9 | ggEPADCCAQoCggEBAL3+acBH5ywollWyZ4wLyOzJ9Ud6/dPJ36ho2YgRn77+iXwb 10 | uv/R7th4C36uRhj8S4AaGRZRS7aaHWjv8rvaQG2LJAgD2dXNdQU4MjmUdodZeAWl 11 | ItOpafeaQpypXgVDR8G/EHKT0oEbxpIft5TLblcSK3gTt88ytZzbYoarKNNeBtdN 12 | aoSt+OHaCthtJk1RPl7/z5FjpkiOtDGPDAMdB7EtAIzsKbXk96YZ8Iph1qUwu8kN 13 | btdotabTchz4XtgruJEpaMB07CG8+U1xOOncZap45Ngd9c/pbxNcyBEiIM1sQwNj 14 | PVh1lSLB/D4NcmYIINAxX+G2KMUt/UVgPT/ERmcCAwEAATANBgkqhkiG9w0BAQUF 15 | AAOCAQEAcaiRmWyE0YiStZyRjBG9wWnMc+ghALCgrsBwZHMepQmVotfk7gQDoKXf 16 | Ym9edQAAy32Jdw6N6Bzq5H/CoeZWO4R4dektPA///ClWyUDWI0iD42zullfEh6uW 17 | yr4ljU7V5VmS8k04NNkXz4gbZvueCnczgcy00x6YeOnQQQb65yzHDXqgeYCw6w66 18 | h2J0Tgu/yOYaeIqwG8J9jt2vEPzhE7Z5ZYs70tR27JND8iVZ4S2IBf9DICmZokk2 19 | 2Joa/4rshiYZB0w2UtMIUL3Cxk+YKZcItD5vj/8FLlKrOQ821xYmvNARak6NmcGy 20 | fghcIbZ/VxQVEVlrsrbAFf14tRJ99g== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpAIBAAKCAQEAvf5pwEfnLCiWVbJnjAvI7Mn1R3r908nfqGjZiBGfvv6JfBu6 24 | /9Hu2HgLfq5GGPxLgBoZFlFLtpodaO/yu9pAbYskCAPZ1c11BTgyOZR2h1l4BaUi 25 | 06lp95pCnKleBUNHwb8QcpPSgRvGkh+3lMtuVxIreBO3zzK1nNtihqso014G101q 26 | hK344doK2G0mTVE+Xv/PkWOmSI60MY8MAx0HsS0AjOwpteT3phnwimHWpTC7yQ1u 27 | 12i1ptNyHPhe2Cu4kSlowHTsIbz5TXE46dxlqnjk2B31z+lvE1zIESIgzWxDA2M9 28 | WHWVIsH8Pg1yZggg0DFf4bYoxS39RWA9P8RGZwIDAQABAoIBADGSzG0LVdpDzNYX 29 | csUr3gVKvOElyk0Ug3MhyICkeJYRPDZR1f0h/bwltnobZtbmHZ0TMjCMjcDbfYj/ 30 | 8snpLJ5oi8I7nv8WWM4/13sGrdarFZIDgI7RyYB9k5vk5U9iOrrm65e50lc1tB40 31 | gGYmnmfBqe3u1ysNBC4lYBPbXQ+pKaBRAHyEBELhQznSXW7FqX8O0ij87dMjAhzn 32 | Q2+7EyWIsgTWloxPP0YrAJL5ydsawEuhhUuaKk18yrHis4DgQch0abSgYo8fXSUK 33 | ltLQ/hwEw2aVkFrBj21I+MlSEHq+dYh0N+rgG0eqWHb3d0pgwijzKJ/JrWgzIQKW 34 | wek1s8ECgYEA7XbEl79r6KFo6plJNbpgEKLqJGoU8gl0AWowd4SQ5Flz6jgX6iyc 35 | SODl46SKl56NZsJ50IYSra85BZUie5S2TZtCT4dyN3MTze1V5vc/QcjRKcvFPH3l 36 | ew3buKHExa2xxHqU8sYlT3l7nMxJzx6LbFW9TJ39AE4PZKV9Eaf+oVkCgYEAzNMN 37 | Jx9+iKIWnHUw4rlXNyAk+vsB86liXBHIkWU9OqDIXTW9nyBINbm7SP2jjf+QDwvw 38 | XQdE0PCcRxBJvZp46T5EuSec+gjBia9lVmr7Qy9md4KKj/8Me9qAjNsNNJtnIggH 39 | 8/6FmHueo3Oudx4qxuWQfwKJO9bdTjlfADzvbb8CgYEAhh9G+s7LjCFeuOLLTuVt 40 | zPe3d8nS+sIMG6B2r4rYq6E6r1fvafy4aRFdxy3weaK8CwZc90JC2obVlimdyF8+ 41 | eKbw1SqTgG4nCXC7zDBqMiXSveCyDnCtZMt3BtmX4m8wsODrsBPqjvD2uKFKLwn5 42 | hb8HpHa3p6xvVVGDSq2wTEECgYByRj3MWhHqgSREXk3L8MPsCY8YR/qqyxIJdBKG 43 | rAkhMJsZBeapZQVklB8ddgVOMAtbmbmc7XVDbTqDm17I3eofl5IYCzXVehUgkC7l 44 | rAJLVaLBgp9z/0QjxaB69avEcf90SS7GvnYiwLWdU+k+pCIRnfqkIfIW5KXMAs4x 45 | /81FWQKBgQCVr7XbvuARd8pkOdsnoMlPmHWajJIbF8NLnfH0808kIsjy5SpOeJQ/ 46 | j+ZS6YsY9+KmIvCmCjnuP9C9pWbTokeOICxXzOH34t3TboJhQqyJ6KDYIWqT7V41 47 | 1ywmHjcD8DSuue2lVa9BCzXqcENvw0pDVZ9qAGjXN4zICdDQR9uF8Q== 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.e.akamai.net.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdDCCAlygAwIBAgIRAKBUlAGnTEkPM4rbKFmwnocwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MTkxOTE2NThaFw0yMzA1MTkxOTE2NTha 6 | MHwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEXMBUGA1UEAxQOKi5lLmFrYW1h 8 | aS5uZXQxFzAVBgNVBAoUDiouZS5ha2FtYWkubmV0MIIBIjANBgkqhkiG9w0BAQEF 9 | AAOCAQ8AMIIBCgKCAQEAy0e77VbdbhCXeOhysYSbUbx3g1/zxjLfnwD9jjvCDtLm 10 | cNLdOQqqTSWphRpFQDzUqt1977g8HRpJ9ZYHg8wQeB5qu6Y8LfQUpFnXV/lRXs06 11 | XFhOXIuWmfh4b/iVY5fe4TSdAfZn9oJse8V32pbe6t4gyj0oULurGlD3gMqCArDp 12 | nL5MFz1NKxx5cdBw0wf9ny/O5HyhL4DaxFRv5XsNeI3Ukjq7pdei4DiYryncBfJU 13 | XM9q0DNh4nvsQIAZARBj483gE6lFmbDmPl1aUc3AJNbszuxQIcOgJtUXwqPH+wIV 14 | j71coL/nqfTV/zddpIIQKIrK6VDvGHEV6hbnUz9VXQIDAQABMA0GCSqGSIb3DQEB 15 | BQUAA4IBAQBx92+Srmem1sVztRlbZvMcuvPscW+sVEVnrMkPJXJ93YBsBech1VeB 16 | w74MWkhu+uALu3Vo5EONGA/2k3aHw70/64/DUEov10q4vpQMUgvVJ3MxiMrQKXh1 17 | YYT+Oi8eZgOg6Dd487oY1BzOi6dzjWl2ft//cQV6tvSl8nQwf6B3e07UPlq1lg7w 18 | 6YxyBDvTfXOmAOv9GurmKR+9gxLCVzdkza/AqyrMjxpp1D3CBOlVXRIgNK/qJH2k 19 | 6oXj7hm3pmAjsvo3gIniorpgF11IqizbTx4tA/C7V+Vav36A28DYcBf6UF7pzwbK 20 | mj1SnwKmKgj/ZPhAJkT5VEsMKavJtzH6 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpQIBAAKCAQEAy0e77VbdbhCXeOhysYSbUbx3g1/zxjLfnwD9jjvCDtLmcNLd 24 | OQqqTSWphRpFQDzUqt1977g8HRpJ9ZYHg8wQeB5qu6Y8LfQUpFnXV/lRXs06XFhO 25 | XIuWmfh4b/iVY5fe4TSdAfZn9oJse8V32pbe6t4gyj0oULurGlD3gMqCArDpnL5M 26 | Fz1NKxx5cdBw0wf9ny/O5HyhL4DaxFRv5XsNeI3Ukjq7pdei4DiYryncBfJUXM9q 27 | 0DNh4nvsQIAZARBj483gE6lFmbDmPl1aUc3AJNbszuxQIcOgJtUXwqPH+wIVj71c 28 | oL/nqfTV/zddpIIQKIrK6VDvGHEV6hbnUz9VXQIDAQABAoIBAQC081wD/4kIithr 29 | Fm/SOXqRHbU9StKTIYIR5i3OyL8LtwzObcXjGu1R0y69fw8aCYw9tQB/vX41Ycto 30 | Q27ZEXOvmVPlSirTtSwSyK56b0LRotpKjYjjtJYQ5S9AbQV+LBiIW+9PaepNcvfi 31 | jXsNJ7OzWpvRqvMSOpwqxtwq1xk4Dm+35vDxNJWwEeRtDNu0MoDme8wR/+S35OC0 32 | WLsByAfENEXUsJHtagG5UgNwsNWSVu/zk5jpeN7iDKeZ4Zt4ZOGyOWVs652fH0CO 33 | zX86omgufl0MaaaUaRzdoRRvPAXUGnnR7EC6X3vWbAvA/Kjpuqp5uIjZN7vSvdwY 34 | dtnzOOkBAoGBAPgEDuzre1eeaj8c1K0CMYoDozQplf6ScDLpAfhJLZu2s1Ug9dit 35 | +bchPbFoOo1SvaRUqzv1Dbw3r3hzMkYlsKFRT5RMezWkQqKh4jZmLIm3bd/MuprT 36 | 8KfAMS2YB2m41CCf8rMNw66IedpNmXLv50NwOtUcprzyHcfZEImjedDhAoGBANHT 37 | AGjixB1AV8+P+1le1vAxkhZWnxhk8QXUWOu2O3shI597JA0c3l9MscZYRF4WuDpG 38 | qqvK8lsmspt12alaZxjFA7eNJUHXPGXUki2nJhWXPInpVhLMlWXiP3fTWnqSHS9y 39 | jTB5XarEv8EtP69CzWvaSlB8zjE54XZJmjiJHcf9AoGBAO5KP+jkC1rQyrYexjv/ 40 | yocXHZxFhGbWXdScSRc7gAWHEWBuTadE6JNJ7dNhGDimUazs6KSvuuWm/wGUdK4v 41 | Eji8PeB3Zz3Pt3I4ZXbszkf3JCsNshCGJ0eVgeqTkjPCsJUz+GSOif9MAv965T8o 42 | PqNt1ijh4VXSrkhQRvJnTeghAoGAH5ZON3v73hNzpLGeOyQF437y6R39MWTwy9nd 43 | 0Q5MAgtJG5ckJD02VM5s7NkY4bk13sAIrXgN6B75QGILdG1Bm/78wkMjWrgWRZYs 44 | s2a4WwO7f197L7VQwFfBCj7tHgqlDiGGk8eRjEW2QFSZg77gwd3I1jkTqWF3SaFm 45 | 8B/kNdkCgYEAvLv1KA+iO9Go8/jV+Dcziy3xqXHzPWB6Cs3bazc9M+PI8CqqiWF6 46 | wSeNFxZZBfxjsUmO6GrmJoGjzZ2jkgdMSGA/pta7KGROMWbiBw4qfcVkw8NSqiNK 47 | pxICA80W6HVMZDu8jsUKYcJLwkhoKG+qC/CHGHuHgFg6izC284jPwp8= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.facebook.net.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdDCCAlygAwIBAgIRAIN4jP9xio31QeGuYqT2RWkwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MTgxNTAxMjFaFw0yMzA1MTgxNTAxMjFa 6 | MHwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEXMBUGA1UEAxQOKi5mYWNlYm9v 8 | ay5uZXQxFzAVBgNVBAoUDiouZmFjZWJvb2submV0MIIBIjANBgkqhkiG9w0BAQEF 9 | AAOCAQ8AMIIBCgKCAQEA7bWdmMZYVtIa+xIN+YN+ZH0l7yKC4purXQXPoKYMv43j 10 | 13lYPhcqlpNhcl7oh6Ve/xL0sL/TglLH4gFxXsxfQelQ2BFyVDZda8BeL7cGwG1l 11 | ku48n8eQko4MU0vmGYQfIlPr0HaNsONWFa2b8Dn3uoqvDxoqISctQfHpGvZLuM5P 12 | D4NLkobJg1g147fcqALS9EXUAeLQ0EnOzLXizOy52W5EZn8lsSvWGD3cGikHJipD 13 | 0C31KXap+tyjSFWtBgcbr1ZbFqGc/u7/GQwSJ1Mvd2HRl+9vGc3OkxIAi7lDLn2i 14 | yGtCYv9jccqHZ8brvpwi44YcGEMUqRbHvMR0qEjDxwIDAQABMA0GCSqGSIb3DQEB 15 | BQUAA4IBAQAHiuGfbG8JlnaSPV8A4VUDVvDdSn2+FgJbwj92O0UCEeAZzhxbFN2X 16 | i3GCS5yZLf7hBducmQiGkPvrsngnyp17FZzH4Nfo6a6pTTFXlSbOzRMUygxzwu9j 17 | 6ufPyNg8e8z8CV/jNRDF63DOt5UYUaLRPvRGVe+P6i8KNB6TOaGJFjMGeGU+D4Wd 18 | r/Ce6yDRvezMB36irzL7a3AdHc8KtZnViDi0fWmxIoBU9VMJvuFT/BTTy3Ox3Ry9 19 | moA05U7BdpZsmBBv8WINu/DSvmf0cBe/RfagFSD2zRHiHozvf1CpVTo3/Q+GGSn9 20 | 1dtQHkROR/AmU3W1m7rLgSn3EP/irBwt 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpQIBAAKCAQEA7bWdmMZYVtIa+xIN+YN+ZH0l7yKC4purXQXPoKYMv43j13lY 24 | PhcqlpNhcl7oh6Ve/xL0sL/TglLH4gFxXsxfQelQ2BFyVDZda8BeL7cGwG1lku48 25 | n8eQko4MU0vmGYQfIlPr0HaNsONWFa2b8Dn3uoqvDxoqISctQfHpGvZLuM5PD4NL 26 | kobJg1g147fcqALS9EXUAeLQ0EnOzLXizOy52W5EZn8lsSvWGD3cGikHJipD0C31 27 | KXap+tyjSFWtBgcbr1ZbFqGc/u7/GQwSJ1Mvd2HRl+9vGc3OkxIAi7lDLn2iyGtC 28 | Yv9jccqHZ8brvpwi44YcGEMUqRbHvMR0qEjDxwIDAQABAoIBAQCdM8d2em1/dVGM 29 | iuMdCL30nOMSY6NlU4efbDFkT4wMvjxYipI19cIfdHY0Wdmzo0TQsWuK3EF3ZWF0 30 | 8HlWNRgmEbN6QQd388ASe1SOf58CcRaEdfM3w5Wzpic2ivIwG7UvUYqZAV4xBhcv 31 | HPIMi3luLzsYZLhJ1ovSmbYMM6feHaO+MJXWuNfynkVTCMpVxbPQeYDu1rXBwNKt 32 | 9G7O1+9ByJiYj6nHYBEB1r/qXhPtqhidORgRkGkRmIgzVKhEiXL9XcvBdfBirJOc 33 | c9JLliEVvR+xIFtpM8ELGJyolcLCmmtSBkSnw51TMjBGmD6VjPXbqc09S9FopOs/ 34 | elxloHVpAoGBAP0PGGla+mkjdSNOEBq76NZhMs3xpRpHTr3KHkZjZSX/QC8cBruQ 35 | uGAStnTNUBtXayIl1R1HHHWdIDhnKAqUmGCx4Vho3BMvcmDBkd13oVUGowqmslxH 36 | qJEVCgSjvcqmQV6zbvEZ+T/ZGpoB+UD1CxgKdxHUmsjrzPhwU3Yx1lwLAoGBAPB4 37 | 2iQfHUrG8eSI2Vj4OkZY9PliwM04Q1HlXY/V2ONK3KtrUlUXzHdNzFXmBMCqvtWj 38 | mnbkpbARrCzoaiyUqVVEUgTNvX6PhJ1Lyp1O73kurZqciXYFDEh9yoJSlT+UABnt 39 | 9Pi3ApOqFEpRAMU4iBLcCadf5xRQigJ+vSGkixC1AoGBAOAkPrsSmjoF7fsXaaxE 40 | RDeeYCGJp3NfNZ9lJuuxniXJsFAJwuzfgm+WI4XRVOLiy0GzwM/t7IdAZQmQVScJ 41 | 9u2uoKpuNn/HxsdsrIY9L+jfuAn3HIQf9G6M9BKn9bNJDx2SUPG8z8h9w9IlbWDb 42 | qrfgjRZ9+Zt9QE/NLh/ChNuBAoGBAIljUqZejHrDjUIXma4GLC0y98tfy220Xmn0 43 | 1G6wK/k4NTlO2Lw7G5tx/HN7Nm3pX5xpm3+gBLXCcw85Pif4S4KmxQFvlnsvfgHs 44 | YndbuOAQdikmlDa0jZ8BF2k7y3+GjEREOri6vqMlAfCvtPP45212/6D73ucxWJgy 45 | VtZYzwcdAoGAW6hnUtP25WpZFqfxPEgGLlzfqiwJRzWsInf3z3ih+jIh26o83n7W 46 | QxEVRijMShYpuWzZ6qv/DbuKY/kMQjgsP8QtPFBJJInABu7JwIzyJW9mqwcZBSfN 47 | 22TYyhLRWPAJgaLrwNVZGdDOkb7+5QSupbsa0GaGxt5WEmr2CiWf70I= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.githubapp.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdjCCAl6gAwIBAgIRAKTF1BXxw2bzq53IxH87h+gwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MTkxOTE2NTlaFw0yMzA1MTkxOTE2NTla 6 | MH4xCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEYMBYGA1UEAxQPKi5naXRodWJh 8 | cHAuY29tMRgwFgYDVQQKFA8qLmdpdGh1YmFwcC5jb20wggEiMA0GCSqGSIb3DQEB 9 | AQUAA4IBDwAwggEKAoIBAQDHAm14haa+ObnJ4xcwYuG4XaM6xup5hKfXM/nlmCFN 10 | yUC+07lu7en+blHNWR3DjqQ+8v4UPp4gP2bME4d+vVztn9gG6X+eDU+Ud6PbmRKw 11 | GvcyuNbqxczh4gsVlQgXoczl9tlmirFVo59rWd68zg8ycpi83jrOqG66Svce4vT0 12 | Eu6ACOFyyFCOCfS9Ab+QeTYw4uNWScs0/uUAy5B/q+Rh2GVxlRwregd6rjcybHvN 13 | yp3rZTWxUmkGWmpr+rXENuFHxYAfBP0/R8kQXtNfG3nSdNqFG7xt396nqbOLfiMi 14 | p1b1rwrZwjij56l3osL9N00jrNCwSRyPADMjpLkQbojVAgMBAAEwDQYJKoZIhvcN 15 | AQEFBQADggEBAFxJHeujDwo8hNRndZtenyR5TiKk2YU0CMkELNRMEhDiv6IAM3Gc 16 | ISsahc2N2nqTtsMkBYd58u8vJu4iHIbQDGSka4Q9tntk8iM2IPGXRDK72H9V6LiJ 17 | aft4fiOHOjNxvbeFbnjojJrquMBy81iPI/l9N+H0/08hEMYyYpL5SSNqIdPEslnM 18 | eiTFPCl0uc3vUh6TDahjgPPcq8egBJIWFM2u4N+3xIfsNqR4SEevkYHm3ue+TkIl 19 | bOQVpix9TdNcQ3UitSmMLa56RU9Vi1HYADoiKTql2r67nbDUebFjYMx0Hqc1bVLI 20 | ZacfdjA3kZoNQPTqIeJzq42WoUmIrD45KDY= 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEowIBAAKCAQEAxwJteIWmvjm5yeMXMGLhuF2jOsbqeYSn1zP55ZghTclAvtO5 24 | bu3p/m5RzVkdw46kPvL+FD6eID9mzBOHfr1c7Z/YBul/ng1PlHej25kSsBr3MrjW 25 | 6sXM4eILFZUIF6HM5fbZZoqxVaOfa1nevM4PMnKYvN46zqhuukr3HuL09BLugAjh 26 | cshQjgn0vQG/kHk2MOLjVknLNP7lAMuQf6vkYdhlcZUcK3oHeq43Mmx7zcqd62U1 27 | sVJpBlpqa/q1xDbhR8WAHwT9P0fJEF7TXxt50nTahRu8bd/ep6mzi34jIqdW9a8K 28 | 2cI4o+epd6LC/TdNI6zQsEkcjwAzI6S5EG6I1QIDAQABAoIBAD4TwMgWkLPH1+9k 29 | 2gfq4FQdSVx9TgjH238ipHH86W6VN5APBUnYBuSpzvSKNuGYbh2AuMbh3Xtbq5o/ 30 | AUYElac99Cn7ziYkKs26IC/Q6OZsEu4MgGXNe6J+W0zJJzQP8ZVOUfRNkRGQr5rR 31 | 9svYTx9CZeiMPbXXDmsoFTvaOeSkMcsj1CjUINMUh2MpxQra+h0H/0r7iYdNZ60E 32 | Czh7uY6GPbBPYQCRoZvlyQgPoLGHKpIkfSemTKpoOrQF4ce6P6VOXsf2Nw3eL317 33 | evm7ZVt7UGHhI04y09Tzc8hVaDiGbo1cXmwJH/mLdKQlcbUqEFUKcCVoLdyjxVu2 34 | L8H832ECgYEA9nNrHO5KQzTrTQtcc/JtsekYFW8eNMkICfCxcSeC5n9XG/94NYIi 35 | RXXAxtwxBFQ/ECLA9a2j5fMj66aoEQeDs/QWc7IHZTteeoKaMSlX4/knPL24tkdS 36 | FjyZ0QJaOjkGLPDkUcGsHdLy8eoWBU2omMmVBNWnkYGXepotm/9kcD0CgYEAzrhu 37 | cN7m8iviM9al6ArKjLus2Jwv2fVQMUA3rEE+kVXnTlkERxLmjReOZJrl6krzQKDE 38 | 0VM+p+7MY75qYFfq333o7VC9Vwv/etzsiZmz0Xh4SFjbCd2Yagm4WuflhxYzsL1d 39 | I+gxZ2ijF5s/mnogUul+DcAA/LwquKsukGkHLHkCgYEArek+sfi5sPlb/k9BG5T8 40 | sapCU4XJNAiUwqb2IFp4df1wVBKQGnpNguSYd/wUHvDwW4uazQOOgAt20qkVOocp 41 | +kgJu/TqYRZnEl6tPnnlSrucY7Gh8gccNxLmnGZjk2iAIiCPjd30fktJI0tD5NQr 42 | YD4ICZRXnkdrxJmeC9JKZyUCgYAB8WnYVcAF9rOhmRrmG3Pb7sepIY6xlcSzMc9U 43 | JyjXZN9PtTZ9FIhmOxpzh6ExmpK+wMQY05d7LJtvNJL7ZNgoUZ6m3GNrNgmotfrj 44 | MDaoeWFoDK3CYfrUxFKfSB64LlU+DAmcFMqiFjGyPxtR8GPtY5RzvKJFvd8I7VL6 45 | uIIAwQKBgDKIXEhnEWqC1RQoLaqZ6BnEonma+U/i72Hv+n6NV2ftyWYteIfpx1BD 46 | pQke4yGRRMCZpzvN4dyTnXwEnXVRNpA0+GDwQHPea4Qvrrxgc6no/8p1MSKZk7x1 47 | dwOMPZFsQhwA8HuE42jYz6oivPVgTN/m073QnSeV1zwrhjv8vRfI 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.cloudfront.net.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDeDCCAmCgAwIBAgIQZAFgPItphHVRkd0tWOeWrTANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUxOTE5NDMwMloXDTIzMDUxOTE5NDMwMlow 6 | gYAxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEZMBcGA1UEAxQQKi5jbG91ZGZy 8 | b250Lm5ldDEZMBcGA1UEChQQKi5jbG91ZGZyb250Lm5ldDCCASIwDQYJKoZIhvcN 9 | AQEBBQADggEPADCCAQoCggEBAM18L8aFWdPNWs/XJRjRxvSYd2GqHpWevLb9jaOK 10 | RE7I4Ggo59LWgfnKKTWts10nRvPxOOF8kEihLrmjMp5+aNr4ow7uf2IcYr1N1rUR 11 | 2C1xVYNVXdR0Ml0vwircJ1NT13s3apFfXAaW9ziivqEimzX0ZIZ34eZsQH47B4w0 12 | 7ZXYaCB8d59gkD2j4WD61heGc95OBXMlVHU/4fW9QXwVg5u3keLg4TkRVsQ5+wkD 13 | xwm/tumyuRnNveojEK66dWyScYyXZng64gyn+xomt07T/sCrny10qb0o5pGV63Fm 14 | WJVKowGPLxx8+BKrESFyiEO82DygZQdfAl0KkPRW8RK2ucMCAwEAATANBgkqhkiG 15 | 9w0BAQUFAAOCAQEANJwaYDtcdRV+stXlDAI+GPqK7NhYrSqkUt2GSxBAt1q3GvQW 16 | cDYWPnLVo20Q4XfAJKEO0TguFufetTv3451XRJmMwtIMWjtt4nr4JLdlPUPx0bEV 17 | xJoiKWbjT8veHmyde+uXAQHCYbsfCOtjrm+aF/Qi9JnTCUKXe9vpievLzjFOIXI8 18 | GH5E4TykbY1b7OgvxcOFlt0fK0qK4is7XOw3Twf7+XtBYDBtwBWbV8dpPauk8j6/ 19 | 20BtM/uPgJlRvA//7Jj4BZbpJZa4Sh4jcMM9MrTIx/gSpQHBjqlFs9gfT9VsZ8jq 20 | dO1ZENZlVBQCnZ6oBvkJFEP5TKSe9bUxJ9A4tQ== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEowIBAAKCAQEAzXwvxoVZ081az9clGNHG9Jh3YaoelZ68tv2No4pETsjgaCjn 24 | 0taB+copNa2zXSdG8/E44XyQSKEuuaMynn5o2vijDu5/YhxivU3WtRHYLXFVg1Vd 25 | 1HQyXS/CKtwnU1PXezdqkV9cBpb3OKK+oSKbNfRkhnfh5mxAfjsHjDTtldhoIHx3 26 | n2CQPaPhYPrWF4Zz3k4FcyVUdT/h9b1BfBWDm7eR4uDhORFWxDn7CQPHCb+26bK5 27 | Gc296iMQrrp1bJJxjJdmeDriDKf7Gia3TtP+wKufLXSpvSjmkZXrcWZYlUqjAY8v 28 | HHz4EqsRIXKIQ7zYPKBlB18CXQqQ9FbxEra5wwIDAQABAoIBABXJtjMhjp3Dp35k 29 | PJ2+GI903yuu4yFQPIhWqD8P+SA1cn344GPdtNhslCQJ7/vPn1lcWYCnOZFJ7e9n 30 | G4Xst2eId5mstjsL8XhLGZoHc1mWK9AKLDHLxE9XMgpjX5QZTr7U6GrTpqlYNox9 31 | zSK+zaBR8prDeWN6VPhNgAZg0lRR9kIZnCVXfGC4l0PNWIC3EWvX8/JSgasv7ayC 32 | Z4PCXiFFEC6HnqmR9BGf1ChWnL01qeVwqrASy7EFFBHzRGlODxeK9ZJj5kMvMZ4G 33 | 3FlQff+zrdEBA4ywOzX4HqCkrKGKXTJ2DeeIllLlwDXyyyekxyGlKZxQzzw3tMkN 34 | 8HHrEpkCgYEA7ya4JwSI6jqw/V4XfdQh5/w447nbY6cE8SA+1gt9Hk7/fBtwJJFd 35 | 90wuv7JuvMqREKO309DtBuOm8OL96MYzwHcubUhjhpbghZ9RbgF7O0xheTcoz3O0 36 | Qg51ARYu6O4lLEPVM1dtRKNDZrdr0zCvdmnGP6pJ43dTf/kjVeAwItUCgYEA2/ZF 37 | nRYMYGnX9hXNHn8D8oWsqWUOaGYivfqWsj1t2YrvN7k6PmXhze4n+ZKtKtHdFQwC 38 | oJaEspyBULfUoRybwe8hryA9mcDOGO4WXlTLUubDS5/ECmklXfTgt+5q2r0HhdCn 39 | JRUYnxTsbrU3VQRRnibWDBxW5XaI3nuPzEX1RjcCgYAczlckLAGp5QPooOrHd0PW 40 | Q6U+mOZ6LGYF/VJUSfH6Mp3Hfy6U2QWugfinkoCQMP4kOPQtiV7jk4xKO61F2onl 41 | RvXKqAuE7KuCrNwMGhWT4PFkvmYmBtPRmRgy108zM2w61rjZhFBfEiNOPg241IZu 42 | BvOgO4zG31qpcYL2Fxj1OQKBgQC+5XvC+fih0BoSQxdyaQ9W8jZICSE477MlJ46T 43 | gAaO7ynvNXzb3HXcz9y3l1lcOShi9Lpu/lKJ5JPCJtiNPpPa+ptELnnnr1Huhuq4 44 | 0WRoPUeuoSh1VI2OflBssKjhz33w34XABBALOBB9gB5WVVo0JEZN2mZ73KSqWZgR 45 | 04ErfwKBgG9GEbZklnSEGLmZz3N4tHeglIYuUT6AT/KfeQ+VyWfvhUz23ws8vRoe 46 | VNqr2bHVgeWmu3iWSTP6mRfo/kkWbhnJqIw5Hy8MaL0qHRqQtWXMnQtv3Tn53z9l 47 | 67aCJ4ZNYvWqaizjmdFGuxI6DizOgWMIXCbGnfy0jFWL9MhSUC/V 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/sourceforge.net.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdTCCAl2gAwIBAgIQUb+thoayOe4w533NcH8gjjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUxNTEzMDkyN1oXDTIzMDUxNTEzMDkyN1ow 6 | fjELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRgwFgYDVQQDEw9zb3VyY2Vmb3Jn 8 | ZS5uZXQxGDAWBgNVBAoTD3NvdXJjZWZvcmdlLm5ldDCCASIwDQYJKoZIhvcNAQEB 9 | BQADggEPADCCAQoCggEBANgzlGcdLijjJ2b6mnzNuN7dCVWixsTfC5yqNplO0AHG 10 | xXc4TUasv1XK8nR2LdS1eQS7Xn6GVrpqkj/HNNBK1XEJ1lHkb81/wxkYbimPujgV 11 | juGhf6YCGK3INHRU8vOmVf/NOYoQmXEWNeb06g5G4ICLmKgPB2x8sRSHUXlk271F 12 | ySvksiBCQtycvjvSQIhsMQqV/SPGTj629p7vNWwhaqqy50PQot3bSsCMw0SFS2y+ 13 | zRN2GYwrmfeBWZ4I4MPHerQna1Z10Fohq/MGk3kiq1peR2dYVe/7oN4kmaKx9/L/ 14 | 1RNWHf+qevwyiq+/4YdHVvVz+11qNwgdQRzihLeDYycCAwEAATANBgkqhkiG9w0B 15 | AQUFAAOCAQEAMlpq8jzhyhYOIt1yZ3YyjgOaQA0ZLS2HN1dsIataRHCKgGPrjZ8/ 16 | mQ2SK6gRQw0/IK9yhO7CzZrBDB+vqDTE2tp/UGg9Ge6pRNiGjdGXocwhpepLIKuD 17 | wMVqF1gjoXBdtxvW/UvzVC75zQ/u0I37fm123RRTxa5tWcHgDWBsThtN0S9lrz7d 18 | 4taV+ZZDarCfIIP0ZqS3nC54TUMnpm84VZJeE+NuK5OmisQMx4RT4NpAnesRyZaS 19 | 1y3HJT0mh8QXzkpoao2zvNljOBbdo0y+mU4YcbzducgNLJgeTS+k4gkUMPPwTwra 20 | EOUq/MqCCtoLAjXVTnSz0/E5hGOSz9KPHw== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpAIBAAKCAQEA2DOUZx0uKOMnZvqafM243t0JVaLGxN8LnKo2mU7QAcbFdzhN 24 | Rqy/VcrydHYt1LV5BLtefoZWumqSP8c00ErVcQnWUeRvzX/DGRhuKY+6OBWO4aF/ 25 | pgIYrcg0dFTy86ZV/805ihCZcRY15vTqDkbggIuYqA8HbHyxFIdReWTbvUXJK+Sy 26 | IEJC3Jy+O9JAiGwxCpX9I8ZOPrb2nu81bCFqqrLnQ9Ci3dtKwIzDRIVLbL7NE3YZ 27 | jCuZ94FZngjgw8d6tCdrVnXQWiGr8waTeSKrWl5HZ1hV7/ug3iSZorH38v/VE1Yd 28 | /6p6/DKKr7/hh0dW9XP7XWo3CB1BHOKEt4NjJwIDAQABAoIBAAZtIhAekeytM9Kf 29 | yE/FXaViNJDTEc1wQ8wYUx8jdJNY8S2mAsYDBHzsV2CW0q3r5vj5CMoB/Dn2SPqU 30 | VUGLt+RwQmqUu64ECiyIyV165DIekeyq/DxW+5zOwqBilgYf/5Zm5zrvW2A9JMUE 31 | qqBaAvpPK+5y4+mZmznc+9L76HwrtNirsvd1SdZiQ4w/IJmehfOGs/faw1X8DKhE 32 | 5DAkS0So+dQrnomfqx/bTYR3psV9rtNL5RvOlEL8Guaoypdh4bapuGvYnIqIPOD8 33 | jmX04DAjpg0EKIkM8VeuNfQ7qChwpF0ofbwiIjRvdXd+iEtb4/608Z9bV6+VttHX 34 | pA8wtoECgYEA+VO5bX65wIyI5Qi5QqdhEohSbsgs31l/2iqriF2mz9JCtuOTNPfW 35 | R6ONVxX5SQf7fhXej43cpRO4/Y7TzLvd2nf0qIo7GkrNzDg8kOQl7jYjVF71iCFh 36 | v+PSo1enToDTpkpPoVbvPz15i9lHTm3gYafTYhwFsGpgQGkX9gxtiLcCgYEA3fzk 37 | 4Fba3lkAJRdpTrvWFU2cdddMRDfTaa92FHotaMgcR+FdI522luNhirNjG3m62zcO 38 | z/JCVOGhvPHPdcg+o9fexkWF1Kk+7LXel4qRvxxd4ZkuCIXdYBt+9GUdAkVivxtx 39 | V8fDVjdoUYFQIEFUHn1W9kJRM7Oh4LHkEKloKRECgYEA4438gOjWU9xv3MmXfDQT 40 | rrxor99WxQqEW/Px1mXTJ335kb4mzoMcOQoWp9LQUE1OxYbkOBT7ulZD0neW6xbT 41 | pt8wltqCkr6PEcKJ1JvF2qHioNCCO5psApzF1HrdohKGGRFdmB0mAovy8SZ/pB84 42 | WSi5DqQQtTCBZIgGbHRvTAUCgYBpd7rCP2HTXBOui7Xzu1iWXH5mmnjYvHFMeBmw 43 | 1u92JgURvagDwO28OKHiRSJkLmyxtDHsaFxNebnfTD/V5OKl820bZHKWPCbyTeJI 44 | u4RNeUu9YIq3b+pivA2QTe3/YznsNDygiP9smfyNJNQNzxwJNGG5tH5iAwl4+Ouz 45 | YtljEQKBgQCx9/+k8K1wKoxDtRVofiIPbVUb6QrIHiB9okjfvNw5641Vw65U0vPu 46 | TcyDlkGsCxZhRaQyndPO6VeprJeYZorRZDO/95xW1NXi5tH4DkyJCbi/fcnghSWF 47 | wltK7qdPcTpqFX3JWVX/psh7hL49ju7PnblWgaAAF91lWZYs6xWuLQ== 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.addons.mozilla.org.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDgDCCAmigAwIBAgIQVfpy/24rmc2gkDlRnZHPhDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUxNjE3MjUyNloXDTIzMDUxNjE3MjUyNlow 6 | gYgxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEdMBsGA1UEAxQUKi5hZGRvbnMu 8 | bW96aWxsYS5vcmcxHTAbBgNVBAoUFCouYWRkb25zLm1vemlsbGEub3JnMIIBIjAN 9 | BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/JXc/V7fHhIKSwuCO+cSMrCOoGu 10 | jCPXgP8abIt/Yz0Yyo2hcA9mob7yL4SbY6s0VWdyNhBWTA7IfjiiyeJWIeeKoMPv 11 | IULlpxfFe95crmSxMvIObGqtABeCZoEo0aNSECYvcid3NryZ9yivO8vlT2AVPCn0 12 | HW5hGJDPIkKEpNTm4FhNlyoyLCvdm6FSZA3Q5EjBdJXv2Ee/yD46tGSiAV2gsulZ 13 | /IlcUq8+DPw9+x+4RLlv4e77tcG68Ywg7lLwSt86o06JjHy/4Iz8u5DcAMLufOsD 14 | FaWMLtc6B9o9L/PL/Zdd4xPWNwSxDmN2BFFzFZWxlDaYu9no3gql9ODBYwIDAQAB 15 | MA0GCSqGSIb3DQEBBQUAA4IBAQCzKQOeFur9wVXV7iE/c2W+sxWGb+OYbr5/HVCB 16 | u7lfyiZvoH3m9xTsM0QjqyFFoc6QW24zxP7+lfvc7GPHDur7+s2mKh6I0Vh3Fn5A 17 | pxqfdCnwoPpv+S/+eJ2WaGyRKJo0k6hKxshFw+/xE+YW4GBrOyRSQ2WuBcn0Fks+ 18 | DMz7XgagCCNVjmrjYpBK1eWBbTIdO2GVIAAjcv1eGKQquhVXocsLTZDca2mGGwcm 19 | jAOtLA6WMjAlPpOQGGnuG61TfXVGrB6rCTuBmDvl06pLbS4anWuUWFSZB6hNLjn5 20 | PFoLm/jFA1g/GAKS8s9aYe938jfh7YSXQx9Ezpi2Ge6LkhVc 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpAIBAAKCAQEAu/JXc/V7fHhIKSwuCO+cSMrCOoGujCPXgP8abIt/Yz0Yyo2h 24 | cA9mob7yL4SbY6s0VWdyNhBWTA7IfjiiyeJWIeeKoMPvIULlpxfFe95crmSxMvIO 25 | bGqtABeCZoEo0aNSECYvcid3NryZ9yivO8vlT2AVPCn0HW5hGJDPIkKEpNTm4FhN 26 | lyoyLCvdm6FSZA3Q5EjBdJXv2Ee/yD46tGSiAV2gsulZ/IlcUq8+DPw9+x+4RLlv 27 | 4e77tcG68Ywg7lLwSt86o06JjHy/4Iz8u5DcAMLufOsDFaWMLtc6B9o9L/PL/Zdd 28 | 4xPWNwSxDmN2BFFzFZWxlDaYu9no3gql9ODBYwIDAQABAoIBAFx6Twuws3U4XhFc 29 | Or6M3/J1SgKtwqwUCrrfSyozrZev/V3VOKVB/rcBlHtLHYZ6PEL1pp3xhfTgpUhu 30 | J7N8mfMO0ghuwGA2YXfJW5OqgyIQS5yMvAoep0dPSguT6/jTCtMFZv0dbCxTutKB 31 | g0/B8PAQkAJNhl9g64fB4Rmzbz8G5hJSjhjT4gTxx0csq6hX7ZrXVyyWrTSlyJjy 32 | 9uhg+KBcuTWs224R4ZUCCj1j9yIgQqlV9E54BHjrPw3fQnwi8fKxgthCCSA5wNeU 33 | 2EGIT6q4aBhtU/MhjXm6kJcuGzhDSQFJ12tgLnDugwicTWd+Ld0+BlLA7fkB2rwN 34 | 4BGqN/kCgYEA85xoEsZ+A+KdWj9tIsuQpcI7QF+h+s13vX+r8QoPnRwGB9g6iz+P 35 | kJAQ+Ki1hZIycZsRSYTtouPdFBs0rEAyr3BmW7UYhK7z4sboRjhvZ1LqNvWCRePa 36 | PqWj9mfZxigF7l2Hj4rft4nt1Ruk/T+AxjpmHse+uQJGVVhLxAIJ638CgYEAxYE8 37 | elRuhZ9iQst/SZ5h/JkaLqeXHY8UZimlSUgVW8RERQq+S5E3DcufrqPO560iHCNg 38 | WtnMpnH60RwrCzH6EUF1IqZPmjr5byl92KNHK8sdtLQ+YgnXrrYsPGEEtYF7nhAy 39 | ik7WzTVDOJWOf3iA5WqPX5qIHFyDHw/l/N9Y7B0CgYEAloefB3r/gwcUlB99IHMI 40 | /mP2mOB/BqrPwpiRdm/xFfOrBk3mXwT3gSyEUCJviAm+gdR/6h3peS2z/iiRc553 41 | s1CQ7zoH3HT+3rJp9HoK3J2vfCZYSTdyNCPGHQwu1PMGNzQz/86gTpk8DOL4IESN 42 | HfAYCg0DHO765uGYb5WS66ECgYAgumW3L76QzfSOdQJGxMQgA47fJE5aS5dpxoTp 43 | O9SuPDvD5R/bjdi9pHx1iBeFNJ9uYj5ZT7Yl7sVNWYmYdVOnAF3UvBJ80ED9Nrbv 44 | 6z6j9yiZBTVBMbhX70AtUTZijW5apvx5Bs95edYFzmKqpOFXIu1XPlhHutzPjObj 45 | nG8z0QKBgQCxtBltbMw/3pR659c1KbIVZP1qtlLhgp40Ap5G3ynDkRX3zoHGyGcs 46 | +qwWfwh4FgoVIetS5XLyIZ9Sz5yDCnyutx3rRZTRhhv3f1VKg5ourDiwDziTJaKe 47 | 6KXkrFaMINK7B/ZCsoap3AuC5L5gTblJjnM41NWfcRV9ESUFAh0e0A== 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.dropbox.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDcTCCAlmgAwIBAgIQTfGKX8PjQCp2/1wwQpfdhDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUyNjA1MDA0N1oXDTIzMDUyNjA1MDA0N1ow 6 | ejELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRYwFAYDVQQDFA0qLmRyb3Bib3gu 8 | Y29tMRYwFAYDVQQKFA0qLmRyb3Bib3guY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC 9 | AQ8AMIIBCgKCAQEAqFxq3c8UwgqCrtpvv00jwRnXB1vFflV5uLzUKznGO/GhibzY 10 | ZF91LoKS7rRlMNwai8wUagBokjRYEhfC2oFwyinDLA5m9r/vQDhKy7n8xIfCnp3b 11 | 3jhE8f14VF0DLGBJTFxQng5Cu0rqIJly1lbypQicJ/ataAtN6/gQRzIeZt0GfJkH 12 | Wp+V4RfT+5W6+JvqwDHAPjw0iiuU9GWPbCx28ddeQD4JQJ1QrT0dov3yYka0shob 13 | CUkpHei2EfZ8S00Dpa5tGBuwOJdM/uGGOu4fZ8BYlHb02RLSKno5Etc0ZF00ySuG 14 | BrVg/Pp1+h3pCcbVQPAmoJi0eiwCMbyWTvIqrQIDAQABMA0GCSqGSIb3DQEBBQUA 15 | A4IBAQA3OOg/0C8LHTCH4hy4mfkaXusPwj3Q68Ub56xRgxkVUebUhZF/7LUL2l+E 16 | ZjI05eLq2posHY3vsPU+bV8el65vqdgSWG9Z6LuEDAaRhUv+OuKRUZVnVYJ27aOs 17 | W6LHazPUhj5GdpDFT367B0RjE+Udcor6QeehSRYHRFmT/YYaxA1Z09gLuZj2/x7f 18 | axz26z32nJPJy9/l0nDZuZZJVOYcUumWVjglTIfArFkjHHZyLRBVMfz24V4MWGZS 19 | WIBnFdpCrnh7VpbpD+BBdJRNx5Z/1MPpI40skM17Sm0q4fXrlw9Yj4S5/rKyfuca 20 | BdiZ4EVBb1u0bis/PkV3Z7ntsxrE 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCoXGrdzxTCCoKu 24 | 2m+/TSPBGdcHW8V+VXm4vNQrOcY78aGJvNhkX3UugpLutGUw3BqLzBRqAGiSNFgS 25 | F8LagXDKKcMsDmb2v+9AOErLufzEh8KendveOETx/XhUXQMsYElMXFCeDkK7Suog 26 | mXLWVvKlCJwn9q1oC03r+BBHMh5m3QZ8mQdan5XhF9P7lbr4m+rAMcA+PDSKK5T0 27 | ZY9sLHbx115APglAnVCtPR2i/fJiRrSyGhsJSSkd6LYR9nxLTQOlrm0YG7A4l0z+ 28 | 4YY67h9nwFiUdvTZEtIqejkS1zRkXTTJK4YGtWD8+nX6HekJxtVA8CagmLR6LAIx 29 | vJZO8iqtAgMBAAECggEADX/zlbuQF4sONYUQZs+BqW8v/cgPCvVBoF2LybeFPLNA 30 | V7ILy+iXldYkf/15C7TqcAE6NdG4kNifozvChRDSAXPd0X+KJAj53zVkUfek3AFi 31 | yqMvyR7L8Hd5mZInufwyhGv2juXn1erI4TpMqgEozbDmDJJMD0awxdYLQBo1s9ut 32 | 5bOfrd+Fcjw2rVmCgoYT6sNhccGX5F96ogowfRXh3CsZSejt7g0VB7C8tDN4HUAr 33 | SVFAB1doN+JfaiGbB27A2qnZY44JCBWIjdcNn0foPaJLhl0+CZlVVC1zcTIubMw/ 34 | h/9IMAh0X4ReCLn+huL8ubZhFSKdwGtHOnd6Z5pCgQKBgQDVsUXxUVQZx29kzpmr 35 | i3vlOQYnmT86VvZdGtQEimZbYKksFcv58WhKnbMaBiNX+Pvp/0GNqi/bJ6v6XFpK 36 | pa1zZPobakd5M2WPF62gODKa3CPSO0rOGuX6qoE+NXTIBE1ez/977tpz44bBmIza 37 | GVYg3li6fSWKkO2udz0RTObDDQKBgQDJsZPPeNf2+PyFgjpG3OYHVpYggWAU8kz9 38 | tP3opVk7Lla0erfUBgks/tdOcVewccE94xjKh4Lw8yOtzQqTUdfdWV5uWk9W02Eo 39 | 3Tw00OthM0Oce1VYV85J2+jTLciMrLUQFDfeSFgz4mqE7Xnn+P04E+ktUbIPml8h 40 | ORNHq9WeIQKBgQC7MyUWliyauL+5C9RLF1JeKGpf3jwpm20PeyUpJSUt/6uz1xRt 41 | zTGTzDrOHXpw4sms39RJikGKN2LNXIIsyp78bAU+ZwheAMyDYjbUGOccCqXG0fJi 42 | Q+YchanbGXFIl5w/5u7lXwU4aKXwivc5SODOwnnwRRnSHcxZ/lMdCMVPMQKBgQC6 43 | bdKDZl6xISpAucPmNk7FH6q6tvs5wVGa/M3pWdTl2Ao63mfGqiGXHqOjFS8Jn8wP 44 | yTbkFWfaEdO71Zfd3jualP2tIPrO9amMHRqGc0nuWXU4UePsOZUrPgKyGFKUfRsL 45 | lrShWNt2ceUlo2AYJFTinbzdr/LXa0hdLCV/DPzyIQKBgBF4vI8bk5dsY2LHsQ/n 46 | GFBtVJtl8KGtKg5Cp1Y3g8bMsd8gJNhWSkwr7rQfdk47nQka4pqG2bUNMxurKmI2 47 | v44tIJx2gN5k3Cmf2X7E3v8o+BBRaV2AkV0tb9Nv7wCEjWWXKGuFpK+2KpAnHdH2 48 | 0Kdlab0etGYVGpaPdjumYV+y 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.metric.gstatic.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDgTCCAmmgAwIBAgIRAPUtc8UWH9/kzWv+usE+++4wDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MTgxOTA5NTRaFw0yMzA1MTgxOTA5NTRa 6 | MIGIMQswCQYDVQQGEwJDTjERMA8GA1UECBMISW50ZXJuZXQxDzANBgNVBAcTBkNl 7 | cm5ldDEXMBUGA1UECxMOR29BZ2VudCBCcmFuY2gxHTAbBgNVBAMUFCoubWV0cmlj 8 | LmdzdGF0aWMuY29tMR0wGwYDVQQKFBQqLm1ldHJpYy5nc3RhdGljLmNvbTCCASIw 9 | DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL74VILMLw1JIhuqkwNS/KgQNxls 10 | zpbKu2WM5EGRASA6jFzSVe9uJ7RgCsdXJ6DOMku4xVNzVnj2KcLd1wgmilYBbrQG 11 | FQSa8d25fho67jw9y0RT4I2SntMi3MoiCpZQzZCvjYmkLgefpJb/+xtijkzqArAM 12 | iUyvL5YeqTtyVthDWONtBydEBeh5j9Usg8p0MbUM27cs1MpKk4z2M1YIel9p8KMI 13 | xaW5zzKyaM9aHq0X6Ge2V2nLlyjcIwoWH4aZdCJ4tzJrKKGBmHxqH8RY7I6TA1NV 14 | DeIDO7Mrl5DGCAt98ghU6A7CaeVgAwfmN1QUqkDH/aGw0087GVmwPC5FAQcCAwEA 15 | ATANBgkqhkiG9w0BAQUFAAOCAQEAEn+B84DARIAaFMooG9zUD6L5UoP9kfp7tFs5 16 | goIouEk+KCHJB95KOSICsDXQ5AOqK+tRDcXwAFbvIwPXb5Kos/irPeOxeMREppum 17 | EbCFIxoRwNiKXjg6srAOs9YZ/pqi7jWQD9LlIeKSRYOZhqe/otS3fgvjWqDStdB3 18 | I8tInKdWgEyBIVpePrjxUkq3wjg+c2vhiFxuQJiPe6YBU+tSslyIThoD1LbNWo69 19 | K9SAONQTizH2zSKRG6BaHttm4+6Aj+OcJDxBEiPIZTW/Cr8EWUvx5XtrW2EFCaLj 20 | myo46G2dx1HydayYffBGzatfVUaJfpcw6yXsbYbI9kBXLPiK+g== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpAIBAAKCAQEAvvhUgswvDUkiG6qTA1L8qBA3GWzOlsq7ZYzkQZEBIDqMXNJV 24 | 724ntGAKx1cnoM4yS7jFU3NWePYpwt3XCCaKVgFutAYVBJrx3bl+GjruPD3LRFPg 25 | jZKe0yLcyiIKllDNkK+NiaQuB5+klv/7G2KOTOoCsAyJTK8vlh6pO3JW2ENY420H 26 | J0QF6HmP1SyDynQxtQzbtyzUykqTjPYzVgh6X2nwowjFpbnPMrJoz1oerRfoZ7ZX 27 | acuXKNwjChYfhpl0Ini3MmsooYGYfGofxFjsjpMDU1UN4gM7syuXkMYIC33yCFTo 28 | DsJp5WADB+Y3VBSqQMf9obDTTzsZWbA8LkUBBwIDAQABAoIBAEW393KBBLR+/JrJ 29 | HT7bby4ULWl01b8raFrcowBk5dpURaYljAYLWyd44LaB1Q/Z93a5kCC1PN6QUBK6 30 | VqS9HUfk4fuLNOUnhCGEdMsytIL9tFXPoW1OF/nRAnYxE1hpS4ME9FFJxRw3ZilS 31 | buRCiNz/mdeX3BBI7MCLlREE3zu4SLt748w6NqBrAAlZPCXM9l22kuIL2G7FLtpF 32 | FIxMB32iCYRvUBjbjfDfy7qEFB36L8PcPOee0UcPpNfndTEIK2BZ6fN/CRTUBBnt 33 | wpj74bNZSGOtxkypZZHVxb+mTrWaeuDhc/mPFLHtF/V4GWIEQ4BW3OMdvH2ESjJn 34 | v/t0OFECgYEA7gBK7ZbOgKCh9q3mJHYTWcgR6dFz7GIttX5E5UQ8VPS63GeubD6X 35 | hl9z8jCC3Ct8bavpqvVjYwgOd31D+0Qgx+aYi1E9vLT5QOFrD4SwpYM88SmQ0tcF 36 | LOLGO+r/3KkRMC9T8MXCJl8OKd5kMIHHB8RSlMZzTiwLV/pIToDlnV0CgYEAzWmD 37 | pUd3RCfgJzLGLKqVkdB3YCPWMsi8Go8hytsHyc9UdkdI7KvO3ITGiP/IJSVUix/9 38 | tnMgRVsbTs9vB5nJlEhQ9sXXBr/cSCJkK2r25CqRldKl7e/BHDJj8zmfEa9SPQHv 39 | 5sv/EAxudd0BNw3ndUjL+mSz7TtRDkY9rpm/TbMCgYEArCoqCZR97S5F+1vwj4+a 40 | j+fajXmmkeiziAa/b9ncitg+FBIsasEce2exSBEvmHUcnXkunyzDqG+7h1RmSO0P 41 | iYuV7bHnJwsDA5wNBjzGS/STsSCQUvSYGdAx9kYYsFbcyC50Wke0Gm3IoSDu+Ofo 42 | QgYSduzXnETgL9QtWhyD/UECgYBECHBrq3HbBwH8uZpdbNpBAzSmiPgGtelnOoTM 43 | tSKtOpgU3KNQj87hxrAi6+SUOPr5YU0cwqCrl/NBdP6nG85h6Fm4geon+B+zXICk 44 | yLag92BkqPIADmp9NktYYXtH1jN8tUmJvYLrA9MKAnrGizpf5A57DiNxrTW5bpY7 45 | X/y2dQKBgQC/YRRaZxtyq6yPWp+S+H1hVEJEFwHb+1jORIo6kmZLZQicGzw2jEkm 46 | +t/p8AWePIWP36UzbUYOYKh06qO4tF1W2sb74Nvo34S3LH5HPa+hzUKFX61+yJRI 47 | /lW6E6j51w7a3RLR8rfozsbORX0P7rhsuf5qqpj1xi8GfSTpmFlBWw== 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/t.co.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdzCCAl+gAwIBAgIQapp1Mb/uWoee61mGo3w/HDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MTQyM1oXDTIzMDMyNzA4MTQyM1ow 6 | aDELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMQ0wCwYDVQQDEwR0LmNvMQ0wCwYD 8 | VQQKEwR0LmNvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAodrgUrvx 9 | 2ZkCAr4kefbBavR7q7T7XAzK3jAmdPmGJJbrQZILKrZEnvgn+ySpjon8yqp9kCPp 10 | 4fJ4GxsIpYrMJOVbruBS+1PGbTh84XXElQzBpNtWotNgJEZaPe5ULvV535NM+/D3 11 | HkW+5Lbu4+y1ky0l02Zpi7MB1czeg0oHq7sprWDA0xfnvRgjAZ22Se/39hNJNm7Q 12 | tJjDFp53LHsqfJQUVabl0pVVgue0+p/KnGWb6z9KyB8Xut2xC2nGtbYeyHRJjLce 13 | QR3Za/VNmgJmIN73vn+JirJn2LrcaKbbKqeDFX2CqV8IDDW5NWm5bAyZh9a82gPg 14 | Zps4iiF6UDtwlQIDAQABoxYwFDASBgNVHREBAf8ECDAGggR0LmNvMA0GCSqGSIb3 15 | DQEBBQUAA4IBAQA5FXmTaZnsoVaUxDf1ob2zdGLMAhUWUc/1bEH+9t+Fe2anfkrb 16 | 4EJhxgzPliKkS9ygIiF+d03B8cs2KXBDNFRTFXir9jyMml4KRf8Jf0eZkNjNriFU 17 | +iaOdBqFteKwyViiKo3OkaUehKCLYl8qYlKWGeLPD74myqCwW1HZW7NZ6SL8H5f6 18 | wFEv3/ihaIhy068M6edV+Z9hBwxzJkoiFK0wZoj8rCXty9XqKjeeoSTVKPre84rU 19 | NFBMusulM7+G7kfcTTcUQO8RBKpuKccCjTZ9UQzBcEbWMyO19CIlDMWlxK0dNf0R 20 | Wd2QR9efGX2PzYKqAr3UawZBabG5OvO928rS 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCh2uBSu/HZmQIC 24 | viR59sFq9HurtPtcDMreMCZ0+YYklutBkgsqtkSe+Cf7JKmOifzKqn2QI+nh8ngb 25 | Gwiliswk5Vuu4FL7U8ZtOHzhdcSVDMGk21ai02AkRlo97lQu9Xnfk0z78PceRb7k 26 | tu7j7LWTLSXTZmmLswHVzN6DSgeruymtYMDTF+e9GCMBnbZJ7/f2E0k2btC0mMMW 27 | nncseyp8lBRVpuXSlVWC57T6n8qcZZvrP0rIHxe63bELaca1th7IdEmMtx5BHdlr 28 | 9U2aAmYg3ve+f4mKsmfYutxoptsqp4MVfYKpXwgMNbk1ablsDJmH1rzaA+BmmziK 29 | IXpQO3CVAgMBAAECggEAHVHpERO63BA7rQOE2BM7NoTTYmeGoUYv+c//J3GMO1Sb 30 | iWVLYJFkHOgXVgduL8QPZyc7V8EpvSSPXVmoV1StZoGl+ifo4F5ss5xoAu+yjM2i 31 | xpp1N0nTQL792foyhc8yJK4qY/liyrkXu5bn76IRwneLQqBqvkPPMUvLgz0F5rXX 32 | K5fIE2UwVjYWUEVOMOxfk086TCPqF3u86Fbd3AdmEoN4FCUFnQNt21rP1xaJ6Ydn 33 | hqlH2AZ2ABkwREhVwl28UpQSFTIYexl5GU+6Z1pRVOxRUjxKH/C1ImImIWjSh51D 34 | rV1iXDqi4gtASNVxf4UWiHaF75drGX+q/Qk2JmKwgQKBgQDSzrHaiGjqyAoyMCXT 35 | Phqn16hSrmDgs96zv2vTfleqK2d1yCG14ybH2sAO8lvt1cxHFQ1kN6eT9rgzlm+y 36 | QgQKcDYqRL9SbSEl7D7ivzFBIAZL3crve1YPA83qSwIxh6xxFgsoyH53Bpu2M9NX 37 | R+OkiuSp5/t38aFUhxnQHnyHDwKBgQDEjaCsx0rajhoXUpkKlqVYZ+52+fKMDFTg 38 | VLOKbor1wMC/KjgJ8J3uSW8rgvPMNrMvRZ3sDm7ulDUB/yRMzas1HTykQarohlEj 39 | kXaCggv0X25FyPN5BR8rkX2q916KOyLZL7nGWbJalNKLMs0EiRte9cOIHkBqKYfw 40 | gN6KHeOuGwKBgQCyt+tOkwEnsqn6PJmEyoz8qLeaSR32wmdWyj1W0zDtItkWoLH7 41 | qvUw0EKtKUlIjE4gITf2M7zNk4g8rBhL7u3QD6vMD/aHod9NcEksIN1YEhdkcEdg 42 | 2pZuKlKDhE36wcQvJ3oUfE3DCQYv5SYSQ+85i0sqxHKMEH0u1U7MA1ydfwKBgH67 43 | Eq5UkV754LjI+QRqvZGS8Z6k6k6CZPd/pYPMYqyx65VWk2tVSX8quhNEDA3P9xiz 44 | um9Jnx0VUlhHOhCLS6ijgUYnURs7/3T/hXoAf9TA80jrmJCfTMm6tVxWww49sup2 45 | a0II84aUDmzSBH64KH3B2KEbYE0TGiNn9BT50KOhAoGAMXFBdHzuIYyl6UDUnXqQ 46 | w79ehMNs2NG7A2UF9uSnGFF+P66UT1cUGihYB9VGngst+HqxpZDarVsj3LIwI9pu 47 | J+Pvn4fIL9i5so4R2AnxGR0oZBDMcQ9cI2amUnrtj8hGK65CO1LnuR9Ux7UdurJr 48 | 3MxVkuHdEFJiFMYiletkN3Y= 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.ak.fbcdn.net.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdDCCAlygAwIBAgIRALIQSQPlLsKnRKaEn+jNJWkwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA1MjMxNDQ1MjFaFw0yMzA1MjMxNDQ1MjFa 6 | MHwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEXMBUGA1UEAxQOKi5hay5mYmNk 8 | bi5uZXQxFzAVBgNVBAoUDiouYWsuZmJjZG4ubmV0MIIBIjANBgkqhkiG9w0BAQEF 9 | AAOCAQ8AMIIBCgKCAQEA5TiFchf0gJpHD7DJqoLvvPcG2mSHFBNeN8n38Dk39Gwi 10 | K9ox2jBxV4r1g77z0Ln6Pe+YGAK6b3pZQkINYRWl2Qu+TuNIOP8BwTnrqKrWMrMc 11 | tH0kYtBxveaUTHVNoku2dpUyTkt/OmKYLeUXAEH/AyDCyZQKKunc+x6afNLDmwJn 12 | Z6higxcIxSGAhIpHF0ikEgp92fqE8hZHQw4T+ivq1JLunmkw3VhjN5ArT2qdV7NH 13 | VQa8xSIjB/wtqYhaBse7HUORykwqzFCipJhpVbI7MC0RD6Knlgf6Xt6nQC7kyIcx 14 | U30irH3xt1FoA3INbCifiy6YgwMnMTmggEsszttNwQIDAQABMA0GCSqGSIb3DQEB 15 | BQUAA4IBAQBv33F6CIsMwkbYJ54ji86EUwVFdCvZx4uxEw6OKUdd4Qbkjh6LMT6G 16 | yF5F2x5xbWnhpQWP8VA8gt+CRaN8/aMEbM2G84IWuwCfNoqcP+tJ+AE0kYm7qW6n 17 | riiFfOXXudzBHhxkHlcXTXs1rLhikYE7l2a9x7DQVdlLwrsQGxSilfNjgbJiOpZv 18 | wwkh4ehpW7IDYgO3UWsZnJ1+qi25yk1vUQwkBWuZXVBnsbheMwZeREhA7nCiwuz8 19 | mVaOX7Ddouni54+l1AHlifpAz26yIS9d/qPZVm4PZ3sug1dDq7ajur4XxFL91UC/ 20 | 5H/mFY7HrEdq49LS5/p1vK7G7eU5sKIG 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDlOIVyF/SAmkcP 24 | sMmqgu+89wbaZIcUE143yffwOTf0bCIr2jHaMHFXivWDvvPQufo975gYArpvellC 25 | Qg1hFaXZC75O40g4/wHBOeuoqtYysxy0fSRi0HG95pRMdU2iS7Z2lTJOS386Ypgt 26 | 5RcAQf8DIMLJlAoq6dz7Hpp80sObAmdnqGKDFwjFIYCEikcXSKQSCn3Z+oTyFkdD 27 | DhP6K+rUku6eaTDdWGM3kCtPap1Xs0dVBrzFIiMH/C2piFoGx7sdQ5HKTCrMUKKk 28 | mGlVsjswLREPoqeWB/pe3qdALuTIhzFTfSKsffG3UWgDcg1sKJ+LLpiDAycxOaCA 29 | SyzO203BAgMBAAECggEAd/6yvRuVP42EDc66g6yv2/hlegaOQBAzjnkIdpU9mZLS 30 | AKrk1hft/aodBK797BKv0aSPtmIXPyyJdYomfuBaRdlD8wBAWrYEMSclGtLz9u6U 31 | 5FduqNv97y+6CpyN25xPFJzeDOaw39ulVsFK3TOvT+/iiKwa9oQezscikJ21EHuf 32 | 9qk38Fd8/HcfUpK2eWkpkvRCwW3Yyni6g6+J1iijsP5Xo7/G6hlwVvNWaSb2kRkZ 33 | oUe+loLXHpGUyZK4w6/ReelIaVN0dlmdsmLc41Ap2wf3XYXpHAYX4qoOtfcZKC6D 34 | PthDNBiQmjr5PuxPSvxXi5JTJdGqnXDODzDeDRTHAQKBgQD42cWZG3cXOIGp7p2a 35 | EfbiO8n4c3scFubKw4dw3YlCd1jU/63EwsZIwbOxoFTYACTIr5EyOjHv2LmKjet0 36 | I6q6jJO9v1cGGbkNK8vDHYX8w08IIYK+VuYgAC04R4KN0M8nHddio0ABpOdv9++B 37 | lEkKC/wzX4qEGgUxnxtKsrkaqQKBgQDrzmCDjPApwIcn92ubxKSe6i0jMLVbXOPv 38 | fx9iVKPlv3Bq2URXdx/cE6LjyYyf8WRUe/YQgqFNK8r0VB4PPMzLPrxJgI6LgguC 39 | o2MlBjNeXis7XGaZgpfPYWULSAYJjJl7BagfZTuiY3PSiuqTybLamAuxVmoZJKuW 40 | TtL1nY9hWQKBgCmTEG0c5o+NlDQUtmXYHHv9ayfD+0xdEx/K/OTBTj45fDDRqnFV 41 | 7RSYr/G8DJCtrXeNxV8z08XzWkQoo66aitpxw/kOb3aIc58cswUc+Jaa9qgwGQy9 42 | reKoxOVDJS+WNBWf6a0EAxyDNVtCe9QVNwKjr/XRP24EftukbkXTiBNJAoGBAOQV 43 | sDcueRL5ngHjiZuW3mC0REq4j4M622LKBHJZSlstDDDdzQQJPrDh8XoBdtsyY4hw 44 | ivc3U4xQorQoNRcqCTFCkl9KURbSCA4pufmTANbzoT9+xeMQdYTrQRBjbyuHauGa 45 | /B66Da+qINry8alXvH9B+HVlD6UYWjw+LEHVUF2pAoGBAJ051SPxpvmp7yXQJLPA 46 | 7aduIZ6m2tDiT4XOyi3JMnEJZHRwyTQZwDqXcGkFvAihi+3mDm46H53fYV0ZVGtA 47 | MMIJspeS+24hnIKFYatZPrMIOM7ldb61l9PIDJmYd6BncxhBInmYv72vg1pfCYQ3 48 | sLdvS+N/7jCXXz/jrQEMnP6z 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.channel.facebook.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDhDCCAmygAwIBAgIQRMNkpAW3NuR9ZSHwqgNkEjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUxODE1NTMxMVoXDTIzMDUxODE1NTMxMVow 6 | gYwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEfMB0GA1UEAxQWKi5jaGFubmVs 8 | LmZhY2Vib29rLmNvbTEfMB0GA1UEChQWKi5jaGFubmVsLmZhY2Vib29rLmNvbTCC 9 | ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPkilv3sCY9RE3K3EQY6d/D6 10 | XLfyW3hxgu7hFy8t3g28dUrahCXQvTENlishEanxVkWU2rUsk7PXPGFCaB4kyJjB 11 | Qs4Wwy/ug86BZvJt1UTVsme4PsWhNE9lIab9524hTJaAnezXexQAMHc3LyJSXRrt 12 | 4h4FWDeVS2Pm0A0xRHJJ+R8nmhOEO1RMJMl/sYvhGySw3iCDxQlHy682AMoY3F2x 13 | 5ozqF+w5V94IBQhuWa5id7M7/qZoelbopqW6pWf6n8+0AG19ZyZ+slShdNoLq3im 14 | qhhAsLYlnKJyheeMKg7Qt7MW936vlNKWM+HNzVZj4RM9Ijz7XAwU2GhckgSg1kEC 15 | AwEAATANBgkqhkiG9w0BAQUFAAOCAQEAYN8X75vyEkc8jRGByrwk2/DE/echn3Gi 16 | 3W/qVqSiZjZQjhKj3nMq1zdGywMfkWNRydKkhSUJwGP+uBxbkplb16Rc4Ck6ZAfQ 17 | CFtHZ9+lWcVkx7jX8utPwxNjt2p3lSb6SDqten8CLC9/4x3WkhAoJfUs+ouUbdIM 18 | ayQNS/KTy28O6M+7+RXuJinqXAA6ORUX1gLQF0lgNf51qRtBGjPG02+dz/JpJG9q 19 | 5L72WllIYiQJE2OB4wxolsLinnMGLZSp1AIGYmqapSlDuJI96Xu+gX9gHJ2JODHE 20 | nL8VnyDxH9TkGpMlCTCT9Vy2n9rxuHFJ9VmyJ2MrdUcXqfZlrnl5Dg== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpAIBAAKCAQEA+SKW/ewJj1ETcrcRBjp38Ppct/JbeHGC7uEXLy3eDbx1StqE 24 | JdC9MQ2WKyERqfFWRZTatSyTs9c8YUJoHiTImMFCzhbDL+6DzoFm8m3VRNWyZ7g+ 25 | xaE0T2Uhpv3nbiFMloCd7Nd7FAAwdzcvIlJdGu3iHgVYN5VLY+bQDTFEckn5Hyea 26 | E4Q7VEwkyX+xi+EbJLDeIIPFCUfLrzYAyhjcXbHmjOoX7DlX3ggFCG5ZrmJ3szv+ 27 | pmh6VuimpbqlZ/qfz7QAbX1nJn6yVKF02gureKaqGECwtiWconKF54wqDtC3sxb3 28 | fq+U0pYz4c3NVmPhEz0iPPtcDBTYaFySBKDWQQIDAQABAoIBAQCKTtCiUQqRnMH+ 29 | OnFiEs2JY4RbvllXiTTWJvH3CDCxUYGQN7WLRNHzTIaklOw4ezmY0WWFlSS+f2wO 30 | 1o30xhjy7L+IqAxeLLzRxPcA+Uafuz8a46c9khv3Q76l9Wkos6XQG8EQviOe2+gM 31 | Fv+8vxrfG1cfsXnjCafb40R3PnWwOBaElP9HtM8+Y/TmSXesRP/e1/IRtmWI+KvG 32 | FAnaYo3l+k5ZOcorNrs1ExSQgMguEWd5cRG+/eERzYEdfawGtf+QchNwBDdK0aiK 33 | 3nN/xe40QQTHNWXdV1j0mUp+82k+MBO4DaG2HoMeu+xihLp231rrbCR3OQbrVccp 34 | +VR+a4MtAoGBAPzZ2SNoYRFZhT+JrGFVejSrjkphJRjhTfSJywadc3IiI66YeKDl 35 | jNx1KeNv62ErusjMBwmCKB5MR0qrG3gnlZZcGz8ghtGk3MlLEhWBQEl/axFfvDFY 36 | iGwvZHngtrHk+w1qAXB+LMoFU50seHIB6tiQSn1iT9YD0WrhzDLV815bAoGBAPw8 37 | 5QFR6PXf7qX2qrxMWa9qZTmi+3dzuEHd5UvDiSX6LFlaKlUq53T8peoDJMHuY9fH 38 | H/BgrKIKWEY5Ee1oryBxYf/xmZOe04Nqgzt5dfSqAMX0iugzXerMRdgDVJlbMuAF 39 | OyUSu7Tub4yttl2em6cwCD0vvewgMiEUGD7fpXiTAoGAXjJOOWmmV89Q27XPWUd9 40 | ymdrD/yW1GkDIKnA0AsSOh/LyTyWG+LIkky3uTo1pzKiWDHiIUGy7m6eVIvgJOgi 41 | SyyvHdphP3K6qebkqsxHBdqJKaTPuFZyJFOXi+wSQ725ZWrrdFwdFXnch35MtLRQ 42 | KDPA/GsGsQUlHDtYVkvsaWcCgYAwind3nY+7YXDHt4R74CWSQGNiiB7kifx3kIBD 43 | 6ElIabCHMXbcFPmd5dD4C8rTF1FXgRaAZ9pRBLSgLvNoQLETCT7WxmPLqNEDhUfj 44 | 9ifhAaZMchcZQGleehkmzN1G9eoAeoE7TTOaShhldjiWI6PItNGhFMLz4e5Dt15D 45 | Gz74yQKBgQCpUAHtFvkMwGTied6ImDgNOIgS4NRSkp/Hl0D4QlcSHBNdjP0eAH7/ 46 | aaHBhb/u4RI+cvlbnQLFS+AapLkoiwUA6VOm9wetGbTDjhAa58ZBXQxCIB3aB9DY 47 | //7N7UsCC3qODUEMUXFLSUfCqnbkhq1NOe2d3CvzpskILk+YT1b4Tg== 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.google-analytics.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDhDCCAmygAwIBAgIQdQ5qC5+xUnt/xnGIWie3pjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUyMjE2NTkzNFoXDTIzMDUyMjE2NTkzNFow 6 | gYwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEfMB0GA1UEAxQWKi5nb29nbGUt 8 | YW5hbHl0aWNzLmNvbTEfMB0GA1UEChQWKi5nb29nbGUtYW5hbHl0aWNzLmNvbTCC 9 | ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIjpmVodcpUrLohf1sVANCS 10 | gHfv5E+aYmkWtxTqIMNPOsMhYmB5wHpGb02mFXJE/YLkw8sdPrF/Os0D9axL2T2h 11 | 6++K0RjWuz0yiJdyRao4bpd9Sn/Fr5EpAh+pN63dhshMmb1H6sWlRfizStlhmFVV 12 | J7YfjAdgjdGCff13rthDVBLIMwnQk/IOWtNDdEnfzGZJBKVodELHDQpoB1t4Ux7x 13 | /NVza7XsFo7mXQcK+fRSN3BvYr7bOum+EeRqfZS+psuBdYRdcq4f7XFmicnHDLd3 14 | 9ghi2KazyR9qt0U/SMtqitwocqsJ4Xd9EqZ3cJrSQOpFf6m7fWBtZC5W7zzWREkC 15 | AwEAATANBgkqhkiG9w0BAQUFAAOCAQEANJa3zjjdEdpJTeWhLrjtGKjztldMqGue 16 | SdjhBQ9Ch9lKN1d/9YjTo9O0t8NY93SZ4twM65KkFG+ROiUBbPPlddK2CvNhLLnv 17 | GAogdWb9+UZzR1PAXnb8XTBCBHxOpb2E2XHUW90S/MkwaATCedLDEbjICh9T9Ci+ 18 | 9OvjGq+B+2r6WTpOH4bmTQc2oteMZaEM36uF5mq3JbJlDh40GFqmipZd09v+lCpM 19 | uzdVSSKAYfcVGhyfFjC2TMYePcwYItLhbvyz+Bs1J8+9LfJOqknj3cRWMuLnBNux 20 | OXOO5SBjqIMjnBsViUxppJ7SlvHxVv60Zoma6nGHBYsyIgiISkIo1Q== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpQIBAAKCAQEAwiOmZWh1ylSsuiF/WxUA0JKAd+/kT5piaRa3FOogw086wyFi 24 | YHnAekZvTaYVckT9guTDyx0+sX86zQP1rEvZPaHr74rRGNa7PTKIl3JFqjhul31K 25 | f8WvkSkCH6k3rd2GyEyZvUfqxaVF+LNK2WGYVVUnth+MB2CN0YJ9/Xeu2ENUEsgz 26 | CdCT8g5a00N0Sd/MZkkEpWh0QscNCmgHW3hTHvH81XNrtewWjuZdBwr59FI3cG9i 27 | vts66b4R5Gp9lL6my4F1hF1yrh/tcWaJyccMt3f2CGLYprPJH2q3RT9Iy2qK3Chy 28 | qwnhd30SpndwmtJA6kV/qbt9YG1kLlbvPNZESQIDAQABAoIBAQCmGSg5JOl6ZX2u 29 | dhBnVg3vZRiDBPzaWmUOMkALpdDIKVZGMp7fmeti8jYyQgGhVYNsZNtbQTctV4Rw 30 | eY3Mjsxb3dhlhuglDzr9Pen9YOhXnZaJB8ogjXsLgAFwIzAfEiRJ5Le4aPplhWTb 31 | RlKor8ZMY+HpAQ6mFSbg9Htky+wM2/dF+gpThMCg5QEgJXWJ5WgcPMEsDmgo554F 32 | /Oy+0B6Wg3OHOKJ+c958I2uxqL7SRrqGqXLMLzPh9qHi+ExDX6wgTMT5TGOOyxo7 33 | YO4bovYR0P3DICg2ln/1N/Tsih1pJ/0WQEGPgQPEHo3LXzhd1My3tblO/WeT+jV6 34 | BvDm93aNAoGBAPD7e3apUUMCsbeOOrALhh5DSBhTP+Ww/0VStL8d1w5ZORPKnKUU 35 | k4sHHROJOadhThkB9rRjRFVdTdgeCdGBa27AfxZvkojgdmD980Eo+bhU/R6hpHMX 36 | P2oMjS4jiKtMi5Vr/fg2ad04ijrIt80u/zUj+SBqrRceh07bYLklai4PAoGBAM48 37 | 2vMX9UTPbnPrMYexQjL4mTsjcK3pQSdIZRLxUgoM/w+qIia+5vTuyHF1buKaE52V 38 | M6yE/ZwM1xAWfqBTNTKS0JBHvlcV8BxI4lYLQRQ+NvYeUcF6HIx+dH92xo3ZEDY1 39 | tLaMs52a6a9Ys4I3DdElF7rqomIITwpswEvFAsAnAoGBAMttwD/flzXWZGfrrSdH 40 | 0yRg7895F4uy6wt+Ug60BgOa1lAazjmdMSBAFQ+U3BKsVd1OhxCoa9sUNM6oLOmr 41 | MyH/ZkluTmk18zjVqC/tg0FUnYjqM4Tkrye7CMNWQ903dO3iiDas2JljTW1qW57e 42 | eZpGj9wJsay+nMK49uHU79mJAoGBALui7mmBgKsMNqfMchHMmjgZqf/+LIRt1dNR 43 | sHPdjxCJ5n1wAwZRZXuuzDs95pbQK8yRdKQfk0WpAPooHSjsy1ep74t1Wp2M3ho9 44 | zX8PWjR6rjKaPzPST6sbWg6mF9vygydvEW2M8dYQnU/lWdy9DhscrkxnMToT6SXI 45 | 7+N/6RK9AoGAc0s4LijlJ8xje39ou4pXV6vTptEWUwHNIvVA/OiFSyKpb6LhCcVr 46 | t36SAyaTiMLazQqK4C+TVMGz2gcC2cFiq1z7nLxCaTAgmTECCSNo3u0RxpVWPbCX 47 | vTjDoDEwydODhv8fwxNCRSg7NJXVpJiMsydN0B8/wpPBkF/JedFpC4g= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.youtube-nocookie.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDhDCCAmygAwIBAgIQcIOF8XrR9+82/bucSHL7vjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUxODE3MjIxMFoXDTIzMDUxODE3MjIxMFow 6 | gYwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEfMB0GA1UEAxQWKi55b3V0dWJl 8 | LW5vY29va2llLmNvbTEfMB0GA1UEChQWKi55b3V0dWJlLW5vY29va2llLmNvbTCC 9 | ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALbRNLpZUK3PhD/IGH1tQWUF 10 | z/HR0msTPvPwD1JreWIsB+QRu5MdAcoSIcBZsx5ys2X8KMGVGkJJgV4KDVeO+ELx 11 | H6O+LAhFJMUcRQYftUy9DvLWu+stvQrT8BRYP37Mv//+P3tCac5J0BE+OONZMm8a 12 | SLeeDLPNGzVhu2MVMQPFogn/0GjvNiB/9Nd6rPmhuLmaFybvk2V5MXbki0TeqlcO 13 | 4I7tYzjY9CiCxE/Qm1t+wDN+Kz2JAsuJ35dSxPHT9oXvyo/4usDkJVCmhnFAfVgE 14 | 93uZzFbSXnhmFR70bhZ7PTMCpdExSneOjrx2+vM1QBb59Jsi0c6J0N6ZXZV+pv0C 15 | AwEAATANBgkqhkiG9w0BAQUFAAOCAQEAa+SOP4+WX5U2+GfFoAuTP2FE8m9BxuHc 16 | 3HXnq/2JTo7/3P/46RZKaDG2d0AeJ2pXob09wyWQR1mF55SG7y4dqpHMRmEsgYES 17 | wnI9e3RBjIzlggsPDJOOCqC9wt4vSsUczGTUno/DLcHWc839Ke8HivbJQ2bAre/g 18 | 5IKOCrKvAX3T4k3+u7gVNdEwEHA8VQTZWng/IS9rYbBs68OuupvdTZWIm1JXC3ET 19 | RI0ZrESRsEtoBmvefqgFEM9ha2sNVOOWZMiK2zXqJbFhvx5lk5mi2UtijHgcXQ5i 20 | fc0M5DW7hGbxFOP8gLzzj02StZXFLVxvCMe8CD04JuhySmwN3Sk18Q== 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpAIBAAKCAQEAttE0ullQrc+EP8gYfW1BZQXP8dHSaxM+8/APUmt5YiwH5BG7 24 | kx0ByhIhwFmzHnKzZfwowZUaQkmBXgoNV474QvEfo74sCEUkxRxFBh+1TL0O8ta7 25 | 6y29CtPwFFg/fsy///4/e0JpzknQET4441kybxpIt54Ms80bNWG7YxUxA8WiCf/Q 26 | aO82IH/013qs+aG4uZoXJu+TZXkxduSLRN6qVw7gju1jONj0KILET9CbW37AM34r 27 | PYkCy4nfl1LE8dP2he/Kj/i6wOQlUKaGcUB9WAT3e5nMVtJeeGYVHvRuFns9MwKl 28 | 0TFKd46OvHb68zVAFvn0myLRzonQ3pldlX6m/QIDAQABAoIBAADhqVtsqtLruTuF 29 | f3i7WiFekc4csOMLSLZsZeaD1iX/CFq1Ky5eaW/L/pWq2Q5Ah1TqjlfAnEvNhu4p 30 | Jj9R1SideQWVGSlBDBhXNo39ASbJkpThLC7KHas7smCmvEekPRjC5RN3EoOIH5S1 31 | tBiEiZW3jroz7OPBDWyIeBrWM1JNU5A1bCm1fhgcSPGZEFn+YFxQLS1JiMmgKQ/A 32 | cQT/WJYaotVkN0gfUyXNQxsU0iUpjTMtoR4OHSEHZJ8cViPnQsxyWdJSNfA/Pr68 33 | 28M75WK+6t7g4Rclfknn7zIJedtpb/9R8Njj5iByhhHHrgZWiDFXTAYcO/7bLG4r 34 | 40jXxZECgYEA4ObNcuVUvpU++O6eVEcook2D3tOHD6z09AqqIyzz/pCxaVIgSdR6 35 | Xa3SDnzJ3df2WYrXQh3MuL6H0Eg2MHV8vMVDum2aNP5vAqHXqlWAXsYSy7GFJVrI 36 | AQ5AO2Qj2GyZMEi14pKPHo2202tk0xdjbmCnJIDC+UIBIjW6k+gqJ6sCgYEA0Bit 37 | NBdTVdcZPm9V6Ar/SBdmBohM6Ntk5gAS5U61ijHuh2rwMwrDoodSABPlV3OTcweT 38 | OmRosnEKcbyDQ0dbhIVpalLzYB95MUdu3AiVfaUkta0eZidQfk5sP9Qx4rdqoV1j 39 | T4iPhl35Vp1tDEzJSba8pNYdVGzNT5ho8zYyI/cCgYEAnuSxtkEsNFIBYaJEnkp/ 40 | /NtDFcTgoUSS83AtcBiscegMT9rEESVbJqBNzgqAHIod9HlRR9cB8mw6S/8Yuffn 41 | nv7HsQkKb/Jqv7NUSXWK8mqCkQLkjNWshIJrAwrnAFsJh8F3L5JYJz/8MTaozzKw 42 | /ySuMe3+0le9sUvAfAsE7W0CgYEAg3fTlSFXaNfn/uXf5CVuemEt99qMnGBfMl/B 43 | kFVVo+U/yRXqgpS+XCQZzirDrag682VJwo5FBtcbvhdW5l5ilyqiGqYlVAkOS+/R 44 | Pfm+WA7JTm380pTr6aAqC3lHuvAd0axqXYjtA/rC19HFXwvz7zofnBQZm4jRfQPQ 45 | 6jbHHqkCgYBbjqnU8FGjq8N0rREZAsPv+0T0al2XkgN37ou8eEVSI57FKg3s/iMF 46 | oBmKHB6RS2Ua71DY/ePJj0mHNUISMavgtrGHq5CmdnVgc2d/L7xpgjYyIhRjCTV3 47 | EdfzxOw+OdnKNqbihHGuk7LYB8Lt4sXV48IhKLCA7QGQfSBYcg3kkQ== 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.c.youtube.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdjCCAl6gAwIBAgIRAMKoIrpGkQT41QoqFsbE6rwwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA2MTYxMDM1MDNaFw0yMzA2MTYxMDM1MDNa 6 | MH4xCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEYMBYGA1UEAxQPKi5jLnlvdXR1 8 | YmUuY29tMRgwFgYDVQQKFA8qLmMueW91dHViZS5jb20wggEiMA0GCSqGSIb3DQEB 9 | AQUAA4IBDwAwggEKAoIBAQDJXwHq0IyYWotw3b7etbbpw7oPygr59lbzhV9/HlEW 10 | FZztruSeMgL+MjO9ov23vpOR18uxeZCLYHrJicnRLRijtdMMKpeEs98y1E1RkU6Y 11 | dw/jY5k9ItEi1fPqZE11qXfQNeZOJg/qSAgWWK18G8t3u/fLXd9w0xHaRbPNm5db 12 | 3Zamqakxt4FvpdXcnblulFvQp8jpxtcO2DtSV1fPd6yOOAZIT4Q1ar9tktMDiuXw 13 | 7qpna2h4L3/TFh0ShktjarUdBN/GUMuNNsqEEpoFMn/L5ccNPOvcB/ryriJgRsdh 14 | /QJgwgK4XX7Z3VxZak6vpcOqCcC1jnawBin7nbI662/dAgMBAAEwDQYJKoZIhvcN 15 | AQEFBQADggEBABSQMku73Ay8I+4mcArWBnVIdQH3MRbLsDPTd9HH023SSRIEamHH 16 | /nEoFt45FlUBROUeldfsF3Gj5mRaGF16xP5MrmwjqsWETvvj1rPRC2SRiaH+5cyc 17 | tm+bLfpzdB8RoImNtK24Qm6nnT9VWCEN/yaITwtoGz2sHoQxXJE5Ot1z67DpPd2f 18 | rg74HLNDOUefKhTX1x4UIR7R3LyGPDuOM9hcfPBKAVSYiSKMvXd3uv2vHFB9Ar+d 19 | Z7SFJHXzhRyKy7IVKIYD+MxT8MsaDPsWYz81ZEkEdc5WHx04m8M6vUonlg/LvZpa 20 | lMnLPtYvjGYgWq5YgteRBnMA9K/zv45hUkY= 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJXwHq0IyYWotw 24 | 3b7etbbpw7oPygr59lbzhV9/HlEWFZztruSeMgL+MjO9ov23vpOR18uxeZCLYHrJ 25 | icnRLRijtdMMKpeEs98y1E1RkU6Ydw/jY5k9ItEi1fPqZE11qXfQNeZOJg/qSAgW 26 | WK18G8t3u/fLXd9w0xHaRbPNm5db3Zamqakxt4FvpdXcnblulFvQp8jpxtcO2DtS 27 | V1fPd6yOOAZIT4Q1ar9tktMDiuXw7qpna2h4L3/TFh0ShktjarUdBN/GUMuNNsqE 28 | EpoFMn/L5ccNPOvcB/ryriJgRsdh/QJgwgK4XX7Z3VxZak6vpcOqCcC1jnawBin7 29 | nbI662/dAgMBAAECggEABow7ULpVSALxs8rSEQXRm8pMe4TzVGtpKmP01fpTYqdz 30 | QdtE/cvcgw141zq8i0P8Imrk6bFtPMr3UyRS1qVjvrcD1MpxwNPkdw+mL/fMmXKN 31 | prQvYGiIalyQoNeAGUpYZgHKqlHchJ6w/KEHixiQRiVrikZUJKQIWZOYpB/iDQ+Z 32 | rzfJkLLFlRVBl3gbAt5wz7LPbJ5QXAR2yW9N8U8Ci9cZ6U81DPCOmgQoICQaUUwS 33 | I4kFgpbgFAOgPczIIfLdEuPmXfmojD7DQN2gExyYhi132MzAKwIczf/FvWOrbApo 34 | nWAO/DgWgdldNxrmHXs+ewZ3K3tXGRN9QS4JGi839QKBgQD0YTxsCdFWPhEsbdmp 35 | jcEyzWebGqWqTeML4Lpiulqcp0bXv6LZi+cVEGiqbGuzWiJE/nSjlNOwO15MhKK4 36 | +82QHHaFwGJHnfwhfTXQYvB8XCKxLHcSrfpImFKwsjg9WwJCyFCGhN12nUzK1xyf 37 | d6FHnXHiuPjJslgZRfZPXo3VfwKBgQDS8j02XsI3OWic2hRfScPxIofDM3iDVCPR 38 | 36R69JBJGkfTi4sbU+hkBKgoy3jCstzNQDha+p4p0xk15Nx+A8j9Y21nnO8Nndzl 39 | 26E1qd2gmHzOP11WgYLY5tdzdmMDopHqRKF+kgjlC6/LeeFra0U9bap2zNTLkw2H 40 | re461KOAowKBgQDWWeOxr/rZ9p8BpWjh++CWOuzBc2IUOzUHWhqiNmr8NQ1CeGjT 41 | AI+0PixQL8FYE5szgS21vfjf/3L7EuvX7aWk3hJnxxNtVfmtNjJZki72JaqYVTQs 42 | QkXiHxmIuwnxZz5YbXOUSj4mqFqPIJeOmFPyiPs3rp8p6zCzGlatz3YA6QKBgQCj 43 | Uzcdv6R0CZj7yMX5OS3ip6+h7VojpKPPPW8mW/DTCOwP2H0t/Xty5UAlxdSMOtxG 44 | drCrkFuhWnasibRGRTv7JF5y2MkmK9H6jmB1Ij4ct7P6JIlqDwB2W9T46vKiv95m 45 | GhlH3F3SqYfE7WshNn73ns9bCCDCNetF398R4c1uLQKBgAoUF+sGa980XSdUdWWS 46 | Hb4jBDOHXLZG7OXJSuL6sJM5scPv+g9a+jYJHV2ucKFKRJ6fp5OgUBlEyq1EpF2O 47 | /E5a9TwkFlmojpaFHiBv8HYYUia7t0oDFhFWF15xgU6SypQjMXbS4uh9y1wgllwc 48 | 5HXpHLplro7qPf0NLC4E/HjM 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.googleusercontent.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDhjCCAm6gAwIBAgIQIejiD1FcSNkzusd7o124jDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUyMjEzMTg0NVoXDTIzMDUyMjEzMTg0NVow 6 | gY4xCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEgMB4GA1UEAxQXKi5nb29nbGV1 8 | c2VyY29udGVudC5jb20xIDAeBgNVBAoUFyouZ29vZ2xldXNlcmNvbnRlbnQuY29t 9 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuNyCfTzRhcttkEXZiI2l 10 | WcEKkkhELbJ9xHDD7NOLEMROr/ajaOyhg9gVihRRzFErIeHZ/QRhgD+t/z1meOka 11 | ucj9UMzx127b6+pWQi7OXDMoSyBt0lvT7gMn+gOi8fYZK1ItS1UvPpamDlAqQW72 12 | CIG9d5mo/rsyoIAVqNvVXIInPj7N0A3org63ETQBEA3UymwdpkfBHuX1FdKK0lyG 13 | 9dP8jFg7uaaC6onSBLEct0Cf5FaBejc9+id6XPW3YQ/FcNAOcLr3VYfBmxCLBBZS 14 | rdidQPTIdadbqynACLnQJwWl+LEJyAeUKB/gnsLT711PIDz9LlPHspJjthlsjxDI 15 | oQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAGVKStJj/JHHF6q1rAg0Ihp7Posyj3 16 | R5NGbGrQi16uHygihAP/rit8Ogy/RtXPDnmTvpgGX8eX0djHHMR1f7iXT0ezvsh2 17 | w6ToH2jjtWqGXhr/nntJp4n+uuBkQ3iNKI5i11PlYG0b5JwJOq9TymPcbzH4ueUH 18 | xeFyUuKCPwbMl/JlBx/1goLfvGt5NNkxCUMcDTw9kCbf6dU7yoW8qG9gMzRfSqRc 19 | FL3wUqVqjVq+0rDy74wcROG+YDeVRBT/cvA+d3sdtYAf1AEp5/T6MvGH4fXzUG0y 20 | 1TCngMcw2Eh2cafrGuwGCMDG8ZFGjybCjH5g4ElqNljGsDvobbrzkCUr 21 | -----END CERTIFICATE----- 22 | -----BEGIN RSA PRIVATE KEY----- 23 | MIIEpQIBAAKCAQEAuNyCfTzRhcttkEXZiI2lWcEKkkhELbJ9xHDD7NOLEMROr/aj 24 | aOyhg9gVihRRzFErIeHZ/QRhgD+t/z1meOkaucj9UMzx127b6+pWQi7OXDMoSyBt 25 | 0lvT7gMn+gOi8fYZK1ItS1UvPpamDlAqQW72CIG9d5mo/rsyoIAVqNvVXIInPj7N 26 | 0A3org63ETQBEA3UymwdpkfBHuX1FdKK0lyG9dP8jFg7uaaC6onSBLEct0Cf5FaB 27 | ejc9+id6XPW3YQ/FcNAOcLr3VYfBmxCLBBZSrdidQPTIdadbqynACLnQJwWl+LEJ 28 | yAeUKB/gnsLT711PIDz9LlPHspJjthlsjxDIoQIDAQABAoIBAQCXBidg81/lI4W2 29 | GSqXwci1Y90kFwAEKU9QPiQCheyV3Rq/7QohPTjSwqUOMn2FI0bOnnn9mCejo+Kd 30 | pGbkHuRjpY02BskJDJuEx+SCm0Sh1HV1st+lvLmOOGvfeDsV281CNBem9MftJRwy 31 | k1GCNYmw93V3kUScHwlEUH/hfP95W8LS4e3+M5qVWCnOzdWIHTlsY4sEfYaGdUC0 32 | SZpBdcMWRfkz2E1eghjsfbQBffDATNE7Vl+RQAl8lYNNBXJDDpsoAJdjh8883CnJ 33 | fBsq/cL9VtMY7LEIyG/yksyYejvyZWiWi++nhMLv/vMR/g0rZoqrQgrvwZ1y5h6X 34 | A6NrdErlAoGBAOxMuT0gvYodkmr+J8U3uyU8iPl03ycXUbJ8RMaykxkhuzIP8QW2 35 | b3VnarSy8fnPzHQcQL22EocVPtOhGdQ7/WwdI/AhUADJe/31XApI6KSyUdB4fJA6 36 | nt7ke12pCEscT5KArDWcrknPsGPgUakOISBac/9l9hrLHs60kN03LSXjAoGBAMhF 37 | 89ugqTLuA+9IQvIN3vC1DAUvgf7azXRLgELJl79yT//SuU0wVunyCXxn3s6bcQIL 38 | TbeHE9ZgaXKtJdgnoCUD/yBIy27wZoV3kyeFCM5BodAKV/5K1VedefhOnEE+XOEi 39 | qy6C6b0TbSTi49Q9L+62bIXz37V6vUBSgUuBLr6rAoGBAKOqQGLmWmFfOhqBDmq6 40 | vxR7aSPenvEkZaGKENjOtrOheVajU/zw7yISDwY5KwArvSBusSi1AwAs5ucNniYx 41 | psVLKakYaaEh7I9pceZtuTTZjXEnAp+i+obHGes1OFlNso92L9CyRMU65KFIrUa6 42 | UpdmDxHGPT8xkJT625tcrBihAoGADf71f8/Gg0ym8b33D7twbRn58RLU3t6jpRDx 43 | sbks5bAzbwlm8cIDEO5dQ1hu9blfOGlZ0Q2bkUvDksQO9QAv7OZOmg78SJB8Wa91 44 | lTly2Bc2G7fdVmQcbLcQow27VcPp8cHefK2hcBk/c2h3y4lLJD+TbfkRFTmyqCAb 45 | 8Q7iGWkCgYEA5L/nCClSFamjLwE3gi+h5vgfa+O3MFcOCBc/MLzlmRpk5sfZzTV0 46 | m0+kxfksoCj07XaLxSHPxHwDH4vdywENW3hLZEpdK/fQIlY9hRJSBgYpukUg/zX9 47 | m9mdk50UJukDDJnFPuxqnXCYUaVQgJBb/hXYSUd5uk3L1NB/aHxRi28= 48 | -----END RSA PRIVATE KEY----- 49 | -------------------------------------------------------------------------------- /local/certs/.tweetdeck.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdjCCAl6gAwIBAgIRANW+vO50qU90JYCSqXLo23YwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA2MDIxNTAxMzVaFw0yMzA2MDIxNTAxMzVa 6 | MH4xCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEYMBYGA1UEAxQPKi50d2VldGRl 8 | Y2suY29tMRgwFgYDVQQKFA8qLnR3ZWV0ZGVjay5jb20wggEiMA0GCSqGSIb3DQEB 9 | AQUAA4IBDwAwggEKAoIBAQC6nSqZmXz04uv7mO9m+7ENjU7AlW0uK/3w8eyoopPm 10 | RHUPHm27ukz0oRgtWNgIUCPvLQfgvnrbucWVv/MVm2skxs/y9r9/Hu8IZBBP6cs5 11 | hiJMl9l5udpEsiPwCyAchuGuAic5+K6IYB+Ujuw0cumSRS54jrQITxH6bPzylxRM 12 | dl4XAtQVbF9IDJXRIiTjREwyP8YxG+Je9brX6cRZz/xxNLNe16oE0rqserMmyr3r 13 | YQ2aHHGuJZWe3eP1oheM78zuQGndq6bo2vnPavEBBtx5bD6K2lX+MOjhzzweLl7S 14 | m/A0xxKA8Y4x1IYBT2bFSA9FCv8P3qoNyxb33rEMgEE1AgMBAAEwDQYJKoZIhvcN 15 | AQEFBQADggEBAEoQ5S6432iwzdxXziNw/WVtfBa5t17M0D2SHHPR6NFEp7cegPaA 16 | r16X3ATGD8cL4TRvs5ZgoJ/9zxykbCPd4WpMMYNzQ7ixbhbVqagOicg8ApUAADfG 17 | j06FyMGxwpt6hibLk3VFk93Qf1adPgGQdsCfNxZ2NhgAiHZeZ3+uL3o1ttQA+e2+ 18 | SWjMuS1GCAuF5ccQbw1JThDOTbcKe019LxKGDNsRdBlawc2W0PLaJdAum3061OiJ 19 | 1UGo/QX2S9z2IFs/LiGwwxSsbsXnEA5BIm75YOiSEn/tSScVkqjFR5KcnWPPBuZr 20 | 41AtZBvedMAnN96WTpBfHbbJg971kEbR9vI= 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC6nSqZmXz04uv7 24 | mO9m+7ENjU7AlW0uK/3w8eyoopPmRHUPHm27ukz0oRgtWNgIUCPvLQfgvnrbucWV 25 | v/MVm2skxs/y9r9/Hu8IZBBP6cs5hiJMl9l5udpEsiPwCyAchuGuAic5+K6IYB+U 26 | juw0cumSRS54jrQITxH6bPzylxRMdl4XAtQVbF9IDJXRIiTjREwyP8YxG+Je9brX 27 | 6cRZz/xxNLNe16oE0rqserMmyr3rYQ2aHHGuJZWe3eP1oheM78zuQGndq6bo2vnP 28 | avEBBtx5bD6K2lX+MOjhzzweLl7Sm/A0xxKA8Y4x1IYBT2bFSA9FCv8P3qoNyxb3 29 | 3rEMgEE1AgMBAAECggEARhcX0/8hPr0oUyRa7rwkAOoNJSo6irf9Ng03jRMbJ8aY 30 | jOgp4POVSeBju0x+P4kSJhgsuE3yySpaOueQfpIUSQjfO+tPe4h70RP8SHeQW/e0 31 | VD5IcX7LqzeZZeRX2D8U7o1ifFSaASDRW7PepchvT//p91/p4KEKKJvc2aTC/ABo 32 | Wv8Gpwsfn+p3UsRxYwJQ+icNbBB7rnbYgnxV97z+ueegnkVJL9/2P8857Bk0kCHJ 33 | j0t2XMPElu/Nv9VbE2WXvlY/e+fRpblw/piukYVWPY4GRjOlh4Y1qxbAOAgLBH+y 34 | 6vwUI3afNUBnxy5krmv8xemFz/tlMCSM4X1pcFkTgQKBgQDwzdzYvd1dlucK0+lF 35 | tRHzUw+KvasGYVMoxKTnzSjPrlwWfdLCLoZV77KsZF2WfwIMm/0xFI16tdb7PxDg 36 | EjEa5K6aMopESpKNFr4eGQCccOjBMfwVwzMdkVOfLmn1lRHCeIQrvN1+OMI8lGaq 37 | LByvlPyTjjJjnzhAYMO3mZDfFQKBgQDGY99w75nWLWLUHuPRUp8CGTCXGzpILH4g 38 | 8wJhA/l3bMf3lHGadU4RD2KItMUHSzDh4opl/HeXLKphzldHQlPVE4XKXOBeOUk3 39 | 0Lvpq5G6rFA9Skm39JBvOm4e7jRY+AnWGLVam5J9fOsWmqhcc2Oa/ZDPRSGmS4cb 40 | SxZo06lhoQKBgQCV4Ctyo0miNIf8z0RDZJ2Vir8DpWVLBUxS9YGF3MVn7afXP9zr 41 | izWFSzkz3wv43XgTDQubfqVIGOGDYw9Hx0rU6DxcMNSqCJgKRHt0FC+zLvtPM6Mo 42 | kGPCJW+chbDhbzSsi4IIDvb01rLeLadwhyAbkGlcFYb7RmAmgZOPNH9cuQKBgCwJ 43 | 94vGZEva/1k/EithP9LjbJnefW2QEt+Vki2fCD2udCVNWnqDF7VJyQG3vxUDZ/J8 44 | q2RASvvP+nKDr3QuERX3o3dsbpH7/XjaaRxR7aOWpKk2WG7xZy6JtfA/yHcHeIeC 45 | LJ/UcQxSMo1t/3mmU7IQH5kjK3kSwwcX//19HtiBAoGAOKWw29kgbBBdnYwl539i 46 | OhKzf94ZeFbK5lJidtO5ZB9S2/PR+9Z7P+7hHJErT7+cTdILcJng/V36ID6rzult 47 | vzOjrjUnRfN4kebTsMz4ttydrtrbstma6V/lOHpFVd8nvF3HbkFanxS13PLzcCsg 48 | Wa1gxFtlg8HzfyC4qJ1TBsk= 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.cdn.twitter.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDejCCAmKgAwIBAgIQVNHv8kl9Z3CELomXZPv8wjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUyNjE0MTIwM1oXDTIzMDUyNjE0MTIwM1ow 6 | gYIxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEaMBgGA1UEAxQRKi5jZG4udHdp 8 | dHRlci5jb20xGjAYBgNVBAoUESouY2RuLnR3aXR0ZXIuY29tMIIBIjANBgkqhkiG 9 | 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzj4HU9WfjuG+mWgP+GIW8W0vLmTA7gZQWKfE 10 | jXjdwEvt3lVX5iSOcH/ejr6u8nyDtUvkOSB2fnFdqWdMRMD4+04++/o6ztpl2DGO 11 | 8RnU0VX42ELXlPw8wkSLjMHCxAr3157Lg8xezS2oHOHI5kXJFUA5PfQDMz54tS4m 12 | 6BC6fT90iQVMKlCPhZ7qTQYKOwTY/ubXo7G4hsUd45N0Fzh7vk8JJ9ibD/Tk8iAN 13 | GCS0lrEpLRDpsMhwJ0IONi1xpC8okw7/zLnLQw/A2SCm/HqfIb8JWZpLaVdQJN/o 14 | EI1XN9YnkBXh5cDKYKpCoAXPuRoDFcLOyLSYwOBNA8PJIbbLMQIDAQABMA0GCSqG 15 | SIb3DQEBBQUAA4IBAQBuRkk3RBniiQ9005RXn7n4JC95dXbsTfSHbjggxbsn6DxB 16 | OXL2wrkjQeRuKmULHGvZw9FggKWdbiu1Bqlqx5u6TZPxZFVZSFXZfQ99YVbnIf0q 17 | A5TcS1sGusK6ikcNH0JW0guA+LJC+NznsBQesNM0Z14T8ICa6sPD4TNzSRi11z8q 18 | jfgW+UN1Qq18YfU54ttH/Fjgb7kutUOWTmSBTlbBC4VLfdikplLxV1DEgL+Nfagg 19 | VoBxkHi7dVbNgBnd1pHcCJAeeFGiczrFJgeKV0mlxkdhmZTTiKxcBolNbMthCGfM 20 | iPO5QFvnWo9EPmsykuhzYuDiURsFovBrF4Wxma1w 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOPgdT1Z+O4b6Z 24 | aA/4YhbxbS8uZMDuBlBYp8SNeN3AS+3eVVfmJI5wf96Ovq7yfIO1S+Q5IHZ+cV2p 25 | Z0xEwPj7Tj77+jrO2mXYMY7xGdTRVfjYQteU/DzCRIuMwcLECvfXnsuDzF7NLagc 26 | 4cjmRckVQDk99AMzPni1LiboELp9P3SJBUwqUI+FnupNBgo7BNj+5tejsbiGxR3j 27 | k3QXOHu+Twkn2JsP9OTyIA0YJLSWsSktEOmwyHAnQg42LXGkLyiTDv/MuctDD8DZ 28 | IKb8ep8hvwlZmktpV1Ak3+gQjVc31ieQFeHlwMpgqkKgBc+5GgMVws7ItJjA4E0D 29 | w8khtssxAgMBAAECggEAKy0hK5PVS3xHAqaecUlXtEM/VV8SZMI9n9G/fD6JbfB3 30 | Y8xKEowkpbifRxL0XR9kE1hH9w2swNvK1+QgO2SKu1GuLeI83YErQQ9e9WqK+ygc 31 | aGnV6ALGVYU0EcuekpwZNrKvuG/YiOu9/g3mmQ6TAjfnw+iJovi5HHUFACBAame2 32 | DdsI/mBUg6Isiq0QVr7jk//3OtEzWi0IyNuSaqUPe3zezRMCOLJm4kyjaQeisI6d 33 | KqQXb0jjU1lIYuwPrPy65BfWuyTZ18c69sDH9skchMYna3DUjaV2siIAVDrTLer6 34 | eJPxohBzAeod7z90NgkhQoiWOKkEMHmZ99AoEdnGAQKBgQDySuYnXE7QoGUbuCDB 35 | dHr4ucmTKHpNJH67td8MT+p2bRzHT5FWGRNt63Tzv32NVuEmMb3kF4jjEzplCxFo 36 | HP+DnR6Y4xLA+PrCqvkClyAJQcItaX0RsKLW5NGu92smaAF4nujadfdMv2fmkEhu 37 | 5SdKNXuLCpfFm0nVmBn2YhE4GQKBgQDZ6QRL4y26C3a00QWer0RFuG9ObjjMDG/T 38 | XYoZvjWAKDb9vayjPA5nQ83FzEf/iiAQPlLVeGcPKeMFCnxExObznHmHjCRVu/Sy 39 | /Dp5afYQd0x93gw1a8ruu/AGOs9bMOQzR3vzxSGdh6Njf+QfyuRnwOWgkOXNclq2 40 | YvdMEY/u2QKBgAcjk9J3Es9s2m3NqBFrKDBp8PmICMp7F8zaF/9Z33Or1Vw+CO87 41 | f+oONPz1mHJwq+OfNZQh6WOfbmoJwHKL4C91krA4iJXtAB56QSoFX+lF6b3CzO+X 42 | f8TLKy53lc2k5N4z+HJvZWD6hsoxWCEEWXsDRmebYUtuPuevOpya2R0JAoGAZjeN 43 | 0mMwkfLKrirWbgddCS9o1uuRLPYwhn98RnMY+ZLjqMcOcku7nekKX1xh8ZbDT5tM 44 | k+I0xcIqQbUXcdLDW0btIw40BRtzv3ndnBJ+YF71vJ0qMOztdmsmPmXb2rTmdr9z 45 | f3fbOt/jXsshIWC1H442qMkPYv3fW2q1AjPCxpECgYBrHwfZrgLbHPDkAbklJX/+ 46 | VJM2zp6Ssqwb/j17YuBdx0sj7+DNcsgVecQYgKexZFiyc0yxFOQswiZBQmWL8YK2 47 | wzeH5iFAiVK61E3r8bdXofnc66rLQvC3E1aWlHXs9sE27dFp+XtHJ3OCfz8YKtN9 48 | PFaC3H1NgahPZ6vrw8Y0Mw== 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.cloudflare.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDeTCCAmGgAwIBAgIRAJJKORfwNgBE3wSzfBSGYyYwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzA3MDcwOTI2MTJaFw0yMzA3MDcwOTI2MTJa 6 | MIGAMQswCQYDVQQGEwJDTjERMA8GA1UECBMISW50ZXJuZXQxDzANBgNVBAcTBkNl 7 | cm5ldDEXMBUGA1UECxMOR29BZ2VudCBCcmFuY2gxGTAXBgNVBAMUECouY2xvdWRm 8 | bGFyZS5jb20xGTAXBgNVBAoUECouY2xvdWRmbGFyZS5jb20wggEiMA0GCSqGSIb3 9 | DQEBAQUAA4IBDwAwggEKAoIBAQDZYGgzEQhF/FyqLA2i/QOdIDLIxgjgFZNZxFwd 10 | +BgT30ndiuBdQtsPYmdOMSvcpnKPm+M1vgZtIgsbJE4UM+6hqbq+NCdWpDXN24QR 11 | rtDAOSGn9SWgTTT6XttV700zso8TzLwiMrOZxUkE6T4L67HxAaKXYKOCGrY6ueis 12 | A5JKPem5vk2uJgUocS/8MaB6AfRgj8v/aCa3OfdxtMRNPsiEom7OaN5dXQ/Bp5TT 13 | XmvRXmHFW9fSRDSvTpxYrE7xTFZsxaZG2LhKAG+j+fqFOBzgUs+SFIwhdW20PYun 14 | LYNiyt7S2e9nXLkgZA1Yge5bvd1eM682wfGr0AR/nnO/iqoBAgMBAAEwDQYJKoZI 15 | hvcNAQEFBQADggEBAAZXCL5zjQ8c7PgPq4JsvOJ8kZ8/4s5670mKpisKUVN5NZqQ 16 | 6Ik7aM+b442gdOVtob9eBhMRyADldyLtLVYINtBqiufLKWA2EqPseKUllWJHYLQ6 17 | B3952TlFj2yVgCGWpmZyACPi6JvTgtA74DyzihBI86pxW8yKsvWCbKCCmIbSrJuo 18 | zxzosLbhJdOp3riI6a3Zyjpt8Z2NwsLJt3VCa5EOjkGVaA23uh09IUK6CQ+EGFzy 19 | dcaXstoC8JdAWN3k/gW2oJ/0q6veWvgbwnDTlu4a2Cj7kPjtRvIGkHWxn6SjC5JV 20 | tjPN/I1+MAvGKRw55C3zJDQ0WPZPyYfizHCgpZY= 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDZYGgzEQhF/Fyq 24 | LA2i/QOdIDLIxgjgFZNZxFwd+BgT30ndiuBdQtsPYmdOMSvcpnKPm+M1vgZtIgsb 25 | JE4UM+6hqbq+NCdWpDXN24QRrtDAOSGn9SWgTTT6XttV700zso8TzLwiMrOZxUkE 26 | 6T4L67HxAaKXYKOCGrY6ueisA5JKPem5vk2uJgUocS/8MaB6AfRgj8v/aCa3Ofdx 27 | tMRNPsiEom7OaN5dXQ/Bp5TTXmvRXmHFW9fSRDSvTpxYrE7xTFZsxaZG2LhKAG+j 28 | +fqFOBzgUs+SFIwhdW20PYunLYNiyt7S2e9nXLkgZA1Yge5bvd1eM682wfGr0AR/ 29 | nnO/iqoBAgMBAAECggEBAMZI56O1ZKuaYNilqKbFTveT+F8mLdBiPfADate3iBcQ 30 | diuNU84efv5Qj9VGizER76xJ0X8jYG9KP4E5o7NQD9wNnBeGMWAaGC44kAclRKwj 31 | MS0pNHI+GxZLUp3X1L9UoKi5997mCug4irvdGsj67WzfRfX5pAy42wNEtBW8iEQI 32 | +Ui47y2JsiM8nqlT44XjyD3mnmALZwUa7+Gz3sCVPHFlcBB3m3Dxv9Q7MVCUa3e+ 33 | 1EEwAhrLdJM53g/YauRtPmr6fa9+aF9HggJIH2PYk7MP/Gfr98SAAoByizcMMelf 34 | NLOWVlVCo8/FJg7uMFgh5lrI4AZMYQEowLpLczxzIsECgYEA806iZSfwLTzvM0Lo 35 | BlTWp/9z339e/gFSUtmg+aUkzsv4N8SbzrdQtbbKr4dGIn9Kx9L0+dweDbRWhzKF 36 | djSmcBOwKDXDjml0YhQGHMw2DeSA6w8ins/gJ0Cvct8i1XQBkhuQljEzhiPjuUy2 37 | 8ClfPFKnlzLQAcAvcNo5QZlUqhkCgYEA5Ld4UhkVyIROMXksxSLYyVenhFfgmeKd 38 | 0yPPSkEajJfF6THx1n+/HxjBKlz0la6MFotmCyhgwzIUkTVaEpU1HzP9t/RzacmY 39 | MBHpQ7kNDrLD55Yqqh1V8+8QnBzWh6AMFyDQo7H+AwtUv4OmKxYyA5c2n8+CyfOG 40 | XGrGMAncTCkCgYBLcDYp5xgw7pO78SK/0846iJoE0hlB6Gb+CTxAK1QeSl/L6snk 41 | bjI4JVTy156HU7B8BIywa+9lkGTDxoZbADgax//2d7UKkufjARJkG20nIZJXT3oM 42 | g6echBHiLA1A4ZcbFjDeYKL5FGenLIIMNMeyjG4qEzcrU8th0keubzwxAQKBgC6C 43 | fK49OafH99qpqIgCGRGAiKkp8Zt5cNyxyIJyEMMMTguow2P6IFRjhUxnELmrgANJ 44 | n5ufP2YSNgp9Te6/dsj8mpig1iNqAk+sJMJHzDbz9VCPwedMBeGP+NG2L43u5uaB 45 | Hsxa8quNz1MOo2jZn5wJUOtYmGEW63i5ocm9B5ZZAoGBAIbB/lJF2VypVD1D+Fxs 46 | v/zpUIsUzYol5ZvtI8YZXYm8e1UDgiziPJM14obceRTdrsg1eiU2hhkZJ9ldQsqg 47 | Af/XZoQRhW7Io5PFt/VDxJu+brA+RDgBHr0z1SLuOhVAZjePnWCJQ4jjvCO18T4A 48 | IGS6TjjH8PKGlccKl1ezca3E 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.googleapis.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDeDCCAmCgAwIBAgIQbNqWTE3ek6sz6NQPN1YVGjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUyNzE1NTQyOVoXDTIzMDUyNzE1NTQyOVow 6 | gYAxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEZMBcGA1UEAxQQKi5nb29nbGVh 8 | cGlzLmNvbTEZMBcGA1UEChQQKi5nb29nbGVhcGlzLmNvbTCCASIwDQYJKoZIhvcN 9 | AQEBBQADggEPADCCAQoCggEBALxNRy/Ck2WlmUM52RCtbiyauCQphnN8WlIo4pxv 10 | ahkZA/KEuBoftbYHXjkPaPB1kFcThFwIg5sZF68xjOmjSinVZaLzm7ouBFHREsZJ 11 | fiv2sroEij0PaTIj30H8YjSOtx2zkKTkfKagfscKp8YQJM6tScIlsyu2TTc4nxkh 12 | lqtLo95PcVG6+BEOqn8grx7gzowKr43i+0jGji494p0OaS/H6N5Ok8PPnfrHzXQj 13 | N47VEOZT9qYo+YE/VdXB80gkDkkdyOdDLQ3prcZ631Od2X2PZ/gkMnYqRmGmNpa8 14 | wBJJle0SzEtW9m2+3oEq7b7L/+zBvuImZfIMFEAFOrqNPHUCAwEAATANBgkqhkiG 15 | 9w0BAQUFAAOCAQEAmjaUQY0v1QlVerQ56exqnDhCnL4lQRVTJus3jYcG/L3lVdro 16 | 9PJ5Q+FjHHWLvuO4t9z+K851+aka0wOfNm9hah2yM9B/UZaffyBTCG19Llwyw3zW 17 | /Rl5Pz20g2NK7ZF0oZNsd+fhRYQIuhC9MQBy4kuUcDlg2dgxbDo0g2hjgDsHDhzH 18 | 0EBtAHZqU3y9vvdakc0us9LkKUHcj2RTHtemfBcumrx2MsfEQ3wa6dm47G4oIhw0 19 | GiGJ1xuTW12QTuzkNJnYHyBB69dhCdXl7JNxTAxzZrcej4xcEKnsqfWFkxnFxXLU 20 | ZxatWurKBZZVKJgWPQNUkew0YZwmVUwqqsRPMg== 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8TUcvwpNlpZlD 24 | OdkQrW4smrgkKYZzfFpSKOKcb2oZGQPyhLgaH7W2B145D2jwdZBXE4RcCIObGRev 25 | MYzpo0op1WWi85u6LgRR0RLGSX4r9rK6BIo9D2kyI99B/GI0jrcds5Ck5HymoH7H 26 | CqfGECTOrUnCJbMrtk03OJ8ZIZarS6PeT3FRuvgRDqp/IK8e4M6MCq+N4vtIxo4u 27 | PeKdDmkvx+jeTpPDz536x810IzeO1RDmU/amKPmBP1XVwfNIJA5JHcjnQy0N6a3G 28 | et9Tndl9j2f4JDJ2KkZhpjaWvMASSZXtEsxLVvZtvt6BKu2+y//swb7iJmXyDBRA 29 | BTq6jTx1AgMBAAECggEAJmRTKUewqb7TusMmoKHbnriE5sqYoR8vgyTW3zJQHYHe 30 | LiolJx5j/BMQgO3FZZFytm5CRElwG8VH8O5XXqNuUY0yxcCJdbJAKzZHb6o4UVph 31 | IlAep0hnGFP8BwYgN7sJVsLvsM7tI0QB1S80+cr81i66pRzupPDsWV/wAD267H2M 32 | AZQSK25GuQxLkKbcnHBP1PM4BKIlswQm+BYIvgOxd8qFWv3jVL70GRMW4mKiFVIY 33 | zV08HCp7ofmd12zQd56AA1lSa+toUS5MwvA5ano8d9TSvd7MuKfF2bBQe2CehmOj 34 | MDw+FmdRTXEE3WYAuUHrt1NLiaz97bDgsT5e6g5wGQKBgQDhj9r9L8pTQfQ6wVCl 35 | 9tyOVeTVtJIoSwN/tfHAUpdB9rXvae4nkxgmbdtB94+fWWzF4NiWGKq8qg9dad6m 36 | pvYH+bsUzceJlbEwMeRNahTuMS9+Y43XXhWD08qweRKehDinMgjqLsTlWeBmeySL 37 | 9xlkfzB7vjDhn8STiqFma6BDSwKBgQDVtkF+/Gska2ttnafubIyUaNJqO4VGThQZ 38 | O4t1BIcG0OxTFr4t/RjuS9aDVcUhWSd+4B8eUCKfxJRT52lMUJRNKYpd3HI/ByIw 39 | 2EbJMO1eq+AwVvs8GwWnNKakblcjEX4Rt5AG7CYEQ9Yl5qBNLeqve4izbkj68I3O 40 | 6Zi0YaznPwKBgCbn0TXqkFNcBOw9e9OkiNZkKlxSEQOyLKBSmag6lqxiCW+KLfHV 41 | hUzblf4C3Vr26bQX3EPHbWutSYkrQaQtGDK3+HTWKZypnS5a7K4Nph6PjUmXkleb 42 | esqKNWPK/lMpKzxrfO4nsv58SiBjDSK3NEIJTiuJ2pSQIi/wsXYhCjuRAoGBAMwQ 43 | 6zuJZflxxTP3Tephpl70NK+RxDIczh5F+GU1fIWqq26vkcuyGMM6kUv5c3Hjgs4o 44 | zi4Q0O8EM6pmlupzKxj/KIt1u3WppyFC81ybpp02u60M8Xs0RlKh+NmcLwJiaqIa 45 | SKIDjk2WRP8N2FW6GZWU/TRwg6lyV8aS0ei0N/jbAoGBANthgVE0iJ7/ElMWjniA 46 | ewkUsWrIY5Iue7jjUBRgcd4ao/FjEPksnMWkW46myv524deLoUblT5CbudwCm2hs 47 | hSxGQlBua+V13HwAQ6yG4yIrDNycP4A+HWQA9T7R7aTnGM4hguA1ko222TijQ3DL 48 | /xWli3HkBa9SNGxduFcFtWtH 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/www.google.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDdTCCAl2gAwIBAgIQSOinwyYYAlibhjhBjb1c5TANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDUzMDE2MjM0M1oXDTIzMDUzMDE2MjM0M1ow 6 | fjELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRgwFgYDVQQDEw93d3cuZ29vZ2xl 8 | LmNvbS4xGDAWBgNVBAoTD3d3dy5nb29nbGUuY29tLjCCASIwDQYJKoZIhvcNAQEB 9 | BQADggEPADCCAQoCggEBANNnmTPXnFkm6VAppS0bmEA7VS6HoA/vl9a8AS69MrU3 10 | SYWXxSDfGj+EAbm+DIhLj08FuY4w1uqTj4VsOnbpU61t+/d13qb+9Chb+Rfa/TQI 11 | NWgIZh44q8LmwVA4i65NGb5cgevQzr8baoaBeZ9eBJ8enVpxVkL9/o9aGGF0a4fM 12 | DWVbZ05q7bvo7fIRG8279u0EKuF9/Ee5ZVmQ9jrkxNszdpzET+WOs9+KZKTbysnm 13 | ZkYnVWauiK5zm4fgx44d0BnkDLr83/aNbzTG4Z/VFnuLGYON0pKChka9+Hlj0E/K 14 | +pYcAs9ILnTVBwrsUC1h+iAGjP74xb6B2m4h+culHlECAwEAATANBgkqhkiG9w0B 15 | AQUFAAOCAQEAWQTQnWOyJel1kqtFIA1MT0ZaLua6H+onJvRXiMvfpiKFnisksTij 16 | 0bw+tgjcfgVIpv/czAwaP8aU2sIHmOsK9RC2vlGcBctk66dtr2/VBs6UwIlnGqcY 17 | iZHJOSA/MwNFbtci2n5bQ9aZzSLpB5/RHOdvRldu9ebDZLrzMY76GwYyYrylvaiq 18 | h8QFE2Haty8L/lW49akepxHtYl0bI0Q4bV3z7a3mP+zESYR8fOClT/eQCqwC6wC4 19 | U0F2fqu227z/3Du7GCCgFJvPf3OWLeZJlp9pGUDYBDlmpCbLYQHWRYS8TZ/dMcId 20 | owYRiq3AG0wTxtBAs2BuQqkL2W8fQ5L47A== 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDTZ5kz15xZJulQ 24 | KaUtG5hAO1Uuh6AP75fWvAEuvTK1N0mFl8Ug3xo/hAG5vgyIS49PBbmOMNbqk4+F 25 | bDp26VOtbfv3dd6m/vQoW/kX2v00CDVoCGYeOKvC5sFQOIuuTRm+XIHr0M6/G2qG 26 | gXmfXgSfHp1acVZC/f6PWhhhdGuHzA1lW2dOau276O3yERvNu/btBCrhffxHuWVZ 27 | kPY65MTbM3acxE/ljrPfimSk28rJ5mZGJ1Vmroiuc5uH4MeOHdAZ5Ay6/N/2jW80 28 | xuGf1RZ7ixmDjdKSgoZGvfh5Y9BPyvqWHALPSC501QcK7FAtYfogBoz++MW+gdpu 29 | IfnLpR5RAgMBAAECggEBAILbstqDUTViP7OuQ59bYHAKCh1GOI8EuRFjyLucw6Gm 30 | umzmWFCTqVS9qq/F803+r5OzsHtSwgXsFz/4kWv/3BsTZI92N79ZO9srq1HX7Tnj 31 | BuQBpux4GeIIIos8pUHcWd4atxU4aHGlT9g4lwdOFEBGnBJa65GGVad4lnTkspcY 32 | WOsiQXC4ucfzEA+VnGi8w9bFeSIM0a+VgWaiT/0yphG3674Q6uw9nH34f+oEy0pp 33 | cFepAo9arD2JIV9cz4DKV4wxwr4U6qfUzuMKo8T+kiA3kR6yC22ugaKSSMTtd844 34 | ZhhCFLUT+7uYP9ni7OpTbn0k4/LsKmmatPff1HyKfxECgYEA7uUuM+L8kUsG205J 35 | TcD0wLb74+TKbn/6LCEC5x1MMogrUybZ5dk4tPi4bw50B0Z6ubyAor1dUyofaWUa 36 | 8kuZS/dEHbVPzeC9DF2wKiCsOnnOJX36Yfe6+0yxJY6E76iu5oxckQNAOvXTDIAt 37 | gtJt9WM/+sAkuKCBgqQfyV1pacUCgYEA4oqH9J4CU+EsiYbCpjJUxcxCX2/rb3Y7 38 | f0rYPe4rDoBA1F7fKAN8M5J19wKrwgdx/gzoiNH2RTKCosAxzq/Pnah09y7FwljC 39 | erudl+O1sO6tBfRnZdPydxkZNzWsonh5M3d+U4Ffd49DiUEQlPGXELeuP/UBvmna 40 | dqGii1NMxx0CgYEAsnCNKkSJ0xzvai/3oRRXvPrw+zCR5CfDfeLKgEbp+3Sqp9mF 41 | OKIgMUz2tj1dfXGviby7eNNpOg1kmRzkG8dMIen3/xjHG0ia7Pmt9EmjW6pPyMFo 42 | nHSmPb7zMtJZiYm92odNPSPofiHQGq5DUExNxdT0nR+YTi/VjPd6prYXXuECgYBy 43 | ZGt0fRlFy81WgKLnk0C1RIg7cuNavEQc6ek5lHtPbjnOQz3CEch0rj89BK9AYcwQ 44 | 8em1tPf7Rx8qGYzNBn/652ZwrsCTe4hwuy4/1W8YsdzSxfA0PgsQUq8l7seGnvjs 45 | oSk793cCg2gh9aXu3/NdMLMffpNr2D3Fa6cNXXnGjQKBgQDIMaDzjIFvXGEyCDuR 46 | qISMMqRkU0kvpiZPGCniquxYKZUMr3jxyfnt7zJQBEwOPKJWECrM/re0FjW8c+Qu 47 | 69W+tOwnb+2z7uBr8RBDsI7NqH+fyNMUthwKvn5ua4LEfjOVhx8UgogUwXR59wkn 48 | psFAHsQT/VYnCmaFRTGMkf7MQQ== 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.s3.amazonaws.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDfDCCAmSgAwIBAgIQCDMc+qlHe0MJMFhP97Um1jANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDYwMjEyMzU1OVoXDTIzMDYwMjEyMzU1OVow 6 | gYQxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEbMBkGA1UEAxQSKi5zMy5hbWF6 8 | b25hd3MuY29tMRswGQYDVQQKFBIqLnMzLmFtYXpvbmF3cy5jb20wggEiMA0GCSqG 9 | SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtxsLtQ/eX+Yy0dtdMXbR3t7zdXhBl3Keu 10 | mJfx4y0rE9RqKg31FzsP9apET4K6F8KnLTUHGnovZpP4T9O89ehTbVp7vKxs2KQR 11 | ZofMWBZ059rc/WCXtZuLhlD3+G3OOUSYSTydinltgZSONHlEha1p+tQRZ3GLI426 12 | T84h6PSPieF2kMyyd7brO0juziQuWoIQ78tYrilbLDHr70m7K2XuRRWmmSyC4cs5 13 | eYA0DP2+uNGeV5eJGxB6KEPfka7a+NycdjhSDow2jjXz1wt32KURVaKQFHDcOuKZ 14 | pd5n72cEf/vg2PP/303ylfqegdFy8vNLkrXypcneqbif1r+xlBLRAgMBAAEwDQYJ 15 | KoZIhvcNAQEFBQADggEBACAJCnvUVo3olg3PdXwch8I5f5hbZdyH+RtTfVrxCA0S 16 | gD5OfY4FdoW4lBE2QRegUhAhqQ3yHOaEpKeyNi6gHrzsBo899Mn8J0/tnnOiSZfe 17 | 4Cejcjph9GZuBbEYoW/4CHQx0p7vfoLsXY+bSJFnRT9XY1Rw2Ii6FYunZKvLNk8I 18 | 0IwtWtBcX1NWPnzaCh8OusSO0odYpW5TCwrkSp+AoFfqaF1B1uz1gSXqrV9tGLyY 19 | m16L9TKS+nV4qhc9X1jJlyJjtOu0z0UQzlMZJEcdywcezV1TAzRUaYrmmYwKXhNp 20 | KezNXN/KOSpJ+NuerBMDfogidhKCL91Y1i54HoyOkXU= 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDtxsLtQ/eX+Yy0 24 | dtdMXbR3t7zdXhBl3KeumJfx4y0rE9RqKg31FzsP9apET4K6F8KnLTUHGnovZpP4 25 | T9O89ehTbVp7vKxs2KQRZofMWBZ059rc/WCXtZuLhlD3+G3OOUSYSTydinltgZSO 26 | NHlEha1p+tQRZ3GLI426T84h6PSPieF2kMyyd7brO0juziQuWoIQ78tYrilbLDHr 27 | 70m7K2XuRRWmmSyC4cs5eYA0DP2+uNGeV5eJGxB6KEPfka7a+NycdjhSDow2jjXz 28 | 1wt32KURVaKQFHDcOuKZpd5n72cEf/vg2PP/303ylfqegdFy8vNLkrXypcneqbif 29 | 1r+xlBLRAgMBAAECggEAZPw3qYFmVJteEP8wLXTWwsm8YuAiYsC2TsbsMYVkl5kS 30 | bAx0ZRV6tiqGKAEE6nhQ6aOfk+bA4gTU728n5GckRtp4xXi6WnggJmu/XSBEWV5n 31 | a9gJACXXbAidttNB/4X/BhaEsfwv2jxglYzfvCRyJEKtcr7WUFvHQ8vFJk3EIHmD 32 | Kd6b2S3FnbrimU/CA0odwOdjgKyFGMmFA9wauLJ1UHgmyUhpPdLeyDLfGEvPipMS 33 | m2KFPOn0AJj+A+t92Kdh0KgPCZEcoJI+N7wfO8666P5f7Fc9V0Z3PJsT519uG4+F 34 | kUfrgzi/9asD992M3tVEFE4zJHmRRtc8bLpYtbF0YQKBgQD99KW0PF7tnTkiZs3D 35 | H3qy2XKqSSQAXzrY2JahydrsyodbyWfU0Is24IjT5khMk3wiqiWGNyBrmH0oqKs8 36 | t6kYRkyJHSAUE3qat1gFHMr52dN+c5Jj5KyuqWRQjxKkiBqScIFFW+3eX+WMNak2 37 | RVHBH6cFYP5J3EZ66Qz1x4ejFQKBgQDvsMWcDzfnKfyhCeI3yfwSlmB8GIjWeLoq 38 | W8sCzjAZKmL0ZsGW6tPXoCr4+xgKTnBhV5ctj7goLaXlG2ePliz1sHt4aYVSsCzD 39 | X7gTlQi2yih1R+iyRqxULLd/JUMOy/T5AKwuMpeVvQGvMBWT+3v5l9vNPX3f/U5V 40 | PcMPuNdPzQKBgGpaaILgvYiZTXIgx48twb7g3ep+kvss5oIlwn+i/3InJyTDZh5z 41 | 77ldsy+6wxB+u3/w7aIVuBgXVmMOsBfPeptV5XuOnP6LYc8ldVE+y6pzFOViFS6M 42 | d9z1x7MNF+ubrDUjtJ+NbkKwuntLhb/aq/BLBzFze0sHWuTicLEFjMI5AoGBAIxS 43 | Ia3WHvUe2H3yilP81KyRCpU7y8g7T0mDCZtv2CqzbNEF4ymV+kUOyHmQjidieloS 44 | bDfJHpeu+aLh40PlOBbxpab9p4acCuip/drA8iQIv5zBZ1IPG83/i8FMsDBWaOjp 45 | YuN8zM9lojnMXaWPoamiJJTH/gwGgDhY+vwWSz61AoGBANVDp1iOQykhBiSfryjI 46 | SrQ0XpSmjtW4dQyoNU9BRACaZscm/FE1Wa/mEnLvoNQmFjYN6f3FA5HtyZsF78u1 47 | 3pL94m8NnNIlI+DpgEaKcYsK92l0Qs9V5tQcHhx2t6hVhH4yccQkWhCif7P2CP9x 48 | LXdh8gA1UDRlKnll+brzx7OQ 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.ssl.cf2.rackcdn.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDgjCCAmqgAwIBAgIQY9qxpzAD/qGqoatGSdIw1jANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDYzMDE0NDI1MVoXDTIzMDYzMDE0NDI1MVow 6 | gYoxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEeMBwGA1UEAxQVKi5zc2wuY2Yy 8 | LnJhY2tjZG4uY29tMR4wHAYDVQQKFBUqLnNzbC5jZjIucmFja2Nkbi5jb20wggEi 9 | MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRMZMIC/CdEjf+9YRnAicGAimO 10 | 32YvPSH4eC2gtTFzbX2exTg4BiPNS+uS3AnJEZjIJI8fc8828/MTMxvUCeCk836E 11 | jvrx97yNHQ+G+9soAfiSXDiuJG2PMufz6s88k8tbquM69Lpwj2bNxF/yyZyk4iFp 12 | b0IViDXw0xqSpaYD1l634cb8Y+txT718pUOAetaNV09M1Mc9rGozOPz1aHQgoMYJ 13 | wEXFtYtfb+nD/llMwFQKp1AinWiNOq63jFXf7FBwloA73usaq5xTcY+Atg1Q270Q 14 | sY2hc5fMn1/kmjkm5O9xCzFuYGVR6WZ55FWdf4/GSLM3DGF6HsjMHxF5Rn0XAgMB 15 | AAEwDQYJKoZIhvcNAQEFBQADggEBAIISvMVwknvXJuZKSPPG1KBjxw8o5dpU9bkH 16 | uYCU4GiYIOhjQLaTJSC2o6j2DFJ3IvliG2wQsQgFW1Lz2+5yZg9w5kVBpUGg47dw 17 | LckHnirBSOTTsac7ub8qpm9Yg00mY7JTbT2xCNKIwLsoRfOzKFI252occ/meD/Ob 18 | BdCUto+BrDkmFEMd8/UTSAh+iw0DreFN9sALViSwQIIs7HRwBcdDKKuPGripolBz 19 | A5fo9DiH5MNwdVXr+pXRbdIAv8T36phSz5daPPgpT3MFyCB2oe0Euz8g1IYtGppg 20 | fVf3kdjEl0SX1296IS10Yy10YNHWtFNxJoNcbBsPKsdOmByeUTc= 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDRMZMIC/CdEjf+ 24 | 9YRnAicGAimO32YvPSH4eC2gtTFzbX2exTg4BiPNS+uS3AnJEZjIJI8fc8828/MT 25 | MxvUCeCk836Ejvrx97yNHQ+G+9soAfiSXDiuJG2PMufz6s88k8tbquM69Lpwj2bN 26 | xF/yyZyk4iFpb0IViDXw0xqSpaYD1l634cb8Y+txT718pUOAetaNV09M1Mc9rGoz 27 | OPz1aHQgoMYJwEXFtYtfb+nD/llMwFQKp1AinWiNOq63jFXf7FBwloA73usaq5xT 28 | cY+Atg1Q270QsY2hc5fMn1/kmjkm5O9xCzFuYGVR6WZ55FWdf4/GSLM3DGF6HsjM 29 | HxF5Rn0XAgMBAAECggEBAIZQDBUYhW5z6hv6yv3QNfn3nXMsIFGoMI11q+YJMCzq 30 | WcN84PGnj4kae7AZMvc0IyItxu7szlh8HM9w+ycTCHcgF1VI7/o3k4oO5I9IWZfA 31 | XDasm3/Dx8wvZRoI4vID+odqmuaZhrMKf3kR4oDhzX9X6Rfm5Ukp4Wg0QlVxobvH 32 | 19T/B3+OxHNRNC0spNXEHWrBGG/oDXY8T1MnoInh8bTbfhD9qWcPNP6GSbMgbbaK 33 | mB7m4ZjkEjzJLoS6co5HF1NDmGriS8eDo3RBiNbnAOY35Q26/FRoQ3ABT5rGk0J9 34 | paazq/kPA7S3TP6JrbovxLZf1+gW1k3Z4Xhn46cHvLECgYEA9sd4ZpbI9IOfVyAU 35 | 80jyxRqBKuHGi0m4OgPESlQPUMLsLMSMCUgSpd9QRSMsz5EXEtrT+LHE2z8LqSV9 36 | pvi8EDOfzl06dHdf+Wt1k377mS+UQM1tjL68PGOUPcFVxB/szb5zuF5yxgEKQvrR 37 | KCh52YgTWEPi8fc2qkkoaZaSKEUCgYEA2QKVz4XGjMNiKdkxvpn2wI0dsb3zzzT0 38 | wCiyZyfo6pLcENEZjLvJP9MD+++wnmmcfIt3yZOvP1D2JCMFA5yHTWbQyBj1b8a+ 39 | eIzp9QUNFj9UPeR6RZbSUnDjILOQsE16Ar2MAbP7UZbRkr+PgeDxOlYs/oXm5jRv 40 | WE6oXgh6K6sCgYBEVCKwNRvbJ/6cfxON8SrXDGmrV+xDcNwDpDtbYT8EW5RNKPal 41 | M0GGj/iHzB+CMWg0HkcG2yHomuI9qVXLP5/C1Khw2TtwOAVo6Cob9tLvLU9dSgQF 42 | LmKsTd4j4z4+GaDVruAXsn8Q+ATBWvVCq0Jhyt2gWNujp5GJQMxhwAEkCQKBgCIy 43 | BRdRVisiMpqzjeIh8r7+vZofe4bAKn0JLKuSn2IvSBwiRutlP94dyzfs2iDsNWtu 44 | sq6B5hCNGmwxVH3wMWXh+K4/OJWndKYcVlV0uU4zJnwmP5otnPC+txuVEAyn+Lzr 45 | z18JVGXT5SxBoURvBLQTlj15LhxCUPVSV7eRkGbHAoGBAPFYlp8ARfPelTFT+Nie 46 | yP7s40pfuCG5pf7mDmTo9GWD+aU45OGRHqWcuH00EU/ngTPhfln+6PNZUsLydzXX 47 | FtXXDbc7u3rhwMi90bsliqmd573Xr3ZsMKNSN6mjwoqwTtpk63iRJTSrCardQ+XE 48 | vSFbGCvvQxmAB6gnLKMdlYY+ 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.ytimg.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDjDCCAnSgAwIBAgIQPvZzexhpZhcAvKLV6tlZWjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MTQyM1oXDTIzMDMyNzA4MTQyM1ow 6 | djELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRQwEgYDVQQDFAsqLnl0aW1nLmNv 8 | bTEUMBIGA1UEChQLKi55dGltZy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw 9 | ggEKAoIBAQDerQwt5FZbKXFzkcKx9LhssOdvczFzRDhS0+LJCfnQOi4mGgeT2U8g 10 | 7HwBMqEsvIMe2018ytB7Ml4gPzzqawgLbN3+Tlbwu1gCNxIz7G5x+RJIszSI/hoZ 11 | FE9O0ZB1/0amm/FdiycG1fdGospxKSMv15/+m8Pv7Qb5GY97+ITUae35EsWS1/Bj 12 | VAV1v1hXpOK6niurTJbQziKZurL/wIo/DygribWmQyWm0i6VK6stL1JZEYiqld1W 13 | siMnMN6tYURmYzcj8oTgn8v8G4ekZV0I6zuj7WDKROwKBY4id//5hdgAQ27cSBjJ 14 | 48lFT8RMHP8uXbaDBVfnas5NeCCzSXmdAgMBAAGjHTAbMBkGA1UdEQEB/wQPMA2C 15 | CyoueXRpbWcuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQA3B5syI7VvVH8Iet5blSdA 16 | CqGh/UuAHdAWT+iRIC1K9fSvfjv4VtCxzgdHqJSlZ1RD8KRgV2JDhEUh7O98lIce 17 | 58ZBbtor+V9nNssPDjXcriAtHwuXOynBFiOlmgWfeYlV8zGzoo+Tcktu+JtwWCTY 18 | 6aZ8WyZB5xIcWgjmODSmFJYt6M8EK55NrWNN+Iy6v0zs5GJQCQ9f7HqPes//Yrxb 19 | 3bwmhmZSaS5uVaZgKFFmfv3gFPP+SU+820/4SV7S67ZA7iMWneDeiT6ipmFUmchy 20 | 8KhZFkkHdXtl+1eoZHOrmnPhLaiDlVavPOu+wPS95sFwoB8jsDsbS8Re+ZmuoOsh 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDerQwt5FZbKXFz 24 | kcKx9LhssOdvczFzRDhS0+LJCfnQOi4mGgeT2U8g7HwBMqEsvIMe2018ytB7Ml4g 25 | PzzqawgLbN3+Tlbwu1gCNxIz7G5x+RJIszSI/hoZFE9O0ZB1/0amm/FdiycG1fdG 26 | ospxKSMv15/+m8Pv7Qb5GY97+ITUae35EsWS1/BjVAV1v1hXpOK6niurTJbQziKZ 27 | urL/wIo/DygribWmQyWm0i6VK6stL1JZEYiqld1WsiMnMN6tYURmYzcj8oTgn8v8 28 | G4ekZV0I6zuj7WDKROwKBY4id//5hdgAQ27cSBjJ48lFT8RMHP8uXbaDBVfnas5N 29 | eCCzSXmdAgMBAAECggEAF5AqRMTv2m+1QKyA9MHXrjC+HM4MwozKhQFE808p7z3o 30 | 2kFQ4fVR6UL9EEdiRNCh82bzeSwhCZhX24O1l3zB+iuIBjwV+R1p/7oCJBp1yXu4 31 | 0pacDY8OBe9fQRDt/36G5GSGEwcBlziXFRNu5rCat5pSpOeowT/MyBlLVKwEqlFk 32 | uf4X7imldwp/Se6cH16xbF7EE930vc5KrIZKPigq3vi275HXPujvSIgiFiAuRn8+ 33 | Zm9PiIeuejHtmxJniGJcC+bmEjhjdYo0nQyETOqOB27Bp3GCUYJhpPFlej0s/APs 34 | R6yALaST3iyp7a1EsQrbL35dK326ql2R8CFoj/YhRQKBgQD4jsLkqrygGZrgOApX 35 | XDd0oUukV66oEjHhAN168aws4DFMMC3ycgqXa/1IgPEvLZso6F4Hr5anrpREx7KT 36 | SDMOyMrd/dzTJ1pEwHolcPAB03OTQv/1oRlz6C2G7fguNFJ0U8Beh5zIUXtrCJ5V 37 | 6IkNuF5wijXvQZER5BpfASTlhwKBgQDlV+YC7p6FPAeKAD+mzS5HCpYtAtjvmjY1 38 | KfAzkmbd8AdRP2+9auvNx2KzRohbyL3z2klW+lyHR1AK2slRmsit8j3Mdt96pn6g 39 | /VnxFHSxoB7Wxbvs6d9+gaJ8rfW3EwTwvOjz0+Jx/2IgNWnqMA/3bZjsM7Erlpil 40 | ITkctm+wuwKBgQCy4hvFclN6bbMW934JzWZj28mSp0Ad2apoIrVDTDb7vQX9rRcE 41 | S6rvu1p4GcR6jboDQOibY3VrjKtMrOQKN4X3d+74wUFx/fprTJMb6yHwTnv5WdjY 42 | sG6fClPprc5VgnZtHfFulu7xBCNsrrE1ZrtsUmo1WGLkpC2B0MZh5XLmdQKBgQC4 43 | vUg7fmlU25kbEb40J70qXp2/3jZPM0KNKp4hfMG97xaF3Pqucw1FMmIQFTXL8XUJ 44 | lAFVvdCA6/HO/JQEVxFmBObA59R24NzJ46rqplalqlyNFrSdT3rHVbdEhYCTmw90 45 | uEdR+ZDD0TsCxOPvUA3cen0fbzg8609EXPG7bj2j9wKBgAxg446zGmlEoMeWpxkr 46 | 6CDmOKkLvzouz0pBPj8x3gMsmLcDQNw3VKLf2APNZqSB4dPcVBXkhNuVVBh7GscC 47 | vAQrQ18R5RMtyWuDWK/07BbLRNbV5I5S2z8H/FT5Q4NykhJvLs1H2It5M5qlGekx 48 | RgQfWWZyLyWoiNEvtCICsApG 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/twitter.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDjDCCAnSgAwIBAgIQeQXRxOEsVJM6RNGfzV+TVjANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MDg1NFoXDTIzMDMyNzA4MDg1NFow 6 | djELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRQwEgYDVQQDEwt0d2l0dGVyLmNv 8 | bTEUMBIGA1UEChMLdHdpdHRlci5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw 9 | ggEKAoIBAQDkqaAr2pHgR01kIAJX1EcZMKQrTNwRjObs3xuwxYv5InTFBqLKUXQy 10 | QTscFhteTq+6kaiDdlIFN00UQqPMTLWudXat6LCCXp0J1irkK93tSbmLaF9N3BLo 11 | tXKR9CjmsT6lzFBBUi/Uc++FjQnzlGDBzlR8XfcB9KLDN6YNCza6pyGVi2rZIBaT 12 | 4K22oEmuGtx0XNmBeUoclTv+wFM/tOq4WgNBgbKvFVabzze/O423ecTTX+uEOuIR 13 | voFTgcZjJt7VOnrIrz8cvamgBiHPc27hsvsUtjavu/SF09s8LsMZC0ve/kF7+FJg 14 | ewFAcofwWFPkTsqhu7JUSd61qpa42CczAgMBAAGjHTAbMBkGA1UdEQEB/wQPMA2C 15 | C3R3aXR0ZXIuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQCtnZONvHxUpNq+kxezBssS 16 | jCrc5gO7XmiFBkJpHPxTCzy9cjFLAihNEybch22lKqoeCtea6kMyxdqNfvA5ZZML 17 | p5FACh+63ELtumXGxDIwNTYSJtKhKv0EUSHzpi3/4ogTJw1MBfBxSRwltoc1RoqA 18 | Hji3kENlGfavrdHImpCgFSs/yI0AypWbIWixUz87v2oX1XL4wb38dm6mXpMfah1R 19 | u9ev0ZRdhB3qNyMKPRcZxJ8U3JzKhHoZQwnha+fFKA7Adx7dOHTLvujXXNiR07T3 20 | E5++J+kxpfyNGd9JhD9TzB9G0Ggr6VKjMDjl5iftgYSwKN9PaWhmcS3/e4/rdN4p 21 | -----END CERTIFICATE----- 22 | -----BEGIN PRIVATE KEY----- 23 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDkqaAr2pHgR01k 24 | IAJX1EcZMKQrTNwRjObs3xuwxYv5InTFBqLKUXQyQTscFhteTq+6kaiDdlIFN00U 25 | QqPMTLWudXat6LCCXp0J1irkK93tSbmLaF9N3BLotXKR9CjmsT6lzFBBUi/Uc++F 26 | jQnzlGDBzlR8XfcB9KLDN6YNCza6pyGVi2rZIBaT4K22oEmuGtx0XNmBeUoclTv+ 27 | wFM/tOq4WgNBgbKvFVabzze/O423ecTTX+uEOuIRvoFTgcZjJt7VOnrIrz8cvamg 28 | BiHPc27hsvsUtjavu/SF09s8LsMZC0ve/kF7+FJgewFAcofwWFPkTsqhu7JUSd61 29 | qpa42CczAgMBAAECggEBANxAHw3erGBRjdQBmQAscodq+NbUY61sAQrsJGny/k5s 30 | x/j32Vnzd27oshztllMSi+WzY5OtJnfruoznW4rv4Jg4gKYm2c3ZgH33Er1RG6Ty 31 | PIxxbks6zePk0oSPn84FsAhXcn5YwcVsHqyPG6TJqSFEstBQWhpCH3zWX1V1FbRW 32 | caHSOKPd2O+QqSKEq/weWkddxHyZzXZ24aNGJj1sQTD8vXJgFyKen4gB9Fq3WpQt 33 | U3VWSPBajC3kxI/IsLT0ztPrp/+tNVLYf29uV6eaZSQttrjdM3AKakUGOSUctLtH 34 | t7aGZgyZI+I20M9JfEFJVtHfYLXUYKTSikaAeJuFfXECgYEA99NJY04ixSGbOQeL 35 | BtwKlEDr30x4za2OAHXN9AVIAcWXY71tU75omUB/chy7JMuKRBAsfYoJ6M8YuTzY 36 | 2SrJiRliCp54AMiKs7Pz44or75vWUyC3T9TvVKRr366gwz5hwNvohcoUdxE8+p4N 37 | ERCtfE9PDeoebo3q/5jOLZKFQl8CgYEA7DSF38aHVfNCJuF1tDz+mVWDspZnIrgv 38 | mXLnDzegDc6BYvCzZouPEeSB2sCiX1pSy+G28cp0FHhcf78TJKiemE/jpcWKRPBf 39 | Xazhlyowa0T5chQ+ke4SMoiRJvTSTxSDt+/DvTlJS8i7BluxkcpJ/bbDZhsKLJTT 40 | Q78x4rSq060CgYBbfgqS+e7GPnDy7gD6qFPTheBO0QmsTU2mh9dgJm7+EHein/Vz 41 | vFEbev9SHp9Mp0RFen8iXcrow0RKZtdb3XsH/XH/n5+IEoF6dI4uy/0Kecr3Z5Wl 42 | iGRPKGCW9P5u9mHadJV0hzVk+906XQ1P5otV4GW8KlnP0N8YO86qbnR6GwKBgQDH 43 | LRcCdqcibAkJPi8BuDk8VSbDjh4T4dqJe6GpbE9ztQHXy36L5vzSqqxxKOUCoOiW 44 | cZPR2dT+eewN8LKUw/dQGnWtEKEitsrD9AcacAH6QmRRtQ56AZWotQ4pGmLJOlRD 45 | 41NcGZVb6T0EBIf8lubDobytOfnfU/O9+dh4Ab7W1QKBgFAeGdeKt1BujAgfqZwJ 46 | Oc37EQLWnZbH/pOEnLOZgw+49mC7oD6vs2T19nDXXKdLiGrtbhgB912N1VC6N9f/ 47 | cwL8Pfp41VNglS8LweSEBehD5QqpXA3mKY2YEPoJeXEpOYQIhRsKuFULY6wh4vf0 48 | emGUgl010sp4VHcHJhtoEwlt 49 | -----END PRIVATE KEY----- 50 | -------------------------------------------------------------------------------- /local/certs/.google.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDjzCCAnegAwIBAgIQBavUV9Tnow5Ogz9wlw6RxDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MDg1M1oXDTIzMDMyNzA4MDg1M1ow 6 | eDELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRUwEwYDVQQDFAwqLmdvb2dsZS5j 8 | b20xFTATBgNVBAoUDCouZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP 9 | ADCCAQoCggEBAL/jmRMKrASEaFcrt4DA61YQggtRbbHvgO4EVzQn8aTEnZ836lpQ 10 | 5PtCv0wlcVxDHJ1+EljGIbb2dx/oLMaLzrSzcxHzcS/NrK3zk7Zd7alAh0KkWCCD 11 | jgrxg5UAxHt71vXdOzIu6Dw2OklMFlyeeEl5VxgjN9ELTEjHMU4BMQXvL5Zs0ndY 12 | B25HqhJSr8TQiFpxow0FPETp/iLC8JjBt9n99ChV2meXblsg5BfvDT2e6g9SCOtm 13 | dK7e0zXzgKpyCqJJRRoAgE+ZTzaIeGJg5yaeIQJVZLCJS70H+0OopJDXJ7rxesAb 14 | 6AmyFI/1w6hhIqMIifiBiMRGy7lEsY5+uEUCAwEAAaMeMBwwGgYDVR0RAQH/BBAw 15 | DoIMKi5nb29nbGUuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQB7HnXkvN34PofpQl1E 16 | QZM2s3jvHipfVk94Xjnq1WQdTV/t1Kfk2qn41C5GrtWtqo24Wxa7tJtaoW15P1+d 17 | z7pWnUjfjbX7GQO+noX8ca9/FMiuqneUZTxlMX5E8n7ADvQIj8NY6HFt+hGhZdk2 18 | sy7+REpM2/BAq4Or9RLQrzWbjsZJi54Cih6XUXeC2zDs5GmkSCvbuilfs2kOGGg5 19 | 2DZWRCXEC9v+tL2ye24CehTjk5aCRzIu+pufI7zUykTAKbrxGsGYmamTa4SZtbeu 20 | qogJ3jTmrW3f8Ho975E4F/+q3lNOaNp2DkriTRjEMiO4L47z7Gw61xluqAIL8zzd 21 | St3r 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC/45kTCqwEhGhX 25 | K7eAwOtWEIILUW2x74DuBFc0J/GkxJ2fN+paUOT7Qr9MJXFcQxydfhJYxiG29ncf 26 | 6CzGi860s3MR83Evzayt85O2Xe2pQIdCpFggg44K8YOVAMR7e9b13TsyLug8NjpJ 27 | TBZcnnhJeVcYIzfRC0xIxzFOATEF7y+WbNJ3WAduR6oSUq/E0IhacaMNBTxE6f4i 28 | wvCYwbfZ/fQoVdpnl25bIOQX7w09nuoPUgjrZnSu3tM184CqcgqiSUUaAIBPmU82 29 | iHhiYOcmniECVWSwiUu9B/tDqKSQ1ye68XrAG+gJshSP9cOoYSKjCIn4gYjERsu5 30 | RLGOfrhFAgMBAAECggEBAKPfGrrIQl8ZNII9M1khZ9j4ABbqU2PBxbl+u3ovIo4z 31 | 2ug+OEUpEGQDfJrq3wSLy8Q0BjcJ/YDiupjlDlgAzWZEWeDapa7NVsq3WU5EqNIB 32 | 6YFgGGKr9oIh/t0g6qsJ92nApO0WYf4J0X0HHZG7Q757gYV7jg9YNq1wbwrOua72 33 | OktQYOE1FYUPmIlRxjILwKntvnGVIfZAygxaHVk8kTH+kUs5h3ft+ZBPVi/fiRaI 34 | HgqeK3s4rgz3TiVMfu5N/EZ25ZBTlDaJ1pIJjQMqFnZr/odXXsVpuLsZyp3OdpVg 35 | 5nBLxvmR6aZcIGAq7GEH55kLGn39wTbf29rOaYZdS4ECgYEA5PA8wq6QbA0KY1IS 36 | LtNcD1CJLaJxouSRfMvRHLnb9MGeOb+DWd7sMsc+CakdKZ29yr9GXzll1TF9pquY 37 | aPVuFZUf0Iluoyq8ZB6oWKc6A/cWgSIMZAbkP0kakTQS1CYHBgvaJLBLMitSwepH 38 | SXZ/TbD3PzVDPBrP0KWtse6et0cCgYEA1pI7ka4KP1cd0WUpvtcGwa9iyP8NSf35 39 | Ei9n5z/SZMRJLBf6FSpPFh1uwKztcFS2lML2fA7tjXXj53g7BLPuifY9mWqxBQ56 40 | NJbsbF7VY4ycBTi9C6ez/J9182TNx8ONQonUfD1eYZhhokoArfR16wsC28Xp2RUK 41 | lO9jv9va8hMCgYB9Wj0qq8JQJ2PEti9WjEwf5oz1+7gU5On0VvUMsYeKIGmuXPpi 42 | vvi9ZPLG/14EZ2aAGPNDOH5VmV+fXt14usmn75sX5+g4VzIH7/FleUr+2M/trOLz 43 | 8gIP1MtDLiwRFTFLUjoDVLQXqDkMDGc0Bjn2JCt85IEH6/ZV3CGbB3jICQKBgQDG 44 | Fh30MW24Z95ZL0FIsw3DxPw3fm5wPoyv4x/S9rJu4F6E3GW9IF/+lJFoQry4lRwx 45 | XYNbqBRaIdmSGQazIsE2kCLx/PMLLgBXiHUe3rW0v1xR3b14gwvATh3/4rGul7NT 46 | GBcX0zfMdXa88gCKl0I9CN9MsPtfsvMf55h4yKjqDQKBgFLCxyg4ZPzyYjfX4a7d 47 | vcDl/ugHYZ/p3PYnhI/8brk4UrzZgiDxMvylkjGlLqeOxvvyI4UlW5Ebu//8tP/Z 48 | pcPPHfFq6OAzN0+e5D6aVp/GgL+nXBsDd231mSgxzGmlaVuzd+h/1rO+FXmvxg5z 49 | UTv0/juloJNwHOCsik50SkIQ 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.twimg.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDjTCCAnWgAwIBAgIRANl+rmjhgSTUNOfeqJdco/wwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzAzMjcwODA4NTRaFw0yMzAzMjcwODA4NTRa 6 | MHYxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEUMBIGA1UEAxQLKi50d2ltZy5j 8 | b20xFDASBgNVBAoUCyoudHdpbWcuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A 9 | MIIBCgKCAQEAz6HKCXXrIw8QWE/NeAfC1NTSuggeU34qbXL6EX4NdTtmku+YADaO 10 | KG00cqj5QRdt2XsZGUBqX502nCKUh6wFZKrtXfCpiccb3lP5ROCXBPELTkuago8W 11 | nTSmN9LS6kUxffeh0apDUArYpCHcKTGlvUNBdN67hd0et8fklkEqqwcpMxG7rTCN 12 | tuHXyYBb60NG2dbyt7GFCysJT7g91rHwGsOenFmCUN9C2eNWfu1yUJb49ZmEsvDe 13 | RF69Ar8CrQLsnfqCKjleFLS8TsWXlVsG73qcgkR+WHVDGQWimSXRYr4ufgpp9Ln6 14 | TX9jP+5Vq+DkQqPH5DsLGL2lVEI8NoKnCwIDAQABox0wGzAZBgNVHREBAf8EDzAN 15 | ggsqLnR3aW1nLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAnFvlZWqVAn99K0R4nK7u 16 | k91Msk+FJ88nOmsJfMvcbQQLctV1OEirHpOgq5LHLMdSh/bJ3Heh17tsytP6yPA9 17 | DwvAsuxDy+RyBTp6bi9q1ktS2gbabSKN9zaMLp9Ni1YRbpCYayOagGeAVWMa4WYu 18 | xxbAiehWrcuNNrRI10agzfPwCCF4iyQv09Fwq67Y3hO2UBPtv7jdLBKQk71i0A62 19 | 3lSEN6wNPtS6v5i25rKtQUVYLCPBNEV5FuYG9fEzNDWJ9IzBIdrwyHDrOmo4d4oV 20 | 6PbenPALhQ351SS10qT2ovok7IDBzoR+a0l79l3uYOSQX/oUAjqJlVEs4qyqV6kH 21 | kg== 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPocoJdesjDxBY 25 | T814B8LU1NK6CB5TfiptcvoRfg11O2aS75gANo4obTRyqPlBF23ZexkZQGpfnTac 26 | IpSHrAVkqu1d8KmJxxveU/lE4JcE8QtOS5qCjxadNKY30tLqRTF996HRqkNQCtik 27 | IdwpMaW9Q0F03ruF3R63x+SWQSqrBykzEbutMI224dfJgFvrQ0bZ1vK3sYULKwlP 28 | uD3WsfAaw56cWYJQ30LZ41Z+7XJQlvj1mYSy8N5EXr0CvwKtAuyd+oIqOV4UtLxO 29 | xZeVWwbvepyCRH5YdUMZBaKZJdFivi5+Cmn0ufpNf2M/7lWr4ORCo8fkOwsYvaVU 30 | Qjw2gqcLAgMBAAECggEAQCsCI5ZbywP2yzQuje/oGJqFXZTwumD9f8HO4uUQB7EJ 31 | 7FM7qKUzne7SDLWIAsPY4SOYCCPOPCp8HBjbymoxaIEixqt/2eK9DCLroIvAYHiW 32 | Q+Y9pCfQl1kUHaB8Koaj2whS7FcwYmZXubH1No3vaOSGMDY9wgsqWSXf0UfmheAs 33 | IFNJgUnc8k5vYsU7XPhKNOqGzVpuPwQuwfJoujWd3fI0LV+k3+P5XnXta5Go8nZq 34 | EYcSP9bUdTY0sv2/uIU9F3yQGAukuLGzxhtoAyKHjaE3wTjk7wD0TFi1xSPgLP8K 35 | uD5RvIJ1kYXSkSI5adN61llxhRq0MMy//0KFHHEugQKBgQDsiahDkbB9I02hvgsB 36 | k8Wz5KQBMB9ZlJUbR0nWFCO+QehPujot+Qb1gm5KCaEiFaFMuUmdWqYBI9tbpAng 37 | YYIv+xd1E3Bp8W0yjL8ti7xui837Dj6hKGXDLy15q88bqxnaSkjlklbSQU9D3V07 38 | GH+CjohcLKiun9uoCfqDC7nc4QKBgQDgt0Wzm1gLkbDbJtPk/onLUIxB8YZYI1ym 39 | itsfIC8yB5JAGbaLiHIVV97eLcUw24onmP7jMAjhxx5Q8uMbfdI3QV11B0RbGECh 40 | jD3mZzh8IB6FKRZ+34xpbIyTBlgVYx50hIjKmUpuwMneOqQuuO8C4mOrcDtPNP8z 41 | qkIBbXD1awKBgQC5FpZ2GQBzSzaqA511JH6lX5n92/wMCroKWGQsgiHd9JCmImD4 42 | LE8HuYI3qQVPOIG5GZvC53XSmo5BTUD1NRe8F8ypLgbev63kykGmkBtonTkW5HSZ 43 | gpTugHIjLQ+o5OAb8djM2w/ZAoXV4tfbMDZGoOWOyttLmYc2HGjMNla/wQKBgGVB 44 | 0DOlbSARbyrhLRwDol2uFvVj+tBeZtJYwXIeE4YsqTcfHwVy301EwhVFdJSWaIN9 45 | SmVe8LGkAsIhIDr0EDR7zLv+IUwW+pCQ3BelLWupIXeJUyyqWN/sXM+nTSud9Uw1 46 | qFn6hvKvBoePzwmKpZCcKKNIuEDxtYk3T/TKttqvAoGAf+GE+6M6osDFB2cHgBB+ 47 | bkgI7x/hQPWLw+s7wEfDH+ecwUwB9qFJoE1ntJCzf7Cy916nFNTk3aEI71mcG52f 48 | zVUIn7/hvE0qz6qc+KCAu4VJRNFszm/UtXhxgCcj+lDKCrExryuACFpUkBWmsbYf 49 | lxgRrAimY6qP9ommYlxF/34= 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.gstatic.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDkjCCAnqgAwIBAgIQdIFH4J1JrdPpPA7GgzHWxDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MDg1M1oXDTIzMDMyNzA4MDg1M1ow 6 | ejELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRYwFAYDVQQDFA0qLmdzdGF0aWMu 8 | Y29tMRYwFAYDVQQKFA0qLmdzdGF0aWMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC 9 | AQ8AMIIBCgKCAQEAyLcVcelzgZ+dWUuS/VQSBNV05cvsqXJIi8b/wBttcpfA7ZOd 10 | PaiDPwvqp7UsdJ2QZumoqYHXHjOzo/0injnf7+2ApXGIKntLPakY4SZhl3LjMJIM 11 | p0H8a+6jaFr/NdCh3QIdshABMnPVVkOPdPf1J7wJIVTKyTAG3u6jmx6occ60r1Pl 12 | FUektp/5efLWh1sTU3/+ynVEToq72QN3leHLzpUuDMiHFej5IJxqk4paf9DOV2MI 13 | BnDCDZbZnE49+9YDxTrDPJgrUaxfoCJZWuKKAxGM9w7t2hkQycugSOz8UhCZsr5U 14 | /9Ny0zpCD2xN70jPiEhPTjb8ikHM7eZ4ehUBTwIDAQABox8wHTAbBgNVHREBAf8E 15 | ETAPgg0qLmdzdGF0aWMuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQAofhEa64AfNuuL 16 | bRQpKVzNkaF2hzE5W6alJD/lV0ZnsUav5lhwdT+i81qQB9U2FNfIR/vlCJQ9fWkP 17 | uXg4zE6qsBAnHJ5gc1PZMgpt65MA9q90sAY60Wf3NVsFIOUP4drXc6yB6yWsm1Uw 18 | G3UFWcUoXKSc3xSkD8TMLyBERP+xirPvtzm5jKfJJ/h38/f9HQpKclqd3qeyVV7E 19 | t1Z4EUwuo0k8+noza/cyAR3zV7OYgBILkk4/J9niCyP5FcoRtxSJdvo+f3eVlv6C 20 | kk1KMUbPHkHqycDJn/nbhUQy+TN+d+s2+xJ+Hk3J8UgAPbvnYqvSqJtLtJHEK3yk 21 | URZ2a+WS 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDItxVx6XOBn51Z 25 | S5L9VBIE1XTly+ypckiLxv/AG21yl8Dtk509qIM/C+qntSx0nZBm6aipgdceM7Oj 26 | /SKeOd/v7YClcYgqe0s9qRjhJmGXcuMwkgynQfxr7qNoWv810KHdAh2yEAEyc9VW 27 | Q4909/UnvAkhVMrJMAbe7qObHqhxzrSvU+UVR6S2n/l58taHWxNTf/7KdUROirvZ 28 | A3eV4cvOlS4MyIcV6PkgnGqTilp/0M5XYwgGcMINltmcTj371gPFOsM8mCtRrF+g 29 | Illa4ooDEYz3Du3aGRDJy6BI7PxSEJmyvlT/03LTOkIPbE3vSM+ISE9ONvyKQczt 30 | 5nh6FQFPAgMBAAECggEABjxJ2kQaZoiC5udGJcCa3rOS8iCntYvrXQxNnbY8bDby 31 | s27Gj8fQbAD+xT8HpofOmKPhrYJvIG0Sw6F1ldzObDHAsWMZi9hQuhWqxDPhDEdx 32 | b2zaH8gZA3Fiejd5fj6BCNCsA4AjyWF32zo2FrgtUZKx5eswcZegXwSi6IrHSOHI 33 | 9Jgp9BslxBhTmT+Gcq5O5bvKiZyiS3KU/lhZC9sP1YnWRoYK0IjS01TgFtitRv0S 34 | Yo9rObIw+PVJxhD3wGVGqdswsW4cm9eQnV54dstGBr6uZt9iPaUyAG+NiRIcQtPc 35 | kkPRI29e/CJu6Q5eBzGX2E8/tae+sv5xXKAJ6t/boQKBgQDzS9UhcdwM+4mNXWv/ 36 | 6nDE8SIHF8XibLaXpAm0eZ3Pxe6AZNXTttO0jdQ4YSj2uR6N8HzLhfZIbg3s4LK4 37 | V2sQSfFhvPHiiuRDMltziqeO0auwLnFZsfSOshqanKagX/zhO+dxOU6hd7FAam1F 38 | 7L+oXsY9yUFJKrOsur+hQZYDBQKBgQDTMhDNKRDTrT6yU3VF/WLQpGsClh8MXvPF 39 | iU1T7vya47nQUGU0TgdEDQkmKTsmdW0s1VIlOeNBZmroSZjHW1x746qhzD9tPvbT 40 | 4xQe/YdTdTTuscInZBBvR0anCl7WCzV+W6GnA0+0P7Hdfx1SwLKD99SMoLDAm8Pl 41 | eOKfh70LQwKBgQDyKfjqYTp2cahoXSSyhdfZL2p/RNpilXLpXQ2L5cF+nbTXd4ae 42 | RMxUWxdxRsRPT9Np1IVizuRlE6YosT8y3VBj1jW84ySgKT8q42TDjK9bKLeLla6d 43 | aNPTdNOmMWZpGyHJzqZ/vFrXvRtg0o4Rm6TpIeyQc1HYUfilZPx4tZ9rQQKBgH4L 44 | 4W8w1TQgr8yqdtGg2vr/Rkay5jDx8rewrJAtkGG5DEtB0EUZVMjOpuk5rm3To6cg 45 | YfiJxhJgV+nvEtnYsyfVxx7t0eUXsSTg4D9mvP+YclELkn8D/7MKbSaAz/0bj3+s 46 | nJwbI9TGNxelKBEdpO2SWi7cMOGjlZU9QrRHxRIVAoGBAPJ2cVCdyk2tMtacVyqp 47 | /VIYTS2KDcFl/wQK3q8aqxmbLm1koSPkYstviwwIgrwRqwWLUHosXyAMRl4kxscb 48 | 2kIe/Ju/GtKuIUwPkjzhLL7mUIYJ/En+EGD48ljGVWTqdR5Xzm9MXtdLwm/Vx8Ti 49 | S0pEweAnojDR/CK5Li1NoPBB 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.twitter.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDkjCCAnqgAwIBAgIQK8nf2zEjZtHWStVG3HG3eTANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MTQyM1oXDTIzMDMyNzA4MTQyM1ow 6 | ejELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRYwFAYDVQQDFA0qLnR3aXR0ZXIu 8 | Y29tMRYwFAYDVQQKFA0qLnR3aXR0ZXIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC 9 | AQ8AMIIBCgKCAQEAu/QgJNMTdLtg6UTSti9asMUMIzppTff1PkUjl2ljau5Qj/c4 10 | qjdAyJCtEyik3ieB7fEy75yQG+CYSiNC3C9ZWE7xl6esp4ujK28rtJLhuiOsEs7E 11 | cIRb45uoYqA7YDGouNiZ/Sr33cQEVwThCEPNKp4qOTKegGcJFSzAtTcPhOmKo2CF 12 | aWGyTxDYs9JMnW5AsGIhkaILgC66u1dpNxlmn/mj9opjzM8vDMjR6iJodxFPZOWZ 13 | xiFxUp5brfXM84vbFaj+ORFGspMwR7INgkqzW+e1vIq9x/TJCL2EkId2NVXfA19b 14 | dDAad/vHl7l8qBCvUmAGWHFoAJYLeVVmSSMoPQIDAQABox8wHTAbBgNVHREBAf8E 15 | ETAPgg0qLnR3aXR0ZXIuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQCbP8wdLdPuocBV 16 | xYRVh8QX7BN8GQt2+F+7RaIllALA/710p1jiGFpC8CwLbs3I0zvsn4fzF7rS7SvH 17 | mI4f7Cni2Xhh8DS0+4iI43iN/VQ5Bl9mIxaKfJGsNOjFxwSFrA+VGPxgmYiK34Ll 18 | QT6KbCX/PjxiEQAXZW6F5iPfI59+Ot9FiVvnTN8ykoYR2ubAfjqgPVPfNkIZbjvp 19 | mM9qvoC860E+J0l9q0UwUgTMB1LoHh88tJBjTONK+GUdXV3jfUL06988YJEWFAA5 20 | vmAd6wS78fpoeEyMlUc4sFyTtUoawoIlP5yD0yCefP9R81BgHJJuTsiqOQixUvCV 21 | 4Yz313wa 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC79CAk0xN0u2Dp 25 | RNK2L1qwxQwjOmlN9/U+RSOXaWNq7lCP9ziqN0DIkK0TKKTeJ4Ht8TLvnJAb4JhK 26 | I0LcL1lYTvGXp6yni6Mrbyu0kuG6I6wSzsRwhFvjm6hioDtgMai42Jn9KvfdxARX 27 | BOEIQ80qnio5Mp6AZwkVLMC1Nw+E6YqjYIVpYbJPENiz0kydbkCwYiGRoguALrq7 28 | V2k3GWaf+aP2imPMzy8MyNHqImh3EU9k5ZnGIXFSnlut9czzi9sVqP45EUaykzBH 29 | sg2CSrNb57W8ir3H9MkIvYSQh3Y1Vd8DX1t0MBp3+8eXuXyoEK9SYAZYcWgAlgt5 30 | VWZJIyg9AgMBAAECggEAdOg4Ri90XptegDnqxp9VzbYDAraGYZTl2kGvDbLjv9NU 31 | EPg5KscLaLV0sgIJ6pSwYIwyno/Ho09j6llccRCShjc0VpxY7C4S5CVWDg9+kAU4 32 | NsqdrU7myQA9EHuR8xdwVumDftGHM02FVYsXXciuiN+wa7tsk3mDUMRxaUZCROzd 33 | 1E80Be9RWzElgMtjS0eBwUfhBiW54xb8ymNirUr5k3wRSslR+UGr4oyA7ifPkY5T 34 | 7Os30P7CzGdmOOOGNNzekCrXSUGRvoHyLzYo6w73fJX7dbxzri24YeXjpj9X91rT 35 | NckcNAKXj9R2mWdc85KQoRpSGldjPKbHEz3o6lClEQKBgQDkGk7nUMEz6F95+CbE 36 | rlphXYPNXLi5cKiBkqSpiQH9C1vBqnktXRzCXtRBc1IH6cH1SXyVmosGLND/d4F0 37 | ISJNM/GZC+YR2cB24lRV3n/gM8/caQL2plN/w9sDV93C4Mxie3eSGOtWd7FJ/9Yh 38 | B1+vIE2nAcQ1PF40NWOIPyOIPwKBgQDS8MidvMQ4GVtt8Zj3c2sbu5wFsX2Hj8Ho 39 | 3b0KlZBStKjoKEeX1hbSpBsTrOSjadQNfsQY9+ybdYUZFvfIE64vrKdYyqRXo1Gt 40 | aAbTY9ZDfznWFmnZzeVFQJMwyRxChggNEZZVmHgQU4OZQ5j2UxkfbA5IZlEsT3Jf 41 | Z3vTlm+QgwKBgApwJcIyENVGQfA76dJARESGWfywzIc3344mXsCfU2b3+RfwrCDm 42 | TOWcH0xrcYqJKOYHmdriuo/qxxmZp2PgDEjKIrklMT8J3uPR0ZgoWWOyG0XzzD3r 43 | OJD1LnWFtNExJkkvazZVS5emXIeNXIggZUGHUeZdj1P8UjdDZi2a7g5TAoGAHsOL 44 | HqYnH99i3Df+DSjCGDtWV+Y43opyx1l/dom1kLpUX/dv6Y8JqRLR+B6hAcwvZwBz 45 | 7QhLc6jCDpSw8nccUkul5Gc5bKafBOFFDZNj7lghwT1nlqJWq7DtRpIuEu2lQvKr 46 | sDQaXpcvfCzFpDceVNzXgGubrxCvJ4baIlOwVa0CgYEAhk8Gg/cBYtLta1GBwwKH 47 | ASEkNAsa5C2s++UGK0OCauEXMIfbzb8EnRlPMvvi7fXJPxWHl8DEZvp9fOAknGu7 48 | KZs/JTKyid9e/oxRT9NIW+xvtiUEl8jHqDu9r63Br1KuNPPkFfM1hBT+cgrnzZye 49 | bf5UEAkRDKk6Sv7sziTBA/c= 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.facebook.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDlTCCAn2gAwIBAgIQWVQY4py0Lwuql/vut4i/EzANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MTQyM1oXDTIzMDMyNzA4MTQyM1ow 6 | fDELMAkGA1UEBhMCQ04xETAPBgNVBAgTCEludGVybmV0MQ8wDQYDVQQHEwZDZXJu 7 | ZXQxFzAVBgNVBAsTDkdvQWdlbnQgQnJhbmNoMRcwFQYDVQQDFA4qLmZhY2Vib29r 8 | LmNvbTEXMBUGA1UEChQOKi5mYWNlYm9vay5jb20wggEiMA0GCSqGSIb3DQEBAQUA 9 | A4IBDwAwggEKAoIBAQDcuabC8BMMSQ6jz+DKe1vZpEpjQV7tOcWfJJAx/508fUeA 10 | VHf7p0XO2ZZ9rFX0BYykZsZ7CCxCu/jdXNTVfipBQUJBe+zxTNhqhb9jZKNhgwrC 11 | i8fW79rfUEclTX7hrEkDznuZm9TgHVwZCmSua1puY9VzyJEza8zbM7NSOjv63ATv 12 | QNVk4j7KHrzn6gXusOq4e+9BSiYz2pPh+hrnR/AbZVKu7RKSO8ckMUb34X2f/VU7 13 | W9IYtnUfP65dNXYUI02ciToZCic84QjKesZLF+qH2s1pf73ndKlyiJdC3CPcH+3H 14 | OL9AEeeCL55HZVMKvJb7E7Kz5zEqyqLm5379kfvzAgMBAAGjIDAeMBwGA1UdEQEB 15 | /wQSMBCCDiouZmFjZWJvb2suY29tMA0GCSqGSIb3DQEBBQUAA4IBAQAuSKPmDrrr 16 | nMIfeAmj5Hrzu83FXdEm49XfM/MAhJNz6EOIog9K/foaN6F4lPL93LFSFCTFCi4X 17 | uPU32EF6fDryKgV/+5PNvFf8M2L/cu7FV3rnogckcmcBM+uhdUDPL/VXfVUQkSxW 18 | KVKQ411fHGoJMUKPBaBajw9FlGG2/N8nagdDGqkN3CoK+LUuae8OsKJB1mSmY1Ah 19 | JyB40FH8OkhUoV1gOPzfYVKDrwcMjM7DzZjmsnw/66990vGr5qK10GHUgsAaRYNk 20 | k646oNyjgglCWgkDqBGIGC0usVgq2Z27uJzMqPU7X5v371HH/HXw4KoxOWgNXk3c 21 | 7g0lCfTvkkqn 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDcuabC8BMMSQ6j 25 | z+DKe1vZpEpjQV7tOcWfJJAx/508fUeAVHf7p0XO2ZZ9rFX0BYykZsZ7CCxCu/jd 26 | XNTVfipBQUJBe+zxTNhqhb9jZKNhgwrCi8fW79rfUEclTX7hrEkDznuZm9TgHVwZ 27 | CmSua1puY9VzyJEza8zbM7NSOjv63ATvQNVk4j7KHrzn6gXusOq4e+9BSiYz2pPh 28 | +hrnR/AbZVKu7RKSO8ckMUb34X2f/VU7W9IYtnUfP65dNXYUI02ciToZCic84QjK 29 | esZLF+qH2s1pf73ndKlyiJdC3CPcH+3HOL9AEeeCL55HZVMKvJb7E7Kz5zEqyqLm 30 | 5379kfvzAgMBAAECggEBAMOVXkduI/LG6coN8cp59LGt+pxo2IysnIigBYXIUrO+ 31 | 7xSvxIGhfyIDfG5vvtoz8KPczhNG8rFPjv3XvGBRI3AfO257OUG4Lix1x1lzW7KU 32 | Q3yQD8xNTUyD/gb33G5sE2bkGHHMu5y7Z1ho9T34snEO1Z17I+7Enwm9jjBWmb92 33 | gPePfeh2VFk17DAWFAwcYtfIZKbQF2/Zd+xjDjQ1Y747ScGBQ56wYCRmk/PfJQ5V 34 | m9wm+J09256IC4ksPZ5YJpq5ouLficaSaT7SKOd+ShmDL/KfkWcLagU0m1Rsl+wt 35 | vykCdadBU67R5oJTyDAq2CaLFo+CacX51KLg2bmAUIECgYEA9sezM4ORgllip/EU 36 | j48Qa4YpxmgygRoK6V7sNatZIUuW7lN05wdiR5WjUVwt4wj0uT70tzfhU+tfe7BW 37 | piV+08wy5XhGsNCG0yICkHId3+B+N3tNWYrvePREgcbFgnBHJBYJoruqldZXnjdM 38 | xZqeDPsjyi44L8g4+4gJBXyDWrkCgYEA5PjAo5K5CIwyhLuTdd7C0NsFnI+lfqkY 39 | YwAzwqQPJcNchC6Pz7VdDDbRJAIaHqOcrxe4y+7gGAOUZqcfdg/EguZgtaBdannp 40 | W35hrRyfHg0eH0SjKCHZygqG8mzahGS7tqdWZ3yCJNjItNIWUdHvdPCC6X+K/hqA 41 | 5AIhCaDSxgsCgYB/Urd1i5tGioGpLmwySVjqcRUapeXw0BPzJiNu6VIaKJrdqbd1 42 | /0xIrL7PmmSeb597+CxgX3dlSdpAwdFi9ZODCSb1V+H5Fg2J31E9X3Nkb7oPPBHD 43 | cjhtynGSF5EN5In/51LfYD36AtW/7r4wcb676dMkXEZm+MHVnPEyoHRRGQKBgGDP 44 | H7vJJDyN8ioWmNFEPwBJKkU4otM7sVjiVAAel1zzDaHBggJi/xVT8/cSgHKl4HBT 45 | SknHFK5yjQMd8/pZzk8+EnOYewayxsxtUeT8bfYpu6uivI0SSt/WtZm4FmfVo1wl 46 | wi19AhWMJsf074TmiyTZL7CDwYOQNyCwGcHVYmhjAoGBAIR7WLMQ5P+/b4s43/CZ 47 | faT9xmoF4JzbmV07FeQwuDxFH6J42jkgGlqneyx+BrXNRLb/dUcSGS77uv4wdIkL 48 | ZqOk13SewmAjIbgcCWw4REGuBMRtfScWtrLJOQRHTW4On3MrPZ/v05FMqqtgumq/ 49 | h1ZOwDPpxNx2CzBgFOWgoQvn 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.akamaihd.net.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDljCCAn6gAwIBAgIRANLJhaqL/O06hYlPIASky/swDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzAzMjcwODE0MjNaFw0yMzAzMjcwODE0MjNa 6 | MHwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEXMBUGA1UEAxQOKi5ha2FtYWlo 8 | ZC5uZXQxFzAVBgNVBAoUDiouYWthbWFpaGQubmV0MIIBIjANBgkqhkiG9w0BAQEF 9 | AAOCAQ8AMIIBCgKCAQEAux1gDKAsa8L2o1EgNymPd+t3Dw69F0ayXd0H77qcx392 10 | eN+OVH4XpSKjWAAukQeCB35k26dqn18zsZxJ5rYJUOMHl1T7xPTbRcaP/C4hKZTz 11 | wyULfVf9ME7sC+zyluib4sFnTUQfH0/YZghLOL812m949U6P9nLgDv8K7qLXF9mv 12 | KIcRRmDfbPPYqoTv19oQ2P4hTMkN2/oMj1qzTOjW6WQqLU1XMvj0ZarwGavv1Bj2 13 | 9oGXHuEAkoT1zwb6JeLSBqUrW7D/eeogg+8lv4s9pMuXeDsbcwLB/8znRYPPDrZg 14 | 1dtP7Z3EP+BznlVOnNRMzZvY66D5E4prVWej8ltaIQIDAQABoyAwHjAcBgNVHREB 15 | Af8EEjAQgg4qLmFrYW1haWhkLm5ldDANBgkqhkiG9w0BAQUFAAOCAQEAMVTsy8zp 16 | LiHnRejKr7aPd90N4dJyNkCqpAND9ATwNYd0m7mJLFsAo5pOvCF6d3iuGgBl9iwi 17 | jR+T3LZiDAIQKlqj7UlTrwn2S58taQyFwRva0oXUhgINWjGWmfo28je8pQScksVD 18 | Ria24lHWsGF5yVdWaqXiXE4kdrGaMbg52rT6lpr2cuvpAdq5bCsBBOOBQ/wtQwmh 19 | ndVxGKkfqyWWWnl1o0URgJhly6TjLnm3IgGLwXN3JzwFieCo1qf8TqZwh6PkuuO1 20 | o7MKSDX4TGVKJUluusSBS9luUT8EfpujwpDFGLjuL7GkAs1ccyi4eh/2Cb3K7xJP 21 | i6PbuVJML+b+mQ== 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7HWAMoCxrwvaj 25 | USA3KY9363cPDr0XRrJd3QfvupzHf3Z4345UfhelIqNYAC6RB4IHfmTbp2qfXzOx 26 | nEnmtglQ4weXVPvE9NtFxo/8LiEplPPDJQt9V/0wTuwL7PKW6JviwWdNRB8fT9hm 27 | CEs4vzXab3j1To/2cuAO/wruotcX2a8ohxFGYN9s89iqhO/X2hDY/iFMyQ3b+gyP 28 | WrNM6NbpZCotTVcy+PRlqvAZq+/UGPb2gZce4QCShPXPBvol4tIGpStbsP956iCD 29 | 7yW/iz2ky5d4OxtzAsH/zOdFg88OtmDV20/tncQ/4HOeVU6c1EzNm9jroPkTimtV 30 | Z6PyW1ohAgMBAAECggEAQbulFWpjkIvSNzd1uMs54mfu0HReC0JDwOO4OQh2sULe 31 | 7MGkb5xIVDPh7DVMJpjbniRR7DRZKZm5QEjmUU1b4nWPIiOxutRF/7IsvOu7rK7u 32 | H3zxF1yEzqa7F8lqw4b91GAbGTK4ODjFjbqWKl5J3e3RMWQjAPIEMmB4h7LfGzo8 33 | GqTrUdWiWErr7oGV95708BU0ATIk4B6T/a3lRuya8ZXw2JkS70KjSKKehXY8pDhQ 34 | nHPpjPMTpvryqmxnO3yQieNHoE/7M2lXcVrJhvVzH7cgG2MWxBqgTp2FBbwmLS/+ 35 | rlkvWI29mTIDHxWzHI9muuZr5cg0wwTXaUVYOXJrUQKBgQD1hbTJFCeySIa6JrGj 36 | rXkhSKhM2Z7UjNcDD6ofXvAgjBf/7onotnU83Pb6gsZ2mmmMDMDxD8IT/GKfFDlz 37 | 6GTNpwyB8dYQcfUiiVJu7C9+BucPdrZZfSzywK34m3aO6gU9dCNcJb1tlhxg/EpE 38 | 58UrleeIfyj43NrUuUfkKzyZbQKBgQDDGZNQUObsvXKCc1oXetxxZHqn9QDnWIFi 39 | Hes7k9b0oWeUmG4yNHGhgOunfIkBEJ9AhInogncxl6Dp9NhKrN2WWpg7yBWr3bVs 40 | soXo5hKMk8hP+yrSq6SL4hCxRY2w1XcE3dKeqlH56usWQb2fgPh0SWHjkDdY2rNA 41 | vskfyMfnBQKBgGnjvaHPgINixkB4ubp28bwKIxPp85eGGqFmWx/miTfwU9V8opvs 42 | PUn/nsFSL5gtZoIRahFNk42dF0e2qES2IOuVNU7B52n2TBwWD6hpUt5Oyc6gi2qz 43 | EvSrZxzGp+5hPdtQQIPYfwdJa3nktX9cWmw+3bm/5gLW9cYzFq9welVNAoGAC7DB 44 | ogNnAvKLJQPydwu2n9jMfLnyluo3voBacxR1wezV/xJvL/TyhiHqfPu6XeT4Fe6b 45 | MOJ4b/FNBBfWygq3sGW3T4W6vrSnRV8hJQZ8QA4u55P+SeddEcC3DVhEmD8CRblh 46 | AH7mMJqCAbBow2EAAj/PbMpcdqeMLCoCdTQbvl0CgYB85OpLISUBTEKn0EmVdp2E 47 | nd2mXKMNfrk063UlTYzdgiQPPc7Ux/HdEKrQYiwLl41mDfayYrZ9/ppSCPodSdol 48 | AqrJcHFfiozD612s0ekjoZTTp+jgDhgELBMMoQCDHAkoBGBU8uiCq7hm9wjAWpjc 49 | MghsCsPPf4Bat3jqLvxqyQ== 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.youtube.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDkzCCAnugAwIBAgIRALqQifZis7zcg9MUnnwC3+4wDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzAzMjcwODE0MjNaFw0yMzAzMjcwODE0MjNa 6 | MHoxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEWMBQGA1UEAxQNKi55b3V0dWJl 8 | LmNvbTEWMBQGA1UEChQNKi55b3V0dWJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD 9 | ggEPADCCAQoCggEBAMZLo1chKiPVZBkDneDYu1cYSud0MGQLDa/2Ji9GlfnCbBhk 10 | 3GtpcK2dbz/dblu9llnBfxHE8x8IMALdeCqVmXBNaD1CKo7aFGQfxRQfuXuQfX3P 11 | /Gmoxb0qx9M8otJWrSCtSglRJ5uzUTfX6/GWgT8UiS03YUmPIrK9x6iJ7j94tURQ 12 | 3BlmvyuIIUvHHwheIbuXZ9NH0QUWVuF8UKGskLeir5+6Unp72/4Sb5NxZcxxq+1a 13 | 7ethDNDRdeDf7KBeCKuDitleFnJosyRYZ0e/GEWPuv1iUGPFsVq8XG0HONLAI9cM 14 | ZEmKXhvjVarDLdyGBHAVUbKQ1FsxEeqP1z42JNUCAwEAAaMfMB0wGwYDVR0RAQH/ 15 | BBEwD4INKi55b3V0dWJlLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAs3K8sd4ASf8L 16 | 4YI61R0uqkVjnGXBigr9zCcn9x5Qi1Nu3n19p4+jrljyv0m6MnvOtmwAym2XDEuR 17 | /0ulvWMBIDfOushwiBM5n0LI8W2Q1B51Sv595W+JebEdie8mZJkXiiJpuPgbufuY 18 | n/waOFuqb1bD6L8e+FUhOSIDgQ7P6SQ6DkWKiATWPVySQHjg7hTGhcJdjsi2yuvD 19 | DLEzl0/dk3j+wkzGpz5INw59AaI0Li55aEDuYx687C1D/aqmm6x/Bhfhm+y9Iezd 20 | DCjmdXpLOrMLGvzUTUxogMsfu8zu9trGSvug6JtAbz60hRAq2rHMx4/XznqsaLmw 21 | NSp7tJE+Vg== 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDGS6NXISoj1WQZ 25 | A53g2LtXGErndDBkCw2v9iYvRpX5wmwYZNxraXCtnW8/3W5bvZZZwX8RxPMfCDAC 26 | 3XgqlZlwTWg9QiqO2hRkH8UUH7l7kH19z/xpqMW9KsfTPKLSVq0grUoJUSebs1E3 27 | 1+vxloE/FIktN2FJjyKyvceoie4/eLVEUNwZZr8riCFLxx8IXiG7l2fTR9EFFlbh 28 | fFChrJC3oq+fulJ6e9v+Em+TcWXMcavtWu3rYQzQ0XXg3+ygXgirg4rZXhZyaLMk 29 | WGdHvxhFj7r9YlBjxbFavFxtBzjSwCPXDGRJil4b41Wqwy3chgRwFVGykNRbMRHq 30 | j9c+NiTVAgMBAAECggEBALcdkjEbxzZgEJeo51qDyjybilBC040PSAx+WrS9kjGa 31 | gQfl3Ea0kAFDqUBo00iUwwsPzLA0F+9IOE3tBtMMYy15zhED0Rkp+jqbu/rhcP/S 32 | ZpCQSJ+p4zDVGMLQ8+sZb7cFT6Fa+CCobxAKrS/jtGb0J9lBku3C6F/3MTFKbmDd 33 | DTOsm4ooAZFsEmS0M8nwROntbNDaD5bHBwNjUhZn43GPMX67C5+x8VI6yINIgMAD 34 | jMet7NdMCZe/mNVhlfsiO2IhWK+rd5JhkH9iLluKCmeDWwq/ezvAYT7w+s3aO5bK 35 | ugElMzWdTQaKcMLGgvxvvAESG8hZddy1EYOWGpIx1OECgYEA+DVyleLpEoG3HZVL 36 | IXb0AaeVDyfQoOXceDshtuiygqMDPnUNRIu8yWTR4o5HYmNF4Xtc6TERrzLFKYZa 37 | Zu07nlwhtG5BOgU8cAPPamXfkWFB8gpyTh6c3zfdcZBpUyyoZD4Ncm+VwsoqDdmS 38 | yBiSWpiBY+Clcvk/Sm7ltP2VaqMCgYEAzIUZBiABkTaIi/vCyCR3XJMrkaFAKYUF 39 | 1UQSkNC5YPuJQ48gvlzwnDVfb2sWB9d4sF/xrnsx0c7fy87aevx/r0qf42if9erI 40 | SVmCq1Zh/TCoDzV9gK7Tn9GlLc1mu0+A0YQ4sPfVh8b7VtqZg6I8UPDdRhCAWhS1 41 | hILFyfZl4icCgYEAufjR8hwiJguq+C90K47FJLg7py9d0jBoEG29xR51Igyh0ZpC 42 | ZqmMuhkgaW/RbJaVNW0JIG/zoCGaOJLCCXyWvwCpAFfb520k64jvT/kkmfkVQBUz 43 | r/Sf9WAWO5DIWdmMEg+sY6HXxCtVdyseH27JubequvsG/C5kjZCp7AJUgaECgYEA 44 | yyZiJu1f4Sg0Figr4LYoQjKFkpCDtTpHAwItFt/dY/I29H6VXcHf1qpFc90A8yUa 45 | 4sdKv6/rWqaNMlr0NjndcvdDPpZMXe+qpwFchGi3yNGt/f15/nqqBxQtaQOgSeq8 46 | 4GDgFxj2Z3pFao6U8mYSV6wJf3EgrVnovAlSAjzYEv0CgYBTyrLmgTNc4RdlGdSZ 47 | nvt8s6pkyVXCDVagG+vAaroEYYZgJKm9yhZNmZtY+9vLl6z8YFEIauTf6YvlLZRT 48 | hyo+TU8oZr7caFXdvm0vb3dzXvuRgFYc8nfN8XDRdKyYyaqyCyU5gUUzPjvqFLlU 49 | RIxK6drhGwrEuo6aJVPbqSK9rw== 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.ak.facebook.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDnzCCAoegAwIBAgIQbhVxQDcKDl9LzN2AOqhnZzANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MTQyMloXDTIzMDMyNzA4MTQyMlow 6 | gYIxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEaMBgGA1UEAxQRKi5hay5mYWNl 8 | Ym9vay5jb20xGjAYBgNVBAoUESouYWsuZmFjZWJvb2suY29tMIIBIjANBgkqhkiG 9 | 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnYuCq+dHZ+y8DxbfZaWUaK5UGcD1dCz+x4+b 10 | 3Yg6w/Wjy0gKpQX3Qx98fKeW7zdiRqk+VNO+fAHJ+A4P6QHAd49Kjb+KgHacTduL 11 | ysMScdf6PzhP9+TKsZpuCERJt6eSc//Bgl1DSFOL09EF/5ogghET4wqDMFbFD6C9 12 | gdrtdmiJpewSnChzEpheqHpcqs0+4Y5Zk73N0B0t7ltnZ7VZoqNqf+DxZKs8PI0m 13 | 30ugKsuLdMcIwglD8B6SpSTNkWisvsiny4IfrCNiAN1pul9IfxRAFqPGp2ySHnbh 14 | iAKLuYc1SnBiO/KWPQcjLBEeIUaj+5cF4ywUarGiWEUOxBfvOwIDAQABoyMwITAf 15 | BgNVHREBAf8EFTATghEqLmFrLmZhY2Vib29rLmNvbTANBgkqhkiG9w0BAQUFAAOC 16 | AQEAXmHkpUzNgkPiKY/LQF9ueuSx1RmD+tLV1y2C9RnBn9+vtDKwhh/krTc+mBja 17 | jbKFCEqykXOdejZzqbsyyYHP15nE1cAc2kdxXVTEDLu2YFfMX2g7h8AZ1KvCjyBN 18 | ViXC6gQyTrEfrBMxZeLYtMP23tddqvoO3ykRjruRJGZIaU7mqiBFuK3G8g7YglGR 19 | SW5brUMWCgdCaHbDzISr8ElDTFO7uHi8kFR/m2H1oDoEMOIjE1Y6WZLYpOi4KLOs 20 | 4KsWrU6Bavl7Awh0NSnk5nB3kiTpPnYtg47UQQy/BAuLrwLBoKPIUjLTspyKnBFh 21 | LMz1VSvkcPV8183TDMiLAJLbfw== 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCdi4Kr50dn7LwP 25 | Ft9lpZRorlQZwPV0LP7Hj5vdiDrD9aPLSAqlBfdDH3x8p5bvN2JGqT5U0758Acn4 26 | Dg/pAcB3j0qNv4qAdpxN24vKwxJx1/o/OE/35Mqxmm4IREm3p5Jz/8GCXUNIU4vT 27 | 0QX/miCCERPjCoMwVsUPoL2B2u12aIml7BKcKHMSmF6oelyqzT7hjlmTvc3QHS3u 28 | W2dntVmio2p/4PFkqzw8jSbfS6Aqy4t0xwjCCUPwHpKlJM2RaKy+yKfLgh+sI2IA 29 | 3Wm6X0h/FEAWo8anbJIeduGIAou5hzVKcGI78pY9ByMsER4hRqP7lwXjLBRqsaJY 30 | RQ7EF+87AgMBAAECggEASKB7yMuBu4MC3uHocm92jxtuYcD2Zmwnt8+YRvP6Q0QG 31 | EjxPy+uIJUVqmfyYNAcQIwr6VRiYA4q/lL7Gzt+j3noMIHRgYQBM5geD1iE/a4Pp 32 | NSO8mca7Oky61MzGPwfdF+SbTIG59qmtGCSP41kmC0/cHxpFiA84IRA0zJwkRCUL 33 | xetzwd81+wywCgS1fqLYg/38xPsEOtmL08A/Pd+qYVSI4dLgb+BoBOw8UlSaZWlj 34 | 4pJtzOU7czKRH78hBQQSpO1lwK8AIDUS874XreHe/khyl6kHgNtJmbA80uW/a56B 35 | 3EM1LSWIQ3/Q4Cv8A2zXFjPWj9Mt3rU+HsAQ8f+bwQKBgQDJacx6pCQeUAtGVkuH 36 | QJp4ydv9nzX18wpDGWPatBAtC8sb6d8SVIAmiwPncBYOYDuRgsof+EiSgFL7k2Sj 37 | aaJlKNIyKndUe8FmwLrtyHFyq6rMhGRnd9rKl03jaE9PzaExA0AIzQP1L6Zc2BFq 38 | /xj+O8+r7Z/fqYvD9LWACr8MkwKBgQDIPhiHjZCvx5QnE2e+2NvX5YvqyuB/yqeN 39 | i41nGHRmGT5gXDhr1bG+6gBFt4fkNDYUNppx05cRjlEHAEJg0yqTBmNfGx8OK33q 40 | xW4j2u+XHvdKJvFjpNGDSpw12kOIx/Rot0RER9RiIve8DvMoTzdJMXe6dS1Sqq8Q 41 | WTRivwljuQKBgHpIVpH7B8azmDTK/a4PBfnhrEOOHufE9+0HBD3q5otCxryawAlT 42 | 7j34VpVz0qBFwsS0YF0Kk50GddsxgH9KCgNaxksYxzwuqpvk1Vi6Qk55dQgYNREw 43 | jlBDjlFLqiNsV7n3HDB7sDRzCpEByYlpeVYZIBtk+JSFTkrZTjx/ycArAoGBAKdF 44 | iAQkM8tC8vW5dh6s1OkC7eCS3PqjdVf+TX7jpMhtKfgg0VjzR+ntW5DhgXkWTF6S 45 | Rm3zjOyzb+hjRQ/RFm1/Fp+p7kVN+3+UsS7ugtpAmd6trVPJqOL9/oPV8jheoEKh 46 | ZTuMrVPVVhEYg/MWSV6xHgz6OYQm5NrJScN7RgKxAoGBAKOHT23K3c5gaLA7GUGN 47 | ktt9PWqSgLkh9bV3gJbLmWEbhMFliTFx9j12RixVytbpJSzOsL3yXF9x0AXE8hN3 48 | MF+kwhmUY2dFKlNUew163GnuvaH3P7X2Lh8PH0p0+yz0v2GrQ7xjSKN6cz+8d384 49 | vfZrnCtywvhD74ff6Z7b3D+7 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.api.twitter.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDoDCCAoigAwIBAgIRAMwSqdEEAcgIpFzw+zAN1RAwDQYJKoZIhvcNAQEFBQAw 3 | bzEVMBMGA1UECxMMR29BZ2VudCBSb290MRAwDgYDVQQKEwdHb0FnZW50MRMwEQYD 4 | VQQDEwpHb0FnZW50IENBMREwDwYDVQQIEwhJbnRlcm5ldDELMAkGA1UEBhMCQ04x 5 | DzANBgNVBAcTBkNlcm5ldDAeFw0xMzAzMjcwODE0MjNaFw0yMzAzMjcwODE0MjNa 6 | MIGCMQswCQYDVQQGEwJDTjERMA8GA1UECBMISW50ZXJuZXQxDzANBgNVBAcTBkNl 7 | cm5ldDEXMBUGA1UECxMOR29BZ2VudCBCcmFuY2gxGjAYBgNVBAMUESouYXBpLnR3 8 | aXR0ZXIuY29tMRowGAYDVQQKFBEqLmFwaS50d2l0dGVyLmNvbTCCASIwDQYJKoZI 9 | hvcNAQEBBQADggEPADCCAQoCggEBALbNHpjCnj1g/bnSa9MZuCcOpA/UXZo9v2db 10 | Or2sbWoNdMOJyieA9kcFQFGB8oHY1J16FVD05Qn1lutqq0YCnqDWTQKezDBPM+b9 11 | Ci+XfWrsvQ+N7CPwb8weaWkqJ0+biVyAYZuAH8FqLHrQkIkDNxvGiTGoYRoZiym8 12 | 7TMamz2tXpxjslXw1czyxmsR6Opy88qCXyriqFCu7GfpPVApcCIxiJvw584YZr9k 13 | H8CFsb7bM+diVzcEF3JUN8mATgIcy/85E+0600o1Femf50pLattkJ1av3nsbNKzn 14 | pwHmt6xWyNnBniHgWgTlOei0j6R6zxKQD5fci7MjbyCYFU0nb7ECAwEAAaMjMCEw 15 | HwYDVR0RAQH/BBUwE4IRKi5hcGkudHdpdHRlci5jb20wDQYJKoZIhvcNAQEFBQAD 16 | ggEBAC6Z21TTXpPkK1FUxJaD2GKaiDIqPXeyWbgmqCJLdzdyfF81fGMabWoa0EkA 17 | x/t7RBU2X90kIPv9U0RgubneHAB8yrkA+XTu/pePm5QYiOxhnB8sy+FsrS/mjI6Q 18 | 4MOktsaNPbrSzKOfQ2a72WdddoJMkbWrzLkEbH1dpiln/hDuT4ofJr/fGcWwtq6s 19 | zaXFXF1giF2kuM4l8SvusT6milAFTapR/J3hGp+VkIjB04iQKF8Nz8PhYh2nVj7z 20 | kURUzdMxkxz0TeaMHZ4UUYXIy7tJeLjKpOx/8FoHqekD9lI1RX2XCuphesxq9fO3 21 | vsWX3rPpMPFGj/Er5SRnNrBjK+c= 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC2zR6Ywp49YP25 25 | 0mvTGbgnDqQP1F2aPb9nWzq9rG1qDXTDicongPZHBUBRgfKB2NSdehVQ9OUJ9Zbr 26 | aqtGAp6g1k0CnswwTzPm/Qovl31q7L0Pjewj8G/MHmlpKidPm4lcgGGbgB/Baix6 27 | 0JCJAzcbxokxqGEaGYspvO0zGps9rV6cY7JV8NXM8sZrEejqcvPKgl8q4qhQruxn 28 | 6T1QKXAiMYib8OfOGGa/ZB/AhbG+2zPnYlc3BBdyVDfJgE4CHMv/ORPtOtNKNRXp 29 | n+dKS2rbZCdWr957GzSs56cB5resVsjZwZ4h4FoE5TnotI+kes8SkA+X3IuzI28g 30 | mBVNJ2+xAgMBAAECggEAEzcilTo3+gm9AhB9ZxZYBjsCwes336PH/+xWE2QRqEk7 31 | 0eYlCtwCh1qk9Sxsunt5dghEP1tOzCo1sA9pa5WQ6SU9uR3KJvXcZdaJgJEzDM9P 32 | 3Fe1z91RUyqLOBPHSBX4bXHNUNQ6AlHP1SUhXFWrME9BUqf5dQ3kVAHZCTstwGDQ 33 | a5om55EjBzydesZ/9z5fBcPTdFHYLxrzovczUrUlL898LRXZgWzziUydgsQYL+5u 34 | uVdNeoqJrA9y1n5ux35vuDju73pZu/aRFdKObSXcZB5Ncw6xnQ+renEKPdaIa8wy 35 | iUk0YQfkCs7kbsB6ZACcMDBD5i4noPw/jUikqW/28QKBgQDo7DwwfwQ26P2vIjYe 36 | r5j/6CJz4mkuTU95lkkGYTfJ80FTJl3GDuRtWXwsSfs/V0mRjvL1qc5D6uddKjLu 37 | 81BLJhSryS04ZOvRyTPnckhwOqdUEoUTj0F9LcsmrmBmHFMaIEOSuyEZrRoaUOEW 38 | vlToqDvNUkRf7RuOirhQsSWE7QKBgQDI6Z7iulif6sVjHXSkOVo4s2jBUsHFySMS 39 | bVXO4wj9cDRmMWJH3RAwnAsmNdvUnosuVpN4hdCOM7wfHI+U3oTjAJUlfxYR313Q 40 | blLxn0szCeBncyII85tES1PFYBfnkWdMRJguUtsoA413AhvkpayZuSFO7VX1LeZD 41 | mVKiO5bhVQKBgQDhxouZXqWRLEsrBfh7yi5+cF9lASR/U0UkUH68hmPzh63ckaX4 42 | I9tb+4+XxqaaAVw4kd4ELvLXds2JyyvP314HWgRTeBAzR/AmS+faAzcgQlqL7d+8 43 | 0/HhCxCOkBy1HeOXwYp+opE1OEvDEn788sWPN/Ov1Hyel1FM3D5JSU1bCQKBgDgO 44 | 52Q/tma4bObg2yDPV9smQ/5dBvAW1RBZLW4Sbvm4CwbQlKmUhuXpRDsfH/1NV2xQ 45 | f8lLHQvwZ3cO0wkopU9pZDQYJ6JI/rYfckk0txjAkrqKp150Ckid8/vIeiMEsRvY 46 | r9WNDNU3WItyLTI4/9XMj/yjwC4u5mbKKwJVOh4ZAoGAUy9llNH7EQ4IUNkp2rkT 47 | nOK1dPI6mqXn77HgzrAC3M6p6h9dA8t9XkKdPyktpetdP9fXMzGTjJwP/ZHhD0Oe 48 | Y6sd1kS4wkeXXEqIDtzY6gCc33wVfzJq79XeTVtYzqG+J293OHheHDh6lqOaMwyr 49 | YiC0vigdg/RLKdh5g5EIkIw= 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/certs/.googleadservices.com.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDrjCCApagAwIBAgIQZh5Q/eHAI2DzPRMsYYaYiDANBgkqhkiG9w0BAQUFADBv 3 | MRUwEwYDVQQLEwxHb0FnZW50IFJvb3QxEDAOBgNVBAoTB0dvQWdlbnQxEzARBgNV 4 | BAMTCkdvQWdlbnQgQ0ExETAPBgNVBAgTCEludGVybmV0MQswCQYDVQQGEwJDTjEP 5 | MA0GA1UEBxMGQ2VybmV0MB4XDTEzMDMyNzA4MTQyM1oXDTIzMDMyNzA4MTQyM1ow 6 | gYwxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhJbnRlcm5ldDEPMA0GA1UEBxMGQ2Vy 7 | bmV0MRcwFQYDVQQLEw5Hb0FnZW50IEJyYW5jaDEfMB0GA1UEAxQWKi5nb29nbGVh 8 | ZHNlcnZpY2VzLmNvbTEfMB0GA1UEChQWKi5nb29nbGVhZHNlcnZpY2VzLmNvbTCC 9 | ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM8uoCmDokNfjR1XCEzDQUEL 10 | MQAztH8RxL0JrVEe9Pyma0s3NXF+1sPfpVA1mpbiMKFM7TaVKvCHE7jQjtjmCTLY 11 | jQEaLVkmg7jr9y9N+dYF4tZaLOpC2KFQA98maX/WFQtWbEGG/G9eFLH6KaPUPMSq 12 | eFshKnG9Y8KMbTHogbAsGZkDqnfzl72+GOz0dqwyqkNFgtuTkXs33MH0Stxrvx8J 13 | Hs4aNYRAU4fWjYo3fPaekRiB1jybTA9TbuIs/7MPz8ljbEhddV1S0VKSBbstiTvw 14 | OOuigjBMgYWaXsuDAATjmBa+onH2iW5mrosw3sGEB8sg0CtDLP9ET0i3eRQl3LUC 15 | AwEAAaMoMCYwJAYDVR0RAQH/BBowGIIWKi5nb29nbGVhZHNlcnZpY2VzLmNvbTAN 16 | BgkqhkiG9w0BAQUFAAOCAQEAc++hIE4ibsw8QbYRqfV1HCDoNu8it38wPnqWBloy 17 | JuR33xFNLhtUGRUqjrFOUesZonM2sa33VROym544OUqzp0TESfgAq8oOYcvq7VxC 18 | JoSWJpbTpUP4BPaSH5f9DdL6p1WsDFOcvv+vMNwN06aH+f5NSWScI2fBBE4YwgX+ 19 | CDr30Vojg8CBALVrdfnYD0fQx+HpCHS4H45BFtx82/g/LlEuZm30N3PLtrhZ+UIt 20 | fm4GjfIojdTDZoXHleWpNDyZciPw3oE34SE1i8cpKQpZ3hYsxGlcg9A73mKC0lsC 21 | UrWJoBea7gPgE+xsN1goaZoRm+gmBAAt0sVgATgU/fWU8g== 22 | -----END CERTIFICATE----- 23 | -----BEGIN PRIVATE KEY----- 24 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDPLqApg6JDX40d 25 | VwhMw0FBCzEAM7R/EcS9Ca1RHvT8pmtLNzVxftbD36VQNZqW4jChTO02lSrwhxO4 26 | 0I7Y5gky2I0BGi1ZJoO46/cvTfnWBeLWWizqQtihUAPfJml/1hULVmxBhvxvXhSx 27 | +imj1DzEqnhbISpxvWPCjG0x6IGwLBmZA6p385e9vhjs9HasMqpDRYLbk5F7N9zB 28 | 9Erca78fCR7OGjWEQFOH1o2KN3z2npEYgdY8m0wPU27iLP+zD8/JY2xIXXVdUtFS 29 | kgW7LYk78DjrooIwTIGFml7LgwAE45gWvqJx9oluZq6LMN7BhAfLINArQyz/RE9I 30 | t3kUJdy1AgMBAAECggEAcYGo67Wbc2/o/vcMrAmZOYppGSQ6shdJAwxHMRdVvwlp 31 | 5PZlSD3mab+gcTY88IcRf32GxI2qzcYjTvCsIja9OWccsUrnJ12LcweMEBWXV+M3 32 | qJoU228uAgq1ZE9GI2xlcSWy/591s4oGqo9UutXvSQvgDoU4HMJW4mJO/LXWP26d 33 | DYAWBRcq5644vPFmRk1zfYQX/pGPkFgF9tCp01th/O2QWJ2AD/loJXv3zSBQ5nU5 34 | Z7YTpaGveWM3Q7rEy4pKO2mftT2NwtVGNTlPcI1B0Os3ZRuIrOsg9EDRj2sXeVmo 35 | OOLeGxoc/jZ7bUMAbQcMZYIw7QoXVFAv7dn6cxOYDQKBgQDy+t6pOCl7+akNajfl 36 | vNYL8ihyaRVdHgJuExmFNKLGKuNUffjTaNaVkno0VM3V7e5qY4nAfQfZcJyi4dxK 37 | 1otzPzXCrIz0J0B0jmNB8rr/UE6Cre2/91Tj6s1+L5cOAC7GjpGMqXbXRGq7k4CT 38 | rXkmWQlPyxBVULtG8lQ0P/PMMwKBgQDaSLD/TSvIBqrtYrU9/qSnTtPqKXUKqW46 39 | JqAwJAXEU1QEzj7hzPkwKpeKAVPn8HPcjIvM2qOIN0vzRfP4js6veiiQU6+viBZG 40 | woSIdobXl7SBDn4CcESyvC1W6DizJpKRwgyQyCI1KryPOpQcZC3zIYxHiMvZHKy5 41 | JvegUAVLdwKBgE/Apir24y7tIF7l2VkP5VXgcwQyl6+LtRJ6NGszfqX618kY2/5Q 42 | L/bCMFhS6YjpYtMKvuEuaNAnFVKlPdBWoUj/m169kjplU9OuFMhFqrk4m7xq6FmV 43 | DgkNPcvIRRV0W+YST5XS3c4Eh9/vp0lRrC05FkRZi4/lQsMjsR3BS/1fAoGBAJtf 44 | rKU9EBHkNRyd6zaCoD77DDqcYdRB/9Tik5lQus4hJif5iqb9WM5hMtan1Uq+TCpL 45 | 3GLnqgmWmrhCLcPaGuKrCF6bQu2l531cjiv4ekjRkklewHEJ6sxyx68Zwuo6ZY/c 46 | 2UbhPgAsOGWXI8AFyvNKCOkORVN4ZrWwOAjjjLFHAoGBAJRh82eiu963ud8so0y2 47 | 4BKtKJm4oFVU2hF1pdmIPs+uH8/FgcwBzfwz06FFqO38UhsSDretZUBHswBG1vR0 48 | ZToepwlPhlyloXoJfcZgwZyEI5YNxcmXhYsvjrEYeptRWnfscdp7dtx81f94f7gi 49 | iwg5msJX0R3b+M4AcpbM4of3 50 | -----END PRIVATE KEY----- 51 | -------------------------------------------------------------------------------- /local/SwitchyOptions.bak: -------------------------------------------------------------------------------- 1 | eyJjb25maWciOiJ7XCJmaXJzdFRpbWVcIjpcIjpdXCIsXCJwcm94eU1vZGVcIjpcImF1dG9cIixcImF1dG9QYWNTY3JpcHRQYXRoXCI6XCI6bWVtb3J5OlwiLFwicnVsZUxpc3RVcmxcIjpcImh0dHA6Ly9hdXRvcHJveHktZ2Z3bGlzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvZ2Z3bGlzdC50eHRcIixcInJ1bGVMaXN0UmVsb2FkXCI6XCI3MjBcIixcInJ1bGVMaXN0UHJvZmlsZUlkXCI6XCJHb0FnZW50XCIsXCJydWxlTGlzdEF1dG9Qcm94eVwiOnRydWUsXCJzd2l0Y2hSdWxlc1wiOnRydWUsXCJydWxlTGlzdEVuYWJsZWRcIjp0cnVlLFwicGFjU2NyaXB0RGF0YVwiOlwiXCIsXCJwcm94eVNlcnZlclwiOlwiXCIsXCJxdWlja1N3aXRjaFwiOmZhbHNlLFwicXVpY2tTd2l0Y2hUeXBlXCI6XCJiaW5hcnlcIixcInJlYXBwbHlTZWxlY3RlZFByb2ZpbGVcIjp0cnVlLFwiY29uZmlybURlbGV0aW9uXCI6ZmFsc2UsXCJydWxlc0ZpcnN0VGltZVwiOlwiO11cIixcIm1vbml0b3JQcm94eUNoYW5nZXNcIjpmYWxzZSxcInByZXZlbnRQcm94eUNoYW5nZXNcIjpmYWxzZSxcImxhc3RMaXN0VXBkYXRlXCI6XCJTdW4gRGVjIDI5IDIwMTMgMTk6MTQ6NDcgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcIixcInJlZnJlc2hUYWJcIjpmYWxzZSxcInN0YXJ0dXBQcm9maWxlSWRcIjpcIlwiLFwicXVpY2tSdWxlUHJvZmlsZUlkXCI6XCJHb0FnZW50XCIsXCJxdWlja1J1bGVQYXR0ZXJuVHlwZVwiOlwid2lsZGNhcmRcIixcInByb3h5Q29uZmlnVXJsXCI6XCI6bWVtb3J5OlwifSIsImRlZmF1bHRSdWxlIjoie1wiaWRcIjpcImRlZmF1bHRSdWxlXCIsXCJuYW1lXCI6XCJEZWZhdWx0IFJ1bGVcIixcInVybFBhdHRlcm5cIjpcIlwiLFwicGF0dGVyblR5cGVcIjpcIndpbGRjYXJkXCIsXCJwcm9maWxlSWRcIjpcImRpcmVjdFwifSIsInByb2ZpbGVzIjoie1wiR29BZ2VudFwiOntcIm5hbWVcIjpcIkdvQWdlbnRcIixcInByb3h5TW9kZVwiOlwibWFudWFsXCIsXCJwcm94eUh0dHBcIjpcIjEyNy4wLjAuMTo4MDg3XCIsXCJ1c2VTYW1lUHJveHlcIjp0cnVlLFwicHJveHlIdHRwc1wiOlwiXCIsXCJwcm94eUZ0cFwiOlwiXCIsXCJwcm94eVNvY2tzXCI6XCJcIixcInNvY2tzVmVyc2lvblwiOjQsXCJwcm94eUV4Y2VwdGlvbnNcIjpcImxvY2FsaG9zdDsgMTI3LjAuMC4xOyA8bG9jYWw+XCIsXCJwcm94eUNvbmZpZ1VybFwiOlwiXCIsXCJjb2xvclwiOlwiYmx1ZVwiLFwiaWRcIjpcIkdvQWdlbnRcIn0sXCJHb0FnZW50IFBIUFwiOntcIm5hbWVcIjpcIkdvQWdlbnQgUEFDXCIsXCJwcm94eU1vZGVcIjpcImF1dG9cIixcInByb3h5SHR0cFwiOlwiXCIsXCJ1c2VTYW1lUHJveHlcIjp0cnVlLFwicHJveHlIdHRwc1wiOlwiXCIsXCJwcm94eUZ0cFwiOlwiXCIsXCJwcm94eVNvY2tzXCI6XCJcIixcInNvY2tzVmVyc2lvblwiOjUsXCJwcm94eUV4Y2VwdGlvbnNcIjpcImxvY2FsaG9zdDsgMTI3LjAuMC4xOyA8bG9jYWw+XCIsXCJwcm94eUNvbmZpZ1VybFwiOlwiaHR0cDovLzEyNy4wLjAuMTo4MDg2L3Byb3h5LnBhY1wiLFwiY29sb3JcIjpcImJsdWVcIixcImlkXCI6XCJHb0FnZW50IFBIUFwifSxcIkdvQWdlbnQgUEhQMlwiOntcIm5hbWVcIjpcIkdvQWdlbnQgUEhQXCIsXCJwcm94eU1vZGVcIjpcIm1hbnVhbFwiLFwicHJveHlIdHRwXCI6XCIxMjcuMC4wLjE6ODA4OFwiLFwidXNlU2FtZVByb3h5XCI6dHJ1ZSxcInByb3h5SHR0cHNcIjpcIlwiLFwicHJveHlGdHBcIjpcIlwiLFwicHJveHlTb2Nrc1wiOlwiXCIsXCJzb2Nrc1ZlcnNpb25cIjo0LFwicHJveHlFeGNlcHRpb25zXCI6XCJsb2NhbGhvc3Q7IDEyNy4wLjAuMTsgPGxvY2FsPlwiLFwicHJveHlDb25maWdVcmxcIjpcIlwiLFwiY29sb3JcIjpcImJsdWVcIixcImlkXCI6XCJHb0FnZW50IFBIUDJcIn19IiwicXVpY2tTd2l0Y2hQcm9maWxlcyI6IltcImRpcmVjdFwiXSIsInJ1bGVzIjoie1wiTmV3IFJ1bGUzXCI6e1wibmFtZVwiOlwiZ29vZ2xlXCIsXCJ1cmxQYXR0ZXJuXCI6XCIqOi8vKi5nb29nbGUuY29tLiovKlwiLFwicGF0dGVyblR5cGVcIjpcIndpbGRjYXJkXCIsXCJwcm9maWxlSWRcIjpcIkdvQWdlbnRcIixcImlkXCI6XCJOZXcgUnVsZTNcIn0sXCJOZXcgUnVsZTJcIjp7XCJuYW1lXCI6XCJnb29nbGVcIixcInVybFBhdHRlcm5cIjpcIio6Ly8qLmdvb2dsZSouY29tLypcIixcInBhdHRlcm5UeXBlXCI6XCJ3aWxkY2FyZFwiLFwicHJvZmlsZUlkXCI6XCJHb0FnZW50XCIsXCJpZFwiOlwiTmV3IFJ1bGUyXCJ9LFwic2ZcIjp7XCJuYW1lXCI6XCJzb3VyY2Vmb3JnZVwiLFwidXJsUGF0dGVyblwiOlwiKjovLyouc291cmNlZm9yZ2UubmV0LypcIixcInBhdHRlcm5UeXBlXCI6XCJ3aWxkY2FyZFwiLFwicHJvZmlsZUlkXCI6XCJHb0FnZW50XCIsXCJpZFwiOlwic2ZcIn0sXCJzZjJcIjp7XCJuYW1lXCI6XCJzb3VyY2Vmb3JnZVwiLFwidXJsUGF0dGVyblwiOlwiKjovLyouc2YubmV0LypcIixcInBhdHRlcm5UeXBlXCI6XCJ3aWxkY2FyZFwiLFwicHJvZmlsZUlkXCI6XCJHb0FnZW50XCIsXCJpZFwiOlwic2YyXCJ9LFwiTmV3IFJ1bGU4XCI6e1wibmFtZVwiOlwid2lraXBlZGlhXCIsXCJ1cmxQYXR0ZXJuXCI6XCIqOi8vKi53aWtpcGVkaWEub3JnLypcIixcInBhdHRlcm5UeXBlXCI6XCJ3aWxkY2FyZFwiLFwicHJvZmlsZUlkXCI6XCJHb0FnZW50XCIsXCJpZFwiOlwiTmV3IFJ1bGU4XCJ9fSIsInNlbGVjdGVkUHJvZmlsZSI6IntcImlkXCI6XCJhdXRvXCIsXCJuYW1lXCI6XCJb6Ieq5Yqo5YiH5o2iXVwiLFwicHJveHlNb2RlXCI6XCJhdXRvXCIsXCJjb2xvclwiOlwiYXV0by1ibHVlXCIsXCJpc0F1dG9tYXRpY01vZGVQcm9maWxlXCI6dHJ1ZSxcInByb3h5Q29uZmlnVXJsXCI6XCI6bWVtb3J5OlwifSJ9 -------------------------------------------------------------------------------- /server/php/relay.php: -------------------------------------------------------------------------------- 1 | $value) { 11 | if (substr($name, 0, 5) == 'HTTP_') { 12 | $name = join('-', array_map('ucfirst', explode('_', strtolower(substr($name, 5))))); 13 | $headers[$name] = $value; 14 | } else if ($name == "CONTENT_TYPE") { 15 | $headers["Content-Type"] = $value; 16 | } else if ($name == "CONTENT_LENGTH") { 17 | $headers["Content-Length"] = $value; 18 | } 19 | } 20 | return $headers; 21 | } 22 | 23 | 24 | function header_function($ch, $header) { 25 | if (stripos($header, 'Transfer-Encoding:') === false) { 26 | header($header, false); 27 | } 28 | return strlen($header); 29 | } 30 | 31 | 32 | function write_function($ch, $content) { 33 | echo $content; 34 | return strlen($content); 35 | } 36 | 37 | 38 | function main() { 39 | $timeout = $GLOBALS['__timeout__']; 40 | $method = $_SERVER['REQUEST_METHOD'] ; 41 | $url = $GLOBALS['__relay__']; 42 | $host = $GLOBALS['__hosts__'][array_rand($GLOBALS['__hosts__'])]; 43 | $headers = php_getallheaders(); 44 | $body = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : ''; 45 | 46 | $urlparts = parse_url($url); 47 | 48 | if ($body && !isset($headers['Content-Length'])) { 49 | $headers['Content-Length'] = strval(strlen($body)); 50 | } 51 | if (isset($headers['Connection'])) { 52 | $headers['Connection'] = 'close'; 53 | } 54 | $headers['Host'] = $urlparts['host']; 55 | 56 | $header_array = array(); 57 | foreach ($headers as $key => $value) { 58 | $header_array[] = "$key: $value"; 59 | } 60 | 61 | $curl_opt = array(); 62 | 63 | switch (strtoupper($method)) { 64 | case 'HEAD': 65 | $curl_opt[CURLOPT_NOBODY] = true; 66 | break; 67 | case 'GET': 68 | break; 69 | case 'POST': 70 | $curl_opt[CURLOPT_POST] = true; 71 | $curl_opt[CURLOPT_POSTFIELDS] = $body; 72 | break; 73 | default: 74 | $curl_opt[CURLOPT_CUSTOMREQUEST] = $method; 75 | $curl_opt[CURLOPT_POSTFIELDS] = $body; 76 | break; 77 | } 78 | 79 | $curl_opt[CURLOPT_HTTPHEADER] = $header_array; 80 | $curl_opt[CURLOPT_RETURNTRANSFER] = true; 81 | $curl_opt[CURLOPT_BINARYTRANSFER] = true; 82 | 83 | $curl_opt[CURLOPT_HEADER] = false; 84 | $curl_opt[CURLOPT_HEADERFUNCTION] = 'header_function'; 85 | $curl_opt[CURLOPT_WRITEFUNCTION] = 'write_function'; 86 | 87 | $curl_opt[CURLOPT_FAILONERROR] = false; 88 | $curl_opt[CURLOPT_FOLLOWLOCATION] = false; 89 | 90 | $curl_opt[CURLOPT_CONNECTTIMEOUT] = $timeout; 91 | $curl_opt[CURLOPT_TIMEOUT] = $timeout; 92 | 93 | $curl_opt[CURLOPT_SSL_VERIFYPEER] = false; 94 | $curl_opt[CURLOPT_SSL_VERIFYHOST] = false; 95 | 96 | $new_url = preg_replace('@//[^/]+@', "//$host", $url); 97 | if ($_SERVER['QUERY_STRING']) { 98 | $new_url .= '?' . $_SERVER['QUERY_STRING']; 99 | } 100 | 101 | //var_dump(array('new_url' => $new_url, 'headers' => $headers, 'curl_opt' => $curl_opt)); 102 | //exit(0); 103 | 104 | $ch = curl_init($new_url); 105 | curl_setopt_array($ch, $curl_opt); 106 | $ret = curl_exec($ch); 107 | $errno = curl_errno($ch); 108 | 109 | if ($errno) { 110 | if (!headers_sent()) { 111 | header('HTTP/1.1 502 Gateway Error'); 112 | header('Content-Type: text/plain'); 113 | } 114 | echo "502 Urlfetch Error\r\nPHP Urlfetch Error: curl($errno)\r\n" . curl_error($ch); 115 | } 116 | curl_close($ch); 117 | } 118 | 119 | main(); 120 | -------------------------------------------------------------------------------- /local/addto-startup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding:utf-8 3 | 4 | from __future__ import with_statement 5 | 6 | __version__ = '1.0' 7 | 8 | import sys 9 | import os 10 | import re 11 | import time 12 | import ctypes 13 | import platform 14 | 15 | 16 | def addto_startup_linux(): 17 | filename = os.path.abspath(__file__) 18 | dirname = os.path.dirname(filename) 19 | #you can change it to 'proxy.py' if you like :) 20 | scriptname = 'goagent-gtk.py' 21 | DESKTOP_FILE = '''\ 22 | [Desktop Entry] 23 | Type=Application 24 | Categories=Network;Proxy; 25 | Exec=/usr/bin/env python "%s/%s" 26 | Icon=%s/goagent-logo.png 27 | Hidden=false 28 | NoDisplay=false 29 | X-GNOME-Autostart-enabled=true 30 | Name=GoAgent GTK 31 | Comment=GoAgent GTK Launcher 32 | ''' % (dirname , scriptname , dirname) 33 | #sometimes maybe /etc/xdg/autostart , ~/.kde/Autostart/ , ~/.config/openbox/autostart 34 | for dirname in map(os.path.expanduser, ['~/.config/autostart']): 35 | if os.path.isdir(dirname): 36 | filename = os.path.join(dirname, 'goagent-gtk.desktop') 37 | with open(filename, 'w') as fp: 38 | fp.write(DESKTOP_FILE) 39 | # os.chmod(filename, 0755) 40 | 41 | 42 | def addto_startup_osx(): 43 | if os.getuid() != 0: 44 | print 'please use sudo run this script' 45 | sys.exit() 46 | import plistlib 47 | plist = dict( 48 | GroupName = 'wheel', 49 | Label = 'org.goagent.macos', 50 | ProgramArguments = list([ 51 | '/usr/bin/python', 52 | os.path.join(os.path.abspath(os.path.dirname(__file__)), 'proxy.py') 53 | ]), 54 | RunAtLoad = True, 55 | UserName = 'root', 56 | WorkingDirectory = os.path.dirname(__file__), 57 | StandardOutPath = '/var/log/goagent.log', 58 | StandardErrorPath = '/var/log/goagent.log', 59 | KeepAlive = dict( 60 | SuccessfulExit = False, 61 | ) 62 | ) 63 | filename = '/Library/LaunchDaemons/org.goagent.macos.plist' 64 | print 'write plist to %s' % filename 65 | plistlib.writePlist(plist, filename) 66 | print 'write plist to %s done' % filename 67 | print 'Adding CA.crt to system keychain, You may need to input your password...' 68 | cmd = 'sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "%s/CA.crt"' % os.path.abspath(os.path.dirname(__file__)) 69 | if os.system(cmd) != 0: 70 | print 'Adding CA.crt to system keychain Failed!' 71 | sys.exit(0) 72 | print 'Adding CA.crt to system keychain Done' 73 | print 'To start goagent right now, try this command: sudo launchctl load /Library/LaunchDaemons/org.goagent.macos.plist' 74 | print 'To checkout log file: using Console.app to locate /var/log/goagent.log' 75 | 76 | install_sharp_osx() 77 | 78 | 79 | def install_sharp_osx(): 80 | # extracted from SwitchySharp.crx 81 | extension_id = 'dpplabbmogkhghncfbfdeeokoefdjegm' 82 | extension_version = '1.10.2' 83 | extension_path = '%s/SwitchySharp.crx' % os.path.abspath(os.path.dirname(__file__)) 84 | 85 | dest_path = '/Library/Application Support/Google/Chrome/External Extensions' 86 | dest_file = '%s/%s.json' % (dest_path, extension_id) 87 | print 'Installing SwitchySharp for Chrome...' 88 | cmd = 'mkdir -p "%s"' % dest_path 89 | if os.system(cmd) != 0: 90 | print 'Create Chrome External Extensions folder Failed!' 91 | sys.exit(0) 92 | 93 | json_dict = {'external_crx': extension_path, 94 | 'external_version': extension_version} 95 | with open(dest_file, 'w') as fp: 96 | import json 97 | json.dump(json_dict, fp) 98 | print 'Installing SwitchySharp done.' 99 | 100 | 101 | def addto_startup_windows(): 102 | if 1 == ctypes.windll.user32.MessageBoxW(None, u'是否将goagent.exe加入到启动项?', u'GoAgent 对话框', 1): 103 | if 1 == ctypes.windll.user32.MessageBoxW(None, u'是否显示托盘区图标?', u'GoAgent 对话框', 1): 104 | pass 105 | 106 | 107 | def addto_startup_unknown(): 108 | print '*** error: Unknown system' 109 | 110 | 111 | def main(): 112 | addto_startup_funcs = { 113 | 'Darwin' : addto_startup_osx, 114 | 'Windows' : addto_startup_windows, 115 | 'Linux' : addto_startup_linux, 116 | } 117 | addto_startup_funcs.get(platform.system(), addto_startup_unknown)() 118 | 119 | 120 | if __name__ == '__main__': 121 | try: 122 | main() 123 | except KeyboardInterrupt: 124 | pass 125 | -------------------------------------------------------------------------------- /local/proxy.ini: -------------------------------------------------------------------------------- 1 | [listen] 2 | ip = 127.0.0.1 3 | port = 8087 4 | visible = 1 5 | debuginfo = 0 6 | 7 | [gae] 8 | appid = goagent 9 | password = 10 | path = /2 11 | mode = https 12 | profile = ipv4 13 | window = 4 14 | obfuscate = 0 15 | validate = 0 16 | options = 17 | regions = 18 | 19 | [iplist] 20 | google_cn = 203.208.46.131|203.208.46.132|203.208.46.133|203.208.46.134|203.208.46.135|203.208.46.136|203.208.46.137|203.208.46.138 21 | google_hk = www.google.com|mail.google.com|www.google.com.hk|www.google.com.tw|www.l.google.com 22 | google_talk = talk.google.com|talk.l.google.com|talkx.l.google.com 23 | google_ipv6 = 2404:6800:4005:c00::64|2404:6800:4005:c00::65|2404:6800:4005:c00::5e|2404:6800:4005:c00::67|2404:6800:4005:c00::2f 24 | ;google_tw = www.google.com.tw|www.google.com.sg|www.google.co.jp|www.google.sg|www.google.cat|mail.google.com|mail.l.google.com 25 | 26 | [ipv4/hosts] 27 | talk.google.com = google_talk 28 | talk.l.google.com = google_talk 29 | talkx.l.google.com = google_talk 30 | s0.googleusercontent.com = google_hk 31 | s1.googleusercontent.com = google_hk 32 | s2.googleusercontent.com = google_hk 33 | s3.googleusercontent.com = google_hk 34 | s4.googleusercontent.com = google_hk 35 | s5.googleusercontent.com = google_hk 36 | s6.googleusercontent.com = google_hk 37 | gp0.googleusercontent.com = google_hk 38 | gp1.googleusercontent.com = google_hk 39 | gp2.googleusercontent.com = google_hk 40 | gp3.googleusercontent.com = google_hk 41 | gp4.googleusercontent.com = google_hk 42 | gp5.googleusercontent.com = google_hk 43 | gp6.googleusercontent.com = google_hk 44 | themes.googleusercontent.com = google_hk 45 | producer.googleusercontent.com = google_hk 46 | mail-attachment.googleusercontent.com = google_cn 47 | code.google.com = google_hk 48 | upload.youtube.com = google_hk 49 | .google.com = google_hk 50 | .google.com.hk = google_hk 51 | .googleapis.com = google_hk 52 | .android.com = google_hk 53 | .appspot.com = google_hk 54 | .googlegroups.com = google_hk 55 | .googlesource.com = google_hk 56 | .googleusercontent.com = google_cn 57 | .google-analytics.com = google_cn 58 | .googlecode.com = google_cn 59 | .gstatic.com = google_cn 60 | .dropbox.com:443 = 61 | .box.com:443 = 62 | .copy.com:443 = 63 | ; https?://www\.youtube\.com/watch\? = google_hk 64 | ; https?://.+\.youtube\.com/upload = google_hk 65 | ; https?://.+\.youtube\.com/.*yt_live = google_hk 66 | ; https?://.+\.c\.youtube\.com/.*yt_live = google_hk 67 | ; https?://.+\.c\.youtube\.com/liveplay = google_hk 68 | ; https?://.+\.youtube\.com/live = google_hk 69 | ; https?://www\.example\.com/.+\.html = file:///C:/README.txt 70 | 71 | [ipv4/http] 72 | crlfsites = www.youtube.com|.google.com|.googlecode.com|.appspot.com 73 | withgae = play.google.com|wenda.google.com.hk|clients.google.com|clients1.google.com 74 | forcehttps = www.google.com|www.google.com.hk|code.google.com|groups.google.com|docs.google.com|s1.googleusercontent.com|s2.googleusercontent.com|images1-focus-opensocial.googleusercontent.com|images2-focus-opensocial.googleusercontent.com|images3-focus-opensocial.googleusercontent.com|lh0.googleusercontent.com|lh1.googleusercontent.com|lh2.googleusercontent.com|lh3.googleusercontent.com|lh4.googleusercontent.com|lh5.googleusercontent.com|lh6.googleusercontent.com|lh7.googleusercontent.com|lh8.googleusercontent.com|lh9.googleusercontent.com|lh10.googleusercontent.com|lh11.googleusercontent.com|lh12.googleusercontent.com 75 | fakehttps = ssl.gstatic.com|mail-attachment.googleusercontent.com|webcache.googleusercontent.com|s1.googleusercontent.com|s2.googleusercontent.com|images1-focus-opensocial.googleusercontent.com|images2-focus-opensocial.googleusercontent.com|images3-focus-opensocial.googleusercontent.com|lh0.googleusercontent.com|lh1.googleusercontent.com|lh2.googleusercontent.com|lh3.googleusercontent.com|lh4.googleusercontent.com|lh5.googleusercontent.com|lh6.googleusercontent.com|lh7.googleusercontent.com|lh8.googleusercontent.com|lh9.googleusercontent.com|lh10.googleusercontent.com|lh11.googleusercontent.com|lh12.googleusercontent.com 76 | 77 | [ipv6/hosts] 78 | talk.google.com = 79 | talk.l.google.com = 80 | talkx.l.google.com = 81 | .google.com = google_ipv6 82 | .googleusercontent.com = google_ipv6 83 | .googleapis.com = google_ipv6 84 | .google-analytics.com = google_ipv6 85 | .googlecode.com = google_ipv6 86 | .google.com.hk = google_ipv6 87 | .googlegroups.com = google_ipv6 88 | .googlesource.com = google_ipv6 89 | .appspot.com = google_ipv6 90 | .android.com = google_ipv6 91 | .dropbox.com:443 = 92 | .box.com:443 = 93 | .copy.com:443 = 94 | ; https?://www\.youtube\.com/watch = google_hk 95 | ; https?://.+\.youtube\.com/.*yt_live = google_hk 96 | ; https?://.+\.c\.youtube\.com/.*yt_live = google_hk 97 | ; https?://.+\.c\.youtube\.com/liveplay = google_hk 98 | ; https?://.+\.youtube\.com/live = google_hk 99 | ; https?://.+\.youtube\.com/upload = google_hk 100 | ; upload.youtube.com = google_hk 101 | 102 | [ipv6/http] 103 | dns = 2001:4860:4860::8888|2001:4860:4860::8844|2001:470:20::2 104 | crlfsites = .youtube.com|.google.com 105 | withgae = play.google.com 106 | forcehttps = code.google.com|groups.google.com|docs.google.com 107 | fakehttps = 108 | 109 | [pac] 110 | enable = 1 111 | ip = 127.0.0.1 112 | port = 8086 113 | file = proxy.pac 114 | adblock = https://easylist-downloads.adblockplus.org/easylistchina.txt 115 | gfwlist = https://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt 116 | expired = 86400 117 | 118 | [php] 119 | enable = 0 120 | password = 123456 121 | crlf = 0 122 | validate = 0 123 | listen = 127.0.0.1:8088 124 | fetchserver = http://.com/ 125 | usehosts = 1 126 | 127 | [proxy] 128 | enable = 0 129 | autodetect = 1 130 | host = 10.64.1.63 131 | port = 8080 132 | username = 133 | password = 134 | 135 | [autorange] 136 | hosts = *.c.youtube.com|*.atm.youku.com|*.googlevideo.com|*av.vimeo.com|smile-*.nicovideo.jp|video.*.fbcdn.net|s*.last.fm|x*.last.fm|*.x.xvideos.com|*.edgecastcdn.net|*.d.rncdn3.com|cdn*.public.tube8.com|videos.flv*.redtubefiles.com|cdn*.public.extremetube.phncdn.com|cdn*.video.pornhub.phncdn.com|*.mms.vlog.xuite.net|vs*.thisav.com|archive.rthk.hk|video*.modimovie.com|*.c.docs.google.com 137 | endswith = .iso|.dmg 138 | noendswith = .xml|.json|.html|.php|.py|.js|.css|.jpg|.jpeg|.png|.gif|.ico|.webp 139 | threads = 3 140 | maxsize = 1048576 141 | waitsize = 524288 142 | bufsize = 8192 143 | 144 | [dns] 145 | enable = 0 146 | listen = 127.0.0.1:53 147 | servers = 8.8.8.8|8.8.4.4|223.6.6.6|114.114.115.115 148 | blacklist = 1.1.1.1|255.255.255.255|74.125.127.102|74.125.155.102|74.125.39.102|74.125.39.113|209.85.229.138|4.36.66.178|8.7.198.45|37.61.54.158|46.82.174.68|59.24.3.173|64.33.88.161|64.33.99.47|64.66.163.251|65.104.202.252|65.160.219.113|66.45.252.237|72.14.205.104|72.14.205.99|78.16.49.15|93.46.8.89|128.121.126.139|159.106.121.75|169.132.13.103|192.67.198.6|202.106.1.2|202.181.7.85|203.161.230.171|203.98.7.65|207.12.88.98|208.56.31.43|209.145.54.50|209.220.30.174|209.36.73.33|209.85.229.138|211.94.66.147|213.169.251.35|216.221.188.182|216.234.179.13|243.185.187.3|243.185.187.39 149 | 150 | [useragent] 151 | enable = 0 152 | string = Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3 153 | 154 | [fetchmax] 155 | local = 156 | server = 157 | 158 | [love] 159 | enable = 1 160 | tip = \u8bf7\u5173\u6ce8\u5317\u4eac\u5931\u5b66\u513f\u7ae5~~ 161 | -------------------------------------------------------------------------------- /local/goagent-osx.command: -------------------------------------------------------------------------------- 1 | (/usr/bin/env python2.6 -x "$0" 2>&1 >/dev/null &);exit 2 | # coding:utf-8 3 | # Contributor: 4 | # Phus Lu 5 | 6 | __version__ = '1.6' 7 | 8 | GOAGENT_TITLE = "GoAgent OS X" 9 | GOAGENT_ICON_DATA = """\ 10 | iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAADtklEQVR42r3UW0xbdRwH8PqiLz7Y 11 | xTTEJwMSdVMX2nMprZBSeqFd6cQlBgPGxGVJSwschLpNjDMap9vUxIxgKbcNKgHWdcU55nSJOpEx 12 | Wkav0DIvC0pgPiy6+dD2nPP/ethMk5kljD34S/7J/+mT3/93+ctkG8cD/zn3F1sP4MHyD74p0x3+ 13 | sdF06EKb6eAUp3v360bbx4ntm4bXMfbtsX79O+f+ULp92bKmvpyqyZdTOX05yt2bN3cn924KpQ58 14 | WVzdeXpa9oTloYq9gfeZlgFCu31gXT7QDi9hnF3TxkOXH7tnkH1vppT2jKQq909M0S1DyzR3XMqu 15 | l9CuPsI4uiXYu/CMZ7JkQ+i5Iz8pdB9FnqIcfdry9s+PsB1+r6p10Me6Bryq14dE2tVDWIcXpbsH 16 | FrjDbi1y6qexqHscuMvzjUPXa5n9E9+znvHfWc6/yrT51xju2BrTPLjGtg6uSvUjt8AmL7bUj6Sy 17 | YcswouyKMKuN48+6PXdgmqGbCqbzTI7yjIp0+yih2/y3DzdE6JZBCeqXathfABX1/tTqd/YgonSe 18 | zDAiomoB0CgKYMXRpFnpCeak7MB6RkFzIxI4TChuWKBa+3mqpY+nmnt52vUZTzm6eJl18gskqPMI 19 | awRc1IDM0jxuVlUXBtfYlXEpOwLZdZDuGCdKblh8sjnEK16duCRvOBWSNwZC8pdPTMjrAyGZ6fzB 20 | 5WmbCwnmOiLlIi6WQ5ym88gbHQXQ0L3kLGu/Dao6RsVi56lrr33yqYPcUJ4ly88v4iqbxlUmTX5V 21 | ZsiS8i+kJShSIWJWi3UQM3QOWbO78GT90bRe+UYgz3gCZDs3JmxrDZ4lOfYcUi/kEbcKiFkERM0C 22 | 5o0Cma8WMacjiFSSdVC8pJbuTB5/6wwF0Naz8ijdeTpPecbINu4kb32r5wRWq9NI2UUkbJBQIFYD 23 | RE3AZQMQroIEYh2UmkIQZrOA7uE7x+bYjTp63/i3z3LBhP7N491kxZhBwk6Q3EGQsBAhaooLcVNC 24 | iBkSQliXFCKVSSFckcSs5gKws/aug62RBluxL148NelUk59tGSlDCbQSLFqJELMExbmakBg1niRR 25 | sy8/p1UjqykB6KINNwbYVSou7Fq6lWHKRhCzEhIzSfUz/ELixpAwXxXDNX3JPe8y0FRErrz4AxI7 26 | CeL/1jBuIbhi/vC3r7ZuwZLpDGAt2tQXBrjtyLzEY6GWR7Qmj3mT1HEjj6RJakCD/b4+Walzj4Bv 27 | kFr7SjPQ6Ea2zgjskMv+z/gHq6RKE1cMAqYAAAAASUVORK5CYII=""" 28 | 29 | import sys 30 | import subprocess 31 | import pty 32 | import os 33 | import base64 34 | import ctypes 35 | import ctypes.util 36 | 37 | from PyObjCTools import AppHelper 38 | from AppKit import * 39 | 40 | class GoAgentOSX(NSObject): 41 | 42 | def applicationDidFinishLaunching_(self, notification): 43 | self.setupUI() 44 | self.startGoAgent() 45 | self.registerObserver() 46 | 47 | def windowWillClose_(self, notification): 48 | self.stopGoAgent() 49 | NSApp.terminate_(self) 50 | 51 | def setupUI(self): 52 | self.statusbar = NSStatusBar.systemStatusBar() 53 | # Create the statusbar item 54 | self.statusitem = self.statusbar.statusItemWithLength_(NSVariableStatusItemLength) 55 | # Set initial image 56 | raw_data = base64.b64decode(''.join(GOAGENT_ICON_DATA.strip().splitlines())) 57 | self.image_data = NSData.dataWithBytes_length_(raw_data, len(raw_data)) 58 | self.image = NSImage.alloc().initWithData_(self.image_data) 59 | self.statusitem.setImage_(self.image) 60 | # Let it highlight upon clicking 61 | self.statusitem.setHighlightMode_(1) 62 | # Set a tooltip 63 | self.statusitem.setToolTip_(GOAGENT_TITLE) 64 | 65 | # Build a very simple menu 66 | self.menu = NSMenu.alloc().init() 67 | # Show Menu Item 68 | menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Show', 'show:', '') 69 | self.menu.addItem_(menuitem) 70 | # Hide Menu Item 71 | menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Hide', 'hide2:', '') 72 | self.menu.addItem_(menuitem) 73 | # Rest Menu Item 74 | menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Reload', 'reset:', '') 75 | self.menu.addItem_(menuitem) 76 | # Default event 77 | menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'exit:', '') 78 | self.menu.addItem_(menuitem) 79 | # Bind it to the status item 80 | self.statusitem.setMenu_(self.menu) 81 | 82 | # Console window 83 | frame = NSMakeRect(0, 0, 550, 350) 84 | self.console_window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(frame, NSClosableWindowMask | NSTitledWindowMask, NSBackingStoreBuffered, False) 85 | self.console_window.setTitle_(GOAGENT_TITLE) 86 | self.console_window.setDelegate_(self) 87 | 88 | # Console view inside a scrollview 89 | self.scroll_view = NSScrollView.alloc().initWithFrame_(frame) 90 | self.scroll_view.setBorderType_(NSNoBorder) 91 | self.scroll_view.setHasVerticalScroller_(True) 92 | self.scroll_view.setHasHorizontalScroller_(False) 93 | self.scroll_view.setAutoresizingMask_(NSViewWidthSizable | NSViewHeightSizable) 94 | 95 | self.console_view = NSTextView.alloc().initWithFrame_(frame) 96 | self.console_view.setVerticallyResizable_(True) 97 | self.console_view.setHorizontallyResizable_(True) 98 | self.console_view.setAutoresizingMask_(NSViewWidthSizable) 99 | 100 | self.scroll_view.setDocumentView_(self.console_view) 101 | 102 | contentView = self.console_window.contentView() 103 | contentView.addSubview_(self.scroll_view) 104 | 105 | # Hide dock icon 106 | NSApp.setActivationPolicy_(NSApplicationActivationPolicyProhibited) 107 | 108 | def registerObserver(self): 109 | nc = NSWorkspace.sharedWorkspace().notificationCenter() 110 | nc.addObserver_selector_name_object_(self, 'exit:', NSWorkspaceWillPowerOffNotification, None) 111 | 112 | def startGoAgent(self): 113 | for pycmd in ('python2.7', 'python2', 'python'): 114 | if os.system('which %s' % pycmd) == 0: 115 | cmd = '/usr/bin/env %s proxy.py' % pycmd 116 | break 117 | self.master, self.slave = pty.openpty() 118 | self.pipe = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=self.slave, stderr=self.slave, close_fds=True) 119 | self.pipe_fd = os.fdopen(self.master) 120 | 121 | self.performSelectorInBackground_withObject_('readProxyOutput', None) 122 | 123 | def stopGoAgent(self): 124 | self.pipe.terminate() 125 | 126 | def refreshDisplay_(self, line): 127 | #print line 128 | self.console_view.textStorage().mutableString().appendString_(line) 129 | need_scroll = NSMaxY(self.console_view.visibleRect()) >= NSMaxY(self.console_view.bounds()) 130 | if need_scroll: 131 | range = NSMakeRange(len(self.console_view.textStorage().mutableString()), 0) 132 | self.console_view.scrollRangeToVisible_(range) 133 | 134 | def readProxyOutput(self): 135 | while(True): 136 | line = self.pipe_fd.readline() 137 | self.performSelectorOnMainThread_withObject_waitUntilDone_('refreshDisplay:', line, None) 138 | 139 | def show_(self, notification): 140 | self.console_window.center() 141 | self.console_window.orderFrontRegardless() 142 | self.console_window.setIsVisible_(True) 143 | 144 | def hide2_(self, notification): 145 | self.console_window.setIsVisible_(False) 146 | #self.console_window.orderOut(None) 147 | 148 | def reset_(self, notification): 149 | self.console_view.setString_('') 150 | self.stopGoAgent() 151 | self.startGoAgent() 152 | 153 | def exit_(self, notification): 154 | self.stopGoAgent() 155 | NSApp.terminate_(self) 156 | 157 | 158 | def main(): 159 | global __file__ 160 | __file__ = os.path.abspath(__file__) 161 | if os.path.islink(__file__): 162 | __file__ = getattr(os, 'readlink', lambda x: x)(__file__) 163 | os.chdir(os.path.dirname(os.path.abspath(__file__))) 164 | 165 | app = NSApplication.sharedApplication() 166 | delegate = GoAgentOSX.alloc().init() 167 | app.setDelegate_(delegate) 168 | 169 | AppHelper.runEventLoop() 170 | 171 | if __name__ == '__main__': 172 | main() 173 | -------------------------------------------------------------------------------- /server/php/index.php: -------------------------------------------------------------------------------- 1 | 15 | 16 | ${title} 17 | 27 | 28 | 29 | 30 | 31 | 32 |
Error
 
33 |
34 |

${banner}

35 | ${detail} 36 | 37 |

38 |

39 |
40 | 41 | MESSAGE_STRING; 42 | return $error; 43 | } 44 | 45 | 46 | function decode_request($data) { 47 | list($headers_length) = array_values(unpack('n', substr($data, 0, 2))); 48 | $headers_data = gzinflate(substr($data, 2, $headers_length)); 49 | $body = substr($data, 2+intval($headers_length)); 50 | 51 | $method = ''; 52 | $url = ''; 53 | $headers = array(); 54 | $kwargs = array(); 55 | 56 | foreach (explode("\n", $headers_data) as $kv) { 57 | $pair = explode(':', $kv, 2); 58 | $key = $pair[0]; 59 | $value = trim($pair[1]); 60 | if ($key == 'G-Method') { 61 | $method = $value; 62 | } else if ($key == 'G-Url') { 63 | $url = $value; 64 | } else if (substr($key, 0, 2) == 'G-') { 65 | $kwargs[strtolower(substr($key, 2))] = $value; 66 | } else if ($key) { 67 | $key = join('-', array_map('ucfirst', explode('-', $key))); 68 | $headers[$key] = $value; 69 | } 70 | } 71 | if (isset($headers['Content-Encoding'])) { 72 | if ($headers['Content-Encoding'] == 'deflate') { 73 | $body = gzinflate($body); 74 | $headers['Content-Length'] = strval(strlen($body)); 75 | unset($headers['Content-Encoding']); 76 | } 77 | } 78 | return array($method, $url, $headers, $kwargs, $body); 79 | } 80 | 81 | 82 | function echo_content($content) { 83 | global $__password__, $__content_type__; 84 | if ($__content_type__ == 'image/gif') { 85 | echo $content ^ str_repeat($__password__[0], strlen($content)); 86 | } else { 87 | echo $content; 88 | } 89 | } 90 | 91 | 92 | function curl_header_function($ch, $header) { 93 | global $__content__, $__content_type__; 94 | $pos = strpos($header, ':'); 95 | if ($pos == false) { 96 | $__content__ .= $header; 97 | } else { 98 | $key = join('-', array_map('ucfirst', explode('-', substr($header, 0, $pos)))); 99 | if ($key != 'Transfer-Encoding') { 100 | $__content__ .= $key . substr($header, $pos); 101 | } 102 | } 103 | if (preg_match('@^Content-Type: ?(audio/|image/|video/|application/octet-stream)@i', $headers)) { 104 | $__content_type__ = 'image/x-png'; 105 | } 106 | if (!trim($header)) { 107 | header('Content-Type: ' . $__content_type__); 108 | } 109 | return strlen($header); 110 | } 111 | 112 | 113 | function curl_write_function($ch, $content) { 114 | global $__content__; 115 | if ($__content__) { 116 | // for debug 117 | // echo_content("HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\n"); 118 | echo_content($__content__); 119 | $__content__ = ''; 120 | } 121 | echo_content($content); 122 | return strlen($content); 123 | } 124 | 125 | 126 | function post() { 127 | list($method, $url, $headers, $kwargs, $body) = @decode_request(@file_get_contents('php://input')); 128 | 129 | $password = $GLOBALS['__password__']; 130 | if ($password) { 131 | if (!isset($kwargs['password']) || $password != $kwargs['password']) { 132 | header("HTTP/1.0 403 Forbidden"); 133 | echo message_html('403 Forbidden', 'Wrong Password', 'please edit proxy.ini'); 134 | exit(-1); 135 | } 136 | } 137 | 138 | $hostsdeny = $GLOBALS['__hostsdeny__']; 139 | if ($hostsdeny) { 140 | $urlparts = parse_url($url); 141 | $host = $urlparts['host']; 142 | foreach ($hostsdeny as $pattern) { 143 | if (substr($host, strlen($host)-strlen($pattern)) == $pattern) { 144 | echo_content("HTTP/1.0 403\r\n\r\n" . message_html('403 Forbidden', "hostsdeny matched($host)", $url)); 145 | exit(-1); 146 | } 147 | } 148 | } 149 | 150 | if ($body) { 151 | $headers['Content-Length'] = strval(strlen($body)); 152 | } 153 | if (isset($headers['Connection'])) { 154 | $headers['Connection'] = 'close'; 155 | } 156 | 157 | $header_array = array(); 158 | foreach ($headers as $key => $value) { 159 | $header_array[] = join('-', array_map('ucfirst', explode('-', $key))).': '.$value; 160 | } 161 | 162 | $timeout = $GLOBALS['__timeout__']; 163 | 164 | $curl_opt = array(); 165 | 166 | switch (strtoupper($method)) { 167 | case 'HEAD': 168 | $curl_opt[CURLOPT_NOBODY] = true; 169 | break; 170 | case 'GET': 171 | break; 172 | case 'POST': 173 | $curl_opt[CURLOPT_POST] = true; 174 | $curl_opt[CURLOPT_POSTFIELDS] = $body; 175 | break; 176 | case 'PUT': 177 | case 'DELETE': 178 | $curl_opt[CURLOPT_CUSTOMREQUEST] = $method; 179 | $curl_opt[CURLOPT_POSTFIELDS] = $body; 180 | break; 181 | default: 182 | echo_content("HTTP/1.0 502\r\n\r\n" . message_html('502 Urlfetch Error', 'Invalid Method: ' . $method, $url)); 183 | exit(-1); 184 | } 185 | 186 | $curl_opt[CURLOPT_HTTPHEADER] = $header_array; 187 | $curl_opt[CURLOPT_RETURNTRANSFER] = true; 188 | $curl_opt[CURLOPT_BINARYTRANSFER] = true; 189 | 190 | $curl_opt[CURLOPT_HEADER] = false; 191 | $curl_opt[CURLOPT_HEADERFUNCTION] = 'curl_header_function'; 192 | $curl_opt[CURLOPT_WRITEFUNCTION] = 'curl_write_function'; 193 | 194 | $curl_opt[CURLOPT_FAILONERROR] = false; 195 | $curl_opt[CURLOPT_FOLLOWLOCATION] = false; 196 | 197 | $curl_opt[CURLOPT_CONNECTTIMEOUT] = $timeout; 198 | $curl_opt[CURLOPT_TIMEOUT] = $timeout; 199 | 200 | $curl_opt[CURLOPT_SSL_VERIFYPEER] = false; 201 | $curl_opt[CURLOPT_SSL_VERIFYHOST] = false; 202 | 203 | $ch = curl_init($url); 204 | curl_setopt_array($ch, $curl_opt); 205 | $ret = curl_exec($ch); 206 | $errno = curl_errno($ch); 207 | if ($GLOBALS['__content__']) { 208 | echo_content($GLOBALS['__content__']); 209 | } else if ($errno) { 210 | if (!headers_sent()) { 211 | header('Content-Type: ' . $__content_type__); 212 | } 213 | $content = "HTTP/1.0 502\r\n\r\n" . message_html('502 Urlfetch Error', "PHP Urlfetch Error curl($errno)", curl_error($ch)); 214 | echo_content($content); 215 | } 216 | curl_close($ch); 217 | } 218 | 219 | function get() { 220 | $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; 221 | $domain = preg_replace('/.*\\.(.+\\..+)$/', '$1', $host); 222 | if ($host && $host != $domain && $host != 'www'.$domain) { 223 | header('Location: http://www.' . $domain); 224 | } else { 225 | header('Location: https://www.google.com'); 226 | } 227 | } 228 | 229 | 230 | function main() { 231 | if ($_SERVER['REQUEST_METHOD'] == 'POST') { 232 | post(); 233 | } else { 234 | get(); 235 | } 236 | } 237 | 238 | main(); 239 | -------------------------------------------------------------------------------- /server/php/index.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding:utf-8 3 | 4 | __version__ = '3.1.4' 5 | __password__ = '123456' 6 | __hostsdeny__ = () # __hostsdeny__ = ('.youtube.com', '.youku.com') 7 | __content_type__ = 'image/gif' 8 | __timeout__ = 20 9 | 10 | try: 11 | import gevent 12 | import gevent.queue 13 | import gevent.monkey 14 | gevent.monkey.patch_all() 15 | except ImportError: 16 | pass 17 | 18 | import sys 19 | import re 20 | import time 21 | import itertools 22 | import functools 23 | import logging 24 | import string 25 | import urlparse 26 | import httplib 27 | import struct 28 | import zlib 29 | import collections 30 | import Queue 31 | 32 | normcookie = functools.partial(re.compile(', ([^ =]+(?:=|$))').sub, '\\r\\nSet-Cookie: \\1') 33 | 34 | def message_html(title, banner, detail=''): 35 | MESSAGE_TEMPLATE = ''' 36 | 37 | 38 | $title 39 | 49 | 50 | 51 | 52 | 53 |
Message
54 |
55 |

$banner

56 | $detail 57 |

58 |

59 |
60 | 61 | ''' 62 | return string.Template(MESSAGE_TEMPLATE).substitute(title=title, banner=banner, detail=detail) 63 | 64 | 65 | class XORCipher(object): 66 | """XOR Cipher Class""" 67 | def __init__(self, key): 68 | self.__key_gen = itertools.cycle([ord(x) for x in key]).next 69 | self.__key_xor = lambda s: ''.join(chr(ord(x) ^ self.__key_gen()) for x in s) 70 | if len(key) == 1: 71 | try: 72 | from Crypto.Util.strxor import strxor_c 73 | c = ord(key) 74 | self.__key_xor = lambda s: strxor_c(s, c) 75 | except ImportError: 76 | sys.stderr.write('Load Crypto.Util.strxor Failed, Use Pure Python Instead.\n') 77 | 78 | def encrypt(self, data): 79 | return self.__key_xor(data) 80 | 81 | 82 | def decode_request(data): 83 | metadata_length, = struct.unpack('!h', data[:2]) 84 | metadata = zlib.decompress(data[2:2+metadata_length], -zlib.MAX_WBITS) 85 | body = data[2+metadata_length:] 86 | headers = dict(x.split(':', 1) for x in metadata.splitlines() if x) 87 | method = headers.pop('G-Method') 88 | url = headers.pop('G-Url') 89 | kwargs = {} 90 | any(kwargs.__setitem__(x[2:].lower(), headers.pop(x)) for x in headers.keys() if x.startswith('G-')) 91 | if headers.get('Content-Encoding', '') == 'deflate': 92 | body = zlib.decompress(body, -zlib.MAX_WBITS) 93 | headers['Content-Length'] = str(len(body)) 94 | del headers['Content-Encoding'] 95 | return method, url, headers, kwargs, body 96 | 97 | 98 | HTTP_CONNECTION_CACHE = collections.defaultdict(Queue.PriorityQueue) 99 | 100 | def application(environ, start_response): 101 | if environ['REQUEST_METHOD'] == 'GET': 102 | start_response('302 Found', [('Location', 'https://www.google.com')]) 103 | raise StopIteration 104 | 105 | post_data = environ['wsgi.input'].read(int(environ.get('CONTENT_LENGTH') or -1)) 106 | method, url, headers, kwargs, body = decode_request(post_data) 107 | scheme, netloc, path, _, query, _ = urlparse.urlparse(url) 108 | cipher = XORCipher(__password__[0]) 109 | 110 | if __password__ != kwargs.get('password'): 111 | start_response('403 Forbidden', [('Content-Type', 'text/html')]) 112 | yield message_html('403 Wrong Password', 'Wrong Password(%s)' % kwargs.get('password'), detail='please edit proxy.ini') 113 | raise StopIteration 114 | 115 | if __hostsdeny__ and netloc.endswith(__hostsdeny__): 116 | start_response('200 OK', [('Content-Type', __content_type__)]) 117 | yield cipher.encrypt('HTTP/1.1 403 Forbidden\r\nContent-type: text/html\r\n\r\n') 118 | yield cipher.encrypt(message_html('403 Forbidden Host', 'Hosts Deny(%s)' % netloc, detail='url=%r' % url)) 119 | raise StopIteration 120 | 121 | timeout = int(kwargs.get('timeout') or __timeout__) 122 | fetchmax = int(kwargs.get('fetchmax') or 3) 123 | ConnectionType = httplib.HTTPSConnection if scheme == 'https' else httplib.HTTPConnection 124 | header_sent = False 125 | try: 126 | connection = None 127 | response = None 128 | for i in xrange(fetchmax): 129 | try: 130 | while True: 131 | try: 132 | mtime, connection = HTTP_CONNECTION_CACHE[(scheme, netloc)].get_nowait() 133 | if time.time() - mtime < 16: 134 | break 135 | else: 136 | connection.close() 137 | except Queue.Empty: 138 | connection = ConnectionType(netloc, timeout=timeout) 139 | break 140 | connection.request(method, '%s?%s' % (path, query) if query else path, body=body, headers=headers) 141 | response = connection.getresponse(buffering=True) 142 | break 143 | except Exception as e: 144 | if i == fetchmax - 1: 145 | raise 146 | need_encrypt = not response.getheader('Content-Type', '').startswith(('audio/', 'image/', 'video/', 'application/octet-stream')) 147 | start_response('200 OK', [('Content-Type', __content_type__ if need_encrypt else 'image/x-png')]) 148 | header_sent = True 149 | if response.getheader('Set-Cookie'): 150 | response.msg['Set-Cookie'] = normcookie(response.getheader('Set-Cookie')) 151 | content = 'HTTP/1.1 %s %s\r\n%s\r\n' % (response.status, httplib.responses.get(response.status, 'Unknown'), ''.join('%s: %s\r\n' % (k.title(), v) for k, v in response.getheaders() if k.title() != 'Transfer-Encoding')) 152 | if need_encrypt: 153 | content = cipher.encrypt(content) 154 | yield content 155 | # bufsize = 32768 if int(response.getheader('Content-Length', 0)) > 512*1024 else 8192 156 | bufsize = 8192 157 | while True: 158 | data = response.read(bufsize) 159 | if not data: 160 | response.close() 161 | if connection.sock: 162 | HTTP_CONNECTION_CACHE[(scheme, netloc)].put((time.time(), connection)) 163 | return 164 | if need_encrypt: 165 | data = cipher.encrypt(data) 166 | yield data 167 | del data 168 | except Exception as e: 169 | import traceback 170 | if not header_sent: 171 | start_response('200 OK', [('Content-Type', __content_type__)]) 172 | yield cipher.encrypt('HTTP/1.1 500 Internal Server Error\r\nContent-type: text/html\r\n\r\n') 173 | yield cipher.encrypt(message_html('500 Internal Server Error', 'urlfetch %r: %r' % (url, e), '
%s
' % traceback.format_exc())) 174 | raise StopIteration 175 | 176 | try: 177 | import sae 178 | application = sae.create_wsgi_app(application) 179 | except ImportError: 180 | pass 181 | 182 | try: 183 | import bae.core.wsgi 184 | application = bae.core.wsgi.WSGIApplication(application) 185 | except ImportError: 186 | pass 187 | 188 | 189 | def run_wsgi_app(address, app): 190 | try: 191 | from gunicorn.app.wsgiapp import WSGIApplication 192 | class GunicornApplication(WSGIApplication): 193 | def init(self, parser, opts, args): 194 | return {'bind': '%s:%d' % (address[0], int(address[1])), 195 | 'workers': 2, 196 | 'worker_class': 'gevent'} 197 | def load(self): 198 | return application 199 | GunicornApplication().run() 200 | except ImportError: 201 | from gevent.wsgi import WSGIServer 202 | WSGIServer(address, app).serve_forever() 203 | 204 | 205 | if __name__ == '__main__': 206 | logging.basicConfig(level=logging.INFO, format='%(levelname)s - - %(asctime)s %(message)s', datefmt='[%b %d %H:%M:%S]') 207 | host, _, port = sys.argv[1].rpartition(':') 208 | logging.info('local python application serving at %s:%s', host, port) 209 | run_wsgi_app((host, int(port)), application) 210 | -------------------------------------------------------------------------------- /server/php/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var __version__ = '3.1.2'; 4 | var __password__ = '123456'; 5 | var __hostsdeny__ = []; // var __hostsdeny__ = ['.youtube.com', '.youku.com']; 6 | var __content_type__ = 'image/gif'; 7 | var __content__ = ''; 8 | var __timeout__ = 20; 9 | 10 | var zlib = require('zlib'); 11 | var http = require('http'); 12 | var https = require('https'); 13 | var url = require('url'); 14 | 15 | var ipaddr = ''; 16 | var port = process.env.PORT || 8080; 17 | 18 | 19 | function message_html(title, banner, detail) { 20 | var message = "\ 21 | \ 22 | \ 23 | $title\ 24 | \ 34 | \ 35 | \ 36 | \ 37 | \ 38 |
Message
 
\ 39 |
\ 40 |

$banner

\ 41 | $detail\ 42 |

\ 43 |

\ 44 |
\ 45 | "; 46 | return message.replace('$title', title).replace('$banner', banner).replace('$detail', detail); 47 | } 48 | 49 | 50 | function decode_request(data, callback) { 51 | var headers_length = (data[0] << 8) + data[1]; 52 | 53 | request = Object(); 54 | request.headers = {}; 55 | request.kwargs = {}; 56 | request.body = data.slice(2+headers_length); 57 | 58 | zlib.inflateRaw(data.slice(2, 2+headers_length), function(error, buff) { 59 | buff.toString().split("\n").forEach(function(line) { 60 | var pos = line.indexOf(':'); 61 | if (pos > 0) { 62 | var key = line.substring(0, pos); 63 | var value = line.substring(pos+1); 64 | if (key == 'G-Method') { 65 | request.method = value; 66 | } else if (key == 'G-Url') { 67 | request.url = value; 68 | } else if (key.indexOf('G-') == 0) { 69 | request.kwargs[key.substring(2)] = value; 70 | } else { 71 | request.headers[key] = value; 72 | } 73 | } 74 | }); 75 | if (request.headers.hasOwnProperty('Content-Encoding') 76 | && request.headers['Content-Encoding'] == 'deflate') { 77 | zlib.inflateRaw(request.body, function(error, buff) { 78 | request.body = buff; 79 | request.headers['Content-Length'] = request.body.length.toString(); 80 | delete request.headers['Content-Encoding']; 81 | callback(request); 82 | }); 83 | } else { 84 | callback(request); 85 | } 86 | }); 87 | } 88 | 89 | function buffer_xorbit(buff, bit) { 90 | var data = new Buffer(buff.length); 91 | for (var i = 0; i < data.length; i++) { 92 | data.writeUInt8(buff[i] ^ bit, i); 93 | } 94 | return data; 95 | } 96 | 97 | 98 | function application(req, res) { 99 | console.log('INFO - [' + new Date().toLocaleString('en', {hour12: false}).replace(/\s*GMT\+.+$/, '') + '] ' + req.connection.remoteAddress + ':' + req.connection.remotePort + ' "' + req.method + ' ' + req.url + ' ' + req.httpVersion +'" - -') 100 | 101 | var content_length = parseInt(req.headers['content-length']); 102 | 103 | if (!(content_length > 0)) { 104 | res.writeHead(302, {'Location': 'http://www.google.com/'}); 105 | res.end(); 106 | return; 107 | } 108 | 109 | var buffers = []; 110 | 111 | req.on('data', function(chunk) { 112 | buffers.push(chunk); 113 | }); 114 | 115 | req.on('end', function() { 116 | var data = Buffer.concat(buffers); 117 | var bit = __password__.charCodeAt(0); 118 | decode_request(data, function(request) { 119 | console.log('INFO - [' + new Date().toLocaleString('en', {hour12: false}).replace(/\s*GMT\+.+$/, '') + '] ' + req.connection.remoteAddress + ':' + req.connection.remotePort + ' "' + request.method + ' ' + request.url + ' HTTP/1.1" - -') 120 | 121 | // console.log(request); 122 | if (!request.kwargs.hasOwnProperty('password') || __password__ != request.kwargs['password']) { 123 | if (!res.headersSent) { 124 | res.writeHead(403, {'Content-Type': __content_type__}); 125 | } 126 | res.write('HTTP/1.0 403\r\n\r\n' + message_html('403 Forbidden', 'Wrong Password', 'please edit proxy.ini')); 127 | res.end(); 128 | return; 129 | } 130 | 131 | var option = url.parse(request.url); 132 | 133 | if (__hostsdeny__.length) { 134 | var hostname = option.hostname; 135 | if (__hostsdeny__.filter(function(i) {return i==hostname.substring(hostname.length-i.length);}).length) { 136 | var content = 'HTTP/1.0 403\r\n\r\n' + message_html('403 Forbidden', 'hostsdeny matched(' + hostname + ')', request.url) 137 | if (!res.headersSent) { 138 | res.writeHead(200, {'Content-Type': __content_type__}); 139 | } 140 | res.write(buffer_xorbit(new Buffer(content), bit)); 141 | res.end(); 142 | return; 143 | } 144 | } 145 | 146 | var httplib = option.protocol == 'https:' ? https : http; 147 | option.path = option.path ? option.path : option.pathname+(option.search ? option.search : ''); 148 | option.method = request.method; 149 | option.headers = request.headers; 150 | var http_request = httplib.request(option, function(response) { 151 | if (!res.headersSent) { 152 | res.writeHead(200, {'Content-Type': __content_type__}); 153 | } 154 | var content = 'HTTP/1.1 ' + response.statusCode + '\r\n'; 155 | for (var key in response.headers) { 156 | value = response.headers[key]; 157 | key = key.replace(/\w+/g, function(w){return w.charAt(0).toUpperCase() + w.substr(1).toLowerCase();}); 158 | if (key == "Transfer-Encoding") { 159 | continue; 160 | } 161 | if (key == 'Set-Cookie') { 162 | value = value.toString().replace(/,([^ =]+(?:=|$))/g, '\r\nSet-Cookie: $1'); 163 | } 164 | content += key + ': ' + value + '\r\n'; 165 | } 166 | content += '\r\n'; 167 | // console.log('header content=\r\n[' + content + ']'); 168 | res.write(buffer_xorbit(new Buffer(content), bit)); 169 | response.on('data',function(chunk){ 170 | res.write(buffer_xorbit(chunk, bit)); 171 | }); 172 | response.on('end',function(){ 173 | res.end(); 174 | }); 175 | }).on('error', function(error) { 176 | if (!res.headersSent) { 177 | res.writeHead(200, {'Content-Type': __content_type__}); 178 | } 179 | content = "HTTP/1.0 502\r\n\r\n" + message_html('502 Urlfetch Error', 'http.request error: ' + error, request.url) 180 | res.write(buffer_xorbit(new Buffer(content), bit)); 181 | res.end(); 182 | }); 183 | http_request.setTimeout(__timeout__ * 1000, function() { 184 | http_request.abort(); 185 | if (!res.headersSent) { 186 | res.writeHead(200, {'Content-Type': __content_type__}); 187 | } 188 | content = "HTTP/1.0 502\r\n\r\n" + message_html('502 Urlfetch Error', 'http.request timeout', request.url) 189 | res.write(buffer_xorbit(new Buffer(content), bit)); 190 | res.end(); 191 | }); 192 | http_request.on('error', function(error) { 193 | if (!res.headersSent) { 194 | res.writeHead(200, {'Content-Type': __content_type__}); 195 | } 196 | content = "HTTP/1.0 502\r\n\r\n" + message_html('502 Urlfetch Error', 'http.request ' + error, request.url) 197 | res.write(buffer_xorbit(new Buffer(content), bit)); 198 | res.end(); 199 | }); 200 | if (request.body.length) { 201 | // console.log('body: [' + request.body.toString() + ']'); 202 | http_request.write(request.body); 203 | } 204 | http_request.end(); 205 | }); 206 | }); 207 | } 208 | 209 | console.log('local node application serving at ' + ipaddr + ':' + port); 210 | http.createServer(application).listen(port, ipaddr); 211 | -------------------------------------------------------------------------------- /local/dnsproxy.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding:utf-8 3 | # TODO: 1. sort reply rdata by ip latency 4 | # 3. reduce socket fd usage 5 | 6 | 7 | __version__ = '1.0' 8 | 9 | import sys 10 | import os 11 | import glob 12 | 13 | sys.path += glob.glob('*.egg') 14 | 15 | import gevent 16 | import gevent.server 17 | import gevent.timeout 18 | import gevent.monkey 19 | gevent.monkey.patch_all(subprocess=True) 20 | 21 | import time 22 | import logging 23 | import heapq 24 | import socket 25 | import select 26 | import re 27 | import dnslib 28 | try: 29 | import pygeoip 30 | except ImportError: 31 | pygeoip = None 32 | 33 | 34 | def get_dnsserver_list(): 35 | if os.name == 'nt': 36 | import ctypes, ctypes.wintypes, struct, socket 37 | DNS_CONFIG_DNS_SERVER_LIST = 6 38 | buf = ctypes.create_string_buffer(2048) 39 | ctypes.windll.dnsapi.DnsQueryConfig(DNS_CONFIG_DNS_SERVER_LIST, 0, None, None, ctypes.byref(buf), ctypes.byref(ctypes.wintypes.DWORD(len(buf)))) 40 | ips = struct.unpack('I', buf[0:4])[0] 41 | out = [] 42 | for i in xrange(ips): 43 | start = (i+1) * 4 44 | out.append(socket.inet_ntoa(buf[start:start+4])) 45 | return out 46 | elif os.path.isfile('/etc/resolv.conf'): 47 | with open('/etc/resolv.conf', 'rb') as fp: 48 | return re.findall(r'(?m)^nameserver\s+(\S+)', fp.read()) 49 | else: 50 | logging.warning("get_dnsserver_list failed: unsupport platform '%s-%s'", sys.platform, os.name) 51 | return [] 52 | 53 | class ExpireCache(object): 54 | """ A dictionary-like object, supporting expire semantics.""" 55 | def __init__(self, max_size=1024): 56 | self.__maxsize = max_size 57 | self.__values = {} 58 | self.__expire_times = {} 59 | self.__expire_heap = [] 60 | 61 | def size(self): 62 | return len(self.__values) 63 | 64 | def clear(self): 65 | self.__values.clear() 66 | self.__expire_times.clear() 67 | del self.__expire_heap[:] 68 | 69 | def exists(self, key): 70 | return key in self.__values 71 | 72 | def set(self, key, value, expire): 73 | try: 74 | et = self.__expire_times[key] 75 | pos = self.__expire_heap.index((et, key)) 76 | del self.__expire_heap[pos] 77 | if pos < len(self.__expire_heap): 78 | heapq._siftup(self.__expire_heap, pos) 79 | except KeyError: 80 | pass 81 | et = int(time.time() + expire) 82 | self.__expire_times[key] = et 83 | heapq.heappush(self.__expire_heap, (et, key)) 84 | self.__values[key] = value 85 | self.cleanup() 86 | 87 | def get(self, key): 88 | et = self.__expire_times[key] 89 | if et < time.time(): 90 | self.cleanup() 91 | raise KeyError(key) 92 | return self.__values[key] 93 | 94 | def delete(self, key): 95 | et = self.__expire_times.pop(key) 96 | pos = self.__expire_heap.index((et, key)) 97 | del self.__expire_heap[pos] 98 | if pos < len(self.__expire_heap): 99 | heapq._siftup(self.__expire_heap, pos) 100 | del self.__values[key] 101 | 102 | def cleanup(self): 103 | t = int(time.time()) 104 | eh = self.__expire_heap 105 | ets = self.__expire_times 106 | v = self.__values 107 | size = self.__maxsize 108 | heappop = heapq.heappop 109 | #Delete expired, ticky 110 | while eh and eh[0][0] <= t or len(v) > size: 111 | _, key = heappop(eh) 112 | del v[key], ets[key] 113 | 114 | 115 | class DNSServer(gevent.server.DatagramServer): 116 | """DNS Proxy based on gevent/dnslib""" 117 | 118 | is_local_addr = re.compile(r'(?i)(?:[0-9a-f:]+0:5efe:)?(?:127(?:\.\d+){3}|10(?:\.\d+){3}|192\.168(?:\.\d+){2}|172\.(?:1[6-9]|2\d|3[01])(?:\.\d+){2})').match 119 | 120 | def __init__(self, *args, **kwargs): 121 | dns_blacklist = kwargs.pop('dns_blacklist') 122 | dns_servers = kwargs.pop('dns_servers') 123 | dns_timeout = kwargs.pop('dns_timeout', 2) 124 | super(self.__class__, self).__init__(*args, **kwargs) 125 | self.dns_servers = dns_servers 126 | self.dns_v4_servers = [x for x in self.dns_servers if ':' not in x] 127 | self.dns_v6_servers = [x for x in self.dns_servers if ':' in x] 128 | self.dns_intranet_servers = set([x for x in self.dns_servers if self.is_local_addr(x)]) 129 | self.dns_blacklist = set(dns_blacklist) 130 | self.dns_timeout = int(dns_timeout) 131 | self.dns_cache = ExpireCache(max_size=65536) 132 | self.dns_trust_servers = set(['8.8.8.8', '8.8.4.4', '2001:4860:4860::8888', '2001:4860:4860::8844']) 133 | if pygeoip: 134 | for dirname in ('.', '/usr/share/GeoIP/', '/usr/local/share/GeoIP/'): 135 | filename = os.path.join(dirname, 'GeoIP.dat') 136 | if os.path.isfile(filename): 137 | geoip = pygeoip.GeoIP(filename) 138 | for dnsserver in self.dns_servers: 139 | if ':' not in dnsserver and geoip.country_name_by_addr(dnsserver) not in ('China',): 140 | self.dns_trust_servers.add(dnsserver) 141 | break 142 | 143 | def handle(self, data, address): 144 | logging.debug('receive from %r data=%r', address, data) 145 | request = dnslib.DNSRecord.parse(data) 146 | qname = str(request.q.qname) 147 | qtype = request.q.qtype 148 | try: 149 | reply_data = self.dns_cache.get((qname, qtype)) 150 | except KeyError: 151 | reply_data = '' 152 | sock_v4 = sock_v6 = None 153 | socks = [] 154 | is_local_hostname = '.' not in qname 155 | if 'USERDNSDOMAIN' in os.environ: 156 | is_local_hostname = qname.lower().endswith('.' + os.environ['USERDNSDOMAIN'].lower()) 157 | if is_local_hostname and not self.dns_intranet_servers: 158 | logging.warning('qname=%r is a plain hostname, need intranet dns server!!!', qname) 159 | reply = dnslib.DNSRecord(header=dnslib.DNSHeader(id=request.header.id, rcode=3)) 160 | self.sendto(reply.pack(), address) 161 | return 162 | dns_v4_servers = self.dns_v4_servers if not is_local_hostname else [x for x in self.dns_intranet_servers if ':' not in x] 163 | dns_v6_servers = self.dns_v6_servers if not is_local_hostname else [x for x in self.dns_intranet_servers if ':' in x] 164 | if dns_v4_servers: 165 | sock_v4 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 166 | socks.append(sock_v4) 167 | if dns_v6_servers: 168 | sock_v6 = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) 169 | socks.append(sock_v6) 170 | for _ in xrange(2): 171 | if reply_data: 172 | break 173 | try: 174 | need_reply_servers = set() 175 | for dnsserver in dns_v4_servers: 176 | sock_v4.sendto(data, (dnsserver, 53)) 177 | need_reply_servers.add(dnsserver) 178 | for dnsserver in dns_v6_servers: 179 | sock_v6.sendto(data, (dnsserver, 53)) 180 | need_reply_servers.add(dnsserver) 181 | timeout_at = time.time() + self.dns_timeout 182 | while time.time() < timeout_at: 183 | if reply_data: 184 | break 185 | ins, _, _ = select.select(socks, [], [], 0.1) 186 | for sock in ins: 187 | reply_data, (reply_server, _) = sock.recvfrom(512) 188 | reply = dnslib.DNSRecord.parse(reply_data) 189 | iplist = [str(x.rdata) for x in reply.rr] 190 | if any(x in self.dns_blacklist for x in iplist): 191 | logging.warning('query qname=%r reply bad iplist=%r, continue', qname, iplist) 192 | reply_data = '' 193 | continue 194 | if reply.header.rcode and not iplist and need_reply_servers and reply_server not in self.dns_trust_servers: 195 | try: 196 | need_reply_servers.remove(reply_server) 197 | except KeyError: 198 | pass 199 | if need_reply_servers: 200 | logging.warning('query qname=%r qtype=%r reply nonzero rcode=%r, wait other need_reply_servers=%s, continue', qname, qtype, reply.header.rcode, need_reply_servers) 201 | reply_data = '' 202 | continue 203 | else: 204 | logging.info('query qname=%r qtype=%r reply nonzero rcode=%r', qname, qtype, reply.header.rcode) 205 | ttl = max(x.ttl for x in reply.rr) if reply.rr else 600 206 | logging.debug('query qname=%r qtype=%r reply_server=%r reply iplist=%s, ttl=%r', qname, qtype, reply_server, iplist, ttl) 207 | if iplist or qname.endswith('.in-addr.arpa'): 208 | self.dns_cache.set((qname, qtype), reply_data, ttl*2) 209 | break 210 | except socket.error as e: 211 | logging.warning('handle dns data=%r socket: %r', data, e) 212 | for sock in socks: 213 | sock.close() 214 | if reply_data: 215 | return self.sendto(data[:2] + reply_data[2:], address) 216 | 217 | 218 | def test(): 219 | logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(asctime)s %(message)s', datefmt='[%b %d %H:%M:%S]') 220 | dns_servers = ['114.114.114.114', '114.114.115.115', '8.8.8.8', '8.8.4.4'] 221 | dns_blacklist = '1.1.1.1|255.255.255.255|74.125.127.102|74.125.155.102|74.125.39.102|74.125.39.113|209.85.229.138|4.36.66.178|8.7.198.45|37.61.54.158|46.82.174.68|59.24.3.173|64.33.88.161|64.33.99.47|64.66.163.251|65.104.202.252|65.160.219.113|66.45.252.237|72.14.205.104|72.14.205.99|78.16.49.15|93.46.8.89|128.121.126.139|159.106.121.75|169.132.13.103|192.67.198.6|202.106.1.2|202.181.7.85|203.161.230.171|203.98.7.65|207.12.88.98|208.56.31.43|209.145.54.50|209.220.30.174|209.36.73.33|209.85.229.138|211.94.66.147|213.169.251.35|216.221.188.182|216.234.179.13|243.185.187.3|243.185.187.39'.split('|') 222 | logging.info('serving at port 53...') 223 | DNSServer(('', 53), dns_servers=dns_servers, dns_blacklist=dns_blacklist).serve_forever() 224 | 225 | 226 | if __name__ == '__main__': 227 | test() 228 | -------------------------------------------------------------------------------- /local/goagent-gtk.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # coding:utf-8 3 | # Contributor: 4 | # Phus Lu 5 | 6 | __version__ = '1.6' 7 | 8 | GOAGENT_LOGO_DATA = """\ 9 | iVBORw0KGgoAAAANSUhEUgAAADcAAAA3CAYAAACo29JGAAAABHNCSVQICAgIfAhkiAAADVdJREFU 10 | aIHtmnuMXPV1xz/ndx8z4/UT8bKTEscOBa1FAt2kSYvAECxegTZRu6uGJDQJld0ofShNpJZSOlnU 11 | KFWhSUorWlMpoaIq6q4gECANwcQ4SkkpXqVJ8DQpsBGPUgUoxsa787j39/v2j3tndmcfthmbVK1y 12 | tL+9sztz7/19f9/zO+d7zh34qf3fNHtdrlqvu5H/2hA19687zPX3AVBbt0FT65/3jI+H12Uux8Xq 13 | dTc8OpGCBluwrfV4ZPvO5HhO6fgwNzoRMTnmASS4+PqJNzfb+WmJ403tzK+vpNFJyvMhb7hYlmM6 14 | 1OrkL9TS6PlOlj1z8prq03eNf/A5ALbWY/aM58djWscOrl53jI+HS+p3bJxp2TVZnm9DbDbnTsLF 15 | 5Q1UDKk4R8VrKYDPEOGlyKJHh5Jw84M3XvN1qDs4djc9RnCjEUz6i/5o8oqZjC8KTjIXQQj41qEM 16 | 4TEcBBXgoHecAxphxC5KMEQcsj//1l/u+NTxYDAa/NS6g1u0rT5x2qFWeDB4naA885Hy78SEx4O0 17 | 0SJXQYoMi/sH84cDBbzPgnzHKkPnb3zHpTwz8andbN0a8/TTAzPoBj1xeHRLDKjV0XuxeLWZQpK4 18 | L178ng3v+taNV10yVIkvM3hVZl4oFHQFei6KetcycBgpUMlbM+2O17WXX3vrz7JnT069PvAcBz6x 19 | sW2/igvY6RbFWNDsyWvX3DT+6Yd5y2///erdf3rVNyLHw3FSjSSyYgccZhdIMnAEmYsr6cFmuAJg 20 | uEE86BwHPnF41zprAFnQSiwYjrjTbK5jz3j+5B5eBTBsrUKQ2VHsbWHlj8yMyKI3AjSmN+hIpy5n 21 | A4MrczAKISGGEKzycqvz+W3XT+xYtXrtj//7pZd+s5WF84JvB4elXTeUNC+CzsNswgyTEIaBHMDw 22 | pl3WmPoJg2vUCrc0cy3MdcA3FdwvHDzUeeTVmRcOAafifbsgLVgRHi0ys1hBMqyfTRlYCVgQyvcb 23 | 0+sGZm7gPTcyMgJA8GG1JdUUF6+RS7C4spKkeqpwWFKpuKRSsbiSWlKt4FwsFQz1UkHXrPtLhoHr 24 | vT0y6BSPjrmR7TuT5vp11nh4X2APARo29ewjDuoujuwxF9prIXQkpUYIeCQLkXkvmYQUAZ0QwhlE 25 | 8Wb53JtZfxrqkiYTAjkTwK9f8Uh02+/Tnw62DEe8cFKwC/ccNg8efqMXsqobvxnYP+rAOGz95O1/ 26 | mEWVz/jmwVlgRVep9NSLgaR2nNYqKe2b93xhx++WWnUpmtEEkY3hl7vt8syVelH1uruAs3856/jL 27 | zw1sMlMKQAgGJhEihEFAyAjdyRbLIUl2EGefUMfn+ZuV5whVrbdcmj9fJJMZ5LnzqkP7isvvqyTN 28 | lXgLIIfksfN+hEtvt3MeeljCmbFkol8GXN0xOeYvuf4rW8719tc+6DyLUmQeCOUqdxdzQVJ285jo 29 | slHeW8qQzzHMocBcTNH84CkzkKnMo9m7qYYqHSDq6dML8a2P6tHz62bfvGE5BheDKxm7rP7V4Vfy 30 | /KFgdkrIOy1om0nWN/EuoKVe9z4ztwCSIjOL5qLlYua6sMzMOAjIXmE2nIA3D6Hcp6XiWcm4pi76 31 | oY089I/aTWwX0rcHF0fLyX2qT+xLX243bwu4U0JntmlQNagA6bEMg4hutLTFMqzAWLilJLEaMNJi 32 | qFJINKUYVQIxWcjJm5/Rdz80xAWLmesDVxSL42HP49Pvs6T2Dt9ptc2imiQtnMRrtu6u6LqideXY 33 | gnRXFrvmHAVz5T6QhZ40DQgjphVEVZtpP3eJGdLekb5itw/c1A+fF0A7hDGZC+ZccVkLdszgFsbl 34 | +QFlzqPVPYY8tEkwUEwww8J8EVeIAiMQI9S5rADQL2X63XLPeL59594VwYdzlLWdoagAdgTRO4j1 35 | knZ5EKUGlRniQLP6Hc57wynO5auRPPMVTamNkEV0ZODfKcmxY7k9NzoRAUw/98Jmw70xBB8kou6d 36 | X/vMj3a44mhmoEwWW+RbBxrfvvSf2LD5ymhV5JBlyFzf5QU4HFkQ0ia+v21jsVXnMPVejKzb5ACy 37 | OLyFJE0Msjk1vwRrc4GwF+5Kt+pIaklql8cjD0I7iFYus0olSWuV8Al9+uSZTMnv0c6EWYQt0GuF 38 | Axsio+KG6OSbAZga6SmfXiqYWn+vAWQ+bMTSIoLIycwvjczKbW49VG1hqUVpGseukPdlBaBe/6Ss 39 | COani3n9lSg0D9XczCcfuPG3bsv2XnJLsqJzJjPKMBLCgjU2KLNJIJU4pE0ATE/1PtUDN9zYQgNI 40 | zE7tFHnUiv22lFmhPAwTCsIUJ7WKCzOdxFpT7Q5PO2e5ASZJ1lUuoaxkukm9F0qanVCd2vvAjjt0 41 | qr2aTV36V0m18zGaIcNZXNxiUViFUPp2MMO0AYDREcFUPziGi0NklnZLr+X2W5cxGQFFmAtWi9p/ 42 | sfuxsz/LN8768dILsti6okQAX2KIj9z2npyLr02q2dnM+gxICCoZ0hLMUbiFAZasAqCxBHO1DUV9 43 | lkmzxRnLF9BFUWleOGLHzMqaXbXrhvffr32/tC3nV24OXmeC7/p+Wd4ECMJCWbBZIBPWISgjqqGw 44 | IVlBGmc5zPgMLIEAZuqWQUuuDlixSqFI4s0lmJvaVbS+Ffx/ylKZOSlIZv0d5G5JAgqRi9zKtP2R 45 | B2/4wP2HvveBLzGUfTi2AJkvllVl1u1TYfNUSZcVn0PHixnaiAhnSemJYrkOtoAIERBOQr7wmJG5 46 | XNcDN7Juv6aA2OKncnmTgnOGLXRNM5lQ2+JqpWqHJnf9yQfvmv3uVV9YeXL+YV7uzAIRBFeU0/0V 47 | Qr8mVX/BauaASvfzy4dp5t4JMpDhzVA8XbA0Qpe5XiqYWr+9aIebf0p5e9awRFjoW/mSOQkXW86L 48 | rdNu0r+c/6ZqNfs4B7IWUMWoIEuQJYVrLTvi3hAxMtfX/TuSCTALGAlNmqTucQCmp3rlz1xiHLcA 49 | 8PEt7R8B0xYnVigDp7nyBooepCWRsgONz583xdqTftUNRQ4vw8yhhf2D12hHI4YEhSviSZ1DNHjb 50 | riclbH7p0y+/tu9MxsbGfBzZYxalASNQMt9dTmcIF0nSfjCPxacLc8W2lgh2pKkduxXSzTB5Uieo 51 | fNXMApMsL5y7VknSSQuZQzJM1rcLZJjJQpcg7531enVH1aE8RutGJQlImFWbNLkDgNHD1XO37sig 52 | 7h7648sesDx7xCXVVCE0zbne/lav+91XuzAn7ZeYC8wVrq9Fdi45jKKxYC1WRBGK77Wf2/Xv2k28 53 | sN2wmLnRLWZmYc2q6sdQeMWSSq3Qf9aW1IZSNxrtfgQlyIXMdfWWGaAM1KK8zuLB3JDaSw5oE9Sk 54 | Qo2WDhBXr5MwXlwchha3GSbHPKOj0deuu+x751/75cvzKN7pk8pZVpTPKPgKUYK1OyfOITMWS4jy 55 | LZXAFaAaJySWFKd0UwP9KaJ3DIu0Zy+9hAAZz5JFH7W3P/jE0fdQACYnPaMT0Tc/+75vb6/f+64f 56 | +OzSLPNvrSTRCqEgn8VDVTsAFB46n7mFtBXM5aQupmNfo+32QkjBchSsJ4b6lHGgG7rm/Lr0uBBy 57 | yJ/g4Kr77ML7Xiq7X0u295Zv7U2OeUYnolvHr5wF7ipHz7q6EOaDW+gZZZQVOZUoxrt7bPjLfyPt 58 | TMy2Z8vdug42Pj//LGOaIFoOWPfuR7SR7XuT5vrpvs/+weZ/Ta6++qYZNUb/ljXRb3CwXSTxsIQr 59 | FbnPEDPgWkVpICEVzJkyghwuJAS1qLqVtJJbSKev5wVSTqazaFLDjczs8On+qNrpU7e+fdEqf2gv 60 | 4Woo3RKWZq77t1nZ6xyCfKjQARR7xwE1B50AWS7EEGmU0CK1LY2OdhNsCwM9Ph74QQi10YXnat7v 61 | 0rpkd6tWBYRHBAI5ZhDcLDN6gI7tI4kMrEMgYIViYtXIwJlzcHDD03M9q+KwdCoo/lk6kDkgwgwi 62 | HJF7GVv5bjv765fiTnknefQPRAzhceAKr5pu/i+Aa2wqwcQ51n2cVtbWS+0E6zt2qMWO3O62t935 63 | qPaOrOGttzex2ucI1sEpoNACYEtj4CkODq5ZMmf2b3gVgtmKxsNhw1S3wAyCyNYAMDJ1qFAX+VoM 64 | yORQKJ7dNkcGFuIDU65uV+PZa9Yx88oUqW2k6ZuYaotqt8X1nDAFHB6lv8MMd1O1DYTm51jNBRz0 65 | T2A/8/Oc83cHykkOBPCYZG5XGejJX/tFyO8h4URmshzhsRARFBWyZhG4OZCRGbmeIfgTOSFewcH8 66 | Raz6Xjvr/keO9PztdQVHMT1nRtD3338mlezPCP7KIrR7aOcCsrK3t6ASD0ZQSmywKoL9GUTubnzt 67 | Ojvnnsbhnrv9xMAVAEcjs8mikv/B2Ln4fAz8RYjTWWFpsbMXgMsDNH0T8STO7SIkd9rZX/ln4IhP 68 | TI/Wjlv1JdUdNKwHcvfumFNuPQPLziD3m3DRGyBPkWsS2s/h4qcI+g/uPOcJK79rWbTv0bEy9rqZ 69 | tDXWvuH0qD8PponhVLu3Dv6dmGXsda2bpdGIxr6lvzy3D2CLt7HJY3a/n9r/N/sfrBt2air9qXQA 70 | AAAASUVORK5CYII=""" 71 | 72 | import sys 73 | import os 74 | import re 75 | import thread 76 | import base64 77 | import platform 78 | 79 | try: 80 | import pygtk 81 | pygtk.require('2.0') 82 | import gtk 83 | gtk.gdk.threads_init() 84 | except Exception: 85 | sys.exit(os.system(u'gdialog --title "GoAgent GTK" --msgbox "\u8bf7\u5b89\u88c5 python-gtk2" 15 60'.encode(sys.getfilesystemencoding() or sys.getdefaultencoding(), 'replace'))) 86 | try: 87 | import pynotify 88 | pynotify.init('GoAgent Notify') 89 | except ImportError: 90 | pynotify = None 91 | try: 92 | import appindicator 93 | except ImportError: 94 | appindicator = None 95 | try: 96 | import vte 97 | except ImportError: 98 | sys.exit(gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, u'请安装 python-vte').run()) 99 | 100 | 101 | def spawn_later(seconds, target, *args, **kwargs): 102 | def wrap(*args, **kwargs): 103 | import time 104 | time.sleep(seconds) 105 | return target(*args, **kwargs) 106 | return thread.start_new_thread(wrap, args, kwargs) 107 | 108 | 109 | def drop_desktop(): 110 | filename = os.path.abspath(__file__) 111 | dirname = os.path.dirname(filename) 112 | DESKTOP_FILE = '''\ 113 | #!/usr/bin/env xdg-open 114 | [Desktop Entry] 115 | Type=Application 116 | Name=GoAgent GTK 117 | Comment=GoAgent GTK Launcher 118 | Categories=Network;Proxy; 119 | Exec=/usr/bin/env python "%s" 120 | Icon=%s/goagent-logo.png 121 | Terminal=false 122 | StartupNotify=true 123 | ''' % (filename, dirname) 124 | for dirname in map(os.path.expanduser, ['~/Desktop', u'~/桌面']): 125 | if os.path.isdir(dirname): 126 | filename = os.path.join(dirname, 'goagent-gtk.desktop') 127 | with open(filename, 'w') as fp: 128 | fp.write(DESKTOP_FILE) 129 | os.chmod(filename, 0755) 130 | 131 | 132 | def should_visible(): 133 | import ConfigParser 134 | ConfigParser.RawConfigParser.OPTCRE = re.compile(r'(?P