Full Code of v2ray/v2ray.github.io for AI

master 40970b170d11 cached
476 files
9.3 MB
2.5M tokens
1530 symbols
1 requests
Download .txt
Showing preview only (9,881K chars total). Download the full file or copy to clipboard to get everything.
Repository: v2ray/v2ray.github.io
Branch: master
Commit: 40970b170d11
Files: 476
Total size: 9.3 MB

Directory structure:
gitextract_ndww95gq/

├── .gitignore
├── CNAME
├── awesome/
│   ├── ads.html
│   └── tools.html
├── chapter_00/
│   ├── 01_versions.html
│   ├── 02_donate.html
│   ├── command.html
│   ├── faq.html
│   ├── help.html
│   ├── install.html
│   ├── start.html
│   └── workflow.html
├── chapter_02/
│   ├── 01_overview.html
│   ├── 02_protocols.html
│   ├── 03_routing.html
│   ├── 04_dns.html
│   ├── 05_transport.html
│   ├── api.html
│   ├── env.html
│   ├── index.html
│   ├── mux.html
│   ├── policy.html
│   ├── protocols/
│   │   ├── blackhole.html
│   │   ├── dns.html
│   │   ├── dokodemo.html
│   │   ├── freedom.html
│   │   ├── http.html
│   │   ├── mtproto.html
│   │   ├── shadowsocks.html
│   │   ├── socks.html
│   │   └── vmess.html
│   ├── reverse.html
│   ├── stats.html
│   └── transport/
│       ├── domainsocket.html
│       ├── h2.html
│       ├── mkcp.html
│       ├── quic.html
│       ├── tcp.html
│       └── websocket.html
├── core/
│   └── index.html
├── developer/
│   ├── index.html
│   ├── intro/
│   │   ├── compile.html
│   │   ├── design.html
│   │   ├── guide.html
│   │   ├── roadmap.html
│   │   └── tools.html
│   └── protocols/
│       ├── mkcp.html
│       ├── muxcool.html
│       └── vmess.html
├── en/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── start.html
│       ├── versions.html
│       └── workflow.html
├── ext/
│   └── index.html
├── fa/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   ├── ui_client/
│   │   ├── README.md
│   │   ├── android.md
│   │   ├── ios.md
│   │   ├── osx.md
│   │   ├── service.md
│   │   └── windows.md
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── license.md
│       ├── pgp.md
│       ├── start.html
│       ├── tg.md
│       ├── versions.html
│       └── workflow.html
├── gitbook/
│   ├── fonts/
│   │   └── fontawesome/
│   │       └── FontAwesome.otf
│   ├── gitbook-plugin-anchors/
│   │   └── plugin.css
│   ├── gitbook-plugin-ga/
│   │   └── plugin.js
│   ├── gitbook-plugin-hints/
│   │   └── plugin-hints.css
│   ├── gitbook-plugin-mermaid-gb3/
│   │   ├── book/
│   │   │   └── plugin.js
│   │   └── mermaid/
│   │       ├── mermaid.css
│   │       └── mermaid.forest.css
│   ├── gitbook-plugin-prism/
│   │   ├── prism-a11y-dark.css
│   │   ├── prism-atom-dark.css
│   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   ├── prism-cb.css
│   │   ├── prism-darcula.css
│   │   ├── prism-dracula.css
│   │   ├── prism-duotone-dark.css
│   │   ├── prism-duotone-earth.css
│   │   ├── prism-duotone-forest.css
│   │   ├── prism-duotone-light.css
│   │   ├── prism-duotone-sea.css
│   │   ├── prism-duotone-space.css
│   │   ├── prism-ghcolors.css
│   │   ├── prism-hopscotch.css
│   │   ├── prism-material-dark.css
│   │   ├── prism-material-light.css
│   │   ├── prism-material-oceanic.css
│   │   ├── prism-pojoaque.css
│   │   ├── prism-shades-of-purple.css
│   │   ├── prism-synthwave84.css
│   │   ├── prism-vs.css
│   │   └── prism-xonokai.css
│   ├── gitbook.js
│   ├── style.css
│   └── theme.js
├── index.html
├── ko/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   ├── ui_client/
│   │   ├── README.md
│   │   ├── android.md
│   │   ├── ios.md
│   │   ├── osx.md
│   │   ├── service.md
│   │   └── windows.md
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── start.html
│       ├── versions.html
│       └── workflow.html
├── links/
│   └── chinasites/
│       └── index.html
├── robots.txt
├── ru/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   ├── ui_client/
│   │   ├── README.md
│   │   ├── android.md
│   │   ├── ios.md
│   │   ├── osx.md
│   │   ├── service.md
│   │   └── windows.md
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── license.md
│       ├── pgp.md
│       ├── start.html
│       ├── tg.md
│       ├── versions.html
│       └── workflow.html
├── styles/
│   └── website.css
└── vi/
    ├── awesome/
    │   ├── ads.html
    │   └── tools.html
    ├── configuration/
    │   ├── api.html
    │   ├── dns.html
    │   ├── env.html
    │   ├── index.html
    │   ├── mux.html
    │   ├── overview.html
    │   ├── policy.html
    │   ├── protocols/
    │   │   ├── blackhole.html
    │   │   ├── dns.html
    │   │   ├── dokodemo.html
    │   │   ├── freedom.html
    │   │   ├── http.html
    │   │   ├── mtproto.html
    │   │   ├── shadowsocks.html
    │   │   ├── socks.html
    │   │   └── vmess.html
    │   ├── protocols.html
    │   ├── reverse.html
    │   ├── routing.html
    │   ├── stats.html
    │   ├── transport/
    │   │   ├── domainsocket.html
    │   │   ├── h2.html
    │   │   ├── mkcp.html
    │   │   ├── quic.html
    │   │   ├── tcp.html
    │   │   └── websocket.html
    │   └── transport.html
    ├── developer/
    │   └── tools.html
    ├── gitbook/
    │   ├── fonts/
    │   │   └── fontawesome/
    │   │       └── FontAwesome.otf
    │   ├── gitbook-plugin-anchors/
    │   │   └── plugin.css
    │   ├── gitbook-plugin-ga/
    │   │   └── plugin.js
    │   ├── gitbook-plugin-hints/
    │   │   └── plugin-hints.css
    │   ├── gitbook-plugin-mermaid-gb3/
    │   │   ├── book/
    │   │   │   └── plugin.js
    │   │   └── mermaid/
    │   │       ├── mermaid.css
    │   │       └── mermaid.forest.css
    │   ├── gitbook-plugin-prism/
    │   │   ├── prism-a11y-dark.css
    │   │   ├── prism-atom-dark.css
    │   │   ├── prism-base16-ateliersulphurpool.light.css
    │   │   ├── prism-cb.css
    │   │   ├── prism-darcula.css
    │   │   ├── prism-dracula.css
    │   │   ├── prism-duotone-dark.css
    │   │   ├── prism-duotone-earth.css
    │   │   ├── prism-duotone-forest.css
    │   │   ├── prism-duotone-light.css
    │   │   ├── prism-duotone-sea.css
    │   │   ├── prism-duotone-space.css
    │   │   ├── prism-ghcolors.css
    │   │   ├── prism-hopscotch.css
    │   │   ├── prism-material-dark.css
    │   │   ├── prism-material-light.css
    │   │   ├── prism-material-oceanic.css
    │   │   ├── prism-pojoaque.css
    │   │   ├── prism-shades-of-purple.css
    │   │   ├── prism-synthwave84.css
    │   │   ├── prism-vs.css
    │   │   └── prism-xonokai.css
    │   ├── gitbook.js
    │   ├── style.css
    │   └── theme.js
    ├── index.html
    ├── styles/
    │   └── website.css
    ├── ui_client/
    │   ├── README.md
    │   ├── android.md
    │   ├── ios.md
    │   ├── osx.md
    │   ├── service.md
    │   └── windows.md
    └── welcome/
        ├── command.html
        ├── donate.html
        ├── faq.html
        ├── help.html
        ├── install.html
        ├── start.html
        ├── versions.html
        └── workflow.html

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.git
.cache

================================================
FILE: CNAME
================================================
www.v2ray.com

================================================
FILE: awesome/ads.html
================================================

<!DOCTYPE HTML>
<html lang="zh" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>以及广告 · Project V 官方网站</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <script type="text/javascript">
function inIframe () {
    try { return window.self !== window.top; } catch (e) { return true; }
}
function isValidDomain() {
    var host = window.location.hostname;
    var domains = ['v2ray.com', 'github.io', 'mux.cool', 'v2ray.cool', 'archive.org'];
    for (var dx in domains) {
        if (host.indexOf(domains[dx]) >= 0) {
            return true;
        }
    }
    return false;
}
if (inIframe() || !isValidDomain()) {
    window.top.location.href = 'https://www.v2ray.com/';
}
        </script>
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-anchors/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism-base16-ateliersulphurpool.light.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="../styles/website.css">
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" type="image/png" href="/resources/favicon-152.png">
    <link rel="apple-touch-icon-precomposed" sizes="180x180" type="image/png" href="/resources/favicon-180.png">
    <link rel="icon" type="image/png" href="/resources/favicon-192.png">
    <link rel="shortcut icon" href="/resources/favicon.ico" type="image/x-icon">
    
    <link href="https://fonts.loli.net/css?family=Source+Code+Pro:400|Open+Sans:400,700&amp;subset=cyrillic" rel="stylesheet">
    

    
    <link rel="next" href="../developer/" />
    
    
    <link rel="prev" href="tools.html" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    Project V
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.1.1" data-path="../chapter_00/01_versions.html">
            
                <a href="../chapter_00/01_versions.html">
            
                    
                    版本历史
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.2" data-path="../chapter_00/workflow.html">
            
                <a href="../chapter_00/workflow.html">
            
                    
                    使用方式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.3" data-path="../chapter_00/install.html">
            
                <a href="../chapter_00/install.html">
            
                    
                    下载安装
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.4" data-path="../chapter_00/start.html">
            
                <a href="../chapter_00/start.html">
            
                    
                    新手上路
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.5" data-path="../chapter_00/command.html">
            
                <a href="../chapter_00/command.html">
            
                    
                    命令行参数
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.6" data-path="../chapter_00/02_donate.html">
            
                <a href="../chapter_00/02_donate.html">
            
                    
                    捐助支持
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.7" data-path="../chapter_00/help.html">
            
                <a href="../chapter_00/help.html">
            
                    
                    寻求帮助
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.8" data-path="../chapter_00/faq.html">
            
                <a href="../chapter_00/faq.html">
            
                    
                    常见问题
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.9" >
            
                <a target="_blank" href="https://steemit.com/@v2ray">
            
                    
                    博客↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.10" >
            
                <a target="_blank" href="https://toutyrater.github.io/">
            
                    
                    白话文教程↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.11" >
            
                <a target="_blank" href="https://guide.v2fly.org/">
            
                    
                    新白话文教程(社区版)↪
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../chapter_02/">
            
                <a href="../chapter_02/">
            
                    
                    配置文件
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../chapter_02/01_overview.html">
            
                <a href="../chapter_02/01_overview.html">
            
                    
                    文件格式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../chapter_02/02_protocols.html">
            
                <a href="../chapter_02/02_protocols.html">
            
                    
                    协议列表
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.2.1" data-path="../chapter_02/protocols/blackhole.html">
            
                <a href="../chapter_02/protocols/blackhole.html">
            
                    
                    Blackhole
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.2" data-path="../chapter_02/protocols/dns.html">
            
                <a href="../chapter_02/protocols/dns.html">
            
                    
                    DNS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.3" data-path="../chapter_02/protocols/dokodemo.html">
            
                <a href="../chapter_02/protocols/dokodemo.html">
            
                    
                    Dokodemo
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.4" data-path="../chapter_02/protocols/freedom.html">
            
                <a href="../chapter_02/protocols/freedom.html">
            
                    
                    Freedom
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.5" data-path="../chapter_02/protocols/http.html">
            
                <a href="../chapter_02/protocols/http.html">
            
                    
                    HTTP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.6" data-path="../chapter_02/protocols/mtproto.html">
            
                <a href="../chapter_02/protocols/mtproto.html">
            
                    
                    MTProto
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.7" data-path="../chapter_02/protocols/shadowsocks.html">
            
                <a href="../chapter_02/protocols/shadowsocks.html">
            
                    
                    Shadowsocks
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.8" data-path="../chapter_02/protocols/socks.html">
            
                <a href="../chapter_02/protocols/socks.html">
            
                    
                    SOCKS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.9" data-path="../chapter_02/protocols/vmess.html">
            
                <a href="../chapter_02/protocols/vmess.html">
            
                    
                    VMess
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.3" data-path="../chapter_02/policy.html">
            
                <a href="../chapter_02/policy.html">
            
                    
                    本地策略
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.4" data-path="../chapter_02/03_routing.html">
            
                <a href="../chapter_02/03_routing.html">
            
                    
                    路由配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.5" data-path="../chapter_02/04_dns.html">
            
                <a href="../chapter_02/04_dns.html">
            
                    
                    DNS 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.6" data-path="../chapter_02/mux.html">
            
                <a href="../chapter_02/mux.html">
            
                    
                    Mux 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.7" data-path="../chapter_02/api.html">
            
                <a href="../chapter_02/api.html">
            
                    
                    API 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.8" data-path="../chapter_02/stats.html">
            
                <a href="../chapter_02/stats.html">
            
                    
                    统计信息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.9" data-path="../chapter_02/reverse.html">
            
                <a href="../chapter_02/reverse.html">
            
                    
                    反向代理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10" data-path="../chapter_02/05_transport.html">
            
                <a href="../chapter_02/05_transport.html">
            
                    
                    传输配置
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.10.1" data-path="../chapter_02/transport/tcp.html">
            
                <a href="../chapter_02/transport/tcp.html">
            
                    
                    TCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.2" data-path="../chapter_02/transport/mkcp.html">
            
                <a href="../chapter_02/transport/mkcp.html">
            
                    
                    mKCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.3" data-path="../chapter_02/transport/websocket.html">
            
                <a href="../chapter_02/transport/websocket.html">
            
                    
                    WebSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.4" data-path="../chapter_02/transport/h2.html">
            
                <a href="../chapter_02/transport/h2.html">
            
                    
                    HTTP/2
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.5" data-path="../chapter_02/transport/domainsocket.html">
            
                <a href="../chapter_02/transport/domainsocket.html">
            
                    
                    DomainSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.6" data-path="../chapter_02/transport/quic.html">
            
                <a href="../chapter_02/transport/quic.html">
            
                    
                    QUIC
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.11" data-path="../chapter_02/env.html">
            
                <a href="../chapter_02/env.html">
            
                    
                    环境变量
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="tools.html">
            
                <a href="tools.html">
            
                    
                    神一样的工具们
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter active" data-level="1.3.1" data-path="ads.html">
            
                <a href="ads.html">
            
                    
                    以及广告
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../developer/">
            
                <a href="../developer/">
            
                    
                    开发人员手册
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../developer/intro/roadmap.html">
            
                <a href="../developer/intro/roadmap.html">
            
                    
                    开发计划
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.2" data-path="../developer/intro/guide.html">
            
                <a href="../developer/intro/guide.html">
            
                    
                    开发指引
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.3" data-path="../developer/intro/design.html">
            
                <a href="../developer/intro/design.html">
            
                    
                    核心设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.4" data-path="../developer/intro/compile.html">
            
                <a href="../developer/intro/compile.html">
            
                    
                    配置开发环境
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.5" data-path="../developer/intro/tools.html">
            
                <a href="../developer/intro/tools.html">
            
                    
                    开发工具
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6" >
            
                <span>
            
                    
                    协议细节
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.6.1" data-path="../developer/protocols/vmess.html">
            
                <a href="../developer/protocols/vmess.html">
            
                    
                    VMess 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.2" data-path="../developer/protocols/mkcp.html">
            
                <a href="../developer/protocols/mkcp.html">
            
                    
                    mKCP 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.3" data-path="../developer/protocols/muxcool.html">
            
                <a href="../developer/protocols/muxcool.html">
            
                    
                    Mux.Cool
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本書使用 GitBook 釋出
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    
    <a class="btn pull-left" href="/awesome/ads.html" target="_blank">
        <img src="/resources/flag_cn.svg" alt="Chinese" height="16">
    </a>
    <a class="btn pull-left" href="/en/awesome/ads.html" target="_blank">
        <img src="/resources/flag_en.svg" alt="English" height="16">
    </a>
    <a class="btn pull-left" href="/ru/awesome/ads.html" target="_blank">
        <img src="/resources/flag_ru.svg" alt="Russian" height="16">
    </a>
    <a class="btn pull-left" href="/ko/awesome/ads.html" target="_blank">
        <img src="/resources/flag_ko.svg" alt="Korean" height="16">
    </a>
    <a class="btn pull-left" href="/fa/awesome/ads.html" target="_blank">
        <img src="/resources/flag_fa.svg" alt="Persian" height="16">
    </a>
    <a class="btn pull-left" href="/vi/awesome/ads.html" target="_blank">
        <img src="/resources/flag_vi.svg" alt="Vietnamese" height="16">
    </a>
    <a class="btn pull-left" href="https://crowdin.com/project/v2ray" target="_blank">
        <img src="/resources/translate.png" alt="Translate" height="16">
    </a>
    
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
                                <section class="normal markdown-section">
                                
                                <h1 id="&#x4E00;&#x4E9B;&#x63A8;&#x5E7F;"><a name="&#x4E00;&#x4E9B;&#x63A8;&#x5E7F;" class="plugin-anchor" href="#&#x4E00;&#x4E9B;&#x63A8;&#x5E7F;"><i class="fa fa-link" aria-hidden="true"></i></a>&#x4E00;&#x4E9B;&#x63A8;&#x5E7F;</h1>
