Break connection on iq error

[?]
Mar 8, 2019, 8:51 PM
FCPF2FV6SMQEZPLLJP3HIKFCR3CTGUOWPTF6DOHIEJ5EB3CQRZ6QC

Dependencies

  • [2] 5GINRCKL Send ping XEP-0199
  • [3] RGOSS73U Convert self-presence to xmpp_parser's type
  • [4] 5OBTKGDL Update deps
  • [5] QWE26TMV update deps
  • [6] 5IKA4GO7 Rename xmpp client field from "inner" to "client"
  • [7] IK3YDPTY Update deps
  • [8] 6E5IC33Z Try to test 2018 edition
  • [9] 2VZBEEXA Messages fixed
  • [10] FV6BJ5K6 Send self-presence and store account info in Rc so it willbe used in some future in parallel
  • [11] FVVPKFTL Initial commit
  • [12] EOHEZXX3 Move request processing to structure
  • [13] VW7NVWAG Leave MUC properly
  • [14] 5Y6YJ6UH Add shutdown function to make actions before offline
  • [15] HU3NZX5Z Process self-presence via new processing code
  • [16] CBWCXUZZ Prepare adding new items to roster
  • [17] AYQZ2UIA Update deps
  • [18] L3D22A5J Prepare to check incoming presence
  • [19] WBU7UOQW Read chatroom from config
  • [20] NDDQQP2P Update deps
  • [21] YZVEEOYT Update dependencies
  • [22] ZI4GJ72V Add message to xmpp command
  • [23] 5A5UVGNM Move receiver closing logic out of xmpp processing
  • [24] AA2ZWGRL Enter to MUC
  • [25] HKSQO7JZ Enable hyper http server and configuration
  • [26] ACXUIS63 Update dependecies
  • [27] QYY3KRGL Use failure instead Box<dyn Error>
  • [28] OGMBXBKP Move online to XmppConnection
  • [29] SYH7UQP6 Make xmpp command enum to allow different commands Save subscription ask status. Don't ask if already requested subscription.
  • [30] 37OMJ4CK Send MUC message
  • [31] X6L47BHQ Use different structure for established xmpp connection
  • [32] MAC6WCSX Fix pipelines
  • [33] V5HDBSZM Use jid for receiver address
  • [34] VS6AHRWI Move XMPP to separate dir
  • [35] J7VX56FW ToDo
  • [36] OB3HA2MD Use Client::new_with_jid to parse jid only once
  • [37] DISBBP3I Update dependencies

Change contents

  • edit in src/xmpp/stanzas.rs at line 4
    [3.57][2.0:30]()
    use xmpp_parsers::ping::Ping;
  • edit in src/xmpp/stanzas.rs at line 60
    [3.929][3.929:931](),[3.931][3.0:254]()
    }
    pub fn make_muc_message(to: xmpp_parsers::Jid, text: String) -> Element {
    let mut message = Message::new(Some(to.into_bare_jid()));
    message.bodies.insert(String::new(), Body(text));
    message.type_ = MessageType::Groupchat;
    message.into()
  • edit in src/xmpp/stanzas.rs at line 61
    [2.33][2.33:510](),[2.510][3.254:256](),[3.254][3.254:256]()
    pub fn make_muc_presence_leave(from: xmpp_parsers::Jid, to: xmpp_parsers::Jid) -> Element {
    let mut presence = Presence::new(PresenceType::Unavailable);
    presence.from = Some(from);
    presence.to = Some(to);
    presence.into()
    }
    pub fn make_ping(id: &str, from: xmpp_parsers::Jid) -> Element {
    let mut ping = Iq::from_get(Ping);
    ping.id = Some(id.to_string());
    ping.to = Some(from.clone().into_domain_jid());
    ping.from = Some(from);
    ping.into()
    }
  • edit in src/xmpp/mod.rs at line 30
    [3.378][3.257:329]()
    /// muc id to muc jid
    mucs: HashMap<String, xmpp_parsers::Jid>,
  • replacement in src/xmpp/mod.rs at line 185
    [3.6026][3.6026:6271](),[3.6026][3.6026:6271](),[3.6026][3.6026:6271](),[3.6026][3.6026:6271](),[3.6271][3.4114:4435](),[3.4435][3.1018:1071](),[3.1071][3.5885:5926](),[3.5885][3.5885:5926](),[3.5926][3.8083:8153](),[3.5586][3.8083:8153](),[3.820][3.8083:8153](),[3.2740][3.8083:8153](),[3.8083][3.8083:8153](),[3.8153][3.5927:6068](),[3.6068][3.1072:1161]()
    if let xmpp_parsers::iq::IqType::Set(element) = iq.payload {
    if let Some(roster) =
    element.try_into().ok() as Option<xmpp_parsers::roster::Roster>
    {
    for i in roster.items {
    if let Some(ref mut rdata) = self.state.data.roster.get_mut(&i.jid)
    {
    info!("Update {} in roster", i.jid);
    rdata.0 = i.subscription;
    rdata.1 = i.ask;
    } else {
    info!("Add {} to roster", i.jid);
    self.state
    .data
    .roster
    .insert(i.jid.clone(), (i.subscription, i.ask));
    [3.6026]
    [3.6150]
    match iq.payload {
    xmpp_parsers::iq::IqType::Set(element) => {
    if let Some(roster) =
    element.try_into().ok() as Option<xmpp_parsers::roster::Roster>
    {
    for i in roster.items {
    if let Some(ref mut rdata) =
    self.state.data.roster.get_mut(&i.jid)
    {
    info!("Update {} in roster", i.jid);
    rdata.0 = i.subscription;
    rdata.1 = i.ask;
    } else {
    info!("Add {} to roster", i.jid);
    self.state
    .data
    .roster
    .insert(i.jid.clone(), (i.subscription, i.ask));
    }
    self.process_jid(&i.jid);
  • edit in src/xmpp/mod.rs at line 206
    [3.6184][3.1162:1220]()
    self.process_jid(&i.jid);
  • edit in src/xmpp/mod.rs at line 208
    [3.8466]
    [3.8466]
    xmpp_parsers::iq::IqType::Error(e) => {
    error!("iq error: {:?}", e);
    return false;
    }
    _ => (), // ignore
  • edit in src/xmpp/mod.rs at line 610
    [3.12358][3.330:755](),[3.755][2.511:831]()
    XmppCommand::Chatroom { muc_id, message } => {
    if let Some(muc) = self.state.data.mucs.get(&muc_id) {
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_muc_message(muc.clone(), message));
    } else {
    error!("Not found MUC {}", muc_id);
    }
    }
    XmppCommand::Ping => {
    self.state.data.counter += 1;
    let id_ping = format!("id_ping{}", self.state.data.counter);
    let ping = stanzas::make_ping(&id_ping, self.state.client.jid.clone());
    self.state.data.send_queue.push_back(ping);
    }
  • edit in src/xmpp/mod.rs at line 611
    [3.23196][2.832:1823]()
    }
    fn shutdown(self) -> impl Future<Item = (), Error = failure::Error> {
    info!("Shutdown connection");
    let XmppConnection { account, state } = self;
    stream::iter_ok(
    state
    .data
    .mucs
    .values()
    .map(std::clone::Clone::clone)
    .collect::<Vec<_>>(),
    )
    .fold(state, move |XmppState { client, data }, muc_jid| {
    let muc_presence =
    stanzas::make_muc_presence_leave(account.jid.clone(), muc_jid.clone());
    info!("Sending muc leave presence... {:?}", muc_presence);
    use tokio::prelude::Sink;
    client
    .send(Packet::Stanza(muc_presence))
    .map_err(|e| {
    error!("Error on send muc presence: {}", e);
    e
    })
    .and_then(|client| future::ok(XmppState { client, data }))
    })
    .map(|_| ())
  • replacement in src/xmpp/mod.rs at line 626
    [3.12737][3.756:1199]()
    stream::iter_ok(account.chatrooms.clone())
    .fold(state, move |XmppState { client, mut data }, muc_jid| {
    data.counter += 1;
    let id_muc_presence = format!("id_muc_presence{}", data.counter);
    let muc_presence = stanzas::make_muc_presence(
    &id_muc_presence,
    account2.jid.clone(),
    muc_jid.1.clone(),
    );
    [3.12737]
    [3.13233]
    stream::iter_ok(
    account
    .chatrooms
    .values()
    .map(std::clone::Clone::clone)
    .collect::<Vec<_>>(),
    )
    .fold(state, move |XmppState { client, mut data }, muc_jid| {
    data.counter += 1;
    let id_muc_presence = format!("id_muc_presence{}", data.counter);
    let muc_presence =
    stanzas::make_muc_presence(&id_muc_presence, account2.jid.clone(), muc_jid);
  • replacement in src/xmpp/mod.rs at line 639
    [3.13234][3.1200:1269]()
    info!("Sending muc presence... {:?}", muc_presence);
    [3.13234]
    [3.13299]
    info!("Sending muc presence... {:?}", muc_presence);
  • replacement in src/xmpp/mod.rs at line 641
    [3.13300][3.1270:1319]()
    let account4 = account2.clone();
    [3.13300]
    [3.13345]
    let account4 = account2.clone();
  • replacement in src/xmpp/mod.rs at line 643
    [3.13346][3.1320:1922]()
    use tokio::prelude::Sink;
    client
    .send(Packet::Stanza(muc_presence))
    .map_err(|e| {
    error!("Error on send muc presence: {}", e);
    account4
    })
    .and_then(|client| {
    data.mucs.insert(muc_jid.0, muc_jid.1);
    future::ok(XmppState { client, data })
    })
    })
    .map(|state| XmppConnection {
    account: account3,
    state,
    })
    [3.13346]
    [3.12130]
    use tokio::prelude::Sink;
    client
    .send(Packet::Stanza(muc_presence))
    .map_err(|e| {
    error!("Error on send muc presence: {}", e);
    account4
    })
    .and_then(|client| future::ok(XmppState { client, data }))
    })
    .map(|state| XmppConnection {
    account: account3,
    state,
    })
  • edit in src/xmpp/mod.rs at line 665
    [3.4005][3.1923:1994](),[3.1994][2.1824:1834]()
    Chatroom {
    muc_id: String,
    message: String,
    },
    Ping,
  • replacement in src/xmpp/mod.rs at line 714
    [3.24278][2.1835:1979]()
    error!("Command receiver is gone");
    future::ok(future::Loop::Break(Some(conn)))
    [3.24278]
    [3.24363]
    future::err(format_err!("Command receiver is gone"))
  • replacement in src/xmpp/mod.rs at line 727
    [3.24895][2.1980:2056]()
    future::ok(future::Loop::Break(Some(conn)))
    [3.24895]
    [3.24963]
    future::ok(future::Loop::Break(()))
  • edit in src/xmpp/mod.rs at line 729
    [3.24993][3.24993:25019](),[3.24993][3.24993:25019](),[3.24993][3.24993:25019](),[3.24993][3.24993:25019](),[3.24993][3.24993:25019](),[3.24993][3.24993:25019](),[3.25019][2.2057:2231]()
    }
    Err(_) => {
    error!("Command receiver is broken");
    future::ok(future::Loop::Break(Some(conn)))
  • edit in src/xmpp/mod.rs at line 730
    [2.2257]
    [3.25109]
    Err(_) => future::err(format_err!("Command receiver is broken")),
  • replacement in src/xmpp/mod.rs at line 753
    [3.26249][2.2258:2328]()
    future::ok(future::Loop::Break(None))
    [3.26249]
    [3.26317]
    future::ok(future::Loop::Break(()))
  • edit in src/xmpp/mod.rs at line 760
    [3.26491][3.6444:6451](),[3.6444][3.6444:6451](),[3.6451][2.2329:2538]()
    })
    .and_then(|opt_conn| {
    if let Some(conn) = opt_conn {
    Box::new(conn.shutdown()) as Box<dyn Future<Item = (), Error = _>>
    } else {
    Box::new(future::ok(()))
    }
  • edit in src/main.rs at line 37
    [3.4337][3.13949:13950](),[3.13950][3.1995:2109](),[3.2109][3.315:358](),[3.358][3.2140:2314](),[3.2140][3.2140:2314]()
    fn body_to_string(req: Request<Body>) -> impl Future<Item = String, Error = failure::Error> {
    req.into_body()
    .map_err(std::convert::Into::into)
    .fold(String::new(), |mut acc, ch| {
    std::str::from_utf8(&*ch).map(|s| {
    acc.push_str(s);
    acc
    })
    })
    }
  • replacement in src/main.rs at line 55
    [3.14630][3.359:414](),[3.414][2.2546:2646]()
    .map_err(std::convert::Into::into)
    .and_then(|s| std::str::FromStr::from_str(s).map_err(std::convert::Into::into))
    [3.14630]
    [3.14867]
    .map_err(|e| e.into())
    .and_then(|s| {
    std::str::FromStr::from_str(s)
    .map_err(|e: xmpp_parsers::JidParseError| e.into())
    })
  • edit in src/main.rs at line 62
    [3.14893][3.14893:14894](),[3.14893][3.14893:14894](),[3.14894][3.2316:2401](),[3.2401][3.479:551]()
    let xmpp_muc_opt = req
    .headers()
    .get("X-XMPP-Muc")
    .map(|h| h.to_str().map(std::string::ToString::to_string));
  • replacement in src/main.rs at line 63
    [3.2459][3.2459:2537](),[3.2459][3.2459:2537]()
    match (xmpp_muc_opt, xmpp_to_res) {
    (None, Err(err)) => {
    [3.2459]
    [3.14948]
    match xmpp_to_res {
    Err(err) => {
  • replacement in src/main.rs at line 70
    [3.15247][3.552:612]()
    .map_err(std::convert::Into::into),
    [3.15247]
    [3.15295]
    .map_err(|e| e.into()),
  • replacement in src/main.rs at line 73
    [3.15385][3.2538:2575]()
    (None, Ok(xmpp_to)) => {
    [3.15385]
    [3.15414]
    Ok(xmpp_to) => {
  • replacement in src/main.rs at line 76
    [3.15523][3.2576:3856](),[3.3856][3.613:681](),[3.681][3.3912:4267](),[3.3912][3.3912:4267](),[3.4267][3.682:750](),[3.750][3.4323:4534](),[3.4323][3.4323:4534](),[3.4534][3.18122:18136](),[3.18122][3.18122:18136](),[3.18136][3.4535:5970](),[3.5970][3.751:819](),[3.819][3.6026:6381](),[3.6026][3.6026:6381](),[3.6381][3.820:888](),[3.888][3.6437:7006](),[3.6437][3.6437:7006](),[3.7006][3.889:949](),[3.949][3.7054:7130](),[3.7054][3.7054:7130]()
    Box::new(body_to_string(req).and_then(move |message: String| {
    if !message.is_empty() {
    Box::new(
    cmd_send
    .clone()
    .send(XmppCommand::Chat { xmpp_to, message })
    .then(|r| match r {
    Ok(_) => tokio::prelude::future::ok(Response::new(Body::from(
    "Accepted",
    ))),
    Err(e) => {
    error!("Command sent error: {}", e);
    tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from(format!(
    "Command sent error: {}",
    e
    ))),
    )
    }
    })
    .map_err(std::convert::Into::into),
    )
    } else {
    warn!("Empty message");
    Box::new(tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from("Empty message"))
    .map_err(std::convert::Into::into),
    ))
    as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    })) as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    (Some(Ok(muc_id)), _) => {
    info!("Got MUC request. Reading body...");
    let cmd_send = self.cmd_send.clone();
    Box::new(body_to_string(req).and_then(move |message: String| {
    if !message.is_empty() {
    Box::new(
    cmd_send
    .clone()
    .send(XmppCommand::Chatroom { muc_id, message })
    .then(|r| match r {
    Ok(_) => tokio::prelude::future::ok(Response::new(Body::from(
    "Accepted",
    ))),
    Err(e) => {
    error!("Command sent error: {}", e);
    tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from(format!(
    "Command sent error: {}",
    e
    ))),
    )
    }
    })
    .map_err(std::convert::Into::into),
    )
    } else {
    warn!("Empty message");
    Box::new(tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from("Empty message"))
    .map_err(std::convert::Into::into),
    ))
    as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    })) as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    (Some(Err(err)), _) => {
    warn!("Unknown MUC destination: {}", err);
    Box::new(tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from(format!("Unknown MUC destination: {}", err)))
    .map_err(std::convert::Into::into),
    )) as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    [3.15523]
    [3.7130]
    Box::new(
    req.into_body()
    .map_err(|e| e.into())
    .fold(String::new(), |mut acc, ch| {
    std::str::from_utf8(&*ch).map(|s| {
    acc.push_str(s);
    acc
    })
    })
    .and_then(move |message: String| {
    if !message.is_empty() {
    Box::new(
    cmd_send
    .clone()
    .send(XmppCommand::Chat { xmpp_to, message })
    .then(|r| match r {
    Ok(_) => tokio::prelude::future::ok(Response::new(
    Body::from("Accepted"),
    )),
    Err(e) => {
    error!("Command sent error: {}", e);
    tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from(format!(
    "Command sent error: {}",
    e
    ))),
    )
    }
    })
    .map_err(|e| e.into()),
    )
    } else {
    warn!("Empty message");
    Box::new(tokio::prelude::future::result(
    Response::builder()
    .status(hyper::StatusCode::BAD_REQUEST)
    .body(Body::from("Empty message"))
    .map_err(|e| e.into()),
    ))
    as Box<dyn Future<Item = _, Error = _> + Send + 'static>
    }
    }),
    ) as Box<dyn Future<Item = _, Error = _> + Send + 'static>
  • replacement in src/main.rs at line 178
    [3.5155][2.2647:2730]()
    .serve(MakeServiceCmd {
    cmd_send: cmd_send.clone(),
    })
    [3.5155]
    [3.5935]
    .serve(MakeServiceCmd { cmd_send })
  • edit in src/main.rs at line 184
    [3.6049][2.2731:3543]()
    if let Some(ping) = config.account.ping {
    let ping = tokio::timer::Interval::new_interval(std::time::Duration::from_secs(ping));
    rt.spawn(
    ping.map_err(|e| {
    error!("Ping error: {}", e);
    })
    .for_each(move |_| {
    cmd_send
    .clone()
    .send(XmppCommand::Ping)
    .map_err(|e| {
    error!("Ping command error: {}", e);
    })
    .map(|_| ())
    })
    .select(
    ctrl_c
    .clone()
    .map(|_| ())
    .map_err(|e| error!("ping server error: {}", e)),
    )
    .map(|_| ())
    .map_err(|_| ()),
    );
    }
  • edit in src/config.rs at line 0
    [3.1396][2.3544:3575]()
    use std::collections::HashMap;
  • edit in src/config.rs at line 9
    [3.1549][2.3576:3722]()
    #[serde(default, deserialize_with = "deserialize_jid_map")]
    pub chatrooms: HashMap<String, xmpp_parsers::Jid>,
    pub ping: Option<u64>,
  • edit in src/config.rs at line 35
    [3.19119][2.3723:4472]()
    }
    fn deserialize_jid_map<'de, D>(
    deserializer: D,
    ) -> Result<HashMap<String, xmpp_parsers::Jid>, D::Error>
    where
    D: serde::Deserializer<'de>,
    {
    use serde::Deserialize;
    let s = HashMap::<String, String>::deserialize(deserializer)?;
    let size = s.len();
    s.into_iter()
    .map(|(k, v)| (k, std::str::FromStr::from_str(&v)))
    .take_while(|(_k, r)| r.is_ok())
    .fold(Ok(HashMap::with_capacity(size)), |res, (k, r)| match res {
    Ok(mut res) => match r {
    Ok(v) => {
    res.insert(k, v);
    Ok(res)
    }
    Err(e) => Err(e),
    },
    Err(e) => Err(e),
    })
    .map_err(serde::de::Error::custom)
  • edit in README.md at line 0
    [3.76][3.7421:7646]()
    ### XMPP client daemon
    #### Sending messages
    ```
    curl http://localhost:8083/ -H "X-XMPP-To: some@domain.org" -d "Test"
    ```
    #### Sending messages to MUC
    ```
    curl http://localhost:8083/ -H "X-XMPP-Muc: smac" -d "Test"
    ```
  • edit in Cargo.lock at line 0
    [3.12201][3.950:1041]()
    # This file is automatically @generated by Cargo.
    # It is not intended for manual editing.
  • replacement in Cargo.lock at line 5
    [3.19377][2.4473:4545]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.19377]
    [3.19449]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 10
    [3.6577][3.1115:1134]()
    version = "0.6.10"
    [3.6577]
    [3.6595]
    version = "0.6.9"
  • replacement in Cargo.lock at line 13
    [3.6677][3.1135:1208]()
    "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.6677]
    [3.6750]
    "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 42
    [3.8093][2.4546:4618]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.8093]
    [3.8165]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 54
    [3.9017][3.1282:1301]()
    version = "0.3.14"
    [3.9017]
    [3.9035]
    version = "0.3.13"
  • replacement in Cargo.lock at line 60
    [2.4692][2.4692:4764]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.4692]
    [3.19935]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 70
    [3.9636][3.1448:1518](),[3.1518][2.4765:4837]()
    "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.9636]
    [3.9778]
    "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 100
    [3.10568][3.1591:1609]()
    version = "0.7.0"
    [3.10568]
    [3.15479]
    version = "0.7.2"
  • replacement in Cargo.lock at line 143
    [3.11467][3.1630:1649]()
    version = "1.0.30"
    [3.11467]
    [3.11486]
    version = "1.0.29"
  • replacement in Cargo.lock at line 189
    [3.13233][2.4877:4949]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.13233]
    [3.13305]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 197
    [3.16505][2.4950:5022]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.16505]
    [3.21506]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
    name = "crossbeam"
    version = "0.6.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
    name = "crossbeam-channel"
    version = "0.3.8"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 226
    [3.13561][3.1815:1833]()
    version = "0.7.1"
    [3.13561]
    [3.13579]
    version = "0.6.3"
  • replacement in Cargo.lock at line 241
    [3.22936][3.1908:1986]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.22936]
    [3.14273]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 244
    [3.14426][3.1987:2209]()
    ]
    [[package]]
    name = "crossbeam-queue"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 252
    [2.5170][3.2283:2361](),[3.2283][3.2283:2361]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.5170]
    [3.7874]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 284
    [3.15825][3.2362:2381]()
    version = "0.8.17"
    [3.15825]
    [3.15844]
    version = "0.8.15"
  • replacement in Cargo.lock at line 298
    [3.8250][3.2475:2547]()
    "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.8250]
    [3.8322]
    "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 307
    [3.16849][3.2548:2625]()
    "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.16849]
    [3.16925]
    "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 315
    [3.17057][3.2626:2703]()
    "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.17057]
    [3.23577]
    "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 326
    [3.23830][2.5264:5336]()
    "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.23830]
    [3.8623]
    "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 378
    [3.18854][3.2777:2865]()
    "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.18854]
    [3.18942]
    "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 392
    [3.19271][3.2866:2942]()
    "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.19271]
    [3.19346]
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 412
    [3.19981][3.3017:3089]()
    "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.19981]
    [3.20053]
    "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 417
    [3.24433][3.3090:3166]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.24433]
    [3.24509]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 434
    [3.20551][2.5411:5483]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.20551]
    [3.20623]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 440
    [3.20726][3.3240:3259]()
    version = "0.1.16"
    [3.20726]
    [3.20745]
    version = "0.1.15"
  • replacement in Cargo.lock at line 463
    [3.21397][3.3334:3354]()
    version = "0.12.25"
    [3.21397]
    [3.21417]
    version = "0.12.23"
  • replacement in Cargo.lock at line 470
    [3.24973][3.3429:3501]()
    "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.24973]
    [3.21871]
    "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 476
    [3.22231][3.3502:3582]()
    "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 477
    [3.25118][3.3583:3656]()
    "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.25118]
    [3.25191]
    "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 479
    [3.25272][3.3657:3813]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.25272]
    [3.25428]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 482
    [3.25504][3.3814:3898]()
    "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.25504]
    [3.25588]
    "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 507
    [3.23535][2.5632:5704]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.23535]
    [3.23607]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 554
    [3.25092][3.3972:3990]()
    version = "1.3.0"
    [3.25092]
    [3.25110]
    version = "1.2.0"
  • replacement in Cargo.lock at line 564
    [3.25316][2.5705:5724]()
    version = "0.2.49"
    [3.25316]
    [3.25335]
    version = "0.2.48"
  • replacement in Cargo.lock at line 609
    [3.26269][3.4085:4316]()
    "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.26269]
    [3.26849]
    "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 624
    [3.27233][3.4317:4335]()
    version = "2.2.0"
    [3.27233]
    [3.27251]
    version = "2.1.3"
  • edit in Cargo.lock at line 626
    [3.27316]
    [3.27560]
    dependencies = [
    "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
  • replacement in Cargo.lock at line 643
    [3.26843][3.4336:4413]()
    "quick-xml 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.26843]
    [3.28037]
    "quick-xml 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 656
    [3.10535][2.5799:5871]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.10535]
    [3.10607]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 670
    [3.29191][2.5872:5944]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.29191]
    [3.29263]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 690
    [3.29899][3.4560:4638](),[3.4638][2.5945:6017]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.29899]
    [3.10901]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 693
    [3.10971][3.4711:4787]()
    "openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.10971]
    [3.30195]
    "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 695
    [3.30275][3.4788:4943]()
    "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)",
    "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.30275]
    [3.27369]
    "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)",
    "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 699
    [3.27543][3.4944:5019]()
    "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.27543]
    [3.30679]
    "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 708
    [2.6091][2.6091:6163]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.6091]
    [3.30954]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 714
    [3.31073][3.5166:5184]()
    version = "1.0.3"
    [3.31073]
    [3.31091]
    version = "1.0.1"
  • edit in Cargo.lock at line 716
    [3.31156]
    [3.31253]
    dependencies = [
    "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
  • replacement in Cargo.lock at line 740
    [3.31727][3.5185:5204]()
    version = "1.10.0"
    [3.31727]
    [3.31745]
    version = "1.9.0"
  • replacement in Cargo.lock at line 743
    [3.31827][2.6164:6236]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.31827]
    [3.31899]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 753
    [3.31931][3.5278:5298]()
    version = "0.10.19"
    [3.31931]
    [3.31951]
    version = "0.10.16"
  • replacement in Cargo.lock at line 759
    [3.32261][3.5373:5451](),[3.5451][2.6311:6383](),[2.6383][3.5523:5602](),[3.5523][3.5523:5602]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.32261]
    [3.32490]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
    "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 771
    [3.32645][3.5603:5622]()
    version = "0.9.42"
    [3.32645]
    [3.32664]
    version = "0.9.40"
  • replacement in Cargo.lock at line 774
    [3.32746][3.5623:5693](),[3.5693][2.6384:6456]()
    "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.32746]
    [3.32888]
    "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)",
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 777
    [3.32966][3.5766:5846]()
    "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 802
    [3.33693][2.6457:6529]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.33693]
    [3.28433]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 805
    [3.33916][3.5920:5995]()
    "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.33916]
    [3.33991]
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 882
    [3.35794][3.5996:6015]()
    version = "0.13.3"
    [3.35794]
    [3.35813]
    version = "0.13.2"
  • replacement in Cargo.lock at line 885
    [3.35895][3.6016:6095]()
    "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.35895]
    [3.29454]
    "encoding_rs 0.8.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 888
    [3.11852][3.6096:6169]()
    "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.11852]
    [3.36191]
    "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 911
    [3.29802][2.6530:6602]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.29802]
    [3.29874]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 922
    [3.30044][2.6603:6675]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.30044]
    [3.30116]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 929
    [2.6750][3.6390:6465](),[3.6390][3.6390:6465]()
    "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.6750]
    [3.30424]
    "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 977
    [3.31079][2.6751:6823]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.31079]
    [3.31151]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 989
    [3.31587][2.6843:6915]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.31587]
    [3.31659]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 997
    [3.13875][3.6631:6649]()
    version = "0.1.2"
    [3.13875]
    [3.13893]
    version = "0.1.1"
  • replacement in Cargo.lock at line 1000
    [3.13975][3.6650:6800]()
    "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.13975]
    [3.14131]
    "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1035
    [3.14574][3.6801:6819]()
    version = "1.1.2"
    [3.14574]
    [3.14592]
    version = "1.1.0"
  • replacement in Cargo.lock at line 1038
    [3.14674][3.6820:6973]()
    "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
    "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.14674]
    [3.32456]
    "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
    "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1103
    [3.42306][3.7049:7068]()
    version = "0.1.15"
    [3.42306]
    [3.42325]
    version = "0.1.14"
  • replacement in Cargo.lock at line 1106
    [3.42407][3.7069:7147]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.42407]
    [3.42485]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1122
    [3.42985][2.6991:7063]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.42985]
    [3.33140]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1133
    [3.43379][2.7064:7136]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.43379]
    [3.43451]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1156
    [3.33476][3.7372:7446]()
    "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.33476]
    [3.15663]
    "hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1159
    [3.33626][3.7447:7673]()
    "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.33626]
    [3.15881]
    "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)",
    "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1172
    [3.44917][3.7674:7693]()
    version = "1.0.89"
    [3.44917]
    [3.44936]
    version = "1.0.87"
  • replacement in Cargo.lock at line 1177
    [3.45036][3.7694:7713]()
    version = "1.0.89"
    [3.45036]
    [3.45055]
    version = "1.0.87"
  • replacement in Cargo.lock at line 1182
    [3.34279][2.7215:7287]()
    "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.34279]
    [3.45361]
    "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1187
    [3.45396][3.7787:7806]()
    version = "1.0.39"
    [3.45396]
    [3.45415]
    version = "1.0.38"
  • replacement in Cargo.lock at line 1192
    [3.16584][3.7807:7880]()
    "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.16584]
    [3.45711]
    "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1200
    [3.45841][3.7881:7960]()
    "block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.45841]
    [3.34544]
    "block-buffer 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1211
    [3.46275][3.7961:8040]()
    "block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.46275]
    [3.34796]
    "block-buffer 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1222
    [3.46709][3.8041:8120]()
    "block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.46709]
    [3.35048]
    "block-buffer 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1231
    [3.47047][3.8121:8139]()
    version = "0.1.8"
    [3.47047]
    [3.47065]
    version = "0.1.7"
  • replacement in Cargo.lock at line 1235
    [3.35373][2.7288:7360]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.35373]
    [3.47294]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1250
    [3.47552][3.8213:8231]()
    version = "0.6.9"
    [3.47552]
    [3.47570]
    version = "0.6.8"
  • edit in Cargo.lock at line 1252
    [3.47635]
    [3.47732]
    dependencies = [
    "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
  • replacement in Cargo.lock at line 1262
    [2.7434][2.7434:7506]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.7434]
    [3.35556]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1282
    [3.48534][3.8378:8544]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.48534]
    [3.35657]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1286
    [3.48861][3.8545:8618]()
    "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.48861]
    [3.48934]
    "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1330
    [3.50268][2.7507:7527]()
    version = "0.15.27"
    [3.50268]
    [3.50288]
    version = "0.15.26"
  • replacement in Cargo.lock at line 1353
    [3.36561][2.7528:7600]()
    "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.36561]
    [3.51171]
    "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1359
    [3.51282][3.8713:8731]()
    version = "3.0.7"
    [3.51282]
    [3.51300]
    version = "3.0.6"
  • replacement in Cargo.lock at line 1363
    [2.7674][2.7674:7746]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [2.7674]
    [3.36725]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1393
    [3.52519][2.7747:7819]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.52519]
    [3.37042]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1411
    [3.18340][3.8951:9029]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.18340]
    [3.52966]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1419
    [3.53311][2.7820:7892]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.53311]
    [3.37216]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1426
    [3.53567][3.9103:9122]()
    version = "0.1.16"
    [3.53567]
    [3.53586]
    version = "0.1.15"
  • replacement in Cargo.lock at line 1432
    [3.53887][3.9197:9273]()
    "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.53887]
    [3.53962]
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1434
    [3.54040][3.9274:9361]()
    "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.54040]
    [3.37394]
    "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1436
    [3.37475][3.9362:9670]()
    "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.37475]
    [3.37783]
    "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1441
    [3.37859][3.9671:9755]()
    "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.37859]
    [3.37943]
    "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1462
    [3.55308][3.9830:9906]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.55308]
    [3.55384]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1467
    [3.55429][3.9907:9925]()
    version = "0.1.5"
    [3.55429]
    [3.55447]
    version = "0.1.4"
  • replacement in Cargo.lock at line 1485
    [3.55932][3.9926:9944]()
    version = "0.1.6"
    [3.55932]
    [3.55950]
    version = "0.1.5"
  • replacement in Cargo.lock at line 1489
    [3.56107][3.9945:10105]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.56107]
    [3.56266]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1495
    [3.56299][3.10106:10125]()
    version = "0.1.12"
    [3.56299]
    [3.56318]
    version = "0.1.11"
  • replacement in Cargo.lock at line 1505
    [3.56656][3.10200:10218]()
    version = "0.1.9"
    [3.56656]
    [3.56674]
    version = "0.1.8"
  • replacement in Cargo.lock at line 1510
    [3.56913][3.10219:10297]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.56913]
    [3.19941]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1513
    [3.57132][3.10298:10374]()
    "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.57132]
    [3.38738]
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1517
    [3.38968][3.10375:10528]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.38968]
    [3.57513]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1526
    [3.57725][2.8115:8187]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.57725]
    [3.57797]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1529
    [3.57942][3.10602:10680]()
    "signal-hook 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.57942]
    [3.39196]
    "signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1531
    [3.39277][3.10681:10837]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.39277]
    [3.58257]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1538
    [3.39469][3.10838:10856]()
    version = "0.1.3"
    [3.39469]
    [3.39487]
    version = "0.1.1"
  • edit in Cargo.lock at line 1541
    [3.39569][3.10857:10927]()
    "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1553
    [3.58755][3.11002:11158]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.58755]
    [3.58911]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1559
    [3.58952][3.11159:11178]()
    version = "0.1.12"
    [3.58952]
    [3.58970]
    version = "0.1.11"
  • replacement in Cargo.lock at line 1562
    [3.59052][3.11179:11343]()
    "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.59052]
    [3.40083]
    "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
    "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1568
    [3.20673][3.11344:11420]()
    "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.20673]
    [3.40241]
    "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1592
    [3.60319][3.11421:11497]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.60319]
    [3.60395]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1605
    [3.60896][3.11572:11728]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.60896]
    [3.61052]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1617
    [3.61406][2.8410:8482]()
    "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.61406]
    [3.21258]
    "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1622
    [3.21407][3.11876:12032]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.21407]
    [3.61927]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1636
    [3.62581][3.12107:12184]()
    "quick-xml 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.62581]
    [3.41319]
    "quick-xml 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1638
    [3.41390][3.12185:12258]()
    "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.41390]
    [3.62802]
    "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1640
    [3.62880][3.12259:12335]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.62880]
    [3.41540]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1653
    [3.63560][3.12336:12409]()
    "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.63560]
    [3.63633]
    "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1665
    [3.64074][3.12410:12488]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.64074]
    [3.21812]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1668
    [3.42181][3.12489:12564]()
    "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.42181]
    [3.64368]
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1671
    [3.42338][3.12565:12721]()
    "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.42338]
    [3.42494]
    "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1688
    [3.22340][3.12796:12874]()
    "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.22340]
    [3.22418]
    "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1692
    [3.42823][3.12875:13023]()
    "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.42823]
    [3.42971]
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
    "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
  • replacement in Cargo.lock at line 1733
    [3.43202][3.13098:13173]()
    "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
    [3.43202]
    [3.43277]
    "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
  • edit in Cargo.lock at line 1752
    [3.7115]
    [3.67325]
    name = "unreachable"
    version = "1.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    dependencies = [
    "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
    ]
    [[package]]
  • edit in Cargo.lock at line 1787
    [3.68055]
    [3.68284]
    source = "registry+https://github.com/rust-lang/crates.io-index"
    [[package]]
    name = "void"
    version = "1.0.2"
  • replacement in Cargo.lock at line 1910
    [3.44379][3.13174:13330]()
    "checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5"
    [3.44379]
    [3.72272]
    "checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e"
  • replacement in Cargo.lock at line 1916
    [3.44834][3.13331:13484]()
    "checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4"
    [3.44834]
    [3.44987]
    "checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5"
  • replacement in Cargo.lock at line 1921
    [3.45444][3.13485:13640]()
    "checksum block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49665c62e0e700857531fa5d3763e91b539ff1abeebd56808d378b495870d60d"
    [3.45444]
    [3.45599]
    "checksum block-buffer 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "509de513cca6d92b6aacf9c61acfe7eaa160837323a81068d690cc1f8e5740da"
  • replacement in Cargo.lock at line 1927
    [3.74692][3.13791:13937]()
    "checksum cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "d01c69d08ff207f231f07196e30f84c70f1c815b04f980f8b7b01ff01f05eb92"
    [3.74692]
    [2.8855]
    "checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e"
  • replacement in Cargo.lock at line 1934
    [3.75914][3.14087:14245]()
    "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71"
    [3.75914]
    [3.46678]
    "checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94"
    "checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b"
    "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13"
  • edit in Cargo.lock at line 1938
    [3.46836][3.14246:14404]()
    "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
  • replacement in Cargo.lock at line 1942
    [3.47297][3.14405:14560]()
    "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed"
    [3.47297]
    [2.9005]
    "checksum encoding_rs 0.8.15 (registry+https://github.com/rust-lang/crates.io-index)" = "fd251508d65030820f3a4317af2248180db337fdb25d89967956242580277813"
  • replacement in Cargo.lock at line 1961
    [3.79767][3.14714:14862]()
    "checksum http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fe67e3678f2827030e89cc4b9e7ecd16d52f132c0b940ab5005f88e821500f6a"
    [3.79767]
    [3.79915]
    "checksum http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1a10e5b573b9a0146545010f50772b9e8b1dd0a256564cc4307694c68832a2f5"
  • replacement in Cargo.lock at line 1964
    [3.25390][3.14863:15013]()
    "checksum hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)" = "7d5b6658b016965ae301fa995306db965c93677880ea70765a84235a96eae896"
    [3.25390]
    [3.80368]
    "checksum hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)" = "860faf61a9957c9cb0e23e69f1c8290e92f6eb660fcdd1f2d6777043a2ae1a46"
  • replacement in Cargo.lock at line 1973
    [3.81562][3.15014:15168]()
    "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
    [3.81562]
    [3.25847]
    "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
  • replacement in Cargo.lock at line 1975
    [3.25998][2.9159:9307]()
    "checksum libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = "413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e"
    [3.25998]
    [3.82015]
    "checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047"
  • replacement in Cargo.lock at line 1983
    [3.83072][3.15318:15467]()
    "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39"
    [3.83072]
    [3.83221]
    "checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8"
  • replacement in Cargo.lock at line 1991
    [3.84268][3.15468:15632]()
    "checksum new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f40f005c60db6e03bae699e414c58bf9aa7ea02a2d0b9bfbcf19286cc4c82b30"
    [3.84268]
    [3.26595]
    "checksum new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cdc457076c78ab54d5e0d6fa7c47981757f1e34dc39ff92787f217dede586c4"
  • replacement in Cargo.lock at line 1995
    [3.84890][3.15633:15785]()
    "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba"
    [3.84890]
    [3.49573]
    "checksum num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a69d464bdc213aaaff628444e99578ede64e9c854025aa43b9796530afa9238"
  • replacement in Cargo.lock at line 1997
    [3.49728][3.15786:15938]()
    "checksum openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)" = "84321fb9004c3bce5611188a644d6171f895fa2889d155927d528782edb21c5d"
    [3.49728]
    [3.85193]
    "checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9"
  • replacement in Cargo.lock at line 1999
    [3.85349][3.15939:16094]()
    "checksum openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cb534d752bf98cf363b473950659ac2546517f9c6be9723771614ab3f03bbc9e"
    [3.85349]
    [3.26746]
    "checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6"
  • replacement in Cargo.lock at line 2013
    [3.87364][3.16095:16248]()
    "checksum quick-xml 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)" = "22fcc48ecef4609b243e8c01ff4695d08ee0fc9d5bdbc54630e1a5fe8bb40953"
    [3.87364]
    [3.87517]
    "checksum quick-xml 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98d8d2d671bd29c6122a98b45ce3106391e89ba378f731274de677f1eff06e5f"
  • replacement in Cargo.lock at line 2025
    [2.9458][3.16399:16550](),[3.16399][3.16399:16550]()
    "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
    [2.9458]
    [3.52631]
    "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05"
  • replacement in Cargo.lock at line 2030
    [3.89637][3.16551:16699]()
    "checksum regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53ee8cfdddb2e0291adfb9f13d31d3bbe0a03c9a402c01b1e24188d86c35b24f"
    [3.89637]
    [3.53242]
    "checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f"
  • replacement in Cargo.lock at line 2038
    [3.53858][3.16700:16852]()
    "checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339"
    [3.53858]
    [3.91159]
    "checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56"
  • replacement in Cargo.lock at line 2044
    [3.91943][3.16853:17312]()
    "checksum serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560"
    "checksum serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c"
    "checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d"
    [3.91943]
    [3.54645]
    "checksum serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "2e20fde37801e83c891a2dc4ebd3b81f0da4d1fb67a9e0a2a3b921e2536a58ee"
    "checksum serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "633e97856567e518b59ffb2ad7c7a4fd4c5d91d9c7f32dd38a27b2bf7e8114ea"
    "checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9"
  • replacement in Cargo.lock at line 2050
    [3.55087][3.17313:17467]()
    "checksum signal-hook 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "97a47ae722318beceb0294e6f3d601205a1e6abaa4437d9d33e3a212233e3021"
    [3.55087]
    [3.92998]
    "checksum signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1f272d1b7586bec132ed427f532dd418d8beca1ca7f2caf7df35569b1415a4b4"
  • replacement in Cargo.lock at line 2053
    [3.55389][3.17468:17619]()
    "checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be"
    [3.55389]
    [3.93448]
    "checksum smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "88aea073965ab29f6edb5493faf96ad662fb18aa9eeb186a3b7057951605ed15"
  • replacement in Cargo.lock at line 2063
    [3.94685][2.9459:9607]()
    "checksum syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)" = "525bd55255f03c816e5d7f615587bd13030c7103354fadb104993dcee6a788ec"
    [3.94685]
    [3.94833]
    "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9"
  • replacement in Cargo.lock at line 2066
    [3.29644][3.17769:17920]()
    "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a"
    [3.29644]
    [3.56141]
    "checksum tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "37daa55a7240c4931c84559f03b3cad7d19535840d1c4a0cc4e9b2fb0dcf70ff"
  • replacement in Cargo.lock at line 2073
    [3.56440][3.17921:18070]()
    "checksum tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcaabb3cec70485d0df6e9454fe514393ad1c4070dee8915f11041e95630b230"
    [3.56440]
    [3.30254]
    "checksum tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e0500b88064f08bebddd0c0bed39e19f5c567a5f30975bee52b0c0d3e2eeb38c"
  • replacement in Cargo.lock at line 2076
    [3.96655][3.18071:18234]()
    "checksum tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c756b04680eea21902a46fca4e9f410a2332c04995af590e07ff262e2193a9a3"
    [3.96655]
    [3.56590]
    "checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6"
  • replacement in Cargo.lock at line 2078
    [3.56747][3.18235:18694]()
    "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af"
    "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926"
    "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce"
    [3.56747]
    [3.30731]
    "checksum tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9cbbc8a3698b7ab652340f46633364f9eaa928ddaaee79d8b8f356dd79a09d"
    "checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f"
    "checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f"
  • replacement in Cargo.lock at line 2082
    [3.30886][3.18695:18848]()
    "checksum tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1bf2b9dac2a0509b5cfd1df5aa25eafacb616a42a491a13604d6bbeab4486363"
    [3.30886]
    [3.57360]
    "checksum tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3742b64166c1ee9121f1921aea5a726098458926a6b732d906ef23b1f3ef6f4f"
  • replacement in Cargo.lock at line 2084
    [3.57512][3.18849:19009]()
    "checksum tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "742e511f6ce2298aeb86fc9ea0d8df81c2388c6ebae3dc8a7316e8c9df0df801"
    [3.57512]
    [3.57672]
    "checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb"
  • edit in Cargo.lock at line 2102
    [3.100517]
    [3.31807]
    "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
  • edit in Cargo.lock at line 2108
    [3.101417]
    [3.101720]
    "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"