<p>&#x4EE5;&#x4E0B;&#x670D;&#x52A1;&#x5747;&#x7531;&#x7B2C;&#x4E09;&#x65B9;&#x63D0;&#x4F9B;&#xFF0C;&#x548C; Project V &#x6CA1;&#x6709;&#x5229;&#x76CA;&#x5173;&#x7CFB;&#xFF0C;&#x4F46;&#x5B83;&#x4EEC;&#x53EF;&#x80FD;&#x4F1A;&#x5E2E;&#x52A9;&#x4F60;&#x66F4;&#x597D;&#x5730;&#x4F7F;&#x7528; Project V&#x3002;</p>
<h2 id="hosting"><a name="hosting" class="plugin-anchor" href="#hosting"><i class="fa fa-link" aria-hidden="true"></i></a>&#x81EA;&#x5EFA;&#x4EE3;&#x7406; </h2>
<blockquote>
<p><a href="https://letsencrypt.org/" target="_blank">Let&apos;s Encrypt</a></p>
</blockquote>
<p>Let&apos;s Encrypt&#x662F;&#x4E00;&#x4E2A;&#x4E8E;2015&#x5E74;&#x4E09;&#x5B63;&#x5EA6;&#x63A8;&#x51FA;&#x7684;&#x6570;&#x5B57;&#x8BC1;&#x4E66;&#x8BA4;&#x8BC1;&#x673A;&#x6784;&#xFF0C;&#x65E8;&#x5728;&#x4EE5;&#x81EA;&#x52A8;&#x5316;&#x6D41;&#x7A0B;&#x6D88;&#x9664;&#x624B;&#x52A8;&#x521B;&#x5EFA;&#x548C;&#x5B89;&#x88C5;&#x8BC1;&#x4E66;&#x7684;&#x590D;&#x6742;&#x6D41;&#x7A0B;&#xFF0C;&#x5E76;&#x63A8;&#x5E7F;&#x4F7F;&#x4E07;&#x7EF4;&#x7F51;&#x670D;&#x52A1;&#x5668;&#x7684;&#x52A0;&#x5BC6;&#x8FDE;&#x63A5;&#x65E0;&#x6240;&#x4E0D;&#x5728;&#xFF0C;&#x4E3A;&#x5B89;&#x5168;&#x7F51;&#x7AD9;&#x63D0;&#x4F9B;&#x514D;&#x8D39;&#x7684;SSL/TLS&#x8BC1;&#x4E66;&#x3002;</p>
<blockquote>
<p><a href="https://www.vultr.com/?ref=7269307" target="_blank">Vultr</a></p>
</blockquote>
<p>Vultr &#x662F;&#x4E00;&#x5BB6;&#x63D0;&#x4F9B;&#x65E5;&#x672C;&#x3001;&#x7F8E;&#x56FD;&#x3001;&#x6B27;&#x6D32;&#x7B49;&#x591A;&#x4E2A;&#x56FD;&#x5BB6;&#x548C;&#x5730;&#x533A;&#x673A;&#x623F;&#x7684; VPS &#x4E3B;&#x673A;&#x5546;&#xFF0C;&#x4EF7;&#x683C;&#x4F4E;&#x81F3; 2.5 &#x7F8E;&#x5143;/&#x6708;&#x3002;Vultr &#x6839;&#x636E;VPS&#x4F7F;&#x7528;&#x5C0F;&#x65F6;&#x6765;&#x8BA1;&#x8D39;&#xFF0C;&#x4F7F;&#x7528;&#x591A;&#x957F;&#x65F6;&#x95F4;&#x5C31;&#x7B97;&#x591A;&#x957F;&#x65F6;&#x95F4;&#xFF0C;&#x8BA1;&#x8D39;&#x5BF9;&#x5E94;&#x7684;&#x6B3E;&#xFF0C;&#x5E76;&#x4E14;&#x652F;&#x6301;&#x652F;&#x4ED8;&#x5B9D;&#xFF08;Alipay&#xFF09;&#x4ED8;&#x8D39;&#x3002;</p>
<blockquote>
<p><a href="https://www.bluehost.com/track/v2ray/" target="_blank">BlueHost</a></p>
</blockquote>
<p>BlueHost&#x4F5C;&#x4E3A;&#x7F8E;&#x56FD;&#x7684;&#x8001;&#x724C;&#x4E3B;&#x673A;&#x5546;&#xFF0C;&#x5728;&#x56FD;&#x5185;&#x4E5F;&#x662F;&#x975E;&#x5E38;&#x53D7;&#x6B22;&#x8FCE;&#x7684;&#x7F8E;&#x56FD;&#x4E3B;&#x673A;&#x4E4B;&#x4E00;&#x3002;&#x4EE5;&#x7A33;&#x5B9A;&#x6027;&#x5F3A;&#x3002;&#x901F;&#x5EA6;&#x5FEB;&#x8457;&#x79F0;&#xFF0C;&#x5728;&#x7AD9;&#x957F;&#x4E2D;&#x7684;&#x53E3;&#x7891;&#x548C;&#x6D41;&#x884C;&#x5EA6;&#x4E5F;&#x662F;&#x975E;&#x5E38;&#x4E4B;&#x9AD8;&#x3002;BlueHost&#x4E3B;&#x673A;&#x5546;&#x4E3A;&#x4E86;&#x5F00;&#x62D3;&#x56FD;&#x5185;&#x5E02;&#x573A;&#xFF0C;&#x81EA;2014&#x5E74;&#x5C31;&#x63A8;&#x51FA;&#x4E86;&#x4E2D;&#x6587;&#x7AD9;&#xFF0C;&#x800C;&#x4E14;&#x4E5F;&#x6781;&#x5927;&#x7684;&#x4E30;&#x5BCC;&#x4E86;&#x4E3B;&#x673A;&#x4EA7;&#x54C1;&#xFF0C;&#x53EF;&#x4EE5;&#x6EE1;&#x8DB3;&#x5927;&#x591A;&#x6570;&#x7AD9;&#x957F;&#x7684;&#x5EFA;&#x7AD9;&#x9700;&#x6C42;&#x3002;</p>
<blockquote>
<p><a href="https://www.cloudns.net/aff/id/244749/" target="_blank">ClouDNS</a></p>
</blockquote>
<p>ClouDNS&#x6210;&#x7ACB;&#x4E8E;2010&#x5E74;&#xFF0C;&#x516C;&#x53F8;&#x4F4D;&#x4E8E;&#x4FDD;&#x52A0;&#x5229;&#x4E9A;&#xFF0C;&#x63D0;&#x4F9B;&#x514D;&#x8D39;&#x548C;&#x6536;&#x8D39;&#x7684; DNS &#x6258;&#x7BA1;&#x670D;&#x52A1;&#x3002;</p>
<blockquote>
<p><a href="https://bandwagonhost.com/aff.php?aff=44317" target="_blank">Bandwagon</a></p>
</blockquote>
<p>&#x8001;&#x724C; VPS &#x9500;&#x552E;&#x5546;&#xFF0C;&#x4EF7;&#x683C;&#x4F4E;&#x5EC9;&#xFF0C;&#x6027;&#x4EF7;&#x6BD4;&#x9AD8;&#x3002;</p>
<h2 id="vpn"><a name="vpn" class="plugin-anchor" href="#vpn"><i class="fa fa-link" aria-hidden="true"></i></a>VPN</h2>
<blockquote>
<p><a href="http://babydriver.me/" target="_blank">BabyDriver</a></p>
</blockquote>
<p>&#x652F;&#x6301; V2Ray &#x7684; VPN &#x670D;&#x52A1;&#x3002;&#x4F18;&#x60E0;&#x7801;&#xFF1A;bcb518</p>
<blockquote>
<p><a href="https://xn--i2ru8q2qg.com/" target="_blank">&#x55B5;&#x5E15;&#x65AF;</a></p>
</blockquote>
<p>V2Ray &#x5C0F;&#x8303;&#x56F4;&#x5185;&#x6D4B;&#x4E2D;&#x3002;</p>
<blockquote>
<p><a href="https://xn--sjt174g.com/" target="_blank">&#x84DD;&#x5CB8;</a></p>
</blockquote>
<p>&#x57FA;&#x4E8E; V2Ray &#x7684;&#x7F51;&#x7EDC;&#x52A0;&#x901F;&#x670D;&#x52A1;&#x3002;&#x4F18;&#x60E0;&#x7801;&#xFF1A;v2ray</p>
<blockquote>
<p><a href="http://v2net.org/" target="_blank">V2Net</a></p>
</blockquote>
<p>&#x63D0;&#x4F9B;&#x5C08;&#x5C6C;&#x5BA2;&#x6236;&#x7AEF;&#x7684;V2Ray&#x670D;&#x52D9;&#x3002;9&#x6298;&#x4FC3;&#x92B7;&#x4EE3;&#x78BC;: v2ray.com</p>
<blockquote>
<p><a href="https://niconode.co/" target="_blank">NicoNode</a></p>
</blockquote>
<p>&#x652F;&#x6301; V2Ray &#x7684;&#x7F51;&#x7EDC;&#x52A0;&#x901F;&#x6539;&#x5584;&#x670D;&#x52A1;&#x3002;&#x4E13;&#x5C5E;&#x4FC3;&#x9500;&#x4EE3;&#x7801;&#xFF1A;V2RAYNOW</p>
<h2 id="crypto"><a name="crypto" class="plugin-anchor" href="#crypto"><i class="fa fa-link" aria-hidden="true"></i></a>&#x6570;&#x5B57;&#x8D27;&#x5E01; </h2>
<blockquote>
<p><a href="https://localbitcoins.com/?ch=khtm" target="_blank">LocalBitcoins</a></p>
</blockquote>
<p>&#x7EBF;&#x4E0B;&#x4EA4;&#x6613;&#x6BD4;&#x7279;&#x5E01;</p>
<blockquote>
<p><a href="https://www.coincola.com/mobile/signup?ref=QAcvfy2g" target="_blank">CoinCola</a></p>
</blockquote>
<p>CoinCola &#x662F;&#x9999;&#x6E2F;&#x573A;&#x5916;&#x4EA4;&#x6613;&#x5E73;&#x53F0;&#xFF0C;&#x652F;&#x6301;&#x7B80;&#x4F53;&#x4E2D;&#x6587;&#x754C;&#x9762;&#xFF0C;&#x4E70;&#x5356;&#x65B9;&#x51E0;&#x4E4E;&#x90FD;&#x662F;&#x56FD;&#x4EBA;&#x3002;&#x7F51;&#x9875;&#x548C;APP&#x5747;&#x64CD;&#x4F5C;&#x6D41;&#x7545;&#x3002;&#x8BA2;&#x5355;&#x4F7F;&#x7528;&#x652F;&#x4ED8;&#x5B9D;&#x3001;&#x7F51;&#x94F6;&#x3001;&#x5FAE;&#x4FE1;&#x652F;&#x4ED8;&#xFF0C;&#x50CF;&#x6DD8;&#x5B9D;&#x8D2D;&#x7269;&#x4E00;&#x6837;&#x4E70;&#x5356;&#x6BD4;&#x7279;&#x5E01;&#x3002;&#x73B0;&#x652F;&#x6301;BTC&#x3001;ETH&#x3001;BCH&#x3001;USDT&#x7B49;&#x8D27;&#x5E01;&#x3002;</p>
<blockquote>
<p><a href="https://www.binance.com/?ref=35382451" target="_blank">&#x5E01;&#x5B89;</a></p>
</blockquote>
<p>&#x6570;&#x5B57;&#x8D27;&#x5E01;&#x4EA4;&#x6613;&#x6240;</p>
<blockquote>
<p><a href="https://www.coinex.com/account/signup?refer_code=r3fmp" target="_blank">Coinex</a></p>
</blockquote>
<p>&#x6570;&#x5B57;&#x8D27;&#x5E01;&#x4EA4;&#x6613;&#x6240;</p>
<blockquote>
<p><a href="https://www.coinpayments.net/index.php?ref=abc5f542afed6b37b4b3d7fb83242d18" target="_blank">CoinPayment</a></p>
</blockquote>
<p>&#x5728;&#x7EBF;&#x6570;&#x5B57;&#x8D27;&#x5E01;&#x94B1;&#x5305;</p>

                                
                                </section>
                            
                        </div>
                    </div>
                
            </div>

        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"refcn":"awesome/ads","refen":"awesome/ads","title":"以及广告","level":"1.3.1","depth":2,"next":{"title":"开发人员手册","level":"1.4","depth":1,"path":"developer/README.md","ref":"developer/README.md","articles":[{"title":"开发计划","level":"1.4.1","depth":2,"path":"developer/intro/roadmap.md","ref":"developer/intro/roadmap.md","articles":[]},{"title":"开发指引","level":"1.4.2","depth":2,"path":"developer/intro/guide.md","ref":"developer/intro/guide.md","articles":[]},{"title":"核心设计","level":"1.4.3","depth":2,"path":"developer/intro/design.md","ref":"developer/intro/design.md","articles":[]},{"title":"配置开发环境","level":"1.4.4","depth":2,"path":"developer/intro/compile.md","ref":"developer/intro/compile.md","articles":[]},{"title":"开发工具","level":"1.4.5","depth":2,"path":"developer/intro/tools.md","ref":"developer/intro/tools.md","articles":[]},{"title":"协议细节","level":"1.4.6","depth":2,"ref":"","articles":[{"title":"VMess 协议","level":"1.4.6.1","depth":3,"path":"developer/protocols/vmess.md","ref":"developer/protocols/vmess.md","articles":[]},{"title":"mKCP 协议","level":"1.4.6.2","depth":3,"path":"developer/protocols/mkcp.md","ref":"developer/protocols/mkcp.md","articles":[]},{"title":"Mux.Cool","level":"1.4.6.3","depth":3,"path":"developer/protocols/muxcool.md","ref":"developer/protocols/muxcool.md","articles":[]}]}]},"previous":{"title":"神一样的工具们","level":"1.3","depth":1,"path":"awesome/tools.md","ref":"awesome/tools.md","articles":[{"title":"以及广告","level":"1.3.1","depth":2,"path":"awesome/ads.md","ref":"awesome/ads.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["-fontsettings","-search","-lunr","-highlight","-sharing","mermaid-gb3","anchors","ga","prism","prism-themes","hints"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"ga":{"configuration":"auto","token":"UA-73620536-1"},"prism":{"css":["prism-themes/themes/prism-base16-ateliersulphurpool.light.css"],"lang":{"objc":"objectivec","shell":"bash","text":"textile","plain":"textile"}},"mermaid-gb3":{},"anchors":{},"prism-themes":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Project V 官方网站","language":"zh","gitbook":"*"},"file":{"path":"awesome/ads.md","mtime":"2019-12-09T02:03:16.155Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-12-09T02:05:14.919Z"},"basePath":"..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../gitbook/gitbook.js"></script>
    <script src="../gitbook/theme.js"></script>
    
        
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/book/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-ga/plugin.js"></script>
        
    
    
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.min.js"></script>
    

    </body>
</html>



================================================
FILE: awesome/tools.html
================================================

<!DOCTYPE HTML>
<html lang="zh" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>神一样的工具们 · Project V 官方网站</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <script type="text/javascript">
function inIframe () {
    try { return window.self !== window.top; } catch (e) { return true; }
}
function isValidDomain() {
    var host = window.location.hostname;
    var domains = ['v2ray.com', 'github.io', 'mux.cool', 'v2ray.cool', 'archive.org'];
    for (var dx in domains) {
        if (host.indexOf(domains[dx]) >= 0) {
            return true;
        }
    }
    return false;
}
if (inIframe() || !isValidDomain()) {
    window.top.location.href = 'https://www.v2ray.com/';
}
        </script>
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-anchors/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism-base16-ateliersulphurpool.light.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="../styles/website.css">
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" type="image/png" href="/resources/favicon-152.png">
    <link rel="apple-touch-icon-precomposed" sizes="180x180" type="image/png" href="/resources/favicon-180.png">
    <link rel="icon" type="image/png" href="/resources/favicon-192.png">
    <link rel="shortcut icon" href="/resources/favicon.ico" type="image/x-icon">
    
    <link href="https://fonts.loli.net/css?family=Source+Code+Pro:400|Open+Sans:400,700&amp;subset=cyrillic" rel="stylesheet">
    

    
    <link rel="next" href="ads.html" />
    
    
    <link rel="prev" href="../chapter_02/env.html" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    Project V
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.1.1" data-path="../chapter_00/01_versions.html">
            
                <a href="../chapter_00/01_versions.html">
            
                    
                    版本历史
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.2" data-path="../chapter_00/workflow.html">
            
                <a href="../chapter_00/workflow.html">
            
                    
                    使用方式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.3" data-path="../chapter_00/install.html">
            
                <a href="../chapter_00/install.html">
            
                    
                    下载安装
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.4" data-path="../chapter_00/start.html">
            
                <a href="../chapter_00/start.html">
            
                    
                    新手上路
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.5" data-path="../chapter_00/command.html">
            
                <a href="../chapter_00/command.html">
            
                    
                    命令行参数
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.6" data-path="../chapter_00/02_donate.html">
            
                <a href="../chapter_00/02_donate.html">
            
                    
                    捐助支持
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.7" data-path="../chapter_00/help.html">
            
                <a href="../chapter_00/help.html">
            
                    
                    寻求帮助
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.8" data-path="../chapter_00/faq.html">
            
                <a href="../chapter_00/faq.html">
            
                    
                    常见问题
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.9" >
            
                <a target="_blank" href="https://steemit.com/@v2ray">
            
                    
                    博客↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.10" >
            
                <a target="_blank" href="https://toutyrater.github.io/">
            
                    
                    白话文教程↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.11" >
            
                <a target="_blank" href="https://guide.v2fly.org/">
            
                    
                    新白话文教程(社区版)↪
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../chapter_02/">
            
                <a href="../chapter_02/">
            
                    
                    配置文件
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../chapter_02/01_overview.html">
            
                <a href="../chapter_02/01_overview.html">
            
                    
                    文件格式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../chapter_02/02_protocols.html">
            
                <a href="../chapter_02/02_protocols.html">
            
                    
                    协议列表
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.2.1" data-path="../chapter_02/protocols/blackhole.html">
            
                <a href="../chapter_02/protocols/blackhole.html">
            
                    
                    Blackhole
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.2" data-path="../chapter_02/protocols/dns.html">
            
                <a href="../chapter_02/protocols/dns.html">
            
                    
                    DNS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.3" data-path="../chapter_02/protocols/dokodemo.html">
            
                <a href="../chapter_02/protocols/dokodemo.html">
            
                    
                    Dokodemo
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.4" data-path="../chapter_02/protocols/freedom.html">
            
                <a href="../chapter_02/protocols/freedom.html">
            
                    
                    Freedom
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.5" data-path="../chapter_02/protocols/http.html">
            
                <a href="../chapter_02/protocols/http.html">
            
                    
                    HTTP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.6" data-path="../chapter_02/protocols/mtproto.html">
            
                <a href="../chapter_02/protocols/mtproto.html">
            
                    
                    MTProto
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.7" data-path="../chapter_02/protocols/shadowsocks.html">
            
                <a href="../chapter_02/protocols/shadowsocks.html">
            
                    
                    Shadowsocks
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.8" data-path="../chapter_02/protocols/socks.html">
            
                <a href="../chapter_02/protocols/socks.html">
            
                    
                    SOCKS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.9" data-path="../chapter_02/protocols/vmess.html">
            
                <a href="../chapter_02/protocols/vmess.html">
            
                    
                    VMess
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.3" data-path="../chapter_02/policy.html">
            
                <a href="../chapter_02/policy.html">
            
                    
                    本地策略
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.4" data-path="../chapter_02/03_routing.html">
            
                <a href="../chapter_02/03_routing.html">
            
                    
                    路由配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.5" data-path="../chapter_02/04_dns.html">
            
                <a href="../chapter_02/04_dns.html">
            
                    
                    DNS 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.6" data-path="../chapter_02/mux.html">
            
                <a href="../chapter_02/mux.html">
            
                    
                    Mux 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.7" data-path="../chapter_02/api.html">
            
                <a href="../chapter_02/api.html">
            
                    
                    API 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.8" data-path="../chapter_02/stats.html">
            
                <a href="../chapter_02/stats.html">
            
                    
                    统计信息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.9" data-path="../chapter_02/reverse.html">
            
                <a href="../chapter_02/reverse.html">
            
                    
                    反向代理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10" data-path="../chapter_02/05_transport.html">
            
                <a href="../chapter_02/05_transport.html">
            
                    
                    传输配置
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.10.1" data-path="../chapter_02/transport/tcp.html">
            
                <a href="../chapter_02/transport/tcp.html">
            
                    
                    TCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.2" data-path="../chapter_02/transport/mkcp.html">
            
                <a href="../chapter_02/transport/mkcp.html">
            
                    
                    mKCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.3" data-path="../chapter_02/transport/websocket.html">
            
                <a href="../chapter_02/transport/websocket.html">
            
                    
                    WebSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.4" data-path="../chapter_02/transport/h2.html">
            
                <a href="../chapter_02/transport/h2.html">
            
                    
                    HTTP/2
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.5" data-path="../chapter_02/transport/domainsocket.html">
            
                <a href="../chapter_02/transport/domainsocket.html">
            
                    
                    DomainSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.6" data-path="../chapter_02/transport/quic.html">
            
                <a href="../chapter_02/transport/quic.html">
            
                    
                    QUIC
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.11" data-path="../chapter_02/env.html">
            
                <a href="../chapter_02/env.html">
            
                    
                    环境变量
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter active" data-level="1.3" data-path="tools.html">
            
                <a href="tools.html">
            
                    
                    神一样的工具们
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1" data-path="ads.html">
            
                <a href="ads.html">
            
                    
                    以及广告
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../developer/">
            
                <a href="../developer/">
            
                    
                    开发人员手册
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../developer/intro/roadmap.html">
            
                <a href="../developer/intro/roadmap.html">
            
                    
                    开发计划
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.2" data-path="../developer/intro/guide.html">
            
                <a href="../developer/intro/guide.html">
            
                    
                    开发指引
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.3" data-path="../developer/intro/design.html">
            
                <a href="../developer/intro/design.html">
            
                    
                    核心设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.4" data-path="../developer/intro/compile.html">
            
                <a href="../developer/intro/compile.html">
            
                    
                    配置开发环境
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.5" data-path="../developer/intro/tools.html">
            
                <a href="../developer/intro/tools.html">
            
                    
                    开发工具
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6" >
            
                <span>
            
                    
                    协议细节
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.6.1" data-path="../developer/protocols/vmess.html">
            
                <a href="../developer/protocols/vmess.html">
            
                    
                    VMess 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.2" data-path="../developer/protocols/mkcp.html">
            
                <a href="../developer/protocols/mkcp.html">
            
                    
                    mKCP 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.3" data-path="../developer/protocols/muxcool.html">
            
                <a href="../developer/protocols/muxcool.html">
            
                    
                    Mux.Cool
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本書使用 GitBook 釋出
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    
    <a class="btn pull-left" href="/awesome/tools.html" target="_blank">
        <img src="/resources/flag_cn.svg" alt="Chinese" height="16">
    </a>
    <a class="btn pull-left" href="/en/awesome/tools.html" target="_blank">
        <img src="/resources/flag_en.svg" alt="English" height="16">
    </a>
    <a class="btn pull-left" href="/ru/awesome/tools.html" target="_blank">
        <img src="/resources/flag_ru.svg" alt="Russian" height="16">
    </a>
    <a class="btn pull-left" href="/ko/awesome/tools.html" target="_blank">
        <img src="/resources/flag_ko.svg" alt="Korean" height="16">
    </a>
    <a class="btn pull-left" href="/fa/awesome/tools.html" target="_blank">
        <img src="/resources/flag_fa.svg" alt="Persian" height="16">
    </a>
    <a class="btn pull-left" href="/vi/awesome/tools.html" target="_blank">
        <img src="/resources/flag_vi.svg" alt="Vietnamese" height="16">
    </a>
    <a class="btn pull-left" href="https://crowdin.com/project/v2ray" target="_blank">
        <img src="/resources/translate.png" alt="Translate" height="16">
    </a>
    
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
                                <section class="normal markdown-section">
                                
                                <h1 id="&#x795E;&#x4E00;&#x6837;&#x7684;&#x5DE5;&#x5177;&#x4EEC;"><a name="&#x795E;&#x4E00;&#x6837;&#x7684;&#x5DE5;&#x5177;&#x4EEC;" class="plugin-anchor" href="#&#x795E;&#x4E00;&#x6837;&#x7684;&#x5DE5;&#x5177;&#x4EEC;"><i class="fa fa-link" aria-hidden="true"></i></a>&#x795E;&#x4E00;&#x6837;&#x7684;&#x5DE5;&#x5177;&#x4EEC;</h1>
<h2 id="windows"><a name="windows" class="plugin-anchor" href="#windows"><i class="fa fa-link" aria-hidden="true"></i></a>&#x56FE;&#x5F62;&#x5BA2;&#x6237;&#x7AEF; </h2>
<blockquote>
<p>V2RayW <img width="20" src="../resources/win.svg"></p>
</blockquote>
<p>V2RayW &#x662F;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E; V2Ray &#x5185;&#x6838;&#x7684; Windows &#x5BA2;&#x6237;&#x7AEF;&#x3002;&#x7528;&#x6237;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x754C;&#x9762;&#x751F;&#x6210;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#xFF0C;&#x5E76;&#x4E14;&#x53EF;&#x4EE5;&#x624B;&#x52A8;&#x66F4;&#x65B0; V2Ray &#x5185;&#x6838;&#x3002;&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/Cenmrev/V2RayW" target="_blank">GitHub</a></p>
<blockquote>
<p>V2RayN <img width="20" src="../resources/win.svg"></p>
</blockquote>
<p>V2RayN &#x662F;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E; V2Ray &#x5185;&#x6838;&#x7684; Windows &#x5BA2;&#x6237;&#x7AEF;&#x3002;&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/2dust/v2rayN" target="_blank">GitHub</a></p>
<blockquote>
<p>Clash for Windows <img width="20" src="../resources/win.svg"></p>
</blockquote>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/Fndroid/clash_for_windows_pkg" target="_blank">GitHub</a></p>
<blockquote>
<p>V2RayX <img width="20" src="../resources/apple.svg"></p>
</blockquote>
<p>V2RayX &#x662F;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E; V2Ray &#x5185;&#x6838;&#x7684; Mac OS X &#x5BA2;&#x6237;&#x7AEF;&#x3002;&#x7528;&#x6237;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x754C;&#x9762;&#x751F;&#x6210;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#xFF0C;&#x5E76;&#x4E14;&#x53EF;&#x4EE5;&#x624B;&#x52A8;&#x66F4;&#x65B0; V2Ray &#x5185;&#x6838;&#x3002;V2RayX &#x8FD8;&#x53EF;&#x4EE5;&#x914D;&#x7F6E;&#x7CFB;&#x7EDF;&#x4EE3;&#x7406;&#x3002;&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/Cenmrev/V2RayX" target="_blank">Github</a></p>
<blockquote>
<p>V2RayU <img width="20" src="../resources/apple.svg"></p>
</blockquote>
<p>V2rayU,&#x57FA;&#x4E8E;v2ray&#x6838;&#x5FC3;&#x7684;mac&#x7248;&#x5BA2;&#x6237;&#x7AEF;,&#x754C;&#x9762;&#x53CB;&#x597D;,&#x4F7F;&#x7528;swift4.2&#x7F16;&#x5199;,&#x652F;&#x6301;vmess,shadowsocks,socks5&#x7B49;&#x670D;&#x52A1;&#x534F;&#x8BAE;,&#x652F;&#x6301;&#x8BA2;&#x9605;, &#x652F;&#x6301;&#x4E8C;&#x7EF4;&#x7801;,&#x526A;&#x8D34;&#x677F;&#x5BFC;&#x5165;,&#x624B;&#x52A8;&#x914D;&#x7F6E;,&#x4E8C;&#x7EF4;&#x7801;&#x5206;&#x4EAB;&#x7B49;&#x3002;&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/yanue/V2rayU" target="_blank">GitHub</a></p>
<blockquote>
<p>V2RayC <img width="20" src="../resources/apple.svg"></p>
</blockquote>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/gssdromen/V2RayC" target="_blank">GitHub</a></p>
<blockquote>
<p>ClashX <img width="20" src="../resources/apple.svg"></p>
</blockquote>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/yichengchen/clashX" target="_blank">GitHub</a></p>
<blockquote>
<p>Qv2ray <img width="20" src="../resources/win.svg"> <img width="20" src="../resources/apple.svg"> <img width="20" src="../resources/linux.svg"></p>
</blockquote>
<p>Qv2ray&#xFF1A;&#x4F7F;&#x7528; Qt &#x7F16;&#x5199;&#x7684; v2ray &#x8DE8;&#x5E73;&#x53F0; GUI &#xFF08;MacOS, Windows, Linux&#xFF09;&#x652F;&#x6301;&#x8FDE;&#x63A5;&#x5BFC;&#x5165;&#x548C;&#x7F16;&#x8F91;&#xFF0C;&#x4E2D;&#x82F1;&#x6587;&#x5207;&#x6362;</p>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://github.com/lhy0403/Qv2ray" target="_blank">GitHub</a></p>
<p>&#x5B98;&#x7F51;&#xFF1A;<a href="https://lhy0403.github.io/Qv2ray" target="_blank">https://lhy0403.github.io/Qv2ray</a></p>
<blockquote>
<p>Mellow <img width="20" src="../resources/win.svg"> <img width="20" src="../resources/apple.svg"> <img width="20" src="../resources/linux.svg"></p>
</blockquote>
<p>Mellow &#x662F;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E;&#x89C4;&#x5219;&#x7684;&#x5168;&#x5C40;&#x900F;&#x660E;&#x4EE3;&#x7406;&#x5DE5;&#x5177;&#xFF0C;&#x53EF;&#x4EE5;&#x8FD0;&#x884C;&#x5728; Windows&#x3001;macOS &#x548C; Linux &#x4E0A;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x914D;&#x7F6E;&#x6210;&#x8DEF;&#x7531;&#x5668;&#x900F;&#x660E;&#x4EE3;&#x7406;&#x6216;&#x4EE3;&#x7406;&#x7F51;&#x5173;&#xFF0C;&#x652F;&#x6301; SOCKS&#x3001;HTTP&#x3001;Shadowsocks&#x3001;VMess &#x7B49;&#x591A;&#x79CD;&#x4EE3;&#x7406;&#x534F;&#x8BAE;&#x3002;</p>
<p>Download: <a href="https://github.com/mellow-io/mellow" target="_blank">Github</a></p>
<blockquote>
<p>Kitsunebi <img width="20" src="../resources/ios.svg"> <img width="20" src="../resources/android.svg"></p>
</blockquote>
<p>Kitsunebi &#x662F;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E; V2Ray &#x6838;&#x5FC3;&#x7684;&#x79FB;&#x52A8;&#x5E73;&#x53F0;&#x5E94;&#x7528; (iOS, Android)&#x3002;&#x5B83;&#x53EF;&#x4EE5;&#x521B;&#x5EFA;&#x57FA;&#x4E8E; VMess &#x6216;&#x8005; Shadowsocks &#x7684; VPN &#x8FDE;&#x63A5;&#x3002;Kitsunebi &#x652F;&#x6301;&#x5BFC;&#x5165;&#x548C;&#x5BFC;&#x51FA;&#x4E0E; V2Ray &#x517C;&#x5BB9;&#x7684; JSON &#x914D;&#x7F6E;&#x3002;</p>
<p>&#x7531;&#x4E8E;&#x4F7F;&#x7528; V2Ray &#x6838;&#x5FC3;&#xFF0C;Kitsunebi &#x51E0;&#x4E4E;&#x652F;&#x6301; V2Ray &#x7684;&#x6240;&#x6709;&#x529F;&#x80FD;&#xFF0C;&#x6BD4;&#x5982; Mux &#x548C; mKCP&#x3002;</p>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8" target="_blank">iTunes</a> | <a href="https://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android&amp;hl=en_US" target="_blank">Play Store</a></p>
<blockquote>
<p>i2Ray <img width="20" src="../resources/ios.svg"></p>
</blockquote>
<p>i2Ray &#x662F;&#x53E6;&#x4E00;&#x6B3E;&#x57FA;&#x4E8E; V2Ray &#x6838;&#x5FC3;&#x7684;iOS&#x5E94;&#x7528;&#x3002;&#x754C;&#x9762;&#x7B80;&#x6D01;&#x6613;&#x7528;&#xFF0C;&#x9002;&#x5408;&#x65B0;&#x624B;&#x7528;&#x6237;&#x4F7F;&#x7528;&#x3002;&#x540C;&#x65F6;&#x517C;&#x5BB9;Shadowrocket&#x548C;Quantumult&#x683C;&#x5F0F;&#x7684;&#x89C4;&#x5219;&#x5BFC;&#x5165;&#x3002;</p>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://itunes.apple.com/us/app/i2ray/id1445270056?mt=8" target="_blank">iTunes</a></p>
<blockquote>
<p>Shadowrocket <img width="20" src="../resources/ios.svg"></p>
</blockquote>
<p>Shadowrocket &#x662F;&#x4E00;&#x4E2A;&#x901A;&#x7528;&#x7684; iOS VPN &#x5E94;&#x7528;&#xFF0C;&#x5B83;&#x652F;&#x6301;&#x4F17;&#x591A;&#x534F;&#x8BAE;&#xFF0C;&#x5982; Shadowsocks&#x3001;VMess&#x3001;SSR &#x7B49;&#x3002;</p>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8" target="_blank">iTunes</a></p>
<blockquote>
<p>Pepi&#xFF08;&#x539F;&#x540D;ShadowRay&#xFF09;<img width="20" src="../resources/ios.svg"></p>
</blockquote>
<p>Pepi &#x662F;&#x4E00;&#x4E2A;&#x517C;&#x5BB9; V2Ray &#x7684; iOS &#x5E94;&#x7528;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x521B;&#x5EFA;&#x57FA;&#x4E8E; VMess &#x7684; VPN &#x8FDE;&#x63A5;&#xFF0C;&#x5E76;&#x4E0E; V2Ray &#x670D;&#x52A1;&#x5668;&#x901A;&#x4FE1;&#x3002;</p>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://itunes.apple.com/us/app/pepi/id1283082051?mt=8" target="_blank">iTunes</a></p>
<blockquote>
<p>Quantumult <img width="20" src="../resources/ios.svg"></p>
</blockquote>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://itunes.apple.com/us/app/quantumult/id1252015438?mt=8" target="_blank">iTunes</a></p>
<blockquote>
<p>BifrostV <img width="20" src="../resources/android.svg"></p>
</blockquote>
<p>BifrostV &#x662F;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E; V2Ray &#x5185;&#x6838;&#x7684; Android &#x5E94;&#x7528;&#xFF0C;&#x5B83;&#x652F;&#x6301; VMess&#x3001;Shadowsocks&#x3001;Socks &#x534F;&#x8BAE;&#x3002;</p>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv" target="_blank">Play Store</a> | <a href="https://apkpure.com/bifrostv/com.github.dawndiy.bifrostv" target="_blank">APK Pure</a></p>
<blockquote>
<p>V2RayNG <img width="20" src="../resources/android.svg"></p>
</blockquote>
<p>V2RayNG &#x662F;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E; V2Ray &#x5185;&#x6838;&#x7684; Android &#x5E94;&#x7528;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x521B;&#x5EFA;&#x57FA;&#x4E8E; VMess &#x7684; VPN &#x8FDE;&#x63A5;&#x3002;</p>
<p>&#x4E0B;&#x8F7D;&#xFF1A;<a href="https://play.google.com/store/apps/details?id=com.v2ray.ang" target="_blank">Play Store</a> | <a href="https://github.com/2dust/v2rayNG" target="_blank">GitHub</a></p>
<h2 id="online"><a name="online" class="plugin-anchor" href="#online"><i class="fa fa-link" aria-hidden="true"></i></a>&#x5728;&#x7EBF;&#x5DE5;&#x5177;/&#x8D44;&#x6E90; </h2>
<blockquote>
<p>VeekXT V2Ray&#x914D;&#x7F6E;&#x751F;&#x6210;</p>
</blockquote>
<p>&#x652F;&#x6301; 4.x &#x7248;&#x672C;&#x7684;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x751F;&#x6210;&#x5668; <a href="https://www.veekxt.com/utils/v2ray_gen" target="_blank">veekxt.com</a></p>
<blockquote>
<p>V2Ray &#x914D;&#x7F6E;&#x751F;&#x6210;&#x5668;</p>
</blockquote>
<p>&#x9759;&#x6001; V2Ray &#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x751F;&#x6210;&#x9875;&#x9762; <a href="https://github.com/htfy96/v2ray-config-gen" target="_blank">GitHub</a></p>
<blockquote>
<p>UUID Generator</p>
</blockquote>
<p>VMess User ID &#x751F;&#x6210;&#x5DE5;&#x5177; <a href="https://www.uuidgenerator.net" target="_blank">uuidgenerator.net</a></p>
<blockquote>
<p>vTemplate &#x9879;&#x76EE;&#x4ED3;&#x5E93;</p>
</blockquote>
<p>&#x4E00;&#x4E2A; V2Ray &#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x6A21;&#x677F;&#x6536;&#x96C6;&#x4ED3;&#x5E93;  <a href="https://github.com/KiriKira/vTemplate" target="_blank">GitHub</a></p>

                                
                                </section>
                            
                        </div>
                    </div>
                
            </div>

        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"refcn":"awesome/tools","refen":"awesome/tools","title":"神一样的工具们","level":"1.3","depth":1,"next":{"title":"以及广告","level":"1.3.1","depth":2,"path":"awesome/ads.md","ref":"awesome/ads.md","articles":[]},"previous":{"title":"环境变量","level":"1.2.11","depth":2,"path":"chapter_02/env.md","ref":"chapter_02/env.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-fontsettings","-search","-lunr","-highlight","-sharing","mermaid-gb3","anchors","ga","prism","prism-themes","hints"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"ga":{"configuration":"auto","token":"UA-73620536-1"},"prism":{"css":["prism-themes/themes/prism-base16-ateliersulphurpool.light.css"],"lang":{"objc":"objectivec","shell":"bash","text":"textile","plain":"textile"}},"mermaid-gb3":{},"anchors":{},"prism-themes":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Project V 官方网站","language":"zh","gitbook":"*"},"file":{"path":"awesome/tools.md","mtime":"2019-12-09T02:03:16.155Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-12-09T02:05:14.919Z"},"basePath":"..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../gitbook/gitbook.js"></script>
    <script src="../gitbook/theme.js"></script>
    
        
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/book/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-ga/plugin.js"></script>
        
    
    
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.min.js"></script>
    

    </body>
</html>



================================================
FILE: chapter_00/01_versions.html
================================================

<!DOCTYPE HTML>
<html lang="zh" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>版本历史 · Project V 官方网站</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <script type="text/javascript">
function inIframe () {
    try { return window.self !== window.top; } catch (e) { return true; }
}
function isValidDomain() {
    var host = window.location.hostname;
    var domains = ['v2ray.com', 'github.io', 'mux.cool', 'v2ray.cool', 'archive.org'];
    for (var dx in domains) {
        if (host.indexOf(domains[dx]) >= 0) {
            return true;
        }
    }
    return false;
}
if (inIframe() || !isValidDomain()) {
    window.top.location.href = 'https://www.v2ray.com/';
}
        </script>
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-anchors/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism-base16-ateliersulphurpool.light.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="../styles/website.css">
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" type="image/png" href="/resources/favicon-152.png">
    <link rel="apple-touch-icon-precomposed" sizes="180x180" type="image/png" href="/resources/favicon-180.png">
    <link rel="icon" type="image/png" href="/resources/favicon-192.png">
    <link rel="shortcut icon" href="/resources/favicon.ico" type="image/x-icon">
    
    <link href="https://fonts.loli.net/css?family=Source+Code+Pro:400|Open+Sans:400,700&amp;subset=cyrillic" rel="stylesheet">
    

    
    <link rel="next" href="workflow.html" />
    
    
    <link rel="prev" href="../" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    Project V
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter active" data-level="1.1.1" data-path="01_versions.html">
            
                <a href="01_versions.html">
            
                    
                    版本历史
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.2" data-path="workflow.html">
            
                <a href="workflow.html">
            
                    
                    使用方式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.3" data-path="install.html">
            
                <a href="install.html">
            
                    
                    下载安装
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.4" data-path="start.html">
            
                <a href="start.html">
            
                    
                    新手上路
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.5" data-path="command.html">
            
                <a href="command.html">
            
                    
                    命令行参数
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.6" data-path="02_donate.html">
            
                <a href="02_donate.html">
            
                    
                    捐助支持
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.7" data-path="help.html">
            
                <a href="help.html">
            
                    
                    寻求帮助
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.8" data-path="faq.html">
            
                <a href="faq.html">
            
                    
                    常见问题
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.9" >
            
                <a target="_blank" href="https://steemit.com/@v2ray">
            
                    
                    博客↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.10" >
            
                <a target="_blank" href="https://toutyrater.github.io/">
            
                    
                    白话文教程↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.11" >
            
                <a target="_blank" href="https://guide.v2fly.org/">
            
                    
                    新白话文教程(社区版)↪
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../chapter_02/">
            
                <a href="../chapter_02/">
            
                    
                    配置文件
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../chapter_02/01_overview.html">
            
                <a href="../chapter_02/01_overview.html">
            
                    
                    文件格式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../chapter_02/02_protocols.html">
            
                <a href="../chapter_02/02_protocols.html">
            
                    
                    协议列表
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.2.1" data-path="../chapter_02/protocols/blackhole.html">
            
                <a href="../chapter_02/protocols/blackhole.html">
            
                    
                    Blackhole
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.2" data-path="../chapter_02/protocols/dns.html">
            
                <a href="../chapter_02/protocols/dns.html">
            
                    
                    DNS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.3" data-path="../chapter_02/protocols/dokodemo.html">
            
                <a href="../chapter_02/protocols/dokodemo.html">
            
                    
                    Dokodemo
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.4" data-path="../chapter_02/protocols/freedom.html">
            
                <a href="../chapter_02/protocols/freedom.html">
            
                    
                    Freedom
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.5" data-path="../chapter_02/protocols/http.html">
            
                <a href="../chapter_02/protocols/http.html">
            
                    
                    HTTP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.6" data-path="../chapter_02/protocols/mtproto.html">
            
                <a href="../chapter_02/protocols/mtproto.html">
            
                    
                    MTProto
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.7" data-path="../chapter_02/protocols/shadowsocks.html">
            
                <a href="../chapter_02/protocols/shadowsocks.html">
            
                    
                    Shadowsocks
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.8" data-path="../chapter_02/protocols/socks.html">
            
                <a href="../chapter_02/protocols/socks.html">
            
                    
                    SOCKS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.9" data-path="../chapter_02/protocols/vmess.html">
            
                <a href="../chapter_02/protocols/vmess.html">
            
                    
                    VMess
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.3" data-path="../chapter_02/policy.html">
            
                <a href="../chapter_02/policy.html">
            
                    
                    本地策略
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.4" data-path="../chapter_02/03_routing.html">
            
                <a href="../chapter_02/03_routing.html">
            
                    
                    路由配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.5" data-path="../chapter_02/04_dns.html">
            
                <a href="../chapter_02/04_dns.html">
            
                    
                    DNS 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.6" data-path="../chapter_02/mux.html">
            
                <a href="../chapter_02/mux.html">
            
                    
                    Mux 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.7" data-path="../chapter_02/api.html">
            
                <a href="../chapter_02/api.html">
            
                    
                    API 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.8" data-path="../chapter_02/stats.html">
            
                <a href="../chapter_02/stats.html">
            
                    
                    统计信息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.9" data-path="../chapter_02/reverse.html">
            
                <a href="../chapter_02/reverse.html">
            
                    
                    反向代理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10" data-path="../chapter_02/05_transport.html">
            
                <a href="../chapter_02/05_transport.html">
            
                    
                    传输配置
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.10.1" data-path="../chapter_02/transport/tcp.html">
            
                <a href="../chapter_02/transport/tcp.html">
            
                    
                    TCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.2" data-path="../chapter_02/transport/mkcp.html">
            
                <a href="../chapter_02/transport/mkcp.html">
            
                    
                    mKCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.3" data-path="../chapter_02/transport/websocket.html">
            
                <a href="../chapter_02/transport/websocket.html">
            
                    
                    WebSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.4" data-path="../chapter_02/transport/h2.html">
            
                <a href="../chapter_02/transport/h2.html">
            
                    
                    HTTP/2
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.5" data-path="../chapter_02/transport/domainsocket.html">
            
                <a href="../chapter_02/transport/domainsocket.html">
            
                    
                    DomainSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.6" data-path="../chapter_02/transport/quic.html">
            
                <a href="../chapter_02/transport/quic.html">
            
                    
                    QUIC
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.11" data-path="../chapter_02/env.html">
            
                <a href="../chapter_02/env.html">
            
                    
                    环境变量
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../awesome/tools.html">
            
                <a href="../awesome/tools.html">
            
                    
                    神一样的工具们
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1" data-path="../awesome/ads.html">
            
                <a href="../awesome/ads.html">
            
                    
                    以及广告
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../developer/">
            
                <a href="../developer/">
            
                    
                    开发人员手册
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../developer/intro/roadmap.html">
            
                <a href="../developer/intro/roadmap.html">
            
                    
                    开发计划
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.2" data-path="../developer/intro/guide.html">
            
                <a href="../developer/intro/guide.html">
            
                    
                    开发指引
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.3" data-path="../developer/intro/design.html">
            
                <a href="../developer/intro/design.html">
            
                    
                    核心设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.4" data-path="../developer/intro/compile.html">
            
                <a href="../developer/intro/compile.html">
            
                    
                    配置开发环境
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.5" data-path="../developer/intro/tools.html">
            
                <a href="../developer/intro/tools.html">
            
                    
                    开发工具
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6" >
            
                <span>
            
                    
                    协议细节
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.6.1" data-path="../developer/protocols/vmess.html">
            
                <a href="../developer/protocols/vmess.html">
            
                    
                    VMess 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.2" data-path="../developer/protocols/mkcp.html">
            
                <a href="../developer/protocols/mkcp.html">
            
                    
                    mKCP 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.3" data-path="../developer/protocols/muxcool.html">
            
                <a href="../developer/protocols/muxcool.html">
            
                    
                    Mux.Cool
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本書使用 GitBook 釋出
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    
    <a class="btn pull-left" href="/chapter_00/01_versions.html" target="_blank">
        <img src="/resources/flag_cn.svg" alt="Chinese" height="16">
    </a>
    <a class="btn pull-left" href="/en/welcome/versions.html" target="_blank">
        <img src="/resources/flag_en.svg" alt="English" height="16">
    </a>
    <a class="btn pull-left" href="/ru/welcome/versions.html" target="_blank">
        <img src="/resources/flag_ru.svg" alt="Russian" height="16">
    </a>
    <a class="btn pull-left" href="/ko/welcome/versions.html" target="_blank">
        <img src="/resources/flag_ko.svg" alt="Korean" height="16">
    </a>
    <a class="btn pull-left" href="/fa/welcome/versions.html" target="_blank">
        <img src="/resources/flag_fa.svg" alt="Persian" height="16">
    </a>
    <a class="btn pull-left" href="/vi/welcome/versions.html" target="_blank">
        <img src="/resources/flag_vi.svg" alt="Vietnamese" height="16">
    </a>
    <a class="btn pull-left" href="https://crowdin.com/project/v2ray" target="_blank">
        <img src="/resources/translate.png" alt="Translate" height="16">
    </a>
    
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
                                <section class="normal markdown-section">
                                
                                <h1 id="&#x66F4;&#x65B0;&#x65E5;&#x5FD7;"><a name="&#x66F4;&#x65B0;&#x65E5;&#x5FD7;" class="plugin-anchor" href="#&#x66F4;&#x65B0;&#x65E5;&#x5FD7;"><i class="fa fa-link" aria-hidden="true"></i></a>&#x66F4;&#x65B0;&#x65E5;&#x5FD7;</h1>
<p>&#x672C;&#x9875;&#x5217;&#x51FA;&#x4E86;&#x5E38;&#x89C4;&#x7248;&#x672C;&#x7684;&#x529F;&#x80FD;&#x5347;&#x7EA7;&#x8BB0;&#x5F55;&#xFF0C;&#x672A;&#x5217;&#x51FA;&#x7684;&#x7248;&#x672C;&#x901A;&#x5E38;&#x4E3A; bug &#x4FEE;&#x590D;&#x3002;</p>
<h2 id="20190712-v4200"><a name="20190712-v4200" class="plugin-anchor" href="#20190712-v4200"><i class="fa fa-link" aria-hidden="true"></i></a>2019.07.12 v4.20.0</h2>
<ul>
<li>&#x652F;&#x6301;H2C&#xFF08;HTTP2&#x4E0D;&#x5F3A;&#x5236;TLS&#xFF09;</li>
<li>&#x65E5;&#x5FD7;&#x4F7F;&#x7528;none&#x7EA7;&#x522B;&#x65F6;&#x7981;&#x7528;&#x6240;&#x6709;&#x663E;&#x793A;</li>
<li>&#x4FEE;&#x590D;Bazel 0.26+&#x517C;&#x5BB9;</li>
<li>&#x4E00;&#x4E9B;&#x4EE3;&#x7801;&#x4F18;&#x5316;</li>
</ul>
<h2 id="20190603-v4191"><a name="20190603-v4191" class="plugin-anchor" href="#20190603-v4191"><i class="fa fa-link" aria-hidden="true"></i></a>2019.06.03 v4.19.1</h2>
<ul>
<li>&#x8DEF;&#x7531;&#x652F;&#x6301;&#x81EA;&#x5B9A;&#x4E49;&#x6587;&#x4EF6;</li>
<li>&#x5B89;&#x88C5;&#x811A;&#x672C;&#x652F;&#x6301;&#x5C0F;&#x7248;&#x672C;&#x68C0;&#x6D4B;</li>
<li>&#x4E00;&#x4E9B;&#x4EE3;&#x7801;&#x4F18;&#x5316;</li>
</ul>
<h2 id="20190518-v4182"><a name="20190518-v4182" class="plugin-anchor" href="#20190518-v4182"><i class="fa fa-link" aria-hidden="true"></i></a>2019.05.18 v4.18.2</h2>
<ul>
<li>&#x4FEE;&#x590D;Windows&#x4E0B;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x8FC7;&#x5927;&#x8BFB;&#x53D6;&#x9519;&#x8BEF;</li>
</ul>
<h2 id="20190415-v4181"><a name="20190415-v4181" class="plugin-anchor" href="#20190415-v4181"><i class="fa fa-link" aria-hidden="true"></i></a>2019.04.15 v4.18.1</h2>
<ul>
<li>&#x652F;&#x6301;TLS1.3</li>
<li>&#x4FEE;&#x590D;&#x9519;&#x8BEF;&#x57DF;&#x540D;&#x5BFC;&#x81F4;&#x7684;&#x5D29;&#x6E83;</li>
<li>&#x4FEE;&#x6539;GoCache&#x76EE;&#x5F55;&#x7684;&#x5F3A;&#x5236;&#x8981;&#x6C42;</li>
</ul>
<h2 id="20190301-v418"><a name="20190301-v418" class="plugin-anchor" href="#20190301-v418"><i class="fa fa-link" aria-hidden="true"></i></a>2019.03.01 v4.18</h2>
<ul>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x7684;&#x7AEF;&#x53E3;&#x5217;&#x8868;&#x65B0;&#x589E;&#x4E86;&#x6DF7;&#x5408;&#x683C;&#x5F0F;&#x3002;</li>
<li>&#x66F4;&#x65B0;&#x4E86;&#x8DEF;&#x7531;&#x4E2D;<code>geosite</code>&#x7684;&#x8BF4;&#x660E;&#xFF0C;&#x548C; DNS &#x670D;&#x52A1;&#x5668;&#x4E2D;&#x9759;&#x6001;&#x57DF;&#x540D;&#x5217;&#x8868;&#x7684;&#x8BF4;&#x660E;&#x3002;</li>
<li>TLS &#x914D;&#x7F6E;&#x4E2D;&#x6DFB;&#x52A0;&#x4E86;&#x7981;&#x7528;&#x7CFB;&#x7EDF; CA &#x7684;&#x9009;&#x9879;&#x3002;</li>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x6DFB;&#x52A0;&#x4E86;&#x6D41;&#x91CF;&#x5C5E;&#x6027;&#x68C0;&#x6D4B;&#xFF0C;&#x53EF;&#x7528;&#x4E8E;&#x68C0;&#x6D4B; URL&#x3002;</li>
</ul>
<h2 id="20190222-v417"><a name="20190222-v417" class="plugin-anchor" href="#20190222-v417"><i class="fa fa-link" aria-hidden="true"></i></a>2019.02.22 v4.17</h2>
<ul>
<li>V2Ctl &#x4E2D;&#x65B0;&#x589E;&#x4E86; <code>tlsping</code> &#x5DE5;&#x5177;&#x3002;</li>
</ul>
<h2 id="20190215-v416"><a name="20190215-v416" class="plugin-anchor" href="#20190215-v416"><i class="fa fa-link" aria-hidden="true"></i></a>2019.02.15 v4.16</h2>
<p>&#x4F7F;&#x7528;&#x76F8;&#x5173;:</p>
<ul>
<li>DNS &#x4F20;&#x51FA;&#x4EE3;&#x7406;&#x652F;&#x6301;&#x4FEE;&#x6539;&#x76EE;&#x6807; DNS &#x670D;&#x52A1;&#x5668;&#x7684;&#x8BBE;&#x5B9A;&#x3002;</li>
</ul>
<p>&#x5F00;&#x53D1;&#x76F8;&#x5173;:</p>
<ul>
<li>&apos;ext&apos; &#x4ED3;&#x5E93;&#x5DF2;&#x5B8C;&#x5168;&#x8FC1;&#x79FB;&#x5230; &apos;core&apos;&#x3002;<a href="https://github.com/v2ray/v2ray-core/issues/1541" target="_blank">#1541</a></li>
</ul>
<h2 id="20190208-v415"><a name="20190208-v415" class="plugin-anchor" href="#20190208-v415"><i class="fa fa-link" aria-hidden="true"></i></a>2019.02.08 v4.15</h2>
<ul>
<li>DNS &#x4F20;&#x51FA;&#x4EE3;&#x7406;&#x3002;</li>
</ul>
<h2 id="20190201-v414"><a name="20190201-v414" class="plugin-anchor" href="#20190201-v414"><i class="fa fa-link" aria-hidden="true"></i></a>2019.02.01 v4.14</h2>
<ul>
<li>DNS &#x652F;&#x6301;&#x4E86;&#x9759;&#x6001;&#x57DF;&#x540D;&#x5230;&#x57DF;&#x540D;&#x7684;&#x5339;&#x914D;&#x3002;</li>
</ul>
<h2 id="20190118-v413"><a name="20190118-v413" class="plugin-anchor" href="#20190118-v413"><i class="fa fa-link" aria-hidden="true"></i></a>2019.01.18 v4.13</h2>
<ul>
<li>&#x66F4;&#x65B0;&#x4E86; Quic &#x5E93;&#xFF0C;&#x4E0E;&#x4E4B;&#x524D;&#x7684;&#x7248;&#x672C;&#x4E0D;&#x517C;&#x5BB9;&#x3002;</li>
<li>DNS &#x914D;&#x7F6E;&#x4E2D;&#x65B0;&#x589E;&#x4E86;<code>tag</code>&#x9009;&#x9879;&#x3002;</li>
</ul>
<h2 id="20190111-v411"><a name="20190111-v411" class="plugin-anchor" href="#20190111-v411"><i class="fa fa-link" aria-hidden="true"></i></a>2019.01.11 v4.11</h2>
<p>&#x5F00;&#x53D1;&#x76F8;&#x5173;:</p>
<ul>
<li>&#x65B0;&#x589E;&#x4E86; <a href="https://github.com/v2ray/v2ray-core/blob/b52725cf659e0f7a38fed2eb36a5a792843bd54f/functions.go#L65" target="_blank">core.DialUDP</a></li>
<li><a href="https://github.com/v2ray/v2ray-core/blob/a1b552f9487d2687228dd1d89003087331f62eab/transport/internet/dialer.go#L66" target="_blank">internet.DialSystem</a> &#x73B0;&#x5728;&#x4F1A;&#x8C03;&#x7528; <a href="https://github.com/v2ray/v2ray-core/blob/a1b552f9487d2687228dd1d89003087331f62eab/transport/internet/tcp_hub.go#L65" target="_blank">internet.ListenSystemPacket</a> &#x53BB;&#x5EFA;&#x7ACB; UDP &#x8FDE;&#x63A5;&#x3002;</li>
</ul>
<h2 id="20181207-v48"><a name="20181207-v48" class="plugin-anchor" href="#20181207-v48"><i class="fa fa-link" aria-hidden="true"></i></a>2018.12.07 v4.8</h2>
<p>&#x4F7F;&#x7528;&#x76F8;&#x5173;:</p>
<ul>
<li>Bug &#x4FEE;&#x590D;</li>
</ul>
<p>&#x5F00;&#x53D1;&#x76F8;&#x5173;:</p>
<ul>
<li>&#x65B0;&#x589E;&#x4E86; <a href="https://github.com/v2ray/v2ray-core/blob/master/annotations.go#L13" target="_blank">API &#x6587;&#x6863;</a></li>
<li>&#x65B0;&#x589E;&#x4E86; <a href="https://github.com/v2ray/v2ray-core/blob/v4.8.0/transport/internet/system_listener.go#L63" target="_blank">internet.RegisterListenerController</a> &#x65B9;&#x6CD5;</li>
<li>&#x65B0;&#x589E;&#x4E86; <a href="https://github.com/v2ray/v2ray-core/blob/v4.8.0/transport/internet/system_dialer.go#L105" target="_blank">internet.RegisterDialerController</a> &#x65B9;&#x6CD5;</li>
</ul>
<h2 id="20181130-v47"><a name="20181130-v47" class="plugin-anchor" href="#20181130-v47"><i class="fa fa-link" aria-hidden="true"></i></a>2018.11.30 v4.7</h2>
<ul>
<li>Freedom &#x4E2D;&#x65B0;&#x589E;&#x4E86; UseIPv4 &#x548C; UseIPv6 &#x6A21;&#x5F0F;&#x3002;</li>
<li>&#x4F20;&#x8F93;&#x65B9;&#x5F0F;&#x65B0;&#x589E;&#x4E86; QUIC&#x3002;</li>
</ul>
<h2 id="20181123-v46"><a name="20181123-v46" class="plugin-anchor" href="#20181123-v46"><i class="fa fa-link" aria-hidden="true"></i></a>2018.11.23 v4.6</h2>
<ul>
<li>Freedom &#x7684;<code>&quot;UseIP&quot;</code>&#x6A21;&#x5F0F;&#x4F1A;&#x6839;&#x636E;&#x51FA;&#x7AD9;&#x6240;&#x7528;&#x7684; IP &#x5730;&#x5740;&#x81EA;&#x52A8;&#x4F7F;&#x7528; IPv4 &#x6216; IPv6 &#x76EE;&#x6807;&#x5730;&#x5740;&#x3002;</li>
</ul>
<h2 id="20181116-v44"><a name="20181116-v44" class="plugin-anchor" href="#20181116-v44"><i class="fa fa-link" aria-hidden="true"></i></a>2018.11.16 v4.4</h2>
<ul>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x65B0;&#x589E;&#x4E86;&#x8D1F;&#x8F7D;&#x5747;&#x8861;&#x914D;&#x7F6E;&#x3002;</li>
<li>&#x4F18;&#x5316;&#x4E86;&#x5185;&#x5B58;&#x4F7F;&#x7528;&#x6548;&#x7387;&#x3002;</li>
</ul>
<h2 id="20181105-v41"><a name="20181105-v41" class="plugin-anchor" href="#20181105-v41"><i class="fa fa-link" aria-hidden="true"></i></a>2018.11.05 v4.1</h2>
<ul>
<li>&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x683C;&#x5F0F;&#x7B80;&#x5316;&#x3002;&#x4E3B;&#x8981;&#x662F;&#x4F20;&#x5165;&#x4F20;&#x51FA;&#x4EE3;&#x7406;&#x548C;&#x8DEF;&#x7531;&#x90E8;&#x5206;&#x3002;&#x65E7;&#x7248;&#x683C;&#x5F0F;&#x4ECD;&#x7136;&#x53EF;&#x7528;&#xFF0C;&#x4F46;&#x63A8;&#x8350;&#x5C3D;&#x5FEB;&#x5347;&#x7EA7;&#x5230;&#x6700;&#x65B0;&#x683C;&#x5F0F;&#x3002;</li>
<li>&#x4F18;&#x5316;&#x4E86; GeoIP &#x7684;&#x6027;&#x80FD;&#xFF0C;&#x51CF;&#x5C11;&#x4E86;&#x5185;&#x5B58;&#x5360;&#x7528;&#xFF0C;&#x63D0;&#x5347;&#x4E86;&#x5339;&#x914D;&#x6548;&#x7387;&#x3002;</li>
</ul>
<h2 id="20181102-v40"><a name="20181102-v40" class="plugin-anchor" href="#20181102-v40"><i class="fa fa-link" aria-hidden="true"></i></a>2018.11.02 v4.0</h2>
<ul>
<li>&#x53CD;&#x5411;&#x4EE3;&#x7406;</li>
<li>&#x65B0;&#x589E;&#x4E86; ppc64 &#x548C; ppc64le &#x9884;&#x7F16;&#x8BD1;&#x5305;&#x3002;</li>
</ul>
<h2 id="20181012-v347"><a name="20181012-v347" class="plugin-anchor" href="#20181012-v347"><i class="fa fa-link" aria-hidden="true"></i></a>2018.10.12 v3.47</h2>
<ul>
<li>&#x5347;&#x7EA7;&#x4E86;&#x81EA;&#x52A8;&#x6784;&#x5EFA;&#x5DE5;&#x5177;</li>
</ul>
<h2 id="20180928-v344"><a name="20180928-v344" class="plugin-anchor" href="#20180928-v344"><i class="fa fa-link" aria-hidden="true"></i></a>2018.09.28 v3.44</h2>
<ul>
<li>Dokodemo-door &#x73B0;&#x5DF2;&#x652F;&#x6301; Linux &#x7684; TProxy&#x3002;</li>
</ul>
<h2 id="20180921-v343"><a name="20180921-v343" class="plugin-anchor" href="#20180921-v343"><i class="fa fa-link" aria-hidden="true"></i></a>2018.09.21 v3.43</h2>
<ul>
<li>DNS &#x67E5;&#x8BE2;&#x652F;&#x6301;&#x4E86;&#x6309;&#x57DF;&#x540D;&#x9009;&#x62E9;&#x670D;&#x52A1;&#x5668;&#x7684;&#x529F;&#x80FD;&#x3002;</li>
</ul>
<h2 id="20180914-v340"><a name="20180914-v340" class="plugin-anchor" href="#20180914-v340"><i class="fa fa-link" aria-hidden="true"></i></a>2018.09.14 v3.40</h2>
<ul>
<li>&#x4F20;&#x8F93;&#x914D;&#x7F6E;&#x4E2D;&#x65B0;&#x589E;&#x4E86;&#x8FDE;&#x63A5;&#x9009;&#x9879;&#xFF0C;&#x53EF;&#x7528;&#x4E8E;&#x914D;&#x7F6E; VPN&#x3002;</li>
<li>&#x4F20;&#x8F93;&#x914D;&#x7F6E;&#x4E2D;&#x65B0;&#x589E;&#x4E86; TCP Fast Open &#x9009;&#x9879;&#x3002;</li>
</ul>
<h2 id="20180903-v338"><a name="20180903-v338" class="plugin-anchor" href="#20180903-v338"><i class="fa fa-link" aria-hidden="true"></i></a>2018.09.03 v3.38</h2>
<ul>
<li>mKCP &#x4E2D;&#x65B0;&#x589E;&#x4E86; WireGuard &#x4F2A;&#x88C5;&#x3002;</li>
<li>&#x4FEE;&#x590D;&#x4E86; mips/mips64 &#x4E2D; softfloat &#x7248;&#x672C;&#x7684;&#x7F16;&#x8BD1;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20180831-v337"><a name="20180831-v337" class="plugin-anchor" href="#20180831-v337"><i class="fa fa-link" aria-hidden="true"></i></a>2018.08.31 v3.37</h2>
<ul>
<li>&#x4F18;&#x5316;&#x4E86;&#x8BFB;&#x53D6;&#x7F51;&#x7EDC;&#x8FDE;&#x63A5;&#x65F6;&#x7684;&#x6027;&#x80FD;&#xFF0C;&#x89C1;<a href="../chapter_02/env.html">&#x73AF;&#x5883;&#x53D8;&#x91CF;</a>&#x3002;</li>
<li>VMess &#x5728; ARM64 &#x5E73;&#x53F0;&#x4E0A;&#x5C06;&#x9ED8;&#x8BA4;&#x4F7F;&#x7528; AES-128-GCM &#x4F5C;&#x4E3A;&#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#x3002;</li>
<li>&#x4F7F;&#x7528; Go 1.11 &#x7F16;&#x8BD1;&#x3002;</li>
</ul>
<h2 id="20180824-v336"><a name="20180824-v336" class="plugin-anchor" href="#20180824-v336"><i class="fa fa-link" aria-hidden="true"></i></a>2018.08.24 v3.36</h2>
<ul>
<li>&#x5927;&#x5E45;&#x63D0;&#x5347;&#x4E86;&#x8DEF;&#x7531;&#x4E2D;&#x5B50;&#x57DF;&#x540D;&#xFF08;<code>domain:</code>&#xFF09;&#x5339;&#x914D;&#x7684;&#x6548;&#x7387;&#x3002;</li>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x652F;&#x6301;&#x4E86;&#x5B8C;&#x6574;&#x57DF;&#x540D;&#x5339;&#x914D;&#x3002;</li>
</ul>
<h2 id="20180807-v334"><a name="20180807-v334" class="plugin-anchor" href="#20180807-v334"><i class="fa fa-link" aria-hidden="true"></i></a>2018.08.07 v3.34</h2>
<ul>
<li>&#x5728;&#x5927;&#x591A;&#x6570;&#x8BBE;&#x5907;&#x4E0A;&#x6709;&#x4E86;&#x66F4;&#x7CBE;&#x786E;&#x7684;&#x5185;&#x5B58;&#x63A7;&#x5236;</li>
</ul>
<h2 id="20180727-v332"><a name="20180727-v332" class="plugin-anchor" href="#20180727-v332"><i class="fa fa-link" aria-hidden="true"></i></a>2018.07.27 v3.32</h2>
<ul>
<li>&#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x63A2;&#x6D4B; BitTorrent &#x6D41;&#x91CF;&#x4E86;&#x3002;</li>
<li>&#x8DEF;&#x7531;&#x914D;&#x7F6E;&#x4E2D;&#x65B0;&#x589E;&#x4E86;<code>protocol</code>&#x9009;&#x9879;&#x7528;&#x4E8E;&#x6309;&#x6D41;&#x91CF;&#x7C7B;&#x578B;&#x8FDB;&#x884C;&#x8DEF;&#x7531;&#x9009;&#x62E9;&#x3002;</li>
<li>&#x8DEF;&#x7531;&#x914D;&#x7F6E;&#x4E2D;&#x65B0;&#x589E;&#x4E86;<code>geosite:speedtest</code>&#x7528;&#x4E8E;&#x9002;&#x914D;&#x6240;&#x6709;&#x7684; Speedtest.net &#x516C;&#x7528;&#x670D;&#x52A1;&#x5668;&#x3002;</li>
</ul>
<h2 id="20180720-v331"><a name="20180720-v331" class="plugin-anchor" href="#20180720-v331"><i class="fa fa-link" aria-hidden="true"></i></a>2018.07.20 v3.31</h2>
<ul>
<li>&#x65B0;&#x589E;&#x4E86; <a href="../chapter_02/transport/domainsocket.html">Domain Socket &#x4F20;&#x8F93;&#x65B9;&#x5F0F;</a> (&#x611F;&#x8C22; @xiaokangwang)&#x3002;</li>
</ul>
<h2 id="20180713-v330"><a name="20180713-v330" class="plugin-anchor" href="#20180713-v330"><i class="fa fa-link" aria-hidden="true"></i></a>2018.07.13 v3.30</h2>
<ul>
<li>&#x89E3;&#x51B3;&#x4E86;&#x4E00;&#x4E2A;&#x53EF;&#x80FD;&#x4F1A;&#x5BFC;&#x81F4; mKCP &#x65AD;&#x6D41;&#x7684;&#x95EE;&#x9898;&#x3002;</li>
<li>&#x611F;&#x8C22;&#x6765;&#x81EA;&#x4FC4;&#x7F57;&#x65AF;&#x7684;&#x670B;&#x53CB;&#xFF0C;&#x6211;&#x4EEC;&#x73B0;&#x5728;&#x6709;<a href="https://www.v2ray.com/ru/" target="_blank">&#x4FC4;&#x8BED;&#x6587;&#x6863;</a>&#x4E86;&#x3002;</li>
</ul>
<h2 id="20180706-v329"><a name="20180706-v329" class="plugin-anchor" href="#20180706-v329"><i class="fa fa-link" aria-hidden="true"></i></a>2018.07.06 v3.29</h2>
<ul>
<li>&#x65B0;&#x589E;&#x4E86; MTProto &#x4EE3;&#x7406;&#x534F;&#x8BAE;&#x3002;</li>
</ul>
<h2 id="20180629-v327"><a name="20180629-v327" class="plugin-anchor" href="#20180629-v327"><i class="fa fa-link" aria-hidden="true"></i></a>2018.06.29 v3.27</h2>
<ul>
<li>DNS &#x652F;&#x6301;&#x4E86; EDNS client subnet&#x3002;</li>
<li>DNS &#x7684;&#x9759;&#x6001; IP &#x5339;&#x914D;&#x73B0;&#x5728;&#x652F;&#x6301;&#x5B50;&#x57DF;&#x540D;&#x4E86;&#x3002;</li>
</ul>
<h2 id="20180615-v326"><a name="20180615-v326" class="plugin-anchor" href="#20180615-v326"><i class="fa fa-link" aria-hidden="true"></i></a>2018.06.15 v3.26</h2>
<ul>
<li>&#x65B0;&#x589E;&#x4E86; Dragonfly BSD &#x7684;&#x9884;&#x7F16;&#x8BD1;&#x7248;&#x672C;&#x3002;</li>
</ul>
<h2 id="20180601-v324"><a name="20180601-v324" class="plugin-anchor" href="#20180601-v324"><i class="fa fa-link" aria-hidden="true"></i></a>2018.06.01 v3.24</h2>
<ul>
<li>JSON &#x914D;&#x7F6E;&#x4E2D;&#x65B0;&#x589E;&#x4E86;&#x7528;&#x6237;&#x7EA7;&#x522B;&#x7684;&#x7F13;&#x5B58;&#x63A7;&#x5236;&#x9009;&#x9879;&#x3002;</li>
<li>mKCP &#x65B0;&#x589E;&#x4E86; DTLS &#x4F2A;&#x88C5;&#x3002;</li>
<li>TLS &#x73B0;&#x5728;&#x9ED8;&#x8BA4;&#x53EA;&#x4F7F;&#x7528; TLS 1.3 &#x63A8;&#x8350;&#x7684;&#x52A0;&#x5BC6;&#x5957;&#x4EF6;&#x3002;</li>
</ul>
<h2 id="20180525-v323"><a name="20180525-v323" class="plugin-anchor" href="#20180525-v323"><i class="fa fa-link" aria-hidden="true"></i></a>2018.05.25 v3.23</h2>
<ul>
<li>JSON &#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x4E2D;&#xFF0C;&#x7AEF;&#x53E3;&#x652F;&#x6301;&#x4ECE;&#x73AF;&#x5883;&#x53D8;&#x91CF;&#x52A0;&#x8F7D;&#x3002;</li>
<li>JSON &#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x652F;&#x6301;&#x4ECE;&#x6307;&#x5B9A;&#x6587;&#x4EF6;&#x52A0;&#x8F7D; IP &#x548C;&#x57DF;&#x540D;&#x3002;</li>
</ul>
<h2 id="20180420-v319"><a name="20180420-v319" class="plugin-anchor" href="#20180420-v319"><i class="fa fa-link" aria-hidden="true"></i></a>2018.04.20 v3.19</h2>
<ul>
<li>&#x5165;&#x7AD9;&#x4EE3;&#x7406;&#x7684;&#x6D41;&#x91CF;&#x7EDF;&#x8BA1;&#x3002;</li>
</ul>
<h2 id="20180413-v317"><a name="20180413-v317" class="plugin-anchor" href="#20180413-v317"><i class="fa fa-link" aria-hidden="true"></i></a>2018.04.13 v3.17</h2>
<ul>
<li>V2Ray &#x53EF;&#x76F4;&#x63A5;&#x52A0;&#x8F7D;&#x6765;&#x81EA; HTTP(s) &#x7684;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x3002;</li>
<li>V2Ray &#x7684; TLS &#x53EF;&#x4F7F;&#x7528; CA &#x8BC1;&#x4E66;&#x81EA;&#x52A8;&#x4E3A;&#x4EFB;&#x610F;&#x57DF;&#x540D;&#x7B7E;&#x53D1;&#x65B0;&#x7684;&#x8BC1;&#x4E66;&#x3002;</li>
<li><a href="../chapter_02/transport/h2.html">HTTP/2</a> &#x4F20;&#x8F93;&#x65B9;&#x5F0F;&#x3002;</li>
</ul>
<h2 id="20180406-v316"><a name="20180406-v316" class="plugin-anchor" href="#20180406-v316"><i class="fa fa-link" aria-hidden="true"></i></a>2018.04.06 v3.16</h2>
<ul>
<li><a href="../chapter_02/stats.html">&#x7EDF;&#x8BA1;&#x4FE1;&#x606F;</a>&#x3002;&#x5F00;&#x542F;&#x65B9;&#x5F0F;&#x7565;&#x9EBB;&#x70E6;&#xFF0C;&#x8BF7;&#x4ED4;&#x7EC6;&#x770B;&#x6587;&#x6863;&#x3002;</li>
<li>Shadowsocks &#x5165;&#x7AD9;&#x534F;&#x8BAE;&#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x53EA;&#x76D1;&#x542C; UDP &#x7AEF;&#x53E3;&#x800C;&#x4E0D;&#x76D1;&#x542C; TCP &#x4E86;&#x3002;&#x5F3A;&#x70C8;&#x5EFA;&#x8BAE;&#x4E0D;&#x5728;&#x540C;&#x4E00;&#x7AEF;&#x53E3;&#x4E0A;&#x540C;&#x65F6;&#x76D1;&#x542C; TCP &#x548C; UDP&#x3002;</li>
</ul>
<h2 id="20180302-v311"><a name="20180302-v311" class="plugin-anchor" href="#20180302-v311"><i class="fa fa-link" aria-hidden="true"></i></a>2018.03.02 v3.11</h2>
<ul>
<li>VMess Inbound &#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E2A;&#x9009;&#x9879;&#xFF0C;&#x7528;&#x4E8E;&#x7981;&#x6B62;&#x5BA2;&#x6237;&#x7AEF;&#x4F7F;&#x7528;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#x3002;</li>
<li>&#x63D0;&#x4F9B;&#x4E86; ARMv7 &#x7F16;&#x8BD1;&#x7248;&#x3002;</li>
<li>&#x63D0;&#x4F9B;&#x4E86;&#x4E0D;&#x8981;&#x6C42; FPU &#x7684; MIPS &#x7F16;&#x8BD1;&#x7248;&#x3002;</li>
</ul>
<h2 id="20180223-v310"><a name="20180223-v310" class="plugin-anchor" href="#20180223-v310"><i class="fa fa-link" aria-hidden="true"></i></a>2018.02.23 v3.10</h2>
<ul>
<li>&#x65E5;&#x5FD7;&#x683C;&#x5F0F;&#x4FEE;&#x6539;&#xFF0C;&#x6BCF;&#x6761;&#x65E5;&#x5FD7;&#x524D;&#x6DFB;&#x52A0;&#x4E86; Session ID&#xFF0C;&#x7528;&#x4E8E;&#x533A;&#x5206;&#x4E0D;&#x540C;&#x7684;&#x4EE3;&#x7406;&#x8BF7;&#x6C42;&#x3002;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20180216-v39"><a name="20180216-v39" class="plugin-anchor" href="#20180216-v39"><i class="fa fa-link" aria-hidden="true"></i></a>2018.02.16 v3.9</h2>
<ul>
<li>&#x65B0;&#x5E74;&#x5FEB;&#x4E50;!</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20180209-v37"><a name="20180209-v37" class="plugin-anchor" href="#20180209-v37"><i class="fa fa-link" aria-hidden="true"></i></a>2018.02.09 v3.7</h2>
<ul>
<li>&#x5F00;&#x53D1;&#x8005;&#x9884;&#x89C8;&#xFF1A;<a href="../chapter_02/api.html">&#x8FDC;&#x7A0B;&#x63A7;&#x5236;</a>&#x3002;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20171229-v35"><a name="20171229-v35" class="plugin-anchor" href="#20171229-v35"><i class="fa fa-link" aria-hidden="true"></i></a>2017.12.29 v3.5</h2>
<ul>
<li>Geoip &#x652F;&#x6301;&#x540D;&#x4E3A;&#x201C;Private&#x201D;&#x7684;&#x79C1;&#x6709;&#x5730;&#x5740;&#x5217;&#x8868;&#x3002;</li>
</ul>
<h2 id="20171222-v34"><a name="20171222-v34" class="plugin-anchor" href="#20171222-v34"><i class="fa fa-link" aria-hidden="true"></i></a>2017.12.22 v3.4</h2>
<ul>
<li>Websocket &#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x8BC6;&#x522B; X-Forwarded-For &#x5E76;&#x7528;&#x505A;&#x6E90;&#x5730;&#x5740;&#x3002;</li>
<li>&#x652F;&#x6301; s390x &#x5E73;&#x53F0;&#x3002;</li>
</ul>
<h2 id="20171208-v31"><a name="20171208-v31" class="plugin-anchor" href="#20171208-v31"><i class="fa fa-link" aria-hidden="true"></i></a>2017.12.08 v3.1</h2>
<ul>
<li>&#x652F;&#x6301;<a href="../chapter_02/policy.html">&#x672C;&#x5730;&#x7B56;&#x7565;</a></li>
<li>&#x652F;&#x6301;&#x4ECE;&#x73AF;&#x5883;&#x53D8;&#x91CF;&#x6307;&#x5B9A;&#x7684;&#x8DEF;&#x5F84;&#x52A0;&#x8F7D;&#x914D;&#x7F6E;&#x6587;&#x4EF6;</li>
</ul>
<h2 id="20171201-v30"><a name="20171201-v30" class="plugin-anchor" href="#20171201-v30"><i class="fa fa-link" aria-hidden="true"></i></a>2017.12.01 v3.0</h2>
<ul>
<li>&#x652F;&#x6301; Shadowsocks AEAD</li>
</ul>
<h2 id="20171118-v250"><a name="20171118-v250" class="plugin-anchor" href="#20171118-v250"><i class="fa fa-link" aria-hidden="true"></i></a>2017.11.18 v2.50</h2>
<ul>
<li><code>v2ray</code> &#x73B0;&#x5728;&#x4F1A;&#x5C1D;&#x8BD5;&#x4F7F;&#x7528; <code>v2ctl</code> &#x8FDB;&#x884C;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x89E3;&#x6790;&#xFF0C;&#x8BF7;&#x786E;&#x4FDD;&#x8FD9;&#x4E24;&#x4E2A;&#x6587;&#x4EF6;&#x5728;&#x540C;&#x4E00;&#x76EE;&#x5F55;&#x4E0B;&#xFF1B;</li>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x65B0;&#x589E; <code>IPOnDemand</code> &#x7B56;&#x7565;&#x8FDB;&#x884C;&#x540C;&#x6B65; IP &#x89E3;&#x6790;&#xFF1B;</li>
</ul>
<h2 id="20171110-v247"><a name="20171110-v247" class="plugin-anchor" href="#20171110-v247"><i class="fa fa-link" aria-hidden="true"></i></a>2017.11.10 v2.47</h2>
<ul>
<li><code>geosite</code> &#x7684;&#x6570;&#x636E;&#x73B0;&#x5728;&#x653E;&#x5728; <code>geosite.dat</code> &#x6587;&#x4EF6;&#x4E2D;&#x4E86;&#x3002;</li>
<li>&#x4E00;&#x4E9B;&#x4FEE;&#x590D;&#x3002;</li>
</ul>
<h2 id="20171103-v246"><a name="20171103-v246" class="plugin-anchor" href="#20171103-v246"><i class="fa fa-link" aria-hidden="true"></i></a>2017.11.03 v2.46</h2>
<ul>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x6DFB;&#x52A0; <code>geosite:cn</code>&#xFF0C;&#x7B49;&#x6548;&#x4E8E;&#x73B0;&#x6709;&#x7684;<code>chinasites</code>&#xFF0C;&#x4F46;&#x66F4;&#x52A0;&#x7075;&#x6D3B;&#x3002;</li>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x6DFB;&#x52A0; <code>geoip</code>&#x3002;<ul>
<li>&#x5B89;&#x88C5;&#x5305;&#x4E2D;&#x65B0;&#x589E;&#x4E86;<code>geoip.dat</code>&#x6587;&#x4EF6;&#xFF0C;&#x5305;&#x542B;&#x6240;&#x6709;<code>geoip</code>&#x4FE1;&#x606F;&#xFF0C;&#x6B64;&#x6587;&#x4EF6;&#x5FC5;&#x987B;&#x548C;<code>v2ray</code>&#x7A0B;&#x5E8F;&#x653E;&#x7F6E;&#x4E8E;&#x540C;&#x4E00;&#x8DEF;&#x5F84;&#x4E0B;&#x3002;&#x7531;&#x4E8E;&#x5B89;&#x88C5;&#x811A;&#x672C;&#x672A;&#x53CA;&#x65F6;&#x66F4;&#x65B0;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x7AEF;&#x548C;&#x90E8;&#x5206;&#x5BA2;&#x6237;&#x7AEF;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x624B;&#x52A8;&#x590D;&#x5236;&#x6B64;&#x6587;&#x4EF6;&#x3002;</li>
</ul>
</li>
<li>&#x5B89;&#x88C5;&#x5305;&#x4E2D;&#x65B0;&#x589E; <code>v2ctl</code> &#x7A0B;&#x5E8F;&#xFF0C;&#x53EF;&#x4F7F;&#x7528;&#x547D;&#x4EE4;<code>v2ctl verify /path/to/v2ray</code>&#x6765;&#x9A8C;&#x8BC1;<code>v2ray</code>&#x7A0B;&#x5E8F;&#x7B7E;&#x540D;&#x7684;&#x6709;&#x6548;&#x6027;&#x3002;</li>
</ul>
<h2 id="20171027-v244"><a name="20171027-v244" class="plugin-anchor" href="#20171027-v244"><i class="fa fa-link" aria-hidden="true"></i></a>2017.10.27 v2.44</h2>
<ul>
<li>HTTP &#x4EE3;&#x7406;&#x4E2D;&#x52A0;&#x5165;&#x4E86; Basic Authentication &#x652F;&#x6301;&#x3002;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B; bug&#x3002;</li>
</ul>
<h2 id="20171006-v240"><a name="20171006-v240" class="plugin-anchor" href="#20171006-v240"><i class="fa fa-link" aria-hidden="true"></i></a>2017.10.06 v2.40</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86;&#x5BFC;&#x81F4;&#x5185;&#x5B58;&#x6CC4;&#x6F0F;&#x7684;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20170929-v239"><a name="20170929-v239" class="plugin-anchor" href="#20170929-v239"><i class="fa fa-link" aria-hidden="true"></i></a>2017.09.29 v2.39</h2>
<ul>
<li>&#x5F53;&#x8FDC;&#x7A0B;&#x670D;&#x52A1;&#x5668;&#x5173;&#x95ED;&#x8FDE;&#x63A5;&#x65F6;&#xFF0C;&#x5165;&#x7AD9;&#x4EE3;&#x7406;&#x73B0;&#x5728;&#x4F1A;&#x5C3D;&#x5FEB;&#x65AD;&#x5F00;&#x4E0E;&#x5BA2;&#x6237;&#x7AEF;&#x7684;&#x8FDE;&#x63A5;&#x3002;</li>
<li>&#x9ED8;&#x8BA4;&#x8FDE;&#x63A5;&#x8D85;&#x65F6;&#x65F6;&#x95F4;&#x66F4;&#x6539;&#x4E3A; 5 &#x5206;&#x949F;&#x3002;</li>
</ul>
<h2 id="20170512-v227"><a name="20170512-v227" class="plugin-anchor" href="#20170512-v227"><i class="fa fa-link" aria-hidden="true"></i></a>2017.05.12 v2.27</h2>
<ul>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x65B0;&#x589E;&#x4E86;&#x201C;&#x57DF;&#x540D;&#x201D;&#x5339;&#x914D;&#x9009;&#x9879;&#x3002;</li>
</ul>
<h2 id="20170502-v226"><a name="20170502-v226" class="plugin-anchor" href="#20170502-v226"><i class="fa fa-link" aria-hidden="true"></i></a>2017.05.02 v2.26</h2>
<ul>
<li>&#x5404;&#x79CD;&#x7A33;&#x5B9A;&#x6027;&#x4FEE;&#x590D;&#x3002;</li>
</ul>
<h2 id="20170428-v225"><a name="20170428-v225" class="plugin-anchor" href="#20170428-v225"><i class="fa fa-link" aria-hidden="true"></i></a>2017.04.28 v2.25</h2>
<ul>
<li>&#x53EF;&#x4EE5;&#x7B80;&#x5355;&#x5730;&#x63A2;&#x6D4B; HTTP &#x548C; HTTPS &#x6D41;&#x91CF;&#x5E76;&#x6839;&#x636E;&#x5176;&#x5185;&#x5BB9;&#x8FDB;&#x884C;&#x8F6C;&#x53D1;&#x3002;</li>
</ul>
<h2 id="20170421-v224"><a name="20170421-v224" class="plugin-anchor" href="#20170421-v224"><i class="fa fa-link" aria-hidden="true"></i></a>2017.04.21 v2.24</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86; Mux &#x7684;&#x7A33;&#x5B9A;&#x6027;&#x95EE;&#x9898;&#x3002;</li>
<li>&#x63D0;&#x5347;&#x4E86;&#x603B;&#x4F53;&#x7684;&#x5185;&#x5B58;&#x4F7F;&#x7528;&#x6548;&#x7387;&#x3002;</li>
</ul>
<h2 id="20170415-v223"><a name="20170415-v223" class="plugin-anchor" href="#20170415-v223"><i class="fa fa-link" aria-hidden="true"></i></a>2017.04.15 v2.23</h2>
<ul>
<li>&#x63D0;&#x5347;&#x4E86; Mux &#x7684;&#x6027;&#x80FD;&#x3002;</li>
<li>Mux &#x4E2D;&#x53EF;&#x4EE5;&#x914D;&#x7F6E;&#x5E76;&#x53D1;&#x8FDE;&#x63A5;&#x6570;&#x4E86;&#x3002;</li>
<li>&#x63D0;&#x5347;&#x4E86; HTTP &#x4EE3;&#x7406;&#x7684;&#x6027;&#x80FD;&#x3002;</li>
<li>&#x79FB;&#x9664;&#x4E86; connectionReuse &#x7684;&#x914D;&#x7F6E;&#xFF08;&#x7531; Mux &#x66FF;&#x4EE3;&#xFF09;&#x3002;</li>
</ul>
<h2 id="20170408-v222"><a name="20170408-v222" class="plugin-anchor" href="#20170408-v222"><i class="fa fa-link" aria-hidden="true"></i></a>2017.04.08 v2.22</h2>
<ul>
<li>Mux.Cool &#x534F;&#x8BAE;</li>
</ul>
<h2 id="20170225-v220"><a name="20170225-v220" class="plugin-anchor" href="#20170225-v220"><i class="fa fa-link" aria-hidden="true"></i></a>2017.02.25 v2.20</h2>
<ul>
<li>&#x5B89;&#x88C5;&#x5305;&#x4E2D;&#x53EF;&#x6267;&#x884C;&#x6587;&#x4EF6;&#x9644;&#x5E26;&#x4E86; gpg &#x7B7E;&#x540D;&#x3002;</li>
<li>Windows &#x5B89;&#x88C5;&#x5305;&#x4E2D;&#x5E26;&#x4E86;&#x65B0;&#x7684; wv2ray.exe&#xFF0C;&#x8FD0;&#x884C;&#x65F6;&#x4E0D;&#x4F1A;&#x51FA;&#x73B0;&#x4EFB;&#x4F55;&#x754C;&#x9762;&#x3002;</li>
</ul>
<h2 id="20170218-v219"><a name="20170218-v219" class="plugin-anchor" href="#20170218-v219"><i class="fa fa-link" aria-hidden="true"></i></a>2017.02.18 v2.19</h2>
<ul>
<li>&#x670D;&#x52A1;&#x5668;&#x7AEF;&#x5F3A;&#x5236;&#x5F00;&#x542F;&#x9632;&#x91CD;&#x653E;&#x653B;&#x51FB;&#xFF08;Anti replay attack&#xFF09;&#x673A;&#x5236;&#x3002;<ul>
<li>&#x4E0D;&#x4F1A;&#x5F71;&#x54CD;&#x4EFB;&#x4F55;&#x73B0;&#x6709;&#x5BA2;&#x6237;&#x7AEF;&#x3002;</li>
</ul>
</li>
<li>VMess AES-128-GCM / Chacha20-Poly1305 / None &#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#x5347;&#x7EA7;&#x3002;<ul>
<li>&#x5982;&#x6B63;&#x5728;&#x4F7F;&#x7528;&#x5176;&#x4E2D;&#x4EFB;&#x4F55;&#x4E00;&#x4E2A;&#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#xFF0C;&#x8BF7;&#x540C;&#x65F6;&#x5347;&#x7EA7;&#x5BA2;&#x6237;&#x7AEF;&#x548C;&#x670D;&#x52A1;&#x5668;&#x3002;</li>
<li>AES-128-CFB &#x4E0D;&#x53D7;&#x5F71;&#x54CD;&#x3002;</li>
</ul>
</li>
<li>&#x4F7F;&#x7528; Golang 1.8 &#x7F16;&#x8BD1;&#xFF0C;&#x52A0;&#x5165;&#x5BF9; 32 &#x4F4D; MIPS &#x7684;&#x652F;&#x6301;&#x3002;</li>
</ul>
<h2 id="20170211-v218"><a name="20170211-v218" class="plugin-anchor" href="#20170211-v218"><i class="fa fa-link" aria-hidden="true"></i></a>2017.02.11 v2.18</h2>
<ul>
<li>&#x6E05;&#x7406;&#x4E86; WebSocket &#x76F8;&#x5173;&#x7684;&#x4EE3;&#x7801;&#x3002;</li>
<li>&#x79FB;&#x9664;&#x4E86; allowPassive &#x8BBE;&#x7F6E;&#x3002;&#x73B0;&#x5728;&#x7684;&#x884C;&#x4E3A;&#x76F8;&#x5F53;&#x4E8E; allowPassive = true&#x3002;</li>
<li>Bug &#x4FEE;&#x590D;&#x3002;</li>
</ul>
<h2 id="20170204-v217"><a name="20170204-v217" class="plugin-anchor" href="#20170204-v217"><i class="fa fa-link" aria-hidden="true"></i></a>2017.02.04 v2.17</h2>
<ul>
<li>Bug &#x4FEE;&#x590D;&#x3002;</li>
</ul>
<h2 id="20170128-v216"><a name="20170128-v216" class="plugin-anchor" href="#20170128-v216"><i class="fa fa-link" aria-hidden="true"></i></a>2017.01.28 v2.16</h2>
<ul>
<li>Freedom &#x4E2D;&#x53EF;&#x4EE5;&#x6307;&#x5B9A;&#x4E00;&#x4E2A;&#x91CD;&#x5B9A;&#x5411;&#x5730;&#x5740;&#xFF0C;&#x5C06;&#x6240;&#x6709;&#x6570;&#x636E;&#x53D1;&#x5F80;&#x8FD9;&#x4E2A;&#x5730;&#x5740;&#x3002;&#x6B64;&#x9009;&#x9879;&#x53EF;&#x7528;&#x4E8E;&#x9002;&#x914D; Shadowsocks Obfs &#x6216; KCPTun &#x7B49;&#x5DE5;&#x5177;&#x3002;</li>
<li>VMess &#x7684;&#x201C;&#x4E0D;&#x52A0;&#x5BC6;&#x201D;&#x9009;&#x9879;&#x6027;&#x80FD;&#x4F18;&#x5316;&#xFF0C;&#x4E0E;&#x4E4B;&#x524D;&#x7248;&#x672C;&#x4E0D;&#x517C;&#x5BB9;&#x3002;</li>
<li>&#x65B0;&#x5E74;&#x5FEB;&#x4E50;&#xFF01;</li>
</ul>
<h2 id="20170116-v215"><a name="20170116-v215" class="plugin-anchor" href="#20170116-v215"><i class="fa fa-link" aria-hidden="true"></i></a>2017.01.16 v2.15</h2>
<ul>
<li>mKCP &#x548C; WebSocket &#x73B0;&#x5DF2;&#x9002;&#x7528;&#x4E8E;&#x6240;&#x6709;&#x7684;&#x51FA;&#x7AD9;&#xFF08;&#x5165;&#x7AD9;&#xFF09;&#x534F;&#x8BAE;&#x3002;</li>
</ul>
<h2 id="20170109-v214"><a name="20170109-v214" class="plugin-anchor" href="#20170109-v214"><i class="fa fa-link" aria-hidden="true"></i></a>2017.01.09 v2.14</h2>
<ul>
<li>Socks 5 &#x51FA;&#x7AD9;&#x534F;&#x8BAE;&#x3002;</li>
<li>mKCP &#x65B0;&#x589E;&#x5FAE;&#x4FE1;&#x89C6;&#x9891;&#x901A;&#x8BDD;&#x4F2A;&#x88C5;&#x3002;</li>
</ul>
<h2 id="20170102-v213"><a name="20170102-v213" class="plugin-anchor" href="#20170102-v213"><i class="fa fa-link" aria-hidden="true"></i></a>2017.01.02 v2.13</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20161226-v212"><a name="20161226-v212" class="plugin-anchor" href="#20161226-v212"><i class="fa fa-link" aria-hidden="true"></i></a>2016.12.26 v2.12</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20161219-v211"><a name="20161219-v211" class="plugin-anchor" href="#20161219-v211"><i class="fa fa-link" aria-hidden="true"></i></a>2016.12.19 v2.11</h2>
<ul>
<li>JSON &#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x53EF;&#x4EE5;&#x5199;&#x6CE8;&#x91CA;&#x4E86;&#x3002;</li>
</ul>
<h2 id="20161212-v210"><a name="20161212-v210" class="plugin-anchor" href="#20161212-v210"><i class="fa fa-link" aria-hidden="true"></i></a>2016.12.12 v2.10</h2>
<ul>
<li>VMess &#x4E2D;&#x589E;&#x52A0;&#x4E86; AES-GCM &#x548C; Chacha20-Poly1305 &#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#xFF1B;</li>
</ul>
<h2 id="20161205-v29"><a name="20161205-v29" class="plugin-anchor" href="#20161205-v29"><i class="fa fa-link" aria-hidden="true"></i></a>2016.12.05 v2.9</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E0E; Alpine Linux &#x7684;&#x517C;&#x5BB9;&#x6027;&#xFF1B;</li>
</ul>
<h2 id="20161128-v28"><a name="20161128-v28" class="plugin-anchor" href="#20161128-v28"><i class="fa fa-link" aria-hidden="true"></i></a>2016.11.28 v2.8</h2>
<ul>
<li>Shadowsocks &#x670D;&#x52A1;&#x5668;&#x7AEF;&#x73B0;&#x63A5;&#x53D7; OTA &#x8BBE;&#x7F6E;&#xFF0C;&#x53EF;&#x5F3A;&#x5236;&#x5F00;&#x542F;&#x6216;&#x5173;&#x95ED; OTA &#x9A8C;&#x8BC1;&#xFF1B;</li>
<li>&#x5C0F;&#x4FEE;&#x5C0F;&#x8865;&#xFF1B;</li>
</ul>
<h2 id="20161121-v27"><a name="20161121-v27" class="plugin-anchor" href="#20161121-v27"><i class="fa fa-link" aria-hidden="true"></i></a>2016.11.21 v2.7</h2>
<ul>
<li>&#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x7ED9;&#x4E3B;&#x5165;&#x7AD9;&#x51FA;&#x7AD9;&#x8FDE;&#x63A5;&#x8BBE;&#x7F6E;&#x6807;&#x8BC6;&#x4E86;&#xFF1B;</li>
<li>&#x4E00;&#x4E9B;&#x5C0F;&#x4FEE;&#x5C0F;&#x8865;&#xFF1B;</li>
</ul>
<h2 id="20161114-v26"><a name="20161114-v26" class="plugin-anchor" href="#20161114-v26"><i class="fa fa-link" aria-hidden="true"></i></a>2016.11.14 v2.6</h2>
<ul>
<li>&#x53EF;&#x5C06;&#x4E00;&#x4E2A;&#x51FA;&#x7AD9;&#x534F;&#x8BAE;&#x53D1;&#x51FA;&#x7684;&#x6570;&#x636E;&#x8F6C;&#x53D1;&#x81F3;&#x53E6;&#x4E00;&#x51FA;&#x7AD9;&#x534F;&#x8BAE;&#xFF1B;</li>
<li>&#x8DEF;&#x7531;&#x53EF;&#x6839;&#x636E;&#x5165;&#x7AD9;&#x534F;&#x8BAE;&#x7684;&#x6807;&#x8BC6;&#x6765;&#x8FDB;&#x884C;&#x5224;&#x65AD;&#x4E86;&#xFF1B;</li>
</ul>
<h2 id="20161107-v25"><a name="20161107-v25" class="plugin-anchor" href="#20161107-v25"><i class="fa fa-link" aria-hidden="true"></i></a>2016.11.07 v2.5</h2>
<ul>
<li>&#x65B0;&#x589E; Shadowsocks &#x51FA;&#x7AD9;&#x534F;&#x8BAE;&#xFF1B;</li>
<li>&#x65B0;&#x589E; TCP &#x8FDE;&#x63A5;&#x4E2D;&#x7684; HTTP &#x5934;&#x90E8;&#x4F2A;&#x88C5;&#xFF1B;</li>
</ul>
<h2 id="20161024-v24"><a name="20161024-v24" class="plugin-anchor" href="#20161024-v24"><i class="fa fa-link" aria-hidden="true"></i></a>2016.10.24 v2.4</h2>
<ul>
<li>&#x6BCF;&#x4E2A;&#x5165;&#x7AD9;&#x51FA;&#x7AD9;&#x534F;&#x8BAE;&#x53EF;&#x4EE5;&#x914D;&#x7F6E;&#x5404;&#x81EA;&#x7684; TCP / mKCP / WebSocket &#x8BBE;&#x7F6E;&#x4E86;&#xFF1B;</li>
<li>&#x8DEF;&#x7531;&#x73B0;&#x53EF;&#x4EE5;&#x8DDF;&#x636E;&#x6765;&#x6E90; IP &#x8FDB;&#x884C;&#x8F6C;&#x53D1;&#xFF1B;</li>
</ul>
<h2 id="20161017-v23"><a name="20161017-v23" class="plugin-anchor" href="#20161017-v23"><i class="fa fa-link" aria-hidden="true"></i></a>2016.10.17 v2.3</h2>
<ul>
<li>&#x91CD;&#x6784;&#x4E86;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x76F8;&#x5173;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x5F15;&#x5165;&#x4E86;&#x57FA;&#x4E8E; Protobuf &#x7684;&#x65B0;&#x683C;&#x5F0F;&#xFF1B;</li>
<li>&#x589E;&#x52A0;&#x4E86; OpenBSD &#x7684;&#x4E8C;&#x8FDB;&#x7A0B;&#x6587;&#x4EF6;&#xFF1B;</li>
<li>&#x5C0F;&#x4FEE;&#x5C0F;&#x8865;&#xFF1B;</li>
</ul>
<h2 id="20160919-v22"><a name="20160919-v22" class="plugin-anchor" href="#20160919-v22"><i class="fa fa-link" aria-hidden="true"></i></a>2016.09.19 v2.2</h2>
<ul>
<li>&#x65B0;&#x589E;&#x4E86; WebSocket &#x7684;&#x8F7D;&#x4F53;&#xFF08;&#x611F;&#x8C22; <a href="https://github.com/xiaokangwang" target="_blank">@xiaokangwang</a>&#xFF09;&#xFF1B;</li>
</ul>
<h2 id="20160919-v21"><a name="20160919-v21" class="plugin-anchor" href="#20160919-v21"><i class="fa fa-link" aria-hidden="true"></i></a>2016.09.19 v2.1</h2>
<ul>
<li>mKCP &#x6027;&#x80FD;&#x63D0;&#x5347;&#xFF1B;</li>
</ul>
<h2 id="20160820-v20"><a name="20160820-v20" class="plugin-anchor" href="#20160820-v20"><i class="fa fa-link" aria-hidden="true"></i></a>2016.08.20 v2.0</h2>
<ul>
<li>&#x4E00;&#x5468;&#x5E74;</li>
</ul>
<h2 id="20160815-v124"><a name="20160815-v124" class="plugin-anchor" href="#20160815-v124"><i class="fa fa-link" aria-hidden="true"></i></a>2016.08.15 v1.24</h2>
<ul>
<li>mKCP &#x65B0;&#x589E;&#x4E86; BT &#x6570;&#x636E;&#x5305;&#x4F2A;&#x88C5;&#x3002;</li>
<li>&#x5165;&#x7AD9;&#x8FDE;&#x63A5;&#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x8BBE;&#x7F6E; allowPassive &#x6765;&#x5141;&#x8BB8;&#x88AB;&#x52A8;&#x8FDE;&#x63A5;&#xFF0C;&#x5982; IMAP&#x3002;</li>
</ul>
<h2 id="20160808-v123"><a name="20160808-v123" class="plugin-anchor" href="#20160808-v123"><i class="fa fa-link" aria-hidden="true"></i></a>2016.08.08 v1.23</h2>
<ul>
<li>&#x4F18;&#x5316;&#x4E86; mKCP &#x6570;&#x636E;&#x5305;&#x3002;&#x6B64;&#x7248;&#x672C;&#x7684; mKCP &#x4E0E;&#x4E4B;&#x524D;&#x7248;&#x672C;&#x4E0D;&#x517C;&#x5BB9;&#xFF0C;&#x8BF7;&#x540C;&#x65F6;&#x5347;&#x7EA7;&#x5BA2;&#x6237;&#x7AEF;&#x548C;&#x670D;&#x52A1;&#x5668;&#x3002;</li>
<li>mKCP &#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x7ECF;&#x8FC7;&#x914D;&#x7F6E;&#xFF0C;&#x4F2A;&#x88C5;&#x6210;&#x89C6;&#x9891;&#x901A;&#x8BDD;&#x7684;&#x6570;&#x636E;&#x3002;</li>
</ul>
<h2 id="20160801-v122"><a name="20160801-v122" class="plugin-anchor" href="#20160801-v122"><i class="fa fa-link" aria-hidden="true"></i></a>2016.08.01 v1.22</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86; mKCP &#x4E2D;&#x4E00;&#x4E2A;&#x5185;&#x5B58;&#x6CC4;&#x6F0F;&#x95EE;&#x9898;&#xFF1B;</li>
<li>&#x65B0;&#x589E;&#x4E86; FreeBSD &#x7684;&#x652F;&#x6301;&#xFF1B;</li>
</ul>
<h2 id="20160725-v121"><a name="20160725-v121" class="plugin-anchor" href="#20160725-v121"><i class="fa fa-link" aria-hidden="true"></i></a>2016.07.25 v1.21</h2>
<ul>
<li>&#x63D0;&#x5347;&#x4E86; ChaCha20 &#x7684;&#x6027;&#x80FD;&#xFF08;&#x611F;&#x8C22; aead@&#xFF09;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20160718-v120"><a name="20160718-v120" class="plugin-anchor" href="#20160718-v120"><i class="fa fa-link" aria-hidden="true"></i></a>2016.07.18 v1.20</h2>
<ul>
<li>KCP &#x4E2D;&#x65B0;&#x589E;&#x4E86; readBufferSize &#x548C; writeBufferSize &#x9009;&#x9879;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20160711-v119"><a name="20160711-v119" class="plugin-anchor" href="#20160711-v119"><i class="fa fa-link" aria-hidden="true"></i></a>2016.07.11 v1.19</h2>
<ul>
<li>&#x65B0;&#x589E;&#x4E86; <a href="../chapter_02/05_transport.html#&#x5206;&#x8FDE;&#x63A5;&#x914D;&#x7F6E;">TLS &#x9009;&#x9879;</a>&#xFF0C;&#x5E73;&#x53F0;&#x652F;&#x6301;&#x7684;&#x6240;&#x6709;&#x534F;&#x8BAE;&#x90FD;&#x53EF;&#x4EE5;&#x5F00;&#x542F; TLS&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86; KCP &#x7684;&#x6027;&#x80FD;&#x95EE;&#x9898;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A;&#x53EF;&#x80FD;&#x5BFC;&#x81F4; KCP &#x4E2D; EOF &#x54CD;&#x5E94;&#x7684;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20160704-v118"><a name="20160704-v118" class="plugin-anchor" href="#20160704-v118"><i class="fa fa-link" aria-hidden="true"></i></a>2016.07.04 v1.18</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86; KCP &#x4E2D;&#x8FDE;&#x63A5;&#x591A;&#x8FC7;&#x7684;&#x95EE;&#x9898;&#xFF1B;</li>
<li>&#x964D;&#x4F4E;&#x4E86; KCP &#x5BF9; CPU &#x7684;&#x4F7F;&#x7528;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x5176;&#x5B83;&#x7684;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20160619-v117"><a name="20160619-v117" class="plugin-anchor" href="#20160619-v117"><i class="fa fa-link" aria-hidden="true"></i></a>2016.06.19 v1.17</h2>
<ul>
<li>&#x6574;&#x5408;&#x4E86; KCP&#xFF08;&#x611F;&#x8C22; <a href="https://github.com/xiaokangwang" target="_blank">xiaokangwang</a>&#x3001;<a href="https://github.com/xtaci" target="_blank">xtaci</a>&#x3001;<a href="https://github.com/skywind3000" target="_blank">skywind3000</a>&#xFF09;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x5C0F;&#x95EE;&#x9898;</li>
</ul>
<h2 id="20160612-v116"><a name="20160612-v116" class="plugin-anchor" href="#20160612-v116"><i class="fa fa-link" aria-hidden="true"></i></a>2016.06.12 v1.16</h2>
<ul>
<li>TCP &#x8FDE;&#x63A5;&#x91CD;&#x7528;&#x9ED8;&#x8BA4;&#x5F00;&#x542F;&#xFF1B;</li>
<li>Dokodemo-door &#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x8BC6;&#x522B;&#x7531; iptables &#x8F6C;&#x53D1;&#x7684;&#x6570;&#x636E;&#x4E86;&#xFF1B;</li>
<li>Blackhole &#x53EF;&#x914D;&#x7F6E;&#x81EA;&#x52A8;&#x53D1;&#x9001; HTTP &#x5F62;&#x5F0F;&#x7684;&#x62D2;&#x7EDD;&#x6570;&#x636E;&#xFF1B;</li>
</ul>
<h2 id="20160605-v115"><a name="20160605-v115" class="plugin-anchor" href="#20160605-v115"><i class="fa fa-link" aria-hidden="true"></i></a>2016.06.05 v1.15</h2>
<ul>
<li>&#x589E;&#x52A0;&#x4E86; TCP &#x8FDE;&#x63A5;&#x91CD;&#x7528;&#x9009;&#x9879;&#xFF0C;&#x5BF9;&#x4E8E; HTTP &#x8BF7;&#x6C42;&#x7684;&#x6027;&#x80FD;&#x6709;&#x660E;&#x663E;&#x7684;&#x63D0;&#x5347;&#xFF1B;</li>
<li>&#x652F;&#x6301;&#x76D1;&#x542C;&#x6307;&#x5B9A;&#x7684; IP &#x5730;&#x5740;&#x800C;&#x975E;&#x5168;&#x90E8;&#xFF1B;</li>
<li>&#x652F;&#x6301;&#x4ECE;&#x6307;&#x5B9A;&#x7684; IP &#x5730;&#x5740;&#x53D1;&#x51FA;&#x6570;&#x636E;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86; HTTP &#x4EE3;&#x7406;&#x4E2D;&#x4E00;&#x4E2A;&#x53EF;&#x80FD;&#x4F1A;&#x5BFC;&#x81F4;&#x5185;&#x5B58;&#x8017;&#x5C3D;&#x7684;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20160529-v114"><a name="20160529-v114" class="plugin-anchor" href="#20160529-v114"><i class="fa fa-link" aria-hidden="true"></i></a>2016.05.29 v1.14</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86; HTTP &#x4EE3;&#x7406;&#x4E2D;&#x4E00;&#x4E2A;&#x53EF;&#x80FD;&#x5BFC;&#x81F4;&#x5D29;&#x6E83;&#x7684;&#x95EE;&#x9898;&#xFF1B;</li>
<li><a href="install.html">&#x5B89;&#x88C5;&#x811A;&#x672C;</a>&#x4E2D;&#x589E;&#x52A0;&#x4E86;&#x4E00;&#x4E9B;&#x529F;&#x80FD;&#xFF1B;</li>
<li><a href="../chapter_02/04_dns.html">DNS</a> &#x4E2D;&#x589E;&#x52A0;&#x4E86;&#x9759;&#x6001;&#x8DEF;&#x7531;&#x529F;&#x80FD;&#xFF1B;</li>
<li>&#x5B98;&#x65B9;&#x670D;&#x52A1;&#x5668;&#x5730;&#x5740;&#x53D8;&#x52A8;&#xFF1B;</li>
</ul>
<h2 id="20160516-v113"><a name="20160516-v113" class="plugin-anchor" href="#20160516-v113"><i class="fa fa-link" aria-hidden="true"></i></a>2016.05.16 v1.13</h2>
<ul>
<li>&#x5185;&#x7F6E; DNS &#x670D;&#x52A1;&#xFF0C;&#x53EF;&#x642D;&#x914D; chinasites &#x548C; chinaip &#x8FDB;&#x884C;&#x66F4;&#x4E3A;&#x7CBE;&#x51C6;&#x7684;&#x8DEF;&#x7531;&#x5224;&#x65AD;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A; UDP &#x8F6C;&#x53D1;&#x65F6;&#x7684;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20160501-v1121"><a name="20160501-v1121" class="plugin-anchor" href="#20160501-v1121"><i class="fa fa-link" aria-hidden="true"></i></a>2016.05.01 v1.12.1</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86; VMess &#x534F;&#x8BAE;&#x4E2D;&#x7684;&#x4E00;&#x4E2A; bug&#x3002;</li>
</ul>
<h2 id="20160501-v112"><a name="20160501-v112" class="plugin-anchor" href="#20160501-v112"><i class="fa fa-link" aria-hidden="true"></i></a>2016.05.01 v1.12</h2>
<ul>
<li>&#x518D;&#x6B21;&#x5C1D;&#x8BD5;&#x4FEE;&#x590D;&#x5185;&#x5B58;&#x4F7F;&#x7528;&#x95EE;&#x9898;&#xFF1B;</li>
<li>&#x63D0;&#x5347;&#x4E86; Shadowsocks &#x7684;&#x6027;&#x80FD;&#xFF1B;</li>
<li>loglevel &#x589E;&#x52A0;&#x4E86;&#x65B0;&#x7684;&#x9009;&#x9879;&#x201C;none&#x201D;&#x8868;&#x793A;&#x4E0D;&#x8BB0;&#x5F55;&#x4EFB;&#x4F55; log&#xFF1B;</li>
</ul>
<h2 id="20160418-v111"><a name="20160418-v111" class="plugin-anchor" href="#20160418-v111"><i class="fa fa-link" aria-hidden="true"></i></a>2016.04.18 v1.11</h2>
<ul>
<li>&#x5C1D;&#x8BD5;&#x4FEE;&#x590D;&#x5185;&#x5B58;&#x4F7F;&#x7528;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20160307-v110"><a name="20160307-v110" class="plugin-anchor" href="#20160307-v110"><i class="fa fa-link" aria-hidden="true"></i></a>2016.03.07 v1.10</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86;&#x52A8;&#x6001;&#x7AEF;&#x53E3;&#x5237;&#x65B0;&#x65F6;&#x7684;&#x6027;&#x80FD;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20160229-v191"><a name="20160229-v191" class="plugin-anchor" href="#20160229-v191"><i class="fa fa-link" aria-hidden="true"></i></a>2016.02.29 v1.9.1</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86; Shadowsocks &#x4E2D; OTA &#x7684;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<h2 id="20160229-v19"><a name="20160229-v19" class="plugin-anchor" href="#20160229-v19"><i class="fa fa-link" aria-hidden="true"></i></a>2016.02.29 v1.9</h2>
<ul>
<li>Shadowsocks &#x652F;&#x6301;&#x4E86; ChaCha20 &#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#xFF1B;</li>
<li>&#x9ED8;&#x8BA4;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x589E;&#x52A0;&#x4E86;&#x66F4;&#x591A;&#x7684;&#x76F4;&#x8FDE;&#x7F51;&#x7AD9;&#xFF1B;</li>
<li>&#x52A8;&#x6001;&#x7AEF;&#x53E3;&#x4E2D;&#x73B0;&#x5DF2;&#x53EF;&#x4EE5;&#x81EA;&#x52A8;&#x521B;&#x5EFA;&#x5E10;&#x53F7;&#xFF0C;&#x65E0;&#x9700;&#x4E8B;&#x5148;&#x6307;&#x5B9A;&#xFF1B;</li>
</ul>
<h2 id="20160222-v18"><a name="20160222-v18" class="plugin-anchor" href="#20160222-v18"><i class="fa fa-link" aria-hidden="true"></i></a>2016.02.22 v1.8</h2>
<ul>
<li>&#x66F4;&#x65B0;&#x4E86;&#x5B89;&#x88C5;&#x811A;&#x672C; install-release.sh &#xFF08;&#x611F;&#x8C22; netcookies@)&#xFF1A;<ul>
<li>&#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x81EA;&#x52A8;&#x505C;&#x6B62; V2Ray &#x8FDB;&#x7A0B;&#xFF0C;&#x5E76;&#x5728;&#x66F4;&#x65B0;&#x5B8C;&#x6210;&#x540E;&#x81EA;&#x52A8;&#x8FD0;&#x884C; V2Ray&#xFF1B;</li>
<li>install-release.sh &#x63A5;&#x53D7; --proxy &#x53C2;&#x6570;&#x5E76;&#x4ECE;&#x6307;&#x5B9A;&#x7684;&#x4EE3;&#x7406;&#x4E0B;&#x8F7D; V2Ray&#xFF1B;</li>
</ul>
</li>
<li>&#x4F7F;&#x7528; Go 1.6 &#x7F16;&#x8BD1;&#xFF0C;&#x63D0;&#x5347;&#x4E86; AES &#x52A0;&#x5BC6;&#x7684;&#x6027;&#x80FD;&#xFF1B;</li>
<li>&#x4E00;&#x4E9B;&#x5C0F;&#x4FEE;&#x5C0F;&#x8865;&#xFF1B;</li>
<li>&#x5B98;&#x65B9;&#x670D;&#x52A1;&#x5668; IP &#x66F4;&#x65B0;&#xFF0C;&#x8BF7;&#x91CD;&#x65B0;&#x4E0B;&#x8F7D;&#x5B89;&#x88C5;&#x5305;&#x4EE5;&#x83B7;&#x5F97;&#x6700;&#x65B0;&#x7684;&#x914D;&#x7F6E;&#x3002;</li>
</ul>
<h2 id="20160208-v17"><a name="20160208-v17" class="plugin-anchor" href="#20160208-v17"><i class="fa fa-link" aria-hidden="true"></i></a>2016.02.08 v1.7</h2>
<ul>
<li>&#x63D0;&#x5347;&#x4E86; UDP &#x8F6C;&#x53D1;&#x7684;&#x6027;&#x80FD;&#xFF1B;</li>
<li>&#x63D0;&#x5347;&#x4E86; Shadowsocks &#x7684;&#x5B89;&#x5168;&#x6027;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#xFF1B;</li>
<li>&#x795D;&#x5927;&#x5BB6;&#x65B0;&#x5E74;&#x5FEB;&#x4E50;&#xFF01;</li>
</ul>
<h2 id="20160201-v16"><a name="20160201-v16" class="plugin-anchor" href="#20160201-v16"><i class="fa fa-link" aria-hidden="true"></i></a>2016.02.01 v1.6</h2>
<ul>
<li>&#x670D;&#x52A1;&#x5668;&#x7AEF;&#x652F;&#x6301; Shadowsocks&#xFF1B;<ul>
<li><a href="../chapter_02/02_protocols.html#shadowsocks">&#x534F;&#x8BAE;&#x8BE6;&#x60C5;</a></li>
</ul>
</li>
</ul>
<h2 id="20160125-v15"><a name="20160125-v15" class="plugin-anchor" href="#20160125-v15"><i class="fa fa-link" aria-hidden="true"></i></a>2016.01.25 v1.5</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A; VMess &#x4E2D;&#x7684;&#x5B89;&#x5168;&#x6027;&#x95EE;&#x9898;&#xFF0C;&#x5BFC;&#x81F4;&#x4E86; 1.5 &#x548C;&#x4E4B;&#x524D;&#x7248;&#x672C;&#x4E0D;&#x517C;&#x5BB9;&#xFF0C;&#x8BF7;&#x540C;&#x65F6;&#x5347;&#x7EA7;&#x4F60;&#x7684;&#x5BA2;&#x6237;&#x7AEF;&#x548C;&#x670D;&#x52A1;&#x5668;&#x7AEF;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A;&#x8DEF;&#x7531;&#x4E0D;&#x80FD;&#x6B63;&#x5E38;&#x5DE5;&#x4F5C;&#x7684;&#x95EE;&#x9898;&#xFF1B;</li>
<li><a href="../chapter_03/00_dynport.md">&#x52A8;&#x6001;&#x7AEF;&#x53E3;</a>&#xFF1B;</li>
<li>&#x7565;&#x5FAE;&#x63D0;&#x5347;&#x4E86;&#x6027;&#x80FD;&#xFF1B;</li>
</ul>
<h2 id="20160118-v14"><a name="20160118-v14" class="plugin-anchor" href="#20160118-v14"><i class="fa fa-link" aria-hidden="true"></i></a>2016.01.18 v1.4</h2>
<ul>
<li>&#x66F4;&#x65B0;&#x4E86;<a href="install.html">&#x5B89;&#x88C5;&#x811A;&#x672C;</a>&#xFF0C;&#x5728; Debian / Ubuntu / CentOS 7 &#x4E2D;&#x53EF;&#x81EA;&#x52A8;&#x5B89;&#x88C5;&#x548C;&#x66F4;&#x65B0; V2Ray&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A; VMess &#x7684;&#x5185;&#x5B58;&#x4F7F;&#x7528;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20160111-v13"><a name="20160111-v13" class="plugin-anchor" href="#20160111-v13"><i class="fa fa-link" aria-hidden="true"></i></a>2016.01.11 v1.3</h2>
<ul>
<li>Wiki &#x4E2D;&#x66F4;&#x65B0;&#x4E86;&#x4E00;&#x4E9B;&#x82F1;&#x8BED;&#x9875;&#x9762;&#xFF08;&#x611F;&#x8C22; chenxiaoqino&#xFF09;&#xFF1B;</li>
<li>Docker &#x914D;&#x7F6E;&#x6587;&#x4EF6;&#xFF08;&#x611F;&#x8C22; adoot&#xFF09;&#xFF1B;</li>
<li>HTTP &#x4EE3;&#x7406;&#xFF08;&#x611F;&#x8C22; adoot&#xFF09;&#xFF1B;</li>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x5185;&#x7F6E;&#x4E86;&#x5E38;&#x89C1;&#x7684;<a href="../chapter_02/03_routing.html">&#x56FD;&#x5185;&#x7F51;&#x7AD9;&#x57DF;&#x540D;</a>&#xFF1B;</li>
<li>VMess &#x914D;&#x7F6E;&#x4E2D;&#x65B0;&#x589E;&#x4E86; <a href="../chapter_02/02_protocols.html">alterId &#x9009;&#x9879;</a>&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x82E5;&#x5E72;&#x5C0F;&#x95EE;&#x9898;&#xFF1B;</li>
</ul>
<h2 id="20151214-v12"><a name="20151214-v12" class="plugin-anchor" href="#20151214-v12"><i class="fa fa-link" aria-hidden="true"></i></a>2015.12.14 v1.2</h2>
<ul>
<li>&#x7B80;&#x6D01;&#x4E14;&#x9AD8;&#x6548;&#x7684;&#x56FD;&#x5185; IP &#x8DEF;&#x7531;&#xFF1B;</li>
<li>&#x9519;&#x8BEF;&#x65E5;&#x5FD7;&#x53EF;&#x5199;&#x5165;&#x6587;&#x4EF6;&#xFF1B;</li>
<li>&#x8DEF;&#x7531;&#x4E2D;&#x652F;&#x6301;&#x6B63;&#x5219;&#x8868;&#x8FBE;&#x5F0F;&#x65B9;&#x5F0F;&#x7684;&#x57DF;&#x540D;&#x5339;&#x914D;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A; SOCKS &#x534F;&#x8BAE;&#x7684;&#x517C;&#x5BB9;&#x6027; bug&#xFF1B;</li>
</ul>
<h2 id="20151207-v11"><a name="20151207-v11" class="plugin-anchor" href="#20151207-v11"><i class="fa fa-link" aria-hidden="true"></i></a>2015.12.07 v1.1</h2>
<ul>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A; VMess &#x534F;&#x8BAE;&#x7684; bug&#xFF0C;&#x4E5F;&#x5BFC;&#x81F4;&#x4E86; 1.1 &#x548C; 1.0 &#x7684;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4E0D;&#x517C;&#x5BB9;&#xFF0C;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x4E0D;&#x53D7;&#x5F71;&#x54CD;&#xFF1B;</li>
<li>&#x4FEE;&#x590D;&#x4E86;&#x4E00;&#x4E2A; InboundDetourHandler &#x4E2D;&#x7684; bug&#xFF1B;</li>
</ul>
<h2 id="20151130-v10"><a name="20151130-v10" class="plugin-anchor" href="#20151130-v10"><i class="fa fa-link" aria-hidden="true"></i></a>2015.11.30 v1.0</h2>
<p>V2Ray 1.0 &#x6B63;&#x5F0F;&#x7248;&#xFF0C;&#x5305;&#x542B;&#x4EE5;&#x4E0B;&#x529F;&#x80FD;&#xFF1A;</p>
<ul>
<li>Socks 4 / 5 &#x4EE3;&#x7406;&#x534F;&#x8BAE;&#xFF1B;</li>
<li>&#x53EF;&#x4EE5;&#x9632;&#x6B62;&#x91CD;&#x653E;&#x653B;&#x51FB;&#x7684;&#x9AD8;&#x901F;&#x4E2D;&#x7EE7;&#x534F;&#x8BAE;&#xFF1B;</li>
<li>&#x9759;&#x6001;&#x8DEF;&#x7531;&#x529F;&#x80FD;&#xFF0C;&#x7528;&#x6237;&#x53EF;&#x9009;&#x62E9;&#x6027;&#x5C4F;&#x853D;&#x6216;&#x4EE3;&#x7406;&#x6307;&#x5B9A;&#x7684; IP &#x6BB5;&#x6216;&#x57DF;&#x540D;&#xFF1B;</li>
</ul>

                                
                                </section>
                            
                        </div>
                    </div>
                
            </div>

        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"refcn":"chapter_00/01_versions","refen":"welcome/versions","title":"版本历史","level":"1.1.1","depth":2,"next":{"title":"使用方式","level":"1.1.2","depth":2,"path":"chapter_00/workflow.md","ref":"chapter_00/workflow.md","articles":[]},"previous":{"title":"Project V","level":"1.1","depth":1,"path":"README.md","ref":"README.md","articles":[{"title":"版本历史","level":"1.1.1","depth":2,"path":"chapter_00/01_versions.md","ref":"chapter_00/01_versions.md","articles":[]},{"title":"使用方式","level":"1.1.2","depth":2,"path":"chapter_00/workflow.md","ref":"chapter_00/workflow.md","articles":[]},{"title":"下载安装","level":"1.1.3","depth":2,"path":"chapter_00/install.md","ref":"chapter_00/install.md","articles":[]},{"title":"新手上路","level":"1.1.4","depth":2,"path":"chapter_00/start.md","ref":"chapter_00/start.md","articles":[]},{"title":"命令行参数","level":"1.1.5","depth":2,"path":"chapter_00/command.md","ref":"chapter_00/command.md","articles":[]},{"title":"捐助支持","level":"1.1.6","depth":2,"path":"chapter_00/02_donate.md","ref":"chapter_00/02_donate.md","articles":[]},{"title":"寻求帮助","level":"1.1.7","depth":2,"path":"chapter_00/help.md","ref":"chapter_00/help.md","articles":[]},{"title":"常见问题","level":"1.1.8","depth":2,"path":"chapter_00/faq.md","ref":"chapter_00/faq.md","articles":[]},{"title":"博客↪","level":"1.1.9","depth":2,"url":"https://steemit.com/@v2ray","ref":"https://steemit.com/@v2ray","articles":[]},{"title":"白话文教程↪","level":"1.1.10","depth":2,"url":"https://toutyrater.github.io/","ref":"https://toutyrater.github.io/","articles":[]},{"title":"新白话文教程(社区版)↪","level":"1.1.11","depth":2,"url":"https://guide.v2fly.org/","ref":"https://guide.v2fly.org/","articles":[]}]},"dir":"ltr"},"config":{"plugins":["-fontsettings","-search","-lunr","-highlight","-sharing","mermaid-gb3","anchors","ga","prism","prism-themes","hints"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"ga":{"configuration":"auto","token":"UA-73620536-1"},"prism":{"css":["prism-themes/themes/prism-base16-ateliersulphurpool.light.css"],"lang":{"objc":"objectivec","shell":"bash","text":"textile","plain":"textile"}},"mermaid-gb3":{},"anchors":{},"prism-themes":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Project V 官方网站","language":"zh","gitbook":"*"},"file":{"path":"chapter_00/01_versions.md","mtime":"2019-12-09T02:03:16.155Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-12-09T02:05:14.919Z"},"basePath":"..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../gitbook/gitbook.js"></script>
    <script src="../gitbook/theme.js"></script>
    
        
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/book/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-ga/plugin.js"></script>
        
    
    
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.min.js"></script>
    

    </body>
</html>



================================================
FILE: chapter_00/02_donate.html
================================================

<!DOCTYPE HTML>
<html lang="zh" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>捐助支持 · Project V 官方网站</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <script type="text/javascript">
function inIframe () {
    try { return window.self !== window.top; } catch (e) { return true; }
}
function isValidDomain() {
    var host = window.location.hostname;
    var domains = ['v2ray.com', 'github.io', 'mux.cool', 'v2ray.cool', 'archive.org'];
    for (var dx in domains) {
        if (host.indexOf(domains[dx]) >= 0) {
            return true;
        }
    }
    return false;
}
if (inIframe() || !isValidDomain()) {
    window.top.location.href = 'https://www.v2ray.com/';
}
        </script>
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-anchors/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism-base16-ateliersulphurpool.light.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="../styles/website.css">
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" type="image/png" href="/resources/favicon-152.png">
    <link rel="apple-touch-icon-precomposed" sizes="180x180" type="image/png" href="/resources/favicon-180.png">
    <link rel="icon" type="image/png" href="/resources/favicon-192.png">
    <link rel="shortcut icon" href="/resources/favicon.ico" type="image/x-icon">
    
    <link href="https://fonts.loli.net/css?family=Source+Code+Pro:400|Open+Sans:400,700&amp;subset=cyrillic" rel="stylesheet">
    

    
    <link rel="next" href="help.html" />
    
    
    <link rel="prev" href="command.html" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    Project V
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.1.1" data-path="01_versions.html">
            
                <a href="01_versions.html">
            
                    
                    版本历史
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.2" data-path="workflow.html">
            
                <a href="workflow.html">
            
                    
                    使用方式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.3" data-path="install.html">
            
                <a href="install.html">
            
                    
                    下载安装
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.4" data-path="start.html">
            
                <a href="start.html">
            
                    
                    新手上路
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.5" data-path="command.html">
            
                <a href="command.html">
            
                    
                    命令行参数
            
                </a>
            

            
        </li>
    
        <li class="chapter active" data-level="1.1.6" data-path="02_donate.html">
            
                <a href="02_donate.html">
            
                    
                    捐助支持
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.7" data-path="help.html">
            
                <a href="help.html">
            
                    
                    寻求帮助
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.8" data-path="faq.html">
            
                <a href="faq.html">
            
                    
                    常见问题
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.9" >
            
                <a target="_blank" href="https://steemit.com/@v2ray">
            
                    
                    博客↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.10" >
            
                <a target="_blank" href="https://toutyrater.github.io/">
            
                    
                    白话文教程↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.11" >
            
                <a target="_blank" href="https://guide.v2fly.org/">
            
                    
                    新白话文教程(社区版)↪
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../chapter_02/">
            
                <a href="../chapter_02/">
            
                    
                    配置文件
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../chapter_02/01_overview.html">
            
                <a href="../chapter_02/01_overview.html">
            
                    
                    文件格式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../chapter_02/02_protocols.html">
            
                <a href="../chapter_02/02_protocols.html">
            
                    
                    协议列表
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.2.1" data-path="../chapter_02/protocols/blackhole.html">
            
                <a href="../chapter_02/protocols/blackhole.html">
            
                    
                    Blackhole
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.2" data-path="../chapter_02/protocols/dns.html">
            
                <a href="../chapter_02/protocols/dns.html">
            
                    
                    DNS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.3" data-path="../chapter_02/protocols/dokodemo.html">
            
                <a href="../chapter_02/protocols/dokodemo.html">
            
                    
                    Dokodemo
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.4" data-path="../chapter_02/protocols/freedom.html">
            
                <a href="../chapter_02/protocols/freedom.html">
            
                    
                    Freedom
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.5" data-path="../chapter_02/protocols/http.html">
            
                <a href="../chapter_02/protocols/http.html">
            
                    
                    HTTP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.6" data-path="../chapter_02/protocols/mtproto.html">
            
                <a href="../chapter_02/protocols/mtproto.html">
            
                    
                    MTProto
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.7" data-path="../chapter_02/protocols/shadowsocks.html">
            
                <a href="../chapter_02/protocols/shadowsocks.html">
            
                    
                    Shadowsocks
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.8" data-path="../chapter_02/protocols/socks.html">
            
                <a href="../chapter_02/protocols/socks.html">
            
                    
                    SOCKS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.9" data-path="../chapter_02/protocols/vmess.html">
            
                <a href="../chapter_02/protocols/vmess.html">
            
                    
                    VMess
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.3" data-path="../chapter_02/policy.html">
            
                <a href="../chapter_02/policy.html">
            
                    
                    本地策略
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.4" data-path="../chapter_02/03_routing.html">
            
                <a href="../chapter_02/03_routing.html">
            
                    
                    路由配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.5" data-path="../chapter_02/04_dns.html">
            
                <a href="../chapter_02/04_dns.html">
            
                    
                    DNS 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.6" data-path="../chapter_02/mux.html">
            
                <a href="../chapter_02/mux.html">
            
                    
                    Mux 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.7" data-path="../chapter_02/api.html">
            
                <a href="../chapter_02/api.html">
            
                    
                    API 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.8" data-path="../chapter_02/stats.html">
            
                <a href="../chapter_02/stats.html">
            
                    
                    统计信息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.9" data-path="../chapter_02/reverse.html">
            
                <a href="../chapter_02/reverse.html">
            
                    
                    反向代理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10" data-path="../chapter_02/05_transport.html">
            
                <a href="../chapter_02/05_transport.html">
            
                    
                    传输配置
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.10.1" data-path="../chapter_02/transport/tcp.html">
            
                <a href="../chapter_02/transport/tcp.html">
            
                    
                    TCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.2" data-path="../chapter_02/transport/mkcp.html">
            
                <a href="../chapter_02/transport/mkcp.html">
            
                    
                    mKCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.3" data-path="../chapter_02/transport/websocket.html">
            
                <a href="../chapter_02/transport/websocket.html">
            
                    
                    WebSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.4" data-path="../chapter_02/transport/h2.html">
            
                <a href="../chapter_02/transport/h2.html">
            
                    
                    HTTP/2
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.5" data-path="../chapter_02/transport/domainsocket.html">
            
                <a href="../chapter_02/transport/domainsocket.html">
            
                    
                    DomainSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.6" data-path="../chapter_02/transport/quic.html">
            
                <a href="../chapter_02/transport/quic.html">
            
                    
                    QUIC
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.11" data-path="../chapter_02/env.html">
            
                <a href="../chapter_02/env.html">
            
                    
                    环境变量
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../awesome/tools.html">
            
                <a href="../awesome/tools.html">
            
                    
                    神一样的工具们
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1" data-path="../awesome/ads.html">
            
                <a href="../awesome/ads.html">
            
                    
                    以及广告
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../developer/">
            
                <a href="../developer/">
            
                    
                    开发人员手册
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../developer/intro/roadmap.html">
            
                <a href="../developer/intro/roadmap.html">
            
                    
                    开发计划
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.2" data-path="../developer/intro/guide.html">
            
                <a href="../developer/intro/guide.html">
            
                    
                    开发指引
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.3" data-path="../developer/intro/design.html">
            
                <a href="../developer/intro/design.html">
            
                    
                    核心设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.4" data-path="../developer/intro/compile.html">
            
                <a href="../developer/intro/compile.html">
            
                    
                    配置开发环境
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.5" data-path="../developer/intro/tools.html">
            
                <a href="../developer/intro/tools.html">
            
                    
                    开发工具
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6" >
            
                <span>
            
                    
                    协议细节
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.6.1" data-path="../developer/protocols/vmess.html">
            
                <a href="../developer/protocols/vmess.html">
            
                    
                    VMess 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.2" data-path="../developer/protocols/mkcp.html">
            
                <a href="../developer/protocols/mkcp.html">
            
                    
                    mKCP 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.3" data-path="../developer/protocols/muxcool.html">
            
                <a href="../developer/protocols/muxcool.html">
            
                    
                    Mux.Cool
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本書使用 GitBook 釋出
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    
    <a class="btn pull-left" href="/chapter_00/02_donate.html" target="_blank">
        <img src="/resources/flag_cn.svg" alt="Chinese" height="16">
    </a>
    <a class="btn pull-left" href="/en/welcome/donate.html" target="_blank">
        <img src="/resources/flag_en.svg" alt="English" height="16">
    </a>
    <a class="btn pull-left" href="/ru/welcome/donate.html" target="_blank">
        <img src="/resources/flag_ru.svg" alt="Russian" height="16">
    </a>
    <a class="btn pull-left" href="/ko/welcome/donate.html" target="_blank">
        <img src="/resources/flag_ko.svg" alt="Korean" height="16">
    </a>
    <a class="btn pull-left" href="/fa/welcome/donate.html" target="_blank">
        <img src="/resources/flag_fa.svg" alt="Persian" height="16">
    </a>
    <a class="btn pull-left" href="/vi/welcome/donate.html" target="_blank">
        <img src="/resources/flag_vi.svg" alt="Vietnamese" height="16">
    </a>
    <a class="btn pull-left" href="https://crowdin.com/project/v2ray" target="_blank">
        <img src="/resources/translate.png" alt="Translate" height="16">
    </a>
    
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
                                <section class="normal markdown-section">
                                
                                <h1 id="&#x8D44;&#x52A9;-v2ray-&#x53D1;&#x5C55;"><a name="&#x8D44;&#x52A9;-v2ray-&#x53D1;&#x5C55;" class="plugin-anchor" href="#&#x8D44;&#x52A9;-v2ray-&#x53D1;&#x5C55;"><i class="fa fa-link" aria-hidden="true"></i></a>&#x8D44;&#x52A9; V2Ray &#x53D1;&#x5C55;</h1>
<p>V2Ray &#x662F;&#x4E00;&#x4E2A;&#x975E;&#x8425;&#x5229;&#x9879;&#x76EE;&#xFF0C;&#x5B83;&#x7684;&#x6240;&#x6709;&#x4EE3;&#x7801;&#x5747;&#x516C;&#x5F00;&#xFF0C;&#x8F6F;&#x4EF6;&#x53EF;&#x4EE5;&#x81EA;&#x7531;&#x4F7F;&#x7528;&#xFF0C;&#x4E0D;&#x53D7;&#x9650;&#x5236;&#x3002;&#x5982;&#x679C;&#x60A8;&#x559C;&#x7231;&#x672C;&#x9879;&#x76EE;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4E0B;&#x9762;&#x7684;&#x65B9;&#x5F0F;&#x8BF7;&#x4F5C;&#x8005;&#x559D;&#x4E00;&#x676F;&#x5496;&#x5561;&#x3002;</p>
<p>&#x60A8;&#x7684;&#x6350;&#x6B3E;&#x662F;&#x5BF9; Project V &#x7684;&#x65E0;&#x507F;&#x8D21;&#x732E;&#xFF0C;&#x548C; Project V &#x63D0;&#x4F9B;&#x7684;&#x6280;&#x672F;&#x548C;&#x670D;&#x52A1;&#x6CA1;&#x6709;&#x76F4;&#x63A5;&#x5173;&#x8054;&#x3002;&#x5BF9;&#x4E8E;&#x6BCF;&#x4E00;&#x4EFD;&#x6350;&#x6B3E;&#xFF0C;&#x6211;&#x4EEC;&#x90FD;&#x4F1A;&#x4EE5;&#x90AE;&#x4EF6;&#x7684;&#x65B9;&#x5F0F;&#x786E;&#x8BA4;&#x3002;&#x5982;&#x679C;&#x4F60;&#x4E0D;&#x5E0C;&#x671B;&#x6536;&#x5230;&#x6211;&#x4EEC;&#x7684;&#x90AE;&#x4EF6;&#xFF0C;&#x8BF7;&#x5728;&#x6350;&#x6B3E;&#x65F6;&#x7559;&#x8A00;&#x6CE8;&#x660E;&#x3002;</p>
<p>&#x5BF9;&#x4E8E;&#x5355;&#x6B21;&#x6350;&#x8D60;&#x7684;&#x4EF7;&#x503C;&#x8D85;&#x8FC7; $50&#xFF0C;&#x60A8;&#x53EF;&#x4EE5;&#x4ECE;&#x5982;&#x4E0B;&#x9009;&#x9879;&#x4E2D;&#x6307;&#x5B9A;&#x4E00;&#x9879;:</p>
<ul>
<li>&#x4E3A;&#x671F;&#x4E00;&#x4E2A;&#x6708;&#x7684;&#x9996;&#x9875;&#x5E7F;&#x544A; (&#x60A8;&#x7684;&#x540D;&#x5B57;&#xFF0C;&#x6216; Logo);</li>
<li>&#x6309;&#x60A8;&#x7684;&#x559C;&#x597D;&#x4FEE;&#x6539;&#x6211;&#x4EEC;&#x7684;&#x4EE3;&#x7801;&#x3002;&#x9650;&#x5236;&#xFF1A;&#x4E0D;&#x53EF;&#x5F71;&#x54CD;&#x7528;&#x6237;&#x4F7F;&#x7528;&#xFF0C;&#x4E0D;&#x53EF;&#x5F71;&#x54CD;&#x6587;&#x6863;&#x3002;&#x60A8;&#x7684;&#x4FEE;&#x6539;&#x5C06;&#x4FDD;&#x7559;&#x4E00;&#x4E2A;&#x6708;&#x3002;</li>
</ul>
<h2 id="usual-way"><a name="usual-way" class="plugin-anchor" href="#usual-way"><i class="fa fa-link" aria-hidden="true"></i></a>&#x4F20;&#x7EDF;&#x65B9;&#x5F0F; </h2>
<blockquote>
<p>Paypal</p>
</blockquote>
<p>&#x53EF;&#x4EE5;&#x901A;&#x8FC7; <a href="https://www.paypal.me/ProjectV2Ray/25" target="_blank">Paypal &#x5185;&#x90E8;&#x8F6C;&#x5E10;</a> &#x6216;&#x8005;<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;amount=25&amp;currency_code=usd&amp;hosted_button_id=4TU3UKYANT2WY" target="_blank">&#x4FE1;&#x7528;&#x5361;</a>&#x7684;&#x65B9;&#x5F0F;&#x6350;&#x8D60;&#x3002;</p>
<p>&#x7531;&#x4E8E; Paypal &#x6536;&#x53D6;&#x975E;&#x5E38;&#x9AD8;&#x7684;&#x624B;&#x7EED;&#x8D39;&#xFF0C;&#x5C0F;&#x4E8E; 1 &#x7F8E;&#x5143;&#x7684;&#x6350;&#x8D60;&#x4F1A;&#x53D8;&#x5F97;&#x6CA1;&#x6709;&#x610F;&#x4E49;&#x3002;</p>
<blockquote>
<p>Patreon</p>
</blockquote>
<p><a href="https://www.patreon.com/v2ray" target="_blank">Patreon</a> &#x662F;&#x4E00;&#x4E2A;&#x5B9A;&#x671F;&#x6295;&#x98DF;&#x7684;&#x5E73;&#x53F0;&#xFF0C;&#x5373;&#x6BCF;&#x6708;&#x6350;&#x8D60;&#x56FA;&#x5B9A;&#x91D1;&#x989D;&#x3002;&#x4E00;&#x65E6;&#x8BBE;&#x5B9A;&#x5B8C;&#x6BD5;&#xFF0C;&#x6BCF;&#x4E2A;&#x6708;&#x90FD;&#x4F1A;&#x6536;&#x5230;&#x6211;&#x4EEC;&#x7684;&#x5C0F;&#x793C;&#x7269;&#x54E6;&#x3002;</p>
<blockquote>
<p>&#x793C;&#x54C1;&#x5361;</p>
</blockquote>
<p>&#x76EE;&#x524D;&#x53EA;&#x652F;&#x6301;&#x7F8E;&#x4E9A;&#x793C;&#x54C1;&#x5361;&#xFF0C;&#x53EF;&#x5728; <a href="https://www.amazon.com/Amazon-eGift-Card-Birthday-Balloons/dp/B01FIS88SY" target="_blank">Amazon</a> &#x6216;&#x8005;<a href="https://s.taobao.com/search?q=%E7%BE%8E%E4%BA%9A%E7%A4%BC%E5%93%81%E5%8D%A1" target="_blank">&#x6DD8;&#x5B9D;</a>&#x8D2D;&#x4E70;&#x3002;&#x8BF7;&#x5BC4;&#x9001;&#x81F3;<code>love@v2ray.com</code>&#x3002;</p>
<h2 id="crypto"><a name="crypto" class="plugin-anchor" href="#crypto"><i class="fa fa-link" aria-hidden="true"></i></a>&#x6781;&#x5BA2;&#x65B9;&#x5F0F; </h2>
<p>&#x76F8;&#x6BD4;&#x8D77;&#x4F20;&#x7EDF;&#x65B9;&#x5F0F;&#xFF0C;&#x52A0;&#x5BC6;&#x8D27;&#x5E01;&#x66F4;&#x9002;&#x5408;&#x8DE8;&#x5883;&#x652F;&#x4ED8;&#x3002;&#x52A0;&#x5BC6;&#x8D27;&#x5E01;&#x901A;&#x5E38;&#x90FD;&#x662F;&#x533F;&#x540D;&#x6301;&#x6709;&#xFF0C;&#x5176;&#x4EA4;&#x6613;&#x4E5F;&#x5F88;&#x96BE;&#x88AB;&#x8DDF;&#x8E2A;&#x3002;</p>
<p>&#x7531;&#x4E8E;&#x52A0;&#x5BC6;&#x8D27;&#x5E01;&#x5929;&#x751F;&#x7684;&#x533F;&#x540D;&#x7279;&#x6027;&#xFF0C;&#x5982;&#x679C;&#x6709;&#x5FC5;&#x8981;&#x7684;&#x8BDD;&#xFF0C;&#x8BF7;&#x4E8B;&#x5148;&#x8054;&#x7CFB;&#x9879;&#x76EE;&#x7EC4;&#x8868;&#x660E;&#x6350;&#x8D60;&#x8005;&#x7684;&#x8EAB;&#x4EFD;&#x3002;</p>
<blockquote>
<p>&#x6BD4;&#x7279;&#x5E01; Bitcoin</p>
</blockquote>
<p>&#x5730;&#x5740;: <code>3GctrB7R5sMhJ73N4AKo56Bdf9RE3RJsuM</code></p>
<p>&#x70B9;&#x6B64;<a href="https://www.blockchain.com/btc/address/3GctrB7R5sMhJ73N4AKo56Bdf9RE3RJsuM" target="_blank">&#x94FE;&#x63A5;</a>&#x663E;&#x793A;&#x4E8C;&#x7EF4;&#x7801;</p>
<blockquote>
<p>&#x6BD4;&#x7279;&#x73B0;&#x91D1; Bitcoin Cash</p>
</blockquote>
<p>&#x5730;&#x5740;: <code>15oATKUq5mEfuzasPnsJ58TjJU5SvDJK97</code></p>
<p>&#x70B9;&#x6B64;<a href="https://explorer.bitcoin.com/bch/address/15oATKUq5mEfuzasPnsJ58TjJU5SvDJK97" target="_blank">&#x94FE;&#x63A5;</a>&#x663E;&#x793A;&#x4E8C;&#x7EF4;&#x7801;</p>
<blockquote>
<p>&#x4EE5;&#x592A;&#x574A; Ethereum</p>
</blockquote>
<p>&#x5730;&#x5740;: <code>0x112ee71189704fe04cabed4aa045f4461c8c8696</code></p>
<p>&#x70B9;&#x6B64;<a href="https://www.blockchain.com/eth/address/0x112ee71189704fe04cabed4aa045f4461c8c8696" target="_blank">&#x94FE;&#x63A5;</a>&#x663E;&#x793A;&#x4E8C;&#x7EF4;&#x7801;&#x3002;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x8FD9;&#x4E2A;&#x5730;&#x5740;&#x53D1;&#x9001;&#x8FD9;&#x4E9B;&#x8D27;&#x5E01;&#xFF1A;OMG&#x3001;REP&#x3001;GNT&#x3001;DGD</p>
<blockquote>
<p>EOS</p>
</blockquote>
<p>&#x5730;&#x5740;: <code>EOS8Civdok4CBN3jCpsaGQijzesjKof1eyaRFuBU5mLMtWVkLsy8a</code></p>
<blockquote>
<p>&#x83B1;&#x7279;&#x5E01; Litecoin</p>
</blockquote>
<p>&#x5730;&#x5740;: <code>LVdeH2HkCgGRs8ZEpan7fkAEEPbiJ4McoR</code></p>
<blockquote>
<p>&#x95E8;&#x7F57;&#x5E01; Monero</p>
</blockquote>
<p>&#x5730;&#x5740;: <code>48kA4NyLRCWQvB7U2A77G66Z25uWbyzmoZSYjxJfrMR1J4dRFW6fWFLDn3wirAqP8ySnR4rnvoXWxfkNFhrK5ZxY1WyBqKg</code></p>
<blockquote>
<p>&#x745E;&#x6CE2;&#x5E01; Ripple</p>
</blockquote>
<p>&#x5730;&#x5740;: <code>r439fPk8DzCf4nSxkpfodEuE2cG4KVZQHq</code></p>
<p>&#x4E0D;&#x9700;&#x8981; Tag</p>
<blockquote>
<p>&#x5176;&#x5B83;</p>
</blockquote>
<p>&#x5982;&#x679C;&#x4F60;&#x60F3;&#x6350;&#x8D60;&#x5176;&#x5B83;&#x7684;&#x52A0;&#x5BC6;&#x8D27;&#x5E01;&#xFF0C;&#x8BF7;&#x8054;&#x7CFB;&#x6211;&#x4EEC;: <code>love@v2ray.com</code>&#x3002;</p>

                                
                                </section>
                            
                        </div>
                    </div>
                
            </div>

        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"refcn":"chapter_00/02_donate","refen":"welcome/donate","title":"捐助支持","level":"1.1.6","depth":2,"next":{"title":"寻求帮助","level":"1.1.7","depth":2,"path":"chapter_00/help.md","ref":"chapter_00/help.md","articles":[]},"previous":{"title":"命令行参数","level":"1.1.5","depth":2,"path":"chapter_00/command.md","ref":"chapter_00/command.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-fontsettings","-search","-lunr","-highlight","-sharing","mermaid-gb3","anchors","ga","prism","prism-themes","hints"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"ga":{"configuration":"auto","token":"UA-73620536-1"},"prism":{"css":["prism-themes/themes/prism-base16-ateliersulphurpool.light.css"],"lang":{"objc":"objectivec","shell":"bash","text":"textile","plain":"textile"}},"mermaid-gb3":{},"anchors":{},"prism-themes":{},"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Project V 官方网站","language":"zh","gitbook":"*"},"file":{"path":"chapter_00/02_donate.md","mtime":"2019-12-09T02:03:16.155Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-12-09T02:05:14.919Z"},"basePath":"..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../gitbook/gitbook.js"></script>
    <script src="../gitbook/theme.js"></script>
    
        
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/book/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-ga/plugin.js"></script>
        
    
    
        <script src="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.min.js"></script>
    

    </body>
</html>



================================================
FILE: chapter_00/command.html
================================================

<!DOCTYPE HTML>
<html lang="zh" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>命令行参数 · Project V 官方网站</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <script type="text/javascript">
function inIframe () {
    try { return window.self !== window.top; } catch (e) { return true; }
}
function isValidDomain() {
    var host = window.location.hostname;
    var domains = ['v2ray.com', 'github.io', 'mux.cool', 'v2ray.cool', 'archive.org'];
    for (var dx in domains) {
        if (host.indexOf(domains[dx]) >= 0) {
            return true;
        }
    }
    return false;
}
if (inIframe() || !isValidDomain()) {
    window.top.location.href = 'https://www.v2ray.com/';
}
        </script>
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-anchors/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism-base16-ateliersulphurpool.light.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-hints/plugin-hints.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="../styles/website.css">
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" type="image/png" href="/resources/favicon-152.png">
    <link rel="apple-touch-icon-precomposed" sizes="180x180" type="image/png" href="/resources/favicon-180.png">
    <link rel="icon" type="image/png" href="/resources/favicon-192.png">
    <link rel="shortcut icon" href="/resources/favicon.ico" type="image/x-icon">
    
    <link href="https://fonts.loli.net/css?family=Source+Code+Pro:400|Open+Sans:400,700&amp;subset=cyrillic" rel="stylesheet">
    

    
    <link rel="next" href="02_donate.html" />
    
    
    <link rel="prev" href="start.html" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    Project V
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.1.1" data-path="01_versions.html">
            
                <a href="01_versions.html">
            
                    
                    版本历史
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.2" data-path="workflow.html">
            
                <a href="workflow.html">
            
                    
                    使用方式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.3" data-path="install.html">
            
                <a href="install.html">
            
                    
                    下载安装
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.4" data-path="start.html">
            
                <a href="start.html">
            
                    
                    新手上路
            
                </a>
            

            
        </li>
    
        <li class="chapter active" data-level="1.1.5" data-path="command.html">
            
                <a href="command.html">
            
                    
                    命令行参数
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.6" data-path="02_donate.html">
            
                <a href="02_donate.html">
            
                    
                    捐助支持
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.7" data-path="help.html">
            
                <a href="help.html">
            
                    
                    寻求帮助
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.8" data-path="faq.html">
            
                <a href="faq.html">
            
                    
                    常见问题
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.9" >
            
                <a target="_blank" href="https://steemit.com/@v2ray">
            
                    
                    博客↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.10" >
            
                <a target="_blank" href="https://toutyrater.github.io/">
            
                    
                    白话文教程↪
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.1.11" >
            
                <a target="_blank" href="https://guide.v2fly.org/">
            
                    
                    新白话文教程(社区版)↪
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../chapter_02/">
            
                <a href="../chapter_02/">
            
                    
                    配置文件
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../chapter_02/01_overview.html">
            
                <a href="../chapter_02/01_overview.html">
            
                    
                    文件格式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../chapter_02/02_protocols.html">
            
                <a href="../chapter_02/02_protocols.html">
            
                    
                    协议列表
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.2.1" data-path="../chapter_02/protocols/blackhole.html">
            
                <a href="../chapter_02/protocols/blackhole.html">
            
                    
                    Blackhole
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.2" data-path="../chapter_02/protocols/dns.html">
            
                <a href="../chapter_02/protocols/dns.html">
            
                    
                    DNS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.3" data-path="../chapter_02/protocols/dokodemo.html">
            
                <a href="../chapter_02/protocols/dokodemo.html">
            
                    
                    Dokodemo
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.4" data-path="../chapter_02/protocols/freedom.html">
            
                <a href="../chapter_02/protocols/freedom.html">
            
                    
                    Freedom
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.5" data-path="../chapter_02/protocols/http.html">
            
                <a href="../chapter_02/protocols/http.html">
            
                    
                    HTTP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.6" data-path="../chapter_02/protocols/mtproto.html">
            
                <a href="../chapter_02/protocols/mtproto.html">
            
                    
                    MTProto
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.7" data-path="../chapter_02/protocols/shadowsocks.html">
            
                <a href="../chapter_02/protocols/shadowsocks.html">
            
                    
                    Shadowsocks
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.8" data-path="../chapter_02/protocols/socks.html">
            
                <a href="../chapter_02/protocols/socks.html">
            
                    
                    SOCKS
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2.9" data-path="../chapter_02/protocols/vmess.html">
            
                <a href="../chapter_02/protocols/vmess.html">
            
                    
                    VMess
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.3" data-path="../chapter_02/policy.html">
            
                <a href="../chapter_02/policy.html">
            
                    
                    本地策略
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.4" data-path="../chapter_02/03_routing.html">
            
                <a href="../chapter_02/03_routing.html">
            
                    
                    路由配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.5" data-path="../chapter_02/04_dns.html">
            
                <a href="../chapter_02/04_dns.html">
            
                    
                    DNS 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.6" data-path="../chapter_02/mux.html">
            
                <a href="../chapter_02/mux.html">
            
                    
                    Mux 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.7" data-path="../chapter_02/api.html">
            
                <a href="../chapter_02/api.html">
            
                    
                    API 配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.8" data-path="../chapter_02/stats.html">
            
                <a href="../chapter_02/stats.html">
            
                    
                    统计信息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.9" data-path="../chapter_02/reverse.html">
            
                <a href="../chapter_02/reverse.html">
            
                    
                    反向代理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10" data-path="../chapter_02/05_transport.html">
            
                <a href="../chapter_02/05_transport.html">
            
                    
                    传输配置
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.10.1" data-path="../chapter_02/transport/tcp.html">
            
                <a href="../chapter_02/transport/tcp.html">
            
                    
                    TCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.2" data-path="../chapter_02/transport/mkcp.html">
            
                <a href="../chapter_02/transport/mkcp.html">
            
                    
                    mKCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.3" data-path="../chapter_02/transport/websocket.html">
            
                <a href="../chapter_02/transport/websocket.html">
            
                    
                    WebSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.4" data-path="../chapter_02/transport/h2.html">
            
                <a href="../chapter_02/transport/h2.html">
            
                    
                    HTTP/2
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.5" data-path="../chapter_02/transport/domainsocket.html">
            
                <a href="../chapter_02/transport/domainsocket.html">
            
                    
                    DomainSocket
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10.6" data-path="../chapter_02/transport/quic.html">
            
                <a href="../chapter_02/transport/quic.html">
            
                    
                    QUIC
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.2.11" data-path="../chapter_02/env.html">
            
                <a href="../chapter_02/env.html">
            
                    
                    环境变量
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../awesome/tools.html">
            
                <a href="../awesome/tools.html">
            
                    
                    神一样的工具们
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1" data-path="../awesome/ads.html">
            
                <a href="../awesome/ads.html">
            
                    
                    以及广告
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../developer/">
            
                <a href="../developer/">
            
                    
                    开发人员手册
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../developer/intro/roadmap.html">
            
                <a href="../developer/intro/roadmap.html">
            
                    
                    开发计划
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.2" data-path="../developer/intro/guide.html">
            
                <a href="../developer/intro/guide.html">
            
                    
                    开发指引
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.3" data-path="../developer/intro/design.html">
            
                <a href="../developer/intro/design.html">
            
                    
                    核心设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.4" data-path="../developer/intro/compile.html">
            
                <a href="../developer/intro/compile.html">
            
                    
                    配置开发环境
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.5" data-path="../developer/intro/tools.html">
            
                <a href="../developer/intro/tools.html">
            
                    
                    开发工具
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6" >
            
                <span>
            
                    
                    协议细节
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.6.1" data-path="../developer/protocols/vmess.html">
            
                <a href="../developer/protocols/vmess.html">
            
                    
                    VMess 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.2" data-path="../developer/protocols/mkcp.html">
            
                <a href="../developer/protocols/mkcp.html">
            
                    
                    mKCP 协议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6.3" data-path="../developer/protocols/muxcool.html">
            
                <a href="../developer/protocols/muxcool.html">
            
                    
                    Mux.Cool
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本書使用 GitBook 釋出
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    
    <a class="btn pull-left" href="/chapter_00/command.html" target="_blank">
        <img src="/resources/flag_cn.svg" alt="Chinese" height="16">
    </a>
    <a class="btn pull-left" href="/en/welcome/command.html" target="_blank">
        <img src="/resources/flag_en.svg" alt="English" height="16">
    </a>
    <a class="btn pull-left" href="/ru/welcome/command.html" target="_blank">
        <img src="/resources/flag_ru.svg" alt="Russian" height="16">
    </a>
    <a class="btn pull-left" href="/ko/welcome/command.html" target="_blank">
        <img src="/resources/flag_ko.svg" alt="Korean" height="16">
    </a>
    <a class="btn pull-left" href="/fa/welcome/command.html" target="_blank">
        <img src="/resources/flag_fa.svg" alt="Persian" height="16">
    </a>
    <a class="btn pull-left" href="/vi/welcome/command.html" target="_blank">
        <img src="/resources/flag_vi.svg" alt="Vietnamese" height="16">
    </a>
    <a class="btn pull-left" href="https://crowdin.com/project/v2ray" target="_blank">
        <img src="/resources/translate.png" alt="Translate" height="16">
    </a>
    
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
                                <section class="normal markdown-section">
                                
                                <h1 id="&#x547D;&#x4EE4;&#x884C;&#x53C2;&#x6570;"><a name="&#x547D;&#x4EE4;&#x884C;&#x53C2;&#x6570;" class="plugin-anchor" href="#&#x547D;&#x4EE4;&#x884C;&#x53C2;&#x6570;"><i class="fa fa-link" aria-hidden="true"></i></a>&#x547D;&#x4EE4;&#x884C;&#x53C2;&#x6570;</h1>
<h2 id="v2ray"><a name="v2ray" class="plugin-anchor" href="#v2ray"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ray</h2>
<p>V2Ray &#x7684;&#x7A0B;&#x5E8F;&#x6587;&#x4EF6;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x53C2;&#x6570;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code class="lang-bash">v2ray <span class="token punctuation">[</span>-version<span class="token punctuation">]</span> <span class="token punctuation">[</span>-test<span class="token punctuation">]</span> <span class="token punctuation">[</span>-config<span class="token operator">=</span>config.json<span class="token punctuation">]</span> <span class="token punctuation">[</span>-format<span class="token operator">=</span>json<span class="token punctuation">]</span>
</code></pre>
<blockquote>
<p><code>-version</code></p>
</blockquote>
<p>&#x53EA;&#x8F93;&#x51FA;&#x5F53;&#x524D;&#x7248;&#x672C;&#x7136;&#x540E;&#x9000;&#x51FA;&#xFF0C;&#x4E0D;&#x8FD0;&#x884C; V2Ray &#x4E3B;&#x7A0B;&#x5E8F;&#x3002;</p>
<blockquote>
<p><code>-test</code></p>
</blockquote>
<p>&#x6D4B;&#x8BD5;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x6709;&#x6548;&#x6027;&#xFF0C;&#x5982;&#x679C;&#x6709;&#x95EE;&#x9898;&#x5219;&#x8F93;&#x51FA;&#x9519;&#x8BEF;&#x4FE1;&#x606F;&#xFF0C;&#x4E0D;&#x8FD0;&#x884C; V2Ray &#x4E3B;&#x7A0B;&#x5E8F;&#x3002;</p>
<blockquote>
<p><code>-config</code></p>
</blockquote>
<p>&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x8DEF;&#x5F84;&#xFF0C;&#x53EF;&#x9009;&#x7684;&#x5F62;&#x5F0F;&#x5982;&#x4E0B;:</p>
<ul>
<li>&#x672C;&#x5730;&#x8DEF;&#x5F84;&#xFF0C;&#x53EF;&#x4EE5;&#x662F;&#x4E00;&#x4E2A;&#x7EDD;&#x5BF9;&#x8DEF;&#x5F84;&#xFF0C;&#x6216;&#x8005;&#x76F8;&#x5BF9;&#x8DEF;&#x5F84;&#x3002;</li>
<li><code>&quot;stdin:&quot;</code>: &#x8868;&#x793A;&#x5C06;&#x4ECE;&#x6807;&#x51C6;&#x8F93;&#x5165;&#x8BFB;&#x53D6;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x5185;&#x5BB9;&#xFF0C;&#x8C03;&#x7528;&#x8005;&#x5FC5;&#x987B;&#x5728;&#x8F93;&#x5165;&#x5B8C;&#x6BD5;&#x540E;&#x5173;&#x95ED;&#x6807;&#x51C6;&#x8F93;&#x5165;&#x6D41;&#x3002;</li>
<li>&#x4EE5;<code>http://</code>&#x6216;<code>https://</code>(&#x5747;&#x4E3A;&#x5C0F;&#x5199;)&#x5F00;&#x5934;: V2Ray &#x5C06;&#x5C1D;&#x8BD5;&#x4ECE;&#x8FD9;&#x4E2A;&#x8FDC;&#x7A0B;&#x5730;&#x5740;&#x52A0;&#x8F7D;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x3002;</li>
</ul>
<blockquote>
<p><code>-format</code></p>
</blockquote>
<p>&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x683C;&#x5F0F;&#xFF0C;&#x53EF;&#x9009;&#x7684;&#x503C;&#x6709;&#xFF1A;</p>
<ul>
<li><code>json</code>: JSON &#x683C;&#x5F0F;&#xFF1B;</li>
<li><code>pb</code> &#x6216; <code>protobuf</code>: Protobuf &#x683C;&#x5F0F;&#xFF1B;</li>
</ul>
<p><div class="alert alert-info hints-alert"><div class="hints-icon"><i class="fa fa-info-circle"></i></div><div class="hints-container"><p>&#x5F53;<code>-config</code>&#x6CA1;&#x6709;&#x6307;&#x5B9A;&#x65F6;&#xFF0C;V2Ray &#x5C06;&#x5148;&#x540E;&#x5C1D;&#x8BD5;&#x4ECE;&#x4EE5;&#x4E0B;&#x8DEF;&#x5F84;&#x52A0;&#x8F7D;<code>config.json</code>:</p>
<ul>
<li>&#x5DE5;&#x4F5C;&#x76EE;&#x5F55;&#xFF08;Working Directory&#xFF09;</li>
<li><a href="../chapter_02/env.html">&#x73AF;&#x5883;&#x53D8;&#x91CF;</a>&#x4E2D;<code>v2ray.location.asset</code>&#x6240;&#x6307;&#x5B9A;&#x7684;&#x8DEF;&#x5F84;</li>
</ul>
</div></div></p>
<h2 id="v2ctl"><a name="v2ctl" class="plugin-anchor" href="#v2ctl"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl</h2>
<p>V2Ctl &#x662F;&#x4E00;&#x4E2A;&#x96C6;&#x5408;&#xFF0C;&#x5B83;&#x6709;&#x82E5;&#x5E72;&#x4E2A;&#x5B50;&#x547D;&#x4EE4;&#x7EC4;&#x6210;&#x3002;&#x5168;&#x5C40;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x5F62;&#x5F0F;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code class="lang-bash">v2ctl <span class="token operator">&lt;</span>command<span class="token operator">&gt;</span> <span class="token operator">&lt;</span>options<span class="token operator">&gt;</span>
</code></pre>
<blockquote>
<p><code>command</code></p>
</blockquote>
<p>&#x5B50;&#x547D;&#x4EE4;&#xFF0C;&#x6709;&#x4EE5;&#x4E0B;&#x9009;&#x9879;:</p>
<ul>
<li><code>api</code>: &#x8C03;&#x7528; V2Ray &#x8FDB;&#x7A0B;&#x7684;&#x8FDC;&#x7A0B;&#x63A7;&#x5236;&#x6307;&#x4EE4;&#x3002;</li>
<li><code>config</code>: &#x4ECE;&#x6807;&#x51C6;&#x8F93;&#x5165;&#x8BFB;&#x53D6; JSON &#x683C;&#x5F0F;&#x7684;&#x914D;&#x7F6E;&#xFF0C;&#x7136;&#x540E;&#x4ECE;&#x6807;&#x51C6;&#x8F93;&#x51FA;&#x6253;&#x5370; Protobuf &#x683C;&#x5F0F;&#x7684;&#x914D;&#x7F6E;&#x3002;</li>
<li><code>cert</code>: &#x751F;&#x6210; TLS &#x8BC1;&#x4E66;&#x3002;</li>
<li><code>fetch</code>: &#x6293;&#x53D6;&#x8FDC;&#x7A0B;&#x6587;&#x4EF6;&#x3002;</li>
<li><code>tlsping</code>: (V2Ray 4.17+) &#x5C1D;&#x8BD5;&#x8FDB;&#x884C; TLS &#x63E1;&#x624B;&#x3002;</li>
<li><code>verify</code>: &#x9A8C;&#x8BC1;&#x6587;&#x4EF6;&#x662F;&#x5426;&#x7531; Project V &#x5B98;&#x65B9;&#x7B7E;&#x540D;&#x3002;</li>
<li><code>uuid</code>: &#x8F93;&#x51FA;&#x4E00;&#x4E2A;&#x968F;&#x673A;&#x7684; UUID&#x3002;</li>
</ul>
<h3 id="v2ctl-api"><a name="v2ctl-api" class="plugin-anchor" href="#v2ctl-api"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl Api</h3>
<p><code>v2ctl api [--server=127.0.0.1:8080] <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Service.Method</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>Request</span><span class="token punctuation">&gt;</span></span></code></p>
<p>&#x8C03;&#x7528; V2Ray &#x8FDB;&#x7A0B;&#x7684;&#x8FDC;&#x7A0B;&#x63A7;&#x5236;&#x6307;&#x4EE4;&#x3002;&#x793A;&#x4F8B;&#xFF1A;</p>
<p><code>v2ctl api --server=127.0.0.1:8080 LoggerService.RestartLogger &apos;&apos;</code></p>
<h3 id="v2ctl-config"><a name="v2ctl-config" class="plugin-anchor" href="#v2ctl-config"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl Config</h3>
<p><code>v2ctl config</code></p>
<p>&#x6B64;&#x547D;&#x4EE4;&#x6CA1;&#x6709;&#x53C2;&#x6570;&#x3002;&#x5B83;&#x4ECE;&#x6807;&#x51C6;&#x8F93;&#x5165;&#x8BFB;&#x53D6; JSON &#x683C;&#x5F0F;&#x7684;&#x914D;&#x7F6E;&#xFF0C;&#x7136;&#x540E;&#x4ECE;&#x6807;&#x51C6;&#x8F93;&#x51FA;&#x6253;&#x5370; Protobuf &#x683C;&#x5F0F;&#x7684;&#x914D;&#x7F6E;&#x3002;</p>
<h3 id="v2ctl-cert"><a name="v2ctl-cert" class="plugin-anchor" href="#v2ctl-cert"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl Cert</h3>
<p><code>v2ctl cert [--ca] [--domain=v2ray.com] [--expire=240h] [--name=&quot;V2Ray Inc&quot;] [--org=&quot;V2Ray Inc] [--json] [--file=v2ray]</code></p>
<p>&#x751F;&#x6210;&#x4E00;&#x4E2A; TLS &#x8BC1;&#x4E66;&#x3002;</p>
<blockquote>
<p><code>--ca</code></p>
</blockquote>
<p>&#x5982;&#x679C;&#x6307;&#x5B9A;&#x6B64;&#x9009;&#x9879;&#xFF0C;&#x5C06;&#x4F1A;&#x751F;&#x6210;&#x4E00;&#x4E2A; CA &#x8BC1;&#x4E66;&#x3002;</p>
<blockquote>
<p><code>--domain</code></p>
</blockquote>
<p>&#x8BC1;&#x4E66;&#x7684; Alternative Name &#x9879;&#x3002;&#x8BE5;&#x53C2;&#x6570;&#x53EF;&#x4EE5;&#x591A;&#x6B21;&#x4F7F;&#x7528;&#xFF0C;&#x6765;&#x6307;&#x5B9A;&#x591A;&#x4E2A;&#x57DF;&#x540D;&#x3002;&#x6BD4;&#x5982;<code>--domain=v2ray.com --domain=v2ray.cool</code>&#x3002;</p>
<blockquote>
<p><code>--expire</code></p>
</blockquote>
<p>&#x8BC1;&#x4E66;&#x6709;&#x6548;&#x671F;&#x3002;&#x683C;&#x5F0F;&#x4E3A; Golang &#x7684;<a href="https://golang.org/pkg/time/#ParseDuration" target="_blank">&#x65F6;&#x95F4;&#x957F;&#x5EA6;</a>&#x3002;</p>
<blockquote>
<p><code>--name</code></p>
</blockquote>
<p>&#x8BC1;&#x4E66;&#x7684; Command Name &#x9879;&#x3002;</p>
<blockquote>
<p><code>--org</code></p>
</blockquote>
<p>&#x8BC1;&#x4E66;&#x7684; Orgnization &#x9879;&#x3002;</p>
<blockquote>
<p><code>--json</code></p>
</blockquote>
<p>&#x5C06;&#x751F;&#x6210;&#x7684;&#x8BC1;&#x4E66;&#x4EE5; V2Ray &#x652F;&#x6301;&#x7684; JSON &#x683C;&#x5F0F;&#x8F93;&#x51FA;&#x5230;&#x6807;&#x51C6;&#x8F93;&#x51FA;&#x3002;&#x9ED8;&#x8BA4;&#x5F00;&#x542F;&#x3002;</p>
<blockquote>
<p><code>--file</code></p>
</blockquote>
<p>&#x5C06;&#x8BC1;&#x4E66;&#x4EE5; PEM &#x683C;&#x5F0F;&#x8F93;&#x51FA;&#x5230;&#x6587;&#x4EF6;&#x3002;&#x5F53;&#x6307;&#x5B9A; <code>--file=a</code> &#x65F6;&#xFF0C;&#x5C06;&#x751F;&#x6210; <code>a_cert.pem</code> &#x548C; <code>a_key.pem</code> &#x4E24;&#x4E2A;&#x6587;&#x4EF6;&#x3002;</p>
<h3 id="v2ctl-fetch"><a name="v2ctl-fetch" class="plugin-anchor" href="#v2ctl-fetch"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl Fetch</h3>
<p><code>v2ctl fetch <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>url</span><span class="token punctuation">&gt;</span></span></code></p>
<p>&#x6293;&#x53D6;&#x6307;&#x5B9A;&#x7684; URL &#x7684;&#x5185;&#x5BB9;&#x5E76;&#x8F93;&#x51FA;&#xFF0C;&#x53EA;&#x652F;&#x6301; HTTP &#x548C; HTTPS&#x3002;</p>
<h3 id="v2ctl-tlsping"><a name="v2ctl-tlsping" class="plugin-anchor" href="#v2ctl-tlsping"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl TlsPing</h3>
<p><code>v2ctl tlsping <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>domain</span><span class="token punctuation">&gt;</span></span> --ip=[ip]</code></p>
<p>&#x5411;&#x6307;&#x5B9A;&#x7684;&#x57DF;&#x540D;&#x53D1;&#x8D77; TLS &#x63E1;&#x624B;&#x3002;</p>
<blockquote>
<p>domain</p>
</blockquote>
<p>&#x76EE;&#x6807;&#x57DF;&#x540D;</p>
<blockquote>
<p>--ip</p>
</blockquote>
<p>&#x6B64;&#x57DF;&#x540D;&#x7684; IP &#x5730;&#x5740;&#x3002;&#x5982;&#x679C;&#x672A;&#x6307;&#x5B9A;&#x6B64;&#x53C2;&#x6570;&#xFF0C;V2Ctl &#x5C06;&#x4F7F;&#x7528;&#x7CFB;&#x7EDF;&#x7684; DNS &#x8FDB;&#x884C;&#x57DF;&#x540D;&#x89E3;&#x6790;&#x3002;</p>
<h3 id="v2ctl-verify"><a name="v2ctl-verify" class="plugin-anchor" href="#v2ctl-verify"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl Verify</h3>
<p><code>v2ctl verify [--sig=/path/to/sigfile] <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>filepath</span><span class="token punctuation">&gt;</span></span></code></p>
<p>&#x6B64;&#x547D;&#x4EE4;&#x7528;&#x4E8E;&#x9A8C;&#x8BC1;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x662F;&#x5426;&#x7531; Project V &#x5B98;&#x65B9;&#x7B7E;&#x540D;&#x3002;</p>
<blockquote>
<p><code>--sig</code></p>
</blockquote>
<p>&#x7B7E;&#x540D;&#x6587;&#x4EF6;&#x8DEF;&#x5F84;&#xFF0C;&#x9ED8;&#x8BA4;&#x503C;&#x4E3A;&#x5F85;&#x9A8C;&#x8BC1;&#x6587;&#x4EF6;&#x52A0;&#x5165;&apos;.sig&apos;&#x540E;&#x7F00;&#x3002;</p>
<blockquote>
<p><code>filepath</code></p>
</blockquote>
<p>&#x5F85;&#x9A8C;&#x8BC1;&#x6587;&#x4EF6;&#x8DEF;&#x5F84;&#x3002;</p>
<h3 id="v2ctl-uuid"><a name="v2ctl-uuid" class="plugin-anchor" href="#v2ctl-uuid"><i class="fa fa-link" aria-hidden="true"></i></a>V2Ctl UUID</h3>
<p><code>v2ctl uuid</code></p>
<p>&#x6B64;&#x547D;&#x4EE4;&#x6CA1;&#x6709;&#x53C2;&#x6570;&#x3002;&#x6BCF;&#x6B21;&#x8FD0;&#x884C;&#x90FD;&#x4F1A;&#x8F93;&#x51FA;&#x4E00;&#x4E2A;&#x65B0;&#x7684; UUID&#x3002;</p>

                                
                                </section>
                            
                        </div>
                    </div>
                
            </div>

        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"refcn":"chapter_00/command","refen":"welcome/command","title":"命令行参数","level":"1.1.5","depth":2,"next":{"title":"捐助支持","level":"1.1.6","depth":2,"path":"chapter_00/02_donate.md","ref":"chapter_00/02_donate.md","articles":[]},"previous":{"title":"新手上路","level":"1.1.4","depth":2,"path":"chapter_00/start.md","ref":"chapter_00/start.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-fontsettings","-search","-lunr","-highlight","-sharing","mermaid-gb3","anchors","ga","prism","prism-themes","hints"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"ga":{"configuration":"auto","token":"UA-73620536-1"},"prism":{"css":["prism-themes/themes/prism-base16-ateliersulphurpool.light.css"],"lang":{"objc":"objectivec","shell":"bash","text":"textile","p
Download .txt
gitextract_ndww95gq/

├── .gitignore
├── CNAME
├── awesome/
│   ├── ads.html
│   └── tools.html
├── chapter_00/
│   ├── 01_versions.html
│   ├── 02_donate.html
│   ├── command.html
│   ├── faq.html
│   ├── help.html
│   ├── install.html
│   ├── start.html
│   └── workflow.html
├── chapter_02/
│   ├── 01_overview.html
│   ├── 02_protocols.html
│   ├── 03_routing.html
│   ├── 04_dns.html
│   ├── 05_transport.html
│   ├── api.html
│   ├── env.html
│   ├── index.html
│   ├── mux.html
│   ├── policy.html
│   ├── protocols/
│   │   ├── blackhole.html
│   │   ├── dns.html
│   │   ├── dokodemo.html
│   │   ├── freedom.html
│   │   ├── http.html
│   │   ├── mtproto.html
│   │   ├── shadowsocks.html
│   │   ├── socks.html
│   │   └── vmess.html
│   ├── reverse.html
│   ├── stats.html
│   └── transport/
│       ├── domainsocket.html
│       ├── h2.html
│       ├── mkcp.html
│       ├── quic.html
│       ├── tcp.html
│       └── websocket.html
├── core/
│   └── index.html
├── developer/
│   ├── index.html
│   ├── intro/
│   │   ├── compile.html
│   │   ├── design.html
│   │   ├── guide.html
│   │   ├── roadmap.html
│   │   └── tools.html
│   └── protocols/
│       ├── mkcp.html
│       ├── muxcool.html
│       └── vmess.html
├── en/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── start.html
│       ├── versions.html
│       └── workflow.html
├── ext/
│   └── index.html
├── fa/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   ├── ui_client/
│   │   ├── README.md
│   │   ├── android.md
│   │   ├── ios.md
│   │   ├── osx.md
│   │   ├── service.md
│   │   └── windows.md
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── license.md
│       ├── pgp.md
│       ├── start.html
│       ├── tg.md
│       ├── versions.html
│       └── workflow.html
├── gitbook/
│   ├── fonts/
│   │   └── fontawesome/
│   │       └── FontAwesome.otf
│   ├── gitbook-plugin-anchors/
│   │   └── plugin.css
│   ├── gitbook-plugin-ga/
│   │   └── plugin.js
│   ├── gitbook-plugin-hints/
│   │   └── plugin-hints.css
│   ├── gitbook-plugin-mermaid-gb3/
│   │   ├── book/
│   │   │   └── plugin.js
│   │   └── mermaid/
│   │       ├── mermaid.css
│   │       └── mermaid.forest.css
│   ├── gitbook-plugin-prism/
│   │   ├── prism-a11y-dark.css
│   │   ├── prism-atom-dark.css
│   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   ├── prism-cb.css
│   │   ├── prism-darcula.css
│   │   ├── prism-dracula.css
│   │   ├── prism-duotone-dark.css
│   │   ├── prism-duotone-earth.css
│   │   ├── prism-duotone-forest.css
│   │   ├── prism-duotone-light.css
│   │   ├── prism-duotone-sea.css
│   │   ├── prism-duotone-space.css
│   │   ├── prism-ghcolors.css
│   │   ├── prism-hopscotch.css
│   │   ├── prism-material-dark.css
│   │   ├── prism-material-light.css
│   │   ├── prism-material-oceanic.css
│   │   ├── prism-pojoaque.css
│   │   ├── prism-shades-of-purple.css
│   │   ├── prism-synthwave84.css
│   │   ├── prism-vs.css
│   │   └── prism-xonokai.css
│   ├── gitbook.js
│   ├── style.css
│   └── theme.js
├── index.html
├── ko/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   ├── ui_client/
│   │   ├── README.md
│   │   ├── android.md
│   │   ├── ios.md
│   │   ├── osx.md
│   │   ├── service.md
│   │   └── windows.md
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── start.html
│       ├── versions.html
│       └── workflow.html
├── links/
│   └── chinasites/
│       └── index.html
├── robots.txt
├── ru/
│   ├── awesome/
│   │   ├── ads.html
│   │   └── tools.html
│   ├── configuration/
│   │   ├── api.html
│   │   ├── dns.html
│   │   ├── env.html
│   │   ├── index.html
│   │   ├── mux.html
│   │   ├── overview.html
│   │   ├── policy.html
│   │   ├── protocols/
│   │   │   ├── blackhole.html
│   │   │   ├── dns.html
│   │   │   ├── dokodemo.html
│   │   │   ├── freedom.html
│   │   │   ├── http.html
│   │   │   ├── mtproto.html
│   │   │   ├── shadowsocks.html
│   │   │   ├── socks.html
│   │   │   └── vmess.html
│   │   ├── protocols.html
│   │   ├── reverse.html
│   │   ├── routing.html
│   │   ├── stats.html
│   │   ├── transport/
│   │   │   ├── domainsocket.html
│   │   │   ├── h2.html
│   │   │   ├── mkcp.html
│   │   │   ├── quic.html
│   │   │   ├── tcp.html
│   │   │   └── websocket.html
│   │   └── transport.html
│   ├── developer/
│   │   └── tools.html
│   ├── gitbook/
│   │   ├── fonts/
│   │   │   └── fontawesome/
│   │   │       └── FontAwesome.otf
│   │   ├── gitbook-plugin-anchors/
│   │   │   └── plugin.css
│   │   ├── gitbook-plugin-ga/
│   │   │   └── plugin.js
│   │   ├── gitbook-plugin-hints/
│   │   │   └── plugin-hints.css
│   │   ├── gitbook-plugin-mermaid-gb3/
│   │   │   ├── book/
│   │   │   │   └── plugin.js
│   │   │   └── mermaid/
│   │   │       ├── mermaid.css
│   │   │       └── mermaid.forest.css
│   │   ├── gitbook-plugin-prism/
│   │   │   ├── prism-a11y-dark.css
│   │   │   ├── prism-atom-dark.css
│   │   │   ├── prism-base16-ateliersulphurpool.light.css
│   │   │   ├── prism-cb.css
│   │   │   ├── prism-darcula.css
│   │   │   ├── prism-dracula.css
│   │   │   ├── prism-duotone-dark.css
│   │   │   ├── prism-duotone-earth.css
│   │   │   ├── prism-duotone-forest.css
│   │   │   ├── prism-duotone-light.css
│   │   │   ├── prism-duotone-sea.css
│   │   │   ├── prism-duotone-space.css
│   │   │   ├── prism-ghcolors.css
│   │   │   ├── prism-hopscotch.css
│   │   │   ├── prism-material-dark.css
│   │   │   ├── prism-material-light.css
│   │   │   ├── prism-material-oceanic.css
│   │   │   ├── prism-pojoaque.css
│   │   │   ├── prism-shades-of-purple.css
│   │   │   ├── prism-synthwave84.css
│   │   │   ├── prism-vs.css
│   │   │   └── prism-xonokai.css
│   │   ├── gitbook.js
│   │   ├── style.css
│   │   └── theme.js
│   ├── index.html
│   ├── styles/
│   │   └── website.css
│   ├── ui_client/
│   │   ├── README.md
│   │   ├── android.md
│   │   ├── ios.md
│   │   ├── osx.md
│   │   ├── service.md
│   │   └── windows.md
│   └── welcome/
│       ├── command.html
│       ├── donate.html
│       ├── faq.html
│       ├── help.html
│       ├── install.html
│       ├── license.md
│       ├── pgp.md
│       ├── start.html
│       ├── tg.md
│       ├── versions.html
│       └── workflow.html
├── styles/
│   └── website.css
└── vi/
    ├── awesome/
    │   ├── ads.html
    │   └── tools.html
    ├── configuration/
    │   ├── api.html
    │   ├── dns.html
    │   ├── env.html
    │   ├── index.html
    │   ├── mux.html
    │   ├── overview.html
    │   ├── policy.html
    │   ├── protocols/
    │   │   ├── blackhole.html
    │   │   ├── dns.html
    │   │   ├── dokodemo.html
    │   │   ├── freedom.html
    │   │   ├── http.html
    │   │   ├── mtproto.html
    │   │   ├── shadowsocks.html
    │   │   ├── socks.html
    │   │   └── vmess.html
    │   ├── protocols.html
    │   ├── reverse.html
    │   ├── routing.html
    │   ├── stats.html
    │   ├── transport/
    │   │   ├── domainsocket.html
    │   │   ├── h2.html
    │   │   ├── mkcp.html
    │   │   ├── quic.html
    │   │   ├── tcp.html
    │   │   └── websocket.html
    │   └── transport.html
    ├── developer/
    │   └── tools.html
    ├── gitbook/
    │   ├── fonts/
    │   │   └── fontawesome/
    │   │       └── FontAwesome.otf
    │   ├── gitbook-plugin-anchors/
    │   │   └── plugin.css
    │   ├── gitbook-plugin-ga/
    │   │   └── plugin.js
    │   ├── gitbook-plugin-hints/
    │   │   └── plugin-hints.css
    │   ├── gitbook-plugin-mermaid-gb3/
    │   │   ├── book/
    │   │   │   └── plugin.js
    │   │   └── mermaid/
    │   │       ├── mermaid.css
    │   │       └── mermaid.forest.css
    │   ├── gitbook-plugin-prism/
    │   │   ├── prism-a11y-dark.css
    │   │   ├── prism-atom-dark.css
    │   │   ├── prism-base16-ateliersulphurpool.light.css
    │   │   ├── prism-cb.css
    │   │   ├── prism-darcula.css
    │   │   ├── prism-dracula.css
    │   │   ├── prism-duotone-dark.css
    │   │   ├── prism-duotone-earth.css
    │   │   ├── prism-duotone-forest.css
    │   │   ├── prism-duotone-light.css
    │   │   ├── prism-duotone-sea.css
    │   │   ├── prism-duotone-space.css
    │   │   ├── prism-ghcolors.css
    │   │   ├── prism-hopscotch.css
    │   │   ├── prism-material-dark.css
    │   │   ├── prism-material-light.css
    │   │   ├── prism-material-oceanic.css
    │   │   ├── prism-pojoaque.css
    │   │   ├── prism-shades-of-purple.css
    │   │   ├── prism-synthwave84.css
    │   │   ├── prism-vs.css
    │   │   └── prism-xonokai.css
    │   ├── gitbook.js
    │   ├── style.css
    │   └── theme.js
    ├── index.html
    ├── styles/
    │   └── website.css
    ├── ui_client/
    │   ├── README.md
    │   ├── android.md
    │   ├── ios.md
    │   ├── osx.md
    │   ├── service.md
    │   └── windows.md
    └── welcome/
        ├── command.html
        ├── donate.html
        ├── faq.html
        ├── help.html
        ├── install.html
        ├── start.html
        ├── versions.html
        └── workflow.html
Download .txt
SYMBOL INDEX (1530 symbols across 12 files)

FILE: en/gitbook/gitbook.js
  function o (line 1) | function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function s (line 1) | function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function a (line 1) | function a(e){return e}
  function u (line 1) | function u(e){throw e}
  function c (line 1) | function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function l (line 1) | function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,s=e.length;i<s;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function x (line 1) | function x(e,t,n,r,o){for(var i,s,a,u,c,l,f=t.createDocumentFragment(),p...
  function b (line 1) | function b(){return!0}
  function w (line 1) | function w(){return!1}
  function T (line 1) | function T(){try{return te.activeElement}catch(e){}}
  function C (line 1) | function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof ...
  function j (line 1) | function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function k (line 1) | function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 1) | function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&...
  function N (line 1) | function N(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,s,a,u,c,l,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,s,a=e.style;return n=n||at(e),n&&(s=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,s=0;for(i=n===(r?"border":"content")?4:"widt...
  function R (line 1) | function R(e,t,n){var r,o=!0,i=at(e),s="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function P (line 1) | function P(){dt&&(e.requestAnimationFrame(P),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=We[r],o[...
  function W (line 1) | function W(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function B (line 1) | function B(e,t,n){var r,o,i,s,a,u,c,l,f="width"in t||"height"in t,p=this...
  function _ (line 1) | function _(e,t){var n,r,o,i,s;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,s=U.prefilters.length,a=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function V (line 1) | function V(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function G (line 1) | function G(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function Y (line 1) | function Y(e,t,n,r){function o(a){var u;return i[a]=!0,de.each(e[a]||[],...
  function Q (line 1) | function Q(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function J (line 1) | function J(e,t,n){for(var r,o,i,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function K (line 1) | function K(e,t,n,r){var o,i,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,s,a,u,c,l,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>C.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]...
  function s (line 1) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function a (line 1) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 1) | function c(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function l (line 1) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,s=n&&"parentNode"===i,a=_+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(i...
  function y (line 1) | function y(e,t,n,o,i,s){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,s)),r...
  function x (line 1) | function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.re...
  function b (line 1) | function b(e,n){var o=n.length>0,i=e.length>0,s=function(r,s,a,u,c){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(...
  function t (line 2) | function t(){if(a){a.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=vo...
  function t (line 3) | function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e....
  function r (line 3) | function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.leng...
  function r (line 3) | function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-...
  function r (line 3) | function r(){throw new Error("setTimeout has not been defined")}
  function o (line 3) | function o(){throw new Error("clearTimeout has not been defined")}
  function i (line 3) | function i(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&s...
  function s (line 3) | function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&...
  function a (line 3) | function a(){m&&d&&(m=!1,d.length?g=d.concat(g):v=-1,g.length&&u())}
  function u (line 3) | function u(){if(!m){var e=i(a);m=!0;for(var t=g.length;t;){for(d=g,g=[];...
  function c (line 3) | function c(e,t){this.fun=e,this.array=t}
  function l (line 3) | function l(){}
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function s (line 3) | function s(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function a (line 3) | function a(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function c (line 3) | function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}
  function l (line 3) | function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*j>>1;r+=T)e=...
  function p (line 3) | function p(e){var t,n,r,i,s,a,l,p,h,d,g=[],m=e.length,v=0,y=N,x=S;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,s,u,c,p,h,d,g,m,v,y,x,b=[];for(e=a(e),m=e.leng...
  function d (line 3) | function d(e){return s(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return s(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 3) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 3) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 3) | function o(e,t,n){
  function i (line 4) | function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function s (line 4) | function s(e,t){return o(e,!1,!0).resolve(t)}
  function a (line 4) | function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){console.log("page has changed",e),o(e),l||(l=!0,c.trigger(...
  function o (line 4) | function o(e){f.page=e.page,f.file=e.file,f.gitbook=e.gitbook,f.config=e...
  function i (line 4) | function i(){return f}

FILE: en/gitbook/theme.js
  function o (line 1) | function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function a (line 1) | function a(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function s (line 1) | function s(e){return e}
  function u (line 1) | function u(e){throw e}
  function l (line 1) | function l(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function c (line 1) | function c(){te.removeEventListener("DOMContentLoaded",c),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,a=20,s=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function b (line 1) | function b(e,t,n,r,o){for(var i,a,s,u,l,c,f=t.createDocumentFragment(),p...
  function x (line 1) | function x(){return!0}
  function w (line 1) | function w(){return!1}
  function C (line 1) | function C(){try{return te.activeElement}catch(e){}}
  function T (line 1) | function T(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof ...
  function k (line 1) | function k(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function j (line 1) | function j(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 1) | function N(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&...
  function S (line 1) | function S(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,a,s,u,l,c,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,a,s=e.style;return n=n||st(e),n&&(a=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,a=0;for(i=n===(r?"border":"content")?4:"widt...
  function P (line 1) | function P(e,t,n){var r,o=!0,i=st(e),a="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function R (line 1) | function R(){dt&&(e.requestAnimationFrame(R),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=_e[r],o[...
  function _ (line 1) | function _(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function W (line 1) | function W(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,p=this...
  function B (line 1) | function B(e,t){var n,r,o,i,a;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,a=U.prefilters.length,s=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function K (line 1) | function K(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function V (line 1) | function V(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function G (line 1) | function G(e,t,n,r){function o(s){var u;return i[s]=!0,de.each(e[s]||[],...
  function Y (line 1) | function Y(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function Q (line 1) | function Q(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 1) | function J(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,a,s,u,l,c,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 1) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function s (line 1) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 1) | function l(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function c (line 1) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=B+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(i...
  function y (line 1) | function y(e,t,n,o,i,a){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,a)),r...
  function b (line 1) | function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.re...
  function x (line 1) | function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var l=this,c=arguments,f=function(...
  function t (line 2) | function t(){if(s){s.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,s){var l,p,h,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=vo...
  function o (line 3) | function o(e,t,n){return e.addEventListener?void e.addEventListener(t,n,...
  function i (line 3) | function i(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);...
  function a (line 3) | function a(e,t){return e.sort().join(",")===t.sort().join(",")}
  function s (line 3) | function s(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.pu...
  function u (line 3) | function u(e){return e.preventDefault?void e.preventDefault():void(e.ret...
  function l (line 3) | function l(e){return e.stopPropagation?void e.stopPropagation():void(e.c...
  function c (line 3) | function c(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}
  function f (line 3) | function f(){if(!v){v={};for(var e in y)e>95&&e<112||y.hasOwnProperty(e)...
  function p (line 3) | function p(e,t,n){return n||(n=f()[e]?"keydown":"keypress"),"keypress"==...
  function h (line 3) | function h(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split...
  function d (line 3) | function d(e,t){var n,r,o,i=[];for(n=h(e),o=0;o<n.length;++o)r=n[o],w[r]...
  function g (line 3) | function g(e,t){return null!==e&&e!==n&&(e===t||g(e.parentNode,t))}
  function m (line 3) | function m(e){function t(e){e=e||{};var t,n=!1;for(t in x)e[t]?n=!0:x[t]...
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function a (line 3) | function a(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function s (line 3) | function s(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function l (line 3) | function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}
  function c (line 3) | function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*k>>1;r+=C)e=...
  function p (line 3) | function p(e){var t,n,r,i,a,s,c,p,h,d,g=[],m=e.length,v=0,y=S,b=N;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,a,u,l,p,h,d,g,m,v,y,b,x=[];for(e=s(e),m=e.leng...
  function d (line 3) | function d(e){return a(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return a(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 4) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 4) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 4) | function o(e,t,n){if(e&&l.isObject(e)&&e instanceof r)return e;var o=new...
  function i (line 4) | function i(e){return l.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function a (line 4) | function a(e,t){return o(e,!1,!0).resolve(t)}
  function s (line 4) | function s(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){var t=a(e.currentTarget).parent().find(".dropdown-menu");t...
  function o (line 4) | function o(e){a(".dropdown-menu").removeClass("open")}
  function i (line 4) | function i(){a(document).on("click",".toggle-dropdown",r),a(document).on...
  function r (line 4) | function r(){s.init(),i.init(),o.init(),a.init(),u.createButton({index:0...
  function r (line 4) | function r(e,t){i.bind(e,function(e){return t(),!1})}
  function o (line 4) | function o(){r(["right"],function(e){a.goNext()}),r(["left"],function(e)...
  function r (line 4) | function r(e){return o.state.$book.addClass("is-loading"),e.always(funct...
  function r (line 4) | function r(){return T(E.isSmallScreen()?".book-body":".body-inner")}
  function o (line 4) | function o(e){var t=r(),n=0;i(e)&&(e&&(n=u(e)),t.unbind("scroll"),t.anim...
  function i (line 4) | function i(e){var t=r(),n=t.find(e);return!!n.length}
  function a (line 4) | function a(e){return 0===e.length}
  function s (line 4) | function s(e,t){return e.length>0&&e.filter(t).length>0}
  function u (line 4) | function u(e){var t=r(),n=t.find(".page-inner"),o=t.find(e),i=o.offsetPa...
  function l (line 4) | function l(e,t){if(e||t||(e=w.first()),t&&(e=w.length>1?w.filter(functio...
  function c (line 4) | function c(e){var t=e.children("a"),n=t.attr("href").split("#")[1];retur...
  function f (line 4) | function f(){var e=r(),t=e.scrollTop(),n=e.prop("scrollHeight"),o=e.prop...
  function p (line 4) | function p(e,t){var n=k.parse(A),r=k.resolve(window.location.pathname,e)...
  function h (line 4) | function h(){var e,t;e=parseInt(T(".body-inner").css("width"),10),t=pars...
  function d (line 4) | function d(e){var t=T(".book-body"),n=t.find(".body-inner"),o=n.find(".p...
  function g (line 4) | function g(e){return 0===e.button}
  function m (line 4) | function m(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}
  function v (line 4) | function v(e){var t=T(this),n=t.attr("target");if(!m(e)&&g(e)&&!n){e.sto...
  function y (line 4) | function y(){var e=T(".navigation-next").attr("href");e&&p(e,!0)}
  function b (line 4) | function b(){var e=T(".navigation-prev").attr("href");e&&p(e,!0)}
  function x (line 4) | function x(){T.ajaxSetup({cache:!1}),history.replaceState({path:window.l...
  function r (line 4) | function r(e,t){null!=l.state&&o()==e||(null==t&&(t=!0),l.state.$book.to...
  function o (line 4) | function o(){return l.state.$book.hasClass("with-summary")}
  function i (line 4) | function i(){u.isMobile()||r(l.storage.get("sidebar",!0),!1),s(document)...
  function a (line 4) | function a(e){var t=s(".book-summary");t.find("li").each(function(){var ...
  function r (line 4) | function r(){return"btn-"+g++}
  function o (line 4) | function o(e,t,n,r){var o=e.children(t).length;n<0&&(n=Math.max(0,o+1+n)...
  function i (line 4) | function i(e){e.preventDefault()}
  function a (line 4) | function a(e){var t=p("<div>",{class:"dropdown-menu",html:'<div class="d...
  function s (line 4) | function s(e){return e=p.extend({label:"",icon:"",text:"",position:"left...
  function u (line 4) | function u(e){var t,n=p(".book-header"),r=n.find("h1"),i="pull-"+e.posit...
  function l (line 4) | function l(){p(".js-toolbar-action").remove(),d.forEach(u)}
  function c (line 4) | function c(e){d=p.grep(d,function(t){return t.id!=e}),l()}
  function f (line 4) | function f(e){d=p.grep(d,function(t){return e.indexOf(t.id)==-1}),l()}

FILE: fa/gitbook/gitbook.js
  function o (line 1) | function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function s (line 1) | function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function a (line 1) | function a(e){return e}
  function u (line 1) | function u(e){throw e}
  function c (line 1) | function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function l (line 1) | function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,s=e.length;i<s;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function x (line 1) | function x(e,t,n,r,o){for(var i,s,a,u,c,l,f=t.createDocumentFragment(),p...
  function b (line 1) | function b(){return!0}
  function w (line 1) | function w(){return!1}
  function T (line 1) | function T(){try{return te.activeElement}catch(e){}}
  function C (line 1) | function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof ...
  function j (line 1) | function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function k (line 1) | function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 1) | function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&...
  function N (line 1) | function N(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,s,a,u,c,l,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,s,a=e.style;return n=n||at(e),n&&(s=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,s=0;for(i=n===(r?"border":"content")?4:"widt...
  function R (line 1) | function R(e,t,n){var r,o=!0,i=at(e),s="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function P (line 1) | function P(){dt&&(e.requestAnimationFrame(P),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=We[r],o[...
  function W (line 1) | function W(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function B (line 1) | function B(e,t,n){var r,o,i,s,a,u,c,l,f="width"in t||"height"in t,p=this...
  function _ (line 1) | function _(e,t){var n,r,o,i,s;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,s=U.prefilters.length,a=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function V (line 1) | function V(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function G (line 1) | function G(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function Y (line 1) | function Y(e,t,n,r){function o(a){var u;return i[a]=!0,de.each(e[a]||[],...
  function Q (line 1) | function Q(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function J (line 1) | function J(e,t,n){for(var r,o,i,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function K (line 1) | function K(e,t,n,r){var o,i,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,s,a,u,c,l,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>C.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]...
  function s (line 1) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function a (line 1) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 1) | function c(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function l (line 1) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,s=n&&"parentNode"===i,a=_+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(i...
  function y (line 1) | function y(e,t,n,o,i,s){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,s)),r...
  function x (line 1) | function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.re...
  function b (line 1) | function b(e,n){var o=n.length>0,i=e.length>0,s=function(r,s,a,u,c){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(...
  function t (line 2) | function t(){if(a){a.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=vo...
  function t (line 3) | function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e....
  function r (line 3) | function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.leng...
  function r (line 3) | function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-...
  function r (line 3) | function r(){throw new Error("setTimeout has not been defined")}
  function o (line 3) | function o(){throw new Error("clearTimeout has not been defined")}
  function i (line 3) | function i(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&s...
  function s (line 3) | function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&...
  function a (line 3) | function a(){m&&d&&(m=!1,d.length?g=d.concat(g):v=-1,g.length&&u())}
  function u (line 3) | function u(){if(!m){var e=i(a);m=!0;for(var t=g.length;t;){for(d=g,g=[];...
  function c (line 3) | function c(e,t){this.fun=e,this.array=t}
  function l (line 3) | function l(){}
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function s (line 3) | function s(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function a (line 3) | function a(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function c (line 3) | function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}
  function l (line 3) | function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*j>>1;r+=T)e=...
  function p (line 3) | function p(e){var t,n,r,i,s,a,l,p,h,d,g=[],m=e.length,v=0,y=N,x=S;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,s,u,c,p,h,d,g,m,v,y,x,b=[];for(e=a(e),m=e.leng...
  function d (line 3) | function d(e){return s(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return s(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 3) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 3) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 3) | function o(e,t,n){
  function i (line 4) | function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function s (line 4) | function s(e,t){return o(e,!1,!0).resolve(t)}
  function a (line 4) | function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){console.log("page has changed",e),o(e),l||(l=!0,c.trigger(...
  function o (line 4) | function o(e){f.page=e.page,f.file=e.file,f.gitbook=e.gitbook,f.config=e...
  function i (line 4) | function i(){return f}

FILE: fa/gitbook/theme.js
  function o (line 1) | function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function a (line 1) | function a(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function s (line 1) | function s(e){return e}
  function u (line 1) | function u(e){throw e}
  function l (line 1) | function l(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function c (line 1) | function c(){te.removeEventListener("DOMContentLoaded",c),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,a=20,s=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function b (line 1) | function b(e,t,n,r,o){for(var i,a,s,u,l,c,f=t.createDocumentFragment(),p...
  function x (line 1) | function x(){return!0}
  function w (line 1) | function w(){return!1}
  function C (line 1) | function C(){try{return te.activeElement}catch(e){}}
  function T (line 1) | function T(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof ...
  function k (line 1) | function k(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function j (line 1) | function j(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 1) | function N(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&...
  function S (line 1) | function S(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,a,s,u,l,c,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,a,s=e.style;return n=n||st(e),n&&(a=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,a=0;for(i=n===(r?"border":"content")?4:"widt...
  function P (line 1) | function P(e,t,n){var r,o=!0,i=st(e),a="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function R (line 1) | function R(){dt&&(e.requestAnimationFrame(R),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=_e[r],o[...
  function _ (line 1) | function _(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function W (line 1) | function W(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,p=this...
  function B (line 1) | function B(e,t){var n,r,o,i,a;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,a=U.prefilters.length,s=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function K (line 1) | function K(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function V (line 1) | function V(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function G (line 1) | function G(e,t,n,r){function o(s){var u;return i[s]=!0,de.each(e[s]||[],...
  function Y (line 1) | function Y(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function Q (line 1) | function Q(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 1) | function J(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,a,s,u,l,c,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 1) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function s (line 1) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 1) | function l(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function c (line 1) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=B+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(i...
  function y (line 1) | function y(e,t,n,o,i,a){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,a)),r...
  function b (line 1) | function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.re...
  function x (line 1) | function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var l=this,c=arguments,f=function(...
  function t (line 2) | function t(){if(s){s.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,s){var l,p,h,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=vo...
  function o (line 3) | function o(e,t,n){return e.addEventListener?void e.addEventListener(t,n,...
  function i (line 3) | function i(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);...
  function a (line 3) | function a(e,t){return e.sort().join(",")===t.sort().join(",")}
  function s (line 3) | function s(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.pu...
  function u (line 3) | function u(e){return e.preventDefault?void e.preventDefault():void(e.ret...
  function l (line 3) | function l(e){return e.stopPropagation?void e.stopPropagation():void(e.c...
  function c (line 3) | function c(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}
  function f (line 3) | function f(){if(!v){v={};for(var e in y)e>95&&e<112||y.hasOwnProperty(e)...
  function p (line 3) | function p(e,t,n){return n||(n=f()[e]?"keydown":"keypress"),"keypress"==...
  function h (line 3) | function h(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split...
  function d (line 3) | function d(e,t){var n,r,o,i=[];for(n=h(e),o=0;o<n.length;++o)r=n[o],w[r]...
  function g (line 3) | function g(e,t){return null!==e&&e!==n&&(e===t||g(e.parentNode,t))}
  function m (line 3) | function m(e){function t(e){e=e||{};var t,n=!1;for(t in x)e[t]?n=!0:x[t]...
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function a (line 3) | function a(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function s (line 3) | function s(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function l (line 3) | function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}
  function c (line 3) | function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*k>>1;r+=C)e=...
  function p (line 3) | function p(e){var t,n,r,i,a,s,c,p,h,d,g=[],m=e.length,v=0,y=S,b=N;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,a,u,l,p,h,d,g,m,v,y,b,x=[];for(e=s(e),m=e.leng...
  function d (line 3) | function d(e){return a(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return a(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 4) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 4) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 4) | function o(e,t,n){if(e&&l.isObject(e)&&e instanceof r)return e;var o=new...
  function i (line 4) | function i(e){return l.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function a (line 4) | function a(e,t){return o(e,!1,!0).resolve(t)}
  function s (line 4) | function s(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){var t=a(e.currentTarget).parent().find(".dropdown-menu");t...
  function o (line 4) | function o(e){a(".dropdown-menu").removeClass("open")}
  function i (line 4) | function i(){a(document).on("click",".toggle-dropdown",r),a(document).on...
  function r (line 4) | function r(){s.init(),i.init(),o.init(),a.init(),u.createButton({index:0...
  function r (line 4) | function r(e,t){i.bind(e,function(e){return t(),!1})}
  function o (line 4) | function o(){r(["right"],function(e){a.goNext()}),r(["left"],function(e)...
  function r (line 4) | function r(e){return o.state.$book.addClass("is-loading"),e.always(funct...
  function r (line 4) | function r(){return T(E.isSmallScreen()?".book-body":".body-inner")}
  function o (line 4) | function o(e){var t=r(),n=0;i(e)&&(e&&(n=u(e)),t.unbind("scroll"),t.anim...
  function i (line 4) | function i(e){var t=r(),n=t.find(e);return!!n.length}
  function a (line 4) | function a(e){return 0===e.length}
  function s (line 4) | function s(e,t){return e.length>0&&e.filter(t).length>0}
  function u (line 4) | function u(e){var t=r(),n=t.find(".page-inner"),o=t.find(e),i=o.offsetPa...
  function l (line 4) | function l(e,t){if(e||t||(e=w.first()),t&&(e=w.length>1?w.filter(functio...
  function c (line 4) | function c(e){var t=e.children("a"),n=t.attr("href").split("#")[1];retur...
  function f (line 4) | function f(){var e=r(),t=e.scrollTop(),n=e.prop("scrollHeight"),o=e.prop...
  function p (line 4) | function p(e,t){var n=k.parse(A),r=k.resolve(window.location.pathname,e)...
  function h (line 4) | function h(){var e,t;e=parseInt(T(".body-inner").css("width"),10),t=pars...
  function d (line 4) | function d(e){var t=T(".book-body"),n=t.find(".body-inner"),o=n.find(".p...
  function g (line 4) | function g(e){return 0===e.button}
  function m (line 4) | function m(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}
  function v (line 4) | function v(e){var t=T(this),n=t.attr("target");if(!m(e)&&g(e)&&!n){e.sto...
  function y (line 4) | function y(){var e=T(".navigation-next").attr("href");e&&p(e,!0)}
  function b (line 4) | function b(){var e=T(".navigation-prev").attr("href");e&&p(e,!0)}
  function x (line 4) | function x(){T.ajaxSetup({cache:!1}),history.replaceState({path:window.l...
  function r (line 4) | function r(e,t){null!=l.state&&o()==e||(null==t&&(t=!0),l.state.$book.to...
  function o (line 4) | function o(){return l.state.$book.hasClass("with-summary")}
  function i (line 4) | function i(){u.isMobile()||r(l.storage.get("sidebar",!0),!1),s(document)...
  function a (line 4) | function a(e){var t=s(".book-summary");t.find("li").each(function(){var ...
  function r (line 4) | function r(){return"btn-"+g++}
  function o (line 4) | function o(e,t,n,r){var o=e.children(t).length;n<0&&(n=Math.max(0,o+1+n)...
  function i (line 4) | function i(e){e.preventDefault()}
  function a (line 4) | function a(e){var t=p("<div>",{class:"dropdown-menu",html:'<div class="d...
  function s (line 4) | function s(e){return e=p.extend({label:"",icon:"",text:"",position:"left...
  function u (line 4) | function u(e){var t,n=p(".book-header"),r=n.find("h1"),i="pull-"+e.posit...
  function l (line 4) | function l(){p(".js-toolbar-action").remove(),d.forEach(u)}
  function c (line 4) | function c(e){d=p.grep(d,function(t){return t.id!=e}),l()}
  function f (line 4) | function f(e){d=p.grep(d,function(t){return e.indexOf(t.id)==-1}),l()}

FILE: gitbook/gitbook.js
  function o (line 1) | function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function s (line 1) | function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function a (line 1) | function a(e){return e}
  function u (line 1) | function u(e){throw e}
  function c (line 1) | function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function l (line 1) | function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,s=e.length;i<s;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function x (line 1) | function x(e,t,n,r,o){for(var i,s,a,u,c,l,f=t.createDocumentFragment(),p...
  function b (line 1) | function b(){return!0}
  function w (line 1) | function w(){return!1}
  function T (line 1) | function T(){try{return te.activeElement}catch(e){}}
  function C (line 1) | function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof ...
  function j (line 1) | function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function k (line 1) | function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 1) | function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&...
  function N (line 1) | function N(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,s,a,u,c,l,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,s,a=e.style;return n=n||at(e),n&&(s=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,s=0;for(i=n===(r?"border":"content")?4:"widt...
  function R (line 1) | function R(e,t,n){var r,o=!0,i=at(e),s="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function P (line 1) | function P(){dt&&(e.requestAnimationFrame(P),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=We[r],o[...
  function W (line 1) | function W(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function B (line 1) | function B(e,t,n){var r,o,i,s,a,u,c,l,f="width"in t||"height"in t,p=this...
  function _ (line 1) | function _(e,t){var n,r,o,i,s;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,s=U.prefilters.length,a=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function V (line 1) | function V(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function G (line 1) | function G(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function Y (line 1) | function Y(e,t,n,r){function o(a){var u;return i[a]=!0,de.each(e[a]||[],...
  function Q (line 1) | function Q(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function J (line 1) | function J(e,t,n){for(var r,o,i,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function K (line 1) | function K(e,t,n,r){var o,i,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,s,a,u,c,l,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>C.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]...
  function s (line 1) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function a (line 1) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 1) | function c(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function l (line 1) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,s=n&&"parentNode"===i,a=_+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(i...
  function y (line 1) | function y(e,t,n,o,i,s){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,s)),r...
  function x (line 1) | function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.re...
  function b (line 1) | function b(e,n){var o=n.length>0,i=e.length>0,s=function(r,s,a,u,c){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(...
  function t (line 2) | function t(){if(a){a.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=vo...
  function t (line 3) | function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e....
  function r (line 3) | function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.leng...
  function r (line 3) | function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-...
  function r (line 3) | function r(){throw new Error("setTimeout has not been defined")}
  function o (line 3) | function o(){throw new Error("clearTimeout has not been defined")}
  function i (line 3) | function i(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&s...
  function s (line 3) | function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&...
  function a (line 3) | function a(){m&&d&&(m=!1,d.length?g=d.concat(g):v=-1,g.length&&u())}
  function u (line 3) | function u(){if(!m){var e=i(a);m=!0;for(var t=g.length;t;){for(d=g,g=[];...
  function c (line 3) | function c(e,t){this.fun=e,this.array=t}
  function l (line 3) | function l(){}
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function s (line 3) | function s(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function a (line 3) | function a(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function c (line 3) | function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}
  function l (line 3) | function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*j>>1;r+=T)e=...
  function p (line 3) | function p(e){var t,n,r,i,s,a,l,p,h,d,g=[],m=e.length,v=0,y=N,x=S;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,s,u,c,p,h,d,g,m,v,y,x,b=[];for(e=a(e),m=e.leng...
  function d (line 3) | function d(e){return s(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return s(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 3) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 3) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 3) | function o(e,t,n){
  function i (line 4) | function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function s (line 4) | function s(e,t){return o(e,!1,!0).resolve(t)}
  function a (line 4) | function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){console.log("page has changed",e),o(e),l||(l=!0,c.trigger(...
  function o (line 4) | function o(e){f.page=e.page,f.file=e.file,f.gitbook=e.gitbook,f.config=e...
  function i (line 4) | function i(){return f}

FILE: gitbook/theme.js
  function o (line 1) | function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function a (line 1) | function a(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function s (line 1) | function s(e){return e}
  function u (line 1) | function u(e){throw e}
  function l (line 1) | function l(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function c (line 1) | function c(){te.removeEventListener("DOMContentLoaded",c),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,a=20,s=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function b (line 1) | function b(e,t,n,r,o){for(var i,a,s,u,l,c,f=t.createDocumentFragment(),p...
  function x (line 1) | function x(){return!0}
  function w (line 1) | function w(){return!1}
  function C (line 1) | function C(){try{return te.activeElement}catch(e){}}
  function T (line 1) | function T(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof ...
  function k (line 1) | function k(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function j (line 1) | function j(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 1) | function N(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&...
  function S (line 1) | function S(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,a,s,u,l,c,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,a,s=e.style;return n=n||st(e),n&&(a=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,a=0;for(i=n===(r?"border":"content")?4:"widt...
  function P (line 1) | function P(e,t,n){var r,o=!0,i=st(e),a="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function R (line 1) | function R(){dt&&(e.requestAnimationFrame(R),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=_e[r],o[...
  function _ (line 1) | function _(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function W (line 1) | function W(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,p=this...
  function B (line 1) | function B(e,t){var n,r,o,i,a;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,a=U.prefilters.length,s=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function K (line 1) | function K(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function V (line 1) | function V(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function G (line 1) | function G(e,t,n,r){function o(s){var u;return i[s]=!0,de.each(e[s]||[],...
  function Y (line 1) | function Y(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function Q (line 1) | function Q(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 1) | function J(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,a,s,u,l,c,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 1) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function s (line 1) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 1) | function l(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function c (line 1) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=B+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(i...
  function y (line 1) | function y(e,t,n,o,i,a){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,a)),r...
  function b (line 1) | function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.re...
  function x (line 1) | function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var l=this,c=arguments,f=function(...
  function t (line 2) | function t(){if(s){s.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,s){var l,p,h,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=vo...
  function o (line 3) | function o(e,t,n){return e.addEventListener?void e.addEventListener(t,n,...
  function i (line 3) | function i(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);...
  function a (line 3) | function a(e,t){return e.sort().join(",")===t.sort().join(",")}
  function s (line 3) | function s(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.pu...
  function u (line 3) | function u(e){return e.preventDefault?void e.preventDefault():void(e.ret...
  function l (line 3) | function l(e){return e.stopPropagation?void e.stopPropagation():void(e.c...
  function c (line 3) | function c(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}
  function f (line 3) | function f(){if(!v){v={};for(var e in y)e>95&&e<112||y.hasOwnProperty(e)...
  function p (line 3) | function p(e,t,n){return n||(n=f()[e]?"keydown":"keypress"),"keypress"==...
  function h (line 3) | function h(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split...
  function d (line 3) | function d(e,t){var n,r,o,i=[];for(n=h(e),o=0;o<n.length;++o)r=n[o],w[r]...
  function g (line 3) | function g(e,t){return null!==e&&e!==n&&(e===t||g(e.parentNode,t))}
  function m (line 3) | function m(e){function t(e){e=e||{};var t,n=!1;for(t in x)e[t]?n=!0:x[t]...
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function a (line 3) | function a(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function s (line 3) | function s(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function l (line 3) | function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}
  function c (line 3) | function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*k>>1;r+=C)e=...
  function p (line 3) | function p(e){var t,n,r,i,a,s,c,p,h,d,g=[],m=e.length,v=0,y=S,b=N;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,a,u,l,p,h,d,g,m,v,y,b,x=[];for(e=s(e),m=e.leng...
  function d (line 3) | function d(e){return a(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return a(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 4) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 4) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 4) | function o(e,t,n){if(e&&l.isObject(e)&&e instanceof r)return e;var o=new...
  function i (line 4) | function i(e){return l.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function a (line 4) | function a(e,t){return o(e,!1,!0).resolve(t)}
  function s (line 4) | function s(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){var t=a(e.currentTarget).parent().find(".dropdown-menu");t...
  function o (line 4) | function o(e){a(".dropdown-menu").removeClass("open")}
  function i (line 4) | function i(){a(document).on("click",".toggle-dropdown",r),a(document).on...
  function r (line 4) | function r(){s.init(),i.init(),o.init(),a.init(),u.createButton({index:0...
  function r (line 4) | function r(e,t){i.bind(e,function(e){return t(),!1})}
  function o (line 4) | function o(){r(["right"],function(e){a.goNext()}),r(["left"],function(e)...
  function r (line 4) | function r(e){return o.state.$book.addClass("is-loading"),e.always(funct...
  function r (line 4) | function r(){return T(E.isSmallScreen()?".book-body":".body-inner")}
  function o (line 4) | function o(e){var t=r(),n=0;i(e)&&(e&&(n=u(e)),t.unbind("scroll"),t.anim...
  function i (line 4) | function i(e){var t=r(),n=t.find(e);return!!n.length}
  function a (line 4) | function a(e){return 0===e.length}
  function s (line 4) | function s(e,t){return e.length>0&&e.filter(t).length>0}
  function u (line 4) | function u(e){var t=r(),n=t.find(".page-inner"),o=t.find(e),i=o.offsetPa...
  function l (line 4) | function l(e,t){if(e||t||(e=w.first()),t&&(e=w.length>1?w.filter(functio...
  function c (line 4) | function c(e){var t=e.children("a"),n=t.attr("href").split("#")[1];retur...
  function f (line 4) | function f(){var e=r(),t=e.scrollTop(),n=e.prop("scrollHeight"),o=e.prop...
  function p (line 4) | function p(e,t){var n=k.parse(A),r=k.resolve(window.location.pathname,e)...
  function h (line 4) | function h(){var e,t;e=parseInt(T(".body-inner").css("width"),10),t=pars...
  function d (line 4) | function d(e){var t=T(".book-body"),n=t.find(".body-inner"),o=n.find(".p...
  function g (line 4) | function g(e){return 0===e.button}
  function m (line 4) | function m(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}
  function v (line 4) | function v(e){var t=T(this),n=t.attr("target");if(!m(e)&&g(e)&&!n){e.sto...
  function y (line 4) | function y(){var e=T(".navigation-next").attr("href");e&&p(e,!0)}
  function b (line 4) | function b(){var e=T(".navigation-prev").attr("href");e&&p(e,!0)}
  function x (line 4) | function x(){T.ajaxSetup({cache:!1}),history.replaceState({path:window.l...
  function r (line 4) | function r(e,t){null!=l.state&&o()==e||(null==t&&(t=!0),l.state.$book.to...
  function o (line 4) | function o(){return l.state.$book.hasClass("with-summary")}
  function i (line 4) | function i(){u.isMobile()||r(l.storage.get("sidebar",!0),!1),s(document)...
  function a (line 4) | function a(e){var t=s(".book-summary");t.find("li").each(function(){var ...
  function r (line 4) | function r(){return"btn-"+g++}
  function o (line 4) | function o(e,t,n,r){var o=e.children(t).length;n<0&&(n=Math.max(0,o+1+n)...
  function i (line 4) | function i(e){e.preventDefault()}
  function a (line 4) | function a(e){var t=p("<div>",{class:"dropdown-menu",html:'<div class="d...
  function s (line 4) | function s(e){return e=p.extend({label:"",icon:"",text:"",position:"left...
  function u (line 4) | function u(e){var t,n=p(".book-header"),r=n.find("h1"),i="pull-"+e.posit...
  function l (line 4) | function l(){p(".js-toolbar-action").remove(),d.forEach(u)}
  function c (line 4) | function c(e){d=p.grep(d,function(t){return t.id!=e}),l()}
  function f (line 4) | function f(e){d=p.grep(d,function(t){return e.indexOf(t.id)==-1}),l()}

FILE: ko/gitbook/gitbook.js
  function o (line 1) | function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function s (line 1) | function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function a (line 1) | function a(e){return e}
  function u (line 1) | function u(e){throw e}
  function c (line 1) | function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function l (line 1) | function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,s=e.length;i<s;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function x (line 1) | function x(e,t,n,r,o){for(var i,s,a,u,c,l,f=t.createDocumentFragment(),p...
  function b (line 1) | function b(){return!0}
  function w (line 1) | function w(){return!1}
  function T (line 1) | function T(){try{return te.activeElement}catch(e){}}
  function C (line 1) | function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof ...
  function j (line 1) | function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function k (line 1) | function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 1) | function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&...
  function N (line 1) | function N(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,s,a,u,c,l,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,s,a=e.style;return n=n||at(e),n&&(s=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,s=0;for(i=n===(r?"border":"content")?4:"widt...
  function R (line 1) | function R(e,t,n){var r,o=!0,i=at(e),s="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function P (line 1) | function P(){dt&&(e.requestAnimationFrame(P),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=We[r],o[...
  function W (line 1) | function W(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function B (line 1) | function B(e,t,n){var r,o,i,s,a,u,c,l,f="width"in t||"height"in t,p=this...
  function _ (line 1) | function _(e,t){var n,r,o,i,s;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,s=U.prefilters.length,a=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function V (line 1) | function V(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function G (line 1) | function G(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function Y (line 1) | function Y(e,t,n,r){function o(a){var u;return i[a]=!0,de.each(e[a]||[],...
  function Q (line 1) | function Q(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function J (line 1) | function J(e,t,n){for(var r,o,i,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function K (line 1) | function K(e,t,n,r){var o,i,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,s,a,u,c,l,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>C.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]...
  function s (line 1) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function a (line 1) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 1) | function c(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function l (line 1) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,s=n&&"parentNode"===i,a=_+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(i...
  function y (line 1) | function y(e,t,n,o,i,s){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,s)),r...
  function x (line 1) | function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.re...
  function b (line 1) | function b(e,n){var o=n.length>0,i=e.length>0,s=function(r,s,a,u,c){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(...
  function t (line 2) | function t(){if(a){a.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=vo...
  function t (line 3) | function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e....
  function r (line 3) | function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.leng...
  function r (line 3) | function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-...
  function r (line 3) | function r(){throw new Error("setTimeout has not been defined")}
  function o (line 3) | function o(){throw new Error("clearTimeout has not been defined")}
  function i (line 3) | function i(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&s...
  function s (line 3) | function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&...
  function a (line 3) | function a(){m&&d&&(m=!1,d.length?g=d.concat(g):v=-1,g.length&&u())}
  function u (line 3) | function u(){if(!m){var e=i(a);m=!0;for(var t=g.length;t;){for(d=g,g=[];...
  function c (line 3) | function c(e,t){this.fun=e,this.array=t}
  function l (line 3) | function l(){}
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function s (line 3) | function s(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function a (line 3) | function a(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function c (line 3) | function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}
  function l (line 3) | function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*j>>1;r+=T)e=...
  function p (line 3) | function p(e){var t,n,r,i,s,a,l,p,h,d,g=[],m=e.length,v=0,y=N,x=S;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,s,u,c,p,h,d,g,m,v,y,x,b=[];for(e=a(e),m=e.leng...
  function d (line 3) | function d(e){return s(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return s(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 3) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 3) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 3) | function o(e,t,n){
  function i (line 4) | function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function s (line 4) | function s(e,t){return o(e,!1,!0).resolve(t)}
  function a (line 4) | function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){console.log("page has changed",e),o(e),l||(l=!0,c.trigger(...
  function o (line 4) | function o(e){f.page=e.page,f.file=e.file,f.gitbook=e.gitbook,f.config=e...
  function i (line 4) | function i(){return f}

FILE: ko/gitbook/theme.js
  function o (line 1) | function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function a (line 1) | function a(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function s (line 1) | function s(e){return e}
  function u (line 1) | function u(e){throw e}
  function l (line 1) | function l(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function c (line 1) | function c(){te.removeEventListener("DOMContentLoaded",c),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,a=20,s=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function b (line 1) | function b(e,t,n,r,o){for(var i,a,s,u,l,c,f=t.createDocumentFragment(),p...
  function x (line 1) | function x(){return!0}
  function w (line 1) | function w(){return!1}
  function C (line 1) | function C(){try{return te.activeElement}catch(e){}}
  function T (line 1) | function T(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof ...
  function k (line 1) | function k(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function j (line 1) | function j(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 1) | function N(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&...
  function S (line 1) | function S(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,a,s,u,l,c,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,a,s=e.style;return n=n||st(e),n&&(a=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,a=0;for(i=n===(r?"border":"content")?4:"widt...
  function P (line 1) | function P(e,t,n){var r,o=!0,i=st(e),a="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function R (line 1) | function R(){dt&&(e.requestAnimationFrame(R),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=_e[r],o[...
  function _ (line 1) | function _(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function W (line 1) | function W(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,p=this...
  function B (line 1) | function B(e,t){var n,r,o,i,a;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,a=U.prefilters.length,s=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function K (line 1) | function K(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function V (line 1) | function V(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function G (line 1) | function G(e,t,n,r){function o(s){var u;return i[s]=!0,de.each(e[s]||[],...
  function Y (line 1) | function Y(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function Q (line 1) | function Q(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 1) | function J(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,a,s,u,l,c,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 1) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function s (line 1) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 1) | function l(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function c (line 1) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=B+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(i...
  function y (line 1) | function y(e,t,n,o,i,a){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,a)),r...
  function b (line 1) | function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.re...
  function x (line 1) | function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var l=this,c=arguments,f=function(...
  function t (line 2) | function t(){if(s){s.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,s){var l,p,h,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=vo...
  function o (line 3) | function o(e,t,n){return e.addEventListener?void e.addEventListener(t,n,...
  function i (line 3) | function i(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);...
  function a (line 3) | function a(e,t){return e.sort().join(",")===t.sort().join(",")}
  function s (line 3) | function s(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.pu...
  function u (line 3) | function u(e){return e.preventDefault?void e.preventDefault():void(e.ret...
  function l (line 3) | function l(e){return e.stopPropagation?void e.stopPropagation():void(e.c...
  function c (line 3) | function c(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}
  function f (line 3) | function f(){if(!v){v={};for(var e in y)e>95&&e<112||y.hasOwnProperty(e)...
  function p (line 3) | function p(e,t,n){return n||(n=f()[e]?"keydown":"keypress"),"keypress"==...
  function h (line 3) | function h(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split...
  function d (line 3) | function d(e,t){var n,r,o,i=[];for(n=h(e),o=0;o<n.length;++o)r=n[o],w[r]...
  function g (line 3) | function g(e,t){return null!==e&&e!==n&&(e===t||g(e.parentNode,t))}
  function m (line 3) | function m(e){function t(e){e=e||{};var t,n=!1;for(t in x)e[t]?n=!0:x[t]...
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function a (line 3) | function a(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function s (line 3) | function s(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function l (line 3) | function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}
  function c (line 3) | function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*k>>1;r+=C)e=...
  function p (line 3) | function p(e){var t,n,r,i,a,s,c,p,h,d,g=[],m=e.length,v=0,y=S,b=N;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,a,u,l,p,h,d,g,m,v,y,b,x=[];for(e=s(e),m=e.leng...
  function d (line 3) | function d(e){return a(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return a(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 4) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 4) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 4) | function o(e,t,n){if(e&&l.isObject(e)&&e instanceof r)return e;var o=new...
  function i (line 4) | function i(e){return l.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function a (line 4) | function a(e,t){return o(e,!1,!0).resolve(t)}
  function s (line 4) | function s(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){var t=a(e.currentTarget).parent().find(".dropdown-menu");t...
  function o (line 4) | function o(e){a(".dropdown-menu").removeClass("open")}
  function i (line 4) | function i(){a(document).on("click",".toggle-dropdown",r),a(document).on...
  function r (line 4) | function r(){s.init(),i.init(),o.init(),a.init(),u.createButton({index:0...
  function r (line 4) | function r(e,t){i.bind(e,function(e){return t(),!1})}
  function o (line 4) | function o(){r(["right"],function(e){a.goNext()}),r(["left"],function(e)...
  function r (line 4) | function r(e){return o.state.$book.addClass("is-loading"),e.always(funct...
  function r (line 4) | function r(){return T(E.isSmallScreen()?".book-body":".body-inner")}
  function o (line 4) | function o(e){var t=r(),n=0;i(e)&&(e&&(n=u(e)),t.unbind("scroll"),t.anim...
  function i (line 4) | function i(e){var t=r(),n=t.find(e);return!!n.length}
  function a (line 4) | function a(e){return 0===e.length}
  function s (line 4) | function s(e,t){return e.length>0&&e.filter(t).length>0}
  function u (line 4) | function u(e){var t=r(),n=t.find(".page-inner"),o=t.find(e),i=o.offsetPa...
  function l (line 4) | function l(e,t){if(e||t||(e=w.first()),t&&(e=w.length>1?w.filter(functio...
  function c (line 4) | function c(e){var t=e.children("a"),n=t.attr("href").split("#")[1];retur...
  function f (line 4) | function f(){var e=r(),t=e.scrollTop(),n=e.prop("scrollHeight"),o=e.prop...
  function p (line 4) | function p(e,t){var n=k.parse(A),r=k.resolve(window.location.pathname,e)...
  function h (line 4) | function h(){var e,t;e=parseInt(T(".body-inner").css("width"),10),t=pars...
  function d (line 4) | function d(e){var t=T(".book-body"),n=t.find(".body-inner"),o=n.find(".p...
  function g (line 4) | function g(e){return 0===e.button}
  function m (line 4) | function m(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}
  function v (line 4) | function v(e){var t=T(this),n=t.attr("target");if(!m(e)&&g(e)&&!n){e.sto...
  function y (line 4) | function y(){var e=T(".navigation-next").attr("href");e&&p(e,!0)}
  function b (line 4) | function b(){var e=T(".navigation-prev").attr("href");e&&p(e,!0)}
  function x (line 4) | function x(){T.ajaxSetup({cache:!1}),history.replaceState({path:window.l...
  function r (line 4) | function r(e,t){null!=l.state&&o()==e||(null==t&&(t=!0),l.state.$book.to...
  function o (line 4) | function o(){return l.state.$book.hasClass("with-summary")}
  function i (line 4) | function i(){u.isMobile()||r(l.storage.get("sidebar",!0),!1),s(document)...
  function a (line 4) | function a(e){var t=s(".book-summary");t.find("li").each(function(){var ...
  function r (line 4) | function r(){return"btn-"+g++}
  function o (line 4) | function o(e,t,n,r){var o=e.children(t).length;n<0&&(n=Math.max(0,o+1+n)...
  function i (line 4) | function i(e){e.preventDefault()}
  function a (line 4) | function a(e){var t=p("<div>",{class:"dropdown-menu",html:'<div class="d...
  function s (line 4) | function s(e){return e=p.extend({label:"",icon:"",text:"",position:"left...
  function u (line 4) | function u(e){var t,n=p(".book-header"),r=n.find("h1"),i="pull-"+e.posit...
  function l (line 4) | function l(){p(".js-toolbar-action").remove(),d.forEach(u)}
  function c (line 4) | function c(e){d=p.grep(d,function(t){return t.id!=e}),l()}
  function f (line 4) | function f(e){d=p.grep(d,function(t){return e.indexOf(t.id)==-1}),l()}

FILE: ru/gitbook/gitbook.js
  function o (line 1) | function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function s (line 1) | function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function a (line 1) | function a(e){return e}
  function u (line 1) | function u(e){throw e}
  function c (line 1) | function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function l (line 1) | function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,s=e.length;i<s;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function x (line 1) | function x(e,t,n,r,o){for(var i,s,a,u,c,l,f=t.createDocumentFragment(),p...
  function b (line 1) | function b(){return!0}
  function w (line 1) | function w(){return!1}
  function T (line 1) | function T(){try{return te.activeElement}catch(e){}}
  function C (line 1) | function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof ...
  function j (line 1) | function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function k (line 1) | function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 1) | function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&...
  function N (line 1) | function N(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,s,a,u,c,l,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,s,a=e.style;return n=n||at(e),n&&(s=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,s=0;for(i=n===(r?"border":"content")?4:"widt...
  function R (line 1) | function R(e,t,n){var r,o=!0,i=at(e),s="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function P (line 1) | function P(){dt&&(e.requestAnimationFrame(P),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=We[r],o[...
  function W (line 1) | function W(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function B (line 1) | function B(e,t,n){var r,o,i,s,a,u,c,l,f="width"in t||"height"in t,p=this...
  function _ (line 1) | function _(e,t){var n,r,o,i,s;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,s=U.prefilters.length,a=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function V (line 1) | function V(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function G (line 1) | function G(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function Y (line 1) | function Y(e,t,n,r){function o(a){var u;return i[a]=!0,de.each(e[a]||[],...
  function Q (line 1) | function Q(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function J (line 1) | function J(e,t,n){for(var r,o,i,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function K (line 1) | function K(e,t,n,r){var o,i,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,s,a,u,c,l,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>C.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]...
  function s (line 1) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function a (line 1) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 1) | function c(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function l (line 1) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,s=n&&"parentNode"===i,a=_+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(i...
  function y (line 1) | function y(e,t,n,o,i,s){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,s)),r...
  function x (line 1) | function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.re...
  function b (line 1) | function b(e,n){var o=n.length>0,i=e.length>0,s=function(r,s,a,u,c){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(...
  function t (line 2) | function t(){if(a){a.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=vo...
  function t (line 3) | function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e....
  function r (line 3) | function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.leng...
  function r (line 3) | function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-...
  function r (line 3) | function r(){throw new Error("setTimeout has not been defined")}
  function o (line 3) | function o(){throw new Error("clearTimeout has not been defined")}
  function i (line 3) | function i(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&s...
  function s (line 3) | function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&...
  function a (line 3) | function a(){m&&d&&(m=!1,d.length?g=d.concat(g):v=-1,g.length&&u())}
  function u (line 3) | function u(){if(!m){var e=i(a);m=!0;for(var t=g.length;t;){for(d=g,g=[];...
  function c (line 3) | function c(e,t){this.fun=e,this.array=t}
  function l (line 3) | function l(){}
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function s (line 3) | function s(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function a (line 3) | function a(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function c (line 3) | function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}
  function l (line 3) | function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*j>>1;r+=T)e=...
  function p (line 3) | function p(e){var t,n,r,i,s,a,l,p,h,d,g=[],m=e.length,v=0,y=N,x=S;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,s,u,c,p,h,d,g,m,v,y,x,b=[];for(e=a(e),m=e.leng...
  function d (line 3) | function d(e){return s(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return s(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 3) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 3) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 3) | function o(e,t,n){
  function i (line 4) | function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function s (line 4) | function s(e,t){return o(e,!1,!0).resolve(t)}
  function a (line 4) | function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){console.log("page has changed",e),o(e),l||(l=!0,c.trigger(...
  function o (line 4) | function o(e){f.page=e.page,f.file=e.file,f.gitbook=e.gitbook,f.config=e...
  function i (line 4) | function i(){return f}

FILE: ru/gitbook/theme.js
  function o (line 1) | function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function a (line 1) | function a(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function s (line 1) | function s(e){return e}
  function u (line 1) | function u(e){throw e}
  function l (line 1) | function l(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function c (line 1) | function c(){te.removeEventListener("DOMContentLoaded",c),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,a=20,s=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function b (line 1) | function b(e,t,n,r,o){for(var i,a,s,u,l,c,f=t.createDocumentFragment(),p...
  function x (line 1) | function x(){return!0}
  function w (line 1) | function w(){return!1}
  function C (line 1) | function C(){try{return te.activeElement}catch(e){}}
  function T (line 1) | function T(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof ...
  function k (line 1) | function k(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function j (line 1) | function j(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 1) | function N(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&...
  function S (line 1) | function S(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,a,s,u,l,c,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,a,s=e.style;return n=n||st(e),n&&(a=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,a=0;for(i=n===(r?"border":"content")?4:"widt...
  function P (line 1) | function P(e,t,n){var r,o=!0,i=st(e),a="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function R (line 1) | function R(){dt&&(e.requestAnimationFrame(R),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=_e[r],o[...
  function _ (line 1) | function _(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function W (line 1) | function W(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,p=this...
  function B (line 1) | function B(e,t){var n,r,o,i,a;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,a=U.prefilters.length,s=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function K (line 1) | function K(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function V (line 1) | function V(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function G (line 1) | function G(e,t,n,r){function o(s){var u;return i[s]=!0,de.each(e[s]||[],...
  function Y (line 1) | function Y(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function Q (line 1) | function Q(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 1) | function J(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,a,s,u,l,c,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 1) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function s (line 1) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 1) | function l(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function c (line 1) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=B+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(i...
  function y (line 1) | function y(e,t,n,o,i,a){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,a)),r...
  function b (line 1) | function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.re...
  function x (line 1) | function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var l=this,c=arguments,f=function(...
  function t (line 2) | function t(){if(s){s.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,s){var l,p,h,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=vo...
  function o (line 3) | function o(e,t,n){return e.addEventListener?void e.addEventListener(t,n,...
  function i (line 3) | function i(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);...
  function a (line 3) | function a(e,t){return e.sort().join(",")===t.sort().join(",")}
  function s (line 3) | function s(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.pu...
  function u (line 3) | function u(e){return e.preventDefault?void e.preventDefault():void(e.ret...
  function l (line 3) | function l(e){return e.stopPropagation?void e.stopPropagation():void(e.c...
  function c (line 3) | function c(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}
  function f (line 3) | function f(){if(!v){v={};for(var e in y)e>95&&e<112||y.hasOwnProperty(e)...
  function p (line 3) | function p(e,t,n){return n||(n=f()[e]?"keydown":"keypress"),"keypress"==...
  function h (line 3) | function h(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split...
  function d (line 3) | function d(e,t){var n,r,o,i=[];for(n=h(e),o=0;o<n.length;++o)r=n[o],w[r]...
  function g (line 3) | function g(e,t){return null!==e&&e!==n&&(e===t||g(e.parentNode,t))}
  function m (line 3) | function m(e){function t(e){e=e||{};var t,n=!1;for(t in x)e[t]?n=!0:x[t]...
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function a (line 3) | function a(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function s (line 3) | function s(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function l (line 3) | function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}
  function c (line 3) | function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*k>>1;r+=C)e=...
  function p (line 3) | function p(e){var t,n,r,i,a,s,c,p,h,d,g=[],m=e.length,v=0,y=S,b=N;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,a,u,l,p,h,d,g,m,v,y,b,x=[];for(e=s(e),m=e.leng...
  function d (line 3) | function d(e){return a(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return a(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 4) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 4) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 4) | function o(e,t,n){if(e&&l.isObject(e)&&e instanceof r)return e;var o=new...
  function i (line 4) | function i(e){return l.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function a (line 4) | function a(e,t){return o(e,!1,!0).resolve(t)}
  function s (line 4) | function s(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){var t=a(e.currentTarget).parent().find(".dropdown-menu");t...
  function o (line 4) | function o(e){a(".dropdown-menu").removeClass("open")}
  function i (line 4) | function i(){a(document).on("click",".toggle-dropdown",r),a(document).on...
  function r (line 4) | function r(){s.init(),i.init(),o.init(),a.init(),u.createButton({index:0...
  function r (line 4) | function r(e,t){i.bind(e,function(e){return t(),!1})}
  function o (line 4) | function o(){r(["right"],function(e){a.goNext()}),r(["left"],function(e)...
  function r (line 4) | function r(e){return o.state.$book.addClass("is-loading"),e.always(funct...
  function r (line 4) | function r(){return T(E.isSmallScreen()?".book-body":".body-inner")}
  function o (line 4) | function o(e){var t=r(),n=0;i(e)&&(e&&(n=u(e)),t.unbind("scroll"),t.anim...
  function i (line 4) | function i(e){var t=r(),n=t.find(e);return!!n.length}
  function a (line 4) | function a(e){return 0===e.length}
  function s (line 4) | function s(e,t){return e.length>0&&e.filter(t).length>0}
  function u (line 4) | function u(e){var t=r(),n=t.find(".page-inner"),o=t.find(e),i=o.offsetPa...
  function l (line 4) | function l(e,t){if(e||t||(e=w.first()),t&&(e=w.length>1?w.filter(functio...
  function c (line 4) | function c(e){var t=e.children("a"),n=t.attr("href").split("#")[1];retur...
  function f (line 4) | function f(){var e=r(),t=e.scrollTop(),n=e.prop("scrollHeight"),o=e.prop...
  function p (line 4) | function p(e,t){var n=k.parse(A),r=k.resolve(window.location.pathname,e)...
  function h (line 4) | function h(){var e,t;e=parseInt(T(".body-inner").css("width"),10),t=pars...
  function d (line 4) | function d(e){var t=T(".book-body"),n=t.find(".body-inner"),o=n.find(".p...
  function g (line 4) | function g(e){return 0===e.button}
  function m (line 4) | function m(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}
  function v (line 4) | function v(e){var t=T(this),n=t.attr("target");if(!m(e)&&g(e)&&!n){e.sto...
  function y (line 4) | function y(){var e=T(".navigation-next").attr("href");e&&p(e,!0)}
  function b (line 4) | function b(){var e=T(".navigation-prev").attr("href");e&&p(e,!0)}
  function x (line 4) | function x(){T.ajaxSetup({cache:!1}),history.replaceState({path:window.l...
  function r (line 4) | function r(e,t){null!=l.state&&o()==e||(null==t&&(t=!0),l.state.$book.to...
  function o (line 4) | function o(){return l.state.$book.hasClass("with-summary")}
  function i (line 4) | function i(){u.isMobile()||r(l.storage.get("sidebar",!0),!1),s(document)...
  function a (line 4) | function a(e){var t=s(".book-summary");t.find("li").each(function(){var ...
  function r (line 4) | function r(){return"btn-"+g++}
  function o (line 4) | function o(e,t,n,r){var o=e.children(t).length;n<0&&(n=Math.max(0,o+1+n)...
  function i (line 4) | function i(e){e.preventDefault()}
  function a (line 4) | function a(e){var t=p("<div>",{class:"dropdown-menu",html:'<div class="d...
  function s (line 4) | function s(e){return e=p.extend({label:"",icon:"",text:"",position:"left...
  function u (line 4) | function u(e){var t,n=p(".book-header"),r=n.find("h1"),i="pull-"+e.posit...
  function l (line 4) | function l(){p(".js-toolbar-action").remove(),d.forEach(u)}
  function c (line 4) | function c(e){d=p.grep(d,function(t){return t.id!=e}),l()}
  function f (line 4) | function f(e){d=p.grep(d,function(t){return e.indexOf(t.id)==-1}),l()}

FILE: vi/gitbook/gitbook.js
  function o (line 1) | function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function s (line 1) | function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function a (line 1) | function a(e){return e}
  function u (line 1) | function u(e){throw e}
  function c (line 1) | function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function l (line 1) | function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,s=e.length;i<s;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function x (line 1) | function x(e,t,n,r,o){for(var i,s,a,u,c,l,f=t.createDocumentFragment(),p...
  function b (line 1) | function b(){return!0}
  function w (line 1) | function w(){return!1}
  function T (line 1) | function T(){try{return te.activeElement}catch(e){}}
  function C (line 1) | function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof ...
  function j (line 1) | function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function k (line 1) | function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function S (line 1) | function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&...
  function N (line 1) | function N(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,s,a,u,c,l,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,s,a=e.style;return n=n||at(e),n&&(s=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,s=0;for(i=n===(r?"border":"content")?4:"widt...
  function R (line 1) | function R(e,t,n){var r,o=!0,i=at(e),s="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function P (line 1) | function P(){dt&&(e.requestAnimationFrame(P),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=We[r],o[...
  function W (line 1) | function W(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function B (line 1) | function B(e,t,n){var r,o,i,s,a,u,c,l,f="width"in t||"height"in t,p=this...
  function _ (line 1) | function _(e,t){var n,r,o,i,s;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,s=U.prefilters.length,a=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function V (line 1) | function V(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function G (line 1) | function G(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function Y (line 1) | function Y(e,t,n,r){function o(a){var u;return i[a]=!0,de.each(e[a]||[],...
  function Q (line 1) | function Q(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function J (line 1) | function J(e,t,n){for(var r,o,i,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
  function K (line 1) | function K(e,t,n,r){var o,i,s,a,u,c={},l=e.dataTypes.slice();if(l[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,s,a,u,c,l,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>C.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]...
  function s (line 1) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function a (line 1) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function c (line 1) | function c(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function l (line 1) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,s=n&&"parentNode"===i,a=_+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,s=[],a=0,u=e.length,c=null!=t;a<u;a++)(i...
  function y (line 1) | function y(e,t,n,o,i,s){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,s)),r...
  function x (line 1) | function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.re...
  function b (line 1) | function b(e,n){var o=n.length>0,i=e.length>0,s=function(r,s,a,u,c){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(...
  function t (line 2) | function t(){if(a){a.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=vo...
  function t (line 3) | function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e....
  function r (line 3) | function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.leng...
  function r (line 3) | function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-...
  function r (line 3) | function r(){throw new Error("setTimeout has not been defined")}
  function o (line 3) | function o(){throw new Error("clearTimeout has not been defined")}
  function i (line 3) | function i(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&s...
  function s (line 3) | function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&...
  function a (line 3) | function a(){m&&d&&(m=!1,d.length?g=d.concat(g):v=-1,g.length&&u())}
  function u (line 3) | function u(){if(!m){var e=i(a);m=!0;for(var t=g.length;t;){for(d=g,g=[];...
  function c (line 3) | function c(e,t){this.fun=e,this.array=t}
  function l (line 3) | function l(){}
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function s (line 3) | function s(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function a (line 3) | function a(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function c (line 3) | function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}
  function l (line 3) | function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*j>>1;r+=T)e=...
  function p (line 3) | function p(e){var t,n,r,i,s,a,l,p,h,d,g=[],m=e.length,v=0,y=N,x=S;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,s,u,c,p,h,d,g,m,v,y,x,b=[];for(e=a(e),m=e.leng...
  function d (line 3) | function d(e){return s(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return s(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 3) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 3) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 3) | function o(e,t,n){
  function i (line 4) | function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function s (line 4) | function s(e,t){return o(e,!1,!0).resolve(t)}
  function a (line 4) | function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){console.log("page has changed",e),o(e),l||(l=!0,c.trigger(...
  function o (line 4) | function o(e){f.page=e.page,f.file=e.file,f.gitbook=e.gitbook,f.config=e...
  function i (line 4) | function i(){return f}

FILE: vi/gitbook/theme.js
  function o (line 1) | function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&re...
  function n (line 1) | function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head....
  function r (line 1) | function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"func...
  function o (line 1) | function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return...
  function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
  function a (line 1) | function a(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]...
  function s (line 1) | function s(e){return e}
  function u (line 1) | function u(e){throw e}
  function l (line 1) | function l(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done...
  function c (line 1) | function c(){te.removeEventListener("DOMContentLoaded",c),e.removeEventL...
  function f (line 1) | function f(){this.expando=de.expando+f.uid++}
  function p (line 1) | function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?...
  function h (line 1) | function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
  function d (line 1) | function d(e,t,n,r){var o,i=1,a=20,s=r?function(){return r.cur()}:functi...
  function g (line 1) | function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t...
  function m (line 1) | function m(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)r=e[i],r.style&&...
  function v (line 1) | function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagNam...
  function y (line 1) | function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",...
  function b (line 1) | function b(e,t,n,r,o){for(var i,a,s,u,l,c,f=t.createDocumentFragment(),p...
  function x (line 1) | function x(){return!0}
  function w (line 1) | function w(){return!1}
  function C (line 1) | function C(){try{return te.activeElement}catch(e){}}
  function T (line 1) | function T(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof ...
  function k (line 1) | function k(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeTy...
  function j (line 1) | function j(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
  function E (line 1) | function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 1) | function N(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&...
  function S (line 1) | function S(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.ty...
  function A (line 1) | function A(e,t,r,o){t=oe.apply([],t);var i,a,s,u,l,c,f=0,p=e.length,h=p-...
  function q (line 1) | function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)...
  function D (line 1) | function D(e,t,n){var r,o,i,a,s=e.style;return n=n||st(e),n&&(a=n.getPro...
  function O (line 1) | function O(e,t){return{get:function(){return e()?void delete this.get:(t...
  function L (line 1) | function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1...
  function H (line 1) | function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3...
  function F (line 1) | function F(e,t,n,r,o){var i,a=0;for(i=n===(r?"border":"content")?4:"widt...
  function P (line 1) | function P(e,t,n){var r,o=!0,i=st(e),a="border-box"===de.css(e,"boxSizin...
  function I (line 1) | function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}
  function R (line 1) | function R(){dt&&(e.requestAnimationFrame(R),de.fx.tick())}
  function M (line 1) | function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}
  function $ (line 1) | function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=_e[r],o[...
  function _ (line 1) | function _(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]...
  function W (line 1) | function W(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,p=this...
  function B (line 1) | function B(e,t){var n,r,o,i,a;for(n in e)if(r=de.camelCase(n),o=t[r],i=e...
  function U (line 1) | function U(e,t,n){var r,o,i=0,a=U.prefilters.length,s=de.Deferred().alwa...
  function z (line 1) | function z(e){var t=e.match(qe)||[];return t.join(" ")}
  function X (line 1) | function X(e){return e.getAttribute&&e.getAttribute("class")||""}
  function K (line 1) | function K(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et...
  function V (line 1) | function V(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function G (line 1) | function G(e,t,n,r){function o(s){var u;return i[s]=!0,de.each(e[s]||[],...
  function Y (line 1) | function Y(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)voi...
  function Q (line 1) | function Q(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 1) | function J(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function Z (line 1) | function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}
  function t (line 1) | function t(e,t,n,r){var o,i,a,s,u,l,c,p=t&&t.ownerDocument,d=t?t.nodeTyp...
  function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 1) | function r(e){return e[$]=!0,e}
  function o (line 1) | function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e...
  function i (line 1) | function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 1) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.source...
  function s (line 1) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 1) | function l(e){return function(t){return"form"in t?t.parentNode&&t.disabl...
  function c (line 1) | function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o...
  function f (line 1) | function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function p (line 1) | function p(){}
  function h (line 1) | function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function d (line 1) | function d(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=B+...
  function g (line 1) | function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)...
  function m (line 1) | function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}
  function v (line 1) | function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(i...
  function y (line 1) | function y(e,t,n,o,i,a){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,a)),r...
  function b (line 1) | function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.re...
  function x (line 1) | function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var ...
  function i (line 2) | function i(t,n,r,o){return function(){var l=this,c=arguments,f=function(...
  function t (line 2) | function t(){if(s){s.style.cssText="box-sizing:border-box;position:relat...
  function r (line 3) | function r(t,n,r,s){var l,p,h,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=vo...
  function o (line 3) | function o(e,t,n){return e.addEventListener?void e.addEventListener(t,n,...
  function i (line 3) | function i(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);...
  function a (line 3) | function a(e,t){return e.sort().join(",")===t.sort().join(",")}
  function s (line 3) | function s(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.pu...
  function u (line 3) | function u(e){return e.preventDefault?void e.preventDefault():void(e.ret...
  function l (line 3) | function l(e){return e.stopPropagation?void e.stopPropagation():void(e.c...
  function c (line 3) | function c(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}
  function f (line 3) | function f(){if(!v){v={};for(var e in y)e>95&&e<112||y.hasOwnProperty(e)...
  function p (line 3) | function p(e,t,n){return n||(n=f()[e]?"keydown":"keypress"),"keypress"==...
  function h (line 3) | function h(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split...
  function d (line 3) | function d(e,t){var n,r,o,i=[];for(n=h(e),o=0;o<n.length;++o)r=n[o],w[r]...
  function g (line 3) | function g(e,t){return null!==e&&e!==n&&(e===t||g(e.parentNode,t))}
  function m (line 3) | function m(e){function t(e){e=e||{};var t,n=!1;for(t in x)e[t]?n=!0:x[t]...
  function o (line 3) | function o(e){throw new RangeError(L[e])}
  function i (line 3) | function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function a (line 3) | function a(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),...
  function s (line 3) | function s(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t...
  function u (line 3) | function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,...
  function l (line 3) | function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}
  function c (line 3) | function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function f (line 3) | function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*k>>1;r+=C)e=...
  function p (line 3) | function p(e){var t,n,r,i,a,s,c,p,h,d,g=[],m=e.length,v=0,y=S,b=N;for(n=...
  function h (line 3) | function h(e){var t,n,r,i,a,u,l,p,h,d,g,m,v,y,b,x=[];for(e=s(e),m=e.leng...
  function d (line 3) | function d(e){return a(e,function(e){return q.test(e)?p(e.slice(4).toLow...
  function g (line 3) | function g(e){return a(e,function(e){return D.test(e)?"xn--"+h(e):e})}
  function r (line 3) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 4) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function r (line 4) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 4) | function o(e,t,n){if(e&&l.isObject(e)&&e instanceof r)return e;var o=new...
  function i (line 4) | function i(e){return l.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function a (line 4) | function a(e,t){return o(e,!1,!0).resolve(t)}
  function s (line 4) | function s(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 4) | function r(e){var t=a(e.currentTarget).parent().find(".dropdown-menu");t...
  function o (line 4) | function o(e){a(".dropdown-menu").removeClass("open")}
  function i (line 4) | function i(){a(document).on("click",".toggle-dropdown",r),a(document).on...
  function r (line 4) | function r(){s.init(),i.init(),o.init(),a.init(),u.createButton({index:0...
  function r (line 4) | function r(e,t){i.bind(e,function(e){return t(),!1})}
  function o (line 4) | function o(){r(["right"],function(e){a.goNext()}),r(["left"],function(e)...
  function r (line 4) | function r(e){return o.state.$book.addClass("is-loading"),e.always(funct...
  function r (line 4) | function r(){return T(E.isSmallScreen()?".book-body":".body-inner")}
  function o (line 4) | function o(e){var t=r(),n=0;i(e)&&(e&&(n=u(e)),t.unbind("scroll"),t.anim...
  function i (line 4) | function i(e){var t=r(),n=t.find(e);return!!n.length}
  function a (line 4) | function a(e){return 0===e.length}
  function s (line 4) | function s(e,t){return e.length>0&&e.filter(t).length>0}
  function u (line 4) | function u(e){var t=r(),n=t.find(".page-inner"),o=t.find(e),i=o.offsetPa...
  function l (line 4) | function l(e,t){if(e||t||(e=w.first()),t&&(e=w.length>1?w.filter(functio...
  function c (line 4) | function c(e){var t=e.children("a"),n=t.attr("href").split("#")[1];retur...
  function f (line 4) | function f(){var e=r(),t=e.scrollTop(),n=e.prop("scrollHeight"),o=e.prop...
  function p (line 4) | function p(e,t){var n=k.parse(A),r=k.resolve(window.location.pathname,e)...
  function h (line 4) | function h(){var e,t;e=parseInt(T(".body-inner").css("width"),10),t=pars...
  function d (line 4) | function d(e){var t=T(".book-body"),n=t.find(".body-inner"),o=n.find(".p...
  function g (line 4) | function g(e){return 0===e.button}
  function m (line 4) | function m(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}
  function v (line 4) | function v(e){var t=T(this),n=t.attr("target");if(!m(e)&&g(e)&&!n){e.sto...
  function y (line 4) | function y(){var e=T(".navigation-next").attr("href");e&&p(e,!0)}
  function b (line 4) | function b(){var e=T(".navigation-prev").attr("href");e&&p(e,!0)}
  function x (line 4) | function x(){T.ajaxSetup({cache:!1}),history.replaceState({path:window.l...
  function r (line 4) | function r(e,t){null!=l.state&&o()==e||(null==t&&(t=!0),l.state.$book.to...
  function o (line 4) | function o(){return l.state.$book.hasClass("with-summary")}
  function i (line 4) | function i(){u.isMobile()||r(l.storage.get("sidebar",!0),!1),s(document)...
  function a (line 4) | function a(e){var t=s(".book-summary");t.find("li").each(function(){var ...
  function r (line 4) | function r(){return"btn-"+g++}
  function o (line 4) | function o(e,t,n,r){var o=e.children(t).length;n<0&&(n=Math.max(0,o+1+n)...
  function i (line 4) | function i(e){e.preventDefault()}
  function a (line 4) | function a(e){var t=p("<div>",{class:"dropdown-menu",html:'<div class="d...
  function s (line 4) | function s(e){return e=p.extend({label:"",icon:"",text:"",position:"left...
  function u (line 4) | function u(e){var t,n=p(".book-header"),r=n.find("h1"),i="pull-"+e.posit...
  function l (line 4) | function l(){p(".js-toolbar-action").remove(),d.forEach(u)}
  function c (line 4) | function c(e){d=p.grep(d,function(t){return t.id!=e}),l()}
  function f (line 4) | function f(e){d=p.grep(d,function(t){return e.indexOf(t.id)==-1}),l()}
Copy disabled (too large) Download .json
Condensed preview — 476 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,428K chars).
[
  {
    "path": ".gitignore",
    "chars": 11,
    "preview": ".git\n.cache"
  },
  {
    "path": "CNAME",
    "chars": 13,
    "preview": "www.v2ray.com"
  },
  {
    "path": "awesome/ads.html",
    "chars": 31120,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "awesome/tools.html",
    "chars": 32729,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/01_versions.html",
    "chars": 72975,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/02_donate.html",
    "chars": 29753,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/command.html",
    "chars": 33969,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/faq.html",
    "chars": 35653,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/help.html",
    "chars": 34471,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/install.html",
    "chars": 35131,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/start.html",
    "chars": 34272,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_00/workflow.html",
    "chars": 28257,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/01_overview.html",
    "chars": 52851,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/02_protocols.html",
    "chars": 23318,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/03_routing.html",
    "chars": 47804,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/04_dns.html",
    "chars": 39721,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/05_transport.html",
    "chars": 54747,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/api.html",
    "chars": 26800,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/env.html",
    "chars": 27223,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/index.html",
    "chars": 31777,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/mux.html",
    "chars": 25359,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/policy.html",
    "chars": 35238,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/blackhole.html",
    "chars": 27039,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/dns.html",
    "chars": 25911,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/dokodemo.html",
    "chars": 30841,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/freedom.html",
    "chars": 26985,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/http.html",
    "chars": 34119,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/mtproto.html",
    "chars": 30650,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/shadowsocks.html",
    "chars": 34273,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/socks.html",
    "chars": 34742,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/protocols/vmess.html",
    "chars": 39396,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/reverse.html",
    "chars": 45845,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/stats.html",
    "chars": 25638,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/transport/domainsocket.html",
    "chars": 25307,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/transport/h2.html",
    "chars": 25961,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/transport/mkcp.html",
    "chars": 37414,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/transport/quic.html",
    "chars": 29762,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/transport/tcp.html",
    "chars": 34327,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "chapter_02/transport/websocket.html",
    "chars": 25143,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "core/index.html",
    "chars": 635,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset='utf-8'>\n    <meta name=\"go-import\" content=\"v2ray.com/core "
  },
  {
    "path": "developer/index.html",
    "chars": 29326,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/intro/compile.html",
    "chars": 36217,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/intro/design.html",
    "chars": 27249,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/intro/guide.html",
    "chars": 36048,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/intro/roadmap.html",
    "chars": 24760,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/intro/tools.html",
    "chars": 23871,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/protocols/mkcp.html",
    "chars": 32247,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/protocols/muxcool.html",
    "chars": 35339,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "developer/protocols/vmess.html",
    "chars": 44339,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"zh\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/awesome/ads.html",
    "chars": 25820,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/awesome/tools.html",
    "chars": 27375,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/api.html",
    "chars": 24083,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/dns.html",
    "chars": 29581,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/env.html",
    "chars": 24068,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/index.html",
    "chars": 26477,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/mux.html",
    "chars": 22714,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/overview.html",
    "chars": 45259,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/policy.html",
    "chars": 30248,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/blackhole.html",
    "chars": 24940,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/dns.html",
    "chars": 23777,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/dokodemo.html",
    "chars": 27633,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/freedom.html",
    "chars": 24391,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/http.html",
    "chars": 24954,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/mtproto.html",
    "chars": 28366,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/shadowsocks.html",
    "chars": 31418,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/socks.html",
    "chars": 31220,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols/vmess.html",
    "chars": 34495,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/protocols.html",
    "chars": 22148,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/reverse.html",
    "chars": 40396,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/routing.html",
    "chars": 37764,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/stats.html",
    "chars": 23404,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/transport/domainsocket.html",
    "chars": 23310,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/transport/h2.html",
    "chars": 23244,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/transport/mkcp.html",
    "chars": 27748,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/transport/quic.html",
    "chars": 26286,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/transport/tcp.html",
    "chars": 32031,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/transport/websocket.html",
    "chars": 23438,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/configuration/transport.html",
    "chars": 46986,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/developer/tools.html",
    "chars": 22057,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/gitbook/gitbook-plugin-anchors/plugin.css",
    "chars": 608,
    "preview": "\na.plugin-anchor {\n    color: inherit !important;\n    display: none;\n    margin-left: -30px;\n    padding-left: 40px;\n   "
  },
  {
    "path": "en/gitbook/gitbook-plugin-ga/plugin.js",
    "chars": 725,
    "preview": "require([\"gitbook\"], function(gitbook) {\n    // Load analytics.js\n    gitbook.events.bind(\"start\", function(e, config) {"
  },
  {
    "path": "en/gitbook/gitbook-plugin-hints/plugin-hints.css",
    "chars": 136,
    "preview": ".hints-icon {\n    display: table-cell;\n    padding-right: 15px;\n    padding-left: 5px;\n}\n\n.hints-container {\n    display"
  },
  {
    "path": "en/gitbook/gitbook-plugin-mermaid-gb3/book/plugin.js",
    "chars": 126,
    "preview": "require([\n  'gitbook'\n], function (gitbook) {\n  gitbook.events.bind('page.change', function () {\n    mermaid.init();\n  }"
  },
  {
    "path": "en/gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.css",
    "chars": 5204,
    "preview": "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n.mermaid .label {\n  color: #333;\n"
  },
  {
    "path": "en/gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.forest.css",
    "chars": 5252,
    "preview": "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n.mermaid .label {\n  font-family: "
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-a11y-dark.css",
    "chars": 2437,
    "preview": "/**\n * a11y-dark theme for JavaScript, CSS, and HTML\n * Based on the okaidia theme: https://github.com/PrismJS/prism/blo"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-atom-dark.css",
    "chars": 1998,
    "preview": "/**\n * atom-dark theme for `prism.js`\n * Based on Atom's `atom-dark` theme: https://github.com/atom/atom-dark-syntax\n * "
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-base16-ateliersulphurpool.light.css",
    "chars": 3290,
    "preview": "/*\n\nName:       Base16 Atelier Sulphurpool Light\nAuthor:     Bram de Haan (http://atelierbram.github.io/syntax-highlight"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-cb.css",
    "chars": 3038,
    "preview": "/*\n * Based on Plugin: Syntax Highlighter CB\n * Plugin URI: http://wp.tutsplus.com/tutorials/plugins/adding-a-syntax-hig"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-darcula.css",
    "chars": 2736,
    "preview": "/**\n * Darcula theme\n *\n * Adapted from a theme based on:\n * IntelliJ Darcula Theme (https://github.com/bulenkov/Darcula"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-dracula.css",
    "chars": 1796,
    "preview": "/**\n * Dracula Theme originally by Zeno Rocha [@zenorocha]\n * https://draculatheme.com/\n *\n * Ported for PrismJS by Albe"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-duotone-dark.css",
    "chars": 3347,
    "preview": "/*\nName: Duotone Dark\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duot"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-duotone-earth.css",
    "chars": 3348,
    "preview": "/*\nName:   Duotone Earth\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/d"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-duotone-forest.css",
    "chars": 3353,
    "preview": "/*\nName:   Duotone Forest\nAuthor: by Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-duotone-light.css",
    "chars": 3338,
    "preview": "/*\nName:   Duotone Light\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/d"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-duotone-sea.css",
    "chars": 3356,
    "preview": "/*\nName: Duotone Sea\nAuthor: by Simurai, adapted from DuoTone themes by Simurai for Atom (http://simurai.com/projects/20"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-duotone-space.css",
    "chars": 3346,
    "preview": "/*\nName: Duotone Space\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duo"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-ghcolors.css",
    "chars": 2106,
    "preview": "/**\n * GHColors theme by Avi Aryan (http://aviaryan.in)\n * Inspired by Github syntax coloring\n */\n\ncode[class*=\"language"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-hopscotch.css",
    "chars": 1908,
    "preview": "@import url(https://fonts.googleapis.com/css?family=Fira+Mono);\n/*\n * Hopscotch\n * by Jan T. Sott\n * https://github.com/"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-material-dark.css",
    "chars": 2497,
    "preview": "code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-b"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-material-light.css",
    "chars": 2535,
    "preview": "code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-b"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-material-oceanic.css",
    "chars": 2556,
    "preview": "code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-b"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-pojoaque.css",
    "chars": 3826,
    "preview": "/*\n * Pojoaque Style by Jason Tate\n * http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlig"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-shades-of-purple.css",
    "chars": 3352,
    "preview": "/**\n * Shades of Purple Theme for Prism.js\n *\n * @author Ahmad Awais <https://twitter.com/MrAhmadAwais/>\n * @support Fol"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-synthwave84.css",
    "chars": 2454,
    "preview": "/*\n * Synthwave '84 Theme originally by Robb Owen [@Robb0wen] for Visual Studio Code\n * Demo: https://marc.dev/demo/pris"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-vs.css",
    "chars": 2989,
    "preview": "/**\n * VS theme by Andrew Lock (https://andrewlock.net)\n * Inspired by Visual Studio syntax coloring\n */\n\ncode[class*=\"l"
  },
  {
    "path": "en/gitbook/gitbook-plugin-prism/prism-xonokai.css",
    "chars": 3207,
    "preview": "/**\n* xonokai theme for JavaScript, CSS and HTML\n* based on: https://github.com/MoOx/sass-prism-theme-base by Maxime Thi"
  },
  {
    "path": "en/gitbook/gitbook.js",
    "chars": 105399,
    "preview": "!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u=\"function\"==typeof require&&require;if(!a&&u)return u(s,!0)"
  },
  {
    "path": "en/gitbook/style.css",
    "chars": 52701,
    "preview": "/*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup"
  },
  {
    "path": "en/gitbook/theme.js",
    "chars": 113262,
    "preview": "!function e(t,n,r){function o(a,s){if(!n[a]){if(!t[a]){var u=\"function\"==typeof require&&require;if(!s&&u)return u(a,!0)"
  },
  {
    "path": "en/index.html",
    "chars": 23904,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/styles/website.css",
    "chars": 645,
    "preview": ".book-summary {\n  font-family: \"Helvetica Neue\", \"Open Sans\", sans-serif;\n  font-size: 14px;\n}\n\n.book-header .btn {\n  pa"
  },
  {
    "path": "en/welcome/command.html",
    "chars": 29663,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/welcome/donate.html",
    "chars": 25999,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/welcome/faq.html",
    "chars": 26718,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/welcome/help.html",
    "chars": 31228,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/welcome/install.html",
    "chars": 27917,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/welcome/start.html",
    "chars": 31258,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/welcome/versions.html",
    "chars": 51765,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "en/welcome/workflow.html",
    "chars": 24454,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"en\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "ext/index.html",
    "chars": 592,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset='utf-8'>\n    <meta name=\"go-import\" content=\"v2ray.com/ext g"
  },
  {
    "path": "fa/awesome/ads.html",
    "chars": 25815,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/awesome/tools.html",
    "chars": 27369,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/api.html",
    "chars": 27592,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/dns.html",
    "chars": 33320,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/env.html",
    "chars": 26658,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/index.html",
    "chars": 33771,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/mux.html",
    "chars": 24898,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/overview.html",
    "chars": 64949,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/policy.html",
    "chars": 31263,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/protocols/blackhole.html",
    "chars": 26783,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/dns.html",
    "chars": 23772,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/dokodemo.html",
    "chars": 31921,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/freedom.html",
    "chars": 26564,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/http.html",
    "chars": 27415,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/mtproto.html",
    "chars": 31846,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/shadowsocks.html",
    "chars": 38890,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/socks.html",
    "chars": 31560,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols/vmess.html",
    "chars": 42320,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/protocols.html",
    "chars": 22915,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/reverse.html",
    "chars": 51008,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/routing.html",
    "chars": 45607,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/stats.html",
    "chars": 26899,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/transport/domainsocket.html",
    "chars": 26428,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/transport/h2.html",
    "chars": 25403,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/transport/mkcp.html",
    "chars": 36668,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/transport/quic.html",
    "chars": 26283,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/transport/tcp.html",
    "chars": 32194,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/configuration/transport/websocket.html",
    "chars": 25256,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/configuration/transport.html",
    "chars": 53639,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/developer/tools.html",
    "chars": 22052,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-anchors/plugin.css",
    "chars": 608,
    "preview": "\na.plugin-anchor {\n    color: inherit !important;\n    display: none;\n    margin-left: -30px;\n    padding-left: 40px;\n   "
  },
  {
    "path": "fa/gitbook/gitbook-plugin-ga/plugin.js",
    "chars": 725,
    "preview": "require([\"gitbook\"], function(gitbook) {\n    // Load analytics.js\n    gitbook.events.bind(\"start\", function(e, config) {"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-hints/plugin-hints.css",
    "chars": 136,
    "preview": ".hints-icon {\n    display: table-cell;\n    padding-right: 15px;\n    padding-left: 5px;\n}\n\n.hints-container {\n    display"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-mermaid-gb3/book/plugin.js",
    "chars": 126,
    "preview": "require([\n  'gitbook'\n], function (gitbook) {\n  gitbook.events.bind('page.change', function () {\n    mermaid.init();\n  }"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.css",
    "chars": 5204,
    "preview": "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n.mermaid .label {\n  color: #333;\n"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-mermaid-gb3/mermaid/mermaid.forest.css",
    "chars": 5252,
    "preview": "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n.mermaid .label {\n  font-family: "
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-a11y-dark.css",
    "chars": 2437,
    "preview": "/**\n * a11y-dark theme for JavaScript, CSS, and HTML\n * Based on the okaidia theme: https://github.com/PrismJS/prism/blo"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-atom-dark.css",
    "chars": 1998,
    "preview": "/**\n * atom-dark theme for `prism.js`\n * Based on Atom's `atom-dark` theme: https://github.com/atom/atom-dark-syntax\n * "
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-base16-ateliersulphurpool.light.css",
    "chars": 3290,
    "preview": "/*\n\nName:       Base16 Atelier Sulphurpool Light\nAuthor:     Bram de Haan (http://atelierbram.github.io/syntax-highlight"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-cb.css",
    "chars": 3038,
    "preview": "/*\n * Based on Plugin: Syntax Highlighter CB\n * Plugin URI: http://wp.tutsplus.com/tutorials/plugins/adding-a-syntax-hig"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-darcula.css",
    "chars": 2736,
    "preview": "/**\n * Darcula theme\n *\n * Adapted from a theme based on:\n * IntelliJ Darcula Theme (https://github.com/bulenkov/Darcula"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-dracula.css",
    "chars": 1796,
    "preview": "/**\n * Dracula Theme originally by Zeno Rocha [@zenorocha]\n * https://draculatheme.com/\n *\n * Ported for PrismJS by Albe"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-duotone-dark.css",
    "chars": 3347,
    "preview": "/*\nName: Duotone Dark\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duot"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-duotone-earth.css",
    "chars": 3348,
    "preview": "/*\nName:   Duotone Earth\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/d"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-duotone-forest.css",
    "chars": 3353,
    "preview": "/*\nName:   Duotone Forest\nAuthor: by Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-duotone-light.css",
    "chars": 3338,
    "preview": "/*\nName:   Duotone Light\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/d"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-duotone-sea.css",
    "chars": 3356,
    "preview": "/*\nName: Duotone Sea\nAuthor: by Simurai, adapted from DuoTone themes by Simurai for Atom (http://simurai.com/projects/20"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-duotone-space.css",
    "chars": 3346,
    "preview": "/*\nName: Duotone Space\nAuthor: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duo"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-ghcolors.css",
    "chars": 2106,
    "preview": "/**\n * GHColors theme by Avi Aryan (http://aviaryan.in)\n * Inspired by Github syntax coloring\n */\n\ncode[class*=\"language"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-hopscotch.css",
    "chars": 1908,
    "preview": "@import url(https://fonts.googleapis.com/css?family=Fira+Mono);\n/*\n * Hopscotch\n * by Jan T. Sott\n * https://github.com/"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-material-dark.css",
    "chars": 2497,
    "preview": "code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-b"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-material-light.css",
    "chars": 2535,
    "preview": "code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-b"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-material-oceanic.css",
    "chars": 2556,
    "preview": "code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-b"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-pojoaque.css",
    "chars": 3826,
    "preview": "/*\n * Pojoaque Style by Jason Tate\n * http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlig"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-shades-of-purple.css",
    "chars": 3352,
    "preview": "/**\n * Shades of Purple Theme for Prism.js\n *\n * @author Ahmad Awais <https://twitter.com/MrAhmadAwais/>\n * @support Fol"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-synthwave84.css",
    "chars": 2454,
    "preview": "/*\n * Synthwave '84 Theme originally by Robb Owen [@Robb0wen] for Visual Studio Code\n * Demo: https://marc.dev/demo/pris"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-vs.css",
    "chars": 2989,
    "preview": "/**\n * VS theme by Andrew Lock (https://andrewlock.net)\n * Inspired by Visual Studio syntax coloring\n */\n\ncode[class*=\"l"
  },
  {
    "path": "fa/gitbook/gitbook-plugin-prism/prism-xonokai.css",
    "chars": 3207,
    "preview": "/**\n* xonokai theme for JavaScript, CSS and HTML\n* based on: https://github.com/MoOx/sass-prism-theme-base by Maxime Thi"
  },
  {
    "path": "fa/gitbook/gitbook.js",
    "chars": 105399,
    "preview": "!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u=\"function\"==typeof require&&require;if(!a&&u)return u(s,!0)"
  },
  {
    "path": "fa/gitbook/style.css",
    "chars": 52701,
    "preview": "/*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup"
  },
  {
    "path": "fa/gitbook/theme.js",
    "chars": 113262,
    "preview": "!function e(t,n,r){function o(a,s){if(!n[a]){if(!t[a]){var u=\"function\"==typeof require&&require;if(!s&&u)return u(a,!0)"
  },
  {
    "path": "fa/index.html",
    "chars": 29036,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" >\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; charset=u"
  },
  {
    "path": "fa/styles/website.css",
    "chars": 787,
    "preview": ".book-summary {\n  font-family: \"Noto Sans CJK SC\", \"PingFang SC\", \"Microsoft Yahei\", \"Hiragino Sans GB\", sans-serif;\n  f"
  },
  {
    "path": "fa/ui_client/README.md",
    "chars": 337,
    "preview": "---\nrefcn: ui_client/index\nrefen: ui_client/index\n---\n# مشتریان پروژه V\n\nعلاوه بر هسته V2ray، پروژه V شامل انواع مختلفی "
  },
  {
    "path": "fa/ui_client/android.md",
    "chars": 1399,
    "preview": "---\nrefcn: ui_client/android\nrefen: ui_client/android\n---\n# مشتری Android\n\n## BifrostV\n\nBifrostV یک برنامه آندروید بر اس"
  },
  {
    "path": "fa/ui_client/ios.md",
    "chars": 1631,
    "preview": "---\nrefcn: ui_client/ios\nrefen: ui_client/ios\n---\n# مشتری iOS\n\n## Kitsunebi\n\nKitsunebi یک برنامه iOS مبتنی بر V2Ray است."
  },
  {
    "path": "fa/ui_client/osx.md",
    "chars": 661,
    "preview": "---\nrefcn: ui_client/osx\nrefen: ui_client/osx\n---\n# Mac OS X\n\n## V2RayX\n\n* دانلود: [Github](https://github.com/Cenmrev/V"
  },
  {
    "path": "fa/ui_client/service.md",
    "chars": 1995,
    "preview": "---\nrefcn: ui_client/service\nrefen: ui_client/service\n---\n# خدمات آنلاین\n\nThe following online services may help you bet"
  },
  {
    "path": "fa/ui_client/windows.md",
    "chars": 559,
    "preview": "---\nrefcn: ui_client/windows\nrefen: ui_client/windows\n---\n# پنجره ها\n\n## V2RayW\n\n* دانلود: [Github](https://github.com/C"
  },
  {
    "path": "fa/welcome/command.html",
    "chars": 29976,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/welcome/donate.html",
    "chars": 26215,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/welcome/faq.html",
    "chars": 30425,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/welcome/help.html",
    "chars": 37686,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/welcome/install.html",
    "chars": 36200,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/welcome/license.md",
    "chars": 1264,
    "preview": "---\nrefcn: chapter_00/license\nrefen: welcome/license\n---\n# License\n\nProject V uses the following license.\n\n## V2Ray\n\nSou"
  },
  {
    "path": "fa/welcome/pgp.md",
    "chars": 3784,
    "preview": "---\nrefcn: chapter_00/pgp\nrefen: welcome/pgp\n---\n# Private Communication\n\nPlease send a message to one of the address be"
  },
  {
    "path": "fa/welcome/start.html",
    "chars": 36210,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  },
  {
    "path": "fa/welcome/tg.md",
    "chars": 2269,
    "preview": "---\nrefcn: chapter_00/tg\nrefen: welcome/tg\n---\n# Telegram Group\n\nProject V provides the following groups for different t"
  },
  {
    "path": "fa/welcome/versions.html",
    "chars": 52021,
    "preview": "\n<!DOCTYPE HTML>\n<html lang=\"fa\" dir=\"rtl\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta content=\"text/html; "
  }
]

// ... and 276 more files (download for full content)

About this extraction

This page contains the full source code of the v2ray/v2ray.github.io GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 476 files (9.3 MB), approximately 2.5M tokens, and a symbol index with 1530 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!